@swisspost/design-system-components 10.4.0 → 10.6.0

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 (340) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/breakpoints-Kruvy8Dm.js +47 -0
  3. package/dist/cjs/{create-validator-decorator-BtgLWaMJ.js → create-validator-decorator-Cy5yN6u9.js} +1 -1
  4. package/dist/cjs/{event-from-CwMw19f8.js → event-from-CTcQxB9-.js} +19 -13
  5. package/dist/cjs/{index-CW10QvjR.js → index-B3PXzvDk.js} +1 -1
  6. package/dist/cjs/{breakpoints-B0Olgvgc.js → index-CggFmZ8n.js} +0 -42
  7. package/dist/cjs/loader.cjs.js +2 -2
  8. package/dist/cjs/{one-of-vJeW7S4_.js → one-of-CRFrfihj.js} +1 -1
  9. package/dist/cjs/{package-CL8OSAS4.js → package-pKyFPwiA.js} +1 -1
  10. package/dist/cjs/{pattern-Zmn3wpyp.js → pattern-D329DFcf.js} +1 -1
  11. package/dist/cjs/post-accordion_2.cjs.entry.js +7 -7
  12. package/dist/cjs/post-autocomplete.cjs.entry.js +70 -55
  13. package/dist/cjs/post-avatar.cjs.entry.js +7 -7
  14. package/dist/cjs/post-back-to-top.cjs.entry.js +25 -13
  15. package/dist/cjs/post-banner.cjs.entry.js +6 -13
  16. package/dist/cjs/post-breadcrumb-item.cjs.entry.js +42 -12
  17. package/dist/cjs/post-breadcrumbs.cjs.entry.js +222 -71
  18. package/dist/cjs/post-closebutton_14.cjs.entry.js +431 -233
  19. package/dist/cjs/post-collapsible_2.cjs.entry.js +9 -9
  20. package/dist/cjs/post-components.cjs.js +2 -2
  21. package/dist/cjs/post-date-picker.cjs.entry.js +18 -16
  22. package/dist/cjs/post-footer.cjs.entry.js +8 -8
  23. package/dist/cjs/post-linkarea.cjs.entry.js +3 -3
  24. package/dist/cjs/post-listbox-option.cjs.entry.js +4 -4
  25. package/dist/cjs/post-listbox.cjs.entry.js +6 -6
  26. package/dist/cjs/post-number-input.cjs.entry.js +7 -6
  27. package/dist/cjs/post-pagination.cjs.entry.js +6 -6
  28. package/dist/cjs/post-popover-trigger.cjs.entry.js +8 -8
  29. package/dist/cjs/post-popover.cjs.entry.js +11 -11
  30. package/dist/cjs/post-progressbar.cjs.entry.js +5 -5
  31. package/dist/cjs/post-rating.cjs.entry.js +7 -7
  32. package/dist/cjs/post-side-navigation-trigger.cjs.entry.js +8 -8
  33. package/dist/cjs/post-side-navigation.cjs.entry.js +9 -9
  34. package/dist/cjs/post-stepper-item.cjs.entry.js +3 -3
  35. package/dist/cjs/post-stepper.cjs.entry.js +8 -8
  36. package/dist/cjs/post-tab-item.cjs.entry.js +7 -7
  37. package/dist/cjs/post-tab-panel.cjs.entry.js +7 -7
  38. package/dist/cjs/post-tabs.cjs.entry.js +9 -9
  39. package/dist/cjs/post-tooltip-trigger.cjs.entry.js +8 -8
  40. package/dist/cjs/post-tooltip.cjs.entry.js +6 -6
  41. package/dist/cjs/{required-DRnPokVn.js → required-DhAEd0c7.js} +1 -1
  42. package/dist/cjs/{type-CNcU_-B2.js → type-2Ma9dvHs.js} +1 -1
  43. package/dist/cjs/{url-DgJ3lXQz.js → url-DePscsTj.js} +1 -1
  44. package/dist/collection/components/post-autocomplete/post-autocomplete.js +65 -50
  45. package/dist/collection/components/post-back-to-top/post-back-to-top.js +19 -7
  46. package/dist/collection/components/post-banner/post-banner.js +2 -17
  47. package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.css +1 -1
  48. package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +59 -4
  49. package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.css +1 -1
  50. package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.js +249 -71
  51. package/dist/collection/components/post-closebutton/post-closebutton.js +7 -8
  52. package/dist/collection/components/post-collapsible/post-collapsible.js +1 -1
  53. package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +2 -2
  54. package/dist/collection/components/post-date-picker/native-mask-element.js +1 -1
  55. package/dist/collection/components/post-date-picker/post-date-picker.js +11 -9
  56. package/dist/collection/components/post-footer/post-footer.js +2 -2
  57. package/dist/collection/components/post-header/post-header.js +2 -2
  58. package/dist/collection/components/post-icon/post-icon.js +1 -1
  59. package/dist/collection/components/post-language-menu/post-language-menu.js +1 -1
  60. package/dist/collection/components/post-linkarea/post-linkarea.js +1 -1
  61. package/dist/collection/components/post-listbox/post-listbox.js +2 -2
  62. package/dist/collection/components/post-listbox-option/post-listbox-option.js +2 -2
  63. package/dist/collection/components/post-logo/post-logo.js +1 -1
  64. package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +1 -1
  65. package/dist/collection/components/post-megadropdown/post-megadropdown.js +3 -3
  66. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +1 -1
  67. package/dist/collection/components/post-menu/post-menu.js +23 -8
  68. package/dist/collection/components/post-menu-item/post-menu-item.css +1 -1
  69. package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +1 -1
  70. package/dist/collection/components/post-number-input/post-number-input.js +2 -2
  71. package/dist/collection/components/post-popover/post-popover.css +1 -1
  72. package/dist/collection/components/post-popover/post-popover.js +4 -4
  73. package/dist/collection/components/post-popover-trigger/post-popover-trigger.js +3 -3
  74. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +71 -43
  75. package/dist/collection/components/post-progressbar/post-progressbar.js +1 -1
  76. package/dist/collection/components/post-rating/post-rating.js +1 -1
  77. package/dist/collection/components/post-side-navigation/post-side-navigation.css +1 -1
  78. package/dist/collection/components/post-side-navigation/post-side-navigation.js +1 -1
  79. package/dist/collection/components/post-side-navigation-trigger/post-side-navigation-trigger.js +1 -1
  80. package/dist/collection/components/post-stepper/post-stepper.js +1 -1
  81. package/dist/collection/components/post-stepper-item/post-stepper-item.js +1 -1
  82. package/dist/collection/components/post-tab-item/post-tab-item.js +2 -2
  83. package/dist/collection/components/post-tab-panel/post-tab-panel.js +1 -1
  84. package/dist/collection/components/post-tabs/post-tabs.css +1 -1
  85. package/dist/collection/components/post-tabs/post-tabs.js +2 -2
  86. package/dist/collection/components/post-togglebutton/post-togglebutton.js +1 -1
  87. package/dist/collection/components/post-tooltip/post-tooltip.js +2 -2
  88. package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.js +2 -2
  89. package/dist/collection/utils/breakpoints.js +11 -9
  90. package/dist/collection/utils/closable-target.js +38 -0
  91. package/dist/collection/utils/event-from.js +18 -13
  92. package/dist/collection/utils/floating-ui.js +72 -0
  93. package/dist/collection/utils/index.js +1 -0
  94. package/dist/components/breakpoints.js +1 -1
  95. package/dist/components/event-from.js +1 -1
  96. package/dist/components/index2.js +1 -0
  97. package/dist/components/package.js +1 -1
  98. package/dist/components/post-autocomplete.js +1 -1
  99. package/dist/components/post-back-to-top.js +1 -1
  100. package/dist/components/post-banner.js +1 -1
  101. package/dist/components/post-breadcrumb-item.js +1 -1
  102. package/dist/components/post-breadcrumbs.js +1 -1
  103. package/dist/components/post-closebutton2.js +1 -1
  104. package/dist/components/post-collapsible-trigger2.js +1 -1
  105. package/dist/components/post-collapsible2.js +1 -1
  106. package/dist/components/post-date-picker.js +1 -1
  107. package/dist/components/post-footer.js +1 -1
  108. package/dist/components/post-header.js +1 -1
  109. package/dist/components/post-icon2.js +1 -1
  110. package/dist/components/post-linkarea.js +1 -1
  111. package/dist/components/post-listbox-option.js +1 -1
  112. package/dist/components/post-listbox.js +1 -1
  113. package/dist/components/post-logo.js +1 -1
  114. package/dist/components/post-mainnavigation.js +1 -1
  115. package/dist/components/post-megadropdown-trigger.js +1 -1
  116. package/dist/components/post-megadropdown.js +1 -1
  117. package/dist/components/post-menu-item2.js +1 -1
  118. package/dist/components/post-menu-trigger2.js +1 -1
  119. package/dist/components/post-menu2.js +1 -1
  120. package/dist/components/post-number-input.js +1 -1
  121. package/dist/components/post-popover-trigger.js +1 -1
  122. package/dist/components/post-popover.js +1 -1
  123. package/dist/components/post-popovercontainer2.js +1 -1
  124. package/dist/components/post-progressbar.js +1 -1
  125. package/dist/components/post-rating.js +1 -1
  126. package/dist/components/post-side-navigation-trigger.js +1 -1
  127. package/dist/components/post-side-navigation.js +1 -1
  128. package/dist/components/post-stepper-item.js +1 -1
  129. package/dist/components/post-stepper.js +1 -1
  130. package/dist/components/post-tab-item.js +1 -1
  131. package/dist/components/post-tab-panel.js +1 -1
  132. package/dist/components/post-tabs.js +1 -1
  133. package/dist/components/post-togglebutton2.js +1 -1
  134. package/dist/components/post-tooltip-trigger.js +1 -1
  135. package/dist/components/post-tooltip.js +1 -1
  136. package/dist/components/react/index.js +1 -1
  137. package/dist/components/react/{p-Bwko4UKh.js → p-3RU9XwVO.js} +1 -1
  138. package/dist/components/react/p-5LuCes5o.js +1 -0
  139. package/dist/components/react/p-B1TcktiB.js +1 -0
  140. package/dist/components/react/{p-4wtxqxXu.js → p-B2jsM_Ov.js} +1 -1
  141. package/dist/components/react/p-BEcxHjuM.js +1 -0
  142. package/dist/components/react/p-BN2dfUQ0.js +1 -0
  143. package/dist/components/react/p-BPUhha1U.js +1 -0
  144. package/dist/{post-components/p-C-lLRsYC.js → components/react/p-BdLRXQqY.js} +1 -1
  145. package/dist/components/react/{p-BSb74xQy.js → p-Bnb_TyDh.js} +1 -1
  146. package/dist/components/react/p-CVVXnYLU.js +1 -0
  147. package/dist/components/react/{p-9RCG8BWM.js → p-CcDLIogT.js} +1 -1
  148. package/dist/components/react/{p-CSmrQ__L.js → p-CdggfEzz.js} +1 -1
  149. package/dist/components/react/p-CnN4Jdtv.js +1 -0
  150. package/dist/components/react/{p-D-imniYA.js → p-CzsG0uCA.js} +1 -1
  151. package/dist/components/react/p-DeO0rZ1T.js +1 -0
  152. package/dist/components/react/p-DffT6evQ.js +1 -0
  153. package/dist/components/react/p-T8T3po4z.js +1 -0
  154. package/dist/components/react/p-WXzzOdnl.js +1 -0
  155. package/dist/components/react/p-bR8vy6-s.js +1 -0
  156. package/dist/components/react/{p-B1kYo1K9.js → p-m1-sOx5T.js} +1 -1
  157. package/dist/components/react/post-accordion-item.js +1 -1
  158. package/dist/components/react/post-accordion.js +1 -1
  159. package/dist/components/react/post-autocomplete.js +1 -1
  160. package/dist/components/react/post-avatar.js +1 -1
  161. package/dist/components/react/post-back-to-top.js +1 -1
  162. package/dist/components/react/post-banner.js +1 -1
  163. package/dist/components/react/post-breadcrumb-item.js +1 -1
  164. package/dist/components/react/post-breadcrumbs.js +1 -1
  165. package/dist/components/react/post-closebutton.js +1 -1
  166. package/dist/components/react/post-collapsible-trigger.js +1 -1
  167. package/dist/components/react/post-collapsible.js +1 -1
  168. package/dist/components/react/post-date-picker.js +1 -1
  169. package/dist/components/react/post-footer.js +1 -1
  170. package/dist/components/react/post-header.js +1 -1
  171. package/dist/components/react/post-icon.js +1 -1
  172. package/dist/components/react/post-language-menu-item.js +1 -1
  173. package/dist/components/react/post-language-menu.js +1 -1
  174. package/dist/components/react/post-linkarea.js +1 -1
  175. package/dist/components/react/post-listbox-option.js +1 -1
  176. package/dist/components/react/post-listbox.js +1 -1
  177. package/dist/components/react/post-logo.js +1 -1
  178. package/dist/components/react/post-mainnavigation.js +1 -1
  179. package/dist/components/react/post-megadropdown-trigger.js +1 -1
  180. package/dist/components/react/post-megadropdown.js +1 -1
  181. package/dist/components/react/post-menu-item.js +1 -1
  182. package/dist/components/react/post-menu-trigger.js +1 -1
  183. package/dist/components/react/post-menu.js +1 -1
  184. package/dist/components/react/post-number-input.js +1 -1
  185. package/dist/components/react/post-pagination.js +1 -1
  186. package/dist/components/react/post-popover-trigger.js +1 -1
  187. package/dist/components/react/post-popover.js +1 -1
  188. package/dist/components/react/post-popovercontainer.js +1 -1
  189. package/dist/components/react/post-progressbar.js +1 -1
  190. package/dist/components/react/post-rating.js +1 -1
  191. package/dist/components/react/post-side-navigation-trigger.js +1 -1
  192. package/dist/components/react/post-side-navigation.js +1 -1
  193. package/dist/components/react/post-stepper-item.js +1 -1
  194. package/dist/components/react/post-stepper.js +1 -1
  195. package/dist/components/react/post-tab-item.js +1 -1
  196. package/dist/components/react/post-tab-panel.js +1 -1
  197. package/dist/components/react/post-tabs.js +1 -1
  198. package/dist/components/react/post-togglebutton.js +1 -1
  199. package/dist/components/react/post-tooltip-trigger.js +1 -1
  200. package/dist/components/react/post-tooltip.js +1 -1
  201. package/dist/docs.json +118 -27
  202. package/dist/esm/breakpoints-I1j7a0bW.js +45 -0
  203. package/dist/esm/{create-validator-decorator-CNUaQboh.js → create-validator-decorator-C2XlYkNB.js} +1 -1
  204. package/dist/esm/{event-from-rEfV4v4a.js → event-from-BEcxHjuM.js} +19 -14
  205. package/dist/esm/{index-sn7oKSwC.js → index-BjziJWh2.js} +1 -1
  206. package/dist/esm/{breakpoints-BQ3HlJPr.js → index-bR8vy6-s.js} +1 -42
  207. package/dist/esm/loader.js +3 -3
  208. package/dist/esm/{one-of-C6Ironyj.js → one-of-Do1iao-k.js} +1 -1
  209. package/dist/esm/{package-tTf1w3A9.js → package-T8T3po4z.js} +1 -1
  210. package/dist/esm/{pattern-57oD--q3.js → pattern-BZDucOTq.js} +1 -1
  211. package/dist/esm/post-accordion_2.entry.js +7 -7
  212. package/dist/esm/post-autocomplete.entry.js +70 -55
  213. package/dist/esm/post-avatar.entry.js +7 -7
  214. package/dist/esm/post-back-to-top.entry.js +25 -13
  215. package/dist/esm/post-banner.entry.js +6 -13
  216. package/dist/esm/post-breadcrumb-item.entry.js +42 -12
  217. package/dist/esm/post-breadcrumbs.entry.js +222 -71
  218. package/dist/esm/post-closebutton_14.entry.js +430 -232
  219. package/dist/esm/post-collapsible_2.entry.js +9 -9
  220. package/dist/esm/post-components.js +3 -3
  221. package/dist/esm/post-date-picker.entry.js +18 -16
  222. package/dist/esm/post-footer.entry.js +8 -8
  223. package/dist/esm/post-linkarea.entry.js +3 -3
  224. package/dist/esm/post-listbox-option.entry.js +4 -4
  225. package/dist/esm/post-listbox.entry.js +6 -6
  226. package/dist/esm/post-number-input.entry.js +6 -5
  227. package/dist/esm/post-pagination.entry.js +6 -6
  228. package/dist/esm/post-popover-trigger.entry.js +8 -8
  229. package/dist/esm/post-popover.entry.js +11 -11
  230. package/dist/esm/post-progressbar.entry.js +5 -5
  231. package/dist/esm/post-rating.entry.js +7 -7
  232. package/dist/esm/post-side-navigation-trigger.entry.js +8 -8
  233. package/dist/esm/post-side-navigation.entry.js +9 -9
  234. package/dist/esm/post-stepper-item.entry.js +3 -3
  235. package/dist/esm/post-stepper.entry.js +8 -8
  236. package/dist/esm/post-tab-item.entry.js +7 -7
  237. package/dist/esm/post-tab-panel.entry.js +7 -7
  238. package/dist/esm/post-tabs.entry.js +9 -9
  239. package/dist/esm/post-tooltip-trigger.entry.js +8 -8
  240. package/dist/esm/post-tooltip.entry.js +6 -6
  241. package/dist/esm/{required-D2rl2XZJ.js → required-B0X7uy13.js} +1 -1
  242. package/dist/esm/{type-CGynDrfh.js → type-CF1dOg6D.js} +1 -1
  243. package/dist/esm/{url-1wyUfUv-.js → url-BL7d6iWZ.js} +1 -1
  244. package/dist/post-components/{p-167191e5.entry.js → p-0e922531.entry.js} +1 -1
  245. package/dist/post-components/{p-cf6eacab.entry.js → p-1ec27142.entry.js} +1 -1
  246. package/dist/post-components/{p-da217dbc.entry.js → p-2005eb98.entry.js} +1 -1
  247. package/dist/post-components/p-2cff5b3a.entry.js +1 -0
  248. package/dist/post-components/p-53bd2128.entry.js +1 -0
  249. package/dist/post-components/{p-212c71e4.entry.js → p-59b30e90.entry.js} +1 -1
  250. package/dist/post-components/{p-beed9922.entry.js → p-60550edb.entry.js} +1 -1
  251. package/dist/post-components/p-655ded00.entry.js +1 -0
  252. package/dist/post-components/p-76cc3c9a.entry.js +1 -0
  253. package/dist/post-components/{p-3149d866.entry.js → p-8012cc3b.entry.js} +1 -1
  254. package/dist/post-components/p-819c93de.entry.js +1 -0
  255. package/dist/post-components/p-840acd3c.entry.js +1 -0
  256. package/dist/post-components/p-87b1034f.entry.js +1 -0
  257. package/dist/post-components/p-88f754e9.entry.js +1 -0
  258. package/dist/post-components/p-9S_5_Zh8.js +1 -0
  259. package/dist/post-components/p-BEcxHjuM.js +1 -0
  260. package/dist/post-components/p-BYfu3J2D.js +1 -0
  261. package/dist/post-components/p-BjziJWh2.js +2 -0
  262. package/dist/post-components/p-BoYe-VVx.js +1 -0
  263. package/dist/post-components/p-CbbADNiv.js +1 -0
  264. package/dist/post-components/p-DgnQe03V.js +1 -0
  265. package/dist/post-components/p-DlKbBdcP.js +1 -0
  266. package/dist/post-components/p-I1j7a0bW.js +1 -0
  267. package/dist/post-components/p-T8T3po4z.js +1 -0
  268. package/dist/post-components/{p-a01ea634.entry.js → p-a32d3050.entry.js} +1 -1
  269. package/dist/post-components/p-b4229624.entry.js +1 -0
  270. package/dist/post-components/{p-96bf6b01.entry.js → p-b9faa76b.entry.js} +1 -1
  271. package/dist/post-components/p-bR8vy6-s.js +1 -0
  272. package/dist/post-components/{p-70fbe469.entry.js → p-ba1b4ba0.entry.js} +1 -1
  273. package/dist/post-components/p-c0ae13b7.entry.js +1 -0
  274. package/dist/post-components/p-c9dcdebb.entry.js +1 -0
  275. package/dist/post-components/p-ccf8020b.entry.js +1 -0
  276. package/dist/post-components/p-cd68d3a2.entry.js +1 -0
  277. package/dist/post-components/p-cdc7b8d3.entry.js +1 -0
  278. package/dist/post-components/{p-1cf5bc67.entry.js → p-d7c9a969.entry.js} +1 -1
  279. package/dist/post-components/p-db11f781.entry.js +1 -0
  280. package/dist/post-components/{p-0323b0f3.entry.js → p-dc285087.entry.js} +1 -1
  281. package/dist/post-components/{p-e8d9723e.entry.js → p-de6f1816.entry.js} +1 -1
  282. package/dist/post-components/p-dec8bd99.entry.js +1 -0
  283. package/dist/post-components/p-f9a8ee94.entry.js +1 -0
  284. package/dist/post-components/post-components.css +2 -2
  285. package/dist/post-components/post-components.esm.js +1 -1
  286. package/dist/types/components/post-autocomplete/post-autocomplete.d.ts +18 -6
  287. package/dist/types/components/post-back-to-top/post-back-to-top.d.ts +2 -1
  288. package/dist/types/components/post-banner/post-banner.d.ts +0 -1
  289. package/dist/types/components/post-breadcrumb-item/post-breadcrumb-item.d.ts +12 -1
  290. package/dist/types/components/post-breadcrumbs/post-breadcrumbs.d.ts +54 -14
  291. package/dist/types/components/post-closebutton/post-closebutton.d.ts +1 -1
  292. package/dist/types/components/post-menu/post-menu.d.ts +1 -0
  293. package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +8 -5
  294. package/dist/types/components.d.ts +38 -7
  295. package/dist/types/utils/breakpoints.d.ts +1 -0
  296. package/dist/types/utils/closable-target.d.ts +5 -0
  297. package/dist/types/utils/event-from.d.ts +8 -0
  298. package/dist/types/utils/floating-ui.d.ts +12 -0
  299. package/dist/types/utils/index.d.ts +1 -0
  300. package/hydrate/index.js +1085 -665
  301. package/hydrate/index.mjs +1085 -665
  302. package/package.json +31 -22
  303. package/dist/components/react/p-BXqGI600.js +0 -1
  304. package/dist/components/react/p-B_WnO-QF.js +0 -1
  305. package/dist/components/react/p-BaB8wJvk.js +0 -1
  306. package/dist/components/react/p-Bji_4dfL.js +0 -1
  307. package/dist/components/react/p-CX2E_IXB.js +0 -1
  308. package/dist/components/react/p-CwmQwirr.js +0 -1
  309. package/dist/components/react/p-D17tCsFk.js +0 -1
  310. package/dist/components/react/p-DD1c_IgL.js +0 -1
  311. package/dist/components/react/p-Df31eVdi.js +0 -1
  312. package/dist/components/react/p-I0dqoE80.js +0 -1
  313. package/dist/components/react/p-rEfV4v4a.js +0 -1
  314. package/dist/components/react/p-tTf1w3A9.js +0 -1
  315. package/dist/post-components/p-06ddd73b.entry.js +0 -1
  316. package/dist/post-components/p-090e52db.entry.js +0 -1
  317. package/dist/post-components/p-292a9784.entry.js +0 -1
  318. package/dist/post-components/p-2de6fe62.entry.js +0 -1
  319. package/dist/post-components/p-39ff8127.entry.js +0 -1
  320. package/dist/post-components/p-3a968b19.entry.js +0 -1
  321. package/dist/post-components/p-472_tiaS.js +0 -1
  322. package/dist/post-components/p-58422de1.entry.js +0 -1
  323. package/dist/post-components/p-5873a90c.entry.js +0 -1
  324. package/dist/post-components/p-986fa1c1.entry.js +0 -1
  325. package/dist/post-components/p-BQ3HlJPr.js +0 -1
  326. package/dist/post-components/p-B_FOhVrp.js +0 -1
  327. package/dist/post-components/p-CeNqFJV7.js +0 -1
  328. package/dist/post-components/p-DYDdaLz-.js +0 -1
  329. package/dist/post-components/p-DoNhJ2D7.js +0 -1
  330. package/dist/post-components/p-b1d2384a.entry.js +0 -1
  331. package/dist/post-components/p-b535fc10.entry.js +0 -1
  332. package/dist/post-components/p-b99e6621.entry.js +0 -1
  333. package/dist/post-components/p-bf83a3fb.entry.js +0 -1
  334. package/dist/post-components/p-c46bc56f.entry.js +0 -1
  335. package/dist/post-components/p-ce8132a9.entry.js +0 -1
  336. package/dist/post-components/p-d72e830b.entry.js +0 -1
  337. package/dist/post-components/p-e08d26f4.entry.js +0 -1
  338. package/dist/post-components/p-rEfV4v4a.js +0 -1
  339. package/dist/post-components/p-sn7oKSwC.js +0 -2
  340. package/dist/post-components/p-tTf1w3A9.js +0 -1
package/hydrate/index.js CHANGED
@@ -5889,182 +5889,24 @@ function Url() {
5889
5889
  });
5890
5890
  }
5891
5891
 
5892
- /* eslint-disable no-undefined,no-param-reassign,no-shadow */
5893
-
5894
- /**
5895
- * Throttle execution of a function. Especially useful for rate limiting
5896
- * execution of handlers on events like resize and scroll.
5897
- *
5898
- * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)
5899
- * are most useful.
5900
- * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,
5901
- * as-is, to `callback` when the throttled-function is executed.
5902
- * @param {object} [options] - An object to configure options.
5903
- * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds
5904
- * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed
5905
- * one final time after the last throttled-function call. (After the throttled-function has not been called for
5906
- * `delay` milliseconds, the internal counter is reset).
5907
- * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback
5908
- * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that
5909
- * callback will never executed if both noLeading = true and noTrailing = true.
5910
- * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is
5911
- * false (at end), schedule `callback` to execute after `delay` ms.
5912
- *
5913
- * @returns {Function} A new, throttled, function.
5914
- */
5915
- function throttle (delay, callback, options) {
5916
- var _ref = options || {},
5917
- _ref$noTrailing = _ref.noTrailing,
5918
- noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,
5919
- _ref$noLeading = _ref.noLeading,
5920
- noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,
5921
- _ref$debounceMode = _ref.debounceMode,
5922
- debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;
5923
- /*
5924
- * After wrapper has stopped being called, this timeout ensures that
5925
- * `callback` is executed at the proper times in `throttle` and `end`
5926
- * debounce modes.
5927
- */
5928
- var timeoutID;
5929
- var cancelled = false;
5930
-
5931
- // Keep track of the last time `callback` was executed.
5932
- var lastExec = 0;
5933
-
5934
- // Function to clear existing timeout
5935
- function clearExistingTimeout() {
5936
- if (timeoutID) {
5937
- clearTimeout(timeoutID);
5938
- }
5939
- }
5940
-
5941
- // Function to cancel next exec
5942
- function cancel(options) {
5943
- var _ref2 = options || {},
5944
- _ref2$upcomingOnly = _ref2.upcomingOnly,
5945
- upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;
5946
- clearExistingTimeout();
5947
- cancelled = !upcomingOnly;
5948
- }
5949
-
5950
- /*
5951
- * The `wrapper` function encapsulates all of the throttling / debouncing
5952
- * functionality and when executed will limit the rate at which `callback`
5953
- * is executed.
5954
- */
5955
- function wrapper() {
5956
- for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {
5957
- arguments_[_key] = arguments[_key];
5958
- }
5959
- var self = this;
5960
- var elapsed = Date.now() - lastExec;
5961
- if (cancelled) {
5962
- return;
5963
- }
5964
-
5965
- // Execute `callback` and update the `lastExec` timestamp.
5966
- function exec() {
5967
- lastExec = Date.now();
5968
- callback.apply(self, arguments_);
5969
- }
5970
-
5971
- /*
5972
- * If `debounceMode` is true (at begin) this is used to clear the flag
5973
- * to allow future `callback` executions.
5974
- */
5975
- function clear() {
5976
- timeoutID = undefined;
5977
- }
5978
- if (!noLeading && debounceMode && !timeoutID) {
5979
- /*
5980
- * Since `wrapper` is being called for the first time and
5981
- * `debounceMode` is true (at begin), execute `callback`
5982
- * and noLeading != true.
5983
- */
5984
- exec();
5985
- }
5986
- clearExistingTimeout();
5987
- if (debounceMode === undefined && elapsed > delay) {
5988
- if (noLeading) {
5989
- /*
5990
- * In throttle mode with noLeading, if `delay` time has
5991
- * been exceeded, update `lastExec` and schedule `callback`
5992
- * to execute after `delay` ms.
5993
- */
5994
- lastExec = Date.now();
5995
- if (!noTrailing) {
5996
- timeoutID = setTimeout(debounceMode ? clear : exec, delay);
5997
- }
5998
- } else {
5999
- /*
6000
- * In throttle mode without noLeading, if `delay` time has been exceeded, execute
6001
- * `callback`.
6002
- */
6003
- exec();
6004
- }
6005
- } else if (noTrailing !== true) {
6006
- /*
6007
- * In trailing throttle mode, since `delay` time has not been
6008
- * exceeded, schedule `callback` to execute `delay` ms after most
6009
- * recent execution.
6010
- *
6011
- * If `debounceMode` is true (at begin), schedule `clear` to execute
6012
- * after `delay` ms.
6013
- *
6014
- * If `debounceMode` is false (at end), schedule `callback` to
6015
- * execute after `delay` ms.
6016
- */
6017
- timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);
6018
- }
6019
- }
6020
- wrapper.cancel = cancel;
6021
-
6022
- // Return the wrapper function.
6023
- return wrapper;
6024
- }
6025
-
6026
- /* eslint-disable no-undefined */
6027
-
6028
- /**
6029
- * Debounce execution of a function. Debouncing, unlike throttling,
6030
- * guarantees that a function is only executed a single time, either at the
6031
- * very beginning of a series of calls, or at the very end.
6032
- *
6033
- * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
6034
- * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,
6035
- * to `callback` when the debounced-function is executed.
6036
- * @param {object} [options] - An object to configure options.
6037
- * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds
6038
- * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.
6039
- * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).
6040
- *
6041
- * @returns {Function} A new, debounced function.
6042
- */
6043
- function debounce$1 (delay, callback, options) {
6044
- var _ref = {},
6045
- _ref$atBegin = _ref.atBegin,
6046
- atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;
6047
- return throttle(delay, callback, {
6048
- debounceMode: atBegin !== false
6049
- });
6050
- }
6051
-
6052
5892
  class Breakpoint {
6053
5893
  constructor() {
6054
5894
  this.breakpoints = [
6055
- { key: 'xl', device: 'desktop', minWidth: 1280 },
6056
- { key: 'lg', device: 'desktop', minWidth: 1024 },
6057
- { key: 'md', device: 'tablet', minWidth: 780 },
6058
- { key: 'sm', device: 'tablet', minWidth: 600 },
6059
- { key: 'xs', device: 'mobile', minWidth: 0 },
5895
+ { key: 'xl', device: 'desktop', minWidth: 1280, mediaQuery: '(min-width: 1280px)' },
5896
+ { key: 'lg', device: 'desktop', minWidth: 1024, mediaQuery: '(min-width: 1024px)' },
5897
+ { key: 'md', device: 'tablet', minWidth: 780, mediaQuery: '(min-width: 780px)' },
5898
+ { key: 'sm', device: 'tablet', minWidth: 600, mediaQuery: '(min-width: 600px)' },
5899
+ { key: 'xs', device: 'mobile', minWidth: 0, mediaQuery: '(min-width: 0px)' },
6060
5900
  ];
6061
5901
  this.resizeObserver = globalThis.ResizeObserver
6062
5902
  ? new ResizeObserver(() => this.updateCurrentBreakpoint())
6063
5903
  : null;
6064
- this.updateCurrentBreakpoint = throttle(50, (options = { emitEvents: true }) => {
5904
+ this.updateCurrentBreakpoint = (options = { emitEvents: true }) => {
6065
5905
  const previousBreakpoint = this.currentBreakpoint;
6066
5906
  const newBreakpoint = this.breakpoints.find(breakpoint => {
6067
- return breakpoint.minWidth <= innerWidth;
5907
+ return globalThis.matchMedia
5908
+ ? globalThis.matchMedia(breakpoint.mediaQuery).matches
5909
+ : breakpoint.minWidth <= document.documentElement.clientWidth;
6068
5910
  });
6069
5911
  if (!newBreakpoint)
6070
5912
  return;
@@ -6072,9 +5914,10 @@ class Breakpoint {
6072
5914
  if (!options.emitEvents)
6073
5915
  return;
6074
5916
  Object.keys(this.currentBreakpoint)
5917
+ .filter(key => key !== 'mediaQuery')
6075
5918
  .filter(key => !previousBreakpoint || this.currentBreakpoint[key] !== previousBreakpoint[key])
6076
5919
  .forEach((key) => this.dispatchEvent(key));
6077
- });
5920
+ };
6078
5921
  if (this.resizeObserver) {
6079
5922
  this.updateCurrentBreakpoint({ emitEvents: false });
6080
5923
  this.resizeObserver.observe(document.body);
@@ -6090,37 +5933,6 @@ class Breakpoint {
6090
5933
  }
6091
5934
  const breakpoint = new Breakpoint();
6092
5935
 
6093
- /**
6094
- * Invoke the `componentOnReady` method if it is available, simulate it otherwise
6095
- * @see https://stenciljs.com/docs/api#componentonready
6096
- */
6097
- function componentOnReady(el) {
6098
- if (typeof el.componentOnReady === 'function') {
6099
- return el.componentOnReady();
6100
- }
6101
- else {
6102
- return new Promise(resolve => customOnReady(() => {
6103
- resolve(el);
6104
- }));
6105
- }
6106
- }
6107
- function customOnReady(callback) {
6108
- if (typeof requestAnimationFrame === 'function') {
6109
- return requestAnimationFrame(callback);
6110
- }
6111
- return setTimeout(callback);
6112
- }
6113
-
6114
- function debounce(callback, timeout = 200) {
6115
- let id;
6116
- return (...args) => {
6117
- if (id) {
6118
- clearTimeout(id);
6119
- }
6120
- id = setTimeout(callback, timeout, ...args);
6121
- };
6122
- }
6123
-
6124
5936
  /**
6125
5937
  * Validates if an event should be processed based on target and nesting criteria
6126
5938
  * @param event - The event to validate
@@ -6212,32 +6024,106 @@ function EventFrom(tag, option) {
6212
6024
  }
6213
6025
  /**
6214
6026
  * Traverses up the DOM (including crossing shadow DOM boundaries) to find the closest ancestor
6215
- * that matches the specified tag name.
6216
- * @param element - The starting element
6217
- * @param tagName - The tag name to match (e.g., 'post-accordion')
6027
+ * matching the given predicate.
6028
+ * @param start - The starting element
6029
+ * @param predicate - A type guard used to test each ancestor
6218
6030
  * @returns The closest matching ancestor or null if none found
6219
6031
  */
6220
- function findClosestParentWithTag(element, tagName) {
6221
- let current = element;
6032
+ function findClosestAcrossShadow(start, predicate) {
6033
+ let current = start;
6222
6034
  while (current) {
6223
- if (current.localName === tagName) {
6035
+ if (predicate(current)) {
6224
6036
  return current;
6225
6037
  }
6226
- // Check regular parent first
6227
6038
  if (current.parentElement) {
6228
6039
  current = current.parentElement;
6229
6040
  }
6230
- // If no parentElement, check if we're in a shadow root
6231
- else if (current.parentNode instanceof ShadowRoot) {
6232
- current = current.parentNode.host;
6233
- }
6234
- // No more parents to check
6235
6041
  else {
6236
- current = null;
6042
+ // Duck-typed ShadowRoot check (nodeType 11 + host) instead of `instanceof ShadowRoot`,
6043
+ // since some test environments (e.g. JSDOM) only partially implement it.
6044
+ const parent = current.parentNode;
6045
+ if (parent !== null && parent.nodeType === 11 && 'host' in parent) {
6046
+ current = parent.host;
6047
+ }
6048
+ else {
6049
+ current = null;
6050
+ }
6237
6051
  }
6238
6052
  }
6239
6053
  return null;
6240
6054
  }
6055
+ function findClosestParentWithTag(element, tagName) {
6056
+ return findClosestAcrossShadow(element, (el) => el.localName === tagName);
6057
+ }
6058
+
6059
+ const CLOSABLE_TARGETS = [
6060
+ {
6061
+ predicate: el => el.localName === 'post-banner',
6062
+ close: el => void el.dismiss(),
6063
+ },
6064
+ {
6065
+ predicate: el => el.localName === 'post-popover',
6066
+ close: el => void el.hide(),
6067
+ },
6068
+ {
6069
+ predicate: el => el.localName === 'post-popovercontainer',
6070
+ close: el => void el.hide(),
6071
+ },
6072
+ {
6073
+ predicate: el => el.localName === 'post-collapsible',
6074
+ close: el => void el.toggle(false),
6075
+ },
6076
+ {
6077
+ predicate: el => el.localName === 'post-accordion-item',
6078
+ close: el => void el.toggle(false),
6079
+ },
6080
+ {
6081
+ predicate: el => el.localName === 'dialog',
6082
+ close: el => el.close(),
6083
+ },
6084
+ {
6085
+ predicate: el => el.hasAttribute('popover'),
6086
+ close: el => el.togglePopover(false),
6087
+ },
6088
+ ];
6089
+ function findClosableTarget(start) {
6090
+ const el = findClosestAcrossShadow(start, (el) => CLOSABLE_TARGETS.some(t => t.predicate(el)));
6091
+ if (!el)
6092
+ return null;
6093
+ const match = CLOSABLE_TARGETS.find(t => t.predicate(el));
6094
+ return { element: el, close: () => match.close(el) };
6095
+ }
6096
+
6097
+ /**
6098
+ * Invoke the `componentOnReady` method if it is available, simulate it otherwise
6099
+ * @see https://stenciljs.com/docs/api#componentonready
6100
+ */
6101
+ function componentOnReady(el) {
6102
+ if (typeof el.componentOnReady === 'function') {
6103
+ return el.componentOnReady();
6104
+ }
6105
+ else {
6106
+ return new Promise(resolve => customOnReady(() => {
6107
+ resolve(el);
6108
+ }));
6109
+ }
6110
+ }
6111
+ function customOnReady(callback) {
6112
+ if (typeof requestAnimationFrame === 'function') {
6113
+ return requestAnimationFrame(callback);
6114
+ }
6115
+ return setTimeout(callback);
6116
+ }
6117
+
6118
+ function debounce$1(callback, timeout = 200) {
6119
+ let id;
6120
+ return (...args) => {
6121
+ if (id) {
6122
+ clearTimeout(id);
6123
+ }
6124
+ id = setTimeout(callback, timeout, ...args);
6125
+ };
6126
+ }
6241
6127
 
6242
6128
  /**
6243
6129
  * getRootNode() can only be used after the element has been attached to the document!
@@ -6419,7 +6305,7 @@ function repeat(callback, { delayMs = 300, intervalMs = 100 } = {}) {
6419
6305
  };
6420
6306
  }
6421
6307
 
6422
- const version$1 = "10.4.0";
6308
+ const version$1 = "10.6.0";
6423
6309
 
6424
6310
  const postAccordionCss = () => `:host{display:block;border-block-start:var(--post-device-border-width-default) var(--post-core-border-style-solid) var(--post-scheme-color-interactive-primary-enabled-stroke)}`;
6425
6311
 
@@ -6640,44 +6526,31 @@ class PostAutocomplete {
6640
6526
  constructor(hostRef) {
6641
6527
  registerInstance(this, hostRef);
6642
6528
  this.postFilteringEvent = createEvent(this, "postFilteringEvent");
6643
- this.debouncedHandleInput = debounce((event) => {
6529
+ this.debouncedHandleInput = debounce$1((event) => {
6644
6530
  void this.handleInput(event);
6645
6531
  }, 250);
6646
6532
  /** Number of characters to type before filtering methods are called */
6647
6533
  this.filterThreshold = 0;
6648
6534
  /** Show or hide the clear button */
6649
6535
  this.clearable = false;
6650
- this.inputValue = '';
6651
- this.handleFocus = () => {
6652
- if (this.filterThreshold !== 0)
6653
- return;
6654
- if (this.inputElement && this.inputElement.value.trim() !== '')
6655
- return;
6656
- this.postFilteringEvent.emit('');
6536
+ /** Whether the listbox is currently expanded */
6537
+ this.expanded = false;
6538
+ /** The value of the last run query */
6539
+ this.lastQuery = '';
6540
+ /** The value of the selected listbox option */
6541
+ this.selectedValue = null;
6542
+ this.handleClick = async () => {
6543
+ await this.runQuery('', true);
6657
6544
  };
6658
- this.handleOnBlur = () => {
6659
- this.inputElement.value = this.inputValue;
6660
- this.listBoxElement.filter('');
6545
+ this.handleBlur = () => {
6546
+ this.restoreSelectedValue();
6661
6547
  this.hideListBox();
6662
6548
  };
6663
6549
  this.handleInput = async (event) => {
6664
6550
  if (!this.listBoxElement)
6665
6551
  return;
6666
6552
  const value = event.target.value.trim();
6667
- const query = value.length >= this.filterThreshold ? value : '';
6668
- // Allow for consuming parent to handle filtering (e.g. for async data) and prevent default filtering behavior
6669
- const { defaultPrevented } = this.postFilteringEvent.emit(query && query.length >= this.filterThreshold ? query : '');
6670
- if (defaultPrevented)
6671
- return;
6672
- await this.listBoxElement.filter(query);
6673
- if (query) {
6674
- this.showListBox();
6675
- this.announceCount();
6676
- }
6677
- else {
6678
- this.inputValue = '';
6679
- this.clearAnnouncement();
6680
- }
6553
+ await this.runQuery(value.length >= this.filterThreshold ? value : '');
6681
6554
  };
6682
6555
  this.handleKeyDown = (event) => {
6683
6556
  const { key, altKey } = event;
@@ -6719,8 +6592,7 @@ class PostAutocomplete {
6719
6592
  };
6720
6593
  this.handleOptionSelected = (e) => {
6721
6594
  const value = e.detail;
6722
- this.inputElement.value = value;
6723
- this.inputValue = value;
6595
+ this.updateSelectedValue(value);
6724
6596
  this.hideListBox();
6725
6597
  };
6726
6598
  this.handleOptionActive = (e) => {
@@ -6732,23 +6604,9 @@ class PostAutocomplete {
6732
6604
  this.inputElement.removeAttribute('aria-activedescendant');
6733
6605
  }
6734
6606
  };
6735
- this.hideListBox = () => {
6736
- this.clearAnnouncement();
6737
- this.listBoxElement.hide();
6738
- this.inputElement.ariaExpanded = 'false';
6739
- this.host.removeAttribute('open');
6740
- this.inputElement.removeAttribute('aria-activedescendant');
6741
- };
6742
- this.showListBox = async () => {
6743
- await this.listBoxElement.show();
6744
- this.inputElement.ariaExpanded = 'true';
6745
- this.host.setAttribute('open', '');
6746
- this.announceCount();
6747
- };
6748
- this.clearInput = () => {
6607
+ this.handleClear = () => {
6749
6608
  if (this.inputElement) {
6750
- this.inputElement.value = '';
6751
- this.inputValue = '';
6609
+ this.updateSelectedValue(null);
6752
6610
  this.listBoxElement.clearSelection();
6753
6611
  this.hideListBox();
6754
6612
  }
@@ -6795,18 +6653,16 @@ class PostAutocomplete {
6795
6653
  if (this.inputElement) {
6796
6654
  this.inputElement.addEventListener('input', this.debouncedHandleInput);
6797
6655
  this.inputElement.addEventListener('keydown', this.handleKeyDown);
6798
- this.inputElement.addEventListener('blur', this.handleOnBlur);
6799
- this.inputElement.addEventListener('click', this.showListBox);
6800
- this.inputElement.addEventListener('focus', this.handleFocus);
6656
+ this.inputElement.addEventListener('blur', this.handleBlur);
6657
+ this.inputElement.addEventListener('click', this.handleClick);
6801
6658
  }
6802
6659
  }
6803
6660
  detachInputListeners() {
6804
6661
  if (this.inputElement) {
6805
6662
  this.inputElement.removeEventListener('input', this.debouncedHandleInput);
6806
6663
  this.inputElement.removeEventListener('keydown', this.handleKeyDown);
6807
- this.inputElement.removeEventListener('blur', this.handleOnBlur);
6808
- this.inputElement.removeEventListener('click', this.showListBox);
6809
- this.inputElement.removeEventListener('focus', this.handleFocus);
6664
+ this.inputElement.removeEventListener('blur', this.handleBlur);
6665
+ this.inputElement.removeEventListener('click', this.handleClick);
6810
6666
  }
6811
6667
  }
6812
6668
  attachListboxListeners() {
@@ -6831,8 +6687,53 @@ class PostAutocomplete {
6831
6687
  const count = this.listBoxElement.querySelectorAll('post-listbox-option:not([hidden])').length;
6832
6688
  this.outputElement.textContent = this.textAvailableSuggestions.replace('{count}', String(count));
6833
6689
  }
6690
+ async showListBox() {
6691
+ await this.listBoxElement.show();
6692
+ this.expanded = true;
6693
+ this.inputElement.ariaExpanded = 'true';
6694
+ this.host.setAttribute('open', '');
6695
+ this.announceCount();
6696
+ }
6697
+ async hideListBox() {
6698
+ this.clearAnnouncement();
6699
+ this.expanded = false;
6700
+ this.host.removeAttribute('open');
6701
+ this.inputElement.ariaExpanded = 'false';
6702
+ this.inputElement.removeAttribute('aria-activedescendant');
6703
+ await this.listBoxElement.hide();
6704
+ }
6705
+ updateSelectedValue(value) {
6706
+ this.selectedValue = value;
6707
+ this.inputElement.value = this.selectedValue ?? '';
6708
+ }
6709
+ /** Restores the input to the value of the selected option. */
6710
+ restoreSelectedValue() {
6711
+ this.inputElement.value = this.selectedValue ?? '';
6712
+ }
6713
+ /** Runs a query, filtering the listbox options and reflecting the outcome. */
6714
+ async runQuery(query, alwaysExpand = false) {
6715
+ // Prevent running the same query twice.
6716
+ if (this.lastQuery !== (this.lastQuery = query)) {
6717
+ await this.filterListBox(query);
6718
+ }
6719
+ // Always update the count if the listbox is expanded.
6720
+ if (this.expanded) {
6721
+ this.announceCount();
6722
+ }
6723
+ // Automatically show the listbox if the query is non-empty.
6724
+ else if (alwaysExpand || query) {
6725
+ await this.showListBox();
6726
+ }
6727
+ }
6728
+ /** Filters the listbox options based on the query, delegating to the consuming parent when possible. */
6729
+ async filterListBox(query) {
6730
+ // Allow for consuming parent to handle filtering (e.g. for async data) and prevent default filtering behavior.
6731
+ if (this.postFilteringEvent.emit(query).defaultPrevented)
6732
+ return;
6733
+ await this.listBoxElement?.filter(query);
6734
+ }
6834
6735
  render() {
6835
- return (hAsync(Host, { key: 'ef5b821b235c6e6a19e9da612a7c3fbc33408e44', "data-version": version$1 }, hAsync("slot", { key: 'a7855fd0e992be6c4fd737e9b7f29c77c1ec8e7f' }), this.clearable && this.inputValue && (hAsync("button", { key: '16a690d24deb1ac1cd50c85cea857ad3e5736fac', type: "button", class: "autocomplete-clear", onClick: this.clearInput }, hAsync("post-icon", { key: 'f254bd331fb15ca6cb5a32ac2a5f5a25cb8e81ea', "aria-hidden": "true", name: "closex" }))), hAsync("post-icon", { key: '87faa8280bb58683262ec40dbec383478c5999f5', "aria-hidden": "true", class: "autocomplete-icon", name: "chevronDown" }), hAsync("output", { key: '9f8ad0d40d1e12f611f4f2e9e14058dbcca3892e', class: "visually-hidden", ref: el => (this.outputElement = el) })));
6736
+ return (hAsync(Host, { key: '8b386930fe5484cd73395224b5f0c5daea867b33', "data-version": version$1 }, hAsync("slot", { key: '9aa5a34de2cf18c3d6342069fc2b4ce52baac0d3' }), this.clearable && this.selectedValue !== null && (hAsync("button", { key: '90b459fffc29066667ca4656b6871275d061d3fd', type: "button", class: "autocomplete-clear", onClick: this.handleClear }, hAsync("post-icon", { key: '419de2b608f1638b14aed086f8e2c6064ae634bc', "aria-hidden": "true", name: "closex" }))), hAsync("post-icon", { key: '56b7dd986023a0e46d902020b923ae525c88bef1', "aria-hidden": "true", class: "autocomplete-icon", name: "chevronDown" }), hAsync("output", { key: '6ef02d0baf03c7f562ba6d5c95918e4a7ae1214f', class: "visually-hidden", ref: el => (this.outputElement = el) })));
6836
6737
  }
6837
6738
  get host() { return getElement(this); }
6838
6739
  static get style() { return postAutocompleteCss(); }
@@ -6844,7 +6745,7 @@ class PostAutocomplete {
6844
6745
  "clearable": [516],
6845
6746
  "listbox": [513],
6846
6747
  "textAvailableSuggestions": [513, "text-available-suggestions"],
6847
- "inputValue": [32]
6748
+ "selectedValue": [32]
6848
6749
  },
6849
6750
  "$listeners$": undefined,
6850
6751
  "$lazyBundleId$": "-",
@@ -7119,12 +7020,23 @@ class PostBackToTop {
7119
7020
  return window.scrollY > window.innerHeight;
7120
7021
  }
7121
7022
  /*Watch for changes in belowFold to show/hide the back to top button*/
7122
- watchBelowFold(newValue) {
7123
- if (newValue) {
7124
- fadeSlide(this.host, 'in', { translate: this.translateY, fill: 'forwards' });
7023
+ async watchBelowFold(newValue) {
7024
+ this.currentAnimation?.cancel();
7025
+ // host needs to be visible before we can animate, in or out
7026
+ // hidden state gets recalculated after the animation, based on belowFold
7027
+ this.host.hidden = false;
7028
+ this.currentAnimation = fadeSlide(this.host, newValue ? 'in' : 'out', {
7029
+ translate: this.translateY,
7030
+ fill: 'forwards',
7031
+ });
7032
+ try {
7033
+ await this.currentAnimation.finished;
7034
+ // only hide once the fade-out finished and we're still not below fold
7035
+ if (!this.belowFold)
7036
+ this.host.hidden = true;
7125
7037
  }
7126
- else {
7127
- fadeSlide(this.host, 'out', { translate: this.translateY, fill: 'forwards' });
7038
+ catch {
7039
+ // animation got canceled, nothing to do
7128
7040
  }
7129
7041
  }
7130
7042
  scrollToTop() {
@@ -7166,16 +7078,17 @@ class PostBackToTop {
7166
7078
  // Set the initial state
7167
7079
  componentWillLoad() {
7168
7080
  this.belowFold = this.isBelowFold();
7081
+ this.host.hidden = !this.belowFold;
7169
7082
  }
7170
7083
  componentDidLoad() {
7171
- window.addEventListener('scroll', this.handleScroll, false);
7084
+ window.addEventListener('scroll', this.handleScroll, { passive: true });
7172
7085
  this.animateButton();
7173
7086
  }
7174
7087
  disconnectedCallback() {
7175
7088
  window.removeEventListener('scroll', this.handleScroll);
7176
7089
  }
7177
7090
  render() {
7178
- return (hAsync(Host, { key: '3d976e4e1a8ac4b72041369d5667c55d915d7118', "data-version": version$1 }, hAsync("button", { key: '7ceb4953248ca934a905ec63444934e9e6c09e43', class: "back-to-top", "aria-hidden": this.belowFold ? 'false' : 'true', tabindex: this.belowFold ? '0' : '-1', onClick: this.scrollToTop }, hAsync("post-icon", { key: '89a2bc9a8278fb45d3fb915ec096ee94b3841edd', "aria-hidden": "true", name: "arrowup" }), hAsync("span", { key: 'fc2517fba7599f37c3054b638afd6b9b2ba7e32a', class: "visually-hidden" }, this.textBackToTop))));
7091
+ return (hAsync(Host, { key: '149a8afee36c12130b3e503c4da5cffdaa3f86b5', "data-version": version$1 }, hAsync("button", { key: '4e291c5cfaa55bb6a68f436af570d83377436a3a', class: "back-to-top", onClick: this.scrollToTop }, hAsync("post-icon", { key: 'c25e8d12cf6f751b368010ad2d82534fa95adf86', "aria-hidden": "true", name: "arrowup" }), hAsync("span", { key: 'e16d1247a5ab7e39629e4bec7307ee562c589f7e', class: "visually-hidden" }, this.textBackToTop))));
7179
7092
  }
7180
7093
  get host() { return getElement(this); }
7181
7094
  static get watchers() { return {
@@ -7298,14 +7211,11 @@ class PostBanner {
7298
7211
  this.postDismissed.emit();
7299
7212
  this.host.remove();
7300
7213
  }
7301
- onCloseButtonClick() {
7302
- void this.dismiss();
7303
- }
7304
7214
  checkContent() {
7305
7215
  this.hasActions = this.host.querySelectorAll('[slot="actions"]').length > 0;
7306
7216
  }
7307
7217
  render() {
7308
- return (hAsync(Host, { key: 'afa4834733c7e9d985d2102a3e421f09f94b44ba', "data-version": version$1, role: "alert", "data-color-scheme": "light" }, hAsync("slot", { key: '39dfccec7bf829ff354bac467a9b399e003ce473', name: "close-button" }), hAsync("div", { key: 'e6dfc60165185da4384c4143153ee34db1299088', class: "post-banner-content" }, hAsync("slot", { key: '9fc1e8e81cf396eb1ae1e5dfff7f04ccc6443986', name: "heading" }), hAsync("slot", { key: 'e7d21db6f7feb1507c612319c3d56595b797a3c4' }), this.hasActions && (hAsync("div", { key: 'd4229d09accb5cfb2a096c44ca523a132da4755d', class: "actions" }, hAsync("slot", { key: 'b01633122bd45df2f95b7ee5e4694a83aceb68bd', name: "actions" }))))));
7218
+ return (hAsync(Host, { key: '890eea914f07f31f64c9e1b01fca94e824a019bc', "data-version": version$1, role: "alert", "data-color-scheme": "light" }, hAsync("slot", { key: 'd4ac9c3714979cde7bba7554fbe1886d2cf75701', name: "close-button" }), hAsync("div", { key: 'a097570719b709a3b67aa7152701edbf1174ace0', class: "post-banner-content" }, hAsync("slot", { key: 'df12b0e63ac4cf4152c196eaad071774be4d7b88', name: "heading" }), hAsync("slot", { key: 'a5e376800525119dc47815b9977936fa3966e087' }), this.hasActions && (hAsync("div", { key: '6a0cc7f82873bcfde5109ed9e6bfe8255e30b19c', class: "actions" }, hAsync("slot", { key: '11b1d289705cb9d1d96b20b4fcea2b923bfd184a', name: "actions" }))))));
7309
7219
  }
7310
7220
  get host() { return getElement(this); }
7311
7221
  static get style() { return postBannerCss(); }
@@ -7317,7 +7227,7 @@ class PostBanner {
7317
7227
  "hasActions": [32],
7318
7228
  "dismiss": [64]
7319
7229
  },
7320
- "$listeners$": [[0, "click", "onCloseButtonClick"]],
7230
+ "$listeners$": undefined,
7321
7231
  "$lazyBundleId$": "-",
7322
7232
  "$attrsToReflect$": [["type", "type"]]
7323
7233
  }; }
@@ -7325,13 +7235,10 @@ class PostBanner {
7325
7235
  __decorate$w([
7326
7236
  OneOf(BANNER_TYPES)
7327
7237
  ], PostBanner.prototype, "type", void 0);
7328
- __decorate$w([
7329
- EventFrom('post-closebutton', { allowDescendants: true })
7330
- ], PostBanner.prototype, "onCloseButtonClick", null);
7331
7238
 
7332
7239
  const VARIANTS = ['listitem', 'menuitem'];
7333
7240
 
7334
- const postBreadcrumbItemCss = () => `a{-webkit-text-decoration:var(--post-core-text-decoration-underline);text-decoration:var(--post-core-text-decoration-underline);border-radius:var(--post-device-border-radius-focus);color:var(--post-current-fg)}a:hover{color:var(--post-scheme-color-interactive-primary-hover-fg1)}a{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}a:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){a:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){a:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){a:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){a,a:focus{color:LinkText !important}a:hover{text-decoration-thickness:2px}a:visited{color:VisitedText}a.btn:not(.btn-link){border-color:ButtonBorder !important}a.btn.btn-tertiary.px-0{border:0 !important}a.btn.btn-tertiary.px-0:not(:hover){text-decoration:underline}}:host(:not([variant=menuitem])){display:flex;align-items:flex-start;padding-block:var(--post-device-spacing-padding-block-6);gap:var(--post-device-spacing-gap-inline-5)}:host(:not([variant=menuitem])) :is(button,a){display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-color:rgba(0,0,0,0);border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-size:var(--post-device-font-size-6);font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;font:inherit;padding:unset;border:unset;color:var(--post-scheme-color-interactive-primary-enabled-fg1);border-radius:var(--post-device-border-radius-focus);text-decoration:var(--post-core-text-decoration-none)}:host(:not([variant=menuitem])) :is(button,a):not(:disabled):hover{text-decoration:none}:host(:not([variant=menuitem])) :is(button,a):disabled{border-style:var(--post-core-border-style-dash);cursor:unset}:host(:not([variant=menuitem])) :is(button,a){outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}:host(:not([variant=menuitem])) :is(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host(:not([variant=menuitem])) :is(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){:host(:not([variant=menuitem])) :is(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host(:not([variant=menuitem])) :is(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host(:not([variant=menuitem])) :is(button,a){border-width:1px !important;transition:none}:host(:not([variant=menuitem])) :is(button,a):is(button){background-color:ButtonFace !important;border-color:ButtonBorder !important}}:host(:not([variant=menuitem])) :is(button,a):hover{color:var(--post-scheme-color-interactive-primary-hover-fg1);text-decoration:var(--post-core-text-decoration-underline)}:host(:not([variant=menuitem]))::before{mask-image:var(--post-icon-chevronright);background-color:currentColor;flex:0 0 auto;content:"";display:block;height:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);margin-block:calc(var(--post-device-spacing-padding-35) - 1*var(--post-device-spacing-padding-block-6));margin-inline:var(--post-core-dimension-4)}:root,:host{--post-icon-chevronright:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzPjxzeW1ib2wgaWQ9ImktY2hldnJvbnJpZ2h0Ij48c3ltYm9sIGlkPSJzMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTUuMzggMTRjLS4xOSAwLS4zOC0uMDctLjUzLS4yMmEuNzU0Ljc1NCAwIDAgMSAwLTEuMDZMOS41NyA4IDQuODUgMy4yOGMtLjI5LS4yOS0uMjktLjc3IDAtMS4wNnMuNzctLjI5IDEuMDYgMEwxMS42OSA4bC01Ljc4IDUuNzhjLS4xNS4xNS0uMzQuMjItLjUzLjIyIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iczI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik04LjA3IDIwLjcyYy0uMjIgMC0uNDUtLjA4LS42Mi0uMjZhLjg4Ljg4IDAgMCAxIDAtMS4yNGw3LjI2LTcuMjZMNy40NSA0LjdhLjg4Ljg4IDAgMCAxIDAtMS4yNGMuMzQtLjM0LjktLjM0IDEuMjQgMGw4LjUgOC41LTguNDkgOC40OWMtLjE3LjE3LS40LjI2LS42Mi4yNloiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHBhdGggZD0iTTEwLjc2IDI3LjVjLS4yNiAwLS41MS0uMS0uNzEtLjI5YS45OTYuOTk2IDAgMCAxIDAtMS40MWw5Ljc5LTkuNzktOS43OS05LjgxYS45OTYuOTk2IDAgMSAxIDEuNDEtMS40MUwyMi42NyAxNiAxMS40NiAyNy4yMWMtLjIuMi0uNDUuMjktLjcxLjI5WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM0MCIgdmlld0JveD0iMCAwIDQwIDQwIj48cGF0aCBkPSJNMTMuNSAzNC4yMmExLjEyMyAxLjEyMyAwIDAgMS0uOC0xLjkybDEyLjMzLTEyLjMzTDEyLjcgNy42M2MtLjQ0LS40NC0uNDQtMS4xNSAwLTEuNTlzMS4xNS0uNDQgMS41OSAwbDEzLjkzIDEzLjkzTDE0LjMgMzMuODljLS4yMi4yMi0uNTEuMzMtLjguMzMiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCI+PHBhdGggZD0iTTE2LjE0IDQxYy0uMzIgMC0uNjQtLjEyLS44OC0uMzdhMS4yNSAxLjI1IDAgMCAxIDAtMS43N2wxNC44Ny0xNC44N0wxNS4yNSA5LjExYy0uNDktLjQ5LS40OS0xLjI4IDAtMS43N3MxLjI4LS40OSAxLjc3IDBsMTYuNjQgMTYuNjQtMTYuNjMgMTYuNjNjLS4yNC4yNC0uNTYuMzctLjg4LjM3WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM2NCIgdmlld0JveD0iMCAwIDY0IDY0Ij48cGF0aCBkPSJNMjEuNTEgNTQuNGExLjM3NiAxLjM3NiAwIDAgMS0uOTctMi4zNWwyMC4wMy0yMC4wMy0yMC4wNC0yMC4wM2MtLjU0LS41NC0uNTQtMS40MSAwLTEuOTVzMS40MS0uNTQgMS45NSAwbDIxLjk4IDIxLjk5TDIyLjQ5IDU0Yy0uMjcuMjctLjYyLjQtLjk3LjRaIi8+PC9zeW1ib2w+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczE2LCBub25lKSIgaHJlZj0iI3MxNiIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXMyNCwgbm9uZSkiIGhyZWY9IiNzMjQiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zMzIsIG5vbmUpIiBocmVmPSIjczMyIi8+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczQwLCBub25lKSIgaHJlZj0iI3M0MCIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXM0OCwgbm9uZSkiIGhyZWY9IiNzNDgiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zNjQsIG5vbmUpIiBocmVmPSIjczY0Ii8+PC9zeW1ib2w+PC9kZWZzPjxzdHlsZT5AbWVkaWEgKG1heC13aWR0aDogMjMuOThweCkge2d7LS1zMTY6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogMjRweCkgYW5kIChtYXgtd2lkdGg6IDMxLjk4cHgpIHtney0tczI0OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDMycHgpIGFuZCAobWF4LXdpZHRoOiAzOS45OHB4KSB7Z3stLXMzMjpibG9jazt9fUBtZWRpYSAobWluLXdpZHRoOiA0MHB4KSBhbmQgKG1heC13aWR0aDogNDcuOThweCkge2d7LS1zNDA6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogNDhweCkgYW5kIChtYXgtd2lkdGg6IDYzLjk4cHgpIHtney0tczQ4OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDY0cHgpIHtney0tczY0OmJsb2NrO319PC9zdHlsZT48Zz48dXNlIGhyZWY9IiNpLWNoZXZyb25yaWdodCIvPjwvZz48L3N2Zz4=")}:is(a,span){white-space:var(--post-breadcrumb-item-wrap, normal) !important;overflow-wrap:anywhere;hyphens:auto;line-break:strict}:host([selected]:not([selected=false])){display:flex;align-items:flex-start;padding-block:var(--post-device-spacing-padding-block-6);gap:var(--post-device-spacing-gap-inline-5)}:host([selected]:not([selected=false])) :is(button,a){display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-color:rgba(0,0,0,0);border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-size:var(--post-device-font-size-6);font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;font:inherit;padding:unset;border:unset;color:var(--post-scheme-color-interactive-primary-enabled-fg1);border-radius:var(--post-device-border-radius-focus);text-decoration:var(--post-core-text-decoration-none)}:host([selected]:not([selected=false])) :is(button,a):not(:disabled):hover{text-decoration:none}:host([selected]:not([selected=false])) :is(button,a):disabled{border-style:var(--post-core-border-style-dash);cursor:unset}:host([selected]:not([selected=false])) :is(button,a){outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}:host([selected]:not([selected=false])) :is(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host([selected]:not([selected=false])) :is(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){:host([selected]:not([selected=false])) :is(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host([selected]:not([selected=false])) :is(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host([selected]:not([selected=false])) :is(button,a){border-width:1px !important;transition:none}:host([selected]:not([selected=false])) :is(button,a):is(button){background-color:ButtonFace !important;border-color:ButtonBorder !important}}:host([selected]:not([selected=false])) :is(button,a):hover{color:var(--post-scheme-color-interactive-primary-hover-fg1);text-decoration:var(--post-core-text-decoration-underline)}:host([selected]:not([selected=false]))::before{mask-image:var(--post-icon-chevronright);background-color:currentColor;flex:0 0 auto;content:"";display:block;height:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);margin-block:calc(var(--post-device-spacing-padding-35) - 1*var(--post-device-spacing-padding-block-6));margin-inline:var(--post-core-dimension-4)}:root,:host{--post-icon-chevronright:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzPjxzeW1ib2wgaWQ9ImktY2hldnJvbnJpZ2h0Ij48c3ltYm9sIGlkPSJzMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTUuMzggMTRjLS4xOSAwLS4zOC0uMDctLjUzLS4yMmEuNzU0Ljc1NCAwIDAgMSAwLTEuMDZMOS41NyA4IDQuODUgMy4yOGMtLjI5LS4yOS0uMjktLjc3IDAtMS4wNnMuNzctLjI5IDEuMDYgMEwxMS42OSA4bC01Ljc4IDUuNzhjLS4xNS4xNS0uMzQuMjItLjUzLjIyIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iczI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik04LjA3IDIwLjcyYy0uMjIgMC0uNDUtLjA4LS42Mi0uMjZhLjg4Ljg4IDAgMCAxIDAtMS4yNGw3LjI2LTcuMjZMNy40NSA0LjdhLjg4Ljg4IDAgMCAxIDAtMS4yNGMuMzQtLjM0LjktLjM0IDEuMjQgMGw4LjUgOC41LTguNDkgOC40OWMtLjE3LjE3LS40LjI2LS42Mi4yNloiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHBhdGggZD0iTTEwLjc2IDI3LjVjLS4yNiAwLS41MS0uMS0uNzEtLjI5YS45OTYuOTk2IDAgMCAxIDAtMS40MWw5Ljc5LTkuNzktOS43OS05LjgxYS45OTYuOTk2IDAgMSAxIDEuNDEtMS40MUwyMi42NyAxNiAxMS40NiAyNy4yMWMtLjIuMi0uNDUuMjktLjcxLjI5WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM0MCIgdmlld0JveD0iMCAwIDQwIDQwIj48cGF0aCBkPSJNMTMuNSAzNC4yMmExLjEyMyAxLjEyMyAwIDAgMS0uOC0xLjkybDEyLjMzLTEyLjMzTDEyLjcgNy42M2MtLjQ0LS40NC0uNDQtMS4xNSAwLTEuNTlzMS4xNS0uNDQgMS41OSAwbDEzLjkzIDEzLjkzTDE0LjMgMzMuODljLS4yMi4yMi0uNTEuMzMtLjguMzMiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCI+PHBhdGggZD0iTTE2LjE0IDQxYy0uMzIgMC0uNjQtLjEyLS44OC0uMzdhMS4yNSAxLjI1IDAgMCAxIDAtMS43N2wxNC44Ny0xNC44N0wxNS4yNSA5LjExYy0uNDktLjQ5LS40OS0xLjI4IDAtMS43N3MxLjI4LS40OSAxLjc3IDBsMTYuNjQgMTYuNjQtMTYuNjMgMTYuNjNjLS4yNC4yNC0uNTYuMzctLjg4LjM3WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM2NCIgdmlld0JveD0iMCAwIDY0IDY0Ij48cGF0aCBkPSJNMjEuNTEgNTQuNGExLjM3NiAxLjM3NiAwIDAgMS0uOTctMi4zNWwyMC4wMy0yMC4wMy0yMC4wNC0yMC4wM2MtLjU0LS41NC0uNTQtMS40MSAwLTEuOTVzMS40MS0uNTQgMS45NSAwbDIxLjk4IDIxLjk5TDIyLjQ5IDU0Yy0uMjcuMjctLjYyLjQtLjk3LjRaIi8+PC9zeW1ib2w+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczE2LCBub25lKSIgaHJlZj0iI3MxNiIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXMyNCwgbm9uZSkiIGhyZWY9IiNzMjQiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zMzIsIG5vbmUpIiBocmVmPSIjczMyIi8+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczQwLCBub25lKSIgaHJlZj0iI3M0MCIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXM0OCwgbm9uZSkiIGhyZWY9IiNzNDgiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zNjQsIG5vbmUpIiBocmVmPSIjczY0Ii8+PC9zeW1ib2w+PC9kZWZzPjxzdHlsZT5AbWVkaWEgKG1heC13aWR0aDogMjMuOThweCkge2d7LS1zMTY6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogMjRweCkgYW5kIChtYXgtd2lkdGg6IDMxLjk4cHgpIHtney0tczI0OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDMycHgpIGFuZCAobWF4LXdpZHRoOiAzOS45OHB4KSB7Z3stLXMzMjpibG9jazt9fUBtZWRpYSAobWluLXdpZHRoOiA0MHB4KSBhbmQgKG1heC13aWR0aDogNDcuOThweCkge2d7LS1zNDA6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogNDhweCkgYW5kIChtYXgtd2lkdGg6IDYzLjk4cHgpIHtney0tczQ4OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDY0cHgpIHtney0tczY0OmJsb2NrO319PC9zdHlsZT48Zz48dXNlIGhyZWY9IiNpLWNoZXZyb25yaWdodCIvPjwvZz48L3N2Zz4=")}:host([selected]:not([selected=false])) :is(a,span){color:var(--post-scheme-color-interactive-primary-selected-fg1);font-weight:var(--post-device-font-weight-bold);text-decoration:var(--post-core-text-decoration-none)}`;
7241
+ const postBreadcrumbItemCss = () => `a{-webkit-text-decoration:var(--post-core-text-decoration-underline);text-decoration:var(--post-core-text-decoration-underline);border-radius:var(--post-device-border-radius-focus);color:var(--post-current-fg)}a:hover{color:var(--post-scheme-color-interactive-primary-hover-fg1)}a{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}a:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){a:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){a:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){a:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){a,a:focus{color:LinkText !important}a:hover{text-decoration-thickness:2px}a:visited{color:VisitedText}a.btn:not(.btn-link){border-color:ButtonBorder !important}a.btn.btn-tertiary.px-0{border:0 !important}a.btn.btn-tertiary.px-0:not(:hover){text-decoration:underline}}:host([variant=menuitem]) :is(a,span),:host([variant=menuitem]) ::slotted(a){white-space:normal;overflow-wrap:anywhere;hyphens:auto;line-break:strict}:host([variant=listitem]){display:flex;align-items:flex-start;padding-block:var(--post-device-spacing-padding-block-6);gap:var(--post-device-spacing-gap-inline-5)}:host([variant=listitem]) :is(button,a){display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-color:rgba(0,0,0,0);border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-size:var(--post-device-font-size-6);font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;font:inherit;padding:unset;border:unset;border-radius:var(--post-device-border-radius-focus);color:var(--post-scheme-color-interactive-primary-enabled-fg1);text-decoration:var(--post-core-text-decoration-none)}:host([variant=listitem]) :is(button,a):not(:disabled):hover{text-decoration:none}:host([variant=listitem]) :is(button,a):disabled{border-style:var(--post-core-border-style-dash);cursor:unset}:host([variant=listitem]) :is(button,a){outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}:host([variant=listitem]) :is(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host([variant=listitem]) :is(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){:host([variant=listitem]) :is(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host([variant=listitem]) :is(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host([variant=listitem]) :is(button,a){border-width:1px !important;transition:none}:host([variant=listitem]) :is(button,a):is(button){background-color:ButtonFace !important;border-color:ButtonBorder !important}}:host([variant=listitem]) :is(button,a):hover{color:var(--post-scheme-color-interactive-primary-hover-fg1);text-decoration:var(--post-core-text-decoration-underline)}:host([variant=listitem])::before{mask-image:var(--post-icon-chevronright);background-color:currentColor;flex:0 0 auto;content:"";display:block;height:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);margin-block:calc(var(--post-device-spacing-padding-35) - 1*var(--post-device-spacing-padding-block-6));margin-inline:var(--post-core-dimension-4)}:root,:host{--post-icon-chevronright:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzPjxzeW1ib2wgaWQ9ImktY2hldnJvbnJpZ2h0Ij48c3ltYm9sIGlkPSJzMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTUuMzggMTRjLS4xOSAwLS4zOC0uMDctLjUzLS4yMmEuNzU0Ljc1NCAwIDAgMSAwLTEuMDZMOS41NyA4IDQuODUgMy4yOGMtLjI5LS4yOS0uMjktLjc3IDAtMS4wNnMuNzctLjI5IDEuMDYgMEwxMS42OSA4bC01Ljc4IDUuNzhjLS4xNS4xNS0uMzQuMjItLjUzLjIyIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iczI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik04LjA3IDIwLjcyYy0uMjIgMC0uNDUtLjA4LS42Mi0uMjZhLjg4Ljg4IDAgMCAxIDAtMS4yNGw3LjI2LTcuMjZMNy40NSA0LjdhLjg4Ljg4IDAgMCAxIDAtMS4yNGMuMzQtLjM0LjktLjM0IDEuMjQgMGw4LjUgOC41LTguNDkgOC40OWMtLjE3LjE3LS40LjI2LS42Mi4yNloiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHBhdGggZD0iTTEwLjc2IDI3LjVjLS4yNiAwLS41MS0uMS0uNzEtLjI5YS45OTYuOTk2IDAgMCAxIDAtMS40MWw5Ljc5LTkuNzktOS43OS05LjgxYS45OTYuOTk2IDAgMSAxIDEuNDEtMS40MUwyMi42NyAxNiAxMS40NiAyNy4yMWMtLjIuMi0uNDUuMjktLjcxLjI5WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM0MCIgdmlld0JveD0iMCAwIDQwIDQwIj48cGF0aCBkPSJNMTMuNSAzNC4yMmExLjEyMyAxLjEyMyAwIDAgMS0uOC0xLjkybDEyLjMzLTEyLjMzTDEyLjcgNy42M2MtLjQ0LS40NC0uNDQtMS4xNSAwLTEuNTlzMS4xNS0uNDQgMS41OSAwbDEzLjkzIDEzLjkzTDE0LjMgMzMuODljLS4yMi4yMi0uNTEuMzMtLjguMzMiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCI+PHBhdGggZD0iTTE2LjE0IDQxYy0uMzIgMC0uNjQtLjEyLS44OC0uMzdhMS4yNSAxLjI1IDAgMCAxIDAtMS43N2wxNC44Ny0xNC44N0wxNS4yNSA5LjExYy0uNDktLjQ5LS40OS0xLjI4IDAtMS43N3MxLjI4LS40OSAxLjc3IDBsMTYuNjQgMTYuNjQtMTYuNjMgMTYuNjNjLS4yNC4yNC0uNTYuMzctLjg4LjM3WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM2NCIgdmlld0JveD0iMCAwIDY0IDY0Ij48cGF0aCBkPSJNMjEuNTEgNTQuNGExLjM3NiAxLjM3NiAwIDAgMS0uOTctMi4zNWwyMC4wMy0yMC4wMy0yMC4wNC0yMC4wM2MtLjU0LS41NC0uNTQtMS40MSAwLTEuOTVzMS40MS0uNTQgMS45NSAwbDIxLjk4IDIxLjk5TDIyLjQ5IDU0Yy0uMjcuMjctLjYyLjQtLjk3LjRaIi8+PC9zeW1ib2w+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczE2LCBub25lKSIgaHJlZj0iI3MxNiIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXMyNCwgbm9uZSkiIGhyZWY9IiNzMjQiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zMzIsIG5vbmUpIiBocmVmPSIjczMyIi8+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczQwLCBub25lKSIgaHJlZj0iI3M0MCIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXM0OCwgbm9uZSkiIGhyZWY9IiNzNDgiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zNjQsIG5vbmUpIiBocmVmPSIjczY0Ii8+PC9zeW1ib2w+PC9kZWZzPjxzdHlsZT5AbWVkaWEgKG1heC13aWR0aDogMjMuOThweCkge2d7LS1zMTY6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogMjRweCkgYW5kIChtYXgtd2lkdGg6IDMxLjk4cHgpIHtney0tczI0OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDMycHgpIGFuZCAobWF4LXdpZHRoOiAzOS45OHB4KSB7Z3stLXMzMjpibG9jazt9fUBtZWRpYSAobWluLXdpZHRoOiA0MHB4KSBhbmQgKG1heC13aWR0aDogNDcuOThweCkge2d7LS1zNDA6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogNDhweCkgYW5kIChtYXgtd2lkdGg6IDYzLjk4cHgpIHtney0tczQ4OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDY0cHgpIHtney0tczY0OmJsb2NrO319PC9zdHlsZT48Zz48dXNlIGhyZWY9IiNpLWNoZXZyb25yaWdodCIvPjwvZz48L3N2Zz4=")}:host([variant=listitem]):not([standalone]:not([standalone=false])) ::slotted(a){white-space:nowrap}:host([variant=listitem]):host([selected]:not([selected=false])){flex-shrink:0}:host([variant=listitem]):host([selected]:not([selected=false])) :is(a,span){color:var(--post-scheme-color-interactive-primary-selected-fg1);font-weight:var(--post-device-font-weight-bold);text-decoration:var(--post-core-text-decoration-none)}:host([variant=listitem]):host([standalone]:not([standalone=false])){flex-shrink:1}:host([variant=listitem]):host([standalone]:not([standalone=false])) :is(a,span),:host([variant=listitem]):host([standalone]:not([standalone=false])) ::slotted(a){white-space:normal;overflow-wrap:anywhere;hyphens:auto;line-break:strict}`;
7335
7242
 
7336
7243
  var __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
7337
7244
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -7344,60 +7251,252 @@ var __decorate$v = (undefined && undefined.__decorate) || function (decorators,
7344
7251
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7345
7252
  };
7346
7253
  /**
7347
- * @slot default - The content displayed inside the breadcrumb item.
7254
+ * @slot default - The content displayed inside the breadcrumb item. Can contain text or an <a> element, so consumers can slot their own routing-aware link instead of relying on the `url` prop.
7255
+ */
7256
+ class PostBreadcrumbItem {
7257
+ constructor(hostRef) {
7258
+ registerInstance(this, hostRef);
7259
+ /**
7260
+ * Whether the consumer slotted their own <a>. When true, the component renders only the <slot>, leaving the slotted anchor untouched so the host app's router can handle clicks.
7261
+ */
7262
+ this.hasSlottedAnchor = false;
7263
+ /**
7264
+ * Controls how the item is rendered, either as a standard list item or within an overflow menu.
7265
+ */
7266
+ this.variant = 'listitem';
7267
+ /**
7268
+ * Indicates that the item represents the current page, applying appropriate styling.
7269
+ */
7270
+ this.selected = false;
7271
+ /**
7272
+ * Indicates that this is the only visible item, applying appropriate styling.
7273
+ */
7274
+ this.standalone = false;
7275
+ }
7276
+ componentWillLoad() {
7277
+ this.checkSlottedAnchor();
7278
+ }
7279
+ checkSlottedAnchor() {
7280
+ this.hasSlottedAnchor = Array.from(this.host.children).some(child => child.tagName === 'A');
7281
+ }
7282
+ renderContent() {
7283
+ const slot = hAsync("slot", { onSlotchange: () => this.checkSlottedAnchor() });
7284
+ const href = this.url instanceof URL ? this.url.href : this.url;
7285
+ if (this.hasSlottedAnchor) {
7286
+ return slot;
7287
+ }
7288
+ else if (!href) {
7289
+ return hAsync("span", null, slot);
7290
+ }
7291
+ else {
7292
+ return (hAsync("a", { href: href, "aria-current": this.selected ? 'page' : undefined, "aria-label": this.label, "aria-description": this.description }, slot));
7293
+ }
7294
+ }
7295
+ render() {
7296
+ const content = this.renderContent();
7297
+ return this.variant === 'listitem' || this.selected ? (hAsync(Host, { "data-version": version$1, role: "listitem", slot: this.selected ? 'selected' : undefined }, content)) : (hAsync(Host, { "data-version": version$1, slot: "menu" }, hAsync("post-menu-item", null, content)));
7298
+ }
7299
+ get host() { return getElement(this); }
7300
+ static get style() { return postBreadcrumbItemCss(); }
7301
+ static get cmpMeta() { return {
7302
+ "$flags$": 265,
7303
+ "$tagName$": "post-breadcrumb-item",
7304
+ "$members$": {
7305
+ "url": [513],
7306
+ "label": [513],
7307
+ "description": [513],
7308
+ "variant": [513],
7309
+ "selected": [516],
7310
+ "standalone": [516],
7311
+ "hasSlottedAnchor": [32]
7312
+ },
7313
+ "$listeners$": undefined,
7314
+ "$lazyBundleId$": "-",
7315
+ "$attrsToReflect$": [["url", "url"], ["label", "label"], ["description", "description"], ["variant", "variant"], ["selected", "selected"], ["standalone", "standalone"]]
7316
+ }; }
7317
+ }
7318
+ __decorate$v([
7319
+ Url()
7320
+ ], PostBreadcrumbItem.prototype, "url", void 0);
7321
+ __decorate$v([
7322
+ Type('string')
7323
+ ], PostBreadcrumbItem.prototype, "label", void 0);
7324
+ __decorate$v([
7325
+ Type('string')
7326
+ ], PostBreadcrumbItem.prototype, "description", void 0);
7327
+ __decorate$v([
7328
+ OneOf(VARIANTS)
7329
+ ], PostBreadcrumbItem.prototype, "variant", void 0);
7330
+ __decorate$v([
7331
+ Required(),
7332
+ Type('boolean')
7333
+ ], PostBreadcrumbItem.prototype, "selected", void 0);
7334
+ __decorate$v([
7335
+ Required(),
7336
+ Type('boolean')
7337
+ ], PostBreadcrumbItem.prototype, "standalone", void 0);
7338
+
7339
+ /* eslint-disable no-undefined,no-param-reassign,no-shadow */
7340
+
7341
+ /**
7342
+ * Throttle execution of a function. Especially useful for rate limiting
7343
+ * execution of handlers on events like resize and scroll.
7344
+ *
7345
+ * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)
7346
+ * are most useful.
7347
+ * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,
7348
+ * as-is, to `callback` when the throttled-function is executed.
7349
+ * @param {object} [options] - An object to configure options.
7350
+ * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds
7351
+ * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed
7352
+ * one final time after the last throttled-function call. (After the throttled-function has not been called for
7353
+ * `delay` milliseconds, the internal counter is reset).
7354
+ * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback
7355
+ * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that
7356
+ * callback will never executed if both noLeading = true and noTrailing = true.
7357
+ * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is
7358
+ * false (at end), schedule `callback` to execute after `delay` ms.
7359
+ *
7360
+ * @returns {Function} A new, throttled, function.
7361
+ */
7362
+ function throttle (delay, callback, options) {
7363
+ var _ref = options || {},
7364
+ _ref$noTrailing = _ref.noTrailing,
7365
+ noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,
7366
+ _ref$noLeading = _ref.noLeading,
7367
+ noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,
7368
+ _ref$debounceMode = _ref.debounceMode,
7369
+ debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;
7370
+ /*
7371
+ * After wrapper has stopped being called, this timeout ensures that
7372
+ * `callback` is executed at the proper times in `throttle` and `end`
7373
+ * debounce modes.
7374
+ */
7375
+ var timeoutID;
7376
+ var cancelled = false;
7377
+
7378
+ // Keep track of the last time `callback` was executed.
7379
+ var lastExec = 0;
7380
+
7381
+ // Function to clear existing timeout
7382
+ function clearExistingTimeout() {
7383
+ if (timeoutID) {
7384
+ clearTimeout(timeoutID);
7385
+ }
7386
+ }
7387
+
7388
+ // Function to cancel next exec
7389
+ function cancel(options) {
7390
+ var _ref2 = options || {},
7391
+ _ref2$upcomingOnly = _ref2.upcomingOnly,
7392
+ upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;
7393
+ clearExistingTimeout();
7394
+ cancelled = !upcomingOnly;
7395
+ }
7396
+
7397
+ /*
7398
+ * The `wrapper` function encapsulates all of the throttling / debouncing
7399
+ * functionality and when executed will limit the rate at which `callback`
7400
+ * is executed.
7401
+ */
7402
+ function wrapper() {
7403
+ for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {
7404
+ arguments_[_key] = arguments[_key];
7405
+ }
7406
+ var self = this;
7407
+ var elapsed = Date.now() - lastExec;
7408
+ if (cancelled) {
7409
+ return;
7410
+ }
7411
+
7412
+ // Execute `callback` and update the `lastExec` timestamp.
7413
+ function exec() {
7414
+ lastExec = Date.now();
7415
+ callback.apply(self, arguments_);
7416
+ }
7417
+
7418
+ /*
7419
+ * If `debounceMode` is true (at begin) this is used to clear the flag
7420
+ * to allow future `callback` executions.
7421
+ */
7422
+ function clear() {
7423
+ timeoutID = undefined;
7424
+ }
7425
+ if (!noLeading && debounceMode && !timeoutID) {
7426
+ /*
7427
+ * Since `wrapper` is being called for the first time and
7428
+ * `debounceMode` is true (at begin), execute `callback`
7429
+ * and noLeading != true.
7430
+ */
7431
+ exec();
7432
+ }
7433
+ clearExistingTimeout();
7434
+ if (debounceMode === undefined && elapsed > delay) {
7435
+ if (noLeading) {
7436
+ /*
7437
+ * In throttle mode with noLeading, if `delay` time has
7438
+ * been exceeded, update `lastExec` and schedule `callback`
7439
+ * to execute after `delay` ms.
7440
+ */
7441
+ lastExec = Date.now();
7442
+ if (!noTrailing) {
7443
+ timeoutID = setTimeout(debounceMode ? clear : exec, delay);
7444
+ }
7445
+ } else {
7446
+ /*
7447
+ * In throttle mode without noLeading, if `delay` time has been exceeded, execute
7448
+ * `callback`.
7449
+ */
7450
+ exec();
7451
+ }
7452
+ } else if (noTrailing !== true) {
7453
+ /*
7454
+ * In trailing throttle mode, since `delay` time has not been
7455
+ * exceeded, schedule `callback` to execute `delay` ms after most
7456
+ * recent execution.
7457
+ *
7458
+ * If `debounceMode` is true (at begin), schedule `clear` to execute
7459
+ * after `delay` ms.
7460
+ *
7461
+ * If `debounceMode` is false (at end), schedule `callback` to
7462
+ * execute after `delay` ms.
7463
+ */
7464
+ timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);
7465
+ }
7466
+ }
7467
+ wrapper.cancel = cancel;
7468
+
7469
+ // Return the wrapper function.
7470
+ return wrapper;
7471
+ }
7472
+
7473
+ /* eslint-disable no-undefined */
7474
+
7475
+ /**
7476
+ * Debounce execution of a function. Debouncing, unlike throttling,
7477
+ * guarantees that a function is only executed a single time, either at the
7478
+ * very beginning of a series of calls, or at the very end.
7479
+ *
7480
+ * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
7481
+ * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,
7482
+ * to `callback` when the debounced-function is executed.
7483
+ * @param {object} [options] - An object to configure options.
7484
+ * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds
7485
+ * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.
7486
+ * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).
7487
+ *
7488
+ * @returns {Function} A new, debounced function.
7348
7489
  */
7349
- class PostBreadcrumbItem {
7350
- constructor(hostRef) {
7351
- registerInstance(this, hostRef);
7352
- /**
7353
- * Controls how the item is rendered, either as a standard list item or within an overflow menu.
7354
- */
7355
- this.variant = 'listitem';
7356
- /**
7357
- * Indicates that the item represents the current page, applying appropriate styling.
7358
- */
7359
- this.selected = false;
7360
- }
7361
- render() {
7362
- const href = this.url instanceof URL ? this.url.href : this.url;
7363
- const content = href ? (hAsync("a", { href: href, "aria-current": this.selected ? 'page' : undefined, "aria-label": this.label, "aria-description": this.description }, hAsync("slot", null))) : (hAsync("span", null, hAsync("slot", null)));
7364
- return this.variant === 'listitem' || this.selected ? (hAsync(Host, { "data-version": version$1, role: "listitem", slot: this.selected ? 'selected' : undefined }, content)) : (hAsync(Host, { "data-version": version$1 }, hAsync("post-menu-item", null, content)));
7365
- }
7366
- get host() { return getElement(this); }
7367
- static get style() { return postBreadcrumbItemCss(); }
7368
- static get cmpMeta() { return {
7369
- "$flags$": 265,
7370
- "$tagName$": "post-breadcrumb-item",
7371
- "$members$": {
7372
- "url": [513],
7373
- "label": [513],
7374
- "description": [513],
7375
- "variant": [513],
7376
- "selected": [516]
7377
- },
7378
- "$listeners$": undefined,
7379
- "$lazyBundleId$": "-",
7380
- "$attrsToReflect$": [["url", "url"], ["label", "label"], ["description", "description"], ["variant", "variant"], ["selected", "selected"]]
7381
- }; }
7490
+ function debounce (delay, callback, options) {
7491
+ var _ref = {},
7492
+ _ref$atBegin = _ref.atBegin,
7493
+ atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;
7494
+ return throttle(delay, callback, {
7495
+ debounceMode: atBegin !== false
7496
+ });
7382
7497
  }
7383
- __decorate$v([
7384
- Url()
7385
- ], PostBreadcrumbItem.prototype, "url", void 0);
7386
- __decorate$v([
7387
- Type('string')
7388
- ], PostBreadcrumbItem.prototype, "label", void 0);
7389
- __decorate$v([
7390
- Type('string')
7391
- ], PostBreadcrumbItem.prototype, "description", void 0);
7392
- __decorate$v([
7393
- OneOf(VARIANTS)
7394
- ], PostBreadcrumbItem.prototype, "variant", void 0);
7395
- __decorate$v([
7396
- Required(),
7397
- Type('boolean')
7398
- ], PostBreadcrumbItem.prototype, "selected", void 0);
7399
7498
 
7400
- const postBreadcrumbsCss = () => `:host{display:block;position:relative}nav{max-width:100%}nav.invisible{--post-breadcrumb-item-wrap:nowrap;visibility:hidden;overflow:hidden;position:absolute;inset:0;padding-inline:1px}[role=list]{display:flex;align-items:flex-start;gap:var(--post-device-spacing-gap-inline-4)}.breadcrumb-item{display:flex;align-items:flex-start;padding-block:var(--post-device-spacing-padding-block-6);gap:var(--post-device-spacing-gap-inline-5)}.breadcrumb-item :is(button,a){display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-color:rgba(0,0,0,0);border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-size:var(--post-device-font-size-6);font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;font:inherit;padding:unset;border:unset;color:var(--post-scheme-color-interactive-primary-enabled-fg1);border-radius:var(--post-device-border-radius-focus);text-decoration:var(--post-core-text-decoration-none)}.breadcrumb-item :is(button,a):not(:disabled):hover{text-decoration:none}.breadcrumb-item :is(button,a):disabled{border-style:var(--post-core-border-style-dash);cursor:unset}.breadcrumb-item :is(button,a){outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.breadcrumb-item :is(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.breadcrumb-item :is(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.breadcrumb-item :is(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.breadcrumb-item :is(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.breadcrumb-item :is(button,a){border-width:1px !important;transition:none}.breadcrumb-item :is(button,a):is(button){background-color:ButtonFace !important;border-color:ButtonBorder !important}}.breadcrumb-item :is(button,a):hover{color:var(--post-scheme-color-interactive-primary-hover-fg1);text-decoration:var(--post-core-text-decoration-underline)}.breadcrumb-item::before{mask-image:var(--post-icon-chevronright);background-color:currentColor;flex:0 0 auto;content:"";display:block;height:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);margin-block:calc(var(--post-device-spacing-padding-35) - 1*var(--post-device-spacing-padding-block-6));margin-inline:var(--post-core-dimension-4)}:root,:host{--post-icon-chevronright:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzPjxzeW1ib2wgaWQ9ImktY2hldnJvbnJpZ2h0Ij48c3ltYm9sIGlkPSJzMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTUuMzggMTRjLS4xOSAwLS4zOC0uMDctLjUzLS4yMmEuNzU0Ljc1NCAwIDAgMSAwLTEuMDZMOS41NyA4IDQuODUgMy4yOGMtLjI5LS4yOS0uMjktLjc3IDAtMS4wNnMuNzctLjI5IDEuMDYgMEwxMS42OSA4bC01Ljc4IDUuNzhjLS4xNS4xNS0uMzQuMjItLjUzLjIyIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iczI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik04LjA3IDIwLjcyYy0uMjIgMC0uNDUtLjA4LS42Mi0uMjZhLjg4Ljg4IDAgMCAxIDAtMS4yNGw3LjI2LTcuMjZMNy40NSA0LjdhLjg4Ljg4IDAgMCAxIDAtMS4yNGMuMzQtLjM0LjktLjM0IDEuMjQgMGw4LjUgOC41LTguNDkgOC40OWMtLjE3LjE3LS40LjI2LS42Mi4yNloiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHBhdGggZD0iTTEwLjc2IDI3LjVjLS4yNiAwLS41MS0uMS0uNzEtLjI5YS45OTYuOTk2IDAgMCAxIDAtMS40MWw5Ljc5LTkuNzktOS43OS05LjgxYS45OTYuOTk2IDAgMSAxIDEuNDEtMS40MUwyMi42NyAxNiAxMS40NiAyNy4yMWMtLjIuMi0uNDUuMjktLjcxLjI5WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM0MCIgdmlld0JveD0iMCAwIDQwIDQwIj48cGF0aCBkPSJNMTMuNSAzNC4yMmExLjEyMyAxLjEyMyAwIDAgMS0uOC0xLjkybDEyLjMzLTEyLjMzTDEyLjcgNy42M2MtLjQ0LS40NC0uNDQtMS4xNSAwLTEuNTlzMS4xNS0uNDQgMS41OSAwbDEzLjkzIDEzLjkzTDE0LjMgMzMuODljLS4yMi4yMi0uNTEuMzMtLjguMzMiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCI+PHBhdGggZD0iTTE2LjE0IDQxYy0uMzIgMC0uNjQtLjEyLS44OC0uMzdhMS4yNSAxLjI1IDAgMCAxIDAtMS43N2wxNC44Ny0xNC44N0wxNS4yNSA5LjExYy0uNDktLjQ5LS40OS0xLjI4IDAtMS43N3MxLjI4LS40OSAxLjc3IDBsMTYuNjQgMTYuNjQtMTYuNjMgMTYuNjNjLS4yNC4yNC0uNTYuMzctLjg4LjM3WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM2NCIgdmlld0JveD0iMCAwIDY0IDY0Ij48cGF0aCBkPSJNMjEuNTEgNTQuNGExLjM3NiAxLjM3NiAwIDAgMS0uOTctMi4zNWwyMC4wMy0yMC4wMy0yMC4wNC0yMC4wM2MtLjU0LS41NC0uNTQtMS40MSAwLTEuOTVzMS40MS0uNTQgMS45NSAwbDIxLjk4IDIxLjk5TDIyLjQ5IDU0Yy0uMjcuMjctLjYyLjQtLjk3LjRaIi8+PC9zeW1ib2w+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczE2LCBub25lKSIgaHJlZj0iI3MxNiIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXMyNCwgbm9uZSkiIGhyZWY9IiNzMjQiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zMzIsIG5vbmUpIiBocmVmPSIjczMyIi8+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczQwLCBub25lKSIgaHJlZj0iI3M0MCIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXM0OCwgbm9uZSkiIGhyZWY9IiNzNDgiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zNjQsIG5vbmUpIiBocmVmPSIjczY0Ii8+PC9zeW1ib2w+PC9kZWZzPjxzdHlsZT5AbWVkaWEgKG1heC13aWR0aDogMjMuOThweCkge2d7LS1zMTY6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogMjRweCkgYW5kIChtYXgtd2lkdGg6IDMxLjk4cHgpIHtney0tczI0OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDMycHgpIGFuZCAobWF4LXdpZHRoOiAzOS45OHB4KSB7Z3stLXMzMjpibG9jazt9fUBtZWRpYSAobWluLXdpZHRoOiA0MHB4KSBhbmQgKG1heC13aWR0aDogNDcuOThweCkge2d7LS1zNDA6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogNDhweCkgYW5kIChtYXgtd2lkdGg6IDYzLjk4cHgpIHtney0tczQ4OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDY0cHgpIHtney0tczY0OmJsb2NrO319PC9zdHlsZT48Zz48dXNlIGhyZWY9IiNpLWNoZXZyb25yaWdodCIvPjwvZz48L3N2Zz4=")}.home{padding-block:var(--post-device-spacing-padding-47)}.home::before{content:unset}.home post-icon{width:var(--post-device-sizing-interactive-icon-size2);height:var(--post-device-sizing-interactive-icon-size2)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}`;
7499
+ const postBreadcrumbsCss = () => `:host{display:block;position:relative}nav{max-width:100%}nav.invisible{overflow:hidden;visibility:hidden;position:absolute;inset:0}nav.loading>div>:not(.home){display:none}[role=list]{display:flex;align-items:flex-start;gap:var(--post-device-spacing-gap-inline-4)}[role=list]>.menu:first-child::before{content:none}.breadcrumb-item{display:flex;align-items:flex-start;padding-block:var(--post-device-spacing-padding-block-6);gap:var(--post-device-spacing-gap-inline-5)}.breadcrumb-item :is(button,a){display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-color:rgba(0,0,0,0);border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-size:var(--post-device-font-size-6);font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;font:inherit;padding:unset;border:unset;border-radius:var(--post-device-border-radius-focus);color:var(--post-scheme-color-interactive-primary-enabled-fg1);text-decoration:var(--post-core-text-decoration-none)}.breadcrumb-item :is(button,a):not(:disabled):hover{text-decoration:none}.breadcrumb-item :is(button,a):disabled{border-style:var(--post-core-border-style-dash);cursor:unset}.breadcrumb-item :is(button,a){outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.breadcrumb-item :is(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.breadcrumb-item :is(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.breadcrumb-item :is(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.breadcrumb-item :is(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.breadcrumb-item :is(button,a){border-width:1px !important;transition:none}.breadcrumb-item :is(button,a):is(button){background-color:ButtonFace !important;border-color:ButtonBorder !important}}.breadcrumb-item :is(button,a):hover{color:var(--post-scheme-color-interactive-primary-hover-fg1);text-decoration:var(--post-core-text-decoration-underline)}.breadcrumb-item::before{mask-image:var(--post-icon-chevronright);background-color:currentColor;flex:0 0 auto;content:"";display:block;height:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);margin-block:calc(var(--post-device-spacing-padding-35) - 1*var(--post-device-spacing-padding-block-6));margin-inline:var(--post-core-dimension-4)}:root,:host{--post-icon-chevronright:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzPjxzeW1ib2wgaWQ9ImktY2hldnJvbnJpZ2h0Ij48c3ltYm9sIGlkPSJzMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTUuMzggMTRjLS4xOSAwLS4zOC0uMDctLjUzLS4yMmEuNzU0Ljc1NCAwIDAgMSAwLTEuMDZMOS41NyA4IDQuODUgMy4yOGMtLjI5LS4yOS0uMjktLjc3IDAtMS4wNnMuNzctLjI5IDEuMDYgMEwxMS42OSA4bC01Ljc4IDUuNzhjLS4xNS4xNS0uMzQuMjItLjUzLjIyIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iczI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik04LjA3IDIwLjcyYy0uMjIgMC0uNDUtLjA4LS42Mi0uMjZhLjg4Ljg4IDAgMCAxIDAtMS4yNGw3LjI2LTcuMjZMNy40NSA0LjdhLjg4Ljg4IDAgMCAxIDAtMS4yNGMuMzQtLjM0LjktLjM0IDEuMjQgMGw4LjUgOC41LTguNDkgOC40OWMtLjE3LjE3LS40LjI2LS42Mi4yNloiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHBhdGggZD0iTTEwLjc2IDI3LjVjLS4yNiAwLS41MS0uMS0uNzEtLjI5YS45OTYuOTk2IDAgMCAxIDAtMS40MWw5Ljc5LTkuNzktOS43OS05LjgxYS45OTYuOTk2IDAgMSAxIDEuNDEtMS40MUwyMi42NyAxNiAxMS40NiAyNy4yMWMtLjIuMi0uNDUuMjktLjcxLjI5WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM0MCIgdmlld0JveD0iMCAwIDQwIDQwIj48cGF0aCBkPSJNMTMuNSAzNC4yMmExLjEyMyAxLjEyMyAwIDAgMS0uOC0xLjkybDEyLjMzLTEyLjMzTDEyLjcgNy42M2MtLjQ0LS40NC0uNDQtMS4xNSAwLTEuNTlzMS4xNS0uNDQgMS41OSAwbDEzLjkzIDEzLjkzTDE0LjMgMzMuODljLS4yMi4yMi0uNTEuMzMtLjguMzMiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCI+PHBhdGggZD0iTTE2LjE0IDQxYy0uMzIgMC0uNjQtLjEyLS44OC0uMzdhMS4yNSAxLjI1IDAgMCAxIDAtMS43N2wxNC44Ny0xNC44N0wxNS4yNSA5LjExYy0uNDktLjQ5LS40OS0xLjI4IDAtMS43N3MxLjI4LS40OSAxLjc3IDBsMTYuNjQgMTYuNjQtMTYuNjMgMTYuNjNjLS4yNC4yNC0uNTYuMzctLjg4LjM3WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM2NCIgdmlld0JveD0iMCAwIDY0IDY0Ij48cGF0aCBkPSJNMjEuNTEgNTQuNGExLjM3NiAxLjM3NiAwIDAgMS0uOTctMi4zNWwyMC4wMy0yMC4wMy0yMC4wNC0yMC4wM2MtLjU0LS41NC0uNTQtMS40MSAwLTEuOTVzMS40MS0uNTQgMS45NSAwbDIxLjk4IDIxLjk5TDIyLjQ5IDU0Yy0uMjcuMjctLjYyLjQtLjk3LjRaIi8+PC9zeW1ib2w+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczE2LCBub25lKSIgaHJlZj0iI3MxNiIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXMyNCwgbm9uZSkiIGhyZWY9IiNzMjQiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zMzIsIG5vbmUpIiBocmVmPSIjczMyIi8+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczQwLCBub25lKSIgaHJlZj0iI3M0MCIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXM0OCwgbm9uZSkiIGhyZWY9IiNzNDgiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zNjQsIG5vbmUpIiBocmVmPSIjczY0Ii8+PC9zeW1ib2w+PC9kZWZzPjxzdHlsZT5AbWVkaWEgKG1heC13aWR0aDogMjMuOThweCkge2d7LS1zMTY6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogMjRweCkgYW5kIChtYXgtd2lkdGg6IDMxLjk4cHgpIHtney0tczI0OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDMycHgpIGFuZCAobWF4LXdpZHRoOiAzOS45OHB4KSB7Z3stLXMzMjpibG9jazt9fUBtZWRpYSAobWluLXdpZHRoOiA0MHB4KSBhbmQgKG1heC13aWR0aDogNDcuOThweCkge2d7LS1zNDA6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogNDhweCkgYW5kIChtYXgtd2lkdGg6IDYzLjk4cHgpIHtney0tczQ4OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDY0cHgpIHtney0tczY0OmJsb2NrO319PC9zdHlsZT48Zz48dXNlIGhyZWY9IiNpLWNoZXZyb25yaWdodCIvPjwvZz48L3N2Zz4=")}post-menu-item>slot[name=home]>a{position:relative;display:flex;align-items:center;padding:8px 12px 8px 16px;gap:12px;font-size:.875rem;color:#050400;border-radius:0;text-decoration:none;min-width:0;white-space:normal;overflow:visible;text-overflow:unset;justify-content:start;overflow-wrap:anywhere;hyphens:auto;line-break:strict}@media screen and (min-width: 780px){post-menu-item>slot[name=home]>a{font-size:1rem;padding-block:12px;gap:16px}}@media screen and (min-width: 1024px){post-menu-item>slot[name=home]>a{font-size:1.25rem;padding-block:13px}}post-menu-item>slot[name=home]>a:focus-visible{outline-offset:2px !important;border-radius:4px}post-menu-item>slot[name=home]>a:hover{background-color:#504f4b;color:#fff}.home{flex:none}.home::before{content:unset}.home.icon{padding-block:var(--post-device-spacing-padding-47)}.home.icon post-icon{width:var(--post-device-sizing-interactive-icon-size2);height:var(--post-device-sizing-interactive-icon-size2)}.menu{margin-inline-end:calc(-1*var(--post-device-spacing-gap-inline-4))}.menu.empty{display:none}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}`;
7401
7500
 
7402
7501
  var __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
7403
7502
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -7409,92 +7508,241 @@ var __decorate$u = (undefined && undefined.__decorate) || function (decorators,
7409
7508
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
7410
7509
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7411
7510
  };
7511
+ const MAX_VISIBLE_ITEMS = 6;
7512
+ const MEASUREMENT_DEBOUNCE_MS$1 = 50;
7513
+ /**
7514
+ * @slot home - The content of the root (home) breadcrumb item. Can contain an `<a>` element, so consumers can slot their own routing-aware link instead of relying on the `home-url` prop.
7515
+ */
7412
7516
  class PostBreadcrumbs {
7413
7517
  constructor(hostRef) {
7414
7518
  registerInstance(this, hostRef);
7415
- this.shouldRenderMenu = false;
7519
+ this.debounceUpdateCollapsedItems = throttle(MEASUREMENT_DEBOUNCE_MS$1, this.updateCollapsedItems.bind(this));
7520
+ this.resizeObserver = new ResizeObserver(this.debounceUpdateCollapsedItems);
7521
+ this.mutationObserver = new MutationObserver(() => {
7522
+ void this.updateAfterMutation();
7523
+ });
7524
+ this.loaded = false;
7525
+ /** Whether the consumer slotted their own `<a>` into the `home` slot. When true, `home-url` is not required, since the internal fallback link is not rendered. */
7526
+ this.hasSlottedHomeAnchor = false;
7527
+ /** Whether the slotted home anchor contains a post-icon. */
7528
+ this.hasSlottedHomeIcon = false;
7529
+ /** The number of breadcrumb items, counted from the start, moved into the overflow menu. */
7530
+ this.collapsed = 0;
7531
+ /** Whether the home item is collapsed into its own overflow menu. */
7532
+ this.homeCollapsed = false;
7533
+ /** Whether the last (selected) item wraps onto multiple lines. */
7534
+ this.lastItemWraps = false;
7535
+ /** The visible breadcrumb navigation. */
7536
+ this.nav = null;
7537
+ /** An off-screen copy of the breadcrumb navigation used for measurement. */
7538
+ this.hiddenNav = null;
7539
+ /**
7540
+ * Whether `text-home` content is displayed instead of the home icon, enabling segment specific
7541
+ * breadcrumbs (like "Private customers" or "About us").
7542
+ */
7543
+ this.homeTextOnly = false;
7416
7544
  }
7417
7545
  componentWillLoad() {
7418
7546
  this.id = this.host.id || `b${nanoid(6)}`;
7547
+ this.checkSlottedHomeAnchor();
7419
7548
  }
7420
- componentDidLoad() {
7421
- this.createMutationObserver();
7422
- this.createResizeObserver();
7423
- }
7424
- disconnectedCallback() {
7425
- this.mutationObserver?.disconnect();
7426
- this.resizeObserver?.disconnect();
7427
- }
7428
- createMutationObserver() {
7429
- this.mutationObserver = new MutationObserver(this.duplicateNavElement.bind(this));
7430
- this.mutationObserver.observe(this.host, {
7549
+ async componentDidLoad() {
7550
+ this.resizeObserver?.observe(document.body);
7551
+ this.mutationObserver?.observe(this.host, {
7431
7552
  childList: true,
7432
7553
  characterData: true,
7433
7554
  subtree: true,
7434
7555
  });
7435
- this.duplicateNavElement();
7556
+ await this.updateHiddenNav();
7557
+ await this.updateCollapsedItems();
7558
+ this.loaded = true;
7436
7559
  }
7437
- createResizeObserver() {
7438
- this.resizeObserver = new ResizeObserver(throttle(50, this.checkOverflow.bind(this)));
7439
- this.resizeObserver.observe(document.body);
7560
+ disconnectedCallback() {
7561
+ this.resizeObserver?.disconnect();
7562
+ this.mutationObserver?.disconnect();
7563
+ this.debounceUpdateCollapsedItems.cancel();
7440
7564
  }
7441
- /**
7442
- * To measure overflow, we duplicate the entire breadcrumb so an inline version is always available.
7443
- */
7444
- duplicateNavElement() {
7445
- const shadowRoot = this.host.shadowRoot;
7446
- const nav = shadowRoot?.querySelector('nav');
7447
- if (!shadowRoot || !nav)
7448
- return;
7449
- this.prepareBreadcrumbItemsForClone();
7450
- const clone = nav.cloneNode(true);
7451
- clone.classList.add('invisible');
7452
- shadowRoot.querySelector('nav.invisible')?.remove();
7453
- shadowRoot.append(clone);
7454
- requestAnimationFrame(() => {
7455
- this.duplicateSlottedElements(clone, 'slot:not([name])');
7456
- this.duplicateSlottedElements(clone, 'slot[name="selected"]');
7457
- this.checkOverflow();
7458
- });
7565
+ checkSlottedHomeAnchor() {
7566
+ const homeSlotElement = Array.from(this.host.children).find(child => child.getAttribute('slot') === 'home');
7567
+ this.hasSlottedHomeAnchor = homeSlotElement?.tagName === 'A';
7568
+ this.hasSlottedHomeIcon =
7569
+ this.hasSlottedHomeAnchor && !!homeSlotElement?.querySelector('post-icon');
7459
7570
  }
7460
- duplicateSlottedElements(clone, slotSelector) {
7461
- const originalSlot = this.host.shadowRoot?.querySelector(slotSelector);
7462
- const clonedSlot = clone.querySelector(slotSelector);
7463
- if (!originalSlot || !clonedSlot)
7464
- return;
7465
- originalSlot.assignedElements().forEach(element => {
7466
- clonedSlot.insertAdjacentElement('beforebegin', element.cloneNode(true));
7467
- });
7468
- clonedSlot.remove();
7571
+ get usesHomeText() {
7572
+ return this.hasSlottedHomeAnchor ? !this.hasSlottedHomeIcon : this.homeTextOnly;
7469
7573
  }
7470
- checkOverflow() {
7471
- const hiddenNav = this.host.shadowRoot?.querySelector('nav.invisible');
7472
- if (!hiddenNav)
7574
+ // Degrade order: collapse middle items -> collapse home -> wrap the last item.
7575
+ /** Measures the available space and updates all three degrade-stage states. */
7576
+ async updateCollapsedItems() {
7577
+ if (!this.nav)
7473
7578
  return;
7474
- const breadcrumbItems = Array.from(hiddenNav.querySelectorAll('post-breadcrumb-item'));
7475
- Promise.all(breadcrumbItems.map(item => componentOnReady(item))).then(() => {
7476
- this.shouldRenderMenu =
7477
- hiddenNav.scrollWidth > hiddenNav.clientWidth && breadcrumbItems.length > 1;
7478
- this.updateBreadcrumbItemProps();
7579
+ const { overflowing, homeOverflows, lastItemWraps } = await this.calculateCollapsedItems();
7580
+ this.collapsed = overflowing;
7581
+ this.homeCollapsed = homeOverflows;
7582
+ this.lastItemWraps = lastItemWraps;
7583
+ }
7584
+ async calculateCollapsedItems() {
7585
+ const items = this.host.querySelectorAll('post-breadcrumb-item');
7586
+ const { overflowing, homeOverflows, lastItemWraps } = await this.calculateOverflowingItems();
7587
+ // Never show more than `MAX_VISIBLE_ITEMS`, even if the nav is wide enough to fit them all.
7588
+ return {
7589
+ overflowing: Math.max(overflowing, items.length - MAX_VISIBLE_ITEMS),
7590
+ homeOverflows,
7591
+ lastItemWraps,
7592
+ };
7593
+ }
7594
+ /** Runs the three degrade stages in order against the off-screen measurement clone. */
7595
+ async calculateOverflowingItems() {
7596
+ if (!this.hiddenNav)
7597
+ return { overflowing: 0, homeOverflows: false, lastItemWraps: false };
7598
+ const nav = this.hiddenNav;
7599
+ const availableWidth = nav.clientWidth;
7600
+ const gap = Number.parseFloat(getComputedStyle(nav.firstElementChild).gap);
7601
+ const menuWidth = nav.querySelector('.menu')?.clientWidth ?? 0;
7602
+ const homeWidth = nav.querySelector('.home')?.clientWidth ?? 0;
7603
+ // Stage 1: collapse middle items, starting closest to home, until the rest fits.
7604
+ const middleItems = Array.from(nav.querySelectorAll('post-breadcrumb-item')).slice(0, -1);
7605
+ const { overflowing, remainingWidth } = this.collapseMiddleItems(middleItems, gap, menuWidth, availableWidth);
7606
+ // Stage 2: home + last item, single-line. Text home can collapse into the menu, while the
7607
+ // icon-only home remains visible and lets the last item wrap instead.
7608
+ const homeOverflows = this.usesHomeText && remainingWidth > availableWidth;
7609
+ // Stage 3: home joins the existing menu when middle items have collapsed. If no middle item
7610
+ // collapsed, the menu needs to be added when home moves into it.
7611
+ const widthWithHomeCollapsed = remainingWidth - homeWidth + (overflowing === 0 ? menuWidth : 0);
7612
+ const lastItemWraps = this.usesHomeText
7613
+ ? homeOverflows && widthWithHomeCollapsed > availableWidth
7614
+ : remainingWidth > availableWidth;
7615
+ return { overflowing, homeOverflows, lastItemWraps };
7616
+ }
7617
+ /** Stage 1: collapses middle items until the rest fits, or none are left. */
7618
+ collapseMiddleItems(items, gap, menuWidth, availableWidth) {
7619
+ // Start from the assumption that all items fit and that no menu is shown, so subtract the
7620
+ // overflow menu's width from the total.
7621
+ let width = this.hiddenNav.scrollWidth - menuWidth + gap;
7622
+ let overflowing = 0;
7623
+ while (overflowing < items.length && width > availableWidth) {
7624
+ // The overflow menu needs to be displayed as soon as the first item is moved into it, so its
7625
+ // width needs to be taken into account when measuring the remaining items.
7626
+ if (overflowing === 0)
7627
+ width += menuWidth;
7628
+ width -= items[overflowing++].clientWidth + gap;
7629
+ }
7630
+ return { overflowing, remainingWidth: width };
7631
+ }
7632
+ /** Applies the degrade states to the `<post-breadcrumb-item>` elements. */
7633
+ updateItems(items, collapsed, lastItemWraps) {
7634
+ items.forEach((item, index) => {
7635
+ const isLast = index === items.length - 1;
7636
+ item.setAttribute('variant', index < collapsed ? 'menuitem' : 'listitem');
7637
+ item.setAttribute('selected', String(isLast));
7638
+ item.setAttribute('standalone', String(isLast && index === collapsed && lastItemWraps));
7479
7639
  });
7480
7640
  }
7481
- prepareBreadcrumbItemsForClone() {
7482
- this.shouldRenderMenu = false;
7483
- this.updateBreadcrumbItemProps();
7641
+ /** Rebuilds the off-screen copy of the breadcrumb navigation. */
7642
+ async updateHiddenNav() {
7643
+ this.hiddenNav?.remove();
7644
+ this.hiddenNav = await this.renderHiddenNav();
7484
7645
  }
7485
- updateBreadcrumbItemProps() {
7486
- const breadcrumbItems = this.host.querySelectorAll('post-breadcrumb-item');
7487
- breadcrumbItems.forEach((item, index) => {
7488
- item.setAttribute('variant', this.shouldRenderMenu ? 'menuitem' : 'listitem');
7489
- item.setAttribute('selected', String(index === breadcrumbItems.length - 1));
7646
+ async updateAfterMutation() {
7647
+ await this.updateHiddenNav();
7648
+ await this.updateCollapsedItems();
7649
+ }
7650
+ /**
7651
+ * Renders an off-screen copy of the nav for measurements. `.home` is rebuilt independently (see
7652
+ * `buildMeasurementHomeElement`) rather than cloned, since the live nav may show the home item
7653
+ * in the overflow menu instead if it is already collapsed.
7654
+ */
7655
+ async renderHiddenNav() {
7656
+ const shadowRoot = this.host.shadowRoot;
7657
+ if (!shadowRoot || !this.nav)
7658
+ return null;
7659
+ const clone = this.nav.cloneNode(true);
7660
+ const slots = clone.querySelectorAll('slot');
7661
+ // Deep clone the breadcrumb navigation and flatten its slots into the clone.
7662
+ this.nav.querySelectorAll('slot').forEach((source, index) => {
7663
+ const target = slots[index];
7664
+ const assignedElements = source.assignedElements();
7665
+ if (assignedElements.length > 0) {
7666
+ // Insert the assigned elements where the slot used to be, then drop the now empty slot.
7667
+ assignedElements.forEach(element => {
7668
+ target.insertAdjacentElement('beforebegin', element.cloneNode(true));
7669
+ });
7670
+ target.remove();
7671
+ }
7672
+ else {
7673
+ // Nothing assigned: keep the slot's own fallback content (e.g. the default home link) by
7674
+ // unwrap the <slot> in place, move its children to where it was, then remove it.
7675
+ const parent = target.parentNode;
7676
+ if (parent) {
7677
+ Array.from(target.childNodes).forEach(child => parent.insertBefore(child, target));
7678
+ target.remove();
7679
+ }
7680
+ }
7490
7681
  });
7682
+ // Always measure the full, uncollapsed home item — see the method doc above. Uses
7683
+ // replaceChild rather than replaceWith, since the latter isn't implemented by Stencil's
7684
+ // mock-doc DOM used during SSR/hydration.
7685
+ const existingHome = clone.querySelector('.home');
7686
+ existingHome?.parentNode?.replaceChild(this.buildMeasurementHomeElement(), existingHome);
7687
+ clone.classList.remove('loading');
7688
+ clone.classList.add('invisible');
7689
+ // Show the overflow menu so that we can include the space it takes up in the measurement.
7690
+ clone.querySelector('.menu').classList.remove('empty');
7691
+ shadowRoot.append(clone);
7692
+ // Wait for all items to be fully hydrated before measuring.
7693
+ const items = clone.querySelectorAll('post-breadcrumb-item');
7694
+ await Promise.all(Array.from(items).map(item => componentOnReady(item)));
7695
+ // Uncollapsed layout, both single-line, for measurement.
7696
+ this.updateItems(items, 0, false);
7697
+ return clone;
7698
+ }
7699
+ /** Builds `.home` in its full, uncollapsed form for measurement. Mirrors `renderHomeContent`, but as plain DOM since this runs outside the render cycle. */
7700
+ buildMeasurementHomeElement() {
7701
+ const home = document.createElement('div');
7702
+ home.className = `breadcrumb-item home${this.usesHomeText ? '' : ' icon'}`;
7703
+ home.setAttribute('role', 'listitem');
7704
+ const slottedAnchor = this.hasSlottedHomeAnchor
7705
+ ? Array.from(this.host.children).find(child => child.getAttribute('slot') === 'home')
7706
+ : null;
7707
+ if (slottedAnchor) {
7708
+ home.append(slottedAnchor.cloneNode(true));
7709
+ return home;
7710
+ }
7711
+ const anchor = document.createElement('a');
7712
+ if (this.homeUrl)
7713
+ anchor.href = this.homeUrl;
7714
+ const label = document.createElement('span');
7715
+ if (!this.usesHomeText)
7716
+ label.className = 'visually-hidden';
7717
+ label.textContent = this.textHome;
7718
+ anchor.append(label);
7719
+ if (!this.usesHomeText) {
7720
+ const icon = document.createElement('post-icon');
7721
+ icon.setAttribute('aria-hidden', 'true');
7722
+ icon.setAttribute('name', 'home');
7723
+ anchor.append(icon);
7724
+ }
7725
+ home.append(anchor);
7726
+ return home;
7491
7727
  }
7492
7728
  renderMenu() {
7493
7729
  const menuId = `${this.id}-menu`;
7494
- return (hAsync("div", { role: "listitem" }, hAsync("div", { class: "breadcrumb-item" }, hAsync("post-menu-trigger", { for: menuId }, hAsync("button", null, hAsync("span", { class: "visually-hidden" }, this.textMoreItems), hAsync("span", { "aria-hidden": "true" }, "...")))), hAsync("post-menu", { id: menuId, label: this.textMoreItems, placement: "bottom-start" }, hAsync("slot", null))));
7730
+ return (hAsync("div", { class: `breadcrumb-item menu ${this.collapsed === 0 && !this.homeCollapsed ? 'empty' : ''}`, role: "listitem" }, hAsync("post-menu-trigger", { for: menuId }, hAsync("button", null, hAsync("span", { class: "visually-hidden" }, this.textMoreItems), hAsync("span", { "aria-hidden": "true" }, "..."))), hAsync("post-menu", { id: menuId, label: this.textMoreItems, placement: "bottom-start" }, this.homeCollapsed && this.usesHomeText && (hAsync("post-menu-item", null, this.renderHomeContent())), hAsync("slot", { name: "menu" }))));
7731
+ }
7732
+ /** Reused by the plain home item and the home menu — a slot can only be assigned once. */
7733
+ renderHomeContent() {
7734
+ return (hAsync("slot", { name: "home", onSlotchange: () => this.checkSlottedHomeAnchor() }, hAsync("a", { href: this.homeUrl }, hAsync("span", { class: this.usesHomeText ? undefined : 'visually-hidden' }, this.textHome), !this.usesHomeText && hAsync("post-icon", { "aria-hidden": "true", name: "home" }))));
7735
+ }
7736
+ /** Degrade stage 2: home renders in full, single-line, not yet collapsed. */
7737
+ renderHome() {
7738
+ return (hAsync("div", { class: `breadcrumb-item home${this.usesHomeText ? '' : ' icon'}`, role: "listitem" }, this.renderHomeContent()));
7495
7739
  }
7496
7740
  render() {
7497
- return (hAsync(Host, { key: '2640a012ada112396ea3c954cda45c7bfaf2968d', "data-version": version$1 }, hAsync("nav", { key: '397a017f326459c433e0f8fae5766badfad52e29', "aria-label": this.textBreadcrumbs }, hAsync("div", { key: 'eb1d83aeb4aca599350918ba6be9df2a5ce86453', role: "list" }, hAsync("div", { key: '217b359f3da4afc3ca8c28d8fc0d352f4198c9b1', class: "breadcrumb-item home", role: "listitem" }, hAsync("a", { key: '1c2c3754bc0ef04e48ab95b5dad62e2d4cbb85e9', href: this.homeUrl }, hAsync("span", { key: '15878d068a9901a2c7b4f6726e6962dc9158a86f', class: "visually-hidden" }, this.textHome), hAsync("post-icon", { key: '0d755bcc61c49ccd7944b4a9370198ed41ab1c34', "aria-hidden": "true", name: "home" }))), this.shouldRenderMenu ? this.renderMenu() : hAsync("slot", null), hAsync("slot", { key: 'a0bafe06eab2346ea12bd00aec40c91b5e5347d0', name: "selected" })))));
7741
+ if (this.loaded) {
7742
+ const items = this.host.querySelectorAll('post-breadcrumb-item');
7743
+ this.updateItems(items, this.collapsed, this.lastItemWraps);
7744
+ }
7745
+ return (hAsync(Host, { key: '8d5f457a7c6a2df0cfaf5c31f3ffc6937de76e57', "data-version": version$1, class: this.homeCollapsed && this.usesHomeText ? 'home-collapsed' : undefined }, hAsync("nav", { key: 'ce3fd7ad69060dd6968afaad6170e27eee72682f', "aria-label": this.textBreadcrumbs, ref: el => (this.nav = el), class: this.loaded ? '' : 'loading' }, hAsync("div", { key: '1c400c8c1e1b625203876cc9804936782a2202c6', role: "list" }, (!this.homeCollapsed || !this.usesHomeText) && this.renderHome(), this.renderMenu(), hAsync("slot", { key: '5cf6618b487961c0e7d70637f5396d023660ec55' }), hAsync("slot", { key: 'f4fb662d04d9966c76a22444844d692611472b2d', name: "selected" })))));
7498
7746
  }
7499
7747
  get host() { return getElement(this); }
7500
7748
  static get style() { return postBreadcrumbsCss(); }
@@ -7504,24 +7752,34 @@ class PostBreadcrumbs {
7504
7752
  "$members$": {
7505
7753
  "homeUrl": [513, "home-url"],
7506
7754
  "textHome": [513, "text-home"],
7755
+ "homeTextOnly": [516, "home-text-only"],
7507
7756
  "textBreadcrumbs": [513, "text-breadcrumbs"],
7508
7757
  "textMoreItems": [513, "text-more-items"],
7509
- "shouldRenderMenu": [32],
7510
- "id": [32]
7758
+ "id": [32],
7759
+ "loaded": [32],
7760
+ "hasSlottedHomeAnchor": [32],
7761
+ "hasSlottedHomeIcon": [32],
7762
+ "collapsed": [32],
7763
+ "homeCollapsed": [32],
7764
+ "lastItemWraps": [32]
7511
7765
  },
7512
7766
  "$listeners$": undefined,
7513
7767
  "$lazyBundleId$": "-",
7514
- "$attrsToReflect$": [["homeUrl", "home-url"], ["textHome", "text-home"], ["textBreadcrumbs", "text-breadcrumbs"], ["textMoreItems", "text-more-items"]]
7768
+ "$attrsToReflect$": [["homeUrl", "home-url"], ["textHome", "text-home"], ["homeTextOnly", "home-text-only"], ["textBreadcrumbs", "text-breadcrumbs"], ["textMoreItems", "text-more-items"]]
7515
7769
  }; }
7516
7770
  }
7517
7771
  __decorate$u([
7518
- Required(),
7772
+ Required({ when: 'hasSlottedHomeAnchor', truthy: false }),
7519
7773
  Url()
7520
7774
  ], PostBreadcrumbs.prototype, "homeUrl", void 0);
7521
7775
  __decorate$u([
7522
- Required(),
7776
+ Required({ when: 'hasSlottedHomeAnchor', truthy: false }),
7523
7777
  Type('string')
7524
7778
  ], PostBreadcrumbs.prototype, "textHome", void 0);
7779
+ __decorate$u([
7780
+ Required(),
7781
+ Type('boolean')
7782
+ ], PostBreadcrumbs.prototype, "homeTextOnly", void 0);
7525
7783
  __decorate$u([
7526
7784
  Required(),
7527
7785
  Type('string')
@@ -7562,7 +7820,7 @@ class PostClosebutton {
7562
7820
  }
7563
7821
  /**
7564
7822
  * The "type" attribute used for the close button
7565
-
7823
+
7566
7824
  */
7567
7825
  this.buttonType = 'button';
7568
7826
  /**
@@ -7573,6 +7831,10 @@ class PostClosebutton {
7573
7831
  * The size of the close button.
7574
7832
  */
7575
7833
  this.size = 'default';
7834
+ this.handleClick = () => {
7835
+ const target = findClosableTarget(this.host);
7836
+ target?.close();
7837
+ };
7576
7838
  }
7577
7839
  componentDidLoad() {
7578
7840
  if (globalThis.MutationObserver) {
@@ -7597,13 +7859,8 @@ class PostClosebutton {
7597
7859
  console.error(`The \`${this.host.localName}\` component requires content for accessibility.`);
7598
7860
  }
7599
7861
  }
7600
- handleClick() {
7601
- if (this.buttonType === 'reset')
7602
- this.internals.form?.reset();
7603
- this.host.closest('dialog')?.close();
7604
- }
7605
7862
  render() {
7606
- return (hAsync(Host, { key: '22ac2b07e9a8a8f8d157423fea1bcedb2c4f9b11', "data-version": version$1 }, hAsync("button", { key: '91eb413a2546f131e4c97c28340374addbf2c7a7', type: this.buttonType, class: "btn btn-icon btn-secondary btn-sm", onClick: () => this.handleClick() }, hAsync("post-icon", { key: '02202b3df2e5830aeb267921c924c1e75508d546', "aria-hidden": "true", name: "closex" }), hAsync("span", { key: 'c691c845dd58b4f975c33791d29518428ade6ee8', ref: el => (this.visuallyHidden = el), class: "visually-hidden" }, hAsync("slot", { key: '3fd42b82ef1d1ea76343e0c69f421a2916c26006' })))));
7863
+ return (hAsync(Host, { key: 'b8e2214b904f5167fa3753aab947418891236fcf', "data-version": version$1 }, hAsync("button", { key: '224ca42d3be187062ba9717e4a534ff34eeafaf7', type: this.buttonType, class: "btn btn-icon btn-secondary btn-sm", onClick: this.handleClick }, hAsync("post-icon", { key: '5b289691599d6f9a3bb0fa7a28c71eecd1f5aee7', "aria-hidden": "true", name: "closex" }), hAsync("span", { key: 'e22045f15b3dc8b8b228eb4282114e10db68b186', ref: el => (this.visuallyHidden = el), class: "visually-hidden" }, hAsync("slot", { key: 'e492390c995a993ffc8988a1c90a41e59fbe39f5' })))));
7607
7864
  }
7608
7865
  static get formAssociated() { return true; }
7609
7866
  get host() { return getElement(this); }
@@ -7699,7 +7956,7 @@ class PostCollapsible {
7699
7956
  triggers.forEach(trigger => trigger.update());
7700
7957
  }
7701
7958
  render() {
7702
- return (hAsync(Host, { key: 'd4fef8eff9b716e9dff0e570f5993221ca631ed5', "data-version": version$1, tabindex: this.collapsed ? -1 : undefined, style: this.collapsed ? collapsedKeyframe : undefined }, hAsync("slot", { key: 'ee957da050187c1cfd752e0dcb6b5f86505f5089' })));
7959
+ return (hAsync(Host, { key: '243dad696871a08bc07325d4511f5baeb937c194', "data-version": version$1, tabindex: this.collapsed ? -1 : undefined, style: this.collapsed ? collapsedKeyframe : undefined }, hAsync("slot", { key: '5f4f8a9bb698f6558b114c760e5eeb355ac35b80' })));
7703
7960
  }
7704
7961
  get host() { return getElement(this); }
7705
7962
  static get style() { return postCollapsibleCss(); }
@@ -7778,7 +8035,7 @@ class PostCollapsibleTrigger {
7778
8035
  if (!this.trigger || !collapsible)
7779
8036
  return;
7780
8037
  // a nested collapsible may have no id, but aria-controls needs one to reference
7781
- collapsible.id || (collapsible.id = `collapsible-${crypto.randomUUID()}`);
8038
+ collapsible.id ||= `collapsible-${crypto.randomUUID()}`;
7782
8039
  const collapsibleId = collapsible.id;
7783
8040
  // add the controlled collapsible's id to the aria-controls list
7784
8041
  const ariaControls = this.trigger.getAttribute('aria-controls');
@@ -7825,7 +8082,7 @@ class PostCollapsibleTrigger {
7825
8082
  this.updateAriaAttributes();
7826
8083
  }
7827
8084
  render() {
7828
- return (hAsync(Host, { key: '64dde42136274194be6c3c4f94fb87ded8a3a079', "data-version": version$1 }, hAsync("slot", { key: 'f43727ec2f7692793178ad6c162bb56f0f2d842b' })));
8085
+ return (hAsync(Host, { key: '4d28c7068acd2e1b4a5f2272bee3b51ec5d8a216', "data-version": version$1 }, hAsync("slot", { key: '0bcbb780ed6d06ef36b9129b22b4a5dcd5aa7294' })));
7829
8086
  }
7830
8087
  get host() { return getElement(this); }
7831
8088
  static get cmpMeta() { return {
@@ -11450,7 +11707,7 @@ try {
11450
11707
  // environments (e.g. Next.js pre-rendering) with `HTMLInputElement is not defined`.
11451
11708
  let cachedNativeValueDescriptor;
11452
11709
  function nativeValueDescriptor() {
11453
- cachedNativeValueDescriptor ?? (cachedNativeValueDescriptor = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value'));
11710
+ cachedNativeValueDescriptor ??= Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value');
11454
11711
  return cachedNativeValueDescriptor;
11455
11712
  }
11456
11713
  // iMask adapter that bypasses the instance-level `input.value` override (which returns ISO strings)
@@ -12030,6 +12287,15 @@ class PostDatePicker {
12030
12287
  console.error('hide: popoverRef is null or undefined');
12031
12288
  }
12032
12289
  }
12290
+ static { this.FLYOUT_OFFSET = 4; }
12291
+ // Cells per row for each view
12292
+ static {
12293
+ this.COLUMNS_BY_VIEW = {
12294
+ days: 7,
12295
+ months: 4,
12296
+ years: 4,
12297
+ };
12298
+ }
12033
12299
  /**
12034
12300
  * Get the system locale (e.g.`en`, etc.) from the closest parent with a `lang` attribute,
12035
12301
  * or fallback to a default language code if not found or in server environment.
@@ -12659,11 +12925,11 @@ class PostDatePicker {
12659
12925
  }
12660
12926
  }
12661
12927
  render() {
12662
- return (hAsync(Host, { key: 'ac7b7440fa143243f512f5310451bf5f78c8d4f9', "data-version": version$1 }, this.inline && (hAsync("div", { key: 'f8557be8fa3200fe60a5867136bcbafadb0dd8fa', dir: this.textDirection }, hAsync("slot", { key: '0fb8338aa4f3003debd860818473545159dae9de' }), hAsync("div", { key: 'a5ad622effd59c94e89fdaad49aac1be4572b6cc', class: "datepicker-container" }))), !this.inline && (hAsync("div", { key: '13542f6ebc5b3eb019f08f229b57d9766da1f5f3', dir: this.textDirection }, hAsync("div", { key: '70ff874ef7337256286af303a2491f82cf50ebdd', class: {
12928
+ return (hAsync(Host, { key: 'aa624e30312b6e9af82ab3ae508b7527ebb99bdc', "data-version": version$1 }, this.inline && (hAsync("div", { key: '3643fb239e920945cb1438bb510047b19a6fc826', dir: this.textDirection }, hAsync("slot", { key: '08113b74ebe5d1faede4dc4412858408870ccb3b' }), hAsync("div", { key: 'b8cec572edeae4ef2b4d0bb582a8d4085e4815e9', class: "datepicker-container" }))), !this.inline && (hAsync("div", { key: 'a3ab6ca2fded0644a3cb3a513100b309882a67b7', dir: this.textDirection }, hAsync("div", { key: 'd1e3ec263fe3cbcfa7c78de9997be403e8dd8a1f', class: {
12663
12929
  'calendar-input': !this.range,
12664
12930
  'calendar-input-range': this.range,
12665
12931
  'disabled': this.inputDisabled,
12666
- } }, hAsync("slot", { key: '833903cc2bc4560f3d9378e2e8cf47ff26af2ea1' }), hAsync("button", { key: 'd7fd572bc96164d36e30cec148822e875966fc8d', onClick: () => this.show(), "aria-haspopup": "true", "aria-label": this.textToggleCalendar, disabled: this.inputDisabled, ref: e => (this.dpTrigger = e) }, hAsync("post-icon", { key: '8606056f1de2c9c6cfc041575affb01155a4282e', name: "calendar" }))), hAsync("post-popovercontainer", { key: '0519c4854ce7eaa31fdc542790d0b24da83c8538', placement: "bottom-end", offset: PostDatePicker.FLYOUT_OFFSET, ref: e => (this.popoverRef = e) }, hAsync("div", { key: 'ad967bfcb1154e508d03f9d986be7829d65ce69b', class: "datepicker-container" }))))));
12932
+ } }, hAsync("slot", { key: '5b747326d65bd4efa46cd7b6c0b20510ba1b894c' }), hAsync("button", { key: '9b053c841863418e063b29fd1344dff8803bff00', onClick: () => this.show(), "aria-haspopup": "true", "aria-label": this.textToggleCalendar, disabled: this.inputDisabled, ref: e => (this.dpTrigger = e) }, hAsync("post-icon", { key: 'badf30f287ca4776bedbd2323d03c1e7352e9a41', name: "calendar" }))), hAsync("post-popovercontainer", { key: 'f5ccb7e7eb04e8f2251e87b8cc53bf0f613f174b', placement: "bottom-end", offset: PostDatePicker.FLYOUT_OFFSET, ref: e => (this.popoverRef = e) }, hAsync("div", { key: '9054611105846624392ec79737d997a386a21ae2', class: "datepicker-container" }))))));
12667
12933
  }
12668
12934
  get host() { return getElement(this); }
12669
12935
  static get watchers() { return {
@@ -12715,13 +12981,6 @@ class PostDatePicker {
12715
12981
  "$attrsToReflect$": [["textNextMonth", "text-next-month"], ["textNextYear", "text-next-year"], ["textNextDecade", "text-next-decade"], ["textPreviousMonth", "text-previous-month"], ["textPreviousYear", "text-previous-year"], ["textPreviousDecade", "text-previous-decade"], ["textSwitchYear", "text-switch-year"]]
12716
12982
  }; }
12717
12983
  }
12718
- PostDatePicker.FLYOUT_OFFSET = 4;
12719
- // Cells per row for each view
12720
- PostDatePicker.COLUMNS_BY_VIEW = {
12721
- days: 7,
12722
- months: 4,
12723
- years: 4,
12724
- };
12725
12984
  __decorate$q([
12726
12985
  DateValue(),
12727
12986
  IsoDate()
@@ -12846,10 +13105,10 @@ class PostFooter {
12846
13105
  const allGridSlotsEmpty = GRID_SLOTS.every(slotName => !this.slotDisplayed[slotName]);
12847
13106
  const renderMain = !allGridSlotsEmpty || renderSocialmedia || renderApp || renderBusinesssectors;
12848
13107
  const renderBase = renderCopyright || renderMeta;
12849
- return (hAsync(Host, { key: 'f668d6ba8da065dacae35ef5b62ee53de08e752b', "data-version": version$1, "data-color-scheme": "light" }, hAsync("footer", { key: 'a2d5506e10de46e0c457795a241f7c121bccabbf' }, hAsync("h2", { key: '6ab3e65fca3282f2c9e885b380759ccd06fdebb1', class: "visually-hidden" }, this.textFooter), hAsync("div", { key: '77575484be6954dedaea636720d739fabd12393b', class: { 'prefooter': true, 'd-none': !renderPrefooter } }, hAsync("div", { key: '10c9bd63fe081645b83e0e4630185da0b2f3125b', class: "footer-container" }, hAsync("slot", { key: 'c73b907f6f0b2210c0fc33d3980e89b303599ca6', onSlotchange: this.handleSlotChange, name: "prefooter" }))), hAsync("div", { key: 'facda7dade1905087e8f1d23505f2afc381f56df', class: { 'footer-main': true, 'd-none': !renderMain } }, hAsync("div", { key: '09fcf43c02bab8f475d400c5fed66fababde2bfd', class: "footer-container" }, hAsync("div", { key: '25362e6384b6f1cdea3e7901e1afef6926e7b855', class: { 'footer-grid': true, 'd-none': allGridSlotsEmpty } }, this.device === 'mobile' ? this.renderAccordion() : this.renderColumns()), hAsync("div", { key: '0d4f176302870c035b517a9d6df34fd5bd2268ae', class: {
13108
+ return (hAsync(Host, { key: '08a1ce26926dace6b5b58df118007107c971221e', "data-version": version$1, "data-color-scheme": "light" }, hAsync("footer", { key: 'bcc5101df4f8e203fdba9075e34b7aa125eb53ce' }, hAsync("h2", { key: 'a8efa01756ea699f5f66346e3cfe05cc56f36264', class: "visually-hidden" }, this.textFooter), hAsync("div", { key: '1b8e30a01c3f0a711f0351b36d396f90511154c4', class: { 'prefooter': true, 'd-none': !renderPrefooter } }, hAsync("div", { key: '2c900ed450bc1dc5ad655d35f5f50b1b5a268fec', class: "footer-container" }, hAsync("slot", { key: '8ab8cef6c639251543c65ed21a1f14adf043029e', onSlotchange: this.handleSlotChange, name: "prefooter" }))), hAsync("div", { key: 'e3f3bedd9725968fbce6e887e22842a7e8e5ffa5', class: { 'footer-main': true, 'd-none': !renderMain } }, hAsync("div", { key: '76cec7363e3771da636a6c0a32afbf16d5c4d405', class: "footer-container" }, hAsync("div", { key: '4e9ea3788103175b48839b6bf815d4c675769c97', class: { 'footer-grid': true, 'd-none': allGridSlotsEmpty } }, this.device === 'mobile' ? this.renderAccordion() : this.renderColumns()), hAsync("div", { key: '64d10c9fb543290e078f7fff098b401926b3bf4b', class: {
12850
13109
  'footer-column': true,
12851
13110
  'd-none': !renderSocialmedia && !renderApp,
12852
- } }, hAsync("div", { key: 'c109f4a4e6ee2654f3312924c0afe2ccb86c35c5', class: { 'footer-socialmedia': true, 'd-none': !renderSocialmedia } }, hAsync("slot", { key: '50b9083d8962ac635f5b8e9124d401cb8113fd16', onSlotchange: this.handleSlotChange, name: "socialmedia" })), hAsync("div", { key: 'f27f992e9f3fa51f0b1a46263b8b06db904c7326', class: { 'footer-app': true, 'd-none': !renderApp } }, hAsync("slot", { key: 'b2312f504866d55a4214ea2c5a959f63d72224f5', onSlotchange: this.handleSlotChange, name: "app" }))), hAsync("div", { key: '08887180c9834a3c843227e74038c10e59eff574', class: { 'footer-businesssectors': true, 'd-none': !renderBusinesssectors } }, hAsync("slot", { key: '3c06ae979a57241646898761d7e4c07110f9982b', onSlotchange: this.handleSlotChange, name: "businesssectors" })))), hAsync("div", { key: '2b306190837589565cb1f7a849ae5ed6fb95e2f4', class: { 'footer-base': true, 'd-none': !renderBase } }, hAsync("div", { key: 'e399157216b6acd98e6fcb802f01fc50086c268c', class: "footer-container" }, hAsync("div", { key: '2b594870e3256173f6a2bd293e5050cc7733e215', class: { 'footer-copyright': true, 'd-none': !renderCopyright } }, hAsync("slot", { key: 'a79f43ab477dc12d1b9d34635784ac45feeeab59', onSlotchange: this.handleSlotChange, name: "copyright" })), hAsync("div", { key: '3298f106b3ae0fd387dd407f5b3276d99e584eeb', class: { 'footer-meta': true, 'd-none': !renderMeta } }, hAsync("slot", { key: '49b28b37aad643116441612ef10f9edcad9df2c3', onSlotchange: this.handleSlotChange, name: "meta" })))))));
13111
+ } }, hAsync("div", { key: '05b566b43e2c4fed2919e3312a718ea392cad0f7', class: { 'footer-socialmedia': true, 'd-none': !renderSocialmedia } }, hAsync("slot", { key: 'a46f739c9d4b6cbf96988f96f89d7cc093797b40', onSlotchange: this.handleSlotChange, name: "socialmedia" })), hAsync("div", { key: 'f28490dfaa982a609ba1eb393339980a358488e5', class: { 'footer-app': true, 'd-none': !renderApp } }, hAsync("slot", { key: '01c10bf12eb2f39a0dbceec320b476041d46c631', onSlotchange: this.handleSlotChange, name: "app" }))), hAsync("div", { key: '609935b6b6ee48176d7e44919726abdaff8e6161', class: { 'footer-businesssectors': true, 'd-none': !renderBusinesssectors } }, hAsync("slot", { key: '9f153ba54a08d48e55644fe58089ed7122c1cfdd', onSlotchange: this.handleSlotChange, name: "businesssectors" })))), hAsync("div", { key: '03fd76b711b9d9f1f912ac7a4199ee2706bd3a9a', class: { 'footer-base': true, 'd-none': !renderBase } }, hAsync("div", { key: '3eb810a55e3193295f8b9291bd824af77a5a2fac', class: "footer-container" }, hAsync("div", { key: '04c38d8d5e483b9f9cc8acca1cc8224e381651f1', class: { 'footer-copyright': true, 'd-none': !renderCopyright } }, hAsync("slot", { key: 'fdd11e63af64161288533c21ea455f3513ac7d87', onSlotchange: this.handleSlotChange, name: "copyright" })), hAsync("div", { key: 'adffa17e5f3b94af32e489d113afd9908e2b7abf', class: { 'footer-meta': true, 'd-none': !renderMeta } }, hAsync("slot", { key: '7ebaf69055332d184b86a58e57db1c214b5f08c6', onSlotchange: this.handleSlotChange, name: "meta" })))))));
12853
13112
  }
12854
13113
  get host() { return getElement(this); }
12855
13114
  static get style() { return postFooterCss(); }
@@ -13181,10 +13440,10 @@ class PostHeader {
13181
13440
  }, style: { '--post-header-navigation-current-inset': `${this.burgerMenu?.scrollTop ?? 0}px` }, ref: el => (this.burgerMenu = el) }, this.hasLocalNav && !this.hasTitle && (hAsync("div", { class: "local-nav" }, hAsync("slot", { name: "local-nav" }))), hAsync("div", { class: "burger-menu-body" }, hAsync("slot", { name: "audience" }), hAsync("slot", { name: "main-nav" })), hAsync("div", { class: "burger-menu-footer" }, hAsync("slot", { name: "global-nav-secondary" }), hAsync("slot", { name: "language-menu" }))));
13182
13441
  }
13183
13442
  render() {
13184
- return (hAsync(Host, { key: 'cdd9dc28893d6b4707e70cc4c8fd0940903e9062', "data-version": version$1, "data-color-scheme": "light", "data-burger-menu": this.hasBurgerMenu, "data-menu-extended": this.burgerMenuExtended }, hAsync("header", { key: '528563b69ff8f0452775b386a98de59e934c802d' }, hAsync("div", { key: '1f0ab8f7288a63bdd8070bebc5651ffdc9ebfd42', class: "global-header" }, hAsync("div", { key: 'd25d70eddb6d4edeb3be26b313b57980761979bf', class: "section" }, hAsync("div", { key: 'fe284d8015bff65be10e2231147523640c4910d4', class: "logo" }, hAsync("slot", { key: '0c6854d79f4e9695e99961481337b327af8c142c', name: "post-logo" })), hAsync("div", { key: '6d0b33a967dc32760f3d3cf74fc794a1cb622327', class: "sliding-controls" }, (hAsync("div", { key: '6ae13d6b39c19d3953fc719b0fca5cfbfa1c57b7', class: "audience" }, hAsync("slot", { key: '49d3954b3c54d898ad473a0bf7d2566f2764638c', name: "audience" }))), hAsync("slot", { key: 'c19c56d0b5c56c278b33c16ded66473fb44bfa3d', name: "global-nav-primary" }), [
13443
+ return (hAsync(Host, { key: 'd288ef2e58942c2cbc5da673076548c97eef04ed', "data-version": version$1, "data-color-scheme": "light", "data-burger-menu": this.hasBurgerMenu, "data-menu-extended": this.burgerMenuExtended }, hAsync("header", { key: '5357f3edf382dec9b552fdfe9fb51d0878de697c' }, hAsync("div", { key: 'bafa11390b33056e5a3d1a8a2922fd3a43a25020', class: "global-header" }, hAsync("div", { key: '2d54e8d2931864880ff7a28aea64625e775ce327', class: "section" }, hAsync("div", { key: 'b3a87bbf3b87213e22043d58a7298d0cff530cdf', class: "logo" }, hAsync("slot", { key: '9d559b9231dc23841e277d3f4633cdeba2da12b2', name: "post-logo" })), hAsync("div", { key: '64ebd463868ce8b417023651e745e33331feb908', class: "sliding-controls" }, (hAsync("div", { key: 'b4e7d7231a0d8bebe620d41cb655c3686449b19f', class: "audience" }, hAsync("slot", { key: '0781a76b1853a842dc74ec2a2a649f7de487e148', name: "audience" }))), hAsync("slot", { key: '25f1d5b34a5aa950014214f810f3acca95dbbe80', name: "global-nav-primary" }), [
13185
13444
  hAsync("slot", { key: "global-nav-secondary", name: "global-nav-secondary" }),
13186
13445
  hAsync("slot", { key: "language-menu", name: "language-menu" }),
13187
- ], hAsync("slot", { key: 'a7c75b4628234c282ea9556b7965a4e469783913', name: "post-login" }), this.hasMainNav && (hAsync("post-togglebutton", { key: 'e120687caa66facfb9721b6b6a8bc8691966a429', class: "burger-button", ref: el => (this.burgerMenuButton = el), onClick: () => this.toggleBurgerMenu() }, hAsync("span", { key: '43fd450ae79386d2c9bf29eb546cc66c399564e4' }, this.textMenu), hAsync("post-icon", { key: '863c5284f9f8b38e8e72390ead96eb7cccda9dd5', "aria-hidden": "true", name: "burger", "data-showwhen": "untoggled" }), hAsync("post-icon", { key: 'f4ed6301b1836c51b0dbf9ee51040bb62dd06beb', "aria-hidden": "true", name: "closex", "data-showwhen": "toggled" })))))), hAsync("div", { key: 'e5c314eae3e25b9bfb23fcbe95684ea7bc99be41', ref: el => (this.localHeader = el), class: { 'local-header': true, 'megadropdown-open': this.megadropdownOpen } }, hAsync("div", { key: '60dd8029f12ec03493b5ce81bc3e3b8338cd80e6', class: "section" }, hAsync("slot", { key: '8bbaa11f39bdf2ceb513fe698913c0350ca78776', name: "side-nav" }), hAsync("slot", { key: '0c1d5da1e42a1d96005c66de9c675c91dc2c8518', name: "title" }), this.hasTitle && hAsync("slot", { key: '8a2bb6822ba8033545e76b8f9a96f9bc7f498c9c', name: "local-nav" }), hAsync("slot", { key: '9c8df8ae91ad85ab58f9ee0bfef6a661fee59814', name: "main-nav" }), !this.hasTitle && hAsync("slot", { key: '85197bf72379b567c782bb54dbf77e6c17060895', name: "local-nav" }))), this.hasBurgerMenu && this.renderBurgerMenu())));
13446
+ ], hAsync("slot", { key: 'd7121e5e9ddf825f96a3a82e65ff135c61891adb', name: "post-login" }), this.hasMainNav && (hAsync("post-togglebutton", { key: 'dd0bcf9cfd96d4ffa44fc549d518d7b39d287156', class: "burger-button", ref: el => (this.burgerMenuButton = el), onClick: () => this.toggleBurgerMenu() }, hAsync("span", { key: '23004cb12733a7081f828d33327cc26adafe3888' }, this.textMenu), hAsync("post-icon", { key: '7fb36892eadfcce0a85d964c411aeafc3fbbde1b', "aria-hidden": "true", name: "burger", "data-showwhen": "untoggled" }), hAsync("post-icon", { key: 'a41292205573c03f25d225d4f4296f75ffe6c7ce', "aria-hidden": "true", name: "closex", "data-showwhen": "toggled" })))))), hAsync("div", { key: '7d6d1424881bb5277210c86b194dfb9e5dcb7c59', ref: el => (this.localHeader = el), class: { 'local-header': true, 'megadropdown-open': this.megadropdownOpen } }, hAsync("div", { key: '724a8d3f79112875ba343470f9d0b753ce5d4861', class: "section" }, hAsync("slot", { key: '688aafdec4e4d5565f3d0a9d9bd9bb7bc78152be', name: "side-nav" }), hAsync("slot", { key: '12590bfb4bfcc8c565f008a8e3d75b5951eb73bc', name: "title" }), this.hasTitle && hAsync("slot", { key: 'd862de0f3aaba5ea22a26c387ea7e93dc0c5e79c', name: "local-nav" }), hAsync("slot", { key: '1a25ec6694bc8b2c06e21449dc566f36595afbb5', name: "main-nav" }), !this.hasTitle && hAsync("slot", { key: '987c26ee73fb19049fdd19de79b537b71e2771de', name: "local-nav" }))), this.hasBurgerMenu && this.renderBurgerMenu())));
13188
13447
  }
13189
13448
  get host() { return getElement(this); }
13190
13449
  static get watchers() { return {
@@ -13316,7 +13575,7 @@ class PostIcon {
13316
13575
  }).filter(([_key, value]) => value !== null));
13317
13576
  }
13318
13577
  render() {
13319
- return (hAsync(Host, { key: 'ce81db69bf77d09a0a331bac48cdaede7ff3cb8e', "data-version": version$1 }, hAsync("span", { key: '211f999da845687289fd991421f4315a090a67ba', style: this.getStyles() })));
13578
+ return (hAsync(Host, { key: '405ccfde4206c14f044575d0b23998d93a03ffb6', "data-version": version$1 }, hAsync("span", { key: 'ad70ccf63add4b881ef6096ae460e13fba09f508', style: this.getStyles() })));
13320
13579
  }
13321
13580
  get host() { return getElement(this); }
13322
13581
  static get style() { return postIconCss(); }
@@ -13398,7 +13657,7 @@ class PostLanguageMenu {
13398
13657
  }
13399
13658
  componentDidLoad() {
13400
13659
  // Initially set variants and active language
13401
- // Handles cases where the language-menu is rendered after the language-options have been rendered
13660
+ // Handles cases where the language-menu is rendered after the language-menu-items have been rendered
13402
13661
  this.updateChildrenVariant();
13403
13662
  }
13404
13663
  /**
@@ -13636,7 +13895,7 @@ class PostLinkarea {
13636
13895
  }));
13637
13896
  }
13638
13897
  render() {
13639
- return (hAsync(Host, { key: 'ceaff2e12e49f0df50b12770d803f9708b0d7a1c', "data-version": version$1, onClick: (e) => this.dispatchClick(e) }, hAsync("slot", { key: 'f4230e0a8c74fdc143dd1e60843a74a1221396f7' })));
13898
+ return (hAsync(Host, { key: 'a187468c97584b393efb0f73966716947243fe1f', "data-version": version$1, onClick: (e) => this.dispatchClick(e) }, hAsync("slot", { key: 'a374c748871f36acf8ceda423c121645e97a6ce1' })));
13640
13899
  }
13641
13900
  get host() { return getElement(this); }
13642
13901
  static get style() { return postLinkareaCss(); }
@@ -13678,7 +13937,7 @@ class PostListbox {
13678
13937
  option.highlighted = false;
13679
13938
  });
13680
13939
  this.highlightedIndex = -1;
13681
- this.filter('');
13940
+ this.clearActive();
13682
13941
  };
13683
13942
  this.clearActive = () => {
13684
13943
  this.highlightedIndex = -1;
@@ -13782,7 +14041,7 @@ class PostListbox {
13782
14041
  this.updateSelection(event.detail);
13783
14042
  }
13784
14043
  render() {
13785
- return (hAsync(Host, { key: '55f1f7335a5eed38163aa58a43f091f130a9a2ff', "data-version": version$1, role: "listbox" }, hAsync("post-popovercontainer", { key: '303a6b38d8c5e5fae7b295dd0a58008c7b39a23f', placement: "bottom-start", ref: el => (this.popoverContainer = el) }, hAsync("slot", { key: '165627beb864c21081796db3d380eded51e780dc', name: "blank-slate" }), hAsync("slot", { key: '57d445590587148bdb5e4d5d7338fb4003020a2a' }))));
14044
+ return (hAsync(Host, { key: 'a59296af752a3f88bcd70663d0ce12f61718e92f', "data-version": version$1, role: "listbox" }, hAsync("post-popovercontainer", { key: '665dd563705515022edc79a4d98e9ac43b80c525', placement: "bottom-start", ref: el => (this.popoverContainer = el) }, hAsync("slot", { key: 'd8a37fd905dfaca07286913a0c680e61744d65e1', name: "blank-slate" }), hAsync("slot", { key: '22e367ae36329d0586e1a275692983cf0c004df4' }))));
13786
14045
  }
13787
14046
  get host() { return getElement(this); }
13788
14047
  static get style() { return postListboxCss(); }
@@ -13819,9 +14078,9 @@ class PostListboxOption {
13819
14078
  this.highlighted = false;
13820
14079
  }
13821
14080
  render() {
13822
- return (hAsync(Host, { key: '201be2928d48dfa1f3d1183e7453042c0296de19', "data-version": version$1, role: "option", "aria-selected": `${this.selected}`, "data-active": this.highlighted ? 'true' : null,
14081
+ return (hAsync(Host, { key: '38481f1a4721d50530bbd96a80ebc89933c8311c', "data-version": version$1, role: "option", "aria-selected": `${this.selected}`, "data-active": this.highlighted ? 'true' : null,
13823
14082
  /* Prevent focus change from triggering onblur event in post-autocomplete */
13824
- onPointerDown: (e) => e.preventDefault(), onClick: () => this.postOptionSelected.emit(this.value), id: `post-listbox-option-${this.optionId}` }, hAsync("span", { key: 'cbba5a8fe218d6a4b99c70bc38077266361d2840', class: "option-content" }, this.value, hAsync("span", { key: '721e1ee9848f73b1020e5847493c2232d2ae0754', class: "option-description" }, hAsync("slot", { key: '1e54aab82416250673ca448af8de308b0c2f8ade' }))), this.selected && hAsync("post-icon", { key: '3badd4a9cea72cb41aaf160cfa2a09dd343681b0', "aria-hidden": "true", name: "checkmark" })));
14083
+ onPointerDown: (e) => e.preventDefault(), onClick: () => this.postOptionSelected.emit(this.value), id: `post-listbox-option-${this.optionId}` }, hAsync("span", { key: '25403d2e68f44f68d5c3f2097c5aab57f90176cf', class: "option-content" }, this.value, hAsync("span", { key: '0caf89cfb81695f33637facd07dcf628fa6024a8', class: "option-description" }, hAsync("slot", { key: '857ed6d15014fb8d32f7074c9f1622d540f8ed13' }))), this.selected && hAsync("post-icon", { key: '3b300532591be12424a84cebd082b8c0c3ca6935', "aria-hidden": "true", name: "checkmark" })));
13825
14084
  }
13826
14085
  static get style() { return postListboxOptionCss(); }
13827
14086
  static get cmpMeta() { return {
@@ -13868,7 +14127,7 @@ class PostLogo {
13868
14127
  render() {
13869
14128
  const logoLink = this.url && (typeof this.url === 'string' ? this.url : this.url.href);
13870
14129
  const LogoTag = logoLink ? 'a' : 'span';
13871
- return (hAsync(Host, { key: 'b9d1a0fcdbbb7789863bd89d0cb1154f432d7749', "data-version": version$1 }, hAsync(LogoTag, { key: 'e9e5f76950b4e95a9dc8d8f961c75f635007b61f', class: `logo ${logoLink ? 'logo-link' : ''}`, ...(logoLink ? { href: logoLink } : {}) }, hAsync("span", { key: '7f9647d7fc00d1e79e544cbdd11fce5313b2bc83', class: "description" }, hAsync("slot", { key: '8eb8bb0385b14a98aadf1cd956d74972179bee6b', onSlotchange: () => this.checkDescription() })), hAsync("svg", { key: '1bc78071d7ee521a249452af9f8b34108297205c', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 72 72", "aria-hidden": "true" }, hAsync("g", { key: '9d10890ce19c40c38a976dbbbcb9e3939611f765', id: "Logo" }, hAsync("rect", { key: 'c0f9312024721329e2427a623c78658d094d039c', fill: "#ffcc00", x: "0", y: "0", width: "72", height: "72" }), hAsync("polygon", { key: '36f41cc32b0a1d92ba4c1b8cb56e9c6f2b454a4f', fill: "#ff0000", points: "34,32.3 34,19 19.7,19 19.7,29.1 10,29.1 10,42.9 19.7,42.9 19.7,53 34,53 34,39.7 30.6,39.7 30.6,49.8 23.1,49.8 23.1,39.7 13.4,39.7 13.4,32.3 23.1,32.3 23.1,22.2 30.6,22.2 30.6,32.3" }), hAsync("path", { key: 'e32537010333ac42f7614203062b424c4feb819f', d: "M53.56234,31.10526c0,2.41272-1.99154,4.29475-4.51723,4.29475H45.2v-8.3h3.84511C51.66802,27.1,53.56234,28.78889,53.56234,31.10526z M50.69666,19H36v34h9.2V42.9h5.49666c6.75131,0,11.9971-5.15137,11.9971-11.8057C62.69376,24.39136,57.35099,19,50.69666,19z" }))))));
14130
+ return (hAsync(Host, { key: '1f69b0ddc0ecf2fde47423cd7824fcbe76e4a529', "data-version": version$1 }, hAsync(LogoTag, { key: '096736bd50a6dd43e02a104e7e81897cb286db60', class: `logo ${logoLink ? 'logo-link' : ''}`, ...(logoLink ? { href: logoLink } : {}) }, hAsync("span", { key: 'bc49b9591424f02744f771eb1079911f02ceca33', class: "description" }, hAsync("slot", { key: 'ea905eac805e2a9940bfe50aa222bef738d15d27', onSlotchange: () => this.checkDescription() })), hAsync("svg", { key: '482d94c38347017269dabd0ab3d15f4ede14f187', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 72 72", "aria-hidden": "true" }, hAsync("g", { key: 'fcd3dc56e8a0e448abe65b557639a8bea8ca580f', id: "Logo" }, hAsync("rect", { key: '11ed7bad596ee07301f1c1101ddded089ef2bf99', fill: "#ffcc00", x: "0", y: "0", width: "72", height: "72" }), hAsync("polygon", { key: '6ab9d28c8492c746a2620cff62dbd92a59a00aff', fill: "#ff0000", points: "34,32.3 34,19 19.7,19 19.7,29.1 10,29.1 10,42.9 19.7,42.9 19.7,53 34,53 34,39.7 30.6,39.7 30.6,49.8 23.1,49.8 23.1,39.7 13.4,39.7 13.4,32.3 23.1,32.3 23.1,22.2 30.6,22.2 30.6,32.3" }), hAsync("path", { key: '8b96cee7ee8ad1ec3c22aaf7928f7a711c05c828', d: "M53.56234,31.10526c0,2.41272-1.99154,4.29475-4.51723,4.29475H45.2v-8.3h3.84511C51.66802,27.1,53.56234,28.78889,53.56234,31.10526z M50.69666,19H36v34h9.2V42.9h5.49666c6.75131,0,11.9971-5.15137,11.9971-11.8057C62.69376,24.39136,57.35099,19,50.69666,19z" }))))));
13872
14131
  }
13873
14132
  get host() { return getElement(this); }
13874
14133
  static get style() { return postLogoCss(); }
@@ -14018,7 +14277,7 @@ class PostMainnavigation {
14018
14277
  }, NAVBAR_DISABLE_DURATION);
14019
14278
  }
14020
14279
  render() {
14021
- return (hAsync(Host, { key: '374379b09ad5578002153a0a80afaf9308f1c964', version: version$1, class: this.canScroll ? 'scrollable' : '' }, hAsync("div", { key: 'b78537cec32cd23c7908482d73b7624e4662b1c8', "aria-hidden": "true", class: { 'scroll-control scroll-left': true, 'd-none': !this.canScrollLeft }, onMouseDown: e => this.handleScrollButtonClick(e, 'left') }, hAsync("post-icon", { key: 'd196c0f3b480f5ede486945c684afe4a06a96af0', "aria-hidden": "true", name: "chevronleft" })), hAsync("nav", { key: '5ee27a1b6cfc8aa59820514708485b334837c09d', ref: el => (this.navbar = el), "aria-label": this.textMain }, hAsync("slot", { key: 'e0a1719713e59899ec4fd1ff057ab5e3c13f7069' })), hAsync("div", { key: 'd1e2b456cadec20bb9c857fee23a3955ab20a2b2', "aria-hidden": "true", class: { 'scroll-control scroll-right': true, 'd-none': !this.canScrollRight }, onMouseDown: e => this.handleScrollButtonClick(e, 'right') }, hAsync("post-icon", { key: 'dec56cf1fb67c5afb597936d0f99e6389517819f', "aria-hidden": "true", name: "chevronright" }))));
14280
+ return (hAsync(Host, { key: 'cf7b2328a41b41ca28956120b8042590655e7bb2', version: version$1, class: this.canScroll ? 'scrollable' : '' }, hAsync("div", { key: 'a25c55cf7b11a11ce86fb134dd57dbdad3d30301', "aria-hidden": "true", class: { 'scroll-control scroll-left': true, 'd-none': !this.canScrollLeft }, onMouseDown: e => this.handleScrollButtonClick(e, 'left') }, hAsync("post-icon", { key: '013778591637d5ee0ac2cd2bf3f23c677ba2a13f', "aria-hidden": "true", name: "chevronleft" })), hAsync("nav", { key: 'a007b7be57429580de35865e5eff0c54378d0a8e', ref: el => (this.navbar = el), "aria-label": this.textMain }, hAsync("slot", { key: 'bc8e1db18430ee43b5963539fbaa65e1fb1b0c55' })), hAsync("div", { key: 'cdb413fedc9a90c712db0fe5d6ab760a426ff632', "aria-hidden": "true", class: { 'scroll-control scroll-right': true, 'd-none': !this.canScrollRight }, onMouseDown: e => this.handleScrollButtonClick(e, 'right') }, hAsync("post-icon", { key: 'b2df569a79881b3a044556ba9c0f2e2b0646e78b', "aria-hidden": "true", name: "chevronright" }))));
14022
14281
  }
14023
14282
  get host() { return getElement(this); }
14024
14283
  static get style() { return postMainnavigationCss(); }
@@ -14053,6 +14312,8 @@ var __decorate$h = (undefined && undefined.__decorate) || function (decorators,
14053
14312
  return c > 3 && r && Object.defineProperty(target, key, r), r;
14054
14313
  };
14055
14314
  class PostMegadropdown {
14315
+ /** Tracks the currently active dropdown instance. */
14316
+ static { this.activeDropdown = null; }
14056
14317
  get megadropdownTrigger() {
14057
14318
  const hostId = this.host.getAttribute('id');
14058
14319
  return hostId ? document.querySelector(`post-megadropdown-trigger[for="${hostId}"]`) : null;
@@ -14334,7 +14595,7 @@ class PostMegadropdown {
14334
14595
  }
14335
14596
  render() {
14336
14597
  const containerStyle = this.isVisible ? {} : { display: 'none' };
14337
- return (hAsync(Host, { key: 'd181a65a25eafbbc645c717ee2f447caf1ab040a', version: version$1 }, hAsync("div", { key: '7bd6003c2e696e64a14b98a94e6c67d66d143192', ref: el => (this.animatedContainer = el), class: "megadropdown", style: containerStyle }, hAsync("div", { key: 'c79d10e279a37d94c2849ce4cac7bf4d260a0ca3', class: "section" }, this.device !== 'desktop' && this.megadropdownTitle && (hAsync("p", { key: '7e7769acb5391cb33958b1bd9739583e25def2cc', class: "megadropdown-title" }, this.megadropdownTitle)), hAsync("div", { key: 'fe7b63bd6b9daff336e599cd9ca43338a36fa595', class: "megadropdown-content" }, hAsync("slot", { key: 'cc19bcec12adee943391ec818bcfa8cd8290cb49' })), this.device === 'desktop' ? (hAsync("post-closebutton", { onClick: () => this.hide(true), class: "close-button", size: "small", placement: "manual" }, this.textClose)) : (hAsync("button", { onClick: () => this.hide(true), class: "back-button" }, hAsync("post-icon", { name: "arrowleft" }), this.textBack))))));
14598
+ return (hAsync(Host, { key: 'c0854fff62bf5e8de1597e46051aea5f300ee686', version: version$1 }, hAsync("div", { key: '1f4f66b74d7129481d76f1eec15a924b2c37718c', ref: el => (this.animatedContainer = el), class: "megadropdown", style: containerStyle }, hAsync("div", { key: 'af743442fe3ad6211cddccddf5d0803de9f501b5', class: "section" }, this.device !== 'desktop' && this.megadropdownTitle && (hAsync("p", { key: '35a03b2ee32498aa157140d4e6916cbf66655e5c', class: "megadropdown-title" }, this.megadropdownTitle)), hAsync("div", { key: '6c4efb52e7bb04c4f40d5b3f739ca69771c48602', class: "megadropdown-content" }, hAsync("slot", { key: '2b3200495cf23fe049734de9de9a5a1f4c9b09f3' })), this.device === 'desktop' ? (hAsync("post-closebutton", { onClick: () => this.hide(true), class: "close-button", size: "small", placement: "manual" }, this.textClose)) : (hAsync("button", { onClick: () => this.hide(true), class: "back-button" }, hAsync("post-icon", { name: "arrowleft" }), this.textBack))))));
14338
14599
  }
14339
14600
  get host() { return getElement(this); }
14340
14601
  static get style() { return postMegadropdownCss(); }
@@ -14359,8 +14620,6 @@ class PostMegadropdown {
14359
14620
  "$attrsToReflect$": [["textClose", "text-close"], ["textBack", "text-back"]]
14360
14621
  }; }
14361
14622
  }
14362
- /** Tracks the currently active dropdown instance. */
14363
- PostMegadropdown.activeDropdown = null;
14364
14623
  __decorate$h([
14365
14624
  Required(),
14366
14625
  Type('string')
@@ -14439,7 +14698,7 @@ class PostMegadropdownTrigger {
14439
14698
  this.megadropdown.toggle();
14440
14699
  }
14441
14700
  render() {
14442
- return (hAsync(Host, { key: '7dea071ab1a606e7427631e45a1521aef0be85fe', "data-version": version$1 }, hAsync("button", { key: '4486549cfbad6f00de4a44c7af550dac428b9450', ref: el => (this.interactiveButton = el), type: "button", "aria-haspopup": "menu", "aria-expanded": this.isMegadropdownExpanded.toString(), onClick: this.onClick.bind(this), onKeyDown: this.onKeyDown.bind(this), class: { active: this.active } }, hAsync("span", { key: '566388f5cc5fd7eb4227de6fcd0205a3c3c0d54d' }, hAsync("span", { key: 'e874004dc5a3d8bf3a422c9b783c24dd6968cf74', innerHTML: this.slottedContent }), hAsync("span", { key: 'd89b1f6867f2b41934edb4a0865aebbdb21741a9', "aria-hidden": "true" }, hAsync("slot", { key: 'fed72c4e9ad605db0d65c1c32e91976ae3147a4b' }))), hAsync("post-icon", { key: '882e65fd30695db2b8a74be8258e69eed90b8f78', name: "chevrondown" }))));
14701
+ return (hAsync(Host, { key: '7e6201e3cdea96113bbebdeeb805acff557c8bbb', "data-version": version$1 }, hAsync("button", { key: '1863f48dbd6e98b7a2b226b7c3b25b16a38c644b', ref: el => (this.interactiveButton = el), type: "button", "aria-haspopup": "menu", "aria-expanded": this.isMegadropdownExpanded.toString(), onClick: this.onClick.bind(this), onKeyDown: this.onKeyDown.bind(this), class: { active: this.active } }, hAsync("span", { key: 'dee7e77e45914a3e40a9f5027570bef0035dfdf2' }, hAsync("span", { key: '362865f7946f14f45ecdb240e81f09370e3f6d10', innerHTML: this.slottedContent }), hAsync("span", { key: 'd61eb63433aa65631f787646df2c6705c3d6e7a1', "aria-hidden": "true" }, hAsync("slot", { key: 'c831f7299fe3c80b8229c861e01e09a2ee481bc8' }))), hAsync("post-icon", { key: 'bcc8ed53293e16d4571e989a491760f98425b298', name: "chevrondown" }))));
14443
14702
  }
14444
14703
  get host() { return getElement(this); }
14445
14704
  static get style() { return postMegadropdownTriggerCss(); }
@@ -14587,17 +14846,32 @@ class PostMenu {
14587
14846
  this.toggleMenu.emit(this.isVisible);
14588
14847
  if (this.isVisible) {
14589
14848
  this.lastFocusedElement = this.root?.activeElement;
14590
- requestAnimationFrame(() => {
14591
- const menuItems = this.getSlottedItems();
14592
- if (menuItems.length > 0) {
14593
- menuItems[0].focus();
14594
- }
14595
- });
14849
+ // Only focus the first item if the trigger was keyboard-focus-visible
14850
+ // that's the browser's own signal for a keyboard-driven interaction.
14851
+ if (this.wasFocusVisible(this.lastFocusedElement)) {
14852
+ requestAnimationFrame(() => {
14853
+ const menuItems = this.getSlottedItems();
14854
+ if (menuItems.length > 0) {
14855
+ menuItems[0].focus();
14856
+ }
14857
+ });
14858
+ }
14596
14859
  }
14597
14860
  else if (this.lastFocusedElement) {
14598
14861
  this.lastFocusedElement.focus();
14599
14862
  }
14600
14863
  }
14864
+ wasFocusVisible(element) {
14865
+ if (!element)
14866
+ return false;
14867
+ try {
14868
+ return element.matches(':focus-visible');
14869
+ }
14870
+ catch {
14871
+ // Not supported, fall back to always focusing
14872
+ return true;
14873
+ }
14874
+ }
14601
14875
  controlKeyDownHandler(e) {
14602
14876
  const menuItems = this.getSlottedItems();
14603
14877
  if (menuItems.length === 0) {
@@ -14649,7 +14923,7 @@ class PostMenu {
14649
14923
  ]));
14650
14924
  }
14651
14925
  render() {
14652
- return (hAsync(Host, { key: 'ec2d0c28803ab242f28e942c52d03b38d40f3704', "data-version": version$1 }, hAsync("post-popovercontainer", { key: 'c2bbf5c95e200aecbdc55b94676ab1b1b0a32d13', onPostShow: this.handlePostShown.bind(this), onPostBeforeToggle: this.handlePostBeforeToggle.bind(this), placement: this.placement, ref: e => (this.popoverRef = e) }, hAsync("div", { key: '80e56e976e944955f72b504b33ee3a16117f4551', part: "post-menu" }, hAsync("slot", { key: 'cab13b8104f0be049e31fe5b3eca3af85bec0869', name: "header" }), hAsync("slot", { key: 'acbbd8565bb90c91dad4713fbc4e8c50d10390e8' })))));
14926
+ return (hAsync(Host, { key: '22441c2bef0402f10e77b96b8a5d48a0648615f7', "data-version": version$1 }, hAsync("post-popovercontainer", { key: '8b37fe55d58a3a486e947266348b55408999a8bb', onPostShow: this.handlePostShown.bind(this), onPostBeforeToggle: this.handlePostBeforeToggle.bind(this), placement: this.placement, ref: e => (this.popoverRef = e) }, hAsync("div", { key: '2679eb9c4a95585b8aaf74e29f026c84b10aa6f3', part: "post-menu" }, hAsync("slot", { key: '0da58a1bde1bdb4c1f8b7b19ca8cbde14d7946fc', name: "header" }), hAsync("slot", { key: '801f7bc59d4d3267728b9adf0750dbea76a7652c' })))));
14653
14927
  }
14654
14928
  get host() { return getElement(this); }
14655
14929
  static get style() { return postMenuCss(); }
@@ -14683,7 +14957,7 @@ __decorate$f([
14683
14957
  EventFrom('post-popovercontainer')
14684
14958
  ], PostMenu.prototype, "handlePostBeforeToggle", null);
14685
14959
 
14686
- const postMenuItemCss = () => `post-menu-item button{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;width:100%}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-menu-item button{background-color:ButtonFace !important}post-menu-item button:hover{background-color:Highlight !important}}post-menu-item a{text-decoration:none}post-menu-item button,post-menu-item a{position:relative;display:flex;align-items:center;padding:8px 12px 8px 16px;gap:12px;font-size:.875rem;color:#050400;border-radius:0}post-menu-item button post-icon,post-menu-item a post-icon{width:16px;height:16px;margin-block:4px}@media screen and (min-width: 780px){post-menu-item button,post-menu-item a{font-size:1rem;padding-block:12px;gap:16px}post-menu-item button post-icon,post-menu-item a post-icon{width:24px;height:24px;margin:0}}@media screen and (min-width: 1024px){post-menu-item button,post-menu-item a{font-size:1.25rem;padding-block:13px}}post-menu-item button:focus-visible,post-menu-item a:focus-visible{outline-offset:2px !important;border-radius:4px}post-menu-item button:hover,post-menu-item a:hover{background-color:#504f4b;color:#fff}`;
14960
+ const postMenuItemCss = () => `post-menu-item button{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;width:100%}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-menu-item button{background-color:ButtonFace !important}post-menu-item button:hover{background-color:Highlight !important}}post-menu-item button,post-menu-item a{position:relative;display:flex;align-items:center;padding:8px 12px 8px 16px;gap:12px;font-size:.875rem;color:#050400;border-radius:0;text-decoration:none}@media screen and (min-width: 780px){post-menu-item button,post-menu-item a{font-size:1rem;padding-block:12px;gap:16px}}@media screen and (min-width: 1024px){post-menu-item button,post-menu-item a{font-size:1.25rem;padding-block:13px}}post-menu-item button:focus-visible,post-menu-item a:focus-visible{outline-offset:2px !important;border-radius:4px}post-menu-item button:hover,post-menu-item a:hover{background-color:#504f4b;color:#fff}post-menu-item button post-icon,post-menu-item a post-icon{width:16px;height:16px;margin-block:4px}@media screen and (min-width: 780px){post-menu-item button post-icon,post-menu-item a post-icon{width:24px;height:24px;margin:0}}`;
14687
14961
 
14688
14962
  class PostMenuItem {
14689
14963
  constructor(hostRef) {
@@ -14771,7 +15045,7 @@ class PostMenuTrigger {
14771
15045
  return null;
14772
15046
  }
14773
15047
  render() {
14774
- return (hAsync(Host, { key: '2e0560835a4202f9a84990a60305bf7dc8adbc98', "data-version": version$1 }, hAsync("slot", { key: 'd175e8bc5ddb253476f9795d7b0b2df2797c46aa' })));
15048
+ return (hAsync(Host, { key: 'f75522d28e9a45c80846a191cff3ea2eb51b5bde', "data-version": version$1 }, hAsync("slot", { key: 'bc70e3ddc8dc372611c00a4cda52cd35ede02a3f' })));
14775
15049
  }
14776
15050
  get host() { return getElement(this); }
14777
15051
  static get style() { return postMenuTriggerCss(); }
@@ -14807,7 +15081,7 @@ class PostNumberInput {
14807
15081
  this.isIncrementDisabled = false;
14808
15082
  this.isDecrementDisabled = false;
14809
15083
  this.small = false;
14810
- this.setupInput = debounce$1(50, () => {
15084
+ this.setupInput = debounce(50, () => {
14811
15085
  this.input = this.input ?? getSlottedElement(this.host, 'input[type="number"]');
14812
15086
  if (!this.input)
14813
15087
  return;
@@ -14881,10 +15155,10 @@ class PostNumberInput {
14881
15155
  }
14882
15156
  render() {
14883
15157
  const areButtonsShown = !!this.input;
14884
- return (hAsync(Host, { key: '770a0b0fe9b018afcb81f4477f45e6ea8ce27ad7', "data-version": version$1, class: {
15158
+ return (hAsync(Host, { key: '9bc4f1aff3f0347c5419cbc8c3f03660c8ce0ec3', "data-version": version$1, class: {
14885
15159
  'number-input-sm': this.small,
14886
15160
  'disabled': this.isDisabled,
14887
- } }, areButtonsShown && (hAsync("div", { key: '8e599b55dc4362674719df75a573bf9ce34e79ff', "aria-hidden": "true", onPointerDown: () => this.step('down'), class: { 'step-button': true, 'disabled': this.isDecrementDisabled } }, hAsync("post-icon", { key: 'aa55be92c51df3cc1b7f006a4400090eb345747c', name: "minus" }))), hAsync("div", { key: '030ea2a621529e61757edfc5a79fa353327a8102', class: "input-container" }, hAsync("slot", { key: '800d325da194bd0f32eab2a2bba21211aaf1829b', onSlotchange: () => this.setupInput() })), areButtonsShown && (hAsync("div", { key: '901dc835f21fbb51146d93f7f34775c600163993', "aria-hidden": "true", onPointerDown: () => this.step('up'), class: { 'step-button': true, 'disabled': this.isIncrementDisabled } }, hAsync("post-icon", { key: '1a7b93951f1f9978a1d321b33b2083774dcf86b0', name: "plus" })))));
15161
+ } }, areButtonsShown && (hAsync("div", { key: '556bdd45f2dc5b924f7bb2eab0c059c3000bf404', "aria-hidden": "true", onPointerDown: () => this.step('down'), class: { 'step-button': true, 'disabled': this.isDecrementDisabled } }, hAsync("post-icon", { key: 'fc8ee1c88ab96345a0aa81928c7fd4d45dd88414', name: "minus" }))), hAsync("div", { key: '9284ca5c21009bd79b144e61a33017501646fceb', class: "input-container" }, hAsync("slot", { key: 'e6dfefd93d26fee610a82863a66f55939552ff7c', onSlotchange: () => this.setupInput() })), areButtonsShown && (hAsync("div", { key: 'd74c99d7f2db50387cd3f0d6033339fbf9480a24', "aria-hidden": "true", onPointerDown: () => this.step('up'), class: { 'step-button': true, 'disabled': this.isIncrementDisabled } }, hAsync("post-icon", { key: '25635f72d1b067663f8458bdbb7994c7dfafa6e8', name: "plus" })))));
14888
15162
  }
14889
15163
  get host() { return getElement(this); }
14890
15164
  static get style() { return postNumberInputCss(); }
@@ -14938,7 +15212,7 @@ class PostPagination {
14938
15212
  this.page = 1;
14939
15213
  this.lastWindowWidth = window.innerWidth;
14940
15214
  this.loaded = false;
14941
- this.debouncedResize = debounce(this.handleResizeInternal.bind(this), RESIZE_DEBOUNCE_MS);
15215
+ this.debouncedResize = debounce$1(this.handleResizeInternal.bind(this), RESIZE_DEBOUNCE_MS);
14942
15216
  this.measurementTimeoutId = null;
14943
15217
  }
14944
15218
  handlePropsChange() {
@@ -15548,7 +15822,7 @@ __decorate$d([
15548
15822
  Type('string')
15549
15823
  ], PostPagination.prototype, "textLast", void 0);
15550
15824
 
15551
- const postPopoverCss = () => `*{box-sizing:border-box}:host{display:contents}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.popover-container{color:var(--post-current-fg);background-color:var(--post-current-bg);display:flex;align-items:self-start;padding:8px;min-width:160px;max-width:var(--post-popover-max-width, 280px)}.popover-content{padding:8px;flex-grow:1}`;
15825
+ const postPopoverCss = () => `*{box-sizing:border-box}:host{display:contents}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.popover-container{color:var(--post-current-fg);background-color:var(--post-current-bg);display:flex;align-items:self-start;padding:8px;min-width:160px;max-width:var(--post-popover-max-width, 280px)}.popover-content{padding:8px;flex-grow:1}post-closebutton{color-scheme:light}`;
15552
15826
 
15553
15827
  var __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
15554
15828
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -15575,7 +15849,7 @@ class PostPopover {
15575
15849
  /**
15576
15850
  * Show a little indicator arrow
15577
15851
  */
15578
- // eslint-disable-next-line @stencil-community/ban-default-true
15852
+ // eslint-disable-next-line stencil/ban-default-true
15579
15853
  this.arrow = true;
15580
15854
  this.breakpointChange = () => {
15581
15855
  requestAnimationFrame(() => this.updateEdgeGap());
@@ -15632,10 +15906,10 @@ class PostPopover {
15632
15906
  }
15633
15907
  }
15634
15908
  render() {
15635
- return (hAsync(Host, { key: 'a389be5fa8b44b8f606041313a5c68897e12fbe9', "data-version": version$1 }, hAsync("post-popovercontainer", { key: 'eedea7fb9aec40bb76d43a17be36ba72c9db763f', arrow: this.arrow, placement: this.placement, edgeGap: this.edgeGap, ref: e => {
15909
+ return (hAsync(Host, { key: '0e57981004d99d528a4652598739afbf1208376c', "data-version": version$1 }, hAsync("post-popovercontainer", { key: '380838970ed2c62f9e21e95da6957e9ff36db31a', arrow: this.arrow, placement: this.placement, edgeGap: this.edgeGap, autoHide: true, ref: e => {
15636
15910
  if (e)
15637
15911
  this.popoverRef = e;
15638
- } }, hAsync("div", { key: '699d1b9923ea5bdf2fc822cd45f32a087099557a', class: "popover-container" }, hAsync("div", { key: 'f80a86811d07a9a2478e28e7c8df476000850f08', class: "popover-content" }, hAsync("slot", { key: '06fc1c9b71dbdb59c12889d378c59a183a8e9f64' })), hAsync("post-closebutton", { key: 'a8ff2d07eef92aa6e88f4ff7c9f42b59395c6760', onClick: () => this.hide() }, this.textClose)))));
15912
+ } }, hAsync("div", { key: '77465a8e943f61492869a3e05cf03f90b9fd553c', class: "popover-container" }, hAsync("div", { key: '0ab4e621ecc58a9775c4a9b8dfba3d26eb577878', class: "popover-content" }, hAsync("slot", { key: '1b2d37d50ef23edad118abc5949686e59e15b931' })), hAsync("post-closebutton", { key: '8c2138b22f49681d37d2f38f6fb6331c730849f3' }, this.textClose)))));
15639
15913
  }
15640
15914
  get host() { return getElement(this); }
15641
15915
  static get style() { return postPopoverCss(); }
@@ -20733,7 +21007,7 @@ class PostPopoverTrigger {
20733
21007
  this.trigger.ariaControlsElements = [popover];
20734
21008
  }
20735
21009
  else {
20736
- popover.id || (popover.id = `popover-${crypto.randomUUID()}`);
21010
+ popover.id ||= `popover-${crypto.randomUUID()}`;
20737
21011
  this.trigger.setAttribute('aria-controls', popover.id);
20738
21012
  }
20739
21013
  }
@@ -20747,7 +21021,7 @@ class PostPopoverTrigger {
20747
21021
  focusTrigger() {
20748
21022
  // Restores focus to the trigger
20749
21023
  if (!this.popoverOpen && this.trigger) {
20750
- this.trigger.focus();
21024
+ this.trigger.focus({ preventScroll: true });
20751
21025
  }
20752
21026
  }
20753
21027
  constructor(hostRef) {
@@ -20783,7 +21057,7 @@ class PostPopoverTrigger {
20783
21057
  this.popover?.removeEventListener('postToggle', this.boundHandlePostToggle);
20784
21058
  }
20785
21059
  render() {
20786
- return (hAsync(Host, { key: '8100af4eaff1f8b790d7019414b078018ffc5ed1', "data-version": version$1 }, hAsync("slot", { key: '91e7f8f31bdc84290618a5c8b29e38cca77de177', onSlotchange: () => this.setupTrigger() })));
21060
+ return (hAsync(Host, { key: 'f9c320748c1cfdfb6accce4e20c64ea7c00d20c5', "data-version": version$1 }, hAsync("slot", { key: 'e00dcaa23ec3e2976136c26931780d083b6f1a8f', onSlotchange: () => this.setupTrigger() })));
20787
21061
  }
20788
21062
  get host() { return getElement(this); }
20789
21063
  static get watchers() { return {
@@ -20814,6 +21088,7 @@ __decorate$b([
20814
21088
  * @see https://floating-ui.com/docs/virtual-elements
20815
21089
  */
20816
21090
 
21091
+ const sides = ['top', 'right', 'bottom', 'left'];
20817
21092
  const min = Math.min;
20818
21093
  const max = Math.max;
20819
21094
  const round = Math.round;
@@ -20906,12 +21181,12 @@ function getOppositePlacement(placement) {
20906
21181
  return oppositeSideMap[side] + placement.slice(side.length);
20907
21182
  }
20908
21183
  function expandPaddingObject(padding) {
21184
+ var _padding$top, _padding$right, _padding$bottom, _padding$left;
20909
21185
  return {
20910
- top: 0,
20911
- right: 0,
20912
- bottom: 0,
20913
- left: 0,
20914
- ...padding
21186
+ top: (_padding$top = padding.top) != null ? _padding$top : 0,
21187
+ right: (_padding$right = padding.right) != null ? _padding$right : 0,
21188
+ bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0,
21189
+ left: (_padding$left = padding.left) != null ? _padding$left : 0
20915
21190
  };
20916
21191
  }
20917
21192
  function getPaddingObject(padding) {
@@ -20986,13 +21261,9 @@ function computeCoordsFromPlacement(_ref, placement, rtl) {
20986
21261
  y: reference.y
20987
21262
  };
20988
21263
  }
20989
- switch (getAlignment(placement)) {
20990
- case 'start':
20991
- coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
20992
- break;
20993
- case 'end':
20994
- coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
20995
- break;
21264
+ const alignment = getAlignment(placement);
21265
+ if (alignment) {
21266
+ coords[alignmentAxis] += commonAlign * (alignment === 'end' ? 1 : -1) * (rtl && isVertical ? -1 : 1);
20996
21267
  }
20997
21268
  return coords;
20998
21269
  }
@@ -21041,10 +21312,7 @@ async function detectOverflow(state, options) {
21041
21312
  height: rects.floating.height
21042
21313
  } : rects.reference;
21043
21314
  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
21044
- const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
21045
- x: 1,
21046
- y: 1
21047
- } : {
21315
+ const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) && (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
21048
21316
  x: 1,
21049
21317
  y: 1
21050
21318
  };
@@ -21217,17 +21485,16 @@ const arrow$1 = options => ({
21217
21485
 
21218
21486
  // Make sure the arrow doesn't overflow the floating element if the center
21219
21487
  // point is outside the floating element's bounds.
21220
- const min$1 = minPadding;
21221
21488
  const max = clientSize - arrowDimensions[length] - maxPadding;
21222
21489
  const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
21223
- const offset = clamp(min$1, center, max);
21490
+ const offset = clamp(minPadding, center, max);
21224
21491
 
21225
21492
  // If the reference is small enough that the arrow's padding causes it to
21226
21493
  // to point to nothing for an aligned placement, adjust the offset of the
21227
21494
  // floating element itself. To ensure `shift()` continues to take action,
21228
21495
  // a single reset is performed when this is true.
21229
- const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
21230
- const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;
21496
+ const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < minPadding ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
21497
+ const alignmentOffset = shouldAddOffset ? center < minPadding ? center - minPadding : center - max : 0;
21231
21498
  return {
21232
21499
  [axis]: coords[axis] + alignmentOffset,
21233
21500
  data: {
@@ -21374,6 +21641,76 @@ const flip$1 = function (options) {
21374
21641
  };
21375
21642
  };
21376
21643
 
21644
+ function getSideOffsets(overflow, rect) {
21645
+ return {
21646
+ top: overflow.top - rect.height,
21647
+ right: overflow.right - rect.width,
21648
+ bottom: overflow.bottom - rect.height,
21649
+ left: overflow.left - rect.width
21650
+ };
21651
+ }
21652
+ function isAnySideFullyClipped(overflow) {
21653
+ return sides.some(side => overflow[side] >= 0);
21654
+ }
21655
+ /**
21656
+ * Provides data to hide the floating element in applicable situations, such as
21657
+ * when it is not in the same clipping context as the reference element.
21658
+ * @see https://floating-ui.com/docs/hide
21659
+ */
21660
+ const hide$1 = function (options) {
21661
+ if (options === void 0) {
21662
+ options = {};
21663
+ }
21664
+ return {
21665
+ name: 'hide',
21666
+ options,
21667
+ async fn(state) {
21668
+ const {
21669
+ rects,
21670
+ platform
21671
+ } = state;
21672
+ const {
21673
+ strategy = 'referenceHidden',
21674
+ ...detectOverflowOptions
21675
+ } = evaluate(options, state);
21676
+ switch (strategy) {
21677
+ case 'referenceHidden':
21678
+ {
21679
+ const overflow = await platform.detectOverflow(state, {
21680
+ ...detectOverflowOptions,
21681
+ elementContext: 'reference'
21682
+ });
21683
+ const offsets = getSideOffsets(overflow, rects.reference);
21684
+ return {
21685
+ data: {
21686
+ referenceHiddenOffsets: offsets,
21687
+ referenceHidden: isAnySideFullyClipped(offsets)
21688
+ }
21689
+ };
21690
+ }
21691
+ case 'escaped':
21692
+ {
21693
+ const overflow = await platform.detectOverflow(state, {
21694
+ ...detectOverflowOptions,
21695
+ altBoundary: true
21696
+ });
21697
+ const offsets = getSideOffsets(overflow, rects.floating);
21698
+ return {
21699
+ data: {
21700
+ escapedOffsets: offsets,
21701
+ escaped: isAnySideFullyClipped(offsets)
21702
+ }
21703
+ };
21704
+ }
21705
+ default:
21706
+ {
21707
+ return {};
21708
+ }
21709
+ }
21710
+ }
21711
+ };
21712
+ };
21713
+
21377
21714
  function getBoundingRect(rects) {
21378
21715
  const minX = min(...rects.map(rect => rect.left));
21379
21716
  const minY = min(...rects.map(rect => rect.top));
@@ -21430,12 +21767,19 @@ const inline$1 = function (options) {
21430
21767
  y
21431
21768
  } = evaluate(options, state);
21432
21769
  const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);
21770
+
21771
+ // No rects (e.g. a hidden or detached reference, or a collapsed range) —
21772
+ // keep the existing reference rect rather than resetting to an invalid
21773
+ // one with non-finite values.
21774
+ if (!nativeClientRects.length) {
21775
+ return {};
21776
+ }
21433
21777
  const clientRects = getRectsByLine(nativeClientRects);
21434
21778
  const fallback = rectToClientRect(getBoundingRect(nativeClientRects));
21435
21779
  const paddingObject = getPaddingObject(padding);
21436
21780
  function getBoundingClientRect() {
21437
21781
  // There are two rects and they are disjoined.
21438
- if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {
21782
+ if (clientRects.length === 2 && (clientRects[0].left > clientRects[1].right || clientRects[1].left > clientRects[0].right) && x != null && y != null) {
21439
21783
  // Find the first rect in which the point is fully inside.
21440
21784
  return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;
21441
21785
  }
@@ -21450,18 +21794,12 @@ const inline$1 = function (options) {
21450
21794
  const bottom = lastRect.bottom;
21451
21795
  const left = isTop ? firstRect.left : lastRect.left;
21452
21796
  const right = isTop ? firstRect.right : lastRect.right;
21453
- const width = right - left;
21454
- const height = bottom - top;
21455
- return {
21456
- top,
21457
- bottom,
21458
- left,
21459
- right,
21460
- width,
21461
- height,
21797
+ return rectToClientRect({
21462
21798
  x: left,
21463
- y: top
21464
- };
21799
+ y: top,
21800
+ width: right - left,
21801
+ height: bottom - top
21802
+ });
21465
21803
  }
21466
21804
  const isLeftSide = getSide(placement) === 'left';
21467
21805
  const maxRight = max(...clientRects.map(rect => rect.right));
@@ -21469,20 +21807,12 @@ const inline$1 = function (options) {
21469
21807
  const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);
21470
21808
  const top = measureRects[0].top;
21471
21809
  const bottom = measureRects[measureRects.length - 1].bottom;
21472
- const left = minLeft;
21473
- const right = maxRight;
21474
- const width = right - left;
21475
- const height = bottom - top;
21476
- return {
21477
- top,
21478
- bottom,
21479
- left,
21480
- right,
21481
- width,
21482
- height,
21483
- x: left,
21484
- y: top
21485
- };
21810
+ return rectToClientRect({
21811
+ x: minLeft,
21812
+ y: top,
21813
+ width: maxRight - minLeft,
21814
+ height: bottom - top
21815
+ });
21486
21816
  }
21487
21817
  return fallback;
21488
21818
  }
@@ -21632,23 +21962,16 @@ const shift$1 = function (options) {
21632
21962
  y
21633
21963
  };
21634
21964
  const overflow = await platform.detectOverflow(state, detectOverflowOptions);
21635
- const crossAxis = getSideAxis(getSide(placement));
21965
+ const crossAxis = getSideAxis(placement);
21636
21966
  const mainAxis = getOppositeAxis(crossAxis);
21637
21967
  let mainAxisCoord = coords[mainAxis];
21638
21968
  let crossAxisCoord = coords[crossAxis];
21969
+ const clampCoord = (axis, coord) => clamp(coord + overflow[axis === 'y' ? 'top' : 'left'], coord, coord - overflow[axis === 'y' ? 'bottom' : 'right']);
21639
21970
  if (checkMainAxis) {
21640
- const minSide = mainAxis === 'y' ? 'top' : 'left';
21641
- const maxSide = mainAxis === 'y' ? 'bottom' : 'right';
21642
- const min = mainAxisCoord + overflow[minSide];
21643
- const max = mainAxisCoord - overflow[maxSide];
21644
- mainAxisCoord = clamp(min, mainAxisCoord, max);
21971
+ mainAxisCoord = clampCoord(mainAxis, mainAxisCoord);
21645
21972
  }
21646
21973
  if (checkCrossAxis) {
21647
- const minSide = crossAxis === 'y' ? 'top' : 'left';
21648
- const maxSide = crossAxis === 'y' ? 'bottom' : 'right';
21649
- const min = crossAxisCoord + overflow[minSide];
21650
- const max = crossAxisCoord - overflow[maxSide];
21651
- crossAxisCoord = clamp(min, crossAxisCoord, max);
21974
+ crossAxisCoord = clampCoord(crossAxis, crossAxisCoord);
21652
21975
  }
21653
21976
  const limitedCoords = limiter.fn({
21654
21977
  ...state,
@@ -21679,6 +22002,7 @@ const limitShift$1 = function (options) {
21679
22002
  return {
21680
22003
  options,
21681
22004
  fn(state) {
22005
+ var _rawOffset$mainAxis, _rawOffset$crossAxis;
21682
22006
  const {
21683
22007
  x,
21684
22008
  y,
@@ -21704,9 +22028,8 @@ const limitShift$1 = function (options) {
21704
22028
  mainAxis: rawOffset,
21705
22029
  crossAxis: 0
21706
22030
  } : {
21707
- mainAxis: 0,
21708
- crossAxis: 0,
21709
- ...rawOffset
22031
+ mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0,
22032
+ crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0
21710
22033
  };
21711
22034
  if (checkMainAxis) {
21712
22035
  const len = mainAxis === 'y' ? 'height' : 'width';
@@ -21738,6 +22061,12 @@ const limitShift$1 = function (options) {
21738
22061
  };
21739
22062
  };
21740
22063
 
22064
+ // Method syntax keeps callback parameters bivariant, but expressing the
22065
+ // explicit `| undefined` required by `exactOptionalPropertyTypes` needs
22066
+ // property syntax, which is contravariant under `strictFunctionTypes`.
22067
+ // Extracting the function from a method position restores that bivariance so
22068
+ // consumers can still assign callbacks with narrower parameter types.
22069
+
21741
22070
  /**
21742
22071
  * Provides data that allows you to change the size of the floating element —
21743
22072
  * for instance, prevent it from overflowing the clipping boundary or match the
@@ -21752,7 +22081,6 @@ const size$1 = function (options) {
21752
22081
  name: 'size',
21753
22082
  options,
21754
22083
  async fn(state) {
21755
- var _state$middlewareData, _state$middlewareData2;
21756
22084
  const {
21757
22085
  placement,
21758
22086
  rects,
@@ -21784,24 +22112,21 @@ const size$1 = function (options) {
21784
22112
  const maximumClippingWidth = width - overflow.left - overflow.right;
21785
22113
  const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);
21786
22114
  const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);
21787
- const noShift = !state.middlewareData.shift;
22115
+ const shiftData = state.middlewareData.shift;
22116
+ const noShift = !shiftData;
21788
22117
  let availableHeight = overflowAvailableHeight;
21789
22118
  let availableWidth = overflowAvailableWidth;
21790
- if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {
22119
+ if (shiftData != null && shiftData.enabled.x) {
21791
22120
  availableWidth = maximumClippingWidth;
21792
22121
  }
21793
- if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {
22122
+ if (shiftData != null && shiftData.enabled.y) {
21794
22123
  availableHeight = maximumClippingHeight;
21795
22124
  }
21796
22125
  if (noShift && !alignment) {
21797
- const xMin = max(overflow.left, 0);
21798
- const xMax = max(overflow.right, 0);
21799
- const yMin = max(overflow.top, 0);
21800
- const yMax = max(overflow.bottom, 0);
21801
22126
  if (isYAxis) {
21802
- availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));
22127
+ availableWidth = width - 2 * max(overflow.left, overflow.right);
21803
22128
  } else {
21804
- availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));
22129
+ availableHeight = height - 2 * max(overflow.top, overflow.bottom);
21805
22130
  }
21806
22131
  }
21807
22132
  await apply({
@@ -21957,7 +22282,7 @@ function getParentNode(node) {
21957
22282
  function getNearestOverflowAncestor(node) {
21958
22283
  const parentNode = getParentNode(node);
21959
22284
  if (isLastTraversableNode(parentNode)) {
21960
- return node.ownerDocument ? node.ownerDocument.body : node.body;
22285
+ return (node.ownerDocument || node).body;
21961
22286
  }
21962
22287
  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
21963
22288
  return parentNode;
@@ -22054,10 +22379,7 @@ function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {
22054
22379
  if (isFixed === void 0) {
22055
22380
  isFixed = false;
22056
22381
  }
22057
- if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {
22058
- return false;
22059
- }
22060
- return isFixed;
22382
+ return !!floatingOffsetParent && isFixed && floatingOffsetParent === getWindow(element);
22061
22383
  }
22062
22384
 
22063
22385
  function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {
@@ -22084,12 +22406,12 @@ function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetPar
22084
22406
  let y = (clientRect.top + visualOffsets.y) / scale.y;
22085
22407
  let width = clientRect.width / scale.x;
22086
22408
  let height = clientRect.height / scale.y;
22087
- if (domElement) {
22409
+ if (domElement && offsetParent) {
22088
22410
  const win = getWindow(domElement);
22089
- const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
22411
+ const offsetWin = isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
22090
22412
  let currentWin = win;
22091
22413
  let currentIFrame = getFrameElement(currentWin);
22092
- while (currentIFrame && offsetParent && offsetWin !== currentWin) {
22414
+ while (currentIFrame && offsetWin !== currentWin) {
22093
22415
  const iframeScale = getScale(currentIFrame);
22094
22416
  const iframeRect = currentIFrame.getBoundingClientRect();
22095
22417
  const css = getComputedStyle$1(currentIFrame);
@@ -22153,7 +22475,7 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
22153
22475
  let scale = createCoords(1);
22154
22476
  const offsets = createCoords(0);
22155
22477
  const isOffsetParentAnElement = isHTMLElement(offsetParent);
22156
- if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
22478
+ if (isOffsetParentAnElement || !isFixed) {
22157
22479
  if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
22158
22480
  scroll = getNodeScroll(offsetParent);
22159
22481
  }
@@ -22174,18 +22496,17 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
22174
22496
  }
22175
22497
 
22176
22498
  function getClientRects(element) {
22177
- return Array.from(element.getClientRects());
22499
+ return element.getClientRects ? Array.from(element.getClientRects()) : [];
22178
22500
  }
22179
22501
 
22180
22502
  // Gets the entire size of the scrollable document area, even extending outside
22181
22503
  // of the `<html>` and `<body>` rect bounds if horizontally scrollable.
22182
- function getDocumentRect(element) {
22183
- const html = getDocumentElement(element);
22184
- const scroll = getNodeScroll(element);
22185
- const body = element.ownerDocument.body;
22504
+ function getDocumentRect(html) {
22505
+ const scroll = getNodeScroll(html);
22506
+ const body = html.ownerDocument.body;
22186
22507
  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);
22187
22508
  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);
22188
- let x = -scroll.scrollLeft + getWindowScrollBarX(element);
22509
+ let x = -scroll.scrollLeft + getWindowScrollBarX(html);
22189
22510
  const y = -scroll.scrollTop;
22190
22511
  if (getComputedStyle$1(body).direction === 'rtl') {
22191
22512
  x += max(html.clientWidth, body.clientWidth) - width;
@@ -22202,7 +22523,11 @@ function getDocumentRect(element) {
22202
22523
  // calculation is affected by unusual styles.
22203
22524
  // Most scrollbars leave 15-18px of space.
22204
22525
  const SCROLLBAR_MAX = 25;
22205
- function getViewportRect(element, strategy) {
22526
+ function getViewportRect(element, strategy, rootBoundary) {
22527
+ if (rootBoundary === void 0) {
22528
+ rootBoundary = 'viewport';
22529
+ }
22530
+ const isLayoutViewport = rootBoundary === 'layoutViewport';
22206
22531
  const win = getWindow(element);
22207
22532
  const html = getDocumentElement(element);
22208
22533
  const visualViewport = win.visualViewport;
@@ -22211,31 +22536,42 @@ function getViewportRect(element, strategy) {
22211
22536
  let x = 0;
22212
22537
  let y = 0;
22213
22538
  if (visualViewport) {
22214
- width = visualViewport.width;
22215
- height = visualViewport.height;
22216
- const visualViewportBased = isWebKit();
22217
- if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {
22218
- x = visualViewport.offsetLeft;
22219
- y = visualViewport.offsetTop;
22539
+ // Client coordinates are relative to the layout viewport, except in
22540
+ // WebKit with an `absolute` strategy, where they are relative to the
22541
+ // visual viewport.
22542
+ const layoutRelativeClientCoords = !isWebKit() || strategy === 'fixed';
22543
+ if (isLayoutViewport) {
22544
+ if (!layoutRelativeClientCoords) {
22545
+ x = -visualViewport.offsetLeft;
22546
+ y = -visualViewport.offsetTop;
22547
+ }
22548
+ } else {
22549
+ width = visualViewport.width;
22550
+ height = visualViewport.height;
22551
+ if (layoutRelativeClientCoords) {
22552
+ x = visualViewport.offsetLeft;
22553
+ y = visualViewport.offsetTop;
22554
+ }
22220
22555
  }
22221
22556
  }
22222
22557
  const windowScrollbarX = getWindowScrollBarX(html);
22223
- // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the
22224
- // visual width of the <html> but this is not considered in the size
22225
- // of `html.clientWidth`.
22558
+ // `scrollbar-gutter: stable` on the <html> reserves gutter space that shrinks
22559
+ // the visual width but isn't reflected in `html.clientWidth`, so subtract it.
22560
+ // Only the inline-end (right) gutter can hold the scrollbar; `both-edges` also
22561
+ // reserves an empty inline-start gutter that clips nothing, so exclude just
22562
+ // the one scrollbar-side gutter — halve the measured (two-gutter) total. A
22563
+ // left-side scrollbar (`windowScrollbarX > 0`) is already handled by
22564
+ // `getHTMLOffset`/`visualViewport.width`; skip it here.
22226
22565
  if (windowScrollbarX <= 0) {
22227
22566
  const doc = html.ownerDocument;
22228
22567
  const body = doc.body;
22229
22568
  const bodyStyles = getComputedStyle(body);
22230
22569
  const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;
22231
- const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
22232
- if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {
22233
- width -= clippingStableScrollbarWidth;
22570
+ const reservedWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
22571
+ const gutter = getComputedStyle(html).scrollbarGutter === 'stable both-edges' ? reservedWidth / 2 : reservedWidth;
22572
+ if (gutter <= SCROLLBAR_MAX) {
22573
+ width -= gutter;
22234
22574
  }
22235
- } else if (windowScrollbarX <= SCROLLBAR_MAX) {
22236
- // If the <body> scrollbar is on the left, the width needs to be extended
22237
- // by the scrollbar amount so there isn't extra space on the right.
22238
- width += windowScrollbarX;
22239
22575
  }
22240
22576
  return {
22241
22577
  width,
@@ -22250,7 +22586,7 @@ function getInnerBoundingClientRect(element, strategy) {
22250
22586
  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');
22251
22587
  const top = clientRect.top + element.clientTop;
22252
22588
  const left = clientRect.left + element.clientLeft;
22253
- const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);
22589
+ const scale = getScale(element);
22254
22590
  const width = element.clientWidth * scale.x;
22255
22591
  const height = element.clientHeight * scale.y;
22256
22592
  const x = left * scale.x;
@@ -22264,8 +22600,8 @@ function getInnerBoundingClientRect(element, strategy) {
22264
22600
  }
22265
22601
  function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {
22266
22602
  let rect;
22267
- if (clippingAncestor === 'viewport') {
22268
- rect = getViewportRect(element, strategy);
22603
+ if (clippingAncestor === 'viewport' || clippingAncestor === 'layoutViewport') {
22604
+ rect = getViewportRect(element, strategy, clippingAncestor);
22269
22605
  } else if (clippingAncestor === 'document') {
22270
22606
  rect = getDocumentRect(getDocumentElement(element));
22271
22607
  } else if (isElement(clippingAncestor)) {
@@ -22281,13 +22617,6 @@ function getClientRectFromClippingAncestor(element, clippingAncestor, strategy)
22281
22617
  }
22282
22618
  return rectToClientRect(rect);
22283
22619
  }
22284
- function hasFixedPositionAncestor(element, stopNode) {
22285
- const parentNode = getParentNode(element);
22286
- if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {
22287
- return false;
22288
- }
22289
- return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);
22290
- }
22291
22620
 
22292
22621
  // A "clipping ancestor" is an `overflow` element with the characteristic of
22293
22622
  // clipping (or hiding) child elements. This returns all clipping ancestors
@@ -22298,7 +22627,7 @@ function getClippingElementAncestors(element, cache) {
22298
22627
  return cachedResult;
22299
22628
  }
22300
22629
  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');
22301
- let currentContainingBlockComputedStyle = null;
22630
+ let lastKeptComputedStyle = null;
22302
22631
  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';
22303
22632
  let currentNode = elementIsFixed ? getParentNode(element) : element;
22304
22633
 
@@ -22306,16 +22635,20 @@ function getClippingElementAncestors(element, cache) {
22306
22635
  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {
22307
22636
  const computedStyle = getComputedStyle$1(currentNode);
22308
22637
  const currentNodeIsContaining = isContainingBlock(currentNode);
22309
- if (!currentNodeIsContaining && computedStyle.position === 'fixed') {
22310
- currentContainingBlockComputedStyle = null;
22311
- }
22312
- const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
22638
+ // Position of the containing block chain below the current node. A fixed
22639
+ // element whose containing block hasn't been found yet is a fixed chain.
22640
+ const lastPosition = lastKeptComputedStyle ? lastKeptComputedStyle.position : elementIsFixed ? 'fixed' : '';
22641
+
22642
+ // A non-containing ancestor does not clip the element when the chain
22643
+ // below it escapes it: a fixed chain escapes all ancestors up to the
22644
+ // next containing block, an absolute chain escapes static ancestors.
22645
+ const shouldDropCurrentNode = !currentNodeIsContaining && (lastPosition === 'fixed' || lastPosition === 'absolute' && computedStyle.position === 'static');
22313
22646
  if (shouldDropCurrentNode) {
22314
22647
  // Drop non-containing blocks.
22315
22648
  result = result.filter(ancestor => ancestor !== currentNode);
22316
22649
  } else {
22317
- // Record last containing block for next iteration.
22318
- currentContainingBlockComputedStyle = computedStyle;
22650
+ // The kept node carries the chain position for the next iteration.
22651
+ lastKeptComputedStyle = computedStyle;
22319
22652
  }
22320
22653
  currentNode = getParentNode(currentNode);
22321
22654
  }
@@ -22325,7 +22658,7 @@ function getClippingElementAncestors(element, cache) {
22325
22658
 
22326
22659
  // Gets the maximum area that the element is visible in due to any number of
22327
22660
  // clipping ancestors.
22328
- function getClippingRect(_ref) {
22661
+ function getClippingRect$1(_ref) {
22329
22662
  let {
22330
22663
  element,
22331
22664
  boundary,
@@ -22375,13 +22708,7 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
22375
22708
  scrollTop: 0
22376
22709
  };
22377
22710
  const offsets = createCoords(0);
22378
-
22379
- // If the <body> scrollbar appears on the left (e.g. RTL systems). Use
22380
- // Firefox with layout.scrollbar.side = 3 in about:config to test this.
22381
- function setLeftRTLScrollbarOffset() {
22382
- offsets.x = getWindowScrollBarX(documentElement);
22383
- }
22384
- if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
22711
+ if (isOffsetParentAnElement || !isFixed) {
22385
22712
  if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
22386
22713
  scroll = getNodeScroll(offsetParent);
22387
22714
  }
@@ -22389,12 +22716,13 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
22389
22716
  const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);
22390
22717
  offsets.x = offsetRect.x + offsetParent.clientLeft;
22391
22718
  offsets.y = offsetRect.y + offsetParent.clientTop;
22392
- } else if (documentElement) {
22393
- setLeftRTLScrollbarOffset();
22394
22719
  }
22395
22720
  }
22396
- if (isFixed && !isOffsetParentAnElement && documentElement) {
22397
- setLeftRTLScrollbarOffset();
22721
+
22722
+ // If the <body> scrollbar appears on the left (e.g. RTL systems). Use
22723
+ // Firefox with layout.scrollbar.side = 3 in about:config to test this.
22724
+ if (!isOffsetParentAnElement && documentElement) {
22725
+ offsets.x = getWindowScrollBarX(documentElement);
22398
22726
  }
22399
22727
  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
22400
22728
  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
@@ -22479,7 +22807,7 @@ function isRTL(element) {
22479
22807
  const platform = {
22480
22808
  convertOffsetParentRelativeRectToViewportRelativeRect,
22481
22809
  getDocumentElement,
22482
- getClippingRect,
22810
+ getClippingRect: getClippingRect$1,
22483
22811
  getOffsetParent,
22484
22812
  getElementRects,
22485
22813
  getClientRects,
@@ -22494,7 +22822,7 @@ function rectsAreEqual(a, b) {
22494
22822
  }
22495
22823
 
22496
22824
  // https://samthor.au/2021/observing-dom/
22497
- function observeMove(element, onMove) {
22825
+ function observeMove(element, onMove, ancestorResize) {
22498
22826
  let io = null;
22499
22827
  let timeoutId;
22500
22828
  const root = getDocumentElement(element);
@@ -22537,13 +22865,22 @@ function observeMove(element, onMove) {
22537
22865
  let isFirstUpdate = true;
22538
22866
  function handleObserve(entries) {
22539
22867
  const ratio = entries[0].intersectionRatio;
22868
+
22869
+ // The entry is a snapshot, so the reference may have moved since the
22870
+ // intersection was computed (under performance constraints, or between
22871
+ // consecutive frames of a multi-frame layout shift). The reported ratio
22872
+ // and the observed area are stale in that case and cannot be trusted to
22873
+ // detect subsequent movement, so refresh regardless of the ratio.
22874
+ if (!rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {
22875
+ return refresh();
22876
+ }
22540
22877
  if (ratio !== threshold) {
22541
22878
  if (!isFirstUpdate) {
22542
22879
  return refresh();
22543
22880
  }
22544
22881
  if (!ratio) {
22545
- // If the reference is clipped, the ratio is 0. Throttle the refresh
22546
- // to prevent an infinite loop of updates.
22882
+ // If the reference is clipped in place, the ratio is 0. Throttle
22883
+ // the refresh to prevent an infinite loop of updates.
22547
22884
  timeoutId = setTimeout(() => {
22548
22885
  refresh(false, 1e-7);
22549
22886
  }, 1000);
@@ -22551,16 +22888,6 @@ function observeMove(element, onMove) {
22551
22888
  refresh(false, ratio);
22552
22889
  }
22553
22890
  }
22554
- if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {
22555
- // It's possible that even though the ratio is reported as 1, the
22556
- // element is not actually fully within the IntersectionObserver's root
22557
- // area anymore. This can happen under performance constraints. This may
22558
- // be a bug in the browser's IntersectionObserver implementation. To
22559
- // work around this, we compare the element's bounding rect now with
22560
- // what it was at the time we created the IntersectionObserver. If they
22561
- // are not equal then the element moved, so we refresh.
22562
- refresh();
22563
- }
22564
22891
  isFirstUpdate = false;
22565
22892
  }
22566
22893
 
@@ -22577,8 +22904,18 @@ function observeMove(element, onMove) {
22577
22904
  }
22578
22905
  io.observe(element);
22579
22906
  }
22907
+ const win = getWindow(element);
22908
+ // The window is a resize ancestor, so when `ancestorResize` is enabled its
22909
+ // listener already runs the update on resize. Here we only need to rebuild
22910
+ // the `IntersectionObserver` for the new root size, skipping a redundant
22911
+ // update. When `ancestorResize` is disabled, this becomes the sole update.
22912
+ const handleResize = () => refresh(ancestorResize);
22913
+ win.addEventListener('resize', handleResize);
22580
22914
  refresh(true);
22581
- return cleanup;
22915
+ return () => {
22916
+ win.removeEventListener('resize', handleResize);
22917
+ cleanup();
22918
+ };
22582
22919
  }
22583
22920
 
22584
22921
  /**
@@ -22603,12 +22940,10 @@ function autoUpdate(reference, floating, update, options) {
22603
22940
  const referenceEl = unwrapElement(reference);
22604
22941
  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];
22605
22942
  ancestors.forEach(ancestor => {
22606
- ancestorScroll && ancestor.addEventListener('scroll', update, {
22607
- passive: true
22608
- });
22943
+ ancestorScroll && ancestor.addEventListener('scroll', update);
22609
22944
  ancestorResize && ancestor.addEventListener('resize', update);
22610
22945
  });
22611
- const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;
22946
+ const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update, ancestorResize) : null;
22612
22947
  let reobserveFrame = -1;
22613
22948
  let resizeObserver = null;
22614
22949
  if (elementResize) {
@@ -22694,6 +23029,13 @@ const flip = flip$1;
22694
23029
  */
22695
23030
  const size = size$1;
22696
23031
 
23032
+ /**
23033
+ * Provides data to hide the floating element in applicable situations, such as
23034
+ * when it is not in the same clipping context as the reference element.
23035
+ * @see https://floating-ui.com/docs/hide
23036
+ */
23037
+ const hide = hide$1;
23038
+
22697
23039
  /**
22698
23040
  * Provides data to position an inner element of the floating element so that it
22699
23041
  * appears centered to the reference element.
@@ -22722,11 +23064,9 @@ const computePosition = (reference, floating, options) => {
22722
23064
  // multiple lifecycle resets re-use the same result. It only lives for a
22723
23065
  // single call. If other functions become expensive, we can add them as well.
22724
23066
  const cache = new Map();
22725
- const mergedOptions = {
22726
- platform,
22727
- ...options
22728
- };
23067
+ const mergedOptions = options != null ? options : {};
22729
23068
  const platformWithCache = {
23069
+ ...platform,
22730
23070
  ...mergedOptions.platform,
22731
23071
  _c: cache
22732
23072
  };
@@ -22751,6 +23091,77 @@ function popIn(el) {
22751
23091
  });
22752
23092
  }
22753
23093
 
23094
+ /**
23095
+ * This utility is covered by the end-to-end tests under 'clipping' in `popovercontainer.cy.ts`.
23096
+ */
23097
+ const CLIPPING_RECT_CACHE = Symbol('Clipping Rect Cache');
23098
+ /**
23099
+ * A custom floating UI platform that restricts clipping rectangles to the safe area.
23100
+ */
23101
+ const safeAreaPlatform = { ...platform, getClippingRect };
23102
+ /**
23103
+ * Computes the clipping rectangle of an element while accounting for the safe area.
23104
+ */
23105
+ async function getClippingRect(...args) {
23106
+ const element = args[0].element;
23107
+ // Check whether the clipping rectangle of the given element has already been computed during
23108
+ // this pass.
23109
+ const hit = this[CLIPPING_RECT_CACHE].get(element);
23110
+ if (hit)
23111
+ return hit;
23112
+ // Compute the clipping rectangle with the Floating UI DOM platform, then restrict it to the safe
23113
+ // area.
23114
+ const clippingRect = await platform.getClippingRect.apply(this, args);
23115
+ applySafeArea(clippingRect, element);
23116
+ this[CLIPPING_RECT_CACHE].set(element, clippingRect);
23117
+ return clippingRect;
23118
+ }
23119
+ /**
23120
+ * Restricts the `clippingRect` computed for `element` to the safe area, modifying it in place.
23121
+ *
23122
+ * The safe area only applies to elements that the header can actually cover, which excludes
23123
+ * elements without a header on their page, elements on a top layer and elements within the header.
23124
+ */
23125
+ function applySafeArea(clippingRect, element) {
23126
+ const headerElement = element.ownerDocument.querySelector('post-header');
23127
+ if (headerElement === null)
23128
+ return;
23129
+ let parent = element;
23130
+ while (!isLastTraversableNode(parent)) {
23131
+ parent = getParentNode(parent);
23132
+ if (!isHTMLElement(parent))
23133
+ continue;
23134
+ // Do not apply the safe area of the header to
23135
+ // - elements that are on a top layer, such as a dialog.
23136
+ // - elements that are located within the header itself.
23137
+ if (isTopLayer(parent) || parent === headerElement)
23138
+ return;
23139
+ }
23140
+ const headerRect = headerElement.getBoundingClientRect();
23141
+ const top = Math.max(clippingRect.y, headerRect.bottom);
23142
+ clippingRect.height -= top - clippingRect.y;
23143
+ clippingRect.y = top;
23144
+ }
23145
+ /**
23146
+ * Computes the coordinates that will position the `floating` element next to a given `reference`
23147
+ * element while accounting for the safe area.
23148
+ *
23149
+ * The safe area is the part of the viewport that the header does not cover. Restricting the
23150
+ * clipping rectangles to it makes floating elements behave as if they were clipped by the header.
23151
+ */
23152
+ const computePositionWithSafeArea = (reference, floating, options) => {
23153
+ // Adapted from https://github.com/floating-ui/floating-ui/blob/27629b74ba36ab8ceb2a968051927b9b69511a3b/packages/dom/src/index.ts#L15
23154
+ options ??= {};
23155
+ return computePosition(reference, floating, {
23156
+ ...options,
23157
+ platform: {
23158
+ ...safeAreaPlatform,
23159
+ ...options.platform,
23160
+ [CLIPPING_RECT_CACHE]: new Map(),
23161
+ },
23162
+ });
23163
+ };
23164
+
22754
23165
  const postPopovercontainerCss = () => `@layer polyfill{@supports not selector(:popover-open){:host([popover]:not(.\\:popover-open)){display:none}}}:host{background-color:rgba(0,0,0,0);border:rgba(0,0,0,0);position:fixed;margin:0;padding:0;overflow:visible}:host>div{box-shadow:var(--post-device-elevation-300);width:max-content;max-width:100%;color:var(--post-current-fg);background-color:var(--post-current-bg);border-radius:4px;position:relative}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host>div{border:2px solid rgba(0,0,0,0)}}:host [part=post-popovercontainer-border-mask]{display:none;position:absolute;inset:0;border-radius:4px;pointer-events:none}:host .arrow{--post-popovercontainer-arrow-border: var(--post-popovercontainer-arrow-border-width, 0px) solid var(--post-popovercontainer-arrow-border-color, transparent);position:absolute;width:.5825rem;height:.5825rem;background-color:inherit;rotate:45deg;pointer-events:none;z-index:-1}:host .arrow[dynamic-placement=top]{border-bottom-right-radius:2px;border-bottom:var(--post-popovercontainer-arrow-border);border-right:var(--post-popovercontainer-arrow-border)}:host .arrow[dynamic-placement=right]{border-bottom-left-radius:2px;border-bottom:var(--post-popovercontainer-arrow-border);border-left:var(--post-popovercontainer-arrow-border)}:host .arrow[dynamic-placement=bottom]{border-top-left-radius:2px;border-top:var(--post-popovercontainer-arrow-border);border-left:var(--post-popovercontainer-arrow-border)}:host .arrow[dynamic-placement=left]{border-top-right-radius:2px;border-top:var(--post-popovercontainer-arrow-border);border-right:var(--post-popovercontainer-arrow-border)}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .arrow[dynamic-placement=top]{border-block-end:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0);bottom:-0.3796735336rem !important}:host .arrow[dynamic-placement=left]{border-block-start:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0);right:-0.3796735336rem !important}:host .arrow[dynamic-placement=right]{border-block-end:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0);left:-0.3796735336rem !important}:host .arrow[dynamic-placement=bottom]{border-block-start:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0);top:-0.3796735336rem !important}}:host([tooltip]){position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}:host([safe-space])::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:auto}:host([safe-space=triangle])::after{clip-path:polygon(var(--post-safe-space-cursor-x, 0) var(--post-safe-space-cursor-y, 0), var(--post-safe-space-popover-x-start, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-start, 0)), var(--post-safe-space-popover-x-end, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-end, 0)))}:host([safe-space=trapezoid])::after{clip-path:polygon(var(--post-safe-space-trigger-x-start, var(--post-safe-space-trigger-x, 0)) var(--post-safe-space-trigger-y, var(--post-safe-space-trigger-y-start, 0)), var(--post-safe-space-trigger-x-end, var(--post-safe-space-trigger-x, 0)) var(--post-safe-space-trigger-y, var(--post-safe-space-trigger-y-end, 0)), var(--post-safe-space-popover-x-end, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-end, 0)), var(--post-safe-space-popover-x-start, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-start, 0)))}:host(:not(:has(.arrow)))>div{box-shadow:var(--post-device-elevation-300)}:host(:has(.arrow))>div{filter:drop-shadow(1px 2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(2px 4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(4px 8px 12px hsla(225, 7%, 11%, 0.15))}:host(:has(.arrow[dynamic-placement=top]))>div{filter:drop-shadow(0px -2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(0px -4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(0px -8px 12px hsla(225, 7%, 11%, 0.15))}:host(:has(.arrow[dynamic-placement=left]))>div{filter:drop-shadow(-2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(-4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(-8px 0px 12px hsla(225, 7%, 11%, 0.15))}:host(:has(.arrow[dynamic-placement=right]))>div{filter:drop-shadow(2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(8px 0px 12px hsla(225, 7%, 11%, 0.15))}`;
22755
23166
 
22756
23167
  var __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
@@ -22770,6 +23181,30 @@ const ANIMATIONS = {
22770
23181
  * @slot - Default slot for placing content inside the popovercontainer.
22771
23182
  */
22772
23183
  class PostPopovercontainer {
23184
+ static {
23185
+ this.STATIC_SIDES = {
23186
+ top: 'bottom',
23187
+ right: 'left',
23188
+ bottom: 'top',
23189
+ left: 'right',
23190
+ };
23191
+ }
23192
+ static {
23193
+ this.PROPERTIES_TO_CLEAR = [
23194
+ '--post-safe-space-popover-x',
23195
+ '--post-safe-space-popover-y',
23196
+ '--post-safe-space-popover-x-start',
23197
+ '--post-safe-space-popover-x-end',
23198
+ '--post-safe-space-popover-y-start',
23199
+ '--post-safe-space-popover-y-end',
23200
+ '--post-safe-space-trigger-x',
23201
+ '--post-safe-space-trigger-y',
23202
+ '--post-safe-space-trigger-x-start',
23203
+ '--post-safe-space-trigger-x-end',
23204
+ '--post-safe-space-trigger-y-start',
23205
+ '--post-safe-space-trigger-y-end',
23206
+ ];
23207
+ }
22773
23208
  constructor(hostRef) {
22774
23209
  registerInstance(this, hostRef);
22775
23210
  this.postBeforeShow = createEvent(this, "postBeforeShow");
@@ -22828,7 +23263,7 @@ class PostPopovercontainer {
22828
23263
  if (this.toggleTimeoutId || !target)
22829
23264
  return;
22830
23265
  this.eventTarget = target;
22831
- this.calculatePosition();
23266
+ this.updatePosition();
22832
23267
  this.host.showPopover();
22833
23268
  }
22834
23269
  /**
@@ -22854,7 +23289,7 @@ class PostPopovercontainer {
22854
23289
  this.eventTarget = target;
22855
23290
  // Prevent instant double toggle
22856
23291
  if (!this.toggleTimeoutId) {
22857
- this.calculatePosition();
23292
+ this.updatePosition();
22858
23293
  this.host.togglePopover(force);
22859
23294
  this.toggleTimeoutId = null;
22860
23295
  }
@@ -22966,17 +23401,14 @@ class PostPopovercontainer {
22966
23401
  startAutoupdates() {
22967
23402
  if (!this.eventTarget || !this.host)
22968
23403
  return;
22969
- this.clearAutoUpdate = autoUpdate(this.eventTarget, this.host, this.calculatePosition.bind(this));
22970
- }
22971
- /**
22972
- * Retrieves the dynamic height of the header
22973
- */
22974
- getHeaderHeight() {
22975
- const header = document.querySelector('post-header');
22976
- return header ? Number.parseFloat(getComputedStyle(header).height) : 0;
23404
+ this.clearAutoUpdate = autoUpdate(this.eventTarget, this.host, this.updatePosition.bind(this));
22977
23405
  }
22978
- async calculatePosition() {
22979
- const { x, y, middlewareData, placement } = await this.computeMainPosition();
23406
+ async updatePosition() {
23407
+ const { x, y, middlewareData, placement } = await this.calculatePosition();
23408
+ // Hide the popover if the target is outside the viewport
23409
+ if (middlewareData.hide?.referenceHidden) {
23410
+ this.host.hidePopover();
23411
+ }
22980
23412
  const currentPlacement = placement.split('-')[0];
22981
23413
  this.dynamicPlacement = currentPlacement;
22982
23414
  // Position popover
@@ -23001,13 +23433,15 @@ class PostPopovercontainer {
23001
23433
  await this.updateSafeSpaceBoundaries(currentPlacement);
23002
23434
  }
23003
23435
  }
23004
- async computeMainPosition() {
23436
+ async calculatePosition() {
23005
23437
  const gap = this.edgeGap;
23006
23438
  const isAligned = (this.placement || 'top').includes('-');
23007
- const flipMiddleware = flip({
23008
- padding: this.getHeaderHeight(),
23009
- crossAxis: false,
23010
- });
23439
+ const flipMiddleware = [
23440
+ // Flip the popover if the target moves outside the viewport
23441
+ flip({ elementContext: 'reference', crossAxis: false }),
23442
+ // Flip the popover if the popover itself moves outside the viewport
23443
+ flip({ elementContext: 'floating', crossAxis: false }),
23444
+ ];
23011
23445
  const shiftMiddleware = shift({
23012
23446
  padding: gap,
23013
23447
  limiter: limitShift({
@@ -23019,7 +23453,7 @@ class PostPopovercontainer {
23019
23453
  inline(),
23020
23454
  // Per floating-ui docs: for aligned placements (e.g. bottom-end),
23021
23455
  // flip should come before shift. For non-aligned, shift before flip.
23022
- ...(isAligned ? [flipMiddleware, shiftMiddleware] : [shiftMiddleware, flipMiddleware]),
23456
+ ...(isAligned ? [...flipMiddleware, shiftMiddleware] : [shiftMiddleware, ...flipMiddleware]),
23023
23457
  size({
23024
23458
  apply({ availableWidth, elements }) {
23025
23459
  Object.assign(elements.floating.style, {
@@ -23031,7 +23465,12 @@ class PostPopovercontainer {
23031
23465
  if (this.arrow) {
23032
23466
  middleware.push(arrow({ element: this.arrowRef, padding: gap }));
23033
23467
  }
23034
- return computePosition(this.eventTarget, this.host, {
23468
+ // Automatically hide the popover if the target moves outside the scrollport.
23469
+ if (this.autoHide) {
23470
+ // Per floating-ui docs: hide should generally be placed at the end.
23471
+ middleware.push(hide({ strategy: 'referenceHidden' }));
23472
+ }
23473
+ return computePositionWithSafeArea(this.eventTarget, this.host, {
23035
23474
  placement: this.placement || 'top',
23036
23475
  strategy: 'fixed',
23037
23476
  middleware,
@@ -23098,9 +23537,9 @@ class PostPopovercontainer {
23098
23537
  }
23099
23538
  }
23100
23539
  render() {
23101
- return (hAsync(Host, { key: 'bffef7c8067f21aa99c45deaaf2bc122ea455191', "data-version": version$1, popover: "auto" }, hAsync("div", { key: '023339edd5b36827e0051179bee464236bccc62a', part: "post-popovercontainer-content", class: "popover-content" }, this.arrow && (hAsync("span", { key: 'ae921c38aa8c33ad8b37453a56d22ee7b4b9950c', "dynamic-placement": this.dynamicPlacement, class: "arrow", ref: el => {
23540
+ return (hAsync(Host, { key: 'f3ea4bfc9a59faa2fbf1e413a1ec648f598a6779', "data-version": version$1, popover: "auto" }, hAsync("div", { key: 'a328c73c7e08eca1e423fcbe736798188cca2a87', part: "post-popovercontainer-content", class: "popover-content" }, this.arrow && (hAsync("span", { key: '8fad0095fb8d8c903ba84a639b4efc3e321c6aef', "dynamic-placement": this.dynamicPlacement, class: "arrow", ref: el => {
23102
23541
  this.arrowRef = el;
23103
- } })), hAsync("span", { key: 'f7c2720a3bedb808855628482c5b1f377e2719a8', part: "post-popovercontainer-border-mask" }), hAsync("slot", { key: 'e0fee3fded9fea41bc0260f45be0375e236463f9' }))));
23542
+ } })), hAsync("span", { key: 'deadbcc5892ed545a64b4a0e5e0936e0dd1feb70', part: "post-popovercontainer-border-mask" }), hAsync("slot", { key: '48c4db7ab222f3ef18157ce19d8ba15d75441f98' }))));
23104
23543
  }
23105
23544
  get host() { return getElement(this); }
23106
23545
  static get style() { return postPopovercontainerCss(); }
@@ -23113,6 +23552,7 @@ class PostPopovercontainer {
23113
23552
  "offset": [2],
23114
23553
  "arrow": [4],
23115
23554
  "safeSpace": [513, "safe-space"],
23555
+ "autoHide": [4, "auto-hide"],
23116
23556
  "dynamicPlacement": [32],
23117
23557
  "show": [64],
23118
23558
  "hide": [64],
@@ -23123,26 +23563,6 @@ class PostPopovercontainer {
23123
23563
  "$attrsToReflect$": [["safeSpace", "safe-space"]]
23124
23564
  }; }
23125
23565
  }
23126
- PostPopovercontainer.STATIC_SIDES = {
23127
- top: 'bottom',
23128
- right: 'left',
23129
- bottom: 'top',
23130
- left: 'right',
23131
- };
23132
- PostPopovercontainer.PROPERTIES_TO_CLEAR = [
23133
- '--post-safe-space-popover-x',
23134
- '--post-safe-space-popover-y',
23135
- '--post-safe-space-popover-x-start',
23136
- '--post-safe-space-popover-x-end',
23137
- '--post-safe-space-popover-y-start',
23138
- '--post-safe-space-popover-y-end',
23139
- '--post-safe-space-trigger-x',
23140
- '--post-safe-space-trigger-y',
23141
- '--post-safe-space-trigger-x-start',
23142
- '--post-safe-space-trigger-x-end',
23143
- '--post-safe-space-trigger-y-start',
23144
- '--post-safe-space-trigger-y-end',
23145
- ];
23146
23566
  __decorate$a([
23147
23567
  OneOf(PLACEMENT_TYPES)
23148
23568
  ], PostPopovercontainer.prototype, "placement", void 0);
@@ -23199,7 +23619,7 @@ class PostProgressbar {
23199
23619
  const max = this.getEffectiveMax();
23200
23620
  const value = this.getEffectiveValue(min, max);
23201
23621
  const percentage = ((value - min) / (max - min)) * 100;
23202
- return (hAsync(Host, { key: '434d38d2a3157820477b80831a8283ca9e427dfb', role: "progressbar", "aria-valuenow": value, "aria-valuemin": min, "aria-valuemax": max }, hAsync("div", { key: '862332d99d2b930258e20d2f4417cdfebc6e6333', class: "progress-value", style: { '--post-progressbar-value': `${percentage}%` } })));
23622
+ return (hAsync(Host, { key: 'c29b1fa3dca89d999c2a55bd58c9c7450ed767c6', role: "progressbar", "aria-valuenow": value, "aria-valuemin": min, "aria-valuemax": max }, hAsync("div", { key: 'aaff038be7bdaf99de1e94c7479c2b57947195ac', class: "progress-value", style: { '--post-progressbar-value': `${percentage}%` } })));
23203
23623
  }
23204
23624
  get host() { return getElement(this); }
23205
23625
  static get style() { return postProgressbarCss(); }
@@ -23316,7 +23736,7 @@ class PostRating {
23316
23736
  }
23317
23737
  }
23318
23738
  render() {
23319
- return (hAsync(Host, { key: '082aaa831e204f0576c494bd9ce14364b7a34436', "data-version": version$1 }, hAsync("div", { key: '1c13ae74c34a1032fa680ce608aac0320178bd65', role: "slider", class: "rating", tabindex: "0", "aria-label": this.label, "aria-valuemin": "0", "aria-valuemax": this.stars, "aria-valuenow": this.currentRating, "aria-valuetext": `${this.currentRating} / ${this.stars}`, "aria-readonly": this.readonly ? 'true' : 'false', onKeyDown: this.keydownHandler, onBlur: this.blurHandler }, Array.from({ length: this.stars }).map((v, i) => (hAsync("div", { key: `star-${v}`, "aria-hidden": "true", class: {
23739
+ return (hAsync(Host, { key: '727813875ba5d754ec17f4a2b151c0c6cd4ab5ca', "data-version": version$1 }, hAsync("div", { key: '1ac7e5db0098568c16551a4850442e4c8f0e686b', role: "slider", class: "rating", tabindex: "0", "aria-label": this.label, "aria-valuemin": "0", "aria-valuemax": this.stars, "aria-valuenow": this.currentRating, "aria-valuetext": `${this.currentRating} / ${this.stars}`, "aria-readonly": this.readonly ? 'true' : 'false', onKeyDown: this.keydownHandler, onBlur: this.blurHandler }, Array.from({ length: this.stars }).map((v, i) => (hAsync("div", { key: `star-${v}`, "aria-hidden": "true", class: {
23320
23740
  'star': true,
23321
23741
  'before-hover': i < this.hoveredIndex,
23322
23742
  'active': i < Math.round(this.currentRating),
@@ -23356,7 +23776,7 @@ __decorate$8([
23356
23776
 
23357
23777
  const SIDE_NAVIGATION_SIZES = ['large', 'small'];
23358
23778
 
23359
- const postSideNavigationCss = () => `:host{--post-side-navigation-padding-block-start:34px;--post-side-navigation-padding-block-end:16px;--post-side-navigation-bg:#f0efed;--post-side-navigation-stroke:#b4b3af;display:flex;background-color:var(--post-side-navigation-bg);border-inline-end:1px solid var(--post-side-navigation-stroke)}:host dialog{overflow:visible;width:var(--post-side-navigation-width);bottom:auto;right:auto;border:none;padding:0;max-height:100dvh;background-color:var(--post-side-navigation-bg);border-inline-end:1px solid var(--post-side-navigation-stroke);transform:translateX(-100%);transition-property:transform,overlay,display;transition-behavior:allow-discrete;transition-duration:350ms}@media screen and (max-width: 1023.98px){:host dialog{box-shadow:var(--post-device-elevation-300)}}:host dialog[open]{transform:translateX(0)}@starting-style{:host dialog[open]{transform:translateX(-100%)}}@media (prefers-reduced-motion: reduce){:host dialog{transition:none}}:host post-closebutton{transform:translate(50%, 0)}`;
23779
+ const postSideNavigationCss = () => `:host{display:flex}:host,:host dialog{background-color:var(--post-scheme-color-palette-bg-2);border-inline-end:var(--post-device-border-width-alternative1) solid var(--post-scheme-color-interactive-primary-enabled-stroke4)}:host dialog{overflow:visible;width:var(--post-core-dimension-296);bottom:auto;right:auto;border:none;padding:0;max-height:100dvh;transform:translateX(-100%);transition-property:transform,overlay,display;transition-behavior:allow-discrete;transition-duration:350ms;box-shadow:var(--post-device-elevation-300)}:host dialog[open]{transform:translateX(0)}@starting-style{:host dialog[open]{transform:translateX(-100%)}}@media (prefers-reduced-motion: reduce){:host dialog{transition:none}}:host post-closebutton{transform:translate(50%, 0)}`;
23360
23780
 
23361
23781
  var __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
23362
23782
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -23486,7 +23906,7 @@ class PostSideNavigation {
23486
23906
  } }, hAsync("slot", null), hAsync("post-closebutton", { onClick: () => this.hide() }, this.textClose)));
23487
23907
  }
23488
23908
  render() {
23489
- return (hAsync(Host, { key: '48fa216d175f5fc96a722dd9aa1d4043298f9512', "data-version": version$1 }, this.device === 'desktop' ? this.renderNav() : this.renderDialog()));
23909
+ return (hAsync(Host, { key: 'f7d9b4e515e5085d78e452298bdfbfb2325e7422', "data-version": version$1 }, this.device === 'desktop' ? this.renderNav() : this.renderDialog()));
23490
23910
  }
23491
23911
  get host() { return getElement(this); }
23492
23912
  static get style() { return postSideNavigationCss(); }
@@ -23601,7 +24021,7 @@ class PostSideNavigationTrigger {
23601
24021
  await this.sideNavigation?.toggle();
23602
24022
  }
23603
24023
  render() {
23604
- return (hAsync(Host, { key: '1fda1561026f1eb8a4c976a937d2573713068ef9', "data-version": version$1 }, hAsync("slot", { key: '4e594cf134bfa431e410099cc0b8bf3071833e9a' })));
24024
+ return (hAsync(Host, { key: '1c908083562ec5ca01cd9410c72ac78ae11ce72f', "data-version": version$1 }, hAsync("slot", { key: '38f63424e8c66b4bf926418b57555dc676d24d45' })));
23605
24025
  }
23606
24026
  get host() { return getElement(this); }
23607
24027
  static get style() { return postSideNavigationTriggerCss(); }
@@ -23731,7 +24151,7 @@ class PostStepper {
23731
24151
  }
23732
24152
  }
23733
24153
  render() {
23734
- return (hAsync(Host, { key: 'c7b01aa30601ce7e2a383d637e8f9342de1c2143', "data-version": version$1 }, hAsync("ol", { key: '2c864063c2d22988b397b1b83667416edbb9b2b4' }, hAsync("slot", { key: '43a980fa016cd4d45cc90e4fe35de51e549efa19', onSlotchange: () => this.updateSteps() })), hAsync("div", { key: '6fa9f79b179f01d25aed9138614c8d99b4a3fc26', class: "active-step", "aria-hidden": "true" }, hAsync("span", { key: '89305778f7f921e6d62274142a9eb40c405d705b', class: "active-step-label" }, this.mobileActiveStepLabel), hAsync("span", { key: '5964200ae887c012ee843d0d80ce596302b952af', innerHTML: this.mobileActiveStepName }))));
24154
+ return (hAsync(Host, { key: 'e6d1f0498cb3de68badef6428cfe8fdff73b879b', "data-version": version$1 }, hAsync("ol", { key: '4c10c32d36eaeeb19712f7d99dcba7d5337d89a1' }, hAsync("slot", { key: 'ced502f01025f44c09747299cf60c82ebcd905da', onSlotchange: () => this.updateSteps() })), hAsync("div", { key: '93cfc9fbd328d4a384c56ccf1f884053643f88e6', class: "active-step", "aria-hidden": "true" }, hAsync("span", { key: '076fad4efc393852d024157011a0e86d90ecfe99', class: "active-step-label" }, this.mobileActiveStepLabel), hAsync("span", { key: '814817862389cd55859aec49205fae255cbbf1d7', innerHTML: this.mobileActiveStepName }))));
23735
24155
  }
23736
24156
  get host() { return getElement(this); }
23737
24157
  static get watchers() { return {
@@ -23790,7 +24210,7 @@ class PostStepperItem {
23790
24210
  registerInstance(this, hostRef);
23791
24211
  }
23792
24212
  render() {
23793
- return (hAsync(Host, { key: '0c4bdf86a40900511d1e6cb0fee86b14235bbeec', "data-version": version$1, role: "listitem" }, hAsync("span", { key: '20743202fbefd8ba438a8dd8276462fd7587d45b', class: "stepper-item-content" }, hAsync("span", { key: '00f1b587f5219976227c3db270bb2b746e4d2c6a', class: "step-hidden-label visually-hidden" }), hAsync("span", { key: '897dd5917855cd9437ec455f1d683e213c0e9a8d', class: "label" }, hAsync("slot", { key: '9485bf03c43dcb92b49b80c28175542fed89d4a1' })))));
24213
+ return (hAsync(Host, { key: 'f41ae27d8de89912b3aa34d9c89f5ec69f3df301', "data-version": version$1, role: "listitem" }, hAsync("span", { key: '00a0dd2eb3fb020e49c5782245e1f3e72c77e780', class: "stepper-item-content" }, hAsync("span", { key: 'bc9932083d295b92db24ddd22cb18a755db5ad11', class: "step-hidden-label visually-hidden" }), hAsync("span", { key: 'efe2d809c82c1d7de9e0cdf4e52b924943afa0bf', class: "label" }, hAsync("slot", { key: '47aceca3fc331ef91da60674dbc2af5ea7e76ec8' })))));
23794
24214
  }
23795
24215
  static get style() { return postStepperItemCss(); }
23796
24216
  static get cmpMeta() { return {
@@ -23846,9 +24266,9 @@ class PostTabItem {
23846
24266
  this.isPagesVariant = hasAnchor;
23847
24267
  }
23848
24268
  render() {
23849
- return (hAsync(Host, { key: '3d17a3c22c3677483bc4c86600b7527353dff290', id: this.tabId, role: this.isPagesVariant ? undefined : 'tab', "data-version": version$1, "data-pages-variant": this.isPagesVariant.toString(), "aria-selected": this.isPagesVariant ? undefined : 'false', "aria-disabled": this.disabled ? 'true' : undefined, tabindex: this.isPagesVariant ? undefined : '-1', class: `${this.isPagesVariant ? 'nav-item' : 'tab-title'}${!this.isPagesVariant ? ' ssr' : ''}`, style: !this.isPagesVariant
24269
+ return (hAsync(Host, { key: '0c98772d01658e932be9982b6983eb3c1f0c4053', id: this.tabId, role: this.isPagesVariant ? undefined : 'tab', "data-version": version$1, "data-pages-variant": this.isPagesVariant.toString(), "aria-selected": this.isPagesVariant ? undefined : 'false', "aria-disabled": this.disabled ? 'true' : undefined, tabindex: this.isPagesVariant ? undefined : '-1', class: `${this.isPagesVariant ? 'nav-item' : 'tab-title'}${!this.isPagesVariant ? ' ssr' : ''}`, style: !this.isPagesVariant
23850
24270
  ? { '--active': `var(--post-tab-item-${this.name}, 0)` }
23851
- : undefined }, hAsync("slot", { key: '9514279224549dcc0bf5553e98c535b64f37a191' })));
24271
+ : undefined }, hAsync("slot", { key: 'fba27566a1226e560161f839df050666763bdce5' })));
23852
24272
  }
23853
24273
  get host() { return getElement(this); }
23854
24274
  static get cmpMeta() { return {
@@ -23894,7 +24314,7 @@ class PostTabPanel {
23894
24314
  this.panelId = `panel-${this.host.id || nanoid(6)}`;
23895
24315
  }
23896
24316
  render() {
23897
- return (hAsync(Host, { key: '51119127b00717573aa2fa270186ea907ce8bfbc', "data-version": version$1, id: this.panelId, role: "tabpanel", slot: "panels", style: { display: `var(--post-tab-panel-${this.for}, none)` } }, hAsync("slot", { key: '7defd4cfb69b1f2b5f3d36cea10df5aed65eb440' })));
24317
+ return (hAsync(Host, { key: '2b02063bf2e67f4e826155759f28a1ae47b0c8e0', "data-version": version$1, id: this.panelId, role: "tabpanel", slot: "panels", style: { display: `var(--post-tab-panel-${this.for}, none)` } }, hAsync("slot", { key: 'b4c39e035d0f49f5654b030f4aada27fbebb122c' })));
23898
24318
  }
23899
24319
  get host() { return getElement(this); }
23900
24320
  static get style() { return postTabPanelCss(); }
@@ -23915,7 +24335,7 @@ __decorate$3([
23915
24335
  Type('string')
23916
24336
  ], PostTabPanel.prototype, "for", void 0);
23917
24337
 
23918
- const postTabsCss = () => `:host{display:block}:host .tabs-wrapper{position:relative;display:flex;align-items:center}:host .tabs-wrapper button.scroll-btn{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;display:flex;align-items:center;justify-content:center;transition:background-color 100ms,border-color 100ms,color 100ms;cursor:pointer}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .tabs-wrapper button.scroll-btn{background-color:ButtonFace !important}:host .tabs-wrapper button.scroll-btn:hover{background-color:Highlight !important}}:host .tabs-wrapper button.scroll-btn post-icon{color:currentColor}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .tabs-wrapper button.scroll-btn post-icon{color:Highlight}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .tabs-wrapper button.scroll-btn:hover post-icon{color:canvas}}:host .tabs-wrapper button.scroll-btn[hidden]{display:none}:host .tabs-wrapper button.scroll-btn{outline-offset:var(--post-device-spacing-padding-44) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}:host .tabs-wrapper button.scroll-btn:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .tabs-wrapper button.scroll-btn:is(:focus-visible,:has(:focus-visible),.pretend-focus){transition:none}:host .tabs-wrapper button.scroll-btn:is(:focus-visible,:has(:focus-visible),.pretend-focus):hover{color:HighlightText;border-color:HighlightText}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .tabs-wrapper button.scroll-btn:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){:host .tabs-wrapper button.scroll-btn:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .tabs-wrapper button.scroll-btn:is(:focus-visible,:focus-within,.pretend-focus){transition:none}:host .tabs-wrapper button.scroll-btn:is(:focus-visible,:focus-within,.pretend-focus):hover{color:HighlightText;border-color:HighlightText}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .tabs-wrapper button.scroll-btn:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}:host .tabs-wrapper .tabs{overflow-x:hidden;background-color:rgba(0,0,0,0) !important;display:flex;flex-wrap:nowrap;align-items:end;overscroll-behavior-x:contain;white-space:nowrap;margin-block:0;padding-inline-start:0;list-style:none}:host(.page-tabs){overflow:visible !important}:host(.page-tabs) .tabs-wrapper{margin-inline:calc(-1*(var(--post-container-offset)))}:host(.page-tabs) .tabs-wrapper button.scroll-btn{color:var(--post-scheme-color-interactive-primary-enabled-fg5);background-color:var(--post-scheme-color-interactive-primary-enabled-bg5);border:var(--post-device-border-width-default) solid var(--post-scheme-color-interactive-primary-enabled-stroke);position:absolute;z-index:2;box-shadow:var(--post-device-elevation-200);border-radius:var(--post-device-border-radius-2)}:host(.page-tabs) .tabs-wrapper button.scroll-btn:hover{border-color:var(--post-scheme-color-interactive-primary-hover-stroke) !important;color:var(--post-scheme-color-interactive-primary-hover-fg4);background-color:var(--post-scheme-color-interactive-primary-hover-bg8)}:host(.page-tabs) .tabs-wrapper button.scroll-btn.scroll-btn-left{inset-inline-start:0;border-inline-start:none;border-radius:0 var(--post-device-border-radius-2) var(--post-device-border-radius-2) 0}:host(.page-tabs) .tabs-wrapper button.scroll-btn.scroll-btn-right{inset-inline-end:0;border-inline-end:none;border-radius:var(--post-device-border-radius-2) 0 0 var(--post-device-border-radius-2)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host(.page-tabs) .tabs-wrapper button.scroll-btn.scroll-btn{background-color:Highlight;color:HighlightText}}:host(.page-tabs) .tabs-wrapper::after{content:"";position:absolute;inset-block-end:0;inset-inline-start:0;width:100%;height:var(--post-device-border-width-default);background-color:var(--post-palette-color-nested-tabs-page-stroke)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host(.page-tabs) .tabs-wrapper::after{background-color:LinkText}}:host(.page-tabs) .tabs-wrapper .tabs{padding-inline:calc(var(--post-container-offset));gap:var(--post-device-spacing-gap-inline-5);scrollbar-width:none}:host(.page-tabs) .tabs-wrapper .tabs::-webkit-scrollbar{display:none}:host(.page-tabs:not([size=small])) button.scroll-btn{top:var(--post-device-spacing-padding-36)}:host(.page-tabs[size=small]) button.scroll-btn{top:var(--post-device-spacing-padding-36)}:host(.content-tabs) .tabs-wrapper button.scroll-btn{flex-shrink:0;color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg)}:host(.content-tabs) .tabs-wrapper button.scroll-btn:hover{border-color:var(--post-scheme-color-interactive-primary-hover-stroke) !important;color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host(.content-tabs) .tabs-wrapper button.scroll-btn:hover{color:HighlightText}}:host(post-tabs:not([size=small])) button.scroll-btn{height:var(--post-device-sizing-interactive-button-height-10);width:var(--post-device-sizing-interactive-button-width-1);border-radius:var(--post-device-border-radius-2)}:host(post-tabs:not([size=small])) button.scroll-btn post-icon{height:var(--post-device-sizing-interactive-icon-size5);width:var(--post-device-sizing-interactive-icon-size5)}:host(.page-tabs:not([size=small])) button.scroll-btn-left{padding-inline:var(--post-device-spacing-padding-39) var(--post-device-spacing-padding-40)}:host(.page-tabs:not([size=small])) button.scroll-btn-right{padding-inline:var(--post-device-spacing-padding-40) var(--post-device-spacing-padding-39)}:host([size=small]) button.scroll-btn{height:var(--post-device-sizing-interactive-button-size-1);width:var(--post-device-sizing-interactive-button-size-1);border-radius:var(--post-device-border-radius-2)}:host([size=small]) button.scroll-btn post-icon{height:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4)}:host(.page-tabs[size=small]) button.scroll-btn-left{padding-inline:var(--post-device-spacing-padding-42) var(--post-device-spacing-padding-43)}:host(.page-tabs[size=small]) button.scroll-btn-right{padding-inline:var(--post-device-spacing-padding-43) var(--post-device-spacing-padding-42)}`;
24338
+ const postTabsCss = () => `:host{display:block}:host .tabs-wrapper{position:relative;display:flex;align-items:center}:host .tabs-wrapper button.scroll-btn{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;display:flex;align-items:center;justify-content:center;transition:background-color 100ms,border-color 100ms,color 100ms;cursor:pointer}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .tabs-wrapper button.scroll-btn{background-color:ButtonFace !important}:host .tabs-wrapper button.scroll-btn:hover{background-color:Highlight !important}}:host .tabs-wrapper button.scroll-btn post-icon{color:currentColor}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .tabs-wrapper button.scroll-btn post-icon{color:Highlight}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .tabs-wrapper button.scroll-btn:hover post-icon{color:canvas}}:host .tabs-wrapper button.scroll-btn[hidden]{display:none}:host .tabs-wrapper button.scroll-btn{outline-offset:var(--post-device-spacing-padding-44) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}:host .tabs-wrapper button.scroll-btn:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .tabs-wrapper button.scroll-btn:is(:focus-visible,:has(:focus-visible),.pretend-focus){transition:none}:host .tabs-wrapper button.scroll-btn:is(:focus-visible,:has(:focus-visible),.pretend-focus):hover{color:HighlightText;border-color:HighlightText}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .tabs-wrapper button.scroll-btn:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){:host .tabs-wrapper button.scroll-btn:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .tabs-wrapper button.scroll-btn:is(:focus-visible,:focus-within,.pretend-focus){transition:none}:host .tabs-wrapper button.scroll-btn:is(:focus-visible,:focus-within,.pretend-focus):hover{color:HighlightText;border-color:HighlightText}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .tabs-wrapper button.scroll-btn:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}:host .tabs-wrapper .tabs{overflow-x:hidden;background-color:rgba(0,0,0,0) !important;display:flex;flex-wrap:nowrap;align-items:end;overscroll-behavior-x:contain;white-space:nowrap;margin-block:0;padding-inline-start:0;list-style:none}:host(.page-tabs){overflow:visible !important}:host(.page-tabs) .tabs-wrapper{margin-inline:calc(-1*(var(--post-container-offset)))}@media screen and (min-width: 1024px){:host(.page-tabs) .tabs-wrapper{margin-inline:calc(-1 * (var(--post-container-offset)) + 20px)}:host(.page-tabs) .tabs-wrapper::after{box-shadow:20px 0 0 var(--post-palette-color-nested-tabs-page-stroke),-20px 0 0 var(--post-palette-color-nested-tabs-page-stroke)}}@media screen and (min-width: 1024px)and (forced-colors: active),screen and (min-width: 1024px)and (-ms-high-contrast: active),screen and (min-width: 1024px)and (-ms-high-contrast: white-on-black){:host(.page-tabs) .tabs-wrapper::after{box-shadow:20px 0 0 LinkText,-20px 0 0 LinkText}}:host(.page-tabs) .tabs-wrapper button.scroll-btn{color:var(--post-scheme-color-interactive-primary-enabled-fg5);background-color:var(--post-scheme-color-interactive-primary-enabled-bg5);border:var(--post-device-border-width-default) solid var(--post-scheme-color-interactive-primary-enabled-stroke);position:absolute;z-index:2;box-shadow:var(--post-device-elevation-200);border-radius:var(--post-device-border-radius-2)}:host(.page-tabs) .tabs-wrapper button.scroll-btn:hover{border-color:var(--post-scheme-color-interactive-primary-hover-stroke) !important;color:var(--post-scheme-color-interactive-primary-hover-fg4);background-color:var(--post-scheme-color-interactive-primary-hover-bg8)}:host(.page-tabs) .tabs-wrapper button.scroll-btn.scroll-btn-left{inset-inline-start:0;border-inline-start:none;border-radius:0 var(--post-device-border-radius-2) var(--post-device-border-radius-2) 0}:host(.page-tabs) .tabs-wrapper button.scroll-btn.scroll-btn-right{inset-inline-end:0;border-inline-end:none;border-radius:var(--post-device-border-radius-2) 0 0 var(--post-device-border-radius-2)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host(.page-tabs) .tabs-wrapper button.scroll-btn.scroll-btn{background-color:Highlight;color:HighlightText}}:host(.page-tabs) .tabs-wrapper::after{content:"";position:absolute;inset-block-end:0;inset-inline-start:0;width:100%;height:var(--post-device-border-width-default);background-color:var(--post-palette-color-nested-tabs-page-stroke)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host(.page-tabs) .tabs-wrapper::after{background-color:LinkText}}:host(.page-tabs) .tabs-wrapper .tabs{padding-inline:calc(var(--post-container-offset));gap:var(--post-device-spacing-gap-inline-5);scrollbar-width:none}:host(.page-tabs) .tabs-wrapper .tabs::-webkit-scrollbar{display:none}:host(.page-tabs:not([size=small])) button.scroll-btn{top:var(--post-device-spacing-padding-36)}:host(.page-tabs[size=small]) button.scroll-btn{top:var(--post-device-spacing-padding-36)}:host(.content-tabs) .tabs-wrapper button.scroll-btn{flex-shrink:0;color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg)}:host(.content-tabs) .tabs-wrapper button.scroll-btn:hover{border-color:var(--post-scheme-color-interactive-primary-hover-stroke) !important;color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host(.content-tabs) .tabs-wrapper button.scroll-btn:hover{color:HighlightText}}:host(post-tabs:not([size=small])) button.scroll-btn{height:var(--post-device-sizing-interactive-button-height-10);width:var(--post-device-sizing-interactive-button-width-1);border-radius:var(--post-device-border-radius-2)}:host(post-tabs:not([size=small])) button.scroll-btn post-icon{height:var(--post-device-sizing-interactive-icon-size5);width:var(--post-device-sizing-interactive-icon-size5)}:host(.page-tabs:not([size=small])) button.scroll-btn-left{padding-inline:var(--post-device-spacing-padding-39) var(--post-device-spacing-padding-40)}:host(.page-tabs:not([size=small])) button.scroll-btn-right{padding-inline:var(--post-device-spacing-padding-40) var(--post-device-spacing-padding-39)}:host([size=small]) button.scroll-btn{height:var(--post-device-sizing-interactive-button-size-1);width:var(--post-device-sizing-interactive-button-size-1);border-radius:var(--post-device-border-radius-2)}:host([size=small]) button.scroll-btn post-icon{height:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4)}:host(.page-tabs[size=small]) button.scroll-btn-left{padding-inline:var(--post-device-spacing-padding-42) var(--post-device-spacing-padding-43)}:host(.page-tabs[size=small]) button.scroll-btn-right{padding-inline:var(--post-device-spacing-padding-43) var(--post-device-spacing-padding-42)}`;
23919
24339
 
23920
24340
  var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
23921
24341
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -24343,10 +24763,10 @@ class PostTabs {
24343
24763
  }
24344
24764
  : undefined;
24345
24765
  const style = !this.isPagesVariant ? tabStyle : undefined;
24346
- return (hAsync(Host, { key: 'd5776ab3d40faaf892fc494bc57455f94f7905de', "data-version": version$1, style: style }, hAsync("div", { key: '5a8055fd968bcbaa2fe408eb14cb140db0b5cd88', class: "tabs-wrapper", part: "post-tabs" }, hAsync("button", { key: '96f5ead41bfcf826941c2d652f61e04729f18f1d', ref: el => (this.leftScrollButton = el), class: "scroll-btn scroll-btn-left", type: "button", "aria-label": this.textPrevTabItems, tabindex: this.showLeftScrollButton ? 0 : -1, hidden: !this.showLeftScrollButton, onClick: () => this.scrollTabs('prev') }, hAsync("post-icon", { key: '37593c698ce7266194819ec47eee2412a7b7779d', name: "chevronleft" })), hAsync(TabsContainer, { key: '6178c4a55c748dab1c4d1ff7eba5ba63332fd6fd', ref: el => (this.tabsContainer = el), class: "tabs", role: this.isPagesVariant ? undefined : 'tablist', "aria-label": this.isPagesVariant ? this.label : undefined }, hAsync("slot", { key: 'e08327a41440a408ae6c8a8885cef34090bfb244', onSlotchange: () => {
24766
+ return (hAsync(Host, { key: 'fb65fd2589517dd6d86e86435ec6b3a3b64b093d', "data-version": version$1, style: style }, hAsync("div", { key: 'dbcdd791af381ccc23953acb38a8e71527a804ee', class: "tabs-wrapper", part: "post-tabs" }, hAsync("button", { key: '20ce30515d80b282aa93f20a1f3281a1ef0f6359', ref: el => (this.leftScrollButton = el), class: "scroll-btn scroll-btn-left", type: "button", "aria-label": this.textPrevTabItems, tabindex: this.showLeftScrollButton ? 0 : -1, hidden: !this.showLeftScrollButton, onClick: () => this.scrollTabs('prev') }, hAsync("post-icon", { key: '9a5402a28656d7a4459b9b848425bd15a45a0fce', name: "chevronleft" })), hAsync(TabsContainer, { key: 'e821db02fd66aef6cf7a9fb5d925b0906571f3b6', ref: el => (this.tabsContainer = el), class: "tabs", role: this.isPagesVariant ? undefined : 'tablist', "aria-label": this.isPagesVariant ? this.label : undefined }, hAsync("slot", { key: 'e3650e43ac269173cb58f1624f02778bf094573c', onSlotchange: () => {
24347
24767
  this.moveMisplacedTabs();
24348
24768
  this.enableTabs();
24349
- } })), hAsync("button", { key: '1891e50feaf86f4aac16c63acc4bd836ebff3492', ref: el => (this.rightScrollButton = el), class: "scroll-btn scroll-btn-right", type: "button", "aria-label": this.textNextTabItems, tabindex: this.showRightScrollButton ? 0 : -1, hidden: !this.showRightScrollButton, onClick: () => this.scrollTabs('next') }, hAsync("post-icon", { key: '3a95b1bd98566a4783e066aa0ce0e8fb083dc7c3', name: "chevronright" }))), !this.isPagesVariant && (hAsync("div", { key: 'aef00cd5120565a053d892963e129f1ee6377a89', class: "tab-content", part: "post-tabs-content" }, hAsync("slot", { key: 'd8068bcb3d4daa6f62dc4ad0da644d993ca82aa9', name: "panels", onSlotchange: () => this.moveMisplacedPanels() })))));
24769
+ } })), hAsync("button", { key: '4345a9bc121ce187022cddf019d5c86d875a70e9', ref: el => (this.rightScrollButton = el), class: "scroll-btn scroll-btn-right", type: "button", "aria-label": this.textNextTabItems, tabindex: this.showRightScrollButton ? 0 : -1, hidden: !this.showRightScrollButton, onClick: () => this.scrollTabs('next') }, hAsync("post-icon", { key: '2df749c1a4e506d9940ce61e077d0f0f330b7342', name: "chevronright" }))), !this.isPagesVariant && (hAsync("div", { key: '184db29a5826af78d142ed1489be33c45831970b', class: "tab-content", part: "post-tabs-content" }, hAsync("slot", { key: '4a984c7de97f2f89e7fd0f829f5bc62e2323f056', name: "panels", onSlotchange: () => this.moveMisplacedPanels() })))));
24350
24770
  }
24351
24771
  get host() { return getElement(this); }
24352
24772
  static get watchers() { return {
@@ -24413,7 +24833,7 @@ class PostTogglebutton {
24413
24833
  });
24414
24834
  }
24415
24835
  render() {
24416
- return (hAsync(Host, { key: '7b935b808aa1ebbe97ac37bed25bfc215513097f', "data-version": version$1, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, hAsync("slot", { key: 'd06f112049850f8d7bdffd5e0b70440bae41010b' })));
24836
+ return (hAsync(Host, { key: '81fa9d922480059096e4146c10cf2ef72357b482', "data-version": version$1, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, hAsync("slot", { key: '4e8d793e3867ba4c9c8e17d509652309a79f032a' })));
24417
24837
  }
24418
24838
  get host() { return getElement(this); }
24419
24839
  static get style() { return postTogglebuttonCss(); }
@@ -24497,7 +24917,7 @@ class PostTooltip {
24497
24917
  }
24498
24918
  render() {
24499
24919
  const popoverClass = `${this.arrow ? 'has-arrow' : ''}`;
24500
- return (hAsync(Host, { key: '88e3d485579f14915471a3d6cd09654d4bd288e7', "data-version": version$1 }, hAsync("post-popovercontainer", { key: 'e1cd5638316cf34517d46c5b73c865ac4548d906', safeSpace: "trapezoid", class: popoverClass, role: "tooltip", arrow: this.arrow, placement: this.placement, onPostBeforeToggle: e => this.handleBeforeToggle(e), ref: (el) => (this.popoverRef = el) }, hAsync("slot", { key: '02ce027505b3fe4f90c2e3208cb7e2c304138c5e' }))));
24920
+ return (hAsync(Host, { key: '62d5983e0ef32f851166d0c1d2c457cac0809fdf', "data-version": version$1 }, hAsync("post-popovercontainer", { key: '10150540956510724ab4832ecceb421a7013d983', safeSpace: "trapezoid", class: popoverClass, role: "tooltip", arrow: this.arrow, placement: this.placement, autoHide: true, onPostBeforeToggle: e => this.handleBeforeToggle(e), ref: (el) => (this.popoverRef = el) }, hAsync("slot", { key: 'cdfaf0e916afa55ec3f1a7f64003101985560e27' }))));
24501
24921
  }
24502
24922
  get host() { return getElement(this); }
24503
24923
  static get style() { return postTooltipCss(); }
@@ -24692,7 +25112,7 @@ class PostTooltipTrigger {
24692
25112
  this.tooltip?.hide();
24693
25113
  }
24694
25114
  render() {
24695
- return (hAsync(Host, { key: '6c772242ad42feedd5ff3fe7e7ab637fae8d1292', "data-version": version$1 }, hAsync("slot", { key: 'fac33c09dcff608e386bc75af9eef4cc19eecf10', onSlotchange: () => this.handleSlotChange() })));
25115
+ return (hAsync(Host, { key: '55adc12f457aa8a5dd4357ed27876b0e526f7ae3', "data-version": version$1 }, hAsync("slot", { key: '84da1734ae1c1ac9376caa693108e3ed54bf176f', onSlotchange: () => this.handleSlotChange() })));
24696
25116
  }
24697
25117
  get host() { return getElement(this); }
24698
25118
  static get style() { return postTooltipTriggerCss(); }