@govbr-ds/webcomponents 2.0.0-next.64 → 2.0.0-next.65

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 (691) hide show
  1. package/dist/cjs/br-avatar.cjs.entry.js +1 -1
  2. package/dist/cjs/br-avatar.entry.cjs.js.map +1 -1
  3. package/dist/cjs/br-breadcrumb.cjs.entry.js +113 -61
  4. package/dist/cjs/br-breadcrumb.entry.cjs.js.map +1 -1
  5. package/dist/cjs/br-button.br-icon.entry.cjs.js.map +1 -1
  6. package/dist/cjs/br-button_2.cjs.entry.js +4 -4
  7. package/dist/cjs/br-card.cjs.entry.js +2 -2
  8. package/dist/cjs/br-card.entry.cjs.js.map +1 -1
  9. package/dist/cjs/br-checkbox.br-input.br-radio.entry.cjs.js.map +1 -1
  10. package/dist/cjs/br-checkbox_3.cjs.entry.js +6 -6
  11. package/dist/cjs/br-checkgroup.cjs.entry.js +2 -2
  12. package/dist/cjs/br-checkgroup.entry.cjs.js.map +1 -1
  13. package/dist/cjs/br-collapse.br-list.entry.cjs.js.map +1 -1
  14. package/dist/cjs/br-collapse_2.cjs.entry.js +4 -4
  15. package/dist/cjs/br-crumb.cjs.entry.js +38 -0
  16. package/dist/cjs/br-crumb.entry.cjs.js.map +1 -0
  17. package/dist/cjs/br-datetime-picker.cjs.entry.js +2 -2
  18. package/dist/cjs/br-datetime-picker.entry.cjs.js.map +1 -1
  19. package/dist/cjs/br-divider.cjs.entry.js +2 -2
  20. package/dist/cjs/br-divider.entry.cjs.js.map +1 -1
  21. package/dist/cjs/br-dropdown.br-select.entry.cjs.js.map +1 -1
  22. package/dist/cjs/br-dropdown_2.cjs.entry.js +123 -40
  23. package/dist/cjs/br-footer-category.cjs.entry.js +3 -3
  24. package/dist/cjs/br-footer-category.entry.cjs.js.map +1 -1
  25. package/dist/cjs/br-footer-item.cjs.entry.js +2 -2
  26. package/dist/cjs/br-footer-item.entry.cjs.js.map +1 -1
  27. package/dist/cjs/br-footer-legal.cjs.entry.js +2 -2
  28. package/dist/cjs/br-footer-legal.entry.cjs.js.map +1 -1
  29. package/dist/cjs/br-footer-logo.cjs.entry.js +2 -2
  30. package/dist/cjs/br-footer-logo.entry.cjs.js.map +1 -1
  31. package/dist/cjs/br-footer-social.cjs.entry.js +2 -2
  32. package/dist/cjs/br-footer-social.entry.cjs.js.map +1 -1
  33. package/dist/cjs/br-footer.cjs.entry.js +2 -2
  34. package/dist/cjs/br-footer.entry.cjs.js.map +1 -1
  35. package/dist/cjs/br-header-function.cjs.entry.js +2 -2
  36. package/dist/cjs/br-header-function.entry.cjs.js.map +1 -1
  37. package/dist/cjs/br-header-link.cjs.entry.js +2 -2
  38. package/dist/cjs/br-header-link.entry.cjs.js.map +1 -1
  39. package/dist/cjs/br-header-list.cjs.entry.js +2 -2
  40. package/dist/cjs/br-header-list.entry.cjs.js.map +1 -1
  41. package/dist/cjs/br-header-logo.cjs.entry.js +2 -2
  42. package/dist/cjs/br-header-logo.entry.cjs.js.map +1 -1
  43. package/dist/cjs/br-header.cjs.entry.js +2 -2
  44. package/dist/cjs/br-header.entry.cjs.js.map +1 -1
  45. package/dist/cjs/br-item.cjs.entry.js +2 -2
  46. package/dist/cjs/br-item.entry.cjs.js.map +1 -1
  47. package/dist/cjs/br-loading.cjs.entry.js +2 -2
  48. package/dist/cjs/br-loading.entry.cjs.js.map +1 -1
  49. package/dist/cjs/br-magic-button.cjs.entry.js +2 -2
  50. package/dist/cjs/br-magic-button.entry.cjs.js.map +1 -1
  51. package/dist/cjs/br-menu-header.cjs.entry.js +2 -2
  52. package/dist/cjs/br-menu-header.entry.cjs.js.map +1 -1
  53. package/dist/cjs/br-menu-info.cjs.entry.js +2 -2
  54. package/dist/cjs/br-menu-info.entry.cjs.js.map +1 -1
  55. package/dist/cjs/br-menu-item.cjs.entry.js +3 -3
  56. package/dist/cjs/br-menu-item.entry.cjs.js.map +1 -1
  57. package/dist/cjs/br-menu-link.cjs.entry.js +2 -2
  58. package/dist/cjs/br-menu-link.entry.cjs.js.map +1 -1
  59. package/dist/cjs/br-menu-list.cjs.entry.js +1 -1
  60. package/dist/cjs/br-menu-list.entry.cjs.js.map +1 -1
  61. package/dist/cjs/br-menu-logo.cjs.entry.js +2 -2
  62. package/dist/cjs/br-menu-logo.entry.cjs.js.map +1 -1
  63. package/dist/cjs/br-menu-social.cjs.entry.js +2 -2
  64. package/dist/cjs/br-menu-social.entry.cjs.js.map +1 -1
  65. package/dist/cjs/br-menu.cjs.entry.js +3 -3
  66. package/dist/cjs/br-menu.entry.cjs.js.map +1 -1
  67. package/dist/cjs/br-message.cjs.entry.js +2 -2
  68. package/dist/cjs/br-message.entry.cjs.js.map +1 -1
  69. package/dist/cjs/br-modal.cjs.entry.js +252 -12
  70. package/dist/cjs/br-modal.entry.cjs.js.map +1 -1
  71. package/dist/cjs/br-pagination.cjs.entry.js +1 -1
  72. package/dist/cjs/br-pagination.entry.cjs.js.map +1 -1
  73. package/dist/cjs/br-scrim.cjs.entry.js +117 -24
  74. package/dist/cjs/br-scrim.entry.cjs.js.map +1 -1
  75. package/dist/cjs/br-select-option.cjs.entry.js +32 -0
  76. package/dist/cjs/br-select-option.entry.cjs.js.map +1 -0
  77. package/dist/cjs/br-sign-in.cjs.entry.js +2 -2
  78. package/dist/cjs/br-sign-in.entry.cjs.js.map +1 -1
  79. package/dist/cjs/br-skip-link.cjs.entry.js +2 -2
  80. package/dist/cjs/br-skip-link.entry.cjs.js.map +1 -1
  81. package/dist/cjs/br-skiplink-item.cjs.entry.js +2 -2
  82. package/dist/cjs/br-skiplink-item.entry.cjs.js.map +1 -1
  83. package/dist/cjs/br-step.br-step-item.entry.cjs.js.map +1 -1
  84. package/dist/cjs/br-step_2.cjs.entry.js +17 -86
  85. package/dist/cjs/br-switch.cjs.entry.js +2 -2
  86. package/dist/cjs/br-switch.entry.cjs.js.map +1 -1
  87. package/dist/cjs/br-tab-item.cjs.entry.js +2 -2
  88. package/dist/cjs/br-tab-item.entry.cjs.js.map +1 -1
  89. package/dist/cjs/br-tab.cjs.entry.js +76 -10
  90. package/dist/cjs/br-tab.entry.cjs.js.map +1 -1
  91. package/dist/cjs/br-table-cell.cjs.entry.js +2 -2
  92. package/dist/cjs/br-table-cell.entry.cjs.js.map +1 -1
  93. package/dist/cjs/br-table-header-cell.cjs.entry.js +2 -2
  94. package/dist/cjs/br-table-header-cell.entry.cjs.js.map +1 -1
  95. package/dist/cjs/br-table-header-row.cjs.entry.js +2 -2
  96. package/dist/cjs/br-table-header-row.entry.cjs.js.map +1 -1
  97. package/dist/cjs/br-table-row.cjs.entry.js +2 -2
  98. package/dist/cjs/br-table-row.entry.cjs.js.map +1 -1
  99. package/dist/cjs/br-table.cjs.entry.js +2 -2
  100. package/dist/cjs/br-table.entry.cjs.js.map +1 -1
  101. package/dist/cjs/br-tag.cjs.entry.js +2 -2
  102. package/dist/cjs/br-tag.entry.cjs.js.map +1 -1
  103. package/dist/cjs/br-textarea.cjs.entry.js +2 -2
  104. package/dist/cjs/br-textarea.entry.cjs.js.map +1 -1
  105. package/dist/cjs/br-tooltip.cjs.entry.js +2 -2
  106. package/dist/cjs/br-tooltip.entry.cjs.js.map +1 -1
  107. package/dist/cjs/br-upload.cjs.entry.js +2 -2
  108. package/dist/cjs/br-upload.entry.cjs.js.map +1 -1
  109. package/dist/cjs/br-wizard-panel.cjs.entry.js +2 -2
  110. package/dist/cjs/br-wizard-panel.entry.cjs.js.map +1 -1
  111. package/dist/cjs/br-wizard.cjs.entry.js +2 -2
  112. package/dist/cjs/br-wizard.entry.cjs.js.map +1 -1
  113. package/dist/cjs/index-CFIH680Y.js +8 -0
  114. package/dist/cjs/loader.cjs.js +1 -1
  115. package/dist/cjs/webcomponents.cjs.js +1 -1
  116. package/dist/collection/collection-manifest.json +2 -0
  117. package/dist/collection/components/avatar/avatar.css +1 -1
  118. package/dist/collection/components/breadcrumb/breadcrumb.css +1 -1
  119. package/dist/collection/components/breadcrumb/breadcrumb.js +124 -57
  120. package/dist/collection/components/breadcrumb/breadcrumb.js.map +1 -1
  121. package/dist/collection/components/breadcrumb/crumb/crumb.js +168 -0
  122. package/dist/collection/components/breadcrumb/crumb/crumb.js.map +1 -0
  123. package/dist/collection/components/button/button.css +1 -1
  124. package/dist/collection/components/button/button.js +1 -1
  125. package/dist/collection/components/card/card.css +1 -1
  126. package/dist/collection/components/card/card.js +1 -1
  127. package/dist/collection/components/checkbox/checkbox.css +1 -1
  128. package/dist/collection/components/checkbox/checkbox.js +1 -1
  129. package/dist/collection/components/checkgroup/checkgroup.css +1 -1
  130. package/dist/collection/components/checkgroup/checkgroup.js +1 -1
  131. package/dist/collection/components/collapse/collapse.css +1 -1
  132. package/dist/collection/components/collapse/collapse.js +1 -1
  133. package/dist/collection/components/datetime-picker/datetime-picker.css +1 -1
  134. package/dist/collection/components/datetime-picker/datetime-picker.js +1 -1
  135. package/dist/collection/components/divider/divider.css +1 -1
  136. package/dist/collection/components/divider/divider.js +1 -1
  137. package/dist/collection/components/dropdown/dropdown.css +1 -1
  138. package/dist/collection/components/dropdown/dropdown.js +1 -1
  139. package/dist/collection/components/footer/footer-category/footer-category.css +1 -1
  140. package/dist/collection/components/footer/footer-category/footer-category.js +2 -2
  141. package/dist/collection/components/footer/footer-item/footer-item.css +1 -1
  142. package/dist/collection/components/footer/footer-item/footer-item.js +1 -1
  143. package/dist/collection/components/footer/footer-legal/footer-legal.css +1 -1
  144. package/dist/collection/components/footer/footer-legal/footer-legal.js +1 -1
  145. package/dist/collection/components/footer/footer-logo/footer-logo.css +1 -1
  146. package/dist/collection/components/footer/footer-logo/footer-logo.js +1 -1
  147. package/dist/collection/components/footer/footer-social/footer-social.css +1 -1
  148. package/dist/collection/components/footer/footer-social/footer-social.js +1 -1
  149. package/dist/collection/components/footer/footer.css +1 -1
  150. package/dist/collection/components/footer/footer.js +1 -1
  151. package/dist/collection/components/header/header-function/header-function.css +1 -1
  152. package/dist/collection/components/header/header-function/header-function.js +1 -1
  153. package/dist/collection/components/header/header-link/header-link.css +1 -1
  154. package/dist/collection/components/header/header-link/header-link.js +1 -1
  155. package/dist/collection/components/header/header-list/header-list.css +1 -1
  156. package/dist/collection/components/header/header-list/header-list.js +1 -1
  157. package/dist/collection/components/header/header-logo/header-logo.css +1 -1
  158. package/dist/collection/components/header/header-logo/header-logo.js +1 -1
  159. package/dist/collection/components/header/header.css +1 -1
  160. package/dist/collection/components/header/header.js +1 -1
  161. package/dist/collection/components/icon/icon.css +1 -1
  162. package/dist/collection/components/icon/icon.js +1 -1
  163. package/dist/collection/components/input/input.css +1 -1
  164. package/dist/collection/components/input/input.js +1 -1
  165. package/dist/collection/components/item/item.css +1 -1
  166. package/dist/collection/components/item/item.js +1 -1
  167. package/dist/collection/components/list/list.css +1 -1
  168. package/dist/collection/components/list/list.js +1 -1
  169. package/dist/collection/components/loading/loading.css +1 -1
  170. package/dist/collection/components/loading/loading.js +1 -1
  171. package/dist/collection/components/magic-button/magic-button.css +1 -1
  172. package/dist/collection/components/magic-button/magic-button.js +1 -1
  173. package/dist/collection/components/menu/menu-header/menu-header.css +1 -1
  174. package/dist/collection/components/menu/menu-header/menu-header.js +1 -1
  175. package/dist/collection/components/menu/menu-info/menu-info.css +1 -1
  176. package/dist/collection/components/menu/menu-info/menu-info.js +1 -1
  177. package/dist/collection/components/menu/menu-item/menu-item.css +1 -1
  178. package/dist/collection/components/menu/menu-item/menu-item.js +2 -2
  179. package/dist/collection/components/menu/menu-link/menu-link.css +1 -1
  180. package/dist/collection/components/menu/menu-link/menu-link.js +1 -1
  181. package/dist/collection/components/menu/menu-list/menu-list.css +1 -1
  182. package/dist/collection/components/menu/menu-logo/menu-logo.css +1 -1
  183. package/dist/collection/components/menu/menu-logo/menu-logo.js +1 -1
  184. package/dist/collection/components/menu/menu-social/menu-social.css +1 -1
  185. package/dist/collection/components/menu/menu-social/menu-social.js +1 -1
  186. package/dist/collection/components/menu/menu.css +1 -1
  187. package/dist/collection/components/menu/menu.js +2 -2
  188. package/dist/collection/components/message/message.css +1 -1
  189. package/dist/collection/components/message/message.js +1 -1
  190. package/dist/collection/components/modal/modal.css +1 -1
  191. package/dist/collection/components/modal/modal.js +266 -12
  192. package/dist/collection/components/modal/modal.js.map +1 -1
  193. package/dist/collection/components/pagination/pagination.css +1 -1
  194. package/dist/collection/components/radio/radio.css +1 -1
  195. package/dist/collection/components/radio/radio.js +1 -1
  196. package/dist/collection/components/scrim/scrim.css +1 -1
  197. package/dist/collection/components/scrim/scrim.js +116 -23
  198. package/dist/collection/components/scrim/scrim.js.map +1 -1
  199. package/dist/collection/components/select/select-option/select-option.js +122 -0
  200. package/dist/collection/components/select/select-option/select-option.js.map +1 -0
  201. package/dist/collection/components/select/select.css +1 -1
  202. package/dist/collection/components/select/select.js +151 -38
  203. package/dist/collection/components/select/select.js.map +1 -1
  204. package/dist/collection/components/sign-in/sign-in.css +1 -1
  205. package/dist/collection/components/sign-in/sign-in.js +1 -1
  206. package/dist/collection/components/skip-link/skip-link-item/skip-link-item.css +1 -1
  207. package/dist/collection/components/skip-link/skip-link-item/skip-link-item.js +1 -1
  208. package/dist/collection/components/skip-link/skip-link.css +1 -1
  209. package/dist/collection/components/skip-link/skip-link.js +1 -1
  210. package/dist/collection/components/step/step-item/step-item.css +1 -1
  211. package/dist/collection/components/step/step-item/step-item.js +16 -86
  212. package/dist/collection/components/step/step-item/step-item.js.map +1 -1
  213. package/dist/collection/components/step/step.css +1 -1
  214. package/dist/collection/components/step/step.js +2 -6
  215. package/dist/collection/components/step/step.js.map +1 -1
  216. package/dist/collection/components/switch/switch.css +1 -1
  217. package/dist/collection/components/switch/switch.js +1 -1
  218. package/dist/collection/components/tab/tab-item/tab-item.css +1 -1
  219. package/dist/collection/components/tab/tab-item/tab-item.js +1 -1
  220. package/dist/collection/components/tab/tab.css +1 -1
  221. package/dist/collection/components/tab/tab.js +137 -17
  222. package/dist/collection/components/tab/tab.js.map +1 -1
  223. package/dist/collection/components/table/table-cell/table-cell.css +1 -1
  224. package/dist/collection/components/table/table-cell/table-cell.js +1 -1
  225. package/dist/collection/components/table/table-header-cell/table-header-cell.css +1 -1
  226. package/dist/collection/components/table/table-header-cell/table-header-cell.js +1 -1
  227. package/dist/collection/components/table/table-header-row/table-header-row.css +1 -1
  228. package/dist/collection/components/table/table-header-row/table-header-row.js +1 -1
  229. package/dist/collection/components/table/table-row/table-row.css +1 -1
  230. package/dist/collection/components/table/table-row/table-row.js +1 -1
  231. package/dist/collection/components/table/table.css +1 -1
  232. package/dist/collection/components/table/table.js +1 -1
  233. package/dist/collection/components/tag/tag.css +1 -1
  234. package/dist/collection/components/tag/tag.js +1 -1
  235. package/dist/collection/components/textarea/textarea.css +1 -1
  236. package/dist/collection/components/textarea/textarea.js +1 -1
  237. package/dist/collection/components/tooltip/tooltip.css +1 -1
  238. package/dist/collection/components/tooltip/tooltip.js +1 -1
  239. package/dist/collection/components/upload/upload.css +1 -1
  240. package/dist/collection/components/upload/upload.js +1 -1
  241. package/dist/collection/components/wizard/wizard-panel/wizard-panel.css +1 -1
  242. package/dist/collection/components/wizard/wizard-panel/wizard-panel.js +1 -1
  243. package/dist/collection/components/wizard/wizard.css +1 -1
  244. package/dist/collection/components/wizard/wizard.js +1 -1
  245. package/dist/collection/pages/scripts/menu.js +3 -1
  246. package/dist/collection/pages/scripts/pageLoader.js +4 -2
  247. package/dist/collection/value-accessors/angular-value-accessor-config.js +1 -1
  248. package/dist/collection/value-accessors/angular-value-accessor-config.js.map +1 -1
  249. package/dist/components/br-avatar.js +3 -3
  250. package/dist/components/br-breadcrumb.js +161 -90
  251. package/dist/components/br-breadcrumb.js.map +1 -1
  252. package/dist/components/br-button.js +3 -3
  253. package/dist/components/br-card.js +3 -3
  254. package/dist/components/br-checkbox.js +4 -4
  255. package/dist/components/br-checkgroup.js +11 -11
  256. package/dist/components/br-collapse.js +4 -4
  257. package/dist/components/br-crumb.d.ts +11 -0
  258. package/dist/components/br-crumb.js +80 -0
  259. package/dist/components/br-crumb.js.map +1 -0
  260. package/dist/components/br-datetime-picker.js +324 -324
  261. package/dist/components/br-divider.js +1 -1
  262. package/dist/components/br-dropdown.js +4 -4
  263. package/dist/components/br-footer-category.js +14 -14
  264. package/dist/components/br-footer-item.js +6 -6
  265. package/dist/components/br-footer-legal.js +9 -9
  266. package/dist/components/br-footer-logo.js +4 -4
  267. package/dist/components/br-footer-social.js +7 -7
  268. package/dist/components/br-footer.js +24 -24
  269. package/dist/components/br-header-function.js +6 -6
  270. package/dist/components/br-header-link.js +6 -6
  271. package/dist/components/br-header-list.js +8 -8
  272. package/dist/components/br-header-logo.js +13 -13
  273. package/dist/components/br-header.js +15 -15
  274. package/dist/components/br-icon.js +3 -3
  275. package/dist/components/br-input.js +3 -3
  276. package/dist/components/br-item.js +3 -3
  277. package/dist/components/br-list.js +4 -4
  278. package/dist/components/br-loading.js +7 -7
  279. package/dist/components/br-magic-button.js +7 -7
  280. package/dist/components/br-menu-header.js +14 -14
  281. package/dist/components/br-menu-info.js +5 -5
  282. package/dist/components/br-menu-item.js +3 -3
  283. package/dist/components/br-menu-link.js +9 -9
  284. package/dist/components/br-menu-list.js +4 -4
  285. package/dist/components/br-menu-logo.js +6 -6
  286. package/dist/components/br-menu-social.js +9 -9
  287. package/dist/components/br-menu.js +35 -35
  288. package/dist/components/br-message.js +5 -5
  289. package/dist/components/br-modal.js +230 -21
  290. package/dist/components/br-modal.js.map +1 -1
  291. package/dist/components/br-pagination.js +12 -12
  292. package/dist/components/br-radio.js +4 -4
  293. package/dist/components/br-scrim.js +122 -37
  294. package/dist/components/br-scrim.js.map +1 -1
  295. package/dist/components/br-select-option.d.ts +11 -0
  296. package/dist/components/br-select-option.js +72 -0
  297. package/dist/components/br-select-option.js.map +1 -0
  298. package/dist/components/br-select.js +4 -4
  299. package/dist/components/br-sign-in.js +11 -11
  300. package/dist/components/br-skip-link.js +9 -9
  301. package/dist/components/br-skiplink-item.js +14 -14
  302. package/dist/components/br-step-item.js +4 -4
  303. package/dist/components/br-step.js +3 -3
  304. package/dist/components/br-switch.js +7 -7
  305. package/dist/components/br-tab-item.js +7 -7
  306. package/dist/components/br-tab.js +82 -26
  307. package/dist/components/br-tab.js.map +1 -1
  308. package/dist/components/br-table-cell.js +5 -5
  309. package/dist/components/br-table-header-cell.js +8 -8
  310. package/dist/components/br-table-header-row.js +5 -5
  311. package/dist/components/br-table-row.js +5 -5
  312. package/dist/components/br-table.js +8 -8
  313. package/dist/components/br-tag.js +1 -1
  314. package/dist/components/br-textarea.js +4 -4
  315. package/dist/components/br-tooltip.js +14 -14
  316. package/dist/components/br-upload.js +34 -34
  317. package/dist/components/br-wizard-panel.js +6 -6
  318. package/dist/components/br-wizard.js +12 -12
  319. package/dist/components/br-wizard.js.map +1 -1
  320. package/dist/components/index.d.ts +4 -0
  321. package/dist/components/index.js +5 -1
  322. package/dist/components/{p-CJSXIVVe.js → p-B4_2a6sY.js} +9 -9
  323. package/dist/components/{p-DdjKNpU3.js → p-BVCWXitK.js} +157 -61
  324. package/dist/components/p-BVCWXitK.js.map +1 -0
  325. package/dist/components/p-BXMQkO62.js +399 -0
  326. package/dist/components/p-Bb4aDGZV.js +192 -0
  327. package/dist/components/p-BfM6USmd.js +138 -0
  328. package/dist/components/{p-BIJ6vVdB.js.map → p-BfM6USmd.js.map} +1 -1
  329. package/dist/components/{p-CwtLw60M.js → p-Bjywc5uG.js} +6 -6
  330. package/dist/components/p-BtGv7ZmW.js +229 -0
  331. package/dist/components/p-BtGv7ZmW.js.map +1 -0
  332. package/dist/components/{p-C_OI0BQu.js → p-BwHD1VKm.js} +6 -6
  333. package/dist/components/{p-Bqb7YtL0.js → p-C1NfZb6u.js} +19 -19
  334. package/dist/components/{p-DW63EY0U.js → p-C2apigAS.js} +13 -13
  335. package/dist/components/{p-5Bn_PU3B.js → p-CldlPwBq.js} +8 -8
  336. package/dist/components/p-DLCPJIh7.js +306 -0
  337. package/dist/components/p-DLCPJIh7.js.map +1 -0
  338. package/dist/components/{p-Bri6ECVa.js → p-DexVMiiX.js} +13 -13
  339. package/dist/components/p-DexVMiiX.js.map +1 -0
  340. package/dist/components/{p-DSkSDmzD.js → p-DozXPp1d.js} +3 -3
  341. package/dist/components/p-DzfbHHTf.js +136 -0
  342. package/dist/components/{p-CBj_WCYf.js → p-JsxUUux9.js} +6 -6
  343. package/dist/components/{p-lIb35q2K.js → p-p8k-sBQZ.js} +8 -8
  344. package/dist/custom-elements.json +1388 -710
  345. package/dist/esm/br-avatar.entry.js +2 -2
  346. package/dist/esm/br-avatar.entry.js.map +1 -1
  347. package/dist/esm/br-breadcrumb.entry.js +114 -62
  348. package/dist/esm/br-breadcrumb.entry.js.map +1 -1
  349. package/dist/esm/br-button.br-icon.entry.js.map +1 -1
  350. package/dist/esm/br-button_2.entry.js +5 -5
  351. package/dist/esm/br-card.entry.js +3 -3
  352. package/dist/esm/br-card.entry.js.map +1 -1
  353. package/dist/esm/br-checkbox.br-input.br-radio.entry.js.map +1 -1
  354. package/dist/esm/br-checkbox_3.entry.js +7 -7
  355. package/dist/esm/br-checkgroup.entry.js +3 -3
  356. package/dist/esm/br-checkgroup.entry.js.map +1 -1
  357. package/dist/esm/br-collapse.br-list.entry.js.map +1 -1
  358. package/dist/esm/br-collapse_2.entry.js +5 -5
  359. package/dist/esm/br-crumb.entry.js +36 -0
  360. package/dist/esm/br-crumb.entry.js.map +1 -0
  361. package/dist/esm/br-datetime-picker.entry.js +3 -3
  362. package/dist/esm/br-datetime-picker.entry.js.map +1 -1
  363. package/dist/esm/br-divider.entry.js +3 -3
  364. package/dist/esm/br-divider.entry.js.map +1 -1
  365. package/dist/esm/br-dropdown.br-select.entry.js.map +1 -1
  366. package/dist/esm/br-dropdown_2.entry.js +124 -41
  367. package/dist/esm/br-footer-category.entry.js +4 -4
  368. package/dist/esm/br-footer-category.entry.js.map +1 -1
  369. package/dist/esm/br-footer-item.entry.js +3 -3
  370. package/dist/esm/br-footer-item.entry.js.map +1 -1
  371. package/dist/esm/br-footer-legal.entry.js +3 -3
  372. package/dist/esm/br-footer-legal.entry.js.map +1 -1
  373. package/dist/esm/br-footer-logo.entry.js +3 -3
  374. package/dist/esm/br-footer-logo.entry.js.map +1 -1
  375. package/dist/esm/br-footer-social.entry.js +3 -3
  376. package/dist/esm/br-footer-social.entry.js.map +1 -1
  377. package/dist/esm/br-footer.entry.js +3 -3
  378. package/dist/esm/br-footer.entry.js.map +1 -1
  379. package/dist/esm/br-header-function.entry.js +3 -3
  380. package/dist/esm/br-header-function.entry.js.map +1 -1
  381. package/dist/esm/br-header-link.entry.js +3 -3
  382. package/dist/esm/br-header-link.entry.js.map +1 -1
  383. package/dist/esm/br-header-list.entry.js +3 -3
  384. package/dist/esm/br-header-list.entry.js.map +1 -1
  385. package/dist/esm/br-header-logo.entry.js +3 -3
  386. package/dist/esm/br-header-logo.entry.js.map +1 -1
  387. package/dist/esm/br-header.entry.js +3 -3
  388. package/dist/esm/br-header.entry.js.map +1 -1
  389. package/dist/esm/br-item.entry.js +3 -3
  390. package/dist/esm/br-item.entry.js.map +1 -1
  391. package/dist/esm/br-loading.entry.js +3 -3
  392. package/dist/esm/br-loading.entry.js.map +1 -1
  393. package/dist/esm/br-magic-button.entry.js +3 -3
  394. package/dist/esm/br-magic-button.entry.js.map +1 -1
  395. package/dist/esm/br-menu-header.entry.js +3 -3
  396. package/dist/esm/br-menu-header.entry.js.map +1 -1
  397. package/dist/esm/br-menu-info.entry.js +3 -3
  398. package/dist/esm/br-menu-info.entry.js.map +1 -1
  399. package/dist/esm/br-menu-item.entry.js +4 -4
  400. package/dist/esm/br-menu-item.entry.js.map +1 -1
  401. package/dist/esm/br-menu-link.entry.js +3 -3
  402. package/dist/esm/br-menu-link.entry.js.map +1 -1
  403. package/dist/esm/br-menu-list.entry.js +2 -2
  404. package/dist/esm/br-menu-list.entry.js.map +1 -1
  405. package/dist/esm/br-menu-logo.entry.js +3 -3
  406. package/dist/esm/br-menu-logo.entry.js.map +1 -1
  407. package/dist/esm/br-menu-social.entry.js +3 -3
  408. package/dist/esm/br-menu-social.entry.js.map +1 -1
  409. package/dist/esm/br-menu.entry.js +4 -4
  410. package/dist/esm/br-menu.entry.js.map +1 -1
  411. package/dist/esm/br-message.entry.js +3 -3
  412. package/dist/esm/br-message.entry.js.map +1 -1
  413. package/dist/esm/br-modal.entry.js +253 -13
  414. package/dist/esm/br-modal.entry.js.map +1 -1
  415. package/dist/esm/br-pagination.entry.js +2 -2
  416. package/dist/esm/br-pagination.entry.js.map +1 -1
  417. package/dist/esm/br-scrim.entry.js +118 -25
  418. package/dist/esm/br-scrim.entry.js.map +1 -1
  419. package/dist/esm/br-select-option.entry.js +30 -0
  420. package/dist/esm/br-select-option.entry.js.map +1 -0
  421. package/dist/esm/br-sign-in.entry.js +3 -3
  422. package/dist/esm/br-sign-in.entry.js.map +1 -1
  423. package/dist/esm/br-skip-link.entry.js +3 -3
  424. package/dist/esm/br-skip-link.entry.js.map +1 -1
  425. package/dist/esm/br-skiplink-item.entry.js +3 -3
  426. package/dist/esm/br-skiplink-item.entry.js.map +1 -1
  427. package/dist/esm/br-step.br-step-item.entry.js.map +1 -1
  428. package/dist/esm/br-step_2.entry.js +18 -87
  429. package/dist/esm/br-switch.entry.js +3 -3
  430. package/dist/esm/br-switch.entry.js.map +1 -1
  431. package/dist/esm/br-tab-item.entry.js +3 -3
  432. package/dist/esm/br-tab-item.entry.js.map +1 -1
  433. package/dist/esm/br-tab.entry.js +77 -11
  434. package/dist/esm/br-tab.entry.js.map +1 -1
  435. package/dist/esm/br-table-cell.entry.js +3 -3
  436. package/dist/esm/br-table-cell.entry.js.map +1 -1
  437. package/dist/esm/br-table-header-cell.entry.js +3 -3
  438. package/dist/esm/br-table-header-cell.entry.js.map +1 -1
  439. package/dist/esm/br-table-header-row.entry.js +3 -3
  440. package/dist/esm/br-table-header-row.entry.js.map +1 -1
  441. package/dist/esm/br-table-row.entry.js +3 -3
  442. package/dist/esm/br-table-row.entry.js.map +1 -1
  443. package/dist/esm/br-table.entry.js +3 -3
  444. package/dist/esm/br-table.entry.js.map +1 -1
  445. package/dist/esm/br-tag.entry.js +3 -3
  446. package/dist/esm/br-tag.entry.js.map +1 -1
  447. package/dist/esm/br-textarea.entry.js +3 -3
  448. package/dist/esm/br-textarea.entry.js.map +1 -1
  449. package/dist/esm/br-tooltip.entry.js +3 -3
  450. package/dist/esm/br-tooltip.entry.js.map +1 -1
  451. package/dist/esm/br-upload.entry.js +3 -3
  452. package/dist/esm/br-upload.entry.js.map +1 -1
  453. package/dist/esm/br-wizard-panel.entry.js +3 -3
  454. package/dist/esm/br-wizard-panel.entry.js.map +1 -1
  455. package/dist/esm/br-wizard.entry.js +3 -3
  456. package/dist/esm/br-wizard.entry.js.map +1 -1
  457. package/dist/esm/{index-ByGJPTh2.js → index-CgnD6TrP.js} +11 -3
  458. package/dist/esm/{index-ByGJPTh2.js.map → index-CgnD6TrP.js.map} +1 -1
  459. package/dist/esm/loader.js +3 -3
  460. package/dist/esm/webcomponents.js +3 -3
  461. package/dist/hydrate/index.js +3543 -2986
  462. package/dist/hydrate/index.mjs +3543 -2986
  463. package/dist/types/components/breadcrumb/breadcrumb.d.ts +21 -15
  464. package/dist/types/components/breadcrumb/crumb/crumb.d.ts +35 -0
  465. package/dist/types/components/modal/modal.d.ts +86 -3
  466. package/dist/types/components/scrim/scrim.d.ts +32 -2
  467. package/dist/types/components/select/select-option/select-option.d.ts +29 -0
  468. package/dist/types/components/select/select.d.ts +30 -10
  469. package/dist/types/components/step/step-item/step-item.d.ts +3 -14
  470. package/dist/types/components/tab/tab.d.ts +67 -7
  471. package/dist/types/components.d.ts +215 -12
  472. package/dist/webcomponents/br-avatar.entry.esm.js.map +1 -1
  473. package/dist/webcomponents/br-breadcrumb.entry.esm.js.map +1 -1
  474. package/dist/webcomponents/br-button.br-icon.entry.esm.js.map +1 -1
  475. package/dist/webcomponents/br-card.entry.esm.js.map +1 -1
  476. package/dist/webcomponents/br-checkbox.br-input.br-radio.entry.esm.js.map +1 -1
  477. package/dist/webcomponents/br-checkgroup.entry.esm.js.map +1 -1
  478. package/dist/webcomponents/br-collapse.br-list.entry.esm.js.map +1 -1
  479. package/dist/webcomponents/br-crumb.entry.esm.js.map +1 -0
  480. package/dist/webcomponents/br-datetime-picker.entry.esm.js.map +1 -1
  481. package/dist/webcomponents/br-divider.entry.esm.js.map +1 -1
  482. package/dist/webcomponents/br-dropdown.br-select.entry.esm.js.map +1 -1
  483. package/dist/webcomponents/br-footer-category.entry.esm.js.map +1 -1
  484. package/dist/webcomponents/br-footer-item.entry.esm.js.map +1 -1
  485. package/dist/webcomponents/br-footer-legal.entry.esm.js.map +1 -1
  486. package/dist/webcomponents/br-footer-logo.entry.esm.js.map +1 -1
  487. package/dist/webcomponents/br-footer-social.entry.esm.js.map +1 -1
  488. package/dist/webcomponents/br-footer.entry.esm.js.map +1 -1
  489. package/dist/webcomponents/br-header-function.entry.esm.js.map +1 -1
  490. package/dist/webcomponents/br-header-link.entry.esm.js.map +1 -1
  491. package/dist/webcomponents/br-header-list.entry.esm.js.map +1 -1
  492. package/dist/webcomponents/br-header-logo.entry.esm.js.map +1 -1
  493. package/dist/webcomponents/br-header.entry.esm.js.map +1 -1
  494. package/dist/webcomponents/br-item.entry.esm.js.map +1 -1
  495. package/dist/webcomponents/br-loading.entry.esm.js.map +1 -1
  496. package/dist/webcomponents/br-magic-button.entry.esm.js.map +1 -1
  497. package/dist/webcomponents/br-menu-header.entry.esm.js.map +1 -1
  498. package/dist/webcomponents/br-menu-info.entry.esm.js.map +1 -1
  499. package/dist/webcomponents/br-menu-item.entry.esm.js.map +1 -1
  500. package/dist/webcomponents/br-menu-link.entry.esm.js.map +1 -1
  501. package/dist/webcomponents/br-menu-list.entry.esm.js.map +1 -1
  502. package/dist/webcomponents/br-menu-logo.entry.esm.js.map +1 -1
  503. package/dist/webcomponents/br-menu-social.entry.esm.js.map +1 -1
  504. package/dist/webcomponents/br-menu.entry.esm.js.map +1 -1
  505. package/dist/webcomponents/br-message.entry.esm.js.map +1 -1
  506. package/dist/webcomponents/br-modal.entry.esm.js.map +1 -1
  507. package/dist/webcomponents/br-pagination.entry.esm.js.map +1 -1
  508. package/dist/webcomponents/br-scrim.entry.esm.js.map +1 -1
  509. package/dist/webcomponents/br-select-option.entry.esm.js.map +1 -0
  510. package/dist/webcomponents/br-sign-in.entry.esm.js.map +1 -1
  511. package/dist/webcomponents/br-skip-link.entry.esm.js.map +1 -1
  512. package/dist/webcomponents/br-skiplink-item.entry.esm.js.map +1 -1
  513. package/dist/webcomponents/br-step.br-step-item.entry.esm.js.map +1 -1
  514. package/dist/webcomponents/br-switch.entry.esm.js.map +1 -1
  515. package/dist/webcomponents/br-tab-item.entry.esm.js.map +1 -1
  516. package/dist/webcomponents/br-tab.entry.esm.js.map +1 -1
  517. package/dist/webcomponents/br-table-cell.entry.esm.js.map +1 -1
  518. package/dist/webcomponents/br-table-header-cell.entry.esm.js.map +1 -1
  519. package/dist/webcomponents/br-table-header-row.entry.esm.js.map +1 -1
  520. package/dist/webcomponents/br-table-row.entry.esm.js.map +1 -1
  521. package/dist/webcomponents/br-table.entry.esm.js.map +1 -1
  522. package/dist/webcomponents/br-tag.entry.esm.js.map +1 -1
  523. package/dist/webcomponents/br-textarea.entry.esm.js.map +1 -1
  524. package/dist/webcomponents/br-tooltip.entry.esm.js.map +1 -1
  525. package/dist/webcomponents/br-upload.entry.esm.js.map +1 -1
  526. package/dist/webcomponents/br-wizard-panel.entry.esm.js.map +1 -1
  527. package/dist/webcomponents/br-wizard.entry.esm.js.map +1 -1
  528. package/dist/webcomponents/{p-f2ea0d7e.entry.js → p-020c598b.entry.js} +19 -19
  529. package/dist/webcomponents/{p-f2ea0d7e.entry.js.map → p-020c598b.entry.js.map} +1 -1
  530. package/dist/webcomponents/{p-83001853.entry.js → p-09a09974.entry.js} +6 -6
  531. package/dist/webcomponents/{p-83001853.entry.js.map → p-09a09974.entry.js.map} +1 -1
  532. package/dist/webcomponents/{p-bd803fec.entry.js → p-0be0b270.entry.js} +372 -372
  533. package/dist/webcomponents/{p-bd803fec.entry.js.map → p-0be0b270.entry.js.map} +1 -1
  534. package/dist/webcomponents/p-0d8da69a.entry.js +50 -0
  535. package/dist/webcomponents/{p-8b3688ab.entry.js → p-107ad6d3.entry.js} +6 -6
  536. package/dist/webcomponents/{p-01b4fecb.entry.js → p-10b0d158.entry.js} +6 -6
  537. package/dist/webcomponents/{p-f1fb559a.entry.js → p-13b1b500.entry.js} +7 -7
  538. package/dist/webcomponents/p-15561737.entry.js +428 -0
  539. package/dist/webcomponents/p-15561737.entry.js.map +1 -0
  540. package/dist/webcomponents/{p-c0cdb81f.entry.js → p-24dd7de0.entry.js} +9 -9
  541. package/dist/webcomponents/{p-e5875d3d.entry.js → p-26ec56f1.entry.js} +5 -5
  542. package/dist/webcomponents/{p-e5875d3d.entry.js.map → p-26ec56f1.entry.js.map} +1 -1
  543. package/dist/webcomponents/p-34cd69c7.entry.js +105 -0
  544. package/dist/webcomponents/{p-d856888c.entry.js.map → p-34cd69c7.entry.js.map} +1 -1
  545. package/dist/webcomponents/{p-c06a79b8.entry.js → p-3956e4ac.entry.js} +6 -6
  546. package/dist/webcomponents/{p-462c5647.entry.js → p-4071b981.entry.js} +4 -4
  547. package/dist/webcomponents/p-42f11872.entry.js +60 -0
  548. package/dist/webcomponents/{p-f16a5e27.entry.js → p-4ad3b8c9.entry.js} +8 -8
  549. package/dist/webcomponents/{p-de358dbe.entry.js → p-512385f0.entry.js} +7 -7
  550. package/dist/webcomponents/{p-cfecd64a.entry.js → p-53c2b2c2.entry.js} +34 -34
  551. package/dist/webcomponents/p-567b17e6.entry.js +346 -0
  552. package/dist/webcomponents/{p-46dfc3ee.entry.js → p-57d49488.entry.js} +5 -5
  553. package/dist/webcomponents/p-58a862f9.entry.js +44 -0
  554. package/dist/webcomponents/p-58a862f9.entry.js.map +1 -0
  555. package/dist/webcomponents/p-59d41342.entry.js +101 -0
  556. package/dist/webcomponents/{p-c1b0a116.entry.js → p-5b7f446c.entry.js} +7 -7
  557. package/dist/webcomponents/{p-bd978abf.entry.js → p-610c2e8e.entry.js} +4 -4
  558. package/dist/webcomponents/p-62651eba.entry.js +44 -0
  559. package/dist/webcomponents/{p-50f1b088.entry.js → p-6bf86e0b.entry.js} +6 -6
  560. package/dist/webcomponents/{p-10e25a32.entry.js → p-6f8abd26.entry.js} +41 -41
  561. package/dist/webcomponents/{p-a2eec4fb.entry.js → p-7a93d79b.entry.js} +123 -38
  562. package/dist/webcomponents/p-7a93d79b.entry.js.map +1 -0
  563. package/dist/webcomponents/p-7d8eb8ac.entry.js +40 -0
  564. package/dist/webcomponents/p-7d8eb8ac.entry.js.map +1 -0
  565. package/dist/webcomponents/{p-56aabe89.entry.js → p-857cfe62.entry.js} +19 -19
  566. package/dist/webcomponents/p-898d950f.entry.js +84 -0
  567. package/dist/webcomponents/{p-6ecb3439.entry.js → p-8a931bfe.entry.js} +9 -9
  568. package/dist/webcomponents/p-8b7cc3a9.entry.js +92 -0
  569. package/dist/webcomponents/{p-ca2d95f7.entry.js → p-946cc8f3.entry.js} +142 -48
  570. package/dist/webcomponents/p-946cc8f3.entry.js.map +1 -0
  571. package/dist/webcomponents/p-9bb74d81.entry.js +133 -0
  572. package/dist/webcomponents/{p-cfa86a23.entry.js.map → p-9bb74d81.entry.js.map} +1 -1
  573. package/dist/webcomponents/p-9fabdfb4.entry.js +75 -0
  574. package/dist/webcomponents/{p-9b50e6af.entry.js → p-9fe9f5d2.entry.js} +6 -6
  575. package/dist/webcomponents/{p-ByGJPTh2.js → p-CgnD6TrP.js} +3 -3
  576. package/dist/webcomponents/{p-ByGJPTh2.js.map → p-CgnD6TrP.js.map} +1 -1
  577. package/dist/webcomponents/p-a09cf1bc.entry.js +145 -0
  578. package/dist/webcomponents/{p-30af66b3.entry.js → p-ae4feb1e.entry.js} +9 -9
  579. package/dist/webcomponents/p-b020467b.entry.js +351 -0
  580. package/dist/webcomponents/p-b020467b.entry.js.map +1 -0
  581. package/dist/webcomponents/{p-336071a5.entry.js → p-b04b7996.entry.js} +13 -13
  582. package/dist/webcomponents/{p-d7070712.entry.js → p-b39c2ad1.entry.js} +5 -5
  583. package/dist/webcomponents/{p-4bb5aeab.entry.js → p-b8e4bc36.entry.js} +17 -17
  584. package/dist/webcomponents/{p-66d26793.entry.js → p-b9c38611.entry.js} +3 -3
  585. package/dist/webcomponents/p-c4e28f37.entry.js +446 -0
  586. package/dist/webcomponents/p-c4e28f37.entry.js.map +1 -0
  587. package/dist/webcomponents/{p-d090d412.entry.js → p-cf764a83.entry.js} +6 -6
  588. package/dist/webcomponents/{p-27eb10f9.entry.js → p-d75fccd1.entry.js} +13 -13
  589. package/dist/webcomponents/p-da17c570.entry.js +134 -0
  590. package/dist/webcomponents/{p-6a9d2a0b.entry.js → p-df170bb4.entry.js} +6 -6
  591. package/dist/webcomponents/p-e55b41b4.entry.js +159 -0
  592. package/dist/webcomponents/{p-7537c4ba.entry.js.map → p-e55b41b4.entry.js.map} +1 -1
  593. package/dist/webcomponents/{p-a365183a.entry.js → p-e58dbeef.entry.js} +6 -6
  594. package/dist/webcomponents/p-e5ff5232.entry.js +452 -0
  595. package/dist/webcomponents/p-e5ff5232.entry.js.map +1 -0
  596. package/dist/webcomponents/{p-007c0f38.entry.js → p-f2f32774.entry.js} +14 -14
  597. package/dist/webcomponents/{p-2be1c309.entry.js → p-f583b74c.entry.js} +7 -7
  598. package/dist/webcomponents/{p-2be1c309.entry.js.map → p-f583b74c.entry.js.map} +1 -1
  599. package/dist/webcomponents/{p-061dbde5.entry.js → p-f723c6fc.entry.js} +5 -5
  600. package/dist/webcomponents/p-f86da8f9.entry.js +94 -0
  601. package/dist/webcomponents/p-fc94c64c.entry.js +50 -0
  602. package/dist/webcomponents/webcomponents.esm.js +3 -3
  603. package/dist/webcomponents.html-custom-data.json +136 -79
  604. package/package.json +1 -1
  605. package/dist/components/p-AOxMWARt.js +0 -136
  606. package/dist/components/p-BIJ6vVdB.js +0 -138
  607. package/dist/components/p-B_YesJM8.js +0 -192
  608. package/dist/components/p-Bc03PTAW.js +0 -306
  609. package/dist/components/p-Bc03PTAW.js.map +0 -1
  610. package/dist/components/p-Bri6ECVa.js.map +0 -1
  611. package/dist/components/p-C3Rduy2t.js +0 -399
  612. package/dist/components/p-CWRBs6PD.js +0 -316
  613. package/dist/components/p-CWRBs6PD.js.map +0 -1
  614. package/dist/components/p-DdjKNpU3.js.map +0 -1
  615. package/dist/webcomponents/p-0e3a9a52.entry.js +0 -44
  616. package/dist/webcomponents/p-271fafec.entry.js +0 -94
  617. package/dist/webcomponents/p-2768bb52.entry.js +0 -92
  618. package/dist/webcomponents/p-2a6b20bb.entry.js +0 -60
  619. package/dist/webcomponents/p-2de59d45.entry.js +0 -145
  620. package/dist/webcomponents/p-3c75367e.entry.js +0 -50
  621. package/dist/webcomponents/p-492972fb.entry.js +0 -380
  622. package/dist/webcomponents/p-492972fb.entry.js.map +0 -1
  623. package/dist/webcomponents/p-4cc446e4.entry.js +0 -50
  624. package/dist/webcomponents/p-5710a3e9.entry.js +0 -529
  625. package/dist/webcomponents/p-5710a3e9.entry.js.map +0 -1
  626. package/dist/webcomponents/p-7537c4ba.entry.js +0 -159
  627. package/dist/webcomponents/p-8c0f167a.entry.js +0 -101
  628. package/dist/webcomponents/p-90401ecd.entry.js +0 -219
  629. package/dist/webcomponents/p-90401ecd.entry.js.map +0 -1
  630. package/dist/webcomponents/p-a2eec4fb.entry.js.map +0 -1
  631. package/dist/webcomponents/p-aa7635d4.entry.js +0 -346
  632. package/dist/webcomponents/p-b30ef853.entry.js +0 -75
  633. package/dist/webcomponents/p-b8e4b353.entry.js +0 -84
  634. package/dist/webcomponents/p-c5b716c8.entry.js +0 -134
  635. package/dist/webcomponents/p-c73b38c5.entry.js +0 -297
  636. package/dist/webcomponents/p-c73b38c5.entry.js.map +0 -1
  637. package/dist/webcomponents/p-ca2d95f7.entry.js.map +0 -1
  638. package/dist/webcomponents/p-cfa86a23.entry.js +0 -133
  639. package/dist/webcomponents/p-d856888c.entry.js +0 -105
  640. /package/dist/components/{p-CJSXIVVe.js.map → p-B4_2a6sY.js.map} +0 -0
  641. /package/dist/components/{p-C3Rduy2t.js.map → p-BXMQkO62.js.map} +0 -0
  642. /package/dist/components/{p-B_YesJM8.js.map → p-Bb4aDGZV.js.map} +0 -0
  643. /package/dist/components/{p-CwtLw60M.js.map → p-Bjywc5uG.js.map} +0 -0
  644. /package/dist/components/{p-C_OI0BQu.js.map → p-BwHD1VKm.js.map} +0 -0
  645. /package/dist/components/{p-Bqb7YtL0.js.map → p-C1NfZb6u.js.map} +0 -0
  646. /package/dist/components/{p-DW63EY0U.js.map → p-C2apigAS.js.map} +0 -0
  647. /package/dist/components/{p-5Bn_PU3B.js.map → p-CldlPwBq.js.map} +0 -0
  648. /package/dist/components/{p-DSkSDmzD.js.map → p-DozXPp1d.js.map} +0 -0
  649. /package/dist/components/{p-AOxMWARt.js.map → p-DzfbHHTf.js.map} +0 -0
  650. /package/dist/components/{p-CBj_WCYf.js.map → p-JsxUUux9.js.map} +0 -0
  651. /package/dist/components/{p-lIb35q2K.js.map → p-p8k-sBQZ.js.map} +0 -0
  652. /package/dist/webcomponents/{p-3c75367e.entry.js.map → p-0d8da69a.entry.js.map} +0 -0
  653. /package/dist/webcomponents/{p-8b3688ab.entry.js.map → p-107ad6d3.entry.js.map} +0 -0
  654. /package/dist/webcomponents/{p-01b4fecb.entry.js.map → p-10b0d158.entry.js.map} +0 -0
  655. /package/dist/webcomponents/{p-f1fb559a.entry.js.map → p-13b1b500.entry.js.map} +0 -0
  656. /package/dist/webcomponents/{p-c0cdb81f.entry.js.map → p-24dd7de0.entry.js.map} +0 -0
  657. /package/dist/webcomponents/{p-c06a79b8.entry.js.map → p-3956e4ac.entry.js.map} +0 -0
  658. /package/dist/webcomponents/{p-462c5647.entry.js.map → p-4071b981.entry.js.map} +0 -0
  659. /package/dist/webcomponents/{p-2a6b20bb.entry.js.map → p-42f11872.entry.js.map} +0 -0
  660. /package/dist/webcomponents/{p-f16a5e27.entry.js.map → p-4ad3b8c9.entry.js.map} +0 -0
  661. /package/dist/webcomponents/{p-de358dbe.entry.js.map → p-512385f0.entry.js.map} +0 -0
  662. /package/dist/webcomponents/{p-cfecd64a.entry.js.map → p-53c2b2c2.entry.js.map} +0 -0
  663. /package/dist/webcomponents/{p-aa7635d4.entry.js.map → p-567b17e6.entry.js.map} +0 -0
  664. /package/dist/webcomponents/{p-46dfc3ee.entry.js.map → p-57d49488.entry.js.map} +0 -0
  665. /package/dist/webcomponents/{p-8c0f167a.entry.js.map → p-59d41342.entry.js.map} +0 -0
  666. /package/dist/webcomponents/{p-c1b0a116.entry.js.map → p-5b7f446c.entry.js.map} +0 -0
  667. /package/dist/webcomponents/{p-bd978abf.entry.js.map → p-610c2e8e.entry.js.map} +0 -0
  668. /package/dist/webcomponents/{p-0e3a9a52.entry.js.map → p-62651eba.entry.js.map} +0 -0
  669. /package/dist/webcomponents/{p-50f1b088.entry.js.map → p-6bf86e0b.entry.js.map} +0 -0
  670. /package/dist/webcomponents/{p-10e25a32.entry.js.map → p-6f8abd26.entry.js.map} +0 -0
  671. /package/dist/webcomponents/{p-56aabe89.entry.js.map → p-857cfe62.entry.js.map} +0 -0
  672. /package/dist/webcomponents/{p-b8e4b353.entry.js.map → p-898d950f.entry.js.map} +0 -0
  673. /package/dist/webcomponents/{p-6ecb3439.entry.js.map → p-8a931bfe.entry.js.map} +0 -0
  674. /package/dist/webcomponents/{p-2768bb52.entry.js.map → p-8b7cc3a9.entry.js.map} +0 -0
  675. /package/dist/webcomponents/{p-b30ef853.entry.js.map → p-9fabdfb4.entry.js.map} +0 -0
  676. /package/dist/webcomponents/{p-9b50e6af.entry.js.map → p-9fe9f5d2.entry.js.map} +0 -0
  677. /package/dist/webcomponents/{p-2de59d45.entry.js.map → p-a09cf1bc.entry.js.map} +0 -0
  678. /package/dist/webcomponents/{p-30af66b3.entry.js.map → p-ae4feb1e.entry.js.map} +0 -0
  679. /package/dist/webcomponents/{p-336071a5.entry.js.map → p-b04b7996.entry.js.map} +0 -0
  680. /package/dist/webcomponents/{p-d7070712.entry.js.map → p-b39c2ad1.entry.js.map} +0 -0
  681. /package/dist/webcomponents/{p-4bb5aeab.entry.js.map → p-b8e4bc36.entry.js.map} +0 -0
  682. /package/dist/webcomponents/{p-66d26793.entry.js.map → p-b9c38611.entry.js.map} +0 -0
  683. /package/dist/webcomponents/{p-d090d412.entry.js.map → p-cf764a83.entry.js.map} +0 -0
  684. /package/dist/webcomponents/{p-27eb10f9.entry.js.map → p-d75fccd1.entry.js.map} +0 -0
  685. /package/dist/webcomponents/{p-c5b716c8.entry.js.map → p-da17c570.entry.js.map} +0 -0
  686. /package/dist/webcomponents/{p-6a9d2a0b.entry.js.map → p-df170bb4.entry.js.map} +0 -0
  687. /package/dist/webcomponents/{p-a365183a.entry.js.map → p-e58dbeef.entry.js.map} +0 -0
  688. /package/dist/webcomponents/{p-007c0f38.entry.js.map → p-f2f32774.entry.js.map} +0 -0
  689. /package/dist/webcomponents/{p-061dbde5.entry.js.map → p-f723c6fc.entry.js.map} +0 -0
  690. /package/dist/webcomponents/{p-271fafec.entry.js.map → p-f86da8f9.entry.js.map} +0 -0
  691. /package/dist/webcomponents/{p-4cc446e4.entry.js.map → p-fc94c64c.entry.js.map} +0 -0
@@ -2,7 +2,7 @@
2
2
  * Construído por SERPRO
3
3
  * © https://serpro.gov.br/ - MIT License.
4
4
  */
5
- import { h } from "@stencil/core";
5
+ import { h, Host, } from "@stencil/core";
6
6
  /**
7
7
  * ## Design System
8
8
  *
@@ -10,6 +10,7 @@ import { h } from "@stencil/core";
10
10
  */
11
11
  export class Select {
12
12
  constructor() {
13
+ this.isSyncingOptionElements = false;
13
14
  /**
14
15
  * Texto auxiliar exibido antes de uma seleção.
15
16
  */
@@ -18,6 +19,11 @@ export class Select {
18
19
  * Habilita o modo múltiplo para selecionar várias opções.
19
20
  */
20
21
  this.isMultiple = false;
22
+ /**
23
+ * Controla se o dropdown permanece aberto após selecionar opções.
24
+ * Quando `true`, permite seleção sequencial sem reabrir a lista.
25
+ */
26
+ this.keepOpenOnSelect = false;
21
27
  /**
22
28
  * Define as opções disponíveis no componente de seleção.
23
29
  * 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.
@@ -81,6 +87,11 @@ export class Select {
81
87
  this.isExpanded = false;
82
88
  // Armazena o índice do item atualmente focado, usado para navegação por teclado.
83
89
  this.focusedIndex = -1;
90
+ this.optionElements = [];
91
+ this.registerOptionItems = () => {
92
+ this.optionElements = this.getOptionElements();
93
+ this.synchronizeSelect();
94
+ };
84
95
  /**
85
96
  * Fecha a lista suspensa (`dropdown`) do `br-select` quando o usuário clica fora do componente.
86
97
  * O listener global é adicionado no `componentDidLoad` e removido no `disconnectedCallback` para evitar vazamentos de memória.
@@ -104,30 +115,13 @@ export class Select {
104
115
  }
105
116
  synchronizeSelect() {
106
117
  try {
107
- let parsedOptions = [];
108
- if (typeof this.options === 'string') {
109
- try {
110
- const jsonData = JSON.parse(this.options);
111
- if (Array.isArray(jsonData)) {
112
- parsedOptions = jsonData;
113
- }
114
- else {
115
- throw new Error('JSON inválido: deve ser um array');
116
- }
117
- }
118
- catch (error) {
119
- console.error('Erro ao converter options para JSON:', error.message);
120
- parsedOptions = [];
121
- }
122
- }
123
- else if (Array.isArray(this.options)) {
124
- parsedOptions = this.options;
125
- }
118
+ const parsedOptions = this.getSourceOptions();
126
119
  // Sanitiza as opções (remove opções inválidas, etc.)
127
120
  this.parsedOptions = parsedOptions;
128
121
  // Atualiza lista filtrada considerando o termo atual
129
122
  this.filteredOptions = this.getFilteredOptions(this.searchTerm);
130
123
  // Atualiza o estado do componente
124
+ this.updateSelectedValueFromParsedOptions();
131
125
  this.updateSelectedOptions();
132
126
  this.updateSelectedAllState();
133
127
  this.emitSelectedOptions();
@@ -144,9 +138,18 @@ export class Select {
144
138
  this.updateSelectedOptions(); // mantém inputValue coeso
145
139
  this.updateSelectedAllState();
146
140
  this.filteredOptions = this.getFilteredOptions(this.searchTerm);
141
+ this.syncOptionElementsFromParsedOptions();
142
+ }
143
+ handleSelectOptionPropsChange() {
144
+ if (this.isSyncingOptionElements)
145
+ return;
146
+ if (this.optionElements.length === 0)
147
+ return;
148
+ this.synchronizeSelect();
147
149
  }
148
150
  componentWillLoad() {
149
151
  this.isExpanded = this.isOpen;
152
+ this.optionElements = this.getOptionElements();
150
153
  this.synchronizeSelect();
151
154
  }
152
155
  handleExpandedChange(isExpanded) {
@@ -163,6 +166,83 @@ export class Select {
163
166
  disconnectedCallback() {
164
167
  document.removeEventListener('click', this.handleClickOutside);
165
168
  }
169
+ getOptionElements() {
170
+ if (this.slotElement !== undefined && this.slotElement !== null) {
171
+ const assignedElements = this.slotElement.assignedElements({ flatten: true });
172
+ return assignedElements.filter((el) => { var _a; return ((_a = el.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'br-select-option'; });
173
+ }
174
+ return Array.from(this.el.querySelectorAll('br-select-option'));
175
+ }
176
+ getSourceOptions() {
177
+ if (this.optionElements.length > 0) {
178
+ return this.optionElements
179
+ .map((optionElement) => {
180
+ var _a;
181
+ const label = this.getOptionElementLabel(optionElement);
182
+ const value = ((_a = optionElement.value) === null || _a === void 0 ? void 0 : _a.trim()) || label;
183
+ return {
184
+ label,
185
+ value,
186
+ selected: optionElement.selected === true,
187
+ sourceElement: optionElement,
188
+ };
189
+ })
190
+ .filter((option) => option.label !== '' || option.value !== '');
191
+ }
192
+ return this.getOptionsFromProp();
193
+ }
194
+ getOptionsFromProp() {
195
+ let parsedOptions = [];
196
+ if (typeof this.options === 'string') {
197
+ try {
198
+ const jsonData = JSON.parse(this.options);
199
+ if (Array.isArray(jsonData)) {
200
+ parsedOptions = jsonData;
201
+ }
202
+ else {
203
+ throw new Error('JSON inválido: deve ser um array');
204
+ }
205
+ }
206
+ catch (error) {
207
+ console.error('Erro ao converter options para JSON:', error.message);
208
+ parsedOptions = [];
209
+ }
210
+ }
211
+ else if (Array.isArray(this.options)) {
212
+ parsedOptions = this.options;
213
+ }
214
+ return parsedOptions;
215
+ }
216
+ getOptionElementLabel(optionElement) {
217
+ var _a, _b;
218
+ const propLabel = (_a = optionElement.label) === null || _a === void 0 ? void 0 : _a.trim();
219
+ if (propLabel !== undefined && propLabel !== '')
220
+ return propLabel;
221
+ return ((_b = optionElement.textContent) === null || _b === void 0 ? void 0 : _b.trim()) || '';
222
+ }
223
+ updateSelectedValueFromParsedOptions() {
224
+ var _a, _b;
225
+ const selectedValues = this.parsedOptions.filter((option) => option.selected === true).map((option) => option.value);
226
+ const currentValue = typeof this.value === 'string' ? this.value : undefined;
227
+ this.selectedValue = this.isMultiple ? selectedValues : ((_b = (_a = selectedValues[0]) !== null && _a !== void 0 ? _a : currentValue) !== null && _b !== void 0 ? _b : undefined);
228
+ this.value = this.selectedValue;
229
+ }
230
+ syncOptionElementsFromParsedOptions() {
231
+ if (this.optionElements.length === 0)
232
+ return;
233
+ this.isSyncingOptionElements = true;
234
+ this.parsedOptions.forEach((option) => {
235
+ if (option.sourceElement !== undefined) {
236
+ if (option.selected === true) {
237
+ option.sourceElement.setAttribute('selected', '');
238
+ }
239
+ else {
240
+ option.sourceElement.removeAttribute('selected');
241
+ }
242
+ }
243
+ });
244
+ this.isSyncingOptionElements = false;
245
+ }
166
246
  handleKeydownOnInput(event) {
167
247
  switch (event.key) {
168
248
  case 'Tab':
@@ -271,24 +351,23 @@ export class Select {
271
351
  return;
272
352
  if (this.isMultiple) {
273
353
  this.parsedOptions = this.parsedOptions.map((o, i) => (i === index ? Object.assign(Object.assign({}, o), { selected: !o.selected }) : o));
274
- // Fecha o dropdown e limpa a busca para mostrar o resumo das seleções
275
- this.isExpanded = false;
354
+ this.isExpanded = this.keepOpenOnSelect;
276
355
  this.isFocused = false;
277
356
  this.searchTerm = '';
278
357
  }
279
358
  else {
280
359
  this.parsedOptions = this.parsedOptions.map((o, i) => (Object.assign(Object.assign({}, o), { selected: i === index })));
281
- this.isExpanded = false;
360
+ this.isExpanded = this.keepOpenOnSelect;
282
361
  // Se fechou, não estamos mais focados na busca.
283
362
  // Isso garante que o valor selecionado seja exibido em vez do termo de busca.
284
363
  this.isFocused = false;
285
364
  this.searchTerm = '';
286
365
  }
287
- this.selectedValue = this.isMultiple ? this.parsedOptions.filter((o) => o.selected).map((o) => o.value) : value;
288
- this.value = this.selectedValue;
366
+ this.updateSelectedValueFromParsedOptions();
289
367
  this.valueChange.emit(this.selectedValue);
290
368
  this.updateSelectedOptions();
291
369
  this.updateSelectedAllState();
370
+ this.syncOptionElementsFromParsedOptions();
292
371
  // Força a atualização da referência do array para garantir que o Stencil detecte a mudança
293
372
  this.filteredOptions = [...this.getFilteredOptions(this.searchTerm)];
294
373
  try {
@@ -352,21 +431,19 @@ export class Select {
352
431
  this.isIndeterminate = selectedCount > 0 && selectedCount < total;
353
432
  }
354
433
  toggleSelectAll() {
355
- var _a, _b;
434
+ var _a;
356
435
  const updatedOptions = this.parsedOptions.map((option) => (Object.assign(Object.assign({}, option), { selected: !this.isAllSelected })));
357
436
  this.parsedOptions = updatedOptions;
358
437
  this.updateSelectedAllState();
359
438
  this.updateSelectedOptions();
360
439
  // Atualiza a prop 'value' e emite o evento para ngModel
361
- this.selectedValue = this.isMultiple
362
- ? this.parsedOptions.filter((o) => o.selected).map((o) => o.value)
363
- : (_a = this.parsedOptions.find((o) => o.selected)) === null || _a === void 0 ? void 0 : _a.value;
364
- this.value = this.selectedValue;
440
+ this.updateSelectedValueFromParsedOptions();
365
441
  this.valueChange.emit(this.selectedValue);
442
+ this.syncOptionElementsFromParsedOptions();
366
443
  try {
367
- this.elementInternals.setFormValue(JSON.stringify((_b = this.selectedValue) !== null && _b !== void 0 ? _b : []));
444
+ this.elementInternals.setFormValue(JSON.stringify((_a = this.selectedValue) !== null && _a !== void 0 ? _a : []));
368
445
  }
369
- catch (_c) {
446
+ catch (_b) {
370
447
  // Ignora erro em testes onde setFormValue não é implementado
371
448
  }
372
449
  }
@@ -422,13 +499,14 @@ export class Select {
422
499
  /**
423
500
  * Inverte o valor da prop `isOpen`
424
501
  */
425
- async toggleOpen() {
502
+ toggleOpen() {
426
503
  this.isExpanded = !this.isExpanded;
504
+ return Promise.resolve();
427
505
  }
428
506
  /**
429
507
  * Limpa todas as opções selecionadas.
430
508
  */
431
- async clear() {
509
+ clear() {
432
510
  const updatedOptions = this.parsedOptions.map((option) => (Object.assign(Object.assign({}, option), { selected: false })));
433
511
  this.parsedOptions = updatedOptions;
434
512
  const newValue = this.isMultiple ? [] : undefined;
@@ -437,27 +515,30 @@ export class Select {
437
515
  this.updateSelectedOptions();
438
516
  this.updateSelectedAllState();
439
517
  this.valueChange.emit(newValue);
518
+ this.syncOptionElementsFromParsedOptions();
440
519
  try {
441
520
  this.elementInternals.setFormValue(JSON.stringify(newValue !== null && newValue !== void 0 ? newValue : (this.isMultiple ? [] : null)));
442
521
  }
443
522
  catch (_a) {
444
523
  // Ignora erro em testes onde setFormValue não é implementado
445
524
  }
525
+ return Promise.resolve();
446
526
  }
447
527
  /**
448
528
  * Retorna o valor selecionado.
449
529
  * @returns {Promise<string | string[]>} O valor atual.
450
530
  */
451
- async getValue() {
452
- return this.value;
531
+ getValue() {
532
+ return Promise.resolve(this.value);
453
533
  }
454
534
  /**
455
535
  * Define o valor do componente.
456
536
  * @param {string | string[]} newValue O novo valor a ser definido.
457
537
  */
458
- async setValue(newValue) {
538
+ setValue(newValue) {
459
539
  this.value = newValue;
460
540
  // O @Watch('value') cuidará da sincronização
541
+ return Promise.resolve();
461
542
  }
462
543
  getCssClassMap() {
463
544
  return {
@@ -489,7 +570,9 @@ export class Select {
489
570
  this.filteredOptions = this.getFilteredOptions('');
490
571
  }
491
572
  render() {
492
- return (h("div", { key: '94bc55d4369cb86db9253fef83ab491f90998dd5', class: this.getCssClassMap(), id: this.getComputedId(), "aria-disabled": this.disabled }, this.renderInput(), this.isExpanded && (h("br-list", { key: 'fb5d789013c6a1c7e858161c1a370b746f4c9e1e', tabindex: -1, onKeyDown: (event) => this.handleKeydownOnList(event), style: this.inputWidth !== undefined ? { width: this.inputWidth } : undefined }, this.isMultiple && this.renderSelectAllCheckbox(), this.renderOptions()))));
573
+ return (h(Host, { key: '8cd5f45424ecceeb8d66cff3dc7faa76278eaf0b' }, h("div", { key: 'fad5adaf9b5bbf78dd78446fef4b20269c3e1d7a', style: { display: 'none' }, "aria-hidden": "true" }, h("slot", { key: '91096cfd9b52aef919f19b3e782c8bdd844051c9', ref: (el) => {
574
+ this.slotElement = el;
575
+ }, onSlotchange: this.registerOptionItems })), h("div", { key: 'f18dd776d24a33972003493b8aa00cc0e433e429', class: this.getCssClassMap(), id: this.getComputedId(), "aria-disabled": this.disabled }, this.renderInput(), this.isExpanded && (h("br-list", { key: 'd71be8faab4143a97ef6c98d78e9110b3ba143ed', tabindex: -1, onKeyDown: (event) => this.handleKeydownOnList(event), style: this.inputWidth !== undefined ? { width: this.inputWidth } : undefined }, this.isMultiple && this.renderSelectAllCheckbox(), this.renderOptions())))));
493
576
  }
494
577
  static get is() { return "br-select"; }
495
578
  static get encapsulation() { return "shadow"; }
@@ -565,6 +648,26 @@ export class Select {
565
648
  "attribute": "is-multiple",
566
649
  "defaultValue": "false"
567
650
  },
651
+ "keepOpenOnSelect": {
652
+ "type": "boolean",
653
+ "mutable": false,
654
+ "complexType": {
655
+ "original": "boolean",
656
+ "resolved": "boolean",
657
+ "references": {}
658
+ },
659
+ "required": false,
660
+ "optional": false,
661
+ "docs": {
662
+ "tags": [],
663
+ "text": "Controla se o dropdown permanece aberto ap\u00F3s selecionar op\u00E7\u00F5es.\nQuando `true`, permite sele\u00E7\u00E3o sequencial sem reabrir a lista."
664
+ },
665
+ "getter": false,
666
+ "setter": false,
667
+ "reflect": true,
668
+ "attribute": "keep-open-on-select",
669
+ "defaultValue": "false"
670
+ },
568
671
  "options": {
569
672
  "type": "string",
570
673
  "mutable": false,
@@ -796,6 +899,7 @@ export class Select {
796
899
  "isIndeterminate": {},
797
900
  "isExpanded": {},
798
901
  "focusedIndex": {},
902
+ "optionElements": {},
799
903
  "isFocused": {}
800
904
  };
801
905
  }
@@ -957,6 +1061,15 @@ export class Select {
957
1061
  "methodName": "handleExpandedChange"
958
1062
  }];
959
1063
  }
1064
+ static get listeners() {
1065
+ return [{
1066
+ "name": "brSelectOptionPropsChange",
1067
+ "method": "handleSelectOptionPropsChange",
1068
+ "target": undefined,
1069
+ "capture": false,
1070
+ "passive": false
1071
+ }];
1072
+ }
960
1073
  static get attachInternalsMemberName() { return "elementInternals"; }
961
1074
  }
962
1075
  let selectId = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../../../packages/webcomponents/src/components/select/select.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAIvH;;;;GAIG;AAOH,MAAM,OAAO,MAAM;IANnB;QAoBE;;WAEG;QACsB,gBAAW,GAAW,EAAE,CAAA;QAEjD;;WAEG;QACsB,eAAU,GAAY,KAAK,CAAA;QAEpD;;;;;;;;;WASG;QACsB,YAAO,GAMtB,EAAE,CAAA;QAEZ;;WAEG;QACsB,mBAAc,GAAW,kBAAkB,CAAA;QAEpE;;WAEG;QACsB,qBAAgB,GAAW,qBAAqB,CAAA;QAEzE;;WAEG;QACsB,mBAAc,GAAY,KAAK,CAAA;QAExD;;WAEG;QACsB,WAAM,GAAY,KAAK,CAAA;QAEhD;;;WAGG;QACsB,aAAQ,GAAY,KAAK,CAAA;QAQlD;;;WAGG;QACsB,aAAQ,GAAY,KAAK,CAAA;QAElD;;WAEG;QACsB,eAAU,GAAY,KAAK,CAAA;QAEpD;;;WAGG;QAC+B,aAAQ,GAAW,aAAa,QAAQ,EAAE,EAAE,CAAA;QAE9E,gEAAgE;QAChE,yEAAyE;QAChE,kBAAa,GAA2D,EAAE,CAAA;QAEnF,4DAA4D;QACnD,oBAAe,GAA2D,EAAE,CAAA;QAErF,6DAA6D;QACpD,eAAU,GAAW,EAAE,CAAA;QAEhC,wCAAwC;QAC/B,eAAU,GAAW,EAAE,CAAA;QAOhC,8FAA8F;QACrF,kBAAa,GAAY,KAAK,CAAA;QAEvC,sHAAsH;QAC7G,oBAAe,GAAY,KAAK,CAAA;QAEzC,0FAA0F;QACjF,eAAU,GAAY,KAAK,CAAA;QAEpC,iFAAiF;QACxE,iBAAY,GAAW,CAAC,CAAC,CAAA;QAwFlC;;;;;;;;;WASG;QACc,uBAAkB,GAAG,CAAC,KAAiB,EAAE,EAAE;YAC1D,wFAAwF;YACxF,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAA;YAC/D,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,YAAY,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;YAEhH,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,aAAa,EAAE,CAAC;gBACtC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;YACzB,CAAC;QACH,CAAC,CAAA;QAwOD,0CAA0C;QACjC,cAAS,GAAY,KAAK,CAAA;KA2OpC;IA5iBC,iBAAiB;QACf,IAAI,CAAC;YACH,IAAI,aAAa,GAA2D,EAAE,CAAA;YAC9E,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACrC,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBACzC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC5B,aAAa,GAAG,QAAQ,CAAA;oBAC1B,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;oBACrD,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;oBACpE,aAAa,GAAG,EAAE,CAAA;gBACpB,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAA;YAC9B,CAAC;YAED,qDAAqD;YACrD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;YAElC,qDAAqD;YACrD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAE/D,kCAAkC;YAClC,IAAI,CAAC,qBAAqB,EAAE,CAAA;YAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAA;YAC7B,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAA;YAC9D,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACzB,CAAC;IACH,CAAC;IAGD,oBAAoB,CAAC,MAAyB;QAC5C,4CAA4C;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iCAC9C,CAAC,KACJ,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,IAClG,CAAC,CAAA;QACH,IAAI,CAAC,aAAa,GAAG,MAAM,CAAA;QAC3B,IAAI,CAAC,qBAAqB,EAAE,CAAA,CAAC,0BAA0B;QACvD,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACjE,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAA;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC1B,CAAC;IAGD,oBAAoB,CAAC,UAAmB;QACtC,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QACpB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QACpB,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC7D,CAAC;IAED,oBAAoB;QAClB,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAChE,CAAC;IAsBO,oBAAoB,CAAC,KAAoB;QAC/C,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,KAAK;gBACR,IAAI,CAAC,WAAW,EAAE,CAAA;gBAClB,MAAK;YACP,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE,CAAA;gBACtB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACrB,IAAI,CAAC,UAAU,EAAE,CAAA;gBACnB,CAAC;gBACD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;gBACjC,MAAK;YACP,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE,CAAA;gBACtB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACrB,IAAI,CAAC,UAAU,EAAE,CAAA;gBACnB,CAAC;gBACD,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAA;gBACrC,MAAK;YACP,KAAK,QAAQ;gBACX,IAAI,CAAC,WAAW,EAAE,CAAA;gBAClB,IAAI,CAAC,UAAU,EAAE,CAAA;gBACjB,MAAK;YACP,KAAK,OAAO;gBACV,IAAI,CAAC,UAAU,EAAE,CAAA;gBACjB,MAAK;YACP,QAAQ;QACV,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,KAAoB;QAC9C,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,KAAK,CAAC;YACX,KAAK,QAAQ;gBACX,IAAI,CAAC,UAAU,EAAE,CAAA;gBACjB,MAAK;YACP,KAAK,SAAS;gBACZ,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAA;gBACrC,MAAK;YACP,KAAK,WAAW;gBACd,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;gBACjC,MAAK;YACP;gBACE,MAAK;QACT,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,KAAoB,EAAE,KAAa;QAC7D,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YAC/C,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;YAC1C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,EAAE,CAAA;QACpB,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,KAAoB;QACjD,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YAC/C,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,IAAI,CAAC,eAAe,EAAE,CAAA;QACxB,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAClC,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,IAAI,CAAC,WAAW,EAAE,CAAA;QACpB,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAA8B,CAAA;QACvF,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAE,CAAA;IAChB,CAAC;IAEO,oBAAoB,CAAC,SAA8B;QACzD,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAA;QACzC,IAAI,IAAI,CAAC,UAAU;YAAE,SAAS,IAAI,CAAC,CAAA;QAEnC,IAAI,CAAC,YAAY;YACf,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;QAE9G,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACnC,CAAC;IAEO,SAAS,CAAC,KAAa;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;QAC7D,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAgB,CAAA;YACxC,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,MAAyC;QACnE,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;IACrF,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACxB,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACvB,mDAAmD;QACnD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAA;IACxB,CAAC;IAEO,sBAAsB,CAAC,KAAa;;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA;QACpE,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAM;QAExB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,iCAAM,CAAC,KAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1G,sEAAsE;YACtE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;YACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;YACtB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iCACjD,CAAC,KACJ,QAAQ,EAAE,CAAC,KAAK,KAAK,IACrB,CAAC,CAAA;YACH,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;YACvB,gDAAgD;YAChD,8EAA8E;YAC9E,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;YACtB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACtB,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAE/G,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAA;QAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEzC,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAE7B,2FAA2F;QAC3F,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;QAEpE,IAAI,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,MAAA,IAAI,CAAC,aAAa,mCAAI,EAAE,CAAC,CAAC,CAAA;QAC9E,CAAC;QAAC,WAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC/F,CAAC;IAEO,aAAa,CAAC,IAAY;QAChC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;aAChB,SAAS,CAAC,KAAK,CAAC;aAChB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;aAC/B,WAAW,EAAE,CAAA;IAClB,CAAC;IAEO,kBAAkB,CAAC,IAAY;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC,aAAa,CAAA;QAC3B,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAA;YACxE,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACxD,OAAO,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;QAC7F,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,cAAc,CAAC,OAA+D;QACpF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;YAC1D,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC9E,OAAO,GAAG,aAAa,GAAG,eAAe,EAAE,CAAA;YAC7C,CAAC;iBAAM,CAAC;gBACN,OAAO,aAAa,CAAA;YACtB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAEO,mBAAmB;;QACzB,2EAA2E;QAC3E,+FAA+F;QAC/F,8EAA8E;QAC9E,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,gDAAgD;QAErK,sFAAsF;QACtF,4FAA4F;QAE5F,qCAAqC;QACrC,IAAI,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAA,cAAc,CAAC,CAAC,CAAC,mCAAI,IAAI,CAAC,CAAC,CAAC,CAAA;QACpH,CAAC;QAAC,WAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;IACH,CAAC;IAEO,sBAAsB;QAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAA;QACnF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAA;QAEvC,IAAI,CAAC,aAAa,GAAG,KAAK,GAAG,CAAC,IAAI,aAAa,KAAK,KAAK,CAAA;QACzD,IAAI,CAAC,eAAe,GAAG,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,KAAK,CAAA;IACnE,CAAC;IAEO,eAAe;;QACrB,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iCAAM,MAAM,KAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,aAAa,IAAG,CAAC,CAAA;QACzG,IAAI,CAAC,aAAa,GAAG,cAAc,CAAA;QAEnC,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAE5B,wDAAwD;QACxD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU;YAClC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YAClE,CAAC,CAAC,MAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,0CAAE,KAAK,CAAA;QACrD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAA;QAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEzC,IAAI,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,MAAA,IAAI,CAAC,aAAa,mCAAI,EAAE,CAAC,CAAC,CAAA;QAC9E,CAAC;QAAC,WAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;IACH,CAAC;IAKO,WAAW;QACjB,wGAAwG;QACxG,qGAAqG;QACrG,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAA;QAE1F,OAAO,CACL,gBACE,WAAW,EAAC,OAAO,EACnB,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,YAAY,EAAE,IAAI,CAAC,UAAU,EAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,wBAAwB,EACpF,cAAc,EAAE,CAAC,CAAC,EAClB,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,UAAU,EAAE,CAAA;YACvC,CAAC,EACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EACjD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,EACvC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAC/C,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;YACtD,CAAC;YAEA,IAAI,CAAC,cAAc,IAAI,eAAS,IAAI,EAAC,MAAM,eAAW,iBAAiB,iBAAa,MAAM,GAAW;YACtG,eACE,IAAI,EAAC,QAAQ,eACF,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,EACxE,MAAM,EAAC,IAAI,iBACC,MAAM,GACT,CACF,CACZ,CAAA;IACH,CAAC;IAEO,uBAAuB;QAC7B,OAAO,CACL,WACE,KAAK,EAAE,uBAAuB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,cAC9F,UAAU,EACnB,QAAQ,EAAC,IAAI,EACb,IAAI,EAAC,QAAQ,mBACE,IAAI,CAAC,aAAa,mBAClB,IAAI,CAAC,QAAQ,EAC5B,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAA;YACxD,CAAC,EACD,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,eAAe,EAAE,CAAA;YAC5C,CAAC;YAED,mBACE,IAAI,EAAE,YAAY,IAAI,CAAC,QAAQ,EAAE,EACjC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EACvE,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,aAAa,EAAE,IAAI,CAAC,eAAe,EACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,eAAe,EAAE,GAAG,EAAE;oBACpB,IAAI,CAAC,IAAI,CAAC,QAAQ;wBAAE,IAAI,CAAC,eAAe,EAAE,CAAA;gBAC5C,CAAC,GACY,CACX,CACP,CAAA;IACH,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,CACL,WAAK,KAAK,EAAC,eAAe,EAAC,IAAI,EAAC,QAAQ,mBAAe,OAAO,EAAC,QAAQ,EAAE,CAAC,CAAC,kCAErE,CACP,CAAA;QACH,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACjD,WACE,KAAK,EAAE,WAAW,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EACxF,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,EACvC,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBACpD,MAAM,CAAC,QAAQ,mBACf,IAAI,CAAC,QAAQ,gBAChB,MAAM,CAAC,KAAK,EACxB,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC/D,CAAC,EACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAC5D,CAAC,EACD,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EACnD,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EACrD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAE9C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CACjB,mBACE,IAAI,EAAE,YAAY,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,EAC1C,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EACnC,OAAO,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI,EACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,eAAe,EAAE,GAAG,EAAE;gBACpB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC/D,CAAC,GACD,CACH,CAAC,CAAC,CAAC,CACF,gBACE,WAAW,EAAC,0BAA0B,EACtC,IAAI,EAAE,SAAS,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,EACvC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EACnC,OAAO,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI,EACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,eAAe,EAAE,GAAG,EAAE;gBACpB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC/D,CAAC,GACD,CACH,CACG,CACP,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACK,aAAa;;QACnB,OAAO,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,MAAM,IAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjF,CAAC;IAED;;OAEG;IAEH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAA;IACpC,CAAC;IAED;;OAEG;IAEH,KAAK,CAAC,KAAK;QACT,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iCAAM,MAAM,KAAE,QAAQ,EAAE,KAAK,IAAG,CAAC,CAAA;QAC3F,IAAI,CAAC,aAAa,GAAG,cAAc,CAAA;QAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACjD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAA;QAC7B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAA;QAErB,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAE/B,IAAI,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/F,CAAC;QAAC,WAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;IACH,CAAC;IAED;;;OAGG;IAEH,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED;;;OAGG;IAEH,KAAK,CAAC,QAAQ,CAAC,QAA2B;QACxC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAA;QACrB,6CAA6C;IAC/C,CAAC;IAEO,cAAc;QACpB,OAAO;YACL,WAAW,EAAE,IAAI;SAClB,CAAA;IACH,CAAC;IAEO,iBAAiB,CAAC,KAAY;;QACpC,MAAM,KAAK,GAAG,MAAC,KAAK,CAAC,MAA2B,CAAC,KAAK,mCAAI,EAAE,CAAA;QAC5D,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACxB,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACjE,CAAC;IAEO,gBAAgB,CAAC,KAAiB;;QACxC,gFAAgF;QAChF,iFAAiF;QACjF,MAAM,aAAa,GAAG,KAAK,CAAC,aAAqB,CAAA;QACjD,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAI,MAAA,IAAI,CAAC,EAAE,CAAC,UAAU,0CAAE,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAC,EAAE,CAAC;YACtG,OAAM;QACR,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,yDAAyD;QACzD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACpB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;IACpD,CAAC;IAED,MAAM;QACJ,OAAO,CACL,4DAAK,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,mBAAiB,IAAI,CAAC,QAAQ;YACtF,IAAI,CAAC,WAAW,EAAE;YAElB,IAAI,CAAC,UAAU,IAAI,CAClB,gEACE,QAAQ,EAAE,CAAC,CAAC,EACZ,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EACrD,KAAK,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS;gBAE5E,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBACjD,IAAI,CAAC,aAAa,EAAE,CACb,CACX,CACG,CACP,CAAA;IACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF;AAED,IAAI,QAAQ,GAAG,CAAC,CAAA","sourcesContent":["import { AttachInternals, Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/select?tab=designer).\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 * 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 * Exibe o rótulo e o controle em linha (ao lado), ao invés de empilhados.\n * Útil para casos contextuais como paginação.\n */\n @Prop({ reflect: true }) isInline: boolean = false\n\n /**\n * Largura do campo de entrada interno (por exemplo, '88px').\n * Quando definido, sobrescreve a largura padrão de 100% do input.\n */\n @Prop({ reflect: true }) inputWidth?: string\n\n /**\n * Desabilita a interação com o componente `br-select`.\n * Quando `true`, o input e as opções ficam desabilitados e não respondem a cliques ou teclas.\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * Propaga para o input interno a remoção da borda quando desfocado.\n */\n @Prop({ reflect: true }) borderless: 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 // Opções filtradas de acordo com o termo de busca digitado.\n @State() filteredOptions: { label: string; value: string; selected?: boolean }[] = []\n\n // Valor exibido no input, refletindo as opções selecionadas.\n @State() inputValue: string = ''\n\n // Termo digitado no input (modo busca).\n @State() searchTerm: string = ''\n\n /** Valor selecionado (string para single, string[] para multiple) */\n @Prop({ reflect: false, mutable: true }) value?: string | string[]\n\n @State() selectedValue?: 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 // Indica se o estado do checkbox \"Selecionar Todos\" está indeterminado (algumas, mas não todas, opções selecionadas).\n @State() isIndeterminate: 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 /** Emite os dados da opção quando ela recebe foco/hover (antes da seleção). */\n @Event({ bubbles: true, composed: true }) optionHover: EventEmitter<{ label: string; value: string }>\n\n /** Dispara quando o dropdown é aberto. */\n @Event({ bubbles: true, composed: true }) opened: EventEmitter<void>\n\n /** Dispara quando o dropdown é fechado. */\n @Event({ bubbles: true, composed: true }) closed: EventEmitter<void>\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 lista filtrada considerando o termo atual\n this.filteredOptions = this.getFilteredOptions(this.searchTerm)\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 ? Array.isArray(newVal) && newVal.includes(o.value) : newVal === o.value,\n }))\n this.selectedValue = newVal\n this.updateSelectedOptions() // mantém inputValue coeso\n this.updateSelectedAllState()\n this.filteredOptions = this.getFilteredOptions(this.searchTerm)\n }\n\n componentWillLoad() {\n this.isExpanded = this.isOpen\n this.synchronizeSelect()\n }\n\n @Watch('isExpanded')\n handleExpandedChange(isExpanded: boolean) {\n if (isExpanded) {\n this.opened.emit()\n } else {\n this.closed.emit()\n }\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 // Usa composedPath para considerar nós dentro de Shadow DOM como \"dentro\" do componente\n const path = (event.composedPath && event.composedPath()) || []\n const clickedInside = path.includes(this.el) || (event.target instanceof Node && this.el.contains(event.target))\n\n if (this.isExpanded && !clickedInside) {\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 const option = this.filteredOptions[index]\n if (option !== undefined) {\n this.handleSelectionByValue(option.value)\n }\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 HTMLBrInputElement | null\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 this.emitHoverFromOption(this.filteredOptions[index])\n }\n }\n\n private emitHoverFromOption(option?: { label: string; value: string }) {\n if (!option) return\n this.optionHover.emit({ label: option.label || option.value, value: option.value })\n }\n\n private openSelect() {\n this.isExpanded = true\n }\n\n private closeSelect() {\n this.isExpanded = false\n // Reinicializar o índice focado ao fechar o select\n this.focusedIndex = -1\n }\n\n private handleSelectionByValue(value: string) {\n const index = this.parsedOptions.findIndex((o) => o.value === value)\n if (index === -1) return\n\n if (this.isMultiple) {\n this.parsedOptions = this.parsedOptions.map((o, i) => (i === index ? { ...o, selected: !o.selected } : o))\n // Fecha o dropdown e limpa a busca para mostrar o resumo das seleções\n this.isExpanded = false\n this.isFocused = false\n this.searchTerm = ''\n } else {\n this.parsedOptions = this.parsedOptions.map((o, i) => ({\n ...o,\n selected: i === index,\n }))\n this.isExpanded = false\n // Se fechou, não estamos mais focados na busca.\n // Isso garante que o valor selecionado seja exibido em vez do termo de busca.\n this.isFocused = false\n this.searchTerm = ''\n }\n\n this.selectedValue = this.isMultiple ? this.parsedOptions.filter((o) => o.selected).map((o) => o.value) : value\n\n this.value = this.selectedValue\n this.valueChange.emit(this.selectedValue)\n\n this.updateSelectedOptions()\n this.updateSelectedAllState()\n\n // Força a atualização da referência do array para garantir que o Stencil detecte a mudança\n this.filteredOptions = [...this.getFilteredOptions(this.searchTerm)]\n\n try {\n this.elementInternals.setFormValue(JSON.stringify(this.selectedValue ?? []))\n } catch {}\n }\n\n private updateSelectedOptions() {\n this.inputValue = this.getStringValue(this.parsedOptions.filter((option) => option.selected))\n }\n\n private normalizeText(text: string): string {\n return (text || '')\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase()\n }\n\n private getFilteredOptions(term: string) {\n if (!term) {\n return this.parsedOptions\n }\n\n const normalizedTerm = this.normalizeText(term)\n return this.parsedOptions.filter((option) => {\n const normalizedLabel = this.normalizeText(option.label || option.value)\n const normalizedValue = this.normalizeText(option.value)\n return normalizedLabel.includes(normalizedTerm) || normalizedValue.includes(normalizedTerm)\n })\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.filter((option) => option.selected === true).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 try {\n this.elementInternals.setFormValue(JSON.stringify(this.isMultiple ? selectedValues : (selectedValues[0] ?? null)))\n } catch {\n // Ignora erro em testes onde setFormValue não é implementado\n }\n }\n\n private updateSelectedAllState() {\n const selectedCount = this.parsedOptions.filter((option) => option.selected).length\n const total = this.parsedOptions.length\n\n this.isAllSelected = total > 0 && selectedCount === total\n this.isIndeterminate = selectedCount > 0 && selectedCount < total\n }\n\n private toggleSelectAll() {\n const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: !this.isAllSelected }))\n this.parsedOptions = updatedOptions\n\n this.updateSelectedAllState()\n this.updateSelectedOptions()\n\n // Atualiza a prop 'value' e emite o evento para ngModel\n this.selectedValue = this.isMultiple\n ? this.parsedOptions.filter((o) => o.selected).map((o) => o.value)\n : this.parsedOptions.find((o) => o.selected)?.value\n this.value = this.selectedValue\n this.valueChange.emit(this.selectedValue)\n\n try {\n this.elementInternals.setFormValue(JSON.stringify(this.selectedValue ?? []))\n } catch {\n // Ignora erro em testes onde setFormValue não é implementado\n }\n }\n\n // Indica se o input de busca está focado.\n @State() isFocused: boolean = false\n\n private renderInput() {\n // Se estiver focado, mostramos EXATAMENTE o que está sendo digitado (searchTerm), mesmo que seja vazio.\n // Se não estiver focado, mostramos o termo de busca (se houver) ou o valor selecionado (inputValue).\n const displayValue = this.isFocused ? this.searchTerm : this.searchTerm || this.inputValue\n\n return (\n <br-input\n exportparts=\"label\"\n value={displayValue}\n label={this.label}\n isInline={this.isInline}\n controlWidth={this.inputWidth}\n borderless={this.borderless}\n placeholder={this.placeholder}\n actionLabel={this.isExpanded ? 'Recolher lista de opções' : 'Exibir lista de opções'}\n actionTabIndex={-1}\n readonly={false}\n disabled={this.disabled}\n onClick={() => {\n if (!this.disabled) this.toggleOpen()\n }}\n onInput={(event) => this.handleSearchInput(event)}\n onFocus={() => this.handleSearchFocus()}\n onBlur={(event) => this.handleSearchBlur(event)}\n onKeyDown={(event) => {\n if (!this.disabled) this.handleKeydownOnInput(event)\n }}\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' : ''} ${this.disabled ? 'disabled' : ''}`}\n data-all=\"data-all\"\n tabindex=\"-1\"\n role=\"option\"\n aria-selected={this.isAllSelected}\n aria-disabled={this.disabled}\n onKeyDown={(event) => {\n if (!this.disabled) this.handleSelectAllKeyDown(event)\n }}\n onClick={() => {\n if (!this.disabled) this.toggleSelectAll()\n }}\n >\n <br-checkbox\n name={`checkbox-${this.customId}`}\n label={this.isAllSelected ? this.unselectAllLabel : this.selectAllLabel}\n checked={this.isAllSelected}\n indeterminate={this.isIndeterminate}\n disabled={this.disabled}\n onClick={(e) => e.stopPropagation()}\n onCheckedChange={() => {\n if (!this.disabled) this.toggleSelectAll()\n }}\n ></br-checkbox>\n </div>\n )\n }\n\n private renderOptions() {\n if (this.filteredOptions.length === 0) {\n return (\n <div class=\"br-item empty\" role=\"option\" aria-selected=\"false\" tabindex={-1}>\n Nenhum resultado encontrado\n </div>\n )\n }\n\n return this.filteredOptions.map((option, index) => (\n <div\n class={`br-item ${option.selected ? 'selected' : ''} ${this.disabled ? 'disabled' : ''}`}\n key={`${option.label}-${this.customId}`}\n role=\"option\"\n tabindex={this.disabled ? -1 : this.focusedIndex === index ? 0 : -1}\n aria-selected={option.selected}\n aria-disabled={this.disabled}\n data-value={option.value}\n onClick={() => {\n if (!this.disabled) this.handleSelectionByValue(option.value)\n }}\n onKeyDown={(event) => {\n if (!this.disabled) this.handleKeydownOnItem(event, index)\n }}\n onMouseOver={() => this.emitHoverFromOption(option)}\n onPointerOver={() => this.emitHoverFromOption(option)}\n onFocus={() => this.emitHoverFromOption(option)}\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 disabled={this.disabled}\n onClick={(e) => e.stopPropagation()}\n onCheckedChange={() => {\n if (!this.disabled) this.handleSelectionByValue(option.value)\n }}\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 disabled={this.disabled}\n onClick={(e) => e.stopPropagation()}\n onCheckedChange={() => {\n if (!this.disabled) this.handleSelectionByValue(option.value)\n }}\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 /**\n * Limpa todas as opções selecionadas.\n */\n @Method()\n async clear() {\n const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: false }))\n this.parsedOptions = updatedOptions\n\n const newValue = this.isMultiple ? [] : undefined\n this.selectedValue = newValue\n this.value = newValue\n\n this.updateSelectedOptions()\n this.updateSelectedAllState()\n this.valueChange.emit(newValue)\n\n try {\n this.elementInternals.setFormValue(JSON.stringify(newValue ?? (this.isMultiple ? [] : null)))\n } catch {\n // Ignora erro em testes onde setFormValue não é implementado\n }\n }\n\n /**\n * Retorna o valor selecionado.\n * @returns {Promise<string | string[]>} O valor atual.\n */\n @Method()\n async getValue() {\n return this.value\n }\n\n /**\n * Define o valor do componente.\n * @param {string | string[]} newValue O novo valor a ser definido.\n */\n @Method()\n async setValue(newValue: string | string[]) {\n this.value = newValue\n // O @Watch('value') cuidará da sincronização\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-select': true,\n }\n }\n\n private handleSearchInput(event: Event) {\n const value = (event.target as HTMLInputElement).value ?? ''\n this.searchTerm = value\n this.filteredOptions = this.getFilteredOptions(value)\n this.isExpanded = true\n }\n\n private handleSearchFocus() {\n this.isFocused = true\n this.filteredOptions = this.getFilteredOptions(this.searchTerm)\n }\n\n private handleSearchBlur(event: FocusEvent) {\n // Se o foco foi movido para dentro do componente (ex: clicou no checkbox/item),\n // não limpamos a busca para manter a lista filtrada estável e permitir o clique.\n const relatedTarget = event.relatedTarget as Node\n if (relatedTarget && (this.el.contains(relatedTarget) || this.el.shadowRoot?.contains(relatedTarget))) {\n return\n }\n\n this.isFocused = false\n // Ao sair do campo, volta a exibir o resumo das seleções\n this.searchTerm = ''\n this.filteredOptions = this.getFilteredOptions('')\n }\n\n render() {\n return (\n <div class={this.getCssClassMap()} id={this.getComputedId()} aria-disabled={this.disabled}>\n {this.renderInput()}\n\n {this.isExpanded && (\n <br-list\n tabindex={-1}\n onKeyDown={(event) => this.handleKeydownOnList(event)}\n style={this.inputWidth !== undefined ? { width: this.inputWidth } : undefined}\n >\n {this.isMultiple && this.renderSelectAllCheckbox()}\n {this.renderOptions()}\n </br-list>\n )}\n </div>\n )\n }\n}\n\nlet selectId = 0\n"]}
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../../../packages/webcomponents/src/components/select/select.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,SAAS,EACT,OAAO,EACP,KAAK,EAEL,CAAC,EACD,IAAI,EACJ,MAAM,EACN,MAAM,EACN,IAAI,EACJ,KAAK,EACL,KAAK,GACN,MAAM,eAAe,CAAA;AAiBtB;;;;GAIG;AAOH,MAAM,OAAO,MAAM;IANnB;QAgBU,4BAAuB,GAAG,KAAK,CAAA;QAOvC;;WAEG;QACsB,gBAAW,GAAW,EAAE,CAAA;QAEjD;;WAEG;QACsB,eAAU,GAAY,KAAK,CAAA;QAEpD;;;WAGG;QACsB,qBAAgB,GAAY,KAAK,CAAA;QAE1D;;;;;;;;;WASG;QACsB,YAAO,GAMtB,EAAE,CAAA;QAEZ;;WAEG;QACsB,mBAAc,GAAW,kBAAkB,CAAA;QAEpE;;WAEG;QACsB,qBAAgB,GAAW,qBAAqB,CAAA;QAEzE;;WAEG;QACsB,mBAAc,GAAY,KAAK,CAAA;QAExD;;WAEG;QACsB,WAAM,GAAY,KAAK,CAAA;QAEhD;;;WAGG;QACsB,aAAQ,GAAY,KAAK,CAAA;QAQlD;;;WAGG;QACsB,aAAQ,GAAY,KAAK,CAAA;QAElD;;WAEG;QACsB,eAAU,GAAY,KAAK,CAAA;QAEpD;;;WAGG;QAC+B,aAAQ,GAAW,aAAa,QAAQ,EAAE,EAAE,CAAA;QAE9E,gEAAgE;QAChE,yEAAyE;QAChE,kBAAa,GAAuB,EAAE,CAAA;QAE/C,4DAA4D;QACnD,oBAAe,GAAuB,EAAE,CAAA;QAEjD,6DAA6D;QACpD,eAAU,GAAW,EAAE,CAAA;QAEhC,wCAAwC;QAC/B,eAAU,GAAW,EAAE,CAAA;QAOhC,8FAA8F;QACrF,kBAAa,GAAY,KAAK,CAAA;QAEvC,sHAAsH;QAC7G,oBAAe,GAAY,KAAK,CAAA;QAEzC,0FAA0F;QACjF,eAAU,GAAY,KAAK,CAAA;QAEpC,iFAAiF;QACxE,iBAAY,GAAW,CAAC,CAAC,CAAA;QACzB,mBAAc,GAA4B,EAAE,CAAA;QAmF7C,wBAAmB,GAAG,GAAG,EAAE;YACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;YAC9C,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC1B,CAAC,CAAA;QAuFD;;;;;;;;;WASG;QACc,uBAAkB,GAAG,CAAC,KAAiB,EAAE,EAAE;YAC1D,wFAAwF;YACxF,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAA;YAC/D,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,YAAY,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;YAEhH,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,aAAa,EAAE,CAAC;gBACtC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;YACzB,CAAC;QACH,CAAC,CAAA;QAoOD,0CAA0C;QACjC,cAAS,GAAY,KAAK,CAAA;KA2PpC;IA7oBC,iBAAiB;QACf,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;YAE7C,qDAAqD;YACrD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;YAElC,qDAAqD;YACrD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAE/D,kCAAkC;YAClC,IAAI,CAAC,oCAAoC,EAAE,CAAA;YAC3C,IAAI,CAAC,qBAAqB,EAAE,CAAA;YAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAA;YAC7B,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAA;YAC9D,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACzB,CAAC;IACH,CAAC;IAGD,oBAAoB,CAAC,MAAyB;QAC5C,4CAA4C;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iCAC9C,CAAC,KACJ,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,IAClG,CAAC,CAAA;QACH,IAAI,CAAC,aAAa,GAAG,MAAM,CAAA;QAC3B,IAAI,CAAC,qBAAqB,EAAE,CAAA,CAAC,0BAA0B;QACvD,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC/D,IAAI,CAAC,mCAAmC,EAAE,CAAA;IAC5C,CAAC;IAGD,6BAA6B;QAC3B,IAAI,IAAI,CAAC,uBAAuB;YAAE,OAAM;QACxC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAC5C,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC1B,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAA;QAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC9C,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC1B,CAAC;IAGD,oBAAoB,CAAC,UAAmB;QACtC,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QACpB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QACpB,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC7D,CAAC;IAED,oBAAoB;QAClB,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAChE,CAAC;IAOO,iBAAiB;QACvB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAChE,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAkB,CAAA;YAC9F,OAAO,gBAAgB,CAAC,MAAM,CAC5B,CAAC,EAAE,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,EAAE,CAAC,OAAO,0CAAE,WAAW,EAAE,MAAK,kBAAkB,CAAA,EAAA,CAC9B,CAAA;QAC9B,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAA4B,CAAA;IAC5F,CAAC;IAEO,gBAAgB;QACtB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,cAAc;iBACvB,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;;gBACrB,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAA;gBACvD,MAAM,KAAK,GAAG,CAAA,MAAA,aAAa,CAAC,KAAK,0CAAE,IAAI,EAAE,KAAI,KAAK,CAAA;gBAElD,OAAO;oBACL,KAAK;oBACL,KAAK;oBACL,QAAQ,EAAE,aAAa,CAAC,QAAQ,KAAK,IAAI;oBACzC,aAAa,EAAE,aAAa;iBAC7B,CAAA;YACH,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC,CAAA;QACnE,CAAC;QAED,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAA;IAClC,CAAC;IAEO,kBAAkB;QACxB,IAAI,aAAa,GAAuB,EAAE,CAAA;QAE1C,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACzC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,aAAa,GAAG,QAAQ,CAAA;gBAC1B,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;gBACrD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;gBACpE,aAAa,GAAG,EAAE,CAAA;YACpB,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAA;QAC9B,CAAC;QAED,OAAO,aAAa,CAAA;IACtB,CAAC;IAEO,qBAAqB,CAAC,aAAoC;;QAChE,MAAM,SAAS,GAAG,MAAA,aAAa,CAAC,KAAK,0CAAE,IAAI,EAAE,CAAA;QAC7C,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE;YAAE,OAAO,SAAS,CAAA;QAEjE,OAAO,CAAA,MAAA,aAAa,CAAC,WAAW,0CAAE,IAAI,EAAE,KAAI,EAAE,CAAA;IAChD,CAAC;IAEO,oCAAoC;;QAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACpH,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QAC5E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAA,MAAA,cAAc,CAAC,CAAC,CAAC,mCAAI,YAAY,mCAAI,SAAS,CAAC,CAAA;QACxG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAA;IACjC,CAAC;IAEO,mCAAmC;QACzC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAE5C,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QAEnC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACpC,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBACvC,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;oBAC7B,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;gBACnD,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;gBAClD,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAA;IACtC,CAAC;IAsBO,oBAAoB,CAAC,KAAoB;QAC/C,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,KAAK;gBACR,IAAI,CAAC,WAAW,EAAE,CAAA;gBAClB,MAAK;YACP,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE,CAAA;gBACtB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACrB,IAAI,CAAC,UAAU,EAAE,CAAA;gBACnB,CAAC;gBACD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;gBACjC,MAAK;YACP,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE,CAAA;gBACtB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACrB,IAAI,CAAC,UAAU,EAAE,CAAA;gBACnB,CAAC;gBACD,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAA;gBACrC,MAAK;YACP,KAAK,QAAQ;gBACX,IAAI,CAAC,WAAW,EAAE,CAAA;gBAClB,IAAI,CAAC,UAAU,EAAE,CAAA;gBACjB,MAAK;YACP,KAAK,OAAO;gBACV,IAAI,CAAC,UAAU,EAAE,CAAA;gBACjB,MAAK;YACP,QAAQ;QACV,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,KAAoB;QAC9C,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,KAAK,CAAC;YACX,KAAK,QAAQ;gBACX,IAAI,CAAC,UAAU,EAAE,CAAA;gBACjB,MAAK;YACP,KAAK,SAAS;gBACZ,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAA;gBACrC,MAAK;YACP,KAAK,WAAW;gBACd,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;gBACjC,MAAK;YACP;gBACE,MAAK;QACT,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,KAAoB,EAAE,KAAa;QAC7D,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YAC/C,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;YAC1C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,EAAE,CAAA;QACpB,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,KAAoB;QACjD,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YAC/C,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,IAAI,CAAC,eAAe,EAAE,CAAA;QACxB,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAClC,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,IAAI,CAAC,WAAW,EAAE,CAAA;QACpB,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAA8B,CAAA;QACvF,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAE,CAAA;IAChB,CAAC;IAEO,oBAAoB,CAAC,SAA8B;QACzD,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAA;QACzC,IAAI,IAAI,CAAC,UAAU;YAAE,SAAS,IAAI,CAAC,CAAA;QAEnC,IAAI,CAAC,YAAY;YACf,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;QAE9G,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACnC,CAAC;IAEO,SAAS,CAAC,KAAa;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;QAC7D,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAgB,CAAA;YACxC,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,MAAyC;QACnE,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;IACrF,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACxB,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACvB,mDAAmD;QACnD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAA;IACxB,CAAC;IAEO,sBAAsB,CAAC,KAAa;;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA;QACpE,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAM;QAExB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,iCAAM,CAAC,KAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1G,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAA;YACvC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;YACtB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iCACjD,CAAC,KACJ,QAAQ,EAAE,CAAC,KAAK,KAAK,IACrB,CAAC,CAAA;YACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAA;YACvC,gDAAgD;YAChD,8EAA8E;YAC9E,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;YACtB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACtB,CAAC;QAED,IAAI,CAAC,oCAAoC,EAAE,CAAA;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEzC,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,mCAAmC,EAAE,CAAA;QAE1C,2FAA2F;QAC3F,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;QAEpE,IAAI,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,MAAA,IAAI,CAAC,aAAa,mCAAI,EAAE,CAAC,CAAC,CAAA;QAC9E,CAAC;QAAC,WAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC/F,CAAC;IAEO,aAAa,CAAC,IAAY;QAChC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;aAChB,SAAS,CAAC,KAAK,CAAC;aAChB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;aAC/B,WAAW,EAAE,CAAA;IAClB,CAAC;IAEO,kBAAkB,CAAC,IAAY;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC,aAAa,CAAA;QAC3B,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAA;YACxE,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACxD,OAAO,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;QAC7F,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,cAAc,CAAC,OAA2B;QAChD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;YAC1D,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC9E,OAAO,GAAG,aAAa,GAAG,eAAe,EAAE,CAAA;YAC7C,CAAC;iBAAM,CAAC;gBACN,OAAO,aAAa,CAAA;YACtB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAEO,mBAAmB;;QACzB,2EAA2E;QAC3E,+FAA+F;QAC/F,8EAA8E;QAC9E,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,gDAAgD;QAErK,sFAAsF;QACtF,4FAA4F;QAE5F,qCAAqC;QACrC,IAAI,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAA,cAAc,CAAC,CAAC,CAAC,mCAAI,IAAI,CAAC,CAAC,CAAC,CAAA;QACpH,CAAC;QAAC,WAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;IACH,CAAC;IAEO,sBAAsB;QAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAA;QACnF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAA;QAEvC,IAAI,CAAC,aAAa,GAAG,KAAK,GAAG,CAAC,IAAI,aAAa,KAAK,KAAK,CAAA;QACzD,IAAI,CAAC,eAAe,GAAG,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,KAAK,CAAA;IACnE,CAAC;IAEO,eAAe;;QACrB,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iCAAM,MAAM,KAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,aAAa,IAAG,CAAC,CAAA;QACzG,IAAI,CAAC,aAAa,GAAG,cAAc,CAAA;QAEnC,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAE5B,wDAAwD;QACxD,IAAI,CAAC,oCAAoC,EAAE,CAAA;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACzC,IAAI,CAAC,mCAAmC,EAAE,CAAA;QAE1C,IAAI,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,MAAA,IAAI,CAAC,aAAa,mCAAI,EAAE,CAAC,CAAC,CAAA;QAC9E,CAAC;QAAC,WAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;IACH,CAAC;IAKO,WAAW;QACjB,wGAAwG;QACxG,qGAAqG;QACrG,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAA;QAE1F,OAAO,CACL,gBACE,WAAW,EAAC,OAAO,EACnB,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,YAAY,EAAE,IAAI,CAAC,UAAU,EAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,wBAAwB,EACpF,cAAc,EAAE,CAAC,CAAC,EAClB,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,UAAU,EAAE,CAAA;YACvC,CAAC,EACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EACjD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,EACvC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAC/C,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;YACtD,CAAC;YAEA,IAAI,CAAC,cAAc,IAAI,eAAS,IAAI,EAAC,MAAM,eAAW,iBAAiB,iBAAa,MAAM,GAAW;YACtG,eACE,IAAI,EAAC,QAAQ,eACF,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,EACxE,MAAM,EAAC,IAAI,iBACC,MAAM,GACT,CACF,CACZ,CAAA;IACH,CAAC;IAEO,uBAAuB;QAC7B,OAAO,CACL,WACE,KAAK,EAAE,uBAAuB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,cAC9F,UAAU,EACnB,QAAQ,EAAC,IAAI,EACb,IAAI,EAAC,QAAQ,mBACE,IAAI,CAAC,aAAa,mBAClB,IAAI,CAAC,QAAQ,EAC5B,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAA;YACxD,CAAC,EACD,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,eAAe,EAAE,CAAA;YAC5C,CAAC;YAED,mBACE,IAAI,EAAE,YAAY,IAAI,CAAC,QAAQ,EAAE,EACjC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EACvE,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,aAAa,EAAE,IAAI,CAAC,eAAe,EACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,eAAe,EAAE,GAAG,EAAE;oBACpB,IAAI,CAAC,IAAI,CAAC,QAAQ;wBAAE,IAAI,CAAC,eAAe,EAAE,CAAA;gBAC5C,CAAC,GACY,CACX,CACP,CAAA;IACH,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,CACL,WAAK,KAAK,EAAC,eAAe,EAAC,IAAI,EAAC,QAAQ,mBAAe,OAAO,EAAC,QAAQ,EAAE,CAAC,CAAC,kCAErE,CACP,CAAA;QACH,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACjD,WACE,KAAK,EAAE,WAAW,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EACxF,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,EACvC,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBACpD,MAAM,CAAC,QAAQ,mBACf,IAAI,CAAC,QAAQ,gBAChB,MAAM,CAAC,KAAK,EACxB,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC/D,CAAC,EACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAC5D,CAAC,EACD,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EACnD,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EACrD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAE9C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CACjB,mBACE,IAAI,EAAE,YAAY,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,EAC1C,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EACnC,OAAO,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI,EACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,eAAe,EAAE,GAAG,EAAE;gBACpB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC/D,CAAC,GACD,CACH,CAAC,CAAC,CAAC,CACF,gBACE,WAAW,EAAC,0BAA0B,EACtC,IAAI,EAAE,SAAS,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,EACvC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EACnC,OAAO,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI,EACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,eAAe,EAAE,GAAG,EAAE;gBACpB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC/D,CAAC,GACD,CACH,CACG,CACP,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACK,aAAa;;QACnB,OAAO,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,MAAM,IAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjF,CAAC;IAED;;OAEG;IAEH,UAAU;QACR,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAA;QAClC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAED;;OAEG;IAEH,KAAK;QACH,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iCAAM,MAAM,KAAE,QAAQ,EAAE,KAAK,IAAG,CAAC,CAAA;QAC3F,IAAI,CAAC,aAAa,GAAG,cAAc,CAAA;QAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACjD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAA;QAC7B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAA;QAErB,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/B,IAAI,CAAC,mCAAmC,EAAE,CAAA;QAE1C,IAAI,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/F,CAAC;QAAC,WAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAED;;;OAGG;IAEH,QAAQ;QACN,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC;IAED;;;OAGG;IAEH,QAAQ,CAAC,QAA2B;QAClC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAA;QACrB,6CAA6C;QAC7C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAEO,cAAc;QACpB,OAAO;YACL,WAAW,EAAE,IAAI;SAClB,CAAA;IACH,CAAC;IAEO,iBAAiB,CAAC,KAAY;;QACpC,MAAM,KAAK,GAAG,MAAC,KAAK,CAAC,MAA2B,CAAC,KAAK,mCAAI,EAAE,CAAA;QAC5D,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACxB,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACjE,CAAC;IAEO,gBAAgB,CAAC,KAAiB;;QACxC,gFAAgF;QAChF,iFAAiF;QACjF,MAAM,aAAa,GAAG,KAAK,CAAC,aAAqB,CAAA;QACjD,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAI,MAAA,IAAI,CAAC,EAAE,CAAC,UAAU,0CAAE,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAC,EAAE,CAAC;YACtG,OAAM;QACR,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,yDAAyD;QACzD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACpB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;IACpD,CAAC;IAED,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,4DAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAc,MAAM;gBACjD,6DACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;wBACV,IAAI,CAAC,WAAW,GAAG,EAAqB,CAAA;oBAC1C,CAAC,EACD,YAAY,EAAE,IAAI,CAAC,mBAAmB,GAChC,CACJ;YAEN,4DAAK,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,mBAAiB,IAAI,CAAC,QAAQ;gBACtF,IAAI,CAAC,WAAW,EAAE;gBAElB,IAAI,CAAC,UAAU,IAAI,CAClB,gEACE,QAAQ,EAAE,CAAC,CAAC,EACZ,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EACrD,KAAK,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS;oBAE5E,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,uBAAuB,EAAE;oBACjD,IAAI,CAAC,aAAa,EAAE,CACb,CACX,CACG,CACD,CACR,CAAA;IACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF;AAED,IAAI,QAAQ,GAAG,CAAC,CAAA","sourcesContent":["import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\ninterface SelectOptionItem {\n label: string\n value: string\n selected?: boolean\n sourceElement?: BrSelectOptionElement\n}\n\ninterface BrSelectOptionElement extends HTMLElement {\n label?: string\n value?: string\n selected?: boolean\n}\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/select?tab=designer).\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 private slotElement?: HTMLSlotElement\n private isSyncingOptionElements = false\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 * Controla se o dropdown permanece aberto após selecionar opções.\n * Quando `true`, permite seleção sequencial sem reabrir a lista.\n */\n @Prop({ reflect: true }) keepOpenOnSelect: boolean = false\n\n /**\n * Define as opções disponíveis no componente de seleção.\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 * Exibe o rótulo e o controle em linha (ao lado), ao invés de empilhados.\n * Útil para casos contextuais como paginação.\n */\n @Prop({ reflect: true }) isInline: boolean = false\n\n /**\n * Largura do campo de entrada interno (por exemplo, '88px').\n * Quando definido, sobrescreve a largura padrão de 100% do input.\n */\n @Prop({ reflect: true }) inputWidth?: string\n\n /**\n * Desabilita a interação com o componente `br-select`.\n * Quando `true`, o input e as opções ficam desabilitados e não respondem a cliques ou teclas.\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * Propaga para o input interno a remoção da borda quando desfocado.\n */\n @Prop({ reflect: true }) borderless: 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: SelectOptionItem[] = []\n\n // Opções filtradas de acordo com o termo de busca digitado.\n @State() filteredOptions: SelectOptionItem[] = []\n\n // Valor exibido no input, refletindo as opções selecionadas.\n @State() inputValue: string = ''\n\n // Termo digitado no input (modo busca).\n @State() searchTerm: string = ''\n\n /** Valor selecionado (string para single, string[] para multiple) */\n @Prop({ reflect: false, mutable: true }) value?: string | string[]\n\n @State() selectedValue?: 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 // Indica se o estado do checkbox \"Selecionar Todos\" está indeterminado (algumas, mas não todas, opções selecionadas).\n @State() isIndeterminate: 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 @State() optionElements: BrSelectOptionElement[] = []\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 /** Emite os dados da opção quando ela recebe foco/hover (antes da seleção). */\n @Event({ bubbles: true, composed: true }) optionHover: EventEmitter<{ label: string; value: string }>\n\n /** Dispara quando o dropdown é aberto. */\n @Event({ bubbles: true, composed: true }) opened: EventEmitter<void>\n\n /** Dispara quando o dropdown é fechado. */\n @Event({ bubbles: true, composed: true }) closed: EventEmitter<void>\n\n @Watch('options')\n synchronizeSelect() {\n try {\n const parsedOptions = this.getSourceOptions()\n\n // Sanitiza as opções (remove opções inválidas, etc.)\n this.parsedOptions = parsedOptions\n\n // Atualiza lista filtrada considerando o termo atual\n this.filteredOptions = this.getFilteredOptions(this.searchTerm)\n\n // Atualiza o estado do componente\n this.updateSelectedValueFromParsedOptions()\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 ? Array.isArray(newVal) && newVal.includes(o.value) : newVal === o.value,\n }))\n this.selectedValue = newVal\n this.updateSelectedOptions() // mantém inputValue coeso\n this.updateSelectedAllState()\n this.filteredOptions = this.getFilteredOptions(this.searchTerm)\n this.syncOptionElementsFromParsedOptions()\n }\n\n @Listen('brSelectOptionPropsChange')\n handleSelectOptionPropsChange() {\n if (this.isSyncingOptionElements) return\n if (this.optionElements.length === 0) return\n this.synchronizeSelect()\n }\n\n componentWillLoad() {\n this.isExpanded = this.isOpen\n this.optionElements = this.getOptionElements()\n this.synchronizeSelect()\n }\n\n @Watch('isExpanded')\n handleExpandedChange(isExpanded: boolean) {\n if (isExpanded) {\n this.opened.emit()\n } else {\n this.closed.emit()\n }\n }\n\n componentDidLoad() {\n document.addEventListener('click', this.handleClickOutside)\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside)\n }\n\n private registerOptionItems = () => {\n this.optionElements = this.getOptionElements()\n this.synchronizeSelect()\n }\n\n private getOptionElements(): BrSelectOptionElement[] {\n if (this.slotElement !== undefined && this.slotElement !== null) {\n const assignedElements = this.slotElement.assignedElements({ flatten: true }) as HTMLElement[]\n return assignedElements.filter(\n (el) => el.tagName?.toLowerCase() === 'br-select-option'\n ) as BrSelectOptionElement[]\n }\n\n return Array.from(this.el.querySelectorAll('br-select-option')) as BrSelectOptionElement[]\n }\n\n private getSourceOptions(): SelectOptionItem[] {\n if (this.optionElements.length > 0) {\n return this.optionElements\n .map((optionElement) => {\n const label = this.getOptionElementLabel(optionElement)\n const value = optionElement.value?.trim() || label\n\n return {\n label,\n value,\n selected: optionElement.selected === true,\n sourceElement: optionElement,\n }\n })\n .filter((option) => option.label !== '' || option.value !== '')\n }\n\n return this.getOptionsFromProp()\n }\n\n private getOptionsFromProp(): SelectOptionItem[] {\n let parsedOptions: SelectOptionItem[] = []\n\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 return parsedOptions\n }\n\n private getOptionElementLabel(optionElement: BrSelectOptionElement): string {\n const propLabel = optionElement.label?.trim()\n if (propLabel !== undefined && propLabel !== '') return propLabel\n\n return optionElement.textContent?.trim() || ''\n }\n\n private updateSelectedValueFromParsedOptions() {\n const selectedValues = this.parsedOptions.filter((option) => option.selected === true).map((option) => option.value)\n const currentValue = typeof this.value === 'string' ? this.value : undefined\n this.selectedValue = this.isMultiple ? selectedValues : (selectedValues[0] ?? currentValue ?? undefined)\n this.value = this.selectedValue\n }\n\n private syncOptionElementsFromParsedOptions() {\n if (this.optionElements.length === 0) return\n\n this.isSyncingOptionElements = true\n\n this.parsedOptions.forEach((option) => {\n if (option.sourceElement !== undefined) {\n if (option.selected === true) {\n option.sourceElement.setAttribute('selected', '')\n } else {\n option.sourceElement.removeAttribute('selected')\n }\n }\n })\n\n this.isSyncingOptionElements = false\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 // Usa composedPath para considerar nós dentro de Shadow DOM como \"dentro\" do componente\n const path = (event.composedPath && event.composedPath()) || []\n const clickedInside = path.includes(this.el) || (event.target instanceof Node && this.el.contains(event.target))\n\n if (this.isExpanded && !clickedInside) {\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 const option = this.filteredOptions[index]\n if (option !== undefined) {\n this.handleSelectionByValue(option.value)\n }\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 HTMLBrInputElement | null\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 this.emitHoverFromOption(this.filteredOptions[index])\n }\n }\n\n private emitHoverFromOption(option?: { label: string; value: string }) {\n if (!option) return\n this.optionHover.emit({ label: option.label || option.value, value: option.value })\n }\n\n private openSelect() {\n this.isExpanded = true\n }\n\n private closeSelect() {\n this.isExpanded = false\n // Reinicializar o índice focado ao fechar o select\n this.focusedIndex = -1\n }\n\n private handleSelectionByValue(value: string) {\n const index = this.parsedOptions.findIndex((o) => o.value === value)\n if (index === -1) return\n\n if (this.isMultiple) {\n this.parsedOptions = this.parsedOptions.map((o, i) => (i === index ? { ...o, selected: !o.selected } : o))\n this.isExpanded = this.keepOpenOnSelect\n this.isFocused = false\n this.searchTerm = ''\n } else {\n this.parsedOptions = this.parsedOptions.map((o, i) => ({\n ...o,\n selected: i === index,\n }))\n this.isExpanded = this.keepOpenOnSelect\n // Se fechou, não estamos mais focados na busca.\n // Isso garante que o valor selecionado seja exibido em vez do termo de busca.\n this.isFocused = false\n this.searchTerm = ''\n }\n\n this.updateSelectedValueFromParsedOptions()\n this.valueChange.emit(this.selectedValue)\n\n this.updateSelectedOptions()\n this.updateSelectedAllState()\n this.syncOptionElementsFromParsedOptions()\n\n // Força a atualização da referência do array para garantir que o Stencil detecte a mudança\n this.filteredOptions = [...this.getFilteredOptions(this.searchTerm)]\n\n try {\n this.elementInternals.setFormValue(JSON.stringify(this.selectedValue ?? []))\n } catch {}\n }\n\n private updateSelectedOptions() {\n this.inputValue = this.getStringValue(this.parsedOptions.filter((option) => option.selected))\n }\n\n private normalizeText(text: string): string {\n return (text || '')\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase()\n }\n\n private getFilteredOptions(term: string) {\n if (!term) {\n return this.parsedOptions\n }\n\n const normalizedTerm = this.normalizeText(term)\n return this.parsedOptions.filter((option) => {\n const normalizedLabel = this.normalizeText(option.label || option.value)\n const normalizedValue = this.normalizeText(option.value)\n return normalizedLabel.includes(normalizedTerm) || normalizedValue.includes(normalizedTerm)\n })\n }\n\n private getStringValue(options: SelectOptionItem[]) {\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.filter((option) => option.selected === true).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 try {\n this.elementInternals.setFormValue(JSON.stringify(this.isMultiple ? selectedValues : (selectedValues[0] ?? null)))\n } catch {\n // Ignora erro em testes onde setFormValue não é implementado\n }\n }\n\n private updateSelectedAllState() {\n const selectedCount = this.parsedOptions.filter((option) => option.selected).length\n const total = this.parsedOptions.length\n\n this.isAllSelected = total > 0 && selectedCount === total\n this.isIndeterminate = selectedCount > 0 && selectedCount < total\n }\n\n private toggleSelectAll() {\n const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: !this.isAllSelected }))\n this.parsedOptions = updatedOptions\n\n this.updateSelectedAllState()\n this.updateSelectedOptions()\n\n // Atualiza a prop 'value' e emite o evento para ngModel\n this.updateSelectedValueFromParsedOptions()\n this.valueChange.emit(this.selectedValue)\n this.syncOptionElementsFromParsedOptions()\n\n try {\n this.elementInternals.setFormValue(JSON.stringify(this.selectedValue ?? []))\n } catch {\n // Ignora erro em testes onde setFormValue não é implementado\n }\n }\n\n // Indica se o input de busca está focado.\n @State() isFocused: boolean = false\n\n private renderInput() {\n // Se estiver focado, mostramos EXATAMENTE o que está sendo digitado (searchTerm), mesmo que seja vazio.\n // Se não estiver focado, mostramos o termo de busca (se houver) ou o valor selecionado (inputValue).\n const displayValue = this.isFocused ? this.searchTerm : this.searchTerm || this.inputValue\n\n return (\n <br-input\n exportparts=\"label\"\n value={displayValue}\n label={this.label}\n isInline={this.isInline}\n controlWidth={this.inputWidth}\n borderless={this.borderless}\n placeholder={this.placeholder}\n actionLabel={this.isExpanded ? 'Recolher lista de opções' : 'Exibir lista de opções'}\n actionTabIndex={-1}\n readonly={false}\n disabled={this.disabled}\n onClick={() => {\n if (!this.disabled) this.toggleOpen()\n }}\n onInput={(event) => this.handleSearchInput(event)}\n onFocus={() => this.handleSearchFocus()}\n onBlur={(event) => this.handleSearchBlur(event)}\n onKeyDown={(event) => {\n if (!this.disabled) this.handleKeydownOnInput(event)\n }}\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' : ''} ${this.disabled ? 'disabled' : ''}`}\n data-all=\"data-all\"\n tabindex=\"-1\"\n role=\"option\"\n aria-selected={this.isAllSelected}\n aria-disabled={this.disabled}\n onKeyDown={(event) => {\n if (!this.disabled) this.handleSelectAllKeyDown(event)\n }}\n onClick={() => {\n if (!this.disabled) this.toggleSelectAll()\n }}\n >\n <br-checkbox\n name={`checkbox-${this.customId}`}\n label={this.isAllSelected ? this.unselectAllLabel : this.selectAllLabel}\n checked={this.isAllSelected}\n indeterminate={this.isIndeterminate}\n disabled={this.disabled}\n onClick={(e) => e.stopPropagation()}\n onCheckedChange={() => {\n if (!this.disabled) this.toggleSelectAll()\n }}\n ></br-checkbox>\n </div>\n )\n }\n\n private renderOptions() {\n if (this.filteredOptions.length === 0) {\n return (\n <div class=\"br-item empty\" role=\"option\" aria-selected=\"false\" tabindex={-1}>\n Nenhum resultado encontrado\n </div>\n )\n }\n\n return this.filteredOptions.map((option, index) => (\n <div\n class={`br-item ${option.selected ? 'selected' : ''} ${this.disabled ? 'disabled' : ''}`}\n key={`${option.label}-${this.customId}`}\n role=\"option\"\n tabindex={this.disabled ? -1 : this.focusedIndex === index ? 0 : -1}\n aria-selected={option.selected}\n aria-disabled={this.disabled}\n data-value={option.value}\n onClick={() => {\n if (!this.disabled) this.handleSelectionByValue(option.value)\n }}\n onKeyDown={(event) => {\n if (!this.disabled) this.handleKeydownOnItem(event, index)\n }}\n onMouseOver={() => this.emitHoverFromOption(option)}\n onPointerOver={() => this.emitHoverFromOption(option)}\n onFocus={() => this.emitHoverFromOption(option)}\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 disabled={this.disabled}\n onClick={(e) => e.stopPropagation()}\n onCheckedChange={() => {\n if (!this.disabled) this.handleSelectionByValue(option.value)\n }}\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 disabled={this.disabled}\n onClick={(e) => e.stopPropagation()}\n onCheckedChange={() => {\n if (!this.disabled) this.handleSelectionByValue(option.value)\n }}\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 toggleOpen(): Promise<void> {\n this.isExpanded = !this.isExpanded\n return Promise.resolve()\n }\n\n /**\n * Limpa todas as opções selecionadas.\n */\n @Method()\n clear(): Promise<void> {\n const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: false }))\n this.parsedOptions = updatedOptions\n\n const newValue = this.isMultiple ? [] : undefined\n this.selectedValue = newValue\n this.value = newValue\n\n this.updateSelectedOptions()\n this.updateSelectedAllState()\n this.valueChange.emit(newValue)\n this.syncOptionElementsFromParsedOptions()\n\n try {\n this.elementInternals.setFormValue(JSON.stringify(newValue ?? (this.isMultiple ? [] : null)))\n } catch {\n // Ignora erro em testes onde setFormValue não é implementado\n }\n\n return Promise.resolve()\n }\n\n /**\n * Retorna o valor selecionado.\n * @returns {Promise<string | string[]>} O valor atual.\n */\n @Method()\n getValue(): Promise<string | string[]> {\n return Promise.resolve(this.value)\n }\n\n /**\n * Define o valor do componente.\n * @param {string | string[]} newValue O novo valor a ser definido.\n */\n @Method()\n setValue(newValue: string | string[]): Promise<void> {\n this.value = newValue\n // O @Watch('value') cuidará da sincronização\n return Promise.resolve()\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-select': true,\n }\n }\n\n private handleSearchInput(event: Event) {\n const value = (event.target as HTMLInputElement).value ?? ''\n this.searchTerm = value\n this.filteredOptions = this.getFilteredOptions(value)\n this.isExpanded = true\n }\n\n private handleSearchFocus() {\n this.isFocused = true\n this.filteredOptions = this.getFilteredOptions(this.searchTerm)\n }\n\n private handleSearchBlur(event: FocusEvent) {\n // Se o foco foi movido para dentro do componente (ex: clicou no checkbox/item),\n // não limpamos a busca para manter a lista filtrada estável e permitir o clique.\n const relatedTarget = event.relatedTarget as Node\n if (relatedTarget && (this.el.contains(relatedTarget) || this.el.shadowRoot?.contains(relatedTarget))) {\n return\n }\n\n this.isFocused = false\n // Ao sair do campo, volta a exibir o resumo das seleções\n this.searchTerm = ''\n this.filteredOptions = this.getFilteredOptions('')\n }\n\n render() {\n return (\n <Host>\n <div style={{ display: 'none' }} aria-hidden=\"true\">\n <slot\n ref={(el) => {\n this.slotElement = el as HTMLSlotElement\n }}\n onSlotchange={this.registerOptionItems}\n ></slot>\n </div>\n\n <div class={this.getCssClassMap()} id={this.getComputedId()} aria-disabled={this.disabled}>\n {this.renderInput()}\n\n {this.isExpanded && (\n <br-list\n tabindex={-1}\n onKeyDown={(event) => this.handleKeydownOnList(event)}\n style={this.inputWidth !== undefined ? { width: this.inputWidth } : undefined}\n >\n {this.isMultiple && this.renderSelectAllCheckbox()}\n {this.renderOptions()}\n </br-list>\n )}\n </div>\n </Host>\n )\n }\n}\n\nlet selectId = 0\n"]}