@govbr-ds/webcomponents 2.0.0-next.44 → 2.0.0-next.46

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 (457) hide show
  1. package/dist/cjs/br-avatar.cjs.entry.js +104 -31
  2. package/dist/cjs/br-avatar.cjs.entry.js.map +1 -1
  3. package/dist/cjs/br-avatar.entry.cjs.js.map +1 -1
  4. package/dist/cjs/br-breadcrumb.cjs.entry.js +6 -9
  5. package/dist/cjs/br-breadcrumb.cjs.entry.js.map +1 -1
  6. package/dist/cjs/br-breadcrumb.entry.cjs.js.map +1 -1
  7. package/dist/cjs/br-button.br-icon.entry.cjs.js.map +1 -1
  8. package/dist/cjs/br-button_2.cjs.entry.js +16 -3
  9. package/dist/cjs/br-button_2.cjs.entry.js.map +1 -1
  10. package/dist/cjs/br-card.cjs.entry.js +97 -0
  11. package/dist/cjs/br-card.cjs.entry.js.map +1 -0
  12. package/dist/cjs/br-card.entry.cjs.js.map +1 -0
  13. package/dist/cjs/br-checkbox.cjs.entry.js +8 -13
  14. package/dist/cjs/br-checkbox.cjs.entry.js.map +1 -1
  15. package/dist/cjs/br-checkbox.entry.cjs.js.map +1 -1
  16. package/dist/cjs/br-checkgroup.cjs.entry.js +3 -5
  17. package/dist/cjs/br-checkgroup.cjs.entry.js.map +1 -1
  18. package/dist/cjs/br-checkgroup.entry.cjs.js.map +1 -1
  19. package/dist/cjs/br-collapse.br-list.entry.cjs.js.map +1 -1
  20. package/dist/cjs/br-collapse_2.cjs.entry.js +14 -22
  21. package/dist/cjs/br-collapse_2.cjs.entry.js.map +1 -1
  22. package/dist/cjs/br-divider.cjs.entry.js +2 -3
  23. package/dist/cjs/br-divider.cjs.entry.js.map +1 -1
  24. package/dist/cjs/br-divider.entry.cjs.js.map +1 -1
  25. package/dist/cjs/br-dropdown.cjs.entry.js +14 -21
  26. package/dist/cjs/br-dropdown.cjs.entry.js.map +1 -1
  27. package/dist/cjs/br-dropdown.entry.cjs.js.map +1 -1
  28. package/dist/cjs/br-footer-category.cjs.entry.js +2 -2
  29. package/dist/cjs/br-footer-item.cjs.entry.js +1 -1
  30. package/dist/cjs/br-footer-legal.cjs.entry.js +1 -1
  31. package/dist/cjs/br-footer-logo.cjs.entry.js +1 -1
  32. package/dist/cjs/br-footer-logo.cjs.entry.js.map +1 -1
  33. package/dist/cjs/br-footer-logo.entry.cjs.js.map +1 -1
  34. package/dist/cjs/br-footer-social.cjs.entry.js +1 -1
  35. package/dist/cjs/br-footer.cjs.entry.js +1 -1
  36. package/dist/cjs/br-input.br-radio.entry.cjs.js.map +1 -1
  37. package/dist/cjs/br-input_2.cjs.entry.js +10 -17
  38. package/dist/cjs/br-input_2.cjs.entry.js.map +1 -1
  39. package/dist/cjs/br-item.cjs.entry.js +11 -10
  40. package/dist/cjs/br-item.cjs.entry.js.map +1 -1
  41. package/dist/cjs/br-item.entry.cjs.js.map +1 -1
  42. package/dist/cjs/br-loading.cjs.entry.js +4 -5
  43. package/dist/cjs/br-loading.cjs.entry.js.map +1 -1
  44. package/dist/cjs/br-loading.entry.cjs.js.map +1 -1
  45. package/dist/cjs/br-magic-button.cjs.entry.js +2 -2
  46. package/dist/cjs/br-magic-button.cjs.entry.js.map +1 -1
  47. package/dist/cjs/br-magic-button.entry.cjs.js.map +1 -1
  48. package/dist/cjs/br-message.cjs.entry.js +2 -2
  49. package/dist/cjs/br-message.cjs.entry.js.map +1 -1
  50. package/dist/cjs/br-message.entry.cjs.js.map +1 -1
  51. package/dist/cjs/br-scrim.cjs.entry.js +17 -29
  52. package/dist/cjs/br-scrim.cjs.entry.js.map +1 -1
  53. package/dist/cjs/br-scrim.entry.cjs.js.map +1 -1
  54. package/dist/cjs/br-select.cjs.entry.js +16 -20
  55. package/dist/cjs/br-select.cjs.entry.js.map +1 -1
  56. package/dist/cjs/br-select.entry.cjs.js.map +1 -1
  57. package/dist/cjs/br-step-item.cjs.entry.js +14 -27
  58. package/dist/cjs/br-step-item.cjs.entry.js.map +1 -1
  59. package/dist/cjs/br-step-item.entry.cjs.js.map +1 -1
  60. package/dist/cjs/br-step.cjs.entry.js +21 -32
  61. package/dist/cjs/br-step.cjs.entry.js.map +1 -1
  62. package/dist/cjs/br-step.entry.cjs.js.map +1 -1
  63. package/dist/cjs/br-switch.cjs.entry.js +4 -7
  64. package/dist/cjs/br-switch.cjs.entry.js.map +1 -1
  65. package/dist/cjs/br-switch.entry.cjs.js.map +1 -1
  66. package/dist/cjs/br-tab-item.cjs.entry.js +2 -2
  67. package/dist/cjs/br-tab-item.cjs.entry.js.map +1 -1
  68. package/dist/cjs/br-tab-item.entry.cjs.js.map +1 -1
  69. package/dist/cjs/br-tab.cjs.entry.js +4 -5
  70. package/dist/cjs/br-tab.cjs.entry.js.map +1 -1
  71. package/dist/cjs/br-tab.entry.cjs.js.map +1 -1
  72. package/dist/cjs/br-table-cell.cjs.entry.js +1 -1
  73. package/dist/cjs/br-table-header-cell.cjs.entry.js +1 -1
  74. package/dist/cjs/br-table-header-row.cjs.entry.js +1 -1
  75. package/dist/cjs/br-table-row.cjs.entry.js +1 -1
  76. package/dist/cjs/br-table.cjs.entry.js +1 -1
  77. package/dist/cjs/br-tag.cjs.entry.js +2 -2
  78. package/dist/cjs/br-textarea.cjs.entry.js +8 -15
  79. package/dist/cjs/br-textarea.cjs.entry.js.map +1 -1
  80. package/dist/cjs/br-textarea.entry.cjs.js.map +1 -1
  81. package/dist/cjs/br-tooltip.cjs.entry.js +18 -28
  82. package/dist/cjs/br-tooltip.cjs.entry.js.map +1 -1
  83. package/dist/cjs/br-tooltip.entry.cjs.js.map +1 -1
  84. package/dist/cjs/br-upload.cjs.entry.js +2 -3
  85. package/dist/cjs/br-upload.cjs.entry.js.map +1 -1
  86. package/dist/cjs/br-upload.entry.cjs.js.map +1 -1
  87. package/dist/cjs/index-DNnn1o_9.js +4 -0
  88. package/dist/cjs/loader.cjs.js +1 -1
  89. package/dist/cjs/webcomponents.cjs.js +1 -1
  90. package/dist/collection/collection-manifest.json +1 -0
  91. package/dist/collection/components/avatar/avatar.css +1 -1
  92. package/dist/collection/components/avatar/avatar.js +120 -85
  93. package/dist/collection/components/avatar/avatar.js.map +1 -1
  94. package/dist/collection/components/breadcrumb/breadcrumb.css +1 -1
  95. package/dist/collection/components/breadcrumb/breadcrumb.js +5 -8
  96. package/dist/collection/components/breadcrumb/breadcrumb.js.map +1 -1
  97. package/dist/collection/components/button/button.css +1 -1
  98. package/dist/collection/components/button/button.js +1 -1
  99. package/dist/collection/components/card/card.css +1 -0
  100. package/dist/collection/components/card/card.js +166 -0
  101. package/dist/collection/components/card/card.js.map +1 -0
  102. package/dist/collection/components/checkbox/checkbox.js +8 -13
  103. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  104. package/dist/collection/components/checkgroup/checkgroup.js +3 -5
  105. package/dist/collection/components/checkgroup/checkgroup.js.map +1 -1
  106. package/dist/collection/components/collapse/collapse.js +11 -18
  107. package/dist/collection/components/collapse/collapse.js.map +1 -1
  108. package/dist/collection/components/divider/divider.js +2 -3
  109. package/dist/collection/components/divider/divider.js.map +1 -1
  110. package/dist/collection/components/dropdown/dropdown.js +14 -21
  111. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  112. package/dist/collection/components/footer/footer.js +1 -1
  113. package/dist/collection/components/footer-category/footer-category.js +2 -2
  114. package/dist/collection/components/footer-item/footer-item.js +1 -1
  115. package/dist/collection/components/footer-legal/footer-legal.js +1 -1
  116. package/dist/collection/components/footer-logo/footer-logo.js +1 -1
  117. package/dist/collection/components/footer-logo/footer-logo.js.map +1 -1
  118. package/dist/collection/components/footer-social/footer-social.js +1 -1
  119. package/dist/collection/components/icon/icon.js +42 -1
  120. package/dist/collection/components/icon/icon.js.map +1 -1
  121. package/dist/collection/components/input/input.js +4 -7
  122. package/dist/collection/components/input/input.js.map +1 -1
  123. package/dist/collection/components/item/item.js +11 -10
  124. package/dist/collection/components/item/item.js.map +1 -1
  125. package/dist/collection/components/list/list.js +3 -4
  126. package/dist/collection/components/list/list.js.map +1 -1
  127. package/dist/collection/components/loading/loading.css +1 -1
  128. package/dist/collection/components/loading/loading.js +3 -4
  129. package/dist/collection/components/loading/loading.js.map +1 -1
  130. package/dist/collection/components/magic-button/magic-button.css +1 -1
  131. package/dist/collection/components/magic-button/magic-button.js +1 -1
  132. package/dist/collection/components/magic-button/magic-button.js.map +1 -1
  133. package/dist/collection/components/message/message.css +1 -1
  134. package/dist/collection/components/message/message.js +1 -1
  135. package/dist/collection/components/message/message.js.map +1 -1
  136. package/dist/collection/components/radio/radio.js +6 -10
  137. package/dist/collection/components/radio/radio.js.map +1 -1
  138. package/dist/collection/components/scrim/scrim.js +17 -29
  139. package/dist/collection/components/scrim/scrim.js.map +1 -1
  140. package/dist/collection/components/select/select.js +16 -20
  141. package/dist/collection/components/select/select.js.map +1 -1
  142. package/dist/collection/components/step/step.js +21 -32
  143. package/dist/collection/components/step/step.js.map +1 -1
  144. package/dist/collection/components/step-item/step-item.js +14 -27
  145. package/dist/collection/components/step-item/step-item.js.map +1 -1
  146. package/dist/collection/components/switch/switch.js +4 -7
  147. package/dist/collection/components/switch/switch.js.map +1 -1
  148. package/dist/collection/components/tab/tab.css +1 -1
  149. package/dist/collection/components/tab/tab.js +3 -4
  150. package/dist/collection/components/tab/tab.js.map +1 -1
  151. package/dist/collection/components/tab-item/tab-item.css +1 -1
  152. package/dist/collection/components/tab-item/tab-item.js +1 -1
  153. package/dist/collection/components/table/table.js +1 -1
  154. package/dist/collection/components/table-cell/table-cell.js +1 -1
  155. package/dist/collection/components/table-header-cell/table-header-cell.js +1 -1
  156. package/dist/collection/components/table-header-row/table-header-row.js +1 -1
  157. package/dist/collection/components/table-row/table-row.js +1 -1
  158. package/dist/collection/components/tag/tag.js +2 -2
  159. package/dist/collection/components/textarea/textarea.js +8 -15
  160. package/dist/collection/components/textarea/textarea.js.map +1 -1
  161. package/dist/collection/components/tooltip/tooltip.js +8 -12
  162. package/dist/collection/components/tooltip/tooltip.js.map +1 -1
  163. package/dist/collection/components/upload/upload.js +2 -3
  164. package/dist/collection/components/upload/upload.js.map +1 -1
  165. package/dist/collection/pages/components/card/index.js +18 -0
  166. package/dist/collection/pages/scripts/menu.js +13 -0
  167. package/dist/collection/utils/floating-ui.js +10 -16
  168. package/dist/collection/utils/floating-ui.js.map +1 -1
  169. package/dist/components/br-avatar.js +117 -69
  170. package/dist/components/br-avatar.js.map +1 -1
  171. package/dist/components/br-breadcrumb.js +22 -25
  172. package/dist/components/br-breadcrumb.js.map +1 -1
  173. package/dist/components/br-button.js +3 -3
  174. package/dist/components/br-card.d.ts +11 -0
  175. package/dist/components/br-card.js +141 -0
  176. package/dist/components/br-card.js.map +1 -0
  177. package/dist/components/br-checkbox.js +1 -1
  178. package/dist/components/br-checkgroup.js +15 -17
  179. package/dist/components/br-checkgroup.js.map +1 -1
  180. package/dist/components/br-collapse.js +1 -1
  181. package/dist/components/br-divider.js +1 -1
  182. package/dist/components/br-dropdown.js +31 -39
  183. package/dist/components/br-dropdown.js.map +1 -1
  184. package/dist/components/br-footer-category.js +9 -9
  185. package/dist/components/br-footer-item.js +4 -4
  186. package/dist/components/br-footer-legal.js +3 -3
  187. package/dist/components/br-footer-logo.js +8 -7
  188. package/dist/components/br-footer-logo.js.map +1 -1
  189. package/dist/components/br-footer-social.js +5 -5
  190. package/dist/components/br-footer.js +15 -15
  191. package/dist/components/br-icon.js +1 -1
  192. package/dist/components/br-input.js +3 -3
  193. package/dist/components/br-item.js +3 -3
  194. package/dist/components/br-list.js +4 -4
  195. package/dist/components/br-loading.js +7 -6
  196. package/dist/components/br-loading.js.map +1 -1
  197. package/dist/components/br-magic-button.js +10 -9
  198. package/dist/components/br-magic-button.js.map +1 -1
  199. package/dist/components/br-message.js +12 -10
  200. package/dist/components/br-message.js.map +1 -1
  201. package/dist/components/br-radio.js +4 -4
  202. package/dist/components/br-scrim.js +44 -57
  203. package/dist/components/br-scrim.js.map +1 -1
  204. package/dist/components/br-select.js +41 -46
  205. package/dist/components/br-select.js.map +1 -1
  206. package/dist/components/br-step-item.js +36 -50
  207. package/dist/components/br-step-item.js.map +1 -1
  208. package/dist/components/br-step.js +30 -42
  209. package/dist/components/br-step.js.map +1 -1
  210. package/dist/components/br-switch.js +17 -21
  211. package/dist/components/br-switch.js.map +1 -1
  212. package/dist/components/br-tab-item.js +10 -10
  213. package/dist/components/br-tab.js +15 -16
  214. package/dist/components/br-tab.js.map +1 -1
  215. package/dist/components/br-table-cell.js +3 -3
  216. package/dist/components/br-table-header-cell.js +3 -3
  217. package/dist/components/br-table-header-row.js +3 -3
  218. package/dist/components/br-table-row.js +3 -3
  219. package/dist/components/br-table.js +6 -6
  220. package/dist/components/br-tag.js +8 -8
  221. package/dist/components/br-textarea.js +30 -37
  222. package/dist/components/br-textarea.js.map +1 -1
  223. package/dist/components/br-tooltip.js +111 -125
  224. package/dist/components/br-tooltip.js.map +1 -1
  225. package/dist/components/br-upload.js +14 -15
  226. package/dist/components/br-upload.js.map +1 -1
  227. package/dist/components/index.d.ts +2 -0
  228. package/dist/components/index.js +2 -0
  229. package/dist/components/{p-CwEkkt16.js → p-BUfNFi9N.js} +39 -47
  230. package/dist/components/p-BUfNFi9N.js.map +1 -0
  231. package/dist/components/{p-BU5QW70m.js → p-BlryBljm.js} +28 -33
  232. package/dist/components/p-BlryBljm.js.map +1 -0
  233. package/dist/components/{p-0V7YvY_S.js → p-CYtPDYp6.js} +22 -6
  234. package/dist/components/p-CYtPDYp6.js.map +1 -0
  235. package/dist/components/{p-1eKV5oxP.js → p-D0wwETCp.js} +8 -9
  236. package/dist/components/p-D0wwETCp.js.map +1 -0
  237. package/dist/components/{p-B3u7t9TB.js → p-DZhiQXGc.js} +13 -18
  238. package/dist/components/p-DZhiQXGc.js.map +1 -0
  239. package/dist/components/{p-DqQ_qkzV.js → p-DhONBlJ-.js} +6 -7
  240. package/dist/components/p-DhONBlJ-.js.map +1 -0
  241. package/dist/components/{p-DtU3ZpAC.js → p-DvuyuK9Y.js} +20 -26
  242. package/dist/components/{p-DtU3ZpAC.js.map → p-DvuyuK9Y.js.map} +1 -1
  243. package/dist/components/{p-DoUCJxLj.js → p-ssSt5UuQ.js} +6 -6
  244. package/dist/components/{p-B-uKqjsz.js → p-y6TZslWo.js} +21 -26
  245. package/dist/components/p-y6TZslWo.js.map +1 -0
  246. package/dist/custom-docs/output-docs.js +3 -5
  247. package/dist/custom-docs/output-docs.js.map +1 -1
  248. package/dist/custom-docs/path.js +1 -2
  249. package/dist/custom-docs/path.js.map +1 -1
  250. package/dist/custom-elements.json +341 -70
  251. package/dist/esm/br-avatar.entry.js +104 -31
  252. package/dist/esm/br-avatar.entry.js.map +1 -1
  253. package/dist/esm/br-breadcrumb.entry.js +6 -9
  254. package/dist/esm/br-breadcrumb.entry.js.map +1 -1
  255. package/dist/esm/br-button.br-icon.entry.js.map +1 -1
  256. package/dist/esm/br-button_2.entry.js +16 -3
  257. package/dist/esm/br-button_2.entry.js.map +1 -1
  258. package/dist/esm/br-card.entry.js +95 -0
  259. package/dist/esm/br-card.entry.js.map +1 -0
  260. package/dist/esm/br-checkbox.entry.js +8 -13
  261. package/dist/esm/br-checkbox.entry.js.map +1 -1
  262. package/dist/esm/br-checkgroup.entry.js +3 -5
  263. package/dist/esm/br-checkgroup.entry.js.map +1 -1
  264. package/dist/esm/br-collapse.br-list.entry.js.map +1 -1
  265. package/dist/esm/br-collapse_2.entry.js +14 -22
  266. package/dist/esm/br-collapse_2.entry.js.map +1 -1
  267. package/dist/esm/br-divider.entry.js +2 -3
  268. package/dist/esm/br-divider.entry.js.map +1 -1
  269. package/dist/esm/br-dropdown.entry.js +14 -21
  270. package/dist/esm/br-dropdown.entry.js.map +1 -1
  271. package/dist/esm/br-footer-category.entry.js +2 -2
  272. package/dist/esm/br-footer-item.entry.js +1 -1
  273. package/dist/esm/br-footer-legal.entry.js +1 -1
  274. package/dist/esm/br-footer-logo.entry.js +1 -1
  275. package/dist/esm/br-footer-logo.entry.js.map +1 -1
  276. package/dist/esm/br-footer-social.entry.js +1 -1
  277. package/dist/esm/br-footer.entry.js +1 -1
  278. package/dist/esm/br-input.br-radio.entry.js.map +1 -1
  279. package/dist/esm/br-input_2.entry.js +10 -17
  280. package/dist/esm/br-input_2.entry.js.map +1 -1
  281. package/dist/esm/br-item.entry.js +11 -10
  282. package/dist/esm/br-item.entry.js.map +1 -1
  283. package/dist/esm/br-loading.entry.js +4 -5
  284. package/dist/esm/br-loading.entry.js.map +1 -1
  285. package/dist/esm/br-magic-button.entry.js +2 -2
  286. package/dist/esm/br-magic-button.entry.js.map +1 -1
  287. package/dist/esm/br-message.entry.js +2 -2
  288. package/dist/esm/br-message.entry.js.map +1 -1
  289. package/dist/esm/br-scrim.entry.js +17 -29
  290. package/dist/esm/br-scrim.entry.js.map +1 -1
  291. package/dist/esm/br-select.entry.js +16 -20
  292. package/dist/esm/br-select.entry.js.map +1 -1
  293. package/dist/esm/br-step-item.entry.js +14 -27
  294. package/dist/esm/br-step-item.entry.js.map +1 -1
  295. package/dist/esm/br-step.entry.js +21 -32
  296. package/dist/esm/br-step.entry.js.map +1 -1
  297. package/dist/esm/br-switch.entry.js +4 -7
  298. package/dist/esm/br-switch.entry.js.map +1 -1
  299. package/dist/esm/br-tab-item.entry.js +2 -2
  300. package/dist/esm/br-tab-item.entry.js.map +1 -1
  301. package/dist/esm/br-tab.entry.js +4 -5
  302. package/dist/esm/br-tab.entry.js.map +1 -1
  303. package/dist/esm/br-table-cell.entry.js +1 -1
  304. package/dist/esm/br-table-header-cell.entry.js +1 -1
  305. package/dist/esm/br-table-header-row.entry.js +1 -1
  306. package/dist/esm/br-table-row.entry.js +1 -1
  307. package/dist/esm/br-table.entry.js +1 -1
  308. package/dist/esm/br-tag.entry.js +2 -2
  309. package/dist/esm/br-textarea.entry.js +8 -15
  310. package/dist/esm/br-textarea.entry.js.map +1 -1
  311. package/dist/esm/br-tooltip.entry.js +18 -28
  312. package/dist/esm/br-tooltip.entry.js.map +1 -1
  313. package/dist/esm/br-upload.entry.js +2 -3
  314. package/dist/esm/br-upload.entry.js.map +1 -1
  315. package/dist/esm/index-DmA0bHaX.js +4 -0
  316. package/dist/esm/loader.js +1 -1
  317. package/dist/esm/webcomponents.js +1 -1
  318. package/dist/hydrate/index.js +428 -350
  319. package/dist/hydrate/index.mjs +428 -350
  320. package/dist/types/components/avatar/avatar.d.ts +63 -27
  321. package/dist/types/components/card/card.d.ts +44 -0
  322. package/dist/types/components/icon/icon.d.ts +35 -0
  323. package/dist/types/components.d.ts +87 -32
  324. package/dist/webcomponents/br-avatar.entry.esm.js.map +1 -1
  325. package/dist/webcomponents/br-breadcrumb.entry.esm.js.map +1 -1
  326. package/dist/webcomponents/br-button.br-icon.entry.esm.js.map +1 -1
  327. package/dist/webcomponents/br-card.entry.esm.js.map +1 -0
  328. package/dist/webcomponents/br-checkbox.entry.esm.js.map +1 -1
  329. package/dist/webcomponents/br-checkgroup.entry.esm.js.map +1 -1
  330. package/dist/webcomponents/br-collapse.br-list.entry.esm.js.map +1 -1
  331. package/dist/webcomponents/br-divider.entry.esm.js.map +1 -1
  332. package/dist/webcomponents/br-dropdown.entry.esm.js.map +1 -1
  333. package/dist/webcomponents/br-footer-logo.entry.esm.js.map +1 -1
  334. package/dist/webcomponents/br-input.br-radio.entry.esm.js.map +1 -1
  335. package/dist/webcomponents/br-item.entry.esm.js.map +1 -1
  336. package/dist/webcomponents/br-loading.entry.esm.js.map +1 -1
  337. package/dist/webcomponents/br-magic-button.entry.esm.js.map +1 -1
  338. package/dist/webcomponents/br-message.entry.esm.js.map +1 -1
  339. package/dist/webcomponents/br-scrim.entry.esm.js.map +1 -1
  340. package/dist/webcomponents/br-select.entry.esm.js.map +1 -1
  341. package/dist/webcomponents/br-step-item.entry.esm.js.map +1 -1
  342. package/dist/webcomponents/br-step.entry.esm.js.map +1 -1
  343. package/dist/webcomponents/br-switch.entry.esm.js.map +1 -1
  344. package/dist/webcomponents/br-tab-item.entry.esm.js.map +1 -1
  345. package/dist/webcomponents/br-tab.entry.esm.js.map +1 -1
  346. package/dist/webcomponents/br-textarea.entry.esm.js.map +1 -1
  347. package/dist/webcomponents/br-tooltip.entry.esm.js.map +1 -1
  348. package/dist/webcomponents/br-upload.entry.esm.js.map +1 -1
  349. package/dist/webcomponents/{p-b16a7896.entry.js → p-096b0875.entry.js} +28 -40
  350. package/dist/webcomponents/{p-b16a7896.entry.js.map → p-096b0875.entry.js.map} +1 -1
  351. package/dist/webcomponents/{p-8b4d5bf1.entry.js → p-0b45efc3.entry.js} +7 -5
  352. package/dist/webcomponents/p-0b45efc3.entry.js.map +1 -0
  353. package/dist/webcomponents/{p-64545afe.entry.js → p-0fe0dcc1.entry.js} +5 -5
  354. package/dist/webcomponents/{p-744eb116.entry.js → p-16f8e426.entry.js} +15 -15
  355. package/dist/webcomponents/{p-67e47dd0.entry.js → p-1d018f30.entry.js} +4 -4
  356. package/dist/webcomponents/{p-d7a4225f.entry.js → p-22682cde.entry.js} +19 -24
  357. package/dist/webcomponents/p-22682cde.entry.js.map +1 -0
  358. package/dist/webcomponents/{p-c966ab17.entry.js → p-24f6adad.entry.js} +28 -35
  359. package/dist/webcomponents/p-24f6adad.entry.js.map +1 -0
  360. package/dist/webcomponents/{p-4f41615a.entry.js → p-2a407917.entry.js} +7 -7
  361. package/dist/webcomponents/{p-d7265a28.entry.js → p-3615200c.entry.js} +11 -10
  362. package/dist/webcomponents/p-3615200c.entry.js.map +1 -0
  363. package/dist/webcomponents/{p-0d46ca85.entry.js → p-46f1f54c.entry.js} +25 -30
  364. package/dist/webcomponents/p-46f1f54c.entry.js.map +1 -0
  365. package/dist/webcomponents/{p-07f5518d.entry.js → p-4b3042fb.entry.js} +44 -53
  366. package/dist/webcomponents/p-4b3042fb.entry.js.map +1 -0
  367. package/dist/webcomponents/{p-db84202e.entry.js → p-502c9692.entry.js} +4 -4
  368. package/dist/webcomponents/{p-6fcaf560.entry.js → p-62ac038c.entry.js} +44 -57
  369. package/dist/webcomponents/p-62ac038c.entry.js.map +1 -0
  370. package/dist/webcomponents/{p-59f07375.entry.js → p-70d4da25.entry.js} +10 -10
  371. package/dist/webcomponents/{p-b7c58efc.entry.js → p-761f7798.entry.js} +7 -7
  372. package/dist/webcomponents/{p-df308ecd.entry.js → p-83df407a.entry.js} +15 -17
  373. package/dist/webcomponents/p-83df407a.entry.js.map +1 -0
  374. package/dist/webcomponents/{p-25addf8c.entry.js → p-88bfa633.entry.js} +4 -4
  375. package/dist/webcomponents/{p-08702123.entry.js → p-8ab5744a.entry.js} +18 -24
  376. package/dist/webcomponents/{p-08702123.entry.js.map → p-8ab5744a.entry.js.map} +1 -1
  377. package/dist/webcomponents/{p-8dba2e0e.entry.js → p-8b15dfc8.entry.js} +114 -128
  378. package/dist/webcomponents/p-8b15dfc8.entry.js.map +1 -0
  379. package/dist/webcomponents/{p-02d3c9c1.entry.js → p-8b24abe6.entry.js} +40 -50
  380. package/dist/webcomponents/p-8b24abe6.entry.js.map +1 -0
  381. package/dist/webcomponents/{p-2190e7a9.entry.js → p-90abf633.entry.js} +5 -6
  382. package/dist/webcomponents/p-90abf633.entry.js.map +1 -0
  383. package/dist/webcomponents/{p-1457ba7e.entry.js → p-94afd91b.entry.js} +10 -9
  384. package/dist/webcomponents/p-94afd91b.entry.js.map +1 -0
  385. package/dist/webcomponents/{p-fb3e3276.entry.js → p-9ed0a45f.entry.js} +9 -8
  386. package/dist/webcomponents/p-9ed0a45f.entry.js.map +1 -0
  387. package/dist/webcomponents/{p-a9af8d3e.entry.js → p-a802ca08.entry.js} +13 -14
  388. package/dist/webcomponents/p-a802ca08.entry.js.map +1 -0
  389. package/dist/webcomponents/{p-e5b33b7e.entry.js → p-abf81334.entry.js} +15 -19
  390. package/dist/webcomponents/{p-e5b33b7e.entry.js.map → p-abf81334.entry.js.map} +1 -1
  391. package/dist/webcomponents/{p-a06b7d9d.entry.js → p-ac4ce40c.entry.js} +30 -44
  392. package/dist/webcomponents/{p-a06b7d9d.entry.js.map → p-ac4ce40c.entry.js.map} +1 -1
  393. package/dist/webcomponents/{p-f7a210a8.entry.js → p-b565e6e5.entry.js} +4 -4
  394. package/dist/webcomponents/{p-33ab56d5.entry.js → p-b600b95e.entry.js} +18 -21
  395. package/dist/webcomponents/p-b600b95e.entry.js.map +1 -0
  396. package/dist/webcomponents/{p-41443414.entry.js → p-bbd38dd7.entry.js} +4 -4
  397. package/dist/webcomponents/{p-cbaac66c.entry.js → p-cac6afba.entry.js} +29 -37
  398. package/dist/webcomponents/{p-cbaac66c.entry.js.map → p-cac6afba.entry.js.map} +1 -1
  399. package/dist/webcomponents/{p-ac0f37e9.entry.js → p-d549a87b.entry.js} +4 -4
  400. package/dist/webcomponents/{p-51cc97aa.entry.js → p-deb094fb.entry.js} +4 -4
  401. package/dist/webcomponents/{p-3350d161.entry.js → p-df6e707a.entry.js} +116 -66
  402. package/dist/webcomponents/p-df6e707a.entry.js.map +1 -0
  403. package/dist/webcomponents/p-ee9fe4a2.entry.js +119 -0
  404. package/dist/webcomponents/p-ee9fe4a2.entry.js.map +1 -0
  405. package/dist/webcomponents/{p-238a6399.entry.js → p-f1738ae0.entry.js} +16 -17
  406. package/dist/webcomponents/p-f1738ae0.entry.js.map +1 -0
  407. package/dist/webcomponents/{p-9e1743b6.entry.js → p-fa0aeb0f.entry.js} +23 -8
  408. package/dist/webcomponents/p-fa0aeb0f.entry.js.map +1 -0
  409. package/dist/webcomponents/webcomponents.esm.js +15 -15
  410. package/dist/webcomponents.html-custom-data.json +15 -6
  411. package/package.json +1 -1
  412. package/dist/cjs/tslib.es6-CF44W9Bn.js +0 -42
  413. package/dist/cjs/tslib.es6-CF44W9Bn.js.map +0 -1
  414. package/dist/components/p-0V7YvY_S.js.map +0 -1
  415. package/dist/components/p-1eKV5oxP.js.map +0 -1
  416. package/dist/components/p-B-uKqjsz.js.map +0 -1
  417. package/dist/components/p-B3u7t9TB.js.map +0 -1
  418. package/dist/components/p-BU5QW70m.js.map +0 -1
  419. package/dist/components/p-CwEkkt16.js.map +0 -1
  420. package/dist/components/p-DIPMDb5E.js +0 -55
  421. package/dist/components/p-DIPMDb5E.js.map +0 -1
  422. package/dist/components/p-DqQ_qkzV.js.map +0 -1
  423. package/dist/esm/tslib.es6-DIPMDb5E.js +0 -40
  424. package/dist/esm/tslib.es6-DIPMDb5E.js.map +0 -1
  425. package/dist/webcomponents/p-02d3c9c1.entry.js.map +0 -1
  426. package/dist/webcomponents/p-07f5518d.entry.js.map +0 -1
  427. package/dist/webcomponents/p-0d46ca85.entry.js.map +0 -1
  428. package/dist/webcomponents/p-1457ba7e.entry.js.map +0 -1
  429. package/dist/webcomponents/p-2190e7a9.entry.js.map +0 -1
  430. package/dist/webcomponents/p-238a6399.entry.js.map +0 -1
  431. package/dist/webcomponents/p-3350d161.entry.js.map +0 -1
  432. package/dist/webcomponents/p-33ab56d5.entry.js.map +0 -1
  433. package/dist/webcomponents/p-6fcaf560.entry.js.map +0 -1
  434. package/dist/webcomponents/p-8b4d5bf1.entry.js.map +0 -1
  435. package/dist/webcomponents/p-8dba2e0e.entry.js.map +0 -1
  436. package/dist/webcomponents/p-9e1743b6.entry.js.map +0 -1
  437. package/dist/webcomponents/p-DIPMDb5E.js +0 -55
  438. package/dist/webcomponents/p-DIPMDb5E.js.map +0 -1
  439. package/dist/webcomponents/p-a9af8d3e.entry.js.map +0 -1
  440. package/dist/webcomponents/p-c966ab17.entry.js.map +0 -1
  441. package/dist/webcomponents/p-d7265a28.entry.js.map +0 -1
  442. package/dist/webcomponents/p-d7a4225f.entry.js.map +0 -1
  443. package/dist/webcomponents/p-df308ecd.entry.js.map +0 -1
  444. package/dist/webcomponents/p-fb3e3276.entry.js.map +0 -1
  445. /package/dist/components/{p-DoUCJxLj.js.map → p-ssSt5UuQ.js.map} +0 -0
  446. /package/dist/webcomponents/{p-64545afe.entry.js.map → p-0fe0dcc1.entry.js.map} +0 -0
  447. /package/dist/webcomponents/{p-744eb116.entry.js.map → p-16f8e426.entry.js.map} +0 -0
  448. /package/dist/webcomponents/{p-67e47dd0.entry.js.map → p-1d018f30.entry.js.map} +0 -0
  449. /package/dist/webcomponents/{p-4f41615a.entry.js.map → p-2a407917.entry.js.map} +0 -0
  450. /package/dist/webcomponents/{p-db84202e.entry.js.map → p-502c9692.entry.js.map} +0 -0
  451. /package/dist/webcomponents/{p-59f07375.entry.js.map → p-70d4da25.entry.js.map} +0 -0
  452. /package/dist/webcomponents/{p-b7c58efc.entry.js.map → p-761f7798.entry.js.map} +0 -0
  453. /package/dist/webcomponents/{p-25addf8c.entry.js.map → p-88bfa633.entry.js.map} +0 -0
  454. /package/dist/webcomponents/{p-f7a210a8.entry.js.map → p-b565e6e5.entry.js.map} +0 -0
  455. /package/dist/webcomponents/{p-41443414.entry.js.map → p-bbd38dd7.entry.js.map} +0 -0
  456. /package/dist/webcomponents/{p-ac0f37e9.entry.js.map → p-d549a87b.entry.js.map} +0 -0
  457. /package/dist/webcomponents/{p-51cc97aa.entry.js.map → p-deb094fb.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["dividerCss","Divider","__stencil_proxyCustomElement","HTMLElement","constructor","this","customId","Helpers","generateUniqueId","orientation","thickness","borderStyle","isDarkMode","color","bleed","updateColor","el","style","setProperty","connectedCallback","hasDefaultSlotContent","componentDidLoad","setVerticalOrientation","setBleed","disconnectedCallback","unsetBleed","div","document","createElement","className","display","height","insertAdjacentElement","appendChild","applyMarginOnRootElement","window","addEventListener","bind","removeEventListener","innerHTML","trim","getHostParentPadding","hostParent","parentElement","getComputedStyle","paddingLeft","parseFloat","paddingRight","rootElement","_a","shadowRoot","querySelector","setAttribute","getCssClassMap","align","renderDefaultSlotDivider","h","class","role","id","renderStandardDivider","render","Host","key"],"sources":["../../packages/webcomponents/src/components/divider/divider.scss?tag=br-divider&encapsulation=shadow","../../packages/webcomponents/src/components/divider/divider.tsx"],"sourcesContent":[":host {\n display: block;\n\n .br-divider {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin: 20px 0;\n border: none;\n background-color: transparent;\n\n &::before,\n &::after {\n content: \"\";\n flex: 1;\n border-top: var(--divider-size, 1px) solid var(--border-color, black);\n }\n\n &.dashed {\n border-top: none;\n background: none;\n\n &::before,\n &::after {\n border-top: var(--divider-size, 1px) dashed var(--border-color);\n }\n }\n\n &.dashed.vertical {\n border-right: var(--divider-size, 1px) dashed var(--border-color);\n border-top: none;\n\n &::before,\n &::after {\n border-right: var(--divider-size, 1px) dashed var(--border-color);\n border-top: none;\n }\n }\n\n &.vertical {\n flex-direction: column;\n height: 100%;\n width: auto;\n margin: 0 10px;\n align-self: stretch;\n border-right-width: var(--divider-size);\n border-top-width: 0;\n\n &::before,\n &::after {\n border-right: var(--divider-size, 1px) solid var(--border-color, black);\n border-top: none;\n margin: 0;\n }\n }\n\n &.small {\n --divider-size: var(--surface-width-sm);\n }\n\n &.medium {\n --divider-size: var(--surface-width-md);\n }\n\n &.large {\n --divider-size: var(--surface-width-lg);\n }\n\n &.divider-start {\n justify-content: flex-start;\n\n &::before {\n flex: 0 0 0px;\n margin-right: var(--spacing-scale-base);\n }\n }\n\n &.divider-center {\n justify-content: center;\n }\n\n &.divider-end {\n justify-content: flex-end;\n\n &::after {\n flex: 0 0 0px;\n margin-left: var(--spacing-scale-base);\n }\n }\n }\n\n .divider-start::after,\n .divider-center::before,\n .divider-center::after,\n .divider-end::before {\n margin: 0 var(--spacing-scale-base);\n }\n\n .divider-start::before {\n margin-right: var(--spacing-scale-base);\n }\n\n .divider-end::after {\n margin-left: var(--spacing-scale-base);\n }\n\n :host(:empty)::before,\n :host(:empty)::after {\n margin: 0;\n }\n}\n","import { Component, Element, h, Host, Prop, Watch } from '@stencil/core'\n\nimport Helpers from '../../utils/helpers'\n\ntype DividerOrientation = 'horizontal' | 'vertical'\ntype DividerThickness = 'small' | 'medium' | 'large'\ntype DividerBorderStyle = 'dashed' | 'solid'\ntype DividerAlign = 'start' | 'center' | 'end'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/divider?tab=designer).\n *\n * @slot default - Conteúdo opcional que pode ser exibido dentro do divisor, como texto, ícones ou outros elementos personalizados.\n */\n@Component({\n tag: 'br-divider',\n styleUrl: 'divider.scss',\n shadow: true,\n})\nexport class Divider {\n @Element() el: HTMLBrDividerElement\n\n /**\n * ID personalizado para o elemento, útil para acessibilidade e identificação única.\n * Se não for fornecido, um ID único será gerado automaticamente.\n */\n @Prop({ reflect: true }) readonly customId: string = Helpers.generateUniqueId()\n\n /**\n * Define a orientação do divisor.\n * Pode ser 'horizontal' ou 'vertical'.\n * Caso seja usado como vertical, o divider deve ser colocado dentro de um container com altura definida.\n * @default horizontal\n */\n @Prop({ reflect: true }) orientation: DividerOrientation = 'horizontal'\n\n /**\n * Define a espessura do divisor.\n * Pode ser 'small', 'medium' ou 'large'.\n * @default small\n */\n @Prop({ reflect: true }) thickness: DividerThickness = 'small'\n\n /**\n * Define o estilo da borda do divisor.\n * Pode ser 'dashed' ou 'solid'.\n * @default solid\n */\n @Prop({ reflect: true }) borderStyle: DividerBorderStyle = 'solid'\n\n /**\n * Define se o divisor deve ser exibido no modo escuro.\n * @default false\n */\n @Prop({ reflect: true }) isDarkMode: boolean = false\n\n /**\n * Cor do divisor.\n * Pode ser uma cor hexadecimal, RGB ou nome de cor CSS.\n * Se não for especificada, o divisor usará a cor padrão definida pelo tema.\n * @default null\n */\n @Prop({ reflect: true }) color: string = null\n\n /**\n * Alinhamento do conteúdo do divisor.\n * Pode ser 'start', 'center' ou 'end'.\n * @default undefined\n */\n @Prop() align: DividerAlign\n\n /**\n * Define se o divisor deve \"sangrar\" (bleed) nas laterais, ou seja, se deve ocupar toda a largura do container pai.\n * Isso é útil quando o divisor precisa se estender além do padding do container pai.\n * @default false\n */\n @Prop() bleed: boolean = false\n\n /**\n * Watcher para a cor do divisor.\n * Atualiza a propriedade CSS '--border-color' do elemento para refletir a cor definida.\n * Isso permite que o divisor use cores personalizadas sem precisar de estilos adicionais.\n */\n @Watch('color')\n updateColor() {\n this.el.style.setProperty('--border-color', this.color)\n }\n\n /**\n * Ciclo de vida do componente.\n * Chamado quando o componente é conectado ao DOM.\n */\n connectedCallback() {\n this.hasDefaultSlotContent()\n }\n\n /**\n * Ciclo de vida do componente.\n * Chamado após o componente ser renderizado no DOM.\n */\n componentDidLoad() {\n this.setVerticalOrientation()\n this.setBleed()\n this.updateColor()\n }\n\n /**\n * Ciclo de vida do componente.\n * Chamado quando o componente é desconectado do DOM.\n */\n disconnectedCallback() {\n this.unsetBleed()\n }\n /**\n * Configura o divisor para orientação vertical.\n * Se a orientação for 'vertical', cria um elemento <div> adicional para manter o layout correto.\n */\n private setVerticalOrientation() {\n if (this.orientation === 'vertical') {\n const div = document.createElement('div')\n div.className = 'vertical-divider'\n div.style.display = 'flex'\n div.style.height = '100%'\n this.el.insertAdjacentElement('beforebegin', div)\n div.appendChild(this.el)\n }\n }\n\n /**\n * Configura o divisor para sangrar (bleed) nas laterais.\n */\n private setBleed() {\n if (this.bleed) {\n this.applyMarginOnRootElement()\n window.addEventListener('resize', this.applyMarginOnRootElement.bind(this))\n }\n }\n\n /**\n * Remove o sangramento (bleed) do divisor.\n */\n private unsetBleed() {\n if (this.bleed) {\n window.removeEventListener('resize', this.applyMarginOnRootElement.bind(this))\n }\n }\n\n /**\n * Verifica se o divisor tem conteúdo no slot padrão.\n * @returns true se o divisor tiver conteúdo no slot padrão, false caso contrário.\n */\n private hasDefaultSlotContent(): boolean {\n return this.el.innerHTML.trim() !== ''\n }\n\n /**\n * Determina o paddingLeft e paddingRight do elemento pai do host.\n * @returns Um objeto contendo os valores de paddingLeft e paddingRight do elemento pai do host.\n */\n private getHostParentPadding() {\n const hostParent = this.el.parentElement\n if (hostParent !== null) {\n const style = getComputedStyle(hostParent)\n return { paddingLeft: parseFloat(style.paddingLeft), paddingRight: parseFloat(style.paddingRight) }\n }\n return { paddingLeft: 0, paddingRight: 0 }\n }\n\n /**\n * Aplica margens negativas no elemento raiz do divisor para compensar o padding do elemento pai.\n * Isso é necessário quando o divisor está configurado para sangrar (bleed).\n */\n private applyMarginOnRootElement() {\n const { paddingLeft, paddingRight } = this.getHostParentPadding()\n const rootElement = this.el.shadowRoot?.querySelector('.br-divider')\n rootElement.setAttribute('style', `margin-left: -${paddingLeft}px; margin-right: -${paddingRight * 2}px;`)\n }\n\n /**\n * Define as classes CSS que serão aplicadas ao divisor.\n * @returns Uma string contendo as classes CSS que serão aplicadas ao divisor.\n */\n private getCssClassMap() {\n return `br-divider divider-${this.align} ${this.orientation} ${this.borderStyle} ${this.thickness} ${this.isDarkMode ? 'dark-mode' : ''}`\n }\n\n /**\n * Renderiza o divisor quando há conteúdo no slot padrão.\n * @returns JSX.Element\n */\n private renderDefaultSlotDivider() {\n return (\n <div\n class={this.getCssClassMap()}\n role=\"separator\"\n aria-orientation={this.orientation}\n aria-labelledby={this.customId}\n >\n <span id={this.customId}>\n <slot></slot>\n </span>\n </div>\n )\n }\n\n /**\n * Renderiza o divisor quando não há conteúdo no slot padrão.\n * @returns JSX.Element\n */\n private renderStandardDivider() {\n return <hr class={this.getCssClassMap()} />\n }\n\n /**\n * Renderiza o divisor.\n * @returns JSX.Element\n */\n render() {\n return <Host>{this.hasDefaultSlotContent() ? this.renderDefaultSlotDivider() : this.renderStandardDivider()}</Host>\n }\n}\n"],"mappings":";;;;;;;;AAAA,MAAMA,IAAa;;MCmBNC,KAAOC,EAAA,MAAAD,UAAAE;EALpB,WAAAC;;;;;;;eAYoCC,KAAAC,WAAmBC,EAAQC;;;;;;eAQpCH,KAAWI,cAAuB;;;;;eAOlCJ,KAASK,YAAqB;;;;;eAO9BL,KAAWM,cAAuB;;;;eAMlCN,KAAUO,aAAY;;;;;;eAQtBP,KAAKQ,QAAW;;;;;eAcjCR,KAAKS,QAAY;AAgJ1B;;;;;SAxIC,WAAAC;IACEV,KAAKW,GAAGC,MAAMC,YAAY,kBAAkBb,KAAKQ;;;;;SAOnD,iBAAAM;IACEd,KAAKe;;;;;SAOP,gBAAAC;IACEhB,KAAKiB;IACLjB,KAAKkB;IACLlB,KAAKU;;;;;SAOP,oBAAAS;IACEnB,KAAKoB;;;;;SAMC,sBAAAH;IACN,IAAIjB,KAAKI,gBAAgB,YAAY;MACnC,MAAMiB,IAAMC,SAASC,cAAc;MACnCF,EAAIG,YAAY;MAChBH,EAAIT,MAAMa,UAAU;MACpBJ,EAAIT,MAAMc,SAAS;MACnB1B,KAAKW,GAAGgB,sBAAsB,eAAeN;MAC7CA,EAAIO,YAAY5B,KAAKW;;;;;SAOjB,QAAAO;IACN,IAAIlB,KAAKS,OAAO;MACdT,KAAK6B;MACLC,OAAOC,iBAAiB,UAAU/B,KAAK6B,yBAAyBG,KAAKhC;;;;;SAOjE,UAAAoB;IACN,IAAIpB,KAAKS,OAAO;MACdqB,OAAOG,oBAAoB,UAAUjC,KAAK6B,yBAAyBG,KAAKhC;;;;;;SAQpE,qBAAAe;IACN,OAAOf,KAAKW,GAAGuB,UAAUC,WAAW;;;;;SAO9B,oBAAAC;IACN,MAAMC,IAAarC,KAAKW,GAAG2B;IAC3B,IAAID,MAAe,MAAM;MACvB,MAAMzB,IAAQ2B,iBAAiBF;MAC/B,OAAO;QAAEG,aAAaC,WAAW7B,EAAM4B;QAAcE,cAAcD,WAAW7B,EAAM8B;;;IAEtF,OAAO;MAAEF,aAAa;MAAGE,cAAc;;;;;;SAOjC,wBAAAb;;IACN,OAAMW,aAAEA,GAAWE,cAAEA,KAAiB1C,KAAKoC;IAC3C,MAAMO,KAAcC,IAAA5C,KAAKW,GAAGkC,gBAAY,QAAAD,WAAA,aAAAA,EAAAE,cAAc;IACtDH,EAAYI,aAAa,SAAS,iBAAiBP,uBAAiCE,IAAe;;;;;SAO7F,cAAAM;IACN,OAAO,sBAAsBhD,KAAKiD,SAASjD,KAAKI,eAAeJ,KAAKM,eAAeN,KAAKK,aAAaL,KAAKO,aAAa,cAAc;;;;;SAO/H,wBAAA2C;IACN,OACEC,EACE;MAAAC,OAAOpD,KAAKgD;MACZK,MAAK;MAAW,oBACErD,KAAKI;MACN,mBAAAJ,KAAKC;OAEtBkD,EAAA;MAAMG,IAAItD,KAAKC;OACbkD,EAAa;;;;;SAUb,qBAAAI;IACN,OAAOJ,EAAA;MAAIC,OAAOpD,KAAKgD;;;;;;SAOzB,MAAAQ;IACE,OAAOL,EAACM,GAAM;MAAAC,KAAA;OAAA1D,KAAKe,0BAA0Bf,KAAKkD,6BAA6BlD,KAAKuD","ignoreList":[]}
@@ -1,40 +0,0 @@
1
- /*!
2
- * Construído por SERPRO
3
- * © https://serpro.gov.br/ - MIT License.
4
- */
5
- /******************************************************************************
6
- Copyright (c) Microsoft Corporation.
7
-
8
- Permission to use, copy, modify, and/or distribute this software for any
9
- purpose with or without fee is hereby granted.
10
-
11
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
14
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
16
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17
- PERFORMANCE OF THIS SOFTWARE.
18
- ***************************************************************************** */
19
- /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
20
-
21
-
22
- function __awaiter(thisArg, _arguments, P, generator) {
23
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
24
- return new (P || (P = Promise))(function (resolve, reject) {
25
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
26
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
27
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
28
- step((generator = generator.apply(thisArg, _arguments || [])).next());
29
- });
30
- }
31
-
32
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
33
- var e = new Error(message);
34
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
35
- };
36
-
37
- export { __awaiter as _ };
38
- //# sourceMappingURL=tslib.es6-DIPMDb5E.js.map
39
-
40
- //# sourceMappingURL=tslib.es6-DIPMDb5E.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tslib.es6-DIPMDb5E.js","sources":["../../node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n"],"names":[],"mappings":";;;;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAoGO,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AAC7D,EAAE,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5G,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC7D,MAAM,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/F,MAAM,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAClG,MAAM,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClH,MAAM,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AAC3E,GAAG,CAAC;AACJ;;AA6MuB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;AACvH,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;AAC5B,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC;AAClF;;;;","x_google_ignoreList":[0]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["inputCss","Input","constructor","hostRef","this","type","density","disabled","isInline","isHighlight","customId","inputId","readonly","required","autocorrect","multiple","isPasswordVisible","internalState","hasIconSlot","hasActionSlot","hasFeedbackSlot","handleInput","event","value","target","valueChange","emit","renderLabel","_a","label","length","h","class","htmlFor","renderInput","id","autocomplete","autoCorrect","min","max","minLength","minlength","maxLength","maxlength","name","pattern","step","onInput","placeholder","title","el","renderHelpText","helpText","renderIconPassword","iconName","togglePasswordVisibility","input","shadowRoot","querySelector","renderInlineInputContent","renderInputWithIcon","renderInputWithoutIcon","renderInputContent","renderIconSlot","renderButton","componentWillLoad","hasSlotContent","state","initializeStateWithFeedback","componentDidLoad","setupSlotFeedbackListener","initialMessageElement","messageState","getAttribute","slot","addEventListener","syncStateWithSlotFeedback","messageElement","getInputCssClassMap","small","large","medium","success","danger","info","warning","slotName","shape","onClick","actionLabel","renderFeedback","render","Host","key","radioCss","Radio","checked","hasHiddenLabel","radioId","stopPropagation","onChange","checkedChange","handleCheckedChange","handleKeyDown","isArrowKey","includes","preventDefault","radios","Array","from","document","querySelectorAll","filter","currentIndex","findIndex","radio","nextIndex","nextRadio","toggleChecked","call","_c","_b","focus","getCssClassMap","valid","invalid","part"],"sources":["../../packages/webcomponents/src/components/input/input.scss?tag=br-input&encapsulation=shadow","../../packages/webcomponents/src/components/input/input.tsx","../../packages/webcomponents/src/components/radio/radio.scss?tag=br-radio&encapsulation=shadow","../../packages/webcomponents/src/components/radio/radio.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/input/input\";\n\n:host {\n display: inline-block;\n\n .br-input .input-icon {\n margin: 0 var(--spacing-scale-2x);\n }\n\n .br-input .input-icon + input {\n padding-left: var(--spacing-scale-6x);\n }\n}\n\n.br-input {\n br-button {\n float: right;\n margin-right: var(--input-button-margin);\n margin-top: calc((var(--input-size) + var(--spacing-scale-half)) * -1);\n padding: 0;\n position: relative;\n\n &.button-transform {\n transform: translateY(calc((var(--input-size) - 32px) * 0.5));\n }\n }\n\n .input-label {\n margin-top: 0 !important;\n }\n\n &.input-inline {\n display: flex;\n align-items: center;\n }\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Prop, State } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n *\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/input?tab=designer).\n *\n * @slot action - Botão à direita do input.\n * @slot icon - Ícone à esquerda do input.\n * @slot help-text - Personalização do texto de ajuda.\n * @slot feedback - Mensagem de feedback como resposta específica a uma interação do usuário com o input. Pode ser feedback de erro, aviso, sucesso ou informação.\n */\n@Component({\n tag: 'br-input',\n styleUrl: 'input.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Input {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrInputElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Especifica o tipo de entrada do campo. Pode ser um dos seguintes:\n * - 'color': Seletor de cor\n * - 'email': Campo para e-mail\n * - 'hidden': Campo oculto\n * - 'password': Campo para senha\n * - 'range': Controle deslizante\n * - 'search': Campo de pesquisa\n * - 'number': Campo para números\n * - 'tel': Campo para números de telefone\n * - 'text': Campo de texto padrão\n * - 'url': Campo para URLs\n */\n @Prop({ reflect: true }) readonly type:\n | 'color'\n | 'email'\n | 'hidden'\n | 'password'\n | 'range'\n | 'search'\n | 'number'\n | 'tel'\n | 'text'\n | 'file'\n | 'url' = 'text'\n\n /**\n * Controla o comportamento de preenchimento automático do navegador para o input.\n */\n @Prop({ reflect: true }) readonly autocomplete: 'on' | 'off'\n\n /**\n * Ajusta a densidade, alterando o espaçamento interno para um visual mais compacto ou mais expandido.\n */\n @Prop({ reflect: true }) readonly density: 'large' | 'medium' | 'small' = 'medium'\n\n /**\n * Desativa o input, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Se verdadeiro, o rótulo e o input estarão na mesma linha (layout inline).\n */\n @Prop({ reflect: true }) readonly isInline: boolean = false\n\n /**\n * Se verdadeiro, o input terá destaque visual.\n */\n @Prop({ reflect: true }) readonly isHighlight: boolean = false\n\n /**\n * Define o estado do input\n * Os possíveis valores são:\n * - 'info': Mensagem informativa.\n * - 'warning': Mensagem de aviso.\n * - 'danger': Mensagem de erro ou alerta.\n * - 'success': Mensagem de sucesso.\n * O valor padrão é 'info'.\n */\n @Prop({ reflect: true }) readonly state: 'info' | 'warning' | 'danger' | 'success'\n\n /**\n * Texto exibido como rótulo do input.\n */\n @Prop({ reflect: true }) readonly label: string\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-input-${inputId++}`\n\n /**\n * Nome do input, utilizado para identificação em formulários.\n */\n @Prop({ reflect: true }) readonly name: string\n\n /**\n * Texto exibido dentro do input quando está vazio, fornecendo uma dica ou sugestão ao usuário.\n */\n @Prop({ reflect: true }) readonly placeholder: string\n\n /**\n * Se verdadeiro, o valor do input é exibido, mas não pode ser editado pelo usuário.\n */\n @Prop({ reflect: true }) readonly readonly: boolean = false\n\n /**\n * Se verdadeiro, o input é obrigatório e deve ser preenchido antes que o formulário possa ser enviado.\n */\n @Prop({ reflect: true }) readonly required: boolean = false\n\n /**\n * Valor exibido no input.\n * Pode ser alterado pelo usuário se a propriedade `readonly` não estiver ativa.\n */\n @Prop({ reflect: true, mutable: true }) value: string\n\n /**\n * Texto adicional que fornece ajuda ou informações sobre o input.\n */\n @Prop({ reflect: true }) readonly helpText: string\n\n /**\n * Controla a correção automática do texto.\n */\n @Prop({ reflect: true }) readonly autocorrect: 'off' | 'on' = 'off'\n\n /**\n * Define o valor mínimo para campos de entrada numéricos.\n */\n @Prop({ reflect: true }) readonly min: number\n\n /**\n * Define o valor máximo para campos de entrada numéricos.\n */\n @Prop({ reflect: true }) readonly max: number\n\n /**\n * Define o comprimento mínimo do valor do campo de entrada.\n */\n @Prop({ reflect: true }) readonly minlength: number\n\n /**\n * Define o comprimento máximo do valor do campo de entrada.\n */\n @Prop({ reflect: true }) readonly maxlength: number\n\n /**\n * Se verdadeiro, permite a seleção de múltiplos arquivos.\n */\n @Prop({ reflect: true }) readonly multiple: boolean = false\n\n /**\n * Define o padrão de entrada para validação.\n */\n @Prop({ reflect: true }) readonly pattern: string\n\n /**\n * Define o valor do passo para campos de entrada numéricos.\n */\n @Prop({ reflect: true }) readonly step: number\n\n /**\n * Texto exibido no botão de ação à direita do input.\n */\n @Prop({ reflect: true }) readonly actionLabel: string\n\n @State() isPasswordVisible: boolean = false\n\n @State() internalState: 'info' | 'warning' | 'danger' | 'success' = 'info'\n\n @State() hasIconSlot: boolean = false\n\n @State() hasActionSlot: boolean = false\n\n @State() hasFeedbackSlot: boolean = false\n\n componentWillLoad() {\n this.hasIconSlot = this.hasSlotContent('icon')\n this.hasActionSlot = this.hasSlotContent('action')\n this.hasFeedbackSlot = this.hasSlotContent('feedback')\n this.internalState = this.state\n\n if (this.hasFeedbackSlot) {\n this.initializeStateWithFeedback()\n }\n }\n\n componentDidLoad() {\n if (this.hasFeedbackSlot) {\n this.setupSlotFeedbackListener()\n }\n }\n\n private initializeStateWithFeedback() {\n const initialMessageElement = this.el.querySelector('br-message')\n\n if (initialMessageElement) {\n const messageState = initialMessageElement.getAttribute('state')\n this.internalState = (messageState as 'info' | 'warning' | 'danger' | 'success') || this.state\n } else {\n this.internalState = this.state\n }\n }\n\n private setupSlotFeedbackListener() {\n const slot = this.el.shadowRoot?.querySelector('slot[name=\"feedback\"]')\n if (slot) {\n slot.addEventListener('slotchange', () => {\n this.syncStateWithSlotFeedback()\n })\n }\n }\n\n private syncStateWithSlotFeedback() {\n const messageElement = this.el.querySelector('br-message')\n\n if (messageElement) {\n this.internalState = messageElement.getAttribute('state') as 'info' | 'warning' | 'danger' | 'success'\n } else {\n this.internalState = this.state\n }\n }\n\n private getInputCssClassMap(): CssClassMap {\n return {\n 'br-input': true,\n 'input-button': this.hasActionSlot,\n small: this.density === 'small',\n large: this.density === 'large',\n medium: this.density === 'medium',\n 'input-inline': this.isInline,\n 'input-highlight': this.isHighlight,\n success: this.internalState === 'success',\n danger: this.internalState === 'danger',\n info: this.internalState === 'info',\n warning: this.internalState === 'warning',\n }\n }\n\n /**\n * Valor atualizado do input\n */\n @Event() valueChange: EventEmitter<string>\n\n private readonly handleInput = (event: Event) => {\n this.value = (event.target as HTMLInputElement).value\n this.valueChange.emit(this.value)\n }\n\n private readonly renderLabel = () => {\n if (this.label?.length > 0) {\n if (this.isInline) {\n return (\n <div class=\"input-label\">\n <label class=\"text-nowrap\" htmlFor={this.customId}>\n {this.label}\n </label>\n </div>\n )\n } else {\n return <label htmlFor={this.customId}>{this.label}</label>\n }\n }\n }\n\n private hasSlotContent(slotName: string): boolean {\n return this.el.querySelector(`[slot=\"${slotName}\"]`) !== null\n }\n\n private readonly renderInput = () => {\n return (\n <input\n class={this.isHighlight ? 'input-highlight' : null}\n id={this.customId}\n autocomplete={this.autocomplete}\n disabled={this.disabled}\n autoCorrect={this.autocorrect}\n min={this.min}\n max={this.max}\n minLength={this.minlength}\n maxLength={this.maxlength}\n multiple={this.multiple}\n name={this.name}\n pattern={this.pattern}\n step={this.step}\n onInput={this.handleInput}\n placeholder={this.placeholder}\n readonly={this.readonly}\n required={this.required}\n title={this.el.title}\n type={this.type}\n value={this.value}\n />\n )\n }\n\n private readonly renderHelpText = () => {\n return this.helpText?.length > 0 ? <p>{this.helpText}</p> : <slot name=\"help-text\"></slot>\n }\n\n private readonly renderIconPassword = () => {\n const iconName = this.isPasswordVisible ? 'fa-solid:eye-slash' : 'fa-solid:eye'\n return <br-icon icon-name={iconName}></br-icon>\n }\n\n private readonly togglePasswordVisibility = () => {\n const input = this.el.shadowRoot.querySelector('input')\n this.isPasswordVisible = !this.isPasswordVisible\n input.type = this.isPasswordVisible ? 'text' : 'password'\n }\n\n private renderIconSlot() {\n if (this.hasSlotContent('icon')) {\n return (\n <div class=\"input-icon\">\n <slot name=\"icon\"></slot>\n </div>\n )\n }\n }\n\n private renderButton() {\n if (this.type === 'password') {\n return (\n <br-button\n class=\"button-transform\"\n shape=\"circle\"\n density=\"small\"\n aria-label={this.isPasswordVisible ? 'Esconder senha' : 'Mostrar senha'}\n aria-pressed={this.isPasswordVisible ? 'true' : 'false'}\n onClick={this.togglePasswordVisibility}\n >\n {this.renderIconPassword()}\n </br-button>\n )\n } else if (this.hasSlotContent('action')) {\n return (\n <br-button class=\"button-transform\" shape=\"circle\" density=\"small\" aria-label={this.actionLabel}>\n <slot name=\"action\"></slot>\n </br-button>\n )\n }\n return null\n }\n\n private readonly renderInlineInputContent = () => {\n if (this.hasIconSlot) {\n return <div class=\"input-content\">{this.renderInputWithIcon()}</div>\n } else {\n return <div class=\"input-content\">{this.renderInputWithoutIcon()}</div>\n }\n }\n\n private readonly renderInputContent = () => {\n return this.hasIconSlot ? this.renderInputWithIcon() : this.renderInputWithoutIcon()\n }\n\n private readonly renderInputWithIcon = () => {\n return (\n <div class=\"input-group\">\n {this.renderIconSlot()}\n {this.renderInput()}\n {this.renderButton()}\n {this.renderHelpText()}\n </div>\n )\n }\n\n private readonly renderInputWithoutIcon = () => {\n return [this.renderInput(), this.renderButton(), this.renderHelpText()]\n }\n\n private renderFeedback() {\n if (this.hasFeedbackSlot) {\n return <slot name=\"feedback\"></slot>\n }\n }\n\n render() {\n return (\n <Host>\n <div class={this.getInputCssClassMap()}>\n {this.renderLabel()}\n\n {this.isInline ? this.renderInlineInputContent() : this.renderInputContent()}\n\n {this.renderFeedback()}\n </div>\n </Host>\n )\n }\n}\n\nlet inputId = 0\n","@import \"~@govbr-ds/core/src/components/radio/radio\";\n@include radio-checked;\n\n:host {\n display: inline-block;\n\n .br-radio.hidden-label {\n label {\n padding-left: calc(var(--checkbox-size) + var(--surface-width-md) * 2);\n text-indent: -10000px;\n white-space: nowrap;\n width: 0;\n }\n }\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/radio?tab=designer).\n *\n * @slot default - O texto descritivo pode ser passado por propriedade (label) ou por slot.\n */\n\n@Component({\n tag: 'br-radio',\n styleUrl: 'radio.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Radio {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrRadioElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Define o estado de seleção do radio.\n * Se definido como verdadeiro, o radio estará marcado. Caso contrário, estará desmarcado.\n */\n @Prop({ reflect: true, mutable: true }) checked: boolean = false\n\n /**\n * Desativa o radio, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Indica a validade do radio.\n * Valores possíveis:\n * - 'valid': O radio é considerado válido.\n * - 'invalid': O radio é considerado inválido.\n * Se não for especificado, o valor padrão é `null`, indicando que a validade não foi definida.\n */\n @Prop({ reflect: true }) readonly state: 'valid' | 'invalid'\n\n /**\n * Define se o label associado ao radio deve ser oculto.\n * Se definido como verdadeiro, o texto do label será oculto, mas o radio ainda estará visível e funcional.\n */\n @Prop({ reflect: true, attribute: 'has-hidden-label' }) readonly hasHiddenLabel: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-radio-${radioId++}`\n\n /**\n * Define o nome do radio, que é utilizado para agrupar radios em formulários e identificar o campo.\n * O valor é obrigatório e deve ser fornecido para garantir o correto funcionamento em formulários.\n */\n\n @Prop({ reflect: true }) readonly name!: string\n\n /**\n * Texto descritivo exibido à direita do radio.\n * Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.\n */\n @Prop({ reflect: true }) readonly label: string\n\n /**\n * Define o valor associado ao radio quando ele faz parte de um formulário nativo (`<form>`).\n * Esse valor é enviado com o formulário quando o radio está selecionado.\n * **Nota:** Esta propriedade não deve ser utilizada para determinar se o radio está selecionado; para verificar o estado de seleção, use a propriedade `checked`.\n */\n @Prop({ reflect: true }) readonly value: string\n\n /**\n * Disparado depois que o valor do `checked` foi alterado\n */\n @Event({ bubbles: true, composed: true }) checkedChange: EventEmitter<boolean>\n\n @Listen('checkedChange', { target: 'window' })\n handleCheckedChange(event: CustomEvent) {\n if (\n (event.target as HTMLBrRadioElement).customId !== this.customId &&\n (event.target as HTMLBrRadioElement).name === this.name\n ) {\n this.checked = false\n }\n }\n\n /**\n * Navega e seleciona o próximo/anterior rádio habilitado no grupo via teclas de seta.\n * Ativado por 'keydown', move a seleção entre rádios do mesmo 'name'\n * usando as setas, partindo do rádio atualmente checado.\n * @param {KeyboardEvent} event O evento de teclado.\n * @listens keydown\n */\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (this.disabled || !this.checked) return\n\n const isArrowKey = ['ArrowRight', 'ArrowDown', 'ArrowLeft', 'ArrowUp'].includes(event.key)\n if (!isArrowKey) return\n\n event.preventDefault()\n\n const radios = Array.from(document.querySelectorAll<HTMLBrRadioElement>('br-radio')).filter(\n (el: HTMLBrRadioElement) => el.name === this.name && !el.disabled\n )\n\n const currentIndex = radios.findIndex((radio: HTMLBrRadioElement) => radio.customId === this.customId)\n if (currentIndex === -1) return\n\n let nextIndex = currentIndex\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n nextIndex = (currentIndex + 1) % radios.length\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n nextIndex = (currentIndex - 1 + radios.length) % radios.length\n }\n\n const nextRadio: HTMLBrRadioElement | undefined = radios[nextIndex]\n nextRadio?.toggleChecked?.()\n nextRadio?.shadowRoot?.querySelector('input')?.focus()\n }\n\n /**\n * Inverte o valor da prop `checked`\n */\n @Method()\n async toggleChecked() {\n this.checked = !this.checked\n this.checkedChange.emit(this.checked)\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-radio': true,\n valid: this.state === 'valid',\n invalid: this.state === 'invalid',\n disabled: this.disabled,\n 'hidden-label': this.hasHiddenLabel,\n }\n }\n\n /**\n * Handler para o event `click`\n * @param event Objeto Event\n */\n private readonly onClick = (event: MouseEvent) => {\n event.stopPropagation()\n this.checked = (event.target as HTMLInputElement).checked\n }\n\n /**\n * Handler para o evento `change`\n */\n private readonly onChange = () => {\n this.checkedChange.emit(this.checked)\n }\n\n render() {\n return (\n <Host aria-disabled={this.disabled ? 'true' : null}>\n <div class={this.getCssClassMap()}>\n <input\n part=\"radio-input\"\n aria-label={this.hasHiddenLabel && this.label ? this.label : null}\n type=\"radio\"\n id={this.customId}\n name={this.name}\n checked={this.checked}\n disabled={this.disabled}\n value={this.value}\n onClick={this.onClick}\n onChange={this.onChange}\n />\n <label part=\"radio-label\" htmlFor={this.customId}>\n <slot>{this.label}</slot>\n </label>\n </div>\n </Host>\n )\n }\n}\n\nlet radioId = 0\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["collapseCss","Collapse","constructor","hostRef","this","customId","Helpers","generateUniqueId","open","accordionGroup","iconToShow","iconToHide","iconPosition","handleCollapse","event","details","target","isOpen","brDidOpen","emit","id","brDidClose","handleOpen","detail","closeCollapse","componentWillLoad","syncDetailsWithOpen","disconnectedCallback","_a","el","shadowRoot","querySelector","removeEventListener","openCollapse","renderIcon","h","render","itemCount","querySelectorAll","length","Host","key","class","onToggle","role","String","tabindex","name","listCss","List","header","isHorizontal","listId","hideHeaderDivider","collapse","accordion","renderHeader","hasSlotContent","slot","Boolean","componentDidLoad","slotItems","Array","from","forEach","item","nextElement","nextElementSibling","classList","contains","divider","style","borderWidth","width","items","setAttribute","getCssClassMap","horizontal","slotName","directChildren","filter","child","parentElement","renderDivider","renderListBody"],"sources":["../../packages/webcomponents/src/components/collapse/collapse.scss?tag=br-collapse&encapsulation=shadow","../../packages/webcomponents/src/components/collapse/collapse.tsx","../../packages/webcomponents/src/components/list/list.scss?tag=br-list&encapsulation=shadow","../../packages/webcomponents/src/components/list/list.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n\n .br-collapse {\n .trigger {\n display: flex;\n justify-content: center;\n align-items: center;\n\n &:not(:disabled):hover,\n &:not(:disabled):focus-visible {\n background-image: linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)));\n }\n }\n\n .trigger-content {\n flex: 1 1 auto !important;\n }\n\n .content {\n transition: height 0.3s;\n overflow: hidden;\n }\n\n br-icon {\n color: var(--interactive);\n }\n }\n\n details {\n width: 100%;\n\n summary {\n list-style: none;\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n padding: 8px 12px;\n height: 48px;\n outline: none;\n\n &::-webkit-details-marker {\n display: none;\n }\n\n &:focus-visible {\n outline: var(--focus-width) var(--focus-style) var(--focus);\n }\n }\n }\n\n .visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n }\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop } from '@stencil/core'\n\nimport Helpers from '../../utils/helpers'\n\n/**\n * O componente `br-collapse` pode ser utilizado em dois cenários principais: collapse simples ou accordion.\n *\n * - Collapse simples: Cada instância funciona de forma independente, permitindo abrir ou fechar o conteúdo conforme necessário, sem impactar outros componentes na página.\n * - Accordion: Quando configurado com a propriedade `accordionGroup`, múltiplos componentes `br-collapse` são agrupados. Nesse caso, apenas um item pode estar expandido por vez. Ao abrir um novo item, o anteriormente expandido será automaticamente fechado.\n *\n * @slot default - O conteúdo expansível mostrado/ocultado dinamicamente.\n * @slot trigger - Permite personalizar o conteúdo do acionador (texto, imagens, etc.).\n */\n@Component({\n tag: 'br-collapse',\n styleUrl: 'collapse.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Collapse {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrCollapseElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = Helpers.generateUniqueId('clp')\n\n /**\n * Define se o collapse está aberto ou fechado.\n * @default false\n */\n @Prop({ reflect: true, mutable: true }) open: boolean = false\n\n /**\n * Define se o collapse faz parte de um accordion\n * @default null\n */\n @Prop() accordionGroup?: string = null\n\n /**\n * Classe CSS para o ícone de expansão\n * @default 'fa6-solid:chevron-down'\n */\n @Prop() iconToShow: string = 'fa6-solid:chevron-down'\n\n /**\n * Classe CSS para o ícone de recolhimento\n * @default 'fa6-solid:chevron-up'\n */\n @Prop() iconToHide: string = 'fa6-solid:chevron-up'\n\n /**\n * Define a posição do ícone: 'left' ou 'right'\n * @default 'right'\n */\n @Prop() iconPosition: 'left' | 'right' = 'right'\n\n /**\n * Evento emitido ao expandir.\n */\n @Event() brDidOpen: EventEmitter<{ id: string; accordionGroup: string }>\n\n /**\n * Evento emitido ao recolher.\n */\n @Event() brDidClose: EventEmitter<{ id: string; accordionGroup: string }>\n\n /**\n * Evento disparado quando o componente é aberto.\n * @param event Evento disparado quando o componente é aberto.\n */\n @Listen('brDidOpen', { target: 'document' })\n /**\n * Handler para o evento de abertura do componente.\n * Fecha o collapse atual se ele não for parte do mesmo grupo de accordion.\n * @param event Evento disparado quando o componente é aberto.\n */\n handleOpen(event: CustomEvent) {\n if (\n this.accordionGroup &&\n this.accordionGroup === event.detail.accordionGroup &&\n event.detail.id !== this.customId\n ) {\n this.closeCollapse()\n }\n }\n\n /**\n * Ciclo de vida do componente. Chamado uma vez logo após o componente ser adicionado ao DOM.\n */\n componentWillLoad() {\n this.syncDetailsWithOpen()\n }\n\n /**\n * Ciclo de vida do componente. Chamado quando o componente é removido do DOM.\n */\n disconnectedCallback() {\n const details = this.el.shadowRoot?.querySelector('details')\n if (details !== null) {\n details.removeEventListener('toggle', this.handleCollapse)\n }\n }\n\n /**\n * Sincroniza o estado do elemento <details> com a propriedade open.\n * Isso garante que o estado visual do componente corresponda ao estado interno.\n */\n private syncDetailsWithOpen() {\n const details = this.el.shadowRoot?.querySelector('details')\n if (details !== null) {\n details.open = this.open\n }\n }\n\n /**\n * Método chamado quando o elemento <details> é aberto ou fechado.\n * Atualiza o estado interno do componente e emite eventos apropriados.\n * @param event O evento de toggle do elemento <details>.\n */\n private handleCollapse = (event: Event) => {\n const details = event.target as HTMLDetailsElement\n const isOpen = details.open\n\n this.open = isOpen\n if (this.open) {\n this.brDidOpen.emit({ id: this.customId, accordionGroup: this.accordionGroup })\n } else {\n this.brDidClose.emit({ id: this.customId, accordionGroup: this.accordionGroup })\n }\n }\n\n /**\n * Método público para abrir.\n * Este método pode ser chamado externamente para abrir o componente.\n */\n @Method()\n async openCollapse() {\n this.open = true\n this.syncDetailsWithOpen()\n this.brDidOpen.emit({ id: this.customId, accordionGroup: this.accordionGroup })\n }\n\n /**\n * Método público para fechar.\n * Este método pode ser chamado externamente para fechar o componente.\n */\n @Method()\n async closeCollapse() {\n this.open = false\n this.syncDetailsWithOpen()\n this.brDidClose.emit({ id: this.customId, accordionGroup: this.accordionGroup })\n }\n\n /**\n * Renderiza o ícone de acordo com o estado do collapse.\n * Se o collapse estiver aberto, renderiza o ícone para ocultar.\n * Caso contrário, renderiza o ícone para mostrar.\n * @returns JSX do ícone\n */\n private renderIcon() {\n return <br-icon icon-name={this.open ? this.iconToHide : this.iconToShow}></br-icon>\n }\n\n /**\n * Renderiza o componente.\n * O componente é renderizado como um elemento <details> com um <summary> que contém o acionador.\n * @returns JSX do componente.\n */\n render() {\n const itemCount = this.el.querySelectorAll('br-item').length\n\n return (\n <Host>\n <details class=\"br-collapse\" open={this.open} onToggle={this.handleCollapse} id={this.customId}>\n <summary\n class=\"trigger\"\n role=\"button\"\n aria-expanded={String(this.open)}\n aria-controls={`content-${this.customId}`}\n aria-labelledby={`label-${this.customId}`}\n tabindex=\"0\"\n aria-live=\"polite\"\n >\n {this.iconPosition === 'left' && this.renderIcon()}\n <div class=\"trigger-content\" id={`label-${this.customId}`}>\n <slot name=\"trigger\"></slot>\n </div>\n {this.iconPosition === 'right' && this.renderIcon()}\n </summary>\n\n <div\n class=\"content\"\n id={`content-${this.customId}`}\n aria-live=\"polite\"\n aria-labelledby={`label-${this.customId}`}\n >\n {this.open && itemCount > 0 && (\n <div class=\"visually-hidden\">\n {itemCount} {itemCount === 1 ? 'item' : 'itens'} na lista\n </div>\n )}\n <slot></slot>\n </div>\n </details>\n </Host>\n )\n }\n}\n","@import \"~@govbr-ds/core/src/components/list/list\";\n@import \"~@govbr-ds/core/src/components/divider/divider\";\n\n:host {\n display: block;\n\n .br-list.horizontal ::slotted(br-item) {\n flex: 1;\n height: auto;\n min-height: 56px;\n width: auto;\n }\n}\n","import { AttachInternals, Component, Element, h, Host, Prop } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/list?tab=designer).\n *\n * @slot default - Slot padrão para inclusão dos itens da lista.\n * @slot header - Slot nomeado para inclusão de ações relacionadas ao cabeçalho do list (uso de botões por exemplo).\n */\n@Component({\n tag: 'br-list',\n styleUrl: 'list.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class List {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrListElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Define o cabeçalho para a lista.\n */\n @Prop({ reflect: true }) readonly header: string = null\n\n /**\n * Indica se a lista será horizontal. Por padrão, a lista é vertical.\n */\n @Prop({ reflect: true }) readonly isHorizontal: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-list-${listId++}`\n\n /**\n * Indica que o divider para o título da lista estará oculto.\n */\n @Prop({ reflect: true }) readonly hideHeaderDivider: boolean = false\n\n /**\n * Indica se a lista possui o comportamento de collapse.\n */\n @Prop({ reflect: true }) readonly collapse: boolean = false\n\n /**\n * Indica se a lista possui o comportamento de accordion.\n * O valor da propriedade define o grupo, ou seja, o accordion é aplicado a todas as listas que possuem o mesmo valor para esta propriedade.\n */\n @Prop({ reflect: true }) readonly accordion: string = null\n\n /**\n * Método do ciclo de vida do componente, que é chamado uma vez após o componente começar a ser renderizado no DOM.\n */\n componentDidLoad() {\n if (this.isHorizontal) {\n const slotItems = Array.from(this.el.querySelectorAll('br-item'))\n\n slotItems.forEach((item) => {\n const nextElement = item.nextElementSibling\n if (nextElement?.classList.contains('br-divider')) {\n const divider = nextElement as HTMLElement\n divider.style.borderWidth = '0 1px 0 0'\n divider.style.width = '1px'\n }\n })\n }\n\n // adicionar role=\"listitem\" para os itens dentro do slot\n const items = Array.from(this.el.querySelectorAll('br-item'))\n items.forEach((item) => {\n item.setAttribute('role', 'listitem')\n })\n }\n\n /**\n * Método que retorna as classes CSS do componente\n * @returns Objeto com as classes CSS do componente\n */\n private getCssClassMap(): CssClassMap {\n return {\n 'br-list': true,\n horizontal: this.isHorizontal,\n }\n }\n\n /**\n * Verifica se o slot possui conteúdo.\n * @param slotName Nome do slot a ser verificado.\n * @returns true se o slot possui conteúdo, false caso contrário.\n */\n private hasSlotContent(slotName: string): boolean {\n const directChildren = Array.from(this.el.querySelectorAll(`[slot=\"${slotName}\"]`)).filter(\n (child) => child.parentElement === this.el\n )\n return Boolean(directChildren.length)\n }\n\n /**\n * Renderiza o cabeçalho da lista.\n * @returns JSX do cabeçalho da lista\n */\n\n private readonly renderHeader = () => {\n if (this.header?.length > 0 || this.hasSlotContent('header')) {\n return (\n <div\n class={!this.hasSlotContent('header') ? 'header' : null}\n slot={this.collapse || Boolean(this.accordion) ? 'trigger' : null}\n >\n <slot name=\"header\">{!this.hasSlotContent('header') ? <div class=\"title\">{this.header}</div> : null}</slot>\n </div>\n )\n }\n return null\n }\n\n /**\n * Renderiza o divider do cabeçalho.\n * @returns JSX do divider\n */\n private renderDivider() {\n if ((this.header || this.hasSlotContent('header')) && !this.hideHeaderDivider) {\n return <div class=\"br-divider\"></div>\n }\n return null\n }\n\n /**\n * Renderiza o corpo da lista.\n * @returns JSX do corpo da lista.\n */\n private renderListBody() {\n return [this.renderHeader(), this.renderDivider(), <slot></slot>]\n }\n\n /**\n * Renderiza o componente.\n * @returns JSX do componente\n */\n render() {\n return (\n <Host role=\"list\">\n <div class={this.getCssClassMap()} id={this.customId}>\n {Boolean(this.accordion) || this.collapse ? (\n <br-collapse accordion-group={this.accordion || null}>{this.renderListBody()}</br-collapse>\n ) : (\n this.renderListBody()\n )}\n </div>\n </Host>\n )\n }\n}\n\nlet listId = 0\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["selectCss","Select","constructor","hostRef","this","placeholder","isMultiple","options","selectAllLabel","unselectAllLabel","showSearchIcon","isOpen","customId","selectId","parsedOptions","inputValue","isAllSelected","isExpanded","focusedIndex","handleClickOutside","event","target","el","contains","synchronizeSelect","jsonData","JSON","parse","Array","isArray","Error","error","console","message","updateSelectedOptions","updateSelectedAllState","emitSelectedOptions","syncValueFromOutside","newVal","map","o","Object","assign","selected","includes","value","componentWillLoad","componentDidLoad","document","addEventListener","disconnectedCallback","removeEventListener","handleKeydownOnInput","key","closeSelect","preventDefault","openSelect","focusItemInDirection","resetFocus","toggleOpen","handleKeydownOnList","handleKeydownOnItem","index","handleSelection","handleSelectAllKeyDown","toggleSelectAll","input","shadowRoot","querySelector","focus","direction","itemCount","length","focusItem","items","querySelectorAll","item","updatedOptions","option","filter","_a","find","valueChange","emit","elementInternals","setFormValue","stringify","_b","getStringValue","firstSelected","label","howManySelected","selectedValues","allSelected","every","renderInput","h","readonly","onClick","onKeyDown","slot","height","renderSelectAllCheckbox","class","tabindex","role","name","checked","onCheckedChange","renderOptions","exportparts","getComputedId","getCssClassMap","render","id"],"sources":["../../packages/webcomponents/src/components/select/select.scss?tag=br-select&encapsulation=shadow","../../packages/webcomponents/src/components/select/select.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/select/select\";\n@import \"~@govbr-ds/core/src/components/item/item\";\n\n:host {\n display: inline-block;\n\n .br-select br-list {\n background-color: var(--bg-color);\n box-shadow: var(--select-shadow);\n margin-top: -2px;\n max-height: 404px;\n overflow: auto;\n position: absolute;\n resize: none;\n width: 100%;\n z-index: 1;\n\n @include scrollbar;\n\n &:focus,\n &:active {\n color: var(--color-secondary-09);\n outline: none;\n }\n\n &:hover {\n &::-webkit-scrollbar-thumb {\n background: var(--color-secondary-07);\n }\n }\n\n .br-item br-radio::part(radio-input) {\n visibility: hidden;\n height: 0;\n width: 0;\n }\n\n .br-item br-radio::part(radio-label) {\n padding-left: var(--spacing-scale-base);\n position: relative;\n\n &::before,\n &::after {\n display: none;\n }\n }\n }\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n@Component({\n tag: 'br-select',\n styleUrl: 'select.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Select {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrSelectElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Rótulo que indica o tipo de informação que deve ser selecionada.\n */\n @Prop({ reflect: true }) label: string\n\n /**\n * Texto auxiliar exibido antes de uma seleção.\n */\n @Prop({ reflect: true }) placeholder: string = ''\n\n /**\n * Habilita o modo múltiplo para selecionar várias opções.\n */\n @Prop({ reflect: true }) isMultiple: boolean = false\n\n /**\n * Define as opções disponíveis no componente de seleção.\n * Pode ser fornecida como:\n * - Uma **string** contendo um JSON válido que será analisado em um array de objetos. Exemplo: `'[{\"label\": \"Opção 1\", \"value\": \"1\"}]'.\n * - Um **array de objetos**, onde cada objeto representa uma opção com as propriedades:\n * - `label`: O texto exibido para o usuário (obrigatório).\n * - `value`: O valor associado à opção (obrigatório).\n * - `selected`: Um boolean opcional que indica se a opção está pré-selecionada (padrão: `false`).\n * Se uma string for fornecida, ela será convertida internamente para um array via `JSON.parse`. Caso o formato seja inválido, um erro será registrado e as opções serão definidas como um array vazio.\n * Exemplo de uso:\n * ```typescript\n * options='[{\"label\": \"Sim\", \"value\": \"1\"}, {\"label\": \"Não\", \"value\": \"0\"}]'\n * // ou\n * options=[{ label: \"Sim\", value: \"1\" }, { label: \"Não\", value: \"0\" }]\n * ```\n */\n @Prop({ reflect: true }) options:\n | string\n | {\n label: string\n value: string\n selected?: boolean\n }[] = []\n\n /**\n * Rótulo para selecionar todas as opções.\n */\n @Prop({ reflect: true }) selectAllLabel: string = 'Selecionar todos'\n\n /**\n * Rótulo para desmarcar todas as opções.\n */\n @Prop({ reflect: true }) unselectAllLabel: string = 'Desselecionar todos'\n\n /**\n * Exibe o ícone de busca no campo de entrada.\n */\n @Prop({ reflect: true }) showSearchIcon: boolean = false\n\n /**\n * Indica se a listagem de itens do select está expandida\n */\n @Prop({ reflect: true }) isOpen: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-select-${selectId++}`\n\n // Representa as opções do select disponíveis para renderização.\n // Cada opção contém `label`, `value` e o estado de seleção (`selected`).\n @State() parsedOptions: { label: string; value: string; selected?: boolean }[] = []\n\n // Valor exibido no input, refletindo as opções selecionadas.\n @State() inputValue: string = ''\n\n /** Valor selecionado (string para single, string[] para multiple) */\n @Prop({ reflect: false }) value?: string | string[];\n\n // Indica se todas as opções estão selecionadas. Comportamento do checkbox \"Selecionar Todos\".\n @State() isAllSelected: boolean = false\n\n // Controla se a lista de opções do select está expandida (aberta) ou colapsada (fechada).\n @State() isExpanded: boolean = false\n\n // Armazena o índice do item atualmente focado, usado para navegação por teclado.\n @State() focusedIndex: number = -1\n\n /**\n * Evento emitido sempre que houver atualização nos itens selecionados.\n * RENOMEADO PARA valueChange para compatibilidade com ngModel.\n */\n @Event({ bubbles: true, composed: true }) valueChange: EventEmitter;\n\n\n @Watch('options')\n synchronizeSelect() {\n try {\n let parsedOptions: { label: string; value: string; selected?: boolean }[] = []\n if (typeof this.options === 'string') {\n try {\n const jsonData = JSON.parse(this.options)\n if (Array.isArray(jsonData)) {\n parsedOptions = jsonData\n } else {\n throw new Error('JSON inválido: deve ser um array')\n }\n } catch (error) {\n console.error('Erro ao converter options para JSON:', error.message)\n parsedOptions = []\n }\n } else if (Array.isArray(this.options)) {\n parsedOptions = this.options\n }\n\n // Sanitiza as opções (remove opções inválidas, etc.)\n this.parsedOptions = parsedOptions\n\n // Atualiza o estado do componente\n this.updateSelectedOptions()\n this.updateSelectedAllState()\n this.emitSelectedOptions()\n } catch (error) {\n console.error('Erro ao processar as opções do select:', error)\n this.parsedOptions = []\n }\n }\n\n @Watch('value')\n syncValueFromOutside(newVal: string | string[]) {\n // Atualize parsedOptions a partir de newVal\n this.parsedOptions = this.parsedOptions.map(o => ({\n ...o,\n selected: this.isMultiple\n ? Array.isArray(newVal) && newVal.includes(o.value)\n : newVal === o.value\n }));\n this.updateSelectedOptions(); // mantém inputValue coeso\n this.updateSelectedAllState();\n }\n\n componentWillLoad() {\n this.isExpanded = this.isOpen\n this.synchronizeSelect()\n }\n\n componentDidLoad() {\n document.addEventListener('click', this.handleClickOutside)\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside)\n }\n\n /**\n * Fecha a lista suspensa (`dropdown`) do `br-select` quando o usuário clica fora do componente.\n * O listener global é adicionado no `componentDidLoad` e removido no `disconnectedCallback` para evitar vazamentos de memória.\n * Se a lista estiver aberta (`this.isExpanded`) e o clique ocorrer fora (`!this.el.contains(target)`), ela é fechada.\n * A reatividade do StencilJS garante a atualização automática da interface.\n * A arrow function (`=>`) mantém o contexto correto de `this` ao ser usada como callback.\n *\n * @param {MouseEvent} event O evento de clique.\n * @returns {void}\n */\n private readonly handleClickOutside = (event: MouseEvent) => {\n const target = event.target as HTMLElement\n if (this.isExpanded && !this.el.contains(target)) {\n this.isExpanded = false\n }\n }\n\n private handleKeydownOnInput(event: KeyboardEvent) {\n switch (event.key) {\n case 'Tab':\n this.closeSelect()\n break\n case 'ArrowDown':\n event.preventDefault()\n if (!this.isExpanded) {\n this.openSelect()\n }\n this.focusItemInDirection('next')\n break\n case 'ArrowUp':\n event.preventDefault()\n if (!this.isExpanded) {\n this.openSelect()\n }\n this.focusItemInDirection('previous')\n break\n case 'Escape':\n this.closeSelect()\n this.resetFocus()\n break\n case 'Enter':\n this.toggleOpen()\n break\n default:\n }\n }\n\n private handleKeydownOnList(event: KeyboardEvent) {\n event.preventDefault()\n switch (event.key) {\n case 'Tab':\n case 'Escape':\n this.resetFocus()\n break\n case 'ArrowUp':\n this.focusItemInDirection('previous')\n break\n case 'ArrowDown':\n this.focusItemInDirection('next')\n break\n default:\n break\n }\n }\n\n private handleKeydownOnItem(event: KeyboardEvent, index: number) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.handleSelection(index)\n } else if (event.key === 'Escape') {\n this.closeSelect()\n }\n }\n\n private handleSelectAllKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.toggleSelectAll()\n } else if (event.key === 'Escape') {\n event.preventDefault()\n this.closeSelect()\n }\n }\n\n private resetFocus() {\n const input = this.el.shadowRoot.querySelector('br-input') as HTMLElement\n input.focus()\n }\n\n private focusItemInDirection(direction: 'next' | 'previous') {\n let itemCount = this.parsedOptions.length\n if (this.isMultiple) itemCount += 1\n\n this.focusedIndex =\n direction === 'next' ? (this.focusedIndex + 1) % itemCount : (this.focusedIndex - 1 + itemCount) % itemCount\n\n this.focusItem(this.focusedIndex)\n }\n\n private focusItem(index: number) {\n const items = this.el.shadowRoot.querySelectorAll('.br-item')\n if (items[index]) {\n const item = items[index] as HTMLElement\n item.focus()\n }\n }\n\n private openSelect() {\n this.isExpanded = true\n }\n\n private closeSelect() {\n this.isExpanded = false\n // Resetar o índice focado ao fechar o select\n this.focusedIndex = -1\n }\n\n private handleSelection(index: number) {\n if (index < 0 || index >= this.parsedOptions.length) {\n return\n }\n\n if (this.isMultiple) {\n const updatedOptions = [...this.parsedOptions]\n updatedOptions[index].selected = !updatedOptions[index].selected\n this.parsedOptions = updatedOptions\n } else {\n const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: false }))\n updatedOptions[index].selected = true\n this.parsedOptions = updatedOptions\n this.isExpanded = false\n }\n\n // Atualiza a prop 'value' interna do componente\n this.value = this.isMultiple\n ? this.parsedOptions.filter(o => o.selected).map(o => o.value)\n : this.parsedOptions.find(o => o.selected)?.value;\n\n // Emite o evento 'valueChange' para que o ngModel possa capturar\n this.valueChange.emit(this.value);\n\n this.updateSelectedOptions()\n this.updateSelectedAllState()\n this.elementInternals.setFormValue(JSON.stringify(this.value ?? []));\n }\n\n private updateSelectedOptions() {\n this.inputValue = this.getStringValue(this.parsedOptions.filter((option) => option.selected))\n }\n\n private getStringValue(options: { label: string; value: string; selected?: boolean }[]) {\n if (options.length > 0) {\n const firstSelected = options[0].label || options[0].value\n if (this.isMultiple) {\n const howManySelected = options.length > 1 ? ` + (${options.length - 1})` : ''\n return `${firstSelected}${howManySelected}`\n } else {\n return firstSelected\n }\n }\n return ''\n }\n\n private emitSelectedOptions() {\n // A lógica de emissão do evento já está no handleSelection para o ngModel.\n // Esta função pode ser simplificada ou removida se a única finalidade era emitir para ngModel.\n // No entanto, se houver outros consumidores deste evento, você pode mantê-la.\n const selectedValues = this.parsedOptions\n .filter((option) => option.selected === true)\n .map((option) => option.value); // É importante emitir o 'value' para o ngModel.\n\n // Já emitimos em handleSelection, mas se quiser ter certeza, pode emitir aqui também.\n // this.valueChange.emit(this.isMultiple ? selectedValues : selectedValues[0] ?? undefined);\n\n // Atualiza o valor do form associado\n this.elementInternals.setFormValue(JSON.stringify(this.isMultiple ? selectedValues : selectedValues[0] ?? null));\n }\n\n private updateSelectedAllState() {\n const allSelected = this.parsedOptions.every((option) => option.selected)\n this.isAllSelected = allSelected\n }\n\n private toggleSelectAll() {\n const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: !this.isAllSelected }))\n this.parsedOptions = updatedOptions\n this.isAllSelected = !this.isAllSelected\n\n this.updateSelectedOptions()\n\n // Atualiza a prop 'value' e emite o evento para ngModel\n this.value = this.isMultiple\n ? this.parsedOptions.filter(o => o.selected).map(o => o.value)\n : this.parsedOptions.find(o => o.selected)?.value;\n this.valueChange.emit(this.value);\n\n this.elementInternals.setFormValue(JSON.stringify(this.value ?? []));\n }\n\n private renderInput() {\n return (\n <br-input\n value={this.inputValue}\n label={this.label}\n placeholder={this.placeholder}\n readonly\n onClick={() => this.toggleOpen()}\n onKeyDown={(event) => this.handleKeydownOnInput(event)}\n >\n {this.showSearchIcon && <br-icon slot=\"icon\" icon-name=\"fa-solid:search\" aria-hidden=\"true\"></br-icon>}\n <br-icon\n slot=\"action\"\n icon-name={this.isExpanded ? 'fa-solid:angle-up' : 'fa-solid:angle-down'}\n height=\"16\"\n aria-hidden=\"true\"\n ></br-icon>\n </br-input>\n )\n }\n\n private renderSelectAllCheckbox() {\n return (\n <div\n class={`br-item highlighted ${this.isAllSelected ? 'selected' : ''}`}\n data-all=\"data-all\"\n tabindex=\"-1\"\n role=\"option\"\n aria-selected={this.isAllSelected}\n onKeyDown={(event) => this.handleSelectAllKeyDown(event)}\n onClick={() => this.toggleSelectAll()}\n >\n <br-checkbox\n name={`checkbox-${this.customId}`}\n label={this.isAllSelected ? this.unselectAllLabel : this.selectAllLabel}\n checked={this.isAllSelected}\n onCheckedChange={() => this.toggleSelectAll()}\n ></br-checkbox>\n </div>\n )\n }\n\n private renderOptions() {\n return this.parsedOptions.map((option, index) => (\n <div\n class={`br-item ${option.selected ? 'selected' : ''}`}\n key={`${option.label}-${this.customId}`}\n role=\"option\"\n tabindex={this.focusedIndex === index ? 0 : -1}\n aria-selected={option.selected}\n onClick={() => this.handleSelection(index)}\n onKeyDown={(event) => this.handleKeydownOnItem(event, index)}\n >\n {this.isMultiple ? (\n <br-checkbox\n name={`checkbox-${index}-${this.customId}`}\n label={option.label || option.value}\n checked={option.selected === true}\n onCheckedChange={() => this.handleSelection(index)}\n />\n ) : (\n <br-radio\n exportparts=\"radio-input, radio-label\"\n name={`radio-${index}-${this.customId}`}\n label={option.label || option.value}\n checked={option.selected === true}\n onCheckedChange={() => this.handleSelection(index)}\n />\n )}\n </div>\n ))\n }\n\n /**\n * Determina um id para o radio.\n */\n private getComputedId() {\n return this.customId?.length > 0 ? this.customId : `br-select-${this.customId}`\n }\n\n /**\n * Inverte o valor da prop `isOpen`\n */\n @Method()\n async toggleOpen() {\n this.isExpanded = !this.isExpanded\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-select': true,\n }\n }\n\n render() {\n return (\n <div class={this.getCssClassMap()} id={this.getComputedId()}>\n {this.renderInput()}\n\n {this.isExpanded && (\n <br-list tabindex={-1} onKeyDown={(event) => this.handleKeydownOnList(event)}>\n {this.isMultiple && this.renderSelectAllCheckbox()}\n {this.renderOptions()}\n </br-list>\n )}\n </div>\n )\n }\n}\n\nlet selectId = 0\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["loadingCss","Loading","constructor","hostRef","this","isProgress","customId","loadingId","progressPercent","isMedium","getCssClassMap","medium","getAriaLabel","ariaLabel","trim","label","undefined","getProgressBarProps","progressValue","_a","class","String","id","role","renderProgressLoading","h","Object","assign","renderIndeterminateLoading","render","Host","key"],"sources":["../../packages/webcomponents/src/components/loading/loading.scss?tag=br-loading&encapsulation=shadow","../../packages/webcomponents/src/components/loading/loading.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/loading/loading\";\n\n:host {\n display: block;\n\n .br-loading,\n .loading {\n z-index: auto;\n }\n\n .indeterminate-alignment {\n display: flex;\n align-items: center;\n justify-content: center;\n\n &.vertical {\n flex-direction: column;\n\n .rotulo {\n margin-top: 16px;\n margin-left: 0;\n }\n }\n\n &.horizontal {\n flex-direction: row;\n\n .rotulo {\n margin-top: 0;\n margin-left: 16px;\n }\n }\n }\n}\n","import { Component, Element, h, Host, Prop } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/loading?tab=designer).\n */\n@Component({\n tag: 'br-loading',\n styleUrl: 'loading.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Loading {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrLoadingElement\n\n /**\n * Determina o tipo de indicador a ser exibido:\n * - Se verdadeiro, exibirá uma barra de progresso com a porcentagem de progresso.\n * - Se falso, exibirá um indicador de carregamento indeterminado.\n */\n @Prop({ reflect: true }) readonly isProgress: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-loading-${loadingId++}`\n\n /**\n * Define a porcentagem de progresso a ser exibida na barra de progresso.\n * Deve ser um valor numérico entre 0 e 100. Ignorado se `isProgress` estiver definido como falso.\n */\n @Prop({ reflect: true }) readonly progressPercent: number = 100\n\n /**\n * Se verdadeiro, ajusta o tamanho do indicador de carregamento indeterminado para o tamanho médio.\n * Esta propriedade afeta apenas o loading indeterminado.\n */\n @Prop({ reflect: true }) readonly isMedium: boolean = false\n\n /**\n * Texto a ser exibido abaixo do indicador de carregamento.\n * Pode ser usado para fornecer informações adicionais ou descritivas sobre o estado do carregamento.\n */\n @Prop({ reflect: true }) readonly label: string\n\n /**\n * Define o texto do aria-label para acessibilidade.\n * Se não fornecido, será usado o valor da prop 'label' ou 'Progresso de carregamento' como fallback para loading com progresso.\n */\n @Prop({ reflect: true }) readonly ariaLabel: string\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-loading': true,\n medium: this.isMedium,\n }\n }\n\n private getAriaLabel(): string {\n if (this.ariaLabel && this.ariaLabel.trim() !== '') {\n return this.ariaLabel\n } else if (this.label && this.label.trim() !== '') {\n return this.label\n }\n\n return undefined\n }\n\n private getProgressBarProps() {\n const progressValue = this.progressPercent ?? 0\n\n return {\n class: 'br-loading',\n 'data-progress': this.progressPercent,\n 'aria-valuemin': '0',\n 'aria-valuenow': String(progressValue),\n 'aria-valuemax': '100',\n id: this.customId,\n role: 'progressbar',\n 'aria-label': this.getAriaLabel() || 'Progresso de carregamento',\n }\n }\n\n private renderProgressLoading() {\n return (\n <div {...this.getProgressBarProps()}>\n <div class=\"br-loading-mask full\">\n <div class=\"br-loading-fill\"></div>\n </div>\n <div class=\"br-loading-mask\">\n <div class=\"br-loading-fill\"></div>\n </div>\n </div>\n )\n }\n\n private renderIndeterminateLoading() {\n return (\n <div class={`indeterminate-alignment ${this.isMedium ? 'vertical' : 'horizontal'}`}>\n <div id={this.customId} class={this.getCssClassMap()} role=\"status\" aria-label={this.getAriaLabel()} />\n <span class=\"rotulo\">{this.label}</span>\n </div>\n )\n }\n\n render() {\n return <Host>{this.isProgress ? this.renderProgressLoading() : this.renderIndeterminateLoading()}</Host>\n }\n}\n\nlet loadingId = 0\n"],"mappings":";;;;;;AAAA,MAAMA,IAAa;;MCYNC,IAAO;EANpB,WAAAC,CAAAC;;;;;;eAkBoCC,KAAUC,aAAY;;;;eAMtBD,KAAAE,WAAmB,cAAcC;;;;;IAMjCH,KAAeI,kBAAW;;;;eAM1BJ,KAAQK,WAAY;AAuEvD;EAzDS,cAAAC;IACN,OAAO;MACL,cAAc;MACdC,QAAQP,KAAKK;;;EAIT,YAAAG;IACN,IAAIR,KAAKS,aAAaT,KAAKS,UAAUC,WAAW,IAAI;MAClD,OAAOV,KAAKS;WACP,IAAIT,KAAKW,SAASX,KAAKW,MAAMD,WAAW,IAAI;MACjD,OAAOV,KAAKW;;IAGd,OAAOC;;EAGD,mBAAAC;;IACN,MAAMC,KAAgBC,IAAAf,KAAKI,qBAAe,QAAAW,WAAA,IAAAA,IAAI;IAE9C,OAAO;MACLC,OAAO;MACP,iBAAiBhB,KAAKI;MACtB,iBAAiB;MACjB,iBAAiBa,OAAOH;MACxB,iBAAiB;MACjBI,IAAIlB,KAAKE;MACTiB,MAAM;MACN,cAAcnB,KAAKQ,kBAAkB;;;EAIjC,qBAAAY;IACN,OACEC,EAAA,OAAAC,OAAAC,OAAA,IAASvB,KAAKa,wBACZQ,EAAK;MAAAL,OAAM;OACTK,EAAA;MAAKL,OAAM;SAEbK,EAAK;MAAAL,OAAM;OACTK,EAAA;MAAKL,OAAM;;;EAMX,0BAAAQ;IACN,OACEH,EAAK;MAAAL,OAAO,2BAA2BhB,KAAKK,WAAW,aAAa;OAClEgB,EAAK;MAAAH,IAAIlB,KAAKE;MAAUc,OAAOhB,KAAKM;MAAkBa,MAAK;MAAQ,cAAanB,KAAKQ;QACrFa,EAAM;MAAAL,OAAM;OAAUhB,KAAKW;;EAKjC,MAAAc;IACE,OAAOJ,EAACK,GAAM;MAAAC,KAAA;OAAA3B,KAAKC,aAAaD,KAAKoB,0BAA0BpB,KAAKwB;;;;;;;;;;AAIxE,IAAIrB,IAAY","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["dividerCss","Divider","constructor","hostRef","this","customId","Helpers","generateUniqueId","orientation","thickness","borderStyle","isDarkMode","color","bleed","updateColor","el","style","setProperty","connectedCallback","hasDefaultSlotContent","componentDidLoad","setVerticalOrientation","setBleed","disconnectedCallback","unsetBleed","div","document","createElement","className","display","height","insertAdjacentElement","appendChild","applyMarginOnRootElement","window","addEventListener","bind","removeEventListener","innerHTML","trim","getHostParentPadding","hostParent","parentElement","getComputedStyle","paddingLeft","parseFloat","paddingRight","rootElement","_a","shadowRoot","querySelector","setAttribute","getCssClassMap","align","renderDefaultSlotDivider","h","class","role","id","renderStandardDivider","render","Host","key"],"sources":["../../packages/webcomponents/src/components/divider/divider.scss?tag=br-divider&encapsulation=shadow","../../packages/webcomponents/src/components/divider/divider.tsx"],"sourcesContent":[":host {\n display: block;\n\n .br-divider {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin: 20px 0;\n border: none;\n background-color: transparent;\n\n &::before,\n &::after {\n content: \"\";\n flex: 1;\n border-top: var(--divider-size, 1px) solid var(--border-color, black);\n }\n\n &.dashed {\n border-top: none;\n background: none;\n\n &::before,\n &::after {\n border-top: var(--divider-size, 1px) dashed var(--border-color);\n }\n }\n\n &.dashed.vertical {\n border-right: var(--divider-size, 1px) dashed var(--border-color);\n border-top: none;\n\n &::before,\n &::after {\n border-right: var(--divider-size, 1px) dashed var(--border-color);\n border-top: none;\n }\n }\n\n &.vertical {\n flex-direction: column;\n height: 100%;\n width: auto;\n margin: 0 10px;\n align-self: stretch;\n border-right-width: var(--divider-size);\n border-top-width: 0;\n\n &::before,\n &::after {\n border-right: var(--divider-size, 1px) solid var(--border-color, black);\n border-top: none;\n margin: 0;\n }\n }\n\n &.small {\n --divider-size: var(--surface-width-sm);\n }\n\n &.medium {\n --divider-size: var(--surface-width-md);\n }\n\n &.large {\n --divider-size: var(--surface-width-lg);\n }\n\n &.divider-start {\n justify-content: flex-start;\n\n &::before {\n flex: 0 0 0px;\n margin-right: var(--spacing-scale-base);\n }\n }\n\n &.divider-center {\n justify-content: center;\n }\n\n &.divider-end {\n justify-content: flex-end;\n\n &::after {\n flex: 0 0 0px;\n margin-left: var(--spacing-scale-base);\n }\n }\n }\n\n .divider-start::after,\n .divider-center::before,\n .divider-center::after,\n .divider-end::before {\n margin: 0 var(--spacing-scale-base);\n }\n\n .divider-start::before {\n margin-right: var(--spacing-scale-base);\n }\n\n .divider-end::after {\n margin-left: var(--spacing-scale-base);\n }\n\n :host(:empty)::before,\n :host(:empty)::after {\n margin: 0;\n }\n}\n","import { Component, Element, h, Host, Prop, Watch } from '@stencil/core'\n\nimport Helpers from '../../utils/helpers'\n\ntype DividerOrientation = 'horizontal' | 'vertical'\ntype DividerThickness = 'small' | 'medium' | 'large'\ntype DividerBorderStyle = 'dashed' | 'solid'\ntype DividerAlign = 'start' | 'center' | 'end'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/divider?tab=designer).\n *\n * @slot default - Conteúdo opcional que pode ser exibido dentro do divisor, como texto, ícones ou outros elementos personalizados.\n */\n@Component({\n tag: 'br-divider',\n styleUrl: 'divider.scss',\n shadow: true,\n})\nexport class Divider {\n @Element() el: HTMLBrDividerElement\n\n /**\n * ID personalizado para o elemento, útil para acessibilidade e identificação única.\n * Se não for fornecido, um ID único será gerado automaticamente.\n */\n @Prop({ reflect: true }) readonly customId: string = Helpers.generateUniqueId()\n\n /**\n * Define a orientação do divisor.\n * Pode ser 'horizontal' ou 'vertical'.\n * Caso seja usado como vertical, o divider deve ser colocado dentro de um container com altura definida.\n * @default horizontal\n */\n @Prop({ reflect: true }) orientation: DividerOrientation = 'horizontal'\n\n /**\n * Define a espessura do divisor.\n * Pode ser 'small', 'medium' ou 'large'.\n * @default small\n */\n @Prop({ reflect: true }) thickness: DividerThickness = 'small'\n\n /**\n * Define o estilo da borda do divisor.\n * Pode ser 'dashed' ou 'solid'.\n * @default solid\n */\n @Prop({ reflect: true }) borderStyle: DividerBorderStyle = 'solid'\n\n /**\n * Define se o divisor deve ser exibido no modo escuro.\n * @default false\n */\n @Prop({ reflect: true }) isDarkMode: boolean = false\n\n /**\n * Cor do divisor.\n * Pode ser uma cor hexadecimal, RGB ou nome de cor CSS.\n * Se não for especificada, o divisor usará a cor padrão definida pelo tema.\n * @default null\n */\n @Prop({ reflect: true }) color: string = null\n\n /**\n * Alinhamento do conteúdo do divisor.\n * Pode ser 'start', 'center' ou 'end'.\n * @default undefined\n */\n @Prop() align: DividerAlign\n\n /**\n * Define se o divisor deve \"sangrar\" (bleed) nas laterais, ou seja, se deve ocupar toda a largura do container pai.\n * Isso é útil quando o divisor precisa se estender além do padding do container pai.\n * @default false\n */\n @Prop() bleed: boolean = false\n\n /**\n * Watcher para a cor do divisor.\n * Atualiza a propriedade CSS '--border-color' do elemento para refletir a cor definida.\n * Isso permite que o divisor use cores personalizadas sem precisar de estilos adicionais.\n */\n @Watch('color')\n updateColor() {\n this.el.style.setProperty('--border-color', this.color)\n }\n\n /**\n * Ciclo de vida do componente.\n * Chamado quando o componente é conectado ao DOM.\n */\n connectedCallback() {\n this.hasDefaultSlotContent()\n }\n\n /**\n * Ciclo de vida do componente.\n * Chamado após o componente ser renderizado no DOM.\n */\n componentDidLoad() {\n this.setVerticalOrientation()\n this.setBleed()\n this.updateColor()\n }\n\n /**\n * Ciclo de vida do componente.\n * Chamado quando o componente é desconectado do DOM.\n */\n disconnectedCallback() {\n this.unsetBleed()\n }\n /**\n * Configura o divisor para orientação vertical.\n * Se a orientação for 'vertical', cria um elemento <div> adicional para manter o layout correto.\n */\n private setVerticalOrientation() {\n if (this.orientation === 'vertical') {\n const div = document.createElement('div')\n div.className = 'vertical-divider'\n div.style.display = 'flex'\n div.style.height = '100%'\n this.el.insertAdjacentElement('beforebegin', div)\n div.appendChild(this.el)\n }\n }\n\n /**\n * Configura o divisor para sangrar (bleed) nas laterais.\n */\n private setBleed() {\n if (this.bleed) {\n this.applyMarginOnRootElement()\n window.addEventListener('resize', this.applyMarginOnRootElement.bind(this))\n }\n }\n\n /**\n * Remove o sangramento (bleed) do divisor.\n */\n private unsetBleed() {\n if (this.bleed) {\n window.removeEventListener('resize', this.applyMarginOnRootElement.bind(this))\n }\n }\n\n /**\n * Verifica se o divisor tem conteúdo no slot padrão.\n * @returns true se o divisor tiver conteúdo no slot padrão, false caso contrário.\n */\n private hasDefaultSlotContent(): boolean {\n return this.el.innerHTML.trim() !== ''\n }\n\n /**\n * Determina o paddingLeft e paddingRight do elemento pai do host.\n * @returns Um objeto contendo os valores de paddingLeft e paddingRight do elemento pai do host.\n */\n private getHostParentPadding() {\n const hostParent = this.el.parentElement\n if (hostParent !== null) {\n const style = getComputedStyle(hostParent)\n return { paddingLeft: parseFloat(style.paddingLeft), paddingRight: parseFloat(style.paddingRight) }\n }\n return { paddingLeft: 0, paddingRight: 0 }\n }\n\n /**\n * Aplica margens negativas no elemento raiz do divisor para compensar o padding do elemento pai.\n * Isso é necessário quando o divisor está configurado para sangrar (bleed).\n */\n private applyMarginOnRootElement() {\n const { paddingLeft, paddingRight } = this.getHostParentPadding()\n const rootElement = this.el.shadowRoot?.querySelector('.br-divider')\n rootElement.setAttribute('style', `margin-left: -${paddingLeft}px; margin-right: -${paddingRight * 2}px;`)\n }\n\n /**\n * Define as classes CSS que serão aplicadas ao divisor.\n * @returns Uma string contendo as classes CSS que serão aplicadas ao divisor.\n */\n private getCssClassMap() {\n return `br-divider divider-${this.align} ${this.orientation} ${this.borderStyle} ${this.thickness} ${this.isDarkMode ? 'dark-mode' : ''}`\n }\n\n /**\n * Renderiza o divisor quando há conteúdo no slot padrão.\n * @returns JSX.Element\n */\n private renderDefaultSlotDivider() {\n return (\n <div\n class={this.getCssClassMap()}\n role=\"separator\"\n aria-orientation={this.orientation}\n aria-labelledby={this.customId}\n >\n <span id={this.customId}>\n <slot></slot>\n </span>\n </div>\n )\n }\n\n /**\n * Renderiza o divisor quando não há conteúdo no slot padrão.\n * @returns JSX.Element\n */\n private renderStandardDivider() {\n return <hr class={this.getCssClassMap()} />\n }\n\n /**\n * Renderiza o divisor.\n * @returns JSX.Element\n */\n render() {\n return <Host>{this.hasDefaultSlotContent() ? this.renderDefaultSlotDivider() : this.renderStandardDivider()}</Host>\n }\n}\n"],"mappings":";;;;;;;;AAAA,MAAMA,IAAa;;MCmBNC,IAAO;EALpB,WAAAC,CAAAC;;;;;eAYoCC,KAAAC,WAAmBC,EAAQC;;;;;;eAQpCH,KAAWI,cAAuB;;;;;eAOlCJ,KAASK,YAAqB;;;;;eAO9BL,KAAWM,cAAuB;;;;eAMlCN,KAAUO,aAAY;;;;;;eAQtBP,KAAKQ,QAAW;;;;;eAcjCR,KAAKS,QAAY;AAgJ1B;;;;;SAxIC,WAAAC;IACEV,KAAKW,GAAGC,MAAMC,YAAY,kBAAkBb,KAAKQ;;;;;SAOnD,iBAAAM;IACEd,KAAKe;;;;;SAOP,gBAAAC;IACEhB,KAAKiB;IACLjB,KAAKkB;IACLlB,KAAKU;;;;;SAOP,oBAAAS;IACEnB,KAAKoB;;;;;SAMC,sBAAAH;IACN,IAAIjB,KAAKI,gBAAgB,YAAY;MACnC,MAAMiB,IAAMC,SAASC,cAAc;MACnCF,EAAIG,YAAY;MAChBH,EAAIT,MAAMa,UAAU;MACpBJ,EAAIT,MAAMc,SAAS;MACnB1B,KAAKW,GAAGgB,sBAAsB,eAAeN;MAC7CA,EAAIO,YAAY5B,KAAKW;;;;;SAOjB,QAAAO;IACN,IAAIlB,KAAKS,OAAO;MACdT,KAAK6B;MACLC,OAAOC,iBAAiB,UAAU/B,KAAK6B,yBAAyBG,KAAKhC;;;;;SAOjE,UAAAoB;IACN,IAAIpB,KAAKS,OAAO;MACdqB,OAAOG,oBAAoB,UAAUjC,KAAK6B,yBAAyBG,KAAKhC;;;;;;SAQpE,qBAAAe;IACN,OAAOf,KAAKW,GAAGuB,UAAUC,WAAW;;;;;SAO9B,oBAAAC;IACN,MAAMC,IAAarC,KAAKW,GAAG2B;IAC3B,IAAID,MAAe,MAAM;MACvB,MAAMzB,IAAQ2B,iBAAiBF;MAC/B,OAAO;QAAEG,aAAaC,WAAW7B,EAAM4B;QAAcE,cAAcD,WAAW7B,EAAM8B;;;IAEtF,OAAO;MAAEF,aAAa;MAAGE,cAAc;;;;;;SAOjC,wBAAAb;;IACN,OAAMW,aAAEA,GAAWE,cAAEA,KAAiB1C,KAAKoC;IAC3C,MAAMO,KAAcC,IAAA5C,KAAKW,GAAGkC,gBAAY,QAAAD,WAAA,aAAAA,EAAAE,cAAc;IACtDH,EAAYI,aAAa,SAAS,iBAAiBP,uBAAiCE,IAAe;;;;;SAO7F,cAAAM;IACN,OAAO,sBAAsBhD,KAAKiD,SAASjD,KAAKI,eAAeJ,KAAKM,eAAeN,KAAKK,aAAaL,KAAKO,aAAa,cAAc;;;;;SAO/H,wBAAA2C;IACN,OACEC,EACE;MAAAC,OAAOpD,KAAKgD;MACZK,MAAK;MAAW,oBACErD,KAAKI;MACN,mBAAAJ,KAAKC;OAEtBkD,EAAA;MAAMG,IAAItD,KAAKC;OACbkD,EAAa;;;;;SAUb,qBAAAI;IACN,OAAOJ,EAAA;MAAIC,OAAOpD,KAAKgD;;;;;;SAOzB,MAAAQ;IACE,OAAOL,EAACM,GAAM;MAAAC,KAAA;OAAA1D,KAAKe,0BAA0Bf,KAAKkD,6BAA6BlD,KAAKuD","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["tabCss","Tab","constructor","hostRef","this","TabId","Helpers","generateUniqueId","density","tabItems","tabContent","hostStyle","containerStyle","focusElementIndex","handleKeyNavigation","event","focusableTabs","Array","from","key","activeTabPanel","el","shadowRoot","querySelector","focusableElements","querySelectorAll","length","focus","activeIndex","nextIndex","nextButton","_b","_a","prevIndex","prevButton","_d","_c","handleTabClick","detail","id","setActiveTab","trim","getCssClassMap","colorMode","setupHostStyles","maxWidth","display","boxSizing","updateContainerStyles","overflow","width","getTabItemsElements","slotItems","children","forEach","tab","setAttribute","hasAttribute","updateTabContent","map","tabActive","isTabActive","getTabID","getAttribute","innerHTML","join","updateMaxWidth","window","componentRect","getBoundingClientRect","availableWidth","innerWidth","left","activeTab","verifActiveTab","selected","activeTabChanged","newValue","removeAttribute","error","console","brDidActive","emit","componentWillLoad","MutationObserver","mutationObserver","observe","childList","subtree","componentDidLoad","requestAnimationFrame","hndClick","addEventListener","disconnectedCallback","removeEventListener","disconnect","newActiveTab","render","h","Host","style","class","some","role"],"sources":["../../packages/webcomponents/src/components/tab/tab.scss?tag=br-tab&encapsulation=shadow","../../packages/webcomponents/src/components/tab/tab.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/tab/tab\";\n@import \"~@govbr-ds/core/src/partial/scss/configs/icons\";\n\n:host {\n display: block;\n}\n\n.results {\n display: flex;\n font-weight: var(--font-weight);\n justify-content: center;\n margin-top: var(--spacing-scale-2x);\n position: absolute;\n top: 100%;\n}\n\n.br-tab {\n max-width: 100vw; /* Impede que o elemento ultrapasse a largura da janela */\n overflow-x: hidden; /* Evita rolagem horizontal indesejada */\n padding: 16px;\n box-sizing: border-box;\n}\n\n.tab-nav[data-counter=\"true\"] ul {\n max-height: 65px;\n}\n\n.tab-nav[data-counter=\"true\"] {\n overflow: hidden;\n min-height: 102px;\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Prop, State, Watch } from '@stencil/core'\n\nimport Helpers from '../../utils/helpers'\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/tab-item?tab=designer).\n *\n * @slot default - Slot com os componentes item da tab\n */\n@Component({\n tag: 'br-tab',\n styleUrl: 'tab.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Tab {\n @Element() el: HTMLBrTabElement\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly TabId: string = Helpers.generateUniqueId()\n\n /**\n * A propriedade 'density' define a densidade do componente.\n * Os valores possíveis são 'small', 'medium' e 'large'.\n */\n @Prop({ reflect: true }) readonly density: 'small' | 'medium' | 'large' = 'medium'\n\n /**\n * Define se o Tab usará um esquema de cores.\n * Apenas o esquema 'dark' está disponível para o modo escuro.\n */\n @Prop({ reflect: true }) colorMode: string\n\n /**\n * A propriedade 'activeTab' define o tab ativo.\n */\n @State() activeTab: string\n\n /**\n * A propriedade 'tabItems' lista dos tabs items .\n */\n @State() tabItems: Element[] = []\n\n /**\n * A propriedade 'tabContent' armazena o conteúdo dos tabs.\n * @type {string}\n * @memberof Tab\n */\n @State() tabContent: string = ''\n\n private maxWidth: string\n private hostStyle: { [key: string]: string } = {}\n private containerStyle: { [key: string]: string } = {}\n private mutationObserver: MutationObserver\n private focusElementIndex: number = 0\n\n /**\n * Evento disparado quando um tab é ativado.\n */\n @Event() brDidActive: EventEmitter\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-tab': true,\n [this.density]: true,\n 'dark-mode': this.colorMode === 'dark',\n }\n }\n\n private setupHostStyles() {\n this.hostStyle = {\n maxWidth: '100%',\n display: 'block',\n boxSizing: 'border-box',\n }\n }\n\n private updateContainerStyles() {\n this.containerStyle = {\n maxWidth: this.maxWidth,\n overflow: 'hidden',\n width: '100%',\n boxSizing: 'border-box',\n }\n }\n /**\n * Obtém os elementos de tab items dentro do componente.\n * Se não houver elementos, emite um aviso.\n * @private\n * @returns {void}\n * @memberof Tab\n */\n private getTabItemsElements() {\n const slotItems = Array.from(this.el.children)\n\n slotItems.forEach((tab) => {\n if (this.colorMode) tab.setAttribute('color-mode', this.colorMode)\n if (!tab.hasAttribute('tab-item-id')) {\n tab.setAttribute('tab-item-id', Helpers.generateUniqueId())\n }\n })\n\n this.tabItems = slotItems\n }\n\n /**\n * Atualiza o conteúdo dos tabs com base nos elementos de tab items.\n * Cada tab item é transformado em um painel de tab com o ID apropriado.\n * O painel ativo é marcado com a classe 'active'.\n * @private\n * @returns {void}\n * @memberof Tab\n * @description\n */\n private updateTabContent() {\n this.tabContent = this.tabItems\n .map((tab: Element) => {\n const tabActive = this.isTabActive(tab)\n\n return `\n <div\n id=\"tab-panel-${this.getTabID(tab)}\"\n role=\"tabpanel\"\n aria-labelledby=\"tab-button-${tab.getAttribute('tab-item-id')}\"\n class=\"tab-panel${tabActive ? ' active' : ''}\"\n >\n ${tab.innerHTML} \n </div>\n `\n })\n .join('')\n }\n /**\n * Atualiza a largura máxima do componente com base na largura da janela.\n * Se a largura da janela não estiver disponível, define a largura máxima como 100%.\n * @private\n * @returns {void}\n * @memberof Tab\n * @description\n * Esta função calcula a largura máxima do componente com base na posição do elemento na tela.\n */\n private updateMaxWidth() {\n if (typeof window !== 'undefined') {\n const componentRect = this.el.getBoundingClientRect()\n const availableWidth = window.innerWidth - componentRect.left\n this.maxWidth = `${availableWidth - 5}px`\n } else {\n this.maxWidth = '100%'\n }\n this.updateContainerStyles()\n }\n\n /**\n * Obtém o ID do tab item.\n * @private\n * @param {Element} tab - O elemento do tab item.\n * @returns {string} - O ID do tab item.\n * @memberof Tab\n * @description\n * Esta função retorna o ID do tab item, que é armazenado no atributo 'tab-item-id'.\n */\n private getTabID(tab: Element): string {\n return tab.getAttribute('tab-item-id')\n }\n /**\n *\n * @param tab\n * @returns\n */\n private isTabActive(tab: Element): boolean {\n return this.getTabID(tab) === this.activeTab\n }\n\n private verifActiveTab() {\n const selected = this.el.querySelector('br-tab-item[active]')\n if (!selected && this.tabItems.length > 0) {\n this.activeTab = this.getTabID(this.tabItems[0])\n } else if (selected) {\n this.activeTab = this.getTabID(selected)\n }\n }\n\n @Watch('activeTab')\n activeTabChanged(newValue: string) {\n this.tabItems.forEach((tab) => {\n try {\n if (this.getTabID(tab) === newValue) {\n tab.setAttribute('is-active', 'true')\n tab.setAttribute('aria-selected', 'true')\n } else {\n if (tab.hasAttribute('is-active')) {\n if (tab) {\n tab.removeAttribute('is-active')\n }\n tab.removeAttribute('aria-selected')\n }\n }\n } catch (error) {\n console.error('Failed to remove attribute \"is-active\":', error)\n }\n })\n this.updateTabContent()\n this.brDidActive.emit({ id: newValue })\n }\n\n /**\n * Evento de navegação por teclado\n * @param event\n */\n private handleKeyNavigation = (event: KeyboardEvent) => {\n const focusableTabs = Array.from(this.tabItems) as HTMLElement[]\n\n if (event.key === 'ArrowDown') {\n const activeTabPanel = this.el.shadowRoot.querySelector('.tab-panel.active') as HTMLElement\n if (activeTabPanel) {\n const focusableElements = Array.from(\n activeTabPanel.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n ) as HTMLElement[]\n if (focusableElements.length > 0) {\n focusableElements[0].focus()\n }\n }\n }\n\n const activeIndex = this.focusElementIndex\n if (event.key === 'ArrowRight') {\n const nextIndex = (activeIndex + 1) % focusableTabs.length\n const nextButton = focusableTabs[nextIndex]?.shadowRoot?.querySelector('button')\n if (nextButton) {\n nextButton.focus()\n this.focusElementIndex = nextIndex\n }\n } else if (event.key === 'ArrowLeft') {\n const prevIndex = (activeIndex - 1 + focusableTabs.length) % focusableTabs.length\n const prevButton = focusableTabs[prevIndex]?.shadowRoot?.querySelector('button')\n if (prevButton) {\n prevButton.focus()\n this.focusElementIndex = prevIndex\n }\n }\n }\n\n componentWillLoad() {\n this.getTabItemsElements()\n this.setupHostStyles()\n this.updateTabContent()\n\n if (typeof window !== 'undefined' && typeof MutationObserver !== 'undefined') {\n // window.addEventListener('resize', () => this.updateMaxWidth());\n\n this.mutationObserver = new MutationObserver(() => this.updateMaxWidth())\n this.mutationObserver.observe(this.el, { childList: true, subtree: true })\n\n this.updateMaxWidth()\n } else {\n this.maxWidth = '100%'\n this.updateContainerStyles()\n }\n }\n\n componentDidLoad() {\n if (!this.el) {\n console.error('Host element is not defined.')\n return\n }\n requestAnimationFrame(() => this.verifActiveTab())\n\n // Use the class method directly\n if (this.el) {\n try {\n const hndClick = this.handleTabClick\n this.el.addEventListener('keydown', this.handleKeyNavigation)\n this.el.addEventListener('itemTabClick', hndClick)\n } catch (error) {\n console.error('Failed to add event listener for itemTabClick:', error)\n }\n }\n }\n\n disconnectedCallback() {\n if (typeof window !== 'undefined') {\n window.removeEventListener('resize', () => this.updateMaxWidth())\n }\n if (this.mutationObserver) this.mutationObserver.disconnect()\n this.el.removeEventListener('itemTabClick', this.handleTabClick)\n this.el.removeEventListener('keydown', this.handleKeyNavigation) // Remove the keydown listener\n }\n\n private handleTabClick: (event: CustomEvent<{ id: string }>) => void = (event) => {\n if (event.detail && event.detail.id) {\n this.setActiveTab(event.detail.id.trim())\n }\n }\n\n private setActiveTab(newActiveTab: string) {\n // if (this.activeTab !== newActiveTab) {\n this.activeTab = newActiveTab\n // }\n }\n\n render() {\n return (\n <Host style={this.hostStyle}>\n <div class={this.getCssClassMap()} style={this.containerStyle}>\n <nav\n class=\"tab-nav\"\n data-counter={this.tabItems.some((tab) => tab.hasAttribute('counter')) ? 'true' : 'false'}\n >\n <ul role=\"tablist\">\n <slot></slot>\n </ul>\n </nav>\n <div class=\"tab-content\" innerHTML={this.tabContent}></div>\n </div>\n </Host>\n )\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["avatarCss","Avatar","constructor","hostRef","this","density","customId","avatarId","alt","isIconic","disabled","hasError","iconSizes","small","height","width","medium","large","iconMarginTops","handleImageError","console","error","src","handleDensityChange","newValue","includes","warn","el","setAttribute","componentWillLoad","getCssClassMap","renderAvatar","_a","text","trim","length","h","class","title","toUpperCase","_b","loading","onError","_c","iconHeight","_d","_e","iconWidth","_f","style","_g","iconMarginTop","render","Host","key","id"],"sources":["../../packages/webcomponents/src/components/avatar/avatar.scss?tag=br-avatar&encapsulation=shadow","../../packages/webcomponents/src/components/avatar/avatar.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/avatar/avatar\";\n\n:host {\n display: inline-block;\n}\n","import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/avatar?tab=designer).\n */\n@Component({\n tag: 'br-avatar',\n styleUrl: 'avatar.scss',\n shadow: true,\n})\nexport class Avatar {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrAvatarElement\n\n /**\n * Ajusta a densidade, alterando o espaçamento interno para um visual mais compacto ou mais expandido.\n */\n @Prop({ mutable: true }) density: 'small' | 'medium' | 'large' = 'medium'\n\n @Watch('density')\n handleDensityChange(newValue: 'small' | 'medium' | 'large') {\n if (!['small', 'medium', 'large'].includes(newValue)) {\n console.warn(`Valor inválido para density: ${newValue}. Usando 'medium'.`)\n this.density = 'medium'\n }\n this.el.setAttribute('density', this.density)\n }\n\n /**\n * Executa validações iniciais quando o componente é carregado\n */\n componentWillLoad() {\n this.handleDensityChange(this.density)\n }\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-avatar-${avatarId++}`\n\n /**\n * URL da imagem a ser exibida no avatar do tipo 'fotográfico'.\n * Deve ser uma URL válida que aponta para a imagem desejada.\n */\n @Prop() readonly src: string\n\n /**\n * Texto alternativo (alt) associado à imagem do avatar. Essencial para acessibilidade e SEO.\n * Deve descrever de forma clara e concisa o conteúdo da imagem, por exemplo: \"Foto de perfil de João Silva\".\n */\n @Prop() readonly alt = 'Imagem do avatar'\n\n /**\n * Indica se o avatar deve ser exibido como um ícone em vez de uma imagem fotográfica.\n * Se definido como verdadeiro, o avatar será exibido como um ícone.\n */\n @Prop() readonly isIconic: boolean = false\n\n /**\n * Texto exibido no avatar do tipo 'letra'.\n * Esse texto será mostrado em vez de uma imagem e pode ser usado para representar iniciais ou outras informações textuais.\n */\n @Prop() readonly text: string\n\n /**\n * Largura do ícone no avatar do tipo icônico\n * */\n @Prop() readonly iconWidth: string\n\n /**\n * Altura do ícone no avatar do tipo icônico\n */\n @Prop() readonly iconHeight: string\n\n /**\n * Ajuste para a margem de cima do ícone no avatar do tipo icônico\n */\n @Prop() readonly iconMarginTop: string\n\n /**\n * Define se o avatar está desabilitado\n */\n @Prop() readonly disabled = false\n\n @State() private hasError = false\n\n /**\n * Gera um mapa de classes CSS com base nas propriedades do componente.\n * O mapa de classes determina quais classes CSS devem ser aplicadas\n * ao elemento host do componente, ajustando sua aparência.\n *\n * @returns {CssClassMap} Objeto contendo as classes CSS aplicadas.\n */\n private getCssClassMap(): CssClassMap {\n return {\n 'br-avatar': true,\n [this.density]: true,\n error: this.hasError,\n disabled: this.disabled,\n }\n }\n\n private readonly iconSizes = {\n small: { height: '32px', width: '40px' },\n medium: { height: '80px', width: '88px' },\n large: { height: '128px', width: '136px' },\n }\n\n private readonly iconMarginTops = {\n small: '0.7em',\n medium: '1em',\n large: '0.62em',\n }\n\n private readonly handleImageError = () => {\n this.hasError = true\n console.error(`Erro ao carregar imagem do avatar: ${this.src}`)\n }\n\n private renderAvatar() {\n if (this.text?.trim().length > 0) {\n return (\n <span class=\"content bg-support-01 text-pure-0\" title={this.text}>\n {this.text[0].toUpperCase()}\n </span>\n )\n } else if (this.src?.trim().length > 0 && !this.hasError) {\n return (\n <span class=\"content\" title={this.alt || this.text}>\n <img src={this.src} alt={this.alt} loading=\"lazy\" onError={this.handleImageError} />\n </span>\n )\n } else {\n return (\n <span class=\"content\" title={this.text}>\n <br-icon\n icon-name=\"fa-solid:user\"\n height={this.iconHeight?.length > 0 ? this.iconHeight : this.iconSizes[this.density]?.height}\n width={this.iconWidth?.length > 0 ? this.iconWidth : this.iconSizes[this.density]?.width}\n aria-hidden=\"true\"\n style={{\n 'margin-top': this.iconMarginTop?.length > 0 ? this.iconMarginTop : this.iconMarginTops[this.density],\n }}\n ></br-icon>\n </span>\n )\n }\n }\n\n render() {\n return (\n <Host>\n <span id={this.customId} class={this.getCssClassMap()} aria-disabled={this.disabled}>\n {this.renderAvatar()}\n </span>\n </Host>\n )\n }\n}\n\nlet avatarId = 0\n"],"mappings":";;;;;;AAAA,MAAMA,IAAY;;MCYLC,IAAM;EALnB,WAAAC,CAAAC;;;;eAe2BC,KAAOC,UAAiC;;;;eAsB/BD,KAAAE,WAAmB,aAAaC;;;;;IAYjDH,KAAGI,MAAG;;;;eAMNJ,KAAQK,WAAY;;;eA0BpBL,KAAQM,WAAG;IAEXN,KAAQO,WAAG;IAkBXP,KAAAQ,YAAY;MAC3BC,OAAO;QAAEC,QAAQ;QAAQC,OAAO;;MAChCC,QAAQ;QAAEF,QAAQ;QAAQC,OAAO;;MACjCE,OAAO;QAAEH,QAAQ;QAASC,OAAO;;;IAGlBX,KAAAc,iBAAiB;MAChCL,OAAO;MACPG,QAAQ;MACRC,OAAO;;IAGQb,KAAgBe,mBAAG;MAClCf,KAAKO,WAAW;MAChBS,QAAQC,MAAM,sCAAsCjB,KAAKkB;AAAM;AA0ClE;EA3IC,mBAAAC,CAAoBC;IAClB,KAAK,EAAC,SAAS,UAAU,UAASC,SAASD,IAAW;MACpDJ,QAAQM,KAAK,gCAAgCF;MAC7CpB,KAAKC,UAAU;;IAEjBD,KAAKuB,GAAGC,aAAa,WAAWxB,KAAKC;;;;SAMvC,iBAAAwB;IACEzB,KAAKmB,oBAAoBnB,KAAKC;;;;;;;;SA8DxB,cAAAyB;IACN,OAAO;MACL,aAAa;MACb,CAAC1B,KAAKC,UAAU;MAChBgB,OAAOjB,KAAKO;MACZD,UAAUN,KAAKM;;;EAqBX,YAAAqB;;IACN,MAAIC,IAAA5B,KAAK6B,UAAI,QAAAD,WAAA,aAAAA,EAAEE,OAAOC,UAAS,GAAG;MAChC,OACEC,EAAA;QAAMC,OAAM;QAAoCC,OAAOlC,KAAK6B;SACzD7B,KAAK6B,KAAK,GAAGM;WAGb,MAAIC,IAAApC,KAAKkB,SAAG,QAAAkB,WAAA,aAAAA,EAAEN,OAAOC,UAAS,MAAM/B,KAAKO,UAAU;MACxD,OACEyB,EAAA;QAAMC,OAAM;QAAUC,OAAOlC,KAAKI,OAAOJ,KAAK6B;SAC5CG,EAAK;QAAAd,KAAKlB,KAAKkB;QAAKd,KAAKJ,KAAKI;QAAKiC,SAAQ;QAAOC,SAAStC,KAAKe;;WAG/D;MACL,OACEiB,EAAM;QAAAC,OAAM;QAAUC,OAAOlC,KAAK6B;SAChCG,EAAA;QAAA,aACY;QACVtB,UAAQ6B,IAAAvC,KAAKwC,gBAAY,QAAAD,WAAA,aAAAA,EAAAR,UAAS,IAAI/B,KAAKwC,cAAaC,IAAAzC,KAAKQ,UAAUR,KAAKC,cAAQ,QAAAwC,WAAA,aAAAA,EAAE/B;QACtFC,SAAO+B,IAAA1C,KAAK2C,eAAW,QAAAD,WAAA,aAAAA,EAAAX,UAAS,IAAI/B,KAAK2C,aAAYC,IAAA5C,KAAKQ,UAAUR,KAAKC,cAAQ,QAAA2C,WAAA,aAAAA,EAAEjC;QAAK,eAC5E;QACZkC,OAAO;UACL,gBAAcC,IAAA9C,KAAK+C,mBAAa,QAAAD,WAAA,aAAAA,EAAEf,UAAS,IAAI/B,KAAK+C,gBAAgB/C,KAAKc,eAAed,KAAKC;;;;;EAQzG,MAAA+C;IACE,OACEhB,EAACiB,GAAI;MAAAC,KAAA;OACHlB,EAAM;MAAAkB,KAAA;MAAAC,IAAInD,KAAKE;MAAU+B,OAAOjC,KAAK0B;MAAgB,iBAAiB1B,KAAKM;OACxEN,KAAK2B;;;;;;;;;;;;AAOhB,IAAIxB,IAAW","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["breadcrumbCss","Breadcrumb","constructor","hostRef","this","customId","breadcrumbId","homeUrl","defaultCrumbs","label","url","active","showTooltip","tooltipPosition","x","y","tooltipText","isSmallScreen","isTruncate","larguraInterna","larguraPai","isFolderOpen","updateContainerSize","entries","entry","containerWidth","contentRect","width","calcularLarguraItens","trunc","word","length","charactersNumberTruncate","slice","handleMouseOver","event","text","target","rect","getBoundingClientRect","left","top","handleMouseOut","getParsedItems","crumbs","parsed","JSON","parse","Array","isArray","_a","console","error","handleHomeClick","window","location","href","toggleFolder","getCssClassMap","small","connectedCallback","ResizeObserver","resizeObserver","el","parentElement","observe","disconnectedCallback","disconnect","requestAnimationFrame","itens","shadowRoot","querySelectorAll","totalWidth","forEach","item","componentDidLoad","renderHomeButton","buttonFolderClass","h","id","shape","onClick","renderTruncateButton","class","height","onKeyDown","handleKeyDown","renderBreadcrumbItems","parsedItems","lastItem","onMouseOver","onMouseOut","renderMobileActiveItem","renderBreadcrumbList","map","index","key","home","renderBreadcrumbLink","activeItem","find","tabindex","handleKeyDownOut","renderTooltip","style","setTimeout","element","getElementById","focus","render","Host"],"sources":["../../packages/webcomponents/src/components/breadcrumb/breadcrumb.scss?tag=br-breadcrumb&encapsulation=shadow","../../packages/webcomponents/src/components/breadcrumb/breadcrumb.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/breadcrumb/breadcrumb\";\n@import \"~@govbr-ds/core/src/partial/scss/configs/icons\";\n@import \"~@govbr-ds/core/src/components/button/button\";\n@import \"~@govbr-ds/core/src/components/list/list\";\n@import \"~@govbr-ds/core/src/components/item/item\";\n@import \"~@govbr-ds/core/src/components/divider/divider\";\n\n:host {\n display: block;\n}\n\n.br-breadcrumb {\n .br-icon {\n color: #ccc;\n }\n\n .br-icon,\n .mobile-active-page {\n display: flex;\n align-items: center;\n }\n\n .mobile-crumb-list {\n display: none;\n position: absolute;\n width: 200px;\n box-shadow: var(--surface-shadow-sm);\n }\n\n .mobile-crumb-list.show {\n display: block;\n top: 100%;\n z-index: 999;\n }\n\n .buttonFolderGroup,\n .buttonFolderGroup span {\n display: flex;\n align-items: center;\n }\n\n .mobile-active-page {\n span:focus:focus-visible {\n outline: var(--focus-width) var(--focus-style) var(--focus);\n outline-offset: var(--focus-offset);\n }\n\n [data-active] {\n margin: 0 var(--spacing-scale-2x) 0 var(--spacing-scale-base);\n }\n }\n\n .crumb {\n display: flex;\n align-items: center;\n\n span {\n display: flex;\n align-items: center;\n }\n }\n}\n\n.tooltip-box {\n position: fixed;\n background: #1351b4;\n color: #fff;\n padding: 8px 12px;\n border-radius: 4px;\n font-size: 12px;\n white-space: nowrap;\n transform: translate(-50%, -100%);\n pointer-events: none;\n z-index: 9999;\n box-shadow: 0 2px 4px rgba(0 0 0 / 20%);\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n\n &::after {\n content: \"\";\n position: absolute;\n bottom: -5px;\n left: 50%;\n transform: translateX(-50%);\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #1351b4;\n }\n}\n\n:host(:hover) {\n .tooltip-box {\n opacity: 1;\n }\n}\n","/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\nimport { AttachInternals, Component, Element, h, Host, Prop, State } from '@stencil/core'\n\ninterface BreadcrumbItem {\n label: string\n url?: string\n target?: string\n home?: boolean\n active?: boolean\n}\n@Component({\n tag: 'br-breadcrumb',\n styleUrl: 'breadcrumb.scss',\n shadow: true,\n})\nexport class Breadcrumb {\n @Element() el: HTMLBrBreadcrumbElement\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-breadcrumb-${breadcrumbId++}`\n\n /**\n * URL para home.\n * Caso não seja fornecido, o valor padrão será /.\n */\n @Prop() homeUrl: string = '/'\n\n /**\n * Define o array de objetos que receberá os nomes e links do breadcrumb.\n * Define valor padrão do breadcrumb 'defaultCrumbs'.\n */\n @Prop() crumbs: string | BreadcrumbItem[]\n\n private defaultCrumbs: BreadcrumbItem[] = [\n { label: 'Página 01', url: '/pagina-01' },\n { label: 'Página 02', url: '/pagina-02' },\n { label: 'Página Atual', active: true },\n ]\n\n /**\n * Define o estado oculto ou visível do tooltip.\n */\n @State() showTooltip: boolean = false\n\n /**\n * Define o posicionamento do tooltip na tela.\n */\n @State() tooltipPosition: { x: number; y: number } = { x: 0, y: 0 }\n\n /**\n * Define o texto do tooltip.\n */\n @State() tooltipText: string = ''\n\n /**\n * Define o estado isSmallScreen, usado para verificar a largura do container pai e aplicar as mudanças do formato mobile.\n * No formato mobile o breadcrumb apresenta um comportamento específico.\n */\n @State() isSmallScreen: boolean = false\n\n /**\n * Define se o breadcrumb deve truncar os itens por falta de espaço.\n */\n @State() isTruncate: boolean = false\n\n /**\n * Largura interna dos itens do breadcrumb.\n */\n @State() larguraInterna: number = 0\n\n /**\n * Largura do container pai do breadcrumb.\n */\n @State() larguraPai: number = 0\n\n /**\n * Define o estado do botão 'Folder'.\n * Caso a lista dropdown esteja oculta o ícone no botão será 'folder-plus'.\n * Caso a lista dropdown esteja visível o ícone no botão será 'folder-minus'.\n */\n @State() isFolderOpen: boolean = false\n\n /**\n * Verifica se o texto do link contém mais de 20 caracteres e realiza o truncamento deste caso positivo.\n * O número de caracteres pode ser configurado na variável 'charactersNumberTruncate'.\n */\n private trunc(word: string) {\n return word.length > charactersNumberTruncate ? `${word.slice(0, charactersNumberTruncate)}...` : word\n }\n\n /**\n * Exibe o tooltip e define seu posicionamento, caso o usuário realize o 'mouse over'.\n */\n private handleMouseOver(event: MouseEvent, text: string) {\n const target = event.target as HTMLElement | null\n if (!target) return\n\n const rect = target.getBoundingClientRect()\n this.tooltipPosition = { x: rect.left + rect.width / 2, y: rect.top - 10 }\n\n if (text.length > charactersNumberTruncate) {\n this.tooltipText = text\n this.showTooltip = true\n }\n }\n\n /**\n * Esconde o tooltip caso o usuário realize o 'mouse out'.\n */\n private handleMouseOut() {\n this.showTooltip = false\n }\n\n /**\n * Converte de string para JSON o valor passado na propriedade 'crumbs'.\n * Retorna o valor padrão do Breadcrumbs caso crumbs seja vazio ou inválido\n */\n private getParsedItems(): BreadcrumbItem[] {\n if (!this.crumbs || this.crumbs === '') {\n return this.defaultCrumbs\n }\n\n try {\n const parsed = typeof this.crumbs === 'string' ? JSON.parse(this.crumbs) : this.crumbs\n return Array.isArray(parsed) && parsed.length > 0 ? parsed : this.defaultCrumbs\n } catch {\n console.error('Invalid JSON format for crumbs:', this.crumbs)\n return this.defaultCrumbs\n }\n }\n\n /**\n * Ao clicar no botão HOME, direciona o usuário para URL passada na propriedade 'homeUrl'.\n */\n private handleHomeClick() {\n window.location.href = this.homeUrl\n }\n\n /**\n * Altera o estado do botão 'Folder', caso a lista dropdown esteja aberta ou fechada.\n */\n private toggleFolder() {\n this.isFolderOpen = !this.isFolderOpen\n }\n\n /**\n * Define as classes CSS usadas no breadcrumb.\n */\n private getCssClassMap(): { [key: string]: boolean } {\n return {\n 'br-breadcrumb': true,\n small: this.isSmallScreen,\n }\n }\n\n /**\n * Atualiza o estado 'isSmallScreen' com base no tamanho do container pai, se menor que 570px.\n */\n private resizeObserver: ResizeObserver\n\n /**\n * Atualiza os estados de largura do breadcrumb ao detectar mudanças no container pai.\n */\n private updateContainerSize = (entries: ResizeObserverEntry[]) => {\n for (const entry of entries) {\n const containerWidth = entry.contentRect.width\n this.isSmallScreen = containerWidth < 570\n this.larguraPai = containerWidth\n this.calcularLarguraItens()\n }\n }\n\n /**\n * Adiciona o 'resizeObserver' para checar o tamanho do container pai.\n */\n connectedCallback() {\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(this.updateContainerSize)\n if (this.el.parentElement !== null) {\n this.resizeObserver.observe(this.el.parentElement)\n }\n }\n }\n\n /**\n * Remove o 'resizeObserver'.\n */\n disconnectedCallback() {\n if (this.resizeObserver != null) {\n this.resizeObserver.disconnect()\n }\n }\n\n /**\n * Calcula a largura total dos itens do breadcrumb para determinar se precisa de truncamento.\n */\n private calcularLarguraItens() {\n requestAnimationFrame(() => {\n const itens = this.el.shadowRoot?.querySelectorAll('.crumb, .mobile-active-page, br-item')\n if (itens) {\n let totalWidth = 0\n itens.forEach((item) => {\n totalWidth += (item as HTMLElement).getBoundingClientRect().width\n })\n this.larguraInterna = totalWidth\n this.isTruncate = this.larguraInterna > this.larguraPai\n }\n })\n }\n\n /**\n * Executa cálculos de largura após o componente ser carregado.\n */\n componentDidLoad() {\n this.calcularLarguraItens()\n }\n\n /**\n * Renderiza botão Home\n */\n private renderHomeButton() {\n const buttonFolderClass = this.isFolderOpen ? 'fa6-solid:folder-minus' : 'fa6-solid:folder-plus'\n return (\n <br-button\n id=\"circle\"\n shape=\"circle\"\n aria-label={this.isSmallScreen ? 'Exibir lista de páginas' : 'Voltar para Home'}\n onClick={this.isSmallScreen ? () => this.toggleFolder() : () => this.handleHomeClick()}\n >\n <br-icon icon-name={`${this.isSmallScreen ? buttonFolderClass : 'fa6-solid:house'}`}></br-icon>\n </br-button>\n )\n }\n\n /**\n * Renderiza botão Folder no comportamento truncado\n */\n private renderTruncateButton() {\n if (this.isTruncate && !this.isSmallScreen) {\n const buttonFolderClass = this.isFolderOpen ? 'fa6-solid:folder-minus' : 'fa6-solid:folder-plus'\n return (\n <div class=\"buttonFolderGroup\">\n <br-icon class=\"br-icon\" icon-name=\"fa6-solid:chevron-right\" width=\"12\" height=\"12\"></br-icon>\n <br-button\n id=\"circle\"\n shape=\"circle\"\n aria-label={this.isFolderOpen ? 'Recolher lista de páginas' : 'Exibir lista de páginas'}\n onClick={() => this.toggleFolder()}\n onKeyDown={(event) => this.handleKeyDown(event)}\n >\n <br-icon icon-name={buttonFolderClass}></br-icon>\n </br-button>\n </div>\n )\n }\n return null\n }\n\n /**\n * Renderiza itens do Breadcrumb no comportamento mobile ou truncado\n */\n private renderBreadcrumbItems() {\n const parsedItems = this.getParsedItems()\n const lastItem = parsedItems[parsedItems.length - 2]\n\n return this.isSmallScreen || this.isTruncate ? (\n <div class=\"buttonFolderGroup\">\n {this.isTruncate && !this.isSmallScreen && lastItem ? (\n <span>\n <br-icon class=\"br-icon\" icon-name=\"fa6-solid:chevron-right\" width=\"12\" height=\"12\"></br-icon>\n <a\n id=\"nextCrumb\"\n href={lastItem.url || 'javascript:void(0)'}\n target={lastItem.target || '_self'}\n onMouseOver={(event) => this.handleMouseOver(event, lastItem.label)}\n onMouseOut={() => this.handleMouseOut()}\n >\n {this.trunc(lastItem.label)}\n </a>\n </span>\n ) : null}\n {this.renderMobileActiveItem(parsedItems)}\n {this.renderBreadcrumbList(parsedItems)}\n </div>\n ) : (\n parsedItems.map((item, index) => (\n <li\n key={index}\n class={`crumb ${item.home ? 'home' : ''}`}\n data-active={item.active ? 'active' : null}\n aria-label={`Página ${index + 1} de ${parsedItems.length}`}\n >\n {this.renderBreadcrumbLink(item)}\n </li>\n ))\n )\n }\n\n /**\n * Renderiza item da página atual\n */\n private renderMobileActiveItem(parsedItems: BreadcrumbItem[]) {\n const activeItem = parsedItems.find((item) => item.active)\n if (!activeItem) return null\n return (\n <span class=\"mobile-active-page\">\n <br-icon class=\"br-icon\" icon-name=\"fa6-solid:chevron-right\" width=\"12\" height=\"12\"></br-icon>\n <span aria-current=\"page\" data-active=\"active\" tabindex=\"0\">\n {activeItem.label}\n </span>\n </span>\n )\n }\n\n /**\n * Renderiza Lista dropdown contendo os itens do Breadcrumb\n */\n private renderBreadcrumbList(parsedItems: BreadcrumbItem[]) {\n return (\n <br-list class={this.isFolderOpen ? 'mobile-crumb-list show' : 'mobile-crumb-list'}>\n {this.isSmallScreen && (\n <div aria-label={`Página 1 de ${parsedItems.length}`}>\n <br-item>\n <a href={this.homeUrl} target=\"_self\">\n Página Inicial\n </a>\n </br-item>\n <span class=\"br-divider\"></span>\n </div>\n )}\n {parsedItems.map((item, index) => {\n if (this.isTruncate && !this.isSmallScreen && index === parsedItems.length - 2) {\n return null\n }\n return (\n !item.active && (\n <div\n key={index}\n aria-label={\n this.isTruncate && !this.isSmallScreen\n ? `Página ${index + 1} de ${parsedItems.length - 2}`\n : `Página ${index + 2} de ${parsedItems.length}`\n }\n >\n <br-item>\n <a\n id={index == 0 ? 'firstElementList' : ''}\n href={item.url || 'javascript:void(0)'}\n target={item.target || '_self'}\n onMouseOver={(event) => this.handleMouseOver(event, item.label)}\n onMouseOut={() => this.handleMouseOut()}\n onKeyDown={\n index == parsedItems.length - 3 && this.isFolderOpen && this.isTruncate && !this.isSmallScreen\n ? (event) => {\n if (event.key === 'Tab') {\n this.handleKeyDownOut(event)\n this.toggleFolder()\n }\n }\n : null\n }\n >\n {this.trunc(item.label)}\n </a>\n </br-item>\n <span class=\"br-divider\"></span>\n </div>\n )\n )\n })}\n </br-list>\n )\n }\n\n /**\n * Renderiza itens do Breadcrumb no formato desktop\n */\n private renderBreadcrumbLink(item: BreadcrumbItem) {\n return item.active ? (\n <span>\n <br-icon class=\"br-icon\" icon-name=\"fa6-solid:chevron-right\" width=\"12\" height=\"12\"></br-icon>\n <span aria-current=\"page\" tabindex=\"0\">\n {item.label}\n </span>\n </span>\n ) : (\n <span>\n <br-icon class=\"br-icon\" icon-name=\"fa6-solid:chevron-right\" width=\"12\" height=\"12\"></br-icon>\n <a\n href={item.url || 'javascript:void(0)'}\n target={item.target || '_self'}\n onMouseOver={(event) => this.handleMouseOver(event, item.label)}\n onMouseOut={() => this.handleMouseOut()}\n >\n {this.trunc(item.label)}\n </a>\n </span>\n )\n }\n\n /**\n * Renderiza Tooltip\n */\n private renderTooltip() {\n if (!this.showTooltip) return null\n return (\n <div class=\"tooltip-box\" style={{ left: `${this.tooltipPosition.x}px`, top: `${this.tooltipPosition.y}px` }}>\n {this.tooltipText}\n </div>\n )\n }\n\n /**\n * Controla navegação pelo teclado após lista de itens aberta\n * Dispara foco no primeiro item da lista flutuante\n */\n private handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Tab') {\n if (this.isFolderOpen && this.isTruncate && !this.isSmallScreen) {\n setTimeout(() => {\n const element = this.el.shadowRoot?.getElementById('firstElementList')\n if (element) {\n element.focus()\n }\n }, 0) // Aguarda um ciclo de renderização\n }\n }\n }\n\n /**\n * Ao finalizar navegação por teclado dentro da lista, dispara foco no item fora da lista flutuante\n */\n private handleKeyDownOut(event: KeyboardEvent) {\n if (event.key === 'Tab') {\n if (this.isFolderOpen && this.isTruncate && !this.isSmallScreen) {\n setTimeout(() => {\n const element = this.el.shadowRoot?.getElementById('nextCrumb')\n if (element) {\n element.focus()\n }\n }, 0)\n }\n }\n }\n\n render() {\n return (\n <Host>\n <nav class={this.getCssClassMap()} aria-label=\"Breadcrumbs\">\n <ol class=\"crumb-list\">\n {this.renderHomeButton()}\n {this.renderTruncateButton()}\n {this.renderBreadcrumbItems()}\n </ol>\n </nav>\n {this.renderTooltip()}\n </Host>\n )\n }\n}\n\n/**\n * ID do Breadcrumb\n */\nlet breadcrumbId = 0\n\n/**\n * Limite de caracteres para o truncamento\n */\nconst charactersNumberTruncate = 20\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["scrimCss","Scrim","constructor","hostRef","this","customId","ScrimId","isOpen","disableCloseOnClick","zIndex","customBackground","customOpacity","displayMode","scrollThreshold","activator","isActive","hasActivatorSlot","contentRef","activatorElement","scrollOffset","lastScrollTop","previouslyFocusedElement","handleActivatorClick","toggle","handleBlockScroll","e","scrollStrategy","window","scrollTo","preventDefault","stopPropagation","handleScrollClose","currentScroll","scrollY","Math","abs","handleOpenChange","handleKeyDown","event","shouldHandleEscape","key","handleTabNavigation","handleMaskClick","_event","close","newValue","updateStyles","document","activeElement","applyScrollStrategy","setTimeout","focusFirstElement","brScrimOpen","emit","resetScrolling","restoreFocus","brScrimClose","undefined","el","style","setProperty","handleActivatorChange","removeActivatorClickListener","setupActivator","componentWillLoad","checkActivatorSlot","componentDidLoad","setupActivatorSlotClick","addEventListener","connectedCallback","disconnectedCallback","removeEventListener","cleanupActivatorSlotClick","slotName","querySelector","slotEl","_a","shadowRoot","assignedElements","_c","_b","call","length","console","warn","parentElement","element","HTMLElement","addActivatorClickListener","enableScrollBlock","enableScrollWatcher","body","documentElement","removeProperty","setAttribute","focus","focusableElements","getFocusableElements","firstElement","scrollIntoView","block","inline","preventScroll","targetElement","isConnected","error","defaultSlot","flatten","forEach","matches","FOCUSABLE_SELECTORS","push","nestedFocusables","Array","from","querySelectorAll","filterVisibleElements","elements","filter","offsetWidth","offsetHeight","getComputedStyle","visibility","lastElement","isTabForward","shiftKey","shouldTrapFocus","wrapFocus","getCssClassMap","opened","positionContent","setScrollThreshold","threshold","open","render","h","Host","name","class","id","role","onClick","ref","tabIndex","onKeyDown","join"],"sources":["../../packages/webcomponents/src/components/scrim/scrim.scss?tag=br-scrim&encapsulation=shadow","../../packages/webcomponents/src/components/scrim/scrim.tsx"],"sourcesContent":[":host {\n --br-scrim-opacity: 1;\n\n .br-scrim {\n visibility: hidden;\n transition: visibility 0.3s ease;\n z-index: var(--z-index-layer-4);\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: auto;\n }\n\n .br-scrim.mode-fullscreen {\n position: fixed;\n inset: 0;\n }\n\n .br-scrim.mode-parent {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n }\n\n .br-scrim.opened {\n visibility: visible;\n pointer-events: auto;\n }\n\n .mask {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: var(--surface-overlay-scrim);\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: auto;\n }\n\n .br-scrim.opened .mask {\n opacity: var(--br-scrim-opacity);\n }\n\n .content {\n position: relative;\n outline: none;\n pointer-events: auto;\n opacity: 0;\n transform: scale(0.9);\n transition:\n opacity 0.3s ease,\n transform 0.3s ease;\n background: transparent;\n padding: 0;\n margin: 0;\n border: none;\n box-shadow: none;\n overflow: visible;\n contain: none;\n display: inline-block;\n width: fit-content;\n height: fit-content;\n z-index: calc(var(--z-index-layer-4) + 1);\n\n &:focus {\n outline: var(--focus-outline);\n outline-offset: var(--focus-offset);\n box-shadow: var(--focus-shadow);\n }\n }\n\n .br-scrim.opened .content {\n opacity: 1;\n transform: scale(1);\n pointer-events: auto;\n }\n\n .br-scrim.position-top .content {\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n }\n\n .br-scrim.position-bottom .content {\n position: absolute;\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n }\n\n .br-scrim.position-left .content {\n position: absolute;\n top: 50%;\n left: 0;\n transform: translateY(-50%);\n }\n\n .br-scrim.position-right .content {\n position: absolute;\n top: 50%;\n right: 0;\n transform: translateY(-50%);\n }\n\n .br-scrim.position-center .content {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n .content ::slotted(*) {\n opacity: 1 !important;\n filter: none;\n }\n\n /* Estilos responsivos */\n @media (width <= 768px) {\n .content {\n max-width: 95%;\n max-height: 95%;\n width: auto;\n }\n\n .br-scrim.position-top .content,\n .br-scrim.position-bottom .content {\n width: 100%;\n max-width: 100%;\n border-radius: 0;\n }\n }\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/scrim?tab=designer).\n *\n * @slot default - Elemento que será exibido junto com o Scrim, devendo ser fornecido através do slot. Esse elemento representa o conteúdo principal a ser destacado sobre o fundo escurecido.\n * @slot activator - Elemento que, quando clicado, ativa/desativa o scrim. Tem prioridade sobre a propriedade 'activator'.\n */\n@Component({\n tag: 'br-scrim',\n styleUrl: 'scrim.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Scrim {\n /**\n * Referência ao elemento host do componente.\n */\n @Element() el: HTMLBrScrimElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-scrim-${ScrimId++}`\n\n /**\n * Ativa/desativa o scrim\n */\n @Prop({ reflect: true }) isOpen: boolean = false\n\n /**\n * Posiciona o conteúdo no topo, centro, direita, esquerda, abaixo dentro do scrim\n */\n @Prop() positionContent: 'top' | 'center' | 'right' | 'left' | 'bottom'\n\n /**\n * Desativa o fechamento do scrim ao ser clicado\n */\n @Prop() disableCloseOnClick: boolean = false\n\n /**\n * Define o valor de z-index do scrim\n */\n @Prop() zIndex: number | null = null\n\n /**\n * Define um valor CSS personalizado para o background do scrim\n */\n @Prop() customBackground: string | null = null\n\n /**\n * Define a opacidade personalizada do scrim\n */\n @Prop() customOpacity: number | null = null\n\n /**\n * Define o modo de exibição do scrim:\n * - 'fullscreen': Ocupa toda a tela (position: fixed).\n * - 'parent': Ocupa apenas o elemento pai (position: absolute).\n * O elemento pai deve ter `position: relative` ou outro valor de posicionamento diferente de `static`.\n */\n @Prop() displayMode: 'fullscreen' | 'parent' = 'fullscreen'\n\n /**\n * Define a estratégia de manipulação de rolagem quando scrim está aberto\n * - 'block': Impede a rolagem completamente\n * - 'close': Fecha o scrim quando ocorre rolagem\n */\n @Prop() scrollStrategy: 'block' | 'close'\n\n /**\n * Determina quanto de rolagem (em pixels) é necessário para acionar a ação de fechamento automático do scrim.\n */\n @Prop() scrollThreshold: number = 50\n\n /**\n * Define o seletor para o elemento activator.\n * Pode ser:\n * - Um seletor CSS (ex: '.button-class', '#button-id')\n * - A string 'parent' para usar o elemento pai como activator\n * Nota: O slot 'activator' tem prioridade sobre esta propriedade.\n */\n @Prop() activator: string | null = null\n\n /** Indica que o scrim foi aberto. */\n @Event() brScrimOpen: EventEmitter\n\n /** Indica que o scrim foi fechado */\n @Event() brScrimClose: EventEmitter\n\n @State() isActive: boolean = false\n @State() hasActivatorSlot: boolean = false\n\n // ======================================================================\n // PROPRIEDADES PRIVADAS E VARIÁVEIS INTERNAS\n // ======================================================================\n private contentRef: HTMLDivElement | null = null\n private activatorElement: HTMLElement | null = null\n private scrollOffset: number = 0\n private lastScrollTop: number = 0\n private previouslyFocusedElement: HTMLElement | null | undefined = null\n\n private static readonly FOCUSABLE_SELECTORS = [\n 'a[href]:not([disabled])',\n 'button:not([disabled])',\n 'br-button:not([disabled])',\n 'input:not([disabled])',\n 'br-input:not([disabled])',\n 'select:not([disabled])',\n 'br-select:not([disabled])',\n 'textarea:not([disabled])',\n 'br-textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(',')\n\n // ======================================================================\n // LIFECYCLE HOOKS E WATCHERS\n // ======================================================================\n @Watch('isOpen')\n handleOpenChange(newValue: boolean) {\n this.isActive = newValue\n this.updateStyles()\n\n if (this.isActive) {\n this.previouslyFocusedElement = document.activeElement as HTMLElement\n this.applyScrollStrategy()\n setTimeout(() => {\n this.focusFirstElement()\n }, 100)\n this.brScrimOpen.emit()\n } else {\n this.resetScrolling()\n this.restoreFocus()\n this.brScrimClose.emit()\n }\n }\n\n @Watch('zIndex')\n @Watch('customBackground')\n @Watch('customOpacity')\n updateStyles() {\n if (this.zIndex !== null && this.zIndex !== undefined) {\n this.el.style.zIndex = `${this.zIndex}`\n this.el.style.setProperty('--z-index-layer-4', `${this.zIndex}`)\n }\n if (this.customBackground !== null) {\n this.el.style.setProperty('--surface-overlay-scrim', this.customBackground)\n }\n if (this.customOpacity !== null) {\n this.el.style.setProperty('--br-scrim-opacity', `${this.customOpacity}`)\n }\n }\n\n @Watch('activator')\n handleActivatorChange() {\n this.removeActivatorClickListener()\n this.setupActivator()\n }\n\n componentWillLoad() {\n this.hasActivatorSlot = this.checkActivatorSlot('activator')\n }\n\n componentDidLoad() {\n this.isActive = this.isOpen\n this.updateStyles()\n if (this.isActive) {\n this.applyScrollStrategy()\n this.focusFirstElement()\n }\n this.setupActivator()\n this.setupActivatorSlotClick()\n this.contentRef.addEventListener('keydown', this.handleKeyDown)\n }\n\n connectedCallback() {\n if (this.scrollStrategy === 'close') {\n window.addEventListener('scroll', this.handleScrollClose)\n }\n }\n\n disconnectedCallback() {\n window.removeEventListener('scroll', this.handleScrollClose)\n this.contentRef.removeEventListener('keydown', this.handleKeyDown)\n this.removeActivatorClickListener()\n this.cleanupActivatorSlotClick()\n }\n\n // ======================================================================\n // GERENCIAMENTO DO ACTIVATOR (ELEMENTO ACIONADOR)\n // ======================================================================\n private checkActivatorSlot(slotName: string): boolean {\n return this.el.querySelector(`[slot=\"${slotName}\"]`) !== null\n }\n\n private setupActivatorSlotClick() {\n const slotEl = this.el.shadowRoot?.querySelector('slot[name=\"activator\"]') as HTMLSlotElement\n if (slotEl === null || slotEl === undefined) return\n\n const assignedElements = slotEl.assignedElements?.() ?? []\n\n if (assignedElements.length === 1) {\n const el = assignedElements[0] as HTMLElement\n el.addEventListener('click', this.handleActivatorClick)\n } else if (assignedElements.length > 1) {\n console.warn('br-scrim: Slot \"activator\" deve conter apenas um elemento para aplicar o onClick automaticamente.')\n }\n }\n\n private setupActivator() {\n this.removeActivatorClickListener()\n this.activatorElement = null\n\n if (this.hasActivatorSlot || this.activator == null || this.activator === '') {\n return\n }\n\n if (this.activator === 'parent') {\n const parentElement = this.el.parentElement\n if (parentElement !== null) {\n this.activatorElement = parentElement\n }\n } else {\n try {\n const element = document.querySelector(this.activator)\n if (element instanceof HTMLElement) {\n this.activatorElement = element\n }\n } catch {\n console.warn(`br-scrim: Seletor activator inválido: ${this.activator}`)\n }\n }\n\n this.addActivatorClickListener()\n }\n\n private handleActivatorClick = () => {\n this.toggle()\n }\n\n private addActivatorClickListener() {\n if (this.activatorElement === null || this.activatorElement === undefined) return\n this.activatorElement.addEventListener('click', this.handleActivatorClick)\n }\n\n private removeActivatorClickListener() {\n if (this.activatorElement === null || this.activatorElement === undefined) return\n this.activatorElement.removeEventListener('click', this.handleActivatorClick)\n }\n\n private cleanupActivatorSlotClick() {\n const slotEl = this.el.shadowRoot?.querySelector('slot[name=\"activator\"]') as HTMLSlotElement\n const assignedElements = slotEl?.assignedElements?.() ?? []\n\n if (assignedElements.length === 1) {\n assignedElements[0].removeEventListener('click', this.handleActivatorClick)\n }\n }\n\n // ======================================================================\n // ESTRATÉGIAS DE ROLAGEM (SCROLL)\n // ======================================================================\n private applyScrollStrategy() {\n if (this.scrollStrategy === 'block') {\n this.enableScrollBlock()\n } else if (this.scrollStrategy === 'close') {\n this.enableScrollWatcher()\n }\n }\n\n private enableScrollBlock() {\n this.scrollOffset = window.scrollY\n document.body.style.setProperty('position', 'fixed')\n document.body.style.setProperty('top', `-${this.scrollOffset}px`)\n document.body.style.setProperty('left', '0')\n document.body.style.setProperty('right', '0')\n document.body.style.setProperty('width', '100%')\n document.documentElement.style.setProperty('overflow', 'hidden')\n\n window.addEventListener('scroll', this.handleBlockScroll)\n }\n\n private enableScrollWatcher() {\n window.addEventListener('scroll', this.handleScrollClose)\n }\n\n private handleBlockScroll = (e: Event) => {\n if (this.scrollStrategy === 'block' && this.isActive) {\n window.scrollTo(0, this.scrollOffset)\n e.preventDefault()\n e.stopPropagation()\n }\n }\n\n private resetScrolling() {\n if (this.scrollStrategy === 'block') {\n document.body.style.removeProperty('position')\n document.body.style.removeProperty('top')\n document.body.style.removeProperty('left')\n document.body.style.removeProperty('right')\n document.body.style.removeProperty('width')\n document.documentElement.style.removeProperty('overflow')\n window.removeEventListener('scroll', this.handleBlockScroll)\n window.scrollTo(0, this.scrollOffset)\n }\n window.removeEventListener('scroll', this.handleScrollClose)\n }\n\n private handleScrollClose = () => {\n if (this.scrollStrategy === 'close' && this.isActive) {\n const currentScroll = window.scrollY\n if (Math.abs(currentScroll - this.lastScrollTop) > this.scrollThreshold) {\n this.handleOpenChange(false)\n }\n this.lastScrollTop = currentScroll\n }\n }\n\n // ======================================================================\n // ACESSIBILIDADE E GERENCIAMENTO DE FOCO\n // ======================================================================\n private focusFirstElement() {\n if (this.contentRef == null) return\n\n this.contentRef.setAttribute('tabindex', '-1')\n this.contentRef.focus()\n\n const focusableElements = this.getFocusableElements()\n\n if (focusableElements.length > 0) {\n const firstElement = focusableElements[0]\n if (firstElement !== null && firstElement !== undefined) {\n firstElement.scrollIntoView({ block: 'nearest', inline: 'nearest' })\n firstElement.focus({ preventScroll: true })\n }\n }\n }\n\n private restoreFocus() {\n let targetElement: HTMLElement | null = null\n\n if (this.previouslyFocusedElement instanceof HTMLElement && this.previouslyFocusedElement.isConnected) {\n targetElement = this.previouslyFocusedElement\n } else if (this.activatorElement instanceof HTMLElement) {\n targetElement = this.activatorElement\n } else {\n const slotEl = this.el.shadowRoot?.querySelector('slot[name=\"activator\"]') as HTMLSlotElement\n if (this.hasActivatorSlot) {\n const assignedElements = slotEl.assignedElements?.() ?? []\n if (assignedElements.length > 0 && assignedElements[0] instanceof HTMLElement) {\n targetElement = assignedElements[0] as HTMLElement\n }\n }\n }\n\n if (targetElement !== null && targetElement !== undefined) {\n setTimeout(() => {\n try {\n targetElement?.focus()\n } catch (error) {\n console.warn('br-scrim: Erro ao restaurar foco:', error)\n }\n }, 100)\n }\n }\n\n private getFocusableElements(): HTMLElement[] {\n if (this.contentRef == null) return []\n\n const defaultSlot = this.contentRef.querySelector('slot:not([name])') as HTMLSlotElement\n if (defaultSlot === null || defaultSlot === undefined) return []\n\n const assignedElements = defaultSlot.assignedElements({ flatten: true })\n const focusableElements: HTMLElement[] = []\n\n assignedElements.forEach((el) => {\n if (!(el instanceof HTMLElement)) return\n\n if (el.matches(Scrim.FOCUSABLE_SELECTORS)) {\n focusableElements.push(el)\n }\n\n const nestedFocusables = Array.from(el.querySelectorAll<HTMLElement>(Scrim.FOCUSABLE_SELECTORS))\n focusableElements.push(...nestedFocusables)\n })\n\n return this.filterVisibleElements(focusableElements)\n }\n\n private filterVisibleElements(elements: HTMLElement[]): HTMLElement[] {\n return elements.filter(\n (el) => el.offsetWidth > 0 && el.offsetHeight > 0 && getComputedStyle(el).visibility !== 'hidden'\n )\n }\n\n // ======================================================================\n // NAVEGAÇÃO POR TECLADO\n // ======================================================================\n private handleKeyDown = (event: KeyboardEvent) => {\n if (!this.isActive) return\n\n if (this.shouldHandleEscape(event)) {\n this.handleOpenChange(false)\n return\n }\n\n if (event.key === 'Tab') {\n this.handleTabNavigation(event)\n }\n }\n\n private shouldHandleEscape(event: KeyboardEvent): boolean {\n return (event.key === 'Escape' || event.key === 'Esc') && this.isActive && !this.disableCloseOnClick\n }\n\n private handleTabNavigation(event: KeyboardEvent): void {\n const focusableElements = this.getFocusableElements()\n if (focusableElements.length === 0) {\n event.preventDefault()\n return\n }\n\n const firstElement = focusableElements[0]\n const lastElement = focusableElements[focusableElements.length - 1]\n const isTabForward = !event.shiftKey\n\n if (this.shouldTrapFocus(isTabForward, firstElement, lastElement)) {\n event.preventDefault()\n this.wrapFocus(isTabForward, firstElement, lastElement)\n }\n }\n\n private shouldTrapFocus(isTabForward: boolean, firstElement: HTMLElement, lastElement: HTMLElement): boolean {\n return (\n (isTabForward && document.activeElement === lastElement) ||\n (!isTabForward && document.activeElement === firstElement)\n )\n }\n\n private wrapFocus(isTabForward: boolean, firstElement: HTMLElement, lastElement: HTMLElement): void {\n ;(isTabForward ? firstElement : lastElement).focus()\n }\n\n // ======================================================================\n // MANIPULAÇÃO DE EVENTOS E UTILITÁRIOS\n // ======================================================================\n private handleMaskClick = (_event: MouseEvent) => {\n if (!this.disableCloseOnClick) {\n this.close()\n }\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-scrim': true,\n opened: this.isActive,\n 'scroll-block': this.scrollStrategy === 'block',\n 'position-top': this.positionContent === 'top',\n 'position-bottom': this.positionContent === 'bottom',\n 'position-left': this.positionContent === 'left',\n 'position-right': this.positionContent === 'right',\n 'position-center': this.positionContent === 'center',\n 'mode-fullscreen': this.displayMode === 'fullscreen',\n 'mode-parent': this.displayMode === 'parent',\n }\n }\n\n // ======================================================================\n // MÉTODOS PÚBLICOS (API)\n // ======================================================================\n /**\n * Define o limite de rolagem para o fechamento automático do scrim.\n */\n @Method()\n async setScrollThreshold(threshold: number) {\n this.scrollThreshold = threshold\n }\n\n /**\n * Método público para exibir o scrim\n */\n @Method()\n async open() {\n this.handleOpenChange(true)\n }\n\n /**\n * Método público para esconder o scrim\n */\n @Method()\n async close() {\n this.handleOpenChange(false)\n }\n\n /**\n * Método público para alternar o estado de exibição do scrim\n */\n @Method()\n async toggle() {\n this.handleOpenChange(!this.isActive)\n }\n\n render() {\n return (\n <Host>\n <slot name=\"activator\"></slot>\n <div\n class={this.getCssClassMap()}\n id={this.customId}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-hidden={this.isActive ? 'false' : 'true'}\n data-visible={this.isActive ? 'true' : 'false'}\n >\n <div class=\"mask\" onClick={this.handleMaskClick}></div>\n <div\n ref={(el) => (this.contentRef = el)}\n class=\"content\"\n tabIndex={-1}\n onKeyDown={this.handleKeyDown}\n aria-label=\"Conteúdo do diálogo\"\n >\n <slot></slot>\n </div>\n </div>\n </Host>\n )\n }\n}\n\nlet ScrimId = 0\n"],"mappings":"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","ignoreList":[]}