@verbb/plugin-kit-web 2.0.23 → 2.0.25

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 (446) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/chunks/{active-elements-DM_lCHaW.js → active-elements-739kISON.js} +1 -1
  3. package/dist/chunks/{active-elements-DM_lCHaW.js.map → active-elements-739kISON.js.map} +1 -1
  4. package/dist/chunks/{animate-with-class-NP-yJVt_.js → animate-with-class-CjTZI0NU.js} +1 -1
  5. package/dist/chunks/{animate-with-class-NP-yJVt_.js.map → animate-with-class-CjTZI0NU.js.map} +1 -1
  6. package/dist/chunks/{autoloader-DnSfHkrD.js → autoloader-DcwybeWc.js} +3 -3
  7. package/dist/chunks/{autoloader-DnSfHkrD.js.map → autoloader-DcwybeWc.js.map} +1 -1
  8. package/dist/chunks/{button-group-item.styles-G05d0DNI.js → button-group-item.styles-D7tuu-sr.js} +1 -1
  9. package/dist/chunks/{button-group-item.styles-G05d0DNI.js.map → button-group-item.styles-D7tuu-sr.js.map} +1 -1
  10. package/dist/chunks/{component-registry-DoevfR-u.js → component-registry-B5pnAZsb.js} +2 -1
  11. package/dist/chunks/{component-registry-DoevfR-u.js.map → component-registry-B5pnAZsb.js.map} +1 -1
  12. package/dist/chunks/{control-aria-CzouQRZD.js → control-aria-CtNg2izr.js} +1 -1
  13. package/dist/chunks/{control-aria-CzouQRZD.js.map → control-aria-CtNg2izr.js.map} +1 -1
  14. package/dist/chunks/{decorate-R0X811qp.js → decorate-Br_PE9pq.js} +3 -4
  15. package/dist/chunks/{decorate-R0X811qp.js.map → decorate-Br_PE9pq.js.map} +1 -1
  16. package/dist/chunks/decorators-BkErmuYK.js +2 -0
  17. package/dist/chunks/{dismissible-stack-B3BgzdQb.js → dismissible-stack-CwhtwAyo.js} +1 -1
  18. package/dist/chunks/{dismissible-stack-B3BgzdQb.js.map → dismissible-stack-CwhtwAyo.js.map} +1 -1
  19. package/dist/chunks/{field-labels-CGSfAGf-.js → field-labels-pY-gQDwQ.js} +1 -1
  20. package/dist/chunks/{field-labels-CGSfAGf-.js.map → field-labels-pY-gQDwQ.js.map} +1 -1
  21. package/dist/chunks/{focus-C6pY4Ym4.js → focus-DcVUPVqn.js} +2 -2
  22. package/dist/chunks/{focus-C6pY4Ym4.js.map → focus-DcVUPVqn.js.map} +1 -1
  23. package/dist/chunks/{form-control.styles-BHwSsx_y.js → form-control.styles-CQ93gnVf.js} +1 -1
  24. package/dist/chunks/{form-control.styles-BHwSsx_y.js.map → form-control.styles-CQ93gnVf.js.map} +1 -1
  25. package/dist/chunks/{has-slot-9zjTXvea.js → has-slot-DJv86HKx.js} +1 -1
  26. package/dist/chunks/{has-slot-9zjTXvea.js.map → has-slot-DJv86HKx.js.map} +1 -1
  27. package/dist/chunks/{icon.styles-pNyUmVtP.js → icon.styles-KWvfi7RV.js} +1 -1
  28. package/dist/chunks/{icon.styles-pNyUmVtP.js.map → icon.styles-KWvfi7RV.js.map} +1 -1
  29. package/dist/chunks/{icons-B8siZLOe.js → icons-k1pvx6yX.js} +2 -2
  30. package/dist/chunks/{icons-B8siZLOe.js.map → icons-k1pvx6yX.js.map} +1 -1
  31. package/dist/chunks/{mirror-validator-Cszpqlxk.js → mirror-validator-BkZlEv1Z.js} +1 -1
  32. package/dist/chunks/{mirror-validator-Cszpqlxk.js.map → mirror-validator-BkZlEv1Z.js.map} +1 -1
  33. package/dist/chunks/{option-filter-Cj5SvyzI.js → option-filter-BkKyBg8L.js} +2 -2
  34. package/dist/chunks/{option-filter-Cj5SvyzI.js.map → option-filter-BkKyBg8L.js.map} +1 -1
  35. package/dist/chunks/{overlay-lifecycle-CAoT0LE8.js → overlay-lifecycle-C582MGBJ.js} +1 -1
  36. package/dist/chunks/{overlay-lifecycle-CAoT0LE8.js.map → overlay-lifecycle-C582MGBJ.js.map} +1 -1
  37. package/dist/chunks/{pk-alert-Cjxl6CY_.js → pk-alert-BQAb4lJc.js} +9 -7
  38. package/dist/chunks/pk-alert-BQAb4lJc.js.map +1 -0
  39. package/dist/chunks/{pk-autocomplete-DA77kdTN.js → pk-autocomplete-DUXhs1hi.js} +20 -19
  40. package/dist/chunks/pk-autocomplete-DUXhs1hi.js.map +1 -0
  41. package/dist/chunks/{pk-button-group-DBdKK_2_.js → pk-button-group-BY12Lbk7.js} +10 -7
  42. package/dist/chunks/pk-button-group-BY12Lbk7.js.map +1 -0
  43. package/dist/chunks/{pk-button-group-separator-D0Aa0a0f.js → pk-button-group-separator-B1a8dP9A.js} +3 -2
  44. package/dist/chunks/pk-button-group-separator-B1a8dP9A.js.map +1 -0
  45. package/dist/chunks/{pk-button-group-text-BsqEM-dB.js → pk-button-group-text-CWNlZkyV.js} +3 -3
  46. package/dist/chunks/pk-button-group-text-CWNlZkyV.js.map +1 -0
  47. package/dist/chunks/{pk-button-DCtNLEPr.js → pk-button-ntSVrer_.js} +7 -6
  48. package/dist/chunks/pk-button-ntSVrer_.js.map +1 -0
  49. package/dist/chunks/{pk-calendar-hBz1MnOu.js → pk-calendar-Df0c5u79.js} +11 -10
  50. package/dist/chunks/pk-calendar-Df0c5u79.js.map +1 -0
  51. package/dist/chunks/{pk-checkbox-dvHRoVbL.js → pk-checkbox-L5uRex3b.js} +6 -5
  52. package/dist/chunks/pk-checkbox-L5uRex3b.js.map +1 -0
  53. package/dist/chunks/{pk-checkbox-select-Cqx5ZCMq.js → pk-checkbox-select-6OS0wFYO.js} +4 -3
  54. package/dist/chunks/pk-checkbox-select-6OS0wFYO.js.map +1 -0
  55. package/dist/chunks/{pk-clear-LzxwxEX7.js → pk-clear-DHxP_2cm.js} +1 -1
  56. package/dist/chunks/{pk-clear-LzxwxEX7.js.map → pk-clear-DHxP_2cm.js.map} +1 -1
  57. package/dist/chunks/{pk-code-editor-C_PqjR75.js → pk-code-editor-vZriNR67.js} +6 -5
  58. package/dist/chunks/pk-code-editor-vZriNR67.js.map +1 -0
  59. package/dist/chunks/{pk-color-input-4LDV0Z3W.js → pk-color-input-Csbm4ROT.js} +6 -5
  60. package/dist/chunks/pk-color-input-Csbm4ROT.js.map +1 -0
  61. package/dist/chunks/{pk-combobox-BeddzAsl.js → pk-combobox-BrSBrldb.js} +24 -22
  62. package/dist/chunks/pk-combobox-BrSBrldb.js.map +1 -0
  63. package/dist/chunks/{pk-connect.styles-ciqZMK3B.js → pk-connect.styles-oKhxa_m2.js} +1 -1
  64. package/dist/chunks/{pk-connect.styles-ciqZMK3B.js.map → pk-connect.styles-oKhxa_m2.js.map} +1 -1
  65. package/dist/chunks/{pk-copy-button-KegSx46o.js → pk-copy-button-5i9v_zmu.js} +7 -6
  66. package/dist/chunks/pk-copy-button-5i9v_zmu.js.map +1 -0
  67. package/dist/chunks/{pk-date-picker-D_JFep-Y.js → pk-date-picker-C-w6Mn6j.js} +20 -19
  68. package/dist/chunks/pk-date-picker-C-w6Mn6j.js.map +1 -0
  69. package/dist/chunks/{pk-dialog-CFU850OH.js → pk-dialog-C7KZGpQs.js} +9 -8
  70. package/dist/chunks/pk-dialog-C7KZGpQs.js.map +1 -0
  71. package/dist/chunks/{pk-dropdown-item-A4P4zfVF.js → pk-dropdown-item-Ck2N_suK.js} +11 -8
  72. package/dist/chunks/pk-dropdown-item-Ck2N_suK.js.map +1 -0
  73. package/dist/chunks/{pk-dropdown-label-PqDxMkCI.js → pk-dropdown-label-BdZLeizJ.js} +2 -2
  74. package/dist/chunks/pk-dropdown-label-BdZLeizJ.js.map +1 -0
  75. package/dist/chunks/{pk-dropdown-menu-C_vasBoa.js → pk-dropdown-menu-DBsO1uYR.js} +22 -18
  76. package/dist/chunks/pk-dropdown-menu-DBsO1uYR.js.map +1 -0
  77. package/dist/chunks/{pk-editable-table-B85NhFYY.js → pk-editable-table-Cd8K6vT4.js} +25 -22
  78. package/dist/chunks/pk-editable-table-Cd8K6vT4.js.map +1 -0
  79. package/dist/chunks/{pk-field-BJA2fZ6s.js → pk-field--PCE9nOd.js} +8 -7
  80. package/dist/chunks/pk-field--PCE9nOd.js.map +1 -0
  81. package/dist/chunks/{pk-form-associated-element-MqaHdIoH.js → pk-form-associated-element-Doh2K3pG.js} +3 -3
  82. package/dist/chunks/pk-form-associated-element-Doh2K3pG.js.map +1 -0
  83. package/dist/chunks/{pk-image-browser-DLAQcjFt.js → pk-image-browser-iUqdcLKs.js} +20 -20
  84. package/dist/chunks/pk-image-browser-iUqdcLKs.js.map +1 -0
  85. package/dist/chunks/{pk-input-CiUNLTSW.js → pk-input-BUbXj9We.js} +14 -13
  86. package/dist/chunks/pk-input-BUbXj9We.js.map +1 -0
  87. package/dist/chunks/{pk-input-group-k7WV0pQI.js → pk-input-group-CN79c5HT.js} +5 -4
  88. package/dist/chunks/pk-input-group-CN79c5HT.js.map +1 -0
  89. package/dist/chunks/{pk-input-group-addon-piOznzSS.js → pk-input-group-addon-DpxfuYp1.js} +3 -2
  90. package/dist/chunks/pk-input-group-addon-DpxfuYp1.js.map +1 -0
  91. package/dist/chunks/{pk-input-group-button-Di2vEJLo.js → pk-input-group-button-D5Hm4saA.js} +3 -2
  92. package/dist/chunks/pk-input-group-button-D5Hm4saA.js.map +1 -0
  93. package/dist/chunks/{pk-input-group-input-CwaaEfr1.js → pk-input-group-input-Cm1MoHgN.js} +3 -2
  94. package/dist/chunks/pk-input-group-input-Cm1MoHgN.js.map +1 -0
  95. package/dist/chunks/{pk-input-group-text-C0VAdy0J.js → pk-input-group-text-CtyJZ_Kg.js} +2 -2
  96. package/dist/chunks/pk-input-group-text-CtyJZ_Kg.js.map +1 -0
  97. package/dist/chunks/{pk-input-group-textarea-DOG1NIlE.js → pk-input-group-textarea-BxmKGjdt.js} +3 -2
  98. package/dist/chunks/pk-input-group-textarea-BxmKGjdt.js.map +1 -0
  99. package/dist/chunks/{pk-lightswitch-FH5ZxMG2.js → pk-lightswitch-CSvgiHVQ.js} +9 -8
  100. package/dist/chunks/pk-lightswitch-CSvgiHVQ.js.map +1 -0
  101. package/dist/chunks/{pk-option-Cx52kLmz.js → pk-option-B_PF4v_Z.js} +9 -7
  102. package/dist/chunks/pk-option-B_PF4v_Z.js.map +1 -0
  103. package/dist/chunks/{pk-option-group-CYo9Ukue.js → pk-option-group-D6bHfn0j.js} +4 -3
  104. package/dist/chunks/pk-option-group-D6bHfn0j.js.map +1 -0
  105. package/dist/chunks/{pk-popover-209LdoPr.js → pk-popover-BOoGfR7I.js} +11 -10
  106. package/dist/chunks/pk-popover-BOoGfR7I.js.map +1 -0
  107. package/dist/chunks/{pk-popup-0EIt9X_W.js → pk-popup-DVE93VSV.js} +32 -28
  108. package/dist/chunks/pk-popup-DVE93VSV.js.map +1 -0
  109. package/dist/chunks/{pk-radio-jgj6A0Wy.js → pk-radio-D0eqmnlH.js} +3 -2
  110. package/dist/chunks/pk-radio-D0eqmnlH.js.map +1 -0
  111. package/dist/chunks/{pk-radio-group-CruMBeeF.js → pk-radio-group-BehEZG_k.js} +8 -7
  112. package/dist/chunks/pk-radio-group-BehEZG_k.js.map +1 -0
  113. package/dist/chunks/{pk-scroll-area-BaqN798b.js → pk-scroll-area-BeaLZ6k-.js} +3 -2
  114. package/dist/chunks/pk-scroll-area-BeaLZ6k-.js.map +1 -0
  115. package/dist/chunks/{pk-select-UUH7FE4H.js → pk-select-DZNpEk5Z.js} +19 -18
  116. package/dist/chunks/pk-select-DZNpEk5Z.js.map +1 -0
  117. package/dist/chunks/{pk-separator-Bcxg_GO2.js → pk-separator-ZkRowI5Y.js} +3 -2
  118. package/dist/chunks/pk-separator-ZkRowI5Y.js.map +1 -0
  119. package/dist/chunks/{pk-spinner-CN365srE.js → pk-spinner-Bxkn4iVO.js} +3 -2
  120. package/dist/chunks/pk-spinner-Bxkn4iVO.js.map +1 -0
  121. package/dist/chunks/{pk-state-panel-DPP7t-er.js → pk-state-panel-BTo2xiug.js} +7 -6
  122. package/dist/chunks/pk-state-panel-BTo2xiug.js.map +1 -0
  123. package/dist/chunks/{pk-status-CYcadu0Q.js → pk-status-CdiRBRyh.js} +3 -2
  124. package/dist/chunks/pk-status-CdiRBRyh.js.map +1 -0
  125. package/dist/chunks/{pk-tab-BmXNyDg7.js → pk-tab-CSbI3XxX.js} +2 -2
  126. package/dist/chunks/pk-tab-CSbI3XxX.js.map +1 -0
  127. package/dist/chunks/{pk-tab-heading-GZHVmCAd.js → pk-tab-heading-BMyLTBNc.js} +2 -2
  128. package/dist/chunks/pk-tab-heading-BMyLTBNc.js.map +1 -0
  129. package/dist/chunks/{pk-tab-panel-OpM3f_cm.js → pk-tab-panel-sgdRjV8o.js} +2 -2
  130. package/dist/chunks/pk-tab-panel-sgdRjV8o.js.map +1 -0
  131. package/dist/chunks/{pk-tabs-x26NAw-V.js → pk-tabs-bBNCu_4h.js} +10 -7
  132. package/dist/chunks/pk-tabs-bBNCu_4h.js.map +1 -0
  133. package/dist/chunks/{pk-textarea-CBijEmcV.js → pk-textarea-B401dUWa.js} +11 -10
  134. package/dist/chunks/pk-textarea-B401dUWa.js.map +1 -0
  135. package/dist/chunks/{pk-time-picker-D-u5-7pf.js → pk-time-picker-DnNZVwRk.js} +6 -6
  136. package/dist/chunks/pk-time-picker-DnNZVwRk.js.map +1 -0
  137. package/dist/chunks/{pk-tiptap-content-BGxMO3T4.js → pk-tiptap-content-DmS_2EUi.js} +4 -3
  138. package/dist/chunks/pk-tiptap-content-DmS_2EUi.js.map +1 -0
  139. package/dist/chunks/{pk-tiptap-editor-BeuyzH5l.js → pk-tiptap-editor-DCgHtgoi.js} +20 -21
  140. package/dist/chunks/pk-tiptap-editor-DCgHtgoi.js.map +1 -0
  141. package/dist/chunks/{pk-tiptap-input-CQojaxDH.js → pk-tiptap-input-asrD-8W6.js} +7 -6
  142. package/dist/chunks/pk-tiptap-input-asrD-8W6.js.map +1 -0
  143. package/dist/chunks/{pk-toggle-CAtGO_Le.js → pk-toggle-Co8GsHuK.js} +4 -3
  144. package/dist/chunks/pk-toggle-Co8GsHuK.js.map +1 -0
  145. package/dist/chunks/{pk-toggle-group-CLso6OE7.js → pk-toggle-group-Ct1ljI-7.js} +7 -4
  146. package/dist/chunks/pk-toggle-group-Ct1ljI-7.js.map +1 -0
  147. package/dist/chunks/{pk-tooltip-C6yb4CXI.js → pk-tooltip-Cvv2f7T5.js} +7 -6
  148. package/dist/chunks/pk-tooltip-Cvv2f7T5.js.map +1 -0
  149. package/dist/chunks/{popup-content-animation.styles-EUnGV75J.js → popup-content-animation.styles-CJ8zGJz-.js} +1 -1
  150. package/dist/chunks/{popup-content-animation.styles-EUnGV75J.js.map → popup-content-animation.styles-CJ8zGJz-.js.map} +1 -1
  151. package/dist/chunks/{popup-placement-animation-GvFXER7D.js → popup-placement-animation-ClUYI79z.js} +1 -1
  152. package/dist/chunks/{popup-placement-animation-GvFXER7D.js.map → popup-placement-animation-ClUYI79z.js.map} +1 -1
  153. package/dist/chunks/{popup-pointer-BTS3Y6LE.js → popup-pointer-Bh_d205v.js} +1 -1
  154. package/dist/chunks/{popup-pointer-BTS3Y6LE.js.map → popup-pointer-Bh_d205v.js.map} +1 -1
  155. package/dist/chunks/{register-components-Dcdn1e3S.js → register-components-CZtpgZe3.js} +1 -1
  156. package/dist/chunks/{register-components-Dcdn1e3S.js.map → register-components-CZtpgZe3.js.map} +1 -1
  157. package/dist/chunks/{render-BKGW1a68.js → render-DQZp_Rak.js} +1 -1
  158. package/dist/chunks/{render-BKGW1a68.js.map → render-DQZp_Rak.js.map} +1 -1
  159. package/dist/chunks/{required-validator-CaRnQk1V.js → required-validator-I58oJGZ3.js} +1 -1
  160. package/dist/chunks/{required-validator-CaRnQk1V.js.map → required-validator-I58oJGZ3.js.map} +1 -1
  161. package/dist/chunks/{scroll-lock-gTFrvIPu.js → scroll-lock-DE1pElMQ.js} +2 -2
  162. package/dist/chunks/{scroll-lock-gTFrvIPu.js.map → scroll-lock-DE1pElMQ.js.map} +1 -1
  163. package/dist/chunks/{spinner-utils-Co_4X3ip.js → spinner-utils-DXwIxQ6z.js} +1 -1
  164. package/dist/chunks/{spinner-utils-Co_4X3ip.js.map → spinner-utils-DXwIxQ6z.js.map} +1 -1
  165. package/dist/chunks/{supports-popover-6lNVStLh.js → supports-popover-BCqyOPtO.js} +1 -1
  166. package/dist/chunks/{supports-popover-6lNVStLh.js.map → supports-popover-BCqyOPtO.js.map} +1 -1
  167. package/dist/chunks/{sync-listbox-separators-CPFtrpNq.js → sync-listbox-separators-saLEtPpJ.js} +2 -2
  168. package/dist/chunks/{sync-listbox-separators-CPFtrpNq.js.map → sync-listbox-separators-saLEtPpJ.js.map} +1 -1
  169. package/dist/chunks/{tiptap.styles-DjhIrSBN.js → tiptap.styles-Cwb_cj9g.js} +21 -2
  170. package/dist/chunks/{tiptap.styles-DjhIrSBN.js.map → tiptap.styles-Cwb_cj9g.js.map} +1 -1
  171. package/dist/components/alert/pk-alert.js +1 -1
  172. package/dist/components/alert.js +1 -1
  173. package/dist/components/autocomplete/pk-autocomplete.js +1 -1
  174. package/dist/components/autocomplete.js +1 -1
  175. package/dist/components/button/pk-button.js +1 -1
  176. package/dist/components/button-group/pk-button-group-separator.js +1 -1
  177. package/dist/components/button-group/pk-button-group-text.js +1 -1
  178. package/dist/components/button-group/pk-button-group.js +1 -1
  179. package/dist/components/button-group.js +3 -3
  180. package/dist/components/button.js +1 -1
  181. package/dist/components/calendar/pk-calendar.js +1 -1
  182. package/dist/components/calendar.js +1 -1
  183. package/dist/components/checkbox/pk-checkbox.js +1 -1
  184. package/dist/components/checkbox-select/pk-checkbox-select.js +1 -1
  185. package/dist/components/checkbox-select.js +1 -1
  186. package/dist/components/checkbox.js +1 -1
  187. package/dist/components/code-editor/pk-code-editor.js +1 -1
  188. package/dist/components/code-editor.js +1 -1
  189. package/dist/components/color-input/pk-color-input.js +1 -1
  190. package/dist/components/color-input.js +1 -1
  191. package/dist/components/combobox/pk-combobox.js +1 -1
  192. package/dist/components/combobox.js +1 -1
  193. package/dist/components/connect/pk-connect-oauth.js +5 -4
  194. package/dist/components/connect/pk-connect-oauth.js.map +1 -1
  195. package/dist/components/connect/pk-connect.js +7 -6
  196. package/dist/components/connect/pk-connect.js.map +1 -1
  197. package/dist/components/copy-button/pk-copy-button.js +1 -1
  198. package/dist/components/copy-button.js +1 -1
  199. package/dist/components/date-picker/pk-date-picker.js +1 -1
  200. package/dist/components/date-picker.js +1 -1
  201. package/dist/components/dialog/pk-dialog.js +1 -1
  202. package/dist/components/dialog.js +1 -1
  203. package/dist/components/dropdown-menu/pk-dropdown-item.js +1 -1
  204. package/dist/components/dropdown-menu/pk-dropdown-label.js +1 -1
  205. package/dist/components/dropdown-menu/pk-dropdown-menu.js +1 -1
  206. package/dist/components/dropdown-menu/pk-dropdown-separator.js +1 -1
  207. package/dist/components/dropdown-menu/pk-dropdown-separator.js.map +1 -1
  208. package/dist/components/dropdown-menu.js +3 -3
  209. package/dist/components/editable-table/pk-editable-table.js +1 -1
  210. package/dist/components/editable-table.js +1 -1
  211. package/dist/components/field/pk-field.js +1 -1
  212. package/dist/components/field.js +1 -1
  213. package/dist/components/icon/pk-icon.js +2 -1
  214. package/dist/components/icon/pk-icon.js.map +1 -1
  215. package/dist/components/image-browser/pk-image-browser.js +1 -1
  216. package/dist/components/image-browser.js +1 -1
  217. package/dist/components/input/pk-input.js +1 -1
  218. package/dist/components/input-group/pk-input-group-addon.js +1 -1
  219. package/dist/components/input-group/pk-input-group-button.js +1 -1
  220. package/dist/components/input-group/pk-input-group-input.js +1 -1
  221. package/dist/components/input-group/pk-input-group-text.js +1 -1
  222. package/dist/components/input-group/pk-input-group-textarea.js +1 -1
  223. package/dist/components/input-group/pk-input-group.js +1 -1
  224. package/dist/components/input-group.js +6 -6
  225. package/dist/components/input.js +1 -1
  226. package/dist/components/lightswitch/pk-lightswitch.js +1 -1
  227. package/dist/components/lightswitch.js +1 -1
  228. package/dist/components/popover/pk-popover.js +1 -1
  229. package/dist/components/popover.js +1 -1
  230. package/dist/components/popup/pk-popup.js +1 -1
  231. package/dist/components/popup.js +1 -1
  232. package/dist/components/radio-group/pk-radio-group.js +1 -1
  233. package/dist/components/radio-group/pk-radio.js +1 -1
  234. package/dist/components/radio-group.js +2 -2
  235. package/dist/components/scroll-area/pk-scroll-area.js +1 -1
  236. package/dist/components/scroll-area.js +1 -1
  237. package/dist/components/select/pk-option-group.js +1 -1
  238. package/dist/components/select/pk-option.js +1 -1
  239. package/dist/components/select/pk-select.js +1 -1
  240. package/dist/components/select.js +3 -3
  241. package/dist/components/separator/pk-separator.js +1 -1
  242. package/dist/components/separator.js +1 -1
  243. package/dist/components/spinner/pk-spinner.js +1 -1
  244. package/dist/components/spinner.js +2 -2
  245. package/dist/components/state-panel/pk-state-panel.js +1 -1
  246. package/dist/components/state-panel.js +1 -1
  247. package/dist/components/status/pk-status.js +1 -1
  248. package/dist/components/status.js +1 -1
  249. package/dist/components/tabs/pk-tab-heading.js +1 -1
  250. package/dist/components/tabs/pk-tab-panel.js +1 -1
  251. package/dist/components/tabs/pk-tab.js +1 -1
  252. package/dist/components/tabs/pk-tabs.js +1 -1
  253. package/dist/components/tabs.js +4 -4
  254. package/dist/components/textarea/pk-textarea.js +1 -1
  255. package/dist/components/textarea.js +1 -1
  256. package/dist/components/time-picker/pk-time-picker.js +1 -1
  257. package/dist/components/time-picker.js +1 -1
  258. package/dist/components/tiptap/pk-tiptap-content.js +1 -1
  259. package/dist/components/tiptap/pk-tiptap-editor.js +1 -1
  260. package/dist/components/tiptap/pk-tiptap-input.js +1 -1
  261. package/dist/components/tiptap/tiptap.styles.d.ts.map +1 -1
  262. package/dist/components/tiptap-content.js +1 -1
  263. package/dist/components/tiptap-editor.js +1 -1
  264. package/dist/components/tiptap-input.js +1 -1
  265. package/dist/components/toggle/pk-toggle.js +1 -1
  266. package/dist/components/toggle-group/pk-toggle-group.js +1 -1
  267. package/dist/components/toggle-group.js +1 -1
  268. package/dist/components/toggle.js +1 -1
  269. package/dist/components/tooltip/pk-tooltip.js +1 -1
  270. package/dist/components/tooltip.js +1 -1
  271. package/dist/connect/register-cp-connect.js +4 -4
  272. package/dist/connect/register-cp-connect.js.map +1 -1
  273. package/dist/icons/index.js +2 -2
  274. package/dist/index.js +67 -67
  275. package/dist/plugin-kit.js +4 -4
  276. package/dist/plugin-kit.js.map +1 -1
  277. package/dist/register-components.js +1 -1
  278. package/dist/register.js +120 -55
  279. package/dist/register.js.map +1 -0
  280. package/dist-loader/chunks/{button-group-item.styles-CXLuiMeZ.js → button-group-item.styles-BQbvE3sC.js} +1 -1
  281. package/dist-loader/chunks/{codemirror-CU2NB7wh.js → codemirror-C_TTKlG1.js} +584 -436
  282. package/dist-loader/chunks/editor-CS16rBkM.js +110 -0
  283. package/dist-loader/chunks/{floating-ui-B84As3F-.js → floating-ui-BJQPB-Ip.js} +9 -11
  284. package/dist-loader/chunks/{lit-s6aadvWG.js → lit-B6nFKgbW.js} +52 -14
  285. package/dist-loader/chunks/{option-filter-DH11hDpV.js → option-filter-BkKyBg8L.js} +1 -1
  286. package/dist-loader/chunks/{pk-a11y-CjB4-U-R.js → pk-a11y-mGj0G5AE.js} +1 -1
  287. package/dist-loader/chunks/{pk-base-Om6X9ab5.js → pk-base-BGegy7-X.js} +2 -2
  288. package/dist-loader/chunks/{pk-button-nSZxt8_B.js → pk-button-DV9Tk5Pd.js} +5 -5
  289. package/dist-loader/chunks/{pk-calendar-BS7Mfme_.js → pk-calendar-C0xpIVIw.js} +9 -9
  290. package/dist-loader/chunks/{pk-checkbox-CYUcOnco.js → pk-checkbox-DhP0iMoP.js} +9 -6
  291. package/dist-loader/chunks/{pk-color-input-BjDit7z0.js → pk-color-input-B02cYzyr.js} +4 -4
  292. package/dist-loader/chunks/{pk-combobox-DyexEhFo.js → pk-combobox-S_tpNUHK.js} +19 -18
  293. package/dist-loader/chunks/{pk-connect.styles-BsPAXjgF.js → pk-connect.styles-B5qe5yQB.js} +1 -1
  294. package/dist-loader/chunks/{pk-copy-button-CoN83ilF.js → pk-copy-button-D6tPuhJ3.js} +6 -6
  295. package/dist-loader/chunks/{pk-date-picker-CO6deRCu.js → pk-date-picker-C0y4sfSf.js} +15 -15
  296. package/dist-loader/chunks/{pk-dialog-BWo6iDnY.js → pk-dialog-BJs5fVHS.js} +7 -7
  297. package/dist-loader/chunks/{pk-dropdown-item-CbujjI8U.js → pk-dropdown-item-Bs5NZDRh.js} +11 -9
  298. package/dist-loader/chunks/{pk-dropdown-label-9X4ctyES.js → pk-dropdown-label-Cpl9-bzB.js} +2 -2
  299. package/dist-loader/chunks/{pk-dropdown-menu-D1KpGuqU.js → pk-dropdown-menu-CLrfuD3i.js} +20 -17
  300. package/dist-loader/chunks/{pk-field-DzggayrX.js → pk-field-Pg61fxBR.js} +140 -74
  301. package/dist-loader/chunks/{pk-icon-DQPqxFKW.js → pk-icon-B7ywfPb6.js} +4 -4
  302. package/dist-loader/chunks/{pk-input-C1peOijH.js → pk-input-Cj5s8eBT.js} +10 -10
  303. package/dist-loader/chunks/{pk-lightswitch-Y-I3eKCt.js → pk-lightswitch-rUGB1p8q.js} +6 -6
  304. package/dist-loader/chunks/{pk-option-IfazQDxz.js → pk-option-B-MeLvZf.js} +8 -7
  305. package/dist-loader/chunks/{pk-popup-BrLT_4kD.js → pk-popup-CeyruJFh.js} +35 -29
  306. package/dist-loader/chunks/{pk-select-49fogRYV.js → pk-select-JUx3mxRS.js} +14 -14
  307. package/dist-loader/chunks/{pk-spinner-BmnrA60m.js → pk-spinner-B8iuHDQ9.js} +2 -2
  308. package/dist-loader/chunks/{pk-state-panel-DKf54EnJ.js → pk-state-panel-BhdZGllL.js} +7 -7
  309. package/dist-loader/chunks/{pk-status-Dat3_D-T.js → pk-status-D3qVwWlR.js} +2 -2
  310. package/dist-loader/chunks/{pk-textarea-DPb2R8gV.js → pk-textarea-KnpJMQX2.js} +7 -7
  311. package/dist-loader/chunks/{pk-time-picker-CJiQTVuC.js → pk-time-picker-DCqZ5z7M.js} +6 -6
  312. package/dist-loader/chunks/{pk-tooltip-CqwQfOPV.js → pk-tooltip-DStkplzy.js} +6 -6
  313. package/dist-loader/chunks/{popup-content-animation.styles-CWR2mend.js → popup-content-animation.styles-BtUVJg82.js} +1 -1
  314. package/dist-loader/chunks/{render-BuA2YeZN.js → render-D9G_a_c2.js} +1 -1
  315. package/dist-loader/chunks/{sync-listbox-separators-rbu8jrAa.js → sync-listbox-separators-saLEtPpJ.js} +1 -1
  316. package/dist-loader/chunks/{tiptap-BhYH5Dva.js → tiptap-DYSRDaas.js} +10392 -7521
  317. package/dist-loader/chunks/tiptap.styles-CZUkf2K6.js +915 -0
  318. package/dist-loader/components/alert/alert.js +8 -7
  319. package/dist-loader/components/autocomplete/autocomplete.js +15 -15
  320. package/dist-loader/components/button/button.js +1 -1
  321. package/dist-loader/components/button-group/button-group-separator.js +2 -2
  322. package/dist-loader/components/button-group/button-group-text.js +3 -3
  323. package/dist-loader/components/button-group/button-group.js +9 -7
  324. package/dist-loader/components/calendar/calendar.js +1 -1
  325. package/dist-loader/components/checkbox/checkbox.js +1 -1
  326. package/dist-loader/components/checkbox-select/checkbox-select.js +3 -3
  327. package/dist-loader/components/code-editor/code-editor.js +4 -4
  328. package/dist-loader/components/color-input/color-input.js +1 -1
  329. package/dist-loader/components/combobox/combobox.js +1 -1
  330. package/dist-loader/components/connect/connect-oauth.js +5 -5
  331. package/dist-loader/components/connect/connect.js +8 -8
  332. package/dist-loader/components/copy-button/copy-button.js +1 -1
  333. package/dist-loader/components/date-picker/date-picker.js +1 -1
  334. package/dist-loader/components/dialog/dialog.js +1 -1
  335. package/dist-loader/components/dropdown-menu/dropdown-item.js +1 -1
  336. package/dist-loader/components/dropdown-menu/dropdown-label.js +1 -1
  337. package/dist-loader/components/dropdown-menu/dropdown-menu.js +1 -1
  338. package/dist-loader/components/dropdown-menu/dropdown-separator.js +2 -2
  339. package/dist-loader/components/editable-table/editable-table.js +25 -23
  340. package/dist-loader/components/field/field.js +1 -1
  341. package/dist-loader/components/icon/icon.js +3 -3
  342. package/dist-loader/components/image-browser/image-browser.js +15 -16
  343. package/dist-loader/components/input/input.js +1 -1
  344. package/dist-loader/components/input-group/input-group-addon.js +2 -2
  345. package/dist-loader/components/input-group/input-group-button.js +2 -2
  346. package/dist-loader/components/input-group/input-group-input.js +2 -2
  347. package/dist-loader/components/input-group/input-group-text.js +2 -2
  348. package/dist-loader/components/input-group/input-group-textarea.js +2 -2
  349. package/dist-loader/components/input-group/input-group.js +3 -3
  350. package/dist-loader/components/lightswitch/lightswitch.js +1 -1
  351. package/dist-loader/components/popover/popover.js +9 -9
  352. package/dist-loader/components/popup/popup.js +1 -1
  353. package/dist-loader/components/radio-group/radio-group.js +5 -5
  354. package/dist-loader/components/radio-group/radio.js +2 -2
  355. package/dist-loader/components/scroll-area/scroll-area.js +2 -2
  356. package/dist-loader/components/select/option-group.js +3 -3
  357. package/dist-loader/components/select/option.js +1 -1
  358. package/dist-loader/components/select/select.js +1 -1
  359. package/dist-loader/components/separator/separator.js +2 -2
  360. package/dist-loader/components/spinner/spinner.js +1 -1
  361. package/dist-loader/components/state-panel/state-panel.js +1 -1
  362. package/dist-loader/components/status/status.js +1 -1
  363. package/dist-loader/components/tabs/tab-heading.js +2 -2
  364. package/dist-loader/components/tabs/tab-panel.js +2 -2
  365. package/dist-loader/components/tabs/tab.js +2 -2
  366. package/dist-loader/components/tabs/tabs.js +9 -7
  367. package/dist-loader/components/textarea/textarea.js +1 -1
  368. package/dist-loader/components/time-picker/time-picker.js +1 -1
  369. package/dist-loader/components/tiptap/tiptap-content.js +5 -4
  370. package/dist-loader/components/tiptap/tiptap-editor.js +594 -20
  371. package/dist-loader/components/tiptap/tiptap-input.js +273 -5
  372. package/dist-loader/components/toggle/toggle.js +3 -3
  373. package/dist-loader/components/toggle-group/toggle-group.js +6 -4
  374. package/dist-loader/components/tooltip/tooltip.js +1 -1
  375. package/dist-loader/plugin-kit.loader.js +2 -1
  376. package/package.json +9 -9
  377. package/dist/chunks/pk-alert-Cjxl6CY_.js.map +0 -1
  378. package/dist/chunks/pk-autocomplete-DA77kdTN.js.map +0 -1
  379. package/dist/chunks/pk-button-DCtNLEPr.js.map +0 -1
  380. package/dist/chunks/pk-button-group-DBdKK_2_.js.map +0 -1
  381. package/dist/chunks/pk-button-group-separator-D0Aa0a0f.js.map +0 -1
  382. package/dist/chunks/pk-button-group-text-BsqEM-dB.js.map +0 -1
  383. package/dist/chunks/pk-calendar-hBz1MnOu.js.map +0 -1
  384. package/dist/chunks/pk-checkbox-dvHRoVbL.js.map +0 -1
  385. package/dist/chunks/pk-checkbox-select-Cqx5ZCMq.js.map +0 -1
  386. package/dist/chunks/pk-code-editor-C_PqjR75.js.map +0 -1
  387. package/dist/chunks/pk-color-input-4LDV0Z3W.js.map +0 -1
  388. package/dist/chunks/pk-combobox-BeddzAsl.js.map +0 -1
  389. package/dist/chunks/pk-copy-button-KegSx46o.js.map +0 -1
  390. package/dist/chunks/pk-date-picker-D_JFep-Y.js.map +0 -1
  391. package/dist/chunks/pk-dialog-CFU850OH.js.map +0 -1
  392. package/dist/chunks/pk-dropdown-item-A4P4zfVF.js.map +0 -1
  393. package/dist/chunks/pk-dropdown-label-PqDxMkCI.js.map +0 -1
  394. package/dist/chunks/pk-dropdown-menu-C_vasBoa.js.map +0 -1
  395. package/dist/chunks/pk-editable-table-B85NhFYY.js.map +0 -1
  396. package/dist/chunks/pk-field-BJA2fZ6s.js.map +0 -1
  397. package/dist/chunks/pk-form-associated-element-MqaHdIoH.js.map +0 -1
  398. package/dist/chunks/pk-image-browser-DLAQcjFt.js.map +0 -1
  399. package/dist/chunks/pk-input-CiUNLTSW.js.map +0 -1
  400. package/dist/chunks/pk-input-group-addon-piOznzSS.js.map +0 -1
  401. package/dist/chunks/pk-input-group-button-Di2vEJLo.js.map +0 -1
  402. package/dist/chunks/pk-input-group-input-CwaaEfr1.js.map +0 -1
  403. package/dist/chunks/pk-input-group-k7WV0pQI.js.map +0 -1
  404. package/dist/chunks/pk-input-group-text-C0VAdy0J.js.map +0 -1
  405. package/dist/chunks/pk-input-group-textarea-DOG1NIlE.js.map +0 -1
  406. package/dist/chunks/pk-lightswitch-FH5ZxMG2.js.map +0 -1
  407. package/dist/chunks/pk-option-Cx52kLmz.js.map +0 -1
  408. package/dist/chunks/pk-option-group-CYo9Ukue.js.map +0 -1
  409. package/dist/chunks/pk-popover-209LdoPr.js.map +0 -1
  410. package/dist/chunks/pk-popup-0EIt9X_W.js.map +0 -1
  411. package/dist/chunks/pk-radio-group-CruMBeeF.js.map +0 -1
  412. package/dist/chunks/pk-radio-jgj6A0Wy.js.map +0 -1
  413. package/dist/chunks/pk-scroll-area-BaqN798b.js.map +0 -1
  414. package/dist/chunks/pk-select-UUH7FE4H.js.map +0 -1
  415. package/dist/chunks/pk-separator-Bcxg_GO2.js.map +0 -1
  416. package/dist/chunks/pk-spinner-CN365srE.js.map +0 -1
  417. package/dist/chunks/pk-state-panel-DPP7t-er.js.map +0 -1
  418. package/dist/chunks/pk-status-CYcadu0Q.js.map +0 -1
  419. package/dist/chunks/pk-tab-BmXNyDg7.js.map +0 -1
  420. package/dist/chunks/pk-tab-heading-GZHVmCAd.js.map +0 -1
  421. package/dist/chunks/pk-tab-panel-OpM3f_cm.js.map +0 -1
  422. package/dist/chunks/pk-tabs-x26NAw-V.js.map +0 -1
  423. package/dist/chunks/pk-textarea-CBijEmcV.js.map +0 -1
  424. package/dist/chunks/pk-time-picker-D-u5-7pf.js.map +0 -1
  425. package/dist/chunks/pk-tiptap-content-BGxMO3T4.js.map +0 -1
  426. package/dist/chunks/pk-tiptap-editor-BeuyzH5l.js.map +0 -1
  427. package/dist/chunks/pk-tiptap-input-CQojaxDH.js.map +0 -1
  428. package/dist/chunks/pk-toggle-CAtGO_Le.js.map +0 -1
  429. package/dist/chunks/pk-toggle-group-CLso6OE7.js.map +0 -1
  430. package/dist/chunks/pk-tooltip-C6yb4CXI.js.map +0 -1
  431. package/dist/chunks/register-BDO_LUHK.js +0 -154
  432. package/dist/chunks/register-BDO_LUHK.js.map +0 -1
  433. package/dist-loader/chunks/rolldown-runtime-CzwdidQP.js +0 -13
  434. package/dist-loader/chunks/supports-popover-COjbi2RP.js +0 -5
  435. package/dist-loader/chunks/tiptap.styles-BckAim0_.js +0 -1848
  436. /package/dist-loader/chunks/{animate-with-class-BpZi7v-y.js → animate-with-class-CjTZI0NU.js} +0 -0
  437. /package/dist-loader/chunks/{field-labels-D7ccWdRn.js → field-labels-pY-gQDwQ.js} +0 -0
  438. /package/dist-loader/chunks/{has-slot-BvdEcnpm.js → has-slot-DJv86HKx.js} +0 -0
  439. /package/dist-loader/chunks/{mirror-validator-9X0wdFnh.js → mirror-validator-BkZlEv1Z.js} +0 -0
  440. /package/dist-loader/chunks/{overlay-lifecycle-CSIBJZgQ.js → overlay-lifecycle-C582MGBJ.js} +0 -0
  441. /package/dist-loader/chunks/{pk-clear-BL8m1NyC.js → pk-clear-DHxP_2cm.js} +0 -0
  442. /package/dist-loader/chunks/{popup-placement-animation-BQdKabXq.js → popup-placement-animation-ClUYI79z.js} +0 -0
  443. /package/dist-loader/chunks/{popup-pointer-BNwlPGKA.js → popup-pointer-Bh_d205v.js} +0 -0
  444. /package/dist-loader/chunks/{registry-BanyScVR.js → registry-CJc164pT.js} +0 -0
  445. /package/dist-loader/chunks/{required-validator-DCTovZ6r.js → required-validator-I58oJGZ3.js} +0 -0
  446. /package/dist-loader/chunks/{svg-C6YcJMk9.js → svg-BRgqS9vA.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"has-slot-9zjTXvea.js","names":[],"sources":["../../src/internal/has-slot.ts"],"sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit';\n\n/** Detects whether named slots have assigned content — `HasSlotController`. */\nexport class HasSlotController implements ReactiveController {\n private readonly slotNames: string[];\n\n private readonly boundSlots = new Set<HTMLSlotElement>();\n\n /** Last-seen content presence per slot, so we only re-render on real changes. */\n private readonly lastHasContent = new Map<string, boolean>();\n\n constructor(\n private readonly host: ReactiveControllerHost & HTMLElement,\n ...slotNames: string[]\n ) {\n this.slotNames = slotNames;\n host.addController(this);\n }\n\n hostConnected(): void {\n this.bindSlotListeners();\n }\n\n hostUpdated(): void {\n this.bindSlotListeners();\n }\n\n hostDisconnected(): void {\n for (const slot of this.boundSlots) {\n slot.removeEventListener('slotchange', this.handleSlotChange);\n }\n\n this.boundSlots.clear();\n }\n\n /**\n * Bind a `slotchange` listener to each watched slot once it exists.\n *\n * Deliberately does NOT call `requestUpdate()` here: this runs from\n * `hostUpdated()` (after an update completes), so requesting one would trigger\n * Lit's \"scheduled an update after an update completed\" warning and, if a\n * slot's element identity changed between renders, an infinite update loop.\n * The initial render already reflects light-DOM content (children exist before\n * upgrade), and the initial `slotchange` covers any late-assigned content — so\n * `handleSlotChange` is the single, deduped path that schedules re-renders.\n */\n private bindSlotListeners(): void {\n for (const name of this.slotNames) {\n const slot = this.findSlot(name);\n\n if (!slot || this.boundSlots.has(slot)) {\n continue;\n }\n\n this.boundSlots.add(slot);\n slot.addEventListener('slotchange', this.handleSlotChange);\n\n // Seed the baseline with what the just-completed render already used.\n if (!this.lastHasContent.has(name)) {\n this.lastHasContent.set(name, this.test(name));\n }\n }\n }\n\n private findSlot(name: string): HTMLSlotElement | null {\n if (!this.host.shadowRoot) {\n return null;\n }\n\n if (!name) {\n return this.host.shadowRoot.querySelector('slot:not([name])');\n }\n\n return this.host.shadowRoot.querySelector(`slot[name=\"${name}\"]`);\n }\n\n private handleSlotChange = (): void => {\n // Only re-render when a watched slot's content presence actually flips —\n // slotchange fires on every light-DOM mutation, so deduping here keeps a\n // busy subtree (e.g. a Tiptap editor) from thrashing the host.\n let changed = false;\n\n for (const name of this.slotNames) {\n const has = this.test(name);\n\n if (this.lastHasContent.get(name) !== has) {\n this.lastHasContent.set(name, has);\n changed = true;\n }\n }\n\n if (changed) {\n this.host.requestUpdate();\n }\n };\n\n test(name: string, ssrFlag = false): boolean {\n if (ssrFlag) {\n return true;\n }\n\n if (this.hasLightDomSlotContent(name)) {\n return true;\n }\n\n const slot = this.findSlot(name);\n\n if (!slot) {\n return false;\n }\n\n return slot.assignedNodes({ flatten: true }).some((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n return Boolean(node.textContent?.trim());\n }\n\n return node.nodeType === Node.ELEMENT_NODE;\n });\n }\n\n private hasLightDomSlotContent(name: string): boolean {\n return [...this.host.children].some((child) => child.getAttribute('slot') === name);\n }\n}\n"],"mappings":";;AAGA,IAAa,oBAAb,MAA6D;CAQzD,YACI,MACA,GAAG,WACL;AAFmB,OAAA,OAAA;oCANS,IAAI,KAAsB;wCAGtB,IAAI,KAAsB;gCAmErB;GAInC,IAAI,UAAU;AAEd,QAAK,MAAM,QAAQ,KAAK,WAAW;IAC/B,MAAM,MAAM,KAAK,KAAK,KAAK;AAE3B,QAAI,KAAK,eAAe,IAAI,KAAK,KAAK,KAAK;AACvC,UAAK,eAAe,IAAI,MAAM,IAAI;AAClC,eAAU;;;AAIlB,OAAI,QACA,MAAK,KAAK,eAAe;;AA7E7B,OAAK,YAAY;AACjB,OAAK,cAAc,KAAK;;CAG5B,gBAAsB;AAClB,OAAK,mBAAmB;;CAG5B,cAAoB;AAChB,OAAK,mBAAmB;;CAG5B,mBAAyB;AACrB,OAAK,MAAM,QAAQ,KAAK,WACpB,MAAK,oBAAoB,cAAc,KAAK,iBAAiB;AAGjE,OAAK,WAAW,OAAO;;;;;;;;;;;;;CAc3B,oBAAkC;AAC9B,OAAK,MAAM,QAAQ,KAAK,WAAW;GAC/B,MAAM,OAAO,KAAK,SAAS,KAAK;AAEhC,OAAI,CAAC,QAAQ,KAAK,WAAW,IAAI,KAAK,CAClC;AAGJ,QAAK,WAAW,IAAI,KAAK;AACzB,QAAK,iBAAiB,cAAc,KAAK,iBAAiB;AAG1D,OAAI,CAAC,KAAK,eAAe,IAAI,KAAK,CAC9B,MAAK,eAAe,IAAI,MAAM,KAAK,KAAK,KAAK,CAAC;;;CAK1D,SAAiB,MAAsC;AACnD,MAAI,CAAC,KAAK,KAAK,WACX,QAAO;AAGX,MAAI,CAAC,KACD,QAAO,KAAK,KAAK,WAAW,cAAc,mBAAmB;AAGjE,SAAO,KAAK,KAAK,WAAW,cAAc,cAAc,KAAK,IAAI;;CAuBrE,KAAK,MAAc,UAAU,OAAgB;AACzC,MAAI,QACA,QAAO;AAGX,MAAI,KAAK,uBAAuB,KAAK,CACjC,QAAO;EAGX,MAAM,OAAO,KAAK,SAAS,KAAK;AAEhC,MAAI,CAAC,KACD,QAAO;AAGX,SAAO,KAAK,cAAc,EAAE,SAAS,MAAM,CAAC,CAAC,MAAM,SAAS;AACxD,OAAI,KAAK,aAAa,KAAK,UACvB,QAAO,QAAQ,KAAK,aAAa,MAAM,CAAC;AAG5C,UAAO,KAAK,aAAa,KAAK;IAChC;;CAGN,uBAA+B,MAAuB;AAClD,SAAO,CAAC,GAAG,KAAK,KAAK,SAAS,CAAC,MAAM,UAAU,MAAM,aAAa,OAAO,KAAK,KAAK"}
1
+ {"version":3,"file":"has-slot-DJv86HKx.js","names":[],"sources":["../../src/internal/has-slot.ts"],"sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit';\n\n/** Detects whether named slots have assigned content — `HasSlotController`. */\nexport class HasSlotController implements ReactiveController {\n private readonly slotNames: string[];\n\n private readonly boundSlots = new Set<HTMLSlotElement>();\n\n /** Last-seen content presence per slot, so we only re-render on real changes. */\n private readonly lastHasContent = new Map<string, boolean>();\n\n constructor(\n private readonly host: ReactiveControllerHost & HTMLElement,\n ...slotNames: string[]\n ) {\n this.slotNames = slotNames;\n host.addController(this);\n }\n\n hostConnected(): void {\n this.bindSlotListeners();\n }\n\n hostUpdated(): void {\n this.bindSlotListeners();\n }\n\n hostDisconnected(): void {\n for (const slot of this.boundSlots) {\n slot.removeEventListener('slotchange', this.handleSlotChange);\n }\n\n this.boundSlots.clear();\n }\n\n /**\n * Bind a `slotchange` listener to each watched slot once it exists.\n *\n * Deliberately does NOT call `requestUpdate()` here: this runs from\n * `hostUpdated()` (after an update completes), so requesting one would trigger\n * Lit's \"scheduled an update after an update completed\" warning and, if a\n * slot's element identity changed between renders, an infinite update loop.\n * The initial render already reflects light-DOM content (children exist before\n * upgrade), and the initial `slotchange` covers any late-assigned content — so\n * `handleSlotChange` is the single, deduped path that schedules re-renders.\n */\n private bindSlotListeners(): void {\n for (const name of this.slotNames) {\n const slot = this.findSlot(name);\n\n if (!slot || this.boundSlots.has(slot)) {\n continue;\n }\n\n this.boundSlots.add(slot);\n slot.addEventListener('slotchange', this.handleSlotChange);\n\n // Seed the baseline with what the just-completed render already used.\n if (!this.lastHasContent.has(name)) {\n this.lastHasContent.set(name, this.test(name));\n }\n }\n }\n\n private findSlot(name: string): HTMLSlotElement | null {\n if (!this.host.shadowRoot) {\n return null;\n }\n\n if (!name) {\n return this.host.shadowRoot.querySelector('slot:not([name])');\n }\n\n return this.host.shadowRoot.querySelector(`slot[name=\"${name}\"]`);\n }\n\n private handleSlotChange = (): void => {\n // Only re-render when a watched slot's content presence actually flips —\n // slotchange fires on every light-DOM mutation, so deduping here keeps a\n // busy subtree (e.g. a Tiptap editor) from thrashing the host.\n let changed = false;\n\n for (const name of this.slotNames) {\n const has = this.test(name);\n\n if (this.lastHasContent.get(name) !== has) {\n this.lastHasContent.set(name, has);\n changed = true;\n }\n }\n\n if (changed) {\n this.host.requestUpdate();\n }\n };\n\n test(name: string, ssrFlag = false): boolean {\n if (ssrFlag) {\n return true;\n }\n\n if (this.hasLightDomSlotContent(name)) {\n return true;\n }\n\n const slot = this.findSlot(name);\n\n if (!slot) {\n return false;\n }\n\n return slot.assignedNodes({ flatten: true }).some((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n return Boolean(node.textContent?.trim());\n }\n\n return node.nodeType === Node.ELEMENT_NODE;\n });\n }\n\n private hasLightDomSlotContent(name: string): boolean {\n return [...this.host.children].some((child) => child.getAttribute('slot') === name);\n }\n}\n"],"mappings":";;AAGA,IAAa,oBAAb,MAA6D;CAQzD,YACI,MACA,GAAG,WACL;EAFmB,KAAA,OAAA;EANS,KAAA,6BAAA,IAAI,IAAqB;EAGrB,KAAA,iCAAA,IAAI,IAAqB;EAmEpB,KAAA,yBAAA;GAInC,IAAI,UAAU;GAEd,KAAK,MAAM,QAAQ,KAAK,WAAW;IAC/B,MAAM,MAAM,KAAK,KAAK,IAAI;IAE1B,IAAI,KAAK,eAAe,IAAI,IAAI,MAAM,KAAK;KACvC,KAAK,eAAe,IAAI,MAAM,GAAG;KACjC,UAAU;IACd;GACJ;GAEA,IAAI,SACA,KAAK,KAAK,cAAc;EAEhC;EA/EI,KAAK,YAAY;EACjB,KAAK,cAAc,IAAI;CAC3B;CAEA,gBAAsB;EAClB,KAAK,kBAAkB;CAC3B;CAEA,cAAoB;EAChB,KAAK,kBAAkB;CAC3B;CAEA,mBAAyB;EACrB,KAAK,MAAM,QAAQ,KAAK,YACpB,KAAK,oBAAoB,cAAc,KAAK,gBAAgB;EAGhE,KAAK,WAAW,MAAM;CAC1B;;;;;;;;;;;;CAaA,oBAAkC;EAC9B,KAAK,MAAM,QAAQ,KAAK,WAAW;GAC/B,MAAM,OAAO,KAAK,SAAS,IAAI;GAE/B,IAAI,CAAC,QAAQ,KAAK,WAAW,IAAI,IAAI,GACjC;GAGJ,KAAK,WAAW,IAAI,IAAI;GACxB,KAAK,iBAAiB,cAAc,KAAK,gBAAgB;GAGzD,IAAI,CAAC,KAAK,eAAe,IAAI,IAAI,GAC7B,KAAK,eAAe,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC;EAErD;CACJ;CAEA,SAAiB,MAAsC;EACnD,IAAI,CAAC,KAAK,KAAK,YACX,OAAO;EAGX,IAAI,CAAC,MACD,OAAO,KAAK,KAAK,WAAW,cAAc,kBAAkB;EAGhE,OAAO,KAAK,KAAK,WAAW,cAAc,cAAc,KAAK,GAAG;CACpE;CAsBA,KAAK,MAAc,UAAU,OAAgB;EACzC,IAAI,SACA,OAAO;EAGX,IAAI,KAAK,uBAAuB,IAAI,GAChC,OAAO;EAGX,MAAM,OAAO,KAAK,SAAS,IAAI;EAE/B,IAAI,CAAC,MACD,OAAO;EAGX,OAAO,KAAK,cAAc,EAAE,SAAS,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS;GACxD,IAAI,KAAK,aAAa,KAAK,WACvB,OAAO,QAAQ,KAAK,aAAa,KAAK,CAAC;GAG3C,OAAO,KAAK,aAAa,KAAK;EAClC,CAAC;CACL;CAEA,uBAA+B,MAAuB;EAClD,OAAO,CAAC,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,MAAM,UAAU,MAAM,aAAa,MAAM,MAAM,IAAI;CACtF;AACJ"}
@@ -18,4 +18,4 @@ var iconStyles = css`
18
18
  //#endregion
19
19
  export { iconStyles as t };
20
20
 
21
- //# sourceMappingURL=icon.styles-pNyUmVtP.js.map
21
+ //# sourceMappingURL=icon.styles-KWvfi7RV.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icon.styles-pNyUmVtP.js","names":[],"sources":["../../src/base/icon.styles.ts"],"sourcesContent":["import { css } from 'lit';\n\n/** Shared icon sizing for slotted SVGs inside shadow DOM. */\nexport const iconStyles = css`\n @layer pk-component {\n slot[name='start']::slotted(svg),\n slot[name='end']::slotted(svg) {\n display: block;\n width: 1em;\n height: 1em;\n flex-shrink: 0;\n pointer-events: none;\n vertical-align: middle;\n overflow: visible;\n }\n }\n`;\n"],"mappings":";;;AAGA,IAAa,aAAa,GAAG"}
1
+ {"version":3,"file":"icon.styles-KWvfi7RV.js","names":[],"sources":["../../src/base/icon.styles.ts"],"sourcesContent":["import { css } from 'lit';\n\n/** Shared icon sizing for slotted SVGs inside shadow DOM. */\nexport const iconStyles = css`\n @layer pk-component {\n slot[name='start']::slotted(svg),\n slot[name='end']::slotted(svg) {\n display: block;\n width: 1em;\n height: 1em;\n flex-shrink: 0;\n pointer-events: none;\n vertical-align: middle;\n overflow: visible;\n }\n }\n`;\n"],"mappings":";;;AAGA,IAAa,aAAa,GAAG"}
@@ -1,4 +1,4 @@
1
- import { n as renderIconHtml, t as createIconElement } from "./render-BKGW1a68.js";
1
+ import { n as renderIconHtml, t as createIconElement } from "./render-DQZp_Rak.js";
2
2
  //#region \0rolldown/runtime.js
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -49,4 +49,4 @@ __reExport(icons_exports, import__verbb_plugin_kit_icons);
49
49
  //#endregion
50
50
  export { __reExport as i, createTranslationIconElement as n, __exportAll as r, icons_exports as t };
51
51
 
52
- //# sourceMappingURL=icons-B8siZLOe.js.map
52
+ //# sourceMappingURL=icons-k1pvx6yX.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icons-B8siZLOe.js","names":[],"sources":["../../src/icons/translation-icon.ts","../../src/icons/index.ts"],"sourcesContent":["const TRANSLATION_ICON_PATH = 'M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l208 0 32 0 16 0 256 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L320 64l-16 0-32 0L64 64zm512 48c8.8 0 16 7.2 16 16l0 256c0 8.8-7.2 16-16 16l-256 0 0-288 256 0zM178.3 175.9l64 144c4.5 10.1-.1 21.9-10.2 26.4s-21.9-.1-26.4-10.2L196.8 316l-73.6 0-8.9 20.1c-4.5 10.1-16.3 14.6-26.4 10.2s-14.6-16.3-10.2-26.4l64-144c3.2-7.2 10.4-11.9 18.3-11.9s15.1 4.7 18.3 11.9zM179 276l-19-42.8L141 276l38 0zM456 164c-11 0-20 9-20 20l0 4-52 0c-11 0-20 9-20 20s9 20 20 20l72 0 35.1 0c-7.3 16.7-17.4 31.9-29.8 45l-.5-.5-14.6-14.6c-7.8-7.8-20.5-7.8-28.3 0s-7.8 20.5 0 28.3L430 298.3c-5.9 3.6-12.1 6.9-18.5 9.8l-3.6 1.6c-10.1 4.5-14.6 16.3-10.2 26.4s16.3 14.6 26.4 10.2l3.6-1.6c12-5.3 23.4-11.8 34-19.4c4.3 3 8.6 5.8 13.1 8.5l18.9 11.3c9.5 5.7 21.8 2.6 27.4-6.9s2.6-21.8-6.9-27.4l-18.9-11.3c-.9-.5-1.8-1.1-2.7-1.6c17.2-18.8 30.7-40.9 39.6-65.4L534 228l2 0c11 0 20-9 20-20s-9-20-20-20l-16 0-44 0 0-4c0-11-9-20-20-20z';\n\nexport const createTranslationIconElement = (): SVGSVGElement => {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n svg.setAttribute('viewBox', '0 0 640 512');\n\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttribute('d', TRANSLATION_ICON_PATH);\n svg.append(path);\n\n return svg;\n};\n","export { renderIconHtml, createIconElement, type RenderIconOptions } from './render.js';\nexport { createTranslationIconElement } from './translation-icon.js';\n\nexport * from '@verbb/plugin-kit-icons';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAM,wBAAwB;AAE9B,IAAa,qCAAoD;CAC7D,MAAM,MAAM,SAAS,gBAAgB,8BAA8B,MAAM;AACzE,KAAI,aAAa,eAAe,OAAO;AACvC,KAAI,aAAa,SAAS,6BAA6B;AACvD,KAAI,aAAa,WAAW,cAAc;CAE1C,MAAM,OAAO,SAAS,gBAAgB,8BAA8B,OAAO;AAC3E,MAAK,aAAa,KAAK,sBAAsB;AAC7C,KAAI,OAAO,KAAK;AAEhB,QAAO"}
1
+ {"version":3,"file":"icons-k1pvx6yX.js","names":[],"sources":["../../src/icons/translation-icon.ts","../../src/icons/index.ts"],"sourcesContent":["const TRANSLATION_ICON_PATH = 'M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l208 0 32 0 16 0 256 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L320 64l-16 0-32 0L64 64zm512 48c8.8 0 16 7.2 16 16l0 256c0 8.8-7.2 16-16 16l-256 0 0-288 256 0zM178.3 175.9l64 144c4.5 10.1-.1 21.9-10.2 26.4s-21.9-.1-26.4-10.2L196.8 316l-73.6 0-8.9 20.1c-4.5 10.1-16.3 14.6-26.4 10.2s-14.6-16.3-10.2-26.4l64-144c3.2-7.2 10.4-11.9 18.3-11.9s15.1 4.7 18.3 11.9zM179 276l-19-42.8L141 276l38 0zM456 164c-11 0-20 9-20 20l0 4-52 0c-11 0-20 9-20 20s9 20 20 20l72 0 35.1 0c-7.3 16.7-17.4 31.9-29.8 45l-.5-.5-14.6-14.6c-7.8-7.8-20.5-7.8-28.3 0s-7.8 20.5 0 28.3L430 298.3c-5.9 3.6-12.1 6.9-18.5 9.8l-3.6 1.6c-10.1 4.5-14.6 16.3-10.2 26.4s16.3 14.6 26.4 10.2l3.6-1.6c12-5.3 23.4-11.8 34-19.4c4.3 3 8.6 5.8 13.1 8.5l18.9 11.3c9.5 5.7 21.8 2.6 27.4-6.9s2.6-21.8-6.9-27.4l-18.9-11.3c-.9-.5-1.8-1.1-2.7-1.6c17.2-18.8 30.7-40.9 39.6-65.4L534 228l2 0c11 0 20-9 20-20s-9-20-20-20l-16 0-44 0 0-4c0-11-9-20-20-20z';\n\nexport const createTranslationIconElement = (): SVGSVGElement => {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n svg.setAttribute('viewBox', '0 0 640 512');\n\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttribute('d', TRANSLATION_ICON_PATH);\n svg.append(path);\n\n return svg;\n};\n","export { renderIconHtml, createIconElement, type RenderIconOptions } from './render.js';\nexport { createTranslationIconElement } from './translation-icon.js';\n\nexport * from '@verbb/plugin-kit-icons';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAM,wBAAwB;AAE9B,IAAa,qCAAoD;CAC7D,MAAM,MAAM,SAAS,gBAAgB,8BAA8B,KAAK;CACxE,IAAI,aAAa,eAAe,MAAM;CACtC,IAAI,aAAa,SAAS,4BAA4B;CACtD,IAAI,aAAa,WAAW,aAAa;CAEzC,MAAM,OAAO,SAAS,gBAAgB,8BAA8B,MAAM;CAC1E,KAAK,aAAa,KAAK,qBAAqB;CAC5C,IAAI,OAAO,IAAI;CAEf,OAAO;AACX"}
@@ -29,4 +29,4 @@ function MirrorValidator() {
29
29
  //#endregion
30
30
  export { MirrorValidator as t };
31
31
 
32
- //# sourceMappingURL=mirror-validator-Cszpqlxk.js.map
32
+ //# sourceMappingURL=mirror-validator-BkZlEv1Z.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mirror-validator-Cszpqlxk.js","names":[],"sources":["../../src/validators/mirror-validator.ts"],"sourcesContent":["import type { PkValidator, ValidityKey } from './types.js';\n\n/** Delegates validity to the shadow native control — `MirrorValidator`. */\nexport function MirrorValidator(): PkValidator {\n return {\n checkValidity(element) {\n const formControl = element.input;\n const result = {\n message: '',\n isValid: true,\n invalidKeys: [] as ReturnType<PkValidator['checkValidity']>['invalidKeys'],\n };\n\n if (!formControl) {\n return result;\n }\n\n let isValid = true;\n\n if ('checkValidity' in formControl && typeof formControl.checkValidity === 'function') {\n isValid = formControl.checkValidity();\n }\n\n if (isValid) {\n return result;\n }\n\n result.isValid = false;\n\n if ('validationMessage' in formControl && typeof formControl.validationMessage === 'string') {\n result.message = formControl.validationMessage;\n }\n\n if (!('validity' in formControl) || !formControl.validity) {\n result.invalidKeys.push('customError');\n return result;\n }\n\n for (const key of Object.keys(formControl.validity)) {\n if (key === 'valid') {\n continue;\n }\n\n const validityKey = key as ValidityKey;\n\n if (formControl.validity[validityKey]) {\n result.invalidKeys.push(validityKey);\n }\n }\n\n return result;\n },\n };\n}\n"],"mappings":";;AAGA,SAAgB,kBAA+B;AAC3C,QAAO,EACH,cAAc,SAAS;EACnB,MAAM,cAAc,QAAQ;EAC5B,MAAM,SAAS;GACX,SAAS;GACT,SAAS;GACT,aAAa,EAAE;GAClB;AAED,MAAI,CAAC,YACD,QAAO;EAGX,IAAI,UAAU;AAEd,MAAI,mBAAmB,eAAe,OAAO,YAAY,kBAAkB,WACvE,WAAU,YAAY,eAAe;AAGzC,MAAI,QACA,QAAO;AAGX,SAAO,UAAU;AAEjB,MAAI,uBAAuB,eAAe,OAAO,YAAY,sBAAsB,SAC/E,QAAO,UAAU,YAAY;AAGjC,MAAI,EAAE,cAAc,gBAAgB,CAAC,YAAY,UAAU;AACvD,UAAO,YAAY,KAAK,cAAc;AACtC,UAAO;;AAGX,OAAK,MAAM,OAAO,OAAO,KAAK,YAAY,SAAS,EAAE;AACjD,OAAI,QAAQ,QACR;GAGJ,MAAM,cAAc;AAEpB,OAAI,YAAY,SAAS,aACrB,QAAO,YAAY,KAAK,YAAY;;AAI5C,SAAO;IAEd"}
1
+ {"version":3,"file":"mirror-validator-BkZlEv1Z.js","names":[],"sources":["../../src/validators/mirror-validator.ts"],"sourcesContent":["import type { PkValidator, ValidityKey } from './types.js';\n\n/** Delegates validity to the shadow native control — `MirrorValidator`. */\nexport function MirrorValidator(): PkValidator {\n return {\n checkValidity(element) {\n const formControl = element.input;\n const result = {\n message: '',\n isValid: true,\n invalidKeys: [] as ReturnType<PkValidator['checkValidity']>['invalidKeys'],\n };\n\n if (!formControl) {\n return result;\n }\n\n let isValid = true;\n\n if ('checkValidity' in formControl && typeof formControl.checkValidity === 'function') {\n isValid = formControl.checkValidity();\n }\n\n if (isValid) {\n return result;\n }\n\n result.isValid = false;\n\n if ('validationMessage' in formControl && typeof formControl.validationMessage === 'string') {\n result.message = formControl.validationMessage;\n }\n\n if (!('validity' in formControl) || !formControl.validity) {\n result.invalidKeys.push('customError');\n return result;\n }\n\n for (const key of Object.keys(formControl.validity)) {\n if (key === 'valid') {\n continue;\n }\n\n const validityKey = key as ValidityKey;\n\n if (formControl.validity[validityKey]) {\n result.invalidKeys.push(validityKey);\n }\n }\n\n return result;\n },\n };\n}\n"],"mappings":";;AAGA,SAAgB,kBAA+B;CAC3C,OAAO,EACH,cAAc,SAAS;EACnB,MAAM,cAAc,QAAQ;EAC5B,MAAM,SAAS;GACX,SAAS;GACT,SAAS;GACT,aAAa,CAAC;EAClB;EAEA,IAAI,CAAC,aACD,OAAO;EAGX,IAAI,UAAU;EAEd,IAAI,mBAAmB,eAAe,OAAO,YAAY,kBAAkB,YACvE,UAAU,YAAY,cAAc;EAGxC,IAAI,SACA,OAAO;EAGX,OAAO,UAAU;EAEjB,IAAI,uBAAuB,eAAe,OAAO,YAAY,sBAAsB,UAC/E,OAAO,UAAU,YAAY;EAGjC,IAAI,EAAE,cAAc,gBAAgB,CAAC,YAAY,UAAU;GACvD,OAAO,YAAY,KAAK,aAAa;GACrC,OAAO;EACX;EAEA,KAAK,MAAM,OAAO,OAAO,KAAK,YAAY,QAAQ,GAAG;GACjD,IAAI,QAAQ,SACR;GAGJ,MAAM,cAAc;GAEpB,IAAI,YAAY,SAAS,cACrB,OAAO,YAAY,KAAK,WAAW;EAE3C;EAEA,OAAO;CACX,EACJ;AACJ"}
@@ -1,4 +1,4 @@
1
- import { t as syncListboxSeparators } from "./sync-listbox-separators-CPFtrpNq.js";
1
+ import { t as syncListboxSeparators } from "./sync-listbox-separators-saLEtPpJ.js";
2
2
  //#region src/utils/popup-content-exit.ts
3
3
  /**
4
4
  * Wait for `pk-popup-content-out` on a listbox panel, then clear the `closing` class.
@@ -118,4 +118,4 @@ function matchesOptionFilter(option, query, filter) {
118
118
  //#endregion
119
119
  export { waitForPopupContentExitAnimation as i, AsyncOptionFetcher as n, syncFilteredOptions as r, matchesOptionFilter as t };
120
120
 
121
- //# sourceMappingURL=option-filter-Cj5SvyzI.js.map
121
+ //# sourceMappingURL=option-filter-BkKyBg8L.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"option-filter-Cj5SvyzI.js","names":[],"sources":["../../src/utils/popup-content-exit.ts","../../src/internal/sync-filtered-options.ts","../../src/utils/async-option-fetch.ts","../../src/utils/option-filter.ts"],"sourcesContent":["/**\n * Wait for `pk-popup-content-out` on a listbox panel, then clear the `closing` class.\n * Shared by Combobox and Autocomplete so exit motion stays one implementation.\n */\nexport function waitForPopupContentExitAnimation(\n panel: HTMLElement | null | undefined,\n fallbackMs = 150,\n): Promise<void> {\n if (!panel) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n let settled = false;\n\n const finish = (): void => {\n if (settled) {\n return;\n }\n\n settled = true;\n panel.removeEventListener('animationend', onAnimationEnd);\n window.clearTimeout(fallback);\n panel.classList.remove('closing');\n resolve();\n };\n\n const onAnimationEnd = (event: AnimationEvent): void => {\n if (event.target === panel && event.animationName.startsWith('pk-popup-content-out')) {\n finish();\n }\n };\n\n panel.classList.add('closing');\n panel.addEventListener('animationend', onAnimationEnd);\n const fallback = window.setTimeout(finish, fallbackMs);\n });\n}\n","import type { PkOption } from '../components/select/pk-option.js';\nimport { syncListboxSeparators } from './sync-listbox-separators.js';\n\nexport type SyncFilteredOptionsConfig = {\n /** Host that owns `pk-option` / `pk-option-group` / `pk-separator` children. */\n host: HTMLElement;\n options: PkOption[];\n /** Options that should remain visible (already filtered). */\n visible: PkOption[];\n /** Prefix for `optionId` values (e.g. listbox id). */\n listboxId: string;\n /** Lowercased query for `matchQuery` highlight; empty when closed / unfiltered. */\n filterQuery: string;\n /**\n * Whether each option is “selected” for checkmarks.\n * Autocomplete always returns false — the freeform text is the value.\n */\n isSelected: (value: string) => boolean;\n};\n\n/**\n * Apply filter visibility, match highlight, option ids, and group empty markers.\n * Shared by Combobox and Autocomplete — not a full listbox controller.\n */\nexport function syncFilteredOptions(config: SyncFilteredOptionsConfig): void {\n const {\n host, options, visible, listboxId, filterQuery, isSelected,\n } = config;\n\n for (const option of options) {\n option.selected = isSelected(option.value);\n option.hidden = !visible.includes(option);\n option.optionId = `${listboxId}-option-${option.value}`;\n option.matchQuery = filterQuery;\n }\n\n for (const group of host.querySelectorAll('pk-option-group')) {\n const groupOptions = [...group.querySelectorAll('pk-option')];\n // Use data-pk-filter-empty — not `hidden` — so clearing the query can\n // resurrect options. `hidden` is reserved for intentional author hide.\n const filterEmpty = groupOptions.length > 0\n && groupOptions.every((option) => option.hidden);\n\n group.toggleAttribute('data-pk-filter-empty', filterEmpty);\n }\n\n syncListboxSeparators(host);\n}\n","/**\n * Debounced async option fetch with abort + stale-request guards.\n * Used by Combobox and Autocomplete so both share one loading lifecycle.\n */\nexport type PkAsyncOptionItem = {\n value: string;\n label: string;\n};\n\nexport type PkAsyncOptionFetchHandler = (\n query: string,\n signal: AbortSignal,\n) => Promise<PkAsyncOptionItem[]>;\n\nexport type PkAsyncOptionFetchCallbacks = {\n /** Called when a fetch starts (non-empty query). */\n onLoading?: () => void;\n /** Apply results for the latest request (may be empty). */\n onResults: (items: PkAsyncOptionItem[]) => void;\n /** Called when a non-abort failure occurs for the latest request. */\n onError?: (message: string) => void;\n /** Called when loading ends for the latest request (success or error). */\n onSettled?: () => void;\n /** Empty query — typically show selected meta or clear. */\n onEmptyQuery?: () => void;\n /** Log context when a fetch throws (defaults to \"options\"). */\n errorLabel?: string;\n debounceMs?: number;\n};\n\nexport class AsyncOptionFetcher {\n private timer: number | null = null;\n private requestId = 0;\n private abortController: AbortController | null = null;\n private readonly debounceMs: number;\n private readonly errorLabel: string;\n private readonly callbacks: PkAsyncOptionFetchCallbacks;\n\n constructor(\n private readonly getHandler: () => PkAsyncOptionFetchHandler | null,\n callbacks: PkAsyncOptionFetchCallbacks,\n ) {\n this.callbacks = callbacks;\n this.debounceMs = callbacks.debounceMs ?? 200;\n this.errorLabel = callbacks.errorLabel ?? 'options';\n }\n\n schedule(query: string): void {\n if (this.timer !== null) {\n window.clearTimeout(this.timer);\n }\n\n this.timer = window.setTimeout(() => {\n this.timer = null;\n void this.run(query);\n }, this.debounceMs);\n }\n\n cancel(): void {\n if (this.timer !== null) {\n window.clearTimeout(this.timer);\n this.timer = null;\n }\n\n this.abortController?.abort();\n this.abortController = null;\n }\n\n private async run(query: string): Promise<void> {\n const handler = this.getHandler();\n\n if (!handler) {\n return;\n }\n\n const requestId = ++this.requestId;\n this.abortController?.abort();\n this.abortController = new AbortController();\n\n if (!query) {\n this.callbacks.onEmptyQuery?.();\n return;\n }\n\n this.callbacks.onLoading?.();\n\n try {\n const results = await handler(query, this.abortController.signal);\n\n if (requestId !== this.requestId) {\n return;\n }\n\n this.callbacks.onResults(results);\n } catch (error) {\n if (this.abortController?.signal.aborted || requestId !== this.requestId) {\n return;\n }\n\n if (error instanceof DOMException && error.name === 'AbortError') {\n return;\n }\n\n console.error(`Failed to load ${this.errorLabel}:`, error);\n this.callbacks.onError?.('Failed to load options. Please try again.');\n this.callbacks.onResults([]);\n } finally {\n if (requestId === this.requestId) {\n this.callbacks.onSettled?.();\n }\n }\n }\n}\n","import type { PkOption } from '../components/select/pk-option.js';\n\n/** Custom option filter — `(option, query) => boolean`. Query is already lowercased. */\nexport type PkOptionFilter = (option: PkOption, query: string) => boolean;\n\n/**\n * Default Combobox / Autocomplete filter: label, value, or full search text substring.\n * Rich options may set a short `label` for the closed input — still match subtitle text.\n */\nexport function defaultOptionFilter(option: PkOption, query: string): boolean {\n const label = option.getLabel().toLowerCase();\n const value = option.value.toLowerCase();\n const searchText = (option.getSearchText?.() ?? label).toLowerCase();\n\n return label.includes(query) || value.includes(query) || searchText.includes(query);\n}\n\n/** Resolve a custom filter or the default substring match. */\nexport function matchesOptionFilter(\n option: PkOption,\n query: string,\n filter: PkOptionFilter | null | undefined,\n): boolean {\n if (filter) {\n return filter(option, query);\n }\n\n return defaultOptionFilter(option, query);\n}\n"],"mappings":";;;;;;AAIA,SAAgB,iCACZ,OACA,aAAa,KACA;AACb,KAAI,CAAC,MACD,QAAO,QAAQ,SAAS;AAG5B,QAAO,IAAI,SAAS,YAAY;EAC5B,IAAI,UAAU;EAEd,MAAM,eAAqB;AACvB,OAAI,QACA;AAGJ,aAAU;AACV,SAAM,oBAAoB,gBAAgB,eAAe;AACzD,UAAO,aAAa,SAAS;AAC7B,SAAM,UAAU,OAAO,UAAU;AACjC,YAAS;;EAGb,MAAM,kBAAkB,UAAgC;AACpD,OAAI,MAAM,WAAW,SAAS,MAAM,cAAc,WAAW,uBAAuB,CAChF,SAAQ;;AAIhB,QAAM,UAAU,IAAI,UAAU;AAC9B,QAAM,iBAAiB,gBAAgB,eAAe;EACtD,MAAM,WAAW,OAAO,WAAW,QAAQ,WAAW;GACxD;;;;;;;;ACZN,SAAgB,oBAAoB,QAAyC;CACzE,MAAM,EACF,MAAM,SAAS,SAAS,WAAW,aAAa,eAChD;AAEJ,MAAK,MAAM,UAAU,SAAS;AAC1B,SAAO,WAAW,WAAW,OAAO,MAAM;AAC1C,SAAO,SAAS,CAAC,QAAQ,SAAS,OAAO;AACzC,SAAO,WAAW,GAAG,UAAU,UAAU,OAAO;AAChD,SAAO,aAAa;;AAGxB,MAAK,MAAM,SAAS,KAAK,iBAAiB,kBAAkB,EAAE;EAC1D,MAAM,eAAe,CAAC,GAAG,MAAM,iBAAiB,YAAY,CAAC;EAG7D,MAAM,cAAc,aAAa,SAAS,KACnC,aAAa,OAAO,WAAW,OAAO,OAAO;AAEpD,QAAM,gBAAgB,wBAAwB,YAAY;;AAG9D,uBAAsB,KAAK;;;;AChB/B,IAAa,qBAAb,MAAgC;CAQ5B,YACI,YACA,WACF;AAFmB,OAAA,aAAA;eARU;mBACX;yBAC8B;AAS9C,OAAK,YAAY;AACjB,OAAK,aAAa,UAAU,cAAc;AAC1C,OAAK,aAAa,UAAU,cAAc;;CAG9C,SAAS,OAAqB;AAC1B,MAAI,KAAK,UAAU,KACf,QAAO,aAAa,KAAK,MAAM;AAGnC,OAAK,QAAQ,OAAO,iBAAiB;AACjC,QAAK,QAAQ;AACR,QAAK,IAAI,MAAM;KACrB,KAAK,WAAW;;CAGvB,SAAe;AACX,MAAI,KAAK,UAAU,MAAM;AACrB,UAAO,aAAa,KAAK,MAAM;AAC/B,QAAK,QAAQ;;AAGjB,OAAK,iBAAiB,OAAO;AAC7B,OAAK,kBAAkB;;CAG3B,MAAc,IAAI,OAA8B;EAC5C,MAAM,UAAU,KAAK,YAAY;AAEjC,MAAI,CAAC,QACD;EAGJ,MAAM,YAAY,EAAE,KAAK;AACzB,OAAK,iBAAiB,OAAO;AAC7B,OAAK,kBAAkB,IAAI,iBAAiB;AAE5C,MAAI,CAAC,OAAO;AACR,QAAK,UAAU,gBAAgB;AAC/B;;AAGJ,OAAK,UAAU,aAAa;AAE5B,MAAI;GACA,MAAM,UAAU,MAAM,QAAQ,OAAO,KAAK,gBAAgB,OAAO;AAEjE,OAAI,cAAc,KAAK,UACnB;AAGJ,QAAK,UAAU,UAAU,QAAQ;WAC5B,OAAO;AACZ,OAAI,KAAK,iBAAiB,OAAO,WAAW,cAAc,KAAK,UAC3D;AAGJ,OAAI,iBAAiB,gBAAgB,MAAM,SAAS,aAChD;AAGJ,WAAQ,MAAM,kBAAkB,KAAK,WAAW,IAAI,MAAM;AAC1D,QAAK,UAAU,UAAU,4CAA4C;AACrE,QAAK,UAAU,UAAU,EAAE,CAAC;YACtB;AACN,OAAI,cAAc,KAAK,UACnB,MAAK,UAAU,aAAa;;;;;;;;;;ACnG5C,SAAgB,oBAAoB,QAAkB,OAAwB;CAC1E,MAAM,QAAQ,OAAO,UAAU,CAAC,aAAa;CAC7C,MAAM,QAAQ,OAAO,MAAM,aAAa;CACxC,MAAM,cAAc,OAAO,iBAAiB,IAAI,OAAO,aAAa;AAEpE,QAAO,MAAM,SAAS,MAAM,IAAI,MAAM,SAAS,MAAM,IAAI,WAAW,SAAS,MAAM;;;AAIvF,SAAgB,oBACZ,QACA,OACA,QACO;AACP,KAAI,OACA,QAAO,OAAO,QAAQ,MAAM;AAGhC,QAAO,oBAAoB,QAAQ,MAAM"}
1
+ {"version":3,"file":"option-filter-BkKyBg8L.js","names":[],"sources":["../../src/utils/popup-content-exit.ts","../../src/internal/sync-filtered-options.ts","../../src/utils/async-option-fetch.ts","../../src/utils/option-filter.ts"],"sourcesContent":["/**\n * Wait for `pk-popup-content-out` on a listbox panel, then clear the `closing` class.\n * Shared by Combobox and Autocomplete so exit motion stays one implementation.\n */\nexport function waitForPopupContentExitAnimation(\n panel: HTMLElement | null | undefined,\n fallbackMs = 150,\n): Promise<void> {\n if (!panel) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n let settled = false;\n\n const finish = (): void => {\n if (settled) {\n return;\n }\n\n settled = true;\n panel.removeEventListener('animationend', onAnimationEnd);\n window.clearTimeout(fallback);\n panel.classList.remove('closing');\n resolve();\n };\n\n const onAnimationEnd = (event: AnimationEvent): void => {\n if (event.target === panel && event.animationName.startsWith('pk-popup-content-out')) {\n finish();\n }\n };\n\n panel.classList.add('closing');\n panel.addEventListener('animationend', onAnimationEnd);\n const fallback = window.setTimeout(finish, fallbackMs);\n });\n}\n","import type { PkOption } from '../components/select/pk-option.js';\nimport { syncListboxSeparators } from './sync-listbox-separators.js';\n\nexport type SyncFilteredOptionsConfig = {\n /** Host that owns `pk-option` / `pk-option-group` / `pk-separator` children. */\n host: HTMLElement;\n options: PkOption[];\n /** Options that should remain visible (already filtered). */\n visible: PkOption[];\n /** Prefix for `optionId` values (e.g. listbox id). */\n listboxId: string;\n /** Lowercased query for `matchQuery` highlight; empty when closed / unfiltered. */\n filterQuery: string;\n /**\n * Whether each option is “selected” for checkmarks.\n * Autocomplete always returns false — the freeform text is the value.\n */\n isSelected: (value: string) => boolean;\n};\n\n/**\n * Apply filter visibility, match highlight, option ids, and group empty markers.\n * Shared by Combobox and Autocomplete — not a full listbox controller.\n */\nexport function syncFilteredOptions(config: SyncFilteredOptionsConfig): void {\n const {\n host, options, visible, listboxId, filterQuery, isSelected,\n } = config;\n\n for (const option of options) {\n option.selected = isSelected(option.value);\n option.hidden = !visible.includes(option);\n option.optionId = `${listboxId}-option-${option.value}`;\n option.matchQuery = filterQuery;\n }\n\n for (const group of host.querySelectorAll('pk-option-group')) {\n const groupOptions = [...group.querySelectorAll('pk-option')];\n // Use data-pk-filter-empty — not `hidden` — so clearing the query can\n // resurrect options. `hidden` is reserved for intentional author hide.\n const filterEmpty = groupOptions.length > 0\n && groupOptions.every((option) => option.hidden);\n\n group.toggleAttribute('data-pk-filter-empty', filterEmpty);\n }\n\n syncListboxSeparators(host);\n}\n","/**\n * Debounced async option fetch with abort + stale-request guards.\n * Used by Combobox and Autocomplete so both share one loading lifecycle.\n */\nexport type PkAsyncOptionItem = {\n value: string;\n label: string;\n};\n\nexport type PkAsyncOptionFetchHandler = (\n query: string,\n signal: AbortSignal,\n) => Promise<PkAsyncOptionItem[]>;\n\nexport type PkAsyncOptionFetchCallbacks = {\n /** Called when a fetch starts (non-empty query). */\n onLoading?: () => void;\n /** Apply results for the latest request (may be empty). */\n onResults: (items: PkAsyncOptionItem[]) => void;\n /** Called when a non-abort failure occurs for the latest request. */\n onError?: (message: string) => void;\n /** Called when loading ends for the latest request (success or error). */\n onSettled?: () => void;\n /** Empty query — typically show selected meta or clear. */\n onEmptyQuery?: () => void;\n /** Log context when a fetch throws (defaults to \"options\"). */\n errorLabel?: string;\n debounceMs?: number;\n};\n\nexport class AsyncOptionFetcher {\n private timer: number | null = null;\n private requestId = 0;\n private abortController: AbortController | null = null;\n private readonly debounceMs: number;\n private readonly errorLabel: string;\n private readonly callbacks: PkAsyncOptionFetchCallbacks;\n\n constructor(\n private readonly getHandler: () => PkAsyncOptionFetchHandler | null,\n callbacks: PkAsyncOptionFetchCallbacks,\n ) {\n this.callbacks = callbacks;\n this.debounceMs = callbacks.debounceMs ?? 200;\n this.errorLabel = callbacks.errorLabel ?? 'options';\n }\n\n schedule(query: string): void {\n if (this.timer !== null) {\n window.clearTimeout(this.timer);\n }\n\n this.timer = window.setTimeout(() => {\n this.timer = null;\n void this.run(query);\n }, this.debounceMs);\n }\n\n cancel(): void {\n if (this.timer !== null) {\n window.clearTimeout(this.timer);\n this.timer = null;\n }\n\n this.abortController?.abort();\n this.abortController = null;\n }\n\n private async run(query: string): Promise<void> {\n const handler = this.getHandler();\n\n if (!handler) {\n return;\n }\n\n const requestId = ++this.requestId;\n this.abortController?.abort();\n this.abortController = new AbortController();\n\n if (!query) {\n this.callbacks.onEmptyQuery?.();\n return;\n }\n\n this.callbacks.onLoading?.();\n\n try {\n const results = await handler(query, this.abortController.signal);\n\n if (requestId !== this.requestId) {\n return;\n }\n\n this.callbacks.onResults(results);\n } catch (error) {\n if (this.abortController?.signal.aborted || requestId !== this.requestId) {\n return;\n }\n\n if (error instanceof DOMException && error.name === 'AbortError') {\n return;\n }\n\n console.error(`Failed to load ${this.errorLabel}:`, error);\n this.callbacks.onError?.('Failed to load options. Please try again.');\n this.callbacks.onResults([]);\n } finally {\n if (requestId === this.requestId) {\n this.callbacks.onSettled?.();\n }\n }\n }\n}\n","import type { PkOption } from '../components/select/pk-option.js';\n\n/** Custom option filter — `(option, query) => boolean`. Query is already lowercased. */\nexport type PkOptionFilter = (option: PkOption, query: string) => boolean;\n\n/**\n * Default Combobox / Autocomplete filter: label, value, or full search text substring.\n * Rich options may set a short `label` for the closed input — still match subtitle text.\n */\nexport function defaultOptionFilter(option: PkOption, query: string): boolean {\n const label = option.getLabel().toLowerCase();\n const value = option.value.toLowerCase();\n const searchText = (option.getSearchText?.() ?? label).toLowerCase();\n\n return label.includes(query) || value.includes(query) || searchText.includes(query);\n}\n\n/** Resolve a custom filter or the default substring match. */\nexport function matchesOptionFilter(\n option: PkOption,\n query: string,\n filter: PkOptionFilter | null | undefined,\n): boolean {\n if (filter) {\n return filter(option, query);\n }\n\n return defaultOptionFilter(option, query);\n}\n"],"mappings":"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"}
@@ -41,4 +41,4 @@ var PkAfterHideEvent = class extends Event {
41
41
  //#endregion
42
42
  export { PkShowEvent as i, PkAfterShowEvent as n, PkHideEvent as r, PkAfterHideEvent as t };
43
43
 
44
- //# sourceMappingURL=overlay-lifecycle-CAoT0LE8.js.map
44
+ //# sourceMappingURL=overlay-lifecycle-C582MGBJ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"overlay-lifecycle-CAoT0LE8.js","names":[],"sources":["../../src/events/overlay-lifecycle.ts"],"sourcesContent":["export type PkOverlaySource = 'close-button' | 'light-dismiss' | 'pointer-dismiss' | 'escape' | 'api' | 'unknown';\n\n/** Mirrors `pk-show`. */\nexport class PkShowEvent extends Event {\n constructor() {\n super('pk-show', { bubbles: true, cancelable: false, composed: true });\n }\n}\n\nexport class PkAfterShowEvent extends Event {\n constructor() {\n super('pk-after-show', { bubbles: true, cancelable: false, composed: true });\n }\n}\n\n/** Mirrors `pk-hide` (cancelable). */\nexport class PkHideEvent extends Event {\n readonly detail: { source: PkOverlaySource };\n\n constructor(source: PkOverlaySource = 'unknown') {\n super('pk-hide', { bubbles: true, cancelable: true, composed: true });\n this.detail = { source };\n }\n}\n\nexport class PkAfterHideEvent extends Event {\n constructor() {\n super('pk-after-hide', { bubbles: true, cancelable: false, composed: true });\n }\n}\n\ndeclare global {\n interface GlobalEventHandlersEventMap {\n 'pk-show': PkShowEvent;\n 'pk-after-show': PkAfterShowEvent;\n 'pk-hide': PkHideEvent;\n 'pk-after-hide': PkAfterHideEvent;\n }\n}\n"],"mappings":";;AAGA,IAAa,cAAb,cAAiC,MAAM;CACnC,cAAc;AACV,QAAM,WAAW;GAAE,SAAS;GAAM,YAAY;GAAO,UAAU;GAAM,CAAC;;;AAI9E,IAAa,mBAAb,cAAsC,MAAM;CACxC,cAAc;AACV,QAAM,iBAAiB;GAAE,SAAS;GAAM,YAAY;GAAO,UAAU;GAAM,CAAC;;;;AAKpF,IAAa,cAAb,cAAiC,MAAM;CAGnC,YAAY,SAA0B,WAAW;AAC7C,QAAM,WAAW;GAAE,SAAS;GAAM,YAAY;GAAM,UAAU;GAAM,CAAC;AACrE,OAAK,SAAS,EAAE,QAAQ;;;AAIhC,IAAa,mBAAb,cAAsC,MAAM;CACxC,cAAc;AACV,QAAM,iBAAiB;GAAE,SAAS;GAAM,YAAY;GAAO,UAAU;GAAM,CAAC"}
1
+ {"version":3,"file":"overlay-lifecycle-C582MGBJ.js","names":[],"sources":["../../src/events/overlay-lifecycle.ts"],"sourcesContent":["export type PkOverlaySource = 'close-button' | 'light-dismiss' | 'pointer-dismiss' | 'escape' | 'api' | 'unknown';\n\n/** Mirrors `pk-show`. */\nexport class PkShowEvent extends Event {\n constructor() {\n super('pk-show', { bubbles: true, cancelable: false, composed: true });\n }\n}\n\nexport class PkAfterShowEvent extends Event {\n constructor() {\n super('pk-after-show', { bubbles: true, cancelable: false, composed: true });\n }\n}\n\n/** Mirrors `pk-hide` (cancelable). */\nexport class PkHideEvent extends Event {\n readonly detail: { source: PkOverlaySource };\n\n constructor(source: PkOverlaySource = 'unknown') {\n super('pk-hide', { bubbles: true, cancelable: true, composed: true });\n this.detail = { source };\n }\n}\n\nexport class PkAfterHideEvent extends Event {\n constructor() {\n super('pk-after-hide', { bubbles: true, cancelable: false, composed: true });\n }\n}\n\ndeclare global {\n interface GlobalEventHandlersEventMap {\n 'pk-show': PkShowEvent;\n 'pk-after-show': PkAfterShowEvent;\n 'pk-hide': PkHideEvent;\n 'pk-after-hide': PkAfterHideEvent;\n }\n}\n"],"mappings":";;AAGA,IAAa,cAAb,cAAiC,MAAM;CACnC,cAAc;EACV,MAAM,WAAW;GAAE,SAAS;GAAM,YAAY;GAAO,UAAU;EAAK,CAAC;CACzE;AACJ;AAEA,IAAa,mBAAb,cAAsC,MAAM;CACxC,cAAc;EACV,MAAM,iBAAiB;GAAE,SAAS;GAAM,YAAY;GAAO,UAAU;EAAK,CAAC;CAC/E;AACJ;;AAGA,IAAa,cAAb,cAAiC,MAAM;CAGnC,YAAY,SAA0B,WAAW;EAC7C,MAAM,WAAW;GAAE,SAAS;GAAM,YAAY;GAAM,UAAU;EAAK,CAAC;EACpE,KAAK,SAAS,EAAE,OAAO;CAC3B;AACJ;AAEA,IAAa,mBAAb,cAAsC,MAAM;CACxC,cAAc;EACV,MAAM,iBAAiB;GAAE,SAAS;GAAM,YAAY;GAAO,UAAU;EAAK,CAAC;CAC/E;AACJ"}
@@ -1,8 +1,9 @@
1
- import { t as icons_exports } from "./icons-B8siZLOe.js";
2
- import { a as query, i as property, n as PkElement, o as state, s as customElement, t as __decorate } from "./decorate-R0X811qp.js";
3
- import { a as PkCopyEvent, i as PkCopyErrorEvent, n as copyToClipboard } from "./pk-copy-button-KegSx46o.js";
4
- import { n as renderIconHtml } from "./render-BKGW1a68.js";
5
- import { t as HasSlotController } from "./has-slot-9zjTXvea.js";
1
+ import { t as icons_exports } from "./icons-k1pvx6yX.js";
2
+ import { i as customElement, n as PkElement, t as __decorate } from "./decorate-Br_PE9pq.js";
3
+ import { n as query, r as state, t as property } from "./decorators-BkErmuYK.js";
4
+ import { a as PkCopyEvent, i as PkCopyErrorEvent, n as copyToClipboard } from "./pk-copy-button-5i9v_zmu.js";
5
+ import { n as renderIconHtml } from "./render-DQZp_Rak.js";
6
+ import { t as HasSlotController } from "./has-slot-DJv86HKx.js";
6
7
  import { css, html, nothing } from "lit";
7
8
  import { unsafeSVG } from "lit/directives/unsafe-svg.js";
8
9
  //#region src/events/pk-dismiss.ts
@@ -539,7 +540,8 @@ var PkAlert = class PkAlert extends PkElement {
539
540
  }
540
541
  renderIcon() {
541
542
  if (this.hideIcon) return nothing;
542
- return html`<span part="icon" class="icon" aria-hidden="true">${this.hasSlotController.test("icon") ? html`<slot name="icon"></slot>` : unsafeSVG(renderIconHtml(defaultIcons[this.variant] ?? defaultIcons.info))}</span>`;
543
+ const icon = this.hasSlotController.test("icon") ? html`<slot name="icon"></slot>` : unsafeSVG(renderIconHtml(defaultIcons[this.variant] ?? defaultIcons.info));
544
+ return html`<span part="icon" class="icon" aria-hidden="true">${icon}</span>`;
543
545
  }
544
546
  render() {
545
547
  const role = this.announce === "assertive" ? "alert" : this.announce === "polite" ? "status" : nothing;
@@ -661,4 +663,4 @@ PkAlert = __decorate([customElement("pk-alert")], PkAlert);
661
663
  //#endregion
662
664
  export { PkDismissEvent as n, PkAlert as t };
663
665
 
664
- //# sourceMappingURL=pk-alert-Cjxl6CY_.js.map
666
+ //# sourceMappingURL=pk-alert-BQAb4lJc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pk-alert-BQAb4lJc.js","names":["circleInfo","circleCheck","triangleExclamation","circleExclamation","xmark","_decorate"],"sources":["../../src/events/pk-dismiss.ts","../../src/components/alert/pk-alert.styles.ts","../../src/components/alert/pk-alert.ts"],"sourcesContent":["/** Emitted before a dismissible component hides itself. Prevent to keep it visible. */\nexport class PkDismissEvent extends Event {\n constructor() {\n super('pk-dismiss', { bubbles: true, cancelable: true, composed: true });\n }\n}\n\ndeclare global {\n interface GlobalEventHandlersEventMap {\n 'pk-dismiss': PkDismissEvent;\n }\n}\n","import { css } from 'lit';\n\nexport const pkAlertStyles = css`\n @layer pk-component {\n :host {\n display: block;\n width: 100%;\n color: var(--pk-alert-color);\n font-family: var(--pk-font-family);\n font-size: var(--_pk-alert-font-size);\n line-height: var(--pk-line-height);\n --pk-alert-accent: var(--pk-color-sky-600);\n --pk-alert-background: var(--pk-color-sky-50);\n --pk-alert-border: var(--pk-color-sky-300);\n --pk-alert-color: var(--pk-color-sky-800);\n --_pk-alert-font-size: var(--pk-font-size-sm);\n --_pk-alert-padding: 0.625rem 0.75rem;\n --_pk-alert-radius: var(--pk-radius-md);\n --_pk-alert-gap: 0.5rem;\n --_pk-alert-icon-size: 1.125rem;\n --_pk-alert-title-size: var(--pk-font-size-base);\n --_pk-alert-dismiss-size: 1.5rem;\n --_pk-alert-dismiss-padding: 0.375rem;\n --_pk-alert-dismiss-margin: -0.125rem -0.1875rem -0.125rem 0;\n --_pk-alert-section-margin-top: 0.625rem;\n --_pk-alert-details-padding-top: 0.5rem;\n --_pk-alert-details-content-margin-top: 0.625rem;\n --_pk-alert-details-pre-padding: 0.625rem;\n --_pk-alert-details-pre-radius: var(--pk-radius-md);\n --_pk-alert-details-pre-font-size: 0.6875rem;\n --_pk-alert-copy-button-size: var(--pk-btn-height-xs);\n --_pk-alert-copy-icon-size: var(--pk-btn-icon-size-xs);\n --_pk-alert-copy-inset: 0.375rem;\n --_pk-alert-copy-radius: var(--pk-radius-md);\n --_pk-alert-copy-status-size: 0.6875rem;\n --_pk-alert-action-height: var(--pk-btn-height-sm);\n --_pk-alert-action-font: var(--pk-btn-font-sm);\n --_pk-alert-action-padding-inline: var(--pk-btn-padding-inline-sm);\n --_pk-alert-action-icon-size: var(--pk-btn-icon-size-sm);\n --_pk-alert-action-icon-gap: var(--pk-btn-icon-gap-sm);\n --_pk-alert-action-caret-size: var(--pk-btn-caret-size-sm);\n --_pk-alert-action-radius: var(--pk-btn-radius-sm);\n }\n\n :host([hidden]) {\n display: none;\n }\n\n :host([size='sm']) {\n --_pk-alert-font-size: var(--pk-btn-font-xs);\n --_pk-alert-padding: 0.5rem 0.625rem;\n --_pk-alert-radius: var(--pk-radius-sm);\n --_pk-alert-gap: 0.4375rem;\n --_pk-alert-icon-size: 1rem;\n --_pk-alert-title-size: var(--pk-font-size-sm);\n --_pk-alert-dismiss-size: 1.375rem;\n --_pk-alert-dismiss-padding: 0.3125rem;\n --_pk-alert-dismiss-margin: -0.125rem -0.125rem -0.125rem 0;\n --_pk-alert-section-margin-top: 0.5rem;\n --_pk-alert-details-padding-top: 0.375rem;\n --_pk-alert-details-content-margin-top: 0.5rem;\n --_pk-alert-details-pre-padding: 0.5rem;\n --_pk-alert-details-pre-radius: var(--pk-radius-sm);\n --_pk-alert-details-pre-font-size: 0.6875rem;\n --_pk-alert-copy-button-size: var(--pk-btn-height-xxs);\n --_pk-alert-copy-icon-size: var(--pk-btn-icon-size-xxs);\n --_pk-alert-copy-inset: 0.3125rem;\n --_pk-alert-copy-radius: var(--pk-radius-sm);\n --_pk-alert-copy-status-size: 0.6875rem;\n --_pk-alert-action-height: var(--pk-btn-height-xs);\n --_pk-alert-action-font: var(--pk-btn-font-xs);\n --_pk-alert-action-padding-inline: var(--pk-btn-padding-inline-xs);\n --_pk-alert-action-icon-size: var(--pk-btn-icon-size-xs);\n --_pk-alert-action-icon-gap: var(--pk-btn-icon-gap-xs);\n --_pk-alert-action-caret-size: var(--pk-btn-caret-size-xs);\n --_pk-alert-action-radius: var(--pk-btn-radius-xs);\n }\n\n :host([size='lg']) {\n --_pk-alert-font-size: var(--pk-font-size-base);\n --_pk-alert-padding: 0.875rem 1rem;\n --_pk-alert-radius: var(--pk-radius-lg);\n --_pk-alert-gap: 0.75rem;\n --_pk-alert-icon-size: 1.375rem;\n --_pk-alert-title-size: 0.9375rem;\n --_pk-alert-dismiss-size: 1.75rem;\n --_pk-alert-dismiss-padding: 0.4375rem;\n --_pk-alert-dismiss-margin: -0.1875rem -0.25rem -0.1875rem 0;\n --_pk-alert-section-margin-top: 0.75rem;\n --_pk-alert-details-padding-top: 0.625rem;\n --_pk-alert-details-content-margin-top: 0.75rem;\n --_pk-alert-details-pre-padding: 0.75rem;\n --_pk-alert-details-pre-radius: var(--pk-radius-lg);\n --_pk-alert-details-pre-font-size: 0.75rem;\n --_pk-alert-copy-button-size: var(--pk-btn-height-sm);\n --_pk-alert-copy-icon-size: var(--pk-btn-icon-size-sm);\n --_pk-alert-copy-inset: 0.5rem;\n --_pk-alert-copy-radius: var(--pk-radius-lg);\n --_pk-alert-copy-status-size: 0.75rem;\n --_pk-alert-action-height: 2.125rem;\n --_pk-alert-action-font: var(--pk-font-size-base);\n --_pk-alert-action-padding-inline: 9px;\n --_pk-alert-action-icon-size: 14px;\n --_pk-alert-action-icon-gap: 6px;\n --_pk-alert-action-caret-size: 12px;\n --_pk-alert-action-radius: var(--pk-radius-lg);\n }\n\n .alert {\n box-sizing: border-box;\n width: 100%;\n padding: var(--pk-alert-padding, var(--_pk-alert-padding));\n border: 1px solid var(--pk-alert-border);\n border-inline-start: 4px solid var(--pk-alert-accent);\n border-radius: var(--pk-alert-radius, var(--_pk-alert-radius));\n background: var(--pk-alert-background);\n }\n\n :host([variant='success']) {\n --pk-alert-accent: var(--pk-color-teal-600);\n --pk-alert-background: var(--pk-color-teal-50);\n --pk-alert-border: var(--pk-color-teal-400);\n --pk-alert-color: var(--pk-color-teal-800);\n }\n\n :host([variant='neutral']) {\n --pk-alert-accent: var(--pk-color-gray-600);\n --pk-alert-background: var(--pk-color-gray-50);\n --pk-alert-border: var(--pk-color-gray-300);\n --pk-alert-color: var(--pk-color-gray-800);\n }\n\n :host([variant='warning']) {\n --pk-alert-accent: var(--pk-color-amber-600);\n --pk-alert-background: var(--pk-color-amber-50);\n --pk-alert-border: var(--pk-color-amber-300);\n --pk-alert-color: var(--pk-color-amber-800);\n }\n\n :host([variant='error']) {\n --pk-alert-accent: var(--pk-color-red-600);\n --pk-alert-background: var(--pk-color-red-50);\n --pk-alert-border: var(--pk-color-red-300);\n --pk-alert-color: var(--pk-color-red-800);\n }\n\n :host([appearance='filled-outlined']) .alert {\n border-inline-start-width: 1px;\n border-inline-start-color: var(--pk-alert-border);\n }\n\n :host([appearance='filled']) .alert {\n border-color: transparent;\n border-inline-start-width: 1px;\n }\n\n :host([appearance='outlined']) .alert {\n border-color: var(--pk-alert-accent);\n border-inline-start-width: 1px;\n background: transparent;\n }\n\n :host([appearance='plain']) .alert {\n border-color: transparent;\n border-inline-start-width: 1px;\n background: transparent;\n }\n\n .notice {\n display: flex;\n align-items: flex-start;\n gap: var(--_pk-alert-gap);\n min-width: 0;\n }\n\n .icon {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: var(--_pk-alert-icon-size);\n height: var(--_pk-alert-icon-size);\n margin-top: 0.0625rem;\n color: var(--pk-alert-accent);\n }\n\n .icon svg,\n .dismiss svg {\n display: block;\n width: 100%;\n height: 100%;\n fill: currentColor;\n }\n\n .content {\n min-width: 0;\n flex: 1 1 auto;\n }\n\n .title {\n display: block;\n margin: 0 0 0.125rem;\n color: var(--pk-alert-title-color, var(--pk-alert-accent));\n font-size: var(--pk-alert-title-size, var(--_pk-alert-title-size));\n font-weight: 700;\n line-height: 1.4;\n }\n\n .body {\n color: var(\n --pk-alert-body-color,\n var(--pk-alert-title-color, var(--pk-alert-accent))\n );\n }\n\n .body ::slotted(*) {\n /* Host document styles outrank normal shadow rules for slotted elements. */\n margin-block: 0 !important;\n }\n\n .dismiss {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: var(--_pk-alert-dismiss-size);\n height: var(--_pk-alert-dismiss-size);\n margin: var(--_pk-alert-dismiss-margin);\n padding: var(--_pk-alert-dismiss-padding);\n border: 0;\n border-radius: var(--pk-radius-md);\n background: transparent;\n color: var(--pk-alert-accent);\n cursor: pointer;\n }\n\n .dismiss:hover {\n background: color-mix(\n in srgb,\n var(--pk-alert-accent) 10%,\n transparent\n );\n }\n\n .dismiss:focus-visible,\n .copy:focus-visible,\n summary:focus-visible {\n outline: none;\n box-shadow: var(--pk-shadow-focus);\n }\n\n .actions,\n .details {\n margin-inline-start: calc(var(--_pk-alert-icon-size) + var(--_pk-alert-gap));\n }\n\n :host([hide-icon]) .actions,\n :host([hide-icon]) .details {\n margin-inline-start: 0;\n }\n\n .actions {\n margin-top: var(--_pk-alert-section-margin-top);\n }\n\n .actions slot::slotted(pk-button) {\n --pk-btn-height-default: var(--_pk-alert-action-height);\n --pk-btn-font-default: var(--_pk-alert-action-font);\n --pk-btn-padding-inline-default: var(--_pk-alert-action-padding-inline);\n --pk-btn-icon-size-default: var(--_pk-alert-action-icon-size);\n --pk-btn-icon-gap-default: var(--_pk-alert-action-icon-gap);\n --pk-btn-caret-size-default: var(--_pk-alert-action-caret-size);\n --pk-btn-radius-default: var(--_pk-alert-action-radius);\n }\n\n .details {\n margin-top: var(--_pk-alert-section-margin-top);\n padding-top: var(--_pk-alert-details-padding-top);\n border-top: 1px solid var(--pk-alert-border);\n color: var(--pk-color-gray-800);\n }\n\n summary {\n width: fit-content;\n border-radius: var(--pk-radius-sm);\n font-weight: 600;\n cursor: pointer;\n }\n\n .details-content {\n position: relative;\n margin-top: var(--_pk-alert-details-content-margin-top);\n }\n\n .details-scroll {\n min-width: 0;\n }\n\n .details-content ::slotted(pre) {\n box-sizing: border-box;\n max-height: var(--pk-alert-details-max-height, 16rem);\n margin: 0;\n padding: var(--_pk-alert-details-pre-padding);\n overflow: auto;\n border: 1px solid var(--pk-color-gray-200);\n border-radius: var(--_pk-alert-details-pre-radius);\n background: var(--pk-color-white);\n color: var(--pk-color-gray-800);\n /* Keep host pre resets from changing diagnostic typography. */\n font:\n var(--_pk-alert-details-pre-font-size)/1.5 ui-monospace,\n SFMono-Regular,\n Consolas,\n 'Liberation Mono',\n monospace !important;\n overflow-wrap: anywhere;\n user-select: text;\n white-space: pre-wrap;\n }\n\n :host([copyable]) .details-content ::slotted(pre) {\n max-height: none;\n padding-inline-end: calc(\n var(--_pk-alert-details-pre-padding) + var(--_pk-alert-copy-button-size) +\n var(--_pk-alert-copy-inset)\n );\n overflow: visible;\n border: 0;\n border-radius: 0;\n background: transparent;\n }\n\n :host([copyable]) .details-content {\n overflow: hidden;\n border: 1px solid var(--pk-color-gray-200);\n border-radius: var(--_pk-alert-details-pre-radius);\n background: var(--pk-color-white);\n }\n\n :host([copyable]) .details-scroll {\n position: relative;\n max-height: var(--pk-alert-details-max-height, 16rem);\n overflow: auto;\n }\n\n .copy-overlay {\n position: sticky;\n z-index: 1;\n top: 0;\n display: flex;\n justify-content: flex-end;\n height: 0;\n pointer-events: none;\n }\n\n .copy {\n flex: none;\n margin-block-start: var(--_pk-alert-copy-inset);\n margin-inline-end: var(--_pk-alert-copy-inset);\n pointer-events: auto;\n --pk-btn-height-default: var(--_pk-alert-copy-button-size);\n --pk-btn-icon-size-default: var(--_pk-alert-copy-icon-size);\n --pk-btn-radius-default: var(--_pk-alert-copy-radius);\n --pk-copy-button-background: var(--pk-color-white);\n --pk-copy-button-border-color: transparent;\n --pk-copy-button-hover-border-color: transparent;\n --pk-copy-button-color: var(--pk-color-gray-300);\n --pk-copy-button-hover-color: var(--pk-color-gray-500);\n --pk-copy-button-hover-background: color-mix(\n in srgb,\n var(--pk-color-gray-300) 6%,\n var(--pk-color-white)\n );\n }\n\n .copy-status {\n display: block;\n margin-top: 0.375rem;\n color: var(--pk-color-red-700);\n font-size: var(--_pk-alert-copy-status-size);\n }\n\n .copy-status:not([data-error]) {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n @media (max-width: 480px) {\n .actions,\n .details {\n margin-inline-start: 0;\n }\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { customElement, property, query, state } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { PkCopyErrorEvent, PkCopyEvent } from '../../events/pk-copy.js';\nimport { PkDismissEvent } from '../../events/pk-dismiss.js';\nimport {\n circleCheck,\n circleExclamation,\n circleInfo,\n renderIconHtml,\n triangleExclamation,\n xmark,\n} from '../../icons/index.js';\nimport { HasSlotController } from '../../internal/has-slot.js';\nimport { copyToClipboard } from '../../utils/copy-to-clipboard.js';\nimport type { PkCopyButton } from '../copy-button/pk-copy-button.js';\nimport '../copy-button/pk-copy-button.js';\nimport { pkAlertStyles } from './pk-alert.styles.js';\n\nexport type PkAlertVariant = 'neutral' | 'info' | 'success' | 'warning' | 'error';\nexport type PkAlertAppearance =\n | 'accent'\n | 'filled-outlined'\n | 'filled'\n | 'outlined'\n | 'plain';\nexport type PkAlertAnnouncement = 'off' | 'polite' | 'assertive';\nexport type PkAlertSize = 'sm' | 'default' | 'lg';\n\nconst COPY_STATUS_RESET_MS = 3000;\n\nconst defaultIcons = {\n neutral: circleInfo,\n info: circleInfo,\n success: circleCheck,\n warning: triangleExclamation,\n error: circleExclamation,\n};\n\n/**\n * Semantic notice for feedback, warnings and recoverable failures.\n *\n * @slot title - Alert heading. Takes precedence over the `heading` property.\n * @slot icon - Custom icon. The component supplies a variant icon by default.\n * @slot - Alert message or other primary content.\n * @slot actions - Optional primary alert actions.\n * @slot details - Optional content inside the collapsible details region.\n *\n * @event pk-dismiss - Emitted before a dismissible alert hides. Prevent to keep it visible.\n * @event pk-copy - Emitted when the details are copied successfully.\n * @event pk-copy-error - Emitted when the details cannot be copied.\n *\n * @csspart base - Alert container.\n * @csspart notice - Icon, content and dismiss-button row.\n * @csspart icon - Icon wrapper.\n * @csspart content - Heading and message wrapper.\n * @csspart title - Alert heading.\n * @csspart body - Default content wrapper.\n * @csspart dismiss-button - Dismiss button.\n * @csspart actions - Alert actions wrapper.\n * @csspart details - Collapsible details element.\n * @csspart details-summary - Details disclosure label.\n * @csspart details-content - Details content wrapper.\n * @csspart copy-button - Copy-details button.\n * @csspart copy-status - Copy result status.\n *\n * @cssproperty --pk-alert-accent - Accent, title and icon colour.\n * @cssproperty --pk-alert-background - Alert background.\n * @cssproperty --pk-alert-border - Alert and divider border colour.\n * @cssproperty --pk-alert-color - Alert host colour.\n * @cssproperty --pk-alert-body-color - Primary content colour.\n * @cssproperty --pk-alert-title-color - Heading colour.\n * @cssproperty --pk-alert-title-size - Heading font size.\n * @cssproperty --pk-alert-padding - Alert inner padding.\n * @cssproperty --pk-alert-radius - Alert corner radius.\n * @cssproperty --pk-alert-details-max-height - Maximum height of diagnostic details.\n *\n * @dependency pk-copy-button - Compact copy-details action.\n */\n@customElement('pk-alert')\nexport class PkAlert extends PkElement {\n static override styles = pkAlertStyles;\n\n private readonly hasSlotController = new HasSlotController(\n this,\n 'title',\n 'icon',\n 'actions',\n 'details',\n );\n\n @property({ reflect: true })\n variant: PkAlertVariant = 'info';\n\n /** Overall density, including typography, icons, spacing, details, and actions. */\n @property({ reflect: true })\n size: PkAlertSize = 'default';\n\n /** Visual treatment, independent from the alert's semantic variant. */\n @property({ reflect: true })\n appearance: PkAlertAppearance = 'accent';\n\n @property()\n heading = '';\n\n @property({ type: Boolean, attribute: 'hide-icon', reflect: true })\n hideIcon = false;\n\n @property({ type: Boolean, reflect: true })\n dismissible = false;\n\n @property({ reflect: true })\n announce: PkAlertAnnouncement = 'off';\n\n @property({ attribute: 'details-label' })\n detailsLabel = 'Details';\n\n @property({ type: Boolean, attribute: 'details-open', reflect: true })\n detailsOpen = false;\n\n @property({ type: Boolean, reflect: true })\n copyable = false;\n\n @property({ attribute: 'copy-label' })\n copyLabel = 'Copy details';\n\n @property({ attribute: 'copied-label' })\n copiedLabel = 'Details copied.';\n\n @property({ attribute: 'copy-error-label' })\n copyErrorLabel = 'Copy failed. Select the details and copy them manually.';\n\n @property({ attribute: 'dismiss-label' })\n dismissLabel = 'Dismiss';\n\n @query('slot[name=\"details\"]')\n private detailsSlot!: HTMLSlotElement;\n\n @query('pk-copy-button.copy')\n private copyButton?: PkCopyButton;\n\n @state()\n private copyStatus = '';\n\n @state()\n private copyFailed = false;\n\n private copyStatusResetTimer?: number;\n\n override disconnectedCallback(): void {\n window.clearTimeout(this.copyStatusResetTimer);\n super.disconnectedCallback();\n }\n\n private hasTitle(): boolean {\n return Boolean(this.heading) || this.hasSlotController.test('title');\n }\n\n private hasDetails(): boolean {\n return this.hasSlotController.test('details');\n }\n\n private get detailsValue(): string {\n return (this.detailsSlot?.assignedNodes({ flatten: true }) ?? [])\n .map((node) => node.textContent ?? '')\n .join('')\n .trim();\n }\n\n private resetCopyStatusLater(): void {\n window.clearTimeout(this.copyStatusResetTimer);\n this.copyStatusResetTimer = window.setTimeout(() => {\n this.copyStatus = '';\n this.copyFailed = false;\n }, COPY_STATUS_RESET_MS);\n }\n\n private showCopySuccess(): void {\n this.copyFailed = false;\n this.copyStatus = this.copiedLabel;\n this.resetCopyStatusLater();\n }\n\n private showCopyError(): void {\n this.copyFailed = true;\n this.copyStatus = this.copyErrorLabel;\n this.resetCopyStatusLater();\n }\n\n private handleCopySuccess(): void {\n this.showCopySuccess();\n }\n\n private handleCopyError(): void {\n this.showCopyError();\n this.selectDetails();\n }\n\n private selectDetails(): void {\n const nodes = this.detailsSlot?.assignedNodes({ flatten: true }) ?? [];\n const first = nodes[0];\n const last = nodes[nodes.length - 1];\n\n if (!first || !last) {\n return;\n }\n\n this.detailsOpen = true;\n\n const range = document.createRange();\n range.setStartBefore(first);\n range.setEndAfter(last);\n\n const selection = window.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n\n /** Copy the plain text assigned to the details slot. */\n async copyDetails(): Promise<void> {\n const value = this.detailsValue;\n\n if (!value) {\n this.showCopyError();\n this.dispatchEvent(new PkCopyErrorEvent());\n return;\n }\n\n if (this.copyButton) {\n this.copyButton.value = value;\n await this.copyButton.copy();\n return;\n }\n\n try {\n await copyToClipboard(value);\n this.showCopySuccess();\n const copyEvent = new PkCopyEvent(value);\n this.dispatchEvent(copyEvent);\n } catch {\n this.showCopyError();\n this.selectDetails();\n this.dispatchEvent(new PkCopyErrorEvent());\n }\n }\n\n /** Request dismissal and hide the alert unless the event is prevented. */\n dismiss(): void {\n if (this.dispatchEvent(new PkDismissEvent())) {\n this.hidden = true;\n }\n }\n\n /** Show an alert hidden by `dismiss()`. */\n show(): void {\n this.hidden = false;\n }\n\n private handleDetailsToggle(event: Event): void {\n this.detailsOpen = (event.currentTarget as HTMLDetailsElement).open;\n }\n\n private renderIcon() {\n if (this.hideIcon) {\n return nothing;\n }\n\n const icon = this.hasSlotController.test('icon')\n ? html`<slot name=\"icon\"></slot>`\n : unsafeSVG(renderIconHtml(defaultIcons[this.variant] ?? defaultIcons.info));\n\n return html`<span part=\"icon\" class=\"icon\" aria-hidden=\"true\">${icon}</span>`;\n }\n\n override render() {\n const role = this.announce === 'assertive'\n ? 'alert'\n : this.announce === 'polite'\n ? 'status'\n : nothing;\n const live = this.announce === 'off' ? nothing : this.announce;\n const hasActions = this.hasSlotController.test('actions');\n const hasDetails = this.hasDetails();\n\n return html`\n <div\n part=\"base\"\n class=\"alert\"\n role=${role}\n aria-live=${live}\n aria-atomic=${this.announce === 'off' ? nothing : 'true'}\n >\n <div part=\"notice\" class=\"notice\">\n ${this.renderIcon()}\n\n <div part=\"content\" class=\"content\">\n ${this.hasTitle()\n ? html`\n <strong part=\"title\" class=\"title\">\n ${this.hasSlotController.test('title')\n ? html`<slot name=\"title\"></slot>`\n : this.heading}\n </strong>\n `\n : nothing}\n\n <div part=\"body\" class=\"body\"><slot></slot></div>\n </div>\n\n ${this.dismissible\n ? html`\n <button\n part=\"dismiss-button\"\n class=\"dismiss\"\n type=\"button\"\n aria-label=${this.dismissLabel}\n @click=${this.dismiss}\n >\n ${unsafeSVG(renderIconHtml(xmark))}\n </button>\n `\n : nothing}\n </div>\n\n ${hasActions\n ? html`<div part=\"actions\" class=\"actions\"><slot name=\"actions\"></slot></div>`\n : nothing}\n\n ${hasDetails\n ? html`\n <details\n part=\"details\"\n class=\"details\"\n ?open=${this.detailsOpen}\n @toggle=${this.handleDetailsToggle}\n >\n <summary part=\"details-summary\">${this.detailsLabel}</summary>\n <div part=\"details-content\" class=\"details-content\">\n <div class=\"details-scroll\">\n ${this.copyable\n ? html`\n <div class=\"copy-overlay\">\n <pk-copy-button\n part=\"copy-button\"\n class=\"copy\"\n variant=\"transparent\"\n aria-label=${this.copyLabel}\n .copiedLabel=${this.copiedLabel}\n .value=${this.detailsValue}\n @pk-copy=${this.handleCopySuccess}\n @pk-copy-error=${this.handleCopyError}\n ></pk-copy-button>\n </div>\n `\n : nothing}\n <slot name=\"details\"></slot>\n </div>\n </div>\n\n ${this.copyable\n ? html`\n <span\n part=\"copy-status\"\n class=\"copy-status\"\n data-error=${this.copyFailed ? '' : nothing}\n role=\"status\"\n aria-live=\"polite\"\n >${this.copyStatus}</span>\n `\n : nothing}\n </details>\n `\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-alert': PkAlert;\n }\n}\n"],"mappings":"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"}
@@ -1,21 +1,22 @@
1
- import { t as icons_exports } from "./icons-B8siZLOe.js";
2
- import { a as query, i as property, o as state, s as customElement, t as __decorate } from "./decorate-R0X811qp.js";
3
- import { n as renderIconHtml } from "./render-BKGW1a68.js";
4
- import { t as HasSlotController } from "./has-slot-9zjTXvea.js";
5
- import { t as iconStyles } from "./icon.styles-pNyUmVtP.js";
6
- import { t as PkFormAssociatedElement } from "./pk-form-associated-element-MqaHdIoH.js";
7
- import { t as MirrorValidator } from "./mirror-validator-Cszpqlxk.js";
8
- import { i as uniqueId, t as LiveRegion } from "./focus-C6pY4Ym4.js";
9
- import { i as unregisterDismissible, n as isTopDismissible, r as registerDismissible } from "./dismissible-stack-B3BgzdQb.js";
10
- import { i as scrollIntoView } from "./scroll-lock-gTFrvIPu.js";
11
- import { t as PkClearEvent } from "./pk-clear-LzxwxEX7.js";
12
- import { i as PkShowEvent, n as PkAfterShowEvent, r as PkHideEvent, t as PkAfterHideEvent } from "./overlay-lifecycle-CAoT0LE8.js";
13
- import "./pk-popup-0EIt9X_W.js";
14
- import { i as waitForPopupReposition, r as syncPopupPlacementAnimation } from "./popup-placement-animation-GvFXER7D.js";
15
- import { a as isListboxTypeToSelectKey, i as handleListboxKeyDown, n as LISTBOX_NAVIGATION_KEYS } from "./sync-listbox-separators-CPFtrpNq.js";
16
- import { i as waitForPopupContentExitAnimation, n as AsyncOptionFetcher, r as syncFilteredOptions, t as matchesOptionFilter } from "./option-filter-Cj5SvyzI.js";
17
- import { n as isPointerInsideOverlay, t as isEventInsideOverlay } from "./popup-pointer-BTS3Y6LE.js";
18
- import { t as popupContentAnimationStyles } from "./popup-content-animation.styles-EUnGV75J.js";
1
+ import { t as icons_exports } from "./icons-k1pvx6yX.js";
2
+ import { i as customElement, t as __decorate } from "./decorate-Br_PE9pq.js";
3
+ import { n as query, r as state, t as property } from "./decorators-BkErmuYK.js";
4
+ import { n as renderIconHtml } from "./render-DQZp_Rak.js";
5
+ import { t as HasSlotController } from "./has-slot-DJv86HKx.js";
6
+ import { t as iconStyles } from "./icon.styles-KWvfi7RV.js";
7
+ import { t as PkFormAssociatedElement } from "./pk-form-associated-element-Doh2K3pG.js";
8
+ import { t as MirrorValidator } from "./mirror-validator-BkZlEv1Z.js";
9
+ import { i as uniqueId, t as LiveRegion } from "./focus-DcVUPVqn.js";
10
+ import { i as unregisterDismissible, n as isTopDismissible, r as registerDismissible } from "./dismissible-stack-CwhtwAyo.js";
11
+ import { i as scrollIntoView } from "./scroll-lock-DE1pElMQ.js";
12
+ import { t as PkClearEvent } from "./pk-clear-DHxP_2cm.js";
13
+ import { i as PkShowEvent, n as PkAfterShowEvent, r as PkHideEvent, t as PkAfterHideEvent } from "./overlay-lifecycle-C582MGBJ.js";
14
+ import "./pk-popup-DVE93VSV.js";
15
+ import { i as waitForPopupReposition, r as syncPopupPlacementAnimation } from "./popup-placement-animation-ClUYI79z.js";
16
+ import { a as isListboxTypeToSelectKey, i as handleListboxKeyDown, n as LISTBOX_NAVIGATION_KEYS } from "./sync-listbox-separators-saLEtPpJ.js";
17
+ import { i as waitForPopupContentExitAnimation, n as AsyncOptionFetcher, r as syncFilteredOptions, t as matchesOptionFilter } from "./option-filter-BkKyBg8L.js";
18
+ import { n as isPointerInsideOverlay, t as isEventInsideOverlay } from "./popup-pointer-Bh_d205v.js";
19
+ import { t as popupContentAnimationStyles } from "./popup-content-animation.styles-CJ8zGJz-.js";
19
20
  import { css, html, nothing } from "lit";
20
21
  import { unsafeSVG } from "lit/directives/unsafe-svg.js";
21
22
  import { classMap } from "lit/directives/class-map.js";
@@ -989,4 +990,4 @@ PkAutocomplete = __decorate([customElement("pk-autocomplete")], PkAutocomplete);
989
990
  //#endregion
990
991
  export { PkAutocomplete as t };
991
992
 
992
- //# sourceMappingURL=pk-autocomplete-DA77kdTN.js.map
993
+ //# sourceMappingURL=pk-autocomplete-DUXhs1hi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pk-autocomplete-DUXhs1hi.js","names":["xmark","_decorate"],"sources":["../../src/components/autocomplete/pk-autocomplete.styles.ts","../../src/components/autocomplete/pk-autocomplete.ts"],"sourcesContent":["import { css } from 'lit';\n\nimport { iconStyles } from '../../base/icon.styles.js';\nimport { popupContentAnimationStyles } from '../../styles/popup-content-animation.styles.js';\n\n/**\n * Autocomplete chrome matches `pk-input` (text field), not Combobox’s slate\n * select fill / chevron affordance. Panel / listbox tokens stay shared with\n * Combobox so suggestion rows look the same.\n */\nexport const pkAutocompleteStyles = [\n popupContentAnimationStyles,\n css`\n ${iconStyles}\n @layer pk-component {\n :host {\n display: block;\n position: relative;\n width: 100%;\n color: var(--pk-color-gray-700);\n font-family: var(--pk-font-family);\n font-size: var(--pk-font-size-base);\n line-height: var(--pk-line-height);\n /* Match pk-input control tokens — not Combobox slate fill. */\n --pk-autocomplete-padding-block: 6px;\n --pk-autocomplete-padding-inline: 8px;\n --pk-autocomplete-control-gap: 6px;\n --pk-autocomplete-decoration-size: 0.75rem;\n --pk-autocomplete-font-size: var(--pk-font-size-base);\n --pk-select-item-min-height: 0;\n --pk-select-item-padding-block: 6px;\n --pk-select-item-padding-inline: 10px;\n --pk-select-item-padding-inline-end: 2rem;\n --pk-select-item-font-size: 14px;\n --pk-select-item-line-height: 1.4;\n --pk-select-item-indicator-size: 0.75rem;\n --pk-select-item-indicator-inset: 0.5rem;\n --pk-select-group-label-font-size: 12px;\n }\n\n /* width=\"full\" is the documented stretch opt-in; host already fills by default. */\n :host([width='full']) {\n display: block;\n width: 100%;\n }\n\n .control {\n display: flex;\n align-items: center;\n gap: var(--pk-autocomplete-control-gap);\n width: 100%;\n max-width: 100%;\n min-width: 0;\n margin: 0;\n padding-block: var(--pk-autocomplete-padding-block);\n padding-inline: var(--pk-autocomplete-padding-inline);\n border: var(--pk-input-border);\n border-radius: var(--pk-input-border-radius, var(--pk-radius-sm));\n background: var(--pk-input-bg);\n background-clip: padding-box;\n color: var(--pk-color-gray-700);\n font: inherit;\n font-size: var(--pk-autocomplete-font-size);\n line-height: var(--pk-input-control-line-height, 1.25rem);\n white-space: nowrap;\n cursor: text;\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.12s ease, box-shadow 0.12s ease;\n }\n\n /*\n * Craft text focus: resting border stays; ring is box-shadow only\n * (--pk-input-focus-shadow already includes the 1px edge). Same when the\n * suggestion panel is open — still a text field, not a select trigger.\n */\n :host(:not([invalid]):not(:state(user-invalid))) .control:focus-within,\n :host(:not([invalid]):not(:state(user-invalid))[data-state='focus-visible']) .control,\n :host(:not([invalid]):not(:state(user-invalid))) .control[data-popup-open] {\n box-shadow: var(--pk-input-focus-shadow);\n }\n\n .control.is-disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .control-start,\n .control-end {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n line-height: 0;\n color: var(--pk-color-gray-400);\n }\n\n slot[name='start']::slotted(svg),\n slot[name='end']::slotted(svg) {\n width: var(--pk-autocomplete-decoration-size);\n height: var(--pk-autocomplete-decoration-size);\n }\n\n .autocomplete-input {\n flex: 1 1 auto;\n width: 100%;\n min-width: 0;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n line-height: var(--pk-input-control-line-height, 1.25rem);\n outline: none;\n }\n\n .autocomplete-input::placeholder {\n color: var(--pk-input-placeholder-color, var(--pk-color-gray-400));\n }\n\n /* Clear: flex trailing action — same contract as pk-input / Combobox clear. */\n .clear-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n align-self: stretch;\n box-sizing: border-box;\n width: calc(var(--pk-autocomplete-decoration-size) + var(--pk-autocomplete-padding-inline));\n height: auto;\n min-height: var(--pk-autocomplete-decoration-size);\n margin-block: calc(-1 * var(--pk-autocomplete-padding-block));\n /* Match pk-copy-button[slot=end]: pull into padding but leave a 4px glyph inset. */\n margin-inline-end: calc(-1 * var(--pk-autocomplete-padding-inline) + 4px);\n margin-inline-start: 0;\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: var(--pk-color-gray-600);\n cursor: pointer;\n outline: none;\n }\n\n .clear-button:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .clear-button-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n pointer-events: none;\n }\n\n .clear-button-icon svg {\n display: block;\n width: 0.75rem;\n height: 0.75rem;\n }\n\n .value-input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n .panel ::slotted(pk-separator) {\n margin: 4px 0;\n }\n\n .panel {\n width: max-content;\n min-width: var(--pk-autocomplete-anchor-width, 8rem);\n padding: 0;\n border: 0;\n border-radius: var(--pk-radius-md);\n background: var(--pk-color-white);\n box-shadow: var(--pk-shadow-popup);\n color: var(--pk-color-gray-700);\n outline: none;\n }\n\n .panel-body {\n max-height: 16rem;\n overflow: auto;\n }\n\n .panel:not([data-open]):not(.closing) {\n opacity: 0;\n pointer-events: none;\n }\n\n .panel[data-open]:not(.closing) {\n opacity: 1;\n pointer-events: auto;\n }\n\n .panel[hidden] {\n display: none !important;\n }\n\n .empty,\n .async-status {\n display: flex;\n align-items: center;\n margin: 0;\n min-height: var(--pk-select-item-min-height, var(--pk-input-height));\n padding-block: var(--pk-select-item-padding-block);\n padding-inline: var(--pk-select-item-padding-inline);\n border: var(--pk-select-trigger-border-width, 1px) solid transparent;\n box-sizing: border-box;\n color: var(--pk-color-gray-500);\n font-size: var(--pk-select-item-font-size);\n line-height: var(--pk-select-item-line-height);\n }\n\n :host([invalid]) .control,\n :host(:state(user-invalid)) .control {\n border-color: var(--pk-color-rose-600);\n }\n\n :host([invalid]) .control:focus-within,\n :host([invalid][data-state='focus-visible']) .control,\n :host(:state(user-invalid)) .control:focus-within,\n :host(:state(user-invalid)[data-state='focus-visible']) .control {\n box-shadow: var(--pk-input-invalid-focus-shadow);\n }\n\n :host([size='xs']) {\n --pk-autocomplete-padding-block: 4px;\n --pk-autocomplete-padding-inline: 6px;\n --pk-autocomplete-control-gap: 4px;\n --pk-autocomplete-decoration-size: 0.625rem;\n --pk-autocomplete-font-size: 11px;\n --pk-select-item-padding-block: 4px;\n --pk-select-item-padding-inline: 8px;\n --pk-select-item-padding-inline-end: 1.75rem;\n --pk-select-item-font-size: 11px;\n --pk-select-group-label-font-size: 11px;\n }\n\n :host([size='xs']) .clear-button-icon svg {\n width: 0.625rem;\n height: 0.625rem;\n }\n\n :host([size='sm']) {\n --pk-autocomplete-padding-block: 4px;\n --pk-autocomplete-padding-inline: 8px;\n --pk-autocomplete-control-gap: 4px;\n --pk-autocomplete-decoration-size: 0.6875rem;\n --pk-autocomplete-font-size: 12px;\n --pk-select-item-padding-block: 6px;\n --pk-select-item-padding-inline: 10px;\n --pk-select-item-padding-inline-end: 1.75rem;\n --pk-select-item-font-size: 12px;\n --pk-select-group-label-font-size: 12px;\n }\n\n :host([size='sm']) .clear-button-icon svg {\n width: 0.6875rem;\n height: 0.6875rem;\n }\n\n :host([size='lg']) {\n --pk-autocomplete-padding-block: 8px;\n --pk-autocomplete-padding-inline: 12px;\n --pk-autocomplete-control-gap: 8px;\n --pk-autocomplete-decoration-size: 0.875rem;\n --pk-autocomplete-font-size: var(--pk-font-size-base);\n --pk-select-item-padding-block: 8px;\n --pk-select-item-padding-inline: 12px;\n --pk-select-item-font-size: 14px;\n --pk-select-group-label-font-size: 14px;\n }\n\n :host([size='xl']) {\n --pk-autocomplete-padding-block: 10px;\n --pk-autocomplete-padding-inline: 16px;\n --pk-autocomplete-control-gap: 8px;\n --pk-autocomplete-decoration-size: 1rem;\n --pk-autocomplete-font-size: 16px;\n --pk-select-item-padding-block: 10px;\n --pk-select-item-padding-inline: 14px;\n --pk-select-item-padding-inline-end: 2.25rem;\n --pk-select-item-font-size: 14px;\n --pk-select-group-label-font-size: 16px;\n }\n\n :host([size='xl']) .clear-button-icon svg {\n width: 0.875rem;\n height: 0.875rem;\n }\n }\n`,\n];\n","import { html, nothing } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query, state } from '../../decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport type { PropertyValues } from 'lit';\n\nimport { xmark, renderIconHtml } from '../../icons/index.js';\nimport { LiveRegion, uniqueId } from '../../a11y/focus.js';\nimport { isTopDismissible, registerDismissible, unregisterDismissible } from '../../a11y/dismissible-stack.js';\nimport { scrollIntoView } from '../../a11y/scroll-lock.js';\nimport { PkFormAssociatedElement } from '../../base/pk-form-associated-element.js';\nimport { HasSlotController } from '../../internal/has-slot.js';\nimport { PkClearEvent } from '../../events/pk-clear.js';\nimport {\n PkAfterHideEvent,\n PkAfterShowEvent,\n PkHideEvent,\n PkShowEvent,\n type PkOverlaySource,\n} from '../../events/overlay-lifecycle.js';\nimport type { PkValidator } from '../../validators/types.js';\nimport { MirrorValidator } from '../../validators/mirror-validator.js';\n// Keep the internal element registered when production builds erase type-only imports.\nimport '../popup/pk-popup.js';\nimport type { PkPopup, PkPopupPlacement } from '../popup/pk-popup.js';\nimport {\n handleListboxKeyDown,\n isListboxTypeToSelectKey,\n LISTBOX_NAVIGATION_KEYS,\n} from '../../utils/listbox-keyboard.js';\nimport {\n syncPopupPlacementAnimation,\n waitForPopupReposition,\n} from '../../utils/popup-placement-animation.js';\nimport { waitForPopupContentExitAnimation } from '../../utils/popup-content-exit.js';\nimport { isEventInsideOverlay, isPointerInsideOverlay } from '../../utils/popup-pointer.js';\nimport { syncFilteredOptions } from '../../internal/sync-filtered-options.js';\nimport {\n AsyncOptionFetcher,\n type PkAsyncOptionFetchHandler,\n type PkAsyncOptionItem,\n} from '../../utils/async-option-fetch.js';\nimport { matchesOptionFilter, type PkOptionFilter } from '../../utils/option-filter.js';\nimport type { PkOption } from '../select/pk-option.js';\nimport type { PkOptionGroup } from '../select/pk-option-group.js';\n// Freeform field chrome matches pk-input — not Combobox’s select fill / chevron.\nimport { pkAutocompleteStyles } from './pk-autocomplete.styles.js';\n\nexport type PkAutocompleteSize = 'xs' | 'sm' | 'default' | 'lg' | 'xl';\n\nexport type PkAutocompleteFilter = PkOptionFilter;\n\nexport type PkAutocompleteAsyncOption = PkAsyncOptionItem;\n\nexport type PkAutocompleteFetchHandler = PkAsyncOptionFetchHandler;\n\nconst XMARK_ICON = renderIconHtml(xmark);\n\n/**\n * Autocomplete — freeform text field with optional list suggestions.\n *\n * Unlike Combobox, the committed `value` *is* the input text. Choosing a\n * suggestion inserts that option’s value into the field; typing always wins.\n *\n * @slot start - Presentational decoration before the input (e.g. icons)\n * @slot end - Presentational decoration before the clear control\n * @slot - `pk-option` and `pk-option-group` items\n *\n * @csspart control - Input control wrapper\n * @csspart start - Host start decoration container\n * @csspart end - Host end decoration container\n * @csspart input - Autocomplete text input\n * @csspart clear-button - Clear value button\n * @csspart panel-body - Scrollable listbox region inside the popup panel\n * @csspart empty - Empty-state message\n * @csspart async-status - Async search status message\n *\n * @dependency pk-popup - Positioned suggestion panel host.\n */\n@customElement('pk-autocomplete')\nexport class PkAutocomplete extends PkFormAssociatedElement {\n static override styles = pkAutocompleteStyles;\n\n static override get validators(): PkValidator[] {\n return [\n ...super.validators,\n MirrorValidator(),\n {\n observedAttributes: ['required'],\n checkValidity: (element) => {\n const field = element as unknown as PkAutocomplete;\n const result = {\n message: 'Please fill out this field.',\n isValid: true,\n invalidKeys: [] as ReturnType<PkValidator['checkValidity']>['invalidKeys'],\n };\n\n if (!field.required || field.value.trim()) {\n return result;\n }\n\n result.isValid = false;\n result.invalidKeys.push('valueMissing');\n return result;\n },\n },\n ];\n }\n\n override assumeInteractionOn = ['blur', 'input'];\n\n @property({ type: Boolean, reflect: true })\n open = false;\n\n @property({ reflect: true })\n placement: PkPopupPlacement = 'bottom-start';\n\n /** Gap between the control and listbox panel in px (default: 6). */\n @property({ attribute: 'side-offset', type: Number })\n sideOffset = 6;\n\n @property({ type: Boolean, reflect: true })\n clearable = false;\n\n @property({ attribute: 'with-clear', type: Boolean })\n withClear = false;\n\n /** When true, the first matching option is highlighted on open or when filtering. */\n @property({ attribute: 'auto-highlight', type: Boolean })\n autoHighlight = false;\n\n @property({ type: Boolean, reflect: true })\n invalid = false;\n\n @property({ reflect: true })\n size: PkAutocompleteSize = 'default';\n\n /** When `full`, the control stretches to the host width. */\n @property({ reflect: true })\n width?: 'full';\n\n /** Empty by default — consumers opt in when a prompt is useful. */\n @property()\n placeholder = '';\n\n @property({ attribute: 'empty-message' })\n emptyMessage = 'No options found.';\n\n /** Freeform field value — always mirrors the visible input text. */\n @property()\n value = '';\n\n @property({ attribute: 'default-value' })\n defaultValue = '';\n\n @property()\n label = '';\n\n @property()\n instructions = '';\n\n @property({ attribute: 'aria-label' })\n ariaLabel: string | null = null;\n\n /**\n * Whether arrow-key focus loops from the last option back to the first (and vice versa).\n * Default: `true` (same as Combobox).\n */\n @property({ attribute: 'loop-focus', type: Boolean })\n loopFocus = true;\n\n /** Custom filter — `(option, query) => boolean`. Defaults to label/value substring match. */\n @property({ attribute: false })\n filter: PkAutocompleteFilter | null = null;\n\n /**\n * When true, options are loaded via `fetchOptions` as the user types instead of\n * filtering static `pk-option` children.\n */\n @property({ type: Boolean, reflect: true })\n async = false;\n\n /** Message shown while async results are loading. */\n @property({ attribute: 'loading-message' })\n loadingMessage = 'Searching…';\n\n /** Message shown before the user types in async mode. */\n @property({ attribute: 'start-typing-message' })\n startTypingMessage = 'Start typing to search…';\n\n /** Remote search handler — `(query, signal) => Promise<options>`. */\n @property({ attribute: false })\n fetchOptions: PkAutocompleteFetchHandler | null = null;\n\n private readonly hasSlotController = new HasSlotController(this, 'start', 'end');\n\n private readonly listboxId = uniqueId('pk-autocomplete-listbox');\n private readonly inputId = uniqueId('pk-autocomplete-input');\n\n @query('pk-popup')\n private popupElement!: PkPopup;\n\n @query('.control')\n private controlElement!: HTMLElement;\n\n @query('.control-input')\n private controlInput?: HTMLInputElement;\n\n @query('.value-input')\n override input!: HTMLInputElement;\n\n private get panelElement(): HTMLDivElement | null {\n return this.popupElement?.getContentElement() as HTMLDivElement | null ?? null;\n }\n\n private get panelBodyElement(): HTMLDivElement | undefined {\n return this.panelElement?.querySelector('.panel-body') as HTMLDivElement | undefined;\n }\n\n private get listScrollContainer(): HTMLElement {\n return this.panelBodyElement ?? this.panelElement ?? this;\n }\n\n private options: PkOption[] = [];\n\n @state()\n private highlightedIndex = -1;\n\n @state()\n private closing = false;\n\n @state()\n private panelAnimated = false;\n\n private dismissRegistered = false;\n private panelEventTarget: HTMLElement | null = null;\n private optionsObserver?: MutationObserver;\n private liveRegion?: LiveRegion;\n private asyncFetcher: AsyncOptionFetcher | null = null;\n\n @state()\n private asyncLoading = false;\n\n @state()\n private asyncError: string | null = null;\n\n override connectedCallback(): void {\n this.instructions = this.getAttribute('hint') ?? this.instructions;\n this.refreshOptions();\n super.connectedCallback();\n this.syncHasValueAttribute();\n this.addEventListener('pk-listbox-keydown', this.handleListboxKeyDownEvent as EventListener);\n this.optionsObserver = new MutationObserver(() => {\n this.handleOptionsMutation({ render: true });\n });\n this.optionsObserver.observe(this, { childList: true, subtree: true });\n }\n\n override disconnectedCallback(): void {\n this.unbindPanelEvents();\n this.removeEventListener('pk-listbox-keydown', this.handleListboxKeyDownEvent as EventListener);\n this.optionsObserver?.disconnect();\n this.liveRegion?.destroy();\n this.liveRegion = undefined;\n this.asyncFetcher?.cancel();\n void this.closePanel('api');\n super.disconnectedCallback();\n }\n\n override firstUpdated(changed: PropertyValues): void {\n super.firstUpdated(changed);\n\n if (!this.value && this.defaultValue) {\n this.value = this.defaultValue;\n }\n\n this.applyOptionState();\n }\n\n override updated(changed: PropertyValues): void {\n if (changed.has('value')) {\n this.syncHasValueAttribute();\n this.applyOptionState();\n }\n\n super.updated(changed);\n }\n\n protected override get validationTarget(): HTMLElement | undefined {\n return this.controlInput ?? this.controlElement;\n }\n\n protected override getAriaMirrorTarget(): HTMLElement | null {\n return this.controlInput ?? this.controlElement ?? null;\n }\n\n protected override syncFormValue(): void {\n if (!this.name) {\n this.setFormValue(null);\n return;\n }\n\n this.setFormValue(this.value);\n }\n\n private syncHasValueAttribute(): void {\n this.toggleAttribute('data-has-value', Boolean(this.value));\n }\n\n private refreshOptions(): void {\n this.options = [...this.querySelectorAll('pk-option')] as PkOption[];\n }\n\n private handleOptionsMutation(options: { render?: boolean } = {}): void {\n this.refreshOptions();\n this.applyOptionState();\n\n if (options.render) {\n this.requestUpdate();\n }\n }\n\n private bindPanelEvents(): void {\n const panel = this.panelElement;\n\n if (!panel || this.panelEventTarget === panel) {\n return;\n }\n\n this.unbindPanelEvents();\n this.panelEventTarget = panel;\n panel.addEventListener('pk-option-select', this.handleOptionSelect as EventListener);\n panel.addEventListener('pk-option-highlight', this.handleOptionHighlight as EventListener);\n panel.addEventListener('pk-listbox-keydown', this.handleListboxKeyDownEvent as EventListener);\n }\n\n private unbindPanelEvents(): void {\n if (!this.panelEventTarget) {\n return;\n }\n\n this.panelEventTarget.removeEventListener('pk-option-select', this.handleOptionSelect as EventListener);\n this.panelEventTarget.removeEventListener('pk-option-highlight', this.handleOptionHighlight as EventListener);\n this.panelEventTarget.removeEventListener('pk-listbox-keydown', this.handleListboxKeyDownEvent as EventListener);\n this.panelEventTarget = null;\n }\n\n private isOptionInHiddenGroup(option: PkOption): boolean {\n const group = option.closest('pk-option-group') as PkOptionGroup | null;\n return Boolean(group?.hidden);\n }\n\n private getFilterQuery(): string {\n if (!this.open) {\n return '';\n }\n\n return this.value.trim().toLowerCase();\n }\n\n private get usesAsyncSearch(): boolean {\n return this.async && Boolean(this.fetchOptions);\n }\n\n private getVisibleOptions(): PkOption[] {\n if (this.usesAsyncSearch) {\n return this.options.filter((option) => !this.isOptionInHiddenGroup(option));\n }\n\n const filter = this.getFilterQuery();\n\n return this.options.filter((option) => {\n if (this.isOptionInHiddenGroup(option)) {\n return false;\n }\n\n if (!filter) {\n return true;\n }\n\n return matchesOptionFilter(option, filter, this.filter);\n });\n }\n\n private getEnabledVisibleOptions(): PkOption[] {\n return this.getVisibleOptions().filter((option) => !option.disabled);\n }\n\n private clearAsyncOptionNodes(): void {\n this.querySelectorAll(':scope > pk-option, :scope > pk-option-group, :scope > pk-separator')\n .forEach((node) => node.remove());\n }\n\n private renderAsyncOptionNodes(items: PkAutocompleteAsyncOption[]): void {\n this.clearAsyncOptionNodes();\n\n for (const item of items) {\n const option = document.createElement('pk-option');\n option.value = item.value;\n option.textContent = item.label;\n this.append(option);\n }\n\n this.handleOptionsMutation({ render: true });\n }\n\n private scheduleAsyncFetch(query: string): void {\n this.ensureAsyncFetcher().schedule(query);\n }\n\n private ensureAsyncFetcher(): AsyncOptionFetcher {\n if (!this.asyncFetcher) {\n this.asyncFetcher = new AsyncOptionFetcher(\n () => this.fetchOptions,\n {\n errorLabel: 'autocomplete options',\n onLoading: () => {\n this.asyncLoading = true;\n this.asyncError = null;\n // Drop previous results so loading never stacks under a stale list.\n this.renderAsyncOptionNodes([]);\n },\n onResults: (results) => {\n this.renderAsyncOptionNodes(results);\n },\n onError: (message) => {\n this.asyncError = message;\n },\n onSettled: () => {\n this.asyncLoading = false;\n },\n onEmptyQuery: () => {\n this.asyncLoading = false;\n this.asyncError = null;\n this.renderAsyncOptionNodes([]);\n },\n },\n );\n }\n\n return this.asyncFetcher;\n }\n\n private getAsyncStatusMessage(): string | null {\n if (!this.usesAsyncSearch || !this.open) {\n return null;\n }\n\n if (this.asyncLoading) {\n return this.loadingMessage;\n }\n\n if (this.asyncError) {\n return this.asyncError;\n }\n\n const query = this.value.trim();\n\n if (!query) {\n return this.startTypingMessage;\n }\n\n if (this.getEnabledVisibleOptions().length === 0) {\n return `No matches for \"${query}\".`;\n }\n\n return null;\n }\n\n private applyOptionState(): void {\n const visible = this.getVisibleOptions();\n const filterQuery = this.open ? this.getFilterQuery() : '';\n\n // Freeform: never mark options as the “selected” form value — the text is.\n syncFilteredOptions({\n host: this,\n options: this.options,\n visible,\n listboxId: this.listboxId,\n filterQuery,\n isSelected: () => false,\n });\n\n this.syncValueInput();\n\n if (this.open) {\n this.syncHighlight();\n this.announceFilterResults();\n }\n }\n\n private syncValueInput(): void {\n if (!this.input) {\n return;\n }\n\n this.input.value = this.value;\n this.input.required = this.required;\n }\n\n private resetHighlightedIndexOnOpen(): void {\n this.highlightedIndex = this.autoHighlight ? 0 : -1;\n }\n\n private syncHighlight(): void {\n const enabled = this.getEnabledVisibleOptions();\n\n for (const option of this.options) {\n option.highlighted = false;\n option.focusIndex = -1;\n }\n\n if (enabled.length === 0 || this.highlightedIndex < 0) {\n return;\n }\n\n if (this.highlightedIndex >= enabled.length) {\n this.highlightedIndex = enabled.length - 1;\n }\n\n const highlighted = enabled[this.highlightedIndex];\n\n if (highlighted) {\n highlighted.highlighted = true;\n // Keep focus on the text field; use aria-activedescendant for the option.\n highlighted.focusIndex = -1;\n scrollIntoView(highlighted, this.listScrollContainer, 'vertical', 'auto');\n this.controlInput?.focus({ preventScroll: true });\n }\n }\n\n private getActiveDescendantId(): string | null {\n const highlighted = this.getEnabledVisibleOptions()[this.highlightedIndex];\n return highlighted?.optionId || null;\n }\n\n private announceFilterResults(): void {\n if (!this.liveRegion) {\n this.liveRegion = new LiveRegion('polite');\n }\n\n const count = this.getEnabledVisibleOptions().length;\n const filter = this.getFilterQuery();\n\n if (!filter) {\n return;\n }\n\n this.liveRegion.announce(\n count === 0\n ? `${this.emptyMessage}`\n : `${count} ${count === 1 ? 'result' : 'results'} available`,\n );\n }\n\n private openPanel(): Promise<void> {\n const anchor = this.controlElement;\n\n if (!anchor) {\n return Promise.resolve();\n }\n\n if (this.open) {\n this.controlInput?.focus({ preventScroll: true });\n return Promise.resolve();\n }\n\n if (this.closing) {\n return Promise.resolve();\n }\n\n this.dispatchEvent(new PkShowEvent());\n this.closing = false;\n this.panelAnimated = false;\n this.open = true;\n this.applyOptionState();\n this.resetHighlightedIndexOnOpen();\n\n if (this.usesAsyncSearch) {\n this.asyncError = null;\n // Freeform async: value is the query. Clear stale nodes and show loading\n // immediately when reopening with text so “Searching…” never sits under\n // the previous result list during debounce.\n this.renderAsyncOptionNodes([]);\n const query = this.value.trim();\n this.asyncLoading = Boolean(query);\n this.scheduleAsyncFetch(query);\n }\n\n this.style.setProperty('--pk-autocomplete-anchor-width', `${anchor.getBoundingClientRect().width}px`);\n this.popupElement.active = true;\n\n if (this.panelElement) {\n this.panelElement.hidden = false;\n syncPopupPlacementAnimation(this.panelElement, this.placement);\n }\n\n this.registerDismissHandlers();\n this.syncHighlight();\n this.controlInput?.focus({ preventScroll: true });\n\n return this.updateComplete.then(async () => {\n const placement = await waitForPopupReposition(this.popupElement, this.placement, 300, {\n requireEvent: true,\n });\n\n if (this.panelElement) {\n syncPopupPlacementAnimation(this.panelElement, placement);\n }\n\n this.panelAnimated = true;\n this.bindPanelEvents();\n this.refreshOptions();\n this.controlInput?.focus({ preventScroll: true });\n\n this.dispatchEvent(new PkAfterShowEvent());\n this.dispatchEvent(new CustomEvent('pk-open-change', {\n detail: { open: true },\n bubbles: true,\n composed: true,\n }));\n });\n }\n\n private async closePanel(source: PkOverlaySource = 'unknown'): Promise<void> {\n if (!this.open || this.closing) {\n return;\n }\n\n const hideEvent = new PkHideEvent(source);\n\n if (!this.dispatchEvent(hideEvent)) {\n return;\n }\n\n this.unbindPanelEvents();\n this.closing = true;\n this.panelAnimated = false;\n await waitForPopupContentExitAnimation(this.panelElement);\n\n this.open = false;\n this.closing = false;\n this.panelAnimated = false;\n\n if (this.panelElement) {\n this.panelElement.hidden = true;\n this.panelElement.removeAttribute('data-side');\n }\n\n this.popupElement.active = false;\n this.unregisterDismissHandlers();\n this.applyOptionState();\n\n if (this.usesAsyncSearch) {\n this.asyncFetcher?.cancel();\n this.asyncLoading = false;\n this.asyncError = null;\n this.renderAsyncOptionNodes([]);\n }\n\n if (source !== 'light-dismiss' && source !== 'pointer-dismiss') {\n this.controlInput?.focus({ preventScroll: true });\n } else {\n this.controlInput?.blur();\n }\n\n this.dispatchEvent(new PkAfterHideEvent());\n this.dispatchEvent(new CustomEvent('pk-open-change', {\n detail: { open: false },\n bubbles: true,\n composed: true,\n }));\n }\n\n private registerDismissHandlers(): void {\n registerDismissible(this);\n this.dismissRegistered = true;\n document.addEventListener('pointerdown', this.onDocumentPointerDown, true);\n document.addEventListener('keydown', this.onDocumentKeyDown, true);\n }\n\n private unregisterDismissHandlers(): void {\n if (this.dismissRegistered) {\n unregisterDismissible(this);\n this.dismissRegistered = false;\n }\n\n document.removeEventListener('pointerdown', this.onDocumentPointerDown, true);\n document.removeEventListener('keydown', this.onDocumentKeyDown, true);\n }\n\n private onDocumentPointerDown = (event: PointerEvent): void => {\n if (isPointerInsideOverlay(event, {\n anchor: this.controlElement,\n panel: this.panelElement,\n })) {\n return;\n }\n\n void this.closePanel('light-dismiss');\n };\n\n private onDocumentKeyDown = (event: KeyboardEvent): void => {\n if (!this.open) {\n return;\n }\n\n if (event.key === 'Escape') {\n if (!isTopDismissible(this)) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n void this.closePanel('escape');\n return;\n }\n\n const isListboxKey = LISTBOX_NAVIGATION_KEYS.has(event.key) || isListboxTypeToSelectKey(event);\n\n if (!isListboxKey) {\n return;\n }\n\n const panel = this.panelElement;\n const path = event.composedPath();\n const focusInPortaledPanel = Boolean(panel && path.includes(panel));\n\n if (!focusInPortaledPanel) {\n return;\n }\n\n if (!isEventInsideOverlay(event, {\n anchor: this.controlElement,\n panel,\n })) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.onListboxKeyDown(event);\n };\n\n private handleOptionSelect = (event: CustomEvent<{ value: string }>): void => {\n const { value } = event.detail;\n this.commitValue(value, { close: true });\n };\n\n private handleOptionHighlight = (event: CustomEvent<{ value: string }>): void => {\n if (!this.open) {\n return;\n }\n\n const enabled = this.getEnabledVisibleOptions();\n const index = enabled.findIndex((option) => option.value === event.detail.value);\n\n if (index === -1 || index === this.highlightedIndex) {\n return;\n }\n\n this.highlightedIndex = index;\n this.syncHighlight();\n };\n\n private commitValue(next: string, { close = false, emit = true } = {}): void {\n const changed = this.value !== next;\n this.value = next;\n this.syncHasValueAttribute();\n this.applyOptionState();\n\n if (close) {\n void this.closePanel('api');\n }\n\n if (changed && emit) {\n this.emitValueChange();\n }\n }\n\n private handleClear(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.commitValue('');\n this.dispatchEvent(new PkClearEvent());\n this.controlInput?.focus();\n }\n\n private emitValueChange(): void {\n this.dispatchEvent(new CustomEvent('pk-change', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }));\n\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n\n private handleInput(event: Event): void {\n const next = (event.target as HTMLInputElement).value;\n this.value = next;\n this.syncHasValueAttribute();\n this.highlightedIndex = this.autoHighlight ? 0 : -1;\n this.applyOptionState();\n this.emitValueChange();\n\n if (this.usesAsyncSearch) {\n this.asyncError = null;\n this.scheduleAsyncFetch(next.trim());\n }\n\n if (!this.open) {\n void this.openPanel();\n }\n }\n\n private handleControlMouseDown = (event: MouseEvent): void => {\n if (this.disabled) {\n return;\n }\n\n const path = event.composedPath();\n const isInteractiveChild = path.some((node) => {\n if (!(node instanceof HTMLElement)) {\n return false;\n }\n\n return node.classList.contains('clear-button');\n });\n\n if (isInteractiveChild) {\n return;\n }\n\n const isInput = event.target === this.controlInput;\n\n if (!this.open && !this.closing) {\n if (!isInput) {\n event.preventDefault();\n }\n\n this.controlInput?.focus({ preventScroll: true });\n void this.openPanel();\n return;\n }\n\n if (!isInput) {\n event.preventDefault();\n this.controlInput?.focus({ preventScroll: true });\n }\n };\n\n private handleInputKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.open) {\n event.preventDefault();\n void this.closePanel('escape');\n return;\n }\n\n if (event.key === 'ArrowDown' && !this.open) {\n event.preventDefault();\n void this.openPanel();\n return;\n }\n\n if (!this.open) {\n return;\n }\n\n if (event.key === 'Enter') {\n const enabled = this.getEnabledVisibleOptions();\n\n if (this.highlightedIndex >= 0 && enabled[this.highlightedIndex]) {\n event.preventDefault();\n this.commitValue(enabled[this.highlightedIndex]!.value, { close: true });\n } else {\n void this.closePanel('api');\n }\n\n return;\n }\n\n if (LISTBOX_NAVIGATION_KEYS.has(event.key) && event.key !== 'Enter' && event.key !== 'Escape') {\n this.onListboxKeyDown(event);\n }\n }\n\n private onListboxKeyDown(event: KeyboardEvent): void {\n const enabled = this.getEnabledVisibleOptions() as unknown as HTMLElement[];\n\n this.highlightedIndex = handleListboxKeyDown(event, {\n items: enabled,\n currentIndex: this.highlightedIndex,\n loop: this.loopFocus,\n onSelect: (index) => {\n const option = this.getEnabledVisibleOptions()[index];\n\n if (option) {\n this.commitValue(option.value, { close: true });\n }\n },\n onClose: () => {\n void this.closePanel('escape');\n },\n focusItem: (index) => {\n this.highlightedIndex = index;\n this.syncHighlight();\n },\n });\n }\n\n private handleListboxKeyDownEvent = (event: CustomEvent<{ keyboardEvent: KeyboardEvent }>): void => {\n this.onListboxKeyDown(event.detail.keyboardEvent);\n };\n\n async hide(source: PkOverlaySource = 'api'): Promise<void> {\n await this.closePanel(source);\n }\n\n private renderHostDecorationSlot(name: 'start' | 'end') {\n if (!this.hasSlotController.test(name)) {\n return nothing;\n }\n\n return html`<slot name=${name} part=${name} class=${name === 'start' ? 'control-start' : 'control-end'}></slot>`;\n }\n\n override render() {\n const visibleOptions = this.getEnabledVisibleOptions();\n // Async empty / loading / errors use `async-status` only — do not also paint\n // `emptyMessage` or the panel shows two notices for the same empty result.\n const showEmpty = this.open && !this.usesAsyncSearch && visibleOptions.length === 0;\n const asyncStatus = this.getAsyncStatusMessage();\n const showClear = (this.clearable || this.withClear) && Boolean(this.value) && !this.disabled;\n const activeDescendant = this.open ? this.getActiveDescendantId() : null;\n\n return html`\n <input\n class=\"value-input\"\n part=\"value-input\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n .value=${this.value}\n ?required=${this.required}\n @input=${() => this.updateValidity()}\n />\n <div\n part=\"control\"\n class=${classMap({\n control: true,\n 'is-disabled': this.disabled,\n })}\n data-popup-open=${this.open || this.closing ? '' : nothing}\n @mousedown=${this.handleControlMouseDown}\n >\n ${this.renderHostDecorationSlot('start')}\n <input\n part=\"input\"\n class=\"autocomplete-input control-input\"\n type=\"text\"\n role=\"combobox\"\n id=${this.inputId}\n .value=${this.value}\n placeholder=${this.placeholder || nothing}\n ?disabled=${this.disabled}\n aria-label=${this.ariaLabel ?? nothing}\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-controls=${this.listboxId}\n aria-autocomplete=\"both\"\n aria-activedescendant=${activeDescendant ?? nothing}\n @input=${this.handleInput}\n @keydown=${this.handleInputKeyDown}\n />\n ${this.renderHostDecorationSlot('end')}\n ${showClear\n ? html`\n <button\n type=\"button\"\n class=\"clear-button\"\n part=\"clear-button\"\n aria-label=\"Clear\"\n ?disabled=${this.disabled}\n @click=${this.handleClear}\n >\n <span class=\"clear-button-icon\" aria-hidden=\"true\">${unsafeSVG(XMARK_ICON)}</span>\n </button>\n `\n : nothing}\n </div>\n <pk-popup\n .active=${this.open || this.closing}\n .anchor=${this.controlElement ?? ''}\n .placement=${this.placement}\n .distance=${this.sideOffset}\n .sync=${'width'}\n flip\n shift\n >\n <div\n part=\"panel\"\n class=${classMap({\n panel: true,\n 'pk-popup-content': true,\n closing: this.closing,\n })}\n tabindex=\"-1\"\n ?hidden=${!this.open && !this.closing}\n data-open=${this.panelAnimated && !this.closing ? '' : nothing}\n >\n <div\n part=\"panel-body\"\n class=\"panel-body\"\n id=${this.listboxId}\n role=\"listbox\"\n aria-busy=${this.usesAsyncSearch && this.asyncLoading ? 'true' : nothing}\n >\n <slot></slot>\n ${asyncStatus\n ? html`\n <div part=\"async-status\" class=\"async-status\" role=\"status\">${asyncStatus}</div>\n `\n : nothing}\n ${showEmpty\n ? html`\n <div part=\"empty\" class=\"empty\">${this.emptyMessage}</div>\n `\n : nothing}\n </div>\n </div>\n </pk-popup>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-autocomplete': PkAutocomplete;\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { a as query, i as property, n as PkElement, s as customElement, t as __decorate } from "./decorate-R0X811qp.js";
1
+ import { i as customElement, n as PkElement, t as __decorate } from "./decorate-Br_PE9pq.js";
2
+ import { n as query, t as property } from "./decorators-BkErmuYK.js";
2
3
  import { css, html, nothing } from "lit";
3
4
  //#region src/components/button-group/pk-button-group.styles.ts
4
5
  var pkButtonGroupStyles = css`
@@ -265,8 +266,8 @@ var GROUP_ITEM_LAST = "data-pk-group-item-last";
265
266
  var GROUP_INTERNAL_TRAIL = "data-pk-group-internal-trail";
266
267
  var GROUP_BTN_LAST = "data-pk-group-btn-last";
267
268
  var GROUP_ORIENTATION_ATTR = "data-pk-group-orientation";
268
- var GROUP_SEPARATOR_TAGS = new Set(["PK-SEPARATOR", "PK-BUTTON-GROUP-SEPARATOR"]);
269
- var OVERLAY_WRAPPER_TAGS = new Set(["PK-POPOVER", "PK-DROPDOWN-MENU"]);
269
+ var GROUP_SEPARATOR_TAGS = /* @__PURE__ */ new Set(["PK-SEPARATOR", "PK-BUTTON-GROUP-SEPARATOR"]);
270
+ var OVERLAY_WRAPPER_TAGS = /* @__PURE__ */ new Set(["PK-POPOVER", "PK-DROPDOWN-MENU"]);
270
271
  /** Boolean attribute defaulting to true — absent means on; `separators="false"` opts out. */
271
272
  var separatorsConverter = {
272
273
  fromAttribute(value) {
@@ -297,7 +298,7 @@ function getCornerTargets(element, surface) {
297
298
  }
298
299
  function collectSyncTargets(element) {
299
300
  const surface = getLayoutTarget(element);
300
- return [...new Set([...getLayoutTargets(element), ...getCornerTargets(element, surface)])];
301
+ return [.../* @__PURE__ */ new Set([...getLayoutTargets(element), ...getCornerTargets(element, surface)])];
301
302
  }
302
303
  function clearLayoutAttrs(element) {
303
304
  for (const target of collectSyncTargets(element)) {
@@ -346,8 +347,10 @@ var PkButtonGroup = class PkButtonGroup extends PkElement {
346
347
  this.setAttribute("aria-orientation", this.orientation);
347
348
  this.scheduleSyncGroupLayout();
348
349
  }
349
- if (changed.has("label")) if (this.label) this.setAttribute("aria-label", this.label);
350
- else this.removeAttribute("aria-label");
350
+ if (changed.has("label")) {
351
+ if (this.label) this.setAttribute("aria-label", this.label);
352
+ else this.removeAttribute("aria-label");
353
+ }
351
354
  if (changed.has("separators") || changed.has("exclusive")) this.scheduleSyncGroupLayout();
352
355
  }
353
356
  scheduleSyncGroupLayout() {
@@ -418,4 +421,4 @@ PkButtonGroup = __decorate([customElement("pk-button-group")], PkButtonGroup);
418
421
  //#endregion
419
422
  export { PkButtonGroup as t };
420
423
 
421
- //# sourceMappingURL=pk-button-group-DBdKK_2_.js.map
424
+ //# sourceMappingURL=pk-button-group-BY12Lbk7.js.map