@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.mjs CHANGED
@@ -5887,182 +5887,24 @@ function Url() {
5887
5887
  });
5888
5888
  }
5889
5889
 
5890
- /* eslint-disable no-undefined,no-param-reassign,no-shadow */
5891
-
5892
- /**
5893
- * Throttle execution of a function. Especially useful for rate limiting
5894
- * execution of handlers on events like resize and scroll.
5895
- *
5896
- * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)
5897
- * are most useful.
5898
- * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,
5899
- * as-is, to `callback` when the throttled-function is executed.
5900
- * @param {object} [options] - An object to configure options.
5901
- * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds
5902
- * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed
5903
- * one final time after the last throttled-function call. (After the throttled-function has not been called for
5904
- * `delay` milliseconds, the internal counter is reset).
5905
- * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback
5906
- * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that
5907
- * callback will never executed if both noLeading = true and noTrailing = true.
5908
- * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is
5909
- * false (at end), schedule `callback` to execute after `delay` ms.
5910
- *
5911
- * @returns {Function} A new, throttled, function.
5912
- */
5913
- function throttle (delay, callback, options) {
5914
- var _ref = options || {},
5915
- _ref$noTrailing = _ref.noTrailing,
5916
- noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,
5917
- _ref$noLeading = _ref.noLeading,
5918
- noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,
5919
- _ref$debounceMode = _ref.debounceMode,
5920
- debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;
5921
- /*
5922
- * After wrapper has stopped being called, this timeout ensures that
5923
- * `callback` is executed at the proper times in `throttle` and `end`
5924
- * debounce modes.
5925
- */
5926
- var timeoutID;
5927
- var cancelled = false;
5928
-
5929
- // Keep track of the last time `callback` was executed.
5930
- var lastExec = 0;
5931
-
5932
- // Function to clear existing timeout
5933
- function clearExistingTimeout() {
5934
- if (timeoutID) {
5935
- clearTimeout(timeoutID);
5936
- }
5937
- }
5938
-
5939
- // Function to cancel next exec
5940
- function cancel(options) {
5941
- var _ref2 = options || {},
5942
- _ref2$upcomingOnly = _ref2.upcomingOnly,
5943
- upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;
5944
- clearExistingTimeout();
5945
- cancelled = !upcomingOnly;
5946
- }
5947
-
5948
- /*
5949
- * The `wrapper` function encapsulates all of the throttling / debouncing
5950
- * functionality and when executed will limit the rate at which `callback`
5951
- * is executed.
5952
- */
5953
- function wrapper() {
5954
- for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {
5955
- arguments_[_key] = arguments[_key];
5956
- }
5957
- var self = this;
5958
- var elapsed = Date.now() - lastExec;
5959
- if (cancelled) {
5960
- return;
5961
- }
5962
-
5963
- // Execute `callback` and update the `lastExec` timestamp.
5964
- function exec() {
5965
- lastExec = Date.now();
5966
- callback.apply(self, arguments_);
5967
- }
5968
-
5969
- /*
5970
- * If `debounceMode` is true (at begin) this is used to clear the flag
5971
- * to allow future `callback` executions.
5972
- */
5973
- function clear() {
5974
- timeoutID = undefined;
5975
- }
5976
- if (!noLeading && debounceMode && !timeoutID) {
5977
- /*
5978
- * Since `wrapper` is being called for the first time and
5979
- * `debounceMode` is true (at begin), execute `callback`
5980
- * and noLeading != true.
5981
- */
5982
- exec();
5983
- }
5984
- clearExistingTimeout();
5985
- if (debounceMode === undefined && elapsed > delay) {
5986
- if (noLeading) {
5987
- /*
5988
- * In throttle mode with noLeading, if `delay` time has
5989
- * been exceeded, update `lastExec` and schedule `callback`
5990
- * to execute after `delay` ms.
5991
- */
5992
- lastExec = Date.now();
5993
- if (!noTrailing) {
5994
- timeoutID = setTimeout(debounceMode ? clear : exec, delay);
5995
- }
5996
- } else {
5997
- /*
5998
- * In throttle mode without noLeading, if `delay` time has been exceeded, execute
5999
- * `callback`.
6000
- */
6001
- exec();
6002
- }
6003
- } else if (noTrailing !== true) {
6004
- /*
6005
- * In trailing throttle mode, since `delay` time has not been
6006
- * exceeded, schedule `callback` to execute `delay` ms after most
6007
- * recent execution.
6008
- *
6009
- * If `debounceMode` is true (at begin), schedule `clear` to execute
6010
- * after `delay` ms.
6011
- *
6012
- * If `debounceMode` is false (at end), schedule `callback` to
6013
- * execute after `delay` ms.
6014
- */
6015
- timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);
6016
- }
6017
- }
6018
- wrapper.cancel = cancel;
6019
-
6020
- // Return the wrapper function.
6021
- return wrapper;
6022
- }
6023
-
6024
- /* eslint-disable no-undefined */
6025
-
6026
- /**
6027
- * Debounce execution of a function. Debouncing, unlike throttling,
6028
- * guarantees that a function is only executed a single time, either at the
6029
- * very beginning of a series of calls, or at the very end.
6030
- *
6031
- * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
6032
- * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,
6033
- * to `callback` when the debounced-function is executed.
6034
- * @param {object} [options] - An object to configure options.
6035
- * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds
6036
- * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.
6037
- * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).
6038
- *
6039
- * @returns {Function} A new, debounced function.
6040
- */
6041
- function debounce$1 (delay, callback, options) {
6042
- var _ref = {},
6043
- _ref$atBegin = _ref.atBegin,
6044
- atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;
6045
- return throttle(delay, callback, {
6046
- debounceMode: atBegin !== false
6047
- });
6048
- }
6049
-
6050
5890
  class Breakpoint {
6051
5891
  constructor() {
6052
5892
  this.breakpoints = [
6053
- { key: 'xl', device: 'desktop', minWidth: 1280 },
6054
- { key: 'lg', device: 'desktop', minWidth: 1024 },
6055
- { key: 'md', device: 'tablet', minWidth: 780 },
6056
- { key: 'sm', device: 'tablet', minWidth: 600 },
6057
- { key: 'xs', device: 'mobile', minWidth: 0 },
5893
+ { key: 'xl', device: 'desktop', minWidth: 1280, mediaQuery: '(min-width: 1280px)' },
5894
+ { key: 'lg', device: 'desktop', minWidth: 1024, mediaQuery: '(min-width: 1024px)' },
5895
+ { key: 'md', device: 'tablet', minWidth: 780, mediaQuery: '(min-width: 780px)' },
5896
+ { key: 'sm', device: 'tablet', minWidth: 600, mediaQuery: '(min-width: 600px)' },
5897
+ { key: 'xs', device: 'mobile', minWidth: 0, mediaQuery: '(min-width: 0px)' },
6058
5898
  ];
6059
5899
  this.resizeObserver = globalThis.ResizeObserver
6060
5900
  ? new ResizeObserver(() => this.updateCurrentBreakpoint())
6061
5901
  : null;
6062
- this.updateCurrentBreakpoint = throttle(50, (options = { emitEvents: true }) => {
5902
+ this.updateCurrentBreakpoint = (options = { emitEvents: true }) => {
6063
5903
  const previousBreakpoint = this.currentBreakpoint;
6064
5904
  const newBreakpoint = this.breakpoints.find(breakpoint => {
6065
- return breakpoint.minWidth <= innerWidth;
5905
+ return globalThis.matchMedia
5906
+ ? globalThis.matchMedia(breakpoint.mediaQuery).matches
5907
+ : breakpoint.minWidth <= document.documentElement.clientWidth;
6066
5908
  });
6067
5909
  if (!newBreakpoint)
6068
5910
  return;
@@ -6070,9 +5912,10 @@ class Breakpoint {
6070
5912
  if (!options.emitEvents)
6071
5913
  return;
6072
5914
  Object.keys(this.currentBreakpoint)
5915
+ .filter(key => key !== 'mediaQuery')
6073
5916
  .filter(key => !previousBreakpoint || this.currentBreakpoint[key] !== previousBreakpoint[key])
6074
5917
  .forEach((key) => this.dispatchEvent(key));
6075
- });
5918
+ };
6076
5919
  if (this.resizeObserver) {
6077
5920
  this.updateCurrentBreakpoint({ emitEvents: false });
6078
5921
  this.resizeObserver.observe(document.body);
@@ -6088,37 +5931,6 @@ class Breakpoint {
6088
5931
  }
6089
5932
  const breakpoint = new Breakpoint();
6090
5933
 
6091
- /**
6092
- * Invoke the `componentOnReady` method if it is available, simulate it otherwise
6093
- * @see https://stenciljs.com/docs/api#componentonready
6094
- */
6095
- function componentOnReady(el) {
6096
- if (typeof el.componentOnReady === 'function') {
6097
- return el.componentOnReady();
6098
- }
6099
- else {
6100
- return new Promise(resolve => customOnReady(() => {
6101
- resolve(el);
6102
- }));
6103
- }
6104
- }
6105
- function customOnReady(callback) {
6106
- if (typeof requestAnimationFrame === 'function') {
6107
- return requestAnimationFrame(callback);
6108
- }
6109
- return setTimeout(callback);
6110
- }
6111
-
6112
- function debounce(callback, timeout = 200) {
6113
- let id;
6114
- return (...args) => {
6115
- if (id) {
6116
- clearTimeout(id);
6117
- }
6118
- id = setTimeout(callback, timeout, ...args);
6119
- };
6120
- }
6121
-
6122
5934
  /**
6123
5935
  * Validates if an event should be processed based on target and nesting criteria
6124
5936
  * @param event - The event to validate
@@ -6210,32 +6022,106 @@ function EventFrom(tag, option) {
6210
6022
  }
6211
6023
  /**
6212
6024
  * Traverses up the DOM (including crossing shadow DOM boundaries) to find the closest ancestor
6213
- * that matches the specified tag name.
6214
- * @param element - The starting element
6215
- * @param tagName - The tag name to match (e.g., 'post-accordion')
6025
+ * matching the given predicate.
6026
+ * @param start - The starting element
6027
+ * @param predicate - A type guard used to test each ancestor
6216
6028
  * @returns The closest matching ancestor or null if none found
6217
6029
  */
6218
- function findClosestParentWithTag(element, tagName) {
6219
- let current = element;
6030
+ function findClosestAcrossShadow(start, predicate) {
6031
+ let current = start;
6220
6032
  while (current) {
6221
- if (current.localName === tagName) {
6033
+ if (predicate(current)) {
6222
6034
  return current;
6223
6035
  }
6224
- // Check regular parent first
6225
6036
  if (current.parentElement) {
6226
6037
  current = current.parentElement;
6227
6038
  }
6228
- // If no parentElement, check if we're in a shadow root
6229
- else if (current.parentNode instanceof ShadowRoot) {
6230
- current = current.parentNode.host;
6231
- }
6232
- // No more parents to check
6233
6039
  else {
6234
- current = null;
6040
+ // Duck-typed ShadowRoot check (nodeType 11 + host) instead of `instanceof ShadowRoot`,
6041
+ // since some test environments (e.g. JSDOM) only partially implement it.
6042
+ const parent = current.parentNode;
6043
+ if (parent !== null && parent.nodeType === 11 && 'host' in parent) {
6044
+ current = parent.host;
6045
+ }
6046
+ else {
6047
+ current = null;
6048
+ }
6235
6049
  }
6236
6050
  }
6237
6051
  return null;
6238
6052
  }
6053
+ function findClosestParentWithTag(element, tagName) {
6054
+ return findClosestAcrossShadow(element, (el) => el.localName === tagName);
6055
+ }
6056
+
6057
+ const CLOSABLE_TARGETS = [
6058
+ {
6059
+ predicate: el => el.localName === 'post-banner',
6060
+ close: el => void el.dismiss(),
6061
+ },
6062
+ {
6063
+ predicate: el => el.localName === 'post-popover',
6064
+ close: el => void el.hide(),
6065
+ },
6066
+ {
6067
+ predicate: el => el.localName === 'post-popovercontainer',
6068
+ close: el => void el.hide(),
6069
+ },
6070
+ {
6071
+ predicate: el => el.localName === 'post-collapsible',
6072
+ close: el => void el.toggle(false),
6073
+ },
6074
+ {
6075
+ predicate: el => el.localName === 'post-accordion-item',
6076
+ close: el => void el.toggle(false),
6077
+ },
6078
+ {
6079
+ predicate: el => el.localName === 'dialog',
6080
+ close: el => el.close(),
6081
+ },
6082
+ {
6083
+ predicate: el => el.hasAttribute('popover'),
6084
+ close: el => el.togglePopover(false),
6085
+ },
6086
+ ];
6087
+ function findClosableTarget(start) {
6088
+ const el = findClosestAcrossShadow(start, (el) => CLOSABLE_TARGETS.some(t => t.predicate(el)));
6089
+ if (!el)
6090
+ return null;
6091
+ const match = CLOSABLE_TARGETS.find(t => t.predicate(el));
6092
+ return { element: el, close: () => match.close(el) };
6093
+ }
6094
+
6095
+ /**
6096
+ * Invoke the `componentOnReady` method if it is available, simulate it otherwise
6097
+ * @see https://stenciljs.com/docs/api#componentonready
6098
+ */
6099
+ function componentOnReady(el) {
6100
+ if (typeof el.componentOnReady === 'function') {
6101
+ return el.componentOnReady();
6102
+ }
6103
+ else {
6104
+ return new Promise(resolve => customOnReady(() => {
6105
+ resolve(el);
6106
+ }));
6107
+ }
6108
+ }
6109
+ function customOnReady(callback) {
6110
+ if (typeof requestAnimationFrame === 'function') {
6111
+ return requestAnimationFrame(callback);
6112
+ }
6113
+ return setTimeout(callback);
6114
+ }
6115
+
6116
+ function debounce$1(callback, timeout = 200) {
6117
+ let id;
6118
+ return (...args) => {
6119
+ if (id) {
6120
+ clearTimeout(id);
6121
+ }
6122
+ id = setTimeout(callback, timeout, ...args);
6123
+ };
6124
+ }
6239
6125
 
6240
6126
  /**
6241
6127
  * getRootNode() can only be used after the element has been attached to the document!
@@ -6417,7 +6303,7 @@ function repeat(callback, { delayMs = 300, intervalMs = 100 } = {}) {
6417
6303
  };
6418
6304
  }
6419
6305
 
6420
- const version$1 = "10.4.0";
6306
+ const version$1 = "10.6.0";
6421
6307
 
6422
6308
  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)}`;
6423
6309
 
@@ -6638,44 +6524,31 @@ class PostAutocomplete {
6638
6524
  constructor(hostRef) {
6639
6525
  registerInstance(this, hostRef);
6640
6526
  this.postFilteringEvent = createEvent(this, "postFilteringEvent");
6641
- this.debouncedHandleInput = debounce((event) => {
6527
+ this.debouncedHandleInput = debounce$1((event) => {
6642
6528
  void this.handleInput(event);
6643
6529
  }, 250);
6644
6530
  /** Number of characters to type before filtering methods are called */
6645
6531
  this.filterThreshold = 0;
6646
6532
  /** Show or hide the clear button */
6647
6533
  this.clearable = false;
6648
- this.inputValue = '';
6649
- this.handleFocus = () => {
6650
- if (this.filterThreshold !== 0)
6651
- return;
6652
- if (this.inputElement && this.inputElement.value.trim() !== '')
6653
- return;
6654
- this.postFilteringEvent.emit('');
6534
+ /** Whether the listbox is currently expanded */
6535
+ this.expanded = false;
6536
+ /** The value of the last run query */
6537
+ this.lastQuery = '';
6538
+ /** The value of the selected listbox option */
6539
+ this.selectedValue = null;
6540
+ this.handleClick = async () => {
6541
+ await this.runQuery('', true);
6655
6542
  };
6656
- this.handleOnBlur = () => {
6657
- this.inputElement.value = this.inputValue;
6658
- this.listBoxElement.filter('');
6543
+ this.handleBlur = () => {
6544
+ this.restoreSelectedValue();
6659
6545
  this.hideListBox();
6660
6546
  };
6661
6547
  this.handleInput = async (event) => {
6662
6548
  if (!this.listBoxElement)
6663
6549
  return;
6664
6550
  const value = event.target.value.trim();
6665
- const query = value.length >= this.filterThreshold ? value : '';
6666
- // Allow for consuming parent to handle filtering (e.g. for async data) and prevent default filtering behavior
6667
- const { defaultPrevented } = this.postFilteringEvent.emit(query && query.length >= this.filterThreshold ? query : '');
6668
- if (defaultPrevented)
6669
- return;
6670
- await this.listBoxElement.filter(query);
6671
- if (query) {
6672
- this.showListBox();
6673
- this.announceCount();
6674
- }
6675
- else {
6676
- this.inputValue = '';
6677
- this.clearAnnouncement();
6678
- }
6551
+ await this.runQuery(value.length >= this.filterThreshold ? value : '');
6679
6552
  };
6680
6553
  this.handleKeyDown = (event) => {
6681
6554
  const { key, altKey } = event;
@@ -6717,8 +6590,7 @@ class PostAutocomplete {
6717
6590
  };
6718
6591
  this.handleOptionSelected = (e) => {
6719
6592
  const value = e.detail;
6720
- this.inputElement.value = value;
6721
- this.inputValue = value;
6593
+ this.updateSelectedValue(value);
6722
6594
  this.hideListBox();
6723
6595
  };
6724
6596
  this.handleOptionActive = (e) => {
@@ -6730,23 +6602,9 @@ class PostAutocomplete {
6730
6602
  this.inputElement.removeAttribute('aria-activedescendant');
6731
6603
  }
6732
6604
  };
6733
- this.hideListBox = () => {
6734
- this.clearAnnouncement();
6735
- this.listBoxElement.hide();
6736
- this.inputElement.ariaExpanded = 'false';
6737
- this.host.removeAttribute('open');
6738
- this.inputElement.removeAttribute('aria-activedescendant');
6739
- };
6740
- this.showListBox = async () => {
6741
- await this.listBoxElement.show();
6742
- this.inputElement.ariaExpanded = 'true';
6743
- this.host.setAttribute('open', '');
6744
- this.announceCount();
6745
- };
6746
- this.clearInput = () => {
6605
+ this.handleClear = () => {
6747
6606
  if (this.inputElement) {
6748
- this.inputElement.value = '';
6749
- this.inputValue = '';
6607
+ this.updateSelectedValue(null);
6750
6608
  this.listBoxElement.clearSelection();
6751
6609
  this.hideListBox();
6752
6610
  }
@@ -6793,18 +6651,16 @@ class PostAutocomplete {
6793
6651
  if (this.inputElement) {
6794
6652
  this.inputElement.addEventListener('input', this.debouncedHandleInput);
6795
6653
  this.inputElement.addEventListener('keydown', this.handleKeyDown);
6796
- this.inputElement.addEventListener('blur', this.handleOnBlur);
6797
- this.inputElement.addEventListener('click', this.showListBox);
6798
- this.inputElement.addEventListener('focus', this.handleFocus);
6654
+ this.inputElement.addEventListener('blur', this.handleBlur);
6655
+ this.inputElement.addEventListener('click', this.handleClick);
6799
6656
  }
6800
6657
  }
6801
6658
  detachInputListeners() {
6802
6659
  if (this.inputElement) {
6803
6660
  this.inputElement.removeEventListener('input', this.debouncedHandleInput);
6804
6661
  this.inputElement.removeEventListener('keydown', this.handleKeyDown);
6805
- this.inputElement.removeEventListener('blur', this.handleOnBlur);
6806
- this.inputElement.removeEventListener('click', this.showListBox);
6807
- this.inputElement.removeEventListener('focus', this.handleFocus);
6662
+ this.inputElement.removeEventListener('blur', this.handleBlur);
6663
+ this.inputElement.removeEventListener('click', this.handleClick);
6808
6664
  }
6809
6665
  }
6810
6666
  attachListboxListeners() {
@@ -6829,8 +6685,53 @@ class PostAutocomplete {
6829
6685
  const count = this.listBoxElement.querySelectorAll('post-listbox-option:not([hidden])').length;
6830
6686
  this.outputElement.textContent = this.textAvailableSuggestions.replace('{count}', String(count));
6831
6687
  }
6688
+ async showListBox() {
6689
+ await this.listBoxElement.show();
6690
+ this.expanded = true;
6691
+ this.inputElement.ariaExpanded = 'true';
6692
+ this.host.setAttribute('open', '');
6693
+ this.announceCount();
6694
+ }
6695
+ async hideListBox() {
6696
+ this.clearAnnouncement();
6697
+ this.expanded = false;
6698
+ this.host.removeAttribute('open');
6699
+ this.inputElement.ariaExpanded = 'false';
6700
+ this.inputElement.removeAttribute('aria-activedescendant');
6701
+ await this.listBoxElement.hide();
6702
+ }
6703
+ updateSelectedValue(value) {
6704
+ this.selectedValue = value;
6705
+ this.inputElement.value = this.selectedValue ?? '';
6706
+ }
6707
+ /** Restores the input to the value of the selected option. */
6708
+ restoreSelectedValue() {
6709
+ this.inputElement.value = this.selectedValue ?? '';
6710
+ }
6711
+ /** Runs a query, filtering the listbox options and reflecting the outcome. */
6712
+ async runQuery(query, alwaysExpand = false) {
6713
+ // Prevent running the same query twice.
6714
+ if (this.lastQuery !== (this.lastQuery = query)) {
6715
+ await this.filterListBox(query);
6716
+ }
6717
+ // Always update the count if the listbox is expanded.
6718
+ if (this.expanded) {
6719
+ this.announceCount();
6720
+ }
6721
+ // Automatically show the listbox if the query is non-empty.
6722
+ else if (alwaysExpand || query) {
6723
+ await this.showListBox();
6724
+ }
6725
+ }
6726
+ /** Filters the listbox options based on the query, delegating to the consuming parent when possible. */
6727
+ async filterListBox(query) {
6728
+ // Allow for consuming parent to handle filtering (e.g. for async data) and prevent default filtering behavior.
6729
+ if (this.postFilteringEvent.emit(query).defaultPrevented)
6730
+ return;
6731
+ await this.listBoxElement?.filter(query);
6732
+ }
6832
6733
  render() {
6833
- 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) })));
6734
+ 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) })));
6834
6735
  }
6835
6736
  get host() { return getElement(this); }
6836
6737
  static get style() { return postAutocompleteCss(); }
@@ -6842,7 +6743,7 @@ class PostAutocomplete {
6842
6743
  "clearable": [516],
6843
6744
  "listbox": [513],
6844
6745
  "textAvailableSuggestions": [513, "text-available-suggestions"],
6845
- "inputValue": [32]
6746
+ "selectedValue": [32]
6846
6747
  },
6847
6748
  "$listeners$": undefined,
6848
6749
  "$lazyBundleId$": "-",
@@ -7117,12 +7018,23 @@ class PostBackToTop {
7117
7018
  return window.scrollY > window.innerHeight;
7118
7019
  }
7119
7020
  /*Watch for changes in belowFold to show/hide the back to top button*/
7120
- watchBelowFold(newValue) {
7121
- if (newValue) {
7122
- fadeSlide(this.host, 'in', { translate: this.translateY, fill: 'forwards' });
7021
+ async watchBelowFold(newValue) {
7022
+ this.currentAnimation?.cancel();
7023
+ // host needs to be visible before we can animate, in or out
7024
+ // hidden state gets recalculated after the animation, based on belowFold
7025
+ this.host.hidden = false;
7026
+ this.currentAnimation = fadeSlide(this.host, newValue ? 'in' : 'out', {
7027
+ translate: this.translateY,
7028
+ fill: 'forwards',
7029
+ });
7030
+ try {
7031
+ await this.currentAnimation.finished;
7032
+ // only hide once the fade-out finished and we're still not below fold
7033
+ if (!this.belowFold)
7034
+ this.host.hidden = true;
7123
7035
  }
7124
- else {
7125
- fadeSlide(this.host, 'out', { translate: this.translateY, fill: 'forwards' });
7036
+ catch {
7037
+ // animation got canceled, nothing to do
7126
7038
  }
7127
7039
  }
7128
7040
  scrollToTop() {
@@ -7164,16 +7076,17 @@ class PostBackToTop {
7164
7076
  // Set the initial state
7165
7077
  componentWillLoad() {
7166
7078
  this.belowFold = this.isBelowFold();
7079
+ this.host.hidden = !this.belowFold;
7167
7080
  }
7168
7081
  componentDidLoad() {
7169
- window.addEventListener('scroll', this.handleScroll, false);
7082
+ window.addEventListener('scroll', this.handleScroll, { passive: true });
7170
7083
  this.animateButton();
7171
7084
  }
7172
7085
  disconnectedCallback() {
7173
7086
  window.removeEventListener('scroll', this.handleScroll);
7174
7087
  }
7175
7088
  render() {
7176
- 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))));
7089
+ 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))));
7177
7090
  }
7178
7091
  get host() { return getElement(this); }
7179
7092
  static get watchers() { return {
@@ -7296,14 +7209,11 @@ class PostBanner {
7296
7209
  this.postDismissed.emit();
7297
7210
  this.host.remove();
7298
7211
  }
7299
- onCloseButtonClick() {
7300
- void this.dismiss();
7301
- }
7302
7212
  checkContent() {
7303
7213
  this.hasActions = this.host.querySelectorAll('[slot="actions"]').length > 0;
7304
7214
  }
7305
7215
  render() {
7306
- 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" }))))));
7216
+ 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" }))))));
7307
7217
  }
7308
7218
  get host() { return getElement(this); }
7309
7219
  static get style() { return postBannerCss(); }
@@ -7315,7 +7225,7 @@ class PostBanner {
7315
7225
  "hasActions": [32],
7316
7226
  "dismiss": [64]
7317
7227
  },
7318
- "$listeners$": [[0, "click", "onCloseButtonClick"]],
7228
+ "$listeners$": undefined,
7319
7229
  "$lazyBundleId$": "-",
7320
7230
  "$attrsToReflect$": [["type", "type"]]
7321
7231
  }; }
@@ -7323,13 +7233,10 @@ class PostBanner {
7323
7233
  __decorate$w([
7324
7234
  OneOf(BANNER_TYPES)
7325
7235
  ], PostBanner.prototype, "type", void 0);
7326
- __decorate$w([
7327
- EventFrom('post-closebutton', { allowDescendants: true })
7328
- ], PostBanner.prototype, "onCloseButtonClick", null);
7329
7236
 
7330
7237
  const VARIANTS = ['listitem', 'menuitem'];
7331
7238
 
7332
- 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)}`;
7239
+ 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}`;
7333
7240
 
7334
7241
  var __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
7335
7242
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -7342,60 +7249,252 @@ var __decorate$v = (undefined && undefined.__decorate) || function (decorators,
7342
7249
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7343
7250
  };
7344
7251
  /**
7345
- * @slot default - The content displayed inside the breadcrumb item.
7252
+ * @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.
7253
+ */
7254
+ class PostBreadcrumbItem {
7255
+ constructor(hostRef) {
7256
+ registerInstance(this, hostRef);
7257
+ /**
7258
+ * 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.
7259
+ */
7260
+ this.hasSlottedAnchor = false;
7261
+ /**
7262
+ * Controls how the item is rendered, either as a standard list item or within an overflow menu.
7263
+ */
7264
+ this.variant = 'listitem';
7265
+ /**
7266
+ * Indicates that the item represents the current page, applying appropriate styling.
7267
+ */
7268
+ this.selected = false;
7269
+ /**
7270
+ * Indicates that this is the only visible item, applying appropriate styling.
7271
+ */
7272
+ this.standalone = false;
7273
+ }
7274
+ componentWillLoad() {
7275
+ this.checkSlottedAnchor();
7276
+ }
7277
+ checkSlottedAnchor() {
7278
+ this.hasSlottedAnchor = Array.from(this.host.children).some(child => child.tagName === 'A');
7279
+ }
7280
+ renderContent() {
7281
+ const slot = hAsync("slot", { onSlotchange: () => this.checkSlottedAnchor() });
7282
+ const href = this.url instanceof URL ? this.url.href : this.url;
7283
+ if (this.hasSlottedAnchor) {
7284
+ return slot;
7285
+ }
7286
+ else if (!href) {
7287
+ return hAsync("span", null, slot);
7288
+ }
7289
+ else {
7290
+ return (hAsync("a", { href: href, "aria-current": this.selected ? 'page' : undefined, "aria-label": this.label, "aria-description": this.description }, slot));
7291
+ }
7292
+ }
7293
+ render() {
7294
+ const content = this.renderContent();
7295
+ 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)));
7296
+ }
7297
+ get host() { return getElement(this); }
7298
+ static get style() { return postBreadcrumbItemCss(); }
7299
+ static get cmpMeta() { return {
7300
+ "$flags$": 265,
7301
+ "$tagName$": "post-breadcrumb-item",
7302
+ "$members$": {
7303
+ "url": [513],
7304
+ "label": [513],
7305
+ "description": [513],
7306
+ "variant": [513],
7307
+ "selected": [516],
7308
+ "standalone": [516],
7309
+ "hasSlottedAnchor": [32]
7310
+ },
7311
+ "$listeners$": undefined,
7312
+ "$lazyBundleId$": "-",
7313
+ "$attrsToReflect$": [["url", "url"], ["label", "label"], ["description", "description"], ["variant", "variant"], ["selected", "selected"], ["standalone", "standalone"]]
7314
+ }; }
7315
+ }
7316
+ __decorate$v([
7317
+ Url()
7318
+ ], PostBreadcrumbItem.prototype, "url", void 0);
7319
+ __decorate$v([
7320
+ Type('string')
7321
+ ], PostBreadcrumbItem.prototype, "label", void 0);
7322
+ __decorate$v([
7323
+ Type('string')
7324
+ ], PostBreadcrumbItem.prototype, "description", void 0);
7325
+ __decorate$v([
7326
+ OneOf(VARIANTS)
7327
+ ], PostBreadcrumbItem.prototype, "variant", void 0);
7328
+ __decorate$v([
7329
+ Required(),
7330
+ Type('boolean')
7331
+ ], PostBreadcrumbItem.prototype, "selected", void 0);
7332
+ __decorate$v([
7333
+ Required(),
7334
+ Type('boolean')
7335
+ ], PostBreadcrumbItem.prototype, "standalone", void 0);
7336
+
7337
+ /* eslint-disable no-undefined,no-param-reassign,no-shadow */
7338
+
7339
+ /**
7340
+ * Throttle execution of a function. Especially useful for rate limiting
7341
+ * execution of handlers on events like resize and scroll.
7342
+ *
7343
+ * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)
7344
+ * are most useful.
7345
+ * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,
7346
+ * as-is, to `callback` when the throttled-function is executed.
7347
+ * @param {object} [options] - An object to configure options.
7348
+ * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds
7349
+ * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed
7350
+ * one final time after the last throttled-function call. (After the throttled-function has not been called for
7351
+ * `delay` milliseconds, the internal counter is reset).
7352
+ * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback
7353
+ * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that
7354
+ * callback will never executed if both noLeading = true and noTrailing = true.
7355
+ * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is
7356
+ * false (at end), schedule `callback` to execute after `delay` ms.
7357
+ *
7358
+ * @returns {Function} A new, throttled, function.
7359
+ */
7360
+ function throttle (delay, callback, options) {
7361
+ var _ref = options || {},
7362
+ _ref$noTrailing = _ref.noTrailing,
7363
+ noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,
7364
+ _ref$noLeading = _ref.noLeading,
7365
+ noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,
7366
+ _ref$debounceMode = _ref.debounceMode,
7367
+ debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;
7368
+ /*
7369
+ * After wrapper has stopped being called, this timeout ensures that
7370
+ * `callback` is executed at the proper times in `throttle` and `end`
7371
+ * debounce modes.
7372
+ */
7373
+ var timeoutID;
7374
+ var cancelled = false;
7375
+
7376
+ // Keep track of the last time `callback` was executed.
7377
+ var lastExec = 0;
7378
+
7379
+ // Function to clear existing timeout
7380
+ function clearExistingTimeout() {
7381
+ if (timeoutID) {
7382
+ clearTimeout(timeoutID);
7383
+ }
7384
+ }
7385
+
7386
+ // Function to cancel next exec
7387
+ function cancel(options) {
7388
+ var _ref2 = options || {},
7389
+ _ref2$upcomingOnly = _ref2.upcomingOnly,
7390
+ upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;
7391
+ clearExistingTimeout();
7392
+ cancelled = !upcomingOnly;
7393
+ }
7394
+
7395
+ /*
7396
+ * The `wrapper` function encapsulates all of the throttling / debouncing
7397
+ * functionality and when executed will limit the rate at which `callback`
7398
+ * is executed.
7399
+ */
7400
+ function wrapper() {
7401
+ for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {
7402
+ arguments_[_key] = arguments[_key];
7403
+ }
7404
+ var self = this;
7405
+ var elapsed = Date.now() - lastExec;
7406
+ if (cancelled) {
7407
+ return;
7408
+ }
7409
+
7410
+ // Execute `callback` and update the `lastExec` timestamp.
7411
+ function exec() {
7412
+ lastExec = Date.now();
7413
+ callback.apply(self, arguments_);
7414
+ }
7415
+
7416
+ /*
7417
+ * If `debounceMode` is true (at begin) this is used to clear the flag
7418
+ * to allow future `callback` executions.
7419
+ */
7420
+ function clear() {
7421
+ timeoutID = undefined;
7422
+ }
7423
+ if (!noLeading && debounceMode && !timeoutID) {
7424
+ /*
7425
+ * Since `wrapper` is being called for the first time and
7426
+ * `debounceMode` is true (at begin), execute `callback`
7427
+ * and noLeading != true.
7428
+ */
7429
+ exec();
7430
+ }
7431
+ clearExistingTimeout();
7432
+ if (debounceMode === undefined && elapsed > delay) {
7433
+ if (noLeading) {
7434
+ /*
7435
+ * In throttle mode with noLeading, if `delay` time has
7436
+ * been exceeded, update `lastExec` and schedule `callback`
7437
+ * to execute after `delay` ms.
7438
+ */
7439
+ lastExec = Date.now();
7440
+ if (!noTrailing) {
7441
+ timeoutID = setTimeout(debounceMode ? clear : exec, delay);
7442
+ }
7443
+ } else {
7444
+ /*
7445
+ * In throttle mode without noLeading, if `delay` time has been exceeded, execute
7446
+ * `callback`.
7447
+ */
7448
+ exec();
7449
+ }
7450
+ } else if (noTrailing !== true) {
7451
+ /*
7452
+ * In trailing throttle mode, since `delay` time has not been
7453
+ * exceeded, schedule `callback` to execute `delay` ms after most
7454
+ * recent execution.
7455
+ *
7456
+ * If `debounceMode` is true (at begin), schedule `clear` to execute
7457
+ * after `delay` ms.
7458
+ *
7459
+ * If `debounceMode` is false (at end), schedule `callback` to
7460
+ * execute after `delay` ms.
7461
+ */
7462
+ timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);
7463
+ }
7464
+ }
7465
+ wrapper.cancel = cancel;
7466
+
7467
+ // Return the wrapper function.
7468
+ return wrapper;
7469
+ }
7470
+
7471
+ /* eslint-disable no-undefined */
7472
+
7473
+ /**
7474
+ * Debounce execution of a function. Debouncing, unlike throttling,
7475
+ * guarantees that a function is only executed a single time, either at the
7476
+ * very beginning of a series of calls, or at the very end.
7477
+ *
7478
+ * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
7479
+ * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,
7480
+ * to `callback` when the debounced-function is executed.
7481
+ * @param {object} [options] - An object to configure options.
7482
+ * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds
7483
+ * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.
7484
+ * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).
7485
+ *
7486
+ * @returns {Function} A new, debounced function.
7346
7487
  */
7347
- class PostBreadcrumbItem {
7348
- constructor(hostRef) {
7349
- registerInstance(this, hostRef);
7350
- /**
7351
- * Controls how the item is rendered, either as a standard list item or within an overflow menu.
7352
- */
7353
- this.variant = 'listitem';
7354
- /**
7355
- * Indicates that the item represents the current page, applying appropriate styling.
7356
- */
7357
- this.selected = false;
7358
- }
7359
- render() {
7360
- const href = this.url instanceof URL ? this.url.href : this.url;
7361
- 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)));
7362
- 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)));
7363
- }
7364
- get host() { return getElement(this); }
7365
- static get style() { return postBreadcrumbItemCss(); }
7366
- static get cmpMeta() { return {
7367
- "$flags$": 265,
7368
- "$tagName$": "post-breadcrumb-item",
7369
- "$members$": {
7370
- "url": [513],
7371
- "label": [513],
7372
- "description": [513],
7373
- "variant": [513],
7374
- "selected": [516]
7375
- },
7376
- "$listeners$": undefined,
7377
- "$lazyBundleId$": "-",
7378
- "$attrsToReflect$": [["url", "url"], ["label", "label"], ["description", "description"], ["variant", "variant"], ["selected", "selected"]]
7379
- }; }
7488
+ function debounce (delay, callback, options) {
7489
+ var _ref = {},
7490
+ _ref$atBegin = _ref.atBegin,
7491
+ atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;
7492
+ return throttle(delay, callback, {
7493
+ debounceMode: atBegin !== false
7494
+ });
7380
7495
  }
7381
- __decorate$v([
7382
- Url()
7383
- ], PostBreadcrumbItem.prototype, "url", void 0);
7384
- __decorate$v([
7385
- Type('string')
7386
- ], PostBreadcrumbItem.prototype, "label", void 0);
7387
- __decorate$v([
7388
- Type('string')
7389
- ], PostBreadcrumbItem.prototype, "description", void 0);
7390
- __decorate$v([
7391
- OneOf(VARIANTS)
7392
- ], PostBreadcrumbItem.prototype, "variant", void 0);
7393
- __decorate$v([
7394
- Required(),
7395
- Type('boolean')
7396
- ], PostBreadcrumbItem.prototype, "selected", void 0);
7397
7496
 
7398
- 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}`;
7497
+ 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}`;
7399
7498
 
7400
7499
  var __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
7401
7500
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -7407,92 +7506,241 @@ var __decorate$u = (undefined && undefined.__decorate) || function (decorators,
7407
7506
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
7408
7507
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7409
7508
  };
7509
+ const MAX_VISIBLE_ITEMS = 6;
7510
+ const MEASUREMENT_DEBOUNCE_MS$1 = 50;
7511
+ /**
7512
+ * @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.
7513
+ */
7410
7514
  class PostBreadcrumbs {
7411
7515
  constructor(hostRef) {
7412
7516
  registerInstance(this, hostRef);
7413
- this.shouldRenderMenu = false;
7517
+ this.debounceUpdateCollapsedItems = throttle(MEASUREMENT_DEBOUNCE_MS$1, this.updateCollapsedItems.bind(this));
7518
+ this.resizeObserver = new ResizeObserver(this.debounceUpdateCollapsedItems);
7519
+ this.mutationObserver = new MutationObserver(() => {
7520
+ void this.updateAfterMutation();
7521
+ });
7522
+ this.loaded = false;
7523
+ /** 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. */
7524
+ this.hasSlottedHomeAnchor = false;
7525
+ /** Whether the slotted home anchor contains a post-icon. */
7526
+ this.hasSlottedHomeIcon = false;
7527
+ /** The number of breadcrumb items, counted from the start, moved into the overflow menu. */
7528
+ this.collapsed = 0;
7529
+ /** Whether the home item is collapsed into its own overflow menu. */
7530
+ this.homeCollapsed = false;
7531
+ /** Whether the last (selected) item wraps onto multiple lines. */
7532
+ this.lastItemWraps = false;
7533
+ /** The visible breadcrumb navigation. */
7534
+ this.nav = null;
7535
+ /** An off-screen copy of the breadcrumb navigation used for measurement. */
7536
+ this.hiddenNav = null;
7537
+ /**
7538
+ * Whether `text-home` content is displayed instead of the home icon, enabling segment specific
7539
+ * breadcrumbs (like "Private customers" or "About us").
7540
+ */
7541
+ this.homeTextOnly = false;
7414
7542
  }
7415
7543
  componentWillLoad() {
7416
7544
  this.id = this.host.id || `b${nanoid(6)}`;
7545
+ this.checkSlottedHomeAnchor();
7417
7546
  }
7418
- componentDidLoad() {
7419
- this.createMutationObserver();
7420
- this.createResizeObserver();
7421
- }
7422
- disconnectedCallback() {
7423
- this.mutationObserver?.disconnect();
7424
- this.resizeObserver?.disconnect();
7425
- }
7426
- createMutationObserver() {
7427
- this.mutationObserver = new MutationObserver(this.duplicateNavElement.bind(this));
7428
- this.mutationObserver.observe(this.host, {
7547
+ async componentDidLoad() {
7548
+ this.resizeObserver?.observe(document.body);
7549
+ this.mutationObserver?.observe(this.host, {
7429
7550
  childList: true,
7430
7551
  characterData: true,
7431
7552
  subtree: true,
7432
7553
  });
7433
- this.duplicateNavElement();
7554
+ await this.updateHiddenNav();
7555
+ await this.updateCollapsedItems();
7556
+ this.loaded = true;
7434
7557
  }
7435
- createResizeObserver() {
7436
- this.resizeObserver = new ResizeObserver(throttle(50, this.checkOverflow.bind(this)));
7437
- this.resizeObserver.observe(document.body);
7558
+ disconnectedCallback() {
7559
+ this.resizeObserver?.disconnect();
7560
+ this.mutationObserver?.disconnect();
7561
+ this.debounceUpdateCollapsedItems.cancel();
7438
7562
  }
7439
- /**
7440
- * To measure overflow, we duplicate the entire breadcrumb so an inline version is always available.
7441
- */
7442
- duplicateNavElement() {
7443
- const shadowRoot = this.host.shadowRoot;
7444
- const nav = shadowRoot?.querySelector('nav');
7445
- if (!shadowRoot || !nav)
7446
- return;
7447
- this.prepareBreadcrumbItemsForClone();
7448
- const clone = nav.cloneNode(true);
7449
- clone.classList.add('invisible');
7450
- shadowRoot.querySelector('nav.invisible')?.remove();
7451
- shadowRoot.append(clone);
7452
- requestAnimationFrame(() => {
7453
- this.duplicateSlottedElements(clone, 'slot:not([name])');
7454
- this.duplicateSlottedElements(clone, 'slot[name="selected"]');
7455
- this.checkOverflow();
7456
- });
7563
+ checkSlottedHomeAnchor() {
7564
+ const homeSlotElement = Array.from(this.host.children).find(child => child.getAttribute('slot') === 'home');
7565
+ this.hasSlottedHomeAnchor = homeSlotElement?.tagName === 'A';
7566
+ this.hasSlottedHomeIcon =
7567
+ this.hasSlottedHomeAnchor && !!homeSlotElement?.querySelector('post-icon');
7457
7568
  }
7458
- duplicateSlottedElements(clone, slotSelector) {
7459
- const originalSlot = this.host.shadowRoot?.querySelector(slotSelector);
7460
- const clonedSlot = clone.querySelector(slotSelector);
7461
- if (!originalSlot || !clonedSlot)
7462
- return;
7463
- originalSlot.assignedElements().forEach(element => {
7464
- clonedSlot.insertAdjacentElement('beforebegin', element.cloneNode(true));
7465
- });
7466
- clonedSlot.remove();
7569
+ get usesHomeText() {
7570
+ return this.hasSlottedHomeAnchor ? !this.hasSlottedHomeIcon : this.homeTextOnly;
7467
7571
  }
7468
- checkOverflow() {
7469
- const hiddenNav = this.host.shadowRoot?.querySelector('nav.invisible');
7470
- if (!hiddenNav)
7572
+ // Degrade order: collapse middle items -> collapse home -> wrap the last item.
7573
+ /** Measures the available space and updates all three degrade-stage states. */
7574
+ async updateCollapsedItems() {
7575
+ if (!this.nav)
7471
7576
  return;
7472
- const breadcrumbItems = Array.from(hiddenNav.querySelectorAll('post-breadcrumb-item'));
7473
- Promise.all(breadcrumbItems.map(item => componentOnReady(item))).then(() => {
7474
- this.shouldRenderMenu =
7475
- hiddenNav.scrollWidth > hiddenNav.clientWidth && breadcrumbItems.length > 1;
7476
- this.updateBreadcrumbItemProps();
7577
+ const { overflowing, homeOverflows, lastItemWraps } = await this.calculateCollapsedItems();
7578
+ this.collapsed = overflowing;
7579
+ this.homeCollapsed = homeOverflows;
7580
+ this.lastItemWraps = lastItemWraps;
7581
+ }
7582
+ async calculateCollapsedItems() {
7583
+ const items = this.host.querySelectorAll('post-breadcrumb-item');
7584
+ const { overflowing, homeOverflows, lastItemWraps } = await this.calculateOverflowingItems();
7585
+ // Never show more than `MAX_VISIBLE_ITEMS`, even if the nav is wide enough to fit them all.
7586
+ return {
7587
+ overflowing: Math.max(overflowing, items.length - MAX_VISIBLE_ITEMS),
7588
+ homeOverflows,
7589
+ lastItemWraps,
7590
+ };
7591
+ }
7592
+ /** Runs the three degrade stages in order against the off-screen measurement clone. */
7593
+ async calculateOverflowingItems() {
7594
+ if (!this.hiddenNav)
7595
+ return { overflowing: 0, homeOverflows: false, lastItemWraps: false };
7596
+ const nav = this.hiddenNav;
7597
+ const availableWidth = nav.clientWidth;
7598
+ const gap = Number.parseFloat(getComputedStyle(nav.firstElementChild).gap);
7599
+ const menuWidth = nav.querySelector('.menu')?.clientWidth ?? 0;
7600
+ const homeWidth = nav.querySelector('.home')?.clientWidth ?? 0;
7601
+ // Stage 1: collapse middle items, starting closest to home, until the rest fits.
7602
+ const middleItems = Array.from(nav.querySelectorAll('post-breadcrumb-item')).slice(0, -1);
7603
+ const { overflowing, remainingWidth } = this.collapseMiddleItems(middleItems, gap, menuWidth, availableWidth);
7604
+ // Stage 2: home + last item, single-line. Text home can collapse into the menu, while the
7605
+ // icon-only home remains visible and lets the last item wrap instead.
7606
+ const homeOverflows = this.usesHomeText && remainingWidth > availableWidth;
7607
+ // Stage 3: home joins the existing menu when middle items have collapsed. If no middle item
7608
+ // collapsed, the menu needs to be added when home moves into it.
7609
+ const widthWithHomeCollapsed = remainingWidth - homeWidth + (overflowing === 0 ? menuWidth : 0);
7610
+ const lastItemWraps = this.usesHomeText
7611
+ ? homeOverflows && widthWithHomeCollapsed > availableWidth
7612
+ : remainingWidth > availableWidth;
7613
+ return { overflowing, homeOverflows, lastItemWraps };
7614
+ }
7615
+ /** Stage 1: collapses middle items until the rest fits, or none are left. */
7616
+ collapseMiddleItems(items, gap, menuWidth, availableWidth) {
7617
+ // Start from the assumption that all items fit and that no menu is shown, so subtract the
7618
+ // overflow menu's width from the total.
7619
+ let width = this.hiddenNav.scrollWidth - menuWidth + gap;
7620
+ let overflowing = 0;
7621
+ while (overflowing < items.length && width > availableWidth) {
7622
+ // The overflow menu needs to be displayed as soon as the first item is moved into it, so its
7623
+ // width needs to be taken into account when measuring the remaining items.
7624
+ if (overflowing === 0)
7625
+ width += menuWidth;
7626
+ width -= items[overflowing++].clientWidth + gap;
7627
+ }
7628
+ return { overflowing, remainingWidth: width };
7629
+ }
7630
+ /** Applies the degrade states to the `<post-breadcrumb-item>` elements. */
7631
+ updateItems(items, collapsed, lastItemWraps) {
7632
+ items.forEach((item, index) => {
7633
+ const isLast = index === items.length - 1;
7634
+ item.setAttribute('variant', index < collapsed ? 'menuitem' : 'listitem');
7635
+ item.setAttribute('selected', String(isLast));
7636
+ item.setAttribute('standalone', String(isLast && index === collapsed && lastItemWraps));
7477
7637
  });
7478
7638
  }
7479
- prepareBreadcrumbItemsForClone() {
7480
- this.shouldRenderMenu = false;
7481
- this.updateBreadcrumbItemProps();
7639
+ /** Rebuilds the off-screen copy of the breadcrumb navigation. */
7640
+ async updateHiddenNav() {
7641
+ this.hiddenNav?.remove();
7642
+ this.hiddenNav = await this.renderHiddenNav();
7482
7643
  }
7483
- updateBreadcrumbItemProps() {
7484
- const breadcrumbItems = this.host.querySelectorAll('post-breadcrumb-item');
7485
- breadcrumbItems.forEach((item, index) => {
7486
- item.setAttribute('variant', this.shouldRenderMenu ? 'menuitem' : 'listitem');
7487
- item.setAttribute('selected', String(index === breadcrumbItems.length - 1));
7644
+ async updateAfterMutation() {
7645
+ await this.updateHiddenNav();
7646
+ await this.updateCollapsedItems();
7647
+ }
7648
+ /**
7649
+ * Renders an off-screen copy of the nav for measurements. `.home` is rebuilt independently (see
7650
+ * `buildMeasurementHomeElement`) rather than cloned, since the live nav may show the home item
7651
+ * in the overflow menu instead if it is already collapsed.
7652
+ */
7653
+ async renderHiddenNav() {
7654
+ const shadowRoot = this.host.shadowRoot;
7655
+ if (!shadowRoot || !this.nav)
7656
+ return null;
7657
+ const clone = this.nav.cloneNode(true);
7658
+ const slots = clone.querySelectorAll('slot');
7659
+ // Deep clone the breadcrumb navigation and flatten its slots into the clone.
7660
+ this.nav.querySelectorAll('slot').forEach((source, index) => {
7661
+ const target = slots[index];
7662
+ const assignedElements = source.assignedElements();
7663
+ if (assignedElements.length > 0) {
7664
+ // Insert the assigned elements where the slot used to be, then drop the now empty slot.
7665
+ assignedElements.forEach(element => {
7666
+ target.insertAdjacentElement('beforebegin', element.cloneNode(true));
7667
+ });
7668
+ target.remove();
7669
+ }
7670
+ else {
7671
+ // Nothing assigned: keep the slot's own fallback content (e.g. the default home link) by
7672
+ // unwrap the <slot> in place, move its children to where it was, then remove it.
7673
+ const parent = target.parentNode;
7674
+ if (parent) {
7675
+ Array.from(target.childNodes).forEach(child => parent.insertBefore(child, target));
7676
+ target.remove();
7677
+ }
7678
+ }
7488
7679
  });
7680
+ // Always measure the full, uncollapsed home item — see the method doc above. Uses
7681
+ // replaceChild rather than replaceWith, since the latter isn't implemented by Stencil's
7682
+ // mock-doc DOM used during SSR/hydration.
7683
+ const existingHome = clone.querySelector('.home');
7684
+ existingHome?.parentNode?.replaceChild(this.buildMeasurementHomeElement(), existingHome);
7685
+ clone.classList.remove('loading');
7686
+ clone.classList.add('invisible');
7687
+ // Show the overflow menu so that we can include the space it takes up in the measurement.
7688
+ clone.querySelector('.menu').classList.remove('empty');
7689
+ shadowRoot.append(clone);
7690
+ // Wait for all items to be fully hydrated before measuring.
7691
+ const items = clone.querySelectorAll('post-breadcrumb-item');
7692
+ await Promise.all(Array.from(items).map(item => componentOnReady(item)));
7693
+ // Uncollapsed layout, both single-line, for measurement.
7694
+ this.updateItems(items, 0, false);
7695
+ return clone;
7696
+ }
7697
+ /** Builds `.home` in its full, uncollapsed form for measurement. Mirrors `renderHomeContent`, but as plain DOM since this runs outside the render cycle. */
7698
+ buildMeasurementHomeElement() {
7699
+ const home = document.createElement('div');
7700
+ home.className = `breadcrumb-item home${this.usesHomeText ? '' : ' icon'}`;
7701
+ home.setAttribute('role', 'listitem');
7702
+ const slottedAnchor = this.hasSlottedHomeAnchor
7703
+ ? Array.from(this.host.children).find(child => child.getAttribute('slot') === 'home')
7704
+ : null;
7705
+ if (slottedAnchor) {
7706
+ home.append(slottedAnchor.cloneNode(true));
7707
+ return home;
7708
+ }
7709
+ const anchor = document.createElement('a');
7710
+ if (this.homeUrl)
7711
+ anchor.href = this.homeUrl;
7712
+ const label = document.createElement('span');
7713
+ if (!this.usesHomeText)
7714
+ label.className = 'visually-hidden';
7715
+ label.textContent = this.textHome;
7716
+ anchor.append(label);
7717
+ if (!this.usesHomeText) {
7718
+ const icon = document.createElement('post-icon');
7719
+ icon.setAttribute('aria-hidden', 'true');
7720
+ icon.setAttribute('name', 'home');
7721
+ anchor.append(icon);
7722
+ }
7723
+ home.append(anchor);
7724
+ return home;
7489
7725
  }
7490
7726
  renderMenu() {
7491
7727
  const menuId = `${this.id}-menu`;
7492
- 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))));
7728
+ 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" }))));
7729
+ }
7730
+ /** Reused by the plain home item and the home menu — a slot can only be assigned once. */
7731
+ renderHomeContent() {
7732
+ 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" }))));
7733
+ }
7734
+ /** Degrade stage 2: home renders in full, single-line, not yet collapsed. */
7735
+ renderHome() {
7736
+ return (hAsync("div", { class: `breadcrumb-item home${this.usesHomeText ? '' : ' icon'}`, role: "listitem" }, this.renderHomeContent()));
7493
7737
  }
7494
7738
  render() {
7495
- 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" })))));
7739
+ if (this.loaded) {
7740
+ const items = this.host.querySelectorAll('post-breadcrumb-item');
7741
+ this.updateItems(items, this.collapsed, this.lastItemWraps);
7742
+ }
7743
+ 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" })))));
7496
7744
  }
7497
7745
  get host() { return getElement(this); }
7498
7746
  static get style() { return postBreadcrumbsCss(); }
@@ -7502,24 +7750,34 @@ class PostBreadcrumbs {
7502
7750
  "$members$": {
7503
7751
  "homeUrl": [513, "home-url"],
7504
7752
  "textHome": [513, "text-home"],
7753
+ "homeTextOnly": [516, "home-text-only"],
7505
7754
  "textBreadcrumbs": [513, "text-breadcrumbs"],
7506
7755
  "textMoreItems": [513, "text-more-items"],
7507
- "shouldRenderMenu": [32],
7508
- "id": [32]
7756
+ "id": [32],
7757
+ "loaded": [32],
7758
+ "hasSlottedHomeAnchor": [32],
7759
+ "hasSlottedHomeIcon": [32],
7760
+ "collapsed": [32],
7761
+ "homeCollapsed": [32],
7762
+ "lastItemWraps": [32]
7509
7763
  },
7510
7764
  "$listeners$": undefined,
7511
7765
  "$lazyBundleId$": "-",
7512
- "$attrsToReflect$": [["homeUrl", "home-url"], ["textHome", "text-home"], ["textBreadcrumbs", "text-breadcrumbs"], ["textMoreItems", "text-more-items"]]
7766
+ "$attrsToReflect$": [["homeUrl", "home-url"], ["textHome", "text-home"], ["homeTextOnly", "home-text-only"], ["textBreadcrumbs", "text-breadcrumbs"], ["textMoreItems", "text-more-items"]]
7513
7767
  }; }
7514
7768
  }
7515
7769
  __decorate$u([
7516
- Required(),
7770
+ Required({ when: 'hasSlottedHomeAnchor', truthy: false }),
7517
7771
  Url()
7518
7772
  ], PostBreadcrumbs.prototype, "homeUrl", void 0);
7519
7773
  __decorate$u([
7520
- Required(),
7774
+ Required({ when: 'hasSlottedHomeAnchor', truthy: false }),
7521
7775
  Type('string')
7522
7776
  ], PostBreadcrumbs.prototype, "textHome", void 0);
7777
+ __decorate$u([
7778
+ Required(),
7779
+ Type('boolean')
7780
+ ], PostBreadcrumbs.prototype, "homeTextOnly", void 0);
7523
7781
  __decorate$u([
7524
7782
  Required(),
7525
7783
  Type('string')
@@ -7560,7 +7818,7 @@ class PostClosebutton {
7560
7818
  }
7561
7819
  /**
7562
7820
  * The "type" attribute used for the close button
7563
-
7821
+
7564
7822
  */
7565
7823
  this.buttonType = 'button';
7566
7824
  /**
@@ -7571,6 +7829,10 @@ class PostClosebutton {
7571
7829
  * The size of the close button.
7572
7830
  */
7573
7831
  this.size = 'default';
7832
+ this.handleClick = () => {
7833
+ const target = findClosableTarget(this.host);
7834
+ target?.close();
7835
+ };
7574
7836
  }
7575
7837
  componentDidLoad() {
7576
7838
  if (globalThis.MutationObserver) {
@@ -7595,13 +7857,8 @@ class PostClosebutton {
7595
7857
  console.error(`The \`${this.host.localName}\` component requires content for accessibility.`);
7596
7858
  }
7597
7859
  }
7598
- handleClick() {
7599
- if (this.buttonType === 'reset')
7600
- this.internals.form?.reset();
7601
- this.host.closest('dialog')?.close();
7602
- }
7603
7860
  render() {
7604
- 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' })))));
7861
+ 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' })))));
7605
7862
  }
7606
7863
  static get formAssociated() { return true; }
7607
7864
  get host() { return getElement(this); }
@@ -7697,7 +7954,7 @@ class PostCollapsible {
7697
7954
  triggers.forEach(trigger => trigger.update());
7698
7955
  }
7699
7956
  render() {
7700
- return (hAsync(Host, { key: 'd4fef8eff9b716e9dff0e570f5993221ca631ed5', "data-version": version$1, tabindex: this.collapsed ? -1 : undefined, style: this.collapsed ? collapsedKeyframe : undefined }, hAsync("slot", { key: 'ee957da050187c1cfd752e0dcb6b5f86505f5089' })));
7957
+ return (hAsync(Host, { key: '243dad696871a08bc07325d4511f5baeb937c194', "data-version": version$1, tabindex: this.collapsed ? -1 : undefined, style: this.collapsed ? collapsedKeyframe : undefined }, hAsync("slot", { key: '5f4f8a9bb698f6558b114c760e5eeb355ac35b80' })));
7701
7958
  }
7702
7959
  get host() { return getElement(this); }
7703
7960
  static get style() { return postCollapsibleCss(); }
@@ -7776,7 +8033,7 @@ class PostCollapsibleTrigger {
7776
8033
  if (!this.trigger || !collapsible)
7777
8034
  return;
7778
8035
  // a nested collapsible may have no id, but aria-controls needs one to reference
7779
- collapsible.id || (collapsible.id = `collapsible-${crypto.randomUUID()}`);
8036
+ collapsible.id ||= `collapsible-${crypto.randomUUID()}`;
7780
8037
  const collapsibleId = collapsible.id;
7781
8038
  // add the controlled collapsible's id to the aria-controls list
7782
8039
  const ariaControls = this.trigger.getAttribute('aria-controls');
@@ -7823,7 +8080,7 @@ class PostCollapsibleTrigger {
7823
8080
  this.updateAriaAttributes();
7824
8081
  }
7825
8082
  render() {
7826
- return (hAsync(Host, { key: '64dde42136274194be6c3c4f94fb87ded8a3a079', "data-version": version$1 }, hAsync("slot", { key: 'f43727ec2f7692793178ad6c162bb56f0f2d842b' })));
8083
+ return (hAsync(Host, { key: '4d28c7068acd2e1b4a5f2272bee3b51ec5d8a216', "data-version": version$1 }, hAsync("slot", { key: '0bcbb780ed6d06ef36b9129b22b4a5dcd5aa7294' })));
7827
8084
  }
7828
8085
  get host() { return getElement(this); }
7829
8086
  static get cmpMeta() { return {
@@ -11448,7 +11705,7 @@ try {
11448
11705
  // environments (e.g. Next.js pre-rendering) with `HTMLInputElement is not defined`.
11449
11706
  let cachedNativeValueDescriptor;
11450
11707
  function nativeValueDescriptor() {
11451
- cachedNativeValueDescriptor ?? (cachedNativeValueDescriptor = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value'));
11708
+ cachedNativeValueDescriptor ??= Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value');
11452
11709
  return cachedNativeValueDescriptor;
11453
11710
  }
11454
11711
  // iMask adapter that bypasses the instance-level `input.value` override (which returns ISO strings)
@@ -12028,6 +12285,15 @@ class PostDatePicker {
12028
12285
  console.error('hide: popoverRef is null or undefined');
12029
12286
  }
12030
12287
  }
12288
+ static { this.FLYOUT_OFFSET = 4; }
12289
+ // Cells per row for each view
12290
+ static {
12291
+ this.COLUMNS_BY_VIEW = {
12292
+ days: 7,
12293
+ months: 4,
12294
+ years: 4,
12295
+ };
12296
+ }
12031
12297
  /**
12032
12298
  * Get the system locale (e.g.`en`, etc.) from the closest parent with a `lang` attribute,
12033
12299
  * or fallback to a default language code if not found or in server environment.
@@ -12657,11 +12923,11 @@ class PostDatePicker {
12657
12923
  }
12658
12924
  }
12659
12925
  render() {
12660
- 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: {
12926
+ 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: {
12661
12927
  'calendar-input': !this.range,
12662
12928
  'calendar-input-range': this.range,
12663
12929
  'disabled': this.inputDisabled,
12664
- } }, 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" }))))));
12930
+ } }, 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" }))))));
12665
12931
  }
12666
12932
  get host() { return getElement(this); }
12667
12933
  static get watchers() { return {
@@ -12713,13 +12979,6 @@ class PostDatePicker {
12713
12979
  "$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"]]
12714
12980
  }; }
12715
12981
  }
12716
- PostDatePicker.FLYOUT_OFFSET = 4;
12717
- // Cells per row for each view
12718
- PostDatePicker.COLUMNS_BY_VIEW = {
12719
- days: 7,
12720
- months: 4,
12721
- years: 4,
12722
- };
12723
12982
  __decorate$q([
12724
12983
  DateValue(),
12725
12984
  IsoDate()
@@ -12844,10 +13103,10 @@ class PostFooter {
12844
13103
  const allGridSlotsEmpty = GRID_SLOTS.every(slotName => !this.slotDisplayed[slotName]);
12845
13104
  const renderMain = !allGridSlotsEmpty || renderSocialmedia || renderApp || renderBusinesssectors;
12846
13105
  const renderBase = renderCopyright || renderMeta;
12847
- 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: {
13106
+ 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: {
12848
13107
  'footer-column': true,
12849
13108
  'd-none': !renderSocialmedia && !renderApp,
12850
- } }, 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" })))))));
13109
+ } }, 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" })))))));
12851
13110
  }
12852
13111
  get host() { return getElement(this); }
12853
13112
  static get style() { return postFooterCss(); }
@@ -13179,10 +13438,10 @@ class PostHeader {
13179
13438
  }, 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" }))));
13180
13439
  }
13181
13440
  render() {
13182
- 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" }), [
13441
+ 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" }), [
13183
13442
  hAsync("slot", { key: "global-nav-secondary", name: "global-nav-secondary" }),
13184
13443
  hAsync("slot", { key: "language-menu", name: "language-menu" }),
13185
- ], 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())));
13444
+ ], 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())));
13186
13445
  }
13187
13446
  get host() { return getElement(this); }
13188
13447
  static get watchers() { return {
@@ -13314,7 +13573,7 @@ class PostIcon {
13314
13573
  }).filter(([_key, value]) => value !== null));
13315
13574
  }
13316
13575
  render() {
13317
- return (hAsync(Host, { key: 'ce81db69bf77d09a0a331bac48cdaede7ff3cb8e', "data-version": version$1 }, hAsync("span", { key: '211f999da845687289fd991421f4315a090a67ba', style: this.getStyles() })));
13576
+ return (hAsync(Host, { key: '405ccfde4206c14f044575d0b23998d93a03ffb6', "data-version": version$1 }, hAsync("span", { key: 'ad70ccf63add4b881ef6096ae460e13fba09f508', style: this.getStyles() })));
13318
13577
  }
13319
13578
  get host() { return getElement(this); }
13320
13579
  static get style() { return postIconCss(); }
@@ -13396,7 +13655,7 @@ class PostLanguageMenu {
13396
13655
  }
13397
13656
  componentDidLoad() {
13398
13657
  // Initially set variants and active language
13399
- // Handles cases where the language-menu is rendered after the language-options have been rendered
13658
+ // Handles cases where the language-menu is rendered after the language-menu-items have been rendered
13400
13659
  this.updateChildrenVariant();
13401
13660
  }
13402
13661
  /**
@@ -13634,7 +13893,7 @@ class PostLinkarea {
13634
13893
  }));
13635
13894
  }
13636
13895
  render() {
13637
- return (hAsync(Host, { key: 'ceaff2e12e49f0df50b12770d803f9708b0d7a1c', "data-version": version$1, onClick: (e) => this.dispatchClick(e) }, hAsync("slot", { key: 'f4230e0a8c74fdc143dd1e60843a74a1221396f7' })));
13896
+ return (hAsync(Host, { key: 'a187468c97584b393efb0f73966716947243fe1f', "data-version": version$1, onClick: (e) => this.dispatchClick(e) }, hAsync("slot", { key: 'a374c748871f36acf8ceda423c121645e97a6ce1' })));
13638
13897
  }
13639
13898
  get host() { return getElement(this); }
13640
13899
  static get style() { return postLinkareaCss(); }
@@ -13676,7 +13935,7 @@ class PostListbox {
13676
13935
  option.highlighted = false;
13677
13936
  });
13678
13937
  this.highlightedIndex = -1;
13679
- this.filter('');
13938
+ this.clearActive();
13680
13939
  };
13681
13940
  this.clearActive = () => {
13682
13941
  this.highlightedIndex = -1;
@@ -13780,7 +14039,7 @@ class PostListbox {
13780
14039
  this.updateSelection(event.detail);
13781
14040
  }
13782
14041
  render() {
13783
- 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' }))));
14042
+ 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' }))));
13784
14043
  }
13785
14044
  get host() { return getElement(this); }
13786
14045
  static get style() { return postListboxCss(); }
@@ -13817,9 +14076,9 @@ class PostListboxOption {
13817
14076
  this.highlighted = false;
13818
14077
  }
13819
14078
  render() {
13820
- return (hAsync(Host, { key: '201be2928d48dfa1f3d1183e7453042c0296de19', "data-version": version$1, role: "option", "aria-selected": `${this.selected}`, "data-active": this.highlighted ? 'true' : null,
14079
+ return (hAsync(Host, { key: '38481f1a4721d50530bbd96a80ebc89933c8311c', "data-version": version$1, role: "option", "aria-selected": `${this.selected}`, "data-active": this.highlighted ? 'true' : null,
13821
14080
  /* Prevent focus change from triggering onblur event in post-autocomplete */
13822
- 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" })));
14081
+ 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" })));
13823
14082
  }
13824
14083
  static get style() { return postListboxOptionCss(); }
13825
14084
  static get cmpMeta() { return {
@@ -13866,7 +14125,7 @@ class PostLogo {
13866
14125
  render() {
13867
14126
  const logoLink = this.url && (typeof this.url === 'string' ? this.url : this.url.href);
13868
14127
  const LogoTag = logoLink ? 'a' : 'span';
13869
- 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" }))))));
14128
+ 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" }))))));
13870
14129
  }
13871
14130
  get host() { return getElement(this); }
13872
14131
  static get style() { return postLogoCss(); }
@@ -14016,7 +14275,7 @@ class PostMainnavigation {
14016
14275
  }, NAVBAR_DISABLE_DURATION);
14017
14276
  }
14018
14277
  render() {
14019
- 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" }))));
14278
+ 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" }))));
14020
14279
  }
14021
14280
  get host() { return getElement(this); }
14022
14281
  static get style() { return postMainnavigationCss(); }
@@ -14051,6 +14310,8 @@ var __decorate$h = (undefined && undefined.__decorate) || function (decorators,
14051
14310
  return c > 3 && r && Object.defineProperty(target, key, r), r;
14052
14311
  };
14053
14312
  class PostMegadropdown {
14313
+ /** Tracks the currently active dropdown instance. */
14314
+ static { this.activeDropdown = null; }
14054
14315
  get megadropdownTrigger() {
14055
14316
  const hostId = this.host.getAttribute('id');
14056
14317
  return hostId ? document.querySelector(`post-megadropdown-trigger[for="${hostId}"]`) : null;
@@ -14332,7 +14593,7 @@ class PostMegadropdown {
14332
14593
  }
14333
14594
  render() {
14334
14595
  const containerStyle = this.isVisible ? {} : { display: 'none' };
14335
- 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))))));
14596
+ 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))))));
14336
14597
  }
14337
14598
  get host() { return getElement(this); }
14338
14599
  static get style() { return postMegadropdownCss(); }
@@ -14357,8 +14618,6 @@ class PostMegadropdown {
14357
14618
  "$attrsToReflect$": [["textClose", "text-close"], ["textBack", "text-back"]]
14358
14619
  }; }
14359
14620
  }
14360
- /** Tracks the currently active dropdown instance. */
14361
- PostMegadropdown.activeDropdown = null;
14362
14621
  __decorate$h([
14363
14622
  Required(),
14364
14623
  Type('string')
@@ -14437,7 +14696,7 @@ class PostMegadropdownTrigger {
14437
14696
  this.megadropdown.toggle();
14438
14697
  }
14439
14698
  render() {
14440
- 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" }))));
14699
+ 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" }))));
14441
14700
  }
14442
14701
  get host() { return getElement(this); }
14443
14702
  static get style() { return postMegadropdownTriggerCss(); }
@@ -14585,17 +14844,32 @@ class PostMenu {
14585
14844
  this.toggleMenu.emit(this.isVisible);
14586
14845
  if (this.isVisible) {
14587
14846
  this.lastFocusedElement = this.root?.activeElement;
14588
- requestAnimationFrame(() => {
14589
- const menuItems = this.getSlottedItems();
14590
- if (menuItems.length > 0) {
14591
- menuItems[0].focus();
14592
- }
14593
- });
14847
+ // Only focus the first item if the trigger was keyboard-focus-visible
14848
+ // that's the browser's own signal for a keyboard-driven interaction.
14849
+ if (this.wasFocusVisible(this.lastFocusedElement)) {
14850
+ requestAnimationFrame(() => {
14851
+ const menuItems = this.getSlottedItems();
14852
+ if (menuItems.length > 0) {
14853
+ menuItems[0].focus();
14854
+ }
14855
+ });
14856
+ }
14594
14857
  }
14595
14858
  else if (this.lastFocusedElement) {
14596
14859
  this.lastFocusedElement.focus();
14597
14860
  }
14598
14861
  }
14862
+ wasFocusVisible(element) {
14863
+ if (!element)
14864
+ return false;
14865
+ try {
14866
+ return element.matches(':focus-visible');
14867
+ }
14868
+ catch {
14869
+ // Not supported, fall back to always focusing
14870
+ return true;
14871
+ }
14872
+ }
14599
14873
  controlKeyDownHandler(e) {
14600
14874
  const menuItems = this.getSlottedItems();
14601
14875
  if (menuItems.length === 0) {
@@ -14647,7 +14921,7 @@ class PostMenu {
14647
14921
  ]));
14648
14922
  }
14649
14923
  render() {
14650
- 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' })))));
14924
+ 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' })))));
14651
14925
  }
14652
14926
  get host() { return getElement(this); }
14653
14927
  static get style() { return postMenuCss(); }
@@ -14681,7 +14955,7 @@ __decorate$f([
14681
14955
  EventFrom('post-popovercontainer')
14682
14956
  ], PostMenu.prototype, "handlePostBeforeToggle", null);
14683
14957
 
14684
- 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}`;
14958
+ 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}}`;
14685
14959
 
14686
14960
  class PostMenuItem {
14687
14961
  constructor(hostRef) {
@@ -14769,7 +15043,7 @@ class PostMenuTrigger {
14769
15043
  return null;
14770
15044
  }
14771
15045
  render() {
14772
- return (hAsync(Host, { key: '2e0560835a4202f9a84990a60305bf7dc8adbc98', "data-version": version$1 }, hAsync("slot", { key: 'd175e8bc5ddb253476f9795d7b0b2df2797c46aa' })));
15046
+ return (hAsync(Host, { key: 'f75522d28e9a45c80846a191cff3ea2eb51b5bde', "data-version": version$1 }, hAsync("slot", { key: 'bc70e3ddc8dc372611c00a4cda52cd35ede02a3f' })));
14773
15047
  }
14774
15048
  get host() { return getElement(this); }
14775
15049
  static get style() { return postMenuTriggerCss(); }
@@ -14805,7 +15079,7 @@ class PostNumberInput {
14805
15079
  this.isIncrementDisabled = false;
14806
15080
  this.isDecrementDisabled = false;
14807
15081
  this.small = false;
14808
- this.setupInput = debounce$1(50, () => {
15082
+ this.setupInput = debounce(50, () => {
14809
15083
  this.input = this.input ?? getSlottedElement(this.host, 'input[type="number"]');
14810
15084
  if (!this.input)
14811
15085
  return;
@@ -14879,10 +15153,10 @@ class PostNumberInput {
14879
15153
  }
14880
15154
  render() {
14881
15155
  const areButtonsShown = !!this.input;
14882
- return (hAsync(Host, { key: '770a0b0fe9b018afcb81f4477f45e6ea8ce27ad7', "data-version": version$1, class: {
15156
+ return (hAsync(Host, { key: '9bc4f1aff3f0347c5419cbc8c3f03660c8ce0ec3', "data-version": version$1, class: {
14883
15157
  'number-input-sm': this.small,
14884
15158
  'disabled': this.isDisabled,
14885
- } }, 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" })))));
15159
+ } }, 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" })))));
14886
15160
  }
14887
15161
  get host() { return getElement(this); }
14888
15162
  static get style() { return postNumberInputCss(); }
@@ -14936,7 +15210,7 @@ class PostPagination {
14936
15210
  this.page = 1;
14937
15211
  this.lastWindowWidth = window.innerWidth;
14938
15212
  this.loaded = false;
14939
- this.debouncedResize = debounce(this.handleResizeInternal.bind(this), RESIZE_DEBOUNCE_MS);
15213
+ this.debouncedResize = debounce$1(this.handleResizeInternal.bind(this), RESIZE_DEBOUNCE_MS);
14940
15214
  this.measurementTimeoutId = null;
14941
15215
  }
14942
15216
  handlePropsChange() {
@@ -15546,7 +15820,7 @@ __decorate$d([
15546
15820
  Type('string')
15547
15821
  ], PostPagination.prototype, "textLast", void 0);
15548
15822
 
15549
- 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}`;
15823
+ 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}`;
15550
15824
 
15551
15825
  var __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
15552
15826
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -15573,7 +15847,7 @@ class PostPopover {
15573
15847
  /**
15574
15848
  * Show a little indicator arrow
15575
15849
  */
15576
- // eslint-disable-next-line @stencil-community/ban-default-true
15850
+ // eslint-disable-next-line stencil/ban-default-true
15577
15851
  this.arrow = true;
15578
15852
  this.breakpointChange = () => {
15579
15853
  requestAnimationFrame(() => this.updateEdgeGap());
@@ -15630,10 +15904,10 @@ class PostPopover {
15630
15904
  }
15631
15905
  }
15632
15906
  render() {
15633
- 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 => {
15907
+ 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 => {
15634
15908
  if (e)
15635
15909
  this.popoverRef = e;
15636
- } }, 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)))));
15910
+ } }, 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)))));
15637
15911
  }
15638
15912
  get host() { return getElement(this); }
15639
15913
  static get style() { return postPopoverCss(); }
@@ -20731,7 +21005,7 @@ class PostPopoverTrigger {
20731
21005
  this.trigger.ariaControlsElements = [popover];
20732
21006
  }
20733
21007
  else {
20734
- popover.id || (popover.id = `popover-${crypto.randomUUID()}`);
21008
+ popover.id ||= `popover-${crypto.randomUUID()}`;
20735
21009
  this.trigger.setAttribute('aria-controls', popover.id);
20736
21010
  }
20737
21011
  }
@@ -20745,7 +21019,7 @@ class PostPopoverTrigger {
20745
21019
  focusTrigger() {
20746
21020
  // Restores focus to the trigger
20747
21021
  if (!this.popoverOpen && this.trigger) {
20748
- this.trigger.focus();
21022
+ this.trigger.focus({ preventScroll: true });
20749
21023
  }
20750
21024
  }
20751
21025
  constructor(hostRef) {
@@ -20781,7 +21055,7 @@ class PostPopoverTrigger {
20781
21055
  this.popover?.removeEventListener('postToggle', this.boundHandlePostToggle);
20782
21056
  }
20783
21057
  render() {
20784
- return (hAsync(Host, { key: '8100af4eaff1f8b790d7019414b078018ffc5ed1', "data-version": version$1 }, hAsync("slot", { key: '91e7f8f31bdc84290618a5c8b29e38cca77de177', onSlotchange: () => this.setupTrigger() })));
21058
+ return (hAsync(Host, { key: 'f9c320748c1cfdfb6accce4e20c64ea7c00d20c5', "data-version": version$1 }, hAsync("slot", { key: 'e00dcaa23ec3e2976136c26931780d083b6f1a8f', onSlotchange: () => this.setupTrigger() })));
20785
21059
  }
20786
21060
  get host() { return getElement(this); }
20787
21061
  static get watchers() { return {
@@ -20812,6 +21086,7 @@ __decorate$b([
20812
21086
  * @see https://floating-ui.com/docs/virtual-elements
20813
21087
  */
20814
21088
 
21089
+ const sides = ['top', 'right', 'bottom', 'left'];
20815
21090
  const min = Math.min;
20816
21091
  const max = Math.max;
20817
21092
  const round = Math.round;
@@ -20904,12 +21179,12 @@ function getOppositePlacement(placement) {
20904
21179
  return oppositeSideMap[side] + placement.slice(side.length);
20905
21180
  }
20906
21181
  function expandPaddingObject(padding) {
21182
+ var _padding$top, _padding$right, _padding$bottom, _padding$left;
20907
21183
  return {
20908
- top: 0,
20909
- right: 0,
20910
- bottom: 0,
20911
- left: 0,
20912
- ...padding
21184
+ top: (_padding$top = padding.top) != null ? _padding$top : 0,
21185
+ right: (_padding$right = padding.right) != null ? _padding$right : 0,
21186
+ bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0,
21187
+ left: (_padding$left = padding.left) != null ? _padding$left : 0
20913
21188
  };
20914
21189
  }
20915
21190
  function getPaddingObject(padding) {
@@ -20984,13 +21259,9 @@ function computeCoordsFromPlacement(_ref, placement, rtl) {
20984
21259
  y: reference.y
20985
21260
  };
20986
21261
  }
20987
- switch (getAlignment(placement)) {
20988
- case 'start':
20989
- coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
20990
- break;
20991
- case 'end':
20992
- coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
20993
- break;
21262
+ const alignment = getAlignment(placement);
21263
+ if (alignment) {
21264
+ coords[alignmentAxis] += commonAlign * (alignment === 'end' ? 1 : -1) * (rtl && isVertical ? -1 : 1);
20994
21265
  }
20995
21266
  return coords;
20996
21267
  }
@@ -21039,10 +21310,7 @@ async function detectOverflow(state, options) {
21039
21310
  height: rects.floating.height
21040
21311
  } : rects.reference;
21041
21312
  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
21042
- const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
21043
- x: 1,
21044
- y: 1
21045
- } : {
21313
+ const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) && (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
21046
21314
  x: 1,
21047
21315
  y: 1
21048
21316
  };
@@ -21215,17 +21483,16 @@ const arrow$1 = options => ({
21215
21483
 
21216
21484
  // Make sure the arrow doesn't overflow the floating element if the center
21217
21485
  // point is outside the floating element's bounds.
21218
- const min$1 = minPadding;
21219
21486
  const max = clientSize - arrowDimensions[length] - maxPadding;
21220
21487
  const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
21221
- const offset = clamp(min$1, center, max);
21488
+ const offset = clamp(minPadding, center, max);
21222
21489
 
21223
21490
  // If the reference is small enough that the arrow's padding causes it to
21224
21491
  // to point to nothing for an aligned placement, adjust the offset of the
21225
21492
  // floating element itself. To ensure `shift()` continues to take action,
21226
21493
  // a single reset is performed when this is true.
21227
- const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
21228
- const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;
21494
+ const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < minPadding ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
21495
+ const alignmentOffset = shouldAddOffset ? center < minPadding ? center - minPadding : center - max : 0;
21229
21496
  return {
21230
21497
  [axis]: coords[axis] + alignmentOffset,
21231
21498
  data: {
@@ -21372,6 +21639,76 @@ const flip$1 = function (options) {
21372
21639
  };
21373
21640
  };
21374
21641
 
21642
+ function getSideOffsets(overflow, rect) {
21643
+ return {
21644
+ top: overflow.top - rect.height,
21645
+ right: overflow.right - rect.width,
21646
+ bottom: overflow.bottom - rect.height,
21647
+ left: overflow.left - rect.width
21648
+ };
21649
+ }
21650
+ function isAnySideFullyClipped(overflow) {
21651
+ return sides.some(side => overflow[side] >= 0);
21652
+ }
21653
+ /**
21654
+ * Provides data to hide the floating element in applicable situations, such as
21655
+ * when it is not in the same clipping context as the reference element.
21656
+ * @see https://floating-ui.com/docs/hide
21657
+ */
21658
+ const hide$1 = function (options) {
21659
+ if (options === void 0) {
21660
+ options = {};
21661
+ }
21662
+ return {
21663
+ name: 'hide',
21664
+ options,
21665
+ async fn(state) {
21666
+ const {
21667
+ rects,
21668
+ platform
21669
+ } = state;
21670
+ const {
21671
+ strategy = 'referenceHidden',
21672
+ ...detectOverflowOptions
21673
+ } = evaluate(options, state);
21674
+ switch (strategy) {
21675
+ case 'referenceHidden':
21676
+ {
21677
+ const overflow = await platform.detectOverflow(state, {
21678
+ ...detectOverflowOptions,
21679
+ elementContext: 'reference'
21680
+ });
21681
+ const offsets = getSideOffsets(overflow, rects.reference);
21682
+ return {
21683
+ data: {
21684
+ referenceHiddenOffsets: offsets,
21685
+ referenceHidden: isAnySideFullyClipped(offsets)
21686
+ }
21687
+ };
21688
+ }
21689
+ case 'escaped':
21690
+ {
21691
+ const overflow = await platform.detectOverflow(state, {
21692
+ ...detectOverflowOptions,
21693
+ altBoundary: true
21694
+ });
21695
+ const offsets = getSideOffsets(overflow, rects.floating);
21696
+ return {
21697
+ data: {
21698
+ escapedOffsets: offsets,
21699
+ escaped: isAnySideFullyClipped(offsets)
21700
+ }
21701
+ };
21702
+ }
21703
+ default:
21704
+ {
21705
+ return {};
21706
+ }
21707
+ }
21708
+ }
21709
+ };
21710
+ };
21711
+
21375
21712
  function getBoundingRect(rects) {
21376
21713
  const minX = min(...rects.map(rect => rect.left));
21377
21714
  const minY = min(...rects.map(rect => rect.top));
@@ -21428,12 +21765,19 @@ const inline$1 = function (options) {
21428
21765
  y
21429
21766
  } = evaluate(options, state);
21430
21767
  const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);
21768
+
21769
+ // No rects (e.g. a hidden or detached reference, or a collapsed range) —
21770
+ // keep the existing reference rect rather than resetting to an invalid
21771
+ // one with non-finite values.
21772
+ if (!nativeClientRects.length) {
21773
+ return {};
21774
+ }
21431
21775
  const clientRects = getRectsByLine(nativeClientRects);
21432
21776
  const fallback = rectToClientRect(getBoundingRect(nativeClientRects));
21433
21777
  const paddingObject = getPaddingObject(padding);
21434
21778
  function getBoundingClientRect() {
21435
21779
  // There are two rects and they are disjoined.
21436
- if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {
21780
+ if (clientRects.length === 2 && (clientRects[0].left > clientRects[1].right || clientRects[1].left > clientRects[0].right) && x != null && y != null) {
21437
21781
  // Find the first rect in which the point is fully inside.
21438
21782
  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;
21439
21783
  }
@@ -21448,18 +21792,12 @@ const inline$1 = function (options) {
21448
21792
  const bottom = lastRect.bottom;
21449
21793
  const left = isTop ? firstRect.left : lastRect.left;
21450
21794
  const right = isTop ? firstRect.right : lastRect.right;
21451
- const width = right - left;
21452
- const height = bottom - top;
21453
- return {
21454
- top,
21455
- bottom,
21456
- left,
21457
- right,
21458
- width,
21459
- height,
21795
+ return rectToClientRect({
21460
21796
  x: left,
21461
- y: top
21462
- };
21797
+ y: top,
21798
+ width: right - left,
21799
+ height: bottom - top
21800
+ });
21463
21801
  }
21464
21802
  const isLeftSide = getSide(placement) === 'left';
21465
21803
  const maxRight = max(...clientRects.map(rect => rect.right));
@@ -21467,20 +21805,12 @@ const inline$1 = function (options) {
21467
21805
  const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);
21468
21806
  const top = measureRects[0].top;
21469
21807
  const bottom = measureRects[measureRects.length - 1].bottom;
21470
- const left = minLeft;
21471
- const right = maxRight;
21472
- const width = right - left;
21473
- const height = bottom - top;
21474
- return {
21475
- top,
21476
- bottom,
21477
- left,
21478
- right,
21479
- width,
21480
- height,
21481
- x: left,
21482
- y: top
21483
- };
21808
+ return rectToClientRect({
21809
+ x: minLeft,
21810
+ y: top,
21811
+ width: maxRight - minLeft,
21812
+ height: bottom - top
21813
+ });
21484
21814
  }
21485
21815
  return fallback;
21486
21816
  }
@@ -21630,23 +21960,16 @@ const shift$1 = function (options) {
21630
21960
  y
21631
21961
  };
21632
21962
  const overflow = await platform.detectOverflow(state, detectOverflowOptions);
21633
- const crossAxis = getSideAxis(getSide(placement));
21963
+ const crossAxis = getSideAxis(placement);
21634
21964
  const mainAxis = getOppositeAxis(crossAxis);
21635
21965
  let mainAxisCoord = coords[mainAxis];
21636
21966
  let crossAxisCoord = coords[crossAxis];
21967
+ const clampCoord = (axis, coord) => clamp(coord + overflow[axis === 'y' ? 'top' : 'left'], coord, coord - overflow[axis === 'y' ? 'bottom' : 'right']);
21637
21968
  if (checkMainAxis) {
21638
- const minSide = mainAxis === 'y' ? 'top' : 'left';
21639
- const maxSide = mainAxis === 'y' ? 'bottom' : 'right';
21640
- const min = mainAxisCoord + overflow[minSide];
21641
- const max = mainAxisCoord - overflow[maxSide];
21642
- mainAxisCoord = clamp(min, mainAxisCoord, max);
21969
+ mainAxisCoord = clampCoord(mainAxis, mainAxisCoord);
21643
21970
  }
21644
21971
  if (checkCrossAxis) {
21645
- const minSide = crossAxis === 'y' ? 'top' : 'left';
21646
- const maxSide = crossAxis === 'y' ? 'bottom' : 'right';
21647
- const min = crossAxisCoord + overflow[minSide];
21648
- const max = crossAxisCoord - overflow[maxSide];
21649
- crossAxisCoord = clamp(min, crossAxisCoord, max);
21972
+ crossAxisCoord = clampCoord(crossAxis, crossAxisCoord);
21650
21973
  }
21651
21974
  const limitedCoords = limiter.fn({
21652
21975
  ...state,
@@ -21677,6 +22000,7 @@ const limitShift$1 = function (options) {
21677
22000
  return {
21678
22001
  options,
21679
22002
  fn(state) {
22003
+ var _rawOffset$mainAxis, _rawOffset$crossAxis;
21680
22004
  const {
21681
22005
  x,
21682
22006
  y,
@@ -21702,9 +22026,8 @@ const limitShift$1 = function (options) {
21702
22026
  mainAxis: rawOffset,
21703
22027
  crossAxis: 0
21704
22028
  } : {
21705
- mainAxis: 0,
21706
- crossAxis: 0,
21707
- ...rawOffset
22029
+ mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0,
22030
+ crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0
21708
22031
  };
21709
22032
  if (checkMainAxis) {
21710
22033
  const len = mainAxis === 'y' ? 'height' : 'width';
@@ -21736,6 +22059,12 @@ const limitShift$1 = function (options) {
21736
22059
  };
21737
22060
  };
21738
22061
 
22062
+ // Method syntax keeps callback parameters bivariant, but expressing the
22063
+ // explicit `| undefined` required by `exactOptionalPropertyTypes` needs
22064
+ // property syntax, which is contravariant under `strictFunctionTypes`.
22065
+ // Extracting the function from a method position restores that bivariance so
22066
+ // consumers can still assign callbacks with narrower parameter types.
22067
+
21739
22068
  /**
21740
22069
  * Provides data that allows you to change the size of the floating element —
21741
22070
  * for instance, prevent it from overflowing the clipping boundary or match the
@@ -21750,7 +22079,6 @@ const size$1 = function (options) {
21750
22079
  name: 'size',
21751
22080
  options,
21752
22081
  async fn(state) {
21753
- var _state$middlewareData, _state$middlewareData2;
21754
22082
  const {
21755
22083
  placement,
21756
22084
  rects,
@@ -21782,24 +22110,21 @@ const size$1 = function (options) {
21782
22110
  const maximumClippingWidth = width - overflow.left - overflow.right;
21783
22111
  const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);
21784
22112
  const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);
21785
- const noShift = !state.middlewareData.shift;
22113
+ const shiftData = state.middlewareData.shift;
22114
+ const noShift = !shiftData;
21786
22115
  let availableHeight = overflowAvailableHeight;
21787
22116
  let availableWidth = overflowAvailableWidth;
21788
- if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {
22117
+ if (shiftData != null && shiftData.enabled.x) {
21789
22118
  availableWidth = maximumClippingWidth;
21790
22119
  }
21791
- if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {
22120
+ if (shiftData != null && shiftData.enabled.y) {
21792
22121
  availableHeight = maximumClippingHeight;
21793
22122
  }
21794
22123
  if (noShift && !alignment) {
21795
- const xMin = max(overflow.left, 0);
21796
- const xMax = max(overflow.right, 0);
21797
- const yMin = max(overflow.top, 0);
21798
- const yMax = max(overflow.bottom, 0);
21799
22124
  if (isYAxis) {
21800
- availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));
22125
+ availableWidth = width - 2 * max(overflow.left, overflow.right);
21801
22126
  } else {
21802
- availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));
22127
+ availableHeight = height - 2 * max(overflow.top, overflow.bottom);
21803
22128
  }
21804
22129
  }
21805
22130
  await apply({
@@ -21955,7 +22280,7 @@ function getParentNode(node) {
21955
22280
  function getNearestOverflowAncestor(node) {
21956
22281
  const parentNode = getParentNode(node);
21957
22282
  if (isLastTraversableNode(parentNode)) {
21958
- return node.ownerDocument ? node.ownerDocument.body : node.body;
22283
+ return (node.ownerDocument || node).body;
21959
22284
  }
21960
22285
  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
21961
22286
  return parentNode;
@@ -22052,10 +22377,7 @@ function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {
22052
22377
  if (isFixed === void 0) {
22053
22378
  isFixed = false;
22054
22379
  }
22055
- if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {
22056
- return false;
22057
- }
22058
- return isFixed;
22380
+ return !!floatingOffsetParent && isFixed && floatingOffsetParent === getWindow(element);
22059
22381
  }
22060
22382
 
22061
22383
  function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {
@@ -22082,12 +22404,12 @@ function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetPar
22082
22404
  let y = (clientRect.top + visualOffsets.y) / scale.y;
22083
22405
  let width = clientRect.width / scale.x;
22084
22406
  let height = clientRect.height / scale.y;
22085
- if (domElement) {
22407
+ if (domElement && offsetParent) {
22086
22408
  const win = getWindow(domElement);
22087
- const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
22409
+ const offsetWin = isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
22088
22410
  let currentWin = win;
22089
22411
  let currentIFrame = getFrameElement(currentWin);
22090
- while (currentIFrame && offsetParent && offsetWin !== currentWin) {
22412
+ while (currentIFrame && offsetWin !== currentWin) {
22091
22413
  const iframeScale = getScale(currentIFrame);
22092
22414
  const iframeRect = currentIFrame.getBoundingClientRect();
22093
22415
  const css = getComputedStyle$1(currentIFrame);
@@ -22151,7 +22473,7 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
22151
22473
  let scale = createCoords(1);
22152
22474
  const offsets = createCoords(0);
22153
22475
  const isOffsetParentAnElement = isHTMLElement(offsetParent);
22154
- if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
22476
+ if (isOffsetParentAnElement || !isFixed) {
22155
22477
  if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
22156
22478
  scroll = getNodeScroll(offsetParent);
22157
22479
  }
@@ -22172,18 +22494,17 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
22172
22494
  }
22173
22495
 
22174
22496
  function getClientRects(element) {
22175
- return Array.from(element.getClientRects());
22497
+ return element.getClientRects ? Array.from(element.getClientRects()) : [];
22176
22498
  }
22177
22499
 
22178
22500
  // Gets the entire size of the scrollable document area, even extending outside
22179
22501
  // of the `<html>` and `<body>` rect bounds if horizontally scrollable.
22180
- function getDocumentRect(element) {
22181
- const html = getDocumentElement(element);
22182
- const scroll = getNodeScroll(element);
22183
- const body = element.ownerDocument.body;
22502
+ function getDocumentRect(html) {
22503
+ const scroll = getNodeScroll(html);
22504
+ const body = html.ownerDocument.body;
22184
22505
  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);
22185
22506
  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);
22186
- let x = -scroll.scrollLeft + getWindowScrollBarX(element);
22507
+ let x = -scroll.scrollLeft + getWindowScrollBarX(html);
22187
22508
  const y = -scroll.scrollTop;
22188
22509
  if (getComputedStyle$1(body).direction === 'rtl') {
22189
22510
  x += max(html.clientWidth, body.clientWidth) - width;
@@ -22200,7 +22521,11 @@ function getDocumentRect(element) {
22200
22521
  // calculation is affected by unusual styles.
22201
22522
  // Most scrollbars leave 15-18px of space.
22202
22523
  const SCROLLBAR_MAX = 25;
22203
- function getViewportRect(element, strategy) {
22524
+ function getViewportRect(element, strategy, rootBoundary) {
22525
+ if (rootBoundary === void 0) {
22526
+ rootBoundary = 'viewport';
22527
+ }
22528
+ const isLayoutViewport = rootBoundary === 'layoutViewport';
22204
22529
  const win = getWindow(element);
22205
22530
  const html = getDocumentElement(element);
22206
22531
  const visualViewport = win.visualViewport;
@@ -22209,31 +22534,42 @@ function getViewportRect(element, strategy) {
22209
22534
  let x = 0;
22210
22535
  let y = 0;
22211
22536
  if (visualViewport) {
22212
- width = visualViewport.width;
22213
- height = visualViewport.height;
22214
- const visualViewportBased = isWebKit();
22215
- if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {
22216
- x = visualViewport.offsetLeft;
22217
- y = visualViewport.offsetTop;
22537
+ // Client coordinates are relative to the layout viewport, except in
22538
+ // WebKit with an `absolute` strategy, where they are relative to the
22539
+ // visual viewport.
22540
+ const layoutRelativeClientCoords = !isWebKit() || strategy === 'fixed';
22541
+ if (isLayoutViewport) {
22542
+ if (!layoutRelativeClientCoords) {
22543
+ x = -visualViewport.offsetLeft;
22544
+ y = -visualViewport.offsetTop;
22545
+ }
22546
+ } else {
22547
+ width = visualViewport.width;
22548
+ height = visualViewport.height;
22549
+ if (layoutRelativeClientCoords) {
22550
+ x = visualViewport.offsetLeft;
22551
+ y = visualViewport.offsetTop;
22552
+ }
22218
22553
  }
22219
22554
  }
22220
22555
  const windowScrollbarX = getWindowScrollBarX(html);
22221
- // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the
22222
- // visual width of the <html> but this is not considered in the size
22223
- // of `html.clientWidth`.
22556
+ // `scrollbar-gutter: stable` on the <html> reserves gutter space that shrinks
22557
+ // the visual width but isn't reflected in `html.clientWidth`, so subtract it.
22558
+ // Only the inline-end (right) gutter can hold the scrollbar; `both-edges` also
22559
+ // reserves an empty inline-start gutter that clips nothing, so exclude just
22560
+ // the one scrollbar-side gutter — halve the measured (two-gutter) total. A
22561
+ // left-side scrollbar (`windowScrollbarX > 0`) is already handled by
22562
+ // `getHTMLOffset`/`visualViewport.width`; skip it here.
22224
22563
  if (windowScrollbarX <= 0) {
22225
22564
  const doc = html.ownerDocument;
22226
22565
  const body = doc.body;
22227
22566
  const bodyStyles = getComputedStyle(body);
22228
22567
  const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;
22229
- const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
22230
- if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {
22231
- width -= clippingStableScrollbarWidth;
22568
+ const reservedWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
22569
+ const gutter = getComputedStyle(html).scrollbarGutter === 'stable both-edges' ? reservedWidth / 2 : reservedWidth;
22570
+ if (gutter <= SCROLLBAR_MAX) {
22571
+ width -= gutter;
22232
22572
  }
22233
- } else if (windowScrollbarX <= SCROLLBAR_MAX) {
22234
- // If the <body> scrollbar is on the left, the width needs to be extended
22235
- // by the scrollbar amount so there isn't extra space on the right.
22236
- width += windowScrollbarX;
22237
22573
  }
22238
22574
  return {
22239
22575
  width,
@@ -22248,7 +22584,7 @@ function getInnerBoundingClientRect(element, strategy) {
22248
22584
  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');
22249
22585
  const top = clientRect.top + element.clientTop;
22250
22586
  const left = clientRect.left + element.clientLeft;
22251
- const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);
22587
+ const scale = getScale(element);
22252
22588
  const width = element.clientWidth * scale.x;
22253
22589
  const height = element.clientHeight * scale.y;
22254
22590
  const x = left * scale.x;
@@ -22262,8 +22598,8 @@ function getInnerBoundingClientRect(element, strategy) {
22262
22598
  }
22263
22599
  function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {
22264
22600
  let rect;
22265
- if (clippingAncestor === 'viewport') {
22266
- rect = getViewportRect(element, strategy);
22601
+ if (clippingAncestor === 'viewport' || clippingAncestor === 'layoutViewport') {
22602
+ rect = getViewportRect(element, strategy, clippingAncestor);
22267
22603
  } else if (clippingAncestor === 'document') {
22268
22604
  rect = getDocumentRect(getDocumentElement(element));
22269
22605
  } else if (isElement(clippingAncestor)) {
@@ -22279,13 +22615,6 @@ function getClientRectFromClippingAncestor(element, clippingAncestor, strategy)
22279
22615
  }
22280
22616
  return rectToClientRect(rect);
22281
22617
  }
22282
- function hasFixedPositionAncestor(element, stopNode) {
22283
- const parentNode = getParentNode(element);
22284
- if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {
22285
- return false;
22286
- }
22287
- return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);
22288
- }
22289
22618
 
22290
22619
  // A "clipping ancestor" is an `overflow` element with the characteristic of
22291
22620
  // clipping (or hiding) child elements. This returns all clipping ancestors
@@ -22296,7 +22625,7 @@ function getClippingElementAncestors(element, cache) {
22296
22625
  return cachedResult;
22297
22626
  }
22298
22627
  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');
22299
- let currentContainingBlockComputedStyle = null;
22628
+ let lastKeptComputedStyle = null;
22300
22629
  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';
22301
22630
  let currentNode = elementIsFixed ? getParentNode(element) : element;
22302
22631
 
@@ -22304,16 +22633,20 @@ function getClippingElementAncestors(element, cache) {
22304
22633
  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {
22305
22634
  const computedStyle = getComputedStyle$1(currentNode);
22306
22635
  const currentNodeIsContaining = isContainingBlock(currentNode);
22307
- if (!currentNodeIsContaining && computedStyle.position === 'fixed') {
22308
- currentContainingBlockComputedStyle = null;
22309
- }
22310
- const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
22636
+ // Position of the containing block chain below the current node. A fixed
22637
+ // element whose containing block hasn't been found yet is a fixed chain.
22638
+ const lastPosition = lastKeptComputedStyle ? lastKeptComputedStyle.position : elementIsFixed ? 'fixed' : '';
22639
+
22640
+ // A non-containing ancestor does not clip the element when the chain
22641
+ // below it escapes it: a fixed chain escapes all ancestors up to the
22642
+ // next containing block, an absolute chain escapes static ancestors.
22643
+ const shouldDropCurrentNode = !currentNodeIsContaining && (lastPosition === 'fixed' || lastPosition === 'absolute' && computedStyle.position === 'static');
22311
22644
  if (shouldDropCurrentNode) {
22312
22645
  // Drop non-containing blocks.
22313
22646
  result = result.filter(ancestor => ancestor !== currentNode);
22314
22647
  } else {
22315
- // Record last containing block for next iteration.
22316
- currentContainingBlockComputedStyle = computedStyle;
22648
+ // The kept node carries the chain position for the next iteration.
22649
+ lastKeptComputedStyle = computedStyle;
22317
22650
  }
22318
22651
  currentNode = getParentNode(currentNode);
22319
22652
  }
@@ -22323,7 +22656,7 @@ function getClippingElementAncestors(element, cache) {
22323
22656
 
22324
22657
  // Gets the maximum area that the element is visible in due to any number of
22325
22658
  // clipping ancestors.
22326
- function getClippingRect(_ref) {
22659
+ function getClippingRect$1(_ref) {
22327
22660
  let {
22328
22661
  element,
22329
22662
  boundary,
@@ -22373,13 +22706,7 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
22373
22706
  scrollTop: 0
22374
22707
  };
22375
22708
  const offsets = createCoords(0);
22376
-
22377
- // If the <body> scrollbar appears on the left (e.g. RTL systems). Use
22378
- // Firefox with layout.scrollbar.side = 3 in about:config to test this.
22379
- function setLeftRTLScrollbarOffset() {
22380
- offsets.x = getWindowScrollBarX(documentElement);
22381
- }
22382
- if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
22709
+ if (isOffsetParentAnElement || !isFixed) {
22383
22710
  if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
22384
22711
  scroll = getNodeScroll(offsetParent);
22385
22712
  }
@@ -22387,12 +22714,13 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
22387
22714
  const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);
22388
22715
  offsets.x = offsetRect.x + offsetParent.clientLeft;
22389
22716
  offsets.y = offsetRect.y + offsetParent.clientTop;
22390
- } else if (documentElement) {
22391
- setLeftRTLScrollbarOffset();
22392
22717
  }
22393
22718
  }
22394
- if (isFixed && !isOffsetParentAnElement && documentElement) {
22395
- setLeftRTLScrollbarOffset();
22719
+
22720
+ // If the <body> scrollbar appears on the left (e.g. RTL systems). Use
22721
+ // Firefox with layout.scrollbar.side = 3 in about:config to test this.
22722
+ if (!isOffsetParentAnElement && documentElement) {
22723
+ offsets.x = getWindowScrollBarX(documentElement);
22396
22724
  }
22397
22725
  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
22398
22726
  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
@@ -22477,7 +22805,7 @@ function isRTL(element) {
22477
22805
  const platform = {
22478
22806
  convertOffsetParentRelativeRectToViewportRelativeRect,
22479
22807
  getDocumentElement,
22480
- getClippingRect,
22808
+ getClippingRect: getClippingRect$1,
22481
22809
  getOffsetParent,
22482
22810
  getElementRects,
22483
22811
  getClientRects,
@@ -22492,7 +22820,7 @@ function rectsAreEqual(a, b) {
22492
22820
  }
22493
22821
 
22494
22822
  // https://samthor.au/2021/observing-dom/
22495
- function observeMove(element, onMove) {
22823
+ function observeMove(element, onMove, ancestorResize) {
22496
22824
  let io = null;
22497
22825
  let timeoutId;
22498
22826
  const root = getDocumentElement(element);
@@ -22535,13 +22863,22 @@ function observeMove(element, onMove) {
22535
22863
  let isFirstUpdate = true;
22536
22864
  function handleObserve(entries) {
22537
22865
  const ratio = entries[0].intersectionRatio;
22866
+
22867
+ // The entry is a snapshot, so the reference may have moved since the
22868
+ // intersection was computed (under performance constraints, or between
22869
+ // consecutive frames of a multi-frame layout shift). The reported ratio
22870
+ // and the observed area are stale in that case and cannot be trusted to
22871
+ // detect subsequent movement, so refresh regardless of the ratio.
22872
+ if (!rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {
22873
+ return refresh();
22874
+ }
22538
22875
  if (ratio !== threshold) {
22539
22876
  if (!isFirstUpdate) {
22540
22877
  return refresh();
22541
22878
  }
22542
22879
  if (!ratio) {
22543
- // If the reference is clipped, the ratio is 0. Throttle the refresh
22544
- // to prevent an infinite loop of updates.
22880
+ // If the reference is clipped in place, the ratio is 0. Throttle
22881
+ // the refresh to prevent an infinite loop of updates.
22545
22882
  timeoutId = setTimeout(() => {
22546
22883
  refresh(false, 1e-7);
22547
22884
  }, 1000);
@@ -22549,16 +22886,6 @@ function observeMove(element, onMove) {
22549
22886
  refresh(false, ratio);
22550
22887
  }
22551
22888
  }
22552
- if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {
22553
- // It's possible that even though the ratio is reported as 1, the
22554
- // element is not actually fully within the IntersectionObserver's root
22555
- // area anymore. This can happen under performance constraints. This may
22556
- // be a bug in the browser's IntersectionObserver implementation. To
22557
- // work around this, we compare the element's bounding rect now with
22558
- // what it was at the time we created the IntersectionObserver. If they
22559
- // are not equal then the element moved, so we refresh.
22560
- refresh();
22561
- }
22562
22889
  isFirstUpdate = false;
22563
22890
  }
22564
22891
 
@@ -22575,8 +22902,18 @@ function observeMove(element, onMove) {
22575
22902
  }
22576
22903
  io.observe(element);
22577
22904
  }
22905
+ const win = getWindow(element);
22906
+ // The window is a resize ancestor, so when `ancestorResize` is enabled its
22907
+ // listener already runs the update on resize. Here we only need to rebuild
22908
+ // the `IntersectionObserver` for the new root size, skipping a redundant
22909
+ // update. When `ancestorResize` is disabled, this becomes the sole update.
22910
+ const handleResize = () => refresh(ancestorResize);
22911
+ win.addEventListener('resize', handleResize);
22578
22912
  refresh(true);
22579
- return cleanup;
22913
+ return () => {
22914
+ win.removeEventListener('resize', handleResize);
22915
+ cleanup();
22916
+ };
22580
22917
  }
22581
22918
 
22582
22919
  /**
@@ -22601,12 +22938,10 @@ function autoUpdate(reference, floating, update, options) {
22601
22938
  const referenceEl = unwrapElement(reference);
22602
22939
  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];
22603
22940
  ancestors.forEach(ancestor => {
22604
- ancestorScroll && ancestor.addEventListener('scroll', update, {
22605
- passive: true
22606
- });
22941
+ ancestorScroll && ancestor.addEventListener('scroll', update);
22607
22942
  ancestorResize && ancestor.addEventListener('resize', update);
22608
22943
  });
22609
- const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;
22944
+ const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update, ancestorResize) : null;
22610
22945
  let reobserveFrame = -1;
22611
22946
  let resizeObserver = null;
22612
22947
  if (elementResize) {
@@ -22692,6 +23027,13 @@ const flip = flip$1;
22692
23027
  */
22693
23028
  const size = size$1;
22694
23029
 
23030
+ /**
23031
+ * Provides data to hide the floating element in applicable situations, such as
23032
+ * when it is not in the same clipping context as the reference element.
23033
+ * @see https://floating-ui.com/docs/hide
23034
+ */
23035
+ const hide = hide$1;
23036
+
22695
23037
  /**
22696
23038
  * Provides data to position an inner element of the floating element so that it
22697
23039
  * appears centered to the reference element.
@@ -22720,11 +23062,9 @@ const computePosition = (reference, floating, options) => {
22720
23062
  // multiple lifecycle resets re-use the same result. It only lives for a
22721
23063
  // single call. If other functions become expensive, we can add them as well.
22722
23064
  const cache = new Map();
22723
- const mergedOptions = {
22724
- platform,
22725
- ...options
22726
- };
23065
+ const mergedOptions = options != null ? options : {};
22727
23066
  const platformWithCache = {
23067
+ ...platform,
22728
23068
  ...mergedOptions.platform,
22729
23069
  _c: cache
22730
23070
  };
@@ -22749,6 +23089,77 @@ function popIn(el) {
22749
23089
  });
22750
23090
  }
22751
23091
 
23092
+ /**
23093
+ * This utility is covered by the end-to-end tests under 'clipping' in `popovercontainer.cy.ts`.
23094
+ */
23095
+ const CLIPPING_RECT_CACHE = Symbol('Clipping Rect Cache');
23096
+ /**
23097
+ * A custom floating UI platform that restricts clipping rectangles to the safe area.
23098
+ */
23099
+ const safeAreaPlatform = { ...platform, getClippingRect };
23100
+ /**
23101
+ * Computes the clipping rectangle of an element while accounting for the safe area.
23102
+ */
23103
+ async function getClippingRect(...args) {
23104
+ const element = args[0].element;
23105
+ // Check whether the clipping rectangle of the given element has already been computed during
23106
+ // this pass.
23107
+ const hit = this[CLIPPING_RECT_CACHE].get(element);
23108
+ if (hit)
23109
+ return hit;
23110
+ // Compute the clipping rectangle with the Floating UI DOM platform, then restrict it to the safe
23111
+ // area.
23112
+ const clippingRect = await platform.getClippingRect.apply(this, args);
23113
+ applySafeArea(clippingRect, element);
23114
+ this[CLIPPING_RECT_CACHE].set(element, clippingRect);
23115
+ return clippingRect;
23116
+ }
23117
+ /**
23118
+ * Restricts the `clippingRect` computed for `element` to the safe area, modifying it in place.
23119
+ *
23120
+ * The safe area only applies to elements that the header can actually cover, which excludes
23121
+ * elements without a header on their page, elements on a top layer and elements within the header.
23122
+ */
23123
+ function applySafeArea(clippingRect, element) {
23124
+ const headerElement = element.ownerDocument.querySelector('post-header');
23125
+ if (headerElement === null)
23126
+ return;
23127
+ let parent = element;
23128
+ while (!isLastTraversableNode(parent)) {
23129
+ parent = getParentNode(parent);
23130
+ if (!isHTMLElement(parent))
23131
+ continue;
23132
+ // Do not apply the safe area of the header to
23133
+ // - elements that are on a top layer, such as a dialog.
23134
+ // - elements that are located within the header itself.
23135
+ if (isTopLayer(parent) || parent === headerElement)
23136
+ return;
23137
+ }
23138
+ const headerRect = headerElement.getBoundingClientRect();
23139
+ const top = Math.max(clippingRect.y, headerRect.bottom);
23140
+ clippingRect.height -= top - clippingRect.y;
23141
+ clippingRect.y = top;
23142
+ }
23143
+ /**
23144
+ * Computes the coordinates that will position the `floating` element next to a given `reference`
23145
+ * element while accounting for the safe area.
23146
+ *
23147
+ * The safe area is the part of the viewport that the header does not cover. Restricting the
23148
+ * clipping rectangles to it makes floating elements behave as if they were clipped by the header.
23149
+ */
23150
+ const computePositionWithSafeArea = (reference, floating, options) => {
23151
+ // Adapted from https://github.com/floating-ui/floating-ui/blob/27629b74ba36ab8ceb2a968051927b9b69511a3b/packages/dom/src/index.ts#L15
23152
+ options ??= {};
23153
+ return computePosition(reference, floating, {
23154
+ ...options,
23155
+ platform: {
23156
+ ...safeAreaPlatform,
23157
+ ...options.platform,
23158
+ [CLIPPING_RECT_CACHE]: new Map(),
23159
+ },
23160
+ });
23161
+ };
23162
+
22752
23163
  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))}`;
22753
23164
 
22754
23165
  var __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
@@ -22768,6 +23179,30 @@ const ANIMATIONS = {
22768
23179
  * @slot - Default slot for placing content inside the popovercontainer.
22769
23180
  */
22770
23181
  class PostPopovercontainer {
23182
+ static {
23183
+ this.STATIC_SIDES = {
23184
+ top: 'bottom',
23185
+ right: 'left',
23186
+ bottom: 'top',
23187
+ left: 'right',
23188
+ };
23189
+ }
23190
+ static {
23191
+ this.PROPERTIES_TO_CLEAR = [
23192
+ '--post-safe-space-popover-x',
23193
+ '--post-safe-space-popover-y',
23194
+ '--post-safe-space-popover-x-start',
23195
+ '--post-safe-space-popover-x-end',
23196
+ '--post-safe-space-popover-y-start',
23197
+ '--post-safe-space-popover-y-end',
23198
+ '--post-safe-space-trigger-x',
23199
+ '--post-safe-space-trigger-y',
23200
+ '--post-safe-space-trigger-x-start',
23201
+ '--post-safe-space-trigger-x-end',
23202
+ '--post-safe-space-trigger-y-start',
23203
+ '--post-safe-space-trigger-y-end',
23204
+ ];
23205
+ }
22771
23206
  constructor(hostRef) {
22772
23207
  registerInstance(this, hostRef);
22773
23208
  this.postBeforeShow = createEvent(this, "postBeforeShow");
@@ -22826,7 +23261,7 @@ class PostPopovercontainer {
22826
23261
  if (this.toggleTimeoutId || !target)
22827
23262
  return;
22828
23263
  this.eventTarget = target;
22829
- this.calculatePosition();
23264
+ this.updatePosition();
22830
23265
  this.host.showPopover();
22831
23266
  }
22832
23267
  /**
@@ -22852,7 +23287,7 @@ class PostPopovercontainer {
22852
23287
  this.eventTarget = target;
22853
23288
  // Prevent instant double toggle
22854
23289
  if (!this.toggleTimeoutId) {
22855
- this.calculatePosition();
23290
+ this.updatePosition();
22856
23291
  this.host.togglePopover(force);
22857
23292
  this.toggleTimeoutId = null;
22858
23293
  }
@@ -22964,17 +23399,14 @@ class PostPopovercontainer {
22964
23399
  startAutoupdates() {
22965
23400
  if (!this.eventTarget || !this.host)
22966
23401
  return;
22967
- this.clearAutoUpdate = autoUpdate(this.eventTarget, this.host, this.calculatePosition.bind(this));
22968
- }
22969
- /**
22970
- * Retrieves the dynamic height of the header
22971
- */
22972
- getHeaderHeight() {
22973
- const header = document.querySelector('post-header');
22974
- return header ? Number.parseFloat(getComputedStyle(header).height) : 0;
23402
+ this.clearAutoUpdate = autoUpdate(this.eventTarget, this.host, this.updatePosition.bind(this));
22975
23403
  }
22976
- async calculatePosition() {
22977
- const { x, y, middlewareData, placement } = await this.computeMainPosition();
23404
+ async updatePosition() {
23405
+ const { x, y, middlewareData, placement } = await this.calculatePosition();
23406
+ // Hide the popover if the target is outside the viewport
23407
+ if (middlewareData.hide?.referenceHidden) {
23408
+ this.host.hidePopover();
23409
+ }
22978
23410
  const currentPlacement = placement.split('-')[0];
22979
23411
  this.dynamicPlacement = currentPlacement;
22980
23412
  // Position popover
@@ -22999,13 +23431,15 @@ class PostPopovercontainer {
22999
23431
  await this.updateSafeSpaceBoundaries(currentPlacement);
23000
23432
  }
23001
23433
  }
23002
- async computeMainPosition() {
23434
+ async calculatePosition() {
23003
23435
  const gap = this.edgeGap;
23004
23436
  const isAligned = (this.placement || 'top').includes('-');
23005
- const flipMiddleware = flip({
23006
- padding: this.getHeaderHeight(),
23007
- crossAxis: false,
23008
- });
23437
+ const flipMiddleware = [
23438
+ // Flip the popover if the target moves outside the viewport
23439
+ flip({ elementContext: 'reference', crossAxis: false }),
23440
+ // Flip the popover if the popover itself moves outside the viewport
23441
+ flip({ elementContext: 'floating', crossAxis: false }),
23442
+ ];
23009
23443
  const shiftMiddleware = shift({
23010
23444
  padding: gap,
23011
23445
  limiter: limitShift({
@@ -23017,7 +23451,7 @@ class PostPopovercontainer {
23017
23451
  inline(),
23018
23452
  // Per floating-ui docs: for aligned placements (e.g. bottom-end),
23019
23453
  // flip should come before shift. For non-aligned, shift before flip.
23020
- ...(isAligned ? [flipMiddleware, shiftMiddleware] : [shiftMiddleware, flipMiddleware]),
23454
+ ...(isAligned ? [...flipMiddleware, shiftMiddleware] : [shiftMiddleware, ...flipMiddleware]),
23021
23455
  size({
23022
23456
  apply({ availableWidth, elements }) {
23023
23457
  Object.assign(elements.floating.style, {
@@ -23029,7 +23463,12 @@ class PostPopovercontainer {
23029
23463
  if (this.arrow) {
23030
23464
  middleware.push(arrow({ element: this.arrowRef, padding: gap }));
23031
23465
  }
23032
- return computePosition(this.eventTarget, this.host, {
23466
+ // Automatically hide the popover if the target moves outside the scrollport.
23467
+ if (this.autoHide) {
23468
+ // Per floating-ui docs: hide should generally be placed at the end.
23469
+ middleware.push(hide({ strategy: 'referenceHidden' }));
23470
+ }
23471
+ return computePositionWithSafeArea(this.eventTarget, this.host, {
23033
23472
  placement: this.placement || 'top',
23034
23473
  strategy: 'fixed',
23035
23474
  middleware,
@@ -23096,9 +23535,9 @@ class PostPopovercontainer {
23096
23535
  }
23097
23536
  }
23098
23537
  render() {
23099
- 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 => {
23538
+ 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 => {
23100
23539
  this.arrowRef = el;
23101
- } })), hAsync("span", { key: 'f7c2720a3bedb808855628482c5b1f377e2719a8', part: "post-popovercontainer-border-mask" }), hAsync("slot", { key: 'e0fee3fded9fea41bc0260f45be0375e236463f9' }))));
23540
+ } })), hAsync("span", { key: 'deadbcc5892ed545a64b4a0e5e0936e0dd1feb70', part: "post-popovercontainer-border-mask" }), hAsync("slot", { key: '48c4db7ab222f3ef18157ce19d8ba15d75441f98' }))));
23102
23541
  }
23103
23542
  get host() { return getElement(this); }
23104
23543
  static get style() { return postPopovercontainerCss(); }
@@ -23111,6 +23550,7 @@ class PostPopovercontainer {
23111
23550
  "offset": [2],
23112
23551
  "arrow": [4],
23113
23552
  "safeSpace": [513, "safe-space"],
23553
+ "autoHide": [4, "auto-hide"],
23114
23554
  "dynamicPlacement": [32],
23115
23555
  "show": [64],
23116
23556
  "hide": [64],
@@ -23121,26 +23561,6 @@ class PostPopovercontainer {
23121
23561
  "$attrsToReflect$": [["safeSpace", "safe-space"]]
23122
23562
  }; }
23123
23563
  }
23124
- PostPopovercontainer.STATIC_SIDES = {
23125
- top: 'bottom',
23126
- right: 'left',
23127
- bottom: 'top',
23128
- left: 'right',
23129
- };
23130
- PostPopovercontainer.PROPERTIES_TO_CLEAR = [
23131
- '--post-safe-space-popover-x',
23132
- '--post-safe-space-popover-y',
23133
- '--post-safe-space-popover-x-start',
23134
- '--post-safe-space-popover-x-end',
23135
- '--post-safe-space-popover-y-start',
23136
- '--post-safe-space-popover-y-end',
23137
- '--post-safe-space-trigger-x',
23138
- '--post-safe-space-trigger-y',
23139
- '--post-safe-space-trigger-x-start',
23140
- '--post-safe-space-trigger-x-end',
23141
- '--post-safe-space-trigger-y-start',
23142
- '--post-safe-space-trigger-y-end',
23143
- ];
23144
23564
  __decorate$a([
23145
23565
  OneOf(PLACEMENT_TYPES)
23146
23566
  ], PostPopovercontainer.prototype, "placement", void 0);
@@ -23197,7 +23617,7 @@ class PostProgressbar {
23197
23617
  const max = this.getEffectiveMax();
23198
23618
  const value = this.getEffectiveValue(min, max);
23199
23619
  const percentage = ((value - min) / (max - min)) * 100;
23200
- 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}%` } })));
23620
+ 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}%` } })));
23201
23621
  }
23202
23622
  get host() { return getElement(this); }
23203
23623
  static get style() { return postProgressbarCss(); }
@@ -23314,7 +23734,7 @@ class PostRating {
23314
23734
  }
23315
23735
  }
23316
23736
  render() {
23317
- 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: {
23737
+ 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: {
23318
23738
  'star': true,
23319
23739
  'before-hover': i < this.hoveredIndex,
23320
23740
  'active': i < Math.round(this.currentRating),
@@ -23354,7 +23774,7 @@ __decorate$8([
23354
23774
 
23355
23775
  const SIDE_NAVIGATION_SIZES = ['large', 'small'];
23356
23776
 
23357
- 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)}`;
23777
+ 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)}`;
23358
23778
 
23359
23779
  var __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
23360
23780
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -23484,7 +23904,7 @@ class PostSideNavigation {
23484
23904
  } }, hAsync("slot", null), hAsync("post-closebutton", { onClick: () => this.hide() }, this.textClose)));
23485
23905
  }
23486
23906
  render() {
23487
- return (hAsync(Host, { key: '48fa216d175f5fc96a722dd9aa1d4043298f9512', "data-version": version$1 }, this.device === 'desktop' ? this.renderNav() : this.renderDialog()));
23907
+ return (hAsync(Host, { key: 'f7d9b4e515e5085d78e452298bdfbfb2325e7422', "data-version": version$1 }, this.device === 'desktop' ? this.renderNav() : this.renderDialog()));
23488
23908
  }
23489
23909
  get host() { return getElement(this); }
23490
23910
  static get style() { return postSideNavigationCss(); }
@@ -23599,7 +24019,7 @@ class PostSideNavigationTrigger {
23599
24019
  await this.sideNavigation?.toggle();
23600
24020
  }
23601
24021
  render() {
23602
- return (hAsync(Host, { key: '1fda1561026f1eb8a4c976a937d2573713068ef9', "data-version": version$1 }, hAsync("slot", { key: '4e594cf134bfa431e410099cc0b8bf3071833e9a' })));
24022
+ return (hAsync(Host, { key: '1c908083562ec5ca01cd9410c72ac78ae11ce72f', "data-version": version$1 }, hAsync("slot", { key: '38f63424e8c66b4bf926418b57555dc676d24d45' })));
23603
24023
  }
23604
24024
  get host() { return getElement(this); }
23605
24025
  static get style() { return postSideNavigationTriggerCss(); }
@@ -23729,7 +24149,7 @@ class PostStepper {
23729
24149
  }
23730
24150
  }
23731
24151
  render() {
23732
- 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 }))));
24152
+ 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 }))));
23733
24153
  }
23734
24154
  get host() { return getElement(this); }
23735
24155
  static get watchers() { return {
@@ -23788,7 +24208,7 @@ class PostStepperItem {
23788
24208
  registerInstance(this, hostRef);
23789
24209
  }
23790
24210
  render() {
23791
- 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' })))));
24211
+ 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' })))));
23792
24212
  }
23793
24213
  static get style() { return postStepperItemCss(); }
23794
24214
  static get cmpMeta() { return {
@@ -23844,9 +24264,9 @@ class PostTabItem {
23844
24264
  this.isPagesVariant = hasAnchor;
23845
24265
  }
23846
24266
  render() {
23847
- 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
24267
+ 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
23848
24268
  ? { '--active': `var(--post-tab-item-${this.name}, 0)` }
23849
- : undefined }, hAsync("slot", { key: '9514279224549dcc0bf5553e98c535b64f37a191' })));
24269
+ : undefined }, hAsync("slot", { key: 'fba27566a1226e560161f839df050666763bdce5' })));
23850
24270
  }
23851
24271
  get host() { return getElement(this); }
23852
24272
  static get cmpMeta() { return {
@@ -23892,7 +24312,7 @@ class PostTabPanel {
23892
24312
  this.panelId = `panel-${this.host.id || nanoid(6)}`;
23893
24313
  }
23894
24314
  render() {
23895
- 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' })));
24315
+ 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' })));
23896
24316
  }
23897
24317
  get host() { return getElement(this); }
23898
24318
  static get style() { return postTabPanelCss(); }
@@ -23913,7 +24333,7 @@ __decorate$3([
23913
24333
  Type('string')
23914
24334
  ], PostTabPanel.prototype, "for", void 0);
23915
24335
 
23916
- 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)}`;
24336
+ 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)}`;
23917
24337
 
23918
24338
  var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
23919
24339
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -24341,10 +24761,10 @@ class PostTabs {
24341
24761
  }
24342
24762
  : undefined;
24343
24763
  const style = !this.isPagesVariant ? tabStyle : undefined;
24344
- 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: () => {
24764
+ 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: () => {
24345
24765
  this.moveMisplacedTabs();
24346
24766
  this.enableTabs();
24347
- } })), 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() })))));
24767
+ } })), 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() })))));
24348
24768
  }
24349
24769
  get host() { return getElement(this); }
24350
24770
  static get watchers() { return {
@@ -24411,7 +24831,7 @@ class PostTogglebutton {
24411
24831
  });
24412
24832
  }
24413
24833
  render() {
24414
- return (hAsync(Host, { key: '7b935b808aa1ebbe97ac37bed25bfc215513097f', "data-version": version$1, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, hAsync("slot", { key: 'd06f112049850f8d7bdffd5e0b70440bae41010b' })));
24834
+ return (hAsync(Host, { key: '81fa9d922480059096e4146c10cf2ef72357b482', "data-version": version$1, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, hAsync("slot", { key: '4e8d793e3867ba4c9c8e17d509652309a79f032a' })));
24415
24835
  }
24416
24836
  get host() { return getElement(this); }
24417
24837
  static get style() { return postTogglebuttonCss(); }
@@ -24495,7 +24915,7 @@ class PostTooltip {
24495
24915
  }
24496
24916
  render() {
24497
24917
  const popoverClass = `${this.arrow ? 'has-arrow' : ''}`;
24498
- 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' }))));
24918
+ 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' }))));
24499
24919
  }
24500
24920
  get host() { return getElement(this); }
24501
24921
  static get style() { return postTooltipCss(); }
@@ -24690,7 +25110,7 @@ class PostTooltipTrigger {
24690
25110
  this.tooltip?.hide();
24691
25111
  }
24692
25112
  render() {
24693
- return (hAsync(Host, { key: '6c772242ad42feedd5ff3fe7e7ab637fae8d1292', "data-version": version$1 }, hAsync("slot", { key: 'fac33c09dcff608e386bc75af9eef4cc19eecf10', onSlotchange: () => this.handleSlotChange() })));
25113
+ return (hAsync(Host, { key: '55adc12f457aa8a5dd4357ed27876b0e526f7ae3', "data-version": version$1 }, hAsync("slot", { key: '84da1734ae1c1ac9376caa693108e3ed54bf176f', onSlotchange: () => this.handleSlotChange() })));
24694
25114
  }
24695
25115
  get host() { return getElement(this); }
24696
25116
  static get style() { return postTooltipTriggerCss(); }