acai-ui 1.65.5
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/CHANGELOG.md +795 -0
- package/README.md +64 -0
- package/dist/acai-ui.css +14627 -0
- package/dist/components/actions/acai-ui-actions.d.ts +3 -0
- package/dist/components/async-select/acai-ui-async-select-interface.d.ts +48 -0
- package/dist/components/async-select/acai-ui-async-select-interface.d.ts.map +1 -0
- package/dist/components/async-select/acai-ui-async-select.d.ts +3 -0
- package/dist/components/badge/acai-ui-badge-interface.d.ts +20 -0
- package/dist/components/badge/acai-ui-badge-interface.d.ts.map +1 -0
- package/dist/components/badge/acai-ui-badge.d.ts +3 -0
- package/dist/components/banner/acai-ui-banner-interface.d.ts +16 -0
- package/dist/components/banner/acai-ui-banner-interface.d.ts.map +1 -0
- package/dist/components/banner/acai-ui-banner.d.ts +3 -0
- package/dist/components/button/acai-ui-button-interface.d.ts +21 -0
- package/dist/components/button/acai-ui-button-interface.d.ts.map +1 -0
- package/dist/components/button/acai-ui-button.d.ts +3 -0
- package/dist/components/card/acai-ui-card-interface.d.ts +14 -0
- package/dist/components/card/acai-ui-card-interface.d.ts.map +1 -0
- package/dist/components/card/acai-ui-card.d.ts +3 -0
- package/dist/components/chart/acai-ui-chart-interface.d.ts +190 -0
- package/dist/components/chart/acai-ui-chart-interface.d.ts.map +1 -0
- package/dist/components/chart/acai-ui-chart.d.ts +3 -0
- package/dist/components/chart/chart-a11y.d.ts +40 -0
- package/dist/components/chart/chart-a11y.d.ts.map +1 -0
- package/dist/components/chart/chart-caminhos.d.ts +91 -0
- package/dist/components/chart/chart-caminhos.d.ts.map +1 -0
- package/dist/components/chart/chart-cartesiano.d.ts +3 -0
- package/dist/components/chart/chart-dados.d.ts +74 -0
- package/dist/components/chart/chart-dados.d.ts.map +1 -0
- package/dist/components/chart/chart-escalas.d.ts +45 -0
- package/dist/components/chart/chart-escalas.d.ts.map +1 -0
- package/dist/components/chart/chart-formatar.d.ts +21 -0
- package/dist/components/chart/chart-formatar.d.ts.map +1 -0
- package/dist/components/chart/chart-gauge.d.ts +3 -0
- package/dist/components/chart/chart-headless.d.ts +29 -0
- package/dist/components/chart/chart-headless.d.ts.map +1 -0
- package/dist/components/chart/chart-imagem.d.ts +51 -0
- package/dist/components/chart/chart-imagem.d.ts.map +1 -0
- package/dist/components/chart/chart-layout.d.ts +59 -0
- package/dist/components/chart/chart-layout.d.ts.map +1 -0
- package/dist/components/chart/chart-legenda.d.ts +3 -0
- package/dist/components/chart/chart-pizza.d.ts +3 -0
- package/dist/components/chart/chart-plano.d.ts +201 -0
- package/dist/components/chart/chart-plano.d.ts.map +1 -0
- package/dist/components/chart/chart-rotulos.d.ts +10 -0
- package/dist/components/chart/chart-rotulos.d.ts.map +1 -0
- package/dist/components/chart/chart-tabela.d.ts +3 -0
- package/dist/components/chart/chart-ticks.d.ts +35 -0
- package/dist/components/chart/chart-ticks.d.ts.map +1 -0
- package/dist/components/checkbox/acai-ui-checkbox-interface.d.ts +16 -0
- package/dist/components/checkbox/acai-ui-checkbox-interface.d.ts.map +1 -0
- package/dist/components/checkbox/acai-ui-checkbox.d.ts +3 -0
- package/dist/components/chip/acai-ui-chip-interface.d.ts +17 -0
- package/dist/components/chip/acai-ui-chip-interface.d.ts.map +1 -0
- package/dist/components/chip/acai-ui-chip.d.ts +3 -0
- package/dist/components/code/acai-ui-code-interface.d.ts +44 -0
- package/dist/components/code/acai-ui-code-interface.d.ts.map +1 -0
- package/dist/components/code/acai-ui-code.d.ts +3 -0
- package/dist/components/code/dobras-json.d.ts +14 -0
- package/dist/components/code/dobras-json.d.ts.map +1 -0
- package/dist/components/confirm/acai-ui-confirm.d.ts +3 -0
- package/dist/components/container/acai-ui-container-interface.d.ts +29 -0
- package/dist/components/container/acai-ui-container-interface.d.ts.map +1 -0
- package/dist/components/container/acai-ui-container.d.ts +3 -0
- package/dist/components/date/acai-ui-date-interface.d.ts +19 -0
- package/dist/components/date/acai-ui-date-interface.d.ts.map +1 -0
- package/dist/components/date/acai-ui-date.d.ts +3 -0
- package/dist/components/date-range/acai-ui-date-range-interface.d.ts +27 -0
- package/dist/components/date-range/acai-ui-date-range-interface.d.ts.map +1 -0
- package/dist/components/date-range/acai-ui-date-range.d.ts +3 -0
- package/dist/components/datetime/acai-ui-datetime-interface.d.ts +10 -0
- package/dist/components/datetime/acai-ui-datetime-interface.d.ts.map +1 -0
- package/dist/components/datetime/acai-ui-datetime.d.ts +3 -0
- package/dist/components/dialog/acai-ui-dialog-interface.d.ts +17 -0
- package/dist/components/dialog/acai-ui-dialog-interface.d.ts.map +1 -0
- package/dist/components/dialog/acai-ui-dialog.d.ts +3 -0
- package/dist/components/divider/acai-ui-divider-interface.d.ts +5 -0
- package/dist/components/divider/acai-ui-divider-interface.d.ts.map +1 -0
- package/dist/components/divider/acai-ui-divider.d.ts +3 -0
- package/dist/components/drawer/acai-ui-drawer-interface.d.ts +97 -0
- package/dist/components/drawer/acai-ui-drawer-interface.d.ts.map +1 -0
- package/dist/components/drawer/acai-ui-drawer.d.ts +3 -0
- package/dist/components/drawer/drawer-sidebar-helper.d.ts +4 -0
- package/dist/components/drawer/drawer-sidebar-helper.d.ts.map +1 -0
- package/dist/components/dropdown/acai-ui-dropdown-interface.d.ts +35 -0
- package/dist/components/dropdown/acai-ui-dropdown-interface.d.ts.map +1 -0
- package/dist/components/dropdown/acai-ui-dropdown-item.d.ts +3 -0
- package/dist/components/dropdown/acai-ui-dropdown.d.ts +3 -0
- package/dist/components/error-log/acai-ui-error-log-interface.d.ts +59 -0
- package/dist/components/error-log/acai-ui-error-log-interface.d.ts.map +1 -0
- package/dist/components/error-log/acai-ui-error-log-json-tree.d.ts +3 -0
- package/dist/components/error-log/acai-ui-error-log-redigir.d.ts +28 -0
- package/dist/components/error-log/acai-ui-error-log-redigir.d.ts.map +1 -0
- package/dist/components/error-log/acai-ui-error-log.d.ts +3 -0
- package/dist/components/file/acai-ui-file-interface.d.ts +13 -0
- package/dist/components/file/acai-ui-file-interface.d.ts.map +1 -0
- package/dist/components/file/acai-ui-file.d.ts +3 -0
- package/dist/components/form/acai-ui-form-interface.d.ts +37 -0
- package/dist/components/form/acai-ui-form-interface.d.ts.map +1 -0
- package/dist/components/form/acai-ui-form.d.ts +3 -0
- package/dist/components/help/acai-ui-help-interface.d.ts +184 -0
- package/dist/components/help/acai-ui-help-interface.d.ts.map +1 -0
- package/dist/components/help/acai-ui-help.d.ts +3 -0
- package/dist/components/help/acai-ui-tour.d.ts +3 -0
- package/dist/components/help/tour-escolha.d.ts +62 -0
- package/dist/components/help/tour-escolha.d.ts.map +1 -0
- package/dist/components/help/tour-posicionar.d.ts +39 -0
- package/dist/components/help/tour-posicionar.d.ts.map +1 -0
- package/dist/components/help/tour-registry.d.ts +54 -0
- package/dist/components/help/tour-registry.d.ts.map +1 -0
- package/dist/components/help/use-tour-visto.d.ts +11 -0
- package/dist/components/help/use-tour-visto.d.ts.map +1 -0
- package/dist/components/icon/acai-ui-icon-interface.d.ts +12 -0
- package/dist/components/icon/acai-ui-icon-interface.d.ts.map +1 -0
- package/dist/components/icon/acai-ui-icon.d.ts +3 -0
- package/dist/components/index.d.ts +89 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/input/acai-ui-input-interface.d.ts +20 -0
- package/dist/components/input/acai-ui-input-interface.d.ts.map +1 -0
- package/dist/components/input/acai-ui-input.d.ts +3 -0
- package/dist/components/modal/acai-ui-modal-interface.d.ts +16 -0
- package/dist/components/modal/acai-ui-modal-interface.d.ts.map +1 -0
- package/dist/components/modal/acai-ui-modal.d.ts +3 -0
- package/dist/components/pagination/acai-ui-pagination-interface.d.ts +9 -0
- package/dist/components/pagination/acai-ui-pagination-interface.d.ts.map +1 -0
- package/dist/components/pagination/acai-ui-pagination.d.ts +3 -0
- package/dist/components/preferences/acai-ui-preferences-interface.d.ts +5 -0
- package/dist/components/preferences/acai-ui-preferences-interface.d.ts.map +1 -0
- package/dist/components/preferences/acai-ui-preferences.d.ts +3 -0
- package/dist/components/progress/acai-ui-progress-interface.d.ts +18 -0
- package/dist/components/progress/acai-ui-progress-interface.d.ts.map +1 -0
- package/dist/components/progress/acai-ui-progress.d.ts +3 -0
- package/dist/components/radio/acai-ui-radio-interface.d.ts +13 -0
- package/dist/components/radio/acai-ui-radio-interface.d.ts.map +1 -0
- package/dist/components/radio/acai-ui-radio.d.ts +3 -0
- package/dist/components/section/acai-ui-section.d.ts +3 -0
- package/dist/components/select/acai-ui-select-interface.d.ts +18 -0
- package/dist/components/select/acai-ui-select-interface.d.ts.map +1 -0
- package/dist/components/select/acai-ui-select.d.ts +3 -0
- package/dist/components/session-clock/acai-ui-session-clock.d.ts +3 -0
- package/dist/components/stepper/acai-ui-step-interface.d.ts +18 -0
- package/dist/components/stepper/acai-ui-step-interface.d.ts.map +1 -0
- package/dist/components/stepper/acai-ui-step.d.ts +3 -0
- package/dist/components/stepper/acai-ui-stepper-interface.d.ts +53 -0
- package/dist/components/stepper/acai-ui-stepper-interface.d.ts.map +1 -0
- package/dist/components/stepper/acai-ui-stepper.d.ts +3 -0
- package/dist/components/swagger/acai-ui-swagger-interface.d.ts +53 -0
- package/dist/components/swagger/acai-ui-swagger-interface.d.ts.map +1 -0
- package/dist/components/swagger/acai-ui-swagger-operacao.d.ts +3 -0
- package/dist/components/swagger/acai-ui-swagger-requisicao.d.ts +76 -0
- package/dist/components/swagger/acai-ui-swagger-requisicao.d.ts.map +1 -0
- package/dist/components/swagger/acai-ui-swagger-schema.d.ts +3 -0
- package/dist/components/swagger/acai-ui-swagger.d.ts +3 -0
- package/dist/components/swagger/openapi-normalizar.d.ts +51 -0
- package/dist/components/swagger/openapi-normalizar.d.ts.map +1 -0
- package/dist/components/swagger/openapi-tipos.d.ts +167 -0
- package/dist/components/swagger/openapi-tipos.d.ts.map +1 -0
- package/dist/components/table/acai-ui-table-interface.d.ts +47 -0
- package/dist/components/table/acai-ui-table-interface.d.ts.map +1 -0
- package/dist/components/table/acai-ui-table-justificativa.d.ts +3 -0
- package/dist/components/table/acai-ui-table.d.ts +3 -0
- package/dist/components/tabs/acai-ui-tab.d.ts +3 -0
- package/dist/components/tabs/acai-ui-tabs-interface.d.ts +32 -0
- package/dist/components/tabs/acai-ui-tabs-interface.d.ts.map +1 -0
- package/dist/components/tabs/acai-ui-tabs.d.ts +3 -0
- package/dist/components/time/acai-ui-time-interface.d.ts +15 -0
- package/dist/components/time/acai-ui-time-interface.d.ts.map +1 -0
- package/dist/components/time/acai-ui-time.d.ts +3 -0
- package/dist/components/toggle/acai-ui-toggle-interface.d.ts +12 -0
- package/dist/components/toggle/acai-ui-toggle-interface.d.ts.map +1 -0
- package/dist/components/toggle/acai-ui-toggle.d.ts +3 -0
- package/dist/components/tooltip/acai-ui-tooltip-interface.d.ts +9 -0
- package/dist/components/tooltip/acai-ui-tooltip-interface.d.ts.map +1 -0
- package/dist/components/tooltip/acai-ui-tooltip.d.ts +3 -0
- package/dist/components/user-menu/acai-ui-user-menu-interface.d.ts +14 -0
- package/dist/components/user-menu/acai-ui-user-menu-interface.d.ts.map +1 -0
- package/dist/components/user-menu/acai-ui-user-menu.d.ts +3 -0
- package/dist/components/validation/acai-ui-validation.d.ts +3 -0
- package/dist/constants/chart-paleta.d.ts +47 -0
- package/dist/constants/chart-paleta.d.ts.map +1 -0
- package/dist/constants/efeitos.d.ts +22 -0
- package/dist/constants/efeitos.d.ts.map +1 -0
- package/dist/constants/index.d.ts +13 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/lista-icons.d.ts +156 -0
- package/dist/constants/lista-icons.d.ts.map +1 -0
- package/dist/constants/medidas-espacos.d.ts +15 -0
- package/dist/constants/medidas-espacos.d.ts.map +1 -0
- package/dist/constants/radius.d.ts +15 -0
- package/dist/constants/radius.d.ts.map +1 -0
- package/dist/constants/status-badge.d.ts +17 -0
- package/dist/constants/status-badge.d.ts.map +1 -0
- package/dist/hooks/filtros-url-internos.d.ts +121 -0
- package/dist/hooks/filtros-url-internos.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +18 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/notify.d.ts +8 -0
- package/dist/hooks/notify.d.ts.map +1 -0
- package/dist/hooks/use-contador-sessao.d.ts +22 -0
- package/dist/hooks/use-contador-sessao.d.ts.map +1 -0
- package/dist/hooks/use-filtros-na-url.d.ts +110 -0
- package/dist/hooks/use-filtros-na-url.d.ts.map +1 -0
- package/dist/hooks/use-leitura-voz.d.ts +60 -0
- package/dist/hooks/use-leitura-voz.d.ts.map +1 -0
- package/dist/hooks/use-listagem-na-url.d.ts +185 -0
- package/dist/hooks/use-listagem-na-url.d.ts.map +1 -0
- package/dist/hooks/use-preferencias.d.ts +60 -0
- package/dist/hooks/use-preferencias.d.ts.map +1 -0
- package/dist/hooks/use-repasse-quasar.d.ts +42 -0
- package/dist/hooks/use-repasse-quasar.d.ts.map +1 -0
- package/dist/hooks/use-tamanho-elemento.d.ts +26 -0
- package/dist/hooks/use-tamanho-elemento.d.ts.map +1 -0
- package/dist/hooks/use-tela.d.ts +84 -0
- package/dist/hooks/use-tela.d.ts.map +1 -0
- package/dist/hooks/use-validacao-visual.d.ts +40 -0
- package/dist/hooks/use-validacao-visual.d.ts.map +1 -0
- package/dist/index.cjs +249 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +249 -0
- package/dist/index.mjs.map +1 -0
- package/dist/index10.cjs +24 -0
- package/dist/index10.cjs.map +1 -0
- package/dist/index10.mjs +25 -0
- package/dist/index10.mjs.map +1 -0
- package/dist/index100.cjs +51 -0
- package/dist/index100.cjs.map +1 -0
- package/dist/index100.mjs +51 -0
- package/dist/index100.mjs.map +1 -0
- package/dist/index101.cjs +143 -0
- package/dist/index101.cjs.map +1 -0
- package/dist/index101.mjs +143 -0
- package/dist/index101.mjs.map +1 -0
- package/dist/index102.cjs +137 -0
- package/dist/index102.cjs.map +1 -0
- package/dist/index102.mjs +138 -0
- package/dist/index102.mjs.map +1 -0
- package/dist/index104.cjs +10 -0
- package/dist/index104.cjs.map +1 -0
- package/dist/index104.mjs +11 -0
- package/dist/index104.mjs.map +1 -0
- package/dist/index105.cjs +5 -0
- package/dist/index105.cjs.map +1 -0
- package/dist/index105.mjs +6 -0
- package/dist/index105.mjs.map +1 -0
- package/dist/index106.cjs +5 -0
- package/dist/index106.cjs.map +1 -0
- package/dist/index106.mjs +6 -0
- package/dist/index106.mjs.map +1 -0
- package/dist/index107.cjs +86 -0
- package/dist/index107.cjs.map +1 -0
- package/dist/index107.mjs +87 -0
- package/dist/index107.mjs.map +1 -0
- package/dist/index109.cjs +123 -0
- package/dist/index109.cjs.map +1 -0
- package/dist/index109.mjs +124 -0
- package/dist/index109.mjs.map +1 -0
- package/dist/index111.cjs +121 -0
- package/dist/index111.cjs.map +1 -0
- package/dist/index111.mjs +122 -0
- package/dist/index111.mjs.map +1 -0
- package/dist/index113.cjs +72 -0
- package/dist/index113.cjs.map +1 -0
- package/dist/index113.mjs +73 -0
- package/dist/index113.mjs.map +1 -0
- package/dist/index115.cjs +5 -0
- package/dist/index115.cjs.map +1 -0
- package/dist/index115.mjs +6 -0
- package/dist/index115.mjs.map +1 -0
- package/dist/index116.cjs +56 -0
- package/dist/index116.cjs.map +1 -0
- package/dist/index116.mjs +57 -0
- package/dist/index116.mjs.map +1 -0
- package/dist/index118.cjs +5 -0
- package/dist/index118.cjs.map +1 -0
- package/dist/index118.mjs +6 -0
- package/dist/index118.mjs.map +1 -0
- package/dist/index119.cjs +210 -0
- package/dist/index119.cjs.map +1 -0
- package/dist/index119.mjs +211 -0
- package/dist/index119.mjs.map +1 -0
- package/dist/index12.cjs +606 -0
- package/dist/index12.cjs.map +1 -0
- package/dist/index12.mjs +607 -0
- package/dist/index12.mjs.map +1 -0
- package/dist/index121.cjs +170 -0
- package/dist/index121.cjs.map +1 -0
- package/dist/index121.mjs +171 -0
- package/dist/index121.mjs.map +1 -0
- package/dist/index123.cjs +109 -0
- package/dist/index123.cjs.map +1 -0
- package/dist/index123.mjs +110 -0
- package/dist/index123.mjs.map +1 -0
- package/dist/index125.cjs +5 -0
- package/dist/index125.cjs.map +1 -0
- package/dist/index125.mjs +6 -0
- package/dist/index125.mjs.map +1 -0
- package/dist/index126.cjs +4 -0
- package/dist/index126.cjs.map +1 -0
- package/dist/index126.mjs +5 -0
- package/dist/index126.mjs.map +1 -0
- package/dist/index127.cjs +300 -0
- package/dist/index127.cjs.map +1 -0
- package/dist/index127.mjs +301 -0
- package/dist/index127.mjs.map +1 -0
- package/dist/index130.cjs +5 -0
- package/dist/index130.cjs.map +1 -0
- package/dist/index130.mjs +6 -0
- package/dist/index130.mjs.map +1 -0
- package/dist/index131.cjs +5 -0
- package/dist/index131.cjs.map +1 -0
- package/dist/index131.mjs +6 -0
- package/dist/index131.mjs.map +1 -0
- package/dist/index132.cjs +128 -0
- package/dist/index132.cjs.map +1 -0
- package/dist/index132.mjs +129 -0
- package/dist/index132.mjs.map +1 -0
- package/dist/index134.cjs +4 -0
- package/dist/index134.cjs.map +1 -0
- package/dist/index134.mjs +5 -0
- package/dist/index134.mjs.map +1 -0
- package/dist/index135.cjs +180 -0
- package/dist/index135.cjs.map +1 -0
- package/dist/index135.mjs +181 -0
- package/dist/index135.mjs.map +1 -0
- package/dist/index137.cjs +83 -0
- package/dist/index137.cjs.map +1 -0
- package/dist/index137.mjs +84 -0
- package/dist/index137.mjs.map +1 -0
- package/dist/index139.cjs +284 -0
- package/dist/index139.cjs.map +1 -0
- package/dist/index139.mjs +285 -0
- package/dist/index139.mjs.map +1 -0
- package/dist/index14.cjs +124 -0
- package/dist/index14.cjs.map +1 -0
- package/dist/index14.mjs +125 -0
- package/dist/index14.mjs.map +1 -0
- package/dist/index141.cjs +58 -0
- package/dist/index141.cjs.map +1 -0
- package/dist/index141.mjs +59 -0
- package/dist/index141.mjs.map +1 -0
- package/dist/index143.cjs +5 -0
- package/dist/index143.cjs.map +1 -0
- package/dist/index143.mjs +6 -0
- package/dist/index143.mjs.map +1 -0
- package/dist/index144.cjs +399 -0
- package/dist/index144.cjs.map +1 -0
- package/dist/index144.mjs +400 -0
- package/dist/index144.mjs.map +1 -0
- package/dist/index146.cjs +305 -0
- package/dist/index146.cjs.map +1 -0
- package/dist/index146.mjs +306 -0
- package/dist/index146.mjs.map +1 -0
- package/dist/index149.cjs +109 -0
- package/dist/index149.cjs.map +1 -0
- package/dist/index149.mjs +110 -0
- package/dist/index149.mjs.map +1 -0
- package/dist/index152.cjs +5 -0
- package/dist/index152.cjs.map +1 -0
- package/dist/index152.mjs +6 -0
- package/dist/index152.mjs.map +1 -0
- package/dist/index153.cjs +5 -0
- package/dist/index153.cjs.map +1 -0
- package/dist/index153.mjs +6 -0
- package/dist/index153.mjs.map +1 -0
- package/dist/index154.cjs +4 -0
- package/dist/index154.cjs.map +1 -0
- package/dist/index154.mjs +5 -0
- package/dist/index154.mjs.map +1 -0
- package/dist/index155.cjs +5 -0
- package/dist/index155.cjs.map +1 -0
- package/dist/index155.mjs +6 -0
- package/dist/index155.mjs.map +1 -0
- package/dist/index156.cjs +5 -0
- package/dist/index156.cjs.map +1 -0
- package/dist/index156.mjs +6 -0
- package/dist/index156.mjs.map +1 -0
- package/dist/index157.cjs +5 -0
- package/dist/index157.cjs.map +1 -0
- package/dist/index157.mjs +6 -0
- package/dist/index157.mjs.map +1 -0
- package/dist/index158.cjs +4 -0
- package/dist/index158.cjs.map +1 -0
- package/dist/index158.mjs +5 -0
- package/dist/index158.mjs.map +1 -0
- package/dist/index159.cjs +59 -0
- package/dist/index159.cjs.map +1 -0
- package/dist/index159.mjs +60 -0
- package/dist/index159.mjs.map +1 -0
- package/dist/index16.cjs +89 -0
- package/dist/index16.cjs.map +1 -0
- package/dist/index16.mjs +90 -0
- package/dist/index16.mjs.map +1 -0
- package/dist/index161.cjs +5 -0
- package/dist/index161.cjs.map +1 -0
- package/dist/index161.mjs +6 -0
- package/dist/index161.mjs.map +1 -0
- package/dist/index162.cjs +119 -0
- package/dist/index162.cjs.map +1 -0
- package/dist/index162.mjs +120 -0
- package/dist/index162.mjs.map +1 -0
- package/dist/index164.cjs +33 -0
- package/dist/index164.cjs.map +1 -0
- package/dist/index164.mjs +34 -0
- package/dist/index164.mjs.map +1 -0
- package/dist/index166.cjs +5 -0
- package/dist/index166.cjs.map +1 -0
- package/dist/index166.mjs +6 -0
- package/dist/index166.mjs.map +1 -0
- package/dist/index167.cjs +324 -0
- package/dist/index167.cjs.map +1 -0
- package/dist/index167.mjs +325 -0
- package/dist/index167.mjs.map +1 -0
- package/dist/index17.cjs +419 -0
- package/dist/index17.cjs.map +1 -0
- package/dist/index17.mjs +420 -0
- package/dist/index17.mjs.map +1 -0
- package/dist/index170.cjs +38 -0
- package/dist/index170.cjs.map +1 -0
- package/dist/index170.mjs +39 -0
- package/dist/index170.mjs.map +1 -0
- package/dist/index172.cjs +5 -0
- package/dist/index172.cjs.map +1 -0
- package/dist/index172.mjs +6 -0
- package/dist/index172.mjs.map +1 -0
- package/dist/index173.cjs +202 -0
- package/dist/index173.cjs.map +1 -0
- package/dist/index173.mjs +203 -0
- package/dist/index173.mjs.map +1 -0
- package/dist/index175.cjs +5 -0
- package/dist/index175.cjs.map +1 -0
- package/dist/index175.mjs +6 -0
- package/dist/index175.mjs.map +1 -0
- package/dist/index176.cjs +53 -0
- package/dist/index176.cjs.map +1 -0
- package/dist/index176.mjs +54 -0
- package/dist/index176.mjs.map +1 -0
- package/dist/index178.cjs +13 -0
- package/dist/index178.cjs.map +1 -0
- package/dist/index178.mjs +13 -0
- package/dist/index178.mjs.map +1 -0
- package/dist/index179.cjs +18 -0
- package/dist/index179.cjs.map +1 -0
- package/dist/index179.mjs +18 -0
- package/dist/index179.mjs.map +1 -0
- package/dist/index180.cjs +262 -0
- package/dist/index180.cjs.map +1 -0
- package/dist/index180.mjs +262 -0
- package/dist/index180.mjs.map +1 -0
- package/dist/index181.cjs +108 -0
- package/dist/index181.cjs.map +1 -0
- package/dist/index181.mjs +109 -0
- package/dist/index181.mjs.map +1 -0
- package/dist/index182.cjs +73 -0
- package/dist/index182.cjs.map +1 -0
- package/dist/index182.mjs +73 -0
- package/dist/index182.mjs.map +1 -0
- package/dist/index183.cjs +37 -0
- package/dist/index183.cjs.map +1 -0
- package/dist/index183.mjs +37 -0
- package/dist/index183.mjs.map +1 -0
- package/dist/index184.cjs +16 -0
- package/dist/index184.cjs.map +1 -0
- package/dist/index184.mjs +16 -0
- package/dist/index184.mjs.map +1 -0
- package/dist/index185.cjs +31 -0
- package/dist/index185.cjs.map +1 -0
- package/dist/index185.mjs +31 -0
- package/dist/index185.mjs.map +1 -0
- package/dist/index186.cjs +460 -0
- package/dist/index186.cjs.map +1 -0
- package/dist/index186.mjs +461 -0
- package/dist/index186.mjs.map +1 -0
- package/dist/index187.cjs +154 -0
- package/dist/index187.cjs.map +1 -0
- package/dist/index187.mjs +154 -0
- package/dist/index187.mjs.map +1 -0
- package/dist/index188.cjs +40 -0
- package/dist/index188.cjs.map +1 -0
- package/dist/index188.mjs +40 -0
- package/dist/index188.mjs.map +1 -0
- package/dist/index189.cjs +66 -0
- package/dist/index189.cjs.map +1 -0
- package/dist/index189.mjs +66 -0
- package/dist/index189.mjs.map +1 -0
- package/dist/index19.cjs +135 -0
- package/dist/index19.cjs.map +1 -0
- package/dist/index19.mjs +136 -0
- package/dist/index19.mjs.map +1 -0
- package/dist/index190.cjs +142 -0
- package/dist/index190.cjs.map +1 -0
- package/dist/index190.mjs +143 -0
- package/dist/index190.mjs.map +1 -0
- package/dist/index191.cjs +7 -0
- package/dist/index191.cjs.map +1 -0
- package/dist/index191.mjs +8 -0
- package/dist/index191.mjs.map +1 -0
- package/dist/index192.cjs +7 -0
- package/dist/index192.cjs.map +1 -0
- package/dist/index192.mjs +8 -0
- package/dist/index192.mjs.map +1 -0
- package/dist/index193.cjs +7 -0
- package/dist/index193.cjs.map +1 -0
- package/dist/index193.mjs +8 -0
- package/dist/index193.mjs.map +1 -0
- package/dist/index194.cjs +7 -0
- package/dist/index194.cjs.map +1 -0
- package/dist/index194.mjs +8 -0
- package/dist/index194.mjs.map +1 -0
- package/dist/index195.cjs +7 -0
- package/dist/index195.cjs.map +1 -0
- package/dist/index195.mjs +8 -0
- package/dist/index195.mjs.map +1 -0
- package/dist/index196.cjs +100 -0
- package/dist/index196.cjs.map +1 -0
- package/dist/index196.mjs +100 -0
- package/dist/index196.mjs.map +1 -0
- package/dist/index197.cjs +226 -0
- package/dist/index197.cjs.map +1 -0
- package/dist/index197.mjs +226 -0
- package/dist/index197.mjs.map +1 -0
- package/dist/index198.cjs +66 -0
- package/dist/index198.cjs.map +1 -0
- package/dist/index198.mjs +66 -0
- package/dist/index198.mjs.map +1 -0
- package/dist/index199.cjs +399 -0
- package/dist/index199.cjs.map +1 -0
- package/dist/index199.mjs +399 -0
- package/dist/index199.mjs.map +1 -0
- package/dist/index200.cjs +83 -0
- package/dist/index200.cjs.map +1 -0
- package/dist/index200.mjs +83 -0
- package/dist/index200.mjs.map +1 -0
- package/dist/index201.cjs +4 -0
- package/dist/index201.cjs.map +1 -0
- package/dist/index201.mjs +5 -0
- package/dist/index201.mjs.map +1 -0
- package/dist/index202.cjs +5 -0
- package/dist/index202.cjs.map +1 -0
- package/dist/index202.mjs +6 -0
- package/dist/index202.mjs.map +1 -0
- package/dist/index203.cjs +216 -0
- package/dist/index203.cjs.map +1 -0
- package/dist/index203.mjs +217 -0
- package/dist/index203.mjs.map +1 -0
- package/dist/index205.cjs +112 -0
- package/dist/index205.cjs.map +1 -0
- package/dist/index205.mjs +113 -0
- package/dist/index205.mjs.map +1 -0
- package/dist/index207.cjs +112 -0
- package/dist/index207.cjs.map +1 -0
- package/dist/index207.mjs +113 -0
- package/dist/index207.mjs.map +1 -0
- package/dist/index209.cjs +64 -0
- package/dist/index209.cjs.map +1 -0
- package/dist/index209.mjs +65 -0
- package/dist/index209.mjs.map +1 -0
- package/dist/index21.cjs +268 -0
- package/dist/index21.cjs.map +1 -0
- package/dist/index21.mjs +269 -0
- package/dist/index21.mjs.map +1 -0
- package/dist/index211.cjs +45 -0
- package/dist/index211.cjs.map +1 -0
- package/dist/index211.mjs +46 -0
- package/dist/index211.mjs.map +1 -0
- package/dist/index213.cjs +241 -0
- package/dist/index213.cjs.map +1 -0
- package/dist/index213.mjs +241 -0
- package/dist/index213.mjs.map +1 -0
- package/dist/index214.cjs +63 -0
- package/dist/index214.cjs.map +1 -0
- package/dist/index214.mjs +63 -0
- package/dist/index214.mjs.map +1 -0
- package/dist/index215.cjs +53 -0
- package/dist/index215.cjs.map +1 -0
- package/dist/index215.mjs +53 -0
- package/dist/index215.mjs.map +1 -0
- package/dist/index216.cjs +53 -0
- package/dist/index216.cjs.map +1 -0
- package/dist/index216.mjs +53 -0
- package/dist/index216.mjs.map +1 -0
- package/dist/index217.cjs +4 -0
- package/dist/index217.cjs.map +1 -0
- package/dist/index217.mjs +5 -0
- package/dist/index217.mjs.map +1 -0
- package/dist/index218.cjs +29 -0
- package/dist/index218.cjs.map +1 -0
- package/dist/index218.mjs +30 -0
- package/dist/index218.mjs.map +1 -0
- package/dist/index219.cjs +4 -0
- package/dist/index219.cjs.map +1 -0
- package/dist/index219.mjs +5 -0
- package/dist/index219.mjs.map +1 -0
- package/dist/index23.cjs +41 -0
- package/dist/index23.cjs.map +1 -0
- package/dist/index23.mjs +42 -0
- package/dist/index23.mjs.map +1 -0
- package/dist/index24.cjs +117 -0
- package/dist/index24.cjs.map +1 -0
- package/dist/index24.mjs +118 -0
- package/dist/index24.mjs.map +1 -0
- package/dist/index26.cjs +127 -0
- package/dist/index26.cjs.map +1 -0
- package/dist/index26.mjs +128 -0
- package/dist/index26.mjs.map +1 -0
- package/dist/index28.cjs +39 -0
- package/dist/index28.cjs.map +1 -0
- package/dist/index28.mjs +40 -0
- package/dist/index28.mjs.map +1 -0
- package/dist/index29.cjs +176 -0
- package/dist/index29.cjs.map +1 -0
- package/dist/index29.mjs +177 -0
- package/dist/index29.mjs.map +1 -0
- package/dist/index3.cjs +110 -0
- package/dist/index3.cjs.map +1 -0
- package/dist/index3.mjs +110 -0
- package/dist/index3.mjs.map +1 -0
- package/dist/index31.cjs +361 -0
- package/dist/index31.cjs.map +1 -0
- package/dist/index31.mjs +362 -0
- package/dist/index31.mjs.map +1 -0
- package/dist/index33.cjs +20 -0
- package/dist/index33.cjs.map +1 -0
- package/dist/index33.mjs +21 -0
- package/dist/index33.mjs.map +1 -0
- package/dist/index34.cjs +311 -0
- package/dist/index34.cjs.map +1 -0
- package/dist/index34.mjs +312 -0
- package/dist/index34.mjs.map +1 -0
- package/dist/index36.cjs +132 -0
- package/dist/index36.cjs.map +1 -0
- package/dist/index36.mjs +133 -0
- package/dist/index36.mjs.map +1 -0
- package/dist/index38.cjs +80 -0
- package/dist/index38.cjs.map +1 -0
- package/dist/index38.mjs +81 -0
- package/dist/index38.mjs.map +1 -0
- package/dist/index4.cjs +612 -0
- package/dist/index4.cjs.map +1 -0
- package/dist/index4.mjs +613 -0
- package/dist/index4.mjs.map +1 -0
- package/dist/index40.cjs +600 -0
- package/dist/index40.cjs.map +1 -0
- package/dist/index40.mjs +601 -0
- package/dist/index40.mjs.map +1 -0
- package/dist/index42.cjs +160 -0
- package/dist/index42.cjs.map +1 -0
- package/dist/index42.mjs +160 -0
- package/dist/index42.mjs.map +1 -0
- package/dist/index43.cjs +26 -0
- package/dist/index43.cjs.map +1 -0
- package/dist/index43.mjs +27 -0
- package/dist/index43.mjs.map +1 -0
- package/dist/index44.cjs +20 -0
- package/dist/index44.cjs.map +1 -0
- package/dist/index44.mjs +21 -0
- package/dist/index44.mjs.map +1 -0
- package/dist/index45.cjs +104 -0
- package/dist/index45.cjs.map +1 -0
- package/dist/index45.mjs +104 -0
- package/dist/index45.mjs.map +1 -0
- package/dist/index46.cjs +8 -0
- package/dist/index46.cjs.map +1 -0
- package/dist/index46.mjs +9 -0
- package/dist/index46.mjs.map +1 -0
- package/dist/index47.cjs +7 -0
- package/dist/index47.cjs.map +1 -0
- package/dist/index47.mjs +8 -0
- package/dist/index47.mjs.map +1 -0
- package/dist/index48.cjs +7 -0
- package/dist/index48.cjs.map +1 -0
- package/dist/index48.mjs +8 -0
- package/dist/index48.mjs.map +1 -0
- package/dist/index49.cjs +7 -0
- package/dist/index49.cjs.map +1 -0
- package/dist/index49.mjs +8 -0
- package/dist/index49.mjs.map +1 -0
- package/dist/index50.cjs +7 -0
- package/dist/index50.cjs.map +1 -0
- package/dist/index50.mjs +8 -0
- package/dist/index50.mjs.map +1 -0
- package/dist/index51.cjs +7 -0
- package/dist/index51.cjs.map +1 -0
- package/dist/index51.mjs +8 -0
- package/dist/index51.mjs.map +1 -0
- package/dist/index52.cjs +7 -0
- package/dist/index52.cjs.map +1 -0
- package/dist/index52.mjs +8 -0
- package/dist/index52.mjs.map +1 -0
- package/dist/index53.cjs +7 -0
- package/dist/index53.cjs.map +1 -0
- package/dist/index53.mjs +8 -0
- package/dist/index53.mjs.map +1 -0
- package/dist/index54.cjs +7 -0
- package/dist/index54.cjs.map +1 -0
- package/dist/index54.mjs +8 -0
- package/dist/index54.mjs.map +1 -0
- package/dist/index55.cjs +7 -0
- package/dist/index55.cjs.map +1 -0
- package/dist/index55.mjs +8 -0
- package/dist/index55.mjs.map +1 -0
- package/dist/index56.cjs +7 -0
- package/dist/index56.cjs.map +1 -0
- package/dist/index56.mjs +8 -0
- package/dist/index56.mjs.map +1 -0
- package/dist/index57.cjs +7 -0
- package/dist/index57.cjs.map +1 -0
- package/dist/index57.mjs +8 -0
- package/dist/index57.mjs.map +1 -0
- package/dist/index58.cjs +7 -0
- package/dist/index58.cjs.map +1 -0
- package/dist/index58.mjs +8 -0
- package/dist/index58.mjs.map +1 -0
- package/dist/index59.cjs +8 -0
- package/dist/index59.cjs.map +1 -0
- package/dist/index59.mjs +9 -0
- package/dist/index59.mjs.map +1 -0
- package/dist/index6.cjs +578 -0
- package/dist/index6.cjs.map +1 -0
- package/dist/index6.mjs +579 -0
- package/dist/index6.mjs.map +1 -0
- package/dist/index60.cjs +7 -0
- package/dist/index60.cjs.map +1 -0
- package/dist/index60.mjs +8 -0
- package/dist/index60.mjs.map +1 -0
- package/dist/index61.cjs +7 -0
- package/dist/index61.cjs.map +1 -0
- package/dist/index61.mjs +8 -0
- package/dist/index61.mjs.map +1 -0
- package/dist/index62.cjs +7 -0
- package/dist/index62.cjs.map +1 -0
- package/dist/index62.mjs +8 -0
- package/dist/index62.mjs.map +1 -0
- package/dist/index63.cjs +7 -0
- package/dist/index63.cjs.map +1 -0
- package/dist/index63.mjs +8 -0
- package/dist/index63.mjs.map +1 -0
- package/dist/index64.cjs +7 -0
- package/dist/index64.cjs.map +1 -0
- package/dist/index64.mjs +8 -0
- package/dist/index64.mjs.map +1 -0
- package/dist/index65.cjs +8 -0
- package/dist/index65.cjs.map +1 -0
- package/dist/index65.mjs +9 -0
- package/dist/index65.mjs.map +1 -0
- package/dist/index66.cjs +7 -0
- package/dist/index66.cjs.map +1 -0
- package/dist/index66.mjs +8 -0
- package/dist/index66.mjs.map +1 -0
- package/dist/index67.cjs +7 -0
- package/dist/index67.cjs.map +1 -0
- package/dist/index67.mjs +8 -0
- package/dist/index67.mjs.map +1 -0
- package/dist/index68.cjs +7 -0
- package/dist/index68.cjs.map +1 -0
- package/dist/index68.mjs +8 -0
- package/dist/index68.mjs.map +1 -0
- package/dist/index69.cjs +8 -0
- package/dist/index69.cjs.map +1 -0
- package/dist/index69.mjs +9 -0
- package/dist/index69.mjs.map +1 -0
- package/dist/index70.cjs +7 -0
- package/dist/index70.cjs.map +1 -0
- package/dist/index70.mjs +8 -0
- package/dist/index70.mjs.map +1 -0
- package/dist/index71.cjs +38 -0
- package/dist/index71.cjs.map +1 -0
- package/dist/index71.mjs +38 -0
- package/dist/index71.mjs.map +1 -0
- package/dist/index72.cjs +22 -0
- package/dist/index72.cjs.map +1 -0
- package/dist/index72.mjs +22 -0
- package/dist/index72.mjs.map +1 -0
- package/dist/index73.cjs +40 -0
- package/dist/index73.cjs.map +1 -0
- package/dist/index73.mjs +40 -0
- package/dist/index73.mjs.map +1 -0
- package/dist/index74.cjs +80 -0
- package/dist/index74.cjs.map +1 -0
- package/dist/index74.mjs +80 -0
- package/dist/index74.mjs.map +1 -0
- package/dist/index75.cjs +29 -0
- package/dist/index75.cjs.map +1 -0
- package/dist/index75.mjs +29 -0
- package/dist/index75.mjs.map +1 -0
- package/dist/index76.cjs +157 -0
- package/dist/index76.cjs.map +1 -0
- package/dist/index76.mjs +157 -0
- package/dist/index76.mjs.map +1 -0
- package/dist/index77.cjs +16 -0
- package/dist/index77.cjs.map +1 -0
- package/dist/index77.mjs +16 -0
- package/dist/index77.mjs.map +1 -0
- package/dist/index78.cjs +87 -0
- package/dist/index78.cjs.map +1 -0
- package/dist/index78.mjs +87 -0
- package/dist/index78.mjs.map +1 -0
- package/dist/index79.cjs +16 -0
- package/dist/index79.cjs.map +1 -0
- package/dist/index79.mjs +16 -0
- package/dist/index79.mjs.map +1 -0
- package/dist/index8.cjs +130 -0
- package/dist/index8.cjs.map +1 -0
- package/dist/index8.mjs +131 -0
- package/dist/index8.mjs.map +1 -0
- package/dist/index80.cjs +65 -0
- package/dist/index80.cjs.map +1 -0
- package/dist/index80.mjs +65 -0
- package/dist/index80.mjs.map +1 -0
- package/dist/index81.cjs +69 -0
- package/dist/index81.cjs.map +1 -0
- package/dist/index81.mjs +69 -0
- package/dist/index81.mjs.map +1 -0
- package/dist/index82.cjs +30 -0
- package/dist/index82.cjs.map +1 -0
- package/dist/index82.mjs +30 -0
- package/dist/index82.mjs.map +1 -0
- package/dist/index83.cjs +86 -0
- package/dist/index83.cjs.map +1 -0
- package/dist/index83.mjs +86 -0
- package/dist/index83.mjs.map +1 -0
- package/dist/index84.cjs +102 -0
- package/dist/index84.cjs.map +1 -0
- package/dist/index84.mjs +102 -0
- package/dist/index84.mjs.map +1 -0
- package/dist/index85.cjs +20 -0
- package/dist/index85.cjs.map +1 -0
- package/dist/index85.mjs +20 -0
- package/dist/index85.mjs.map +1 -0
- package/dist/index86.cjs +21 -0
- package/dist/index86.cjs.map +1 -0
- package/dist/index86.mjs +21 -0
- package/dist/index86.mjs.map +1 -0
- package/dist/index87.cjs +191 -0
- package/dist/index87.cjs.map +1 -0
- package/dist/index87.mjs +191 -0
- package/dist/index87.mjs.map +1 -0
- package/dist/index88.cjs +67 -0
- package/dist/index88.cjs.map +1 -0
- package/dist/index88.mjs +67 -0
- package/dist/index88.mjs.map +1 -0
- package/dist/index89.cjs +312 -0
- package/dist/index89.cjs.map +1 -0
- package/dist/index89.mjs +312 -0
- package/dist/index89.mjs.map +1 -0
- package/dist/index90.cjs +10 -0
- package/dist/index90.cjs.map +1 -0
- package/dist/index90.mjs +10 -0
- package/dist/index90.mjs.map +1 -0
- package/dist/index91.cjs +15 -0
- package/dist/index91.cjs.map +1 -0
- package/dist/index91.mjs +15 -0
- package/dist/index91.mjs.map +1 -0
- package/dist/index92.cjs +8 -0
- package/dist/index92.cjs.map +1 -0
- package/dist/index92.mjs +8 -0
- package/dist/index92.mjs.map +1 -0
- package/dist/index93.cjs +81 -0
- package/dist/index93.cjs.map +1 -0
- package/dist/index93.mjs +81 -0
- package/dist/index93.mjs.map +1 -0
- package/dist/index94.cjs +124 -0
- package/dist/index94.cjs.map +1 -0
- package/dist/index94.mjs +124 -0
- package/dist/index94.mjs.map +1 -0
- package/dist/index95.cjs +68 -0
- package/dist/index95.cjs.map +1 -0
- package/dist/index95.mjs +68 -0
- package/dist/index95.mjs.map +1 -0
- package/dist/index96.cjs +29 -0
- package/dist/index96.cjs.map +1 -0
- package/dist/index96.mjs +29 -0
- package/dist/index96.mjs.map +1 -0
- package/dist/index97.cjs +184 -0
- package/dist/index97.cjs.map +1 -0
- package/dist/index97.mjs +184 -0
- package/dist/index97.mjs.map +1 -0
- package/dist/index98.cjs +78 -0
- package/dist/index98.cjs.map +1 -0
- package/dist/index98.mjs +78 -0
- package/dist/index98.mjs.map +1 -0
- package/dist/index99.cjs +55 -0
- package/dist/index99.cjs.map +1 -0
- package/dist/index99.mjs +55 -0
- package/dist/index99.mjs.map +1 -0
- package/dist/plugin.d.ts +37 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/scss/_badge.scss +12 -0
- package/dist/scss/_breakpoints.scss +102 -0
- package/dist/scss/_color-utilities.scss +105 -0
- package/dist/scss/_controls.scss +135 -0
- package/dist/scss/_ds-input-base.scss +302 -0
- package/dist/scss/_ds-picker-m3.scss +179 -0
- package/dist/scss/_effects.scss +42 -0
- package/dist/scss/_overlays.scss +13 -0
- package/dist/scss/_radius.scss +24 -0
- package/dist/scss/_reset.scss +60 -0
- package/dist/scss/_scrollbar.scss +78 -0
- package/dist/scss/_spacing.scss +15 -0
- package/dist/scss/_themes.scss +493 -0
- package/dist/scss/_typography.scss +50 -0
- package/dist/scss/_utilities.scss +75 -0
- package/dist/scss/_variables.scss +143 -0
- package/dist/scss/api.scss +77 -0
- package/dist/scss/tokens.scss +13 -0
- package/dist/utils/date-utils.d.ts +48 -0
- package/dist/utils/date-utils.d.ts.map +1 -0
- package/dist/utils/dialog-utils.d.ts +17 -0
- package/dist/utils/dialog-utils.d.ts.map +1 -0
- package/dist/utils/file-utils.d.ts +20 -0
- package/dist/utils/file-utils.d.ts.map +1 -0
- package/dist/utils/filtro-input.d.ts +19 -0
- package/dist/utils/filtro-input.d.ts.map +1 -0
- package/dist/utils/form-rules.d.ts +74 -0
- package/dist/utils/form-rules.d.ts.map +1 -0
- package/dist/utils/formatadores.d.ts +15 -0
- package/dist/utils/formatadores.d.ts.map +1 -0
- package/dist/utils/gerador-id.d.ts +3 -0
- package/dist/utils/gerador-id.d.ts.map +1 -0
- package/dist/utils/hint-mensagem.d.ts +11 -0
- package/dist/utils/hint-mensagem.d.ts.map +1 -0
- package/dist/utils/index.d.ts +15 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/limpar-campos.d.ts +6 -0
- package/dist/utils/limpar-campos.d.ts.map +1 -0
- package/dist/utils/masks.d.ts +16 -0
- package/dist/utils/masks.d.ts.map +1 -0
- package/dist/utils/medidas-util.d.ts +3 -0
- package/dist/utils/medidas-util.d.ts.map +1 -0
- package/dist/utils/normalizar-label.d.ts +2 -0
- package/dist/utils/normalizar-label.d.ts.map +1 -0
- package/dist/utils/scroll-elemento.d.ts +16 -0
- package/dist/utils/scroll-elemento.d.ts.map +1 -0
- package/dist/utils/validar-campo.d.ts +7 -0
- package/dist/utils/validar-campo.d.ts.map +1 -0
- package/dist/utils/validar-documentos.d.ts +12 -0
- package/dist/utils/validar-documentos.d.ts.map +1 -0
- package/dist/utils/vnode-slot.d.ts +43 -0
- package/dist/utils/vnode-slot.d.ts.map +1 -0
- package/package.json +100 -0
- package/src/components/actions/acai-ui-actions.vue +225 -0
- package/src/components/async-select/acai-ui-async-select-interface.ts +49 -0
- package/src/components/async-select/acai-ui-async-select.vue +409 -0
- package/src/components/badge/acai-ui-badge-interface.ts +19 -0
- package/src/components/badge/acai-ui-badge.vue +40 -0
- package/src/components/banner/acai-ui-banner-interface.ts +17 -0
- package/src/components/banner/acai-ui-banner-styles.scss +47 -0
- package/src/components/banner/acai-ui-banner.vue +85 -0
- package/src/components/button/acai-ui-button-interface.ts +21 -0
- package/src/components/button/acai-ui-button.vue +378 -0
- package/src/components/card/acai-ui-card-interface.ts +14 -0
- package/src/components/card/acai-ui-card-styles.scss +94 -0
- package/src/components/card/acai-ui-card.vue +148 -0
- package/src/components/chart/acai-ui-chart-interface.ts +226 -0
- package/src/components/chart/acai-ui-chart-styles.scss +141 -0
- package/src/components/chart/acai-ui-chart.vue +679 -0
- package/src/components/chart/chart-a11y.ts +184 -0
- package/src/components/chart/chart-caminhos.ts +466 -0
- package/src/components/chart/chart-cartesiano.vue +247 -0
- package/src/components/chart/chart-dados.ts +381 -0
- package/src/components/chart/chart-escalas.ts +141 -0
- package/src/components/chart/chart-formatar.ts +98 -0
- package/src/components/chart/chart-gauge.vue +152 -0
- package/src/components/chart/chart-headless.ts +130 -0
- package/src/components/chart/chart-imagem.ts +247 -0
- package/src/components/chart/chart-layout.ts +184 -0
- package/src/components/chart/chart-legenda.vue +103 -0
- package/src/components/chart/chart-pizza.vue +134 -0
- package/src/components/chart/chart-plano.ts +818 -0
- package/src/components/chart/chart-rotulos.ts +75 -0
- package/src/components/chart/chart-tabela.vue +116 -0
- package/src/components/chart/chart-ticks.ts +116 -0
- package/src/components/checkbox/acai-ui-checkbox-interface.ts +17 -0
- package/src/components/checkbox/acai-ui-checkbox.vue +114 -0
- package/src/components/chip/acai-ui-chip-interface.ts +19 -0
- package/src/components/chip/acai-ui-chip.vue +61 -0
- package/src/components/code/acai-ui-code-interface.ts +43 -0
- package/src/components/code/acai-ui-code-styles.scss +407 -0
- package/src/components/code/acai-ui-code.vue +595 -0
- package/src/components/code/dobras-json.ts +52 -0
- package/src/components/confirm/acai-ui-confirm.vue +230 -0
- package/src/components/container/acai-ui-container-interface.ts +34 -0
- package/src/components/container/acai-ui-container-styles.scss +122 -0
- package/src/components/container/acai-ui-container.vue +140 -0
- package/src/components/date/acai-ui-date-interface.ts +18 -0
- package/src/components/date/acai-ui-date.vue +191 -0
- package/src/components/date-range/acai-ui-date-range-interface.ts +27 -0
- package/src/components/date-range/acai-ui-date-range.vue +300 -0
- package/src/components/datetime/acai-ui-datetime-interface.ts +10 -0
- package/src/components/datetime/acai-ui-datetime.vue +203 -0
- package/src/components/datetime/data-hora-styles.scss +18 -0
- package/src/components/dialog/acai-ui-dialog-interface.ts +18 -0
- package/src/components/dialog/acai-ui-dialog.vue +168 -0
- package/src/components/divider/acai-ui-divider-interface.ts +4 -0
- package/src/components/divider/acai-ui-divider-styles.scss +42 -0
- package/src/components/divider/acai-ui-divider.vue +20 -0
- package/src/components/drawer/acai-ui-drawer-interface.ts +99 -0
- package/src/components/drawer/acai-ui-drawer-styles.scss +586 -0
- package/src/components/drawer/acai-ui-drawer.vue +802 -0
- package/src/components/drawer/drawer-sidebar-helper.ts +117 -0
- package/src/components/dropdown/acai-ui-dropdown-interface.ts +41 -0
- package/src/components/dropdown/acai-ui-dropdown-item.vue +36 -0
- package/src/components/dropdown/acai-ui-dropdown-styles.scss +90 -0
- package/src/components/dropdown/acai-ui-dropdown.vue +77 -0
- package/src/components/error-log/acai-ui-error-log-interface.ts +59 -0
- package/src/components/error-log/acai-ui-error-log-json-tree.vue +426 -0
- package/src/components/error-log/acai-ui-error-log-redigir.ts +74 -0
- package/src/components/error-log/acai-ui-error-log-styles.scss +137 -0
- package/src/components/error-log/acai-ui-error-log.vue +318 -0
- package/src/components/file/acai-ui-file-interface.ts +28 -0
- package/src/components/file/acai-ui-file.vue +85 -0
- package/src/components/file/arquivo-styles.scss +109 -0
- package/src/components/form/acai-ui-form-grid.scss +145 -0
- package/src/components/form/acai-ui-form-interface.ts +37 -0
- package/src/components/form/acai-ui-form-styles.scss +159 -0
- package/src/components/form/acai-ui-form-validation-modal.vue +216 -0
- package/src/components/form/acai-ui-form.vue +410 -0
- package/src/components/help/acai-ui-help-interface.ts +200 -0
- package/src/components/help/acai-ui-help-styles.scss +209 -0
- package/src/components/help/acai-ui-help.vue +259 -0
- package/src/components/help/acai-ui-tour-styles.scss +292 -0
- package/src/components/help/acai-ui-tour.vue +766 -0
- package/src/components/help/tour-escolha.ts +139 -0
- package/src/components/help/tour-posicionar.ts +148 -0
- package/src/components/help/tour-registry.ts +177 -0
- package/src/components/help/use-tour-visto.ts +81 -0
- package/src/components/icon/acai-ui-icon-interface.ts +12 -0
- package/src/components/icon/acai-ui-icon.vue +33 -0
- package/src/components/index.ts +149 -0
- package/src/components/input/acai-ui-input-interface.ts +20 -0
- package/src/components/input/acai-ui-input.vue +146 -0
- package/src/components/modal/acai-ui-modal-interface.ts +19 -0
- package/src/components/modal/acai-ui-modal-styles.scss +131 -0
- package/src/components/modal/acai-ui-modal.vue +83 -0
- package/src/components/pagination/acai-ui-pagination-interface.ts +8 -0
- package/src/components/pagination/acai-ui-pagination.vue +36 -0
- package/src/components/preferences/acai-ui-preferences-interface.ts +4 -0
- package/src/components/preferences/acai-ui-preferences-styles.scss +387 -0
- package/src/components/preferences/acai-ui-preferences.vue +349 -0
- package/src/components/progress/acai-ui-progress-interface.ts +20 -0
- package/src/components/progress/acai-ui-progress.vue +124 -0
- package/src/components/radio/acai-ui-radio-interface.ts +14 -0
- package/src/components/radio/acai-ui-radio.vue +78 -0
- package/src/components/section/acai-ui-section-styles.scss +93 -0
- package/src/components/section/acai-ui-section.vue +134 -0
- package/src/components/select/acai-ui-select-interface.ts +18 -0
- package/src/components/select/acai-ui-select.vue +322 -0
- package/src/components/session-clock/acai-ui-session-clock.vue +111 -0
- package/src/components/stepper/acai-ui-step-interface.ts +18 -0
- package/src/components/stepper/acai-ui-step.vue +37 -0
- package/src/components/stepper/acai-ui-stepper-interface.ts +56 -0
- package/src/components/stepper/acai-ui-stepper-styles.scss +222 -0
- package/src/components/stepper/acai-ui-stepper.vue +231 -0
- package/src/components/swagger/acai-ui-swagger-interface.ts +54 -0
- package/src/components/swagger/acai-ui-swagger-operacao.vue +372 -0
- package/src/components/swagger/acai-ui-swagger-requisicao.ts +272 -0
- package/src/components/swagger/acai-ui-swagger-schema.vue +36 -0
- package/src/components/swagger/acai-ui-swagger-styles.scss +883 -0
- package/src/components/swagger/acai-ui-swagger.vue +349 -0
- package/src/components/swagger/openapi-normalizar.ts +514 -0
- package/src/components/swagger/openapi-tipos.ts +198 -0
- package/src/components/table/acai-ui-table-interface.ts +60 -0
- package/src/components/table/acai-ui-table-justificativa.vue +135 -0
- package/src/components/table/acai-ui-table-styles.scss +293 -0
- package/src/components/table/acai-ui-table.vue +340 -0
- package/src/components/tabs/acai-ui-tab.vue +10 -0
- package/src/components/tabs/acai-ui-tabs-interface.ts +48 -0
- package/src/components/tabs/acai-ui-tabs-styles.scss +78 -0
- package/src/components/tabs/acai-ui-tabs.vue +137 -0
- package/src/components/time/acai-ui-time-interface.ts +14 -0
- package/src/components/time/acai-ui-time.vue +86 -0
- package/src/components/toggle/acai-ui-toggle-interface.ts +13 -0
- package/src/components/toggle/acai-ui-toggle.vue +162 -0
- package/src/components/tooltip/acai-ui-tooltip-interface.ts +11 -0
- package/src/components/tooltip/acai-ui-tooltip-styles.scss +104 -0
- package/src/components/tooltip/acai-ui-tooltip.vue +90 -0
- package/src/components/user-menu/acai-ui-user-menu-interface.ts +13 -0
- package/src/components/user-menu/acai-ui-user-menu-styles.scss +125 -0
- package/src/components/user-menu/acai-ui-user-menu.vue +139 -0
- package/src/components/validation/acai-ui-validation.vue +236 -0
- package/src/constants/chart-paleta.ts +162 -0
- package/src/constants/efeitos.ts +24 -0
- package/src/constants/index.ts +24 -0
- package/src/constants/lista-icons.ts +156 -0
- package/src/constants/medidas-espacos.ts +15 -0
- package/src/constants/radius.ts +15 -0
- package/src/constants/status-badge.ts +44 -0
- package/src/env.d.ts +7 -0
- package/src/hooks/filtros-url-internos.ts +497 -0
- package/src/hooks/index.ts +22 -0
- package/src/hooks/notify.ts +18 -0
- package/src/hooks/use-contador-sessao.ts +95 -0
- package/src/hooks/use-filtros-na-url.ts +174 -0
- package/src/hooks/use-leitura-voz.ts +346 -0
- package/src/hooks/use-listagem-na-url.ts +614 -0
- package/src/hooks/use-preferencias.ts +152 -0
- package/src/hooks/use-repasse-quasar.ts +63 -0
- package/src/hooks/use-tamanho-elemento.ts +107 -0
- package/src/hooks/use-tela.ts +114 -0
- package/src/hooks/use-validacao-visual.ts +189 -0
- package/src/index.ts +30 -0
- package/src/plugin.ts +134 -0
- package/src/scss/_badge.scss +12 -0
- package/src/scss/_breakpoints.scss +102 -0
- package/src/scss/_color-utilities.scss +105 -0
- package/src/scss/_controls.scss +135 -0
- package/src/scss/_ds-input-base.scss +302 -0
- package/src/scss/_ds-picker-m3.scss +179 -0
- package/src/scss/_effects.scss +42 -0
- package/src/scss/_overlays.scss +13 -0
- package/src/scss/_radius.scss +24 -0
- package/src/scss/_reset.scss +60 -0
- package/src/scss/_scrollbar.scss +78 -0
- package/src/scss/_spacing.scss +15 -0
- package/src/scss/_themes.scss +493 -0
- package/src/scss/_typography.scss +50 -0
- package/src/scss/_utilities.scss +75 -0
- package/src/scss/_variables.scss +143 -0
- package/src/scss/api.scss +77 -0
- package/src/scss/tokens.scss +13 -0
- package/src/styles-global.scss +30 -0
- package/src/utils/date-utils.ts +128 -0
- package/src/utils/dialog-utils.ts +59 -0
- package/src/utils/file-utils.ts +85 -0
- package/src/utils/filtro-input.ts +41 -0
- package/src/utils/form-rules.ts +202 -0
- package/src/utils/formatadores.ts +97 -0
- package/src/utils/gerador-id.ts +29 -0
- package/src/utils/hint-mensagem.ts +25 -0
- package/src/utils/index.ts +32 -0
- package/src/utils/limpar-campos.ts +94 -0
- package/src/utils/masks.ts +19 -0
- package/src/utils/medidas-util.ts +5 -0
- package/src/utils/normalizar-label.ts +9 -0
- package/src/utils/scroll-elemento.ts +34 -0
- package/src/utils/validar-campo.ts +27 -0
- package/src/utils/validar-documentos.ts +86 -0
- package/src/utils/vnode-slot.ts +74 -0
package/dist/index97.cjs
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const vue = require("vue");
|
|
4
|
+
const CHAVE_GLOBAL = Symbol.for("@acai-ui:voz");
|
|
5
|
+
const MAX_CARACTERES = 160;
|
|
6
|
+
function sintese() {
|
|
7
|
+
if (typeof window === "undefined") return null;
|
|
8
|
+
try {
|
|
9
|
+
return window.speechSynthesis ?? null;
|
|
10
|
+
} catch {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function temSuporte() {
|
|
15
|
+
return Boolean(sintese()) && typeof window !== "undefined" && "SpeechSynthesisUtterance" in window;
|
|
16
|
+
}
|
|
17
|
+
function criarRegistro() {
|
|
18
|
+
return {
|
|
19
|
+
lendo: vue.ref(false),
|
|
20
|
+
idLendo: vue.ref(null),
|
|
21
|
+
suportado: vue.ref(temSuporte()),
|
|
22
|
+
vozes: vue.ref([]),
|
|
23
|
+
geracao: 0,
|
|
24
|
+
ouvindoVozes: false,
|
|
25
|
+
ouvindoVisibilidade: false
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function registro() {
|
|
29
|
+
const alvo = globalThis;
|
|
30
|
+
const atual = alvo[CHAVE_GLOBAL];
|
|
31
|
+
if (atual) return atual;
|
|
32
|
+
const novo = criarRegistro();
|
|
33
|
+
alvo[CHAVE_GLOBAL] = novo;
|
|
34
|
+
return novo;
|
|
35
|
+
}
|
|
36
|
+
function fatiarTexto(texto, max = MAX_CARACTERES) {
|
|
37
|
+
const limpo = texto.replace(/\s+/g, " ").trim();
|
|
38
|
+
if (!limpo) return [];
|
|
39
|
+
if (limpo.length <= max) return [limpo];
|
|
40
|
+
const pedacos = [];
|
|
41
|
+
let resto = limpo;
|
|
42
|
+
while (resto.length > max) {
|
|
43
|
+
const janela = resto.slice(0, max);
|
|
44
|
+
const fimDeFrase = Math.max(
|
|
45
|
+
janela.lastIndexOf(". "),
|
|
46
|
+
janela.lastIndexOf("! "),
|
|
47
|
+
janela.lastIndexOf("? "),
|
|
48
|
+
janela.lastIndexOf("; "),
|
|
49
|
+
janela.lastIndexOf(": ")
|
|
50
|
+
);
|
|
51
|
+
const corte = fimDeFrase > max * 0.4 ? fimDeFrase + 1 : janela.lastIndexOf(" ");
|
|
52
|
+
const posicao = corte > 0 ? corte : max;
|
|
53
|
+
pedacos.push(resto.slice(0, posicao).trim());
|
|
54
|
+
resto = resto.slice(posicao).trim();
|
|
55
|
+
}
|
|
56
|
+
if (resto) pedacos.push(resto);
|
|
57
|
+
return pedacos;
|
|
58
|
+
}
|
|
59
|
+
function garantirVozes() {
|
|
60
|
+
const estado = registro();
|
|
61
|
+
const motor = sintese();
|
|
62
|
+
if (!motor) return;
|
|
63
|
+
try {
|
|
64
|
+
estado.vozes.value = motor.getVoices() ?? [];
|
|
65
|
+
} catch {
|
|
66
|
+
estado.vozes.value = [];
|
|
67
|
+
}
|
|
68
|
+
if (estado.ouvindoVozes || typeof motor.addEventListener !== "function") return;
|
|
69
|
+
estado.ouvindoVozes = true;
|
|
70
|
+
motor.addEventListener("voiceschanged", () => {
|
|
71
|
+
try {
|
|
72
|
+
registro().vozes.value = motor.getVoices() ?? [];
|
|
73
|
+
} catch {
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
const normalizarLang = (v) => v.lang.replace("_", "-").toLowerCase();
|
|
78
|
+
function vozesDoIdioma(lang) {
|
|
79
|
+
const prefixo = lang.slice(0, 2).toLowerCase();
|
|
80
|
+
return registro().vozes.value.filter((v) => normalizarLang(v).startsWith(prefixo));
|
|
81
|
+
}
|
|
82
|
+
function escolherVoz(lang, nome) {
|
|
83
|
+
const vozes = registro().vozes.value;
|
|
84
|
+
const alvo = lang.toLowerCase();
|
|
85
|
+
const prefixo = alvo.slice(0, 2);
|
|
86
|
+
const escolhida = nome ? vozes.find((v) => v.name === nome) : void 0;
|
|
87
|
+
if (escolhida) return escolhida;
|
|
88
|
+
return vozes.find((v) => normalizarLang(v) === alvo && v.localService) ?? vozes.find((v) => normalizarLang(v) === alvo) ?? vozes.find((v) => normalizarLang(v).startsWith(prefixo) && v.localService) ?? vozes.find((v) => normalizarLang(v).startsWith(prefixo));
|
|
89
|
+
}
|
|
90
|
+
function limparEstado() {
|
|
91
|
+
const estado = registro();
|
|
92
|
+
estado.lendo.value = false;
|
|
93
|
+
estado.idLendo.value = null;
|
|
94
|
+
}
|
|
95
|
+
function pararInterno() {
|
|
96
|
+
const estado = registro();
|
|
97
|
+
estado.geracao += 1;
|
|
98
|
+
const motor = sintese();
|
|
99
|
+
if (motor) {
|
|
100
|
+
try {
|
|
101
|
+
motor.cancel();
|
|
102
|
+
} catch {
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
limparEstado();
|
|
106
|
+
}
|
|
107
|
+
function garantirObservadorDeVisibilidade() {
|
|
108
|
+
const estado = registro();
|
|
109
|
+
if (estado.ouvindoVisibilidade || typeof document === "undefined") return;
|
|
110
|
+
if (typeof document.addEventListener !== "function") return;
|
|
111
|
+
estado.ouvindoVisibilidade = true;
|
|
112
|
+
document.addEventListener("visibilitychange", () => {
|
|
113
|
+
if (document.hidden) pararInterno();
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
function useLeituraVoz() {
|
|
117
|
+
const estado = registro();
|
|
118
|
+
if (estado.suportado.value) garantirVozes();
|
|
119
|
+
function falar(texto, opcoes = {}) {
|
|
120
|
+
const motor = sintese();
|
|
121
|
+
if (!motor || !estado.suportado.value) return;
|
|
122
|
+
const pedacos = fatiarTexto(texto);
|
|
123
|
+
if (!pedacos.length) return;
|
|
124
|
+
pararInterno();
|
|
125
|
+
garantirVozes();
|
|
126
|
+
garantirObservadorDeVisibilidade();
|
|
127
|
+
const minhaGeracao = estado.geracao;
|
|
128
|
+
const lang = opcoes.lang || "pt-BR";
|
|
129
|
+
const voz = escolherVoz(lang, opcoes.voz);
|
|
130
|
+
const ultimo = pedacos.length - 1;
|
|
131
|
+
estado.lendo.value = true;
|
|
132
|
+
estado.idLendo.value = opcoes.id ?? null;
|
|
133
|
+
const enfileirar = () => {
|
|
134
|
+
pedacos.forEach((pedaco, indice) => {
|
|
135
|
+
const fala = new SpeechSynthesisUtterance(pedaco);
|
|
136
|
+
fala.lang = lang;
|
|
137
|
+
if (voz) fala.voice = voz;
|
|
138
|
+
if (opcoes.rate !== void 0) fala.rate = opcoes.rate;
|
|
139
|
+
fala.onend = () => {
|
|
140
|
+
if (minhaGeracao !== registro().geracao) return;
|
|
141
|
+
if (indice === ultimo) limparEstado();
|
|
142
|
+
};
|
|
143
|
+
fala.onerror = (evento) => {
|
|
144
|
+
if (minhaGeracao !== registro().geracao) return;
|
|
145
|
+
if (evento.error === "canceled" || evento.error === "interrupted") return;
|
|
146
|
+
if (evento.error === "synthesis-unavailable" || evento.error === "synthesis-failed" || evento.error === "not-allowed" || evento.error === "audio-busy") {
|
|
147
|
+
registro().suportado.value = false;
|
|
148
|
+
}
|
|
149
|
+
limparEstado();
|
|
150
|
+
};
|
|
151
|
+
try {
|
|
152
|
+
motor.speak(fala);
|
|
153
|
+
} catch {
|
|
154
|
+
registro().suportado.value = false;
|
|
155
|
+
limparEstado();
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
};
|
|
159
|
+
if (motor.speaking || motor.pending) window.setTimeout(enfileirar, 0);
|
|
160
|
+
else enfileirar();
|
|
161
|
+
}
|
|
162
|
+
function parar() {
|
|
163
|
+
pararInterno();
|
|
164
|
+
}
|
|
165
|
+
function alternar(texto, opcoes = {}) {
|
|
166
|
+
const mesmo = estado.lendo.value && estado.idLendo.value === (opcoes.id ?? null);
|
|
167
|
+
if (mesmo) parar();
|
|
168
|
+
else falar(texto, opcoes);
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
suportado: vue.readonly(estado.suportado),
|
|
172
|
+
lendo: vue.readonly(estado.lendo),
|
|
173
|
+
idLendo: vue.readonly(estado.idLendo),
|
|
174
|
+
vozes: vue.readonly(estado.vozes),
|
|
175
|
+
vozesPara: vozesDoIdioma,
|
|
176
|
+
temVozPara: (lang) => estado.vozes.value.length === 0 || vozesDoIdioma(lang).length > 0,
|
|
177
|
+
falar,
|
|
178
|
+
alternar,
|
|
179
|
+
parar
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
exports.fatiarTexto = fatiarTexto;
|
|
183
|
+
exports.useLeituraVoz = useLeituraVoz;
|
|
184
|
+
//# sourceMappingURL=index97.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index97.cjs","sources":["../src/hooks/use-leitura-voz.ts"],"sourcesContent":["import { readonly, ref, type Ref } from 'vue'\n\n/**\n * Leitura em voz alta pela Web Speech API do próprio navegador.\n *\n * Sem dependência nova e sem rede: a síntese é do sistema operacional, o que\n * importa numa máquina de balcão do DETRAN que pode não ter saída pra internet.\n *\n * NUNCA fala sozinho — quem dispara é sempre um clique do usuário (WCAG 1.4.2:\n * áudio automático precisa de controle; não ter autoplay resolve na raiz).\n */\n\n/** Identidade do trecho lido — é o que faz cada botão saber se é ELE que fala. */\nexport type IdLeitura = string\n\nexport interface OpcoesFala {\n /** Identidade do trecho. Sem id, o botão não consegue mostrar \"estou lendo\". */\n id?: IdLeitura | undefined\n /** Idioma BCP-47 da fala (ex.: `pt-BR`). @default 'pt-BR' */\n lang?: string | undefined\n /** Velocidade da fala, 0.1 a 10. @default 1 */\n rate?: number | undefined\n /**\n * Nome da voz (`SpeechSynthesisVoice.name`), como veio de `vozes`.\n *\n * É por NOME e não pelo objeto porque é isso que dá pra persistir. Voz que não\n * existe mais na máquina (perfil novo, Windows sem o pacote) cai na escolha\n * automática em vez de emudecer.\n */\n voz?: string | undefined\n}\n\ninterface RegistroVoz {\n lendo: Ref<boolean>\n idLendo: Ref<IdLeitura | null>\n suportado: Ref<boolean>\n vozes: Ref<SpeechSynthesisVoice[]>\n /**\n * Token anti-corrida. `cancel()` dispara `onerror` nas falas pendentes DEPOIS\n * de a próxima já ter começado; sem comparar geração, o erro da fala velha\n * zeraria o estado da nova. Mesmo padrão do `sessao` do `acai-ui-tour`.\n */\n geracao: number\n ouvindoVozes: boolean\n ouvindoVisibilidade: boolean\n}\n\n/**\n * Estado global, e não um `let` de módulo, pelo mesmo motivo documentado no\n * `plugin.ts`: o Vite do consumidor pode carregar a lib em DUAS instâncias (o\n * pré-bundle do import bare e o source pela condition `vue`). Com `let`, o botão\n * de um componente não saberia que o outro está falando — e duas falas ao mesmo\n * tempo é sempre bug, porque `speechSynthesis` é único do documento.\n */\nconst CHAVE_GLOBAL = Symbol.for('@acai-ui:voz')\n\n/** Fatia perto disso: acima de ~15s de fala o Chrome corta no meio (ver `falar`). */\nconst MAX_CARACTERES = 160\n\nfunction sintese(): SpeechSynthesis | null {\n if (typeof window === 'undefined') return null\n try {\n return window.speechSynthesis ?? null\n } catch {\n // Alguns navegadores em modo restrito lançam ao tocar na API.\n return null\n }\n}\n\nfunction temSuporte(): boolean {\n return Boolean(sintese()) && typeof window !== 'undefined' && 'SpeechSynthesisUtterance' in window\n}\n\nfunction criarRegistro(): RegistroVoz {\n return {\n lendo: ref(false),\n idLendo: ref<IdLeitura | null>(null),\n suportado: ref(temSuporte()),\n vozes: ref<SpeechSynthesisVoice[]>([]),\n geracao: 0,\n ouvindoVozes: false,\n ouvindoVisibilidade: false,\n }\n}\n\nfunction registro(): RegistroVoz {\n const alvo = globalThis as unknown as Record<symbol, RegistroVoz | undefined>\n const atual = alvo[CHAVE_GLOBAL]\n if (atual) return atual\n const novo = criarRegistro()\n alvo[CHAVE_GLOBAL] = novo\n return novo\n}\n\n/**\n * Quebra o texto em pedaços que cabem numa fala curta.\n *\n * O Chrome interrompe uma fala longa por volta de 15 segundos. A saída é\n * enfileirar vários pedaços curtos de uma vez (o motor toca em sequência) em vez\n * de uma fala só. Corta em fim de frase; se não houver, no último espaço; só\n * parte palavra quando a \"palavra\" sozinha já estoura o limite (URL, token).\n */\nexport function fatiarTexto(texto: string, max = MAX_CARACTERES): string[] {\n const limpo = texto.replace(/\\s+/g, ' ').trim()\n if (!limpo) return []\n if (limpo.length <= max) return [limpo]\n\n const pedacos: string[] = []\n let resto = limpo\n\n while (resto.length > max) {\n const janela = resto.slice(0, max)\n const fimDeFrase = Math.max(\n janela.lastIndexOf('. '),\n janela.lastIndexOf('! '),\n janela.lastIndexOf('? '),\n janela.lastIndexOf('; '),\n janela.lastIndexOf(': '),\n )\n // +1 pra levar a pontuação junto: quem lê precisa da pausa dela.\n const corte = fimDeFrase > max * 0.4 ? fimDeFrase + 1 : janela.lastIndexOf(' ')\n const posicao = corte > 0 ? corte : max\n\n pedacos.push(resto.slice(0, posicao).trim())\n resto = resto.slice(posicao).trim()\n }\n\n if (resto) pedacos.push(resto)\n return pedacos\n}\n\n/**\n * Cacheia as vozes instaladas.\n *\n * `getVoices()` costuma vir vazio na primeira chamada e só popula no evento\n * `voiceschanged`. Isso NÃO é motivo pra esperar antes de falar: no Safari/iOS o\n * `speak()` precisa acontecer dentro do gesto do usuário, e aguardar o evento\n * perde essa janela. Sem voz escolhida, o motor usa a do `lang` mesmo.\n */\nfunction garantirVozes(): void {\n const estado = registro()\n const motor = sintese()\n if (!motor) return\n\n try {\n estado.vozes.value = motor.getVoices() ?? []\n } catch {\n estado.vozes.value = []\n }\n\n if (estado.ouvindoVozes || typeof motor.addEventListener !== 'function') return\n estado.ouvindoVozes = true\n motor.addEventListener('voiceschanged', () => {\n try {\n registro().vozes.value = motor.getVoices() ?? []\n } catch {\n /* motor sumiu no meio do caminho */\n }\n })\n}\n\nconst normalizarLang = (v: SpeechSynthesisVoice): string => v.lang.replace('_', '-').toLowerCase()\n\n/** Vozes que servem para um idioma — o que o seletor de voz oferece. */\nfunction vozesDoIdioma(lang: string): SpeechSynthesisVoice[] {\n const prefixo = lang.slice(0, 2).toLowerCase()\n return registro().vozes.value.filter((v) => normalizarLang(v).startsWith(prefixo))\n}\n\n/**\n * Voz preferida do idioma, priorizando a LOCAL: voz de rede tem latência de\n * segundos e simplesmente não fala em máquina sem internet.\n *\n * `nome` (a escolha salva do usuário) ganha de tudo — mas só se aquela voz ainda\n * existir nesta máquina.\n */\nfunction escolherVoz(lang: string, nome?: string): SpeechSynthesisVoice | undefined {\n const vozes = registro().vozes.value\n const alvo = lang.toLowerCase()\n const prefixo = alvo.slice(0, 2)\n\n const escolhida = nome ? vozes.find((v) => v.name === nome) : undefined\n if (escolhida) return escolhida\n\n return (\n vozes.find((v) => normalizarLang(v) === alvo && v.localService) ??\n vozes.find((v) => normalizarLang(v) === alvo) ??\n vozes.find((v) => normalizarLang(v).startsWith(prefixo) && v.localService) ??\n vozes.find((v) => normalizarLang(v).startsWith(prefixo))\n )\n}\n\nfunction limparEstado(): void {\n const estado = registro()\n estado.lendo.value = false\n estado.idLendo.value = null\n}\n\nfunction pararInterno(): void {\n const estado = registro()\n // Invalida o que estiver na fila ANTES do cancel: os `onerror` que ele dispara\n // chegam com a geração velha e são ignorados.\n estado.geracao += 1\n const motor = sintese()\n if (motor) {\n try {\n motor.cancel()\n } catch {\n /* já estava parado */\n }\n }\n limparEstado()\n}\n\n/** Para a leitura quando o usuário troca de aba — a fala continuaria no vazio. */\nfunction garantirObservadorDeVisibilidade(): void {\n const estado = registro()\n if (estado.ouvindoVisibilidade || typeof document === 'undefined') return\n if (typeof document.addEventListener !== 'function') return\n estado.ouvindoVisibilidade = true\n document.addEventListener('visibilitychange', () => {\n if (document.hidden) pararInterno()\n })\n}\n\nexport function useLeituraVoz(): {\n suportado: Readonly<Ref<boolean>>\n lendo: Readonly<Ref<boolean>>\n idLendo: Readonly<Ref<IdLeitura | null>>\n /** Vozes instaladas na máquina. Popula sozinha no `voiceschanged`. */\n vozes: Readonly<Ref<SpeechSynthesisVoice[]>>\n /** Vozes que servem para um idioma (prefixo BCP-47: `pt` casa `pt-BR` e `pt-PT`). */\n vozesPara: (lang: string) => SpeechSynthesisVoice[]\n /**\n * Se dá pra ler NESTE idioma nesta máquina.\n *\n * Otimista de propósito: com a lista ainda vazia (o `voiceschanged` costuma\n * chegar depois) devolve `true`. Esconder o botão por uma lista que ainda não\n * carregou seria pior que tentar e falhar — e a falha real desliga o suporte.\n */\n temVozPara: (lang: string) => boolean\n falar: (texto: string, opcoes?: OpcoesFala) => void\n alternar: (texto: string, opcoes?: OpcoesFala) => void\n parar: () => void\n} {\n const estado = registro()\n\n // Carrega a lista já na primeira montagem: o painel de preferências precisa\n // dela ANTES de qualquer fala pra desenhar o seletor.\n if (estado.suportado.value) garantirVozes()\n\n function falar(texto: string, opcoes: OpcoesFala = {}): void {\n const motor = sintese()\n if (!motor || !estado.suportado.value) return\n\n const pedacos = fatiarTexto(texto)\n if (!pedacos.length) return\n\n pararInterno()\n garantirVozes()\n garantirObservadorDeVisibilidade()\n\n const minhaGeracao = estado.geracao\n const lang = opcoes.lang || 'pt-BR'\n const voz = escolherVoz(lang, opcoes.voz)\n const ultimo = pedacos.length - 1\n\n estado.lendo.value = true\n estado.idLendo.value = opcoes.id ?? null\n\n const enfileirar = (): void => {\n // Fila montada de uma vez só, dentro do gesto do clique. Encadear\n // `onend → speak(próximo)` perderia o contexto de ativação no Safari.\n pedacos.forEach((pedaco, indice) => {\n const fala = new SpeechSynthesisUtterance(pedaco)\n fala.lang = lang\n if (voz) fala.voice = voz\n if (opcoes.rate !== undefined) fala.rate = opcoes.rate\n\n fala.onend = (): void => {\n if (minhaGeracao !== registro().geracao) return\n if (indice === ultimo) limparEstado()\n }\n\n fala.onerror = (evento: SpeechSynthesisErrorEvent): void => {\n // `canceled`/`interrupted` são o efeito normal de um `cancel()` — não\n // são falha, e a fala nova já assumiu.\n if (minhaGeracao !== registro().geracao) return\n if (evento.error === 'canceled' || evento.error === 'interrupted') return\n // Motor existe mas não fala (kiosk, Windows sem pacote de voz): esconde\n // o recurso em vez de deixar botão que não faz nada.\n if (\n evento.error === 'synthesis-unavailable' ||\n evento.error === 'synthesis-failed' ||\n evento.error === 'not-allowed' ||\n evento.error === 'audio-busy'\n ) {\n registro().suportado.value = false\n }\n limparEstado()\n }\n\n try {\n motor.speak(fala)\n } catch {\n registro().suportado.value = false\n limparEstado()\n }\n })\n }\n\n // Chrome trava o motor quando `cancel()` e `speak()` caem no mesmo tick.\n if (motor.speaking || motor.pending) window.setTimeout(enfileirar, 0)\n else enfileirar()\n }\n\n function parar(): void {\n pararInterno()\n }\n\n /** Handler do botão: se já está lendo ESTE trecho, para; senão, fala. */\n function alternar(texto: string, opcoes: OpcoesFala = {}): void {\n const mesmo = estado.lendo.value && estado.idLendo.value === (opcoes.id ?? null)\n if (mesmo) parar()\n else falar(texto, opcoes)\n }\n\n return {\n suportado: readonly(estado.suportado),\n lendo: readonly(estado.lendo),\n idLendo: readonly(estado.idLendo),\n vozes: readonly(estado.vozes) as Readonly<Ref<SpeechSynthesisVoice[]>>,\n vozesPara: vozesDoIdioma,\n temVozPara: (lang: string): boolean =>\n estado.vozes.value.length === 0 || vozesDoIdioma(lang).length > 0,\n falar,\n alternar,\n parar,\n }\n}\n\n/** Só para testes — descarta o singleton (espelha `resetarTourVistoParaTeste`). */\nexport function resetarLeituraVozParaTeste(): void {\n const alvo = globalThis as unknown as Record<symbol, RegistroVoz | undefined>\n delete alvo[CHAVE_GLOBAL]\n}\n"],"names":["ref","readonly"],"mappings":"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"}
|
package/dist/index97.mjs
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { readonly, ref } from "vue";
|
|
2
|
+
const CHAVE_GLOBAL = Symbol.for("@acai-ui:voz");
|
|
3
|
+
const MAX_CARACTERES = 160;
|
|
4
|
+
function sintese() {
|
|
5
|
+
if (typeof window === "undefined") return null;
|
|
6
|
+
try {
|
|
7
|
+
return window.speechSynthesis ?? null;
|
|
8
|
+
} catch {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function temSuporte() {
|
|
13
|
+
return Boolean(sintese()) && typeof window !== "undefined" && "SpeechSynthesisUtterance" in window;
|
|
14
|
+
}
|
|
15
|
+
function criarRegistro() {
|
|
16
|
+
return {
|
|
17
|
+
lendo: ref(false),
|
|
18
|
+
idLendo: ref(null),
|
|
19
|
+
suportado: ref(temSuporte()),
|
|
20
|
+
vozes: ref([]),
|
|
21
|
+
geracao: 0,
|
|
22
|
+
ouvindoVozes: false,
|
|
23
|
+
ouvindoVisibilidade: false
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function registro() {
|
|
27
|
+
const alvo = globalThis;
|
|
28
|
+
const atual = alvo[CHAVE_GLOBAL];
|
|
29
|
+
if (atual) return atual;
|
|
30
|
+
const novo = criarRegistro();
|
|
31
|
+
alvo[CHAVE_GLOBAL] = novo;
|
|
32
|
+
return novo;
|
|
33
|
+
}
|
|
34
|
+
function fatiarTexto(texto, max = MAX_CARACTERES) {
|
|
35
|
+
const limpo = texto.replace(/\s+/g, " ").trim();
|
|
36
|
+
if (!limpo) return [];
|
|
37
|
+
if (limpo.length <= max) return [limpo];
|
|
38
|
+
const pedacos = [];
|
|
39
|
+
let resto = limpo;
|
|
40
|
+
while (resto.length > max) {
|
|
41
|
+
const janela = resto.slice(0, max);
|
|
42
|
+
const fimDeFrase = Math.max(
|
|
43
|
+
janela.lastIndexOf(". "),
|
|
44
|
+
janela.lastIndexOf("! "),
|
|
45
|
+
janela.lastIndexOf("? "),
|
|
46
|
+
janela.lastIndexOf("; "),
|
|
47
|
+
janela.lastIndexOf(": ")
|
|
48
|
+
);
|
|
49
|
+
const corte = fimDeFrase > max * 0.4 ? fimDeFrase + 1 : janela.lastIndexOf(" ");
|
|
50
|
+
const posicao = corte > 0 ? corte : max;
|
|
51
|
+
pedacos.push(resto.slice(0, posicao).trim());
|
|
52
|
+
resto = resto.slice(posicao).trim();
|
|
53
|
+
}
|
|
54
|
+
if (resto) pedacos.push(resto);
|
|
55
|
+
return pedacos;
|
|
56
|
+
}
|
|
57
|
+
function garantirVozes() {
|
|
58
|
+
const estado = registro();
|
|
59
|
+
const motor = sintese();
|
|
60
|
+
if (!motor) return;
|
|
61
|
+
try {
|
|
62
|
+
estado.vozes.value = motor.getVoices() ?? [];
|
|
63
|
+
} catch {
|
|
64
|
+
estado.vozes.value = [];
|
|
65
|
+
}
|
|
66
|
+
if (estado.ouvindoVozes || typeof motor.addEventListener !== "function") return;
|
|
67
|
+
estado.ouvindoVozes = true;
|
|
68
|
+
motor.addEventListener("voiceschanged", () => {
|
|
69
|
+
try {
|
|
70
|
+
registro().vozes.value = motor.getVoices() ?? [];
|
|
71
|
+
} catch {
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const normalizarLang = (v) => v.lang.replace("_", "-").toLowerCase();
|
|
76
|
+
function vozesDoIdioma(lang) {
|
|
77
|
+
const prefixo = lang.slice(0, 2).toLowerCase();
|
|
78
|
+
return registro().vozes.value.filter((v) => normalizarLang(v).startsWith(prefixo));
|
|
79
|
+
}
|
|
80
|
+
function escolherVoz(lang, nome) {
|
|
81
|
+
const vozes = registro().vozes.value;
|
|
82
|
+
const alvo = lang.toLowerCase();
|
|
83
|
+
const prefixo = alvo.slice(0, 2);
|
|
84
|
+
const escolhida = nome ? vozes.find((v) => v.name === nome) : void 0;
|
|
85
|
+
if (escolhida) return escolhida;
|
|
86
|
+
return vozes.find((v) => normalizarLang(v) === alvo && v.localService) ?? vozes.find((v) => normalizarLang(v) === alvo) ?? vozes.find((v) => normalizarLang(v).startsWith(prefixo) && v.localService) ?? vozes.find((v) => normalizarLang(v).startsWith(prefixo));
|
|
87
|
+
}
|
|
88
|
+
function limparEstado() {
|
|
89
|
+
const estado = registro();
|
|
90
|
+
estado.lendo.value = false;
|
|
91
|
+
estado.idLendo.value = null;
|
|
92
|
+
}
|
|
93
|
+
function pararInterno() {
|
|
94
|
+
const estado = registro();
|
|
95
|
+
estado.geracao += 1;
|
|
96
|
+
const motor = sintese();
|
|
97
|
+
if (motor) {
|
|
98
|
+
try {
|
|
99
|
+
motor.cancel();
|
|
100
|
+
} catch {
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
limparEstado();
|
|
104
|
+
}
|
|
105
|
+
function garantirObservadorDeVisibilidade() {
|
|
106
|
+
const estado = registro();
|
|
107
|
+
if (estado.ouvindoVisibilidade || typeof document === "undefined") return;
|
|
108
|
+
if (typeof document.addEventListener !== "function") return;
|
|
109
|
+
estado.ouvindoVisibilidade = true;
|
|
110
|
+
document.addEventListener("visibilitychange", () => {
|
|
111
|
+
if (document.hidden) pararInterno();
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
function useLeituraVoz() {
|
|
115
|
+
const estado = registro();
|
|
116
|
+
if (estado.suportado.value) garantirVozes();
|
|
117
|
+
function falar(texto, opcoes = {}) {
|
|
118
|
+
const motor = sintese();
|
|
119
|
+
if (!motor || !estado.suportado.value) return;
|
|
120
|
+
const pedacos = fatiarTexto(texto);
|
|
121
|
+
if (!pedacos.length) return;
|
|
122
|
+
pararInterno();
|
|
123
|
+
garantirVozes();
|
|
124
|
+
garantirObservadorDeVisibilidade();
|
|
125
|
+
const minhaGeracao = estado.geracao;
|
|
126
|
+
const lang = opcoes.lang || "pt-BR";
|
|
127
|
+
const voz = escolherVoz(lang, opcoes.voz);
|
|
128
|
+
const ultimo = pedacos.length - 1;
|
|
129
|
+
estado.lendo.value = true;
|
|
130
|
+
estado.idLendo.value = opcoes.id ?? null;
|
|
131
|
+
const enfileirar = () => {
|
|
132
|
+
pedacos.forEach((pedaco, indice) => {
|
|
133
|
+
const fala = new SpeechSynthesisUtterance(pedaco);
|
|
134
|
+
fala.lang = lang;
|
|
135
|
+
if (voz) fala.voice = voz;
|
|
136
|
+
if (opcoes.rate !== void 0) fala.rate = opcoes.rate;
|
|
137
|
+
fala.onend = () => {
|
|
138
|
+
if (minhaGeracao !== registro().geracao) return;
|
|
139
|
+
if (indice === ultimo) limparEstado();
|
|
140
|
+
};
|
|
141
|
+
fala.onerror = (evento) => {
|
|
142
|
+
if (minhaGeracao !== registro().geracao) return;
|
|
143
|
+
if (evento.error === "canceled" || evento.error === "interrupted") return;
|
|
144
|
+
if (evento.error === "synthesis-unavailable" || evento.error === "synthesis-failed" || evento.error === "not-allowed" || evento.error === "audio-busy") {
|
|
145
|
+
registro().suportado.value = false;
|
|
146
|
+
}
|
|
147
|
+
limparEstado();
|
|
148
|
+
};
|
|
149
|
+
try {
|
|
150
|
+
motor.speak(fala);
|
|
151
|
+
} catch {
|
|
152
|
+
registro().suportado.value = false;
|
|
153
|
+
limparEstado();
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
if (motor.speaking || motor.pending) window.setTimeout(enfileirar, 0);
|
|
158
|
+
else enfileirar();
|
|
159
|
+
}
|
|
160
|
+
function parar() {
|
|
161
|
+
pararInterno();
|
|
162
|
+
}
|
|
163
|
+
function alternar(texto, opcoes = {}) {
|
|
164
|
+
const mesmo = estado.lendo.value && estado.idLendo.value === (opcoes.id ?? null);
|
|
165
|
+
if (mesmo) parar();
|
|
166
|
+
else falar(texto, opcoes);
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
suportado: readonly(estado.suportado),
|
|
170
|
+
lendo: readonly(estado.lendo),
|
|
171
|
+
idLendo: readonly(estado.idLendo),
|
|
172
|
+
vozes: readonly(estado.vozes),
|
|
173
|
+
vozesPara: vozesDoIdioma,
|
|
174
|
+
temVozPara: (lang) => estado.vozes.value.length === 0 || vozesDoIdioma(lang).length > 0,
|
|
175
|
+
falar,
|
|
176
|
+
alternar,
|
|
177
|
+
parar
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
export {
|
|
181
|
+
fatiarTexto,
|
|
182
|
+
useLeituraVoz
|
|
183
|
+
};
|
|
184
|
+
//# sourceMappingURL=index97.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index97.mjs","sources":["../src/hooks/use-leitura-voz.ts"],"sourcesContent":["import { readonly, ref, type Ref } from 'vue'\n\n/**\n * Leitura em voz alta pela Web Speech API do próprio navegador.\n *\n * Sem dependência nova e sem rede: a síntese é do sistema operacional, o que\n * importa numa máquina de balcão do DETRAN que pode não ter saída pra internet.\n *\n * NUNCA fala sozinho — quem dispara é sempre um clique do usuário (WCAG 1.4.2:\n * áudio automático precisa de controle; não ter autoplay resolve na raiz).\n */\n\n/** Identidade do trecho lido — é o que faz cada botão saber se é ELE que fala. */\nexport type IdLeitura = string\n\nexport interface OpcoesFala {\n /** Identidade do trecho. Sem id, o botão não consegue mostrar \"estou lendo\". */\n id?: IdLeitura | undefined\n /** Idioma BCP-47 da fala (ex.: `pt-BR`). @default 'pt-BR' */\n lang?: string | undefined\n /** Velocidade da fala, 0.1 a 10. @default 1 */\n rate?: number | undefined\n /**\n * Nome da voz (`SpeechSynthesisVoice.name`), como veio de `vozes`.\n *\n * É por NOME e não pelo objeto porque é isso que dá pra persistir. Voz que não\n * existe mais na máquina (perfil novo, Windows sem o pacote) cai na escolha\n * automática em vez de emudecer.\n */\n voz?: string | undefined\n}\n\ninterface RegistroVoz {\n lendo: Ref<boolean>\n idLendo: Ref<IdLeitura | null>\n suportado: Ref<boolean>\n vozes: Ref<SpeechSynthesisVoice[]>\n /**\n * Token anti-corrida. `cancel()` dispara `onerror` nas falas pendentes DEPOIS\n * de a próxima já ter começado; sem comparar geração, o erro da fala velha\n * zeraria o estado da nova. Mesmo padrão do `sessao` do `acai-ui-tour`.\n */\n geracao: number\n ouvindoVozes: boolean\n ouvindoVisibilidade: boolean\n}\n\n/**\n * Estado global, e não um `let` de módulo, pelo mesmo motivo documentado no\n * `plugin.ts`: o Vite do consumidor pode carregar a lib em DUAS instâncias (o\n * pré-bundle do import bare e o source pela condition `vue`). Com `let`, o botão\n * de um componente não saberia que o outro está falando — e duas falas ao mesmo\n * tempo é sempre bug, porque `speechSynthesis` é único do documento.\n */\nconst CHAVE_GLOBAL = Symbol.for('@acai-ui:voz')\n\n/** Fatia perto disso: acima de ~15s de fala o Chrome corta no meio (ver `falar`). */\nconst MAX_CARACTERES = 160\n\nfunction sintese(): SpeechSynthesis | null {\n if (typeof window === 'undefined') return null\n try {\n return window.speechSynthesis ?? null\n } catch {\n // Alguns navegadores em modo restrito lançam ao tocar na API.\n return null\n }\n}\n\nfunction temSuporte(): boolean {\n return Boolean(sintese()) && typeof window !== 'undefined' && 'SpeechSynthesisUtterance' in window\n}\n\nfunction criarRegistro(): RegistroVoz {\n return {\n lendo: ref(false),\n idLendo: ref<IdLeitura | null>(null),\n suportado: ref(temSuporte()),\n vozes: ref<SpeechSynthesisVoice[]>([]),\n geracao: 0,\n ouvindoVozes: false,\n ouvindoVisibilidade: false,\n }\n}\n\nfunction registro(): RegistroVoz {\n const alvo = globalThis as unknown as Record<symbol, RegistroVoz | undefined>\n const atual = alvo[CHAVE_GLOBAL]\n if (atual) return atual\n const novo = criarRegistro()\n alvo[CHAVE_GLOBAL] = novo\n return novo\n}\n\n/**\n * Quebra o texto em pedaços que cabem numa fala curta.\n *\n * O Chrome interrompe uma fala longa por volta de 15 segundos. A saída é\n * enfileirar vários pedaços curtos de uma vez (o motor toca em sequência) em vez\n * de uma fala só. Corta em fim de frase; se não houver, no último espaço; só\n * parte palavra quando a \"palavra\" sozinha já estoura o limite (URL, token).\n */\nexport function fatiarTexto(texto: string, max = MAX_CARACTERES): string[] {\n const limpo = texto.replace(/\\s+/g, ' ').trim()\n if (!limpo) return []\n if (limpo.length <= max) return [limpo]\n\n const pedacos: string[] = []\n let resto = limpo\n\n while (resto.length > max) {\n const janela = resto.slice(0, max)\n const fimDeFrase = Math.max(\n janela.lastIndexOf('. '),\n janela.lastIndexOf('! '),\n janela.lastIndexOf('? '),\n janela.lastIndexOf('; '),\n janela.lastIndexOf(': '),\n )\n // +1 pra levar a pontuação junto: quem lê precisa da pausa dela.\n const corte = fimDeFrase > max * 0.4 ? fimDeFrase + 1 : janela.lastIndexOf(' ')\n const posicao = corte > 0 ? corte : max\n\n pedacos.push(resto.slice(0, posicao).trim())\n resto = resto.slice(posicao).trim()\n }\n\n if (resto) pedacos.push(resto)\n return pedacos\n}\n\n/**\n * Cacheia as vozes instaladas.\n *\n * `getVoices()` costuma vir vazio na primeira chamada e só popula no evento\n * `voiceschanged`. Isso NÃO é motivo pra esperar antes de falar: no Safari/iOS o\n * `speak()` precisa acontecer dentro do gesto do usuário, e aguardar o evento\n * perde essa janela. Sem voz escolhida, o motor usa a do `lang` mesmo.\n */\nfunction garantirVozes(): void {\n const estado = registro()\n const motor = sintese()\n if (!motor) return\n\n try {\n estado.vozes.value = motor.getVoices() ?? []\n } catch {\n estado.vozes.value = []\n }\n\n if (estado.ouvindoVozes || typeof motor.addEventListener !== 'function') return\n estado.ouvindoVozes = true\n motor.addEventListener('voiceschanged', () => {\n try {\n registro().vozes.value = motor.getVoices() ?? []\n } catch {\n /* motor sumiu no meio do caminho */\n }\n })\n}\n\nconst normalizarLang = (v: SpeechSynthesisVoice): string => v.lang.replace('_', '-').toLowerCase()\n\n/** Vozes que servem para um idioma — o que o seletor de voz oferece. */\nfunction vozesDoIdioma(lang: string): SpeechSynthesisVoice[] {\n const prefixo = lang.slice(0, 2).toLowerCase()\n return registro().vozes.value.filter((v) => normalizarLang(v).startsWith(prefixo))\n}\n\n/**\n * Voz preferida do idioma, priorizando a LOCAL: voz de rede tem latência de\n * segundos e simplesmente não fala em máquina sem internet.\n *\n * `nome` (a escolha salva do usuário) ganha de tudo — mas só se aquela voz ainda\n * existir nesta máquina.\n */\nfunction escolherVoz(lang: string, nome?: string): SpeechSynthesisVoice | undefined {\n const vozes = registro().vozes.value\n const alvo = lang.toLowerCase()\n const prefixo = alvo.slice(0, 2)\n\n const escolhida = nome ? vozes.find((v) => v.name === nome) : undefined\n if (escolhida) return escolhida\n\n return (\n vozes.find((v) => normalizarLang(v) === alvo && v.localService) ??\n vozes.find((v) => normalizarLang(v) === alvo) ??\n vozes.find((v) => normalizarLang(v).startsWith(prefixo) && v.localService) ??\n vozes.find((v) => normalizarLang(v).startsWith(prefixo))\n )\n}\n\nfunction limparEstado(): void {\n const estado = registro()\n estado.lendo.value = false\n estado.idLendo.value = null\n}\n\nfunction pararInterno(): void {\n const estado = registro()\n // Invalida o que estiver na fila ANTES do cancel: os `onerror` que ele dispara\n // chegam com a geração velha e são ignorados.\n estado.geracao += 1\n const motor = sintese()\n if (motor) {\n try {\n motor.cancel()\n } catch {\n /* já estava parado */\n }\n }\n limparEstado()\n}\n\n/** Para a leitura quando o usuário troca de aba — a fala continuaria no vazio. */\nfunction garantirObservadorDeVisibilidade(): void {\n const estado = registro()\n if (estado.ouvindoVisibilidade || typeof document === 'undefined') return\n if (typeof document.addEventListener !== 'function') return\n estado.ouvindoVisibilidade = true\n document.addEventListener('visibilitychange', () => {\n if (document.hidden) pararInterno()\n })\n}\n\nexport function useLeituraVoz(): {\n suportado: Readonly<Ref<boolean>>\n lendo: Readonly<Ref<boolean>>\n idLendo: Readonly<Ref<IdLeitura | null>>\n /** Vozes instaladas na máquina. Popula sozinha no `voiceschanged`. */\n vozes: Readonly<Ref<SpeechSynthesisVoice[]>>\n /** Vozes que servem para um idioma (prefixo BCP-47: `pt` casa `pt-BR` e `pt-PT`). */\n vozesPara: (lang: string) => SpeechSynthesisVoice[]\n /**\n * Se dá pra ler NESTE idioma nesta máquina.\n *\n * Otimista de propósito: com a lista ainda vazia (o `voiceschanged` costuma\n * chegar depois) devolve `true`. Esconder o botão por uma lista que ainda não\n * carregou seria pior que tentar e falhar — e a falha real desliga o suporte.\n */\n temVozPara: (lang: string) => boolean\n falar: (texto: string, opcoes?: OpcoesFala) => void\n alternar: (texto: string, opcoes?: OpcoesFala) => void\n parar: () => void\n} {\n const estado = registro()\n\n // Carrega a lista já na primeira montagem: o painel de preferências precisa\n // dela ANTES de qualquer fala pra desenhar o seletor.\n if (estado.suportado.value) garantirVozes()\n\n function falar(texto: string, opcoes: OpcoesFala = {}): void {\n const motor = sintese()\n if (!motor || !estado.suportado.value) return\n\n const pedacos = fatiarTexto(texto)\n if (!pedacos.length) return\n\n pararInterno()\n garantirVozes()\n garantirObservadorDeVisibilidade()\n\n const minhaGeracao = estado.geracao\n const lang = opcoes.lang || 'pt-BR'\n const voz = escolherVoz(lang, opcoes.voz)\n const ultimo = pedacos.length - 1\n\n estado.lendo.value = true\n estado.idLendo.value = opcoes.id ?? null\n\n const enfileirar = (): void => {\n // Fila montada de uma vez só, dentro do gesto do clique. Encadear\n // `onend → speak(próximo)` perderia o contexto de ativação no Safari.\n pedacos.forEach((pedaco, indice) => {\n const fala = new SpeechSynthesisUtterance(pedaco)\n fala.lang = lang\n if (voz) fala.voice = voz\n if (opcoes.rate !== undefined) fala.rate = opcoes.rate\n\n fala.onend = (): void => {\n if (minhaGeracao !== registro().geracao) return\n if (indice === ultimo) limparEstado()\n }\n\n fala.onerror = (evento: SpeechSynthesisErrorEvent): void => {\n // `canceled`/`interrupted` são o efeito normal de um `cancel()` — não\n // são falha, e a fala nova já assumiu.\n if (minhaGeracao !== registro().geracao) return\n if (evento.error === 'canceled' || evento.error === 'interrupted') return\n // Motor existe mas não fala (kiosk, Windows sem pacote de voz): esconde\n // o recurso em vez de deixar botão que não faz nada.\n if (\n evento.error === 'synthesis-unavailable' ||\n evento.error === 'synthesis-failed' ||\n evento.error === 'not-allowed' ||\n evento.error === 'audio-busy'\n ) {\n registro().suportado.value = false\n }\n limparEstado()\n }\n\n try {\n motor.speak(fala)\n } catch {\n registro().suportado.value = false\n limparEstado()\n }\n })\n }\n\n // Chrome trava o motor quando `cancel()` e `speak()` caem no mesmo tick.\n if (motor.speaking || motor.pending) window.setTimeout(enfileirar, 0)\n else enfileirar()\n }\n\n function parar(): void {\n pararInterno()\n }\n\n /** Handler do botão: se já está lendo ESTE trecho, para; senão, fala. */\n function alternar(texto: string, opcoes: OpcoesFala = {}): void {\n const mesmo = estado.lendo.value && estado.idLendo.value === (opcoes.id ?? null)\n if (mesmo) parar()\n else falar(texto, opcoes)\n }\n\n return {\n suportado: readonly(estado.suportado),\n lendo: readonly(estado.lendo),\n idLendo: readonly(estado.idLendo),\n vozes: readonly(estado.vozes) as Readonly<Ref<SpeechSynthesisVoice[]>>,\n vozesPara: vozesDoIdioma,\n temVozPara: (lang: string): boolean =>\n estado.vozes.value.length === 0 || vozesDoIdioma(lang).length > 0,\n falar,\n alternar,\n parar,\n }\n}\n\n/** Só para testes — descarta o singleton (espelha `resetarTourVistoParaTeste`). */\nexport function resetarLeituraVozParaTeste(): void {\n const alvo = globalThis as unknown as Record<symbol, RegistroVoz | undefined>\n delete alvo[CHAVE_GLOBAL]\n}\n"],"names":[],"mappings":"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"}
|
package/dist/index98.cjs
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const vue = require("vue");
|
|
4
|
+
const quasar = require("quasar");
|
|
5
|
+
const CHAVE = "acai-ui:preferencias";
|
|
6
|
+
const PADRAO = {
|
|
7
|
+
tema: "claro",
|
|
8
|
+
tamanhoFonte: 100,
|
|
9
|
+
daltonismo: "padrao",
|
|
10
|
+
altoContraste: false,
|
|
11
|
+
reduzirAnimacoes: false,
|
|
12
|
+
// Ligada por padrão: o botão não faz nada até alguém clicar, e no atendimento
|
|
13
|
+
// presencial a descoberta do recurso vale mais que a economia de um ícone.
|
|
14
|
+
leituraVoz: true,
|
|
15
|
+
vozNome: "",
|
|
16
|
+
vozVelocidade: 1
|
|
17
|
+
};
|
|
18
|
+
let estado = null;
|
|
19
|
+
function carregar() {
|
|
20
|
+
if (typeof window === "undefined") return { ...PADRAO };
|
|
21
|
+
try {
|
|
22
|
+
const bruto = window.localStorage.getItem(CHAVE);
|
|
23
|
+
if (bruto) {
|
|
24
|
+
const salvo = { ...PADRAO, ...JSON.parse(bruto) };
|
|
25
|
+
if (salvo.daltonismo === "seguro") salvo.daltonismo = "deuteranopia";
|
|
26
|
+
if (salvo.vozVelocidade === 0.85) salvo.vozVelocidade = 0.6;
|
|
27
|
+
if (salvo.vozVelocidade === 1.3) salvo.vozVelocidade = 1.6;
|
|
28
|
+
return salvo;
|
|
29
|
+
}
|
|
30
|
+
} catch {
|
|
31
|
+
}
|
|
32
|
+
return { ...PADRAO };
|
|
33
|
+
}
|
|
34
|
+
const ID_ESTILO_ANIM = "acai-ui-reduzir-anim";
|
|
35
|
+
function garantirEstiloReduzirAnim() {
|
|
36
|
+
if (typeof document === "undefined" || document.getElementById(ID_ESTILO_ANIM)) return;
|
|
37
|
+
const estilo = document.createElement("style");
|
|
38
|
+
estilo.id = ID_ESTILO_ANIM;
|
|
39
|
+
estilo.textContent = "html[data-acai-reduzir-anim] *, html[data-acai-reduzir-anim] *::before, html[data-acai-reduzir-anim] *::after{ transition-duration: .001ms !important; animation-duration: .001ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }";
|
|
40
|
+
document.head.appendChild(estilo);
|
|
41
|
+
}
|
|
42
|
+
function aplicar(p) {
|
|
43
|
+
if (typeof document === "undefined") return;
|
|
44
|
+
const html = document.documentElement;
|
|
45
|
+
html.style.fontSize = `${p.tamanhoFonte}%`;
|
|
46
|
+
try {
|
|
47
|
+
quasar.Dark.set(p.tema === "escuro");
|
|
48
|
+
} catch {
|
|
49
|
+
}
|
|
50
|
+
html.setAttribute("data-acai-tema", p.tema);
|
|
51
|
+
html.setAttribute("data-acai-daltonismo", p.daltonismo);
|
|
52
|
+
html.toggleAttribute("data-acai-contraste", p.altoContraste);
|
|
53
|
+
html.toggleAttribute("data-acai-reduzir-anim", p.reduzirAnimacoes);
|
|
54
|
+
if (p.reduzirAnimacoes) garantirEstiloReduzirAnim();
|
|
55
|
+
try {
|
|
56
|
+
window.localStorage.setItem(CHAVE, JSON.stringify(p));
|
|
57
|
+
} catch {
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function usePreferencias() {
|
|
61
|
+
if (!estado) {
|
|
62
|
+
estado = vue.reactive(carregar());
|
|
63
|
+
aplicar(estado);
|
|
64
|
+
vue.watch(estado, (p) => aplicar(p), { deep: true });
|
|
65
|
+
}
|
|
66
|
+
function redefinir() {
|
|
67
|
+
Object.assign(estado, PADRAO);
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
/** Estado reativo (mutável via bind direto nos controles). */
|
|
71
|
+
preferencias: estado,
|
|
72
|
+
/** Cópia somente-leitura, útil pra ler sem risco de escrita acidental. */
|
|
73
|
+
somenteLeitura: vue.readonly(estado),
|
|
74
|
+
redefinir
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
exports.usePreferencias = usePreferencias;
|
|
78
|
+
//# sourceMappingURL=index98.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index98.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index98.mjs
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { reactive, watch, readonly } from "vue";
|
|
2
|
+
import { Dark } from "quasar";
|
|
3
|
+
const CHAVE = "acai-ui:preferencias";
|
|
4
|
+
const PADRAO = {
|
|
5
|
+
tema: "claro",
|
|
6
|
+
tamanhoFonte: 100,
|
|
7
|
+
daltonismo: "padrao",
|
|
8
|
+
altoContraste: false,
|
|
9
|
+
reduzirAnimacoes: false,
|
|
10
|
+
// Ligada por padrão: o botão não faz nada até alguém clicar, e no atendimento
|
|
11
|
+
// presencial a descoberta do recurso vale mais que a economia de um ícone.
|
|
12
|
+
leituraVoz: true,
|
|
13
|
+
vozNome: "",
|
|
14
|
+
vozVelocidade: 1
|
|
15
|
+
};
|
|
16
|
+
let estado = null;
|
|
17
|
+
function carregar() {
|
|
18
|
+
if (typeof window === "undefined") return { ...PADRAO };
|
|
19
|
+
try {
|
|
20
|
+
const bruto = window.localStorage.getItem(CHAVE);
|
|
21
|
+
if (bruto) {
|
|
22
|
+
const salvo = { ...PADRAO, ...JSON.parse(bruto) };
|
|
23
|
+
if (salvo.daltonismo === "seguro") salvo.daltonismo = "deuteranopia";
|
|
24
|
+
if (salvo.vozVelocidade === 0.85) salvo.vozVelocidade = 0.6;
|
|
25
|
+
if (salvo.vozVelocidade === 1.3) salvo.vozVelocidade = 1.6;
|
|
26
|
+
return salvo;
|
|
27
|
+
}
|
|
28
|
+
} catch {
|
|
29
|
+
}
|
|
30
|
+
return { ...PADRAO };
|
|
31
|
+
}
|
|
32
|
+
const ID_ESTILO_ANIM = "acai-ui-reduzir-anim";
|
|
33
|
+
function garantirEstiloReduzirAnim() {
|
|
34
|
+
if (typeof document === "undefined" || document.getElementById(ID_ESTILO_ANIM)) return;
|
|
35
|
+
const estilo = document.createElement("style");
|
|
36
|
+
estilo.id = ID_ESTILO_ANIM;
|
|
37
|
+
estilo.textContent = "html[data-acai-reduzir-anim] *, html[data-acai-reduzir-anim] *::before, html[data-acai-reduzir-anim] *::after{ transition-duration: .001ms !important; animation-duration: .001ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }";
|
|
38
|
+
document.head.appendChild(estilo);
|
|
39
|
+
}
|
|
40
|
+
function aplicar(p) {
|
|
41
|
+
if (typeof document === "undefined") return;
|
|
42
|
+
const html = document.documentElement;
|
|
43
|
+
html.style.fontSize = `${p.tamanhoFonte}%`;
|
|
44
|
+
try {
|
|
45
|
+
Dark.set(p.tema === "escuro");
|
|
46
|
+
} catch {
|
|
47
|
+
}
|
|
48
|
+
html.setAttribute("data-acai-tema", p.tema);
|
|
49
|
+
html.setAttribute("data-acai-daltonismo", p.daltonismo);
|
|
50
|
+
html.toggleAttribute("data-acai-contraste", p.altoContraste);
|
|
51
|
+
html.toggleAttribute("data-acai-reduzir-anim", p.reduzirAnimacoes);
|
|
52
|
+
if (p.reduzirAnimacoes) garantirEstiloReduzirAnim();
|
|
53
|
+
try {
|
|
54
|
+
window.localStorage.setItem(CHAVE, JSON.stringify(p));
|
|
55
|
+
} catch {
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function usePreferencias() {
|
|
59
|
+
if (!estado) {
|
|
60
|
+
estado = reactive(carregar());
|
|
61
|
+
aplicar(estado);
|
|
62
|
+
watch(estado, (p) => aplicar(p), { deep: true });
|
|
63
|
+
}
|
|
64
|
+
function redefinir() {
|
|
65
|
+
Object.assign(estado, PADRAO);
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
/** Estado reativo (mutável via bind direto nos controles). */
|
|
69
|
+
preferencias: estado,
|
|
70
|
+
/** Cópia somente-leitura, útil pra ler sem risco de escrita acidental. */
|
|
71
|
+
somenteLeitura: readonly(estado),
|
|
72
|
+
redefinir
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export {
|
|
76
|
+
usePreferencias
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=index98.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index98.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index99.cjs
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const vue = require("vue");
|
|
4
|
+
function useTamanhoElemento(alvo, padrao = {}) {
|
|
5
|
+
const largura = vue.ref(padrao.largura ?? 640);
|
|
6
|
+
const altura = vue.ref(padrao.altura ?? 320);
|
|
7
|
+
const medido = vue.ref(false);
|
|
8
|
+
let observadorTamanho = null;
|
|
9
|
+
let observadorVisibilidade = null;
|
|
10
|
+
let agendado = 0;
|
|
11
|
+
function medir() {
|
|
12
|
+
const el = alvo.value;
|
|
13
|
+
if (!el) return;
|
|
14
|
+
const caixa = el.getBoundingClientRect();
|
|
15
|
+
if (caixa.width <= 0 && caixa.height <= 0) return;
|
|
16
|
+
if (caixa.width > 0) largura.value = caixa.width;
|
|
17
|
+
if (caixa.height > 0) altura.value = caixa.height;
|
|
18
|
+
medido.value = true;
|
|
19
|
+
}
|
|
20
|
+
function remedir() {
|
|
21
|
+
if (typeof requestAnimationFrame === "undefined") {
|
|
22
|
+
medir();
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (agendado) return;
|
|
26
|
+
agendado = requestAnimationFrame(() => {
|
|
27
|
+
agendado = 0;
|
|
28
|
+
medir();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
vue.onMounted(() => {
|
|
32
|
+
medir();
|
|
33
|
+
remedir();
|
|
34
|
+
const el = alvo.value;
|
|
35
|
+
if (!el) return;
|
|
36
|
+
if (typeof ResizeObserver !== "undefined") {
|
|
37
|
+
observadorTamanho = new ResizeObserver(remedir);
|
|
38
|
+
observadorTamanho.observe(el);
|
|
39
|
+
}
|
|
40
|
+
if (typeof IntersectionObserver !== "undefined") {
|
|
41
|
+
observadorVisibilidade = new IntersectionObserver((entradas) => {
|
|
42
|
+
if (entradas.some((e) => e.isIntersecting)) remedir();
|
|
43
|
+
});
|
|
44
|
+
observadorVisibilidade.observe(el);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
vue.onBeforeUnmount(() => {
|
|
48
|
+
observadorTamanho == null ? void 0 : observadorTamanho.disconnect();
|
|
49
|
+
observadorVisibilidade == null ? void 0 : observadorVisibilidade.disconnect();
|
|
50
|
+
if (agendado && typeof cancelAnimationFrame !== "undefined") cancelAnimationFrame(agendado);
|
|
51
|
+
});
|
|
52
|
+
return { largura, altura, medido, remedir };
|
|
53
|
+
}
|
|
54
|
+
exports.useTamanhoElemento = useTamanhoElemento;
|
|
55
|
+
//# sourceMappingURL=index99.cjs.map
|