@sapphire-ion/framework 0.30.27 → 0.30.28
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/build.ps1 +39 -0
- package/ng-package.json +10 -0
- package/package.json +37 -41
- package/src/lib/classes/comparison/comparison-operator.ts +17 -0
- package/src/lib/classes/comparison/comparison-value-type.ts +34 -0
- package/src/lib/classes/comparison/comparison.ts +45 -0
- package/src/lib/classes/comparison/properties/bool-property.ts +16 -0
- package/src/lib/classes/comparison/properties/date-property.ts +28 -0
- package/src/lib/classes/comparison/properties/datetime-property.ts +28 -0
- package/src/lib/classes/comparison/properties/decimal-property.ts +28 -0
- package/src/lib/classes/comparison/properties/enum-property.ts +28 -0
- package/src/lib/classes/comparison/properties/implicit-property.ts +13 -0
- package/src/lib/classes/comparison/properties/int-property.ts +28 -0
- package/src/lib/classes/comparison/properties/long-property.ts +28 -0
- package/src/lib/classes/comparison/properties/string-property.ts +16 -0
- package/src/lib/classes/comparison/properties/time-property.ts +28 -0
- package/{lib/classes/credentials.d.ts → src/lib/classes/credentials.ts} +5 -5
- package/src/lib/classes/environment.ts +35 -0
- package/src/lib/classes/filters/view-filtros.ts +18 -0
- package/src/lib/classes/infinite-scroll.ts +112 -0
- package/src/lib/classes/inputs/table-field-form-builder.ts +12 -0
- package/src/lib/classes/inputs/table-field.ts +58 -0
- package/src/lib/classes/page-option.ts +8 -0
- package/src/lib/classes/routes/default-routing-factory.ts +24 -0
- package/src/lib/classes/routes/id-preloader-configuration.ts +21 -0
- package/src/lib/classes/routes/route-data.ts +9 -0
- package/{themes → src/lib}/compiled-styles.scss +2338 -2338
- package/src/lib/components/_inputs_new/classes/input-control-base.ts +85 -0
- package/src/lib/components/_inputs_new/classes/input-provider-factory.ts +16 -0
- package/src/lib/components/_inputs_new/input-string/input-string.component.html +4 -0
- package/src/lib/components/_inputs_new/input-string/input-string.component.ts +15 -0
- package/src/lib/components/_inputs_new/inputs.module.ts +16 -0
- package/src/lib/components/carousel/carousel-image/carousel-image.component.html +4 -0
- package/src/lib/components/carousel/carousel-image/carousel-image.component.ts +15 -0
- package/src/lib/components/carousel/carousel-item/carousel-item.component.html +3 -0
- package/src/lib/components/carousel/carousel-item/carousel-item.component.ts +14 -0
- package/src/lib/components/carousel/carousel.component.html +22 -0
- package/src/lib/components/carousel/carousel.component.ts +83 -0
- package/src/lib/components/carousel/carousel.module.ts +20 -0
- package/src/lib/components/carousel/i-carousel-item.component.ts +8 -0
- package/src/lib/components/content-block/content-block.component.html +6 -0
- package/src/lib/components/content-block/content-block.component.ts +25 -0
- package/src/lib/components/default/default-list/abstract-list.ts +56 -0
- package/src/lib/components/default/default-list/default-list.component.html +60 -0
- package/src/lib/components/default/default-list/default-list.component.ts +71 -0
- package/src/lib/components/default/default-list/header-list/header-list.component.html +32 -0
- package/src/lib/components/default/default-list/header-list/header-list.component.ts +85 -0
- package/src/lib/components/default/default-list/list.ts +121 -0
- package/src/lib/components/default/default-pagination/default-pagination.component.html +52 -0
- package/src/lib/components/default/default-pagination/default-pagination.component.ts +118 -0
- package/src/lib/components/default/default-table/default-table.component.html +105 -0
- package/src/lib/components/default/default-table/default-table.component.ts +197 -0
- package/src/lib/components/default/default-table/th-filter/th-filter.component.html +61 -0
- package/src/lib/components/default/default-table/th-filter/th-filter.component.ts +178 -0
- package/src/lib/components/default/default-view/abstract-view.ts +25 -0
- package/src/lib/components/default/default-view/default-view.component.html +81 -0
- package/src/lib/components/default/default-view/default-view.component.ts +34 -0
- package/src/lib/components/default/default-view/header-view/header-view.component.html +64 -0
- package/src/lib/components/default/default-view/header-view/header-view.component.ts +54 -0
- package/src/lib/components/default/default-view/view.ts +171 -0
- package/src/lib/components/default/default.module.ts +55 -0
- package/src/lib/components/default-page/default.page.html +53 -0
- package/src/lib/components/default-page/default.page.ts +77 -0
- package/src/lib/components/drag-drop-file/drag-drop-file.directive.ts +44 -0
- package/src/lib/components/drag-drop-file/drag-drop-file.module.ts +21 -0
- package/src/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.html +5 -0
- package/src/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.ts +17 -0
- package/src/lib/components/drawer/default-drawer-end/default-drawer-end.component.html +12 -0
- package/src/lib/components/drawer/default-drawer-end/default-drawer-end.component.ts +35 -0
- package/src/lib/components/drawer/drawer-group/drawer-group.component.html +61 -0
- package/src/lib/components/drawer/drawer-group/drawer-group.component.ts +44 -0
- package/src/lib/components/drawer/drawer.component.html +56 -0
- package/src/lib/components/drawer/drawer.component.ts +119 -0
- package/src/lib/components/drawer/menu.ts +20 -0
- package/src/lib/components/filter/filter.component.html +31 -0
- package/src/lib/components/filter/filter.component.ts +133 -0
- package/src/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.html +35 -0
- package/src/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.ts +19 -0
- package/src/lib/components/image/image.component.html +17 -0
- package/src/lib/components/image/image.component.ts +95 -0
- package/src/lib/components/info-popover/info-popover.component.html +23 -0
- package/src/lib/components/info-popover/info-popover.component.ts +75 -0
- package/src/lib/components/inputs/custom-input.ts +67 -0
- package/src/lib/components/inputs/custom-signal-input.ts +70 -0
- package/src/lib/components/inputs/input-bool/input-bool.component.html +18 -0
- package/src/lib/components/inputs/input-bool/input-bool.component.ts +36 -0
- package/src/lib/components/inputs/input-bool/input-bool.configuration.ts +14 -0
- package/src/lib/components/inputs/input-color/input-color.component.html +132 -0
- package/src/lib/components/inputs/input-color/input-color.component.ts +561 -0
- package/{lib/components/inputs/input-configuration.d.ts → src/lib/components/inputs/input-configuration.ts} +18 -8
- package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.html +26 -0
- package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.ts +78 -0
- package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.ts +4 -0
- package/src/lib/components/inputs/input-date/input-date.component.html +40 -0
- package/src/lib/components/inputs/input-date/input-date.component.ts +98 -0
- package/src/lib/components/inputs/input-date/input-date.configuration.ts +6 -0
- package/src/lib/components/inputs/input-decimal/input-decimal.component.html +24 -0
- package/src/lib/components/inputs/input-decimal/input-decimal.component.ts +296 -0
- package/src/lib/components/inputs/input-decimal/input-decimal.configuration.ts +42 -0
- package/src/lib/components/inputs/input-default-configurations.ts +15 -0
- package/src/lib/components/inputs/input-file/download-button/download-button.component.html +56 -0
- package/src/lib/components/inputs/input-file/download-button/download-button.component.ts +85 -0
- package/src/lib/components/inputs/input-file/input-file.component.html +101 -0
- package/src/lib/components/inputs/input-file/input-file.component.ts +120 -0
- package/src/lib/components/inputs/input-file/input-file.configuration.ts +8 -0
- package/src/lib/components/inputs/input-loading/input-loading.component.html +3 -0
- package/src/lib/components/inputs/input-loading/input-loading.component.ts +13 -0
- package/src/lib/components/inputs/input-provider-factory.ts +15 -0
- package/src/lib/components/inputs/input-select/ISelect.ts +26 -0
- package/src/lib/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.html +16 -0
- package/src/lib/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.ts +38 -0
- package/src/lib/components/inputs/input-select/input-select-option/input-select-option.component.html +15 -0
- package/src/lib/components/inputs/input-select/input-select-option/input-select-option.component.ts +47 -0
- package/src/lib/components/inputs/input-select/input-select-template.directive.ts +8 -0
- package/src/lib/components/inputs/input-select/input-select.component.html +66 -0
- package/src/lib/components/inputs/input-select/input-select.component.ts +323 -0
- package/src/lib/components/inputs/input-select/input.select.configuration.ts +188 -0
- package/src/lib/components/inputs/input-string/input-string.component.html +22 -0
- package/src/lib/components/inputs/input-string/input-string.component.ts +36 -0
- package/src/lib/components/inputs/input-string/input-string.configuration.ts +18 -0
- package/src/lib/components/inputs/input-textarea/input-textarea.component.html +25 -0
- package/src/lib/components/inputs/input-textarea/input-textarea.component.ts +35 -0
- package/src/lib/components/inputs/input-type.ts +16 -0
- package/src/lib/components/inputs/input-validators.ts +76 -0
- package/src/lib/components/inputs/inputs.module.ts +64 -0
- package/src/lib/components/loading/loading.component.html +28 -0
- package/src/lib/components/loading/loading.component.ts +29 -0
- package/src/lib/components/login/login-admin/login-admin.component.html +28 -0
- package/src/lib/components/login/login-admin/login-admin.component.ts +51 -0
- package/src/lib/components/login/login.component.html +104 -0
- package/src/lib/components/login/login.component.ts +97 -0
- package/src/lib/components/main-content/main-content.component.html +61 -0
- package/src/lib/components/main-content/main-content.component.ts +55 -0
- package/src/lib/components/stepper/step/step.component.html +11 -0
- package/src/lib/components/stepper/step/step.component.ts +44 -0
- package/src/lib/components/stepper/stepper.component.html +3 -0
- package/src/lib/components/stepper/stepper.component.ts +36 -0
- package/src/lib/components/stepper/stepper.module.ts +15 -0
- package/src/lib/components/tabs/tab/tab.component.html +8 -0
- package/src/lib/components/tabs/tab/tab.component.scss +0 -0
- package/src/lib/components/tabs/tab/tab.component.ts +28 -0
- package/src/lib/components/tabs/tabs/tabs.component.html +14 -0
- package/src/lib/components/tabs/tabs/tabs.component.ts +42 -0
- package/src/lib/components/tabs/tabs.module.ts +15 -0
- package/src/lib/components/text-tooltip/text-tooltip.component.html +8 -0
- package/src/lib/components/text-tooltip/text-tooltip.component.scss +0 -0
- package/src/lib/components/text-tooltip/text-tooltip.component.ts +45 -0
- package/src/lib/components/tooltip/tooltip.component.html +53 -0
- package/src/lib/components/tooltip/tooltip.component.ts +16 -0
- package/src/lib/core.module.ts +26 -0
- package/src/lib/directives/ng-var.directive.ts +26 -0
- package/src/lib/guards/auth.guard.ts +19 -0
- package/src/lib/guards/error.interceptor.ts +107 -0
- package/src/lib/guards/token.interceptor.ts +28 -0
- package/src/lib/index.ts +175 -0
- package/src/lib/pipes/secure.pipe.ts +39 -0
- package/src/lib/services/auth.service.ts +150 -0
- package/src/lib/services/crypto.service.ts +164 -0
- package/src/lib/services/environment.service.ts +17 -0
- package/src/lib/services/generics.service.ts +85 -0
- package/src/lib/services/route/route.cache.service.ts +17 -0
- package/src/lib/services/route/route.provider.service.ts +49 -0
- package/src/lib/services/usuario.service.ts +44 -0
- package/src/lib/services/utils.service.ts +161 -0
- package/src/lib/services/web/api-url-provider.service.ts +48 -0
- package/src/lib/services/web/http.ativo.service.ts +52 -0
- package/src/lib/services/web/http.service.ts +184 -0
- package/src/lib/services/web/storage.service.ts +131 -0
- package/{themes → src/lib}/styles/core.styles.scss +4 -0
- package/src/public-api.ts +5 -0
- package/tailwind.config.js +27 -0
- package/tsconfig.lib.json +29 -0
- package/tsconfig.lib.prod.json +23 -0
- package/tsconfig.spec.json +27 -0
- package/esm2022/lib/classes/comparison/comparison-operator.mjs +0 -18
- package/esm2022/lib/classes/comparison/comparison-value-type.mjs +0 -25
- package/esm2022/lib/classes/comparison/comparison.mjs +0 -41
- package/esm2022/lib/classes/comparison/properties/bool-property.mjs +0 -15
- package/esm2022/lib/classes/comparison/properties/date-property.mjs +0 -27
- package/esm2022/lib/classes/comparison/properties/datetime-property.mjs +0 -27
- package/esm2022/lib/classes/comparison/properties/decimal-property.mjs +0 -27
- package/esm2022/lib/classes/comparison/properties/enum-property.mjs +0 -27
- package/esm2022/lib/classes/comparison/properties/implicit-property.mjs +0 -12
- package/esm2022/lib/classes/comparison/properties/int-property.mjs +0 -27
- package/esm2022/lib/classes/comparison/properties/long-property.mjs +0 -27
- package/esm2022/lib/classes/comparison/properties/string-property.mjs +0 -15
- package/esm2022/lib/classes/comparison/properties/time-property.mjs +0 -27
- package/esm2022/lib/classes/credentials.mjs +0 -2
- package/esm2022/lib/classes/environment.mjs +0 -32
- package/esm2022/lib/classes/filters/view-filtros.mjs +0 -18
- package/esm2022/lib/classes/infinite-scroll.mjs +0 -90
- package/esm2022/lib/classes/inputs/table-field-form-builder.mjs +0 -10
- package/esm2022/lib/classes/inputs/table-field.mjs +0 -69
- package/esm2022/lib/classes/page-option.mjs +0 -2
- package/esm2022/lib/classes/routes/default-routing-factory.mjs +0 -23
- package/esm2022/lib/classes/routes/id-preloader-configuration.mjs +0 -22
- package/esm2022/lib/classes/routes/route-data.mjs +0 -9
- package/esm2022/lib/components/carousel/carousel-image/carousel-image.component.mjs +0 -18
- package/esm2022/lib/components/carousel/carousel-item/carousel-item.component.mjs +0 -15
- package/esm2022/lib/components/carousel/carousel.component.mjs +0 -79
- package/esm2022/lib/components/carousel/carousel.module.mjs +0 -31
- package/esm2022/lib/components/carousel/i-carousel-item.component.mjs +0 -16
- package/esm2022/lib/components/content-block/content-block.component.mjs +0 -27
- package/esm2022/lib/components/default/default-list/abstract-list.mjs +0 -49
- package/esm2022/lib/components/default/default-list/default-list.component.mjs +0 -99
- package/esm2022/lib/components/default/default-list/header-list/header-list.component.mjs +0 -98
- package/esm2022/lib/components/default/default-list/list.mjs +0 -110
- package/esm2022/lib/components/default/default-pagination/default-pagination.component.mjs +0 -123
- package/esm2022/lib/components/default/default-table/default-table.component.mjs +0 -222
- package/esm2022/lib/components/default/default-table/th-filter/th-filter.component.mjs +0 -186
- package/esm2022/lib/components/default/default-view/abstract-view.mjs +0 -22
- package/esm2022/lib/components/default/default-view/default-view.component.mjs +0 -51
- package/esm2022/lib/components/default/default-view/header-view/header-view.component.mjs +0 -75
- package/esm2022/lib/components/default/default-view/view.mjs +0 -175
- package/esm2022/lib/components/default/default.module.mjs +0 -87
- package/esm2022/lib/components/default-page/default.page.mjs +0 -73
- package/esm2022/lib/components/drag-drop-file/drag-drop-file.directive.mjs +0 -60
- package/esm2022/lib/components/drag-drop-file/drag-drop-file.module.mjs +0 -31
- package/esm2022/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.mjs +0 -15
- package/esm2022/lib/components/drawer/default-drawer-end/default-drawer-end.component.mjs +0 -34
- package/esm2022/lib/components/drawer/drawer-group/drawer-group.component.mjs +0 -49
- package/esm2022/lib/components/drawer/drawer.component.mjs +0 -117
- package/esm2022/lib/components/drawer/menu.mjs +0 -15
- package/esm2022/lib/components/filter/filter.component.mjs +0 -127
- package/esm2022/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.mjs +0 -17
- package/esm2022/lib/components/image/image.component.mjs +0 -91
- package/esm2022/lib/components/info-popover/info-popover.component.mjs +0 -91
- package/esm2022/lib/components/inputs/custom-input.mjs +0 -77
- package/esm2022/lib/components/inputs/custom-signal-input.mjs +0 -74
- package/esm2022/lib/components/inputs/input-bool/input-bool.component.mjs +0 -43
- package/esm2022/lib/components/inputs/input-bool/input-bool.configuration.mjs +0 -16
- package/esm2022/lib/components/inputs/input-color/input-color.component.mjs +0 -487
- package/esm2022/lib/components/inputs/input-configuration.mjs +0 -2
- package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.mjs +0 -93
- package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.mjs +0 -6
- package/esm2022/lib/components/inputs/input-date/input-date.component.mjs +0 -122
- package/esm2022/lib/components/inputs/input-date/input-date.configuration.mjs +0 -8
- package/esm2022/lib/components/inputs/input-decimal/input-decimal.component.mjs +0 -269
- package/esm2022/lib/components/inputs/input-decimal/input-decimal.configuration.mjs +0 -45
- package/esm2022/lib/components/inputs/input-default-configurations.mjs +0 -14
- package/esm2022/lib/components/inputs/input-file/download-button/download-button.component.mjs +0 -94
- package/esm2022/lib/components/inputs/input-file/input-file.component.mjs +0 -131
- package/esm2022/lib/components/inputs/input-file/input-file.configuration.mjs +0 -11
- package/esm2022/lib/components/inputs/input-loading/input-loading.component.mjs +0 -16
- package/esm2022/lib/components/inputs/input-provider-factory.mjs +0 -15
- package/esm2022/lib/components/inputs/input-select/ISelect.mjs +0 -11
- package/esm2022/lib/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.mjs +0 -42
- package/esm2022/lib/components/inputs/input-select/input-select-option/input-select-option.component.mjs +0 -46
- package/esm2022/lib/components/inputs/input-select/input-select-template.directive.mjs +0 -16
- package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +0 -322
- package/esm2022/lib/components/inputs/input-select/input.select.configuration.mjs +0 -164
- package/esm2022/lib/components/inputs/input-string/input-string.component.mjs +0 -50
- package/esm2022/lib/components/inputs/input-string/input-string.configuration.mjs +0 -18
- package/esm2022/lib/components/inputs/input-textarea/input-textarea.component.mjs +0 -47
- package/esm2022/lib/components/inputs/input-type.mjs +0 -18
- package/esm2022/lib/components/inputs/input-validators.mjs +0 -90
- package/esm2022/lib/components/inputs/inputs.module.mjs +0 -105
- package/esm2022/lib/components/loading/loading.component.mjs +0 -34
- package/esm2022/lib/components/login/login-admin/login-admin.component.mjs +0 -52
- package/esm2022/lib/components/login/login.component.mjs +0 -102
- package/esm2022/lib/components/main-content/main-content.component.mjs +0 -62
- package/esm2022/lib/components/stepper/step/step.component.mjs +0 -43
- package/esm2022/lib/components/stepper/stepper.component.mjs +0 -36
- package/esm2022/lib/components/stepper/stepper.module.mjs +0 -25
- package/esm2022/lib/components/tabs/tab/tab.component.mjs +0 -41
- package/esm2022/lib/components/tabs/tabs/tabs.component.mjs +0 -56
- package/esm2022/lib/components/tabs/tabs.module.mjs +0 -22
- package/esm2022/lib/components/text-tooltip/text-tooltip.component.mjs +0 -51
- package/esm2022/lib/components/tooltip/tooltip.component.mjs +0 -21
- package/esm2022/lib/core.module.mjs +0 -29
- package/esm2022/lib/directives/ng-var.directive.mjs +0 -29
- package/esm2022/lib/guards/auth.guard.mjs +0 -26
- package/esm2022/lib/guards/error.interceptor.mjs +0 -106
- package/esm2022/lib/guards/token.interceptor.mjs +0 -25
- package/esm2022/lib/index.mjs +0 -173
- package/esm2022/lib/pipes/secure.pipe.mjs +0 -42
- package/esm2022/lib/services/auth.service.mjs +0 -146
- package/esm2022/lib/services/environment.service.mjs +0 -26
- package/esm2022/lib/services/generics.service.mjs +0 -84
- package/esm2022/lib/services/route/route.cache.service.mjs +0 -15
- package/esm2022/lib/services/route/route.provider.service.mjs +0 -42
- package/esm2022/lib/services/usuario.service.mjs +0 -49
- package/esm2022/lib/services/utils.service.mjs +0 -149
- package/esm2022/lib/services/web/api-url-provider.service.mjs +0 -29
- package/esm2022/lib/services/web/http.ativo.service.mjs +0 -55
- package/esm2022/lib/services/web/http.service.mjs +0 -169
- package/esm2022/lib/services/web/storage.service.mjs +0 -128
- package/esm2022/public-api.mjs +0 -5
- package/esm2022/sapphire-ion-framework.mjs +0 -5
- package/fesm2022/sapphire-ion-framework.mjs +0 -6240
- package/fesm2022/sapphire-ion-framework.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/classes/comparison/comparison-operator.d.ts +0 -9
- package/lib/classes/comparison/comparison-value-type.d.ts +0 -23
- package/lib/classes/comparison/comparison.d.ts +0 -25
- package/lib/classes/comparison/properties/bool-property.d.ts +0 -7
- package/lib/classes/comparison/properties/date-property.d.ts +0 -11
- package/lib/classes/comparison/properties/datetime-property.d.ts +0 -11
- package/lib/classes/comparison/properties/decimal-property.d.ts +0 -11
- package/lib/classes/comparison/properties/enum-property.d.ts +0 -11
- package/lib/classes/comparison/properties/implicit-property.d.ts +0 -6
- package/lib/classes/comparison/properties/int-property.d.ts +0 -11
- package/lib/classes/comparison/properties/long-property.d.ts +0 -11
- package/lib/classes/comparison/properties/string-property.d.ts +0 -7
- package/lib/classes/comparison/properties/time-property.d.ts +0 -11
- package/lib/classes/environment.d.ts +0 -13
- package/lib/classes/filters/view-filtros.d.ts +0 -10
- package/lib/classes/infinite-scroll.d.ts +0 -26
- package/lib/classes/inputs/table-field-form-builder.d.ts +0 -5
- package/lib/classes/inputs/table-field.d.ts +0 -20
- package/lib/classes/page-option.d.ts +0 -7
- package/lib/classes/routes/default-routing-factory.d.ts +0 -8
- package/lib/classes/routes/id-preloader-configuration.d.ts +0 -28
- package/lib/classes/routes/route-data.d.ts +0 -5
- package/lib/components/carousel/carousel-image/carousel-image.component.d.ts +0 -10
- package/lib/components/carousel/carousel-item/carousel-item.component.d.ts +0 -9
- package/lib/components/carousel/carousel.component.d.ts +0 -32
- package/lib/components/carousel/carousel.module.d.ts +0 -12
- package/lib/components/carousel/i-carousel-item.component.d.ts +0 -9
- package/lib/components/content-block/content-block.component.d.ts +0 -15
- package/lib/components/default/default-list/abstract-list.d.ts +0 -21
- package/lib/components/default/default-list/default-list.component.d.ts +0 -44
- package/lib/components/default/default-list/header-list/header-list.component.d.ts +0 -45
- package/lib/components/default/default-list/list.d.ts +0 -38
- package/lib/components/default/default-pagination/default-pagination.component.d.ts +0 -36
- package/lib/components/default/default-table/default-table.component.d.ts +0 -72
- package/lib/components/default/default-table/th-filter/th-filter.component.d.ts +0 -20
- package/lib/components/default/default-view/abstract-view.d.ts +0 -18
- package/lib/components/default/default-view/default-view.component.d.ts +0 -26
- package/lib/components/default/default-view/header-view/header-view.component.d.ts +0 -26
- package/lib/components/default/default-view/view.d.ts +0 -56
- package/lib/components/default/default.module.d.ts +0 -28
- package/lib/components/default-page/default.page.d.ts +0 -35
- package/lib/components/drag-drop-file/drag-drop-file.directive.d.ts +0 -14
- package/lib/components/drag-drop-file/drag-drop-file.module.d.ts +0 -10
- package/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.d.ts +0 -9
- package/lib/components/drawer/default-drawer-end/default-drawer-end.component.d.ts +0 -13
- package/lib/components/drawer/drawer-group/drawer-group.component.d.ts +0 -22
- package/lib/components/drawer/drawer.component.d.ts +0 -23
- package/lib/components/drawer/menu.d.ts +0 -9
- package/lib/components/filter/filter.component.d.ts +0 -29
- package/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.d.ts +0 -8
- package/lib/components/image/image.component.d.ts +0 -23
- package/lib/components/info-popover/info-popover.component.d.ts +0 -15
- package/lib/components/inputs/custom-input.d.ts +0 -36
- package/lib/components/inputs/custom-signal-input.d.ts +0 -38
- package/lib/components/inputs/input-bool/input-bool.component.d.ts +0 -19
- package/lib/components/inputs/input-bool/input-bool.configuration.d.ts +0 -17
- package/lib/components/inputs/input-color/input-color.component.d.ts +0 -80
- package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.d.ts +0 -24
- package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.d.ts +0 -5
- package/lib/components/inputs/input-date/input-date.component.d.ts +0 -30
- package/lib/components/inputs/input-date/input-date.configuration.d.ts +0 -7
- package/lib/components/inputs/input-decimal/input-decimal.component.d.ts +0 -41
- package/lib/components/inputs/input-decimal/input-decimal.configuration.d.ts +0 -25
- package/lib/components/inputs/input-default-configurations.d.ts +0 -13
- package/lib/components/inputs/input-file/download-button/download-button.component.d.ts +0 -37
- package/lib/components/inputs/input-file/input-file.component.d.ts +0 -39
- package/lib/components/inputs/input-file/input-file.configuration.d.ts +0 -11
- package/lib/components/inputs/input-loading/input-loading.component.d.ts +0 -7
- package/lib/components/inputs/input-provider-factory.d.ts +0 -4
- package/lib/components/inputs/input-select/ISelect.d.ts +0 -21
- package/lib/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.d.ts +0 -18
- package/lib/components/inputs/input-select/input-select-option/input-select-option.component.d.ts +0 -24
- package/lib/components/inputs/input-select/input-select-template.directive.d.ts +0 -8
- package/lib/components/inputs/input-select/input-select.component.d.ts +0 -66
- package/lib/components/inputs/input-select/input.select.configuration.d.ts +0 -87
- package/lib/components/inputs/input-string/input-string.component.d.ts +0 -19
- package/lib/components/inputs/input-string/input-string.configuration.d.ts +0 -14
- package/lib/components/inputs/input-textarea/input-textarea.component.d.ts +0 -18
- package/lib/components/inputs/input-type.d.ts +0 -16
- package/lib/components/inputs/input-validators.d.ts +0 -19
- package/lib/components/inputs/inputs.module.d.ts +0 -29
- package/lib/components/loading/loading.component.d.ts +0 -18
- package/lib/components/login/login-admin/login-admin.component.d.ts +0 -20
- package/lib/components/login/login.component.d.ts +0 -29
- package/lib/components/main-content/main-content.component.d.ts +0 -17
- package/lib/components/stepper/step/step.component.d.ts +0 -15
- package/lib/components/stepper/stepper.component.d.ts +0 -17
- package/lib/components/stepper/stepper.module.d.ts +0 -10
- package/lib/components/tabs/tab/tab.component.d.ts +0 -19
- package/lib/components/tabs/tabs/tabs.component.d.ts +0 -18
- package/lib/components/tabs/tabs.module.d.ts +0 -12
- package/lib/components/text-tooltip/text-tooltip.component.d.ts +0 -16
- package/lib/components/tooltip/tooltip.component.d.ts +0 -7
- package/lib/core.module.d.ts +0 -11
- package/lib/directives/ng-var.directive.d.ts +0 -12
- package/lib/guards/auth.guard.d.ts +0 -11
- package/lib/guards/error.interceptor.d.ts +0 -32
- package/lib/guards/token.interceptor.d.ts +0 -11
- package/lib/index.d.ts +0 -109
- package/lib/pipes/secure.pipe.d.ts +0 -15
- package/lib/services/auth.service.d.ts +0 -47
- package/lib/services/environment.service.d.ts +0 -10
- package/lib/services/generics.service.d.ts +0 -22
- package/lib/services/route/route.cache.service.d.ts +0 -7
- package/lib/services/route/route.provider.service.d.ts +0 -13
- package/lib/services/usuario.service.d.ts +0 -21
- package/lib/services/utils.service.d.ts +0 -36
- package/lib/services/web/api-url-provider.service.d.ts +0 -13
- package/lib/services/web/http.ativo.service.d.ts +0 -31
- package/lib/services/web/http.service.d.ts +0 -50
- package/lib/services/web/storage.service.d.ts +0 -25
- package/public-api.d.ts +0 -1
- /package/{themes → src/lib}/components/_inputs_new/input-string/input-string.component.scss +0 -0
- /package/{themes → src/lib}/components/_inputs_new/inputs.scss +0 -0
- /package/{themes → src/lib}/components/carousel/carousel-image/carousel-image.component.scss +0 -0
- /package/{themes → src/lib}/components/carousel/carousel-item/carousel-item.component.scss +0 -0
- /package/{themes → src/lib}/components/carousel/carousel.component.scss +0 -0
- /package/{themes → src/lib}/components/content-block/content-block.component.scss +0 -0
- /package/{themes → src/lib}/components/default/default-list/default-list.component.scss +0 -0
- /package/{themes → src/lib}/components/default/default-list/header-list/header-list.component.scss +0 -0
- /package/{themes → src/lib}/components/default/default-pagination/default-pagination.component.scss +0 -0
- /package/{themes → src/lib}/components/default/default-table/default-table.component.scss +0 -0
- /package/{themes → src/lib}/components/default/default-table/th-filter/th-filter.component.scss +0 -0
- /package/{themes → src/lib}/components/default/default-view/default-view.component.scss +0 -0
- /package/{themes → src/lib}/components/default/default-view/header-view/header-view.component.scss +0 -0
- /package/{themes → src/lib}/components/default-page/default.page.scss +0 -0
- /package/{themes → src/lib}/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.scss +0 -0
- /package/{themes → src/lib}/components/drawer/default-drawer-end/default-drawer-end.component.scss +0 -0
- /package/{themes → src/lib}/components/drawer/drawer-group/drawer-group.component.scss +0 -0
- /package/{themes → src/lib}/components/drawer/drawer.component.scss +0 -0
- /package/{themes → src/lib}/components/filter/filter.component.scss +0 -0
- /package/{themes → src/lib}/components/http-responses-pages/forbidden-403/forbidden-403.component.scss +0 -0
- /package/{themes → src/lib}/components/image/image.component.scss +0 -0
- /package/{themes → src/lib}/components/info-popover/info-popover.component.scss +0 -0
- /package/{themes → src/lib}/components/inputs/input-bool/input-bool.component.scss +0 -0
- /package/{themes → src/lib}/components/inputs/input-color/input-color.component.scss +0 -0
- /package/{themes/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.scss → src/lib/components/inputs/input-color/input-color.configuration.ts} +0 -0
- /package/{themes/components/inputs/input-loading/input-loading.component.scss → src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.scss} +0 -0
- /package/{themes → src/lib}/components/inputs/input-date/input-date.component.scss +0 -0
- /package/{themes → src/lib}/components/inputs/input-decimal/input-decimal.component.scss +0 -0
- /package/{themes → src/lib}/components/inputs/input-file/download-button/download-button.component.scss +0 -0
- /package/{themes → src/lib}/components/inputs/input-file/input-file.component.scss +0 -0
- /package/{themes/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.scss → src/lib/components/inputs/input-loading/input-bool.configuration.ts} +0 -0
- /package/{themes/components/inputs/input-select/input-select-option/input-select-option.component.scss → src/lib/components/inputs/input-loading/input-loading.component.scss} +0 -0
- /package/{themes/components/inputs/input-string/input-string.component.scss → src/lib/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.scss} +0 -0
- /package/{themes/components/inputs/input-textarea/input-textarea.component.scss → src/lib/components/inputs/input-select/input-select-option/input-select-option.component.scss} +0 -0
- /package/{themes → src/lib}/components/inputs/input-select/input-select.component.scss +0 -0
- /package/{themes/components/loading/loading.component.scss → src/lib/components/inputs/input-string/input-string.component.scss} +0 -0
- /package/{themes/components/stepper/stepper.component.scss → src/lib/components/inputs/input-textarea/input-textarea.component.scss} +0 -0
- /package/{themes → src/lib}/components/inputs/inputs.scss +0 -0
- /package/{themes/components/tabs/tab/tab.component.scss → src/lib/components/loading/loading.component.scss} +0 -0
- /package/{themes → src/lib}/components/login/login-admin/login-admin.component.scss +0 -0
- /package/{themes → src/lib}/components/login/login.component.scss +0 -0
- /package/{themes → src/lib}/components/main-content/main-content.component.scss +0 -0
- /package/{themes → src/lib}/components/stepper/step/step.component.scss +0 -0
- /package/{themes/components/text-tooltip/text-tooltip.component.scss → src/lib/components/stepper/stepper.component.scss} +0 -0
- /package/{themes → src/lib}/components/tabs/tabs/tabs.component.scss +0 -0
- /package/{themes → src/lib}/components/tooltip/tooltip.component.scss +0 -0
- /package/{themes → src/lib}/styles/components.scss +0 -0
- /package/{themes → src/lib}/styles/ionic/ion-action-sheet.scss +0 -0
- /package/{themes → src/lib}/styles/ionic/ion-alert.scss +0 -0
- /package/{themes → src/lib}/styles/ionic/ion-button.scss +0 -0
- /package/{themes → src/lib}/styles/ionic/ion-card.scss +0 -0
- /package/{themes → src/lib}/styles/ionic/ion-content.scss +0 -0
- /package/{themes → src/lib}/styles/ionic/ion-datetime.scss +0 -0
- /package/{themes → src/lib}/styles/ionic/ion-item.scss +0 -0
- /package/{themes → src/lib}/styles/ionic/ion-list.scss +0 -0
- /package/{themes → src/lib}/styles/ionic/ion-modal.scss +0 -0
- /package/{themes → src/lib}/styles/ionic/ion-popover.scss +0 -0
- /package/{themes → src/lib}/styles/ionic/ion-progress-bar.scss +0 -0
- /package/{themes → src/lib}/styles/ionic/ion-searchbar.scss +0 -0
- /package/{themes → src/lib}/styles/ionic/ion-toast.scss +0 -0
- /package/{themes → src/lib}/styles/ionic.scss +0 -0
- /package/{themes → src/lib}/styles/login-default.scss +0 -0
- /package/{themes → src/lib}/styles/mixins.scss +0 -0
- /package/{themes → src/lib}/styles/styles.scss +0 -0
- /package/{themes → src/lib}/styles/translucid.scss +0 -0
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
import { Component, ElementRef, Host, HostListener, Input, Optional, SkipSelf } from '@angular/core';
|
|
2
|
-
import { ControlContainer } from '@angular/forms';
|
|
3
|
-
import { formatNumber } from '@angular/common';
|
|
4
|
-
import { InputCurrencyConfiguration, InputDecimalConfiguration, InputNumberConfiguration } from './input-decimal.configuration';
|
|
5
|
-
import { InputProviderFactory } from '../input-provider-factory';
|
|
6
|
-
import { Timeout } from '../../../services/utils.service';
|
|
7
|
-
import { CustomInput } from '../custom-input';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/forms";
|
|
10
|
-
import * as i2 from "@angular/common";
|
|
11
|
-
import * as i3 from "@ionic/angular";
|
|
12
|
-
import * as i4 from "../input-loading/input-loading.component";
|
|
13
|
-
export class InputDecimalComponent extends CustomInput {
|
|
14
|
-
constructor(controlContainer, elementRef) {
|
|
15
|
-
super();
|
|
16
|
-
this.controlContainer = controlContainer;
|
|
17
|
-
this.elementRef = elementRef;
|
|
18
|
-
this.digitsInfo = "1.2-2";
|
|
19
|
-
this.altKey = false;
|
|
20
|
-
this.ctrlKey = false;
|
|
21
|
-
this.shiftKey = false;
|
|
22
|
-
this._model = 0;
|
|
23
|
-
}
|
|
24
|
-
async ngOnInit() {
|
|
25
|
-
super.ngOnInit();
|
|
26
|
-
this.HandleSelector();
|
|
27
|
-
this.setDivider();
|
|
28
|
-
}
|
|
29
|
-
setDigitsInfo() { this.digitsInfo = `1.${this.configuration.precision}-${this.configuration.precision}`; }
|
|
30
|
-
HandleSelector() {
|
|
31
|
-
const selector = this.elementRef.nativeElement.tagName.toLowerCase().split('-')[1];
|
|
32
|
-
if (selector == "number" && !this.configuration) {
|
|
33
|
-
this.configuration = new InputNumberConfiguration();
|
|
34
|
-
}
|
|
35
|
-
else if (selector == "decimal" && !this.configuration) {
|
|
36
|
-
this.configuration = new InputDecimalConfiguration();
|
|
37
|
-
}
|
|
38
|
-
else if (selector == "currency" && !this.configuration) {
|
|
39
|
-
this.configuration = new InputCurrencyConfiguration();
|
|
40
|
-
}
|
|
41
|
-
this.setDigitsInfo();
|
|
42
|
-
}
|
|
43
|
-
writeValue(value) { this._model = value; }
|
|
44
|
-
get model() {
|
|
45
|
-
var formated = formatNumber(this._model, "pt-BR", this.digitsInfo);
|
|
46
|
-
if (this.configuration.thousandSeparator) {
|
|
47
|
-
return formated;
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
return formated.replaceAll(thousandSeparator, '');
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
set model(value) { this._model = value; this.propagateChange(this._model); }
|
|
54
|
-
//#region [ Event Handler ]
|
|
55
|
-
onKeyDown(event) {
|
|
56
|
-
this.eventType = 0;
|
|
57
|
-
this.event = event;
|
|
58
|
-
this.key = event.key;
|
|
59
|
-
this.altKey = this.event.altKey;
|
|
60
|
-
this.ctrlKey = this.event.ctrlKey;
|
|
61
|
-
this.shiftKey = this.event.shiftKey;
|
|
62
|
-
this.startPosition = event.target.selectionStart;
|
|
63
|
-
this.endPosition = event.target.selectionEnd;
|
|
64
|
-
this.value = event.target.value;
|
|
65
|
-
this.HandleBrowser();
|
|
66
|
-
}
|
|
67
|
-
onPaste(event) {
|
|
68
|
-
this.event.preventDefault();
|
|
69
|
-
let clipboardData = event.clipboardData || window['clipboardData'];
|
|
70
|
-
let pastedText = clipboardData.getData('text');
|
|
71
|
-
const s = pastedText.replaceAll('.', '').replaceAll(',', '.');
|
|
72
|
-
const n = Number(s);
|
|
73
|
-
if (Number(s) && isFinite(n)) {
|
|
74
|
-
this.model = n;
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
}
|
|
78
|
-
event.preventDefault();
|
|
79
|
-
}
|
|
80
|
-
HandleBrowser() {
|
|
81
|
-
this.atLeft = this.value.slice(0, this.startPosition);
|
|
82
|
-
this.atRight = this.value.slice(this.endPosition, this.value.length);
|
|
83
|
-
if (["-"].includes(this.key)) {
|
|
84
|
-
return this.HandleNegative();
|
|
85
|
-
}
|
|
86
|
-
else if (["V", "v"].includes(this.key) && this.ctrlKey) {
|
|
87
|
-
//@HostListener('paste', ['$event'])
|
|
88
|
-
}
|
|
89
|
-
else if (lstNumbers.includes(this.key)) {
|
|
90
|
-
return this.HandleNumber();
|
|
91
|
-
}
|
|
92
|
-
else if (lstEspecialCases.includes(this.key)) {
|
|
93
|
-
return this.HandleEspecial();
|
|
94
|
-
}
|
|
95
|
-
else if (["A", "a"].includes(this.key) && this.ctrlKey) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
else if (["C", "c"].includes(this.key) && this.ctrlKey) {
|
|
99
|
-
return this.HandleCopy();
|
|
100
|
-
}
|
|
101
|
-
else if (lstIgnoreNotPrevent.includes(this.key)) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
else
|
|
105
|
-
this.event.preventDefault();
|
|
106
|
-
}
|
|
107
|
-
setDivider() {
|
|
108
|
-
var d = "1";
|
|
109
|
-
for (let i = 0; i < this.configuration.precision; i++) {
|
|
110
|
-
d += "0";
|
|
111
|
-
}
|
|
112
|
-
this.divider = Number(d);
|
|
113
|
-
}
|
|
114
|
-
async HandleNumber() {
|
|
115
|
-
this.event.preventDefault();
|
|
116
|
-
var focusEnd = this.startPosition == 0 && this.endPosition == this.model.length;
|
|
117
|
-
/** [ Remove decimalSeparator & thousandSeparator ] */
|
|
118
|
-
const f = this.atLeft + this.key + this.atRight;
|
|
119
|
-
const CurrentValue = this.SanitizeValue(f);
|
|
120
|
-
if (CurrentValue == this._model) {
|
|
121
|
-
return false;
|
|
122
|
-
}
|
|
123
|
-
if (CurrentValue > decimalMaxValue) {
|
|
124
|
-
return false;
|
|
125
|
-
}
|
|
126
|
-
//[ Handle Set Cursor Position]
|
|
127
|
-
this.model = CurrentValue;
|
|
128
|
-
const newPos = this.startPosition + 1 + this.model.split('.').length - this.value.split('.').length;
|
|
129
|
-
//Horrivel, mas nao sem uma alternativa boa, https://stackoverflow.com/questions/511088/use-javascript-to-place-cursor-at-end-of-text-in-text-input-element
|
|
130
|
-
await Timeout(0);
|
|
131
|
-
this.event.target.setSelectionRange(newPos, newPos);
|
|
132
|
-
if (focusEnd) {
|
|
133
|
-
this.event.target.setSelectionRange(this.model.length, this.model.length);
|
|
134
|
-
}
|
|
135
|
-
return false;
|
|
136
|
-
}
|
|
137
|
-
async HandleNegative() {
|
|
138
|
-
this.event.preventDefault();
|
|
139
|
-
var focusEnd = this.startPosition == 0 && this.endPosition == this.model.length;
|
|
140
|
-
/** [ Remove decimalSeparator & thousandSeparator ] */
|
|
141
|
-
var f;
|
|
142
|
-
if (!this.atLeft.includes('-')) {
|
|
143
|
-
f = this.key + this.atLeft + this.atRight;
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
f = (this.atLeft + this.atRight).replace('-', '');
|
|
147
|
-
}
|
|
148
|
-
if (f == "-") {
|
|
149
|
-
if (this.value.includes('-')) {
|
|
150
|
-
f = this.value.replace('-', '');
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
f = `-${this.value}`;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
const CurrentValue = this.SanitizeValue(f);
|
|
157
|
-
if (CurrentValue == this._model) {
|
|
158
|
-
return false;
|
|
159
|
-
}
|
|
160
|
-
//[ Handle Set Cursor Position]
|
|
161
|
-
this.model = CurrentValue;
|
|
162
|
-
const newPos = this.startPosition + 1 + this.model.split('.').length - this.value.split('.').length;
|
|
163
|
-
//Horrivel, mas nao sem uma alternativa boa, https://stackoverflow.com/questions/511088/use-javascript-to-place-cursor-at-end-of-text-in-text-input-element
|
|
164
|
-
await Timeout(0);
|
|
165
|
-
this.event.target.setSelectionRange(newPos, newPos);
|
|
166
|
-
if (focusEnd) {
|
|
167
|
-
this.event.target.setSelectionRange(this.model.length, this.model.length);
|
|
168
|
-
}
|
|
169
|
-
return false;
|
|
170
|
-
}
|
|
171
|
-
async HandleEspecial() {
|
|
172
|
-
this.event.preventDefault();
|
|
173
|
-
if (this.startPosition == this.endPosition) {
|
|
174
|
-
if (this.key == "Backspace") {
|
|
175
|
-
if (this.startPosition == this.endPosition && this.startPosition == 0) {
|
|
176
|
-
return false;
|
|
177
|
-
}
|
|
178
|
-
const previousChar = this.atLeft[this.atLeft.length - 1];
|
|
179
|
-
const isNumber = lstNumbers.includes(previousChar);
|
|
180
|
-
const f = this.atLeft.slice(0, this.atLeft.length - (isNumber ? 1 : 2)) + this.atRight;
|
|
181
|
-
const CurrentValue = this.SanitizeValue(f);
|
|
182
|
-
//[ Handle Set Cursor Position]
|
|
183
|
-
this.model = CurrentValue;
|
|
184
|
-
await Timeout(0);
|
|
185
|
-
this.event.target.setSelectionRange(this.startPosition, this.startPosition);
|
|
186
|
-
return false;
|
|
187
|
-
}
|
|
188
|
-
else if (this.key == "Delete") {
|
|
189
|
-
const nextChar = this.atRight[0];
|
|
190
|
-
const isNumber = lstNumbers.includes(nextChar);
|
|
191
|
-
const f = this.atLeft + this.atRight.slice(isNumber ? 1 : 2);
|
|
192
|
-
const CurrentValue = this.SanitizeValue(f);
|
|
193
|
-
//[ Handle Set Cursor Position]
|
|
194
|
-
this.model = CurrentValue;
|
|
195
|
-
var newPos = this.startPosition - 1;
|
|
196
|
-
if (newPos <= -1) {
|
|
197
|
-
newPos = 0;
|
|
198
|
-
}
|
|
199
|
-
await Timeout(0);
|
|
200
|
-
this.event.target.setSelectionRange(newPos, newPos);
|
|
201
|
-
return false;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
const f = this.atLeft + this.atRight;
|
|
206
|
-
const CurrentValue = this.SanitizeValue(f);
|
|
207
|
-
this.model = CurrentValue;
|
|
208
|
-
await Timeout(0);
|
|
209
|
-
this.event.target.setSelectionRange(this.model.length, this.model.length);
|
|
210
|
-
return false;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
async HandleCopy() {
|
|
214
|
-
//[ Not necessary, default behaviour might work ]
|
|
215
|
-
// this.event.preventDefault();
|
|
216
|
-
// var str = this.model;
|
|
217
|
-
// var lst = str.split('');
|
|
218
|
-
// lst.splice(this.endPosition, str.length - this.endPosition);
|
|
219
|
-
// lst.splice(0, this.startPosition)
|
|
220
|
-
// var copy = lst.join('').replaceAll(this.configuration.thousandSeparator, '').replace(this.configuration.decimalSeparator, '.');
|
|
221
|
-
// console.log(copy)
|
|
222
|
-
// Clipboard.write({string: copy}).catch(() => {
|
|
223
|
-
// navigator.clipboard.writeText(copy);
|
|
224
|
-
// });
|
|
225
|
-
}
|
|
226
|
-
SanitizeValue(f) {
|
|
227
|
-
var CurrentValue = Number(Sanitize(f)) / this.divider;
|
|
228
|
-
//[ Cancela se o valor for muito alto ]
|
|
229
|
-
if (CurrentValue >= decimalMaxValue) {
|
|
230
|
-
return this._model;
|
|
231
|
-
}
|
|
232
|
-
return CurrentValue;
|
|
233
|
-
}
|
|
234
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputDecimalComponent, deps: [{ token: i1.ControlContainer, host: true, optional: true, skipSelf: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
235
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InputDecimalComponent, selector: "input-decimal, input-number, input-currency, inout-percentage", inputs: { configuration: "configuration" }, host: { listeners: { "keydown": "onKeyDown($event)", "paste": "onPaste($event)" } }, providers: InputProviderFactory.GetProvider(InputDecimalComponent), usesInheritance: true, ngImport: i0, template: "<div class=\"flex relative overflow-hidden\">\r\n <ion-card class=\"focus-within:on-focus ion-card-input\" [disabled]=\"loading || disabled\"\r\n [ngClass]=\"{\r\n 'invalid' : invalid,\r\n 'submitted': submitted,\r\n 'disabled': disabled,\r\n }\"\r\n >\r\n <ion-card-content>\r\n <div class=\"relative flex\">\r\n <ion-item class=\"w-full shrink-0\" [ngClass]=\"{'required' : required}\" lines=\"none\">\r\n <ion-input\r\n class=\"default-transition\" [value]=\"model\" labelPlacement=\"stacked\"\r\n >\r\n <ion-text [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}} </ion-text>\r\n <span *ngIf=\"configuration.prefix\" slot=\"start\">{{configuration.prefix}}</span>\r\n <span *ngIf=\"configuration.sufix\" slot=\"end\" >{{configuration.sufix}}</span>\r\n </ion-input>\r\n </ion-item>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n <input-loading [loading]=\"loading\"></input-loading>\r\n</div>", styles: ["ion-input{text-align:right}ion-item::part(native){transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1)}ion-card{border-width:1px 1px 2px 1px!important;border-color:color-mix(in srgb,var(--ion-color-dark) 50%,transparent 50%);border-right-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-top-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-left-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-style:solid;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}ion-card.submitted.invalid{border-color:color-mix(in srgb,var(--ion-color-danger) 50%,transparent 50%)!important}ion-text.required:after{content:\"*\";color:var(--ion-color-danger);vertical-align:text-bottom;font-size:small}ion-text:not(.required):after{content:var(--input-opcional-label, \"(Opcional)\");color:var(--ion-color-medium);vertical-align:text-bottom;font-size:small}\n", ".on-hover{background:color-mix(in srgb,var(--ion-color-light) 97%,transparent 3%)}.on-hover:hover{transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1);background:color-mix(in srgb,var(--ion-color-dark) 15%,transparent 93%)}ion-card.ion-card-input{margin:0;display:flex;height:100%;width:100%;align-items:center;justify-content:center;overflow:hidden;border-radius:1rem;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1);background:color-mix(in srgb,var(--ion-color-light) 97%,transparent 3%);border-bottom-color:var(--ion-color-medium);border-right-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-top-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-left-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-width:1px 1px 2px 1px;min-height:58px;max-height:58px;height:58px}ion-card.ion-card-input:hover{background:color-mix(in srgb,var(--ion-color-dark) 15%,transparent 93%)}ion-card.ion-card-input.submitted.invalid{border-color:color-mix(in srgb,var(--ion-color-danger) 75%,transparent 25%)!important}ion-card.ion-card-input.disabled{background-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%)!important}ion-card.ion-card-input ion-card-content{width:100%;height:100%;background-color:transparent;padding:0}ion-item{--background: transparent}ion-text#label.required:after{content:\"*\";color:var(--ion-color-danger);vertical-align:text-bottom;font-size:small}ion-text#label:not(.required):after{content:var(--input-opcional-label, \"(Opcional)\");color:var(--ion-color-medium);vertical-align:text-bottom;font-size:small}.on-focus{border-bottom-color:var(--ion-color-primary)}.focus-within\\:on-focus:focus-within{border-bottom-color:var(--ion-color-primary)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i3.IonInput, selector: "ion-input", inputs: ["autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearInputIcon", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i3.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i3.TextValueAccessor, selector: "ion-input:not([type=number]),ion-input-otp[type=text],ion-textarea,ion-searchbar" }, { kind: "component", type: i4.InputLoadingComponent, selector: "input-loading", inputs: ["loading"] }] }); }
|
|
236
|
-
}
|
|
237
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputDecimalComponent, decorators: [{
|
|
238
|
-
type: Component,
|
|
239
|
-
args: [{ selector: 'input-decimal, input-number, input-currency, inout-percentage', providers: InputProviderFactory.GetProvider(InputDecimalComponent), template: "<div class=\"flex relative overflow-hidden\">\r\n <ion-card class=\"focus-within:on-focus ion-card-input\" [disabled]=\"loading || disabled\"\r\n [ngClass]=\"{\r\n 'invalid' : invalid,\r\n 'submitted': submitted,\r\n 'disabled': disabled,\r\n }\"\r\n >\r\n <ion-card-content>\r\n <div class=\"relative flex\">\r\n <ion-item class=\"w-full shrink-0\" [ngClass]=\"{'required' : required}\" lines=\"none\">\r\n <ion-input\r\n class=\"default-transition\" [value]=\"model\" labelPlacement=\"stacked\"\r\n >\r\n <ion-text [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}} </ion-text>\r\n <span *ngIf=\"configuration.prefix\" slot=\"start\">{{configuration.prefix}}</span>\r\n <span *ngIf=\"configuration.sufix\" slot=\"end\" >{{configuration.sufix}}</span>\r\n </ion-input>\r\n </ion-item>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n <input-loading [loading]=\"loading\"></input-loading>\r\n</div>", styles: ["ion-input{text-align:right}ion-item::part(native){transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1)}ion-card{border-width:1px 1px 2px 1px!important;border-color:color-mix(in srgb,var(--ion-color-dark) 50%,transparent 50%);border-right-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-top-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-left-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-style:solid;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}ion-card.submitted.invalid{border-color:color-mix(in srgb,var(--ion-color-danger) 50%,transparent 50%)!important}ion-text.required:after{content:\"*\";color:var(--ion-color-danger);vertical-align:text-bottom;font-size:small}ion-text:not(.required):after{content:var(--input-opcional-label, \"(Opcional)\");color:var(--ion-color-medium);vertical-align:text-bottom;font-size:small}\n", ".on-hover{background:color-mix(in srgb,var(--ion-color-light) 97%,transparent 3%)}.on-hover:hover{transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1);background:color-mix(in srgb,var(--ion-color-dark) 15%,transparent 93%)}ion-card.ion-card-input{margin:0;display:flex;height:100%;width:100%;align-items:center;justify-content:center;overflow:hidden;border-radius:1rem;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1);background:color-mix(in srgb,var(--ion-color-light) 97%,transparent 3%);border-bottom-color:var(--ion-color-medium);border-right-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-top-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-left-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-width:1px 1px 2px 1px;min-height:58px;max-height:58px;height:58px}ion-card.ion-card-input:hover{background:color-mix(in srgb,var(--ion-color-dark) 15%,transparent 93%)}ion-card.ion-card-input.submitted.invalid{border-color:color-mix(in srgb,var(--ion-color-danger) 75%,transparent 25%)!important}ion-card.ion-card-input.disabled{background-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%)!important}ion-card.ion-card-input ion-card-content{width:100%;height:100%;background-color:transparent;padding:0}ion-item{--background: transparent}ion-text#label.required:after{content:\"*\";color:var(--ion-color-danger);vertical-align:text-bottom;font-size:small}ion-text#label:not(.required):after{content:var(--input-opcional-label, \"(Opcional)\");color:var(--ion-color-medium);vertical-align:text-bottom;font-size:small}.on-focus{border-bottom-color:var(--ion-color-primary)}.focus-within\\:on-focus:focus-within{border-bottom-color:var(--ion-color-primary)}\n"] }]
|
|
240
|
-
}], ctorParameters: () => [{ type: i1.ControlContainer, decorators: [{
|
|
241
|
-
type: Optional
|
|
242
|
-
}, {
|
|
243
|
-
type: Host
|
|
244
|
-
}, {
|
|
245
|
-
type: SkipSelf
|
|
246
|
-
}] }, { type: i0.ElementRef }], propDecorators: { configuration: [{
|
|
247
|
-
type: Input
|
|
248
|
-
}], onKeyDown: [{
|
|
249
|
-
type: HostListener,
|
|
250
|
-
args: ['keydown', ['$event']]
|
|
251
|
-
}], onPaste: [{
|
|
252
|
-
type: HostListener,
|
|
253
|
-
args: ['paste', ['$event']]
|
|
254
|
-
}] } });
|
|
255
|
-
const decimalMaxValue = 9_000_000_000_000.00;
|
|
256
|
-
const decimalSeparator = ",";
|
|
257
|
-
const thousandSeparator = ".";
|
|
258
|
-
const Sanitize = ((v) => {
|
|
259
|
-
return v.replaceAll(thousandSeparator, '')
|
|
260
|
-
.replace(decimalSeparator, '');
|
|
261
|
-
});
|
|
262
|
-
const lstNumbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
|
|
263
|
-
const lstIgnoreNotPrevent = [
|
|
264
|
-
"Tab", "CapsLock", "Shift", "Control", "Alt", "ArrowRight", "ArrowUp", "ArrowDown", "ArrowLeft"
|
|
265
|
-
];
|
|
266
|
-
const lstEspecialCases = [
|
|
267
|
-
"Backspace", "Delete"
|
|
268
|
-
];
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGVjaW1hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWRlY2ltYWwvaW5wdXQtZGVjaW1hbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LWRlY2ltYWwvaW5wdXQtZGVjaW1hbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoSSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7QUFROUMsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFdBQW1CO0lBSTVELFlBRVcsZ0JBQWtDLEVBQ2xDLFVBQXNCO1FBQzdCLEtBQUssRUFBRSxDQUFDO1FBRkQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBVWpDLGVBQVUsR0FBVyxPQUFPLENBQUM7UUE4RDdCLFdBQU0sR0FBYyxLQUFLLENBQUM7UUFDMUIsWUFBTyxHQUFhLEtBQUssQ0FBQztRQUMxQixhQUFR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QUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXO0NBQ2hHLENBQUM7QUFDRixNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLFdBQVcsRUFBRSxRQUFRO0NBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3QsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIFNraXBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5pbXBvcnQgeyBJbnB1dEN1cnJlbmN5Q29uZmlndXJhdGlvbiwgSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbiwgSW5wdXROdW1iZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9pbnB1dC1kZWNpbWFsLmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBJbnB1dFByb3ZpZGVyRmFjdG9yeSB9IGZyb20gJy4uL2lucHV0LXByb3ZpZGVyLWZhY3RvcnknO1xyXG5pbXBvcnQgeyBUaW1lb3V0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEN1c3RvbUlucHV0IH0gZnJvbSAnLi4vY3VzdG9tLWlucHV0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaW5wdXQtZGVjaW1hbCwgaW5wdXQtbnVtYmVyLCBpbnB1dC1jdXJyZW5jeSwgaW5vdXQtcGVyY2VudGFnZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWRlY2ltYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LWRlY2ltYWwuY29tcG9uZW50LnNjc3MnLCAnLi4vaW5wdXRzLnNjc3MnXSxcclxuICBwcm92aWRlcnM6IElucHV0UHJvdmlkZXJGYWN0b3J5LkdldFByb3ZpZGVyKElucHV0RGVjaW1hbENvbXBvbmVudClcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0RGVjaW1hbENvbXBvbmVudCBleHRlbmRzIEN1c3RvbUlucHV0PG51bWJlcj4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBjb25maWd1cmF0aW9uOiBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uIHwgSW5wdXROdW1iZXJDb25maWd1cmF0aW9uIHwgSW5wdXRDdXJyZW5jeUNvbmZpZ3VyYXRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBAU2tpcFNlbGYoKVxyXG4gICAgb3ZlcnJpZGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcclxuICAgIG92ZXJyaWRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcclxuICApIHsgc3VwZXIoKTsgdGhpcy5fbW9kZWwgPSAwOyB9XHJcblxyXG4gIG92ZXJyaWRlIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICB0aGlzLkhhbmRsZVNlbGVjdG9yKCk7XHJcbiAgICB0aGlzLnNldERpdmlkZXIoKTtcclxuICB9XHJcblxyXG4gIGRpZ2l0c0luZm86IHN0cmluZyA9IFwiMS4yLTJcIjtcclxuICBzZXREaWdpdHNJbmZvKCk6IHZvaWQgeyB0aGlzLmRpZ2l0c0luZm8gPSBgMS4ke3RoaXMuY29uZmlndXJhdGlvbi5wcmVjaXNpb259LSR7dGhpcy5jb25maWd1cmF0aW9uLnByZWNpc2lvbn1gOyB9XHJcbiAgSGFuZGxlU2VsZWN0b3IoKTogdm9pZHtcclxuICAgIGNvbnN0IHNlbGVjdG9yOiBzdHJpbmcgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkuc3BsaXQoJy0nKVsxXTtcclxuXHJcbiAgICBpZihzZWxlY3RvciA9PSBcIm51bWJlclwiICAgJiYgIXRoaXMuY29uZmlndXJhdGlvbil7IHRoaXMuY29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dE51bWJlckNvbmZpZ3VyYXRpb24oKTsgICB9IGVsc2VcclxuICAgIGlmKHNlbGVjdG9yID09IFwiZGVjaW1hbFwiICAmJiAhdGhpcy5jb25maWd1cmF0aW9uKXsgdGhpcy5jb25maWd1cmF0aW9uID0gbmV3IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24oKTsgIH0gZWxzZVxyXG4gICAgaWYoc2VsZWN0b3IgPT0gXCJjdXJyZW5jeVwiICYmICF0aGlzLmNvbmZpZ3VyYXRpb24peyB0aGlzLmNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXRDdXJyZW5jeUNvbmZpZ3VyYXRpb24oKTsgfVxyXG4gICAgdGhpcy5zZXREaWdpdHNJbmZvKCk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpeyB0aGlzLl9tb2RlbCA9IHZhbHVlOyB9XHJcblxyXG4gIG92ZXJyaWRlIGdldCBtb2RlbCgpOiBzdHJpbmcgICAgICB7IFxyXG4gICAgdmFyIGZvcm1hdGVkID0gZm9ybWF0TnVtYmVyKHRoaXMuX21vZGVsLCBcInB0LUJSXCIsIHRoaXMuZGlnaXRzSW5mbyk7XHJcbiAgICBpZih0aGlzLmNvbmZpZ3VyYXRpb24udGhvdXNhbmRTZXBhcmF0b3IpeyAgXHJcbiAgICAgIHJldHVybiBmb3JtYXRlZDtcclxuICAgIH1lbHNle1xyXG4gICAgICByZXR1cm4gZm9ybWF0ZWQucmVwbGFjZUFsbCh0aG91c2FuZFNlcGFyYXRvciwgJycpXHJcbiAgICB9IFxyXG4gIH1cclxuICBvdmVycmlkZSBzZXQgbW9kZWwodmFsdWU6IG51bWJlcikgeyB0aGlzLl9tb2RlbCA9IHZhbHVlOyB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLl9tb2RlbCk7IH1cclxuXHJcbiAgLy8jcmVnaW9uIFsgRXZlbnQgSGFuZGxlciBdXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgb25LZXlEb3duKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZXZlbnRUeXBlID0gMDtcclxuICAgIHRoaXMuZXZlbnQgPSBldmVudDtcclxuICAgIHRoaXMua2V5ICAgPSBldmVudC5rZXk7XHJcbiAgICBcclxuICAgIHRoaXMuYWx0S2V5ICAgPSB0aGlzLmV2ZW50LmFsdEtleTtcclxuICAgIHRoaXMuY3RybEtleSAgPSB0aGlzLmV2ZW50LmN0cmxLZXk7XHJcbiAgICB0aGlzLnNoaWZ0S2V5ID0gdGhpcy5ldmVudC5zaGlmdEtleTtcclxuXHJcbiAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSBldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICB0aGlzLmVuZFBvc2l0aW9uICAgPSBldmVudC50YXJnZXQuc2VsZWN0aW9uRW5kO1xyXG5cclxuICAgIHRoaXMudmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XHJcblxyXG4gICAgdGhpcy5IYW5kbGVCcm93c2VyKCk7XHJcbiAgfVxyXG4gIFxyXG4gIEBIb3N0TGlzdGVuZXIoJ3Bhc3RlJywgWyckZXZlbnQnXSlcclxuICBvblBhc3RlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIFxyXG4gICAgbGV0IGNsaXBib2FyZERhdGEgPSBldmVudC5jbGlwYm9hcmREYXRhIHx8IHdpbmRvd1snY2xpcGJvYXJkRGF0YSddO1xyXG4gICAgbGV0IHBhc3RlZFRleHQgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQnKTtcclxuXHJcbiAgICBjb25zdCBzID0gcGFzdGVkVGV4dC5yZXBsYWNlQWxsKCcuJywgJycpLnJlcGxhY2VBbGwoJywnLCAnLicpO1xyXG4gICAgY29uc3QgbiA9IE51bWJlcihzKTtcclxuXHJcbiAgICBpZihOdW1iZXIocykgJiYgaXNGaW5pdGUobikpeyBcclxuICAgICAgdGhpcy5tb2RlbCA9IG47XHJcbiAgICB9IGVsc2V7XHJcblxyXG4gICAgfVxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIGtleTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICBcclxuICBhbHRLZXkgIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGN0cmxLZXkgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hpZnRLZXk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc3RhcnRQb3NpdGlvbiA6IG51bWJlcjtcclxuICBlbmRQb3NpdGlvbiAgIDogbnVtYmVyO1xyXG5cclxuICB2YWx1ZTogc3RyaW5nO1xyXG5cclxuICBldmVudCAgICA6IGFueTtcclxuICBldmVudFR5cGU6IG51bWJlcjtcclxuICBcclxuICBhdExlZnQ6IHN0cmluZztcclxuICBhdFJpZ2h0OiBzdHJpbmc7XHJcblxyXG4gIEhhbmRsZUJyb3dzZXIoKXtcclxuICAgIHRoaXMuYXRMZWZ0ICA9IHRoaXMudmFsdWUuc2xpY2UoMCwgdGhpcy5zdGFydFBvc2l0aW9uKTsgXHJcbiAgICB0aGlzLmF0UmlnaHQgPSB0aGlzLnZhbHVlLnNsaWNlKHRoaXMuZW5kUG9zaXRpb24sIHRoaXMudmFsdWUubGVuZ3RoKTsgXHJcbiAgICBpZihbXCItXCJdLmluY2x1ZGVzKHRoaXMua2V5KSl7IFxyXG4gICAgICByZXR1cm4gdGhpcy5IYW5kbGVOZWdhdGl2ZSgpO1xyXG4gICAgfWVsc2VcclxuICAgIGlmKFtcIlZcIiwgXCJ2XCJdLmluY2x1ZGVzKHRoaXMua2V5KSAmJiB0aGlzLmN0cmxLZXkpeyBcclxuICAgICAgLy9ASG9zdExpc3RlbmVyKCdwYXN0ZScsIFsnJGV2ZW50J10pXHJcbiAgICB9ZWxzZVxyXG4gICAgaWYobHN0TnVtYmVycy5pbmNsdWRlcyh0aGlzLmtleSkpeyBcclxuICAgICAgcmV0dXJuIHRoaXMuSGFuZGxlTnVtYmVyKCk7IFxyXG4gICAgfWVsc2VcclxuICAgIGlmKGxzdEVzcGVjaWFsQ2FzZXMuaW5jbHVkZXModGhpcy5rZXkpKXsgXHJcbiAgICAgIHJldHVybiB0aGlzLkhhbmRsZUVzcGVjaWFsKCk7IFxyXG4gICAgfWVsc2VcclxuICAgIGlmKFtcIkFcIiwgXCJhXCJdLmluY2x1ZGVzKHRoaXMua2V5KSAmJiB0aGlzLmN0cmxLZXkpeyBcclxuICAgICAgcmV0dXJuOyBcclxuICAgIH1lbHNlXHJcbiAgICBpZihbXCJDXCIsIFwiY1wiXS5pbmNsdWRlcyh0aGlzLmtleSkgJiYgdGhpcy5jdHJsS2V5KXsgXHJcbiAgICAgIHJldHVybiB0aGlzLkhhbmRsZUNvcHkoKTsgXHJcbiAgICB9ZWxzZVxyXG4gICAgaWYobHN0SWdub3JlTm90UHJldmVudC5pbmNsdWRlcyh0aGlzLmtleSkpeyBcclxuICAgICAgcmV0dXJuOyBcclxuICAgIH1lbHNlXHJcbiAgICB0aGlzLmV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBkaXZpZGVyOiBudW1iZXI7XHJcbiAgc2V0RGl2aWRlcigpe1xyXG4gICAgdmFyIGQgPSBcIjFcIjtcclxuICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbmZpZ3VyYXRpb24ucHJlY2lzaW9uOyBpKyspe1xyXG4gICAgICBkICs9IFwiMFwiOyBcclxuICAgIH1cclxuICAgIHRoaXMuZGl2aWRlciA9IE51bWJlcihkKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIEhhbmRsZU51bWJlcigpe1xyXG4gICAgdGhpcy5ldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIHZhciBmb2N1c0VuZCA9IHRoaXMuc3RhcnRQb3NpdGlvbiA9PSAwICYmIHRoaXMuZW5kUG9zaXRpb24gPT0gdGhpcy5tb2RlbC5sZW5ndGg7XHJcbiAgICAvKiogWyBSZW1vdmUgZGVjaW1hbFNlcGFyYXRvciAmIHRob3VzYW5kU2VwYXJhdG9yIF0gKi9cclxuICAgIGNvbnN0IGYgPSB0aGlzLmF0TGVmdCArIHRoaXMua2V5ICsgdGhpcy5hdFJpZ2h0O1xyXG4gICAgY29uc3QgQ3VycmVudFZhbHVlOiBudW1iZXIgPSB0aGlzLlNhbml0aXplVmFsdWUoZik7XHJcbiAgICBpZihDdXJyZW50VmFsdWUgPT0gdGhpcy5fbW9kZWwpeyByZXR1cm4gZmFsc2U7IH1cclxuICAgIGlmKEN1cnJlbnRWYWx1ZSA+IGRlY2ltYWxNYXhWYWx1ZSl7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy9bIEhhbmRsZSBTZXQgQ3Vyc29yIFBvc2l0aW9uXVxyXG4gICAgdGhpcy5tb2RlbCA9IEN1cnJlbnRWYWx1ZTtcclxuICAgIGNvbnN0IG5ld1BvcyA9IHRoaXMuc3RhcnRQb3NpdGlvbiArIDEgKyB0aGlzLm1vZGVsLnNwbGl0KCcuJykubGVuZ3RoIC0gdGhpcy52YWx1ZS5zcGxpdCgnLicpLmxlbmd0aDtcclxuICAgIFxyXG4gICAgLy9Ib3JyaXZlbCwgbWFzIG5hbyBzZW0gdW1hIGFsdGVybmF0aXZhIGJvYSwgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTExMDg4L3VzZS1qYXZhc2NyaXB0LXRvLXBsYWNlLWN1cnNvci1hdC1lbmQtb2YtdGV4dC1pbi10ZXh0LWlucHV0LWVsZW1lbnRcclxuICAgIGF3YWl0IFRpbWVvdXQoMCk7XHJcbiAgICB0aGlzLmV2ZW50LnRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZShuZXdQb3MsIG5ld1Bvcyk7IFxyXG4gICAgaWYoZm9jdXNFbmQpe1xyXG4gICAgICB0aGlzLmV2ZW50LnRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLm1vZGVsLmxlbmd0aCwgdGhpcy5tb2RlbC5sZW5ndGgpOyBcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gXHJcbiAgYXN5bmMgSGFuZGxlTmVnYXRpdmUoKXtcclxuICAgIHRoaXMuZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICB2YXIgZm9jdXNFbmQgPSB0aGlzLnN0YXJ0UG9zaXRpb24gPT0gMCAmJiB0aGlzLmVuZFBvc2l0aW9uID09IHRoaXMubW9kZWwubGVuZ3RoO1xyXG4gICAgLyoqIFsgUmVtb3ZlIGRlY2ltYWxTZXBhcmF0b3IgJiB0aG91c2FuZFNlcGFyYXRvciBdICovXHJcbiAgICB2YXIgZjtcclxuICAgIGlmKCF0aGlzLmF0TGVmdC5pbmNsdWRlcygnLScpKXtcclxuICAgICAgZiA9IHRoaXMua2V5ICsgdGhpcy5hdExlZnQgKyB0aGlzLmF0UmlnaHQ7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgZiA9ICh0aGlzLmF0TGVmdCArIHRoaXMuYXRSaWdodCkucmVwbGFjZSgnLScsICcnKVxyXG4gICAgfVxyXG4gICAgaWYoZiA9PSBcIi1cIil7IFxyXG4gICAgICBpZih0aGlzLnZhbHVlLmluY2x1ZGVzKCctJykpe1xyXG4gICAgICAgIGYgPSB0aGlzLnZhbHVlLnJlcGxhY2UoJy0nLCAnJyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICBmID0gYC0ke3RoaXMudmFsdWV9YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IEN1cnJlbnRWYWx1ZTogbnVtYmVyID0gdGhpcy5TYW5pdGl6ZVZhbHVlKGYpO1xyXG4gICAgaWYoQ3VycmVudFZhbHVlID09IHRoaXMuX21vZGVsKXsgcmV0dXJuIGZhbHNlOyB9XHJcbiAgICBcclxuICAgIC8vWyBIYW5kbGUgU2V0IEN1cnNvciBQb3NpdGlvbl1cclxuICAgIHRoaXMubW9kZWwgPSBDdXJyZW50VmFsdWU7XHJcbiAgICBjb25zdCBuZXdQb3MgPSB0aGlzLnN0YXJ0UG9zaXRpb24gKyAxICsgdGhpcy5tb2RlbC5zcGxpdCgnLicpLmxlbmd0aCAtIHRoaXMudmFsdWUuc3BsaXQoJy4nKS5sZW5ndGg7XHJcbiAgICBcclxuICAgIC8vSG9ycml2ZWwsIG1hcyBuYW8gc2VtIHVtYSBhbHRlcm5hdGl2YSBib2EsIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzUxMTA4OC91c2UtamF2YXNjcmlwdC10by1wbGFjZS1jdXJzb3ItYXQtZW5kLW9mLXRleHQtaW4tdGV4dC1pbnB1dC1lbGVtZW50XHJcbiAgICBhd2FpdCBUaW1lb3V0KDApO1xyXG4gICAgdGhpcy5ldmVudC50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UobmV3UG9zLCBuZXdQb3MpOyBcclxuICAgIGlmKGZvY3VzRW5kKXtcclxuICAgICAgdGhpcy5ldmVudC50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5tb2RlbC5sZW5ndGgsIHRoaXMubW9kZWwubGVuZ3RoKTsgXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBhc3luYyBIYW5kbGVFc3BlY2lhbCgpe1xyXG4gICAgdGhpcy5ldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYodGhpcy5zdGFydFBvc2l0aW9uID09IHRoaXMuZW5kUG9zaXRpb24pe1xyXG4gICAgICBpZih0aGlzLmtleSA9PSBcIkJhY2tzcGFjZVwiKXtcclxuICAgICAgICBpZih0aGlzLnN0YXJ0UG9zaXRpb24gPT0gdGhpcy5lbmRQb3NpdGlvbiAmJiB0aGlzLnN0YXJ0UG9zaXRpb24gPT0gMCl7IHJldHVybiBmYWxzZTsgfVxyXG5cclxuICAgICAgICBjb25zdCBwcmV2aW91c0NoYXI6IHN0cmluZyA9IHRoaXMuYXRMZWZ0W3RoaXMuYXRMZWZ0Lmxlbmd0aCAtIDFdO1xyXG4gICAgICAgIGNvbnN0IGlzTnVtYmVyID0gbHN0TnVtYmVycy5pbmNsdWRlcyhwcmV2aW91c0NoYXIpO1xyXG4gICAgICAgIGNvbnN0IGYgPSB0aGlzLmF0TGVmdC5zbGljZSgwLCB0aGlzLmF0TGVmdC5sZW5ndGggLSAoaXNOdW1iZXIgPyAxIDogMikpICsgdGhpcy5hdFJpZ2h0O1xyXG4gICAgICAgIGNvbnN0IEN1cnJlbnRWYWx1ZSA9IHRoaXMuU2FuaXRpemVWYWx1ZShmKTtcclxuICAgICAgICBcclxuICAgICAgICAvL1sgSGFuZGxlIFNldCBDdXJzb3IgUG9zaXRpb25dXHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IEN1cnJlbnRWYWx1ZTtcclxuICAgICAgICBhd2FpdCBUaW1lb3V0KDApO1xyXG4gICAgICAgIHRoaXMuZXZlbnQudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKHRoaXMuc3RhcnRQb3NpdGlvbiwgdGhpcy5zdGFydFBvc2l0aW9uKTsgXHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9ZWxzZVxyXG4gICAgICBpZih0aGlzLmtleSA9PSBcIkRlbGV0ZVwiKXtcclxuICAgICAgICBjb25zdCBuZXh0Q2hhcjogc3RyaW5nID0gdGhpcy5hdFJpZ2h0WzBdO1xyXG4gICAgICAgIGNvbnN0IGlzTnVtYmVyID0gbHN0TnVtYmVycy5pbmNsdWRlcyhuZXh0Q2hhcik7XHJcbiAgICAgICAgY29uc3QgZiA9IHRoaXMuYXRMZWZ0ICsgdGhpcy5hdFJpZ2h0LnNsaWNlKGlzTnVtYmVyID8gMSA6IDIpO1xyXG4gICAgICAgIGNvbnN0IEN1cnJlbnRWYWx1ZSA9IHRoaXMuU2FuaXRpemVWYWx1ZShmKTtcclxuICAgICAgICBcclxuICAgICAgICAvL1sgSGFuZGxlIFNldCBDdXJzb3IgUG9zaXRpb25dXHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IEN1cnJlbnRWYWx1ZTtcclxuICAgICAgICB2YXIgbmV3UG9zOiBudW1iZXIgPSB0aGlzLnN0YXJ0UG9zaXRpb24gLSAxXHJcbiAgICAgICAgaWYobmV3UG9zIDw9IC0xKXsgbmV3UG9zID0gMDsgfVxyXG5cclxuICAgICAgICBhd2FpdCBUaW1lb3V0KDApO1xyXG4gICAgICAgIHRoaXMuZXZlbnQudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKG5ld1BvcywgbmV3UG9zKTtcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1lbHNle1xyXG4gICAgICBjb25zdCBmID0gdGhpcy5hdExlZnQgKyB0aGlzLmF0UmlnaHQ7XHJcbiAgICAgIGNvbnN0IEN1cnJlbnRWYWx1ZSA9IHRoaXMuU2FuaXRpemVWYWx1ZShmKTtcclxuICAgICAgdGhpcy5tb2RlbCA9IEN1cnJlbnRWYWx1ZTtcclxuICAgICAgXHJcbiAgICAgIGF3YWl0IFRpbWVvdXQoMCk7XHJcbiAgICAgIHRoaXMuZXZlbnQudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKHRoaXMubW9kZWwubGVuZ3RoLCB0aGlzLm1vZGVsLmxlbmd0aCk7IFxyXG5cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgSGFuZGxlQ29weSgpe1xyXG4gICAgLy9bIE5vdCBuZWNlc3NhcnksIGRlZmF1bHQgYmVoYXZpb3VyIG1pZ2h0IHdvcmsgXVxyXG4gICAgLy8gdGhpcy5ldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIC8vIHZhciBzdHIgPSB0aGlzLm1vZGVsO1xyXG4gICAgLy8gdmFyIGxzdCA9IHN0ci5zcGxpdCgnJyk7XHJcbiAgICAvLyBsc3Quc3BsaWNlKHRoaXMuZW5kUG9zaXRpb24sIHN0ci5sZW5ndGggLSB0aGlzLmVuZFBvc2l0aW9uKTtcclxuICAgIC8vIGxzdC5zcGxpY2UoMCwgdGhpcy5zdGFydFBvc2l0aW9uKVxyXG4gICAgLy8gdmFyIGNvcHkgPSBsc3Quam9pbignJykucmVwbGFjZUFsbCh0aGlzLmNvbmZpZ3VyYXRpb24udGhvdXNhbmRTZXBhcmF0b3IsICcnKS5yZXBsYWNlKHRoaXMuY29uZmlndXJhdGlvbi5kZWNpbWFsU2VwYXJhdG9yLCAnLicpO1xyXG4gICAgLy8gY29uc29sZS5sb2coY29weSlcclxuICAgIC8vIENsaXBib2FyZC53cml0ZSh7c3RyaW5nOiBjb3B5fSkuY2F0Y2goKCkgPT4ge1xyXG4gICAgLy8gICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb3B5KTtcclxuICAgIC8vIH0pO1xyXG4gIH1cclxuXHJcbiAgU2FuaXRpemVWYWx1ZShmOiBzdHJpbmcpOiBudW1iZXJ7XHJcbiAgICB2YXIgQ3VycmVudFZhbHVlOiBudW1iZXIgPSBOdW1iZXIoU2FuaXRpemUoZikpIC8gdGhpcy5kaXZpZGVyO1xyXG4gICAgLy9bIENhbmNlbGEgc2UgbyB2YWxvciBmb3IgbXVpdG8gYWx0byBdXHJcbiAgICBpZihDdXJyZW50VmFsdWUgPj0gZGVjaW1hbE1heFZhbHVlKXsgXHJcbiAgICAgIHJldHVybiB0aGlzLl9tb2RlbDsgXHJcbiAgICB9XHJcbiAgICByZXR1cm4gQ3VycmVudFZhbHVlO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gWyBFdmVudCBIYW5kbGVyIF1cclxufVxyXG5cclxuY29uc3QgZGVjaW1hbE1heFZhbHVlID0gOV8wMDBfMDAwXzAwMF8wMDAuMDBcclxuXHJcbmNvbnN0IGRlY2ltYWxTZXBhcmF0b3IgOiBzdHJpbmcgPSBcIixcIjtcclxuY29uc3QgdGhvdXNhbmRTZXBhcmF0b3I6IHN0cmluZyA9IFwiLlwiO1xyXG5cclxuY29uc3QgU2FuaXRpemU6IEZ1bmN0aW9uID0gKCh2OiBzdHJpbmcpOiBzdHJpbmcgPT4geyBcclxuICByZXR1cm4gdi5yZXBsYWNlQWxsKHRob3VzYW5kU2VwYXJhdG9yLCAnJylcclxuICAgICAgICAgIC5yZXBsYWNlICAgKGRlY2ltYWxTZXBhcmF0b3IgLCAnJykgXHJcbiAgICAgICAgfSk7XHJcblxyXG5jb25zdCBsc3ROdW1iZXJzID0gW1wiMFwiLFwiMVwiLFwiMlwiLFwiM1wiLFwiNFwiLFwiNVwiLFwiNlwiLFwiN1wiLFwiOFwiLFwiOVwiXTtcclxuY29uc3QgbHN0SWdub3JlTm90UHJldmVudCA9IFtcclxuICBcIlRhYlwiLCBcIkNhcHNMb2NrXCIsIFwiU2hpZnRcIiwgXCJDb250cm9sXCIsIFwiQWx0XCIsIFwiQXJyb3dSaWdodFwiLCBcIkFycm93VXBcIiwgXCJBcnJvd0Rvd25cIiwgXCJBcnJvd0xlZnRcIlxyXG5dO1xyXG5jb25zdCBsc3RFc3BlY2lhbENhc2VzID0gW1xyXG4gIFwiQmFja3NwYWNlXCIsIFwiRGVsZXRlXCJcclxuXTsiLCI8ZGl2IGNsYXNzPVwiZmxleCByZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICA8aW9uLWNhcmQgY2xhc3M9XCJmb2N1cy13aXRoaW46b24tZm9jdXMgaW9uLWNhcmQtaW5wdXRcIiBbZGlzYWJsZWRdPVwibG9hZGluZyB8fCBkaXNhYmxlZFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAnaW52YWxpZCcgIDogaW52YWxpZCxcclxuICAgICAgICAnc3VibWl0dGVkJzogc3VibWl0dGVkLFxyXG4gICAgICAgICdkaXNhYmxlZCc6IGRpc2FibGVkLFxyXG4gICAgICB9XCJcclxuICAgID5cclxuICAgIDxpb24tY2FyZC1jb250ZW50PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgZmxleFwiPlxyXG4gICAgICAgIDxpb24taXRlbSBjbGFzcz1cInctZnVsbCBzaHJpbmstMFwiIFtuZ0NsYXNzXT1cInsncmVxdWlyZWQnIDogcmVxdWlyZWR9XCIgbGluZXM9XCJub25lXCI+XHJcbiAgICAgICAgICA8aW9uLWlucHV0XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGVmYXVsdC10cmFuc2l0aW9uXCIgW3ZhbHVlXT1cIm1vZGVsXCIgbGFiZWxQbGFjZW1lbnQ9XCJzdGFja2VkXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlvbi10ZXh0IFtuZ0NsYXNzXT1cInsncmVxdWlyZWQnOiByZXF1aXJlZH1cIiBzbG90PVwibGFiZWxcIj4ge3tsYWJlbH19IDwvaW9uLXRleHQ+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlndXJhdGlvbi5wcmVmaXhcIiBzbG90PVwic3RhcnRcIj57e2NvbmZpZ3VyYXRpb24ucHJlZml4fX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlndXJhdGlvbi5zdWZpeFwiICBzbG90PVwiZW5kXCIgID57e2NvbmZpZ3VyYXRpb24uc3VmaXh9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvaW9uLWlucHV0PlxyXG4gICAgICAgIDwvaW9uLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9pb24tY2FyZC1jb250ZW50PlxyXG4gIDwvaW9uLWNhcmQ+XHJcbiAgPGlucHV0LWxvYWRpbmcgW2xvYWRpbmddPVwibG9hZGluZ1wiPjwvaW5wdXQtbG9hZGluZz5cclxuPC9kaXY+Il19
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
export class InputDecimalConfiguration {
|
|
2
|
-
constructor(
|
|
3
|
-
/** Declara a quantidade de numeros apos o ponto */
|
|
4
|
-
precision = 2,
|
|
5
|
-
/** Texto no inicio do input */
|
|
6
|
-
prefix = null,
|
|
7
|
-
/** Texto no fim do input */
|
|
8
|
-
sufix = null,
|
|
9
|
-
/** Se = false não aplica virgulas no lugar do separador a cada 3 unidades */
|
|
10
|
-
thousandSeparator = '.', decimalSeparator = ',') {
|
|
11
|
-
this.precision = precision;
|
|
12
|
-
this.thousandSeparator = thousandSeparator;
|
|
13
|
-
this.decimalSeparator = decimalSeparator;
|
|
14
|
-
if (!prefix) {
|
|
15
|
-
this.prefix = '';
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
this.prefix = prefix;
|
|
19
|
-
}
|
|
20
|
-
if (!sufix) {
|
|
21
|
-
this.sufix = '';
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
this.sufix = sufix;
|
|
25
|
-
}
|
|
26
|
-
this.placeholder = "-";
|
|
27
|
-
if (precision > 0) {
|
|
28
|
-
this.placeholder += this.decimalSeparator;
|
|
29
|
-
for (let i = precision; i > 0; i--) {
|
|
30
|
-
this.placeholder += "-";
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
export class InputNumberConfiguration extends InputDecimalConfiguration {
|
|
36
|
-
constructor(prefix = "", sufix = "", thousandSeparator = '.') {
|
|
37
|
-
super(0, prefix, sufix, thousandSeparator);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
export class InputCurrencyConfiguration extends InputDecimalConfiguration {
|
|
41
|
-
constructor(prefix = "R$", sufix = "", thousandSeparator = '.') {
|
|
42
|
-
super(2, prefix, sufix, thousandSeparator);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGVjaW1hbC5jb25maWd1cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9pbnB1dC1kZWNpbWFsL2lucHV0LWRlY2ltYWwuY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8seUJBQXlCO0lBS3BDO0lBQ0Usb0RBQW9EO0lBQzdDLFlBQW9CLENBQUM7SUFDNUIsK0JBQStCO0lBQy9CLFNBQXdCLElBQUk7SUFDNUIsNEJBQTRCO0lBQzVCLFFBQXVCLElBQUk7SUFDM0IsNkVBQTZFO0lBQ3RFLG9CQUE0QixHQUFHLEVBQy9CLG1CQUE0QixHQUFHO1FBUC9CLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFNckIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFjO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBZTtRQUV0QyxJQUFHLENBQUMsTUFBTSxFQUFDLENBQUM7WUFBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUFDLENBQUM7YUFBSSxDQUFDO1lBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFBQyxDQUFDO1FBQzdELElBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxLQUFLLEdBQUksRUFBRSxDQUFDO1FBQUMsQ0FBQzthQUFJLENBQUM7WUFBQyxJQUFJLENBQUMsS0FBSyxHQUFJLEtBQUssQ0FBQztRQUFDLENBQUM7UUFFNUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDdkIsSUFBRyxTQUFTLEdBQUcsQ0FBQyxFQUFDLENBQUM7WUFDaEIsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDMUMsS0FBSSxJQUFJLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUNELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx5QkFBeUI7SUFDckUsWUFDRSxTQUFpQixFQUFFLEVBQ25CLFFBQWlCLEVBQUUsRUFDbkIsb0JBQTRCLEdBQUc7UUFFL0IsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBQ0QsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHlCQUF5QjtJQUN2RSxZQUFZLFNBQWlCLElBQUksRUFBRSxRQUFnQixFQUFFLEVBQUUsb0JBQTRCLEdBQUc7UUFDcEYsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb257XHJcbiAgcHJlZml4ICAgICAgOiBzdHJpbmc7XHJcbiAgc3VmaXggICAgICAgOiBzdHJpbmc7XHJcbiAgcGxhY2Vob2xkZXIgOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLyoqIERlY2xhcmEgYSBxdWFudGlkYWRlIGRlIG51bWVyb3MgYXBvcyBvIHBvbnRvICAqL1xyXG4gICAgcHVibGljIHByZWNpc2lvbjogbnVtYmVyID0gMiwgXHJcbiAgICAvKiogVGV4dG8gbm8gaW5pY2lvIGRvIGlucHV0ICovXHJcbiAgICBwcmVmaXg6IHN0cmluZyB8IG51bGwgPSBudWxsLCBcclxuICAgIC8qKiBUZXh0byBubyBmaW0gZG8gaW5wdXQgKi9cclxuICAgIHN1Zml4OiBzdHJpbmcgfCBudWxsID0gbnVsbCwgXHJcbiAgICAvKiogU2UgPSBmYWxzZSBuw6NvIGFwbGljYSB2aXJndWxhcyBubyBsdWdhciBkbyBzZXBhcmFkb3IgYSBjYWRhIDMgdW5pZGFkZXMgKi9cclxuICAgIHB1YmxpYyB0aG91c2FuZFNlcGFyYXRvcjogc3RyaW5nID0gJy4nLFxyXG4gICAgcHVibGljIGRlY2ltYWxTZXBhcmF0b3IgOiBzdHJpbmcgPSAnLCdcclxuICApe1xyXG4gICAgaWYoIXByZWZpeCl7IHRoaXMucHJlZml4ID0gJyc7IH1lbHNleyB0aGlzLnByZWZpeCA9IHByZWZpeDsgfVxyXG4gICAgaWYoIXN1Zml4ICl7IHRoaXMuc3VmaXggID0gJyc7IH1lbHNleyB0aGlzLnN1Zml4ICA9IHN1Zml4OyB9XHJcblxyXG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IFwiLVwiO1xyXG4gICAgaWYocHJlY2lzaW9uID4gMCl7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgKz0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yO1xyXG4gICAgICBmb3IobGV0IGkgPSBwcmVjaXNpb247IGkgPiAwOyBpLS0pe1xyXG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXIgKz0gXCItXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn0gXHJcbmV4cG9ydCBjbGFzcyBJbnB1dE51bWJlckNvbmZpZ3VyYXRpb24gZXh0ZW5kcyBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByZWZpeDogc3RyaW5nID0gXCJcIiwgXHJcbiAgICBzdWZpeCA6IHN0cmluZyA9IFwiXCIsIFxyXG4gICAgdGhvdXNhbmRTZXBhcmF0b3I6IHN0cmluZyA9ICcuJ1xyXG4gICl7XHJcbiAgICBzdXBlcigwLCBwcmVmaXgsIHN1Zml4LCB0aG91c2FuZFNlcGFyYXRvcik7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBjbGFzcyBJbnB1dEN1cnJlbmN5Q29uZmlndXJhdGlvbiBleHRlbmRzIElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24ge1xyXG4gIGNvbnN0cnVjdG9yKHByZWZpeDogc3RyaW5nID0gXCJSJFwiLCBzdWZpeDogc3RyaW5nID0gXCJcIiwgdGhvdXNhbmRTZXBhcmF0b3I6IHN0cmluZyA9ICcuJyl7XHJcbiAgICBzdXBlcigyLCBwcmVmaXgsIHN1Zml4LCB0aG91c2FuZFNlcGFyYXRvcik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { InputDecimalConfiguration, InputNumberConfiguration } from "./input-decimal/input-decimal.configuration";
|
|
2
|
-
export class InputsDefaultConfigurations {
|
|
3
|
-
static { this.configurationDecimalPercentage = new InputDecimalConfiguration(2, null, '%'); }
|
|
4
|
-
static { this.configurationDecimalDegree = new InputDecimalConfiguration(2, null, "°C"); }
|
|
5
|
-
static { this.configurationDecimalM3H = new InputDecimalConfiguration(2, null, "m³/h"); }
|
|
6
|
-
static { this.configurationDecimalMeters = new InputDecimalConfiguration(2, null, "m"); }
|
|
7
|
-
static { this.configurationDecimalMilimeters = new InputDecimalConfiguration(2, null, "mm"); }
|
|
8
|
-
static { this.configurationNumberPercentage = new InputNumberConfiguration(null, '%'); }
|
|
9
|
-
static { this.configurationNumberDegree = new InputNumberConfiguration(null, "°C"); }
|
|
10
|
-
static { this.configurationNumberM3H = new InputNumberConfiguration(null, "m³/h"); }
|
|
11
|
-
static { this.configurationNumberMeters = new InputNumberConfiguration(null, "m"); }
|
|
12
|
-
static { this.configurationNumberMilimeters = new InputNumberConfiguration(null, "mm"); }
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGVmYXVsdC1jb25maWd1cmF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dHMvaW5wdXQtZGVmYXVsdC1jb25maWd1cmF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVsSCxNQUFNLE9BQU8sMkJBQTJCO2FBQ3RCLG1DQUE4QixHQUE4QixJQUFJLHlCQUF5QixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDeEcsK0JBQTBCLEdBQWtDLElBQUkseUJBQXlCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzthQUN6Ryw0QkFBdUIsR0FBcUMsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQzNHLCtCQUEwQixHQUFrQyxJQUFJLHlCQUF5QixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDeEcsbUNBQThCLEdBQThCLElBQUkseUJBQXlCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzthQUV6RyxrQ0FBNkIsR0FBNkIsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDbEcsOEJBQXlCLEdBQWlDLElBQUksd0JBQXdCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ25HLDJCQUFzQixHQUFvQyxJQUFJLHdCQUF3QixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNyRyw4QkFBeUIsR0FBaUMsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDbEcsa0NBQTZCLEdBQTZCLElBQUksd0JBQXdCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbiwgSW5wdXROdW1iZXJDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vaW5wdXQtZGVjaW1hbC9pbnB1dC1kZWNpbWFsLmNvbmZpZ3VyYXRpb25cIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBJbnB1dHNEZWZhdWx0Q29uZmlndXJhdGlvbnMge1xyXG4gIHN0YXRpYyByZWFkb25seSBjb25maWd1cmF0aW9uRGVjaW1hbFBlcmNlbnRhZ2U6IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbigyLCBudWxsLCAnJScpO1xyXG4gIHN0YXRpYyByZWFkb25seSBjb25maWd1cmF0aW9uRGVjaW1hbERlZ3JlZSAgICA6IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbigyLCBudWxsLCBcIsKwQ1wiKTtcclxuICBzdGF0aWMgcmVhZG9ubHkgY29uZmlndXJhdGlvbkRlY2ltYWxNM0ggICAgICAgOiBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uID0gbmV3IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24oMiwgbnVsbCwgXCJtwrMvaFwiKTtcclxuICBzdGF0aWMgcmVhZG9ubHkgY29uZmlndXJhdGlvbkRlY2ltYWxNZXRlcnMgICAgOiBJbnB1dERlY2ltYWxDb25maWd1cmF0aW9uID0gbmV3IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24oMiwgbnVsbCwgXCJtXCIpO1xyXG4gIHN0YXRpYyByZWFkb25seSBjb25maWd1cmF0aW9uRGVjaW1hbE1pbGltZXRlcnM6IElucHV0RGVjaW1hbENvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXREZWNpbWFsQ29uZmlndXJhdGlvbigyLCBudWxsLCBcIm1tXCIpO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgY29uZmlndXJhdGlvbk51bWJlclBlcmNlbnRhZ2U6IElucHV0TnVtYmVyQ29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dE51bWJlckNvbmZpZ3VyYXRpb24obnVsbCwgJyUnKTtcclxuICBzdGF0aWMgcmVhZG9ubHkgY29uZmlndXJhdGlvbk51bWJlckRlZ3JlZSAgICA6IElucHV0TnVtYmVyQ29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dE51bWJlckNvbmZpZ3VyYXRpb24obnVsbCwgXCLCsENcIik7XHJcbiAgc3RhdGljIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25OdW1iZXJNM0ggICAgICAgOiBJbnB1dE51bWJlckNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXROdW1iZXJDb25maWd1cmF0aW9uKG51bGwsIFwibcKzL2hcIik7XHJcbiAgc3RhdGljIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25OdW1iZXJNZXRlcnMgICAgOiBJbnB1dE51bWJlckNvbmZpZ3VyYXRpb24gPSBuZXcgSW5wdXROdW1iZXJDb25maWd1cmF0aW9uKG51bGwsIFwibVwiKTtcclxuICBzdGF0aWMgcmVhZG9ubHkgY29uZmlndXJhdGlvbk51bWJlck1pbGltZXRlcnM6IElucHV0TnVtYmVyQ29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dE51bWJlckNvbmZpZ3VyYXRpb24obnVsbCwgXCJtbVwiKTtcclxufSJdfQ==
|
package/esm2022/lib/components/inputs/input-file/download-button/download-button.component.mjs
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { Component, computed, ElementRef, Input, model } from '@angular/core';
|
|
2
|
-
import { InputFileConfiguration } from '../input-file.configuration';
|
|
3
|
-
import { ApiUrlProviderService } from '../../../../services/web/api-url-provider.service';
|
|
4
|
-
import { InputProviderFactory } from '../../input-provider-factory';
|
|
5
|
-
import { StorageService } from '../../../../services/web/storage.service';
|
|
6
|
-
import { imageTypes } from '../input-file.component';
|
|
7
|
-
import { Utils } from '../../../../services/utils.service';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "../../../../services/web/storage.service";
|
|
10
|
-
import * as i2 from "../../../../services/web/api-url-provider.service";
|
|
11
|
-
import * as i3 from "@angular/common";
|
|
12
|
-
import * as i4 from "@ionic/angular";
|
|
13
|
-
import * as i5 from "../../../../directives/ng-var.directive";
|
|
14
|
-
import * as i6 from "../../../loading/loading.component";
|
|
15
|
-
import * as i7 from "../../input-loading/input-loading.component";
|
|
16
|
-
export class DownloadButtonComponent {
|
|
17
|
-
constructor(storageService, elementRef, apiUrlProviderService) {
|
|
18
|
-
this.storageService = storageService;
|
|
19
|
-
this.elementRef = elementRef;
|
|
20
|
-
this.apiUrlProviderService = apiUrlProviderService;
|
|
21
|
-
this.expand = "";
|
|
22
|
-
this.value = model();
|
|
23
|
-
this.size = "small";
|
|
24
|
-
this.post = false;
|
|
25
|
-
this.configuration = new InputFileConfiguration();
|
|
26
|
-
this.label = undefined;
|
|
27
|
-
this.guid = "";
|
|
28
|
-
this.lstFiles = computed(() => {
|
|
29
|
-
if (typeof (this.value()) == "string") {
|
|
30
|
-
return this.value().split(';');
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
return [];
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
this.lstLoading = [];
|
|
37
|
-
}
|
|
38
|
-
registerOnChange(fn) {
|
|
39
|
-
//throw new Error('Method not implemented.');
|
|
40
|
-
}
|
|
41
|
-
registerOnTouched(fn) {
|
|
42
|
-
//throw new Error('Method not implemented.');
|
|
43
|
-
}
|
|
44
|
-
setDisabledState(isDisabled) {
|
|
45
|
-
//throw new Error('Method not implemented.');
|
|
46
|
-
}
|
|
47
|
-
ngOnInit() {
|
|
48
|
-
this.apiUrl = this.apiUrlProviderService.apiUrl;
|
|
49
|
-
this.guid = `${Utils.GenerateGUID()}${this.elementRef.nativeElement.tagName.toLowerCase()}`;
|
|
50
|
-
}
|
|
51
|
-
writeValue(value) { this.value.set(value); }
|
|
52
|
-
Download(value) {
|
|
53
|
-
this.storageService.StartDownload(value, this.params, this.post);
|
|
54
|
-
}
|
|
55
|
-
Sanitize(v) {
|
|
56
|
-
return StorageService.SanitizeFileName(v);
|
|
57
|
-
}
|
|
58
|
-
ExtensionIsImage(v) {
|
|
59
|
-
try {
|
|
60
|
-
return imageTypes.includes(v.split('.')[v.split('.').length - 1]);
|
|
61
|
-
}
|
|
62
|
-
catch { }
|
|
63
|
-
}
|
|
64
|
-
SetLoading(path) {
|
|
65
|
-
this.lstLoading.push(path);
|
|
66
|
-
}
|
|
67
|
-
SetNotLoading(path) {
|
|
68
|
-
this.lstLoading.splice(this.lstLoading.indexOf(path), 1);
|
|
69
|
-
}
|
|
70
|
-
isLoading(path) {
|
|
71
|
-
return this.lstLoading.indexOf(path) != -1;
|
|
72
|
-
}
|
|
73
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadButtonComponent, deps: [{ token: i1.StorageService }, { token: i0.ElementRef }, { token: i2.ApiUrlProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DownloadButtonComponent, selector: "download-button", inputs: { expand: { classPropertyName: "expand", publicName: "expand", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, params: { classPropertyName: "params", publicName: "params", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, post: { classPropertyName: "post", publicName: "post", isSignal: false, isRequired: false, transformFunction: null }, configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, providers: InputProviderFactory.GetProvider(DownloadButtonComponent), ngImport: i0, template: "@if(lstFiles().length == 0){\r\n <ion-button fill=\"outline\" [disabled]=\"true\" [size]=\"size\"> \r\n <ion-icon name=\"close-circle\" slot=\"start\"></ion-icon> \r\n <ion-label> Sem arquivos... </ion-label>\r\n </ion-button>\r\n}\r\n@else if(lstFiles().length == 1){\r\n <ion-button *ngVar=\"storageService.GetProgress(lstFiles()[0]) as val\" class=\"relative block {{expand == 'block' ? 'size-full' : ''}}\" [disabled]=\"val != 0 || disabled\" (click)=\"Download(lstFiles()[0])\" fill=\"outline\" [size]=\"size\"> \r\n <ion-icon name=\"download\" slot=\"start\"></ion-icon> \r\n <ion-label> {{label ? label : Sanitize(lstFiles()[0])}} </ion-label>\r\n <input-loading [loading]=\"val != 0\"></input-loading>\r\n <div class=\"absolute size-full h-[calc(100%+var(--padding-top)+var(--padding-bottom))] w-[calc(100%+var(--padding-end)+var(--padding-start))]\">\r\n <div class=\"size-full flex flex-row-reverse relative\">\r\n <ion-progress-bar class=\"absolute bottom-0 left-0 w-full h-1 default-transition\" [ngClass]=\"{'-translate-y-4 opacity-0': (!val || val == 0)}\" [value]=\"val\"></ion-progress-bar>\r\n </div>\r\n </div>\r\n </ion-button>\r\n}\r\n@else{\r\n <ion-button [id]=\"guid\" fill=\"outline\" [size]=\"size\"> \r\n <ion-icon name=\"download\" slot=\"start\"></ion-icon> \r\n <ion-label> {{lstFiles().length}} Arquivos </ion-label>\r\n </ion-button>\r\n\r\n <ion-popover [trigger]=\"guid\" [keepContentsMounted]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-content class=\"p-0 bg-transparent\">\r\n <ion-list>\r\n @for (item of lstFiles(); track item; let i = $index; let l = $last) {\r\n <section *ngVar=\"storageService.GetProgress(item) as val\">\r\n <ion-item style=\"--background: transparent\" lines=\"{{l ? 'none' : 'full'}}\" button [detail]=\"false\">\r\n\r\n <ion-icon name=\"download\" (click)=\"Download(item)\" slot=\"start\"></ion-icon> \r\n @if (ExtensionIsImage(item)) {\r\n <ion-icon [id]=\"guid + '-' + i + '-nested-popover'\" name=\"image\" slot=\"start\"></ion-icon> \r\n }\r\n\r\n <ion-label>{{Sanitize(item)}}</ion-label>\r\n <ion-text *ngIf=\"val != 0\" slot=\"end\" class=\"text-sm\"><b>{{val * 100 | number : '1.2-2'}}%</b></ion-text>\r\n </ion-item>\r\n <ion-progress-bar class=\"h-0 default-transition\" [ngClass]=\"{'h-1': val != 0 }\" [value]=\"val\"></ion-progress-bar>\r\n <ion-popover *ngIf=\"ExtensionIsImage(item)\" side=\"end\" alignment=\"center\" [trigger]=\"guid + '-' + i + '-nested-popover'\" [dismissOnSelect]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-content *ngVar=\"isLoading(item) as isLoading\">\r\n <loading [hidden]=\"!isLoading\"></loading>\r\n <ion-img [hidden]=\"isLoading\" [src]=\"apiUrl + item\" (ionImgWillLoad)=\"SetLoading(item)\" (ionImgDidLoad)=\"SetNotLoading(item)\"></ion-img>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n </section>\r\n }\r\n </ion-list>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n}", styles: ["ion-popover{--width: 30rem }\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { kind: "component", type: i4.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i4.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i4.IonProgressBar, selector: "ion-progress-bar", inputs: ["buffer", "color", "mode", "reversed", "type", "value"] }, { kind: "component", type: i4.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonPopover, selector: "ion-popover" }, { kind: "directive", type: i5.NgVarDirective, selector: "[ngVar]", inputs: ["ngVar"] }, { kind: "component", type: i6.LoadingComponent, selector: "loading", inputs: ["text", "type", "loading"] }, { kind: "component", type: i7.InputLoadingComponent, selector: "input-loading", inputs: ["loading"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }] }); }
|
|
75
|
-
}
|
|
76
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadButtonComponent, decorators: [{
|
|
77
|
-
type: Component,
|
|
78
|
-
args: [{ selector: 'download-button', providers: InputProviderFactory.GetProvider(DownloadButtonComponent), template: "@if(lstFiles().length == 0){\r\n <ion-button fill=\"outline\" [disabled]=\"true\" [size]=\"size\"> \r\n <ion-icon name=\"close-circle\" slot=\"start\"></ion-icon> \r\n <ion-label> Sem arquivos... </ion-label>\r\n </ion-button>\r\n}\r\n@else if(lstFiles().length == 1){\r\n <ion-button *ngVar=\"storageService.GetProgress(lstFiles()[0]) as val\" class=\"relative block {{expand == 'block' ? 'size-full' : ''}}\" [disabled]=\"val != 0 || disabled\" (click)=\"Download(lstFiles()[0])\" fill=\"outline\" [size]=\"size\"> \r\n <ion-icon name=\"download\" slot=\"start\"></ion-icon> \r\n <ion-label> {{label ? label : Sanitize(lstFiles()[0])}} </ion-label>\r\n <input-loading [loading]=\"val != 0\"></input-loading>\r\n <div class=\"absolute size-full h-[calc(100%+var(--padding-top)+var(--padding-bottom))] w-[calc(100%+var(--padding-end)+var(--padding-start))]\">\r\n <div class=\"size-full flex flex-row-reverse relative\">\r\n <ion-progress-bar class=\"absolute bottom-0 left-0 w-full h-1 default-transition\" [ngClass]=\"{'-translate-y-4 opacity-0': (!val || val == 0)}\" [value]=\"val\"></ion-progress-bar>\r\n </div>\r\n </div>\r\n </ion-button>\r\n}\r\n@else{\r\n <ion-button [id]=\"guid\" fill=\"outline\" [size]=\"size\"> \r\n <ion-icon name=\"download\" slot=\"start\"></ion-icon> \r\n <ion-label> {{lstFiles().length}} Arquivos </ion-label>\r\n </ion-button>\r\n\r\n <ion-popover [trigger]=\"guid\" [keepContentsMounted]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-content class=\"p-0 bg-transparent\">\r\n <ion-list>\r\n @for (item of lstFiles(); track item; let i = $index; let l = $last) {\r\n <section *ngVar=\"storageService.GetProgress(item) as val\">\r\n <ion-item style=\"--background: transparent\" lines=\"{{l ? 'none' : 'full'}}\" button [detail]=\"false\">\r\n\r\n <ion-icon name=\"download\" (click)=\"Download(item)\" slot=\"start\"></ion-icon> \r\n @if (ExtensionIsImage(item)) {\r\n <ion-icon [id]=\"guid + '-' + i + '-nested-popover'\" name=\"image\" slot=\"start\"></ion-icon> \r\n }\r\n\r\n <ion-label>{{Sanitize(item)}}</ion-label>\r\n <ion-text *ngIf=\"val != 0\" slot=\"end\" class=\"text-sm\"><b>{{val * 100 | number : '1.2-2'}}%</b></ion-text>\r\n </ion-item>\r\n <ion-progress-bar class=\"h-0 default-transition\" [ngClass]=\"{'h-1': val != 0 }\" [value]=\"val\"></ion-progress-bar>\r\n <ion-popover *ngIf=\"ExtensionIsImage(item)\" side=\"end\" alignment=\"center\" [trigger]=\"guid + '-' + i + '-nested-popover'\" [dismissOnSelect]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-content *ngVar=\"isLoading(item) as isLoading\">\r\n <loading [hidden]=\"!isLoading\"></loading>\r\n <ion-img [hidden]=\"isLoading\" [src]=\"apiUrl + item\" (ionImgWillLoad)=\"SetLoading(item)\" (ionImgDidLoad)=\"SetNotLoading(item)\"></ion-img>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n </section>\r\n }\r\n </ion-list>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n}", styles: ["ion-popover{--width: 30rem }\n"] }]
|
|
79
|
-
}], ctorParameters: () => [{ type: i1.StorageService }, { type: i0.ElementRef }, { type: i2.ApiUrlProviderService }], propDecorators: { expand: [{
|
|
80
|
-
type: Input
|
|
81
|
-
}], size: [{
|
|
82
|
-
type: Input
|
|
83
|
-
}], params: [{
|
|
84
|
-
type: Input
|
|
85
|
-
}], disabled: [{
|
|
86
|
-
type: Input
|
|
87
|
-
}], post: [{
|
|
88
|
-
type: Input
|
|
89
|
-
}], configuration: [{
|
|
90
|
-
type: Input
|
|
91
|
-
}], label: [{
|
|
92
|
-
type: Input
|
|
93
|
-
}] } });
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dHMvaW5wdXQtZmlsZS9kb3dubG9hZC1idXR0b24vZG93bmxvYWQtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dHMvaW5wdXQtZmlsZS9kb3dubG9hZC1idXR0b24vZG93bmxvYWQtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUduRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7O0FBUTNELE1BQU0sT0FBTyx1QkFBdUI7SUFXbEMsWUFDUyxjQUE4QixFQUM3QixVQUFzQixFQUN0QixxQkFBNEM7UUFGN0MsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzdCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQVo3QyxXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQzdCLFVBQUssR0FBd0IsS0FBSyxFQUFVLENBQUM7UUFDcEMsU0FBSSxHQUFXLE9BQU8sQ0FB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QUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgRWxlbWVudFJlZiwgSW5wdXQsIG1vZGVsLCBNb2RlbFNpZ25hbCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgSW5wdXRGaWxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL2lucHV0LWZpbGUuY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IEFwaVVybFByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9hcGktdXJsLXByb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbnB1dFByb3ZpZGVyRmFjdG9yeSB9IGZyb20gJy4uLy4uL2lucHV0LXByb3ZpZGVyLWZhY3RvcnknO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBpbWFnZVR5cGVzIH0gZnJvbSAnLi4vaW5wdXQtZmlsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkb3dubG9hZC1idXR0b24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3dubG9hZC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Rvd25sb2FkLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogSW5wdXRQcm92aWRlckZhY3RvcnkuR2V0UHJvdmlkZXIoRG93bmxvYWRCdXR0b25Db21wb25lbnQpXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEb3dubG9hZEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgQElucHV0KCkgZXhwYW5kOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHZhbHVlOiBNb2RlbFNpZ25hbDxzdHJpbmc+ID0gbW9kZWw8c3RyaW5nPigpO1xyXG4gIEBJbnB1dCgpIHNpemU6IHN0cmluZyA9IFwic21hbGxcIjtcclxuICBASW5wdXQoKSBwYXJhbXM6IGFueTtcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwb3N0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbjogSW5wdXRGaWxlQ29uZmlndXJhdGlvbiA9IG5ldyBJbnB1dEZpbGVDb25maWd1cmF0aW9uKCk7XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICBcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIGFwaVVybFByb3ZpZGVyU2VydmljZTogQXBpVXJsUHJvdmlkZXJTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAvL3Rocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgLy90aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIC8vdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xyXG4gIH1cclxuXHJcbiAgZ3VpZCA6IHN0cmluZyA9IFwiXCI7XHJcbiAgYXBpVXJsOiBzdHJpbmc7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5hcGlVcmwgPSB0aGlzLmFwaVVybFByb3ZpZGVyU2VydmljZS5hcGlVcmw7XHJcbiAgICB0aGlzLmd1aWQgID0gYCR7VXRpbHMuR2VuZXJhdGVHVUlEKCl9JHt0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCl9YFxyXG4gIH1cclxuXHJcbiAgbHN0RmlsZXM6IFNpZ25hbDxzdHJpbmdbXT4gPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZih0eXBlb2YodGhpcy52YWx1ZSgpKSA9PSBcInN0cmluZ1wiKXtcclxuICAgICAgcmV0dXJuIHRoaXMudmFsdWUoKS5zcGxpdCgnOycpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7IHRoaXMudmFsdWUuc2V0KHZhbHVlKTsgfVxyXG5cclxuICBEb3dubG9hZCh2YWx1ZTogc3RyaW5nKTogdm9pZHtcclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuU3RhcnREb3dubG9hZCh2YWx1ZSwgdGhpcy5wYXJhbXMsIHRoaXMucG9zdCk7XHJcbiAgfVxyXG5cclxuICBTYW5pdGl6ZSh2KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBTdG9yYWdlU2VydmljZS5TYW5pdGl6ZUZpbGVOYW1lKHYpO1xyXG4gIH1cclxuXHJcbiAgRXh0ZW5zaW9uSXNJbWFnZSh2KXtcclxuICAgIHRyeXtcclxuICAgICAgcmV0dXJuIGltYWdlVHlwZXMuaW5jbHVkZXModi5zcGxpdCgnLicpW3Yuc3BsaXQoJy4nKS5sZW5ndGggLSAxXSlcclxuICAgIH1jYXRjaHt9XHJcbiAgfVxyXG5cclxuICBsc3RMb2FkaW5nOiBzdHJpbmdbXSA9IFtdO1xyXG4gIFNldExvYWRpbmcocGF0aDogc3RyaW5nKXtcclxuICAgIHRoaXMubHN0TG9hZGluZy5wdXNoKHBhdGgpO1xyXG4gIH1cclxuICBTZXROb3RMb2FkaW5nKHBhdGg6IHN0cmluZyl7XHJcbiAgICB0aGlzLmxzdExvYWRpbmcuc3BsaWNlKHRoaXMubHN0TG9hZGluZy5pbmRleE9mKHBhdGgpLCAxKTtcclxuICB9XHJcbiAgaXNMb2FkaW5nKHBhdGg6IHN0cmluZyl7XHJcbiAgICByZXR1cm4gdGhpcy5sc3RMb2FkaW5nLmluZGV4T2YocGF0aCkgIT0gLTE7XHJcbiAgfVxyXG59XHJcbiIsIkBpZihsc3RGaWxlcygpLmxlbmd0aCA9PSAwKXtcclxuICA8aW9uLWJ1dHRvbiBmaWxsPVwib3V0bGluZVwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgW3NpemVdPVwic2l6ZVwiPiBcclxuICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2UtY2lyY2xlXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj4gIFxyXG4gICAgPGlvbi1sYWJlbD4gU2VtIGFycXVpdm9zLi4uIDwvaW9uLWxhYmVsPlxyXG4gIDwvaW9uLWJ1dHRvbj5cclxufVxyXG5AZWxzZSBpZihsc3RGaWxlcygpLmxlbmd0aCA9PSAxKXtcclxuICA8aW9uLWJ1dHRvbiAqbmdWYXI9XCJzdG9yYWdlU2VydmljZS5HZXRQcm9ncmVzcyhsc3RGaWxlcygpWzBdKSBhcyB2YWxcIiBjbGFzcz1cInJlbGF0aXZlIGJsb2NrIHt7ZXhwYW5kID09ICdibG9jaycgPyAnc2l6ZS1mdWxsJyA6ICcnfX1cIiBbZGlzYWJsZWRdPVwidmFsICE9IDAgfHwgZGlzYWJsZWRcIiAoY2xpY2spPVwiRG93bmxvYWQobHN0RmlsZXMoKVswXSlcIiBmaWxsPVwib3V0bGluZVwiIFtzaXplXT1cInNpemVcIj4gXHJcbiAgICA8aW9uLWljb24gbmFtZT1cImRvd25sb2FkXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj4gIFxyXG4gICAgPGlvbi1sYWJlbD4ge3tsYWJlbCA/IGxhYmVsIDogU2FuaXRpemUobHN0RmlsZXMoKVswXSl9fSA8L2lvbi1sYWJlbD5cclxuICAgIDxpbnB1dC1sb2FkaW5nIFtsb2FkaW5nXT1cInZhbCAhPSAwXCI+PC9pbnB1dC1sb2FkaW5nPlxyXG4gICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHNpemUtZnVsbCBoLVtjYWxjKDEwMCUrdmFyKC0tcGFkZGluZy10b3ApK3ZhcigtLXBhZGRpbmctYm90dG9tKSldIHctW2NhbGMoMTAwJSt2YXIoLS1wYWRkaW5nLWVuZCkrdmFyKC0tcGFkZGluZy1zdGFydCkpXVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIGZsZXggZmxleC1yb3ctcmV2ZXJzZSByZWxhdGl2ZVwiPlxyXG4gICAgICAgIDxpb24tcHJvZ3Jlc3MtYmFyIGNsYXNzPVwiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIHctZnVsbCBoLTEgZGVmYXVsdC10cmFuc2l0aW9uXCIgW25nQ2xhc3NdPVwieyctdHJhbnNsYXRlLXktNCBvcGFjaXR5LTAnOiAoIXZhbCB8fCB2YWwgPT0gMCl9XCIgW3ZhbHVlXT1cInZhbFwiPjwvaW9uLXByb2dyZXNzLWJhcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2lvbi1idXR0b24+XHJcbn1cclxuQGVsc2V7XHJcbiAgPGlvbi1idXR0b24gW2lkXT1cImd1aWRcIiBmaWxsPVwib3V0bGluZVwiIFtzaXplXT1cInNpemVcIj4gXHJcbiAgICA8aW9uLWljb24gbmFtZT1cImRvd25sb2FkXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj4gIFxyXG4gICAgPGlvbi1sYWJlbD4ge3tsc3RGaWxlcygpLmxlbmd0aH19IEFycXVpdm9zIDwvaW9uLWxhYmVsPlxyXG4gIDwvaW9uLWJ1dHRvbj5cclxuXHJcbiAgPGlvbi1wb3BvdmVyIFt0cmlnZ2VyXT1cImd1aWRcIiBba2VlcENvbnRlbnRzTW91bnRlZF09XCJ0cnVlXCIgdHJpZ2dlckFjdGlvbj1cImNsaWNrXCI+XHJcbiAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgIDxpb24tY29udGVudCBjbGFzcz1cInAtMCBiZy10cmFuc3BhcmVudFwiPlxyXG4gICAgICAgIDxpb24tbGlzdD5cclxuICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbHN0RmlsZXMoKTsgdHJhY2sgaXRlbTsgbGV0IGkgPSAkaW5kZXg7IGxldCBsID0gJGxhc3QpIHtcclxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nVmFyPVwic3RvcmFnZVNlcnZpY2UuR2V0UHJvZ3Jlc3MoaXRlbSkgYXMgdmFsXCI+XHJcbiAgICAgICAgICAgICAgPGlvbi1pdGVtIHN0eWxlPVwiLS1iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudFwiIGxpbmVzPVwie3tsID8gJ25vbmUnIDogJ2Z1bGwnfX1cIiBidXR0b24gW2RldGFpbF09XCJmYWxzZVwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZG93bmxvYWRcIiAoY2xpY2spPVwiRG93bmxvYWQoaXRlbSlcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPiBcclxuICAgICAgICAgICAgICAgIEBpZiAoRXh0ZW5zaW9uSXNJbWFnZShpdGVtKSkge1xyXG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gW2lkXT1cImd1aWQgKyAnLScgKyBpICsgJy1uZXN0ZWQtcG9wb3ZlcidcIiBuYW1lPVwiaW1hZ2VcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPiBcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPnt7U2FuaXRpemUoaXRlbSl9fTwvaW9uLWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0ICpuZ0lmPVwidmFsICE9IDBcIiBzbG90PVwiZW5kXCIgY2xhc3M9XCJ0ZXh0LXNtXCI+PGI+e3t2YWwgKiAxMDAgfCBudW1iZXIgOiAnMS4yLTInfX0lPC9iPjwvaW9uLXRleHQ+XHJcbiAgICAgICAgICAgICAgPC9pb24taXRlbT5cclxuICAgICAgICAgICAgICA8aW9uLXByb2dyZXNzLWJhciBjbGFzcz1cImgtMCBkZWZhdWx0LXRyYW5zaXRpb25cIiBbbmdDbGFzc109XCJ7J2gtMSc6IHZhbCAhPSAwIH1cIiBbdmFsdWVdPVwidmFsXCI+PC9pb24tcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgICAgICAgIDxpb24tcG9wb3ZlciAqbmdJZj1cIkV4dGVuc2lvbklzSW1hZ2UoaXRlbSlcIiBzaWRlPVwiZW5kXCIgYWxpZ25tZW50PVwiY2VudGVyXCIgW3RyaWdnZXJdPVwiZ3VpZCArICctJyArIGkgKyAnLW5lc3RlZC1wb3BvdmVyJ1wiIFtkaXNtaXNzT25TZWxlY3RdPVwidHJ1ZVwiIHRyaWdnZXJBY3Rpb249XCJjbGlja1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLWNvbnRlbnQgKm5nVmFyPVwiaXNMb2FkaW5nKGl0ZW0pIGFzIGlzTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsb2FkaW5nICAgIFtoaWRkZW5dPVwiIWlzTG9hZGluZ1wiPjwvbG9hZGluZz5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWltZyAgICBbaGlkZGVuXT1cImlzTG9hZGluZ1wiIFtzcmNdPVwiYXBpVXJsICsgaXRlbVwiIChpb25JbWdXaWxsTG9hZCk9XCJTZXRMb2FkaW5nKGl0ZW0pXCIgKGlvbkltZ0RpZExvYWQpPVwiU2V0Tm90TG9hZGluZyhpdGVtKVwiPjwvaW9uLWltZz5cclxuICAgICAgICAgICAgICAgICAgPC9pb24tY29udGVudD5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9pb24tcG9wb3Zlcj5cclxuICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9pb24tbGlzdD5cclxuICAgICAgPC9pb24tY29udGVudD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9pb24tcG9wb3Zlcj5cclxufSJdfQ==
|