@sapphire-ion/framework 1.2.63 → 1.3.2
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 +43 -47
- 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 +37 -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 +62 -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/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 +72 -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 +127 -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 +104 -0
- package/src/lib/components/default/default-table/default-table.component.ts +255 -0
- package/src/lib/components/default/default-table/th-filter/th-filter.component.html +69 -0
- package/src/lib/components/default/default-table/th-filter/th-filter.component.ts +205 -0
- package/src/lib/components/default/default-view/abstract-view.ts +25 -0
- package/src/lib/components/default/default-view/default-view.component.html +111 -0
- package/src/lib/components/default/default-view/default-view.component.ts +56 -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 +62 -0
- package/src/lib/components/default/default-view/view.ts +195 -0
- package/src/lib/components/default/default.module.ts +61 -0
- package/src/lib/components/default-page/default.page.html +63 -0
- package/src/lib/components/default-page/default.page.ts +84 -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 +79 -0
- package/src/lib/components/drawer/drawer-group/drawer-group.component.ts +49 -0
- package/src/lib/components/drawer/drawer.component.html +120 -0
- package/src/lib/components/drawer/drawer.component.ts +157 -0
- package/src/lib/components/drawer/menu.ts +20 -0
- package/src/lib/components/filter/filter.component.html +43 -0
- package/src/lib/components/filter/filter.component.ts +141 -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 +94 -0
- package/src/lib/components/inputs/input-bool/input-bool.component.html +26 -0
- package/src/lib/components/inputs/input-bool/input-bool.component.ts +39 -0
- package/src/lib/components/inputs/input-bool/input-bool.configuration.ts +14 -0
- package/src/lib/components/inputs/input-cep/input-cep.component.html +27 -0
- package/src/lib/components/inputs/input-cep/input-cep.component.ts +41 -0
- package/src/lib/components/inputs/input-cep/input-cep.configuration.ts +4 -0
- package/src/lib/components/inputs/input-color/input-color.component.html +79 -0
- package/src/lib/components/inputs/input-color/input-color.component.ts +544 -0
- package/{lib/components/inputs/input-configuration.d.ts → src/lib/components/inputs/input-configuration.ts} +23 -10
- package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.html +28 -0
- package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.ts +99 -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 +89 -0
- package/src/lib/components/inputs/input-date/input-date.component.ts +269 -0
- package/src/lib/components/inputs/input-date/input-date.configuration.ts +8 -0
- package/src/lib/components/inputs/input-decimal/input-decimal.component.html +32 -0
- package/src/lib/components/inputs/input-decimal/input-decimal.component.ts +283 -0
- package/src/lib/components/inputs/input-decimal/input-decimal.configuration.ts +47 -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 +91 -0
- package/src/lib/components/inputs/input-file/input-file.component.html +56 -0
- package/src/lib/components/inputs/input-file/input-file.component.ts +97 -0
- package/src/lib/components/inputs/input-file/input-file.configuration.ts +25 -0
- package/src/lib/components/inputs/input-icon/fluenticons.ts +3733 -0
- package/src/lib/components/inputs/input-icon/input-icon.component.html +8 -0
- package/src/lib/components/inputs/input-icon/input-icon.component.ts +52 -0
- package/src/lib/components/inputs/input-icon/ionicons.ts +1359 -0
- package/src/lib/components/inputs/input-provider-factory.ts +12 -0
- package/src/lib/components/inputs/input-select/directives/sion-label-template.directive.ts +19 -0
- package/src/lib/components/inputs/input-select/directives/sion-option-template.directive.ts +16 -0
- package/src/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.ts +19 -0
- package/src/lib/components/inputs/input-select/input-select.component.html +176 -0
- package/src/lib/components/inputs/input-select/input-select.component.ts +366 -0
- package/src/lib/components/inputs/input-select/input.select.configuration.ts +300 -0
- package/src/lib/components/inputs/input-string/input-string.component.html +27 -0
- package/src/lib/components/inputs/input-string/input-string.component.ts +31 -0
- package/src/lib/components/inputs/input-string/input-string.configuration.ts +20 -0
- package/src/lib/components/inputs/input-telefone/input-telefone.component.html +29 -0
- package/src/lib/components/inputs/input-telefone/input-telefone.component.ts +63 -0
- package/src/lib/components/inputs/input-telefone/input-telefone.configuration.ts +8 -0
- package/src/lib/components/inputs/input-textarea/input-textarea.component.html +27 -0
- package/src/lib/components/inputs/input-textarea/input-textarea.component.ts +75 -0
- package/src/lib/components/inputs/input-textarea/input-textarea.configuration.ts +7 -0
- package/src/lib/components/inputs/input-type.ts +22 -0
- package/src/lib/components/inputs/input-validators.ts +111 -0
- package/src/lib/components/inputs/inputs.module.ts +74 -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 +96 -0
- package/src/lib/components/main-content/main-content.component.html +145 -0
- package/src/lib/components/main-content/main-content.component.ts +93 -0
- package/src/lib/components/popover/sion-popover/sion-popover.component.html +21 -0
- package/src/lib/components/popover/sion-popover/sion-popover.component.ts +182 -0
- package/src/lib/components/popover/sion-popover.module.ts +12 -0
- package/src/lib/components/sion-card/sion-card.component.html +12 -0
- package/src/lib/components/sion-card/sion-card.component.ts +23 -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 +37 -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.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 +29 -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 +108 -0
- package/src/lib/guards/token.interceptor.ts +28 -0
- package/src/lib/index.ts +191 -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/generic.service.ts +85 -0
- package/src/lib/services/modal-focus-trap.service.ts +65 -0
- package/src/lib/services/navigation-context.service.ts +121 -0
- package/src/lib/services/popover-focus-trap.service.ts +65 -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 +216 -0
- package/src/lib/services/web/api-url-provider.service.ts +48 -0
- package/src/lib/services/web/http.ativo.service.ts +37 -0
- package/src/lib/services/web/http.service.ts +206 -0
- package/src/lib/services/web/storage.service.ts +210 -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 -34
- 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 -79
- 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 -95
- 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 -120
- 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 -216
- package/esm2022/lib/components/default/default-table/th-filter/th-filter.component.mjs +0 -212
- package/esm2022/lib/components/default/default-view/abstract-view.mjs +0 -22
- package/esm2022/lib/components/default/default-view/default-view.component.mjs +0 -76
- package/esm2022/lib/components/default/default-view/header-view/header-view.component.mjs +0 -81
- package/esm2022/lib/components/default/default-view/view.mjs +0 -198
- package/esm2022/lib/components/default/default.module.mjs +0 -98
- package/esm2022/lib/components/default-page/default.page.mjs +0 -75
- 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 -52
- package/esm2022/lib/components/drawer/drawer.component.mjs +0 -156
- package/esm2022/lib/components/drawer/menu.mjs +0 -15
- package/esm2022/lib/components/filter/filter.component.mjs +0 -145
- 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 -85
- package/esm2022/lib/components/inputs/input-bool/input-bool.component.mjs +0 -46
- package/esm2022/lib/components/inputs/input-bool/input-bool.configuration.mjs +0 -16
- package/esm2022/lib/components/inputs/input-cep/input-cep.component.mjs +0 -50
- package/esm2022/lib/components/inputs/input-cep/input-cep.configuration.mjs +0 -4
- package/esm2022/lib/components/inputs/input-color/input-color.component.mjs +0 -481
- package/esm2022/lib/components/inputs/input-configuration.mjs +0 -2
- package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.mjs +0 -116
- 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 -263
- package/esm2022/lib/components/inputs/input-date/input-date.configuration.mjs +0 -11
- package/esm2022/lib/components/inputs/input-decimal/input-decimal.component.mjs +0 -276
- package/esm2022/lib/components/inputs/input-decimal/input-decimal.configuration.mjs +0 -50
- 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 -102
- package/esm2022/lib/components/inputs/input-file/input-file.component.mjs +0 -100
- package/esm2022/lib/components/inputs/input-file/input-file.configuration.mjs +0 -24
- package/esm2022/lib/components/inputs/input-icon/fluenticons.mjs +0 -3734
- package/esm2022/lib/components/inputs/input-icon/input-icon.component.mjs +0 -60
- package/esm2022/lib/components/inputs/input-icon/ionicons.mjs +0 -1360
- package/esm2022/lib/components/inputs/input-provider-factory.mjs +0 -12
- package/esm2022/lib/components/inputs/input-select/directives/sion-label-template.directive.mjs +0 -16
- package/esm2022/lib/components/inputs/input-select/directives/sion-option-template.directive.mjs +0 -16
- package/esm2022/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.mjs +0 -16
- package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +0 -376
- package/esm2022/lib/components/inputs/input-select/input.select.configuration.mjs +0 -233
- package/esm2022/lib/components/inputs/input-string/input-string.component.mjs +0 -41
- package/esm2022/lib/components/inputs/input-string/input-string.configuration.mjs +0 -20
- package/esm2022/lib/components/inputs/input-telefone/input-telefone.component.mjs +0 -74
- package/esm2022/lib/components/inputs/input-telefone/input-telefone.configuration.mjs +0 -12
- package/esm2022/lib/components/inputs/input-textarea/input-textarea.component.mjs +0 -82
- package/esm2022/lib/components/inputs/input-textarea/input-textarea.configuration.mjs +0 -7
- package/esm2022/lib/components/inputs/input-type.mjs +0 -24
- package/esm2022/lib/components/inputs/input-validators.mjs +0 -121
- package/esm2022/lib/components/inputs/inputs.module.mjs +0 -133
- 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 -99
- package/esm2022/lib/components/main-content/main-content.component.mjs +0 -100
- package/esm2022/lib/components/popover/sion-popover/sion-popover.component.mjs +0 -182
- package/esm2022/lib/components/popover/sion-popover.module.mjs +0 -21
- package/esm2022/lib/components/sion-card/sion-card.component.mjs +0 -26
- 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 -38
- 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 -107
- package/esm2022/lib/guards/token.interceptor.mjs +0 -25
- package/esm2022/lib/index.mjs +0 -188
- 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/generic.service.mjs +0 -84
- package/esm2022/lib/services/modal-focus-trap.service.mjs +0 -62
- package/esm2022/lib/services/navigation-context.service.mjs +0 -111
- package/esm2022/lib/services/popover-focus-trap.service.mjs +0 -62
- 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 -190
- package/esm2022/lib/services/web/api-url-provider.service.mjs +0 -29
- package/esm2022/lib/services/web/http.ativo.service.mjs +0 -37
- package/esm2022/lib/services/web/http.service.mjs +0 -184
- package/esm2022/lib/services/web/storage.service.mjs +0 -186
- package/esm2022/public-api.mjs +0 -5
- package/esm2022/sapphire-ion-framework.mjs +0 -5
- package/fesm2022/sapphire-ion-framework.mjs +0 -12491
- 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 -14
- 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 -47
- 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 -40
- 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 -90
- package/lib/components/default/default-table/th-filter/th-filter.component.d.ts +0 -23
- package/lib/components/default/default-view/abstract-view.d.ts +0 -18
- package/lib/components/default/default-view/default-view.component.d.ts +0 -40
- package/lib/components/default/default-view/header-view/header-view.component.d.ts +0 -36
- package/lib/components/default/default-view/view.d.ts +0 -67
- package/lib/components/default/default.module.d.ts +0 -31
- 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 -31
- 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 -40
- package/lib/components/inputs/input-bool/input-bool.component.d.ts +0 -16
- package/lib/components/inputs/input-bool/input-bool.configuration.d.ts +0 -17
- package/lib/components/inputs/input-cep/input-cep.component.d.ts +0 -18
- package/lib/components/inputs/input-cep/input-cep.configuration.d.ts +0 -3
- package/lib/components/inputs/input-color/input-color.component.d.ts +0 -77
- package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.d.ts +0 -19
- 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 -61
- package/lib/components/inputs/input-date/input-date.configuration.d.ts +0 -11
- package/lib/components/inputs/input-decimal/input-decimal.component.d.ts +0 -27
- package/lib/components/inputs/input-decimal/input-decimal.configuration.d.ts +0 -28
- 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 -40
- package/lib/components/inputs/input-file/input-file.component.d.ts +0 -28
- package/lib/components/inputs/input-file/input-file.configuration.d.ts +0 -8
- package/lib/components/inputs/input-icon/fluenticons.d.ts +0 -1
- package/lib/components/inputs/input-icon/input-icon.component.d.ts +0 -20
- package/lib/components/inputs/input-icon/ionicons.d.ts +0 -1
- package/lib/components/inputs/input-provider-factory.d.ts +0 -4
- package/lib/components/inputs/input-select/directives/sion-label-template.directive.d.ts +0 -18
- package/lib/components/inputs/input-select/directives/sion-option-template.directive.d.ts +0 -14
- package/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.d.ts +0 -18
- package/lib/components/inputs/input-select/input-select.component.d.ts +0 -83
- package/lib/components/inputs/input-select/input.select.configuration.d.ts +0 -127
- package/lib/components/inputs/input-string/input-string.component.d.ts +0 -14
- package/lib/components/inputs/input-string/input-string.configuration.d.ts +0 -15
- package/lib/components/inputs/input-telefone/input-telefone.component.d.ts +0 -19
- package/lib/components/inputs/input-telefone/input-telefone.configuration.d.ts +0 -9
- package/lib/components/inputs/input-textarea/input-textarea.component.d.ts +0 -17
- package/lib/components/inputs/input-textarea/input-textarea.configuration.d.ts +0 -4
- package/lib/components/inputs/input-type.d.ts +0 -22
- package/lib/components/inputs/input-validators.d.ts +0 -25
- package/lib/components/inputs/inputs.module.d.ts +0 -33
- 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 -27
- package/lib/components/popover/sion-popover/sion-popover.component.d.ts +0 -43
- package/lib/components/popover/sion-popover.module.d.ts +0 -9
- package/lib/components/sion-card/sion-card.component.d.ts +0 -11
- package/lib/components/stepper/step/step.component.d.ts +0 -15
- package/lib/components/stepper/stepper.component.d.ts +0 -14
- 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 -16
- 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 -118
- 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/generic.service.d.ts +0 -22
- package/lib/services/modal-focus-trap.service.d.ts +0 -13
- package/lib/services/navigation-context.service.d.ts +0 -14
- package/lib/services/popover-focus-trap.service.d.ts +0 -13
- 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 -53
- package/lib/services/web/api-url-provider.service.d.ts +0 -13
- package/lib/services/web/http.ativo.service.d.ts +0 -20
- package/lib/services/web/http.service.d.ts +0 -59
- package/lib/services/web/storage.service.d.ts +0 -46
- package/public-api.d.ts +0 -1
- /package/{themes → src/lib}/compiled-styles.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-cep/input-cep.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-icon/input-icon.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-string/input-string.component.scss → src/lib/components/inputs/input-icon/input-icon.component.scss} +0 -0
- /package/{themes → src/lib}/components/inputs/input-select/input-select.component.scss +0 -0
- /package/{themes/components/inputs/input-telefone/input-telefone.component.scss → src/lib/components/inputs/input-string/input-string.component.scss} +0 -0
- /package/{themes/components/loading/loading.component.scss → src/lib/components/inputs/input-telefone/input-telefone.component.scss} +0 -0
- /package/{themes → 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/sion-card/sion-card.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/popover/sion-popover/sion-popover.component.scss +0 -0
- /package/{themes/components/stepper/stepper.component.scss → src/lib/components/sion-card/sion-card.component.scss} +0 -0
- /package/{themes → src/lib}/components/stepper/step/step.component.scss +0 -0
- /package/{themes/components/tabs/tab/tab.component.scss → src/lib/components/stepper/stepper.component.scss} +0 -0
- /package/{themes/components/text-tooltip/text-tooltip.component.scss → src/lib/components/tabs/tab/tab.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/core.styles.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,99 +0,0 @@
|
|
|
1
|
-
import { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
2
|
-
import { Component, EventEmitter, HostListener, Output, ViewChild } from '@angular/core';
|
|
3
|
-
import { IonicModule, NavController } from '@ionic/angular';
|
|
4
|
-
import { CommonModule } from '@angular/common';
|
|
5
|
-
import { Router } from '@angular/router';
|
|
6
|
-
import { EnvironmentService } from '../../services/environment.service';
|
|
7
|
-
import { ApiUrlProviderService } from '../../services/web/api-url-provider.service';
|
|
8
|
-
import { GenericService } from '../../services/generic.service';
|
|
9
|
-
import { AuthService } from '../../services/auth.service';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@angular/forms";
|
|
12
|
-
import * as i2 from "../../services/generic.service";
|
|
13
|
-
import * as i3 from "@ionic/angular";
|
|
14
|
-
import * as i4 from "../../services/auth.service";
|
|
15
|
-
import * as i5 from "../../services/web/api-url-provider.service";
|
|
16
|
-
import * as i6 from "../../services/environment.service";
|
|
17
|
-
import * as i7 from "@angular/router";
|
|
18
|
-
import * as i8 from "@angular/common";
|
|
19
|
-
export class DefaultLoginComponent {
|
|
20
|
-
constructor(fb, genericService, navController, authService, apiUrlProviderService, coreService, router) {
|
|
21
|
-
this.fb = fb;
|
|
22
|
-
this.genericService = genericService;
|
|
23
|
-
this.navController = navController;
|
|
24
|
-
this.authService = authService;
|
|
25
|
-
this.apiUrlProviderService = apiUrlProviderService;
|
|
26
|
-
this.coreService = coreService;
|
|
27
|
-
this.router = router;
|
|
28
|
-
this.submitted = false;
|
|
29
|
-
this.OnLogin = new EventEmitter();
|
|
30
|
-
this.genericService.SetTitle("Login");
|
|
31
|
-
}
|
|
32
|
-
async ngOnInit() {
|
|
33
|
-
this.CreateForm();
|
|
34
|
-
if (!this.coreService.environment.production) {
|
|
35
|
-
this.frm.patchValue(this.coreService.environment.defaultCredentials);
|
|
36
|
-
}
|
|
37
|
-
const Token = await this.authService.LoadToken();
|
|
38
|
-
if (this.authService.isTokenValid(Token)) {
|
|
39
|
-
this.router.navigate(["/"]);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
CreateForm() {
|
|
43
|
-
this.frm = this.fb.group({
|
|
44
|
-
apelido: [null, Validators.required],
|
|
45
|
-
senha: [null, Validators.required]
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
async Login($event) {
|
|
49
|
-
if ($event && $event.key != 'Enter') {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
if ($event && !this.loginContainer.contains(document.activeElement)) {
|
|
53
|
-
return; // Prevent login if the active element is not within the login container
|
|
54
|
-
}
|
|
55
|
-
this.submitted = true;
|
|
56
|
-
this.loading = true;
|
|
57
|
-
if (!this.frm.valid) {
|
|
58
|
-
this.loading = false;
|
|
59
|
-
this.genericService.PresentToast("Usuario / Senha não informado!");
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
try {
|
|
63
|
-
const Token = await this.authService.Login(this.frm.value);
|
|
64
|
-
this.loading = false;
|
|
65
|
-
this.navController.navigateRoot("/");
|
|
66
|
-
this.genericService.PresentToast("Logado com sucesso!", "checkmark-circle");
|
|
67
|
-
this.OnLogin.emit(Token);
|
|
68
|
-
}
|
|
69
|
-
catch (status) {
|
|
70
|
-
if (status == 401) {
|
|
71
|
-
this.genericService.PresentToast("Usuário / Senha inválido (s)!");
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
this.genericService.PresentToast("Ocorreu um erro ao realizar o login!");
|
|
75
|
-
}
|
|
76
|
-
this.loading = false;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultLoginComponent, deps: [{ token: i1.FormBuilder }, { token: i2.GenericService }, { token: i3.NavController }, { token: i4.AuthService }, { token: i5.ApiUrlProviderService }, { token: i6.EnvironmentService }, { token: i7.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
80
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DefaultLoginComponent, isStandalone: true, selector: "login", outputs: { OnLogin: "OnLogin" }, host: { listeners: { "window:keydown": "Login($event)" } }, viewQueries: [{ propertyName: "loginContainer", first: true, predicate: ["loginContainer"], descendants: true }], ngImport: i0, template: "<!-- <div class=\"size-full flex justify-center items-center relative\">\r\n <div class=\"landscape:w-4/5 portrait:w-full landscape:h-2/3 portrait:h-full landscape:max-w-[60rem] translucid-border landscape:rounded-3xl landscape:backdrop-blur-xl overflow-hidden\">\r\n <div class=\"size-full flex portrait:flex-col\" style=\"background-color: color-mix(in srgb, var(--ion-color-light) 20%, transparent 80%);\">\r\n <div class=\"shrink-0 w-96 portrait:w-full portrait:h-32 h-full p-3\">\r\n <div class=\"rounded-2xl size-full overflow-x-hidden\">\r\n <ng-content class=\"size-full\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"grow flex items-center justify-center h-full py-3 pr-3 portrait:pl-3\">\r\n <div class=\"w-96 h-full flex flex-col items-center justify-center gap-2\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n\r\n <ion-text class=\"text-5xl my-10 portrait:mt-[-5rem]\"> Login </ion-text>\r\n\r\n <ion-card class=\"w-full backdrop-blur-xl\">\r\n <ion-card-content>\r\n <ion-item lines=\"none\" label=\"Senha\" labelPlacement=\"stacked\" class=\"rounded-2xl my-3 w-full\">\r\n <ion-icon name=\"person\" slot=\"start\"></ion-icon>\r\n <ion-input placeholder=\"Usu\u00E1rio / User\" formControlName=\"apelido\"></ion-input>\r\n </ion-item>\r\n </ion-card-content>\r\n </ion-card>\r\n\r\n <ion-card class=\"w-full backdrop-blur-xl\"> \r\n <ion-card-content>\r\n <ion-item lines=\"none\" class=\"rounded-2xl my-3 w-full\">\r\n <ion-icon name=\"lock-closed\" slot=\"start\"></ion-icon>\r\n <ion-input type=\"password\" formControlName=\"senha\" placeholder=\"Senha / Password\">\r\n <ion-input-password-toggle slot=\"end\"></ion-input-password-toggle>\r\n </ion-input>\r\n </ion-item>\r\n </ion-card-content>\r\n </ion-card>\r\n\r\n <div class=\"w-full\">\r\n <a href=\"\">Esqueceu a senha?</a>\r\n </div>\r\n\r\n <div class=\"flex w-full\">\r\n <ion-button class=\"rounded-2xl shadow-xl default-transition w-full\" expand=\"block\" (click)=\"Login()\" [disabled]=\"loading\">\r\n <ion-spinner class=\"default-transition\" [ngClass]=\"{'-translate-x-12 opacity-0 size-0': !loading, 'mr-2' : loading}\" slot=\"start\"></ion-spinner>\r\n <ion-icon class=\"default-transition\" [ngClass]=\"{'-translate-x-12 opacity-0 size-0': loading}\" name=\"enter-outline\" slot=\"start\" ></ion-icon>\r\n <span class=\"default-transition\" > Login </span>\r\n </ion-button>\r\n\r\n <ion-button class=\"shrink-0 aspect-square ml-3\" color=\"dark\" hidden>\r\n <svg class=\"size-8\" slot=\"icon-only\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 32 32\" width=\"64\" height=\"64\"><defs><path id=\"A\" d=\"M44.5 20H24v8.5h11.8C34.7 33.9 30.1 37 24 37c-7.2 0-13-5.8-13-13s5.8-13 13-13c3.1 0 5.9 1.1 8.1 2.9l6.4-6.4C34.6 4.1 29.6 2 24 2 11.8 2 2 11.8 2 24s9.8 22 22 22c11 0 21-8 21-22 0-1.3-.2-2.7-.5-4z\"/></defs><clipPath id=\"B\"><use xlink:href=\"#A\"/></clipPath><g transform=\"matrix(.727273 0 0 .727273 -.954545 -1.45455)\"><path d=\"M0 37V11l17 13z\" clip-path=\"url(#B)\" fill=\"#fbbc05\"/><path d=\"M0 11l17 13 7-6.1L48 14V0H0z\" clip-path=\"url(#B)\" fill=\"#ea4335\"/><path d=\"M0 37l30-23 7.9 1L48 0v48H0z\" clip-path=\"url(#B)\" fill=\"#34a853\"/><path d=\"M48 48L17 24l-4-3 35-10z\" clip-path=\"url(#B)\" fill=\"#4285f4\"/></g></svg>\r\n </ion-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div> -->\r\n\r\n<div #loginContainer class=\"size-full flex justify-center items-center relative portrait:p-4\">\r\n <div class=\"landscape:w-4/5 landscape:h-2/3 landscape:xl:max-w-[60rem] portrait:size-full translucid-border backdrop-blur-xl rounded-3xl overflow-hidden\">\r\n <div class=\"size-full flex portrait:flex-col\" style=\"background-color: color-mix(in srgb, var(--ion-color-light) 20%, transparent 80%);\">\r\n <div class=\"shrink-0 w-96 portrait:w-full portrait:h-40 landscape:h-full p-2\">\r\n <div class=\"size-full rounded-2xl overflow-hidden\">\r\n <ng-content select=\"[slot=logo]\" class=\"size-full\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"shrink size-full flex flex-col items-center justify-center gap-3 px-10 relative\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n <ion-text class=\"h-24 text-5xl\"> Login </ion-text>\r\n\r\n <ion-card class=\"w-full backdrop-blur-xl\">\r\n <ion-card-content>\r\n <ion-item lines=\"none\" label=\"Senha\" labelPlacement=\"stacked\" class=\"rounded-2xl my-3 w-full\">\r\n <ion-icon name=\"person\" slot=\"start\"></ion-icon>\r\n <ion-input placeholder=\"Usu\u00E1rio / User\" formControlName=\"apelido\" (keydown.enter)=\"Login()\"></ion-input>\r\n </ion-item>\r\n </ion-card-content>\r\n </ion-card>\r\n\r\n <ion-card class=\"w-full backdrop-blur-xl\"> \r\n <ion-card-content>\r\n <ion-item lines=\"none\" class=\"rounded-2xl my-3 w-full\">\r\n <ion-icon name=\"lock-closed\" slot=\"start\"></ion-icon>\r\n <ion-input type=\"password\" formControlName=\"senha\" placeholder=\"Senha / Password\" (keydown.enter)=\"Login()\">\r\n <ion-input-password-toggle slot=\"end\"></ion-input-password-toggle>\r\n </ion-input>\r\n </ion-item>\r\n </ion-card-content>\r\n </ion-card>\r\n\r\n <div class=\"flex w-full\">\r\n <ion-button class=\"transition-all rounded-2xl shadow-xl default-transition w-full\" expand=\"block\" (click)=\"Login()\" [disabled]=\"loading\">\r\n <ion-spinner class=\"default-transition\" [ngClass]=\"{'-translate-x-12 opacity-0 size-0': !loading, 'mr-2' : loading}\" slot=\"start\"></ion-spinner>\r\n <ion-icon class=\"default-transition\" [ngClass]=\"{'-translate-x-12 opacity-0 size-0': loading}\" name=\"enter-outline\" slot=\"start\" ></ion-icon>\r\n <span class=\"default-transition\"> Login </span>\r\n </ion-button>\r\n\r\n <!-- <ion-button class=\"shrink-0 aspect-square ml-3\" color=\"dark\" hidden>\r\n <svg class=\"size-8\" slot=\"icon-only\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 32 32\" width=\"64\" height=\"64\"><defs><path id=\"A\" d=\"M44.5 20H24v8.5h11.8C34.7 33.9 30.1 37 24 37c-7.2 0-13-5.8-13-13s5.8-13 13-13c3.1 0 5.9 1.1 8.1 2.9l6.4-6.4C34.6 4.1 29.6 2 24 2 11.8 2 2 11.8 2 24s9.8 22 22 22c11 0 21-8 21-22 0-1.3-.2-2.7-.5-4z\"/></defs><clipPath id=\"B\"><use xlink:href=\"#A\"/></clipPath><g transform=\"matrix(.727273 0 0 .727273 -.954545 -1.45455)\"><path d=\"M0 37V11l17 13z\" clip-path=\"url(#B)\" fill=\"#fbbc05\"/><path d=\"M0 11l17 13 7-6.1L48 14V0H0z\" clip-path=\"url(#B)\" fill=\"#ea4335\"/><path d=\"M0 37l30-23 7.9 1L48 0v48H0z\" clip-path=\"url(#B)\" fill=\"#34a853\"/><path d=\"M48 48L17 24l-4-3 35-10z\" clip-path=\"url(#B)\" fill=\"#4285f4\"/></g></svg>\r\n </ion-button> -->\r\n </div>\r\n\r\n <div class=\"w-full\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: ["ion-card{margin:0;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);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) 15%,transparent 93%);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}ion-card ion-card-content{padding:0}ion-card:hover{background:color-mix(in srgb,var(--ion-color-dark) 15%,transparent 93%)}ion-card.submitted.invalid{border-color:color-mix(in srgb,var(--ion-color-danger) 75%,transparent 25%)!important}ion-card ion-card-content{width:100%;height:100%;background-color:transparent;padding:0}ion-item{--background: transparent;margin:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i3.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: 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.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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.IonInputPasswordToggle, selector: "ion-input-password-toggle", inputs: ["color", "hideIcon", "mode", "showIcon"] }, { 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.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { 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: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
81
|
-
}
|
|
82
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DefaultLoginComponent, decorators: [{
|
|
83
|
-
type: Component,
|
|
84
|
-
args: [{ standalone: true, imports: [
|
|
85
|
-
CommonModule,
|
|
86
|
-
IonicModule,
|
|
87
|
-
FormsModule,
|
|
88
|
-
ReactiveFormsModule,
|
|
89
|
-
], selector: 'login', template: "<!-- <div class=\"size-full flex justify-center items-center relative\">\r\n <div class=\"landscape:w-4/5 portrait:w-full landscape:h-2/3 portrait:h-full landscape:max-w-[60rem] translucid-border landscape:rounded-3xl landscape:backdrop-blur-xl overflow-hidden\">\r\n <div class=\"size-full flex portrait:flex-col\" style=\"background-color: color-mix(in srgb, var(--ion-color-light) 20%, transparent 80%);\">\r\n <div class=\"shrink-0 w-96 portrait:w-full portrait:h-32 h-full p-3\">\r\n <div class=\"rounded-2xl size-full overflow-x-hidden\">\r\n <ng-content class=\"size-full\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"grow flex items-center justify-center h-full py-3 pr-3 portrait:pl-3\">\r\n <div class=\"w-96 h-full flex flex-col items-center justify-center gap-2\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n\r\n <ion-text class=\"text-5xl my-10 portrait:mt-[-5rem]\"> Login </ion-text>\r\n\r\n <ion-card class=\"w-full backdrop-blur-xl\">\r\n <ion-card-content>\r\n <ion-item lines=\"none\" label=\"Senha\" labelPlacement=\"stacked\" class=\"rounded-2xl my-3 w-full\">\r\n <ion-icon name=\"person\" slot=\"start\"></ion-icon>\r\n <ion-input placeholder=\"Usu\u00E1rio / User\" formControlName=\"apelido\"></ion-input>\r\n </ion-item>\r\n </ion-card-content>\r\n </ion-card>\r\n\r\n <ion-card class=\"w-full backdrop-blur-xl\"> \r\n <ion-card-content>\r\n <ion-item lines=\"none\" class=\"rounded-2xl my-3 w-full\">\r\n <ion-icon name=\"lock-closed\" slot=\"start\"></ion-icon>\r\n <ion-input type=\"password\" formControlName=\"senha\" placeholder=\"Senha / Password\">\r\n <ion-input-password-toggle slot=\"end\"></ion-input-password-toggle>\r\n </ion-input>\r\n </ion-item>\r\n </ion-card-content>\r\n </ion-card>\r\n\r\n <div class=\"w-full\">\r\n <a href=\"\">Esqueceu a senha?</a>\r\n </div>\r\n\r\n <div class=\"flex w-full\">\r\n <ion-button class=\"rounded-2xl shadow-xl default-transition w-full\" expand=\"block\" (click)=\"Login()\" [disabled]=\"loading\">\r\n <ion-spinner class=\"default-transition\" [ngClass]=\"{'-translate-x-12 opacity-0 size-0': !loading, 'mr-2' : loading}\" slot=\"start\"></ion-spinner>\r\n <ion-icon class=\"default-transition\" [ngClass]=\"{'-translate-x-12 opacity-0 size-0': loading}\" name=\"enter-outline\" slot=\"start\" ></ion-icon>\r\n <span class=\"default-transition\" > Login </span>\r\n </ion-button>\r\n\r\n <ion-button class=\"shrink-0 aspect-square ml-3\" color=\"dark\" hidden>\r\n <svg class=\"size-8\" slot=\"icon-only\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 32 32\" width=\"64\" height=\"64\"><defs><path id=\"A\" d=\"M44.5 20H24v8.5h11.8C34.7 33.9 30.1 37 24 37c-7.2 0-13-5.8-13-13s5.8-13 13-13c3.1 0 5.9 1.1 8.1 2.9l6.4-6.4C34.6 4.1 29.6 2 24 2 11.8 2 2 11.8 2 24s9.8 22 22 22c11 0 21-8 21-22 0-1.3-.2-2.7-.5-4z\"/></defs><clipPath id=\"B\"><use xlink:href=\"#A\"/></clipPath><g transform=\"matrix(.727273 0 0 .727273 -.954545 -1.45455)\"><path d=\"M0 37V11l17 13z\" clip-path=\"url(#B)\" fill=\"#fbbc05\"/><path d=\"M0 11l17 13 7-6.1L48 14V0H0z\" clip-path=\"url(#B)\" fill=\"#ea4335\"/><path d=\"M0 37l30-23 7.9 1L48 0v48H0z\" clip-path=\"url(#B)\" fill=\"#34a853\"/><path d=\"M48 48L17 24l-4-3 35-10z\" clip-path=\"url(#B)\" fill=\"#4285f4\"/></g></svg>\r\n </ion-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div> -->\r\n\r\n<div #loginContainer class=\"size-full flex justify-center items-center relative portrait:p-4\">\r\n <div class=\"landscape:w-4/5 landscape:h-2/3 landscape:xl:max-w-[60rem] portrait:size-full translucid-border backdrop-blur-xl rounded-3xl overflow-hidden\">\r\n <div class=\"size-full flex portrait:flex-col\" style=\"background-color: color-mix(in srgb, var(--ion-color-light) 20%, transparent 80%);\">\r\n <div class=\"shrink-0 w-96 portrait:w-full portrait:h-40 landscape:h-full p-2\">\r\n <div class=\"size-full rounded-2xl overflow-hidden\">\r\n <ng-content select=\"[slot=logo]\" class=\"size-full\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"shrink size-full flex flex-col items-center justify-center gap-3 px-10 relative\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n <ion-text class=\"h-24 text-5xl\"> Login </ion-text>\r\n\r\n <ion-card class=\"w-full backdrop-blur-xl\">\r\n <ion-card-content>\r\n <ion-item lines=\"none\" label=\"Senha\" labelPlacement=\"stacked\" class=\"rounded-2xl my-3 w-full\">\r\n <ion-icon name=\"person\" slot=\"start\"></ion-icon>\r\n <ion-input placeholder=\"Usu\u00E1rio / User\" formControlName=\"apelido\" (keydown.enter)=\"Login()\"></ion-input>\r\n </ion-item>\r\n </ion-card-content>\r\n </ion-card>\r\n\r\n <ion-card class=\"w-full backdrop-blur-xl\"> \r\n <ion-card-content>\r\n <ion-item lines=\"none\" class=\"rounded-2xl my-3 w-full\">\r\n <ion-icon name=\"lock-closed\" slot=\"start\"></ion-icon>\r\n <ion-input type=\"password\" formControlName=\"senha\" placeholder=\"Senha / Password\" (keydown.enter)=\"Login()\">\r\n <ion-input-password-toggle slot=\"end\"></ion-input-password-toggle>\r\n </ion-input>\r\n </ion-item>\r\n </ion-card-content>\r\n </ion-card>\r\n\r\n <div class=\"flex w-full\">\r\n <ion-button class=\"transition-all rounded-2xl shadow-xl default-transition w-full\" expand=\"block\" (click)=\"Login()\" [disabled]=\"loading\">\r\n <ion-spinner class=\"default-transition\" [ngClass]=\"{'-translate-x-12 opacity-0 size-0': !loading, 'mr-2' : loading}\" slot=\"start\"></ion-spinner>\r\n <ion-icon class=\"default-transition\" [ngClass]=\"{'-translate-x-12 opacity-0 size-0': loading}\" name=\"enter-outline\" slot=\"start\" ></ion-icon>\r\n <span class=\"default-transition\"> Login </span>\r\n </ion-button>\r\n\r\n <!-- <ion-button class=\"shrink-0 aspect-square ml-3\" color=\"dark\" hidden>\r\n <svg class=\"size-8\" slot=\"icon-only\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 32 32\" width=\"64\" height=\"64\"><defs><path id=\"A\" d=\"M44.5 20H24v8.5h11.8C34.7 33.9 30.1 37 24 37c-7.2 0-13-5.8-13-13s5.8-13 13-13c3.1 0 5.9 1.1 8.1 2.9l6.4-6.4C34.6 4.1 29.6 2 24 2 11.8 2 2 11.8 2 24s9.8 22 22 22c11 0 21-8 21-22 0-1.3-.2-2.7-.5-4z\"/></defs><clipPath id=\"B\"><use xlink:href=\"#A\"/></clipPath><g transform=\"matrix(.727273 0 0 .727273 -.954545 -1.45455)\"><path d=\"M0 37V11l17 13z\" clip-path=\"url(#B)\" fill=\"#fbbc05\"/><path d=\"M0 11l17 13 7-6.1L48 14V0H0z\" clip-path=\"url(#B)\" fill=\"#ea4335\"/><path d=\"M0 37l30-23 7.9 1L48 0v48H0z\" clip-path=\"url(#B)\" fill=\"#34a853\"/><path d=\"M48 48L17 24l-4-3 35-10z\" clip-path=\"url(#B)\" fill=\"#4285f4\"/></g></svg>\r\n </ion-button> -->\r\n </div>\r\n\r\n <div class=\"w-full\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: ["ion-card{margin:0;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);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) 15%,transparent 93%);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}ion-card ion-card-content{padding:0}ion-card:hover{background:color-mix(in srgb,var(--ion-color-dark) 15%,transparent 93%)}ion-card.submitted.invalid{border-color:color-mix(in srgb,var(--ion-color-danger) 75%,transparent 25%)!important}ion-card ion-card-content{width:100%;height:100%;background-color:transparent;padding:0}ion-item{--background: transparent;margin:0}\n"] }]
|
|
90
|
-
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.GenericService }, { type: i3.NavController }, { type: i4.AuthService }, { type: i5.ApiUrlProviderService }, { type: i6.EnvironmentService }, { type: i7.Router }], propDecorators: { OnLogin: [{
|
|
91
|
-
type: Output
|
|
92
|
-
}], loginContainer: [{
|
|
93
|
-
type: ViewChild,
|
|
94
|
-
args: ['loginContainer']
|
|
95
|
-
}], Login: [{
|
|
96
|
-
type: HostListener,
|
|
97
|
-
args: ['window:keydown', ['$event']]
|
|
98
|
-
}] } });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFhLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7OztBQWMxRCxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQ1UsRUFBZSxFQUNmLGNBQThCLEVBQzlCLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3pCLHFCQUE0QyxFQUM1QyxXQUErQixFQUM5QixNQUFjO1FBTmQsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixnQkFBVyxHQUFY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QUM7WUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQzsrR0F2RVUscUJBQXFCO21HQUFyQixxQkFBcUIsZ1JDdkJsQyw0NU9BdUdNLHNzQ0R6RkYsWUFBWSxnT0FDWixXQUFXLHM3REFDWCxXQUFXLGtTQUNYLG1CQUFtQjs7NEZBTVYscUJBQXFCO2tCQVpqQyxTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxtQkFBbUI7cUJBQ3BCLFlBQ1MsT0FBTzs2UEF5Q1AsT0FBTztzQkFBaEIsTUFBTTtnQkFDc0IsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBR3JCLEtBQUs7c0JBRFYsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElvbmljTW9kdWxlLCBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVVybFByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dlYi9hcGktdXJsLXByb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dlbmVyaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgSW9uaWNNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgXSxcclxuICBzZWxlY3RvcjogJ2xvZ2luJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbG9naW4uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xvZ2luLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0TG9naW5Db21wb25lbnQgIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgZ2VuZXJpY1NlcnZpY2U6IEdlbmVyaWNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuYXZDb250cm9sbGVyOiBOYXZDb250cm9sbGVyLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYXBpVXJsUHJvdmlkZXJTZXJ2aWNlOiBBcGlVcmxQcm92aWRlclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgY29yZVNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHsgXHJcbiAgICB0aGlzLmdlbmVyaWNTZXJ2aWNlLlNldFRpdGxlKFwiTG9naW5cIik7XHJcbiAgfVxyXG4gIFxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5DcmVhdGVGb3JtKCk7XHJcblxyXG4gICAgaWYoIXRoaXMuY29yZVNlcnZpY2UuZW52aXJvbm1lbnQucHJvZHVjdGlvbil7XHJcbiAgICAgIHRoaXMuZnJtLnBhdGNoVmFsdWUodGhpcy5jb3JlU2VydmljZS5lbnZpcm9ubWVudC5kZWZhdWx0Q3JlZGVudGlhbHMpOyBcclxuICAgIH1cclxuICAgIGNvbnN0IFRva2VuID0gYXdhaXQgdGhpcy5hdXRoU2VydmljZS5Mb2FkVG9rZW4oKVxyXG4gICAgaWYodGhpcy5hdXRoU2VydmljZS5pc1Rva2VuVmFsaWQoVG9rZW4pKXtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL1wiXSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIGZybTogRm9ybUdyb3VwO1xyXG4gIENyZWF0ZUZvcm0oKTogdm9pZHtcclxuICAgIHRoaXMuZnJtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGFwZWxpZG8gOiBbbnVsbCAsVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIHNlbmhhICAgOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZGluZzogYm9vbGVhbjtcclxuICBzdWJtaXR0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIE9uTG9naW46IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQFZpZXdDaGlsZCgnbG9naW5Db250YWluZXInKSBsb2dpbkNvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBhc3luYyBMb2dpbigkZXZlbnQ/OiBLZXlib2FyZEV2ZW50KTogUHJvbWlzZTx2b2lkPntcclxuICAgIGlmKCRldmVudCAmJiAkZXZlbnQua2V5ICE9ICdFbnRlcicpeyByZXR1cm47IH1cclxuICAgIGlmKCRldmVudCAmJiAhdGhpcy5sb2dpbkNvbnRhaW5lci5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSl7XHJcbiAgICAgIHJldHVybjsgLy8gUHJldmVudCBsb2dpbiBpZiB0aGUgYWN0aXZlIGVsZW1lbnQgaXMgbm90IHdpdGhpbiB0aGUgbG9naW4gY29udGFpbmVyXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5sb2FkaW5nICAgPSB0cnVlO1xyXG4gICBcclxuICAgIGlmKCF0aGlzLmZybS52YWxpZCl7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmdlbmVyaWNTZXJ2aWNlLlByZXNlbnRUb2FzdChcIlVzdWFyaW8gLyBTZW5oYSBuw6NvIGluZm9ybWFkbyFcIik7IHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0cnl7XHJcbiAgICAgIGNvbnN0IFRva2VuID0gYXdhaXQgdGhpcy5hdXRoU2VydmljZS5Mb2dpbih0aGlzLmZybS52YWx1ZSk7XHJcblxyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlUm9vdChcIi9cIik7XHJcbiAgICAgIHRoaXMuZ2VuZXJpY1NlcnZpY2UuUHJlc2VudFRvYXN0KFwiTG9nYWRvIGNvbSBzdWNlc3NvIVwiLCBcImNoZWNrbWFyay1jaXJjbGVcIik7XHJcbiAgICAgIHRoaXMuT25Mb2dpbi5lbWl0KFRva2VuKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChzdGF0dXMpe1xyXG4gICAgICBpZihzdGF0dXMgPT0gNDAxKXtcclxuICAgICAgICB0aGlzLmdlbmVyaWNTZXJ2aWNlLlByZXNlbnRUb2FzdChcIlVzdcOhcmlvIC8gU2VuaGEgaW52w6FsaWRvIChzKSFcIik7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMuZ2VuZXJpY1NlcnZpY2UuUHJlc2VudFRvYXN0KFwiT2NvcnJldSB1bSBlcnJvIGFvIHJlYWxpemFyIG8gbG9naW4hXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8IS0tIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgcmVsYXRpdmVcIj5cclxuICA8ZGl2IGNsYXNzPVwibGFuZHNjYXBlOnctNC81IHBvcnRyYWl0OnctZnVsbCBsYW5kc2NhcGU6aC0yLzMgcG9ydHJhaXQ6aC1mdWxsIGxhbmRzY2FwZTptYXgtdy1bNjByZW1dIHRyYW5zbHVjaWQtYm9yZGVyIGxhbmRzY2FwZTpyb3VuZGVkLTN4bCBsYW5kc2NhcGU6YmFja2Ryb3AtYmx1ci14bCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgZmxleCBwb3J0cmFpdDpmbGV4LWNvbFwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWlvbi1jb2xvci1saWdodCkgMjAlLCB0cmFuc3BhcmVudCA4MCUpO1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2hyaW5rLTAgdy05NiBwb3J0cmFpdDp3LWZ1bGwgcG9ydHJhaXQ6aC0zMiBoLWZ1bGwgcC0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdW5kZWQtMnhsIHNpemUtZnVsbCBvdmVyZmxvdy14LWhpZGRlblwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRlbnQgY2xhc3M9XCJzaXplLWZ1bGxcIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JvdyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBoLWZ1bGwgcHktMyBwci0zIHBvcnRyYWl0OnBsLTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy05NiBoLWZ1bGwgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTJcIiAqbmdJZj1cImZybVwiIFtmb3JtR3JvdXBdPVwiZnJtXCI+XHJcblxyXG4gICAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwidGV4dC01eGwgbXktMTAgcG9ydHJhaXQ6bXQtWy01cmVtXVwiPiBMb2dpbiA8L2lvbi10ZXh0PlxyXG5cclxuICAgICAgICAgIDxpb24tY2FyZCBjbGFzcz1cInctZnVsbCBiYWNrZHJvcC1ibHVyLXhsXCI+XHJcbiAgICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgIDxpb24taXRlbSBsaW5lcz1cIm5vbmVcIiBsYWJlbD1cIlNlbmhhXCIgbGFiZWxQbGFjZW1lbnQ9XCJzdGFja2VkXCIgY2xhc3M9XCJyb3VuZGVkLTJ4bCBteS0zIHctZnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJwZXJzb25cIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1pbnB1dCBwbGFjZWhvbGRlcj1cIlVzdcOhcmlvIC8gVXNlclwiIGZvcm1Db250cm9sTmFtZT1cImFwZWxpZG9cIj48L2lvbi1pbnB1dD5cclxuICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxyXG4gICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICA8L2lvbi1jYXJkPlxyXG5cclxuICAgICAgICAgIDxpb24tY2FyZCBjbGFzcz1cInctZnVsbCBiYWNrZHJvcC1ibHVyLXhsXCI+IFxyXG4gICAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgICA8aW9uLWl0ZW0gbGluZXM9XCJub25lXCIgY2xhc3M9XCJyb3VuZGVkLTJ4bCBteS0zIHctZnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJsb2NrLWNsb3NlZFwiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGZvcm1Db250cm9sTmFtZT1cInNlbmhhXCIgcGxhY2Vob2xkZXI9XCJTZW5oYSAvIFBhc3N3b3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24taW5wdXQtcGFzc3dvcmQtdG9nZ2xlIHNsb3Q9XCJlbmRcIj48L2lvbi1pbnB1dC1wYXNzd29yZC10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1pbnB1dD5cclxuICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxyXG4gICAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICA8L2lvbi1jYXJkPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIj5cclxuICAgICAgICAgICAgPGEgaHJlZj1cIlwiPkVzcXVlY2V1IGEgc2VuaGE/PC9hPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsXCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGNsYXNzPVwicm91bmRlZC0yeGwgc2hhZG93LXhsIGRlZmF1bHQtdHJhbnNpdGlvbiB3LWZ1bGxcIiBleHBhbmQ9XCJibG9ja1wiIChjbGljayk9XCJMb2dpbigpXCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICA8aW9uLXNwaW5uZXIgY2xhc3M9XCJkZWZhdWx0LXRyYW5zaXRpb25cIiBbbmdDbGFzc109XCJ7Jy10cmFuc2xhdGUteC0xMiBvcGFjaXR5LTAgc2l6ZS0wJzogIWxvYWRpbmcsICdtci0yJyA6IGxvYWRpbmd9XCIgc2xvdD1cInN0YXJ0XCI+PC9pb24tc3Bpbm5lcj5cclxuICAgICAgICAgICAgICA8aW9uLWljb24gICAgY2xhc3M9XCJkZWZhdWx0LXRyYW5zaXRpb25cIiBbbmdDbGFzc109XCJ7Jy10cmFuc2xhdGUteC0xMiBvcGFjaXR5LTAgc2l6ZS0wJzogIGxvYWRpbmd9XCIgbmFtZT1cImVudGVyLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIiA+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlZmF1bHQtdHJhbnNpdGlvblwiID4gTG9naW4gPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cInNocmluay0wIGFzcGVjdC1zcXVhcmUgbWwtM1wiIGNvbG9yPVwiZGFya1wiIGhpZGRlbj5cclxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwic2l6ZS04XCIgc2xvdD1cImljb24tb25seVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCIgd2lkdGg9XCI2NFwiIGhlaWdodD1cIjY0XCI+PGRlZnM+PHBhdGggaWQ9XCJBXCIgZD1cIk00NC41IDIwSDI0djguNWgxMS44QzM0LjcgMzMuOSAzMC4xIDM3IDI0IDM3Yy03LjIgMC0xMy01LjgtMTMtMTNzNS44LTEzIDEzLTEzYzMuMSAwIDUuOSAxLjEgOC4xIDIuOWw2LjQtNi40QzM0LjYgNC4xIDI5LjYgMiAyNCAyIDExLjggMiAyIDExLjggMiAyNHM5LjggMjIgMjIgMjJjMTEgMCAyMS04IDIxLTIyIDAtMS4zLS4yLTIuNy0uNS00elwiLz48L2RlZnM+PGNsaXBQYXRoIGlkPVwiQlwiPjx1c2UgeGxpbms6aHJlZj1cIiNBXCIvPjwvY2xpcFBhdGg+PGcgdHJhbnNmb3JtPVwibWF0cml4KC43MjcyNzMgMCAwIC43MjcyNzMgLS45NTQ1NDUgLTEuNDU0NTUpXCI+PHBhdGggZD1cIk0wIDM3VjExbDE3IDEzelwiIGNsaXAtcGF0aD1cInVybCgjQilcIiBmaWxsPVwiI2ZiYmMwNVwiLz48cGF0aCBkPVwiTTAgMTFsMTcgMTMgNy02LjFMNDggMTRWMEgwelwiIGNsaXAtcGF0aD1cInVybCgjQilcIiBmaWxsPVwiI2VhNDMzNVwiLz48cGF0aCBkPVwiTTAgMzdsMzAtMjMgNy45IDFMNDggMHY0OEgwelwiIGNsaXAtcGF0aD1cInVybCgjQilcIiBmaWxsPVwiIzM0YTg1M1wiLz48cGF0aCBkPVwiTTQ4IDQ4TDE3IDI0bC00LTMgMzUtMTB6XCIgY2xpcC1wYXRoPVwidXJsKCNCKVwiIGZpbGw9XCIjNDI4NWY0XCIvPjwvZz48L3N2Zz5cclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiAtLT5cclxuXHJcbjxkaXYgI2xvZ2luQ29udGFpbmVyIGNsYXNzPVwic2l6ZS1mdWxsIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIHJlbGF0aXZlIHBvcnRyYWl0OnAtNFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJsYW5kc2NhcGU6dy00LzUgbGFuZHNjYXBlOmgtMi8zIGxhbmRzY2FwZTp4bDptYXgtdy1bNjByZW1dIHBvcnRyYWl0OnNpemUtZnVsbCB0cmFuc2x1Y2lkLWJvcmRlciBiYWNrZHJvcC1ibHVyLXhsIHJvdW5kZWQtM3hsIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNpemUtZnVsbCBmbGV4IHBvcnRyYWl0OmZsZXgtY29sXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0taW9uLWNvbG9yLWxpZ2h0KSAyMCUsIHRyYW5zcGFyZW50IDgwJSk7XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzaHJpbmstMCB3LTk2IHBvcnRyYWl0OnctZnVsbCBwb3J0cmFpdDpoLTQwIGxhbmRzY2FwZTpoLWZ1bGwgcC0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNpemUtZnVsbCByb3VuZGVkLTJ4bCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzbG90PWxvZ29dXCIgY2xhc3M9XCJzaXplLWZ1bGxcIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2hyaW5rIHNpemUtZnVsbCBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMyBweC0xMCByZWxhdGl2ZVwiICpuZ0lmPVwiZnJtXCIgW2Zvcm1Hcm91cF09XCJmcm1cIj5cclxuICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJoLTI0IHRleHQtNXhsXCI+IExvZ2luIDwvaW9uLXRleHQ+XHJcblxyXG4gICAgICAgIDxpb24tY2FyZCBjbGFzcz1cInctZnVsbCBiYWNrZHJvcC1ibHVyLXhsXCI+XHJcbiAgICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgPGlvbi1pdGVtIGxpbmVzPVwibm9uZVwiIGxhYmVsPVwiU2VuaGFcIiBsYWJlbFBsYWNlbWVudD1cInN0YWNrZWRcIiBjbGFzcz1cInJvdW5kZWQtMnhsIG15LTMgdy1mdWxsXCI+XHJcbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJwZXJzb25cIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgIDxpb24taW5wdXQgcGxhY2Vob2xkZXI9XCJVc3XDoXJpbyAvIFVzZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJhcGVsaWRvXCIgKGtleWRvd24uZW50ZXIpPVwiTG9naW4oKVwiPjwvaW9uLWlucHV0PlxyXG4gICAgICAgICAgICA8L2lvbi1pdGVtPlxyXG4gICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxyXG4gICAgICAgIDwvaW9uLWNhcmQ+XHJcblxyXG4gICAgICAgIDxpb24tY2FyZCBjbGFzcz1cInctZnVsbCBiYWNrZHJvcC1ibHVyLXhsXCI+IFxyXG4gICAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxpb24taXRlbSBsaW5lcz1cIm5vbmVcIiBjbGFzcz1cInJvdW5kZWQtMnhsIG15LTMgdy1mdWxsXCI+XHJcbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJsb2NrLWNsb3NlZFwiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgPGlvbi1pbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBmb3JtQ29udHJvbE5hbWU9XCJzZW5oYVwiIHBsYWNlaG9sZGVyPVwiU2VuaGEgLyBQYXNzd29yZFwiIChrZXlkb3duLmVudGVyKT1cIkxvZ2luKClcIj5cclxuICAgICAgICAgICAgICAgIDxpb24taW5wdXQtcGFzc3dvcmQtdG9nZ2xlIHNsb3Q9XCJlbmRcIj48L2lvbi1pbnB1dC1wYXNzd29yZC10b2dnbGU+XHJcbiAgICAgICAgICAgICAgPC9pb24taW5wdXQ+XHJcbiAgICAgICAgICAgIDwvaW9uLWl0ZW0+XHJcbiAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9pb24tY2FyZD5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsXCI+XHJcbiAgICAgICAgICA8aW9uLWJ1dHRvbiBjbGFzcz1cInRyYW5zaXRpb24tYWxsIHJvdW5kZWQtMnhsIHNoYWRvdy14bCBkZWZhdWx0LXRyYW5zaXRpb24gdy1mdWxsXCIgZXhwYW5kPVwiYmxvY2tcIiAoY2xpY2spPVwiTG9naW4oKVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgIDxpb24tc3Bpbm5lciBjbGFzcz1cImRlZmF1bHQtdHJhbnNpdGlvblwiIFtuZ0NsYXNzXT1cInsnLXRyYW5zbGF0ZS14LTEyIG9wYWNpdHktMCBzaXplLTAnOiAhbG9hZGluZywgJ21yLTInIDogbG9hZGluZ31cIiBzbG90PVwic3RhcnRcIj48L2lvbi1zcGlubmVyPlxyXG4gICAgICAgICAgICA8aW9uLWljb24gICAgY2xhc3M9XCJkZWZhdWx0LXRyYW5zaXRpb25cIiBbbmdDbGFzc109XCJ7Jy10cmFuc2xhdGUteC0xMiBvcGFjaXR5LTAgc2l6ZS0wJzogIGxvYWRpbmd9XCIgbmFtZT1cImVudGVyLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIiA+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZWZhdWx0LXRyYW5zaXRpb25cIj4gTG9naW4gPC9zcGFuPlxyXG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDwhLS0gPGlvbi1idXR0b24gY2xhc3M9XCJzaHJpbmstMCBhc3BlY3Qtc3F1YXJlIG1sLTNcIiBjb2xvcj1cImRhcmtcIiBoaWRkZW4+XHJcbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJzaXplLThcIiBzbG90PVwiaWNvbi1vbmx5XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiB3aWR0aD1cIjY0XCIgaGVpZ2h0PVwiNjRcIj48ZGVmcz48cGF0aCBpZD1cIkFcIiBkPVwiTTQ0LjUgMjBIMjR2OC41aDExLjhDMzQuNyAzMy45IDMwLjEgMzcgMjQgMzdjLTcuMiAwLTEzLTUuOC0xMy0xM3M1LjgtMTMgMTMtMTNjMy4xIDAgNS45IDEuMSA4LjEgMi45bDYuNC02LjRDMzQuNiA0LjEgMjkuNiAyIDI0IDIgMTEuOCAyIDIgMTEuOCAyIDI0czkuOCAyMiAyMiAyMmMxMSAwIDIxLTggMjEtMjIgMC0xLjMtLjItMi43LS41LTR6XCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9XCJCXCI+PHVzZSB4bGluazpocmVmPVwiI0FcIi8+PC9jbGlwUGF0aD48ZyB0cmFuc2Zvcm09XCJtYXRyaXgoLjcyNzI3MyAwIDAgLjcyNzI3MyAtLjk1NDU0NSAtMS40NTQ1NSlcIj48cGF0aCBkPVwiTTAgMzdWMTFsMTcgMTN6XCIgY2xpcC1wYXRoPVwidXJsKCNCKVwiIGZpbGw9XCIjZmJiYzA1XCIvPjxwYXRoIGQ9XCJNMCAxMWwxNyAxMyA3LTYuMUw0OCAxNFYwSDB6XCIgY2xpcC1wYXRoPVwidXJsKCNCKVwiIGZpbGw9XCIjZWE0MzM1XCIvPjxwYXRoIGQ9XCJNMCAzN2wzMC0yMyA3LjkgMUw0OCAwdjQ4SDB6XCIgY2xpcC1wYXRoPVwidXJsKCNCKVwiIGZpbGw9XCIjMzRhODUzXCIvPjxwYXRoIGQ9XCJNNDggNDhMMTcgMjRsLTQtMyAzNS0xMHpcIiBjbGlwLXBhdGg9XCJ1cmwoI0IpXCIgZmlsbD1cIiM0Mjg1ZjRcIi8+PC9nPjwvc3ZnPlxyXG4gICAgICAgICAgPC9pb24tYnV0dG9uPiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9ZW5kXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, Input, ViewChild } from '@angular/core';
|
|
3
|
-
import { IonicModule } from '@ionic/angular';
|
|
4
|
-
import { RouterLinkWithHref } from '@angular/router';
|
|
5
|
-
import { Preferences } from '@capacitor/preferences';
|
|
6
|
-
import { DrawerComponent } from '../drawer/drawer.component';
|
|
7
|
-
import { AuthService } from '../../services/auth.service';
|
|
8
|
-
import { SIonPopoverModule } from '../popover/sion-popover.module';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "../../services/auth.service";
|
|
11
|
-
import * as i2 from "@angular/common";
|
|
12
|
-
import * as i3 from "@ionic/angular";
|
|
13
|
-
import * as i4 from "../popover/sion-popover/sion-popover.component";
|
|
14
|
-
export class MainContentComponent {
|
|
15
|
-
constructor(authService) {
|
|
16
|
-
this.authService = authService;
|
|
17
|
-
this.backdrop = 'bg-primary/30';
|
|
18
|
-
this.shadowColor = 'color-mix(in srgb, var(--ion-color-primary) 15%, transparent)';
|
|
19
|
-
this.colapsed = false;
|
|
20
|
-
this.Theme = Theme.System;
|
|
21
|
-
}
|
|
22
|
-
async ngOnInit() {
|
|
23
|
-
this.Token = await this.authService.LoadToken();
|
|
24
|
-
this.Theme = Number((await Preferences.get({ key: 'theme' })).value);
|
|
25
|
-
this.SetTheme(this.Theme);
|
|
26
|
-
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {
|
|
27
|
-
this.SetTheme(this.Theme);
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
async SetTheme(theme) {
|
|
31
|
-
this.Theme = theme;
|
|
32
|
-
await Preferences.set({ key: 'theme', value: this.Theme.toString() });
|
|
33
|
-
if (this.Theme === Theme.System) {
|
|
34
|
-
var matches = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
35
|
-
if (matches) {
|
|
36
|
-
document.body.classList.add('dark');
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
document.body.classList.remove('dark');
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
else if (this.Theme === Theme.Light) {
|
|
43
|
-
document.body.classList.remove('dark');
|
|
44
|
-
}
|
|
45
|
-
else if (this.Theme === Theme.Dark) {
|
|
46
|
-
document.body.classList.add('dark');
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
get fullScreen() {
|
|
50
|
-
if (document.fullscreenElement != null) {
|
|
51
|
-
return true;
|
|
52
|
-
}
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
;
|
|
56
|
-
FullScreen() {
|
|
57
|
-
if (!this.fullScreen) {
|
|
58
|
-
const elem = this.FullScreenConteiner.nativeElement;
|
|
59
|
-
if (elem.requestFullscreen) {
|
|
60
|
-
elem.requestFullscreen();
|
|
61
|
-
}
|
|
62
|
-
else if (elem.msRequestFullscreen) {
|
|
63
|
-
elem.msRequestFullscreen();
|
|
64
|
-
}
|
|
65
|
-
else if (elem.mozRequestFullScreen) {
|
|
66
|
-
elem.mozRequestFullScreen();
|
|
67
|
-
}
|
|
68
|
-
else if (elem.webkitRequestFullscreen) {
|
|
69
|
-
elem.webkitRequestFullscreen();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
document.exitFullscreen();
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MainContentComponent, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MainContentComponent, isStandalone: true, selector: "main-content", inputs: { backdrop: "backdrop", shadowColor: "shadowColor", colapsed: "colapsed", drawerComponent: "drawerComponent" }, viewQueries: [{ propertyName: "FullScreenConteiner", first: true, predicate: ["target"], descendants: true }], ngImport: i0, template: "<div class=\"size-full flex flex-col\" [ngClass]=\"{'bg-light/50': fullScreen}\" #target>\r\n <div class=\"w-full h-14 relative shrink-0\">\r\n <ion-card class=\"m-0 rounded-none size-full border-none\">\r\n <ion-card-content class=\"p-0 px-2 size-full flex\">\r\n <div class=\"w-1/2 h-full flex items-center justify-start\">\r\n @if (!fullScreen) {\r\n <ion-menu-button [routerLink]=\"['/']\" [autoHide]=\"true\"></ion-menu-button>\r\n }\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"w-1/2 h-full flex items-center justify-end gap-2\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n <ion-button (click)=\"FullScreen()\" fill=\"outline\" color=\"dark\" size=\"small\" class=\"size-10 aspect-square portrait:hidden\">\r\n <ion-icon slot=\"icon-only\" name=\"expand\"></ion-icon>\r\n </ion-button>\r\n\r\n\r\n @if (!fullScreen) {\r\n <div #anchor>\r\n <ion-button (click)=\"userPopover.present($event)\" size=\"small\" class=\"size-10 aspect-square\">\r\n <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n </ion-button>\r\n </div>\r\n <sion-popover #userPopover [anchor]=\"anchor\" [flip]=\"false\" width=\"13rem\">\r\n <div class=\"w-full flex flex-col overflow-hidden\">\r\n <div class=\"w-full flex p-2 gap-2 overflow-hidden\">\r\n <div class=\"size-10 shrink-0 aspect-square rounded-2xl text-sm flex items-center justify-center bg-primary\">\r\n <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n </div>\r\n\r\n <div class=\"shrink-0 w-full flex flex-col justify-center items-start overflow-hidden text-sm\">\r\n <span class=\"truncate\"> {{Token ? Token.Nome : ''}} </span>\r\n <span class=\"truncate text-secondary\"> @{{Token ? Token.Apelido : ''}} </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"w-full\">\r\n <ng-content class=\"size-full\" select=\"[slot=user-popover]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"w-full p-1 !pb-0 translucid-border !border-x-0 !border-b-0\">\r\n <div class=\"rounded-xl flex gap-2 items-center justify-start default-transition py-1 px-2\">\r\n <ion-icon name=\"contrast\"></ion-icon>\r\n <ion-text> Tema </ion-text>\r\n </div>\r\n\r\n <div class=\"flex flex-col pl-4\">\r\n <ion-radio-group alignment=\"start\" [allowEmptySelection]=\"false\" [value]=\"Theme\" (ionChange)=\"SetTheme($event.detail.value)\">\r\n <ion-item class=\"bg-transparent\" lines=\"full\">\r\n <ion-icon name=\"cog\" slot=\"start\"></ion-icon>\r\n <ion-radio class=\"w-full\" [value]=\"0\">Sistema</ion-radio>\r\n </ion-item>\r\n <ion-item class=\"bg-transparent\" lines=\"full\">\r\n <ion-icon name=\"sunny\" slot=\"start\"></ion-icon>\r\n <ion-radio class=\"w-full\" [value]=\"1\">Claro</ion-radio>\r\n </ion-item>\r\n <ion-item class=\"bg-transparent\" lines=\"none\">\r\n <ion-icon name=\"moon\" slot=\"start\"></ion-icon>\r\n <ion-radio class=\"w-full\" [value]=\"2\">Escuro</ion-radio>\r\n </ion-item>\r\n </ion-radio-group>\r\n\r\n\r\n <!-- <div class=\"w-full p-1 translucid-border !border-x-0 !border-b-0 overflow-hidden\">\r\n <div class=\"rounded-xl flex gap-2 items-center justify-start cursor-pointer hover:bg-medium/30 default-transition py-1 px-2\">\r\n <ion-checkbox [checked]=\"Theme == 0\" (ionChange)=\"SetTheme(0)\" ></ion-checkbox>\r\n <ion-icon name=\"cog\"></ion-icon>\r\n <ion-text> Sistema </ion-text>\r\n </div>\r\n </div>\r\n <div class=\"w-full p-1 translucid-border !border-x-0 !border-b-0 overflow-hidden\">\r\n <div class=\"rounded-xl flex gap-2 items-center justify-start cursor-pointer hover:bg-medium/30 default-transition py-1 px-2\">\r\n <ion-checkbox [checked]=\"Theme == 1\" (ionChange)=\"SetTheme(1)\" ></ion-checkbox>\r\n <ion-icon name=\"sunny\"></ion-icon>\r\n <ion-text> Claro </ion-text>\r\n </div>\r\n </div>\r\n <div class=\"w-full p-1 translucid-border !border-x-0 !border-b-0 overflow-hidden\">\r\n <div class=\"rounded-xl flex gap-2 items-center justify-start cursor-pointer hover:bg-medium/30 default-transition py-1 px-2\">\r\n <ion-checkbox [checked]=\"Theme == 2\" (ionChange)=\"SetTheme(2)\" ></ion-checkbox>\r\n <ion-icon name=\"moon\"></ion-icon>\r\n <ion-text> Escuro </ion-text>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"w-full p-1 translucid-border !border-x-0 !border-b-0\">\r\n <div (click)=\"authService.Loggout()\" class=\"rounded-xl flex gap-2 cursor-pointer items-center justify-start hover:bg-medium/10 default-transition py-1 px-2\">\r\n <ion-icon color=\"danger\" name=\"exit\"></ion-icon>\r\n <ion-text> Log Out </ion-text>\r\n </div>\r\n\r\n <!-- <ion-text> Log Out </ion-text>\r\n <ion-button (click)=\"authService.Loggout()\" class=\"size-8 shrink-0\" size=\"small\" fill=\"clear\" color=\"danger\">\r\n <ion-icon slot=\"icon-only\" name=\"exit-outline\"></ion-icon> \r\n </ion-button> -->\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"size-full\">\r\n <div class=\"w-full p-1 flex items-center\">\r\n <div class=\"size-10 shrink-0 aspect-square rounded-2xl text-sm flex items-center justify-center default-transition\" style=\"background-color: var(--ion-color-primary);\">\r\n <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n </div>\r\n <div class=\"grow min-w-10 p-2 justify-center items-center whitespace-nowrap text-ellipsis overflow-hidden block default-transition\" [ngClass]=\"{'opacity-0 w-0': colapsed}\">\r\n <span>{{Token ? Token.Nome : ''}}</span> <br>\r\n <ion-text color=\"secondary\" class=\"text-sm\">\r\n @{{Token ? Token.Apelido : ''}}\r\n </ion-text>\r\n </div>\r\n </div>\r\n <div class=\"w-full\">\r\n <ng-content class=\"size-full\" select=\"[slot=user-popover]\"></ng-content>\r\n </div>\r\n <div class=\"w-full p-1 px-2 translucid-border !border-x-0 !border-b-0 flex items-center justify-between\">\r\n <div class=\"hover:bg-medium/30 default-transition size-full\">\r\n <ion-button color=\"dark\" fill=\"clear\" size=\"small\" class=\"rounded-xl w-full text-left overflow-hidden\">\r\n <ion-icon slot=\"start\" name=\"contrast\"></ion-icon>\r\n <ion-label class=\"text-sm\">Tema</ion-label>\r\n </ion-button>\r\n </div>\r\n </div>\r\n <div class=\"w-full p-1 px-2 translucid-border !border-x-0 !border-b-0 flex items-center justify-between\">\r\n <ion-text> Log Out </ion-text>\r\n <ion-button (click)=\"authService.Loggout()\" class=\"size-8 shrink-0\" size=\"small\" fill=\"clear\" color=\"danger\">\r\n <ion-icon slot=\"icon-only\" name=\"exit-outline\"></ion-icon> \r\n </ion-button>\r\n </div>\r\n </div> -->\r\n </sion-popover>\r\n }\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n <div class=\"size-full relative p-2 pt-0 bg-light\">\r\n <div class=\"size-full relative rounded-2xl content-shadow overflow-hidden {{backdrop}}\" style=\"--shadow-color: {{shadowColor}}\">\r\n <ng-content></ng-content> \r\n </div>\r\n </div>\r\n</div>", styles: ["#popover-user{--width: 17rem}.content-shadow{--shadow-color: color-mix(in srgb, var(--ion-color-primary) 15%, transparent);box-shadow:0 0 0 1px var(--shadow-color),0 6px 10px -4px var(--shadow-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i3.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: 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.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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.IonMenuButton, selector: "ion-menu-button", inputs: ["autoHide", "color", "disabled", "menu", "mode", "type"] }, { kind: "component", type: i3.IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: i3.IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "compareWith", "errorText", "helperText", "name", "value"] }, { kind: "component", type: i3.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i3.SelectValueAccessor, selector: "ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "directive", type: i3.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "directive", type: RouterLinkWithHref, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: SIonPopoverModule }, { kind: "component", type: i4.SIonPopoverComponent, selector: "sion-popover", inputs: ["fill", "arrow", "flip", "placement", "height", "width", "anchor"], outputs: ["onWillPresent", "onDidPresent", "onWillDismiss", "onDidDismiss"] }] }); }
|
|
78
|
-
}
|
|
79
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MainContentComponent, decorators: [{
|
|
80
|
-
type: Component,
|
|
81
|
-
args: [{ standalone: true, imports: [CommonModule, IonicModule, RouterLinkWithHref, SIonPopoverModule], selector: 'main-content', template: "<div class=\"size-full flex flex-col\" [ngClass]=\"{'bg-light/50': fullScreen}\" #target>\r\n <div class=\"w-full h-14 relative shrink-0\">\r\n <ion-card class=\"m-0 rounded-none size-full border-none\">\r\n <ion-card-content class=\"p-0 px-2 size-full flex\">\r\n <div class=\"w-1/2 h-full flex items-center justify-start\">\r\n @if (!fullScreen) {\r\n <ion-menu-button [routerLink]=\"['/']\" [autoHide]=\"true\"></ion-menu-button>\r\n }\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"w-1/2 h-full flex items-center justify-end gap-2\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n <ion-button (click)=\"FullScreen()\" fill=\"outline\" color=\"dark\" size=\"small\" class=\"size-10 aspect-square portrait:hidden\">\r\n <ion-icon slot=\"icon-only\" name=\"expand\"></ion-icon>\r\n </ion-button>\r\n\r\n\r\n @if (!fullScreen) {\r\n <div #anchor>\r\n <ion-button (click)=\"userPopover.present($event)\" size=\"small\" class=\"size-10 aspect-square\">\r\n <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n </ion-button>\r\n </div>\r\n <sion-popover #userPopover [anchor]=\"anchor\" [flip]=\"false\" width=\"13rem\">\r\n <div class=\"w-full flex flex-col overflow-hidden\">\r\n <div class=\"w-full flex p-2 gap-2 overflow-hidden\">\r\n <div class=\"size-10 shrink-0 aspect-square rounded-2xl text-sm flex items-center justify-center bg-primary\">\r\n <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n </div>\r\n\r\n <div class=\"shrink-0 w-full flex flex-col justify-center items-start overflow-hidden text-sm\">\r\n <span class=\"truncate\"> {{Token ? Token.Nome : ''}} </span>\r\n <span class=\"truncate text-secondary\"> @{{Token ? Token.Apelido : ''}} </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"w-full\">\r\n <ng-content class=\"size-full\" select=\"[slot=user-popover]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"w-full p-1 !pb-0 translucid-border !border-x-0 !border-b-0\">\r\n <div class=\"rounded-xl flex gap-2 items-center justify-start default-transition py-1 px-2\">\r\n <ion-icon name=\"contrast\"></ion-icon>\r\n <ion-text> Tema </ion-text>\r\n </div>\r\n\r\n <div class=\"flex flex-col pl-4\">\r\n <ion-radio-group alignment=\"start\" [allowEmptySelection]=\"false\" [value]=\"Theme\" (ionChange)=\"SetTheme($event.detail.value)\">\r\n <ion-item class=\"bg-transparent\" lines=\"full\">\r\n <ion-icon name=\"cog\" slot=\"start\"></ion-icon>\r\n <ion-radio class=\"w-full\" [value]=\"0\">Sistema</ion-radio>\r\n </ion-item>\r\n <ion-item class=\"bg-transparent\" lines=\"full\">\r\n <ion-icon name=\"sunny\" slot=\"start\"></ion-icon>\r\n <ion-radio class=\"w-full\" [value]=\"1\">Claro</ion-radio>\r\n </ion-item>\r\n <ion-item class=\"bg-transparent\" lines=\"none\">\r\n <ion-icon name=\"moon\" slot=\"start\"></ion-icon>\r\n <ion-radio class=\"w-full\" [value]=\"2\">Escuro</ion-radio>\r\n </ion-item>\r\n </ion-radio-group>\r\n\r\n\r\n <!-- <div class=\"w-full p-1 translucid-border !border-x-0 !border-b-0 overflow-hidden\">\r\n <div class=\"rounded-xl flex gap-2 items-center justify-start cursor-pointer hover:bg-medium/30 default-transition py-1 px-2\">\r\n <ion-checkbox [checked]=\"Theme == 0\" (ionChange)=\"SetTheme(0)\" ></ion-checkbox>\r\n <ion-icon name=\"cog\"></ion-icon>\r\n <ion-text> Sistema </ion-text>\r\n </div>\r\n </div>\r\n <div class=\"w-full p-1 translucid-border !border-x-0 !border-b-0 overflow-hidden\">\r\n <div class=\"rounded-xl flex gap-2 items-center justify-start cursor-pointer hover:bg-medium/30 default-transition py-1 px-2\">\r\n <ion-checkbox [checked]=\"Theme == 1\" (ionChange)=\"SetTheme(1)\" ></ion-checkbox>\r\n <ion-icon name=\"sunny\"></ion-icon>\r\n <ion-text> Claro </ion-text>\r\n </div>\r\n </div>\r\n <div class=\"w-full p-1 translucid-border !border-x-0 !border-b-0 overflow-hidden\">\r\n <div class=\"rounded-xl flex gap-2 items-center justify-start cursor-pointer hover:bg-medium/30 default-transition py-1 px-2\">\r\n <ion-checkbox [checked]=\"Theme == 2\" (ionChange)=\"SetTheme(2)\" ></ion-checkbox>\r\n <ion-icon name=\"moon\"></ion-icon>\r\n <ion-text> Escuro </ion-text>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"w-full p-1 translucid-border !border-x-0 !border-b-0\">\r\n <div (click)=\"authService.Loggout()\" class=\"rounded-xl flex gap-2 cursor-pointer items-center justify-start hover:bg-medium/10 default-transition py-1 px-2\">\r\n <ion-icon color=\"danger\" name=\"exit\"></ion-icon>\r\n <ion-text> Log Out </ion-text>\r\n </div>\r\n\r\n <!-- <ion-text> Log Out </ion-text>\r\n <ion-button (click)=\"authService.Loggout()\" class=\"size-8 shrink-0\" size=\"small\" fill=\"clear\" color=\"danger\">\r\n <ion-icon slot=\"icon-only\" name=\"exit-outline\"></ion-icon> \r\n </ion-button> -->\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"size-full\">\r\n <div class=\"w-full p-1 flex items-center\">\r\n <div class=\"size-10 shrink-0 aspect-square rounded-2xl text-sm flex items-center justify-center default-transition\" style=\"background-color: var(--ion-color-primary);\">\r\n <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n </div>\r\n <div class=\"grow min-w-10 p-2 justify-center items-center whitespace-nowrap text-ellipsis overflow-hidden block default-transition\" [ngClass]=\"{'opacity-0 w-0': colapsed}\">\r\n <span>{{Token ? Token.Nome : ''}}</span> <br>\r\n <ion-text color=\"secondary\" class=\"text-sm\">\r\n @{{Token ? Token.Apelido : ''}}\r\n </ion-text>\r\n </div>\r\n </div>\r\n <div class=\"w-full\">\r\n <ng-content class=\"size-full\" select=\"[slot=user-popover]\"></ng-content>\r\n </div>\r\n <div class=\"w-full p-1 px-2 translucid-border !border-x-0 !border-b-0 flex items-center justify-between\">\r\n <div class=\"hover:bg-medium/30 default-transition size-full\">\r\n <ion-button color=\"dark\" fill=\"clear\" size=\"small\" class=\"rounded-xl w-full text-left overflow-hidden\">\r\n <ion-icon slot=\"start\" name=\"contrast\"></ion-icon>\r\n <ion-label class=\"text-sm\">Tema</ion-label>\r\n </ion-button>\r\n </div>\r\n </div>\r\n <div class=\"w-full p-1 px-2 translucid-border !border-x-0 !border-b-0 flex items-center justify-between\">\r\n <ion-text> Log Out </ion-text>\r\n <ion-button (click)=\"authService.Loggout()\" class=\"size-8 shrink-0\" size=\"small\" fill=\"clear\" color=\"danger\">\r\n <ion-icon slot=\"icon-only\" name=\"exit-outline\"></ion-icon> \r\n </ion-button>\r\n </div>\r\n </div> -->\r\n </sion-popover>\r\n }\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n <div class=\"size-full relative p-2 pt-0 bg-light\">\r\n <div class=\"size-full relative rounded-2xl content-shadow overflow-hidden {{backdrop}}\" style=\"--shadow-color: {{shadowColor}}\">\r\n <ng-content></ng-content> \r\n </div>\r\n </div>\r\n</div>", styles: ["#popover-user{--width: 17rem}.content-shadow{--shadow-color: color-mix(in srgb, var(--ion-color-primary) 15%, transparent);box-shadow:0 0 0 1px var(--shadow-color),0 6px 10px -4px var(--shadow-color)}\n"] }]
|
|
82
|
-
}], ctorParameters: () => [{ type: i1.AuthService }], propDecorators: { backdrop: [{
|
|
83
|
-
type: Input
|
|
84
|
-
}], shadowColor: [{
|
|
85
|
-
type: Input
|
|
86
|
-
}], colapsed: [{
|
|
87
|
-
type: Input
|
|
88
|
-
}], drawerComponent: [{
|
|
89
|
-
type: Input
|
|
90
|
-
}], FullScreenConteiner: [{
|
|
91
|
-
type: ViewChild,
|
|
92
|
-
args: ['target']
|
|
93
|
-
}] } });
|
|
94
|
-
var Theme;
|
|
95
|
-
(function (Theme) {
|
|
96
|
-
Theme[Theme["System"] = 0] = "System";
|
|
97
|
-
Theme[Theme["Light"] = 1] = "Light";
|
|
98
|
-
Theme[Theme["Dark"] = 2] = "Dark";
|
|
99
|
-
})(Theme || (Theme = {}));
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tYWluLWNvbnRlbnQvbWFpbi1jb250ZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tYWluLWNvbnRlbnQvbWFpbi1jb250ZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7QUFTbkUsTUFBTSxPQUFPLG9CQUFvQjtJQVEvQixZQUNTLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBUHhCLGFBQVEsR0FBVyxlQUFlLENBQUM7UUFDbkMsZ0JBQVcsR0FBVywrREFBK0QsQ0FBQztRQUV0RixhQUFRLEdBQVksS0FBSyxDQUFDO1FBa0JuQyxVQUFLLEdBQVUsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQWJ4QixDQUFDO0lBR0wsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FB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QVcsdXREQUFFLGtCQUFrQixtT0FBRSxpQkFBaUI7OzRGQUtoRSxvQkFBb0I7a0JBUGhDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBRSxZQUNuRSxjQUFjO2dGQU1mLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBNkNlLG1CQUFtQjtzQkFBdkMsU0FBUzt1QkFBQyxRQUFROztBQW9CckIsSUFBSyxLQUlKO0FBSkQsV0FBSyxLQUFLO0lBQ1IscUNBQVUsQ0FBQTtJQUNWLG1DQUFVLENBQUE7SUFDVixpQ0FBVSxDQUFBO0FBQ1osQ0FBQyxFQUpJLEtBQUssS0FBTCxLQUFLLFFBSVQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgUm91dGVyTGlua1dpdGhIcmVmIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUHJlZmVyZW5jZXMgfSBmcm9tICdAY2FwYWNpdG9yL3ByZWZlcmVuY2VzJztcclxuXHJcbmltcG9ydCB7IERyYXdlckNvbXBvbmVudCB9IGZyb20gJy4uL2RyYXdlci9kcmF3ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTSW9uUG9wb3Zlck1vZHVsZSB9IGZyb20gJy4uL3BvcG92ZXIvc2lvbi1wb3BvdmVyLm1vZHVsZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFsgQ29tbW9uTW9kdWxlLCBJb25pY01vZHVsZSwgUm91dGVyTGlua1dpdGhIcmVmLCBTSW9uUG9wb3Zlck1vZHVsZSBdLFxyXG4gIHNlbGVjdG9yOiAnbWFpbi1jb250ZW50JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWFpbi1jb250ZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tYWluLWNvbnRlbnQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1haW5Db250ZW50Q29tcG9uZW50ICBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGJhY2tkcm9wOiBzdHJpbmcgPSAnYmctcHJpbWFyeS8zMCc7XHJcbiAgQElucHV0KCkgc2hhZG93Q29sb3I6IHN0cmluZyA9ICdjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpIDE1JSwgdHJhbnNwYXJlbnQpJztcclxuXHJcbiAgQElucHV0KCkgY29sYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkcmF3ZXJDb21wb25lbnQ6IERyYXdlckNvbXBvbmVudDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICkgeyB9XHJcblxyXG4gIFRva2VuOiBhbnk7XHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLlRva2VuID0gYXdhaXQgdGhpcy5hdXRoU2VydmljZS5Mb2FkVG9rZW4oKTtcclxuICAgIHRoaXMuVGhlbWUgPSBOdW1iZXIoKGF3YWl0IFByZWZlcmVuY2VzLmdldCh7IGtleTogJ3RoZW1lJyB9KSkudmFsdWUpIGFzIFRoZW1lO1xyXG5cclxuICAgIHRoaXMuU2V0VGhlbWUodGhpcy5UaGVtZSk7XHJcbiAgICB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7XHJcbiAgICAgIHRoaXMuU2V0VGhlbWUodGhpcy5UaGVtZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIFRoZW1lOiBUaGVtZSA9IFRoZW1lLlN5c3RlbTtcclxuICBhc3luYyBTZXRUaGVtZSh0aGVtZTogVGhlbWUpIHtcclxuICAgIHRoaXMuVGhlbWUgPSB0aGVtZTtcclxuICAgIGF3YWl0IFByZWZlcmVuY2VzLnNldCh7IGtleTogJ3RoZW1lJywgdmFsdWU6IHRoaXMuVGhlbWUudG9TdHJpbmcoKSB9KTtcclxuICAgIGlmICh0aGlzLlRoZW1lID09PSBUaGVtZS5TeXN0ZW0pIHtcclxuICAgICAgdmFyIG1hdGNoZXMgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXM7XHJcbiAgICAgIGlmIChtYXRjaGVzKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdkYXJrJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdkYXJrJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgXHJcbiAgICBpZiAodGhpcy5UaGVtZSA9PT0gVGhlbWUuTGlnaHQpIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdkYXJrJyk7XHJcbiAgICB9IGVsc2UgXHJcbiAgICBpZiAodGhpcy5UaGVtZSA9PT0gVGhlbWUuRGFyaykge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2RhcmsnKTsgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZnVsbFNjcmVlbigpOiBib29sZWFuIHsgXHJcbiAgICBpZihkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudCAhPSBudWxsKXtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7IFxyXG4gIH07XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RhcmdldCcpIEZ1bGxTY3JlZW5Db250ZWluZXI7XHJcbiAgRnVsbFNjcmVlbigpOiB2b2lke1xyXG4gICAgaWYoIXRoaXMuZnVsbFNjcmVlbil7XHJcbiAgICAgIGNvbnN0IGVsZW0gPSB0aGlzLkZ1bGxTY3JlZW5Db250ZWluZXIubmF0aXZlRWxlbWVudDtcclxuICBcclxuICAgICAgaWYgKGVsZW0ucmVxdWVzdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICBlbGVtLnJlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbS5tc1JlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgZWxlbS5tc1JlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbS5tb3pSZXF1ZXN0RnVsbFNjcmVlbikge1xyXG4gICAgICAgIGVsZW0ubW96UmVxdWVzdEZ1bGxTY3JlZW4oKTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgZWxlbS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpO1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZW51bSBUaGVtZSB7XHJcbiAgU3lzdGVtID0gMCxcclxuICBMaWdodCAgPSAxLFxyXG4gIERhcmsgICA9IDIsXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInNpemUtZnVsbCBmbGV4IGZsZXgtY29sXCIgW25nQ2xhc3NdPVwieydiZy1saWdodC81MCc6IGZ1bGxTY3JlZW59XCIgI3RhcmdldD5cclxuICA8ZGl2IGNsYXNzPVwidy1mdWxsIGgtMTQgcmVsYXRpdmUgc2hyaW5rLTBcIj5cclxuICAgIDxpb24tY2FyZCBjbGFzcz1cIm0tMCByb3VuZGVkLW5vbmUgc2l6ZS1mdWxsIGJvcmRlci1ub25lXCI+XHJcbiAgICAgIDxpb24tY2FyZC1jb250ZW50IGNsYXNzPVwicC0wIHB4LTIgc2l6ZS1mdWxsIGZsZXhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzIgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnRcIj5cclxuICAgICAgICAgIEBpZiAoIWZ1bGxTY3JlZW4pIHtcclxuICAgICAgICAgICAgPGlvbi1tZW51LWJ1dHRvbiAgW3JvdXRlckxpbmtdPVwiWycvJ11cIiBbYXV0b0hpZGVdPVwidHJ1ZVwiPjwvaW9uLW1lbnUtYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9c3RhcnRdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzIgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIGdhcC0yXCI+XHJcbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD1lbmRdXCI+PC9uZy1jb250ZW50PlxyXG5cclxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJGdWxsU2NyZWVuKClcIiBmaWxsPVwib3V0bGluZVwiIGNvbG9yPVwiZGFya1wiIHNpemU9XCJzbWFsbFwiIGNsYXNzPVwic2l6ZS0xMCBhc3BlY3Qtc3F1YXJlICBwb3J0cmFpdDpoaWRkZW5cIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiZXhwYW5kXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuXHJcblxyXG4gICAgICAgICAgQGlmICghZnVsbFNjcmVlbikge1xyXG4gICAgICAgICAgICA8ZGl2ICNhbmNob3I+XHJcbiAgICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInVzZXJQb3BvdmVyLnByZXNlbnQoJGV2ZW50KVwiIHNpemU9XCJzbWFsbFwiIGNsYXNzPVwic2l6ZS0xMCBhc3BlY3Qtc3F1YXJlXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVwcGVyY2FzZSB0ZXh0LXdoaXRlXCI+e3tUb2tlbiA/IFRva2VuLk5vbWVbMF0gOiAnJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzaW9uLXBvcG92ZXIgI3VzZXJQb3BvdmVyIFthbmNob3JdPVwiYW5jaG9yXCIgW2ZsaXBdPVwiZmFsc2VcIiB3aWR0aD1cIjEzcmVtXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBmbGV4IHAtMiBnYXAtMiBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpemUtMTAgc2hyaW5rLTAgYXNwZWN0LXNxdWFyZSByb3VuZGVkLTJ4bCB0ZXh0LXNtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVwcGVyY2FzZSB0ZXh0LXdoaXRlXCI+e3tUb2tlbiA/IFRva2VuLk5vbWVbMF0gOiAnJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaHJpbmstMCB3LWZ1bGwgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1zdGFydCBvdmVyZmxvdy1oaWRkZW4gdGV4dC1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGVcIj4ge3tUb2tlbiA/IFRva2VuLk5vbWUgOiAnJ319IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRydW5jYXRlIHRleHQtc2Vjb25kYXJ5XCI+ICYjNjQ7e3tUb2tlbiA/IFRva2VuLkFwZWxpZG8gOiAnJ319IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IGNsYXNzPVwic2l6ZS1mdWxsXCIgc2VsZWN0PVwiW3Nsb3Q9dXNlci1wb3BvdmVyXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgcC0xICFwYi0wIHRyYW5zbHVjaWQtYm9yZGVyICFib3JkZXIteC0wICFib3JkZXItYi0wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLXhsIGZsZXggZ2FwLTIgaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgZGVmYXVsdC10cmFuc2l0aW9uIHB5LTEgcHgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY29udHJhc3RcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dD4gVGVtYSA8L2lvbi10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHBsLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLXJhZGlvLWdyb3VwIGFsaWdubWVudD1cInN0YXJ0XCIgW2FsbG93RW1wdHlTZWxlY3Rpb25dPVwiZmFsc2VcIiBbdmFsdWVdPVwiVGhlbWVcIiAoaW9uQ2hhbmdlKT1cIlNldFRoZW1lKCRldmVudC5kZXRhaWwudmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWl0ZW0gY2xhc3M9XCJiZy10cmFuc3BhcmVudFwiIGxpbmVzPVwiZnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNvZ1wiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tcmFkaW8gY2xhc3M9XCJ3LWZ1bGxcIiBbdmFsdWVdPVwiMFwiPlNpc3RlbWE8L2lvbi1yYWRpbz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWl0ZW0gY2xhc3M9XCJiZy10cmFuc3BhcmVudFwiIGxpbmVzPVwiZnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInN1bm55XCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1yYWRpbyBjbGFzcz1cInctZnVsbFwiIFt2YWx1ZV09XCIxXCI+Q2xhcm88L2lvbi1yYWRpbz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWl0ZW0gY2xhc3M9XCJiZy10cmFuc3BhcmVudFwiIGxpbmVzPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cIm1vb25cIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXJhZGlvIGNsYXNzPVwidy1mdWxsXCIgW3ZhbHVlXT1cIjJcIj5Fc2N1cm88L2lvbi1yYWRpbz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcmFkaW8tZ3JvdXA+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgcC0xIHRyYW5zbHVjaWQtYm9yZGVyICFib3JkZXIteC0wICFib3JkZXItYi0wIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdW5kZWQteGwgZmxleCBnYXAtMiBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydCBjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy1tZWRpdW0vMzAgZGVmYXVsdC10cmFuc2l0aW9uIHB5LTEgcHgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNoZWNrYm94IFtjaGVja2VkXT1cIlRoZW1lID09IDBcIiAoaW9uQ2hhbmdlKT1cIlNldFRoZW1lKDApXCIgPjwvaW9uLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNvZ1wiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dD4gU2lzdGVtYSA8L2lvbi10ZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBwLTEgdHJhbnNsdWNpZC1ib3JkZXIgIWJvcmRlci14LTAgIWJvcmRlci1iLTAgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91bmRlZC14bCBmbGV4IGdhcC0yIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IGN1cnNvci1wb2ludGVyIGhvdmVyOmJnLW1lZGl1bS8zMCBkZWZhdWx0LXRyYW5zaXRpb24gcHktMSBweC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY2hlY2tib3ggW2NoZWNrZWRdPVwiVGhlbWUgPT0gMVwiIChpb25DaGFuZ2UpPVwiU2V0VGhlbWUoMSlcIiA+PC9pb24tY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwic3VubnlcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQ+IENsYXJvIDwvaW9uLXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIHAtMSB0cmFuc2x1Y2lkLWJvcmRlciAhYm9yZGVyLXgtMCAhYm9yZGVyLWItMCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLXhsIGZsZXggZ2FwLTIgaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgY3Vyc29yLXBvaW50ZXIgaG92ZXI6YmctbWVkaXVtLzMwIGRlZmF1bHQtdHJhbnNpdGlvbiBweS0xIHB4LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jaGVja2JveCBbY2hlY2tlZF09XCJUaGVtZSA9PSAyXCIgKGlvbkNoYW5nZSk9XCJTZXRUaGVtZSgyKVwiID48L2lvbi1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJtb29uXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0PiBFc2N1cm8gPC9pb24tdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBwLTEgdHJhbnNsdWNpZC1ib3JkZXIgIWJvcmRlci14LTAgIWJvcmRlci1iLTBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiYXV0aFNlcnZpY2UuTG9nZ291dCgpXCIgY2xhc3M9XCJyb3VuZGVkLXhsIGZsZXggZ2FwLTIgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgaG92ZXI6YmctbWVkaXVtLzEwIGRlZmF1bHQtdHJhbnNpdGlvbiBweS0xIHB4LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gY29sb3I9XCJkYW5nZXJcIiBuYW1lPVwiZXhpdFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0PiBMb2cgT3V0IDwvaW9uLXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8aW9uLXRleHQ+IExvZyBPdXQgPC9pb24tdGV4dD5cclxuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImF1dGhTZXJ2aWNlLkxvZ2dvdXQoKVwiIGNsYXNzPVwic2l6ZS04IHNocmluay0wXCIgc2l6ZT1cInNtYWxsXCIgZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYW5nZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJleGl0LW91dGxpbmVcIj48L2lvbi1pY29uPiBcclxuICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgcC0xIGZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaXplLTEwIHNocmluay0wIGFzcGVjdC1zcXVhcmUgcm91bmRlZC0yeGwgdGV4dC1zbSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBkZWZhdWx0LXRyYW5zaXRpb25cIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVwcGVyY2FzZSB0ZXh0LXdoaXRlXCI+e3tUb2tlbiA/IFRva2VuLk5vbWVbMF0gOiAnJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3cgbWluLXctMTAgcC0yIGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciB3aGl0ZXNwYWNlLW5vd3JhcCB0ZXh0LWVsbGlwc2lzIG92ZXJmbG93LWhpZGRlbiBibG9jayBkZWZhdWx0LXRyYW5zaXRpb25cIiBbbmdDbGFzc109XCJ7J29wYWNpdHktMCB3LTAnOiBjb2xhcHNlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1Rva2VuID8gVG9rZW4uTm9tZSA6ICcnfX08L3NwYW4+IDxicj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJzZWNvbmRhcnlcIiBjbGFzcz1cInRleHQtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICYjNjQ7e3tUb2tlbiA/IFRva2VuLkFwZWxpZG8gOiAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgY2xhc3M9XCJzaXplLWZ1bGxcIiBzZWxlY3Q9XCJbc2xvdD11c2VyLXBvcG92ZXJdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIHAtMSBweC0yIHRyYW5zbHVjaWQtYm9yZGVyICFib3JkZXIteC0wICFib3JkZXItYi0wIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG92ZXI6YmctbWVkaXVtLzMwIGRlZmF1bHQtdHJhbnNpdGlvbiBzaXplLWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBjb2xvcj1cImRhcmtcIiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIiBjbGFzcz1cInJvdW5kZWQteGwgdy1mdWxsIHRleHQtbGVmdCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwiY29udHJhc3RcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cInRleHQtc21cIj5UZW1hPC9pb24tbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBwLTEgcHgtMiB0cmFuc2x1Y2lkLWJvcmRlciAhYm9yZGVyLXgtMCAhYm9yZGVyLWItMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0PiBMb2cgT3V0IDwvaW9uLXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJhdXRoU2VydmljZS5Mb2dnb3V0KClcIiBjbGFzcz1cInNpemUtOCBzaHJpbmstMFwiIHNpemU9XCJzbWFsbFwiIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiZXhpdC1vdXRsaW5lXCI+PC9pb24taWNvbj4gXHJcbiAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPC9zaW9uLXBvcG92ZXI+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cclxuICAgIDwvaW9uLWNhcmQ+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInNpemUtZnVsbCByZWxhdGl2ZSBwLTIgcHQtMCBiZy1saWdodFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNpemUtZnVsbCByZWxhdGl2ZSByb3VuZGVkLTJ4bCBjb250ZW50LXNoYWRvdyBvdmVyZmxvdy1oaWRkZW4ge3tiYWNrZHJvcH19XCIgc3R5bGU9XCItLXNoYWRvdy1jb2xvcjoge3tzaGFkb3dDb2xvcn19XCI+XHJcbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD4gXHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import { Component, ElementRef, EventEmitter, Input, NgZone, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { autoUpdate, computePosition, flip, limitShift, offset, shift, arrow } from '@floating-ui/dom';
|
|
3
|
-
import { Timeout } from '../../../services/utils.service';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common";
|
|
6
|
-
export class SIonPopoverComponent {
|
|
7
|
-
constructor(ngZone) {
|
|
8
|
-
this.ngZone = ngZone;
|
|
9
|
-
this.fill = 'blur';
|
|
10
|
-
this.arrow = true;
|
|
11
|
-
this.flip = true;
|
|
12
|
-
this.placement = 'bottom';
|
|
13
|
-
this.height = 'auto';
|
|
14
|
-
this.width = 'auto';
|
|
15
|
-
this.onWillPresent = new EventEmitter();
|
|
16
|
-
this.onDidPresent = new EventEmitter();
|
|
17
|
-
this.onWillDismiss = new EventEmitter();
|
|
18
|
-
this.onDidDismiss = new EventEmitter();
|
|
19
|
-
this.anchor = undefined;
|
|
20
|
-
this.state = POPOVER_STATE.IDLE;
|
|
21
|
-
}
|
|
22
|
-
ngAfterViewInit() {
|
|
23
|
-
//TODO: Use Renderer2 to add event listeners for better Angular compatibility when updating to Angular 19
|
|
24
|
-
this.ngZone.runOutsideAngular(() => {
|
|
25
|
-
this.documentClickListener = (event) => {
|
|
26
|
-
// Run back inside Angular's zone when handling the event
|
|
27
|
-
this.ngZone.run(() => {
|
|
28
|
-
if (!this._instance) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
if (!this._instance.contains(event.target) &&
|
|
32
|
-
!this.anchor.contains(event.target)) {
|
|
33
|
-
this.dismiss();
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
// Use the native DOM API directly with capture phase
|
|
38
|
-
document.addEventListener('click', this.documentClickListener, true);
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
get _instance() {
|
|
42
|
-
return this.contentContainer?.nativeElement;
|
|
43
|
-
}
|
|
44
|
-
get arrowEl() {
|
|
45
|
-
return this._instance.querySelector('.popover-arrow');
|
|
46
|
-
}
|
|
47
|
-
async present(event) {
|
|
48
|
-
if (this.state != POPOVER_STATE.IDLE) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
document.body.appendChild(this._instance);
|
|
52
|
-
this.onWillPresent.emit();
|
|
53
|
-
this.state = POPOVER_STATE.PRESENTING;
|
|
54
|
-
const refEl = this.anchor ? this.anchor : event.target;
|
|
55
|
-
const arrowEl = this.arrowEl;
|
|
56
|
-
await this.update(refEl, arrowEl);
|
|
57
|
-
this._instance.classList.add('show');
|
|
58
|
-
this.cleanupAutoUpdate = autoUpdate(refEl, this._instance, async () => this.update(refEl, arrowEl));
|
|
59
|
-
this.state = POPOVER_STATE.VISIBLE;
|
|
60
|
-
this.onDidPresent.emit();
|
|
61
|
-
}
|
|
62
|
-
async update(refEl, arrowEl) {
|
|
63
|
-
const computePositionReturn = await this.GetComputePositionReturn(refEl, this._instance, arrowEl);
|
|
64
|
-
this.HandleComputePositionReturn(computePositionReturn, arrowEl);
|
|
65
|
-
}
|
|
66
|
-
async dismiss() {
|
|
67
|
-
if (this.state == POPOVER_STATE.IDLE) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
if (this.cleanupAutoUpdate) {
|
|
71
|
-
this.cleanupAutoUpdate();
|
|
72
|
-
this.cleanupAutoUpdate = undefined;
|
|
73
|
-
}
|
|
74
|
-
this.onWillDismiss.emit();
|
|
75
|
-
this.state = POPOVER_STATE.DISMISSING;
|
|
76
|
-
this._instance.classList.remove('show');
|
|
77
|
-
await Timeout(200);
|
|
78
|
-
this._instance?.remove();
|
|
79
|
-
this.state = POPOVER_STATE.IDLE;
|
|
80
|
-
this.onDidDismiss.emit();
|
|
81
|
-
}
|
|
82
|
-
HandleComputePositionReturn(computePositionReturn, arrowEl) {
|
|
83
|
-
Object.assign(this._instance.style, {
|
|
84
|
-
left: `${computePositionReturn.x}px`,
|
|
85
|
-
top: `${computePositionReturn.y}px`,
|
|
86
|
-
width: this.width,
|
|
87
|
-
height: this.height,
|
|
88
|
-
position: 'absolute',
|
|
89
|
-
});
|
|
90
|
-
if (computePositionReturn.middlewareData.arrow) {
|
|
91
|
-
const { x: arrowX, y: arrowY } = computePositionReturn.middlewareData.arrow;
|
|
92
|
-
const position = computePositionReturn.placement.split('-')[0];
|
|
93
|
-
const staticSide = STATIC_SIDES[position];
|
|
94
|
-
Object.assign(arrowEl.style, {
|
|
95
|
-
left: arrowX != null ? `${arrowX}px` : '',
|
|
96
|
-
top: arrowY != null ? `${arrowY}px` : '',
|
|
97
|
-
right: '',
|
|
98
|
-
bottom: '',
|
|
99
|
-
[staticSide]: `-7px`,
|
|
100
|
-
});
|
|
101
|
-
arrowEl.style.setProperty(`--rotation`, ROTATIONS[position]);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
ngOnDestroy() {
|
|
105
|
-
if (this._instance) {
|
|
106
|
-
this._instance?.remove();
|
|
107
|
-
}
|
|
108
|
-
if (this._embeddedView) {
|
|
109
|
-
this._embeddedView.destroy();
|
|
110
|
-
this._embeddedView = undefined;
|
|
111
|
-
}
|
|
112
|
-
if (this.documentClickListener) {
|
|
113
|
-
document.removeEventListener('click', this.documentClickListener, true);
|
|
114
|
-
}
|
|
115
|
-
if (this.viewRef) {
|
|
116
|
-
this.viewRef.destroy();
|
|
117
|
-
this.viewRef = undefined;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
async GetComputePositionReturn(refEl, popEl, arrowEl) {
|
|
121
|
-
return await computePosition(refEl, popEl, {
|
|
122
|
-
placement: this.placement,
|
|
123
|
-
middleware: [
|
|
124
|
-
offset(10),
|
|
125
|
-
this.flip ? flip({ crossAxis: false }) : undefined,
|
|
126
|
-
shift({ limiter: limitShift(), padding: 5 }),
|
|
127
|
-
this.arrow ? arrow({ element: arrowEl, padding: 10 }) : undefined,
|
|
128
|
-
].filter(p => p),
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SIonPopoverComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
132
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SIonPopoverComponent, selector: "sion-popover", inputs: { fill: "fill", arrow: "arrow", flip: "flip", placement: "placement", height: "height", width: "width", anchor: "anchor" }, outputs: { onWillPresent: "onWillPresent", onDidPresent: "onDidPresent", onWillDismiss: "onWillDismiss", onDidDismiss: "onDidDismiss" }, viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["popoverWrapper"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div #popoverWrapper \r\n class=\"popover-wrapper translucid-border\"\r\n [style.height]=\"height\"\r\n [style.width]=\"width\"\r\n [ngClass]=\"{\r\n 'bg-light' : fill == 'solid',\r\n 'bg-transparent' : fill == 'outline',\r\n 'bg-light/90' : fill == 'blur',\r\n '!border-0' : fill == 'clear',\r\n }\"\r\n> \r\n <div #popoverArrow class=\"popover-arrow size-4 translucid-border\"\r\n [ngClass]=\"{\r\n 'bg-light' : fill == 'solid',\r\n 'bg-transparent' : fill == 'outline',\r\n 'bg-light/90' : fill == 'blur',\r\n '!border-0' : fill == 'clear',\r\n }\"\r\n ></div>\r\n <ng-content #content></ng-content>\r\n</div>", styles: [".popover-wrapper{border-radius:.75rem;width:max-content;position:fixed;will-change:left,top,bottom,right,auto,opacity,filter;opacity:0;transition:opacity .15s ease-in-out,transform .15s ease-in-out,filter .15s ease-in-out;min-width:2rem;min-height:2rem;filter:grayscale(.9);transform:scale(.95);pointer-events:auto!important;z-index:10001!important}.popover-arrow{border-radius:.125rem;position:absolute;transform:scale(1) rotate(var(--rotation))!important;clip-path:var(--clip-path-triangle, polygon(0% 0%, 0% 100%, 100% 100%))}.show{filter:grayscale(0);transform:scale(1);opacity:1}.popover-wrapper:not(.show){pointer-events:none!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
133
|
-
}
|
|
134
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SIonPopoverComponent, decorators: [{
|
|
135
|
-
type: Component,
|
|
136
|
-
args: [{ selector: 'sion-popover', template: "<div #popoverWrapper \r\n class=\"popover-wrapper translucid-border\"\r\n [style.height]=\"height\"\r\n [style.width]=\"width\"\r\n [ngClass]=\"{\r\n 'bg-light' : fill == 'solid',\r\n 'bg-transparent' : fill == 'outline',\r\n 'bg-light/90' : fill == 'blur',\r\n '!border-0' : fill == 'clear',\r\n }\"\r\n> \r\n <div #popoverArrow class=\"popover-arrow size-4 translucid-border\"\r\n [ngClass]=\"{\r\n 'bg-light' : fill == 'solid',\r\n 'bg-transparent' : fill == 'outline',\r\n 'bg-light/90' : fill == 'blur',\r\n '!border-0' : fill == 'clear',\r\n }\"\r\n ></div>\r\n <ng-content #content></ng-content>\r\n</div>", styles: [".popover-wrapper{border-radius:.75rem;width:max-content;position:fixed;will-change:left,top,bottom,right,auto,opacity,filter;opacity:0;transition:opacity .15s ease-in-out,transform .15s ease-in-out,filter .15s ease-in-out;min-width:2rem;min-height:2rem;filter:grayscale(.9);transform:scale(.95);pointer-events:auto!important;z-index:10001!important}.popover-arrow{border-radius:.125rem;position:absolute;transform:scale(1) rotate(var(--rotation))!important;clip-path:var(--clip-path-triangle, polygon(0% 0%, 0% 100%, 100% 100%))}.show{filter:grayscale(0);transform:scale(1);opacity:1}.popover-wrapper:not(.show){pointer-events:none!important}\n"] }]
|
|
137
|
-
}], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { fill: [{
|
|
138
|
-
type: Input
|
|
139
|
-
}], arrow: [{
|
|
140
|
-
type: Input
|
|
141
|
-
}], flip: [{
|
|
142
|
-
type: Input
|
|
143
|
-
}], placement: [{
|
|
144
|
-
type: Input
|
|
145
|
-
}], height: [{
|
|
146
|
-
type: Input
|
|
147
|
-
}], width: [{
|
|
148
|
-
type: Input
|
|
149
|
-
}], onWillPresent: [{
|
|
150
|
-
type: Output
|
|
151
|
-
}], onDidPresent: [{
|
|
152
|
-
type: Output
|
|
153
|
-
}], onWillDismiss: [{
|
|
154
|
-
type: Output
|
|
155
|
-
}], onDidDismiss: [{
|
|
156
|
-
type: Output
|
|
157
|
-
}], anchor: [{
|
|
158
|
-
type: Input
|
|
159
|
-
}], contentContainer: [{
|
|
160
|
-
type: ViewChild,
|
|
161
|
-
args: ['popoverWrapper', { read: ElementRef }]
|
|
162
|
-
}] } });
|
|
163
|
-
var POPOVER_STATE;
|
|
164
|
-
(function (POPOVER_STATE) {
|
|
165
|
-
POPOVER_STATE[POPOVER_STATE["IDLE"] = 1] = "IDLE";
|
|
166
|
-
POPOVER_STATE[POPOVER_STATE["PRESENTING"] = 2] = "PRESENTING";
|
|
167
|
-
POPOVER_STATE[POPOVER_STATE["DISMISSING"] = 3] = "DISMISSING";
|
|
168
|
-
POPOVER_STATE[POPOVER_STATE["VISIBLE"] = 4] = "VISIBLE";
|
|
169
|
-
})(POPOVER_STATE || (POPOVER_STATE = {}));
|
|
170
|
-
const STATIC_SIDES = {
|
|
171
|
-
top: "bottom",
|
|
172
|
-
right: "left",
|
|
173
|
-
bottom: "top",
|
|
174
|
-
left: "right"
|
|
175
|
-
};
|
|
176
|
-
const ROTATIONS = {
|
|
177
|
-
bottom: "135deg",
|
|
178
|
-
top: "315deg",
|
|
179
|
-
left: "225deg",
|
|
180
|
-
right: "45deg",
|
|
181
|
-
};
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvbi1wb3BvdmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9wb3BvdmVyL3Npb24tcG9wb3Zlci9zaW9uLXBvcG92ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3BvcG92ZXIvc2lvbi1wb3BvdmVyL3Npb24tcG9wb3Zlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQW1CLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFxQixNQUFNLEVBQWUsU0FBUyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUNqTSxPQUFPLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBeUIsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWEsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pJLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBUzFELE1BQU0sT0FBTyxvQkFBb0I7SUFvQi9CLFlBQ1UsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFuQmYsU0FBSSxHQUFTLE1BQU0sQ0FBQztRQUNwQixVQUFLLEdBQVksSUFBSSxDQUFDO1FBQ3RCLFNBQUksR0FBYSxJQUFJLENBQUM7UUFHdEIsY0FBUyxHQUFjLFFBQVEsQ0FBQztRQUNoQyxXQUFNLEdBQVcsTUFBTSxDQUFDO1FBQ3hCLFVBQUssR0FBVyxNQUFNLENBQUM7UUFHdEIsa0JBQWEsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUM3RCxpQkFBWSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTVELGtCQUFhLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFDN0QsaUJBQVksR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztR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QUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUVFLE1BQU07c0JBQWQsS0FBSztnQkFNOEMsZ0JBQWdCO3NCQUFuRSxTQUFTO3VCQUFDLGdCQUFnQixFQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTs7QUFpSXBELElBQUssYUFLSjtBQUxELFdBQUssYUFBYTtJQUNoQixpREFBYyxDQUFBO0lBQ2QsNkRBQWMsQ0FBQTtJQUNkLDZEQUFjLENBQUE7SUFDZCx1REFBYyxDQUFBO0FBQ2hCLENBQUMsRUFMSSxhQUFhLEtBQWIsYUFBYSxRQUtqQjtBQUNELE1BQU0sWUFBWSxHQUFHO0lBQ25CLEdBQUcsRUFBRSxRQUFRO0lBQ2IsS0FBSyxFQUFFLE1BQU07SUFDYixNQUFNLEVBQUUsS0FBSztJQUNiLElBQUksRUFBRSxPQUFPO0NBQ2QsQ0FBQztBQUNGLE1BQU0sU0FBUyxHQUFHO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEdBQUcsRUFBRSxRQUFRO0lBQ2IsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsT0FBTztDQUNmLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEVtYmVkZGVkVmlld1JlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmLCBWaWV3UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgQ29tcHV0ZVBvc2l0aW9uUmV0dXJuLCBmbGlwLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIFBsYWNlbWVudCwgc2hpZnQsIGFycm93IH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XHJcbmltcG9ydCB7IFRpbWVvdXQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlJztcclxuXHJcbnR5cGUgRmlsbCA9ICdzb2xpZCcgfCAnb3V0bGluZScgfCAnYmx1cicgfCAnY2xlYXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW9uLXBvcG92ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zaW9uLXBvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Npb24tcG9wb3Zlci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU0lvblBvcG92ZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBASW5wdXQoKSBmaWxsOiBGaWxsID0gJ2JsdXInO1xyXG4gIEBJbnB1dCgpIGFycm93OiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBmbGlwIDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cclxuICBASW5wdXQoKSBwbGFjZW1lbnQ6IFBsYWNlbWVudCA9ICdib3R0b20nO1xyXG4gIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gJ2F1dG8nO1xyXG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnYXV0byc7XHJcblxyXG5cclxuICBAT3V0cHV0KCkgb25XaWxsUHJlc2VudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBvbkRpZFByZXNlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQE91dHB1dCgpIG9uV2lsbERpc21pc3M6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgb25EaWREaXNtaXNzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBJbnB1dCgpIGFuY2hvcjogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxyXG4gICkgeyB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3BvcG92ZXJXcmFwcGVyJyAsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjb250ZW50Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBcclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAvL1RPRE86IFVzZSBSZW5kZXJlcjIgdG8gYWRkIGV2ZW50IGxpc3RlbmVycyBmb3IgYmV0dGVyIEFuZ3VsYXIgY29tcGF0aWJpbGl0eSB3aGVuIHVwZGF0aW5nIHRvIEFuZ3VsYXIgMTlcclxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgICAvLyBSdW4gYmFjayBpbnNpZGUgQW5ndWxhcidzIHpvbmUgd2hlbiBoYW5kbGluZyB0aGUgZXZlbnRcclxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgaWYoIXRoaXMuX2luc3RhbmNlKXsgcmV0dXJuO31cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgIXRoaXMuX2luc3RhbmNlLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSAmJlxyXG4gICAgICAgICAgICAhdGhpcy5hbmNob3IuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNtaXNzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcbiAgICAgIFxyXG4gICAgICAvLyBVc2UgdGhlIG5hdGl2ZSBET00gQVBJIGRpcmVjdGx5IHdpdGggY2FwdHVyZSBwaGFzZVxyXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyLCB0cnVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBkb2N1bWVudENsaWNrTGlzdGVuZXI6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcclxuICB2aWV3UmVmPzogVmlld1JlZjtcclxuXHJcbiAgcHJpdmF0ZSBfZW1iZWRkZWRWaWV3PzogRW1iZWRkZWRWaWV3UmVmPGFueT4gfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBnZXQgX2luc3RhbmNlKCk6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnRlbnRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBnZXQgYXJyb3dFbCgpOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5faW5zdGFuY2UucXVlcnlTZWxlY3RvcignLnBvcG92ZXItYXJyb3cnKSBhcyBIVE1MRWxlbWVudDtcclxuICB9XHJcbiAgXHJcbiAgcHJpdmF0ZSBjbGVhbnVwQXV0b1VwZGF0ZT86ICgpID0+IHZvaWQ7XHJcbiAgcHVibGljIHN0YXRlOiBQT1BPVkVSX1NUQVRFID0gUE9QT1ZFUl9TVEFURS5JRExFO1xyXG4gIHB1YmxpYyBhc3luYyBwcmVzZW50KGV2ZW50PzogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmKHRoaXMuc3RhdGUgIT0gUE9QT1ZFUl9TVEFURS5JRExFKSB7IHJldHVybjsgfVxyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLl9pbnN0YW5jZSk7XHJcblxyXG4gICAgdGhpcy5vbldpbGxQcmVzZW50LmVtaXQoKTtcclxuICAgIFxyXG4gICAgdGhpcy5zdGF0ZSA9IFBPUE9WRVJfU1RBVEUuUFJFU0VOVElORztcclxuICAgIGNvbnN0IHJlZkVsICAgPSB0aGlzLmFuY2hvciA/IHRoaXMuYW5jaG9yIDogZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgYXJyb3dFbCA9IHRoaXMuYXJyb3dFbDtcclxuXHJcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZShyZWZFbCwgYXJyb3dFbClcclxuICAgIHRoaXMuX2luc3RhbmNlLmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTtcclxuICAgIHRoaXMuY2xlYW51cEF1dG9VcGRhdGUgPSBhdXRvVXBkYXRlKHJlZkVsLCB0aGlzLl9pbnN0YW5jZSwgYXN5bmMgKCkgPT4gdGhpcy51cGRhdGUocmVmRWwsIGFycm93RWwpKTtcclxuICAgIFxyXG4gICAgdGhpcy5zdGF0ZSA9IFBPUE9WRVJfU1RBVEUuVklTSUJMRTtcclxuICAgIHRoaXMub25EaWRQcmVzZW50LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlKHJlZkVsOiBIVE1MRWxlbWVudCwgYXJyb3dFbDogSFRNTEVsZW1lbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGNvbXB1dGVQb3NpdGlvblJldHVybjogQ29tcHV0ZVBvc2l0aW9uUmV0dXJuID0gYXdhaXQgdGhpcy5HZXRDb21wdXRlUG9zaXRpb25SZXR1cm4ocmVmRWwsIHRoaXMuX2luc3RhbmNlLCBhcnJvd0VsKTtcclxuICAgIHRoaXMuSGFuZGxlQ29tcHV0ZVBvc2l0aW9uUmV0dXJuKGNvbXB1dGVQb3NpdGlvblJldHVybiwgYXJyb3dFbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZGlzbWlzcygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmKHRoaXMuc3RhdGUgPT0gUE9QT1ZFUl9TVEFURS5JRExFKSB7IHJldHVybjsgfVxyXG4gICAgXHJcbiAgICBpZih0aGlzLmNsZWFudXBBdXRvVXBkYXRlKSB7XHJcbiAgICAgIHRoaXMuY2xlYW51cEF1dG9VcGRhdGUoKTtcclxuICAgICAgdGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIHRoaXMub25XaWxsRGlzbWlzcy5lbWl0KCk7XHJcbiAgICB0aGlzLnN0YXRlID0gUE9QT1ZFUl9TVEFURS5ESVNNSVNTSU5HO1xyXG4gICAgdGhpcy5faW5zdGFuY2UuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpO1xyXG4gICAgYXdhaXQgVGltZW91dCgyMDApO1xyXG4gICAgdGhpcy5faW5zdGFuY2U/LnJlbW92ZSgpO1xyXG4gICAgdGhpcy5zdGF0ZSA9IFBPUE9WRVJfU1RBVEUuSURMRTtcclxuICAgIHRoaXMub25EaWREaXNtaXNzLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIEhhbmRsZUNvbXB1dGVQb3NpdGlvblJldHVybihjb21wdXRlUG9zaXRpb25SZXR1cm46IENvbXB1dGVQb3NpdGlvblJldHVybiwgYXJyb3dFbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5faW5zdGFuY2Uuc3R5bGUsIHtcclxuICAgICAgbGVmdDogYCR7Y29tcHV0ZVBvc2l0aW9uUmV0dXJuLnh9cHhgLFxyXG4gICAgICB0b3A6ICBgJHtjb21wdXRlUG9zaXRpb25SZXR1cm4ueX1weGAsXHJcbiAgICAgIHdpZHRoIDogdGhpcy53aWR0aCxcclxuICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcclxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXHJcbiAgICB9KTtcclxuICAgIGlmKGNvbXB1dGVQb3NpdGlvblJldHVybi5taWRkbGV3YXJlRGF0YS5hcnJvdyl7XHJcbiAgICAgIGNvbnN0IHsgeDogYXJyb3dYLCB5OiBhcnJvd1kgfSA9IGNvbXB1dGVQb3NpdGlvblJldHVybi5taWRkbGV3YXJlRGF0YS5hcnJvdztcclxuICAgICAgY29uc3QgcG9zaXRpb24gPSBjb21wdXRlUG9zaXRpb25SZXR1cm4ucGxhY2VtZW50LnNwbGl0KCctJylbMF07XHJcbiAgICAgIGNvbnN0IHN0YXRpY1NpZGUgPSBTVEFUSUNfU0lERVNbcG9zaXRpb25dO1xyXG4gICAgICBPYmplY3QuYXNzaWduKGFycm93RWwuc3R5bGUsIHtcclxuICAgICAgICBsZWZ0OiBhcnJvd1ggIT0gbnVsbCA/IGAke2Fycm93WH1weGAgOiAnJyxcclxuICAgICAgICB0b3AgOiBhcnJvd1kgIT0gbnVsbCA/IGAke2Fycm93WX1weGAgOiAnJyxcclxuICAgICAgICByaWdodCA6ICcnLFxyXG4gICAgICAgIGJvdHRvbTogJycsXHJcbiAgICAgICAgW3N0YXRpY1NpZGVdOiBgLTdweGAsXHJcbiAgICAgIH0pO1xyXG4gICAgICBhcnJvd0VsLnN0eWxlLnNldFByb3BlcnR5KGAtLXJvdGF0aW9uYCwgUk9UQVRJT05TW3Bvc2l0aW9uXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMuX2luc3RhbmNlKSB7XHJcbiAgICAgIHRoaXMuX2luc3RhbmNlPy5yZW1vdmUoKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuX2VtYmVkZGVkVmlldykge1xyXG4gICAgICB0aGlzLl9lbWJlZGRlZFZpZXcuZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLl9lbWJlZGRlZFZpZXcgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIsIHRydWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudmlld1JlZikge1xyXG4gICAgICB0aGlzLnZpZXdSZWYuZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLnZpZXdSZWYgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBHZXRDb21wdXRlUG9zaXRpb25SZXR1cm4ocmVmRWw6IEhUTUxFbGVtZW50LCBwb3BFbDogSFRNTEVsZW1lbnQsIGFycm93RWw6IEhUTUxFbGVtZW50KTogUHJvbWlzZTxDb21wdXRlUG9zaXRpb25SZXR1cm4+IHtcclxuICAgIHJldHVybiBhd2FpdCBjb21wdXRlUG9zaXRpb24ocmVmRWwsIHBvcEVsLCB7XHJcbiAgICAgIHBsYWNlbWVudDogdGhpcy5wbGFjZW1lbnQsXHJcbiAgICAgIG1pZGRsZXdhcmU6IFsgXHJcbiAgICAgICAgb2Zmc2V0KDEwKSwgXHJcbiAgICAgICAgdGhpcy5mbGlwICA/IGZsaXAoeyBjcm9zc0F4aXM6IGZhbHNlIH0pIDogdW5kZWZpbmVkLCBcclxuICAgICAgICBzaGlmdCh7IGxpbWl0ZXI6IGxpbWl0U2hpZnQoKSwgcGFkZGluZzogNSB9KSwgXHJcbiAgICAgICAgdGhpcy5hcnJvdyA/IGFycm93KHsgZWxlbWVudDogYXJyb3dFbCwgcGFkZGluZzogMTAgfSkgOiB1bmRlZmluZWQsXHJcbiAgICAgIF0uZmlsdGVyKHAgPT4gcCksXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmVudW0gUE9QT1ZFUl9TVEFURXtcclxuICBJRExFICAgICAgID0gMSxcclxuICBQUkVTRU5USU5HID0gMixcclxuICBESVNNSVNTSU5HID0gMyxcclxuICBWSVNJQkxFICAgID0gNFxyXG59XHJcbmNvbnN0IFNUQVRJQ19TSURFUyA9IHtcclxuICB0b3A6IFwiYm90dG9tXCIsXHJcbiAgcmlnaHQ6IFwibGVmdFwiLFxyXG4gIGJvdHRvbTogXCJ0b3BcIixcclxuICBsZWZ0OiBcInJpZ2h0XCJcclxufTtcclxuY29uc3QgUk9UQVRJT05TID0ge1xyXG4gIGJvdHRvbTogXCIxMzVkZWdcIixcclxuICB0b3A6IFwiMzE1ZGVnXCIsXHJcbiAgbGVmdDogXCIyMjVkZWdcIixcclxuICByaWdodDogXCI0NWRlZ1wiLFxyXG59XHJcbiIsIjxkaXYgI3BvcG92ZXJXcmFwcGVyIFxyXG4gIGNsYXNzPVwicG9wb3Zlci13cmFwcGVyIHRyYW5zbHVjaWQtYm9yZGVyXCJcclxuICBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFwiXHJcbiAgW3N0eWxlLndpZHRoXT1cIndpZHRoXCJcclxuICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICdiZy1saWdodCcgICAgICAgIDogZmlsbCA9PSAnc29saWQnLFxyXG4gICAgICAnYmctdHJhbnNwYXJlbnQnICA6IGZpbGwgPT0gJ291dGxpbmUnLFxyXG4gICAgICAnYmctbGlnaHQvOTAnICAgICA6IGZpbGwgPT0gJ2JsdXInLFxyXG4gICAgICAnIWJvcmRlci0wJyAgICAgICA6IGZpbGwgPT0gJ2NsZWFyJyxcclxuICAgIH1cIlxyXG4+IFxyXG4gIDxkaXYgI3BvcG92ZXJBcnJvdyBjbGFzcz1cInBvcG92ZXItYXJyb3cgc2l6ZS00IHRyYW5zbHVjaWQtYm9yZGVyXCJcclxuICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgJ2JnLWxpZ2h0JyAgICAgICAgOiBmaWxsID09ICdzb2xpZCcsXHJcbiAgICAgICdiZy10cmFuc3BhcmVudCcgIDogZmlsbCA9PSAnb3V0bGluZScsXHJcbiAgICAgICdiZy1saWdodC85MCcgICAgIDogZmlsbCA9PSAnYmx1cicsXHJcbiAgICAgICchYm9yZGVyLTAnICAgICAgIDogZmlsbCA9PSAnY2xlYXInLFxyXG4gICAgfVwiXHJcbiAgPjwvZGl2PlxyXG4gIDxuZy1jb250ZW50ICNjb250ZW50PjwvbmctY29udGVudD5cclxuPC9kaXY+Il19
|