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.
Files changed (1139) hide show
  1. package/CHANGELOG.md +795 -0
  2. package/README.md +64 -0
  3. package/dist/acai-ui.css +14627 -0
  4. package/dist/components/actions/acai-ui-actions.d.ts +3 -0
  5. package/dist/components/async-select/acai-ui-async-select-interface.d.ts +48 -0
  6. package/dist/components/async-select/acai-ui-async-select-interface.d.ts.map +1 -0
  7. package/dist/components/async-select/acai-ui-async-select.d.ts +3 -0
  8. package/dist/components/badge/acai-ui-badge-interface.d.ts +20 -0
  9. package/dist/components/badge/acai-ui-badge-interface.d.ts.map +1 -0
  10. package/dist/components/badge/acai-ui-badge.d.ts +3 -0
  11. package/dist/components/banner/acai-ui-banner-interface.d.ts +16 -0
  12. package/dist/components/banner/acai-ui-banner-interface.d.ts.map +1 -0
  13. package/dist/components/banner/acai-ui-banner.d.ts +3 -0
  14. package/dist/components/button/acai-ui-button-interface.d.ts +21 -0
  15. package/dist/components/button/acai-ui-button-interface.d.ts.map +1 -0
  16. package/dist/components/button/acai-ui-button.d.ts +3 -0
  17. package/dist/components/card/acai-ui-card-interface.d.ts +14 -0
  18. package/dist/components/card/acai-ui-card-interface.d.ts.map +1 -0
  19. package/dist/components/card/acai-ui-card.d.ts +3 -0
  20. package/dist/components/chart/acai-ui-chart-interface.d.ts +190 -0
  21. package/dist/components/chart/acai-ui-chart-interface.d.ts.map +1 -0
  22. package/dist/components/chart/acai-ui-chart.d.ts +3 -0
  23. package/dist/components/chart/chart-a11y.d.ts +40 -0
  24. package/dist/components/chart/chart-a11y.d.ts.map +1 -0
  25. package/dist/components/chart/chart-caminhos.d.ts +91 -0
  26. package/dist/components/chart/chart-caminhos.d.ts.map +1 -0
  27. package/dist/components/chart/chart-cartesiano.d.ts +3 -0
  28. package/dist/components/chart/chart-dados.d.ts +74 -0
  29. package/dist/components/chart/chart-dados.d.ts.map +1 -0
  30. package/dist/components/chart/chart-escalas.d.ts +45 -0
  31. package/dist/components/chart/chart-escalas.d.ts.map +1 -0
  32. package/dist/components/chart/chart-formatar.d.ts +21 -0
  33. package/dist/components/chart/chart-formatar.d.ts.map +1 -0
  34. package/dist/components/chart/chart-gauge.d.ts +3 -0
  35. package/dist/components/chart/chart-headless.d.ts +29 -0
  36. package/dist/components/chart/chart-headless.d.ts.map +1 -0
  37. package/dist/components/chart/chart-imagem.d.ts +51 -0
  38. package/dist/components/chart/chart-imagem.d.ts.map +1 -0
  39. package/dist/components/chart/chart-layout.d.ts +59 -0
  40. package/dist/components/chart/chart-layout.d.ts.map +1 -0
  41. package/dist/components/chart/chart-legenda.d.ts +3 -0
  42. package/dist/components/chart/chart-pizza.d.ts +3 -0
  43. package/dist/components/chart/chart-plano.d.ts +201 -0
  44. package/dist/components/chart/chart-plano.d.ts.map +1 -0
  45. package/dist/components/chart/chart-rotulos.d.ts +10 -0
  46. package/dist/components/chart/chart-rotulos.d.ts.map +1 -0
  47. package/dist/components/chart/chart-tabela.d.ts +3 -0
  48. package/dist/components/chart/chart-ticks.d.ts +35 -0
  49. package/dist/components/chart/chart-ticks.d.ts.map +1 -0
  50. package/dist/components/checkbox/acai-ui-checkbox-interface.d.ts +16 -0
  51. package/dist/components/checkbox/acai-ui-checkbox-interface.d.ts.map +1 -0
  52. package/dist/components/checkbox/acai-ui-checkbox.d.ts +3 -0
  53. package/dist/components/chip/acai-ui-chip-interface.d.ts +17 -0
  54. package/dist/components/chip/acai-ui-chip-interface.d.ts.map +1 -0
  55. package/dist/components/chip/acai-ui-chip.d.ts +3 -0
  56. package/dist/components/code/acai-ui-code-interface.d.ts +44 -0
  57. package/dist/components/code/acai-ui-code-interface.d.ts.map +1 -0
  58. package/dist/components/code/acai-ui-code.d.ts +3 -0
  59. package/dist/components/code/dobras-json.d.ts +14 -0
  60. package/dist/components/code/dobras-json.d.ts.map +1 -0
  61. package/dist/components/confirm/acai-ui-confirm.d.ts +3 -0
  62. package/dist/components/container/acai-ui-container-interface.d.ts +29 -0
  63. package/dist/components/container/acai-ui-container-interface.d.ts.map +1 -0
  64. package/dist/components/container/acai-ui-container.d.ts +3 -0
  65. package/dist/components/date/acai-ui-date-interface.d.ts +19 -0
  66. package/dist/components/date/acai-ui-date-interface.d.ts.map +1 -0
  67. package/dist/components/date/acai-ui-date.d.ts +3 -0
  68. package/dist/components/date-range/acai-ui-date-range-interface.d.ts +27 -0
  69. package/dist/components/date-range/acai-ui-date-range-interface.d.ts.map +1 -0
  70. package/dist/components/date-range/acai-ui-date-range.d.ts +3 -0
  71. package/dist/components/datetime/acai-ui-datetime-interface.d.ts +10 -0
  72. package/dist/components/datetime/acai-ui-datetime-interface.d.ts.map +1 -0
  73. package/dist/components/datetime/acai-ui-datetime.d.ts +3 -0
  74. package/dist/components/dialog/acai-ui-dialog-interface.d.ts +17 -0
  75. package/dist/components/dialog/acai-ui-dialog-interface.d.ts.map +1 -0
  76. package/dist/components/dialog/acai-ui-dialog.d.ts +3 -0
  77. package/dist/components/divider/acai-ui-divider-interface.d.ts +5 -0
  78. package/dist/components/divider/acai-ui-divider-interface.d.ts.map +1 -0
  79. package/dist/components/divider/acai-ui-divider.d.ts +3 -0
  80. package/dist/components/drawer/acai-ui-drawer-interface.d.ts +97 -0
  81. package/dist/components/drawer/acai-ui-drawer-interface.d.ts.map +1 -0
  82. package/dist/components/drawer/acai-ui-drawer.d.ts +3 -0
  83. package/dist/components/drawer/drawer-sidebar-helper.d.ts +4 -0
  84. package/dist/components/drawer/drawer-sidebar-helper.d.ts.map +1 -0
  85. package/dist/components/dropdown/acai-ui-dropdown-interface.d.ts +35 -0
  86. package/dist/components/dropdown/acai-ui-dropdown-interface.d.ts.map +1 -0
  87. package/dist/components/dropdown/acai-ui-dropdown-item.d.ts +3 -0
  88. package/dist/components/dropdown/acai-ui-dropdown.d.ts +3 -0
  89. package/dist/components/error-log/acai-ui-error-log-interface.d.ts +59 -0
  90. package/dist/components/error-log/acai-ui-error-log-interface.d.ts.map +1 -0
  91. package/dist/components/error-log/acai-ui-error-log-json-tree.d.ts +3 -0
  92. package/dist/components/error-log/acai-ui-error-log-redigir.d.ts +28 -0
  93. package/dist/components/error-log/acai-ui-error-log-redigir.d.ts.map +1 -0
  94. package/dist/components/error-log/acai-ui-error-log.d.ts +3 -0
  95. package/dist/components/file/acai-ui-file-interface.d.ts +13 -0
  96. package/dist/components/file/acai-ui-file-interface.d.ts.map +1 -0
  97. package/dist/components/file/acai-ui-file.d.ts +3 -0
  98. package/dist/components/form/acai-ui-form-interface.d.ts +37 -0
  99. package/dist/components/form/acai-ui-form-interface.d.ts.map +1 -0
  100. package/dist/components/form/acai-ui-form.d.ts +3 -0
  101. package/dist/components/help/acai-ui-help-interface.d.ts +184 -0
  102. package/dist/components/help/acai-ui-help-interface.d.ts.map +1 -0
  103. package/dist/components/help/acai-ui-help.d.ts +3 -0
  104. package/dist/components/help/acai-ui-tour.d.ts +3 -0
  105. package/dist/components/help/tour-escolha.d.ts +62 -0
  106. package/dist/components/help/tour-escolha.d.ts.map +1 -0
  107. package/dist/components/help/tour-posicionar.d.ts +39 -0
  108. package/dist/components/help/tour-posicionar.d.ts.map +1 -0
  109. package/dist/components/help/tour-registry.d.ts +54 -0
  110. package/dist/components/help/tour-registry.d.ts.map +1 -0
  111. package/dist/components/help/use-tour-visto.d.ts +11 -0
  112. package/dist/components/help/use-tour-visto.d.ts.map +1 -0
  113. package/dist/components/icon/acai-ui-icon-interface.d.ts +12 -0
  114. package/dist/components/icon/acai-ui-icon-interface.d.ts.map +1 -0
  115. package/dist/components/icon/acai-ui-icon.d.ts +3 -0
  116. package/dist/components/index.d.ts +89 -0
  117. package/dist/components/index.d.ts.map +1 -0
  118. package/dist/components/input/acai-ui-input-interface.d.ts +20 -0
  119. package/dist/components/input/acai-ui-input-interface.d.ts.map +1 -0
  120. package/dist/components/input/acai-ui-input.d.ts +3 -0
  121. package/dist/components/modal/acai-ui-modal-interface.d.ts +16 -0
  122. package/dist/components/modal/acai-ui-modal-interface.d.ts.map +1 -0
  123. package/dist/components/modal/acai-ui-modal.d.ts +3 -0
  124. package/dist/components/pagination/acai-ui-pagination-interface.d.ts +9 -0
  125. package/dist/components/pagination/acai-ui-pagination-interface.d.ts.map +1 -0
  126. package/dist/components/pagination/acai-ui-pagination.d.ts +3 -0
  127. package/dist/components/preferences/acai-ui-preferences-interface.d.ts +5 -0
  128. package/dist/components/preferences/acai-ui-preferences-interface.d.ts.map +1 -0
  129. package/dist/components/preferences/acai-ui-preferences.d.ts +3 -0
  130. package/dist/components/progress/acai-ui-progress-interface.d.ts +18 -0
  131. package/dist/components/progress/acai-ui-progress-interface.d.ts.map +1 -0
  132. package/dist/components/progress/acai-ui-progress.d.ts +3 -0
  133. package/dist/components/radio/acai-ui-radio-interface.d.ts +13 -0
  134. package/dist/components/radio/acai-ui-radio-interface.d.ts.map +1 -0
  135. package/dist/components/radio/acai-ui-radio.d.ts +3 -0
  136. package/dist/components/section/acai-ui-section.d.ts +3 -0
  137. package/dist/components/select/acai-ui-select-interface.d.ts +18 -0
  138. package/dist/components/select/acai-ui-select-interface.d.ts.map +1 -0
  139. package/dist/components/select/acai-ui-select.d.ts +3 -0
  140. package/dist/components/session-clock/acai-ui-session-clock.d.ts +3 -0
  141. package/dist/components/stepper/acai-ui-step-interface.d.ts +18 -0
  142. package/dist/components/stepper/acai-ui-step-interface.d.ts.map +1 -0
  143. package/dist/components/stepper/acai-ui-step.d.ts +3 -0
  144. package/dist/components/stepper/acai-ui-stepper-interface.d.ts +53 -0
  145. package/dist/components/stepper/acai-ui-stepper-interface.d.ts.map +1 -0
  146. package/dist/components/stepper/acai-ui-stepper.d.ts +3 -0
  147. package/dist/components/swagger/acai-ui-swagger-interface.d.ts +53 -0
  148. package/dist/components/swagger/acai-ui-swagger-interface.d.ts.map +1 -0
  149. package/dist/components/swagger/acai-ui-swagger-operacao.d.ts +3 -0
  150. package/dist/components/swagger/acai-ui-swagger-requisicao.d.ts +76 -0
  151. package/dist/components/swagger/acai-ui-swagger-requisicao.d.ts.map +1 -0
  152. package/dist/components/swagger/acai-ui-swagger-schema.d.ts +3 -0
  153. package/dist/components/swagger/acai-ui-swagger.d.ts +3 -0
  154. package/dist/components/swagger/openapi-normalizar.d.ts +51 -0
  155. package/dist/components/swagger/openapi-normalizar.d.ts.map +1 -0
  156. package/dist/components/swagger/openapi-tipos.d.ts +167 -0
  157. package/dist/components/swagger/openapi-tipos.d.ts.map +1 -0
  158. package/dist/components/table/acai-ui-table-interface.d.ts +47 -0
  159. package/dist/components/table/acai-ui-table-interface.d.ts.map +1 -0
  160. package/dist/components/table/acai-ui-table-justificativa.d.ts +3 -0
  161. package/dist/components/table/acai-ui-table.d.ts +3 -0
  162. package/dist/components/tabs/acai-ui-tab.d.ts +3 -0
  163. package/dist/components/tabs/acai-ui-tabs-interface.d.ts +32 -0
  164. package/dist/components/tabs/acai-ui-tabs-interface.d.ts.map +1 -0
  165. package/dist/components/tabs/acai-ui-tabs.d.ts +3 -0
  166. package/dist/components/time/acai-ui-time-interface.d.ts +15 -0
  167. package/dist/components/time/acai-ui-time-interface.d.ts.map +1 -0
  168. package/dist/components/time/acai-ui-time.d.ts +3 -0
  169. package/dist/components/toggle/acai-ui-toggle-interface.d.ts +12 -0
  170. package/dist/components/toggle/acai-ui-toggle-interface.d.ts.map +1 -0
  171. package/dist/components/toggle/acai-ui-toggle.d.ts +3 -0
  172. package/dist/components/tooltip/acai-ui-tooltip-interface.d.ts +9 -0
  173. package/dist/components/tooltip/acai-ui-tooltip-interface.d.ts.map +1 -0
  174. package/dist/components/tooltip/acai-ui-tooltip.d.ts +3 -0
  175. package/dist/components/user-menu/acai-ui-user-menu-interface.d.ts +14 -0
  176. package/dist/components/user-menu/acai-ui-user-menu-interface.d.ts.map +1 -0
  177. package/dist/components/user-menu/acai-ui-user-menu.d.ts +3 -0
  178. package/dist/components/validation/acai-ui-validation.d.ts +3 -0
  179. package/dist/constants/chart-paleta.d.ts +47 -0
  180. package/dist/constants/chart-paleta.d.ts.map +1 -0
  181. package/dist/constants/efeitos.d.ts +22 -0
  182. package/dist/constants/efeitos.d.ts.map +1 -0
  183. package/dist/constants/index.d.ts +13 -0
  184. package/dist/constants/index.d.ts.map +1 -0
  185. package/dist/constants/lista-icons.d.ts +156 -0
  186. package/dist/constants/lista-icons.d.ts.map +1 -0
  187. package/dist/constants/medidas-espacos.d.ts +15 -0
  188. package/dist/constants/medidas-espacos.d.ts.map +1 -0
  189. package/dist/constants/radius.d.ts +15 -0
  190. package/dist/constants/radius.d.ts.map +1 -0
  191. package/dist/constants/status-badge.d.ts +17 -0
  192. package/dist/constants/status-badge.d.ts.map +1 -0
  193. package/dist/hooks/filtros-url-internos.d.ts +121 -0
  194. package/dist/hooks/filtros-url-internos.d.ts.map +1 -0
  195. package/dist/hooks/index.d.ts +18 -0
  196. package/dist/hooks/index.d.ts.map +1 -0
  197. package/dist/hooks/notify.d.ts +8 -0
  198. package/dist/hooks/notify.d.ts.map +1 -0
  199. package/dist/hooks/use-contador-sessao.d.ts +22 -0
  200. package/dist/hooks/use-contador-sessao.d.ts.map +1 -0
  201. package/dist/hooks/use-filtros-na-url.d.ts +110 -0
  202. package/dist/hooks/use-filtros-na-url.d.ts.map +1 -0
  203. package/dist/hooks/use-leitura-voz.d.ts +60 -0
  204. package/dist/hooks/use-leitura-voz.d.ts.map +1 -0
  205. package/dist/hooks/use-listagem-na-url.d.ts +185 -0
  206. package/dist/hooks/use-listagem-na-url.d.ts.map +1 -0
  207. package/dist/hooks/use-preferencias.d.ts +60 -0
  208. package/dist/hooks/use-preferencias.d.ts.map +1 -0
  209. package/dist/hooks/use-repasse-quasar.d.ts +42 -0
  210. package/dist/hooks/use-repasse-quasar.d.ts.map +1 -0
  211. package/dist/hooks/use-tamanho-elemento.d.ts +26 -0
  212. package/dist/hooks/use-tamanho-elemento.d.ts.map +1 -0
  213. package/dist/hooks/use-tela.d.ts +84 -0
  214. package/dist/hooks/use-tela.d.ts.map +1 -0
  215. package/dist/hooks/use-validacao-visual.d.ts +40 -0
  216. package/dist/hooks/use-validacao-visual.d.ts.map +1 -0
  217. package/dist/index.cjs +249 -0
  218. package/dist/index.cjs.map +1 -0
  219. package/dist/index.d.ts +8 -0
  220. package/dist/index.d.ts.map +1 -0
  221. package/dist/index.mjs +249 -0
  222. package/dist/index.mjs.map +1 -0
  223. package/dist/index10.cjs +24 -0
  224. package/dist/index10.cjs.map +1 -0
  225. package/dist/index10.mjs +25 -0
  226. package/dist/index10.mjs.map +1 -0
  227. package/dist/index100.cjs +51 -0
  228. package/dist/index100.cjs.map +1 -0
  229. package/dist/index100.mjs +51 -0
  230. package/dist/index100.mjs.map +1 -0
  231. package/dist/index101.cjs +143 -0
  232. package/dist/index101.cjs.map +1 -0
  233. package/dist/index101.mjs +143 -0
  234. package/dist/index101.mjs.map +1 -0
  235. package/dist/index102.cjs +137 -0
  236. package/dist/index102.cjs.map +1 -0
  237. package/dist/index102.mjs +138 -0
  238. package/dist/index102.mjs.map +1 -0
  239. package/dist/index104.cjs +10 -0
  240. package/dist/index104.cjs.map +1 -0
  241. package/dist/index104.mjs +11 -0
  242. package/dist/index104.mjs.map +1 -0
  243. package/dist/index105.cjs +5 -0
  244. package/dist/index105.cjs.map +1 -0
  245. package/dist/index105.mjs +6 -0
  246. package/dist/index105.mjs.map +1 -0
  247. package/dist/index106.cjs +5 -0
  248. package/dist/index106.cjs.map +1 -0
  249. package/dist/index106.mjs +6 -0
  250. package/dist/index106.mjs.map +1 -0
  251. package/dist/index107.cjs +86 -0
  252. package/dist/index107.cjs.map +1 -0
  253. package/dist/index107.mjs +87 -0
  254. package/dist/index107.mjs.map +1 -0
  255. package/dist/index109.cjs +123 -0
  256. package/dist/index109.cjs.map +1 -0
  257. package/dist/index109.mjs +124 -0
  258. package/dist/index109.mjs.map +1 -0
  259. package/dist/index111.cjs +121 -0
  260. package/dist/index111.cjs.map +1 -0
  261. package/dist/index111.mjs +122 -0
  262. package/dist/index111.mjs.map +1 -0
  263. package/dist/index113.cjs +72 -0
  264. package/dist/index113.cjs.map +1 -0
  265. package/dist/index113.mjs +73 -0
  266. package/dist/index113.mjs.map +1 -0
  267. package/dist/index115.cjs +5 -0
  268. package/dist/index115.cjs.map +1 -0
  269. package/dist/index115.mjs +6 -0
  270. package/dist/index115.mjs.map +1 -0
  271. package/dist/index116.cjs +56 -0
  272. package/dist/index116.cjs.map +1 -0
  273. package/dist/index116.mjs +57 -0
  274. package/dist/index116.mjs.map +1 -0
  275. package/dist/index118.cjs +5 -0
  276. package/dist/index118.cjs.map +1 -0
  277. package/dist/index118.mjs +6 -0
  278. package/dist/index118.mjs.map +1 -0
  279. package/dist/index119.cjs +210 -0
  280. package/dist/index119.cjs.map +1 -0
  281. package/dist/index119.mjs +211 -0
  282. package/dist/index119.mjs.map +1 -0
  283. package/dist/index12.cjs +606 -0
  284. package/dist/index12.cjs.map +1 -0
  285. package/dist/index12.mjs +607 -0
  286. package/dist/index12.mjs.map +1 -0
  287. package/dist/index121.cjs +170 -0
  288. package/dist/index121.cjs.map +1 -0
  289. package/dist/index121.mjs +171 -0
  290. package/dist/index121.mjs.map +1 -0
  291. package/dist/index123.cjs +109 -0
  292. package/dist/index123.cjs.map +1 -0
  293. package/dist/index123.mjs +110 -0
  294. package/dist/index123.mjs.map +1 -0
  295. package/dist/index125.cjs +5 -0
  296. package/dist/index125.cjs.map +1 -0
  297. package/dist/index125.mjs +6 -0
  298. package/dist/index125.mjs.map +1 -0
  299. package/dist/index126.cjs +4 -0
  300. package/dist/index126.cjs.map +1 -0
  301. package/dist/index126.mjs +5 -0
  302. package/dist/index126.mjs.map +1 -0
  303. package/dist/index127.cjs +300 -0
  304. package/dist/index127.cjs.map +1 -0
  305. package/dist/index127.mjs +301 -0
  306. package/dist/index127.mjs.map +1 -0
  307. package/dist/index130.cjs +5 -0
  308. package/dist/index130.cjs.map +1 -0
  309. package/dist/index130.mjs +6 -0
  310. package/dist/index130.mjs.map +1 -0
  311. package/dist/index131.cjs +5 -0
  312. package/dist/index131.cjs.map +1 -0
  313. package/dist/index131.mjs +6 -0
  314. package/dist/index131.mjs.map +1 -0
  315. package/dist/index132.cjs +128 -0
  316. package/dist/index132.cjs.map +1 -0
  317. package/dist/index132.mjs +129 -0
  318. package/dist/index132.mjs.map +1 -0
  319. package/dist/index134.cjs +4 -0
  320. package/dist/index134.cjs.map +1 -0
  321. package/dist/index134.mjs +5 -0
  322. package/dist/index134.mjs.map +1 -0
  323. package/dist/index135.cjs +180 -0
  324. package/dist/index135.cjs.map +1 -0
  325. package/dist/index135.mjs +181 -0
  326. package/dist/index135.mjs.map +1 -0
  327. package/dist/index137.cjs +83 -0
  328. package/dist/index137.cjs.map +1 -0
  329. package/dist/index137.mjs +84 -0
  330. package/dist/index137.mjs.map +1 -0
  331. package/dist/index139.cjs +284 -0
  332. package/dist/index139.cjs.map +1 -0
  333. package/dist/index139.mjs +285 -0
  334. package/dist/index139.mjs.map +1 -0
  335. package/dist/index14.cjs +124 -0
  336. package/dist/index14.cjs.map +1 -0
  337. package/dist/index14.mjs +125 -0
  338. package/dist/index14.mjs.map +1 -0
  339. package/dist/index141.cjs +58 -0
  340. package/dist/index141.cjs.map +1 -0
  341. package/dist/index141.mjs +59 -0
  342. package/dist/index141.mjs.map +1 -0
  343. package/dist/index143.cjs +5 -0
  344. package/dist/index143.cjs.map +1 -0
  345. package/dist/index143.mjs +6 -0
  346. package/dist/index143.mjs.map +1 -0
  347. package/dist/index144.cjs +399 -0
  348. package/dist/index144.cjs.map +1 -0
  349. package/dist/index144.mjs +400 -0
  350. package/dist/index144.mjs.map +1 -0
  351. package/dist/index146.cjs +305 -0
  352. package/dist/index146.cjs.map +1 -0
  353. package/dist/index146.mjs +306 -0
  354. package/dist/index146.mjs.map +1 -0
  355. package/dist/index149.cjs +109 -0
  356. package/dist/index149.cjs.map +1 -0
  357. package/dist/index149.mjs +110 -0
  358. package/dist/index149.mjs.map +1 -0
  359. package/dist/index152.cjs +5 -0
  360. package/dist/index152.cjs.map +1 -0
  361. package/dist/index152.mjs +6 -0
  362. package/dist/index152.mjs.map +1 -0
  363. package/dist/index153.cjs +5 -0
  364. package/dist/index153.cjs.map +1 -0
  365. package/dist/index153.mjs +6 -0
  366. package/dist/index153.mjs.map +1 -0
  367. package/dist/index154.cjs +4 -0
  368. package/dist/index154.cjs.map +1 -0
  369. package/dist/index154.mjs +5 -0
  370. package/dist/index154.mjs.map +1 -0
  371. package/dist/index155.cjs +5 -0
  372. package/dist/index155.cjs.map +1 -0
  373. package/dist/index155.mjs +6 -0
  374. package/dist/index155.mjs.map +1 -0
  375. package/dist/index156.cjs +5 -0
  376. package/dist/index156.cjs.map +1 -0
  377. package/dist/index156.mjs +6 -0
  378. package/dist/index156.mjs.map +1 -0
  379. package/dist/index157.cjs +5 -0
  380. package/dist/index157.cjs.map +1 -0
  381. package/dist/index157.mjs +6 -0
  382. package/dist/index157.mjs.map +1 -0
  383. package/dist/index158.cjs +4 -0
  384. package/dist/index158.cjs.map +1 -0
  385. package/dist/index158.mjs +5 -0
  386. package/dist/index158.mjs.map +1 -0
  387. package/dist/index159.cjs +59 -0
  388. package/dist/index159.cjs.map +1 -0
  389. package/dist/index159.mjs +60 -0
  390. package/dist/index159.mjs.map +1 -0
  391. package/dist/index16.cjs +89 -0
  392. package/dist/index16.cjs.map +1 -0
  393. package/dist/index16.mjs +90 -0
  394. package/dist/index16.mjs.map +1 -0
  395. package/dist/index161.cjs +5 -0
  396. package/dist/index161.cjs.map +1 -0
  397. package/dist/index161.mjs +6 -0
  398. package/dist/index161.mjs.map +1 -0
  399. package/dist/index162.cjs +119 -0
  400. package/dist/index162.cjs.map +1 -0
  401. package/dist/index162.mjs +120 -0
  402. package/dist/index162.mjs.map +1 -0
  403. package/dist/index164.cjs +33 -0
  404. package/dist/index164.cjs.map +1 -0
  405. package/dist/index164.mjs +34 -0
  406. package/dist/index164.mjs.map +1 -0
  407. package/dist/index166.cjs +5 -0
  408. package/dist/index166.cjs.map +1 -0
  409. package/dist/index166.mjs +6 -0
  410. package/dist/index166.mjs.map +1 -0
  411. package/dist/index167.cjs +324 -0
  412. package/dist/index167.cjs.map +1 -0
  413. package/dist/index167.mjs +325 -0
  414. package/dist/index167.mjs.map +1 -0
  415. package/dist/index17.cjs +419 -0
  416. package/dist/index17.cjs.map +1 -0
  417. package/dist/index17.mjs +420 -0
  418. package/dist/index17.mjs.map +1 -0
  419. package/dist/index170.cjs +38 -0
  420. package/dist/index170.cjs.map +1 -0
  421. package/dist/index170.mjs +39 -0
  422. package/dist/index170.mjs.map +1 -0
  423. package/dist/index172.cjs +5 -0
  424. package/dist/index172.cjs.map +1 -0
  425. package/dist/index172.mjs +6 -0
  426. package/dist/index172.mjs.map +1 -0
  427. package/dist/index173.cjs +202 -0
  428. package/dist/index173.cjs.map +1 -0
  429. package/dist/index173.mjs +203 -0
  430. package/dist/index173.mjs.map +1 -0
  431. package/dist/index175.cjs +5 -0
  432. package/dist/index175.cjs.map +1 -0
  433. package/dist/index175.mjs +6 -0
  434. package/dist/index175.mjs.map +1 -0
  435. package/dist/index176.cjs +53 -0
  436. package/dist/index176.cjs.map +1 -0
  437. package/dist/index176.mjs +54 -0
  438. package/dist/index176.mjs.map +1 -0
  439. package/dist/index178.cjs +13 -0
  440. package/dist/index178.cjs.map +1 -0
  441. package/dist/index178.mjs +13 -0
  442. package/dist/index178.mjs.map +1 -0
  443. package/dist/index179.cjs +18 -0
  444. package/dist/index179.cjs.map +1 -0
  445. package/dist/index179.mjs +18 -0
  446. package/dist/index179.mjs.map +1 -0
  447. package/dist/index180.cjs +262 -0
  448. package/dist/index180.cjs.map +1 -0
  449. package/dist/index180.mjs +262 -0
  450. package/dist/index180.mjs.map +1 -0
  451. package/dist/index181.cjs +108 -0
  452. package/dist/index181.cjs.map +1 -0
  453. package/dist/index181.mjs +109 -0
  454. package/dist/index181.mjs.map +1 -0
  455. package/dist/index182.cjs +73 -0
  456. package/dist/index182.cjs.map +1 -0
  457. package/dist/index182.mjs +73 -0
  458. package/dist/index182.mjs.map +1 -0
  459. package/dist/index183.cjs +37 -0
  460. package/dist/index183.cjs.map +1 -0
  461. package/dist/index183.mjs +37 -0
  462. package/dist/index183.mjs.map +1 -0
  463. package/dist/index184.cjs +16 -0
  464. package/dist/index184.cjs.map +1 -0
  465. package/dist/index184.mjs +16 -0
  466. package/dist/index184.mjs.map +1 -0
  467. package/dist/index185.cjs +31 -0
  468. package/dist/index185.cjs.map +1 -0
  469. package/dist/index185.mjs +31 -0
  470. package/dist/index185.mjs.map +1 -0
  471. package/dist/index186.cjs +460 -0
  472. package/dist/index186.cjs.map +1 -0
  473. package/dist/index186.mjs +461 -0
  474. package/dist/index186.mjs.map +1 -0
  475. package/dist/index187.cjs +154 -0
  476. package/dist/index187.cjs.map +1 -0
  477. package/dist/index187.mjs +154 -0
  478. package/dist/index187.mjs.map +1 -0
  479. package/dist/index188.cjs +40 -0
  480. package/dist/index188.cjs.map +1 -0
  481. package/dist/index188.mjs +40 -0
  482. package/dist/index188.mjs.map +1 -0
  483. package/dist/index189.cjs +66 -0
  484. package/dist/index189.cjs.map +1 -0
  485. package/dist/index189.mjs +66 -0
  486. package/dist/index189.mjs.map +1 -0
  487. package/dist/index19.cjs +135 -0
  488. package/dist/index19.cjs.map +1 -0
  489. package/dist/index19.mjs +136 -0
  490. package/dist/index19.mjs.map +1 -0
  491. package/dist/index190.cjs +142 -0
  492. package/dist/index190.cjs.map +1 -0
  493. package/dist/index190.mjs +143 -0
  494. package/dist/index190.mjs.map +1 -0
  495. package/dist/index191.cjs +7 -0
  496. package/dist/index191.cjs.map +1 -0
  497. package/dist/index191.mjs +8 -0
  498. package/dist/index191.mjs.map +1 -0
  499. package/dist/index192.cjs +7 -0
  500. package/dist/index192.cjs.map +1 -0
  501. package/dist/index192.mjs +8 -0
  502. package/dist/index192.mjs.map +1 -0
  503. package/dist/index193.cjs +7 -0
  504. package/dist/index193.cjs.map +1 -0
  505. package/dist/index193.mjs +8 -0
  506. package/dist/index193.mjs.map +1 -0
  507. package/dist/index194.cjs +7 -0
  508. package/dist/index194.cjs.map +1 -0
  509. package/dist/index194.mjs +8 -0
  510. package/dist/index194.mjs.map +1 -0
  511. package/dist/index195.cjs +7 -0
  512. package/dist/index195.cjs.map +1 -0
  513. package/dist/index195.mjs +8 -0
  514. package/dist/index195.mjs.map +1 -0
  515. package/dist/index196.cjs +100 -0
  516. package/dist/index196.cjs.map +1 -0
  517. package/dist/index196.mjs +100 -0
  518. package/dist/index196.mjs.map +1 -0
  519. package/dist/index197.cjs +226 -0
  520. package/dist/index197.cjs.map +1 -0
  521. package/dist/index197.mjs +226 -0
  522. package/dist/index197.mjs.map +1 -0
  523. package/dist/index198.cjs +66 -0
  524. package/dist/index198.cjs.map +1 -0
  525. package/dist/index198.mjs +66 -0
  526. package/dist/index198.mjs.map +1 -0
  527. package/dist/index199.cjs +399 -0
  528. package/dist/index199.cjs.map +1 -0
  529. package/dist/index199.mjs +399 -0
  530. package/dist/index199.mjs.map +1 -0
  531. package/dist/index200.cjs +83 -0
  532. package/dist/index200.cjs.map +1 -0
  533. package/dist/index200.mjs +83 -0
  534. package/dist/index200.mjs.map +1 -0
  535. package/dist/index201.cjs +4 -0
  536. package/dist/index201.cjs.map +1 -0
  537. package/dist/index201.mjs +5 -0
  538. package/dist/index201.mjs.map +1 -0
  539. package/dist/index202.cjs +5 -0
  540. package/dist/index202.cjs.map +1 -0
  541. package/dist/index202.mjs +6 -0
  542. package/dist/index202.mjs.map +1 -0
  543. package/dist/index203.cjs +216 -0
  544. package/dist/index203.cjs.map +1 -0
  545. package/dist/index203.mjs +217 -0
  546. package/dist/index203.mjs.map +1 -0
  547. package/dist/index205.cjs +112 -0
  548. package/dist/index205.cjs.map +1 -0
  549. package/dist/index205.mjs +113 -0
  550. package/dist/index205.mjs.map +1 -0
  551. package/dist/index207.cjs +112 -0
  552. package/dist/index207.cjs.map +1 -0
  553. package/dist/index207.mjs +113 -0
  554. package/dist/index207.mjs.map +1 -0
  555. package/dist/index209.cjs +64 -0
  556. package/dist/index209.cjs.map +1 -0
  557. package/dist/index209.mjs +65 -0
  558. package/dist/index209.mjs.map +1 -0
  559. package/dist/index21.cjs +268 -0
  560. package/dist/index21.cjs.map +1 -0
  561. package/dist/index21.mjs +269 -0
  562. package/dist/index21.mjs.map +1 -0
  563. package/dist/index211.cjs +45 -0
  564. package/dist/index211.cjs.map +1 -0
  565. package/dist/index211.mjs +46 -0
  566. package/dist/index211.mjs.map +1 -0
  567. package/dist/index213.cjs +241 -0
  568. package/dist/index213.cjs.map +1 -0
  569. package/dist/index213.mjs +241 -0
  570. package/dist/index213.mjs.map +1 -0
  571. package/dist/index214.cjs +63 -0
  572. package/dist/index214.cjs.map +1 -0
  573. package/dist/index214.mjs +63 -0
  574. package/dist/index214.mjs.map +1 -0
  575. package/dist/index215.cjs +53 -0
  576. package/dist/index215.cjs.map +1 -0
  577. package/dist/index215.mjs +53 -0
  578. package/dist/index215.mjs.map +1 -0
  579. package/dist/index216.cjs +53 -0
  580. package/dist/index216.cjs.map +1 -0
  581. package/dist/index216.mjs +53 -0
  582. package/dist/index216.mjs.map +1 -0
  583. package/dist/index217.cjs +4 -0
  584. package/dist/index217.cjs.map +1 -0
  585. package/dist/index217.mjs +5 -0
  586. package/dist/index217.mjs.map +1 -0
  587. package/dist/index218.cjs +29 -0
  588. package/dist/index218.cjs.map +1 -0
  589. package/dist/index218.mjs +30 -0
  590. package/dist/index218.mjs.map +1 -0
  591. package/dist/index219.cjs +4 -0
  592. package/dist/index219.cjs.map +1 -0
  593. package/dist/index219.mjs +5 -0
  594. package/dist/index219.mjs.map +1 -0
  595. package/dist/index23.cjs +41 -0
  596. package/dist/index23.cjs.map +1 -0
  597. package/dist/index23.mjs +42 -0
  598. package/dist/index23.mjs.map +1 -0
  599. package/dist/index24.cjs +117 -0
  600. package/dist/index24.cjs.map +1 -0
  601. package/dist/index24.mjs +118 -0
  602. package/dist/index24.mjs.map +1 -0
  603. package/dist/index26.cjs +127 -0
  604. package/dist/index26.cjs.map +1 -0
  605. package/dist/index26.mjs +128 -0
  606. package/dist/index26.mjs.map +1 -0
  607. package/dist/index28.cjs +39 -0
  608. package/dist/index28.cjs.map +1 -0
  609. package/dist/index28.mjs +40 -0
  610. package/dist/index28.mjs.map +1 -0
  611. package/dist/index29.cjs +176 -0
  612. package/dist/index29.cjs.map +1 -0
  613. package/dist/index29.mjs +177 -0
  614. package/dist/index29.mjs.map +1 -0
  615. package/dist/index3.cjs +110 -0
  616. package/dist/index3.cjs.map +1 -0
  617. package/dist/index3.mjs +110 -0
  618. package/dist/index3.mjs.map +1 -0
  619. package/dist/index31.cjs +361 -0
  620. package/dist/index31.cjs.map +1 -0
  621. package/dist/index31.mjs +362 -0
  622. package/dist/index31.mjs.map +1 -0
  623. package/dist/index33.cjs +20 -0
  624. package/dist/index33.cjs.map +1 -0
  625. package/dist/index33.mjs +21 -0
  626. package/dist/index33.mjs.map +1 -0
  627. package/dist/index34.cjs +311 -0
  628. package/dist/index34.cjs.map +1 -0
  629. package/dist/index34.mjs +312 -0
  630. package/dist/index34.mjs.map +1 -0
  631. package/dist/index36.cjs +132 -0
  632. package/dist/index36.cjs.map +1 -0
  633. package/dist/index36.mjs +133 -0
  634. package/dist/index36.mjs.map +1 -0
  635. package/dist/index38.cjs +80 -0
  636. package/dist/index38.cjs.map +1 -0
  637. package/dist/index38.mjs +81 -0
  638. package/dist/index38.mjs.map +1 -0
  639. package/dist/index4.cjs +612 -0
  640. package/dist/index4.cjs.map +1 -0
  641. package/dist/index4.mjs +613 -0
  642. package/dist/index4.mjs.map +1 -0
  643. package/dist/index40.cjs +600 -0
  644. package/dist/index40.cjs.map +1 -0
  645. package/dist/index40.mjs +601 -0
  646. package/dist/index40.mjs.map +1 -0
  647. package/dist/index42.cjs +160 -0
  648. package/dist/index42.cjs.map +1 -0
  649. package/dist/index42.mjs +160 -0
  650. package/dist/index42.mjs.map +1 -0
  651. package/dist/index43.cjs +26 -0
  652. package/dist/index43.cjs.map +1 -0
  653. package/dist/index43.mjs +27 -0
  654. package/dist/index43.mjs.map +1 -0
  655. package/dist/index44.cjs +20 -0
  656. package/dist/index44.cjs.map +1 -0
  657. package/dist/index44.mjs +21 -0
  658. package/dist/index44.mjs.map +1 -0
  659. package/dist/index45.cjs +104 -0
  660. package/dist/index45.cjs.map +1 -0
  661. package/dist/index45.mjs +104 -0
  662. package/dist/index45.mjs.map +1 -0
  663. package/dist/index46.cjs +8 -0
  664. package/dist/index46.cjs.map +1 -0
  665. package/dist/index46.mjs +9 -0
  666. package/dist/index46.mjs.map +1 -0
  667. package/dist/index47.cjs +7 -0
  668. package/dist/index47.cjs.map +1 -0
  669. package/dist/index47.mjs +8 -0
  670. package/dist/index47.mjs.map +1 -0
  671. package/dist/index48.cjs +7 -0
  672. package/dist/index48.cjs.map +1 -0
  673. package/dist/index48.mjs +8 -0
  674. package/dist/index48.mjs.map +1 -0
  675. package/dist/index49.cjs +7 -0
  676. package/dist/index49.cjs.map +1 -0
  677. package/dist/index49.mjs +8 -0
  678. package/dist/index49.mjs.map +1 -0
  679. package/dist/index50.cjs +7 -0
  680. package/dist/index50.cjs.map +1 -0
  681. package/dist/index50.mjs +8 -0
  682. package/dist/index50.mjs.map +1 -0
  683. package/dist/index51.cjs +7 -0
  684. package/dist/index51.cjs.map +1 -0
  685. package/dist/index51.mjs +8 -0
  686. package/dist/index51.mjs.map +1 -0
  687. package/dist/index52.cjs +7 -0
  688. package/dist/index52.cjs.map +1 -0
  689. package/dist/index52.mjs +8 -0
  690. package/dist/index52.mjs.map +1 -0
  691. package/dist/index53.cjs +7 -0
  692. package/dist/index53.cjs.map +1 -0
  693. package/dist/index53.mjs +8 -0
  694. package/dist/index53.mjs.map +1 -0
  695. package/dist/index54.cjs +7 -0
  696. package/dist/index54.cjs.map +1 -0
  697. package/dist/index54.mjs +8 -0
  698. package/dist/index54.mjs.map +1 -0
  699. package/dist/index55.cjs +7 -0
  700. package/dist/index55.cjs.map +1 -0
  701. package/dist/index55.mjs +8 -0
  702. package/dist/index55.mjs.map +1 -0
  703. package/dist/index56.cjs +7 -0
  704. package/dist/index56.cjs.map +1 -0
  705. package/dist/index56.mjs +8 -0
  706. package/dist/index56.mjs.map +1 -0
  707. package/dist/index57.cjs +7 -0
  708. package/dist/index57.cjs.map +1 -0
  709. package/dist/index57.mjs +8 -0
  710. package/dist/index57.mjs.map +1 -0
  711. package/dist/index58.cjs +7 -0
  712. package/dist/index58.cjs.map +1 -0
  713. package/dist/index58.mjs +8 -0
  714. package/dist/index58.mjs.map +1 -0
  715. package/dist/index59.cjs +8 -0
  716. package/dist/index59.cjs.map +1 -0
  717. package/dist/index59.mjs +9 -0
  718. package/dist/index59.mjs.map +1 -0
  719. package/dist/index6.cjs +578 -0
  720. package/dist/index6.cjs.map +1 -0
  721. package/dist/index6.mjs +579 -0
  722. package/dist/index6.mjs.map +1 -0
  723. package/dist/index60.cjs +7 -0
  724. package/dist/index60.cjs.map +1 -0
  725. package/dist/index60.mjs +8 -0
  726. package/dist/index60.mjs.map +1 -0
  727. package/dist/index61.cjs +7 -0
  728. package/dist/index61.cjs.map +1 -0
  729. package/dist/index61.mjs +8 -0
  730. package/dist/index61.mjs.map +1 -0
  731. package/dist/index62.cjs +7 -0
  732. package/dist/index62.cjs.map +1 -0
  733. package/dist/index62.mjs +8 -0
  734. package/dist/index62.mjs.map +1 -0
  735. package/dist/index63.cjs +7 -0
  736. package/dist/index63.cjs.map +1 -0
  737. package/dist/index63.mjs +8 -0
  738. package/dist/index63.mjs.map +1 -0
  739. package/dist/index64.cjs +7 -0
  740. package/dist/index64.cjs.map +1 -0
  741. package/dist/index64.mjs +8 -0
  742. package/dist/index64.mjs.map +1 -0
  743. package/dist/index65.cjs +8 -0
  744. package/dist/index65.cjs.map +1 -0
  745. package/dist/index65.mjs +9 -0
  746. package/dist/index65.mjs.map +1 -0
  747. package/dist/index66.cjs +7 -0
  748. package/dist/index66.cjs.map +1 -0
  749. package/dist/index66.mjs +8 -0
  750. package/dist/index66.mjs.map +1 -0
  751. package/dist/index67.cjs +7 -0
  752. package/dist/index67.cjs.map +1 -0
  753. package/dist/index67.mjs +8 -0
  754. package/dist/index67.mjs.map +1 -0
  755. package/dist/index68.cjs +7 -0
  756. package/dist/index68.cjs.map +1 -0
  757. package/dist/index68.mjs +8 -0
  758. package/dist/index68.mjs.map +1 -0
  759. package/dist/index69.cjs +8 -0
  760. package/dist/index69.cjs.map +1 -0
  761. package/dist/index69.mjs +9 -0
  762. package/dist/index69.mjs.map +1 -0
  763. package/dist/index70.cjs +7 -0
  764. package/dist/index70.cjs.map +1 -0
  765. package/dist/index70.mjs +8 -0
  766. package/dist/index70.mjs.map +1 -0
  767. package/dist/index71.cjs +38 -0
  768. package/dist/index71.cjs.map +1 -0
  769. package/dist/index71.mjs +38 -0
  770. package/dist/index71.mjs.map +1 -0
  771. package/dist/index72.cjs +22 -0
  772. package/dist/index72.cjs.map +1 -0
  773. package/dist/index72.mjs +22 -0
  774. package/dist/index72.mjs.map +1 -0
  775. package/dist/index73.cjs +40 -0
  776. package/dist/index73.cjs.map +1 -0
  777. package/dist/index73.mjs +40 -0
  778. package/dist/index73.mjs.map +1 -0
  779. package/dist/index74.cjs +80 -0
  780. package/dist/index74.cjs.map +1 -0
  781. package/dist/index74.mjs +80 -0
  782. package/dist/index74.mjs.map +1 -0
  783. package/dist/index75.cjs +29 -0
  784. package/dist/index75.cjs.map +1 -0
  785. package/dist/index75.mjs +29 -0
  786. package/dist/index75.mjs.map +1 -0
  787. package/dist/index76.cjs +157 -0
  788. package/dist/index76.cjs.map +1 -0
  789. package/dist/index76.mjs +157 -0
  790. package/dist/index76.mjs.map +1 -0
  791. package/dist/index77.cjs +16 -0
  792. package/dist/index77.cjs.map +1 -0
  793. package/dist/index77.mjs +16 -0
  794. package/dist/index77.mjs.map +1 -0
  795. package/dist/index78.cjs +87 -0
  796. package/dist/index78.cjs.map +1 -0
  797. package/dist/index78.mjs +87 -0
  798. package/dist/index78.mjs.map +1 -0
  799. package/dist/index79.cjs +16 -0
  800. package/dist/index79.cjs.map +1 -0
  801. package/dist/index79.mjs +16 -0
  802. package/dist/index79.mjs.map +1 -0
  803. package/dist/index8.cjs +130 -0
  804. package/dist/index8.cjs.map +1 -0
  805. package/dist/index8.mjs +131 -0
  806. package/dist/index8.mjs.map +1 -0
  807. package/dist/index80.cjs +65 -0
  808. package/dist/index80.cjs.map +1 -0
  809. package/dist/index80.mjs +65 -0
  810. package/dist/index80.mjs.map +1 -0
  811. package/dist/index81.cjs +69 -0
  812. package/dist/index81.cjs.map +1 -0
  813. package/dist/index81.mjs +69 -0
  814. package/dist/index81.mjs.map +1 -0
  815. package/dist/index82.cjs +30 -0
  816. package/dist/index82.cjs.map +1 -0
  817. package/dist/index82.mjs +30 -0
  818. package/dist/index82.mjs.map +1 -0
  819. package/dist/index83.cjs +86 -0
  820. package/dist/index83.cjs.map +1 -0
  821. package/dist/index83.mjs +86 -0
  822. package/dist/index83.mjs.map +1 -0
  823. package/dist/index84.cjs +102 -0
  824. package/dist/index84.cjs.map +1 -0
  825. package/dist/index84.mjs +102 -0
  826. package/dist/index84.mjs.map +1 -0
  827. package/dist/index85.cjs +20 -0
  828. package/dist/index85.cjs.map +1 -0
  829. package/dist/index85.mjs +20 -0
  830. package/dist/index85.mjs.map +1 -0
  831. package/dist/index86.cjs +21 -0
  832. package/dist/index86.cjs.map +1 -0
  833. package/dist/index86.mjs +21 -0
  834. package/dist/index86.mjs.map +1 -0
  835. package/dist/index87.cjs +191 -0
  836. package/dist/index87.cjs.map +1 -0
  837. package/dist/index87.mjs +191 -0
  838. package/dist/index87.mjs.map +1 -0
  839. package/dist/index88.cjs +67 -0
  840. package/dist/index88.cjs.map +1 -0
  841. package/dist/index88.mjs +67 -0
  842. package/dist/index88.mjs.map +1 -0
  843. package/dist/index89.cjs +312 -0
  844. package/dist/index89.cjs.map +1 -0
  845. package/dist/index89.mjs +312 -0
  846. package/dist/index89.mjs.map +1 -0
  847. package/dist/index90.cjs +10 -0
  848. package/dist/index90.cjs.map +1 -0
  849. package/dist/index90.mjs +10 -0
  850. package/dist/index90.mjs.map +1 -0
  851. package/dist/index91.cjs +15 -0
  852. package/dist/index91.cjs.map +1 -0
  853. package/dist/index91.mjs +15 -0
  854. package/dist/index91.mjs.map +1 -0
  855. package/dist/index92.cjs +8 -0
  856. package/dist/index92.cjs.map +1 -0
  857. package/dist/index92.mjs +8 -0
  858. package/dist/index92.mjs.map +1 -0
  859. package/dist/index93.cjs +81 -0
  860. package/dist/index93.cjs.map +1 -0
  861. package/dist/index93.mjs +81 -0
  862. package/dist/index93.mjs.map +1 -0
  863. package/dist/index94.cjs +124 -0
  864. package/dist/index94.cjs.map +1 -0
  865. package/dist/index94.mjs +124 -0
  866. package/dist/index94.mjs.map +1 -0
  867. package/dist/index95.cjs +68 -0
  868. package/dist/index95.cjs.map +1 -0
  869. package/dist/index95.mjs +68 -0
  870. package/dist/index95.mjs.map +1 -0
  871. package/dist/index96.cjs +29 -0
  872. package/dist/index96.cjs.map +1 -0
  873. package/dist/index96.mjs +29 -0
  874. package/dist/index96.mjs.map +1 -0
  875. package/dist/index97.cjs +184 -0
  876. package/dist/index97.cjs.map +1 -0
  877. package/dist/index97.mjs +184 -0
  878. package/dist/index97.mjs.map +1 -0
  879. package/dist/index98.cjs +78 -0
  880. package/dist/index98.cjs.map +1 -0
  881. package/dist/index98.mjs +78 -0
  882. package/dist/index98.mjs.map +1 -0
  883. package/dist/index99.cjs +55 -0
  884. package/dist/index99.cjs.map +1 -0
  885. package/dist/index99.mjs +55 -0
  886. package/dist/index99.mjs.map +1 -0
  887. package/dist/plugin.d.ts +37 -0
  888. package/dist/plugin.d.ts.map +1 -0
  889. package/dist/scss/_badge.scss +12 -0
  890. package/dist/scss/_breakpoints.scss +102 -0
  891. package/dist/scss/_color-utilities.scss +105 -0
  892. package/dist/scss/_controls.scss +135 -0
  893. package/dist/scss/_ds-input-base.scss +302 -0
  894. package/dist/scss/_ds-picker-m3.scss +179 -0
  895. package/dist/scss/_effects.scss +42 -0
  896. package/dist/scss/_overlays.scss +13 -0
  897. package/dist/scss/_radius.scss +24 -0
  898. package/dist/scss/_reset.scss +60 -0
  899. package/dist/scss/_scrollbar.scss +78 -0
  900. package/dist/scss/_spacing.scss +15 -0
  901. package/dist/scss/_themes.scss +493 -0
  902. package/dist/scss/_typography.scss +50 -0
  903. package/dist/scss/_utilities.scss +75 -0
  904. package/dist/scss/_variables.scss +143 -0
  905. package/dist/scss/api.scss +77 -0
  906. package/dist/scss/tokens.scss +13 -0
  907. package/dist/utils/date-utils.d.ts +48 -0
  908. package/dist/utils/date-utils.d.ts.map +1 -0
  909. package/dist/utils/dialog-utils.d.ts +17 -0
  910. package/dist/utils/dialog-utils.d.ts.map +1 -0
  911. package/dist/utils/file-utils.d.ts +20 -0
  912. package/dist/utils/file-utils.d.ts.map +1 -0
  913. package/dist/utils/filtro-input.d.ts +19 -0
  914. package/dist/utils/filtro-input.d.ts.map +1 -0
  915. package/dist/utils/form-rules.d.ts +74 -0
  916. package/dist/utils/form-rules.d.ts.map +1 -0
  917. package/dist/utils/formatadores.d.ts +15 -0
  918. package/dist/utils/formatadores.d.ts.map +1 -0
  919. package/dist/utils/gerador-id.d.ts +3 -0
  920. package/dist/utils/gerador-id.d.ts.map +1 -0
  921. package/dist/utils/hint-mensagem.d.ts +11 -0
  922. package/dist/utils/hint-mensagem.d.ts.map +1 -0
  923. package/dist/utils/index.d.ts +15 -0
  924. package/dist/utils/index.d.ts.map +1 -0
  925. package/dist/utils/limpar-campos.d.ts +6 -0
  926. package/dist/utils/limpar-campos.d.ts.map +1 -0
  927. package/dist/utils/masks.d.ts +16 -0
  928. package/dist/utils/masks.d.ts.map +1 -0
  929. package/dist/utils/medidas-util.d.ts +3 -0
  930. package/dist/utils/medidas-util.d.ts.map +1 -0
  931. package/dist/utils/normalizar-label.d.ts +2 -0
  932. package/dist/utils/normalizar-label.d.ts.map +1 -0
  933. package/dist/utils/scroll-elemento.d.ts +16 -0
  934. package/dist/utils/scroll-elemento.d.ts.map +1 -0
  935. package/dist/utils/validar-campo.d.ts +7 -0
  936. package/dist/utils/validar-campo.d.ts.map +1 -0
  937. package/dist/utils/validar-documentos.d.ts +12 -0
  938. package/dist/utils/validar-documentos.d.ts.map +1 -0
  939. package/dist/utils/vnode-slot.d.ts +43 -0
  940. package/dist/utils/vnode-slot.d.ts.map +1 -0
  941. package/package.json +100 -0
  942. package/src/components/actions/acai-ui-actions.vue +225 -0
  943. package/src/components/async-select/acai-ui-async-select-interface.ts +49 -0
  944. package/src/components/async-select/acai-ui-async-select.vue +409 -0
  945. package/src/components/badge/acai-ui-badge-interface.ts +19 -0
  946. package/src/components/badge/acai-ui-badge.vue +40 -0
  947. package/src/components/banner/acai-ui-banner-interface.ts +17 -0
  948. package/src/components/banner/acai-ui-banner-styles.scss +47 -0
  949. package/src/components/banner/acai-ui-banner.vue +85 -0
  950. package/src/components/button/acai-ui-button-interface.ts +21 -0
  951. package/src/components/button/acai-ui-button.vue +378 -0
  952. package/src/components/card/acai-ui-card-interface.ts +14 -0
  953. package/src/components/card/acai-ui-card-styles.scss +94 -0
  954. package/src/components/card/acai-ui-card.vue +148 -0
  955. package/src/components/chart/acai-ui-chart-interface.ts +226 -0
  956. package/src/components/chart/acai-ui-chart-styles.scss +141 -0
  957. package/src/components/chart/acai-ui-chart.vue +679 -0
  958. package/src/components/chart/chart-a11y.ts +184 -0
  959. package/src/components/chart/chart-caminhos.ts +466 -0
  960. package/src/components/chart/chart-cartesiano.vue +247 -0
  961. package/src/components/chart/chart-dados.ts +381 -0
  962. package/src/components/chart/chart-escalas.ts +141 -0
  963. package/src/components/chart/chart-formatar.ts +98 -0
  964. package/src/components/chart/chart-gauge.vue +152 -0
  965. package/src/components/chart/chart-headless.ts +130 -0
  966. package/src/components/chart/chart-imagem.ts +247 -0
  967. package/src/components/chart/chart-layout.ts +184 -0
  968. package/src/components/chart/chart-legenda.vue +103 -0
  969. package/src/components/chart/chart-pizza.vue +134 -0
  970. package/src/components/chart/chart-plano.ts +818 -0
  971. package/src/components/chart/chart-rotulos.ts +75 -0
  972. package/src/components/chart/chart-tabela.vue +116 -0
  973. package/src/components/chart/chart-ticks.ts +116 -0
  974. package/src/components/checkbox/acai-ui-checkbox-interface.ts +17 -0
  975. package/src/components/checkbox/acai-ui-checkbox.vue +114 -0
  976. package/src/components/chip/acai-ui-chip-interface.ts +19 -0
  977. package/src/components/chip/acai-ui-chip.vue +61 -0
  978. package/src/components/code/acai-ui-code-interface.ts +43 -0
  979. package/src/components/code/acai-ui-code-styles.scss +407 -0
  980. package/src/components/code/acai-ui-code.vue +595 -0
  981. package/src/components/code/dobras-json.ts +52 -0
  982. package/src/components/confirm/acai-ui-confirm.vue +230 -0
  983. package/src/components/container/acai-ui-container-interface.ts +34 -0
  984. package/src/components/container/acai-ui-container-styles.scss +122 -0
  985. package/src/components/container/acai-ui-container.vue +140 -0
  986. package/src/components/date/acai-ui-date-interface.ts +18 -0
  987. package/src/components/date/acai-ui-date.vue +191 -0
  988. package/src/components/date-range/acai-ui-date-range-interface.ts +27 -0
  989. package/src/components/date-range/acai-ui-date-range.vue +300 -0
  990. package/src/components/datetime/acai-ui-datetime-interface.ts +10 -0
  991. package/src/components/datetime/acai-ui-datetime.vue +203 -0
  992. package/src/components/datetime/data-hora-styles.scss +18 -0
  993. package/src/components/dialog/acai-ui-dialog-interface.ts +18 -0
  994. package/src/components/dialog/acai-ui-dialog.vue +168 -0
  995. package/src/components/divider/acai-ui-divider-interface.ts +4 -0
  996. package/src/components/divider/acai-ui-divider-styles.scss +42 -0
  997. package/src/components/divider/acai-ui-divider.vue +20 -0
  998. package/src/components/drawer/acai-ui-drawer-interface.ts +99 -0
  999. package/src/components/drawer/acai-ui-drawer-styles.scss +586 -0
  1000. package/src/components/drawer/acai-ui-drawer.vue +802 -0
  1001. package/src/components/drawer/drawer-sidebar-helper.ts +117 -0
  1002. package/src/components/dropdown/acai-ui-dropdown-interface.ts +41 -0
  1003. package/src/components/dropdown/acai-ui-dropdown-item.vue +36 -0
  1004. package/src/components/dropdown/acai-ui-dropdown-styles.scss +90 -0
  1005. package/src/components/dropdown/acai-ui-dropdown.vue +77 -0
  1006. package/src/components/error-log/acai-ui-error-log-interface.ts +59 -0
  1007. package/src/components/error-log/acai-ui-error-log-json-tree.vue +426 -0
  1008. package/src/components/error-log/acai-ui-error-log-redigir.ts +74 -0
  1009. package/src/components/error-log/acai-ui-error-log-styles.scss +137 -0
  1010. package/src/components/error-log/acai-ui-error-log.vue +318 -0
  1011. package/src/components/file/acai-ui-file-interface.ts +28 -0
  1012. package/src/components/file/acai-ui-file.vue +85 -0
  1013. package/src/components/file/arquivo-styles.scss +109 -0
  1014. package/src/components/form/acai-ui-form-grid.scss +145 -0
  1015. package/src/components/form/acai-ui-form-interface.ts +37 -0
  1016. package/src/components/form/acai-ui-form-styles.scss +159 -0
  1017. package/src/components/form/acai-ui-form-validation-modal.vue +216 -0
  1018. package/src/components/form/acai-ui-form.vue +410 -0
  1019. package/src/components/help/acai-ui-help-interface.ts +200 -0
  1020. package/src/components/help/acai-ui-help-styles.scss +209 -0
  1021. package/src/components/help/acai-ui-help.vue +259 -0
  1022. package/src/components/help/acai-ui-tour-styles.scss +292 -0
  1023. package/src/components/help/acai-ui-tour.vue +766 -0
  1024. package/src/components/help/tour-escolha.ts +139 -0
  1025. package/src/components/help/tour-posicionar.ts +148 -0
  1026. package/src/components/help/tour-registry.ts +177 -0
  1027. package/src/components/help/use-tour-visto.ts +81 -0
  1028. package/src/components/icon/acai-ui-icon-interface.ts +12 -0
  1029. package/src/components/icon/acai-ui-icon.vue +33 -0
  1030. package/src/components/index.ts +149 -0
  1031. package/src/components/input/acai-ui-input-interface.ts +20 -0
  1032. package/src/components/input/acai-ui-input.vue +146 -0
  1033. package/src/components/modal/acai-ui-modal-interface.ts +19 -0
  1034. package/src/components/modal/acai-ui-modal-styles.scss +131 -0
  1035. package/src/components/modal/acai-ui-modal.vue +83 -0
  1036. package/src/components/pagination/acai-ui-pagination-interface.ts +8 -0
  1037. package/src/components/pagination/acai-ui-pagination.vue +36 -0
  1038. package/src/components/preferences/acai-ui-preferences-interface.ts +4 -0
  1039. package/src/components/preferences/acai-ui-preferences-styles.scss +387 -0
  1040. package/src/components/preferences/acai-ui-preferences.vue +349 -0
  1041. package/src/components/progress/acai-ui-progress-interface.ts +20 -0
  1042. package/src/components/progress/acai-ui-progress.vue +124 -0
  1043. package/src/components/radio/acai-ui-radio-interface.ts +14 -0
  1044. package/src/components/radio/acai-ui-radio.vue +78 -0
  1045. package/src/components/section/acai-ui-section-styles.scss +93 -0
  1046. package/src/components/section/acai-ui-section.vue +134 -0
  1047. package/src/components/select/acai-ui-select-interface.ts +18 -0
  1048. package/src/components/select/acai-ui-select.vue +322 -0
  1049. package/src/components/session-clock/acai-ui-session-clock.vue +111 -0
  1050. package/src/components/stepper/acai-ui-step-interface.ts +18 -0
  1051. package/src/components/stepper/acai-ui-step.vue +37 -0
  1052. package/src/components/stepper/acai-ui-stepper-interface.ts +56 -0
  1053. package/src/components/stepper/acai-ui-stepper-styles.scss +222 -0
  1054. package/src/components/stepper/acai-ui-stepper.vue +231 -0
  1055. package/src/components/swagger/acai-ui-swagger-interface.ts +54 -0
  1056. package/src/components/swagger/acai-ui-swagger-operacao.vue +372 -0
  1057. package/src/components/swagger/acai-ui-swagger-requisicao.ts +272 -0
  1058. package/src/components/swagger/acai-ui-swagger-schema.vue +36 -0
  1059. package/src/components/swagger/acai-ui-swagger-styles.scss +883 -0
  1060. package/src/components/swagger/acai-ui-swagger.vue +349 -0
  1061. package/src/components/swagger/openapi-normalizar.ts +514 -0
  1062. package/src/components/swagger/openapi-tipos.ts +198 -0
  1063. package/src/components/table/acai-ui-table-interface.ts +60 -0
  1064. package/src/components/table/acai-ui-table-justificativa.vue +135 -0
  1065. package/src/components/table/acai-ui-table-styles.scss +293 -0
  1066. package/src/components/table/acai-ui-table.vue +340 -0
  1067. package/src/components/tabs/acai-ui-tab.vue +10 -0
  1068. package/src/components/tabs/acai-ui-tabs-interface.ts +48 -0
  1069. package/src/components/tabs/acai-ui-tabs-styles.scss +78 -0
  1070. package/src/components/tabs/acai-ui-tabs.vue +137 -0
  1071. package/src/components/time/acai-ui-time-interface.ts +14 -0
  1072. package/src/components/time/acai-ui-time.vue +86 -0
  1073. package/src/components/toggle/acai-ui-toggle-interface.ts +13 -0
  1074. package/src/components/toggle/acai-ui-toggle.vue +162 -0
  1075. package/src/components/tooltip/acai-ui-tooltip-interface.ts +11 -0
  1076. package/src/components/tooltip/acai-ui-tooltip-styles.scss +104 -0
  1077. package/src/components/tooltip/acai-ui-tooltip.vue +90 -0
  1078. package/src/components/user-menu/acai-ui-user-menu-interface.ts +13 -0
  1079. package/src/components/user-menu/acai-ui-user-menu-styles.scss +125 -0
  1080. package/src/components/user-menu/acai-ui-user-menu.vue +139 -0
  1081. package/src/components/validation/acai-ui-validation.vue +236 -0
  1082. package/src/constants/chart-paleta.ts +162 -0
  1083. package/src/constants/efeitos.ts +24 -0
  1084. package/src/constants/index.ts +24 -0
  1085. package/src/constants/lista-icons.ts +156 -0
  1086. package/src/constants/medidas-espacos.ts +15 -0
  1087. package/src/constants/radius.ts +15 -0
  1088. package/src/constants/status-badge.ts +44 -0
  1089. package/src/env.d.ts +7 -0
  1090. package/src/hooks/filtros-url-internos.ts +497 -0
  1091. package/src/hooks/index.ts +22 -0
  1092. package/src/hooks/notify.ts +18 -0
  1093. package/src/hooks/use-contador-sessao.ts +95 -0
  1094. package/src/hooks/use-filtros-na-url.ts +174 -0
  1095. package/src/hooks/use-leitura-voz.ts +346 -0
  1096. package/src/hooks/use-listagem-na-url.ts +614 -0
  1097. package/src/hooks/use-preferencias.ts +152 -0
  1098. package/src/hooks/use-repasse-quasar.ts +63 -0
  1099. package/src/hooks/use-tamanho-elemento.ts +107 -0
  1100. package/src/hooks/use-tela.ts +114 -0
  1101. package/src/hooks/use-validacao-visual.ts +189 -0
  1102. package/src/index.ts +30 -0
  1103. package/src/plugin.ts +134 -0
  1104. package/src/scss/_badge.scss +12 -0
  1105. package/src/scss/_breakpoints.scss +102 -0
  1106. package/src/scss/_color-utilities.scss +105 -0
  1107. package/src/scss/_controls.scss +135 -0
  1108. package/src/scss/_ds-input-base.scss +302 -0
  1109. package/src/scss/_ds-picker-m3.scss +179 -0
  1110. package/src/scss/_effects.scss +42 -0
  1111. package/src/scss/_overlays.scss +13 -0
  1112. package/src/scss/_radius.scss +24 -0
  1113. package/src/scss/_reset.scss +60 -0
  1114. package/src/scss/_scrollbar.scss +78 -0
  1115. package/src/scss/_spacing.scss +15 -0
  1116. package/src/scss/_themes.scss +493 -0
  1117. package/src/scss/_typography.scss +50 -0
  1118. package/src/scss/_utilities.scss +75 -0
  1119. package/src/scss/_variables.scss +143 -0
  1120. package/src/scss/api.scss +77 -0
  1121. package/src/scss/tokens.scss +13 -0
  1122. package/src/styles-global.scss +30 -0
  1123. package/src/utils/date-utils.ts +128 -0
  1124. package/src/utils/dialog-utils.ts +59 -0
  1125. package/src/utils/file-utils.ts +85 -0
  1126. package/src/utils/filtro-input.ts +41 -0
  1127. package/src/utils/form-rules.ts +202 -0
  1128. package/src/utils/formatadores.ts +97 -0
  1129. package/src/utils/gerador-id.ts +29 -0
  1130. package/src/utils/hint-mensagem.ts +25 -0
  1131. package/src/utils/index.ts +32 -0
  1132. package/src/utils/limpar-campos.ts +94 -0
  1133. package/src/utils/masks.ts +19 -0
  1134. package/src/utils/medidas-util.ts +5 -0
  1135. package/src/utils/normalizar-label.ts +9 -0
  1136. package/src/utils/scroll-elemento.ts +34 -0
  1137. package/src/utils/validar-campo.ts +27 -0
  1138. package/src/utils/validar-documentos.ts +86 -0
  1139. package/src/utils/vnode-slot.ts +74 -0
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const PROPRIEDADES_PINTURA = [
4
+ "fill",
5
+ "fill-opacity",
6
+ "fill-rule",
7
+ "stroke",
8
+ "stroke-width",
9
+ "stroke-opacity",
10
+ "stroke-dasharray",
11
+ "stroke-dashoffset",
12
+ "stroke-linecap",
13
+ "stroke-linejoin",
14
+ "stroke-miterlimit",
15
+ "opacity",
16
+ "display",
17
+ "visibility",
18
+ "color",
19
+ "font-family",
20
+ "font-size",
21
+ "font-style",
22
+ "font-weight",
23
+ "letter-spacing",
24
+ "text-anchor",
25
+ "dominant-baseline",
26
+ "paint-order"
27
+ ];
28
+ const CLASSES_DESCARTADAS = ["acai-chart__foco"];
29
+ function inlinarEstilos(origem, destino) {
30
+ const computado = window.getComputedStyle(origem);
31
+ let css = "";
32
+ for (const propriedade of PROPRIEDADES_PINTURA) {
33
+ const valor = computado.getPropertyValue(propriedade);
34
+ if (valor) css += `${propriedade}:${valor};`;
35
+ }
36
+ if (css) destino.setAttribute("style", css);
37
+ const filhosOrigem = origem.children;
38
+ const filhosDestino = destino.children;
39
+ for (let i = 0; i < filhosOrigem.length; i++) {
40
+ const filhoOrigem = filhosOrigem[i];
41
+ const filhoDestino = filhosDestino[i];
42
+ if (filhoOrigem && filhoDestino) inlinarEstilos(filhoOrigem, filhoDestino);
43
+ }
44
+ }
45
+ function serializarSvgChart(svg) {
46
+ const clone = svg.cloneNode(true);
47
+ inlinarEstilos(svg, clone);
48
+ for (const classe of CLASSES_DESCARTADAS) {
49
+ clone.querySelectorAll(`.${classe}`).forEach((el) => el.remove());
50
+ }
51
+ const caixa = svg.getBoundingClientRect();
52
+ const largura = Number(svg.getAttribute("width")) || caixa.width || 640;
53
+ const altura = Number(svg.getAttribute("height")) || caixa.height || 320;
54
+ clone.setAttribute("xmlns", "http://www.w3.org/2000/svg");
55
+ clone.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink");
56
+ clone.setAttribute("width", String(largura));
57
+ clone.setAttribute("height", String(altura));
58
+ if (!clone.getAttribute("viewBox")) {
59
+ clone.setAttribute("viewBox", `0 0 ${largura} ${altura}`);
60
+ }
61
+ clone.removeAttribute("tabindex");
62
+ clone.removeAttribute("role");
63
+ return { texto: new XMLSerializer().serializeToString(clone), largura, altura };
64
+ }
65
+ function resolverCorCss(valor, contexto, reserva) {
66
+ const pai = contexto.parentElement ?? document.body;
67
+ const sonda = document.createElement("span");
68
+ sonda.style.cssText = `position:absolute;width:0;height:0;visibility:hidden;background-color:${valor}`;
69
+ pai.appendChild(sonda);
70
+ const resolvida = window.getComputedStyle(sonda).backgroundColor;
71
+ sonda.remove();
72
+ if (!resolvida || resolvida === "rgba(0, 0, 0, 0)" || resolvida === "transparent") {
73
+ return reserva;
74
+ }
75
+ return resolvida;
76
+ }
77
+ const TIMEOUT_MS = 8e3;
78
+ function carregarImagem(dataUrl) {
79
+ return new Promise((resolver, rejeitar) => {
80
+ const img = new Image();
81
+ const relogio = setTimeout(() => {
82
+ rejeitar(new Error("acai-ui-chart: tempo esgotado ao rasterizar o SVG do gráfico."));
83
+ }, TIMEOUT_MS);
84
+ img.onload = () => {
85
+ clearTimeout(relogio);
86
+ resolver(img);
87
+ };
88
+ img.onerror = () => {
89
+ clearTimeout(relogio);
90
+ rejeitar(new Error("acai-ui-chart: o navegador recusou o SVG serializado do gráfico."));
91
+ };
92
+ img.src = dataUrl;
93
+ });
94
+ }
95
+ async function svgChartParaImagem(svg, opcoes = {}) {
96
+ if (typeof document === "undefined") {
97
+ throw new Error("acai-ui-chart: export de imagem exige navegador.");
98
+ }
99
+ const escala = Math.max(0.1, opcoes.escala ?? 2);
100
+ const fundo = opcoes.fundo === void 0 ? resolverCorCss("var(--acai-chart-surface)", svg, "#ffffff") : opcoes.fundo;
101
+ const { texto, largura, altura } = serializarSvgChart(svg);
102
+ const img = await carregarImagem(
103
+ `data:image/svg+xml;charset=utf-8,${encodeURIComponent(texto)}`
104
+ );
105
+ const canvas = document.createElement("canvas");
106
+ canvas.width = Math.max(1, Math.round(largura * escala));
107
+ canvas.height = Math.max(1, Math.round(altura * escala));
108
+ const ctx = canvas.getContext("2d");
109
+ if (!ctx) throw new Error("acai-ui-chart: canvas 2d indisponível.");
110
+ if (fundo) {
111
+ ctx.fillStyle = fundo;
112
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
113
+ }
114
+ ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
115
+ return {
116
+ dataUrl: canvas.toDataURL("image/png"),
117
+ largura,
118
+ altura,
119
+ proporcao: altura > 0 ? largura / altura : 1
120
+ };
121
+ }
122
+ exports.serializarSvgChart = serializarSvgChart;
123
+ exports.svgChartParaImagem = svgChartParaImagem;
124
+ //# sourceMappingURL=index94.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index94.cjs","sources":["../src/components/chart/chart-imagem.ts"],"sourcesContent":["// Export de imagem — SVG desenhado na tela → PNG (data URL).\n//\n// Existe porque gerador de relatório (Book/PDF) precisa da FIGURA, não do\n// componente: o jspdf recebe um `dataUrl` e o desenha na folha. Sem isto, um app\n// que já usa o `<acai-ui-chart>` na tela é obrigado a manter uma segunda lib de\n// gráfico só pra conseguir a imagem — e ficar com duas é pior que ficar com uma.\n//\n// ⚠️ A armadilha central: um `<img src=\"data:image/svg+xml,…\">` é um DOCUMENTO\n// SEPARADO. Ele não vê a folha de estilo da página, nem as custom properties\n// `--acai-*`, nem as classes `scoped` do componente. Serializar o SVG cru\n// produziria um retângulo com tudo preto (ou nada). Por isso todo estilo COMPUTADO\n// é inlinado no clone antes de serializar: é o que carrega a paleta já resolvida\n// para o tema em vigor (claro, escuro, daltônico ou alto contraste).\n\nexport interface OpcoesImagemChart {\n /**\n * Multiplicador de pixels. Default 2 — o PDF é impresso e 1× sai serrilhado.\n * O `dataUrl` sai com `largura × escala` pixels, mas as dimensões devolvidas\n * continuam em CSS px, que é o que o jspdf usa pra calcular a proporção.\n */\n escala?: number\n /**\n * Cor de fundo do PNG.\n *\n * Omitido, usa a **superfície do tema em vigor** (`--acai-chart-surface`) já\n * resolvida — o que estava atrás do gráfico na tela. Não é preciosismo: o SVG é\n * transparente, e no tema escuro a tinta do texto é CLARA. Chapar branco por\n * padrão produziria texto claro sobre fundo branco, ilegível justamente no\n * relatório, que é o único lugar onde ninguém vai reconferir.\n *\n * Passe `'#ffffff'` quando o destino é folha branca — e nesse caso gere o\n * relatório com o tema claro, senão o gráfico não vai combinar com a página.\n * `null` preserva a transparência.\n */\n fundo?: string | null\n}\n\nexport interface ImagemChart {\n /** `data:image/png;base64,…` — pronto pro `jspdf.addImage`. */\n dataUrl: string\n /** Dimensões em CSS px (não multiplicadas pela escala). */\n largura: number\n altura: number\n /** `largura / altura`. É o que o gerador de PDF usa pra encaixar na folha. */\n proporcao: number\n}\n\n/**\n * Propriedades copiadas do estilo computado para o clone.\n *\n * Lista fechada de propósito: copiar o `cssText` inteiro do computado emitiria\n * ~340 declarações POR NÓ, e o data URL de um gráfico de 300 elementos passaria\n * de 1 MB — grande o bastante para o `<img>` engasgar. Aqui está só o que pinta.\n */\nconst PROPRIEDADES_PINTURA: readonly string[] = [\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'stroke',\n 'stroke-width',\n 'stroke-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'opacity',\n 'display',\n 'visibility',\n 'color',\n 'font-family',\n 'font-size',\n 'font-style',\n 'font-weight',\n 'letter-spacing',\n 'text-anchor',\n 'dominant-baseline',\n 'paint-order',\n]\n\n/** Só na tela: o anel de foco não pode aparecer na figura do relatório. */\nconst CLASSES_DESCARTADAS = ['acai-chart__foco']\n\n/**\n * Copia o estilo computado da árvore ORIGINAL para a clonada, nó a nó.\n *\n * Percorre os dois em paralelo em vez de reconsultar o DOM: o clone está fora do\n * documento, então `getComputedStyle` nele devolveria valores iniciais — é o erro\n * que faz o export sair todo preto.\n */\nfunction inlinarEstilos(origem: Element, destino: Element): void {\n const computado = window.getComputedStyle(origem)\n\n let css = ''\n for (const propriedade of PROPRIEDADES_PINTURA) {\n const valor = computado.getPropertyValue(propriedade)\n if (valor) css += `${propriedade}:${valor};`\n }\n if (css) destino.setAttribute('style', css)\n\n const filhosOrigem = origem.children\n const filhosDestino = destino.children\n for (let i = 0; i < filhosOrigem.length; i++) {\n const filhoOrigem = filhosOrigem[i]\n const filhoDestino = filhosDestino[i]\n if (filhoOrigem && filhoDestino) inlinarEstilos(filhoOrigem, filhoDestino)\n }\n}\n\nexport interface SvgSerializado {\n texto: string\n largura: number\n altura: number\n}\n\n/**\n * SVG autossuficiente: estilos resolvidos, namespace declarado e dimensões\n * explícitas. Serve tanto pro raster quanto pra quem quiser o `.svg` puro.\n */\nexport function serializarSvgChart(svg: SVGSVGElement): SvgSerializado {\n const clone = svg.cloneNode(true) as SVGSVGElement\n inlinarEstilos(svg, clone)\n\n for (const classe of CLASSES_DESCARTADAS) {\n clone.querySelectorAll(`.${classe}`).forEach((el) => el.remove())\n }\n\n const caixa = svg.getBoundingClientRect()\n // O atributo vem do próprio componente (ele desenha 1:1, sem esticar viewBox);\n // a caixa medida é a rede de segurança pra SVG sem atributo.\n const largura = Number(svg.getAttribute('width')) || caixa.width || 640\n const altura = Number(svg.getAttribute('height')) || caixa.height || 320\n\n // Sem os namespaces o documento carregado pelo `<img>` não é SVG válido e o\n // `onerror` dispara sem mensagem útil.\n clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg')\n clone.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink')\n clone.setAttribute('width', String(largura))\n clone.setAttribute('height', String(altura))\n if (!clone.getAttribute('viewBox')) {\n clone.setAttribute('viewBox', `0 0 ${largura} ${altura}`)\n }\n // Atributos de interação não fazem sentido numa figura estática.\n clone.removeAttribute('tabindex')\n clone.removeAttribute('role')\n\n return { texto: new XMLSerializer().serializeToString(clone), largura, altura }\n}\n\n/**\n * Resolve um valor de cor que pode ser `var(--token)`.\n *\n * ⚠️ `getComputedStyle(el).getPropertyValue('--acai-chart-surface')` **não serve**:\n * custom property devolve o valor ESPECIFICADO, e aqui isso é a string literal\n * `var(--acai-surface)` — que o canvas não entende. A sonda existe pra o motor de\n * CSS fazer a substituição: atribuir a uma propriedade real (`background-color`) e\n * ler o computado devolve `rgb(...)`.\n *\n * A sonda entra ao lado do gráfico, e não no `<body>`, porque o token pode ter\n * sido sobrescrito num contêiner intermediário (é assim que a documentação pinta\n * a própria identidade).\n */\nfunction resolverCorCss(valor: string, contexto: Element, reserva: string): string {\n const pai = contexto.parentElement ?? document.body\n const sonda = document.createElement('span')\n sonda.style.cssText = `position:absolute;width:0;height:0;visibility:hidden;background-color:${valor}`\n pai.appendChild(sonda)\n const resolvida = window.getComputedStyle(sonda).backgroundColor\n sonda.remove()\n\n // Token inexistente computa como transparente — aí a reserva é melhor do que\n // devolver um PNG sem fundo achando que tem.\n if (!resolvida || resolvida === 'rgba(0, 0, 0, 0)' || resolvida === 'transparent') {\n return reserva\n }\n return resolvida\n}\n\n/** Acima disso desistimos: melhor erro claro que promessa que nunca resolve. */\nconst TIMEOUT_MS = 8000\n\nfunction carregarImagem(dataUrl: string): Promise<HTMLImageElement> {\n return new Promise((resolver, rejeitar) => {\n const img = new Image()\n const relogio = setTimeout(() => {\n rejeitar(new Error('acai-ui-chart: tempo esgotado ao rasterizar o SVG do gráfico.'))\n }, TIMEOUT_MS)\n\n img.onload = () => {\n clearTimeout(relogio)\n resolver(img)\n }\n img.onerror = () => {\n clearTimeout(relogio)\n rejeitar(new Error('acai-ui-chart: o navegador recusou o SVG serializado do gráfico.'))\n }\n img.src = dataUrl\n })\n}\n\n/**\n * Rasteriza o SVG de um gráfico já desenhado.\n *\n * Data URL e não `URL.createObjectURL`: o blob de SVG **suja o canvas** em parte\n * dos navegadores, e aí o `toDataURL` estoura `SecurityError`. E `encodeURIComponent`\n * e não `btoa`: `btoa` quebra em qualquer caractere fora do Latin-1, ou seja em\n * qualquer rótulo com acento — \"Ananindeua\", \"Órgão\", \"Óbidos\".\n */\nexport async function svgChartParaImagem(\n svg: SVGSVGElement,\n opcoes: OpcoesImagemChart = {},\n): Promise<ImagemChart> {\n if (typeof document === 'undefined') {\n throw new Error('acai-ui-chart: export de imagem exige navegador.')\n }\n\n const escala = Math.max(0.1, opcoes.escala ?? 2)\n const fundo =\n opcoes.fundo === undefined\n ? resolverCorCss('var(--acai-chart-surface)', svg, '#ffffff')\n : opcoes.fundo\n\n const { texto, largura, altura } = serializarSvgChart(svg)\n const img = await carregarImagem(\n `data:image/svg+xml;charset=utf-8,${encodeURIComponent(texto)}`,\n )\n\n const canvas = document.createElement('canvas')\n canvas.width = Math.max(1, Math.round(largura * escala))\n canvas.height = Math.max(1, Math.round(altura * escala))\n\n const ctx = canvas.getContext('2d')\n if (!ctx) throw new Error('acai-ui-chart: canvas 2d indisponível.')\n\n if (fundo) {\n ctx.fillStyle = fundo\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n }\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height)\n\n return {\n dataUrl: canvas.toDataURL('image/png'),\n largura,\n altura,\n proporcao: altura > 0 ? largura / altura : 1,\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ const PROPRIEDADES_PINTURA = [
2
+ "fill",
3
+ "fill-opacity",
4
+ "fill-rule",
5
+ "stroke",
6
+ "stroke-width",
7
+ "stroke-opacity",
8
+ "stroke-dasharray",
9
+ "stroke-dashoffset",
10
+ "stroke-linecap",
11
+ "stroke-linejoin",
12
+ "stroke-miterlimit",
13
+ "opacity",
14
+ "display",
15
+ "visibility",
16
+ "color",
17
+ "font-family",
18
+ "font-size",
19
+ "font-style",
20
+ "font-weight",
21
+ "letter-spacing",
22
+ "text-anchor",
23
+ "dominant-baseline",
24
+ "paint-order"
25
+ ];
26
+ const CLASSES_DESCARTADAS = ["acai-chart__foco"];
27
+ function inlinarEstilos(origem, destino) {
28
+ const computado = window.getComputedStyle(origem);
29
+ let css = "";
30
+ for (const propriedade of PROPRIEDADES_PINTURA) {
31
+ const valor = computado.getPropertyValue(propriedade);
32
+ if (valor) css += `${propriedade}:${valor};`;
33
+ }
34
+ if (css) destino.setAttribute("style", css);
35
+ const filhosOrigem = origem.children;
36
+ const filhosDestino = destino.children;
37
+ for (let i = 0; i < filhosOrigem.length; i++) {
38
+ const filhoOrigem = filhosOrigem[i];
39
+ const filhoDestino = filhosDestino[i];
40
+ if (filhoOrigem && filhoDestino) inlinarEstilos(filhoOrigem, filhoDestino);
41
+ }
42
+ }
43
+ function serializarSvgChart(svg) {
44
+ const clone = svg.cloneNode(true);
45
+ inlinarEstilos(svg, clone);
46
+ for (const classe of CLASSES_DESCARTADAS) {
47
+ clone.querySelectorAll(`.${classe}`).forEach((el) => el.remove());
48
+ }
49
+ const caixa = svg.getBoundingClientRect();
50
+ const largura = Number(svg.getAttribute("width")) || caixa.width || 640;
51
+ const altura = Number(svg.getAttribute("height")) || caixa.height || 320;
52
+ clone.setAttribute("xmlns", "http://www.w3.org/2000/svg");
53
+ clone.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink");
54
+ clone.setAttribute("width", String(largura));
55
+ clone.setAttribute("height", String(altura));
56
+ if (!clone.getAttribute("viewBox")) {
57
+ clone.setAttribute("viewBox", `0 0 ${largura} ${altura}`);
58
+ }
59
+ clone.removeAttribute("tabindex");
60
+ clone.removeAttribute("role");
61
+ return { texto: new XMLSerializer().serializeToString(clone), largura, altura };
62
+ }
63
+ function resolverCorCss(valor, contexto, reserva) {
64
+ const pai = contexto.parentElement ?? document.body;
65
+ const sonda = document.createElement("span");
66
+ sonda.style.cssText = `position:absolute;width:0;height:0;visibility:hidden;background-color:${valor}`;
67
+ pai.appendChild(sonda);
68
+ const resolvida = window.getComputedStyle(sonda).backgroundColor;
69
+ sonda.remove();
70
+ if (!resolvida || resolvida === "rgba(0, 0, 0, 0)" || resolvida === "transparent") {
71
+ return reserva;
72
+ }
73
+ return resolvida;
74
+ }
75
+ const TIMEOUT_MS = 8e3;
76
+ function carregarImagem(dataUrl) {
77
+ return new Promise((resolver, rejeitar) => {
78
+ const img = new Image();
79
+ const relogio = setTimeout(() => {
80
+ rejeitar(new Error("acai-ui-chart: tempo esgotado ao rasterizar o SVG do gráfico."));
81
+ }, TIMEOUT_MS);
82
+ img.onload = () => {
83
+ clearTimeout(relogio);
84
+ resolver(img);
85
+ };
86
+ img.onerror = () => {
87
+ clearTimeout(relogio);
88
+ rejeitar(new Error("acai-ui-chart: o navegador recusou o SVG serializado do gráfico."));
89
+ };
90
+ img.src = dataUrl;
91
+ });
92
+ }
93
+ async function svgChartParaImagem(svg, opcoes = {}) {
94
+ if (typeof document === "undefined") {
95
+ throw new Error("acai-ui-chart: export de imagem exige navegador.");
96
+ }
97
+ const escala = Math.max(0.1, opcoes.escala ?? 2);
98
+ const fundo = opcoes.fundo === void 0 ? resolverCorCss("var(--acai-chart-surface)", svg, "#ffffff") : opcoes.fundo;
99
+ const { texto, largura, altura } = serializarSvgChart(svg);
100
+ const img = await carregarImagem(
101
+ `data:image/svg+xml;charset=utf-8,${encodeURIComponent(texto)}`
102
+ );
103
+ const canvas = document.createElement("canvas");
104
+ canvas.width = Math.max(1, Math.round(largura * escala));
105
+ canvas.height = Math.max(1, Math.round(altura * escala));
106
+ const ctx = canvas.getContext("2d");
107
+ if (!ctx) throw new Error("acai-ui-chart: canvas 2d indisponível.");
108
+ if (fundo) {
109
+ ctx.fillStyle = fundo;
110
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
111
+ }
112
+ ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
113
+ return {
114
+ dataUrl: canvas.toDataURL("image/png"),
115
+ largura,
116
+ altura,
117
+ proporcao: altura > 0 ? largura / altura : 1
118
+ };
119
+ }
120
+ export {
121
+ serializarSvgChart,
122
+ svgChartParaImagem
123
+ };
124
+ //# sourceMappingURL=index94.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index94.mjs","sources":["../src/components/chart/chart-imagem.ts"],"sourcesContent":["// Export de imagem — SVG desenhado na tela → PNG (data URL).\n//\n// Existe porque gerador de relatório (Book/PDF) precisa da FIGURA, não do\n// componente: o jspdf recebe um `dataUrl` e o desenha na folha. Sem isto, um app\n// que já usa o `<acai-ui-chart>` na tela é obrigado a manter uma segunda lib de\n// gráfico só pra conseguir a imagem — e ficar com duas é pior que ficar com uma.\n//\n// ⚠️ A armadilha central: um `<img src=\"data:image/svg+xml,…\">` é um DOCUMENTO\n// SEPARADO. Ele não vê a folha de estilo da página, nem as custom properties\n// `--acai-*`, nem as classes `scoped` do componente. Serializar o SVG cru\n// produziria um retângulo com tudo preto (ou nada). Por isso todo estilo COMPUTADO\n// é inlinado no clone antes de serializar: é o que carrega a paleta já resolvida\n// para o tema em vigor (claro, escuro, daltônico ou alto contraste).\n\nexport interface OpcoesImagemChart {\n /**\n * Multiplicador de pixels. Default 2 — o PDF é impresso e 1× sai serrilhado.\n * O `dataUrl` sai com `largura × escala` pixels, mas as dimensões devolvidas\n * continuam em CSS px, que é o que o jspdf usa pra calcular a proporção.\n */\n escala?: number\n /**\n * Cor de fundo do PNG.\n *\n * Omitido, usa a **superfície do tema em vigor** (`--acai-chart-surface`) já\n * resolvida — o que estava atrás do gráfico na tela. Não é preciosismo: o SVG é\n * transparente, e no tema escuro a tinta do texto é CLARA. Chapar branco por\n * padrão produziria texto claro sobre fundo branco, ilegível justamente no\n * relatório, que é o único lugar onde ninguém vai reconferir.\n *\n * Passe `'#ffffff'` quando o destino é folha branca — e nesse caso gere o\n * relatório com o tema claro, senão o gráfico não vai combinar com a página.\n * `null` preserva a transparência.\n */\n fundo?: string | null\n}\n\nexport interface ImagemChart {\n /** `data:image/png;base64,…` — pronto pro `jspdf.addImage`. */\n dataUrl: string\n /** Dimensões em CSS px (não multiplicadas pela escala). */\n largura: number\n altura: number\n /** `largura / altura`. É o que o gerador de PDF usa pra encaixar na folha. */\n proporcao: number\n}\n\n/**\n * Propriedades copiadas do estilo computado para o clone.\n *\n * Lista fechada de propósito: copiar o `cssText` inteiro do computado emitiria\n * ~340 declarações POR NÓ, e o data URL de um gráfico de 300 elementos passaria\n * de 1 MB — grande o bastante para o `<img>` engasgar. Aqui está só o que pinta.\n */\nconst PROPRIEDADES_PINTURA: readonly string[] = [\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'stroke',\n 'stroke-width',\n 'stroke-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'opacity',\n 'display',\n 'visibility',\n 'color',\n 'font-family',\n 'font-size',\n 'font-style',\n 'font-weight',\n 'letter-spacing',\n 'text-anchor',\n 'dominant-baseline',\n 'paint-order',\n]\n\n/** Só na tela: o anel de foco não pode aparecer na figura do relatório. */\nconst CLASSES_DESCARTADAS = ['acai-chart__foco']\n\n/**\n * Copia o estilo computado da árvore ORIGINAL para a clonada, nó a nó.\n *\n * Percorre os dois em paralelo em vez de reconsultar o DOM: o clone está fora do\n * documento, então `getComputedStyle` nele devolveria valores iniciais — é o erro\n * que faz o export sair todo preto.\n */\nfunction inlinarEstilos(origem: Element, destino: Element): void {\n const computado = window.getComputedStyle(origem)\n\n let css = ''\n for (const propriedade of PROPRIEDADES_PINTURA) {\n const valor = computado.getPropertyValue(propriedade)\n if (valor) css += `${propriedade}:${valor};`\n }\n if (css) destino.setAttribute('style', css)\n\n const filhosOrigem = origem.children\n const filhosDestino = destino.children\n for (let i = 0; i < filhosOrigem.length; i++) {\n const filhoOrigem = filhosOrigem[i]\n const filhoDestino = filhosDestino[i]\n if (filhoOrigem && filhoDestino) inlinarEstilos(filhoOrigem, filhoDestino)\n }\n}\n\nexport interface SvgSerializado {\n texto: string\n largura: number\n altura: number\n}\n\n/**\n * SVG autossuficiente: estilos resolvidos, namespace declarado e dimensões\n * explícitas. Serve tanto pro raster quanto pra quem quiser o `.svg` puro.\n */\nexport function serializarSvgChart(svg: SVGSVGElement): SvgSerializado {\n const clone = svg.cloneNode(true) as SVGSVGElement\n inlinarEstilos(svg, clone)\n\n for (const classe of CLASSES_DESCARTADAS) {\n clone.querySelectorAll(`.${classe}`).forEach((el) => el.remove())\n }\n\n const caixa = svg.getBoundingClientRect()\n // O atributo vem do próprio componente (ele desenha 1:1, sem esticar viewBox);\n // a caixa medida é a rede de segurança pra SVG sem atributo.\n const largura = Number(svg.getAttribute('width')) || caixa.width || 640\n const altura = Number(svg.getAttribute('height')) || caixa.height || 320\n\n // Sem os namespaces o documento carregado pelo `<img>` não é SVG válido e o\n // `onerror` dispara sem mensagem útil.\n clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg')\n clone.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink')\n clone.setAttribute('width', String(largura))\n clone.setAttribute('height', String(altura))\n if (!clone.getAttribute('viewBox')) {\n clone.setAttribute('viewBox', `0 0 ${largura} ${altura}`)\n }\n // Atributos de interação não fazem sentido numa figura estática.\n clone.removeAttribute('tabindex')\n clone.removeAttribute('role')\n\n return { texto: new XMLSerializer().serializeToString(clone), largura, altura }\n}\n\n/**\n * Resolve um valor de cor que pode ser `var(--token)`.\n *\n * ⚠️ `getComputedStyle(el).getPropertyValue('--acai-chart-surface')` **não serve**:\n * custom property devolve o valor ESPECIFICADO, e aqui isso é a string literal\n * `var(--acai-surface)` — que o canvas não entende. A sonda existe pra o motor de\n * CSS fazer a substituição: atribuir a uma propriedade real (`background-color`) e\n * ler o computado devolve `rgb(...)`.\n *\n * A sonda entra ao lado do gráfico, e não no `<body>`, porque o token pode ter\n * sido sobrescrito num contêiner intermediário (é assim que a documentação pinta\n * a própria identidade).\n */\nfunction resolverCorCss(valor: string, contexto: Element, reserva: string): string {\n const pai = contexto.parentElement ?? document.body\n const sonda = document.createElement('span')\n sonda.style.cssText = `position:absolute;width:0;height:0;visibility:hidden;background-color:${valor}`\n pai.appendChild(sonda)\n const resolvida = window.getComputedStyle(sonda).backgroundColor\n sonda.remove()\n\n // Token inexistente computa como transparente — aí a reserva é melhor do que\n // devolver um PNG sem fundo achando que tem.\n if (!resolvida || resolvida === 'rgba(0, 0, 0, 0)' || resolvida === 'transparent') {\n return reserva\n }\n return resolvida\n}\n\n/** Acima disso desistimos: melhor erro claro que promessa que nunca resolve. */\nconst TIMEOUT_MS = 8000\n\nfunction carregarImagem(dataUrl: string): Promise<HTMLImageElement> {\n return new Promise((resolver, rejeitar) => {\n const img = new Image()\n const relogio = setTimeout(() => {\n rejeitar(new Error('acai-ui-chart: tempo esgotado ao rasterizar o SVG do gráfico.'))\n }, TIMEOUT_MS)\n\n img.onload = () => {\n clearTimeout(relogio)\n resolver(img)\n }\n img.onerror = () => {\n clearTimeout(relogio)\n rejeitar(new Error('acai-ui-chart: o navegador recusou o SVG serializado do gráfico.'))\n }\n img.src = dataUrl\n })\n}\n\n/**\n * Rasteriza o SVG de um gráfico já desenhado.\n *\n * Data URL e não `URL.createObjectURL`: o blob de SVG **suja o canvas** em parte\n * dos navegadores, e aí o `toDataURL` estoura `SecurityError`. E `encodeURIComponent`\n * e não `btoa`: `btoa` quebra em qualquer caractere fora do Latin-1, ou seja em\n * qualquer rótulo com acento — \"Ananindeua\", \"Órgão\", \"Óbidos\".\n */\nexport async function svgChartParaImagem(\n svg: SVGSVGElement,\n opcoes: OpcoesImagemChart = {},\n): Promise<ImagemChart> {\n if (typeof document === 'undefined') {\n throw new Error('acai-ui-chart: export de imagem exige navegador.')\n }\n\n const escala = Math.max(0.1, opcoes.escala ?? 2)\n const fundo =\n opcoes.fundo === undefined\n ? resolverCorCss('var(--acai-chart-surface)', svg, '#ffffff')\n : opcoes.fundo\n\n const { texto, largura, altura } = serializarSvgChart(svg)\n const img = await carregarImagem(\n `data:image/svg+xml;charset=utf-8,${encodeURIComponent(texto)}`,\n )\n\n const canvas = document.createElement('canvas')\n canvas.width = Math.max(1, Math.round(largura * escala))\n canvas.height = Math.max(1, Math.round(altura * escala))\n\n const ctx = canvas.getContext('2d')\n if (!ctx) throw new Error('acai-ui-chart: canvas 2d indisponível.')\n\n if (fundo) {\n ctx.fillStyle = fundo\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n }\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height)\n\n return {\n dataUrl: canvas.toDataURL('image/png'),\n largura,\n altura,\n proporcao: altura > 0 ? largura / altura : 1,\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const vue = require("vue");
4
+ function useContadorSessao(expiraEm, opcoes = {}) {
5
+ const minutosAlerta = opcoes.minutosAlerta ?? 5;
6
+ const expiracaoMs = vue.computed(() => {
7
+ const v = vue.toValue(expiraEm);
8
+ if (v instanceof Date) return v.getTime();
9
+ if (typeof v === "number" && Number.isFinite(v)) return v;
10
+ return null;
11
+ });
12
+ const restanteMs = vue.ref(null);
13
+ let intervalo = null;
14
+ let expirouEmitido = false;
15
+ function parar() {
16
+ if (intervalo === null) return;
17
+ window.clearInterval(intervalo);
18
+ intervalo = null;
19
+ }
20
+ function tick() {
21
+ var _a;
22
+ if (expiracaoMs.value === null) {
23
+ restanteMs.value = null;
24
+ return;
25
+ }
26
+ const restante = expiracaoMs.value - Date.now();
27
+ restanteMs.value = Math.max(0, restante);
28
+ if (restante <= 0) {
29
+ parar();
30
+ if (!expirouEmitido) {
31
+ expirouEmitido = true;
32
+ (_a = opcoes.aoExpirar) == null ? void 0 : _a.call(opcoes);
33
+ }
34
+ }
35
+ }
36
+ vue.watch(
37
+ expiracaoMs,
38
+ (novo) => {
39
+ parar();
40
+ expirouEmitido = false;
41
+ if (novo === null) {
42
+ restanteMs.value = null;
43
+ return;
44
+ }
45
+ tick();
46
+ intervalo = window.setInterval(tick, 1e3);
47
+ },
48
+ { immediate: true }
49
+ );
50
+ vue.onBeforeUnmount(parar);
51
+ const doisDigitos = (n) => String(n).padStart(2, "0");
52
+ const horasMinutos = vue.computed(() => {
53
+ if (restanteMs.value === null) return "--";
54
+ const totalSegundos = Math.floor(restanteMs.value / 1e3);
55
+ return `${doisDigitos(Math.floor(totalSegundos / 3600))}:${doisDigitos(Math.floor(totalSegundos % 3600 / 60))}`;
56
+ });
57
+ const horasMinutosSegundos = vue.computed(() => {
58
+ if (restanteMs.value === null) return "--";
59
+ const s = Math.floor(restanteMs.value / 1e3);
60
+ return `${doisDigitos(Math.floor(s / 3600))}:${doisDigitos(Math.floor(s % 3600 / 60))}:${doisDigitos(s % 60)}`;
61
+ });
62
+ const emAlerta = vue.computed(
63
+ () => restanteMs.value !== null && restanteMs.value <= minutosAlerta * 6e4
64
+ );
65
+ return { restanteMs, horasMinutos, horasMinutosSegundos, emAlerta };
66
+ }
67
+ exports.useContadorSessao = useContadorSessao;
68
+ //# sourceMappingURL=index95.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index95.cjs","sources":["../src/hooks/use-contador-sessao.ts"],"sourcesContent":["import { computed, onBeforeUnmount, ref, toValue, watch, type MaybeRefOrGetter } from 'vue'\n\nexport interface OpcoesContadorSessao {\n /** Minutos restantes a partir dos quais `emAlerta` fica true. Default 5. */\n minutosAlerta?: number\n /** Chamado UMA vez quando o tempo zera. */\n aoExpirar?: () => void\n}\n\n/**\n * Contagem regressiva de sessão a partir de um instante de expiração.\n * Aceita epoch em MILISSEGUNDOS ou `Date` (de um JWT: `exp * 1000`).\n * Reativo — reinicia sozinho quando `expiraEm` muda; limpa o intervalo no unmount.\n *\n * @example\n * const { horasMinutos, emAlerta } = useContadorSessao(() => usuario.value?.exp ? usuario.value.exp * 1000 : null)\n */\nexport function useContadorSessao(\n expiraEm: MaybeRefOrGetter<number | Date | null | undefined>,\n opcoes: OpcoesContadorSessao = {},\n) {\n const minutosAlerta = opcoes.minutosAlerta ?? 5\n\n const expiracaoMs = computed<number | null>(() => {\n const v = toValue(expiraEm)\n if (v instanceof Date) return v.getTime()\n if (typeof v === 'number' && Number.isFinite(v)) return v\n return null\n })\n\n const restanteMs = ref<number | null>(null)\n let intervalo: number | null = null\n let expirouEmitido = false\n\n function parar(): void {\n if (intervalo === null) return\n window.clearInterval(intervalo)\n intervalo = null\n }\n\n function tick(): void {\n if (expiracaoMs.value === null) {\n restanteMs.value = null\n return\n }\n const restante = expiracaoMs.value - Date.now()\n restanteMs.value = Math.max(0, restante)\n if (restante <= 0) {\n parar()\n if (!expirouEmitido) {\n expirouEmitido = true\n opcoes.aoExpirar?.()\n }\n }\n }\n\n watch(\n expiracaoMs,\n (novo) => {\n parar()\n expirouEmitido = false\n if (novo === null) {\n restanteMs.value = null\n return\n }\n tick()\n intervalo = window.setInterval(tick, 1000)\n },\n { immediate: true },\n )\n\n onBeforeUnmount(parar)\n\n const doisDigitos = (n: number): string => String(n).padStart(2, '0')\n\n /** Tempo restante em HH:MM (ex.: \"03:42\"). \"--\" quando não há expiração. */\n const horasMinutos = computed(() => {\n if (restanteMs.value === null) return '--'\n const totalSegundos = Math.floor(restanteMs.value / 1000)\n return `${doisDigitos(Math.floor(totalSegundos / 3600))}:${doisDigitos(Math.floor((totalSegundos % 3600) / 60))}`\n })\n\n /** Tempo restante em HH:MM:SS (ex.: \"03:42:07\"). */\n const horasMinutosSegundos = computed(() => {\n if (restanteMs.value === null) return '--'\n const s = Math.floor(restanteMs.value / 1000)\n return `${doisDigitos(Math.floor(s / 3600))}:${doisDigitos(Math.floor((s % 3600) / 60))}:${doisDigitos(s % 60)}`\n })\n\n const emAlerta = computed(\n () => restanteMs.value !== null && restanteMs.value <= minutosAlerta * 60_000,\n )\n\n return { restanteMs, horasMinutos, horasMinutosSegundos, emAlerta }\n}\n"],"names":["computed","toValue","ref","watch","onBeforeUnmount"],"mappings":";;;AAiBO,SAAS,kBACd,UACA,SAA+B,IAC/B;AACA,QAAM,gBAAgB,OAAO,iBAAiB;AAE9C,QAAM,cAAcA,IAAAA,SAAwB,MAAM;AAChD,UAAM,IAAIC,IAAAA,QAAQ,QAAQ;AAC1B,QAAI,aAAa,KAAM,QAAO,EAAE,QAAA;AAChC,QAAI,OAAO,MAAM,YAAY,OAAO,SAAS,CAAC,EAAG,QAAO;AACxD,WAAO;AAAA,EACT,CAAC;AAED,QAAM,aAAaC,IAAAA,IAAmB,IAAI;AAC1C,MAAI,YAA2B;AAC/B,MAAI,iBAAiB;AAErB,WAAS,QAAc;AACrB,QAAI,cAAc,KAAM;AACxB,WAAO,cAAc,SAAS;AAC9B,gBAAY;AAAA,EACd;AAEA,WAAS,OAAa;;AACpB,QAAI,YAAY,UAAU,MAAM;AAC9B,iBAAW,QAAQ;AACnB;AAAA,IACF;AACA,UAAM,WAAW,YAAY,QAAQ,KAAK,IAAA;AAC1C,eAAW,QAAQ,KAAK,IAAI,GAAG,QAAQ;AACvC,QAAI,YAAY,GAAG;AACjB,YAAA;AACA,UAAI,CAAC,gBAAgB;AACnB,yBAAiB;AACjB,qBAAO,cAAP;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEAC,MAAAA;AAAAA,IACE;AAAA,IACA,CAAC,SAAS;AACR,YAAA;AACA,uBAAiB;AACjB,UAAI,SAAS,MAAM;AACjB,mBAAW,QAAQ;AACnB;AAAA,MACF;AACA,WAAA;AACA,kBAAY,OAAO,YAAY,MAAM,GAAI;AAAA,IAC3C;AAAA,IACA,EAAE,WAAW,KAAA;AAAA,EAAK;AAGpBC,MAAAA,gBAAgB,KAAK;AAErB,QAAM,cAAc,CAAC,MAAsB,OAAO,CAAC,EAAE,SAAS,GAAG,GAAG;AAGpE,QAAM,eAAeJ,IAAAA,SAAS,MAAM;AAClC,QAAI,WAAW,UAAU,KAAM,QAAO;AACtC,UAAM,gBAAgB,KAAK,MAAM,WAAW,QAAQ,GAAI;AACxD,WAAO,GAAG,YAAY,KAAK,MAAM,gBAAgB,IAAI,CAAC,CAAC,IAAI,YAAY,KAAK,MAAO,gBAAgB,OAAQ,EAAE,CAAC,CAAC;AAAA,EACjH,CAAC;AAGD,QAAM,uBAAuBA,IAAAA,SAAS,MAAM;AAC1C,QAAI,WAAW,UAAU,KAAM,QAAO;AACtC,UAAM,IAAI,KAAK,MAAM,WAAW,QAAQ,GAAI;AAC5C,WAAO,GAAG,YAAY,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,IAAI,YAAY,KAAK,MAAO,IAAI,OAAQ,EAAE,CAAC,CAAC,IAAI,YAAY,IAAI,EAAE,CAAC;AAAA,EAChH,CAAC;AAED,QAAM,WAAWA,IAAAA;AAAAA,IACf,MAAM,WAAW,UAAU,QAAQ,WAAW,SAAS,gBAAgB;AAAA,EAAA;AAGzE,SAAO,EAAE,YAAY,cAAc,sBAAsB,SAAA;AAC3D;;"}
@@ -0,0 +1,68 @@
1
+ import { computed, toValue, ref, watch, onBeforeUnmount } from "vue";
2
+ function useContadorSessao(expiraEm, opcoes = {}) {
3
+ const minutosAlerta = opcoes.minutosAlerta ?? 5;
4
+ const expiracaoMs = computed(() => {
5
+ const v = toValue(expiraEm);
6
+ if (v instanceof Date) return v.getTime();
7
+ if (typeof v === "number" && Number.isFinite(v)) return v;
8
+ return null;
9
+ });
10
+ const restanteMs = ref(null);
11
+ let intervalo = null;
12
+ let expirouEmitido = false;
13
+ function parar() {
14
+ if (intervalo === null) return;
15
+ window.clearInterval(intervalo);
16
+ intervalo = null;
17
+ }
18
+ function tick() {
19
+ var _a;
20
+ if (expiracaoMs.value === null) {
21
+ restanteMs.value = null;
22
+ return;
23
+ }
24
+ const restante = expiracaoMs.value - Date.now();
25
+ restanteMs.value = Math.max(0, restante);
26
+ if (restante <= 0) {
27
+ parar();
28
+ if (!expirouEmitido) {
29
+ expirouEmitido = true;
30
+ (_a = opcoes.aoExpirar) == null ? void 0 : _a.call(opcoes);
31
+ }
32
+ }
33
+ }
34
+ watch(
35
+ expiracaoMs,
36
+ (novo) => {
37
+ parar();
38
+ expirouEmitido = false;
39
+ if (novo === null) {
40
+ restanteMs.value = null;
41
+ return;
42
+ }
43
+ tick();
44
+ intervalo = window.setInterval(tick, 1e3);
45
+ },
46
+ { immediate: true }
47
+ );
48
+ onBeforeUnmount(parar);
49
+ const doisDigitos = (n) => String(n).padStart(2, "0");
50
+ const horasMinutos = computed(() => {
51
+ if (restanteMs.value === null) return "--";
52
+ const totalSegundos = Math.floor(restanteMs.value / 1e3);
53
+ return `${doisDigitos(Math.floor(totalSegundos / 3600))}:${doisDigitos(Math.floor(totalSegundos % 3600 / 60))}`;
54
+ });
55
+ const horasMinutosSegundos = computed(() => {
56
+ if (restanteMs.value === null) return "--";
57
+ const s = Math.floor(restanteMs.value / 1e3);
58
+ return `${doisDigitos(Math.floor(s / 3600))}:${doisDigitos(Math.floor(s % 3600 / 60))}:${doisDigitos(s % 60)}`;
59
+ });
60
+ const emAlerta = computed(
61
+ () => restanteMs.value !== null && restanteMs.value <= minutosAlerta * 6e4
62
+ );
63
+ return { restanteMs, horasMinutos, horasMinutosSegundos, emAlerta };
64
+ }
65
+ export {
66
+ useContadorSessao
67
+ };
68
+ //# sourceMappingURL=index95.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index95.mjs","sources":["../src/hooks/use-contador-sessao.ts"],"sourcesContent":["import { computed, onBeforeUnmount, ref, toValue, watch, type MaybeRefOrGetter } from 'vue'\n\nexport interface OpcoesContadorSessao {\n /** Minutos restantes a partir dos quais `emAlerta` fica true. Default 5. */\n minutosAlerta?: number\n /** Chamado UMA vez quando o tempo zera. */\n aoExpirar?: () => void\n}\n\n/**\n * Contagem regressiva de sessão a partir de um instante de expiração.\n * Aceita epoch em MILISSEGUNDOS ou `Date` (de um JWT: `exp * 1000`).\n * Reativo — reinicia sozinho quando `expiraEm` muda; limpa o intervalo no unmount.\n *\n * @example\n * const { horasMinutos, emAlerta } = useContadorSessao(() => usuario.value?.exp ? usuario.value.exp * 1000 : null)\n */\nexport function useContadorSessao(\n expiraEm: MaybeRefOrGetter<number | Date | null | undefined>,\n opcoes: OpcoesContadorSessao = {},\n) {\n const minutosAlerta = opcoes.minutosAlerta ?? 5\n\n const expiracaoMs = computed<number | null>(() => {\n const v = toValue(expiraEm)\n if (v instanceof Date) return v.getTime()\n if (typeof v === 'number' && Number.isFinite(v)) return v\n return null\n })\n\n const restanteMs = ref<number | null>(null)\n let intervalo: number | null = null\n let expirouEmitido = false\n\n function parar(): void {\n if (intervalo === null) return\n window.clearInterval(intervalo)\n intervalo = null\n }\n\n function tick(): void {\n if (expiracaoMs.value === null) {\n restanteMs.value = null\n return\n }\n const restante = expiracaoMs.value - Date.now()\n restanteMs.value = Math.max(0, restante)\n if (restante <= 0) {\n parar()\n if (!expirouEmitido) {\n expirouEmitido = true\n opcoes.aoExpirar?.()\n }\n }\n }\n\n watch(\n expiracaoMs,\n (novo) => {\n parar()\n expirouEmitido = false\n if (novo === null) {\n restanteMs.value = null\n return\n }\n tick()\n intervalo = window.setInterval(tick, 1000)\n },\n { immediate: true },\n )\n\n onBeforeUnmount(parar)\n\n const doisDigitos = (n: number): string => String(n).padStart(2, '0')\n\n /** Tempo restante em HH:MM (ex.: \"03:42\"). \"--\" quando não há expiração. */\n const horasMinutos = computed(() => {\n if (restanteMs.value === null) return '--'\n const totalSegundos = Math.floor(restanteMs.value / 1000)\n return `${doisDigitos(Math.floor(totalSegundos / 3600))}:${doisDigitos(Math.floor((totalSegundos % 3600) / 60))}`\n })\n\n /** Tempo restante em HH:MM:SS (ex.: \"03:42:07\"). */\n const horasMinutosSegundos = computed(() => {\n if (restanteMs.value === null) return '--'\n const s = Math.floor(restanteMs.value / 1000)\n return `${doisDigitos(Math.floor(s / 3600))}:${doisDigitos(Math.floor((s % 3600) / 60))}:${doisDigitos(s % 60)}`\n })\n\n const emAlerta = computed(\n () => restanteMs.value !== null && restanteMs.value <= minutosAlerta * 60_000,\n )\n\n return { restanteMs, horasMinutos, horasMinutosSegundos, emAlerta }\n}\n"],"names":[],"mappings":";AAiBO,SAAS,kBACd,UACA,SAA+B,IAC/B;AACA,QAAM,gBAAgB,OAAO,iBAAiB;AAE9C,QAAM,cAAc,SAAwB,MAAM;AAChD,UAAM,IAAI,QAAQ,QAAQ;AAC1B,QAAI,aAAa,KAAM,QAAO,EAAE,QAAA;AAChC,QAAI,OAAO,MAAM,YAAY,OAAO,SAAS,CAAC,EAAG,QAAO;AACxD,WAAO;AAAA,EACT,CAAC;AAED,QAAM,aAAa,IAAmB,IAAI;AAC1C,MAAI,YAA2B;AAC/B,MAAI,iBAAiB;AAErB,WAAS,QAAc;AACrB,QAAI,cAAc,KAAM;AACxB,WAAO,cAAc,SAAS;AAC9B,gBAAY;AAAA,EACd;AAEA,WAAS,OAAa;;AACpB,QAAI,YAAY,UAAU,MAAM;AAC9B,iBAAW,QAAQ;AACnB;AAAA,IACF;AACA,UAAM,WAAW,YAAY,QAAQ,KAAK,IAAA;AAC1C,eAAW,QAAQ,KAAK,IAAI,GAAG,QAAQ;AACvC,QAAI,YAAY,GAAG;AACjB,YAAA;AACA,UAAI,CAAC,gBAAgB;AACnB,yBAAiB;AACjB,qBAAO,cAAP;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA;AAAA,IACE;AAAA,IACA,CAAC,SAAS;AACR,YAAA;AACA,uBAAiB;AACjB,UAAI,SAAS,MAAM;AACjB,mBAAW,QAAQ;AACnB;AAAA,MACF;AACA,WAAA;AACA,kBAAY,OAAO,YAAY,MAAM,GAAI;AAAA,IAC3C;AAAA,IACA,EAAE,WAAW,KAAA;AAAA,EAAK;AAGpB,kBAAgB,KAAK;AAErB,QAAM,cAAc,CAAC,MAAsB,OAAO,CAAC,EAAE,SAAS,GAAG,GAAG;AAGpE,QAAM,eAAe,SAAS,MAAM;AAClC,QAAI,WAAW,UAAU,KAAM,QAAO;AACtC,UAAM,gBAAgB,KAAK,MAAM,WAAW,QAAQ,GAAI;AACxD,WAAO,GAAG,YAAY,KAAK,MAAM,gBAAgB,IAAI,CAAC,CAAC,IAAI,YAAY,KAAK,MAAO,gBAAgB,OAAQ,EAAE,CAAC,CAAC;AAAA,EACjH,CAAC;AAGD,QAAM,uBAAuB,SAAS,MAAM;AAC1C,QAAI,WAAW,UAAU,KAAM,QAAO;AACtC,UAAM,IAAI,KAAK,MAAM,WAAW,QAAQ,GAAI;AAC5C,WAAO,GAAG,YAAY,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,IAAI,YAAY,KAAK,MAAO,IAAI,OAAQ,EAAE,CAAC,CAAC,IAAI,YAAY,IAAI,EAAE,CAAC;AAAA,EAChH,CAAC;AAED,QAAM,WAAW;AAAA,IACf,MAAM,WAAW,UAAU,QAAQ,WAAW,SAAS,gBAAgB;AAAA,EAAA;AAGzE,SAAO,EAAE,YAAY,cAAc,sBAAsB,SAAA;AAC3D;"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const filtrosUrlInternos = require("./index180.cjs");
4
+ function useFiltrosNaUrl(filtros, opcoes = {}) {
5
+ const { excluir = [], tipos = {}, prefixo = "", hidratar = true } = opcoes;
6
+ const adaptador = filtrosUrlInternos.criarAdaptador();
7
+ const mapa = filtrosUrlInternos.criarMapa(filtrosUrlInternos.clonarMolde(filtros.value), { excluir, tipos, prefixo });
8
+ function hidratarDaUrl() {
9
+ const alteracoes = filtrosUrlInternos.lerDaUrl(mapa, adaptador.ler(), filtros.value);
10
+ if (Object.keys(alteracoes).length === 0) return false;
11
+ filtros.value = { ...filtros.value, ...alteracoes };
12
+ return true;
13
+ }
14
+ function sincronizar() {
15
+ adaptador.gravar(
16
+ filtrosUrlInternos.escreverNaUrl(mapa, adaptador.ler(), filtros.value),
17
+ "replace"
18
+ );
19
+ }
20
+ function limpar() {
21
+ const params = adaptador.ler();
22
+ for (const caminho of mapa.caminhos) params.delete(mapa.naUrl(caminho));
23
+ adaptador.gravar(params, "replace");
24
+ }
25
+ const hidratou = hidratar ? hidratarDaUrl() : false;
26
+ return { sincronizar, limpar, hidratou };
27
+ }
28
+ exports.useFiltrosNaUrl = useFiltrosNaUrl;
29
+ //# sourceMappingURL=index96.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index96.cjs","sources":["../src/hooks/use-filtros-na-url.ts"],"sourcesContent":["// Filtros de pesquisa na query string — sair da tela e voltar sem perder a busca.\n//\n// O ganho é o de sempre em listagem: a pessoa filtra, abre um registro, volta —\n// e hoje encontra o formulário limpo. Com os filtros na URL ela volta pro que\n// estava vendo, e de brinde consegue mandar o link da pesquisa pra outra pessoa.\n//\n// 🔴 DADO PESSOAL: o que entra aqui entra no histórico do navegador, é colado em\n// conversa, e cai no LOG DE ACESSO do servidor. Filtro de CPF, RG ou nome\n// completo precisa de `excluir`. O default sincroniza tudo porque é o\n// comportamento previsível, mas ele erra pro lado inseguro — leia `excluir`\n// antes de usar em tela com dado de pessoa.\n//\n// ℹ️ Este é o hook de BAIXO NÍVEL: ele guarda e devolve os filtros, e a tela\n// continua dona de quando buscar. Se a tela é o combo `<acai-ui-form>` +\n// `<acai-ui-table>`, prefira `useListagemNaUrl`, que amarra pesquisa, paginação,\n// histórico e cache num pacote só.\n\nimport { type Ref } from 'vue'\nimport {\n clonarMolde,\n criarAdaptador,\n criarMapa,\n escreverNaUrl,\n lerDaUrl,\n type TipoFiltroUrl,\n} from './filtros-url-internos'\n\nexport type { TipoFiltroUrl }\n\nexport interface OpcoesFiltrosNaUrl {\n /**\n * Chaves que NUNCA aparecem na URL. É onde mora dado pessoal (CPF, RG, nome).\n *\n * Simétrico de propósito: a chave excluída também não é LIDA da URL. Se\n * alguém colar `?cpf=...` à mão, o valor é ignorado — senão \"não publicamos\n * isso\" viraria \"não publicamos, mas aceitamos\".\n *\n * Aceita a chave inteira (`'periodo'`) ou uma folha (`'periodo.from'`).\n */\n excluir?: readonly string[]\n /**\n * Tipo declarado por campo, quando o valor inicial não consegue dizer.\n *\n * 🔴 É o que faz o hook servir a formulário de verdade. O padrão dos apps\n * DETRAN é derivar o modelo do request do swagger trocando `undefined` por\n * `null` (os componentes exigem `string | number | null` e `v-model` não\n * compila com `readonly`) — e aí `cargoId: null` não diz que é número, então\n * a URL devolveria `'12'` em vez de `12`, calado, direto pro payload.\n *\n * ```ts\n * useFiltrosNaUrl(formulario, {\n * tipos: { cargoId: 'number', regimeJuridicoId: 'number', progressoMinimo: 'number' },\n * })\n * ```\n *\n * Campo declarado aqui é governado mesmo que não exista no valor inicial —\n * declarar é decisão explícita de quem escreveu a tela, diferente de aceitar\n * chave desconhecida vinda da URL.\n */\n tipos?: Readonly<Record<string, TipoFiltroUrl>>\n /**\n * Prefixo das chaves. Só é necessário quando DUAS listagens convivem na mesma\n * rota e as duas têm um filtro de mesmo nome, que sem prefixo se sobrescrevem.\n */\n prefixo?: string\n /** Ler a URL na entrada. Default `true`. */\n hidratar?: boolean\n}\n\nexport interface FiltrosNaUrl {\n /**\n * Grava o estado atual dos filtros na URL. Chame no `buscar()`, não a cada\n * tecla — senão a URL fica pulando enquanto a pessoa digita.\n *\n * Em tela onde o submit só reposiciona a página e deixa um `watch` buscar,\n * chame na função que de fato dispara a requisição, não no `@submit`.\n */\n sincronizar: () => void\n /** Remove os filtros da URL. Chame no `resetar()`. */\n limpar: () => void\n /**\n * `true` quando a URL trouxe algum filtro na entrada.\n *\n * Em tela que NÃO busca no mount, é o gatilho de restaurar o resultado —\n * senão o formulário volta preenchido com a tabela vazia:\n * `if (hidratou) void pesquisar()`.\n */\n hidratou: boolean\n}\n\n/**\n * Mantém os filtros de pesquisa na query string.\n *\n * Chame no `setup`, ANTES do primeiro `buscar()`: a hidratação é síncrona, então\n * o `onMounted(buscar)` que a tela já tem sai com os filtros da URL e não há\n * segunda requisição.\n *\n * ```ts\n * const filtros = ref(filtrosVistoriaVazios())\n * // `excluir`: CPF na URL vai pro log de acesso do servidor.\n * // `tipos`: campo que nasce `null` não diz que é número.\n * const { sincronizar, limpar } = useFiltrosNaUrl(filtros, {\n * excluir: ['cpf'],\n * tipos: { cargoId: 'number' },\n * })\n *\n * async function buscar(): Promise<void> {\n * sincronizar()\n * await executar(limparCamposVazios(filtros.value))\n * }\n *\n * function resetar(): void {\n * filtros.value = limparModelo(filtros.value)\n * limpar()\n * }\n *\n * onMounted(buscar)\n * ```\n *\n * **Tipos suportados:** string, number, boolean, Date, array de primitivo (chave\n * repetida: `?sort=nome,asc&sort=idade,desc`) e **objeto de um nível** de\n * primitivos, que vira caminho com ponto — `{ periodo: { from, to } }` sai como\n * `?periodo.from=…&periodo.to=…`. É o formato do `<acai-ui-date-range>`, então\n * filtro de período funciona sem o consumidor achatar nada. Dois níveis não.\n *\n * **O tipo sai do valor inicial** do objeto (o \"molde\"), e `tipos` tem\n * precedência sobre ele.\n *\n * **Chave que não está no molde nem em `tipos` é ignorada** — sem isso a URL\n * viraria vetor de injeção (`?size=99999` descendo direto pro `executar()`).\n *\n * ⚠️ A hidratação acontece UMA vez, no `setup`. Voltar/avançar no navegador não\n * repõe o formulário, e a gravação usa `replace` (pesquisa não vira histórico).\n * Quem quer a URL como fonte da verdade — com voltar funcionando e cache — usa\n * `useListagemNaUrl`.\n */\nexport function useFiltrosNaUrl<T extends object>(\n filtros: Ref<T>,\n opcoes: OpcoesFiltrosNaUrl = {},\n): FiltrosNaUrl {\n const { excluir = [], tipos = {}, prefixo = '', hidratar = true } = opcoes\n\n const adaptador = criarAdaptador()\n const mapa = criarMapa(clonarMolde(filtros.value), { excluir, tipos, prefixo })\n\n function hidratarDaUrl(): boolean {\n const alteracoes = lerDaUrl(mapa, adaptador.ler(), filtros.value as Record<string, unknown>)\n if (Object.keys(alteracoes).length === 0) return false\n\n // Um único assign: reatividade dispara uma vez, e a tela nunca observa um\n // estado meio-hidratado.\n filtros.value = { ...filtros.value, ...alteracoes } as T\n return true\n }\n\n function sincronizar(): void {\n // `replace` e não `push`: dez pesquisas não podem virar dez cliques no\n // voltar pra sair da tela.\n adaptador.gravar(\n escreverNaUrl(mapa, adaptador.ler(), filtros.value as Record<string, unknown>),\n 'replace',\n )\n }\n\n function limpar(): void {\n const params = adaptador.ler()\n for (const caminho of mapa.caminhos) params.delete(mapa.naUrl(caminho))\n adaptador.gravar(params, 'replace')\n }\n\n const hidratou = hidratar ? hidratarDaUrl() : false\n\n return { sincronizar, limpar, hidratou }\n}\n"],"names":["criarAdaptador","criarMapa","clonarMolde","lerDaUrl","escreverNaUrl"],"mappings":";;;AAwIO,SAAS,gBACd,SACA,SAA6B,IACf;AACd,QAAM,EAAE,UAAU,CAAA,GAAI,QAAQ,CAAA,GAAI,UAAU,IAAI,WAAW,KAAA,IAAS;AAEpE,QAAM,YAAYA,mBAAAA,eAAA;AAClB,QAAM,OAAOC,6BAAUC,mBAAAA,YAAY,QAAQ,KAAK,GAAG,EAAE,SAAS,OAAO,SAAS;AAE9E,WAAS,gBAAyB;AAChC,UAAM,aAAaC,mBAAAA,SAAS,MAAM,UAAU,IAAA,GAAO,QAAQ,KAAgC;AAC3F,QAAI,OAAO,KAAK,UAAU,EAAE,WAAW,EAAG,QAAO;AAIjD,YAAQ,QAAQ,EAAE,GAAG,QAAQ,OAAO,GAAG,WAAA;AACvC,WAAO;AAAA,EACT;AAEA,WAAS,cAAoB;AAG3B,cAAU;AAAA,MACRC,mBAAAA,cAAc,MAAM,UAAU,IAAA,GAAO,QAAQ,KAAgC;AAAA,MAC7E;AAAA,IAAA;AAAA,EAEJ;AAEA,WAAS,SAAe;AACtB,UAAM,SAAS,UAAU,IAAA;AACzB,eAAW,WAAW,KAAK,SAAU,QAAO,OAAO,KAAK,MAAM,OAAO,CAAC;AACtE,cAAU,OAAO,QAAQ,SAAS;AAAA,EACpC;AAEA,QAAM,WAAW,WAAW,cAAA,IAAkB;AAE9C,SAAO,EAAE,aAAa,QAAQ,SAAA;AAChC;;"}
@@ -0,0 +1,29 @@
1
+ import { criarAdaptador, criarMapa, clonarMolde, lerDaUrl, escreverNaUrl } from "./index180.mjs";
2
+ function useFiltrosNaUrl(filtros, opcoes = {}) {
3
+ const { excluir = [], tipos = {}, prefixo = "", hidratar = true } = opcoes;
4
+ const adaptador = criarAdaptador();
5
+ const mapa = criarMapa(clonarMolde(filtros.value), { excluir, tipos, prefixo });
6
+ function hidratarDaUrl() {
7
+ const alteracoes = lerDaUrl(mapa, adaptador.ler(), filtros.value);
8
+ if (Object.keys(alteracoes).length === 0) return false;
9
+ filtros.value = { ...filtros.value, ...alteracoes };
10
+ return true;
11
+ }
12
+ function sincronizar() {
13
+ adaptador.gravar(
14
+ escreverNaUrl(mapa, adaptador.ler(), filtros.value),
15
+ "replace"
16
+ );
17
+ }
18
+ function limpar() {
19
+ const params = adaptador.ler();
20
+ for (const caminho of mapa.caminhos) params.delete(mapa.naUrl(caminho));
21
+ adaptador.gravar(params, "replace");
22
+ }
23
+ const hidratou = hidratar ? hidratarDaUrl() : false;
24
+ return { sincronizar, limpar, hidratou };
25
+ }
26
+ export {
27
+ useFiltrosNaUrl
28
+ };
29
+ //# sourceMappingURL=index96.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index96.mjs","sources":["../src/hooks/use-filtros-na-url.ts"],"sourcesContent":["// Filtros de pesquisa na query string — sair da tela e voltar sem perder a busca.\n//\n// O ganho é o de sempre em listagem: a pessoa filtra, abre um registro, volta —\n// e hoje encontra o formulário limpo. Com os filtros na URL ela volta pro que\n// estava vendo, e de brinde consegue mandar o link da pesquisa pra outra pessoa.\n//\n// 🔴 DADO PESSOAL: o que entra aqui entra no histórico do navegador, é colado em\n// conversa, e cai no LOG DE ACESSO do servidor. Filtro de CPF, RG ou nome\n// completo precisa de `excluir`. O default sincroniza tudo porque é o\n// comportamento previsível, mas ele erra pro lado inseguro — leia `excluir`\n// antes de usar em tela com dado de pessoa.\n//\n// ℹ️ Este é o hook de BAIXO NÍVEL: ele guarda e devolve os filtros, e a tela\n// continua dona de quando buscar. Se a tela é o combo `<acai-ui-form>` +\n// `<acai-ui-table>`, prefira `useListagemNaUrl`, que amarra pesquisa, paginação,\n// histórico e cache num pacote só.\n\nimport { type Ref } from 'vue'\nimport {\n clonarMolde,\n criarAdaptador,\n criarMapa,\n escreverNaUrl,\n lerDaUrl,\n type TipoFiltroUrl,\n} from './filtros-url-internos'\n\nexport type { TipoFiltroUrl }\n\nexport interface OpcoesFiltrosNaUrl {\n /**\n * Chaves que NUNCA aparecem na URL. É onde mora dado pessoal (CPF, RG, nome).\n *\n * Simétrico de propósito: a chave excluída também não é LIDA da URL. Se\n * alguém colar `?cpf=...` à mão, o valor é ignorado — senão \"não publicamos\n * isso\" viraria \"não publicamos, mas aceitamos\".\n *\n * Aceita a chave inteira (`'periodo'`) ou uma folha (`'periodo.from'`).\n */\n excluir?: readonly string[]\n /**\n * Tipo declarado por campo, quando o valor inicial não consegue dizer.\n *\n * 🔴 É o que faz o hook servir a formulário de verdade. O padrão dos apps\n * DETRAN é derivar o modelo do request do swagger trocando `undefined` por\n * `null` (os componentes exigem `string | number | null` e `v-model` não\n * compila com `readonly`) — e aí `cargoId: null` não diz que é número, então\n * a URL devolveria `'12'` em vez de `12`, calado, direto pro payload.\n *\n * ```ts\n * useFiltrosNaUrl(formulario, {\n * tipos: { cargoId: 'number', regimeJuridicoId: 'number', progressoMinimo: 'number' },\n * })\n * ```\n *\n * Campo declarado aqui é governado mesmo que não exista no valor inicial —\n * declarar é decisão explícita de quem escreveu a tela, diferente de aceitar\n * chave desconhecida vinda da URL.\n */\n tipos?: Readonly<Record<string, TipoFiltroUrl>>\n /**\n * Prefixo das chaves. Só é necessário quando DUAS listagens convivem na mesma\n * rota e as duas têm um filtro de mesmo nome, que sem prefixo se sobrescrevem.\n */\n prefixo?: string\n /** Ler a URL na entrada. Default `true`. */\n hidratar?: boolean\n}\n\nexport interface FiltrosNaUrl {\n /**\n * Grava o estado atual dos filtros na URL. Chame no `buscar()`, não a cada\n * tecla — senão a URL fica pulando enquanto a pessoa digita.\n *\n * Em tela onde o submit só reposiciona a página e deixa um `watch` buscar,\n * chame na função que de fato dispara a requisição, não no `@submit`.\n */\n sincronizar: () => void\n /** Remove os filtros da URL. Chame no `resetar()`. */\n limpar: () => void\n /**\n * `true` quando a URL trouxe algum filtro na entrada.\n *\n * Em tela que NÃO busca no mount, é o gatilho de restaurar o resultado —\n * senão o formulário volta preenchido com a tabela vazia:\n * `if (hidratou) void pesquisar()`.\n */\n hidratou: boolean\n}\n\n/**\n * Mantém os filtros de pesquisa na query string.\n *\n * Chame no `setup`, ANTES do primeiro `buscar()`: a hidratação é síncrona, então\n * o `onMounted(buscar)` que a tela já tem sai com os filtros da URL e não há\n * segunda requisição.\n *\n * ```ts\n * const filtros = ref(filtrosVistoriaVazios())\n * // `excluir`: CPF na URL vai pro log de acesso do servidor.\n * // `tipos`: campo que nasce `null` não diz que é número.\n * const { sincronizar, limpar } = useFiltrosNaUrl(filtros, {\n * excluir: ['cpf'],\n * tipos: { cargoId: 'number' },\n * })\n *\n * async function buscar(): Promise<void> {\n * sincronizar()\n * await executar(limparCamposVazios(filtros.value))\n * }\n *\n * function resetar(): void {\n * filtros.value = limparModelo(filtros.value)\n * limpar()\n * }\n *\n * onMounted(buscar)\n * ```\n *\n * **Tipos suportados:** string, number, boolean, Date, array de primitivo (chave\n * repetida: `?sort=nome,asc&sort=idade,desc`) e **objeto de um nível** de\n * primitivos, que vira caminho com ponto — `{ periodo: { from, to } }` sai como\n * `?periodo.from=…&periodo.to=…`. É o formato do `<acai-ui-date-range>`, então\n * filtro de período funciona sem o consumidor achatar nada. Dois níveis não.\n *\n * **O tipo sai do valor inicial** do objeto (o \"molde\"), e `tipos` tem\n * precedência sobre ele.\n *\n * **Chave que não está no molde nem em `tipos` é ignorada** — sem isso a URL\n * viraria vetor de injeção (`?size=99999` descendo direto pro `executar()`).\n *\n * ⚠️ A hidratação acontece UMA vez, no `setup`. Voltar/avançar no navegador não\n * repõe o formulário, e a gravação usa `replace` (pesquisa não vira histórico).\n * Quem quer a URL como fonte da verdade — com voltar funcionando e cache — usa\n * `useListagemNaUrl`.\n */\nexport function useFiltrosNaUrl<T extends object>(\n filtros: Ref<T>,\n opcoes: OpcoesFiltrosNaUrl = {},\n): FiltrosNaUrl {\n const { excluir = [], tipos = {}, prefixo = '', hidratar = true } = opcoes\n\n const adaptador = criarAdaptador()\n const mapa = criarMapa(clonarMolde(filtros.value), { excluir, tipos, prefixo })\n\n function hidratarDaUrl(): boolean {\n const alteracoes = lerDaUrl(mapa, adaptador.ler(), filtros.value as Record<string, unknown>)\n if (Object.keys(alteracoes).length === 0) return false\n\n // Um único assign: reatividade dispara uma vez, e a tela nunca observa um\n // estado meio-hidratado.\n filtros.value = { ...filtros.value, ...alteracoes } as T\n return true\n }\n\n function sincronizar(): void {\n // `replace` e não `push`: dez pesquisas não podem virar dez cliques no\n // voltar pra sair da tela.\n adaptador.gravar(\n escreverNaUrl(mapa, adaptador.ler(), filtros.value as Record<string, unknown>),\n 'replace',\n )\n }\n\n function limpar(): void {\n const params = adaptador.ler()\n for (const caminho of mapa.caminhos) params.delete(mapa.naUrl(caminho))\n adaptador.gravar(params, 'replace')\n }\n\n const hidratou = hidratar ? hidratarDaUrl() : false\n\n return { sincronizar, limpar, hidratou }\n}\n"],"names":[],"mappings":";AAwIO,SAAS,gBACd,SACA,SAA6B,IACf;AACd,QAAM,EAAE,UAAU,CAAA,GAAI,QAAQ,CAAA,GAAI,UAAU,IAAI,WAAW,KAAA,IAAS;AAEpE,QAAM,YAAY,eAAA;AAClB,QAAM,OAAO,UAAU,YAAY,QAAQ,KAAK,GAAG,EAAE,SAAS,OAAO,SAAS;AAE9E,WAAS,gBAAyB;AAChC,UAAM,aAAa,SAAS,MAAM,UAAU,IAAA,GAAO,QAAQ,KAAgC;AAC3F,QAAI,OAAO,KAAK,UAAU,EAAE,WAAW,EAAG,QAAO;AAIjD,YAAQ,QAAQ,EAAE,GAAG,QAAQ,OAAO,GAAG,WAAA;AACvC,WAAO;AAAA,EACT;AAEA,WAAS,cAAoB;AAG3B,cAAU;AAAA,MACR,cAAc,MAAM,UAAU,IAAA,GAAO,QAAQ,KAAgC;AAAA,MAC7E;AAAA,IAAA;AAAA,EAEJ;AAEA,WAAS,SAAe;AACtB,UAAM,SAAS,UAAU,IAAA;AACzB,eAAW,WAAW,KAAK,SAAU,QAAO,OAAO,KAAK,MAAM,OAAO,CAAC;AACtE,cAAU,OAAO,QAAQ,SAAS;AAAA,EACpC;AAEA,QAAM,WAAW,WAAW,cAAA,IAAkB;AAE9C,SAAO,EAAE,aAAa,QAAQ,SAAA;AAChC;"}