@sapphire-ion/framework 1.2.43 → 1.2.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/classes/comparison/comparison-operator.mjs +18 -0
- package/esm2022/lib/classes/comparison/comparison-value-type.mjs +25 -0
- package/esm2022/lib/classes/comparison/comparison.mjs +41 -0
- package/esm2022/lib/classes/comparison/properties/bool-property.mjs +15 -0
- package/esm2022/lib/classes/comparison/properties/date-property.mjs +27 -0
- package/esm2022/lib/classes/comparison/properties/datetime-property.mjs +27 -0
- package/esm2022/lib/classes/comparison/properties/decimal-property.mjs +27 -0
- package/esm2022/lib/classes/comparison/properties/enum-property.mjs +27 -0
- package/esm2022/lib/classes/comparison/properties/implicit-property.mjs +12 -0
- package/esm2022/lib/classes/comparison/properties/int-property.mjs +27 -0
- package/esm2022/lib/classes/comparison/properties/long-property.mjs +27 -0
- package/esm2022/lib/classes/comparison/properties/string-property.mjs +15 -0
- package/esm2022/lib/classes/comparison/properties/time-property.mjs +27 -0
- package/esm2022/lib/classes/credentials.mjs +2 -0
- package/esm2022/lib/classes/environment.mjs +34 -0
- package/esm2022/lib/classes/filters/view-filtros.mjs +18 -0
- package/esm2022/lib/classes/infinite-scroll.mjs +90 -0
- package/esm2022/lib/classes/inputs/table-field-form-builder.mjs +10 -0
- package/esm2022/lib/classes/inputs/table-field.mjs +79 -0
- package/esm2022/lib/classes/page-option.mjs +2 -0
- package/esm2022/lib/classes/routes/default-routing-factory.mjs +23 -0
- package/esm2022/lib/classes/routes/id-preloader-configuration.mjs +22 -0
- package/esm2022/lib/classes/routes/route-data.mjs +9 -0
- package/esm2022/lib/components/carousel/carousel-image/carousel-image.component.mjs +18 -0
- package/esm2022/lib/components/carousel/carousel-item/carousel-item.component.mjs +15 -0
- package/esm2022/lib/components/carousel/carousel.component.mjs +79 -0
- package/esm2022/lib/components/carousel/carousel.module.mjs +31 -0
- package/esm2022/lib/components/carousel/i-carousel-item.component.mjs +16 -0
- package/esm2022/lib/components/content-block/content-block.component.mjs +27 -0
- package/esm2022/lib/components/default/default-list/abstract-list.mjs +49 -0
- package/esm2022/lib/components/default/default-list/default-list.component.mjs +95 -0
- package/esm2022/lib/components/default/default-list/header-list/header-list.component.mjs +98 -0
- package/esm2022/lib/components/default/default-list/list.mjs +120 -0
- package/esm2022/lib/components/default/default-pagination/default-pagination.component.mjs +123 -0
- package/esm2022/lib/components/default/default-table/default-table.component.mjs +216 -0
- package/esm2022/lib/components/default/default-table/th-filter/th-filter.component.mjs +206 -0
- package/esm2022/lib/components/default/default-view/abstract-view.mjs +22 -0
- package/esm2022/lib/components/default/default-view/default-view.component.mjs +63 -0
- package/esm2022/lib/components/default/default-view/header-view/header-view.component.mjs +78 -0
- package/esm2022/lib/components/default/default-view/view.mjs +188 -0
- package/esm2022/lib/components/default/default.module.mjs +98 -0
- package/esm2022/lib/components/default-page/default.page.mjs +75 -0
- package/esm2022/lib/components/drag-drop-file/drag-drop-file.directive.mjs +60 -0
- package/esm2022/lib/components/drag-drop-file/drag-drop-file.module.mjs +31 -0
- package/esm2022/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.mjs +15 -0
- package/esm2022/lib/components/drawer/default-drawer-end/default-drawer-end.component.mjs +34 -0
- package/esm2022/lib/components/drawer/drawer-group/drawer-group.component.mjs +52 -0
- package/esm2022/lib/components/drawer/drawer.component.mjs +156 -0
- package/esm2022/lib/components/drawer/menu.mjs +15 -0
- package/esm2022/lib/components/filter/filter.component.mjs +145 -0
- package/esm2022/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.mjs +17 -0
- package/esm2022/lib/components/image/image.component.mjs +91 -0
- package/esm2022/lib/components/info-popover/info-popover.component.mjs +91 -0
- package/esm2022/lib/components/inputs/custom-input.mjs +85 -0
- package/esm2022/lib/components/inputs/input-bool/input-bool.component.mjs +46 -0
- package/esm2022/lib/components/inputs/input-bool/input-bool.configuration.mjs +16 -0
- package/esm2022/lib/components/inputs/input-cep/input-cep.component.mjs +50 -0
- package/esm2022/lib/components/inputs/input-cep/input-cep.configuration.mjs +4 -0
- package/esm2022/lib/components/inputs/input-color/input-color.component.mjs +481 -0
- package/esm2022/lib/components/inputs/input-configuration.mjs +2 -0
- package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.mjs +116 -0
- package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.mjs +6 -0
- package/esm2022/lib/components/inputs/input-date/input-date.component.mjs +235 -0
- package/esm2022/lib/components/inputs/input-date/input-date.configuration.mjs +8 -0
- package/esm2022/lib/components/inputs/input-decimal/input-decimal.component.mjs +243 -0
- package/esm2022/lib/components/inputs/input-decimal/input-decimal.configuration.mjs +50 -0
- package/esm2022/lib/components/inputs/input-default-configurations.mjs +14 -0
- package/esm2022/lib/components/inputs/input-file/download-button/download-button.component.mjs +99 -0
- package/esm2022/lib/components/inputs/input-file/input-file.component.mjs +101 -0
- package/esm2022/lib/components/inputs/input-file/input-file.configuration.mjs +24 -0
- package/esm2022/lib/components/inputs/input-icon/fluenticons.mjs +3734 -0
- package/esm2022/lib/components/inputs/input-icon/input-icon.component.mjs +60 -0
- package/esm2022/lib/components/inputs/input-icon/ionicons.mjs +1360 -0
- package/esm2022/lib/components/inputs/input-provider-factory.mjs +12 -0
- package/esm2022/lib/components/inputs/input-select/directives/sion-label-template.directive.mjs +16 -0
- package/esm2022/lib/components/inputs/input-select/directives/sion-option-template.directive.mjs +16 -0
- package/esm2022/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.mjs +16 -0
- package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +373 -0
- package/esm2022/lib/components/inputs/input-select/input.select.configuration.mjs +229 -0
- package/esm2022/lib/components/inputs/input-string/input-string.component.mjs +41 -0
- package/esm2022/lib/components/inputs/input-string/input-string.configuration.mjs +20 -0
- package/esm2022/lib/components/inputs/input-telefone/input-telefone.component.mjs +74 -0
- package/esm2022/lib/components/inputs/input-telefone/input-telefone.configuration.mjs +12 -0
- package/esm2022/lib/components/inputs/input-textarea/input-textarea.component.mjs +74 -0
- package/esm2022/lib/components/inputs/input-textarea/input-textarea.configuration.mjs +7 -0
- package/esm2022/lib/components/inputs/input-type.mjs +24 -0
- package/esm2022/lib/components/inputs/input-validators.mjs +121 -0
- package/esm2022/lib/components/inputs/inputs.module.mjs +133 -0
- package/esm2022/lib/components/loading/loading.component.mjs +34 -0
- package/esm2022/lib/components/login/login-admin/login-admin.component.mjs +52 -0
- package/esm2022/lib/components/login/login.component.mjs +99 -0
- package/esm2022/lib/components/main-content/main-content.component.mjs +100 -0
- package/esm2022/lib/components/popover/sion-popover/sion-popover.component.mjs +182 -0
- package/esm2022/lib/components/popover/sion-popover.module.mjs +21 -0
- package/esm2022/lib/components/sion-card/sion-card.component.mjs +26 -0
- package/esm2022/lib/components/stepper/step/step.component.mjs +43 -0
- package/esm2022/lib/components/stepper/stepper.component.mjs +36 -0
- package/esm2022/lib/components/stepper/stepper.module.mjs +25 -0
- package/esm2022/lib/components/tabs/tab/tab.component.mjs +41 -0
- package/esm2022/lib/components/tabs/tabs/tabs.component.mjs +56 -0
- package/esm2022/lib/components/tabs/tabs.module.mjs +22 -0
- package/esm2022/lib/components/text-tooltip/text-tooltip.component.mjs +51 -0
- package/esm2022/lib/components/tooltip/tooltip.component.mjs +21 -0
- package/esm2022/lib/core.module.mjs +38 -0
- package/esm2022/lib/directives/ng-var.directive.mjs +29 -0
- package/esm2022/lib/guards/auth.guard.mjs +26 -0
- package/esm2022/lib/guards/error.interceptor.mjs +107 -0
- package/esm2022/lib/guards/token.interceptor.mjs +25 -0
- package/esm2022/lib/index.mjs +187 -0
- package/esm2022/lib/pipes/secure.pipe.mjs +42 -0
- package/esm2022/lib/services/auth.service.mjs +146 -0
- package/esm2022/lib/services/environment.service.mjs +26 -0
- package/esm2022/lib/services/generic.service.mjs +84 -0
- package/esm2022/lib/services/modal-focus-trap.service.mjs +62 -0
- package/esm2022/lib/services/popover-focus-trap.service.mjs +62 -0
- package/esm2022/lib/services/route/route.cache.service.mjs +15 -0
- package/esm2022/lib/services/route/route.provider.service.mjs +42 -0
- package/esm2022/lib/services/usuario.service.mjs +49 -0
- package/esm2022/lib/services/utils.service.mjs +190 -0
- package/esm2022/lib/services/web/api-url-provider.service.mjs +29 -0
- package/esm2022/lib/services/web/http.ativo.service.mjs +37 -0
- package/esm2022/lib/services/web/http.service.mjs +177 -0
- package/esm2022/lib/services/web/storage.service.mjs +183 -0
- package/esm2022/public-api.mjs +5 -0
- package/esm2022/sapphire-ion-framework.mjs +5 -0
- package/fesm2022/sapphire-ion-framework.mjs +12265 -0
- package/fesm2022/sapphire-ion-framework.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/classes/comparison/comparison-operator.d.ts +9 -0
- package/lib/classes/comparison/comparison-value-type.d.ts +23 -0
- package/lib/classes/comparison/comparison.d.ts +25 -0
- package/lib/classes/comparison/properties/bool-property.d.ts +7 -0
- package/lib/classes/comparison/properties/date-property.d.ts +11 -0
- package/lib/classes/comparison/properties/datetime-property.d.ts +11 -0
- package/lib/classes/comparison/properties/decimal-property.d.ts +11 -0
- package/lib/classes/comparison/properties/enum-property.d.ts +11 -0
- package/lib/classes/comparison/properties/implicit-property.d.ts +6 -0
- package/lib/classes/comparison/properties/int-property.d.ts +11 -0
- package/lib/classes/comparison/properties/long-property.d.ts +11 -0
- package/lib/classes/comparison/properties/string-property.d.ts +7 -0
- package/lib/classes/comparison/properties/time-property.d.ts +11 -0
- package/{src/lib/classes/credentials.ts → lib/classes/credentials.d.ts} +5 -5
- package/lib/classes/environment.d.ts +14 -0
- package/lib/classes/filters/view-filtros.d.ts +10 -0
- package/lib/classes/infinite-scroll.d.ts +26 -0
- package/lib/classes/inputs/table-field-form-builder.d.ts +5 -0
- package/lib/classes/inputs/table-field.d.ts +20 -0
- package/lib/classes/page-option.d.ts +7 -0
- package/lib/classes/routes/default-routing-factory.d.ts +8 -0
- package/lib/classes/routes/id-preloader-configuration.d.ts +28 -0
- package/lib/classes/routes/route-data.d.ts +5 -0
- package/lib/components/carousel/carousel-image/carousel-image.component.d.ts +10 -0
- package/lib/components/carousel/carousel-item/carousel-item.component.d.ts +9 -0
- package/lib/components/carousel/carousel.component.d.ts +32 -0
- package/lib/components/carousel/carousel.module.d.ts +12 -0
- package/lib/components/carousel/i-carousel-item.component.d.ts +9 -0
- package/lib/components/content-block/content-block.component.d.ts +15 -0
- package/lib/components/default/default-list/abstract-list.d.ts +21 -0
- package/lib/components/default/default-list/default-list.component.d.ts +47 -0
- package/lib/components/default/default-list/header-list/header-list.component.d.ts +45 -0
- package/lib/components/default/default-list/list.d.ts +40 -0
- package/lib/components/default/default-pagination/default-pagination.component.d.ts +36 -0
- package/lib/components/default/default-table/default-table.component.d.ts +90 -0
- package/lib/components/default/default-table/th-filter/th-filter.component.d.ts +23 -0
- package/lib/components/default/default-view/abstract-view.d.ts +18 -0
- package/lib/components/default/default-view/default-view.component.d.ts +32 -0
- package/lib/components/default/default-view/header-view/header-view.component.d.ts +29 -0
- package/lib/components/default/default-view/view.d.ts +59 -0
- package/lib/components/default/default.module.d.ts +31 -0
- package/lib/components/default-page/default.page.d.ts +35 -0
- package/lib/components/drag-drop-file/drag-drop-file.directive.d.ts +14 -0
- package/lib/components/drag-drop-file/drag-drop-file.module.d.ts +10 -0
- package/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.d.ts +9 -0
- package/lib/components/drawer/default-drawer-end/default-drawer-end.component.d.ts +13 -0
- package/lib/components/drawer/drawer-group/drawer-group.component.d.ts +22 -0
- package/lib/components/drawer/drawer.component.d.ts +31 -0
- package/lib/components/drawer/menu.d.ts +9 -0
- package/lib/components/filter/filter.component.d.ts +29 -0
- package/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.d.ts +8 -0
- package/lib/components/image/image.component.d.ts +23 -0
- package/lib/components/info-popover/info-popover.component.d.ts +15 -0
- package/lib/components/inputs/custom-input.d.ts +40 -0
- package/lib/components/inputs/input-bool/input-bool.component.d.ts +16 -0
- package/lib/components/inputs/input-bool/input-bool.configuration.d.ts +17 -0
- package/lib/components/inputs/input-cep/input-cep.component.d.ts +18 -0
- package/lib/components/inputs/input-cep/input-cep.configuration.d.ts +3 -0
- package/lib/components/inputs/input-color/input-color.component.d.ts +77 -0
- package/{src/lib/components/inputs/input-configuration.ts → lib/components/inputs/input-configuration.d.ts} +10 -23
- package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.d.ts +19 -0
- package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.d.ts +5 -0
- package/lib/components/inputs/input-date/input-date.component.d.ts +60 -0
- package/lib/components/inputs/input-date/input-date.configuration.d.ts +7 -0
- package/lib/components/inputs/input-decimal/input-decimal.component.d.ts +26 -0
- package/lib/components/inputs/input-decimal/input-decimal.configuration.d.ts +28 -0
- package/lib/components/inputs/input-default-configurations.d.ts +13 -0
- package/lib/components/inputs/input-file/download-button/download-button.component.d.ts +39 -0
- package/lib/components/inputs/input-file/input-file.component.d.ts +27 -0
- package/lib/components/inputs/input-file/input-file.configuration.d.ts +8 -0
- package/lib/components/inputs/input-icon/fluenticons.d.ts +1 -0
- package/lib/components/inputs/input-icon/input-icon.component.d.ts +20 -0
- package/lib/components/inputs/input-icon/ionicons.d.ts +1 -0
- package/lib/components/inputs/input-provider-factory.d.ts +4 -0
- package/lib/components/inputs/input-select/directives/sion-label-template.directive.d.ts +18 -0
- package/lib/components/inputs/input-select/directives/sion-option-template.directive.d.ts +14 -0
- package/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.d.ts +18 -0
- package/lib/components/inputs/input-select/input-select.component.d.ts +83 -0
- package/lib/components/inputs/input-select/input.select.configuration.d.ts +122 -0
- package/lib/components/inputs/input-string/input-string.component.d.ts +14 -0
- package/lib/components/inputs/input-string/input-string.configuration.d.ts +15 -0
- package/lib/components/inputs/input-telefone/input-telefone.component.d.ts +19 -0
- package/lib/components/inputs/input-telefone/input-telefone.configuration.d.ts +9 -0
- package/lib/components/inputs/input-textarea/input-textarea.component.d.ts +16 -0
- package/lib/components/inputs/input-textarea/input-textarea.configuration.d.ts +4 -0
- package/lib/components/inputs/input-type.d.ts +22 -0
- package/lib/components/inputs/input-validators.d.ts +25 -0
- package/lib/components/inputs/inputs.module.d.ts +33 -0
- package/lib/components/loading/loading.component.d.ts +18 -0
- package/lib/components/login/login-admin/login-admin.component.d.ts +20 -0
- package/lib/components/login/login.component.d.ts +29 -0
- package/lib/components/main-content/main-content.component.d.ts +27 -0
- package/lib/components/popover/sion-popover/sion-popover.component.d.ts +43 -0
- package/lib/components/popover/sion-popover.module.d.ts +9 -0
- package/lib/components/sion-card/sion-card.component.d.ts +11 -0
- package/lib/components/stepper/step/step.component.d.ts +15 -0
- package/lib/components/stepper/stepper.component.d.ts +14 -0
- package/lib/components/stepper/stepper.module.d.ts +10 -0
- package/lib/components/tabs/tab/tab.component.d.ts +19 -0
- package/lib/components/tabs/tabs/tabs.component.d.ts +18 -0
- package/lib/components/tabs/tabs.module.d.ts +12 -0
- package/lib/components/text-tooltip/text-tooltip.component.d.ts +16 -0
- package/lib/components/tooltip/tooltip.component.d.ts +7 -0
- package/lib/core.module.d.ts +16 -0
- package/lib/directives/ng-var.directive.d.ts +12 -0
- package/lib/guards/auth.guard.d.ts +11 -0
- package/lib/guards/error.interceptor.d.ts +32 -0
- package/lib/guards/token.interceptor.d.ts +11 -0
- package/lib/index.d.ts +117 -0
- package/lib/pipes/secure.pipe.d.ts +15 -0
- package/lib/services/auth.service.d.ts +47 -0
- package/lib/services/environment.service.d.ts +10 -0
- package/lib/services/generic.service.d.ts +22 -0
- package/lib/services/modal-focus-trap.service.d.ts +13 -0
- package/lib/services/popover-focus-trap.service.d.ts +13 -0
- package/lib/services/route/route.cache.service.d.ts +7 -0
- package/lib/services/route/route.provider.service.d.ts +13 -0
- package/lib/services/usuario.service.d.ts +21 -0
- package/lib/services/utils.service.d.ts +53 -0
- package/lib/services/web/api-url-provider.service.d.ts +13 -0
- package/lib/services/web/http.ativo.service.d.ts +20 -0
- package/lib/services/web/http.service.d.ts +59 -0
- package/lib/services/web/storage.service.d.ts +46 -0
- package/package.json +47 -43
- package/public-api.d.ts +1 -0
- package/{src/lib → themes}/compiled-styles.scss +2551 -2551
- package/build.ps1 +0 -39
- package/ng-package.json +0 -10
- package/src/lib/classes/comparison/comparison-operator.ts +0 -17
- package/src/lib/classes/comparison/comparison-value-type.ts +0 -34
- package/src/lib/classes/comparison/comparison.ts +0 -45
- package/src/lib/classes/comparison/properties/bool-property.ts +0 -16
- package/src/lib/classes/comparison/properties/date-property.ts +0 -28
- package/src/lib/classes/comparison/properties/datetime-property.ts +0 -28
- package/src/lib/classes/comparison/properties/decimal-property.ts +0 -28
- package/src/lib/classes/comparison/properties/enum-property.ts +0 -28
- package/src/lib/classes/comparison/properties/implicit-property.ts +0 -13
- package/src/lib/classes/comparison/properties/int-property.ts +0 -28
- package/src/lib/classes/comparison/properties/long-property.ts +0 -28
- package/src/lib/classes/comparison/properties/string-property.ts +0 -16
- package/src/lib/classes/comparison/properties/time-property.ts +0 -28
- package/src/lib/classes/environment.ts +0 -37
- package/src/lib/classes/filters/view-filtros.ts +0 -18
- package/src/lib/classes/infinite-scroll.ts +0 -112
- package/src/lib/classes/inputs/table-field-form-builder.ts +0 -12
- package/src/lib/classes/inputs/table-field.ts +0 -62
- package/src/lib/classes/page-option.ts +0 -8
- package/src/lib/classes/routes/default-routing-factory.ts +0 -24
- package/src/lib/classes/routes/id-preloader-configuration.ts +0 -21
- package/src/lib/classes/routes/route-data.ts +0 -9
- package/src/lib/components/carousel/carousel-image/carousel-image.component.html +0 -4
- package/src/lib/components/carousel/carousel-image/carousel-image.component.ts +0 -15
- package/src/lib/components/carousel/carousel-item/carousel-item.component.html +0 -3
- package/src/lib/components/carousel/carousel-item/carousel-item.component.ts +0 -14
- package/src/lib/components/carousel/carousel.component.html +0 -22
- package/src/lib/components/carousel/carousel.component.ts +0 -83
- package/src/lib/components/carousel/carousel.module.ts +0 -20
- package/src/lib/components/carousel/i-carousel-item.component.ts +0 -8
- package/src/lib/components/content-block/content-block.component.html +0 -6
- package/src/lib/components/content-block/content-block.component.ts +0 -25
- package/src/lib/components/default/default-list/abstract-list.ts +0 -56
- package/src/lib/components/default/default-list/default-list.component.html +0 -60
- package/src/lib/components/default/default-list/default-list.component.ts +0 -72
- package/src/lib/components/default/default-list/header-list/header-list.component.html +0 -32
- package/src/lib/components/default/default-list/header-list/header-list.component.ts +0 -85
- package/src/lib/components/default/default-list/list.ts +0 -127
- package/src/lib/components/default/default-pagination/default-pagination.component.html +0 -52
- package/src/lib/components/default/default-pagination/default-pagination.component.ts +0 -118
- package/src/lib/components/default/default-table/default-table.component.html +0 -104
- package/src/lib/components/default/default-table/default-table.component.ts +0 -255
- package/src/lib/components/default/default-table/th-filter/th-filter.component.html +0 -69
- package/src/lib/components/default/default-table/th-filter/th-filter.component.ts +0 -183
- package/src/lib/components/default/default-view/abstract-view.ts +0 -25
- package/src/lib/components/default/default-view/default-view.component.html +0 -111
- package/src/lib/components/default/default-view/default-view.component.ts +0 -44
- package/src/lib/components/default/default-view/header-view/header-view.component.html +0 -64
- package/src/lib/components/default/default-view/header-view/header-view.component.ts +0 -57
- package/src/lib/components/default/default-view/view.ts +0 -183
- package/src/lib/components/default/default.module.ts +0 -61
- package/src/lib/components/default-page/default.page.html +0 -63
- package/src/lib/components/default-page/default.page.ts +0 -84
- package/src/lib/components/drag-drop-file/drag-drop-file.directive.ts +0 -44
- package/src/lib/components/drag-drop-file/drag-drop-file.module.ts +0 -21
- package/src/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.html +0 -5
- package/src/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.ts +0 -17
- package/src/lib/components/drawer/default-drawer-end/default-drawer-end.component.html +0 -12
- package/src/lib/components/drawer/default-drawer-end/default-drawer-end.component.ts +0 -35
- package/src/lib/components/drawer/drawer-group/drawer-group.component.html +0 -79
- package/src/lib/components/drawer/drawer-group/drawer-group.component.ts +0 -49
- package/src/lib/components/drawer/drawer.component.html +0 -120
- package/src/lib/components/drawer/drawer.component.ts +0 -157
- package/src/lib/components/drawer/menu.ts +0 -20
- package/src/lib/components/filter/filter.component.html +0 -43
- package/src/lib/components/filter/filter.component.ts +0 -141
- package/src/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.html +0 -35
- package/src/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.ts +0 -19
- package/src/lib/components/image/image.component.html +0 -17
- package/src/lib/components/image/image.component.ts +0 -95
- package/src/lib/components/info-popover/info-popover.component.html +0 -23
- package/src/lib/components/info-popover/info-popover.component.ts +0 -75
- package/src/lib/components/inputs/custom-input.ts +0 -94
- package/src/lib/components/inputs/input-bool/input-bool.component.html +0 -26
- package/src/lib/components/inputs/input-bool/input-bool.component.ts +0 -39
- package/src/lib/components/inputs/input-bool/input-bool.configuration.ts +0 -14
- package/src/lib/components/inputs/input-cep/input-cep.component.html +0 -27
- package/src/lib/components/inputs/input-cep/input-cep.component.ts +0 -41
- package/src/lib/components/inputs/input-cep/input-cep.configuration.ts +0 -4
- package/src/lib/components/inputs/input-color/input-color.component.html +0 -79
- package/src/lib/components/inputs/input-color/input-color.component.ts +0 -544
- package/src/lib/components/inputs/input-color/input-color.configuration.ts +0 -0
- package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.html +0 -28
- package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.ts +0 -99
- package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.ts +0 -4
- package/src/lib/components/inputs/input-date/input-date.component.html +0 -88
- package/src/lib/components/inputs/input-date/input-date.component.ts +0 -241
- package/src/lib/components/inputs/input-date/input-date.configuration.ts +0 -6
- package/src/lib/components/inputs/input-decimal/input-decimal.component.html +0 -31
- package/src/lib/components/inputs/input-decimal/input-decimal.component.ts +0 -249
- package/src/lib/components/inputs/input-decimal/input-decimal.configuration.ts +0 -47
- package/src/lib/components/inputs/input-default-configurations.ts +0 -15
- package/src/lib/components/inputs/input-file/download-button/download-button.component.html +0 -56
- package/src/lib/components/inputs/input-file/download-button/download-button.component.ts +0 -89
- package/src/lib/components/inputs/input-file/input-file.component.html +0 -59
- package/src/lib/components/inputs/input-file/input-file.component.ts +0 -96
- package/src/lib/components/inputs/input-file/input-file.configuration.ts +0 -25
- package/src/lib/components/inputs/input-icon/fluenticons.ts +0 -3733
- package/src/lib/components/inputs/input-icon/input-icon.component.html +0 -8
- package/src/lib/components/inputs/input-icon/input-icon.component.ts +0 -52
- package/src/lib/components/inputs/input-icon/ionicons.ts +0 -1359
- package/src/lib/components/inputs/input-provider-factory.ts +0 -12
- package/src/lib/components/inputs/input-select/directives/sion-label-template.directive.ts +0 -19
- package/src/lib/components/inputs/input-select/directives/sion-option-template.directive.ts +0 -16
- package/src/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.ts +0 -19
- package/src/lib/components/inputs/input-select/input-select.component.html +0 -176
- package/src/lib/components/inputs/input-select/input-select.component.ts +0 -361
- package/src/lib/components/inputs/input-select/input.select.configuration.ts +0 -292
- package/src/lib/components/inputs/input-string/input-string.component.html +0 -27
- package/src/lib/components/inputs/input-string/input-string.component.ts +0 -31
- package/src/lib/components/inputs/input-string/input-string.configuration.ts +0 -18
- package/src/lib/components/inputs/input-telefone/input-telefone.component.html +0 -29
- package/src/lib/components/inputs/input-telefone/input-telefone.component.ts +0 -63
- package/src/lib/components/inputs/input-telefone/input-telefone.configuration.ts +0 -8
- package/src/lib/components/inputs/input-textarea/input-textarea.component.html +0 -27
- package/src/lib/components/inputs/input-textarea/input-textarea.component.ts +0 -31
- package/src/lib/components/inputs/input-textarea/input-textarea.configuration.ts +0 -7
- package/src/lib/components/inputs/input-type.ts +0 -22
- package/src/lib/components/inputs/input-validators.ts +0 -111
- package/src/lib/components/inputs/inputs.module.ts +0 -74
- package/src/lib/components/loading/loading.component.html +0 -28
- package/src/lib/components/loading/loading.component.ts +0 -29
- package/src/lib/components/login/login-admin/login-admin.component.html +0 -28
- package/src/lib/components/login/login-admin/login-admin.component.ts +0 -51
- package/src/lib/components/login/login.component.html +0 -104
- package/src/lib/components/login/login.component.ts +0 -96
- package/src/lib/components/main-content/main-content.component.html +0 -145
- package/src/lib/components/main-content/main-content.component.ts +0 -93
- package/src/lib/components/popover/sion-popover/sion-popover.component.html +0 -21
- package/src/lib/components/popover/sion-popover/sion-popover.component.ts +0 -182
- package/src/lib/components/popover/sion-popover.module.ts +0 -12
- package/src/lib/components/sion-card/sion-card.component.html +0 -12
- package/src/lib/components/sion-card/sion-card.component.ts +0 -23
- package/src/lib/components/stepper/step/step.component.html +0 -11
- package/src/lib/components/stepper/step/step.component.ts +0 -44
- package/src/lib/components/stepper/stepper.component.html +0 -3
- package/src/lib/components/stepper/stepper.component.ts +0 -37
- package/src/lib/components/stepper/stepper.module.ts +0 -15
- package/src/lib/components/tabs/tab/tab.component.html +0 -8
- package/src/lib/components/tabs/tab/tab.component.ts +0 -28
- package/src/lib/components/tabs/tabs/tabs.component.html +0 -14
- package/src/lib/components/tabs/tabs/tabs.component.ts +0 -42
- package/src/lib/components/tabs/tabs.module.ts +0 -15
- package/src/lib/components/text-tooltip/text-tooltip.component.html +0 -8
- package/src/lib/components/text-tooltip/text-tooltip.component.ts +0 -45
- package/src/lib/components/tooltip/tooltip.component.html +0 -53
- package/src/lib/components/tooltip/tooltip.component.ts +0 -16
- package/src/lib/core.module.ts +0 -29
- package/src/lib/directives/ng-var.directive.ts +0 -26
- package/src/lib/guards/auth.guard.ts +0 -19
- package/src/lib/guards/error.interceptor.ts +0 -108
- package/src/lib/guards/token.interceptor.ts +0 -28
- package/src/lib/index.ts +0 -190
- package/src/lib/pipes/secure.pipe.ts +0 -39
- package/src/lib/services/auth.service.ts +0 -153
- package/src/lib/services/crypto.service.ts +0 -164
- package/src/lib/services/environment.service.ts +0 -17
- package/src/lib/services/generic.service.ts +0 -85
- package/src/lib/services/modal-focus-trap.service.ts +0 -65
- package/src/lib/services/popover-focus-trap.service.ts +0 -65
- package/src/lib/services/route/route.cache.service.ts +0 -17
- package/src/lib/services/route/route.provider.service.ts +0 -49
- package/src/lib/services/usuario.service.ts +0 -44
- package/src/lib/services/utils.service.ts +0 -216
- package/src/lib/services/web/api-url-provider.service.ts +0 -48
- package/src/lib/services/web/http.ativo.service.ts +0 -37
- package/src/lib/services/web/http.service.ts +0 -193
- package/src/lib/services/web/storage.service.ts +0 -206
- package/src/public-api.ts +0 -5
- package/tailwind.config.js +0 -27
- package/tsconfig.lib.json +0 -29
- package/tsconfig.lib.prod.json +0 -23
- package/tsconfig.spec.json +0 -27
- /package/{src/lib → themes}/components/carousel/carousel-image/carousel-image.component.scss +0 -0
- /package/{src/lib → themes}/components/carousel/carousel-item/carousel-item.component.scss +0 -0
- /package/{src/lib → themes}/components/carousel/carousel.component.scss +0 -0
- /package/{src/lib → themes}/components/content-block/content-block.component.scss +0 -0
- /package/{src/lib → themes}/components/default/default-list/default-list.component.scss +0 -0
- /package/{src/lib → themes}/components/default/default-list/header-list/header-list.component.scss +0 -0
- /package/{src/lib → themes}/components/default/default-pagination/default-pagination.component.scss +0 -0
- /package/{src/lib → themes}/components/default/default-table/default-table.component.scss +0 -0
- /package/{src/lib → themes}/components/default/default-table/th-filter/th-filter.component.scss +0 -0
- /package/{src/lib → themes}/components/default/default-view/default-view.component.scss +0 -0
- /package/{src/lib → themes}/components/default/default-view/header-view/header-view.component.scss +0 -0
- /package/{src/lib → themes}/components/default-page/default.page.scss +0 -0
- /package/{src/lib → themes}/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.scss +0 -0
- /package/{src/lib → themes}/components/drawer/default-drawer-end/default-drawer-end.component.scss +0 -0
- /package/{src/lib → themes}/components/drawer/drawer-group/drawer-group.component.scss +0 -0
- /package/{src/lib → themes}/components/drawer/drawer.component.scss +0 -0
- /package/{src/lib → themes}/components/filter/filter.component.scss +0 -0
- /package/{src/lib → themes}/components/http-responses-pages/forbidden-403/forbidden-403.component.scss +0 -0
- /package/{src/lib → themes}/components/image/image.component.scss +0 -0
- /package/{src/lib → themes}/components/info-popover/info-popover.component.scss +0 -0
- /package/{src/lib → themes}/components/inputs/input-bool/input-bool.component.scss +0 -0
- /package/{src/lib → themes}/components/inputs/input-cep/input-cep.component.scss +0 -0
- /package/{src/lib → themes}/components/inputs/input-color/input-color.component.scss +0 -0
- /package/{src/lib → themes}/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.scss +0 -0
- /package/{src/lib → themes}/components/inputs/input-date/input-date.component.scss +0 -0
- /package/{src/lib → themes}/components/inputs/input-decimal/input-decimal.component.scss +0 -0
- /package/{src/lib → themes}/components/inputs/input-file/download-button/download-button.component.scss +0 -0
- /package/{src/lib → themes}/components/inputs/input-file/input-file.component.scss +0 -0
- /package/{src/lib → themes}/components/inputs/input-icon/input-icon.component.scss +0 -0
- /package/{src/lib → themes}/components/inputs/input-select/input-select.component.scss +0 -0
- /package/{src/lib → themes}/components/inputs/input-string/input-string.component.scss +0 -0
- /package/{src/lib → themes}/components/inputs/input-telefone/input-telefone.component.scss +0 -0
- /package/{src/lib → themes}/components/inputs/input-textarea/input-textarea.component.scss +0 -0
- /package/{src/lib → themes}/components/inputs/inputs.scss +0 -0
- /package/{src/lib → themes}/components/loading/loading.component.scss +0 -0
- /package/{src/lib → themes}/components/login/login-admin/login-admin.component.scss +0 -0
- /package/{src/lib → themes}/components/login/login.component.scss +0 -0
- /package/{src/lib → themes}/components/main-content/main-content.component.scss +0 -0
- /package/{src/lib → themes}/components/popover/sion-popover/sion-popover.component.scss +0 -0
- /package/{src/lib → themes}/components/sion-card/sion-card.component.scss +0 -0
- /package/{src/lib → themes}/components/stepper/step/step.component.scss +0 -0
- /package/{src/lib → themes}/components/stepper/stepper.component.scss +0 -0
- /package/{src/lib → themes}/components/tabs/tab/tab.component.scss +0 -0
- /package/{src/lib → themes}/components/tabs/tabs/tabs.component.scss +0 -0
- /package/{src/lib → themes}/components/text-tooltip/text-tooltip.component.scss +0 -0
- /package/{src/lib → themes}/components/tooltip/tooltip.component.scss +0 -0
- /package/{src/lib → themes}/styles/components.scss +0 -0
- /package/{src/lib → themes}/styles/core.styles.scss +0 -0
- /package/{src/lib → themes}/styles/ionic/ion-action-sheet.scss +0 -0
- /package/{src/lib → themes}/styles/ionic/ion-alert.scss +0 -0
- /package/{src/lib → themes}/styles/ionic/ion-button.scss +0 -0
- /package/{src/lib → themes}/styles/ionic/ion-card.scss +0 -0
- /package/{src/lib → themes}/styles/ionic/ion-content.scss +0 -0
- /package/{src/lib → themes}/styles/ionic/ion-datetime.scss +0 -0
- /package/{src/lib → themes}/styles/ionic/ion-item.scss +0 -0
- /package/{src/lib → themes}/styles/ionic/ion-list.scss +0 -0
- /package/{src/lib → themes}/styles/ionic/ion-modal.scss +0 -0
- /package/{src/lib → themes}/styles/ionic/ion-popover.scss +0 -0
- /package/{src/lib → themes}/styles/ionic/ion-progress-bar.scss +0 -0
- /package/{src/lib → themes}/styles/ionic/ion-searchbar.scss +0 -0
- /package/{src/lib → themes}/styles/ionic/ion-toast.scss +0 -0
- /package/{src/lib → themes}/styles/ionic.scss +0 -0
- /package/{src/lib → themes}/styles/login-default.scss +0 -0
- /package/{src/lib → themes}/styles/mixins.scss +0 -0
- /package/{src/lib → themes}/styles/styles.scss +0 -0
- /package/{src/lib → themes}/styles/translucid.scss +0 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { EnvironmentService } from '../environment.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../environment.service";
|
|
5
|
+
export class ApiUrlProviderService {
|
|
6
|
+
constructor(coreService) {
|
|
7
|
+
this.coreService = coreService;
|
|
8
|
+
//#region [ API URL ]
|
|
9
|
+
this._apiUrl = '';
|
|
10
|
+
this._production = coreService.environment.production;
|
|
11
|
+
this.apiUrl = this.coreService.environment.apiUrl;
|
|
12
|
+
;
|
|
13
|
+
console.log(`%c [ @sapphire-ion/framework : ${this.coreService.environment.applicationName} started @ development ] | Conectado em: ${this.apiUrl}`, "background-color: #2fdf75; color: black;");
|
|
14
|
+
}
|
|
15
|
+
get apiUrl() { return this._apiUrl; }
|
|
16
|
+
set apiUrl(value) {
|
|
17
|
+
this._apiUrl = value;
|
|
18
|
+
}
|
|
19
|
+
get production() { return this._production; }
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ApiUrlProviderService, deps: [{ token: i1.EnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ApiUrlProviderService, providedIn: 'root' }); }
|
|
22
|
+
}
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ApiUrlProviderService, decorators: [{
|
|
24
|
+
type: Injectable,
|
|
25
|
+
args: [{
|
|
26
|
+
providedIn: 'root'
|
|
27
|
+
}]
|
|
28
|
+
}], ctorParameters: () => [{ type: i1.EnvironmentService }] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXVybC1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy93ZWIvYXBpLXVybC1wcm92aWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQU01RCxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQ1UsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBU3pDLHFCQUFxQjtRQUNkLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFSMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUV0RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUFBLENBQUM7UUFFbkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsZUFBZSw0Q0FBNEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLDBDQUEwQyxDQUFDLENBQUE7SUFDbE0sQ0FBQztJQUtELElBQVcsTUFBTSxLQUFZLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbkQsSUFBVyxNQUFNLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBSUQsSUFBVyxVQUFVLEtBQUssT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQzsrR0F0QnpDLHFCQUFxQjttSEFBckIscUJBQXFCLGNBRnBCLE1BQU07OzRGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFByZWZlcmVuY2VzIH0gZnJvbSAnQGNhcGFjaXRvci9wcmVmZXJlbmNlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcGlVcmxQcm92aWRlclNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY29yZVNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSxcclxuICApIHsgXHJcbiAgICB0aGlzLl9wcm9kdWN0aW9uID0gY29yZVNlcnZpY2UuZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcclxuXHJcbiAgICB0aGlzLmFwaVVybCA9IHRoaXMuY29yZVNlcnZpY2UuZW52aXJvbm1lbnQuYXBpVXJsOztcclxuXHJcbiAgICBjb25zb2xlLmxvZyhgJWMgWyBAc2FwcGhpcmUtaW9uL2ZyYW1ld29yayA6ICR7dGhpcy5jb3JlU2VydmljZS5lbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9IHN0YXJ0ZWQgQCBkZXZlbG9wbWVudCBdIHwgQ29uZWN0YWRvIGVtOiAke3RoaXMuYXBpVXJsfWAsIFwiYmFja2dyb3VuZC1jb2xvcjogIzJmZGY3NTsgY29sb3I6IGJsYWNrO1wiKVxyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIFsgQVBJIFVSTCBdXHJcbiAgcHVibGljIF9hcGlVcmw6IHN0cmluZyA9ICcnO1xyXG5cclxuICBwdWJsaWMgZ2V0IGFwaVVybCgpOiBzdHJpbmd7IHJldHVybiB0aGlzLl9hcGlVcmw7IH1cclxuICBwdWJsaWMgc2V0IGFwaVVybCh2YWx1ZTogc3RyaW5nKXtcclxuICAgIHRoaXMuX2FwaVVybCA9IHZhbHVlO1xyXG4gIH1cclxuICBcclxuICBwcml2YXRlIF9wcm9kdWN0aW9uOiBib29sZWFuO1xyXG5cclxuICBwdWJsaWMgZ2V0IHByb2R1Y3Rpb24oKSB7IHJldHVybiB0aGlzLl9wcm9kdWN0aW9uOyB9XHJcbiAgLy8jZW5kcmVnaW9uIFsgQVBJIFVSTCBdXHJcbn1cclxuXHJcbi8vIGV4cG9ydCBjbGFzcyBBcGlVcmx7XHJcbi8vICAgbGFiZWwgICAgIDogc3RyaW5nOyBcclxuLy8gICB2YWx1ZSAgICAgOiBzdHJpbmc7XHJcbi8vICAgcHJvZHVjdGlvbjogYm9vbGVhbjtcclxuLy8gICBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nLCBwb3J0OiBudW1iZXIsIHByb2R1Y3Rpb246IGJvb2xlYW4sIGh0dHBzOiBib29sZWFuID0gZmFsc2Upe1xyXG4vLyAgICAgdGhpcy5wcm9kdWN0aW9uID0gcHJvZHVjdGlvbjtcclxuLy8gICAgIGlmKCFwcm9kdWN0aW9uKXtcclxuLy8gICAgICAgdGhpcy52YWx1ZSA9IGBodHRwJHtodHRwcyA/ICdzJyA6ICcnfTovLyR7dmFsdWV9OiR7cG9ydH0vYDtcclxuLy8gICAgICAgdGhpcy5sYWJlbCA9IHZhbHVlO1xyXG4vLyAgICAgfWVsc2V7XHJcbi8vICAgICAgIHRoaXMudmFsdWUgPSBgaHR0cCR7aHR0cHMgPyAncycgOiAnJ306Ly8ke3ZhbHVlfS9gO1xyXG4vLyAgICAgICB0aGlzLmxhYmVsID0gJ1Byb2R1w6fDo28nXHJcbi8vICAgICB9XHJcbi8vICAgfVxyXG4vLyB9Il19
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { InputBoolConfiguration, InputBoolType } from '../../components/inputs/input-bool/input-bool.configuration';
|
|
3
|
+
import { HttpService } from './http.service';
|
|
4
|
+
import { TableField } from '../../classes/inputs/table-field';
|
|
5
|
+
import { InputType } from '../../components/inputs/input-type';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class HttpServiceAtivo extends HttpService {
|
|
8
|
+
/**
|
|
9
|
+
* Troca o status de ativo da entidade
|
|
10
|
+
*/
|
|
11
|
+
Ativar(id) {
|
|
12
|
+
return this.http.post(this.fullRoute + `/ativar/${id}`, {});
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Lista todos os dados ativos
|
|
16
|
+
* @param vFilter
|
|
17
|
+
*/
|
|
18
|
+
ListAtivo(vFilter) {
|
|
19
|
+
return this.http.post(this.fullRoute + `/listAtivo`, vFilter);
|
|
20
|
+
}
|
|
21
|
+
/** Table Field padrão de ativo */
|
|
22
|
+
get defaultAtivo() {
|
|
23
|
+
var control = this.fb.control(true);
|
|
24
|
+
const field = new TableField("Ativo", "ativo", control, InputType.Bool);
|
|
25
|
+
field.configuration = new InputBoolConfiguration(InputBoolType.Toggle);
|
|
26
|
+
return field;
|
|
27
|
+
}
|
|
28
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpServiceAtivo, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
29
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpServiceAtivo, providedIn: 'root' }); }
|
|
30
|
+
}
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpServiceAtivo, decorators: [{
|
|
32
|
+
type: Injectable,
|
|
33
|
+
args: [{
|
|
34
|
+
providedIn: 'root'
|
|
35
|
+
}]
|
|
36
|
+
}] });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5hdGl2by5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy93ZWIvaHR0cC5hdGl2by5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBQyxNQUFNLDZEQUE2RCxDQUFDO0FBQ25ILE9BQU8sRUFBRSxXQUFXLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQUsvRCxNQUFNLE9BQWdCLGdCQUEwQixTQUFRLFdBQWM7SUFFcEU7O09BRUc7SUFDSCxNQUFNLENBQUMsRUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQVUsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQWtCLE9BQXFCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxJQUFJLFlBQVk7UUFDZCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEUsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7K0dBdkJtQixnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZ4QixNQUFNOzs0RkFFRSxnQkFBZ0I7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBJbnB1dEJvb2xDb25maWd1cmF0aW9uLCBJbnB1dEJvb2xUeXBlfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2lucHV0cy9pbnB1dC1ib29sL2lucHV0LWJvb2wuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlLCBWaWV3UmV0b3JubyB9IGZyb20gJy4vaHR0cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmlld0ZpbHRyb3MgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlcnMvdmlldy1maWx0cm9zJztcclxuaW1wb3J0IHsgVGFibGVGaWVsZCB9IGZyb20gJy4uLy4uL2NsYXNzZXMvaW5wdXRzL3RhYmxlLWZpZWxkJztcclxuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pbnB1dHMvaW5wdXQtdHlwZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBIdHRwU2VydmljZUF0aXZvPFYgPSBhbnk+IGV4dGVuZHMgSHR0cFNlcnZpY2U8Vj4ge1xyXG5cclxuICAvKipcclxuICAgKiBUcm9jYSBvIHN0YXR1cyBkZSBhdGl2byBkYSBlbnRpZGFkZVxyXG4gICAqL1xyXG4gIEF0aXZhcihpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Ym9vbGVhbj4odGhpcy5mdWxsUm91dGUgKyBgL2F0aXZhci8ke2lkfWAsIHt9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RhIHRvZG9zIG9zIGRhZG9zIGF0aXZvc1xyXG4gICAqIEBwYXJhbSB2RmlsdGVyXHJcbiAgICovXHJcbiAgTGlzdEF0aXZvPFQgPSBWaWV3UmV0b3Jubz4odkZpbHRlcj86IFZpZXdGaWx0cm9zKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VD4odGhpcy5mdWxsUm91dGUgKyBgL2xpc3RBdGl2b2AsIHZGaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRhYmxlIEZpZWxkIHBhZHLDo28gZGUgYXRpdm8gKi9cclxuICBnZXQgZGVmYXVsdEF0aXZvKCk6IFRhYmxlRmllbGQge1xyXG4gICAgdmFyIGNvbnRyb2wgPSB0aGlzLmZiLmNvbnRyb2wodHJ1ZSk7XHJcbiAgICBjb25zdCBmaWVsZCA9IG5ldyBUYWJsZUZpZWxkKFwiQXRpdm9cIiwgXCJhdGl2b1wiLCBjb250cm9sLCBJbnB1dFR5cGUuQm9vbCk7XHJcbiAgICBmaWVsZC5jb25maWd1cmF0aW9uID0gbmV3IElucHV0Qm9vbENvbmZpZ3VyYXRpb24oSW5wdXRCb29sVHlwZS5Ub2dnbGUpOyBcclxuICAgIHJldHVybiBmaWVsZDtcclxuICB9XHJcbn0iXX0=
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { BehaviorSubject, firstValueFrom } from 'rxjs';
|
|
2
|
+
import { HttpClient, HttpEventType } from '@angular/common/http';
|
|
3
|
+
import { FormBuilder, FormGroup } from '@angular/forms';
|
|
4
|
+
import { Injectable, inject } from '@angular/core';
|
|
5
|
+
import { NavController } from '@ionic/angular';
|
|
6
|
+
import { ApiUrlProviderService } from './api-url-provider.service';
|
|
7
|
+
import { GenericService } from '../generic.service';
|
|
8
|
+
import { TableField } from '../../classes/inputs/table-field';
|
|
9
|
+
import { InputType } from '../../components/inputs/input-type';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@angular/common/http";
|
|
12
|
+
import * as i2 from "@angular/forms";
|
|
13
|
+
import * as i3 from "../generic.service";
|
|
14
|
+
import * as i4 from "@ionic/angular";
|
|
15
|
+
import * as i5 from "./api-url-provider.service";
|
|
16
|
+
export class HttpService {
|
|
17
|
+
constructor(http, fb, genericService, navController, apiUrlProviderService) {
|
|
18
|
+
this.http = http;
|
|
19
|
+
this.fb = fb;
|
|
20
|
+
this.genericService = genericService;
|
|
21
|
+
this.navController = navController;
|
|
22
|
+
this.apiUrlProviderService = apiUrlProviderService;
|
|
23
|
+
this.http = inject(HttpClient);
|
|
24
|
+
this.fb = inject(FormBuilder);
|
|
25
|
+
this.genericService = inject(GenericService);
|
|
26
|
+
this.navController = inject(NavController);
|
|
27
|
+
this.apiUrlProviderService = inject(ApiUrlProviderService);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Retorna a rota completa do serviço
|
|
31
|
+
* @return string
|
|
32
|
+
* @example 'https://api.example.com/{route}'
|
|
33
|
+
*/
|
|
34
|
+
get fullRoute() {
|
|
35
|
+
return this.apiUrlProviderService.apiUrl + this.route;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Retorna os dados de acordo com os filtros
|
|
39
|
+
* @param vFilter Filtra os dados (Pesquisa, Paginação e IComparison)
|
|
40
|
+
*/
|
|
41
|
+
List(vFilter) {
|
|
42
|
+
return this.http.post(this.fullRoute + `/list`, vFilter);
|
|
43
|
+
}
|
|
44
|
+
/** Retorna o dado da tabela associada com a rota com o id indicado
|
|
45
|
+
* @param id id do dado
|
|
46
|
+
*/
|
|
47
|
+
Get(id) {
|
|
48
|
+
return this.http.get(this.fullRoute + `/get/${id}`);
|
|
49
|
+
}
|
|
50
|
+
/** Salva as alterações no dado recebido */
|
|
51
|
+
Save(obj, view) {
|
|
52
|
+
if (view) {
|
|
53
|
+
view.submitted = true;
|
|
54
|
+
}
|
|
55
|
+
var object = obj;
|
|
56
|
+
if (obj instanceof FormGroup) {
|
|
57
|
+
if (obj.invalid) {
|
|
58
|
+
const subject = new BehaviorSubject(null);
|
|
59
|
+
subject.error("[ Invalid Form ]");
|
|
60
|
+
subject.complete();
|
|
61
|
+
this.genericService.PresentToast("Verifique os campos!");
|
|
62
|
+
return subject;
|
|
63
|
+
}
|
|
64
|
+
object = obj.value;
|
|
65
|
+
}
|
|
66
|
+
const formData = this.FilesToForm(object);
|
|
67
|
+
formData.append('view', JSON.stringify(object));
|
|
68
|
+
//Check in the case it has a file and the view is not passed
|
|
69
|
+
if (Object.entries(object).find(p => p[1] instanceof File) && this.hasFileForm && !view) {
|
|
70
|
+
console.error("[ FormGroup contains file, but view isnt a valid parameter ]");
|
|
71
|
+
}
|
|
72
|
+
else if (view) {
|
|
73
|
+
return this._Save(formData, view);
|
|
74
|
+
}
|
|
75
|
+
return this.http.post(this.fullRoute + `/save`, formData);
|
|
76
|
+
}
|
|
77
|
+
/** Exclui a entidade */
|
|
78
|
+
Delete(id) {
|
|
79
|
+
return this.http.delete(this.fullRoute + `/delete/` + id);
|
|
80
|
+
}
|
|
81
|
+
/** Retorna todos os dados */
|
|
82
|
+
Load(vFiltros) {
|
|
83
|
+
return firstValueFrom(this.List(vFiltros));
|
|
84
|
+
}
|
|
85
|
+
/** Retorna os campos da tabela */
|
|
86
|
+
get lstTableFields() { return []; }
|
|
87
|
+
/** Retorna os campos da tabela para visualização/edição (se vazio retornara o padrão (lstTableFields)) */
|
|
88
|
+
get lstTableFieldsView() { return this.lstTableFields; }
|
|
89
|
+
/** Retora o TableField padrão de id */
|
|
90
|
+
get defaultId() {
|
|
91
|
+
var control = this.fb.control(0);
|
|
92
|
+
const field = new TableField("id", "id", control, InputType.Number);
|
|
93
|
+
field.hidden = true;
|
|
94
|
+
field.hiddenView = true;
|
|
95
|
+
return field;
|
|
96
|
+
}
|
|
97
|
+
/** Retora o TableField padrão de idEmpresa */
|
|
98
|
+
get defaultIdEmpresa() {
|
|
99
|
+
var control = this.fb.control(0);
|
|
100
|
+
const field = new TableField("Empresa", "idEmpresa", control, InputType.Select);
|
|
101
|
+
field.hiddenView = true;
|
|
102
|
+
field.hidden = true;
|
|
103
|
+
return field;
|
|
104
|
+
}
|
|
105
|
+
get hasFileForm() { return this.lstTableFieldsView.filter(p => p.type == InputType.File).length > 0; }
|
|
106
|
+
_Save(formData, view) {
|
|
107
|
+
view.loading = true;
|
|
108
|
+
const subject = new BehaviorSubject(null);
|
|
109
|
+
this.http.post(this.fullRoute + `/save`, formData, { reportProgress: true, observe: 'events' }).subscribe({
|
|
110
|
+
next: (rez) => {
|
|
111
|
+
if (rez.type == HttpEventType.UploadProgress) {
|
|
112
|
+
const res = rez.loaded / rez.total;
|
|
113
|
+
subject.next(rez);
|
|
114
|
+
view.progress = res;
|
|
115
|
+
}
|
|
116
|
+
else if (rez.type == HttpEventType.Response) {
|
|
117
|
+
view.loading = false;
|
|
118
|
+
view.submitted = false;
|
|
119
|
+
view.Refresh();
|
|
120
|
+
const id = Number(rez.body);
|
|
121
|
+
//[ Redirect to view/:id | redirectPath ]
|
|
122
|
+
if (!view.id && id) {
|
|
123
|
+
this.RedirectRoute(id, view.redirectPath, view.GetCurrentRouting());
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
error: (err) => {
|
|
128
|
+
subject.error(err);
|
|
129
|
+
view.loading = false;
|
|
130
|
+
view.submitted = false;
|
|
131
|
+
subject.complete();
|
|
132
|
+
},
|
|
133
|
+
complete: () => {
|
|
134
|
+
this.genericService.PresentToastSuccess();
|
|
135
|
+
subject.complete();
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
return subject;
|
|
139
|
+
}
|
|
140
|
+
RedirectRoute(id, redirectPath, activatedRoute) {
|
|
141
|
+
if (!redirectPath) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const path = redirectPath.replace(":id", id.toString());
|
|
145
|
+
this.navController.navigateRoot([`../${path}`], { relativeTo: activatedRoute });
|
|
146
|
+
}
|
|
147
|
+
FilesToForm(object, formData = new FormData(), lstTableFieldsView = null) {
|
|
148
|
+
if (!lstTableFieldsView) {
|
|
149
|
+
lstTableFieldsView = this.lstTableFieldsView.filter(p => p.type == InputType.File);
|
|
150
|
+
}
|
|
151
|
+
for (const [key, value] of Object.entries(object)) {
|
|
152
|
+
if (lstTableFieldsView.find(p => p.index == key && p.type == InputType.File)) {
|
|
153
|
+
if (value && typeof (value) != "string") {
|
|
154
|
+
const file = value;
|
|
155
|
+
const name = `file-${key}`;
|
|
156
|
+
formData.append(name, file, file.name);
|
|
157
|
+
object[key] = "";
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return formData;
|
|
162
|
+
}
|
|
163
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpService, deps: [{ token: i1.HttpClient }, { token: i2.FormBuilder }, { token: i3.GenericService }, { token: i4.NavController }, { token: i5.ApiUrlProviderService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
164
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpService, providedIn: 'root' }); }
|
|
165
|
+
}
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpService, decorators: [{
|
|
167
|
+
type: Injectable,
|
|
168
|
+
args: [{
|
|
169
|
+
providedIn: 'root'
|
|
170
|
+
}]
|
|
171
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.FormBuilder }, { type: i3.GenericService }, { type: i4.NavController }, { type: i5.ApiUrlProviderService }] });
|
|
172
|
+
export class ViewRetorno {
|
|
173
|
+
constructor() {
|
|
174
|
+
this.lstDados = [];
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy93ZWIvaHR0cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWMsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQWEsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7QUFNL0QsTUFBTSxPQUFnQixXQUFXO0lBSy9CLFlBQ1ksSUFBMkIsRUFDM0IsRUFBNEIsRUFDNUIsY0FBK0IsRUFDL0IsYUFBOEIsRUFDOUIscUJBQTZDO1FBSjdDLFNBQUksR0FBSixJQUFJLENBQXVCO1FBQzNCLE9BQUUsR0FBRixFQUFFLENBQTBCO1FBQzVCLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF3QjtRQUV2RCxJQUFJLENBQUMsSUFBSSxHQUFvQixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLEVBQUUsR0FBc0IsTUFBTSxDQUFDLFdBQVcsQ0FB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QUUsQ0FBQztZQUNsRCxJQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUM7Z0JBQzNFLElBQUcsS0FBSyxJQUFJLE9BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLEVBQUMsQ0FBQztvQkFDckMsTUFBTSxJQUFJLEdBQUcsS0FBYSxDQUFDO29CQUMzQixNQUFNLElBQUksR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDO29CQUMzQixRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN2QyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOytHQXpLbUIsV0FBVzttSEFBWCxXQUFXLGNBRm5CLE1BQU07OzRGQUVFLFdBQVc7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQTZLRCxNQUFNLE9BQU8sV0FBVztJQUF4QjtRQUNFLGFBQVEsR0FBUSxFQUFFLENBQUM7SUFFckIsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnQsIEh0dHBFdmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcblxyXG5pbXBvcnQgeyBBcGlVcmxQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuL2FwaS11cmwtcHJvdmlkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEdlbmVyaWNTZXJ2aWNlIH0gZnJvbSAnLi4vZ2VuZXJpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmlld0ZpbHRyb3MgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlcnMvdmlldy1maWx0cm9zJztcclxuaW1wb3J0IHsgVGFibGVGaWVsZCB9IGZyb20gJy4uLy4uL2NsYXNzZXMvaW5wdXRzL3RhYmxlLWZpZWxkJztcclxuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pbnB1dHMvaW5wdXQtdHlwZSc7XHJcbmltcG9ydCB7IFZpZXcgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC12aWV3L3ZpZXcnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSHR0cFNlcnZpY2U8ViA9IGFueT4ge1xyXG5cclxuICBwdWJsaWMgYWJzdHJhY3Qgcm91dGU6IHN0cmluZzsgXHJcbiAgcHVibGljIGFic3RyYWN0IHRpdGxlOiBzdHJpbmc7IFxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCBodHRwPyAgICAgICAgICA6IEh0dHBDbGllbnQsXHJcbiAgICBwcm90ZWN0ZWQgZmI/ICAgICAgICAgICAgOiBGb3JtQnVpbGRlciwgXHJcbiAgICBwcm90ZWN0ZWQgZ2VuZXJpY1NlcnZpY2U/OiBHZW5lcmljU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBuYXZDb250cm9sbGVyPyA6IE5hdkNvbnRyb2xsZXIsXHJcbiAgICBwcm90ZWN0ZWQgYXBpVXJsUHJvdmlkZXJTZXJ2aWNlPzogQXBpVXJsUHJvdmlkZXJTZXJ2aWNlLFxyXG4gICkgeyBcclxuICAgIHRoaXMuaHR0cCAgICAgICAgICAgICAgICAgID0gaW5qZWN0KEh0dHBDbGllbnQpO1xyXG4gICAgdGhpcy5mYiAgICAgICAgICAgICAgICAgICAgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xyXG4gICAgdGhpcy5nZW5lcmljU2VydmljZSAgICAgICAgPSBpbmplY3QoR2VuZXJpY1NlcnZpY2UpO1xyXG4gICAgdGhpcy5uYXZDb250cm9sbGVyICAgICAgICAgPSBpbmplY3QoTmF2Q29udHJvbGxlcik7XHJcbiAgICB0aGlzLmFwaVVybFByb3ZpZGVyU2VydmljZSA9IGluamVjdChBcGlVcmxQcm92aWRlclNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0b3JuYSBhIHJvdGEgY29tcGxldGEgZG8gc2VydmnDp29cclxuICAgKiBAcmV0dXJuIHN0cmluZ1xyXG4gICAqIEBleGFtcGxlICdodHRwczovL2FwaS5leGFtcGxlLmNvbS97cm91dGV9J1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgZnVsbFJvdXRlKCk6IHN0cmluZ3tcclxuICAgIHJldHVybiB0aGlzLmFwaVVybFByb3ZpZGVyU2VydmljZS5hcGlVcmwgKyB0aGlzLnJvdXRlXHJcbiAgfVxyXG5cclxuICAvKiogXHJcbiAgICogUmV0b3JuYSBvcyBkYWRvcyBkZSBhY29yZG8gY29tIG9zIGZpbHRyb3MgXHJcbiAgICogQHBhcmFtIHZGaWx0ZXIgRmlsdHJhIG9zIGRhZG9zIChQZXNxdWlzYSwgUGFnaW5hw6fDo28gZSBJQ29tcGFyaXNvbilcclxuICAqL1xyXG4gIHB1YmxpYyBMaXN0KHZGaWx0ZXI/OiBWaWV3RmlsdHJvcyk6IE9ic2VydmFibGU8Vmlld1JldG9ybm88Vj4+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFZpZXdSZXRvcm5vPFY+Pih0aGlzLmZ1bGxSb3V0ZSArIGAvbGlzdGAsIHZGaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldG9ybmEgbyBkYWRvIGRhIHRhYmVsYSBhc3NvY2lhZGEgY29tIGEgcm90YSBjb20gbyBpZCBpbmRpY2FkbyBcclxuICAgKiBAcGFyYW0gaWQgaWQgZG8gZGFkb1xyXG4gICovXHJcbiAgcHVibGljIEdldChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxWPiB7IFxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8Vj4odGhpcy5mdWxsUm91dGUgK2AvZ2V0LyR7aWR9YCk7XHJcbiAgfVxyXG4gIFxyXG4gIC8qKiBTYWx2YSBhcyBhbHRlcmHDp8O1ZXMgbm8gZGFkbyByZWNlYmlkbyAqL1xyXG4gIHB1YmxpYyBTYXZlPFQgPSBudW1iZXI+KG9iajogYW55IHwgRm9ybUdyb3VwIHwgViwgdmlldz86IFZpZXc8SHR0cFNlcnZpY2U+KTogT2JzZXJ2YWJsZTxUPntcclxuICAgIGlmKHZpZXcpeyB2aWV3LnN1Ym1pdHRlZCA9IHRydWU7IH1cclxuXHJcbiAgICB2YXIgb2JqZWN0ID0gb2JqO1xyXG4gICAgXHJcbiAgICBpZihvYmogaW5zdGFuY2VvZiBGb3JtR3JvdXApeyBcclxuICAgICAgaWYob2JqLmludmFsaWQpeyBcclxuICAgICAgICBjb25zdCBzdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKVxyXG4gICAgICAgIHN1YmplY3QuZXJyb3IoXCJbIEludmFsaWQgRm9ybSBdXCIpO1xyXG4gICAgICAgIHN1YmplY3QuY29tcGxldGUoKTtcclxuICAgICAgICB0aGlzLmdlbmVyaWNTZXJ2aWNlLlByZXNlbnRUb2FzdChcIlZlcmlmaXF1ZSBvcyBjYW1wb3MhXCIpXHJcbiAgICAgICAgcmV0dXJuIHN1YmplY3Q7XHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgICBvYmplY3QgPSBvYmoudmFsdWU7IFxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy5GaWxlc1RvRm9ybShvYmplY3QpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCd2aWV3JywgSlNPTi5zdHJpbmdpZnkob2JqZWN0KSk7XHJcblxyXG4gICAgLy9DaGVjayBpbiB0aGUgY2FzZSBpdCBoYXMgYSBmaWxlIGFuZCB0aGUgdmlldyBpcyBub3QgcGFzc2VkXHJcbiAgICBpZihPYmplY3QuZW50cmllcyhvYmplY3QpLmZpbmQocCA9PiBwWzFdIGluc3RhbmNlb2YgRmlsZSkgJiYgdGhpcy5oYXNGaWxlRm9ybSAmJiAhdmlldyl7IFxyXG4gICAgICBjb25zb2xlLmVycm9yKFwiWyBGb3JtR3JvdXAgY29udGFpbnMgZmlsZSwgYnV0IHZpZXcgaXNudCBhIHZhbGlkIHBhcmFtZXRlciBdXCIpOyBcclxuICAgIH0gZWxzZSBcclxuICAgIGlmKHZpZXcpeyBcclxuICAgICAgcmV0dXJuIHRoaXMuX1NhdmUoZm9ybURhdGEsIHZpZXcpOyBcclxuICAgIH0gXHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQ+KHRoaXMuZnVsbFJvdXRlICsgYC9zYXZlYCwgZm9ybURhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEV4Y2x1aSBhIGVudGlkYWRlICovXHJcbiAgcHVibGljIERlbGV0ZShpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTx2b2lkPih0aGlzLmZ1bGxSb3V0ZSArIGAvZGVsZXRlL2AraWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldG9ybmEgdG9kb3Mgb3MgZGFkb3MgKi9cclxuICBwdWJsaWMgTG9hZCh2RmlsdHJvcz86IFZpZXdGaWx0cm9zKTogUHJvbWlzZTxWaWV3UmV0b3JubzxWPj57XHJcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5MaXN0KHZGaWx0cm9zKSk7XHJcbiAgfVxyXG5cclxuICAvKiogUmV0b3JuYSBvcyBjYW1wb3MgZGEgdGFiZWxhICovXHJcbiAgZ2V0IGxzdFRhYmxlRmllbGRzKCkgICAgOiBUYWJsZUZpZWxkW10geyByZXR1cm4gW107IH1cclxuICAvKiogUmV0b3JuYSBvcyBjYW1wb3MgZGEgdGFiZWxhIHBhcmEgdmlzdWFsaXphw6fDo28vZWRpw6fDo28gKHNlIHZhemlvIHJldG9ybmFyYSBvIHBhZHLDo28gKGxzdFRhYmxlRmllbGRzKSkgKi8gXHJcbiAgZ2V0IGxzdFRhYmxlRmllbGRzVmlldygpOiBUYWJsZUZpZWxkW10geyByZXR1cm4gdGhpcy5sc3RUYWJsZUZpZWxkczsgfSBcclxuXHJcbiAgLyoqIFJldG9yYSBvIFRhYmxlRmllbGQgcGFkcsOjbyBkZSBpZCAqL1xyXG4gIGdldCBkZWZhdWx0SWQoKSB7XHJcbiAgICB2YXIgY29udHJvbCA9IHRoaXMuZmIuY29udHJvbCgwKTtcclxuICAgIGNvbnN0IGZpZWxkID0gbmV3IFRhYmxlRmllbGQoXCJpZFwiLCBcImlkXCIsIGNvbnRyb2wsIElucHV0VHlwZS5OdW1iZXIpOyBcclxuICAgIGZpZWxkLmhpZGRlbiAgICAgPSB0cnVlO1xyXG4gICAgZmllbGQuaGlkZGVuVmlldyA9IHRydWU7XHJcbiAgICByZXR1cm4gZmllbGRcclxuICB9XHJcblxyXG4gIC8qKiBSZXRvcmEgbyBUYWJsZUZpZWxkIHBhZHLDo28gZGUgaWRFbXByZXNhICovXHJcbiAgZ2V0IGRlZmF1bHRJZEVtcHJlc2EoKSB7XHJcbiAgICB2YXIgY29udHJvbCA9IHRoaXMuZmIuY29udHJvbCgwKTtcclxuICAgIGNvbnN0IGZpZWxkID0gbmV3IFRhYmxlRmllbGQoXCJFbXByZXNhXCIsIFwiaWRFbXByZXNhXCIsIGNvbnRyb2wsIElucHV0VHlwZS5TZWxlY3QpOyBcclxuICAgIGZpZWxkLmhpZGRlblZpZXcgPSB0cnVlO1xyXG4gICAgZmllbGQuaGlkZGVuICAgICA9IHRydWU7XHJcbiAgICByZXR1cm4gZmllbGQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBoYXNGaWxlRm9ybSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMubHN0VGFibGVGaWVsZHNWaWV3LmZpbHRlcihwID0+IHAudHlwZSA9PSBJbnB1dFR5cGUuRmlsZSkubGVuZ3RoID4gMDsgfSBcclxuXHJcbiAgcHJvdGVjdGVkIF9TYXZlKGZvcm1EYXRhOiBGb3JtRGF0YSwgdmlldzogVmlldzxIdHRwU2VydmljZT4pOiBPYnNlcnZhYmxlPGFueSB8IHZvaWQ+e1xyXG4gICAgdmlldy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCBzdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIdHRwRXZlbnQ8YW55Pj4obnVsbCk7XHJcblxyXG4gICAgdGhpcy5odHRwLnBvc3QodGhpcy5mdWxsUm91dGUgKyBgL3NhdmVgLCBmb3JtRGF0YSwgeyByZXBvcnRQcm9ncmVzczogdHJ1ZSwgb2JzZXJ2ZTogJ2V2ZW50cycgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJleikgPT4geyBcclxuICAgICAgICBpZihyZXoudHlwZSA9PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKXtcclxuICAgICAgICAgIGNvbnN0IHJlcyA9IHJlei5sb2FkZWQgLyByZXoudG90YWwhOyBcclxuICAgICAgICAgIHN1YmplY3QubmV4dChyZXopO1xyXG4gICAgICAgICAgdmlldy5wcm9ncmVzcyA9IHJlczsgIFxyXG4gICAgICAgIH1lbHNlIFxyXG4gICAgICAgIGlmKHJlei50eXBlID09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2Upe1xyXG4gICAgICAgICAgdmlldy5sb2FkaW5nICAgPSBmYWxzZTsgXHJcbiAgICAgICAgICB2aWV3LnN1Ym1pdHRlZCA9IGZhbHNlOyBcclxuICAgICAgICAgIHZpZXcuUmVmcmVzaCgpOyBcclxuXHJcbiAgICAgICAgICBjb25zdCBpZDogbnVtYmVyID0gTnVtYmVyKHJlei5ib2R5KVxyXG5cclxuICAgICAgICAgIC8vWyBSZWRpcmVjdCB0byB2aWV3LzppZCB8IHJlZGlyZWN0UGF0aCBdXHJcbiAgICAgICAgICBpZighdmlldy5pZCAmJiBpZCl7IFxyXG4gICAgICAgICAgICB0aGlzLlJlZGlyZWN0Um91dGUoaWQsIHZpZXcucmVkaXJlY3RQYXRoLCB2aWV3LkdldEN1cnJlbnRSb3V0aW5nKCkpOyBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOihlcnIpID0+IHsgXHJcbiAgICAgICAgc3ViamVjdC5lcnJvcihlcnIpOyBcclxuICAgICAgICB2aWV3LmxvYWRpbmcgICA9IGZhbHNlOyBcclxuICAgICAgICB2aWV3LnN1Ym1pdHRlZCA9IGZhbHNlOyBcclxuICAgICAgICBzdWJqZWN0LmNvbXBsZXRlKCk7IFxyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTooKSA9PiB7IFxyXG4gICAgICAgIHRoaXMuZ2VuZXJpY1NlcnZpY2UuUHJlc2VudFRvYXN0U3VjY2VzcygpO1xyXG4gICAgICAgIHN1YmplY3QuY29tcGxldGUoKTsgXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBzdWJqZWN0O1xyXG4gIH1cclxuICBwcml2YXRlIFJlZGlyZWN0Um91dGUoaWQ6IG51bWJlciwgcmVkaXJlY3RQYXRoOiBzdHJpbmcsIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IHZvaWQge1xyXG4gICAgaWYoIXJlZGlyZWN0UGF0aCl7IHJldHVybjsgfVxyXG4gICAgY29uc3QgcGF0aCA9IHJlZGlyZWN0UGF0aC5yZXBsYWNlKFwiOmlkXCIsIGlkLnRvU3RyaW5nKCkpO1xyXG4gICAgdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlUm9vdChbYC4uLyR7cGF0aH1gXSwgeyByZWxhdGl2ZVRvOiBhY3RpdmF0ZWRSb3V0ZSB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEZpbGVzVG9Gb3JtKG9iamVjdDogViwgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCksIGxzdFRhYmxlRmllbGRzVmlldzogVGFibGVGaWVsZFtdIHwgbnVsbCA9IG51bGwpOiBGb3JtRGF0YSB7XHJcbiAgICBpZighbHN0VGFibGVGaWVsZHNWaWV3KXsgbHN0VGFibGVGaWVsZHNWaWV3ID0gdGhpcy5sc3RUYWJsZUZpZWxkc1ZpZXcuZmlsdGVyKHAgPT4gcC50eXBlID09IElucHV0VHlwZS5GaWxlKTsgfVxyXG5cclxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iamVjdCkpIHtcclxuICAgICAgaWYobHN0VGFibGVGaWVsZHNWaWV3LmZpbmQocCA9PiBwLmluZGV4ID09IGtleSAmJiBwLnR5cGUgPT0gSW5wdXRUeXBlLkZpbGUpKXtcclxuICAgICAgICBpZih2YWx1ZSAmJiB0eXBlb2YodmFsdWUpICE9IFwic3RyaW5nXCIpe1xyXG4gICAgICAgICAgY29uc3QgZmlsZSA9IHZhbHVlIGFzIEZpbGU7XHJcbiAgICAgICAgICBjb25zdCBuYW1lID0gYGZpbGUtJHtrZXl9YDtcclxuICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChuYW1lLCBmaWxlLCBmaWxlLm5hbWUpO1xyXG4gICAgICAgICAgb2JqZWN0W2tleV0gPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcm1EYXRhO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFZpZXdSZXRvcm5vPFQgPSBhbnk+IHtcclxuICBsc3REYWRvczogVFtdID0gW107XHJcbiAgdG90YWw6IG51bWJlcjtcclxufSJdfQ==
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { HttpClient, HttpEventType } from '@angular/common/http';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { Injectable } from '@angular/core';
|
|
4
|
+
import { ApiUrlProviderService } from './api-url-provider.service';
|
|
5
|
+
import { GenericService } from '../generic.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common/http";
|
|
8
|
+
import * as i2 from "./api-url-provider.service";
|
|
9
|
+
import * as i3 from "../generic.service";
|
|
10
|
+
export class StorageService {
|
|
11
|
+
constructor(http, apiUrlProviderService, genericService) {
|
|
12
|
+
this.http = http;
|
|
13
|
+
this.apiUrlProviderService = apiUrlProviderService;
|
|
14
|
+
this.genericService = genericService;
|
|
15
|
+
this.currentlyDownloading = [];
|
|
16
|
+
}
|
|
17
|
+
GetProgress(file) {
|
|
18
|
+
const Download = this.currentlyDownloading.find(p => p.file == file);
|
|
19
|
+
return Download ? Download.progress : 0;
|
|
20
|
+
}
|
|
21
|
+
StartDownload(file, params, post = false) {
|
|
22
|
+
if (!this.currentlyDownloading.find(p => p.file == file)) {
|
|
23
|
+
const download = new Download(file);
|
|
24
|
+
this.currentlyDownloading.push(download);
|
|
25
|
+
this.HandleDownload(download, params, post);
|
|
26
|
+
return download;
|
|
27
|
+
}
|
|
28
|
+
return this.currentlyDownloading.find(p => p.file == file);
|
|
29
|
+
}
|
|
30
|
+
HandleDownload(download, params, post = false) {
|
|
31
|
+
var request = this.GetFile(download.file, params, post);
|
|
32
|
+
const requestProgess = new BehaviorSubject(null);
|
|
33
|
+
download.requestProgess = requestProgess;
|
|
34
|
+
request.subscribe({
|
|
35
|
+
next: (event) => {
|
|
36
|
+
if (event.type === HttpEventType.DownloadProgress) {
|
|
37
|
+
download.progress = event.loaded / event.total;
|
|
38
|
+
requestProgess.next(download.progress);
|
|
39
|
+
}
|
|
40
|
+
else if (event.type === HttpEventType.Response) {
|
|
41
|
+
DownloadFile(event, download.file);
|
|
42
|
+
this.currentlyDownloading.splice(this.currentlyDownloading.indexOf(download), 1);
|
|
43
|
+
requestProgess.complete();
|
|
44
|
+
}
|
|
45
|
+
if (event.status == 404) {
|
|
46
|
+
this.genericService.PresentToast("Arquivo não encontrado / Url inválida");
|
|
47
|
+
requestProgess.error(event);
|
|
48
|
+
requestProgess.complete();
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
error: (err) => {
|
|
52
|
+
this.currentlyDownloading.splice(this.currentlyDownloading.indexOf(download), 1);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
return request;
|
|
56
|
+
}
|
|
57
|
+
static SanitizeFileName(v) {
|
|
58
|
+
try {
|
|
59
|
+
var filenameEnd = v.split('/').at(-1);
|
|
60
|
+
if (filenameEnd.split('.').length <= 2) {
|
|
61
|
+
return filenameEnd;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
var lst = filenameEnd.split('.');
|
|
65
|
+
lst[0] = '';
|
|
66
|
+
return lst.join('.').replace('.', '');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return v;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
;
|
|
74
|
+
GetFile(fileUrl, params, post = false) {
|
|
75
|
+
var url;
|
|
76
|
+
if (fileUrl[0] == '/') {
|
|
77
|
+
url = fileUrl.slice(1, fileUrl.length - 1);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
url = `${this.apiUrlProviderService.apiUrl}${fileUrl}`;
|
|
81
|
+
}
|
|
82
|
+
url = encodeURI(url).replace(/#/g, '%23');
|
|
83
|
+
if (!post) {
|
|
84
|
+
return this.http.get(url, {
|
|
85
|
+
reportProgress: true,
|
|
86
|
+
observe: 'events',
|
|
87
|
+
responseType: 'blob',
|
|
88
|
+
params: params
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
return this.http.post(url, params, {
|
|
93
|
+
reportProgress: true,
|
|
94
|
+
observe: 'events',
|
|
95
|
+
responseType: 'blob'
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* @param lstFiles
|
|
101
|
+
* lista de arquivos a serem baixados
|
|
102
|
+
* @param onUpdate
|
|
103
|
+
* funcao chamada a cada progresso de download
|
|
104
|
+
* @returns
|
|
105
|
+
* lista de respostas dos arquivos, como promise, quando todos estiverem completos ou deram erro, é retornada
|
|
106
|
+
*/
|
|
107
|
+
async GetBlobBatchLiveResponse(lstFiles, onUpdate) {
|
|
108
|
+
if (!lstFiles || lstFiles.length === 0) {
|
|
109
|
+
return Promise.resolve([]);
|
|
110
|
+
}
|
|
111
|
+
const lst = lstFiles.map(p => ({
|
|
112
|
+
path: p,
|
|
113
|
+
observable: this.GetFile(p),
|
|
114
|
+
progress: 0,
|
|
115
|
+
success: undefined,
|
|
116
|
+
blob: undefined
|
|
117
|
+
}));
|
|
118
|
+
const isAllComplete = () => lst.every(obs => obs.progress >= 1);
|
|
119
|
+
const getTotalProgressAvg = () => lst.reduce((acc, obs) => acc + obs.progress, 0) / lst.length;
|
|
120
|
+
return new Promise((resolve) => {
|
|
121
|
+
for (const obs of lst) {
|
|
122
|
+
obs.observable.subscribe({
|
|
123
|
+
next: (event) => {
|
|
124
|
+
if (event.type === HttpEventType.DownloadProgress) {
|
|
125
|
+
obs.progress = event.loaded / event.total;
|
|
126
|
+
onUpdate(getTotalProgressAvg(), lst, event.type);
|
|
127
|
+
}
|
|
128
|
+
else if (event.type === HttpEventType.Response) {
|
|
129
|
+
obs.blob = new Blob([event.body], { type: event.body.type });
|
|
130
|
+
obs.success = true;
|
|
131
|
+
if (isAllComplete()) {
|
|
132
|
+
resolve(lst);
|
|
133
|
+
}
|
|
134
|
+
onUpdate(getTotalProgressAvg(), lst, event.type);
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
error: (err) => {
|
|
138
|
+
obs.success = false;
|
|
139
|
+
obs.progress = 1;
|
|
140
|
+
onUpdate(getTotalProgressAvg(), lst);
|
|
141
|
+
if (isAllComplete()) {
|
|
142
|
+
resolve(lst);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
async GetBlobLiveResponse(file, onUpdate) {
|
|
150
|
+
return (await this.GetBlobBatchLiveResponse([file], (totalProgress, lstResponse, eventType) => {
|
|
151
|
+
onUpdate?.(totalProgress, lstResponse[0], eventType);
|
|
152
|
+
}))[0];
|
|
153
|
+
}
|
|
154
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StorageService, deps: [{ token: i1.HttpClient }, { token: i2.ApiUrlProviderService }, { token: i3.GenericService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
155
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StorageService, providedIn: 'root' }); }
|
|
156
|
+
}
|
|
157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StorageService, decorators: [{
|
|
158
|
+
type: Injectable,
|
|
159
|
+
args: [{
|
|
160
|
+
providedIn: 'root'
|
|
161
|
+
}]
|
|
162
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ApiUrlProviderService }, { type: i3.GenericService }] });
|
|
163
|
+
export class Download {
|
|
164
|
+
constructor(file) {
|
|
165
|
+
this.file = file;
|
|
166
|
+
this.progress = 0.00001;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function DownloadFile(data, fileUrl) {
|
|
170
|
+
const downloadedFile = new Blob([data.body], { type: data.body.type });
|
|
171
|
+
var fileURL = URL.createObjectURL(downloadedFile);
|
|
172
|
+
const linkElement = document.createElement("a");
|
|
173
|
+
linkElement.setAttribute("href", fileURL);
|
|
174
|
+
linkElement.setAttribute("target", "_blank");
|
|
175
|
+
linkElement.setAttribute("download", StorageService.SanitizeFileName(fileUrl));
|
|
176
|
+
let me = new MouseEvent("click", {
|
|
177
|
+
view: window,
|
|
178
|
+
bubbles: true,
|
|
179
|
+
cancelable: false,
|
|
180
|
+
});
|
|
181
|
+
linkElement.dispatchEvent(me);
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy93ZWIvc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsYUFBYSxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQTBDLE1BQU0sTUFBTSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQVFwRCxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUNRLElBQWlCLEVBQ2pCLHFCQUE0QyxFQUM1QyxjQUE4QjtRQUY5QixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRzlCLHlCQUFvQixHQUFlLEVBQUUsQ0FBQztJQUYxQyxDQUFDO0lBSUUsV0FBVyxDQUFDLElBQVk7UUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUE7UUFDcEUsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQVksRUFBRSxNQUFZLEVBQUUsT0FBZ0IsS0FBSztRQUNwRSxJQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJ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LE9BQU8sRUFBRSxJQUFJO1FBQ2IsVUFBVSxFQUFFLEtBQUs7S0FDcEIsQ0FBQyxDQUFDO0lBRUgsV0FBVyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEV2ZW50LCBIdHRwRXZlbnRUeXBlLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgbGFzdFZhbHVlRnJvbSwgbWFwLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQXBpVXJsUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9hcGktdXJsLXByb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uL2dlbmVyaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vdXRpbHMuc2VydmljZSc7XHJcblxyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0b3JhZ2VTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgcHJpdmF0ZSBodHRwIDogSHR0cENsaWVudCxcclxuICBwcml2YXRlIGFwaVVybFByb3ZpZGVyU2VydmljZTogQXBpVXJsUHJvdmlkZXJTZXJ2aWNlLFxyXG4gIHByaXZhdGUgZ2VuZXJpY1NlcnZpY2U6IEdlbmVyaWNTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgcHJpdmF0ZSBjdXJyZW50bHlEb3dubG9hZGluZzogRG93bmxvYWRbXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgR2V0UHJvZ3Jlc3MoZmlsZTogc3RyaW5nKTogbnVtYmVye1xyXG4gICAgY29uc3QgRG93bmxvYWQgPSB0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLmZpbmQocCA9PiBwLmZpbGUgPT0gZmlsZSlcclxuICAgIHJldHVybiBEb3dubG9hZCA/IERvd25sb2FkLnByb2dyZXNzIDogMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTdGFydERvd25sb2FkKGZpbGU6IHN0cmluZywgcGFyYW1zPzogYW55LCBwb3N0OiBib29sZWFuID0gZmFsc2UpOiBEb3dubG9hZCB7XHJcbiAgICBpZighdGhpcy5jdXJyZW50bHlEb3dubG9hZGluZy5maW5kKHAgPT4gcC5maWxlID09IGZpbGUpKXtcclxuICAgICAgY29uc3QgZG93bmxvYWQgPSBuZXcgRG93bmxvYWQoZmlsZSk7XHJcbiAgICAgIHRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcucHVzaChkb3dubG9hZCk7XHJcbiAgICAgIHRoaXMuSGFuZGxlRG93bmxvYWQoZG93bmxvYWQsIHBhcmFtcywgcG9zdCk7XHJcbiAgICAgIHJldHVybiBkb3dubG9hZDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLmZpbmQocCA9PiBwLmZpbGUgPT0gZmlsZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIEhhbmRsZURvd25sb2FkKGRvd25sb2FkOiBEb3dubG9hZCwgcGFyYW1zPzogYW55LCBwb3N0OiBib29sZWFuID0gZmFsc2Upe1xyXG4gICAgdmFyIHJlcXVlc3Q6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuR2V0RmlsZShkb3dubG9hZC5maWxlLCBwYXJhbXMsIHBvc3QpO1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3RQcm9nZXNzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xyXG4gICAgZG93bmxvYWQucmVxdWVzdFByb2dlc3MgPSByZXF1ZXN0UHJvZ2VzcztcclxuICAgIHJlcXVlc3Quc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuRG93bmxvYWRQcm9ncmVzcykgeyBcclxuICAgICAgICAgIGRvd25sb2FkLnByb2dyZXNzID0gZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWw7IFxyXG4gICAgICAgICAgcmVxdWVzdFByb2dlc3MubmV4dChkb3dubG9hZC5wcm9ncmVzcyk7XHJcbiAgICAgICAgfSBlbHNlIFxyXG4gICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBEb3dubG9hZEZpbGUoZXZlbnQsIGRvd25sb2FkLmZpbGUpO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50bHlEb3dubG9hZGluZy5zcGxpY2UodGhpcy5jdXJyZW50bHlEb3dubG9hZGluZy5pbmRleE9mKGRvd25sb2FkKSwgMSk7XHJcbiAgICAgICAgICByZXF1ZXN0UHJvZ2Vzcy5jb21wbGV0ZSgpOyBcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoZXZlbnQuc3RhdHVzID09IDQwNCl7XHJcbiAgICAgICAgICB0aGlzLmdlbmVyaWNTZXJ2aWNlLlByZXNlbnRUb2FzdChcIkFycXVpdm8gbsOjbyBlbmNvbnRyYWRvIC8gVXJsIGludsOhbGlkYVwiKVxyXG4gICAgICAgICAgcmVxdWVzdFByb2dlc3MuZXJyb3IoZXZlbnQpOyBcclxuICAgICAgICAgIHJlcXVlc3RQcm9nZXNzLmNvbXBsZXRlKCk7IFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLnNwbGljZSh0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLmluZGV4T2YoZG93bmxvYWQpLCAxKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXF1ZXN0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBTYW5pdGl6ZUZpbGVOYW1lKHY6IHN0cmluZyk6IHN0cmluZ3tcclxuICAgIHRyeXtcclxuICAgICAgdmFyIGZpbGVuYW1lRW5kOiBzdHJpbmcgID0gdi5zcGxpdCgnLycpLmF0KC0xKTtcclxuICAgICAgXHJcbiAgICAgIGlmKGZpbGVuYW1lRW5kLnNwbGl0KCcuJykubGVuZ3RoIDw9IDIpe1xyXG4gICAgICAgIHJldHVybiBmaWxlbmFtZUVuZDtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdmFyIGxzdCA9IGZpbGVuYW1lRW5kLnNwbGl0KCcuJyk7XHJcbiAgICAgICAgbHN0WzBdID0gJyc7XHJcbiAgICAgICAgcmV0dXJuIGxzdC5qb2luKCcuJykucmVwbGFjZSgnLicsICcnKTtcclxuICAgICAgfVxyXG4gICAgfWNhdGNoe1xyXG4gICAgICByZXR1cm4gdjtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBwdWJsaWMgR2V0RmlsZShmaWxlVXJsOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgcG9zdDogYm9vbGVhbiA9IGZhbHNlKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QmxvYj4+IHtcclxuICAgIHZhciB1cmw6IHN0cmluZztcclxuICAgIGlmKGZpbGVVcmxbMF0gPT0gJy8nKXsgXHJcbiAgICAgIHVybCA9IGZpbGVVcmwuc2xpY2UoMSwgZmlsZVVybC5sZW5ndGggLSAxKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB1cmwgPSBgJHt0aGlzLmFwaVVybFByb3ZpZGVyU2VydmljZS5hcGlVcmx9JHtmaWxlVXJsfWA7XHJcbiAgICB9XHJcbiAgICB1cmwgPSBlbmNvZGVVUkkodXJsKS5yZXBsYWNlKC8jL2csICclMjMnKVxyXG5cclxuICAgIGlmKCFwb3N0KXtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7XHJcbiAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXHJcbiAgICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXHJcbiAgICAgICAgcGFyYW1zOiBwYXJhbXNcclxuICAgICAgfSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVybCwgcGFyYW1zLCB7XHJcbiAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXHJcbiAgICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYidcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcGFyYW0gbHN0RmlsZXMgXHJcbiAgICogbGlzdGEgZGUgYXJxdWl2b3MgYSBzZXJlbSBiYWl4YWRvcyBcclxuICAgKiBAcGFyYW0gb25VcGRhdGUgXHJcbiAgICogZnVuY2FvIGNoYW1hZGEgYSBjYWRhIHByb2dyZXNzbyBkZSBkb3dubG9hZFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqIGxpc3RhIGRlIHJlc3Bvc3RhcyBkb3MgYXJxdWl2b3MsIGNvbW8gcHJvbWlzZSwgcXVhbmRvIHRvZG9zIGVzdGl2ZXJlbSBjb21wbGV0b3Mgb3UgZGVyYW0gZXJybywgw6kgcmV0b3JuYWRhXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIEdldEJsb2JCYXRjaExpdmVSZXNwb25zZShsc3RGaWxlczogc3RyaW5nW10sIG9uVXBkYXRlOiAodG90YWxQcm9ncmVzczogbnVtYmVyLCBsc3RSZXNwb25zZT86IExpdmVSZXNwb25zZVtdLCBldmVudFR5cGU/OiBIdHRwRXZlbnRUeXBlKSA9PiB2b2lkKTogUHJvbWlzZTxMaXZlUmVzcG9uc2VbXT4ge1xyXG4gICAgaWYoIWxzdEZpbGVzIHx8IGxzdEZpbGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBsc3Q6IExpdmVSZXNwb25zZVtdID0gbHN0RmlsZXMubWFwKHAgPT4gKHtcclxuICAgICAgcGF0aCAgICAgIDogcCxcclxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5HZXRGaWxlKHApLFxyXG4gICAgICBwcm9ncmVzcyAgOiAwLFxyXG4gICAgICBzdWNjZXNzICAgOiB1bmRlZmluZWQsXHJcbiAgICAgIGJsb2IgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgfSkpO1xyXG5cclxuICAgIGNvbnN0IGlzQWxsQ29tcGxldGUgPSAoKSA9PiBsc3QuZXZlcnkob2JzID0+IG9icy5wcm9ncmVzcyA+PSAxKTtcclxuICAgIGNvbnN0IGdldFRvdGFsUHJvZ3Jlc3NBdmcgPSAoKSA9PiBsc3QucmVkdWNlKChhY2MsIG9icykgPT4gYWNjICsgb2JzLnByb2dyZXNzLCAwKSAvIGxzdC5sZW5ndGg7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPExpdmVSZXNwb25zZVtdPigocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IG9icyBvZiBsc3QpIHtcclxuICAgICAgICBvYnMub2JzZXJ2YWJsZS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLkRvd25sb2FkUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgICBvYnMucHJvZ3Jlc3MgPSBldmVudC5sb2FkZWQgLyBldmVudC50b3RhbDtcclxuICAgICAgICAgICAgICBvblVwZGF0ZShnZXRUb3RhbFByb2dyZXNzQXZnKCksIGxzdCwgZXZlbnQudHlwZSk7XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICBvYnMuYmxvYiA9IG5ldyBCbG9iKFtldmVudC5ib2R5XSwgeyB0eXBlOiBldmVudC5ib2R5LnR5cGUgfSk7XHJcbiAgICAgICAgICAgICAgb2JzLnN1Y2Nlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGlmKGlzQWxsQ29tcGxldGUoKSl7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKGxzdCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIG9uVXBkYXRlKGdldFRvdGFsUHJvZ3Jlc3NBdmcoKSwgbHN0LCBldmVudC50eXBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIG9icy5zdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIG9icy5wcm9ncmVzcyA9IDE7XHJcbiAgICAgICAgICAgIG9uVXBkYXRlKGdldFRvdGFsUHJvZ3Jlc3NBdmcoKSwgbHN0KTtcclxuICAgICAgICAgICAgaWYoaXNBbGxDb21wbGV0ZSgpKXtcclxuICAgICAgICAgICAgICByZXNvbHZlKGxzdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBHZXRCbG9iTGl2ZVJlc3BvbnNlKGZpbGU6IHN0cmluZywgb25VcGRhdGU/OiAocHJvZ3Jlc3M6IG51bWJlciwgcmVzcG9uc2U/OiBMaXZlUmVzcG9uc2UsIGV2ZW50VHlwZT86IEh0dHBFdmVudFR5cGUpID0+IHZvaWQpOiBQcm9taXNlPExpdmVSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLkdldEJsb2JCYXRjaExpdmVSZXNwb25zZShbZmlsZV0sICh0b3RhbFByb2dyZXNzLCBsc3RSZXNwb25zZSwgZXZlbnRUeXBlKSA9PiB7XHJcbiAgICAgIG9uVXBkYXRlPy4odG90YWxQcm9ncmVzcywgbHN0UmVzcG9uc2VbMF0sIGV2ZW50VHlwZSk7XHJcbiAgICB9KSlbMF07XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEdldEZpbGVSZXNwb25zZXtcclxuICBwYXRoOiBzdHJpbmc7XHJcbiAgYmxvYj86IEJsb2I7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGl2ZVJlc3BvbnNle1xyXG4gIHBhdGg6IHN0cmluZztcclxuICBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj47XHJcbiAgcHJvZ3Jlc3M6IG51bWJlcjtcclxuICBibG9iPzogQmxvYjtcclxuICBzdWNjZXNzPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERvd25sb2FkIHtcclxuICByZXF1ZXN0UHJvZ2VzczogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIHByb2dyZXNzICAgICAgOiBudW1iZXIgPSAwLjAwMDAxO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmaWxlOiBzdHJpbmcpe31cclxufVxyXG5cclxuZnVuY3Rpb24gRG93bmxvYWRGaWxlKGRhdGE6IEh0dHBSZXNwb25zZTxCbG9iPiwgZmlsZVVybCkge1xyXG4gIGNvbnN0IGRvd25sb2FkZWRGaWxlID0gbmV3IEJsb2IoW2RhdGEuYm9keV0sIHsgdHlwZTogZGF0YS5ib2R5LnR5cGUgfSk7XHJcblxyXG4gIHZhciBmaWxlVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChkb3dubG9hZGVkRmlsZSk7XHJcbiAgY29uc3QgbGlua0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIGZpbGVVUkwpO1xyXG4gIGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZShcInRhcmdldFwiLCBcIl9ibGFua1wiKTtcclxuICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkb3dubG9hZFwiLCBTdG9yYWdlU2VydmljZS5TYW5pdGl6ZUZpbGVOYW1lKGZpbGVVcmwpKTtcclxuXHJcbiAgbGV0IG1lID0gbmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiLCB7XHJcbiAgICAgIHZpZXc6IHdpbmRvdyxcclxuICAgICAgYnViYmxlczogdHJ1ZSxcclxuICAgICAgY2FuY2VsYWJsZTogZmFsc2UsXHJcbiAgfSk7XHJcblxyXG4gIGxpbmtFbGVtZW50LmRpc3BhdGNoRXZlbnQobWUpO1xyXG59Il19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of ion-sapphire-framework
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgaW9uLXNhcHBoaXJlLWZyYW1ld29ya1xyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2luZGV4JzsiXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FwcGhpcmUtaW9uLWZyYW1ld29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zYXBwaGlyZS1pb24tZnJhbWV3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|