@swisspost/design-system-components 10.4.0 → 10.5.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 (329) hide show
  1. package/dist/cjs/breakpoints-Kruvy8Dm.js +47 -0
  2. package/dist/cjs/{create-validator-decorator-BtgLWaMJ.js → create-validator-decorator-u-Byhihe.js} +1 -1
  3. package/dist/cjs/{event-from-CwMw19f8.js → event-from-CTcQxB9-.js} +19 -13
  4. package/dist/cjs/{index-CW10QvjR.js → index-CXnlZiX8.js} +1 -1
  5. package/dist/cjs/{breakpoints-B0Olgvgc.js → index-CggFmZ8n.js} +0 -42
  6. package/dist/cjs/loader.cjs.js +2 -2
  7. package/dist/cjs/{one-of-vJeW7S4_.js → one-of-LGG0uEIi.js} +1 -1
  8. package/dist/cjs/{package-CL8OSAS4.js → package-DdU-rENe.js} +1 -1
  9. package/dist/cjs/{pattern-Zmn3wpyp.js → pattern-B-csvfNt.js} +1 -1
  10. package/dist/cjs/post-accordion_2.cjs.entry.js +7 -7
  11. package/dist/cjs/post-autocomplete.cjs.entry.js +70 -55
  12. package/dist/cjs/post-avatar.cjs.entry.js +7 -7
  13. package/dist/cjs/post-back-to-top.cjs.entry.js +25 -13
  14. package/dist/cjs/post-banner.cjs.entry.js +6 -13
  15. package/dist/cjs/post-breadcrumb-item.cjs.entry.js +18 -10
  16. package/dist/cjs/post-breadcrumbs.cjs.entry.js +118 -67
  17. package/dist/cjs/post-closebutton_14.cjs.entry.js +404 -210
  18. package/dist/cjs/post-collapsible_2.cjs.entry.js +8 -8
  19. package/dist/cjs/post-components.cjs.js +2 -2
  20. package/dist/cjs/post-date-picker.cjs.entry.js +8 -8
  21. package/dist/cjs/post-footer.cjs.entry.js +8 -8
  22. package/dist/cjs/post-linkarea.cjs.entry.js +3 -3
  23. package/dist/cjs/post-listbox-option.cjs.entry.js +4 -4
  24. package/dist/cjs/post-listbox.cjs.entry.js +6 -6
  25. package/dist/cjs/post-number-input.cjs.entry.js +7 -6
  26. package/dist/cjs/post-pagination.cjs.entry.js +6 -6
  27. package/dist/cjs/post-popover-trigger.cjs.entry.js +7 -7
  28. package/dist/cjs/post-popover.cjs.entry.js +10 -10
  29. package/dist/cjs/post-progressbar.cjs.entry.js +5 -5
  30. package/dist/cjs/post-rating.cjs.entry.js +7 -7
  31. package/dist/cjs/post-side-navigation-trigger.cjs.entry.js +8 -8
  32. package/dist/cjs/post-side-navigation.cjs.entry.js +9 -9
  33. package/dist/cjs/post-stepper-item.cjs.entry.js +3 -3
  34. package/dist/cjs/post-stepper.cjs.entry.js +8 -8
  35. package/dist/cjs/post-tab-item.cjs.entry.js +7 -7
  36. package/dist/cjs/post-tab-panel.cjs.entry.js +7 -7
  37. package/dist/cjs/post-tabs.cjs.entry.js +8 -8
  38. package/dist/cjs/post-tooltip-trigger.cjs.entry.js +7 -7
  39. package/dist/cjs/post-tooltip.cjs.entry.js +6 -6
  40. package/dist/cjs/{required-DRnPokVn.js → required-bJzxBV-V.js} +1 -1
  41. package/dist/cjs/{type-CNcU_-B2.js → type-CGPnqGY1.js} +1 -1
  42. package/dist/cjs/{url-DgJ3lXQz.js → url-Dxdd6tWj.js} +1 -1
  43. package/dist/collection/components/post-autocomplete/post-autocomplete.js +65 -50
  44. package/dist/collection/components/post-back-to-top/post-back-to-top.js +19 -7
  45. package/dist/collection/components/post-banner/post-banner.js +2 -17
  46. package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.css +1 -1
  47. package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +29 -1
  48. package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.css +1 -1
  49. package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.js +113 -62
  50. package/dist/collection/components/post-closebutton/post-closebutton.js +7 -8
  51. package/dist/collection/components/post-collapsible/post-collapsible.js +1 -1
  52. package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +1 -1
  53. package/dist/collection/components/post-date-picker/post-date-picker.js +2 -2
  54. package/dist/collection/components/post-footer/post-footer.js +2 -2
  55. package/dist/collection/components/post-header/post-header.js +2 -2
  56. package/dist/collection/components/post-icon/post-icon.js +1 -1
  57. package/dist/collection/components/post-language-menu/post-language-menu.js +1 -1
  58. package/dist/collection/components/post-linkarea/post-linkarea.js +1 -1
  59. package/dist/collection/components/post-listbox/post-listbox.js +2 -2
  60. package/dist/collection/components/post-listbox-option/post-listbox-option.js +2 -2
  61. package/dist/collection/components/post-logo/post-logo.js +1 -1
  62. package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +1 -1
  63. package/dist/collection/components/post-megadropdown/post-megadropdown.js +1 -1
  64. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +1 -1
  65. package/dist/collection/components/post-menu/post-menu.js +23 -8
  66. package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +1 -1
  67. package/dist/collection/components/post-number-input/post-number-input.js +2 -2
  68. package/dist/collection/components/post-popover/post-popover.css +1 -1
  69. package/dist/collection/components/post-popover/post-popover.js +3 -3
  70. package/dist/collection/components/post-popover-trigger/post-popover-trigger.js +2 -2
  71. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +47 -23
  72. package/dist/collection/components/post-progressbar/post-progressbar.js +1 -1
  73. package/dist/collection/components/post-rating/post-rating.js +1 -1
  74. package/dist/collection/components/post-side-navigation/post-side-navigation.css +1 -1
  75. package/dist/collection/components/post-side-navigation/post-side-navigation.js +1 -1
  76. package/dist/collection/components/post-side-navigation-trigger/post-side-navigation-trigger.js +1 -1
  77. package/dist/collection/components/post-stepper/post-stepper.js +1 -1
  78. package/dist/collection/components/post-stepper-item/post-stepper-item.js +1 -1
  79. package/dist/collection/components/post-tab-item/post-tab-item.js +2 -2
  80. package/dist/collection/components/post-tab-panel/post-tab-panel.js +1 -1
  81. package/dist/collection/components/post-tabs/post-tabs.js +2 -2
  82. package/dist/collection/components/post-togglebutton/post-togglebutton.js +1 -1
  83. package/dist/collection/components/post-tooltip/post-tooltip.js +2 -2
  84. package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.js +1 -1
  85. package/dist/collection/utils/breakpoints.js +11 -9
  86. package/dist/collection/utils/closable-target.js +38 -0
  87. package/dist/collection/utils/event-from.js +18 -13
  88. package/dist/collection/utils/floating-ui.js +72 -0
  89. package/dist/collection/utils/index.js +1 -0
  90. package/dist/components/breakpoints.js +1 -1
  91. package/dist/components/event-from.js +1 -1
  92. package/dist/components/index2.js +1 -0
  93. package/dist/components/package.js +1 -1
  94. package/dist/components/post-autocomplete.js +1 -1
  95. package/dist/components/post-back-to-top.js +1 -1
  96. package/dist/components/post-banner.js +1 -1
  97. package/dist/components/post-breadcrumb-item.js +1 -1
  98. package/dist/components/post-breadcrumbs.js +1 -1
  99. package/dist/components/post-closebutton2.js +1 -1
  100. package/dist/components/post-collapsible-trigger2.js +1 -1
  101. package/dist/components/post-collapsible2.js +1 -1
  102. package/dist/components/post-date-picker.js +1 -1
  103. package/dist/components/post-footer.js +1 -1
  104. package/dist/components/post-header.js +1 -1
  105. package/dist/components/post-icon2.js +1 -1
  106. package/dist/components/post-linkarea.js +1 -1
  107. package/dist/components/post-listbox-option.js +1 -1
  108. package/dist/components/post-listbox.js +1 -1
  109. package/dist/components/post-logo.js +1 -1
  110. package/dist/components/post-mainnavigation.js +1 -1
  111. package/dist/components/post-megadropdown-trigger.js +1 -1
  112. package/dist/components/post-megadropdown.js +1 -1
  113. package/dist/components/post-menu-trigger2.js +1 -1
  114. package/dist/components/post-menu2.js +1 -1
  115. package/dist/components/post-number-input.js +1 -1
  116. package/dist/components/post-popover-trigger.js +1 -1
  117. package/dist/components/post-popover.js +1 -1
  118. package/dist/components/post-popovercontainer2.js +1 -1
  119. package/dist/components/post-progressbar.js +1 -1
  120. package/dist/components/post-rating.js +1 -1
  121. package/dist/components/post-side-navigation-trigger.js +1 -1
  122. package/dist/components/post-side-navigation.js +1 -1
  123. package/dist/components/post-stepper-item.js +1 -1
  124. package/dist/components/post-stepper.js +1 -1
  125. package/dist/components/post-tab-item.js +1 -1
  126. package/dist/components/post-tab-panel.js +1 -1
  127. package/dist/components/post-tabs.js +1 -1
  128. package/dist/components/post-togglebutton2.js +1 -1
  129. package/dist/components/post-tooltip-trigger.js +1 -1
  130. package/dist/components/post-tooltip.js +1 -1
  131. package/dist/components/react/index.js +1 -1
  132. package/dist/components/react/p-0nNMdSBr.js +1 -0
  133. package/dist/components/react/p-5LuCes5o.js +1 -0
  134. package/dist/components/react/{p-4wtxqxXu.js → p-B2jsM_Ov.js} +1 -1
  135. package/dist/components/react/p-BEcxHjuM.js +1 -0
  136. package/dist/{post-components/p-C-lLRsYC.js → components/react/p-BdLRXQqY.js} +1 -1
  137. package/dist/components/react/{p-Df31eVdi.js → p-C8vlYfD-.js} +1 -1
  138. package/dist/components/react/{p-9RCG8BWM.js → p-CLeWLMJn.js} +1 -1
  139. package/dist/components/react/p-CVVXnYLU.js +1 -0
  140. package/dist/components/react/p-CnN4Jdtv.js +1 -0
  141. package/dist/components/react/{p-Bwko4UKh.js → p-CoCua20S.js} +1 -1
  142. package/dist/components/react/p-CuVhOs8F.js +1 -0
  143. package/dist/components/react/{p-B1kYo1K9.js → p-D3rq_-Qk.js} +1 -1
  144. package/dist/components/react/{p-CSmrQ__L.js → p-DD-Sl3Ji.js} +1 -1
  145. package/dist/components/react/{p-D-imniYA.js → p-DasK590W.js} +1 -1
  146. package/dist/components/react/p-DeO0rZ1T.js +1 -0
  147. package/dist/components/react/p-DiFAKI9o.js +1 -0
  148. package/dist/components/react/p-Ny5VnydI.js +1 -0
  149. package/dist/components/react/{p-BSb74xQy.js → p-PYoaz_Xl.js} +1 -1
  150. package/dist/components/react/{p-CwmQwirr.js → p-SBBBSmJM.js} +1 -1
  151. package/dist/components/react/p-bR8vy6-s.js +1 -0
  152. package/dist/components/react/post-accordion-item.js +1 -1
  153. package/dist/components/react/post-accordion.js +1 -1
  154. package/dist/components/react/post-autocomplete.js +1 -1
  155. package/dist/components/react/post-avatar.js +1 -1
  156. package/dist/components/react/post-back-to-top.js +1 -1
  157. package/dist/components/react/post-banner.js +1 -1
  158. package/dist/components/react/post-breadcrumb-item.js +1 -1
  159. package/dist/components/react/post-breadcrumbs.js +1 -1
  160. package/dist/components/react/post-closebutton.js +1 -1
  161. package/dist/components/react/post-collapsible-trigger.js +1 -1
  162. package/dist/components/react/post-collapsible.js +1 -1
  163. package/dist/components/react/post-date-picker.js +1 -1
  164. package/dist/components/react/post-footer.js +1 -1
  165. package/dist/components/react/post-header.js +1 -1
  166. package/dist/components/react/post-icon.js +1 -1
  167. package/dist/components/react/post-language-menu-item.js +1 -1
  168. package/dist/components/react/post-language-menu.js +1 -1
  169. package/dist/components/react/post-linkarea.js +1 -1
  170. package/dist/components/react/post-listbox-option.js +1 -1
  171. package/dist/components/react/post-listbox.js +1 -1
  172. package/dist/components/react/post-logo.js +1 -1
  173. package/dist/components/react/post-mainnavigation.js +1 -1
  174. package/dist/components/react/post-megadropdown-trigger.js +1 -1
  175. package/dist/components/react/post-megadropdown.js +1 -1
  176. package/dist/components/react/post-menu-item.js +1 -1
  177. package/dist/components/react/post-menu-trigger.js +1 -1
  178. package/dist/components/react/post-menu.js +1 -1
  179. package/dist/components/react/post-number-input.js +1 -1
  180. package/dist/components/react/post-pagination.js +1 -1
  181. package/dist/components/react/post-popover-trigger.js +1 -1
  182. package/dist/components/react/post-popover.js +1 -1
  183. package/dist/components/react/post-popovercontainer.js +1 -1
  184. package/dist/components/react/post-progressbar.js +1 -1
  185. package/dist/components/react/post-rating.js +1 -1
  186. package/dist/components/react/post-side-navigation-trigger.js +1 -1
  187. package/dist/components/react/post-side-navigation.js +1 -1
  188. package/dist/components/react/post-stepper-item.js +1 -1
  189. package/dist/components/react/post-stepper.js +1 -1
  190. package/dist/components/react/post-tab-item.js +1 -1
  191. package/dist/components/react/post-tab-panel.js +1 -1
  192. package/dist/components/react/post-tabs.js +1 -1
  193. package/dist/components/react/post-togglebutton.js +1 -1
  194. package/dist/components/react/post-tooltip-trigger.js +1 -1
  195. package/dist/components/react/post-tooltip.js +1 -1
  196. package/dist/docs.json +62 -16
  197. package/dist/esm/breakpoints-I1j7a0bW.js +45 -0
  198. package/dist/esm/{create-validator-decorator-CNUaQboh.js → create-validator-decorator-CbYxqPSB.js} +1 -1
  199. package/dist/esm/{event-from-rEfV4v4a.js → event-from-BEcxHjuM.js} +19 -14
  200. package/dist/esm/{index-sn7oKSwC.js → index-D3NdvMgy.js} +1 -1
  201. package/dist/esm/{breakpoints-BQ3HlJPr.js → index-bR8vy6-s.js} +1 -42
  202. package/dist/esm/loader.js +3 -3
  203. package/dist/esm/{one-of-C6Ironyj.js → one-of-Mx4vYjem.js} +1 -1
  204. package/dist/esm/{package-tTf1w3A9.js → package-Ny5VnydI.js} +1 -1
  205. package/dist/esm/{pattern-57oD--q3.js → pattern-CqQVrJPN.js} +1 -1
  206. package/dist/esm/post-accordion_2.entry.js +7 -7
  207. package/dist/esm/post-autocomplete.entry.js +70 -55
  208. package/dist/esm/post-avatar.entry.js +7 -7
  209. package/dist/esm/post-back-to-top.entry.js +25 -13
  210. package/dist/esm/post-banner.entry.js +6 -13
  211. package/dist/esm/post-breadcrumb-item.entry.js +18 -10
  212. package/dist/esm/post-breadcrumbs.entry.js +118 -67
  213. package/dist/esm/post-closebutton_14.entry.js +403 -209
  214. package/dist/esm/post-collapsible_2.entry.js +8 -8
  215. package/dist/esm/post-components.js +3 -3
  216. package/dist/esm/post-date-picker.entry.js +8 -8
  217. package/dist/esm/post-footer.entry.js +8 -8
  218. package/dist/esm/post-linkarea.entry.js +3 -3
  219. package/dist/esm/post-listbox-option.entry.js +4 -4
  220. package/dist/esm/post-listbox.entry.js +6 -6
  221. package/dist/esm/post-number-input.entry.js +6 -5
  222. package/dist/esm/post-pagination.entry.js +6 -6
  223. package/dist/esm/post-popover-trigger.entry.js +7 -7
  224. package/dist/esm/post-popover.entry.js +10 -10
  225. package/dist/esm/post-progressbar.entry.js +5 -5
  226. package/dist/esm/post-rating.entry.js +7 -7
  227. package/dist/esm/post-side-navigation-trigger.entry.js +8 -8
  228. package/dist/esm/post-side-navigation.entry.js +9 -9
  229. package/dist/esm/post-stepper-item.entry.js +3 -3
  230. package/dist/esm/post-stepper.entry.js +8 -8
  231. package/dist/esm/post-tab-item.entry.js +7 -7
  232. package/dist/esm/post-tab-panel.entry.js +7 -7
  233. package/dist/esm/post-tabs.entry.js +8 -8
  234. package/dist/esm/post-tooltip-trigger.entry.js +7 -7
  235. package/dist/esm/post-tooltip.entry.js +6 -6
  236. package/dist/esm/{required-D2rl2XZJ.js → required-CxvSCYJj.js} +1 -1
  237. package/dist/esm/{type-CGynDrfh.js → type-CYB7_Yi8.js} +1 -1
  238. package/dist/esm/{url-1wyUfUv-.js → url-DOwgyBfp.js} +1 -1
  239. package/dist/post-components/p-030bfaa1.entry.js +1 -0
  240. package/dist/post-components/p-1d67c427.entry.js +1 -0
  241. package/dist/post-components/{p-212c71e4.entry.js → p-2379e498.entry.js} +1 -1
  242. package/dist/post-components/p-29e6c2a4.entry.js +1 -0
  243. package/dist/post-components/{p-a01ea634.entry.js → p-2cb843f4.entry.js} +1 -1
  244. package/dist/post-components/{p-96bf6b01.entry.js → p-2ee255c1.entry.js} +1 -1
  245. package/dist/post-components/{p-b535fc10.entry.js → p-3a75186d.entry.js} +1 -1
  246. package/dist/post-components/{p-3149d866.entry.js → p-44718c1a.entry.js} +1 -1
  247. package/dist/post-components/{p-167191e5.entry.js → p-4e2bb082.entry.js} +1 -1
  248. package/dist/post-components/p-5a44b217.entry.js +1 -0
  249. package/dist/post-components/p-65e12f2c.entry.js +1 -0
  250. package/dist/post-components/p-665d877f.entry.js +1 -0
  251. package/dist/post-components/p-781efeb8.entry.js +1 -0
  252. package/dist/post-components/p-795eb5ad.entry.js +1 -0
  253. package/dist/post-components/p-894b20dd.entry.js +1 -0
  254. package/dist/post-components/p-9ad2216e.entry.js +1 -0
  255. package/dist/post-components/p-BEcxHjuM.js +1 -0
  256. package/dist/post-components/p-BmpkvdQk.js +1 -0
  257. package/dist/post-components/p-C-FunIfQ.js +1 -0
  258. package/dist/post-components/p-CCciE4QO.js +1 -0
  259. package/dist/post-components/p-D3NdvMgy.js +2 -0
  260. package/dist/post-components/p-I1j7a0bW.js +1 -0
  261. package/dist/post-components/p-Ny5VnydI.js +1 -0
  262. package/dist/post-components/p-X1vWfzMK.js +1 -0
  263. package/dist/post-components/{p-beed9922.entry.js → p-a9223467.entry.js} +1 -1
  264. package/dist/post-components/{p-e8d9723e.entry.js → p-b6e231a8.entry.js} +1 -1
  265. package/dist/post-components/{p-70fbe469.entry.js → p-b856263a.entry.js} +1 -1
  266. package/dist/post-components/p-bR8vy6-s.js +1 -0
  267. package/dist/post-components/{p-58422de1.entry.js → p-c7a39444.entry.js} +1 -1
  268. package/dist/post-components/p-cGcyMrvx.js +1 -0
  269. package/dist/post-components/{p-b99e6621.entry.js → p-cde00944.entry.js} +1 -1
  270. package/dist/post-components/p-cf7493ab.entry.js +1 -0
  271. package/dist/post-components/{p-e08d26f4.entry.js → p-e463e7ac.entry.js} +1 -1
  272. package/dist/post-components/{p-1cf5bc67.entry.js → p-e7f97f6d.entry.js} +1 -1
  273. package/dist/post-components/p-e8268a8d.entry.js +1 -0
  274. package/dist/post-components/{p-cf6eacab.entry.js → p-e8c19f72.entry.js} +1 -1
  275. package/dist/post-components/p-ecfc494e.entry.js +1 -0
  276. package/dist/post-components/p-eda4a376.entry.js +1 -0
  277. package/dist/post-components/{p-da217dbc.entry.js → p-ffec1880.entry.js} +1 -1
  278. package/dist/post-components/{p-DoNhJ2D7.js → p-sgCfAEQU.js} +1 -1
  279. package/dist/post-components/post-components.css +1 -1
  280. package/dist/post-components/post-components.esm.js +1 -1
  281. package/dist/types/components/post-autocomplete/post-autocomplete.d.ts +18 -6
  282. package/dist/types/components/post-back-to-top/post-back-to-top.d.ts +2 -1
  283. package/dist/types/components/post-banner/post-banner.d.ts +0 -1
  284. package/dist/types/components/post-breadcrumb-item/post-breadcrumb-item.d.ts +4 -0
  285. package/dist/types/components/post-breadcrumbs/post-breadcrumbs.d.ts +34 -11
  286. package/dist/types/components/post-closebutton/post-closebutton.d.ts +1 -1
  287. package/dist/types/components/post-menu/post-menu.d.ts +1 -0
  288. package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +8 -5
  289. package/dist/types/components.d.ts +20 -0
  290. package/dist/types/utils/breakpoints.d.ts +1 -0
  291. package/dist/types/utils/closable-target.d.ts +5 -0
  292. package/dist/types/utils/event-from.d.ts +8 -0
  293. package/dist/types/utils/floating-ui.d.ts +12 -0
  294. package/dist/types/utils/index.d.ts +1 -0
  295. package/hydrate/index.js +908 -625
  296. package/hydrate/index.mjs +908 -625
  297. package/package.json +7 -6
  298. package/dist/components/react/p-BXqGI600.js +0 -1
  299. package/dist/components/react/p-B_WnO-QF.js +0 -1
  300. package/dist/components/react/p-BaB8wJvk.js +0 -1
  301. package/dist/components/react/p-Bji_4dfL.js +0 -1
  302. package/dist/components/react/p-CX2E_IXB.js +0 -1
  303. package/dist/components/react/p-D17tCsFk.js +0 -1
  304. package/dist/components/react/p-DD1c_IgL.js +0 -1
  305. package/dist/components/react/p-I0dqoE80.js +0 -1
  306. package/dist/components/react/p-rEfV4v4a.js +0 -1
  307. package/dist/components/react/p-tTf1w3A9.js +0 -1
  308. package/dist/post-components/p-0323b0f3.entry.js +0 -1
  309. package/dist/post-components/p-06ddd73b.entry.js +0 -1
  310. package/dist/post-components/p-090e52db.entry.js +0 -1
  311. package/dist/post-components/p-292a9784.entry.js +0 -1
  312. package/dist/post-components/p-2de6fe62.entry.js +0 -1
  313. package/dist/post-components/p-39ff8127.entry.js +0 -1
  314. package/dist/post-components/p-3a968b19.entry.js +0 -1
  315. package/dist/post-components/p-472_tiaS.js +0 -1
  316. package/dist/post-components/p-5873a90c.entry.js +0 -1
  317. package/dist/post-components/p-986fa1c1.entry.js +0 -1
  318. package/dist/post-components/p-BQ3HlJPr.js +0 -1
  319. package/dist/post-components/p-B_FOhVrp.js +0 -1
  320. package/dist/post-components/p-CeNqFJV7.js +0 -1
  321. package/dist/post-components/p-DYDdaLz-.js +0 -1
  322. package/dist/post-components/p-b1d2384a.entry.js +0 -1
  323. package/dist/post-components/p-bf83a3fb.entry.js +0 -1
  324. package/dist/post-components/p-c46bc56f.entry.js +0 -1
  325. package/dist/post-components/p-ce8132a9.entry.js +0 -1
  326. package/dist/post-components/p-d72e830b.entry.js +0 -1
  327. package/dist/post-components/p-rEfV4v4a.js +0 -1
  328. package/dist/post-components/p-sn7oKSwC.js +0 -2
  329. package/dist/post-components/p-tTf1w3A9.js +0 -1
package/hydrate/index.js CHANGED
@@ -5889,182 +5889,24 @@ function Url() {
5889
5889
  });
5890
5890
  }
5891
5891
 
5892
- /* eslint-disable no-undefined,no-param-reassign,no-shadow */
5893
-
5894
- /**
5895
- * Throttle execution of a function. Especially useful for rate limiting
5896
- * execution of handlers on events like resize and scroll.
5897
- *
5898
- * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)
5899
- * are most useful.
5900
- * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,
5901
- * as-is, to `callback` when the throttled-function is executed.
5902
- * @param {object} [options] - An object to configure options.
5903
- * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds
5904
- * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed
5905
- * one final time after the last throttled-function call. (After the throttled-function has not been called for
5906
- * `delay` milliseconds, the internal counter is reset).
5907
- * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback
5908
- * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that
5909
- * callback will never executed if both noLeading = true and noTrailing = true.
5910
- * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is
5911
- * false (at end), schedule `callback` to execute after `delay` ms.
5912
- *
5913
- * @returns {Function} A new, throttled, function.
5914
- */
5915
- function throttle (delay, callback, options) {
5916
- var _ref = options || {},
5917
- _ref$noTrailing = _ref.noTrailing,
5918
- noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,
5919
- _ref$noLeading = _ref.noLeading,
5920
- noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,
5921
- _ref$debounceMode = _ref.debounceMode,
5922
- debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;
5923
- /*
5924
- * After wrapper has stopped being called, this timeout ensures that
5925
- * `callback` is executed at the proper times in `throttle` and `end`
5926
- * debounce modes.
5927
- */
5928
- var timeoutID;
5929
- var cancelled = false;
5930
-
5931
- // Keep track of the last time `callback` was executed.
5932
- var lastExec = 0;
5933
-
5934
- // Function to clear existing timeout
5935
- function clearExistingTimeout() {
5936
- if (timeoutID) {
5937
- clearTimeout(timeoutID);
5938
- }
5939
- }
5940
-
5941
- // Function to cancel next exec
5942
- function cancel(options) {
5943
- var _ref2 = options || {},
5944
- _ref2$upcomingOnly = _ref2.upcomingOnly,
5945
- upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;
5946
- clearExistingTimeout();
5947
- cancelled = !upcomingOnly;
5948
- }
5949
-
5950
- /*
5951
- * The `wrapper` function encapsulates all of the throttling / debouncing
5952
- * functionality and when executed will limit the rate at which `callback`
5953
- * is executed.
5954
- */
5955
- function wrapper() {
5956
- for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {
5957
- arguments_[_key] = arguments[_key];
5958
- }
5959
- var self = this;
5960
- var elapsed = Date.now() - lastExec;
5961
- if (cancelled) {
5962
- return;
5963
- }
5964
-
5965
- // Execute `callback` and update the `lastExec` timestamp.
5966
- function exec() {
5967
- lastExec = Date.now();
5968
- callback.apply(self, arguments_);
5969
- }
5970
-
5971
- /*
5972
- * If `debounceMode` is true (at begin) this is used to clear the flag
5973
- * to allow future `callback` executions.
5974
- */
5975
- function clear() {
5976
- timeoutID = undefined;
5977
- }
5978
- if (!noLeading && debounceMode && !timeoutID) {
5979
- /*
5980
- * Since `wrapper` is being called for the first time and
5981
- * `debounceMode` is true (at begin), execute `callback`
5982
- * and noLeading != true.
5983
- */
5984
- exec();
5985
- }
5986
- clearExistingTimeout();
5987
- if (debounceMode === undefined && elapsed > delay) {
5988
- if (noLeading) {
5989
- /*
5990
- * In throttle mode with noLeading, if `delay` time has
5991
- * been exceeded, update `lastExec` and schedule `callback`
5992
- * to execute after `delay` ms.
5993
- */
5994
- lastExec = Date.now();
5995
- if (!noTrailing) {
5996
- timeoutID = setTimeout(debounceMode ? clear : exec, delay);
5997
- }
5998
- } else {
5999
- /*
6000
- * In throttle mode without noLeading, if `delay` time has been exceeded, execute
6001
- * `callback`.
6002
- */
6003
- exec();
6004
- }
6005
- } else if (noTrailing !== true) {
6006
- /*
6007
- * In trailing throttle mode, since `delay` time has not been
6008
- * exceeded, schedule `callback` to execute `delay` ms after most
6009
- * recent execution.
6010
- *
6011
- * If `debounceMode` is true (at begin), schedule `clear` to execute
6012
- * after `delay` ms.
6013
- *
6014
- * If `debounceMode` is false (at end), schedule `callback` to
6015
- * execute after `delay` ms.
6016
- */
6017
- timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);
6018
- }
6019
- }
6020
- wrapper.cancel = cancel;
6021
-
6022
- // Return the wrapper function.
6023
- return wrapper;
6024
- }
6025
-
6026
- /* eslint-disable no-undefined */
6027
-
6028
- /**
6029
- * Debounce execution of a function. Debouncing, unlike throttling,
6030
- * guarantees that a function is only executed a single time, either at the
6031
- * very beginning of a series of calls, or at the very end.
6032
- *
6033
- * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
6034
- * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,
6035
- * to `callback` when the debounced-function is executed.
6036
- * @param {object} [options] - An object to configure options.
6037
- * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds
6038
- * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.
6039
- * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).
6040
- *
6041
- * @returns {Function} A new, debounced function.
6042
- */
6043
- function debounce$1 (delay, callback, options) {
6044
- var _ref = {},
6045
- _ref$atBegin = _ref.atBegin,
6046
- atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;
6047
- return throttle(delay, callback, {
6048
- debounceMode: atBegin !== false
6049
- });
6050
- }
6051
-
6052
5892
  class Breakpoint {
6053
5893
  constructor() {
6054
5894
  this.breakpoints = [
6055
- { key: 'xl', device: 'desktop', minWidth: 1280 },
6056
- { key: 'lg', device: 'desktop', minWidth: 1024 },
6057
- { key: 'md', device: 'tablet', minWidth: 780 },
6058
- { key: 'sm', device: 'tablet', minWidth: 600 },
6059
- { key: 'xs', device: 'mobile', minWidth: 0 },
5895
+ { key: 'xl', device: 'desktop', minWidth: 1280, mediaQuery: '(min-width: 1280px)' },
5896
+ { key: 'lg', device: 'desktop', minWidth: 1024, mediaQuery: '(min-width: 1024px)' },
5897
+ { key: 'md', device: 'tablet', minWidth: 780, mediaQuery: '(min-width: 780px)' },
5898
+ { key: 'sm', device: 'tablet', minWidth: 600, mediaQuery: '(min-width: 600px)' },
5899
+ { key: 'xs', device: 'mobile', minWidth: 0, mediaQuery: '(min-width: 0px)' },
6060
5900
  ];
6061
5901
  this.resizeObserver = globalThis.ResizeObserver
6062
5902
  ? new ResizeObserver(() => this.updateCurrentBreakpoint())
6063
5903
  : null;
6064
- this.updateCurrentBreakpoint = throttle(50, (options = { emitEvents: true }) => {
5904
+ this.updateCurrentBreakpoint = (options = { emitEvents: true }) => {
6065
5905
  const previousBreakpoint = this.currentBreakpoint;
6066
5906
  const newBreakpoint = this.breakpoints.find(breakpoint => {
6067
- return breakpoint.minWidth <= innerWidth;
5907
+ return globalThis.matchMedia
5908
+ ? globalThis.matchMedia(breakpoint.mediaQuery).matches
5909
+ : breakpoint.minWidth <= document.documentElement.clientWidth;
6068
5910
  });
6069
5911
  if (!newBreakpoint)
6070
5912
  return;
@@ -6072,9 +5914,10 @@ class Breakpoint {
6072
5914
  if (!options.emitEvents)
6073
5915
  return;
6074
5916
  Object.keys(this.currentBreakpoint)
5917
+ .filter(key => key !== 'mediaQuery')
6075
5918
  .filter(key => !previousBreakpoint || this.currentBreakpoint[key] !== previousBreakpoint[key])
6076
5919
  .forEach((key) => this.dispatchEvent(key));
6077
- });
5920
+ };
6078
5921
  if (this.resizeObserver) {
6079
5922
  this.updateCurrentBreakpoint({ emitEvents: false });
6080
5923
  this.resizeObserver.observe(document.body);
@@ -6090,37 +5933,6 @@ class Breakpoint {
6090
5933
  }
6091
5934
  const breakpoint = new Breakpoint();
6092
5935
 
6093
- /**
6094
- * Invoke the `componentOnReady` method if it is available, simulate it otherwise
6095
- * @see https://stenciljs.com/docs/api#componentonready
6096
- */
6097
- function componentOnReady(el) {
6098
- if (typeof el.componentOnReady === 'function') {
6099
- return el.componentOnReady();
6100
- }
6101
- else {
6102
- return new Promise(resolve => customOnReady(() => {
6103
- resolve(el);
6104
- }));
6105
- }
6106
- }
6107
- function customOnReady(callback) {
6108
- if (typeof requestAnimationFrame === 'function') {
6109
- return requestAnimationFrame(callback);
6110
- }
6111
- return setTimeout(callback);
6112
- }
6113
-
6114
- function debounce(callback, timeout = 200) {
6115
- let id;
6116
- return (...args) => {
6117
- if (id) {
6118
- clearTimeout(id);
6119
- }
6120
- id = setTimeout(callback, timeout, ...args);
6121
- };
6122
- }
6123
-
6124
5936
  /**
6125
5937
  * Validates if an event should be processed based on target and nesting criteria
6126
5938
  * @param event - The event to validate
@@ -6212,32 +6024,106 @@ function EventFrom(tag, option) {
6212
6024
  }
6213
6025
  /**
6214
6026
  * Traverses up the DOM (including crossing shadow DOM boundaries) to find the closest ancestor
6215
- * that matches the specified tag name.
6216
- * @param element - The starting element
6217
- * @param tagName - The tag name to match (e.g., 'post-accordion')
6027
+ * matching the given predicate.
6028
+ * @param start - The starting element
6029
+ * @param predicate - A type guard used to test each ancestor
6218
6030
  * @returns The closest matching ancestor or null if none found
6219
6031
  */
6220
- function findClosestParentWithTag(element, tagName) {
6221
- let current = element;
6032
+ function findClosestAcrossShadow(start, predicate) {
6033
+ let current = start;
6222
6034
  while (current) {
6223
- if (current.localName === tagName) {
6035
+ if (predicate(current)) {
6224
6036
  return current;
6225
6037
  }
6226
- // Check regular parent first
6227
6038
  if (current.parentElement) {
6228
6039
  current = current.parentElement;
6229
6040
  }
6230
- // If no parentElement, check if we're in a shadow root
6231
- else if (current.parentNode instanceof ShadowRoot) {
6232
- current = current.parentNode.host;
6233
- }
6234
- // No more parents to check
6235
6041
  else {
6236
- current = null;
6042
+ // Duck-typed ShadowRoot check (nodeType 11 + host) instead of `instanceof ShadowRoot`,
6043
+ // since some test environments (e.g. JSDOM) only partially implement it.
6044
+ const parent = current.parentNode;
6045
+ if (parent !== null && parent.nodeType === 11 && 'host' in parent) {
6046
+ current = parent.host;
6047
+ }
6048
+ else {
6049
+ current = null;
6050
+ }
6237
6051
  }
6238
6052
  }
6239
6053
  return null;
6240
6054
  }
6055
+ function findClosestParentWithTag(element, tagName) {
6056
+ return findClosestAcrossShadow(element, (el) => el.localName === tagName);
6057
+ }
6058
+
6059
+ const CLOSABLE_TARGETS = [
6060
+ {
6061
+ predicate: el => el.localName === 'post-banner',
6062
+ close: el => void el.dismiss(),
6063
+ },
6064
+ {
6065
+ predicate: el => el.localName === 'post-popover',
6066
+ close: el => void el.hide(),
6067
+ },
6068
+ {
6069
+ predicate: el => el.localName === 'post-popovercontainer',
6070
+ close: el => void el.hide(),
6071
+ },
6072
+ {
6073
+ predicate: el => el.localName === 'post-collapsible',
6074
+ close: el => void el.toggle(false),
6075
+ },
6076
+ {
6077
+ predicate: el => el.localName === 'post-accordion-item',
6078
+ close: el => void el.toggle(false),
6079
+ },
6080
+ {
6081
+ predicate: el => el.localName === 'dialog',
6082
+ close: el => el.close(),
6083
+ },
6084
+ {
6085
+ predicate: el => el.hasAttribute('popover'),
6086
+ close: el => el.togglePopover(false),
6087
+ },
6088
+ ];
6089
+ function findClosableTarget(start) {
6090
+ const el = findClosestAcrossShadow(start, (el) => CLOSABLE_TARGETS.some(t => t.predicate(el)));
6091
+ if (!el)
6092
+ return null;
6093
+ const match = CLOSABLE_TARGETS.find(t => t.predicate(el));
6094
+ return { element: el, close: () => match.close(el) };
6095
+ }
6096
+
6097
+ /**
6098
+ * Invoke the `componentOnReady` method if it is available, simulate it otherwise
6099
+ * @see https://stenciljs.com/docs/api#componentonready
6100
+ */
6101
+ function componentOnReady(el) {
6102
+ if (typeof el.componentOnReady === 'function') {
6103
+ return el.componentOnReady();
6104
+ }
6105
+ else {
6106
+ return new Promise(resolve => customOnReady(() => {
6107
+ resolve(el);
6108
+ }));
6109
+ }
6110
+ }
6111
+ function customOnReady(callback) {
6112
+ if (typeof requestAnimationFrame === 'function') {
6113
+ return requestAnimationFrame(callback);
6114
+ }
6115
+ return setTimeout(callback);
6116
+ }
6117
+
6118
+ function debounce$1(callback, timeout = 200) {
6119
+ let id;
6120
+ return (...args) => {
6121
+ if (id) {
6122
+ clearTimeout(id);
6123
+ }
6124
+ id = setTimeout(callback, timeout, ...args);
6125
+ };
6126
+ }
6241
6127
 
6242
6128
  /**
6243
6129
  * getRootNode() can only be used after the element has been attached to the document!
@@ -6419,7 +6305,7 @@ function repeat(callback, { delayMs = 300, intervalMs = 100 } = {}) {
6419
6305
  };
6420
6306
  }
6421
6307
 
6422
- const version$1 = "10.4.0";
6308
+ const version$1 = "10.5.0";
6423
6309
 
6424
6310
  const postAccordionCss = () => `:host{display:block;border-block-start:var(--post-device-border-width-default) var(--post-core-border-style-solid) var(--post-scheme-color-interactive-primary-enabled-stroke)}`;
6425
6311
 
@@ -6640,44 +6526,31 @@ class PostAutocomplete {
6640
6526
  constructor(hostRef) {
6641
6527
  registerInstance(this, hostRef);
6642
6528
  this.postFilteringEvent = createEvent(this, "postFilteringEvent");
6643
- this.debouncedHandleInput = debounce((event) => {
6529
+ this.debouncedHandleInput = debounce$1((event) => {
6644
6530
  void this.handleInput(event);
6645
6531
  }, 250);
6646
6532
  /** Number of characters to type before filtering methods are called */
6647
6533
  this.filterThreshold = 0;
6648
6534
  /** Show or hide the clear button */
6649
6535
  this.clearable = false;
6650
- this.inputValue = '';
6651
- this.handleFocus = () => {
6652
- if (this.filterThreshold !== 0)
6653
- return;
6654
- if (this.inputElement && this.inputElement.value.trim() !== '')
6655
- return;
6656
- this.postFilteringEvent.emit('');
6536
+ /** Whether the listbox is currently expanded */
6537
+ this.expanded = false;
6538
+ /** The value of the last run query */
6539
+ this.lastQuery = '';
6540
+ /** The value of the selected listbox option */
6541
+ this.selectedValue = null;
6542
+ this.handleClick = async () => {
6543
+ await this.runQuery('', true);
6657
6544
  };
6658
- this.handleOnBlur = () => {
6659
- this.inputElement.value = this.inputValue;
6660
- this.listBoxElement.filter('');
6545
+ this.handleBlur = () => {
6546
+ this.restoreSelectedValue();
6661
6547
  this.hideListBox();
6662
6548
  };
6663
6549
  this.handleInput = async (event) => {
6664
6550
  if (!this.listBoxElement)
6665
6551
  return;
6666
6552
  const value = event.target.value.trim();
6667
- const query = value.length >= this.filterThreshold ? value : '';
6668
- // Allow for consuming parent to handle filtering (e.g. for async data) and prevent default filtering behavior
6669
- const { defaultPrevented } = this.postFilteringEvent.emit(query && query.length >= this.filterThreshold ? query : '');
6670
- if (defaultPrevented)
6671
- return;
6672
- await this.listBoxElement.filter(query);
6673
- if (query) {
6674
- this.showListBox();
6675
- this.announceCount();
6676
- }
6677
- else {
6678
- this.inputValue = '';
6679
- this.clearAnnouncement();
6680
- }
6553
+ await this.runQuery(value.length >= this.filterThreshold ? value : '');
6681
6554
  };
6682
6555
  this.handleKeyDown = (event) => {
6683
6556
  const { key, altKey } = event;
@@ -6719,8 +6592,7 @@ class PostAutocomplete {
6719
6592
  };
6720
6593
  this.handleOptionSelected = (e) => {
6721
6594
  const value = e.detail;
6722
- this.inputElement.value = value;
6723
- this.inputValue = value;
6595
+ this.updateSelectedValue(value);
6724
6596
  this.hideListBox();
6725
6597
  };
6726
6598
  this.handleOptionActive = (e) => {
@@ -6732,23 +6604,9 @@ class PostAutocomplete {
6732
6604
  this.inputElement.removeAttribute('aria-activedescendant');
6733
6605
  }
6734
6606
  };
6735
- this.hideListBox = () => {
6736
- this.clearAnnouncement();
6737
- this.listBoxElement.hide();
6738
- this.inputElement.ariaExpanded = 'false';
6739
- this.host.removeAttribute('open');
6740
- this.inputElement.removeAttribute('aria-activedescendant');
6741
- };
6742
- this.showListBox = async () => {
6743
- await this.listBoxElement.show();
6744
- this.inputElement.ariaExpanded = 'true';
6745
- this.host.setAttribute('open', '');
6746
- this.announceCount();
6747
- };
6748
- this.clearInput = () => {
6607
+ this.handleClear = () => {
6749
6608
  if (this.inputElement) {
6750
- this.inputElement.value = '';
6751
- this.inputValue = '';
6609
+ this.updateSelectedValue(null);
6752
6610
  this.listBoxElement.clearSelection();
6753
6611
  this.hideListBox();
6754
6612
  }
@@ -6795,18 +6653,16 @@ class PostAutocomplete {
6795
6653
  if (this.inputElement) {
6796
6654
  this.inputElement.addEventListener('input', this.debouncedHandleInput);
6797
6655
  this.inputElement.addEventListener('keydown', this.handleKeyDown);
6798
- this.inputElement.addEventListener('blur', this.handleOnBlur);
6799
- this.inputElement.addEventListener('click', this.showListBox);
6800
- this.inputElement.addEventListener('focus', this.handleFocus);
6656
+ this.inputElement.addEventListener('blur', this.handleBlur);
6657
+ this.inputElement.addEventListener('click', this.handleClick);
6801
6658
  }
6802
6659
  }
6803
6660
  detachInputListeners() {
6804
6661
  if (this.inputElement) {
6805
6662
  this.inputElement.removeEventListener('input', this.debouncedHandleInput);
6806
6663
  this.inputElement.removeEventListener('keydown', this.handleKeyDown);
6807
- this.inputElement.removeEventListener('blur', this.handleOnBlur);
6808
- this.inputElement.removeEventListener('click', this.showListBox);
6809
- this.inputElement.removeEventListener('focus', this.handleFocus);
6664
+ this.inputElement.removeEventListener('blur', this.handleBlur);
6665
+ this.inputElement.removeEventListener('click', this.handleClick);
6810
6666
  }
6811
6667
  }
6812
6668
  attachListboxListeners() {
@@ -6831,8 +6687,53 @@ class PostAutocomplete {
6831
6687
  const count = this.listBoxElement.querySelectorAll('post-listbox-option:not([hidden])').length;
6832
6688
  this.outputElement.textContent = this.textAvailableSuggestions.replace('{count}', String(count));
6833
6689
  }
6690
+ async showListBox() {
6691
+ await this.listBoxElement.show();
6692
+ this.expanded = true;
6693
+ this.inputElement.ariaExpanded = 'true';
6694
+ this.host.setAttribute('open', '');
6695
+ this.announceCount();
6696
+ }
6697
+ async hideListBox() {
6698
+ this.clearAnnouncement();
6699
+ this.expanded = false;
6700
+ this.host.removeAttribute('open');
6701
+ this.inputElement.ariaExpanded = 'false';
6702
+ this.inputElement.removeAttribute('aria-activedescendant');
6703
+ await this.listBoxElement.hide();
6704
+ }
6705
+ updateSelectedValue(value) {
6706
+ this.selectedValue = value;
6707
+ this.inputElement.value = this.selectedValue ?? '';
6708
+ }
6709
+ /** Restores the input to the value of the selected option. */
6710
+ restoreSelectedValue() {
6711
+ this.inputElement.value = this.selectedValue ?? '';
6712
+ }
6713
+ /** Runs a query, filtering the listbox options and reflecting the outcome. */
6714
+ async runQuery(query, alwaysExpand = false) {
6715
+ // Prevent running the same query twice.
6716
+ if (this.lastQuery !== (this.lastQuery = query)) {
6717
+ await this.filterListBox(query);
6718
+ }
6719
+ // Always update the count if the listbox is expanded.
6720
+ if (this.expanded) {
6721
+ this.announceCount();
6722
+ }
6723
+ // Automatically show the listbox if the query is non-empty.
6724
+ else if (alwaysExpand || query) {
6725
+ await this.showListBox();
6726
+ }
6727
+ }
6728
+ /** Filters the listbox options based on the query, delegating to the consuming parent when possible. */
6729
+ async filterListBox(query) {
6730
+ // Allow for consuming parent to handle filtering (e.g. for async data) and prevent default filtering behavior.
6731
+ if (this.postFilteringEvent.emit(query).defaultPrevented)
6732
+ return;
6733
+ await this.listBoxElement?.filter(query);
6734
+ }
6834
6735
  render() {
6835
- return (hAsync(Host, { key: 'ef5b821b235c6e6a19e9da612a7c3fbc33408e44', "data-version": version$1 }, hAsync("slot", { key: 'a7855fd0e992be6c4fd737e9b7f29c77c1ec8e7f' }), this.clearable && this.inputValue && (hAsync("button", { key: '16a690d24deb1ac1cd50c85cea857ad3e5736fac', type: "button", class: "autocomplete-clear", onClick: this.clearInput }, hAsync("post-icon", { key: 'f254bd331fb15ca6cb5a32ac2a5f5a25cb8e81ea', "aria-hidden": "true", name: "closex" }))), hAsync("post-icon", { key: '87faa8280bb58683262ec40dbec383478c5999f5', "aria-hidden": "true", class: "autocomplete-icon", name: "chevronDown" }), hAsync("output", { key: '9f8ad0d40d1e12f611f4f2e9e14058dbcca3892e', class: "visually-hidden", ref: el => (this.outputElement = el) })));
6736
+ return (hAsync(Host, { key: '8b386930fe5484cd73395224b5f0c5daea867b33', "data-version": version$1 }, hAsync("slot", { key: '9aa5a34de2cf18c3d6342069fc2b4ce52baac0d3' }), this.clearable && this.selectedValue !== null && (hAsync("button", { key: '90b459fffc29066667ca4656b6871275d061d3fd', type: "button", class: "autocomplete-clear", onClick: this.handleClear }, hAsync("post-icon", { key: '419de2b608f1638b14aed086f8e2c6064ae634bc', "aria-hidden": "true", name: "closex" }))), hAsync("post-icon", { key: '56b7dd986023a0e46d902020b923ae525c88bef1', "aria-hidden": "true", class: "autocomplete-icon", name: "chevronDown" }), hAsync("output", { key: '6ef02d0baf03c7f562ba6d5c95918e4a7ae1214f', class: "visually-hidden", ref: el => (this.outputElement = el) })));
6836
6737
  }
6837
6738
  get host() { return getElement(this); }
6838
6739
  static get style() { return postAutocompleteCss(); }
@@ -6844,7 +6745,7 @@ class PostAutocomplete {
6844
6745
  "clearable": [516],
6845
6746
  "listbox": [513],
6846
6747
  "textAvailableSuggestions": [513, "text-available-suggestions"],
6847
- "inputValue": [32]
6748
+ "selectedValue": [32]
6848
6749
  },
6849
6750
  "$listeners$": undefined,
6850
6751
  "$lazyBundleId$": "-",
@@ -7119,12 +7020,23 @@ class PostBackToTop {
7119
7020
  return window.scrollY > window.innerHeight;
7120
7021
  }
7121
7022
  /*Watch for changes in belowFold to show/hide the back to top button*/
7122
- watchBelowFold(newValue) {
7123
- if (newValue) {
7124
- fadeSlide(this.host, 'in', { translate: this.translateY, fill: 'forwards' });
7023
+ async watchBelowFold(newValue) {
7024
+ this.currentAnimation?.cancel();
7025
+ // host needs to be visible before we can animate, in or out
7026
+ // hidden state gets recalculated after the animation, based on belowFold
7027
+ this.host.hidden = false;
7028
+ this.currentAnimation = fadeSlide(this.host, newValue ? 'in' : 'out', {
7029
+ translate: this.translateY,
7030
+ fill: 'forwards',
7031
+ });
7032
+ try {
7033
+ await this.currentAnimation.finished;
7034
+ // only hide once the fade-out finished and we're still not below fold
7035
+ if (!this.belowFold)
7036
+ this.host.hidden = true;
7125
7037
  }
7126
- else {
7127
- fadeSlide(this.host, 'out', { translate: this.translateY, fill: 'forwards' });
7038
+ catch {
7039
+ // animation got canceled, nothing to do
7128
7040
  }
7129
7041
  }
7130
7042
  scrollToTop() {
@@ -7166,16 +7078,17 @@ class PostBackToTop {
7166
7078
  // Set the initial state
7167
7079
  componentWillLoad() {
7168
7080
  this.belowFold = this.isBelowFold();
7081
+ this.host.hidden = !this.belowFold;
7169
7082
  }
7170
7083
  componentDidLoad() {
7171
- window.addEventListener('scroll', this.handleScroll, false);
7084
+ window.addEventListener('scroll', this.handleScroll, { passive: true });
7172
7085
  this.animateButton();
7173
7086
  }
7174
7087
  disconnectedCallback() {
7175
7088
  window.removeEventListener('scroll', this.handleScroll);
7176
7089
  }
7177
7090
  render() {
7178
- return (hAsync(Host, { key: '3d976e4e1a8ac4b72041369d5667c55d915d7118', "data-version": version$1 }, hAsync("button", { key: '7ceb4953248ca934a905ec63444934e9e6c09e43', class: "back-to-top", "aria-hidden": this.belowFold ? 'false' : 'true', tabindex: this.belowFold ? '0' : '-1', onClick: this.scrollToTop }, hAsync("post-icon", { key: '89a2bc9a8278fb45d3fb915ec096ee94b3841edd', "aria-hidden": "true", name: "arrowup" }), hAsync("span", { key: 'fc2517fba7599f37c3054b638afd6b9b2ba7e32a', class: "visually-hidden" }, this.textBackToTop))));
7091
+ return (hAsync(Host, { key: '149a8afee36c12130b3e503c4da5cffdaa3f86b5', "data-version": version$1 }, hAsync("button", { key: '4e291c5cfaa55bb6a68f436af570d83377436a3a', class: "back-to-top", onClick: this.scrollToTop }, hAsync("post-icon", { key: 'c25e8d12cf6f751b368010ad2d82534fa95adf86', "aria-hidden": "true", name: "arrowup" }), hAsync("span", { key: 'e16d1247a5ab7e39629e4bec7307ee562c589f7e', class: "visually-hidden" }, this.textBackToTop))));
7179
7092
  }
7180
7093
  get host() { return getElement(this); }
7181
7094
  static get watchers() { return {
@@ -7298,14 +7211,11 @@ class PostBanner {
7298
7211
  this.postDismissed.emit();
7299
7212
  this.host.remove();
7300
7213
  }
7301
- onCloseButtonClick() {
7302
- void this.dismiss();
7303
- }
7304
7214
  checkContent() {
7305
7215
  this.hasActions = this.host.querySelectorAll('[slot="actions"]').length > 0;
7306
7216
  }
7307
7217
  render() {
7308
- return (hAsync(Host, { key: 'afa4834733c7e9d985d2102a3e421f09f94b44ba', "data-version": version$1, role: "alert", "data-color-scheme": "light" }, hAsync("slot", { key: '39dfccec7bf829ff354bac467a9b399e003ce473', name: "close-button" }), hAsync("div", { key: 'e6dfc60165185da4384c4143153ee34db1299088', class: "post-banner-content" }, hAsync("slot", { key: '9fc1e8e81cf396eb1ae1e5dfff7f04ccc6443986', name: "heading" }), hAsync("slot", { key: 'e7d21db6f7feb1507c612319c3d56595b797a3c4' }), this.hasActions && (hAsync("div", { key: 'd4229d09accb5cfb2a096c44ca523a132da4755d', class: "actions" }, hAsync("slot", { key: 'b01633122bd45df2f95b7ee5e4694a83aceb68bd', name: "actions" }))))));
7218
+ return (hAsync(Host, { key: '890eea914f07f31f64c9e1b01fca94e824a019bc', "data-version": version$1, role: "alert", "data-color-scheme": "light" }, hAsync("slot", { key: 'd4ac9c3714979cde7bba7554fbe1886d2cf75701', name: "close-button" }), hAsync("div", { key: 'a097570719b709a3b67aa7152701edbf1174ace0', class: "post-banner-content" }, hAsync("slot", { key: 'df12b0e63ac4cf4152c196eaad071774be4d7b88', name: "heading" }), hAsync("slot", { key: 'a5e376800525119dc47815b9977936fa3966e087' }), this.hasActions && (hAsync("div", { key: '6a0cc7f82873bcfde5109ed9e6bfe8255e30b19c', class: "actions" }, hAsync("slot", { key: '11b1d289705cb9d1d96b20b4fcea2b923bfd184a', name: "actions" }))))));
7309
7219
  }
7310
7220
  get host() { return getElement(this); }
7311
7221
  static get style() { return postBannerCss(); }
@@ -7317,7 +7227,7 @@ class PostBanner {
7317
7227
  "hasActions": [32],
7318
7228
  "dismiss": [64]
7319
7229
  },
7320
- "$listeners$": [[0, "click", "onCloseButtonClick"]],
7230
+ "$listeners$": undefined,
7321
7231
  "$lazyBundleId$": "-",
7322
7232
  "$attrsToReflect$": [["type", "type"]]
7323
7233
  }; }
@@ -7325,13 +7235,10 @@ class PostBanner {
7325
7235
  __decorate$w([
7326
7236
  OneOf(BANNER_TYPES)
7327
7237
  ], PostBanner.prototype, "type", void 0);
7328
- __decorate$w([
7329
- EventFrom('post-closebutton', { allowDescendants: true })
7330
- ], PostBanner.prototype, "onCloseButtonClick", null);
7331
7238
 
7332
7239
  const VARIANTS = ['listitem', 'menuitem'];
7333
7240
 
7334
- const postBreadcrumbItemCss = () => `a{-webkit-text-decoration:var(--post-core-text-decoration-underline);text-decoration:var(--post-core-text-decoration-underline);border-radius:var(--post-device-border-radius-focus);color:var(--post-current-fg)}a:hover{color:var(--post-scheme-color-interactive-primary-hover-fg1)}a{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}a:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){a:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){a:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){a:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){a,a:focus{color:LinkText !important}a:hover{text-decoration-thickness:2px}a:visited{color:VisitedText}a.btn:not(.btn-link){border-color:ButtonBorder !important}a.btn.btn-tertiary.px-0{border:0 !important}a.btn.btn-tertiary.px-0:not(:hover){text-decoration:underline}}:host(:not([variant=menuitem])){display:flex;align-items:flex-start;padding-block:var(--post-device-spacing-padding-block-6);gap:var(--post-device-spacing-gap-inline-5)}:host(:not([variant=menuitem])) :is(button,a){display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-color:rgba(0,0,0,0);border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-size:var(--post-device-font-size-6);font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;font:inherit;padding:unset;border:unset;color:var(--post-scheme-color-interactive-primary-enabled-fg1);border-radius:var(--post-device-border-radius-focus);text-decoration:var(--post-core-text-decoration-none)}:host(:not([variant=menuitem])) :is(button,a):not(:disabled):hover{text-decoration:none}:host(:not([variant=menuitem])) :is(button,a):disabled{border-style:var(--post-core-border-style-dash);cursor:unset}:host(:not([variant=menuitem])) :is(button,a){outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}:host(:not([variant=menuitem])) :is(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host(:not([variant=menuitem])) :is(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){:host(:not([variant=menuitem])) :is(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host(:not([variant=menuitem])) :is(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host(:not([variant=menuitem])) :is(button,a){border-width:1px !important;transition:none}:host(:not([variant=menuitem])) :is(button,a):is(button){background-color:ButtonFace !important;border-color:ButtonBorder !important}}:host(:not([variant=menuitem])) :is(button,a):hover{color:var(--post-scheme-color-interactive-primary-hover-fg1);text-decoration:var(--post-core-text-decoration-underline)}:host(:not([variant=menuitem]))::before{mask-image:var(--post-icon-chevronright);background-color:currentColor;flex:0 0 auto;content:"";display:block;height:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);margin-block:calc(var(--post-device-spacing-padding-35) - 1*var(--post-device-spacing-padding-block-6));margin-inline:var(--post-core-dimension-4)}:root,:host{--post-icon-chevronright:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzPjxzeW1ib2wgaWQ9ImktY2hldnJvbnJpZ2h0Ij48c3ltYm9sIGlkPSJzMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTUuMzggMTRjLS4xOSAwLS4zOC0uMDctLjUzLS4yMmEuNzU0Ljc1NCAwIDAgMSAwLTEuMDZMOS41NyA4IDQuODUgMy4yOGMtLjI5LS4yOS0uMjktLjc3IDAtMS4wNnMuNzctLjI5IDEuMDYgMEwxMS42OSA4bC01Ljc4IDUuNzhjLS4xNS4xNS0uMzQuMjItLjUzLjIyIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iczI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik04LjA3IDIwLjcyYy0uMjIgMC0uNDUtLjA4LS42Mi0uMjZhLjg4Ljg4IDAgMCAxIDAtMS4yNGw3LjI2LTcuMjZMNy40NSA0LjdhLjg4Ljg4IDAgMCAxIDAtMS4yNGMuMzQtLjM0LjktLjM0IDEuMjQgMGw4LjUgOC41LTguNDkgOC40OWMtLjE3LjE3LS40LjI2LS42Mi4yNloiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHBhdGggZD0iTTEwLjc2IDI3LjVjLS4yNiAwLS41MS0uMS0uNzEtLjI5YS45OTYuOTk2IDAgMCAxIDAtMS40MWw5Ljc5LTkuNzktOS43OS05LjgxYS45OTYuOTk2IDAgMSAxIDEuNDEtMS40MUwyMi42NyAxNiAxMS40NiAyNy4yMWMtLjIuMi0uNDUuMjktLjcxLjI5WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM0MCIgdmlld0JveD0iMCAwIDQwIDQwIj48cGF0aCBkPSJNMTMuNSAzNC4yMmExLjEyMyAxLjEyMyAwIDAgMS0uOC0xLjkybDEyLjMzLTEyLjMzTDEyLjcgNy42M2MtLjQ0LS40NC0uNDQtMS4xNSAwLTEuNTlzMS4xNS0uNDQgMS41OSAwbDEzLjkzIDEzLjkzTDE0LjMgMzMuODljLS4yMi4yMi0uNTEuMzMtLjguMzMiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCI+PHBhdGggZD0iTTE2LjE0IDQxYy0uMzIgMC0uNjQtLjEyLS44OC0uMzdhMS4yNSAxLjI1IDAgMCAxIDAtMS43N2wxNC44Ny0xNC44N0wxNS4yNSA5LjExYy0uNDktLjQ5LS40OS0xLjI4IDAtMS43N3MxLjI4LS40OSAxLjc3IDBsMTYuNjQgMTYuNjQtMTYuNjMgMTYuNjNjLS4yNC4yNC0uNTYuMzctLjg4LjM3WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM2NCIgdmlld0JveD0iMCAwIDY0IDY0Ij48cGF0aCBkPSJNMjEuNTEgNTQuNGExLjM3NiAxLjM3NiAwIDAgMS0uOTctMi4zNWwyMC4wMy0yMC4wMy0yMC4wNC0yMC4wM2MtLjU0LS41NC0uNTQtMS40MSAwLTEuOTVzMS40MS0uNTQgMS45NSAwbDIxLjk4IDIxLjk5TDIyLjQ5IDU0Yy0uMjcuMjctLjYyLjQtLjk3LjRaIi8+PC9zeW1ib2w+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczE2LCBub25lKSIgaHJlZj0iI3MxNiIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXMyNCwgbm9uZSkiIGhyZWY9IiNzMjQiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zMzIsIG5vbmUpIiBocmVmPSIjczMyIi8+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczQwLCBub25lKSIgaHJlZj0iI3M0MCIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXM0OCwgbm9uZSkiIGhyZWY9IiNzNDgiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zNjQsIG5vbmUpIiBocmVmPSIjczY0Ii8+PC9zeW1ib2w+PC9kZWZzPjxzdHlsZT5AbWVkaWEgKG1heC13aWR0aDogMjMuOThweCkge2d7LS1zMTY6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogMjRweCkgYW5kIChtYXgtd2lkdGg6IDMxLjk4cHgpIHtney0tczI0OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDMycHgpIGFuZCAobWF4LXdpZHRoOiAzOS45OHB4KSB7Z3stLXMzMjpibG9jazt9fUBtZWRpYSAobWluLXdpZHRoOiA0MHB4KSBhbmQgKG1heC13aWR0aDogNDcuOThweCkge2d7LS1zNDA6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogNDhweCkgYW5kIChtYXgtd2lkdGg6IDYzLjk4cHgpIHtney0tczQ4OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDY0cHgpIHtney0tczY0OmJsb2NrO319PC9zdHlsZT48Zz48dXNlIGhyZWY9IiNpLWNoZXZyb25yaWdodCIvPjwvZz48L3N2Zz4=")}:is(a,span){white-space:var(--post-breadcrumb-item-wrap, normal) !important;overflow-wrap:anywhere;hyphens:auto;line-break:strict}:host([selected]:not([selected=false])){display:flex;align-items:flex-start;padding-block:var(--post-device-spacing-padding-block-6);gap:var(--post-device-spacing-gap-inline-5)}:host([selected]:not([selected=false])) :is(button,a){display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-color:rgba(0,0,0,0);border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-size:var(--post-device-font-size-6);font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;font:inherit;padding:unset;border:unset;color:var(--post-scheme-color-interactive-primary-enabled-fg1);border-radius:var(--post-device-border-radius-focus);text-decoration:var(--post-core-text-decoration-none)}:host([selected]:not([selected=false])) :is(button,a):not(:disabled):hover{text-decoration:none}:host([selected]:not([selected=false])) :is(button,a):disabled{border-style:var(--post-core-border-style-dash);cursor:unset}:host([selected]:not([selected=false])) :is(button,a){outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}:host([selected]:not([selected=false])) :is(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host([selected]:not([selected=false])) :is(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){:host([selected]:not([selected=false])) :is(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host([selected]:not([selected=false])) :is(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host([selected]:not([selected=false])) :is(button,a){border-width:1px !important;transition:none}:host([selected]:not([selected=false])) :is(button,a):is(button){background-color:ButtonFace !important;border-color:ButtonBorder !important}}:host([selected]:not([selected=false])) :is(button,a):hover{color:var(--post-scheme-color-interactive-primary-hover-fg1);text-decoration:var(--post-core-text-decoration-underline)}:host([selected]:not([selected=false]))::before{mask-image:var(--post-icon-chevronright);background-color:currentColor;flex:0 0 auto;content:"";display:block;height:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);margin-block:calc(var(--post-device-spacing-padding-35) - 1*var(--post-device-spacing-padding-block-6));margin-inline:var(--post-core-dimension-4)}:root,:host{--post-icon-chevronright:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzPjxzeW1ib2wgaWQ9ImktY2hldnJvbnJpZ2h0Ij48c3ltYm9sIGlkPSJzMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTUuMzggMTRjLS4xOSAwLS4zOC0uMDctLjUzLS4yMmEuNzU0Ljc1NCAwIDAgMSAwLTEuMDZMOS41NyA4IDQuODUgMy4yOGMtLjI5LS4yOS0uMjktLjc3IDAtMS4wNnMuNzctLjI5IDEuMDYgMEwxMS42OSA4bC01Ljc4IDUuNzhjLS4xNS4xNS0uMzQuMjItLjUzLjIyIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iczI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik04LjA3IDIwLjcyYy0uMjIgMC0uNDUtLjA4LS42Mi0uMjZhLjg4Ljg4IDAgMCAxIDAtMS4yNGw3LjI2LTcuMjZMNy40NSA0LjdhLjg4Ljg4IDAgMCAxIDAtMS4yNGMuMzQtLjM0LjktLjM0IDEuMjQgMGw4LjUgOC41LTguNDkgOC40OWMtLjE3LjE3LS40LjI2LS42Mi4yNloiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHBhdGggZD0iTTEwLjc2IDI3LjVjLS4yNiAwLS41MS0uMS0uNzEtLjI5YS45OTYuOTk2IDAgMCAxIDAtMS40MWw5Ljc5LTkuNzktOS43OS05LjgxYS45OTYuOTk2IDAgMSAxIDEuNDEtMS40MUwyMi42NyAxNiAxMS40NiAyNy4yMWMtLjIuMi0uNDUuMjktLjcxLjI5WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM0MCIgdmlld0JveD0iMCAwIDQwIDQwIj48cGF0aCBkPSJNMTMuNSAzNC4yMmExLjEyMyAxLjEyMyAwIDAgMS0uOC0xLjkybDEyLjMzLTEyLjMzTDEyLjcgNy42M2MtLjQ0LS40NC0uNDQtMS4xNSAwLTEuNTlzMS4xNS0uNDQgMS41OSAwbDEzLjkzIDEzLjkzTDE0LjMgMzMuODljLS4yMi4yMi0uNTEuMzMtLjguMzMiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCI+PHBhdGggZD0iTTE2LjE0IDQxYy0uMzIgMC0uNjQtLjEyLS44OC0uMzdhMS4yNSAxLjI1IDAgMCAxIDAtMS43N2wxNC44Ny0xNC44N0wxNS4yNSA5LjExYy0uNDktLjQ5LS40OS0xLjI4IDAtMS43N3MxLjI4LS40OSAxLjc3IDBsMTYuNjQgMTYuNjQtMTYuNjMgMTYuNjNjLS4yNC4yNC0uNTYuMzctLjg4LjM3WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM2NCIgdmlld0JveD0iMCAwIDY0IDY0Ij48cGF0aCBkPSJNMjEuNTEgNTQuNGExLjM3NiAxLjM3NiAwIDAgMS0uOTctMi4zNWwyMC4wMy0yMC4wMy0yMC4wNC0yMC4wM2MtLjU0LS41NC0uNTQtMS40MSAwLTEuOTVzMS40MS0uNTQgMS45NSAwbDIxLjk4IDIxLjk5TDIyLjQ5IDU0Yy0uMjcuMjctLjYyLjQtLjk3LjRaIi8+PC9zeW1ib2w+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczE2LCBub25lKSIgaHJlZj0iI3MxNiIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXMyNCwgbm9uZSkiIGhyZWY9IiNzMjQiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zMzIsIG5vbmUpIiBocmVmPSIjczMyIi8+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczQwLCBub25lKSIgaHJlZj0iI3M0MCIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXM0OCwgbm9uZSkiIGhyZWY9IiNzNDgiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zNjQsIG5vbmUpIiBocmVmPSIjczY0Ii8+PC9zeW1ib2w+PC9kZWZzPjxzdHlsZT5AbWVkaWEgKG1heC13aWR0aDogMjMuOThweCkge2d7LS1zMTY6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogMjRweCkgYW5kIChtYXgtd2lkdGg6IDMxLjk4cHgpIHtney0tczI0OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDMycHgpIGFuZCAobWF4LXdpZHRoOiAzOS45OHB4KSB7Z3stLXMzMjpibG9jazt9fUBtZWRpYSAobWluLXdpZHRoOiA0MHB4KSBhbmQgKG1heC13aWR0aDogNDcuOThweCkge2d7LS1zNDA6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogNDhweCkgYW5kIChtYXgtd2lkdGg6IDYzLjk4cHgpIHtney0tczQ4OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDY0cHgpIHtney0tczY0OmJsb2NrO319PC9zdHlsZT48Zz48dXNlIGhyZWY9IiNpLWNoZXZyb25yaWdodCIvPjwvZz48L3N2Zz4=")}:host([selected]:not([selected=false])) :is(a,span){color:var(--post-scheme-color-interactive-primary-selected-fg1);font-weight:var(--post-device-font-weight-bold);text-decoration:var(--post-core-text-decoration-none)}`;
7241
+ const postBreadcrumbItemCss = () => `a{-webkit-text-decoration:var(--post-core-text-decoration-underline);text-decoration:var(--post-core-text-decoration-underline);border-radius:var(--post-device-border-radius-focus);color:var(--post-current-fg)}a:hover{color:var(--post-scheme-color-interactive-primary-hover-fg1)}a{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}a:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){a:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){a:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){a:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){a,a:focus{color:LinkText !important}a:hover{text-decoration-thickness:2px}a:visited{color:VisitedText}a.btn:not(.btn-link){border-color:ButtonBorder !important}a.btn.btn-tertiary.px-0{border:0 !important}a.btn.btn-tertiary.px-0:not(:hover){text-decoration:underline}}:host([variant=menuitem]) :is(a,span){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;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([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]):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])) :is(a,span){white-space:normal;overflow-wrap:anywhere;hyphens:auto;line-break:strict}`;
7335
7242
 
7336
7243
  var __decorate$v = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
7337
7244
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -7344,60 +7251,229 @@ var __decorate$v = (undefined && undefined.__decorate) || function (decorators,
7344
7251
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7345
7252
  };
7346
7253
  /**
7347
- * @slot default - The content displayed inside the breadcrumb item.
7254
+ * @slot default - The content displayed inside the breadcrumb item.
7255
+ */
7256
+ class PostBreadcrumbItem {
7257
+ constructor(hostRef) {
7258
+ registerInstance(this, hostRef);
7259
+ /**
7260
+ * Controls how the item is rendered, either as a standard list item or within an overflow menu.
7261
+ */
7262
+ this.variant = 'listitem';
7263
+ /**
7264
+ * Indicates that the item represents the current page, applying appropriate styling.
7265
+ */
7266
+ this.selected = false;
7267
+ /**
7268
+ * Indicates that this is the only visible item, applying appropriate styling.
7269
+ */
7270
+ this.standalone = false;
7271
+ }
7272
+ render() {
7273
+ const href = this.url instanceof URL ? this.url.href : this.url;
7274
+ 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)));
7275
+ 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)));
7276
+ }
7277
+ get host() { return getElement(this); }
7278
+ static get style() { return postBreadcrumbItemCss(); }
7279
+ static get cmpMeta() { return {
7280
+ "$flags$": 265,
7281
+ "$tagName$": "post-breadcrumb-item",
7282
+ "$members$": {
7283
+ "url": [513],
7284
+ "label": [513],
7285
+ "description": [513],
7286
+ "variant": [513],
7287
+ "selected": [516],
7288
+ "standalone": [516]
7289
+ },
7290
+ "$listeners$": undefined,
7291
+ "$lazyBundleId$": "-",
7292
+ "$attrsToReflect$": [["url", "url"], ["label", "label"], ["description", "description"], ["variant", "variant"], ["selected", "selected"], ["standalone", "standalone"]]
7293
+ }; }
7294
+ }
7295
+ __decorate$v([
7296
+ Url()
7297
+ ], PostBreadcrumbItem.prototype, "url", void 0);
7298
+ __decorate$v([
7299
+ Type('string')
7300
+ ], PostBreadcrumbItem.prototype, "label", void 0);
7301
+ __decorate$v([
7302
+ Type('string')
7303
+ ], PostBreadcrumbItem.prototype, "description", void 0);
7304
+ __decorate$v([
7305
+ OneOf(VARIANTS)
7306
+ ], PostBreadcrumbItem.prototype, "variant", void 0);
7307
+ __decorate$v([
7308
+ Required(),
7309
+ Type('boolean')
7310
+ ], PostBreadcrumbItem.prototype, "selected", void 0);
7311
+ __decorate$v([
7312
+ Required(),
7313
+ Type('boolean')
7314
+ ], PostBreadcrumbItem.prototype, "standalone", void 0);
7315
+
7316
+ /* eslint-disable no-undefined,no-param-reassign,no-shadow */
7317
+
7318
+ /**
7319
+ * Throttle execution of a function. Especially useful for rate limiting
7320
+ * execution of handlers on events like resize and scroll.
7321
+ *
7322
+ * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)
7323
+ * are most useful.
7324
+ * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,
7325
+ * as-is, to `callback` when the throttled-function is executed.
7326
+ * @param {object} [options] - An object to configure options.
7327
+ * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds
7328
+ * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed
7329
+ * one final time after the last throttled-function call. (After the throttled-function has not been called for
7330
+ * `delay` milliseconds, the internal counter is reset).
7331
+ * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback
7332
+ * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that
7333
+ * callback will never executed if both noLeading = true and noTrailing = true.
7334
+ * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is
7335
+ * false (at end), schedule `callback` to execute after `delay` ms.
7336
+ *
7337
+ * @returns {Function} A new, throttled, function.
7338
+ */
7339
+ function throttle (delay, callback, options) {
7340
+ var _ref = options || {},
7341
+ _ref$noTrailing = _ref.noTrailing,
7342
+ noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,
7343
+ _ref$noLeading = _ref.noLeading,
7344
+ noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,
7345
+ _ref$debounceMode = _ref.debounceMode,
7346
+ debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;
7347
+ /*
7348
+ * After wrapper has stopped being called, this timeout ensures that
7349
+ * `callback` is executed at the proper times in `throttle` and `end`
7350
+ * debounce modes.
7351
+ */
7352
+ var timeoutID;
7353
+ var cancelled = false;
7354
+
7355
+ // Keep track of the last time `callback` was executed.
7356
+ var lastExec = 0;
7357
+
7358
+ // Function to clear existing timeout
7359
+ function clearExistingTimeout() {
7360
+ if (timeoutID) {
7361
+ clearTimeout(timeoutID);
7362
+ }
7363
+ }
7364
+
7365
+ // Function to cancel next exec
7366
+ function cancel(options) {
7367
+ var _ref2 = options || {},
7368
+ _ref2$upcomingOnly = _ref2.upcomingOnly,
7369
+ upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;
7370
+ clearExistingTimeout();
7371
+ cancelled = !upcomingOnly;
7372
+ }
7373
+
7374
+ /*
7375
+ * The `wrapper` function encapsulates all of the throttling / debouncing
7376
+ * functionality and when executed will limit the rate at which `callback`
7377
+ * is executed.
7378
+ */
7379
+ function wrapper() {
7380
+ for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {
7381
+ arguments_[_key] = arguments[_key];
7382
+ }
7383
+ var self = this;
7384
+ var elapsed = Date.now() - lastExec;
7385
+ if (cancelled) {
7386
+ return;
7387
+ }
7388
+
7389
+ // Execute `callback` and update the `lastExec` timestamp.
7390
+ function exec() {
7391
+ lastExec = Date.now();
7392
+ callback.apply(self, arguments_);
7393
+ }
7394
+
7395
+ /*
7396
+ * If `debounceMode` is true (at begin) this is used to clear the flag
7397
+ * to allow future `callback` executions.
7398
+ */
7399
+ function clear() {
7400
+ timeoutID = undefined;
7401
+ }
7402
+ if (!noLeading && debounceMode && !timeoutID) {
7403
+ /*
7404
+ * Since `wrapper` is being called for the first time and
7405
+ * `debounceMode` is true (at begin), execute `callback`
7406
+ * and noLeading != true.
7407
+ */
7408
+ exec();
7409
+ }
7410
+ clearExistingTimeout();
7411
+ if (debounceMode === undefined && elapsed > delay) {
7412
+ if (noLeading) {
7413
+ /*
7414
+ * In throttle mode with noLeading, if `delay` time has
7415
+ * been exceeded, update `lastExec` and schedule `callback`
7416
+ * to execute after `delay` ms.
7417
+ */
7418
+ lastExec = Date.now();
7419
+ if (!noTrailing) {
7420
+ timeoutID = setTimeout(debounceMode ? clear : exec, delay);
7421
+ }
7422
+ } else {
7423
+ /*
7424
+ * In throttle mode without noLeading, if `delay` time has been exceeded, execute
7425
+ * `callback`.
7426
+ */
7427
+ exec();
7428
+ }
7429
+ } else if (noTrailing !== true) {
7430
+ /*
7431
+ * In trailing throttle mode, since `delay` time has not been
7432
+ * exceeded, schedule `callback` to execute `delay` ms after most
7433
+ * recent execution.
7434
+ *
7435
+ * If `debounceMode` is true (at begin), schedule `clear` to execute
7436
+ * after `delay` ms.
7437
+ *
7438
+ * If `debounceMode` is false (at end), schedule `callback` to
7439
+ * execute after `delay` ms.
7440
+ */
7441
+ timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);
7442
+ }
7443
+ }
7444
+ wrapper.cancel = cancel;
7445
+
7446
+ // Return the wrapper function.
7447
+ return wrapper;
7448
+ }
7449
+
7450
+ /* eslint-disable no-undefined */
7451
+
7452
+ /**
7453
+ * Debounce execution of a function. Debouncing, unlike throttling,
7454
+ * guarantees that a function is only executed a single time, either at the
7455
+ * very beginning of a series of calls, or at the very end.
7456
+ *
7457
+ * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
7458
+ * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,
7459
+ * to `callback` when the debounced-function is executed.
7460
+ * @param {object} [options] - An object to configure options.
7461
+ * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds
7462
+ * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.
7463
+ * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).
7464
+ *
7465
+ * @returns {Function} A new, debounced function.
7348
7466
  */
7349
- class PostBreadcrumbItem {
7350
- constructor(hostRef) {
7351
- registerInstance(this, hostRef);
7352
- /**
7353
- * Controls how the item is rendered, either as a standard list item or within an overflow menu.
7354
- */
7355
- this.variant = 'listitem';
7356
- /**
7357
- * Indicates that the item represents the current page, applying appropriate styling.
7358
- */
7359
- this.selected = false;
7360
- }
7361
- render() {
7362
- const href = this.url instanceof URL ? this.url.href : this.url;
7363
- const content = href ? (hAsync("a", { href: href, "aria-current": this.selected ? 'page' : undefined, "aria-label": this.label, "aria-description": this.description }, hAsync("slot", null))) : (hAsync("span", null, hAsync("slot", null)));
7364
- return this.variant === 'listitem' || this.selected ? (hAsync(Host, { "data-version": version$1, role: "listitem", slot: this.selected ? 'selected' : undefined }, content)) : (hAsync(Host, { "data-version": version$1 }, hAsync("post-menu-item", null, content)));
7365
- }
7366
- get host() { return getElement(this); }
7367
- static get style() { return postBreadcrumbItemCss(); }
7368
- static get cmpMeta() { return {
7369
- "$flags$": 265,
7370
- "$tagName$": "post-breadcrumb-item",
7371
- "$members$": {
7372
- "url": [513],
7373
- "label": [513],
7374
- "description": [513],
7375
- "variant": [513],
7376
- "selected": [516]
7377
- },
7378
- "$listeners$": undefined,
7379
- "$lazyBundleId$": "-",
7380
- "$attrsToReflect$": [["url", "url"], ["label", "label"], ["description", "description"], ["variant", "variant"], ["selected", "selected"]]
7381
- }; }
7467
+ function debounce (delay, callback, options) {
7468
+ var _ref = {},
7469
+ _ref$atBegin = _ref.atBegin,
7470
+ atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;
7471
+ return throttle(delay, callback, {
7472
+ debounceMode: atBegin !== false
7473
+ });
7382
7474
  }
7383
- __decorate$v([
7384
- Url()
7385
- ], PostBreadcrumbItem.prototype, "url", void 0);
7386
- __decorate$v([
7387
- Type('string')
7388
- ], PostBreadcrumbItem.prototype, "label", void 0);
7389
- __decorate$v([
7390
- Type('string')
7391
- ], PostBreadcrumbItem.prototype, "description", void 0);
7392
- __decorate$v([
7393
- OneOf(VARIANTS)
7394
- ], PostBreadcrumbItem.prototype, "variant", void 0);
7395
- __decorate$v([
7396
- Required(),
7397
- Type('boolean')
7398
- ], PostBreadcrumbItem.prototype, "selected", void 0);
7399
7475
 
7400
- const postBreadcrumbsCss = () => `:host{display:block;position:relative}nav{max-width:100%}nav.invisible{--post-breadcrumb-item-wrap:nowrap;visibility:hidden;overflow:hidden;position:absolute;inset:0;padding-inline:1px}[role=list]{display:flex;align-items:flex-start;gap:var(--post-device-spacing-gap-inline-4)}.breadcrumb-item{display:flex;align-items:flex-start;padding-block:var(--post-device-spacing-padding-block-6);gap:var(--post-device-spacing-gap-inline-5)}.breadcrumb-item :is(button,a){display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-color:rgba(0,0,0,0);border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-size:var(--post-device-font-size-6);font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;font:inherit;padding:unset;border:unset;color:var(--post-scheme-color-interactive-primary-enabled-fg1);border-radius:var(--post-device-border-radius-focus);text-decoration:var(--post-core-text-decoration-none)}.breadcrumb-item :is(button,a):not(:disabled):hover{text-decoration:none}.breadcrumb-item :is(button,a):disabled{border-style:var(--post-core-border-style-dash);cursor:unset}.breadcrumb-item :is(button,a){outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.breadcrumb-item :is(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.breadcrumb-item :is(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.breadcrumb-item :is(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.breadcrumb-item :is(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.breadcrumb-item :is(button,a){border-width:1px !important;transition:none}.breadcrumb-item :is(button,a):is(button){background-color:ButtonFace !important;border-color:ButtonBorder !important}}.breadcrumb-item :is(button,a):hover{color:var(--post-scheme-color-interactive-primary-hover-fg1);text-decoration:var(--post-core-text-decoration-underline)}.breadcrumb-item::before{mask-image:var(--post-icon-chevronright);background-color:currentColor;flex:0 0 auto;content:"";display:block;height:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);margin-block:calc(var(--post-device-spacing-padding-35) - 1*var(--post-device-spacing-padding-block-6));margin-inline:var(--post-core-dimension-4)}:root,:host{--post-icon-chevronright:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzPjxzeW1ib2wgaWQ9ImktY2hldnJvbnJpZ2h0Ij48c3ltYm9sIGlkPSJzMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTUuMzggMTRjLS4xOSAwLS4zOC0uMDctLjUzLS4yMmEuNzU0Ljc1NCAwIDAgMSAwLTEuMDZMOS41NyA4IDQuODUgMy4yOGMtLjI5LS4yOS0uMjktLjc3IDAtMS4wNnMuNzctLjI5IDEuMDYgMEwxMS42OSA4bC01Ljc4IDUuNzhjLS4xNS4xNS0uMzQuMjItLjUzLjIyIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iczI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik04LjA3IDIwLjcyYy0uMjIgMC0uNDUtLjA4LS42Mi0uMjZhLjg4Ljg4IDAgMCAxIDAtMS4yNGw3LjI2LTcuMjZMNy40NSA0LjdhLjg4Ljg4IDAgMCAxIDAtMS4yNGMuMzQtLjM0LjktLjM0IDEuMjQgMGw4LjUgOC41LTguNDkgOC40OWMtLjE3LjE3LS40LjI2LS42Mi4yNloiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHBhdGggZD0iTTEwLjc2IDI3LjVjLS4yNiAwLS41MS0uMS0uNzEtLjI5YS45OTYuOTk2IDAgMCAxIDAtMS40MWw5Ljc5LTkuNzktOS43OS05LjgxYS45OTYuOTk2IDAgMSAxIDEuNDEtMS40MUwyMi42NyAxNiAxMS40NiAyNy4yMWMtLjIuMi0uNDUuMjktLjcxLjI5WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM0MCIgdmlld0JveD0iMCAwIDQwIDQwIj48cGF0aCBkPSJNMTMuNSAzNC4yMmExLjEyMyAxLjEyMyAwIDAgMS0uOC0xLjkybDEyLjMzLTEyLjMzTDEyLjcgNy42M2MtLjQ0LS40NC0uNDQtMS4xNSAwLTEuNTlzMS4xNS0uNDQgMS41OSAwbDEzLjkzIDEzLjkzTDE0LjMgMzMuODljLS4yMi4yMi0uNTEuMzMtLjguMzMiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCI+PHBhdGggZD0iTTE2LjE0IDQxYy0uMzIgMC0uNjQtLjEyLS44OC0uMzdhMS4yNSAxLjI1IDAgMCAxIDAtMS43N2wxNC44Ny0xNC44N0wxNS4yNSA5LjExYy0uNDktLjQ5LS40OS0xLjI4IDAtMS43N3MxLjI4LS40OSAxLjc3IDBsMTYuNjQgMTYuNjQtMTYuNjMgMTYuNjNjLS4yNC4yNC0uNTYuMzctLjg4LjM3WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM2NCIgdmlld0JveD0iMCAwIDY0IDY0Ij48cGF0aCBkPSJNMjEuNTEgNTQuNGExLjM3NiAxLjM3NiAwIDAgMS0uOTctMi4zNWwyMC4wMy0yMC4wMy0yMC4wNC0yMC4wM2MtLjU0LS41NC0uNTQtMS40MSAwLTEuOTVzMS40MS0uNTQgMS45NSAwbDIxLjk4IDIxLjk5TDIyLjQ5IDU0Yy0uMjcuMjctLjYyLjQtLjk3LjRaIi8+PC9zeW1ib2w+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczE2LCBub25lKSIgaHJlZj0iI3MxNiIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXMyNCwgbm9uZSkiIGhyZWY9IiNzMjQiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zMzIsIG5vbmUpIiBocmVmPSIjczMyIi8+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczQwLCBub25lKSIgaHJlZj0iI3M0MCIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXM0OCwgbm9uZSkiIGhyZWY9IiNzNDgiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zNjQsIG5vbmUpIiBocmVmPSIjczY0Ii8+PC9zeW1ib2w+PC9kZWZzPjxzdHlsZT5AbWVkaWEgKG1heC13aWR0aDogMjMuOThweCkge2d7LS1zMTY6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogMjRweCkgYW5kIChtYXgtd2lkdGg6IDMxLjk4cHgpIHtney0tczI0OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDMycHgpIGFuZCAobWF4LXdpZHRoOiAzOS45OHB4KSB7Z3stLXMzMjpibG9jazt9fUBtZWRpYSAobWluLXdpZHRoOiA0MHB4KSBhbmQgKG1heC13aWR0aDogNDcuOThweCkge2d7LS1zNDA6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogNDhweCkgYW5kIChtYXgtd2lkdGg6IDYzLjk4cHgpIHtney0tczQ4OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDY0cHgpIHtney0tczY0OmJsb2NrO319PC9zdHlsZT48Zz48dXNlIGhyZWY9IiNpLWNoZXZyb25yaWdodCIvPjwvZz48L3N2Zz4=")}.home{padding-block:var(--post-device-spacing-padding-47)}.home::before{content:unset}.home post-icon{width:var(--post-device-sizing-interactive-icon-size2);height:var(--post-device-sizing-interactive-icon-size2)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}`;
7476
+ 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)}.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)}.menu{margin-inline-end:calc(-1*var(--post-device-spacing-gap-inline-4))}.menu.empty{display:none}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}`;
7401
7477
 
7402
7478
  var __decorate$u = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
7403
7479
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -7409,92 +7485,142 @@ var __decorate$u = (undefined && undefined.__decorate) || function (decorators,
7409
7485
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
7410
7486
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7411
7487
  };
7488
+ const MAX_VISIBLE_ITEMS = 6;
7489
+ const MEASUREMENT_DEBOUNCE_MS$1 = 50;
7412
7490
  class PostBreadcrumbs {
7413
7491
  constructor(hostRef) {
7414
7492
  registerInstance(this, hostRef);
7415
- this.shouldRenderMenu = false;
7493
+ this.debounceUpdateCollapsedItems = throttle(MEASUREMENT_DEBOUNCE_MS$1, this.updateCollapsedItems.bind(this));
7494
+ this.resizeObserver = new ResizeObserver(this.debounceUpdateCollapsedItems);
7495
+ this.mutationObserver = new MutationObserver(this.updateHiddenNav.bind(this));
7496
+ this.loaded = false;
7497
+ /** The number of breadcrumb items, counted from the start, that are moved into the overflow menu. */
7498
+ this.collapsed = 0;
7499
+ /** The visible breadcrumb navigation. */
7500
+ this.nav = null;
7501
+ /** An off-screen copy of the breadcrumb navigation used for measurement. */
7502
+ this.hiddenNav = null;
7416
7503
  }
7417
7504
  componentWillLoad() {
7418
7505
  this.id = this.host.id || `b${nanoid(6)}`;
7419
7506
  }
7420
- componentDidLoad() {
7421
- this.createMutationObserver();
7422
- this.createResizeObserver();
7423
- }
7424
- disconnectedCallback() {
7425
- this.mutationObserver?.disconnect();
7426
- this.resizeObserver?.disconnect();
7427
- }
7428
- createMutationObserver() {
7429
- this.mutationObserver = new MutationObserver(this.duplicateNavElement.bind(this));
7430
- this.mutationObserver.observe(this.host, {
7507
+ async componentDidLoad() {
7508
+ this.resizeObserver?.observe(document.body);
7509
+ this.mutationObserver?.observe(this.host, {
7431
7510
  childList: true,
7432
7511
  characterData: true,
7433
7512
  subtree: true,
7434
7513
  });
7435
- this.duplicateNavElement();
7514
+ await this.updateHiddenNav();
7515
+ await this.updateCollapsedItems();
7516
+ this.loaded = true;
7436
7517
  }
7437
- createResizeObserver() {
7438
- this.resizeObserver = new ResizeObserver(throttle(50, this.checkOverflow.bind(this)));
7439
- this.resizeObserver.observe(document.body);
7518
+ disconnectedCallback() {
7519
+ this.resizeObserver?.disconnect();
7520
+ this.mutationObserver?.disconnect();
7521
+ this.debounceUpdateCollapsedItems.cancel();
7440
7522
  }
7441
7523
  /**
7442
- * To measure overflow, we duplicate the entire breadcrumb so an inline version is always available.
7524
+ * Measures the space available in the breadcrumb navigation and moves the items that do not fit
7525
+ * into the overflow menu.
7443
7526
  */
7444
- duplicateNavElement() {
7445
- const shadowRoot = this.host.shadowRoot;
7446
- const nav = shadowRoot?.querySelector('nav');
7447
- if (!shadowRoot || !nav)
7527
+ async updateCollapsedItems() {
7528
+ if (!this.nav)
7448
7529
  return;
7449
- this.prepareBreadcrumbItemsForClone();
7450
- const clone = nav.cloneNode(true);
7451
- clone.classList.add('invisible');
7452
- shadowRoot.querySelector('nav.invisible')?.remove();
7453
- shadowRoot.append(clone);
7454
- requestAnimationFrame(() => {
7455
- this.duplicateSlottedElements(clone, 'slot:not([name])');
7456
- this.duplicateSlottedElements(clone, 'slot[name="selected"]');
7457
- this.checkOverflow();
7458
- });
7530
+ this.collapsed = await this.calculateCollapsedItems();
7459
7531
  }
7460
- duplicateSlottedElements(clone, slotSelector) {
7461
- const originalSlot = this.host.shadowRoot?.querySelector(slotSelector);
7462
- const clonedSlot = clone.querySelector(slotSelector);
7463
- if (!originalSlot || !clonedSlot)
7464
- return;
7465
- originalSlot.assignedElements().forEach(element => {
7466
- clonedSlot.insertAdjacentElement('beforebegin', element.cloneNode(true));
7467
- });
7468
- clonedSlot.remove();
7532
+ /**
7533
+ * Determines how many items have to be collapsed, either because they do not fit the breadcrumb
7534
+ * navigation or because they exceed the maximum number of visible items.
7535
+ */
7536
+ async calculateCollapsedItems() {
7537
+ const items = this.host.querySelectorAll('post-breadcrumb-item');
7538
+ const overflowing = await this.calculateOverflowingItems();
7539
+ // Never show more than `MAX_VISIBLE_ITEMS`, even if the nav is wide enough to fit them all.
7540
+ return Math.max(overflowing, items.length - MAX_VISIBLE_ITEMS);
7469
7541
  }
7470
- checkOverflow() {
7471
- const hiddenNav = this.host.shadowRoot?.querySelector('nav.invisible');
7472
- if (!hiddenNav)
7473
- return;
7474
- const breadcrumbItems = Array.from(hiddenNav.querySelectorAll('post-breadcrumb-item'));
7475
- Promise.all(breadcrumbItems.map(item => componentOnReady(item))).then(() => {
7476
- this.shouldRenderMenu =
7477
- hiddenNav.scrollWidth > hiddenNav.clientWidth && breadcrumbItems.length > 1;
7478
- this.updateBreadcrumbItemProps();
7542
+ /**
7543
+ * Determines how many items overflow the width of the breadcrumb navigation.
7544
+ */
7545
+ async calculateOverflowingItems() {
7546
+ // Fallback to zero if the hidden nav is not available for measurement.
7547
+ if (!this.hiddenNav)
7548
+ return 0;
7549
+ const gap = Number.parseFloat(getComputedStyle(this.hiddenNav.firstElementChild).gap);
7550
+ const menu = this.hiddenNav.querySelector('.menu').clientWidth;
7551
+ // The last item can never be collapsed, so it is ignored when measuring the width of the items.
7552
+ const items = Array.from(this.hiddenNav.querySelectorAll('post-breadcrumb-item')).slice(0, -1);
7553
+ // Start from the assumption that all items fit and that no menu is shown.
7554
+ // Therefore, subtract the width of the overflow menu.
7555
+ let width = this.hiddenNav.scrollWidth - menu + gap;
7556
+ let overflowing = 0;
7557
+ // Discard items from the start until the remaining ones fit the available width.
7558
+ while (overflowing < items.length && width > this.hiddenNav.clientWidth) {
7559
+ // The overflow menu needs to be displayed as soon as the first item is moved into it, so its
7560
+ // width needs to be taken into account when measuring the remaining items.
7561
+ if (overflowing === 0)
7562
+ width += menu;
7563
+ width -= items[overflowing++].clientWidth + gap;
7564
+ }
7565
+ return overflowing;
7566
+ }
7567
+ /**
7568
+ * Moves `collapsed` items into the overflow menu and marks the last item as selected.
7569
+ */
7570
+ updateItems(items, collapsed) {
7571
+ items.forEach((item, index) => {
7572
+ item.setAttribute('variant', index < collapsed ? 'menuitem' : 'listitem');
7573
+ item.setAttribute('selected', String(index === items.length - 1));
7574
+ item.setAttribute('standalone', String(index === items.length - 1 && index === collapsed));
7479
7575
  });
7480
7576
  }
7481
- prepareBreadcrumbItemsForClone() {
7482
- this.shouldRenderMenu = false;
7483
- this.updateBreadcrumbItemProps();
7577
+ /**
7578
+ * Rebuilds the off-screen copy of the breadcrumb navigation.
7579
+ */
7580
+ async updateHiddenNav() {
7581
+ this.hiddenNav?.remove();
7582
+ this.hiddenNav = await this.renderHiddenNav();
7484
7583
  }
7485
- updateBreadcrumbItemProps() {
7486
- const breadcrumbItems = this.host.querySelectorAll('post-breadcrumb-item');
7487
- breadcrumbItems.forEach((item, index) => {
7488
- item.setAttribute('variant', this.shouldRenderMenu ? 'menuitem' : 'listitem');
7489
- item.setAttribute('selected', String(index === breadcrumbItems.length - 1));
7584
+ /**
7585
+ * Renders an off-screen copy of the breadcrumb navigation that is used for measurements.
7586
+ */
7587
+ async renderHiddenNav() {
7588
+ const shadowRoot = this.host.shadowRoot;
7589
+ if (!shadowRoot || !this.nav)
7590
+ return null;
7591
+ const clone = this.nav.cloneNode(true);
7592
+ const slots = clone.querySelectorAll('slot');
7593
+ // Deep clone the breadcrumb navigation and flatten its slots into the clone.
7594
+ this.nav.querySelectorAll('slot').forEach((source, index) => {
7595
+ const target = slots[index];
7596
+ // Insert the assigned elements where the slot used to be, then drop the now empty slot
7597
+ source.assignedElements().forEach(element => {
7598
+ target.insertAdjacentElement('beforebegin', element.cloneNode(true));
7599
+ });
7600
+ target.remove();
7490
7601
  });
7602
+ clone.classList.remove('loading');
7603
+ clone.classList.add('invisible');
7604
+ // Show the overflow menu so that we can include the space it takes up in the measurement.
7605
+ clone.querySelector('.menu').classList.remove('empty');
7606
+ shadowRoot.append(clone);
7607
+ // Wait for all items to be fully hydrated before measuring.
7608
+ const items = clone.querySelectorAll('post-breadcrumb-item');
7609
+ await Promise.all(Array.from(items).map(item => componentOnReady(item)));
7610
+ // Move the items out of the overflow menu so that the uncollapsed layout can be measured.
7611
+ this.updateItems(items, 0);
7612
+ return clone;
7491
7613
  }
7492
7614
  renderMenu() {
7493
7615
  const menuId = `${this.id}-menu`;
7494
- return (hAsync("div", { role: "listitem" }, hAsync("div", { class: "breadcrumb-item" }, hAsync("post-menu-trigger", { for: menuId }, hAsync("button", null, hAsync("span", { class: "visually-hidden" }, this.textMoreItems), hAsync("span", { "aria-hidden": "true" }, "...")))), hAsync("post-menu", { id: menuId, label: this.textMoreItems, placement: "bottom-start" }, hAsync("slot", null))));
7616
+ return (hAsync("div", { class: `breadcrumb-item menu ${this.collapsed === 0 ? '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" }, hAsync("slot", { name: "menu" }))));
7495
7617
  }
7496
7618
  render() {
7497
- return (hAsync(Host, { key: '2640a012ada112396ea3c954cda45c7bfaf2968d', "data-version": version$1 }, hAsync("nav", { key: '397a017f326459c433e0f8fae5766badfad52e29', "aria-label": this.textBreadcrumbs }, hAsync("div", { key: 'eb1d83aeb4aca599350918ba6be9df2a5ce86453', role: "list" }, hAsync("div", { key: '217b359f3da4afc3ca8c28d8fc0d352f4198c9b1', class: "breadcrumb-item home", role: "listitem" }, hAsync("a", { key: '1c2c3754bc0ef04e48ab95b5dad62e2d4cbb85e9', href: this.homeUrl }, hAsync("span", { key: '15878d068a9901a2c7b4f6726e6962dc9158a86f', class: "visually-hidden" }, this.textHome), hAsync("post-icon", { key: '0d755bcc61c49ccd7944b4a9370198ed41ab1c34', "aria-hidden": "true", name: "home" }))), this.shouldRenderMenu ? this.renderMenu() : hAsync("slot", null), hAsync("slot", { key: 'a0bafe06eab2346ea12bd00aec40c91b5e5347d0', name: "selected" })))));
7619
+ if (this.loaded) {
7620
+ const items = this.host.querySelectorAll('post-breadcrumb-item');
7621
+ this.updateItems(items, this.collapsed);
7622
+ }
7623
+ return (hAsync(Host, { key: '501384cb07b2deac87a21800fc4d39d695747341', "data-version": version$1 }, hAsync("nav", { key: '20aa57da865967458169544dec75d975926eb675', "aria-label": this.textBreadcrumbs, ref: el => (this.nav = el), class: this.loaded ? '' : 'loading' }, hAsync("div", { key: 'cf8f21f2ee9de01bac0edf9379ba5c183b938d70', role: "list" }, hAsync("div", { key: '9bd29a83cb976d67f3c6ea24cf23b2a07e40ca84', class: "breadcrumb-item home", role: "listitem" }, hAsync("a", { key: '675638668994f074951491040c6043819e6f7282', href: this.homeUrl }, hAsync("span", { key: '3ce1f8ea5ba5738925bff000ec5a8c32603ae963', class: "visually-hidden" }, this.textHome), hAsync("post-icon", { key: '1b35b22788d4e70c948e1067d99265e8af9c74e7', "aria-hidden": "true", name: "home" }))), this.renderMenu(), hAsync("slot", { key: 'f7fe7cd0b16a9064aba28149756f785c47133351' }), hAsync("slot", { key: 'c62ce84877203586c184e1adaea1ecb6ed8a0912', name: "selected" })))));
7498
7624
  }
7499
7625
  get host() { return getElement(this); }
7500
7626
  static get style() { return postBreadcrumbsCss(); }
@@ -7506,8 +7632,9 @@ class PostBreadcrumbs {
7506
7632
  "textHome": [513, "text-home"],
7507
7633
  "textBreadcrumbs": [513, "text-breadcrumbs"],
7508
7634
  "textMoreItems": [513, "text-more-items"],
7509
- "shouldRenderMenu": [32],
7510
- "id": [32]
7635
+ "id": [32],
7636
+ "loaded": [32],
7637
+ "collapsed": [32]
7511
7638
  },
7512
7639
  "$listeners$": undefined,
7513
7640
  "$lazyBundleId$": "-",
@@ -7562,7 +7689,7 @@ class PostClosebutton {
7562
7689
  }
7563
7690
  /**
7564
7691
  * The "type" attribute used for the close button
7565
-
7692
+
7566
7693
  */
7567
7694
  this.buttonType = 'button';
7568
7695
  /**
@@ -7573,6 +7700,10 @@ class PostClosebutton {
7573
7700
  * The size of the close button.
7574
7701
  */
7575
7702
  this.size = 'default';
7703
+ this.handleClick = () => {
7704
+ const target = findClosableTarget(this.host);
7705
+ target?.close();
7706
+ };
7576
7707
  }
7577
7708
  componentDidLoad() {
7578
7709
  if (globalThis.MutationObserver) {
@@ -7597,13 +7728,8 @@ class PostClosebutton {
7597
7728
  console.error(`The \`${this.host.localName}\` component requires content for accessibility.`);
7598
7729
  }
7599
7730
  }
7600
- handleClick() {
7601
- if (this.buttonType === 'reset')
7602
- this.internals.form?.reset();
7603
- this.host.closest('dialog')?.close();
7604
- }
7605
7731
  render() {
7606
- return (hAsync(Host, { key: '22ac2b07e9a8a8f8d157423fea1bcedb2c4f9b11', "data-version": version$1 }, hAsync("button", { key: '91eb413a2546f131e4c97c28340374addbf2c7a7', type: this.buttonType, class: "btn btn-icon btn-secondary btn-sm", onClick: () => this.handleClick() }, hAsync("post-icon", { key: '02202b3df2e5830aeb267921c924c1e75508d546', "aria-hidden": "true", name: "closex" }), hAsync("span", { key: 'c691c845dd58b4f975c33791d29518428ade6ee8', ref: el => (this.visuallyHidden = el), class: "visually-hidden" }, hAsync("slot", { key: '3fd42b82ef1d1ea76343e0c69f421a2916c26006' })))));
7732
+ return (hAsync(Host, { key: 'f46ba6cbd82793b2a3d3a72c2f89236f0904eb68', "data-version": version$1 }, hAsync("button", { key: 'd014e76ccce88a087f8dd9caaac002eb09f64699', type: this.buttonType, class: "btn btn-icon btn-secondary btn-sm", onClick: this.handleClick }, hAsync("post-icon", { key: '442305b327aabe61f259b98694118ec1b4ed2f09', "aria-hidden": "true", name: "closex" }), hAsync("span", { key: '530149339a2a983d1e5d23c149abd0faf6f912b5', ref: el => (this.visuallyHidden = el), class: "visually-hidden" }, hAsync("slot", { key: 'b90d5bea08c70c6df33dc5fc74bcf06eb2b6cd14' })))));
7607
7733
  }
7608
7734
  static get formAssociated() { return true; }
7609
7735
  get host() { return getElement(this); }
@@ -7699,7 +7825,7 @@ class PostCollapsible {
7699
7825
  triggers.forEach(trigger => trigger.update());
7700
7826
  }
7701
7827
  render() {
7702
- return (hAsync(Host, { key: 'd4fef8eff9b716e9dff0e570f5993221ca631ed5', "data-version": version$1, tabindex: this.collapsed ? -1 : undefined, style: this.collapsed ? collapsedKeyframe : undefined }, hAsync("slot", { key: 'ee957da050187c1cfd752e0dcb6b5f86505f5089' })));
7828
+ return (hAsync(Host, { key: 'd21f5e36e292652981b165fbb5f4e03501f88e1b', "data-version": version$1, tabindex: this.collapsed ? -1 : undefined, style: this.collapsed ? collapsedKeyframe : undefined }, hAsync("slot", { key: '7804a966899325cbc55f9e62eadf81e8e6a1e248' })));
7703
7829
  }
7704
7830
  get host() { return getElement(this); }
7705
7831
  static get style() { return postCollapsibleCss(); }
@@ -7825,7 +7951,7 @@ class PostCollapsibleTrigger {
7825
7951
  this.updateAriaAttributes();
7826
7952
  }
7827
7953
  render() {
7828
- return (hAsync(Host, { key: '64dde42136274194be6c3c4f94fb87ded8a3a079', "data-version": version$1 }, hAsync("slot", { key: 'f43727ec2f7692793178ad6c162bb56f0f2d842b' })));
7954
+ return (hAsync(Host, { key: '55ae82b4cf69709de291000cc5e273107e1f61e7', "data-version": version$1 }, hAsync("slot", { key: 'c85ddfc93a1ef93c41fcb3fc5705fa1fbb30934d' })));
7829
7955
  }
7830
7956
  get host() { return getElement(this); }
7831
7957
  static get cmpMeta() { return {
@@ -12659,11 +12785,11 @@ class PostDatePicker {
12659
12785
  }
12660
12786
  }
12661
12787
  render() {
12662
- return (hAsync(Host, { key: 'ac7b7440fa143243f512f5310451bf5f78c8d4f9', "data-version": version$1 }, this.inline && (hAsync("div", { key: 'f8557be8fa3200fe60a5867136bcbafadb0dd8fa', dir: this.textDirection }, hAsync("slot", { key: '0fb8338aa4f3003debd860818473545159dae9de' }), hAsync("div", { key: 'a5ad622effd59c94e89fdaad49aac1be4572b6cc', class: "datepicker-container" }))), !this.inline && (hAsync("div", { key: '13542f6ebc5b3eb019f08f229b57d9766da1f5f3', dir: this.textDirection }, hAsync("div", { key: '70ff874ef7337256286af303a2491f82cf50ebdd', class: {
12788
+ return (hAsync(Host, { key: '8f3e9c45b6536e766d2930bb7647ccb230a1a53c', "data-version": version$1 }, this.inline && (hAsync("div", { key: '37c23df45461da546c03ab5e487e6831992a1a6f', dir: this.textDirection }, hAsync("slot", { key: '6c031a739d43642604c752e2101bbc2d4fbb39e5' }), hAsync("div", { key: '42ecf6418c4522d15a24341b127b444aedbfc7be', class: "datepicker-container" }))), !this.inline && (hAsync("div", { key: '0166eba762a209d0113f42c19715a9dde86eef2d', dir: this.textDirection }, hAsync("div", { key: '14f687ecc53fd5681aa52abd955e18aa17991b2c', class: {
12663
12789
  'calendar-input': !this.range,
12664
12790
  'calendar-input-range': this.range,
12665
12791
  'disabled': this.inputDisabled,
12666
- } }, hAsync("slot", { key: '833903cc2bc4560f3d9378e2e8cf47ff26af2ea1' }), hAsync("button", { key: 'd7fd572bc96164d36e30cec148822e875966fc8d', onClick: () => this.show(), "aria-haspopup": "true", "aria-label": this.textToggleCalendar, disabled: this.inputDisabled, ref: e => (this.dpTrigger = e) }, hAsync("post-icon", { key: '8606056f1de2c9c6cfc041575affb01155a4282e', name: "calendar" }))), hAsync("post-popovercontainer", { key: '0519c4854ce7eaa31fdc542790d0b24da83c8538', placement: "bottom-end", offset: PostDatePicker.FLYOUT_OFFSET, ref: e => (this.popoverRef = e) }, hAsync("div", { key: 'ad967bfcb1154e508d03f9d986be7829d65ce69b', class: "datepicker-container" }))))));
12792
+ } }, hAsync("slot", { key: 'afc114dc156c665de0b1a23732efaf3e221929d4' }), hAsync("button", { key: '205ef45ccc828418af1ef7b3b09def83b87c9b26', onClick: () => this.show(), "aria-haspopup": "true", "aria-label": this.textToggleCalendar, disabled: this.inputDisabled, ref: e => (this.dpTrigger = e) }, hAsync("post-icon", { key: '6730069a64bc2bb461d72e5c0e615d37ca57b74d', name: "calendar" }))), hAsync("post-popovercontainer", { key: '56e1dfd0fd04442f7778c547fc75cba8caba84a5', placement: "bottom-end", offset: PostDatePicker.FLYOUT_OFFSET, ref: e => (this.popoverRef = e) }, hAsync("div", { key: '43ff0d83760214ff8e1ad06c2f8d7c6626e178c1', class: "datepicker-container" }))))));
12667
12793
  }
12668
12794
  get host() { return getElement(this); }
12669
12795
  static get watchers() { return {
@@ -12846,10 +12972,10 @@ class PostFooter {
12846
12972
  const allGridSlotsEmpty = GRID_SLOTS.every(slotName => !this.slotDisplayed[slotName]);
12847
12973
  const renderMain = !allGridSlotsEmpty || renderSocialmedia || renderApp || renderBusinesssectors;
12848
12974
  const renderBase = renderCopyright || renderMeta;
12849
- return (hAsync(Host, { key: 'f668d6ba8da065dacae35ef5b62ee53de08e752b', "data-version": version$1, "data-color-scheme": "light" }, hAsync("footer", { key: 'a2d5506e10de46e0c457795a241f7c121bccabbf' }, hAsync("h2", { key: '6ab3e65fca3282f2c9e885b380759ccd06fdebb1', class: "visually-hidden" }, this.textFooter), hAsync("div", { key: '77575484be6954dedaea636720d739fabd12393b', class: { 'prefooter': true, 'd-none': !renderPrefooter } }, hAsync("div", { key: '10c9bd63fe081645b83e0e4630185da0b2f3125b', class: "footer-container" }, hAsync("slot", { key: 'c73b907f6f0b2210c0fc33d3980e89b303599ca6', onSlotchange: this.handleSlotChange, name: "prefooter" }))), hAsync("div", { key: 'facda7dade1905087e8f1d23505f2afc381f56df', class: { 'footer-main': true, 'd-none': !renderMain } }, hAsync("div", { key: '09fcf43c02bab8f475d400c5fed66fababde2bfd', class: "footer-container" }, hAsync("div", { key: '25362e6384b6f1cdea3e7901e1afef6926e7b855', class: { 'footer-grid': true, 'd-none': allGridSlotsEmpty } }, this.device === 'mobile' ? this.renderAccordion() : this.renderColumns()), hAsync("div", { key: '0d4f176302870c035b517a9d6df34fd5bd2268ae', class: {
12975
+ return (hAsync(Host, { key: '02edce3d202fefa6fe21a84d1ed97a6ded2d76ce', "data-version": version$1, "data-color-scheme": "light" }, hAsync("footer", { key: '7d67c940dc73b6dd16283e7c7a7feeda05f50f80' }, hAsync("h2", { key: '1d71a47f631f463c15b7ac02c7574d4f8adbfe2e', class: "visually-hidden" }, this.textFooter), hAsync("div", { key: '9fd3d08883d63c8aaccb4c3c32c0c8a81c3f8e1c', class: { 'prefooter': true, 'd-none': !renderPrefooter } }, hAsync("div", { key: '99a6abfe43b586e5486c4ceeff3c7176905ef631', class: "footer-container" }, hAsync("slot", { key: '5616b403340d5e2395c0d949926f99c56936b662', onSlotchange: this.handleSlotChange, name: "prefooter" }))), hAsync("div", { key: 'd6ccd3988b9951bb0e38fd612eae64a1889427ef', class: { 'footer-main': true, 'd-none': !renderMain } }, hAsync("div", { key: '4c8880c1dbf366a408402a884e61fe8e1cf45af0', class: "footer-container" }, hAsync("div", { key: 'a79010da73a749002a25b03052d0427d2dcf6c2e', class: { 'footer-grid': true, 'd-none': allGridSlotsEmpty } }, this.device === 'mobile' ? this.renderAccordion() : this.renderColumns()), hAsync("div", { key: '335efe778d8b8e2c4a9f3eeffd4d60e5ba670ad2', class: {
12850
12976
  'footer-column': true,
12851
12977
  'd-none': !renderSocialmedia && !renderApp,
12852
- } }, hAsync("div", { key: 'c109f4a4e6ee2654f3312924c0afe2ccb86c35c5', class: { 'footer-socialmedia': true, 'd-none': !renderSocialmedia } }, hAsync("slot", { key: '50b9083d8962ac635f5b8e9124d401cb8113fd16', onSlotchange: this.handleSlotChange, name: "socialmedia" })), hAsync("div", { key: 'f27f992e9f3fa51f0b1a46263b8b06db904c7326', class: { 'footer-app': true, 'd-none': !renderApp } }, hAsync("slot", { key: 'b2312f504866d55a4214ea2c5a959f63d72224f5', onSlotchange: this.handleSlotChange, name: "app" }))), hAsync("div", { key: '08887180c9834a3c843227e74038c10e59eff574', class: { 'footer-businesssectors': true, 'd-none': !renderBusinesssectors } }, hAsync("slot", { key: '3c06ae979a57241646898761d7e4c07110f9982b', onSlotchange: this.handleSlotChange, name: "businesssectors" })))), hAsync("div", { key: '2b306190837589565cb1f7a849ae5ed6fb95e2f4', class: { 'footer-base': true, 'd-none': !renderBase } }, hAsync("div", { key: 'e399157216b6acd98e6fcb802f01fc50086c268c', class: "footer-container" }, hAsync("div", { key: '2b594870e3256173f6a2bd293e5050cc7733e215', class: { 'footer-copyright': true, 'd-none': !renderCopyright } }, hAsync("slot", { key: 'a79f43ab477dc12d1b9d34635784ac45feeeab59', onSlotchange: this.handleSlotChange, name: "copyright" })), hAsync("div", { key: '3298f106b3ae0fd387dd407f5b3276d99e584eeb', class: { 'footer-meta': true, 'd-none': !renderMeta } }, hAsync("slot", { key: '49b28b37aad643116441612ef10f9edcad9df2c3', onSlotchange: this.handleSlotChange, name: "meta" })))))));
12978
+ } }, hAsync("div", { key: '6725d6db6af39a2f2ed4d887a598f262c6314562', class: { 'footer-socialmedia': true, 'd-none': !renderSocialmedia } }, hAsync("slot", { key: '3a2d1c69bc05245842447ac104615f681b02e3a9', onSlotchange: this.handleSlotChange, name: "socialmedia" })), hAsync("div", { key: '38f1a4b8ef975aafb7f4fd90512ea08dc18e3d4c', class: { 'footer-app': true, 'd-none': !renderApp } }, hAsync("slot", { key: 'fbcb201b8ee7b9ac419c7a01e995ce3be7e4acca', onSlotchange: this.handleSlotChange, name: "app" }))), hAsync("div", { key: '76b292642cd8587ffa95277bf43478c785aed594', class: { 'footer-businesssectors': true, 'd-none': !renderBusinesssectors } }, hAsync("slot", { key: '9fa3ead24b007de21d2669421f03ab2fd870d64e', onSlotchange: this.handleSlotChange, name: "businesssectors" })))), hAsync("div", { key: '0278475002d8a479936967c06335cc667519a902', class: { 'footer-base': true, 'd-none': !renderBase } }, hAsync("div", { key: '59d46393b2a04184a6adc445d4b0940f07ad56f8', class: "footer-container" }, hAsync("div", { key: '7bbaebdf46638ffa1946e7c5be6970c8a1e586bb', class: { 'footer-copyright': true, 'd-none': !renderCopyright } }, hAsync("slot", { key: 'c1601db6edc32929d84897330654dbec24bb8543', onSlotchange: this.handleSlotChange, name: "copyright" })), hAsync("div", { key: '1339ee3a91e8f18d757333b74053291080d95e2b', class: { 'footer-meta': true, 'd-none': !renderMeta } }, hAsync("slot", { key: 'aa98ffd65b0138b198e057dbd2c96368bf92c0b0', onSlotchange: this.handleSlotChange, name: "meta" })))))));
12853
12979
  }
12854
12980
  get host() { return getElement(this); }
12855
12981
  static get style() { return postFooterCss(); }
@@ -13181,10 +13307,10 @@ class PostHeader {
13181
13307
  }, style: { '--post-header-navigation-current-inset': `${this.burgerMenu?.scrollTop ?? 0}px` }, ref: el => (this.burgerMenu = el) }, this.hasLocalNav && !this.hasTitle && (hAsync("div", { class: "local-nav" }, hAsync("slot", { name: "local-nav" }))), hAsync("div", { class: "burger-menu-body" }, hAsync("slot", { name: "audience" }), hAsync("slot", { name: "main-nav" })), hAsync("div", { class: "burger-menu-footer" }, hAsync("slot", { name: "global-nav-secondary" }), hAsync("slot", { name: "language-menu" }))));
13182
13308
  }
13183
13309
  render() {
13184
- return (hAsync(Host, { key: 'cdd9dc28893d6b4707e70cc4c8fd0940903e9062', "data-version": version$1, "data-color-scheme": "light", "data-burger-menu": this.hasBurgerMenu, "data-menu-extended": this.burgerMenuExtended }, hAsync("header", { key: '528563b69ff8f0452775b386a98de59e934c802d' }, hAsync("div", { key: '1f0ab8f7288a63bdd8070bebc5651ffdc9ebfd42', class: "global-header" }, hAsync("div", { key: 'd25d70eddb6d4edeb3be26b313b57980761979bf', class: "section" }, hAsync("div", { key: 'fe284d8015bff65be10e2231147523640c4910d4', class: "logo" }, hAsync("slot", { key: '0c6854d79f4e9695e99961481337b327af8c142c', name: "post-logo" })), hAsync("div", { key: '6d0b33a967dc32760f3d3cf74fc794a1cb622327', class: "sliding-controls" }, (hAsync("div", { key: '6ae13d6b39c19d3953fc719b0fca5cfbfa1c57b7', class: "audience" }, hAsync("slot", { key: '49d3954b3c54d898ad473a0bf7d2566f2764638c', name: "audience" }))), hAsync("slot", { key: 'c19c56d0b5c56c278b33c16ded66473fb44bfa3d', name: "global-nav-primary" }), [
13310
+ return (hAsync(Host, { key: '4ae4873c57cd307d3a4073f3d712bcf975528a90', "data-version": version$1, "data-color-scheme": "light", "data-burger-menu": this.hasBurgerMenu, "data-menu-extended": this.burgerMenuExtended }, hAsync("header", { key: 'cbc743a8981f4bbc3d42807244d88edba88e6a6c' }, hAsync("div", { key: 'f39c122246336d0de803353d9abb9e573459073e', class: "global-header" }, hAsync("div", { key: 'a76628c6501851bbfd597e0106847da12dc0b705', class: "section" }, hAsync("div", { key: 'b703c54159955ae272378aab5172f0bcd1b638d1', class: "logo" }, hAsync("slot", { key: 'a55336f3bee22b2c9a2cb0426b5e04ba5c8f29c4', name: "post-logo" })), hAsync("div", { key: '9b6db729465dae5c503d461a115af296730b2ce6', class: "sliding-controls" }, (hAsync("div", { key: 'cf4124ae4aaf47c2445499ce08ebb15076ac4bf2', class: "audience" }, hAsync("slot", { key: '830003c8b3b50abeb9d82bdfde83212f20a4da3d', name: "audience" }))), hAsync("slot", { key: '458afb2da52853fbc9bc066fc487fcf77df0d2a0', name: "global-nav-primary" }), [
13185
13311
  hAsync("slot", { key: "global-nav-secondary", name: "global-nav-secondary" }),
13186
13312
  hAsync("slot", { key: "language-menu", name: "language-menu" }),
13187
- ], hAsync("slot", { key: 'a7c75b4628234c282ea9556b7965a4e469783913', name: "post-login" }), this.hasMainNav && (hAsync("post-togglebutton", { key: 'e120687caa66facfb9721b6b6a8bc8691966a429', class: "burger-button", ref: el => (this.burgerMenuButton = el), onClick: () => this.toggleBurgerMenu() }, hAsync("span", { key: '43fd450ae79386d2c9bf29eb546cc66c399564e4' }, this.textMenu), hAsync("post-icon", { key: '863c5284f9f8b38e8e72390ead96eb7cccda9dd5', "aria-hidden": "true", name: "burger", "data-showwhen": "untoggled" }), hAsync("post-icon", { key: 'f4ed6301b1836c51b0dbf9ee51040bb62dd06beb', "aria-hidden": "true", name: "closex", "data-showwhen": "toggled" })))))), hAsync("div", { key: 'e5c314eae3e25b9bfb23fcbe95684ea7bc99be41', ref: el => (this.localHeader = el), class: { 'local-header': true, 'megadropdown-open': this.megadropdownOpen } }, hAsync("div", { key: '60dd8029f12ec03493b5ce81bc3e3b8338cd80e6', class: "section" }, hAsync("slot", { key: '8bbaa11f39bdf2ceb513fe698913c0350ca78776', name: "side-nav" }), hAsync("slot", { key: '0c1d5da1e42a1d96005c66de9c675c91dc2c8518', name: "title" }), this.hasTitle && hAsync("slot", { key: '8a2bb6822ba8033545e76b8f9a96f9bc7f498c9c', name: "local-nav" }), hAsync("slot", { key: '9c8df8ae91ad85ab58f9ee0bfef6a661fee59814', name: "main-nav" }), !this.hasTitle && hAsync("slot", { key: '85197bf72379b567c782bb54dbf77e6c17060895', name: "local-nav" }))), this.hasBurgerMenu && this.renderBurgerMenu())));
13313
+ ], hAsync("slot", { key: 'ffab20101950b7472c97ff0675f36903a6a66ebd', name: "post-login" }), this.hasMainNav && (hAsync("post-togglebutton", { key: 'd1cb44efb5ae024bc225487be4e592a406acf138', class: "burger-button", ref: el => (this.burgerMenuButton = el), onClick: () => this.toggleBurgerMenu() }, hAsync("span", { key: 'c33d2bb5c415f58829ad10026b9811684eac3d35' }, this.textMenu), hAsync("post-icon", { key: '7acb3d93aec23ef1c1efd9c9d52832395e66abf0', "aria-hidden": "true", name: "burger", "data-showwhen": "untoggled" }), hAsync("post-icon", { key: '7b6fb17d50df4474ddd282d7e202a43c324c3b87', "aria-hidden": "true", name: "closex", "data-showwhen": "toggled" })))))), hAsync("div", { key: 'c7e6d91a0cd4a286b7186d0f41abdf9dc1e9ffd4', ref: el => (this.localHeader = el), class: { 'local-header': true, 'megadropdown-open': this.megadropdownOpen } }, hAsync("div", { key: '670d00fb0a79ecc1f2bb45645887db13c7ea500f', class: "section" }, hAsync("slot", { key: '5d3b0c9b97be561875fc908b2b7bf4d558513318', name: "side-nav" }), hAsync("slot", { key: '39348fb8869f5623da026ed08ce69f727d9de7e6', name: "title" }), this.hasTitle && hAsync("slot", { key: '883097731548de45adec9cbbf7df1c80a37b76b5', name: "local-nav" }), hAsync("slot", { key: 'fbc77dee6ed73d8a13da75d3d695af80ce32c3af', name: "main-nav" }), !this.hasTitle && hAsync("slot", { key: '94a989295ae04cd8259ba22e583d41bcb4701881', name: "local-nav" }))), this.hasBurgerMenu && this.renderBurgerMenu())));
13188
13314
  }
13189
13315
  get host() { return getElement(this); }
13190
13316
  static get watchers() { return {
@@ -13316,7 +13442,7 @@ class PostIcon {
13316
13442
  }).filter(([_key, value]) => value !== null));
13317
13443
  }
13318
13444
  render() {
13319
- return (hAsync(Host, { key: 'ce81db69bf77d09a0a331bac48cdaede7ff3cb8e', "data-version": version$1 }, hAsync("span", { key: '211f999da845687289fd991421f4315a090a67ba', style: this.getStyles() })));
13445
+ return (hAsync(Host, { key: '917a78dbe4db46244348298b08a2176c9028048e', "data-version": version$1 }, hAsync("span", { key: '06f07755212e2b6a9a5957d7fd37751c62343be6', style: this.getStyles() })));
13320
13446
  }
13321
13447
  get host() { return getElement(this); }
13322
13448
  static get style() { return postIconCss(); }
@@ -13398,7 +13524,7 @@ class PostLanguageMenu {
13398
13524
  }
13399
13525
  componentDidLoad() {
13400
13526
  // Initially set variants and active language
13401
- // Handles cases where the language-menu is rendered after the language-options have been rendered
13527
+ // Handles cases where the language-menu is rendered after the language-menu-items have been rendered
13402
13528
  this.updateChildrenVariant();
13403
13529
  }
13404
13530
  /**
@@ -13636,7 +13762,7 @@ class PostLinkarea {
13636
13762
  }));
13637
13763
  }
13638
13764
  render() {
13639
- return (hAsync(Host, { key: 'ceaff2e12e49f0df50b12770d803f9708b0d7a1c', "data-version": version$1, onClick: (e) => this.dispatchClick(e) }, hAsync("slot", { key: 'f4230e0a8c74fdc143dd1e60843a74a1221396f7' })));
13765
+ return (hAsync(Host, { key: 'a1ab65608098bc992cd70f98a1c60cecd00f43c5', "data-version": version$1, onClick: (e) => this.dispatchClick(e) }, hAsync("slot", { key: 'f3042050a7075daa1e5cc35664bde6aa6bfcdac1' })));
13640
13766
  }
13641
13767
  get host() { return getElement(this); }
13642
13768
  static get style() { return postLinkareaCss(); }
@@ -13678,7 +13804,7 @@ class PostListbox {
13678
13804
  option.highlighted = false;
13679
13805
  });
13680
13806
  this.highlightedIndex = -1;
13681
- this.filter('');
13807
+ this.clearActive();
13682
13808
  };
13683
13809
  this.clearActive = () => {
13684
13810
  this.highlightedIndex = -1;
@@ -13782,7 +13908,7 @@ class PostListbox {
13782
13908
  this.updateSelection(event.detail);
13783
13909
  }
13784
13910
  render() {
13785
- return (hAsync(Host, { key: '55f1f7335a5eed38163aa58a43f091f130a9a2ff', "data-version": version$1, role: "listbox" }, hAsync("post-popovercontainer", { key: '303a6b38d8c5e5fae7b295dd0a58008c7b39a23f', placement: "bottom-start", ref: el => (this.popoverContainer = el) }, hAsync("slot", { key: '165627beb864c21081796db3d380eded51e780dc', name: "blank-slate" }), hAsync("slot", { key: '57d445590587148bdb5e4d5d7338fb4003020a2a' }))));
13911
+ return (hAsync(Host, { key: '793bdd535fb6b51bfd05012d180520e414519c0f', "data-version": version$1, role: "listbox" }, hAsync("post-popovercontainer", { key: 'd88195a37625fd29c47d4a8cc3ec34e0c92caa5f', placement: "bottom-start", ref: el => (this.popoverContainer = el) }, hAsync("slot", { key: '6882e0cdcf7b277b47a349244382eeb7f3f525e1', name: "blank-slate" }), hAsync("slot", { key: 'dd71f5d59621097df38cfbc3b69cdfc805a54272' }))));
13786
13912
  }
13787
13913
  get host() { return getElement(this); }
13788
13914
  static get style() { return postListboxCss(); }
@@ -13819,9 +13945,9 @@ class PostListboxOption {
13819
13945
  this.highlighted = false;
13820
13946
  }
13821
13947
  render() {
13822
- return (hAsync(Host, { key: '201be2928d48dfa1f3d1183e7453042c0296de19', "data-version": version$1, role: "option", "aria-selected": `${this.selected}`, "data-active": this.highlighted ? 'true' : null,
13948
+ return (hAsync(Host, { key: 'c2e1c5052d742c62e82eaac30a01d525048b3a2e', "data-version": version$1, role: "option", "aria-selected": `${this.selected}`, "data-active": this.highlighted ? 'true' : null,
13823
13949
  /* Prevent focus change from triggering onblur event in post-autocomplete */
13824
- onPointerDown: (e) => e.preventDefault(), onClick: () => this.postOptionSelected.emit(this.value), id: `post-listbox-option-${this.optionId}` }, hAsync("span", { key: 'cbba5a8fe218d6a4b99c70bc38077266361d2840', class: "option-content" }, this.value, hAsync("span", { key: '721e1ee9848f73b1020e5847493c2232d2ae0754', class: "option-description" }, hAsync("slot", { key: '1e54aab82416250673ca448af8de308b0c2f8ade' }))), this.selected && hAsync("post-icon", { key: '3badd4a9cea72cb41aaf160cfa2a09dd343681b0', "aria-hidden": "true", name: "checkmark" })));
13950
+ onPointerDown: (e) => e.preventDefault(), onClick: () => this.postOptionSelected.emit(this.value), id: `post-listbox-option-${this.optionId}` }, hAsync("span", { key: '2b0cdab57c328df649c1353c41e2c4cfe57378d0', class: "option-content" }, this.value, hAsync("span", { key: 'e5807160223e87095dc3c0c076ec84317050cf18', class: "option-description" }, hAsync("slot", { key: '45f0020b9eebe13b84880a842c095daa51cf0feb' }))), this.selected && hAsync("post-icon", { key: '80a23567a10075cbc8269f4769dd7d8aba7b2961', "aria-hidden": "true", name: "checkmark" })));
13825
13951
  }
13826
13952
  static get style() { return postListboxOptionCss(); }
13827
13953
  static get cmpMeta() { return {
@@ -13868,7 +13994,7 @@ class PostLogo {
13868
13994
  render() {
13869
13995
  const logoLink = this.url && (typeof this.url === 'string' ? this.url : this.url.href);
13870
13996
  const LogoTag = logoLink ? 'a' : 'span';
13871
- return (hAsync(Host, { key: 'b9d1a0fcdbbb7789863bd89d0cb1154f432d7749', "data-version": version$1 }, hAsync(LogoTag, { key: 'e9e5f76950b4e95a9dc8d8f961c75f635007b61f', class: `logo ${logoLink ? 'logo-link' : ''}`, ...(logoLink ? { href: logoLink } : {}) }, hAsync("span", { key: '7f9647d7fc00d1e79e544cbdd11fce5313b2bc83', class: "description" }, hAsync("slot", { key: '8eb8bb0385b14a98aadf1cd956d74972179bee6b', onSlotchange: () => this.checkDescription() })), hAsync("svg", { key: '1bc78071d7ee521a249452af9f8b34108297205c', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 72 72", "aria-hidden": "true" }, hAsync("g", { key: '9d10890ce19c40c38a976dbbbcb9e3939611f765', id: "Logo" }, hAsync("rect", { key: 'c0f9312024721329e2427a623c78658d094d039c', fill: "#ffcc00", x: "0", y: "0", width: "72", height: "72" }), hAsync("polygon", { key: '36f41cc32b0a1d92ba4c1b8cb56e9c6f2b454a4f', fill: "#ff0000", points: "34,32.3 34,19 19.7,19 19.7,29.1 10,29.1 10,42.9 19.7,42.9 19.7,53 34,53 34,39.7 30.6,39.7 30.6,49.8 23.1,49.8 23.1,39.7 13.4,39.7 13.4,32.3 23.1,32.3 23.1,22.2 30.6,22.2 30.6,32.3" }), hAsync("path", { key: 'e32537010333ac42f7614203062b424c4feb819f', d: "M53.56234,31.10526c0,2.41272-1.99154,4.29475-4.51723,4.29475H45.2v-8.3h3.84511C51.66802,27.1,53.56234,28.78889,53.56234,31.10526z M50.69666,19H36v34h9.2V42.9h5.49666c6.75131,0,11.9971-5.15137,11.9971-11.8057C62.69376,24.39136,57.35099,19,50.69666,19z" }))))));
13997
+ return (hAsync(Host, { key: 'dd8ddb0dcbed8062ee5adecf2a26ad98b42c94b1', "data-version": version$1 }, hAsync(LogoTag, { key: 'f4d8ad34cdd455c3e2096ce26db7bc775d7e05c3', class: `logo ${logoLink ? 'logo-link' : ''}`, ...(logoLink ? { href: logoLink } : {}) }, hAsync("span", { key: '87a58c2904f3dae5406b5652787ca1d99dbda0dc', class: "description" }, hAsync("slot", { key: 'ae69c86c4bfed42b25aafa948f13989c31833466', onSlotchange: () => this.checkDescription() })), hAsync("svg", { key: 'e51164151a1a53971414ea37af5085f99575fc36', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 72 72", "aria-hidden": "true" }, hAsync("g", { key: 'fa946d3ded62128ca4469b160103b464eb59329b', id: "Logo" }, hAsync("rect", { key: '18424ee0ca3256f9169d8dac6223df3d49cb09b9', fill: "#ffcc00", x: "0", y: "0", width: "72", height: "72" }), hAsync("polygon", { key: '96381aeedbc8536fd551ec8ac4161db842b3bfc9', 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: 'c1bbdb1bb687390d59ec2e6dcf83e80d1606582f', d: "M53.56234,31.10526c0,2.41272-1.99154,4.29475-4.51723,4.29475H45.2v-8.3h3.84511C51.66802,27.1,53.56234,28.78889,53.56234,31.10526z M50.69666,19H36v34h9.2V42.9h5.49666c6.75131,0,11.9971-5.15137,11.9971-11.8057C62.69376,24.39136,57.35099,19,50.69666,19z" }))))));
13872
13998
  }
13873
13999
  get host() { return getElement(this); }
13874
14000
  static get style() { return postLogoCss(); }
@@ -14018,7 +14144,7 @@ class PostMainnavigation {
14018
14144
  }, NAVBAR_DISABLE_DURATION);
14019
14145
  }
14020
14146
  render() {
14021
- return (hAsync(Host, { key: '374379b09ad5578002153a0a80afaf9308f1c964', version: version$1, class: this.canScroll ? 'scrollable' : '' }, hAsync("div", { key: 'b78537cec32cd23c7908482d73b7624e4662b1c8', "aria-hidden": "true", class: { 'scroll-control scroll-left': true, 'd-none': !this.canScrollLeft }, onMouseDown: e => this.handleScrollButtonClick(e, 'left') }, hAsync("post-icon", { key: 'd196c0f3b480f5ede486945c684afe4a06a96af0', "aria-hidden": "true", name: "chevronleft" })), hAsync("nav", { key: '5ee27a1b6cfc8aa59820514708485b334837c09d', ref: el => (this.navbar = el), "aria-label": this.textMain }, hAsync("slot", { key: 'e0a1719713e59899ec4fd1ff057ab5e3c13f7069' })), hAsync("div", { key: 'd1e2b456cadec20bb9c857fee23a3955ab20a2b2', "aria-hidden": "true", class: { 'scroll-control scroll-right': true, 'd-none': !this.canScrollRight }, onMouseDown: e => this.handleScrollButtonClick(e, 'right') }, hAsync("post-icon", { key: 'dec56cf1fb67c5afb597936d0f99e6389517819f', "aria-hidden": "true", name: "chevronright" }))));
14147
+ return (hAsync(Host, { key: '9fe43f86cab360591a15a033e0dc657096a69c00', version: version$1, class: this.canScroll ? 'scrollable' : '' }, hAsync("div", { key: 'f68ea70e332336e99c0b51b19e33647b40fcfbb4', "aria-hidden": "true", class: { 'scroll-control scroll-left': true, 'd-none': !this.canScrollLeft }, onMouseDown: e => this.handleScrollButtonClick(e, 'left') }, hAsync("post-icon", { key: 'fac01a93fd7cbfe2548a4d049d59f0bc6d01af63', "aria-hidden": "true", name: "chevronleft" })), hAsync("nav", { key: '7787a27e76350e9e86a97a58a20abe1286786ff7', ref: el => (this.navbar = el), "aria-label": this.textMain }, hAsync("slot", { key: '357a8f5fe1e7b6bea5ae67d87c979f785ea24b82' })), hAsync("div", { key: 'ce6091a9466fcd17aca39fcb5d6c204e1782c95d', "aria-hidden": "true", class: { 'scroll-control scroll-right': true, 'd-none': !this.canScrollRight }, onMouseDown: e => this.handleScrollButtonClick(e, 'right') }, hAsync("post-icon", { key: '92d35b38a453326701a0837e6187abf82fa37bf4', "aria-hidden": "true", name: "chevronright" }))));
14022
14148
  }
14023
14149
  get host() { return getElement(this); }
14024
14150
  static get style() { return postMainnavigationCss(); }
@@ -14334,7 +14460,7 @@ class PostMegadropdown {
14334
14460
  }
14335
14461
  render() {
14336
14462
  const containerStyle = this.isVisible ? {} : { display: 'none' };
14337
- return (hAsync(Host, { key: 'd181a65a25eafbbc645c717ee2f447caf1ab040a', version: version$1 }, hAsync("div", { key: '7bd6003c2e696e64a14b98a94e6c67d66d143192', ref: el => (this.animatedContainer = el), class: "megadropdown", style: containerStyle }, hAsync("div", { key: 'c79d10e279a37d94c2849ce4cac7bf4d260a0ca3', class: "section" }, this.device !== 'desktop' && this.megadropdownTitle && (hAsync("p", { key: '7e7769acb5391cb33958b1bd9739583e25def2cc', class: "megadropdown-title" }, this.megadropdownTitle)), hAsync("div", { key: 'fe7b63bd6b9daff336e599cd9ca43338a36fa595', class: "megadropdown-content" }, hAsync("slot", { key: 'cc19bcec12adee943391ec818bcfa8cd8290cb49' })), this.device === 'desktop' ? (hAsync("post-closebutton", { onClick: () => this.hide(true), class: "close-button", size: "small", placement: "manual" }, this.textClose)) : (hAsync("button", { onClick: () => this.hide(true), class: "back-button" }, hAsync("post-icon", { name: "arrowleft" }), this.textBack))))));
14463
+ return (hAsync(Host, { key: '2cc8228a628b2a0380acf4fcac8daa1ef1a7bf2f', version: version$1 }, hAsync("div", { key: '709fe50f23fd355bd97add916b451d5abf653780', ref: el => (this.animatedContainer = el), class: "megadropdown", style: containerStyle }, hAsync("div", { key: 'e2bac29e70e39800ee55c8454f78b6889b241121', class: "section" }, this.device !== 'desktop' && this.megadropdownTitle && (hAsync("p", { key: '6c28bc5d3e3b8c8dab385f13a4b9b8a7b7ba70b9', class: "megadropdown-title" }, this.megadropdownTitle)), hAsync("div", { key: 'bf71d0d7b4a84ae1238f27373d195403d8a1f812', class: "megadropdown-content" }, hAsync("slot", { key: '9812bec733ca678b1a3681d90859082e57fbd64a' })), this.device === 'desktop' ? (hAsync("post-closebutton", { onClick: () => this.hide(true), class: "close-button", size: "small", placement: "manual" }, this.textClose)) : (hAsync("button", { onClick: () => this.hide(true), class: "back-button" }, hAsync("post-icon", { name: "arrowleft" }), this.textBack))))));
14338
14464
  }
14339
14465
  get host() { return getElement(this); }
14340
14466
  static get style() { return postMegadropdownCss(); }
@@ -14439,7 +14565,7 @@ class PostMegadropdownTrigger {
14439
14565
  this.megadropdown.toggle();
14440
14566
  }
14441
14567
  render() {
14442
- return (hAsync(Host, { key: '7dea071ab1a606e7427631e45a1521aef0be85fe', "data-version": version$1 }, hAsync("button", { key: '4486549cfbad6f00de4a44c7af550dac428b9450', ref: el => (this.interactiveButton = el), type: "button", "aria-haspopup": "menu", "aria-expanded": this.isMegadropdownExpanded.toString(), onClick: this.onClick.bind(this), onKeyDown: this.onKeyDown.bind(this), class: { active: this.active } }, hAsync("span", { key: '566388f5cc5fd7eb4227de6fcd0205a3c3c0d54d' }, hAsync("span", { key: 'e874004dc5a3d8bf3a422c9b783c24dd6968cf74', innerHTML: this.slottedContent }), hAsync("span", { key: 'd89b1f6867f2b41934edb4a0865aebbdb21741a9', "aria-hidden": "true" }, hAsync("slot", { key: 'fed72c4e9ad605db0d65c1c32e91976ae3147a4b' }))), hAsync("post-icon", { key: '882e65fd30695db2b8a74be8258e69eed90b8f78', name: "chevrondown" }))));
14568
+ return (hAsync(Host, { key: 'd5242fd9126f3486f731ed6f369f3a6c38a5d1e9', "data-version": version$1 }, hAsync("button", { key: '6af086a50a9c788b35ba542531950b69a5e249da', 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: 'dacf0bd6dc576fa7c70353c98eacb3d81ddf83e5' }, hAsync("span", { key: '0c7b950ea9bfcae62b367900d78f155edc49de72', innerHTML: this.slottedContent }), hAsync("span", { key: '999325546eb3196f6e704ebeb18f436ff3d53756', "aria-hidden": "true" }, hAsync("slot", { key: '08fa107b944a87edf156ea7d5e12692eba64952d' }))), hAsync("post-icon", { key: 'eb32199b1ff6951b6025c1e4919674f5419f7d49', name: "chevrondown" }))));
14443
14569
  }
14444
14570
  get host() { return getElement(this); }
14445
14571
  static get style() { return postMegadropdownTriggerCss(); }
@@ -14587,17 +14713,32 @@ class PostMenu {
14587
14713
  this.toggleMenu.emit(this.isVisible);
14588
14714
  if (this.isVisible) {
14589
14715
  this.lastFocusedElement = this.root?.activeElement;
14590
- requestAnimationFrame(() => {
14591
- const menuItems = this.getSlottedItems();
14592
- if (menuItems.length > 0) {
14593
- menuItems[0].focus();
14594
- }
14595
- });
14716
+ // Only focus the first item if the trigger was keyboard-focus-visible
14717
+ // that's the browser's own signal for a keyboard-driven interaction.
14718
+ if (this.wasFocusVisible(this.lastFocusedElement)) {
14719
+ requestAnimationFrame(() => {
14720
+ const menuItems = this.getSlottedItems();
14721
+ if (menuItems.length > 0) {
14722
+ menuItems[0].focus();
14723
+ }
14724
+ });
14725
+ }
14596
14726
  }
14597
14727
  else if (this.lastFocusedElement) {
14598
14728
  this.lastFocusedElement.focus();
14599
14729
  }
14600
14730
  }
14731
+ wasFocusVisible(element) {
14732
+ if (!element)
14733
+ return false;
14734
+ try {
14735
+ return element.matches(':focus-visible');
14736
+ }
14737
+ catch {
14738
+ // Not supported, fall back to always focusing
14739
+ return true;
14740
+ }
14741
+ }
14601
14742
  controlKeyDownHandler(e) {
14602
14743
  const menuItems = this.getSlottedItems();
14603
14744
  if (menuItems.length === 0) {
@@ -14649,7 +14790,7 @@ class PostMenu {
14649
14790
  ]));
14650
14791
  }
14651
14792
  render() {
14652
- return (hAsync(Host, { key: 'ec2d0c28803ab242f28e942c52d03b38d40f3704', "data-version": version$1 }, hAsync("post-popovercontainer", { key: 'c2bbf5c95e200aecbdc55b94676ab1b1b0a32d13', onPostShow: this.handlePostShown.bind(this), onPostBeforeToggle: this.handlePostBeforeToggle.bind(this), placement: this.placement, ref: e => (this.popoverRef = e) }, hAsync("div", { key: '80e56e976e944955f72b504b33ee3a16117f4551', part: "post-menu" }, hAsync("slot", { key: 'cab13b8104f0be049e31fe5b3eca3af85bec0869', name: "header" }), hAsync("slot", { key: 'acbbd8565bb90c91dad4713fbc4e8c50d10390e8' })))));
14793
+ return (hAsync(Host, { key: 'cc6ede4cdacb722006475de88385b041d7e42dcb', "data-version": version$1 }, hAsync("post-popovercontainer", { key: '3931f604aad477441112fd0b5a4800c8f034abbb', onPostShow: this.handlePostShown.bind(this), onPostBeforeToggle: this.handlePostBeforeToggle.bind(this), placement: this.placement, ref: e => (this.popoverRef = e) }, hAsync("div", { key: '1b0adb12bb1369d14a6bcfac3c956090eb66572a', part: "post-menu" }, hAsync("slot", { key: '9c2518e7e9e6ccaa64d486a90b5fc7eec15c24b8', name: "header" }), hAsync("slot", { key: 'd28df1e411010aabe083255cd5e5ece4bd62424d' })))));
14653
14794
  }
14654
14795
  get host() { return getElement(this); }
14655
14796
  static get style() { return postMenuCss(); }
@@ -14771,7 +14912,7 @@ class PostMenuTrigger {
14771
14912
  return null;
14772
14913
  }
14773
14914
  render() {
14774
- return (hAsync(Host, { key: '2e0560835a4202f9a84990a60305bf7dc8adbc98', "data-version": version$1 }, hAsync("slot", { key: 'd175e8bc5ddb253476f9795d7b0b2df2797c46aa' })));
14915
+ return (hAsync(Host, { key: 'fcdfd58ba24cd5269461477ac3d00a53ccf2ea1b', "data-version": version$1 }, hAsync("slot", { key: 'b3a6b137bf61accd32eb1bec5af5e39e68ec6613' })));
14775
14916
  }
14776
14917
  get host() { return getElement(this); }
14777
14918
  static get style() { return postMenuTriggerCss(); }
@@ -14807,7 +14948,7 @@ class PostNumberInput {
14807
14948
  this.isIncrementDisabled = false;
14808
14949
  this.isDecrementDisabled = false;
14809
14950
  this.small = false;
14810
- this.setupInput = debounce$1(50, () => {
14951
+ this.setupInput = debounce(50, () => {
14811
14952
  this.input = this.input ?? getSlottedElement(this.host, 'input[type="number"]');
14812
14953
  if (!this.input)
14813
14954
  return;
@@ -14881,10 +15022,10 @@ class PostNumberInput {
14881
15022
  }
14882
15023
  render() {
14883
15024
  const areButtonsShown = !!this.input;
14884
- return (hAsync(Host, { key: '770a0b0fe9b018afcb81f4477f45e6ea8ce27ad7', "data-version": version$1, class: {
15025
+ return (hAsync(Host, { key: 'aeb366d1738707172f9ae3e154f9a93a10caa016', "data-version": version$1, class: {
14885
15026
  'number-input-sm': this.small,
14886
15027
  'disabled': this.isDisabled,
14887
- } }, areButtonsShown && (hAsync("div", { key: '8e599b55dc4362674719df75a573bf9ce34e79ff', "aria-hidden": "true", onPointerDown: () => this.step('down'), class: { 'step-button': true, 'disabled': this.isDecrementDisabled } }, hAsync("post-icon", { key: 'aa55be92c51df3cc1b7f006a4400090eb345747c', name: "minus" }))), hAsync("div", { key: '030ea2a621529e61757edfc5a79fa353327a8102', class: "input-container" }, hAsync("slot", { key: '800d325da194bd0f32eab2a2bba21211aaf1829b', onSlotchange: () => this.setupInput() })), areButtonsShown && (hAsync("div", { key: '901dc835f21fbb51146d93f7f34775c600163993', "aria-hidden": "true", onPointerDown: () => this.step('up'), class: { 'step-button': true, 'disabled': this.isIncrementDisabled } }, hAsync("post-icon", { key: '1a7b93951f1f9978a1d321b33b2083774dcf86b0', name: "plus" })))));
15028
+ } }, areButtonsShown && (hAsync("div", { key: '9037651a4e2f65ca62f1f4ebe0575a25383c77c7', "aria-hidden": "true", onPointerDown: () => this.step('down'), class: { 'step-button': true, 'disabled': this.isDecrementDisabled } }, hAsync("post-icon", { key: '43ac843cc7df50981dc92eeb5405b415d530a415', name: "minus" }))), hAsync("div", { key: 'f49907424a6cc6802ee9066ef42dcc2c43b1bbfd', class: "input-container" }, hAsync("slot", { key: 'f649b968dac37fbb5f5a643853aedbc90653ed6c', onSlotchange: () => this.setupInput() })), areButtonsShown && (hAsync("div", { key: '66d06189252e360f43c3e63fbdce300be9606069', "aria-hidden": "true", onPointerDown: () => this.step('up'), class: { 'step-button': true, 'disabled': this.isIncrementDisabled } }, hAsync("post-icon", { key: '44bcff6c698f87eac09d1aeaa8b6af6436cac572', name: "plus" })))));
14888
15029
  }
14889
15030
  get host() { return getElement(this); }
14890
15031
  static get style() { return postNumberInputCss(); }
@@ -14938,7 +15079,7 @@ class PostPagination {
14938
15079
  this.page = 1;
14939
15080
  this.lastWindowWidth = window.innerWidth;
14940
15081
  this.loaded = false;
14941
- this.debouncedResize = debounce(this.handleResizeInternal.bind(this), RESIZE_DEBOUNCE_MS);
15082
+ this.debouncedResize = debounce$1(this.handleResizeInternal.bind(this), RESIZE_DEBOUNCE_MS);
14942
15083
  this.measurementTimeoutId = null;
14943
15084
  }
14944
15085
  handlePropsChange() {
@@ -15548,7 +15689,7 @@ __decorate$d([
15548
15689
  Type('string')
15549
15690
  ], PostPagination.prototype, "textLast", void 0);
15550
15691
 
15551
- const postPopoverCss = () => `*{box-sizing:border-box}:host{display:contents}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.popover-container{color:var(--post-current-fg);background-color:var(--post-current-bg);display:flex;align-items:self-start;padding:8px;min-width:160px;max-width:var(--post-popover-max-width, 280px)}.popover-content{padding:8px;flex-grow:1}`;
15692
+ const postPopoverCss = () => `*{box-sizing:border-box}:host{display:contents}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.popover-container{color:var(--post-current-fg);background-color:var(--post-current-bg);display:flex;align-items:self-start;padding:8px;min-width:160px;max-width:var(--post-popover-max-width, 280px)}.popover-content{padding:8px;flex-grow:1}post-closebutton{color-scheme:light}`;
15552
15693
 
15553
15694
  var __decorate$c = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
15554
15695
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -15632,10 +15773,10 @@ class PostPopover {
15632
15773
  }
15633
15774
  }
15634
15775
  render() {
15635
- return (hAsync(Host, { key: 'a389be5fa8b44b8f606041313a5c68897e12fbe9', "data-version": version$1 }, hAsync("post-popovercontainer", { key: 'eedea7fb9aec40bb76d43a17be36ba72c9db763f', arrow: this.arrow, placement: this.placement, edgeGap: this.edgeGap, ref: e => {
15776
+ return (hAsync(Host, { key: '61399669708d5983911748d652ef1a0d7e0562a0', "data-version": version$1 }, hAsync("post-popovercontainer", { key: '561bbe71d735acec27421160623169f7f7f8134e', arrow: this.arrow, placement: this.placement, edgeGap: this.edgeGap, autoHide: true, ref: e => {
15636
15777
  if (e)
15637
15778
  this.popoverRef = e;
15638
- } }, hAsync("div", { key: '699d1b9923ea5bdf2fc822cd45f32a087099557a', class: "popover-container" }, hAsync("div", { key: 'f80a86811d07a9a2478e28e7c8df476000850f08', class: "popover-content" }, hAsync("slot", { key: '06fc1c9b71dbdb59c12889d378c59a183a8e9f64' })), hAsync("post-closebutton", { key: 'a8ff2d07eef92aa6e88f4ff7c9f42b59395c6760', onClick: () => this.hide() }, this.textClose)))));
15779
+ } }, hAsync("div", { key: 'f7e8d0ae5556cfd429c43b12c3d3d0b19e3cdd46', class: "popover-container" }, hAsync("div", { key: '74c9076d67696ff1d1a295560140864b26f59f60', class: "popover-content" }, hAsync("slot", { key: '5c63af09f545ed7fe3fcfd810fccd7db9da05e8a' })), hAsync("post-closebutton", { key: 'f8fd8c7ba548b912c3fe84994810add92fb470d9' }, this.textClose)))));
15639
15780
  }
15640
15781
  get host() { return getElement(this); }
15641
15782
  static get style() { return postPopoverCss(); }
@@ -20747,7 +20888,7 @@ class PostPopoverTrigger {
20747
20888
  focusTrigger() {
20748
20889
  // Restores focus to the trigger
20749
20890
  if (!this.popoverOpen && this.trigger) {
20750
- this.trigger.focus();
20891
+ this.trigger.focus({ preventScroll: true });
20751
20892
  }
20752
20893
  }
20753
20894
  constructor(hostRef) {
@@ -20783,7 +20924,7 @@ class PostPopoverTrigger {
20783
20924
  this.popover?.removeEventListener('postToggle', this.boundHandlePostToggle);
20784
20925
  }
20785
20926
  render() {
20786
- return (hAsync(Host, { key: '8100af4eaff1f8b790d7019414b078018ffc5ed1', "data-version": version$1 }, hAsync("slot", { key: '91e7f8f31bdc84290618a5c8b29e38cca77de177', onSlotchange: () => this.setupTrigger() })));
20927
+ return (hAsync(Host, { key: 'a8a3be80d30404564add3fcbef1a24b4f59d4614', "data-version": version$1 }, hAsync("slot", { key: '1fada9d0241aa9e8ab6392e63feb61dc2c686dd5', onSlotchange: () => this.setupTrigger() })));
20787
20928
  }
20788
20929
  get host() { return getElement(this); }
20789
20930
  static get watchers() { return {
@@ -20814,6 +20955,7 @@ __decorate$b([
20814
20955
  * @see https://floating-ui.com/docs/virtual-elements
20815
20956
  */
20816
20957
 
20958
+ const sides = ['top', 'right', 'bottom', 'left'];
20817
20959
  const min = Math.min;
20818
20960
  const max = Math.max;
20819
20961
  const round = Math.round;
@@ -20906,12 +21048,12 @@ function getOppositePlacement(placement) {
20906
21048
  return oppositeSideMap[side] + placement.slice(side.length);
20907
21049
  }
20908
21050
  function expandPaddingObject(padding) {
21051
+ var _padding$top, _padding$right, _padding$bottom, _padding$left;
20909
21052
  return {
20910
- top: 0,
20911
- right: 0,
20912
- bottom: 0,
20913
- left: 0,
20914
- ...padding
21053
+ top: (_padding$top = padding.top) != null ? _padding$top : 0,
21054
+ right: (_padding$right = padding.right) != null ? _padding$right : 0,
21055
+ bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0,
21056
+ left: (_padding$left = padding.left) != null ? _padding$left : 0
20915
21057
  };
20916
21058
  }
20917
21059
  function getPaddingObject(padding) {
@@ -20986,13 +21128,9 @@ function computeCoordsFromPlacement(_ref, placement, rtl) {
20986
21128
  y: reference.y
20987
21129
  };
20988
21130
  }
20989
- switch (getAlignment(placement)) {
20990
- case 'start':
20991
- coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
20992
- break;
20993
- case 'end':
20994
- coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
20995
- break;
21131
+ const alignment = getAlignment(placement);
21132
+ if (alignment) {
21133
+ coords[alignmentAxis] += commonAlign * (alignment === 'end' ? 1 : -1) * (rtl && isVertical ? -1 : 1);
20996
21134
  }
20997
21135
  return coords;
20998
21136
  }
@@ -21041,10 +21179,7 @@ async function detectOverflow(state, options) {
21041
21179
  height: rects.floating.height
21042
21180
  } : rects.reference;
21043
21181
  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
21044
- const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
21045
- x: 1,
21046
- y: 1
21047
- } : {
21182
+ const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) && (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
21048
21183
  x: 1,
21049
21184
  y: 1
21050
21185
  };
@@ -21217,17 +21352,16 @@ const arrow$1 = options => ({
21217
21352
 
21218
21353
  // Make sure the arrow doesn't overflow the floating element if the center
21219
21354
  // point is outside the floating element's bounds.
21220
- const min$1 = minPadding;
21221
21355
  const max = clientSize - arrowDimensions[length] - maxPadding;
21222
21356
  const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
21223
- const offset = clamp(min$1, center, max);
21357
+ const offset = clamp(minPadding, center, max);
21224
21358
 
21225
21359
  // If the reference is small enough that the arrow's padding causes it to
21226
21360
  // to point to nothing for an aligned placement, adjust the offset of the
21227
21361
  // floating element itself. To ensure `shift()` continues to take action,
21228
21362
  // a single reset is performed when this is true.
21229
- const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
21230
- const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;
21363
+ const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < minPadding ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
21364
+ const alignmentOffset = shouldAddOffset ? center < minPadding ? center - minPadding : center - max : 0;
21231
21365
  return {
21232
21366
  [axis]: coords[axis] + alignmentOffset,
21233
21367
  data: {
@@ -21374,6 +21508,76 @@ const flip$1 = function (options) {
21374
21508
  };
21375
21509
  };
21376
21510
 
21511
+ function getSideOffsets(overflow, rect) {
21512
+ return {
21513
+ top: overflow.top - rect.height,
21514
+ right: overflow.right - rect.width,
21515
+ bottom: overflow.bottom - rect.height,
21516
+ left: overflow.left - rect.width
21517
+ };
21518
+ }
21519
+ function isAnySideFullyClipped(overflow) {
21520
+ return sides.some(side => overflow[side] >= 0);
21521
+ }
21522
+ /**
21523
+ * Provides data to hide the floating element in applicable situations, such as
21524
+ * when it is not in the same clipping context as the reference element.
21525
+ * @see https://floating-ui.com/docs/hide
21526
+ */
21527
+ const hide$1 = function (options) {
21528
+ if (options === void 0) {
21529
+ options = {};
21530
+ }
21531
+ return {
21532
+ name: 'hide',
21533
+ options,
21534
+ async fn(state) {
21535
+ const {
21536
+ rects,
21537
+ platform
21538
+ } = state;
21539
+ const {
21540
+ strategy = 'referenceHidden',
21541
+ ...detectOverflowOptions
21542
+ } = evaluate(options, state);
21543
+ switch (strategy) {
21544
+ case 'referenceHidden':
21545
+ {
21546
+ const overflow = await platform.detectOverflow(state, {
21547
+ ...detectOverflowOptions,
21548
+ elementContext: 'reference'
21549
+ });
21550
+ const offsets = getSideOffsets(overflow, rects.reference);
21551
+ return {
21552
+ data: {
21553
+ referenceHiddenOffsets: offsets,
21554
+ referenceHidden: isAnySideFullyClipped(offsets)
21555
+ }
21556
+ };
21557
+ }
21558
+ case 'escaped':
21559
+ {
21560
+ const overflow = await platform.detectOverflow(state, {
21561
+ ...detectOverflowOptions,
21562
+ altBoundary: true
21563
+ });
21564
+ const offsets = getSideOffsets(overflow, rects.floating);
21565
+ return {
21566
+ data: {
21567
+ escapedOffsets: offsets,
21568
+ escaped: isAnySideFullyClipped(offsets)
21569
+ }
21570
+ };
21571
+ }
21572
+ default:
21573
+ {
21574
+ return {};
21575
+ }
21576
+ }
21577
+ }
21578
+ };
21579
+ };
21580
+
21377
21581
  function getBoundingRect(rects) {
21378
21582
  const minX = min(...rects.map(rect => rect.left));
21379
21583
  const minY = min(...rects.map(rect => rect.top));
@@ -21430,12 +21634,19 @@ const inline$1 = function (options) {
21430
21634
  y
21431
21635
  } = evaluate(options, state);
21432
21636
  const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);
21637
+
21638
+ // No rects (e.g. a hidden or detached reference, or a collapsed range) —
21639
+ // keep the existing reference rect rather than resetting to an invalid
21640
+ // one with non-finite values.
21641
+ if (!nativeClientRects.length) {
21642
+ return {};
21643
+ }
21433
21644
  const clientRects = getRectsByLine(nativeClientRects);
21434
21645
  const fallback = rectToClientRect(getBoundingRect(nativeClientRects));
21435
21646
  const paddingObject = getPaddingObject(padding);
21436
21647
  function getBoundingClientRect() {
21437
21648
  // There are two rects and they are disjoined.
21438
- if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {
21649
+ if (clientRects.length === 2 && (clientRects[0].left > clientRects[1].right || clientRects[1].left > clientRects[0].right) && x != null && y != null) {
21439
21650
  // Find the first rect in which the point is fully inside.
21440
21651
  return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;
21441
21652
  }
@@ -21450,18 +21661,12 @@ const inline$1 = function (options) {
21450
21661
  const bottom = lastRect.bottom;
21451
21662
  const left = isTop ? firstRect.left : lastRect.left;
21452
21663
  const right = isTop ? firstRect.right : lastRect.right;
21453
- const width = right - left;
21454
- const height = bottom - top;
21455
- return {
21456
- top,
21457
- bottom,
21458
- left,
21459
- right,
21460
- width,
21461
- height,
21664
+ return rectToClientRect({
21462
21665
  x: left,
21463
- y: top
21464
- };
21666
+ y: top,
21667
+ width: right - left,
21668
+ height: bottom - top
21669
+ });
21465
21670
  }
21466
21671
  const isLeftSide = getSide(placement) === 'left';
21467
21672
  const maxRight = max(...clientRects.map(rect => rect.right));
@@ -21469,20 +21674,12 @@ const inline$1 = function (options) {
21469
21674
  const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);
21470
21675
  const top = measureRects[0].top;
21471
21676
  const bottom = measureRects[measureRects.length - 1].bottom;
21472
- const left = minLeft;
21473
- const right = maxRight;
21474
- const width = right - left;
21475
- const height = bottom - top;
21476
- return {
21477
- top,
21478
- bottom,
21479
- left,
21480
- right,
21481
- width,
21482
- height,
21483
- x: left,
21484
- y: top
21485
- };
21677
+ return rectToClientRect({
21678
+ x: minLeft,
21679
+ y: top,
21680
+ width: maxRight - minLeft,
21681
+ height: bottom - top
21682
+ });
21486
21683
  }
21487
21684
  return fallback;
21488
21685
  }
@@ -21632,23 +21829,16 @@ const shift$1 = function (options) {
21632
21829
  y
21633
21830
  };
21634
21831
  const overflow = await platform.detectOverflow(state, detectOverflowOptions);
21635
- const crossAxis = getSideAxis(getSide(placement));
21832
+ const crossAxis = getSideAxis(placement);
21636
21833
  const mainAxis = getOppositeAxis(crossAxis);
21637
21834
  let mainAxisCoord = coords[mainAxis];
21638
21835
  let crossAxisCoord = coords[crossAxis];
21836
+ const clampCoord = (axis, coord) => clamp(coord + overflow[axis === 'y' ? 'top' : 'left'], coord, coord - overflow[axis === 'y' ? 'bottom' : 'right']);
21639
21837
  if (checkMainAxis) {
21640
- const minSide = mainAxis === 'y' ? 'top' : 'left';
21641
- const maxSide = mainAxis === 'y' ? 'bottom' : 'right';
21642
- const min = mainAxisCoord + overflow[minSide];
21643
- const max = mainAxisCoord - overflow[maxSide];
21644
- mainAxisCoord = clamp(min, mainAxisCoord, max);
21838
+ mainAxisCoord = clampCoord(mainAxis, mainAxisCoord);
21645
21839
  }
21646
21840
  if (checkCrossAxis) {
21647
- const minSide = crossAxis === 'y' ? 'top' : 'left';
21648
- const maxSide = crossAxis === 'y' ? 'bottom' : 'right';
21649
- const min = crossAxisCoord + overflow[minSide];
21650
- const max = crossAxisCoord - overflow[maxSide];
21651
- crossAxisCoord = clamp(min, crossAxisCoord, max);
21841
+ crossAxisCoord = clampCoord(crossAxis, crossAxisCoord);
21652
21842
  }
21653
21843
  const limitedCoords = limiter.fn({
21654
21844
  ...state,
@@ -21679,6 +21869,7 @@ const limitShift$1 = function (options) {
21679
21869
  return {
21680
21870
  options,
21681
21871
  fn(state) {
21872
+ var _rawOffset$mainAxis, _rawOffset$crossAxis;
21682
21873
  const {
21683
21874
  x,
21684
21875
  y,
@@ -21704,9 +21895,8 @@ const limitShift$1 = function (options) {
21704
21895
  mainAxis: rawOffset,
21705
21896
  crossAxis: 0
21706
21897
  } : {
21707
- mainAxis: 0,
21708
- crossAxis: 0,
21709
- ...rawOffset
21898
+ mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0,
21899
+ crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0
21710
21900
  };
21711
21901
  if (checkMainAxis) {
21712
21902
  const len = mainAxis === 'y' ? 'height' : 'width';
@@ -21738,6 +21928,12 @@ const limitShift$1 = function (options) {
21738
21928
  };
21739
21929
  };
21740
21930
 
21931
+ // Method syntax keeps callback parameters bivariant, but expressing the
21932
+ // explicit `| undefined` required by `exactOptionalPropertyTypes` needs
21933
+ // property syntax, which is contravariant under `strictFunctionTypes`.
21934
+ // Extracting the function from a method position restores that bivariance so
21935
+ // consumers can still assign callbacks with narrower parameter types.
21936
+
21741
21937
  /**
21742
21938
  * Provides data that allows you to change the size of the floating element —
21743
21939
  * for instance, prevent it from overflowing the clipping boundary or match the
@@ -21752,7 +21948,6 @@ const size$1 = function (options) {
21752
21948
  name: 'size',
21753
21949
  options,
21754
21950
  async fn(state) {
21755
- var _state$middlewareData, _state$middlewareData2;
21756
21951
  const {
21757
21952
  placement,
21758
21953
  rects,
@@ -21784,24 +21979,21 @@ const size$1 = function (options) {
21784
21979
  const maximumClippingWidth = width - overflow.left - overflow.right;
21785
21980
  const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);
21786
21981
  const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);
21787
- const noShift = !state.middlewareData.shift;
21982
+ const shiftData = state.middlewareData.shift;
21983
+ const noShift = !shiftData;
21788
21984
  let availableHeight = overflowAvailableHeight;
21789
21985
  let availableWidth = overflowAvailableWidth;
21790
- if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {
21986
+ if (shiftData != null && shiftData.enabled.x) {
21791
21987
  availableWidth = maximumClippingWidth;
21792
21988
  }
21793
- if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {
21989
+ if (shiftData != null && shiftData.enabled.y) {
21794
21990
  availableHeight = maximumClippingHeight;
21795
21991
  }
21796
21992
  if (noShift && !alignment) {
21797
- const xMin = max(overflow.left, 0);
21798
- const xMax = max(overflow.right, 0);
21799
- const yMin = max(overflow.top, 0);
21800
- const yMax = max(overflow.bottom, 0);
21801
21993
  if (isYAxis) {
21802
- availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));
21994
+ availableWidth = width - 2 * max(overflow.left, overflow.right);
21803
21995
  } else {
21804
- availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));
21996
+ availableHeight = height - 2 * max(overflow.top, overflow.bottom);
21805
21997
  }
21806
21998
  }
21807
21999
  await apply({
@@ -21957,7 +22149,7 @@ function getParentNode(node) {
21957
22149
  function getNearestOverflowAncestor(node) {
21958
22150
  const parentNode = getParentNode(node);
21959
22151
  if (isLastTraversableNode(parentNode)) {
21960
- return node.ownerDocument ? node.ownerDocument.body : node.body;
22152
+ return (node.ownerDocument || node).body;
21961
22153
  }
21962
22154
  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
21963
22155
  return parentNode;
@@ -22054,10 +22246,7 @@ function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {
22054
22246
  if (isFixed === void 0) {
22055
22247
  isFixed = false;
22056
22248
  }
22057
- if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {
22058
- return false;
22059
- }
22060
- return isFixed;
22249
+ return !!floatingOffsetParent && isFixed && floatingOffsetParent === getWindow(element);
22061
22250
  }
22062
22251
 
22063
22252
  function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {
@@ -22084,12 +22273,12 @@ function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetPar
22084
22273
  let y = (clientRect.top + visualOffsets.y) / scale.y;
22085
22274
  let width = clientRect.width / scale.x;
22086
22275
  let height = clientRect.height / scale.y;
22087
- if (domElement) {
22276
+ if (domElement && offsetParent) {
22088
22277
  const win = getWindow(domElement);
22089
- const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
22278
+ const offsetWin = isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
22090
22279
  let currentWin = win;
22091
22280
  let currentIFrame = getFrameElement(currentWin);
22092
- while (currentIFrame && offsetParent && offsetWin !== currentWin) {
22281
+ while (currentIFrame && offsetWin !== currentWin) {
22093
22282
  const iframeScale = getScale(currentIFrame);
22094
22283
  const iframeRect = currentIFrame.getBoundingClientRect();
22095
22284
  const css = getComputedStyle$1(currentIFrame);
@@ -22153,7 +22342,7 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
22153
22342
  let scale = createCoords(1);
22154
22343
  const offsets = createCoords(0);
22155
22344
  const isOffsetParentAnElement = isHTMLElement(offsetParent);
22156
- if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
22345
+ if (isOffsetParentAnElement || !isFixed) {
22157
22346
  if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
22158
22347
  scroll = getNodeScroll(offsetParent);
22159
22348
  }
@@ -22174,18 +22363,17 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
22174
22363
  }
22175
22364
 
22176
22365
  function getClientRects(element) {
22177
- return Array.from(element.getClientRects());
22366
+ return element.getClientRects ? Array.from(element.getClientRects()) : [];
22178
22367
  }
22179
22368
 
22180
22369
  // Gets the entire size of the scrollable document area, even extending outside
22181
22370
  // of the `<html>` and `<body>` rect bounds if horizontally scrollable.
22182
- function getDocumentRect(element) {
22183
- const html = getDocumentElement(element);
22184
- const scroll = getNodeScroll(element);
22185
- const body = element.ownerDocument.body;
22371
+ function getDocumentRect(html) {
22372
+ const scroll = getNodeScroll(html);
22373
+ const body = html.ownerDocument.body;
22186
22374
  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);
22187
22375
  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);
22188
- let x = -scroll.scrollLeft + getWindowScrollBarX(element);
22376
+ let x = -scroll.scrollLeft + getWindowScrollBarX(html);
22189
22377
  const y = -scroll.scrollTop;
22190
22378
  if (getComputedStyle$1(body).direction === 'rtl') {
22191
22379
  x += max(html.clientWidth, body.clientWidth) - width;
@@ -22202,7 +22390,11 @@ function getDocumentRect(element) {
22202
22390
  // calculation is affected by unusual styles.
22203
22391
  // Most scrollbars leave 15-18px of space.
22204
22392
  const SCROLLBAR_MAX = 25;
22205
- function getViewportRect(element, strategy) {
22393
+ function getViewportRect(element, strategy, rootBoundary) {
22394
+ if (rootBoundary === void 0) {
22395
+ rootBoundary = 'viewport';
22396
+ }
22397
+ const isLayoutViewport = rootBoundary === 'layoutViewport';
22206
22398
  const win = getWindow(element);
22207
22399
  const html = getDocumentElement(element);
22208
22400
  const visualViewport = win.visualViewport;
@@ -22211,31 +22403,42 @@ function getViewportRect(element, strategy) {
22211
22403
  let x = 0;
22212
22404
  let y = 0;
22213
22405
  if (visualViewport) {
22214
- width = visualViewport.width;
22215
- height = visualViewport.height;
22216
- const visualViewportBased = isWebKit();
22217
- if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {
22218
- x = visualViewport.offsetLeft;
22219
- y = visualViewport.offsetTop;
22406
+ // Client coordinates are relative to the layout viewport, except in
22407
+ // WebKit with an `absolute` strategy, where they are relative to the
22408
+ // visual viewport.
22409
+ const layoutRelativeClientCoords = !isWebKit() || strategy === 'fixed';
22410
+ if (isLayoutViewport) {
22411
+ if (!layoutRelativeClientCoords) {
22412
+ x = -visualViewport.offsetLeft;
22413
+ y = -visualViewport.offsetTop;
22414
+ }
22415
+ } else {
22416
+ width = visualViewport.width;
22417
+ height = visualViewport.height;
22418
+ if (layoutRelativeClientCoords) {
22419
+ x = visualViewport.offsetLeft;
22420
+ y = visualViewport.offsetTop;
22421
+ }
22220
22422
  }
22221
22423
  }
22222
22424
  const windowScrollbarX = getWindowScrollBarX(html);
22223
- // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the
22224
- // visual width of the <html> but this is not considered in the size
22225
- // of `html.clientWidth`.
22425
+ // `scrollbar-gutter: stable` on the <html> reserves gutter space that shrinks
22426
+ // the visual width but isn't reflected in `html.clientWidth`, so subtract it.
22427
+ // Only the inline-end (right) gutter can hold the scrollbar; `both-edges` also
22428
+ // reserves an empty inline-start gutter that clips nothing, so exclude just
22429
+ // the one scrollbar-side gutter — halve the measured (two-gutter) total. A
22430
+ // left-side scrollbar (`windowScrollbarX > 0`) is already handled by
22431
+ // `getHTMLOffset`/`visualViewport.width`; skip it here.
22226
22432
  if (windowScrollbarX <= 0) {
22227
22433
  const doc = html.ownerDocument;
22228
22434
  const body = doc.body;
22229
22435
  const bodyStyles = getComputedStyle(body);
22230
22436
  const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;
22231
- const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
22232
- if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {
22233
- width -= clippingStableScrollbarWidth;
22437
+ const reservedWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
22438
+ const gutter = getComputedStyle(html).scrollbarGutter === 'stable both-edges' ? reservedWidth / 2 : reservedWidth;
22439
+ if (gutter <= SCROLLBAR_MAX) {
22440
+ width -= gutter;
22234
22441
  }
22235
- } else if (windowScrollbarX <= SCROLLBAR_MAX) {
22236
- // If the <body> scrollbar is on the left, the width needs to be extended
22237
- // by the scrollbar amount so there isn't extra space on the right.
22238
- width += windowScrollbarX;
22239
22442
  }
22240
22443
  return {
22241
22444
  width,
@@ -22250,7 +22453,7 @@ function getInnerBoundingClientRect(element, strategy) {
22250
22453
  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');
22251
22454
  const top = clientRect.top + element.clientTop;
22252
22455
  const left = clientRect.left + element.clientLeft;
22253
- const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);
22456
+ const scale = getScale(element);
22254
22457
  const width = element.clientWidth * scale.x;
22255
22458
  const height = element.clientHeight * scale.y;
22256
22459
  const x = left * scale.x;
@@ -22264,8 +22467,8 @@ function getInnerBoundingClientRect(element, strategy) {
22264
22467
  }
22265
22468
  function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {
22266
22469
  let rect;
22267
- if (clippingAncestor === 'viewport') {
22268
- rect = getViewportRect(element, strategy);
22470
+ if (clippingAncestor === 'viewport' || clippingAncestor === 'layoutViewport') {
22471
+ rect = getViewportRect(element, strategy, clippingAncestor);
22269
22472
  } else if (clippingAncestor === 'document') {
22270
22473
  rect = getDocumentRect(getDocumentElement(element));
22271
22474
  } else if (isElement(clippingAncestor)) {
@@ -22281,13 +22484,6 @@ function getClientRectFromClippingAncestor(element, clippingAncestor, strategy)
22281
22484
  }
22282
22485
  return rectToClientRect(rect);
22283
22486
  }
22284
- function hasFixedPositionAncestor(element, stopNode) {
22285
- const parentNode = getParentNode(element);
22286
- if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {
22287
- return false;
22288
- }
22289
- return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);
22290
- }
22291
22487
 
22292
22488
  // A "clipping ancestor" is an `overflow` element with the characteristic of
22293
22489
  // clipping (or hiding) child elements. This returns all clipping ancestors
@@ -22298,7 +22494,7 @@ function getClippingElementAncestors(element, cache) {
22298
22494
  return cachedResult;
22299
22495
  }
22300
22496
  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');
22301
- let currentContainingBlockComputedStyle = null;
22497
+ let lastKeptComputedStyle = null;
22302
22498
  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';
22303
22499
  let currentNode = elementIsFixed ? getParentNode(element) : element;
22304
22500
 
@@ -22306,16 +22502,20 @@ function getClippingElementAncestors(element, cache) {
22306
22502
  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {
22307
22503
  const computedStyle = getComputedStyle$1(currentNode);
22308
22504
  const currentNodeIsContaining = isContainingBlock(currentNode);
22309
- if (!currentNodeIsContaining && computedStyle.position === 'fixed') {
22310
- currentContainingBlockComputedStyle = null;
22311
- }
22312
- const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
22505
+ // Position of the containing block chain below the current node. A fixed
22506
+ // element whose containing block hasn't been found yet is a fixed chain.
22507
+ const lastPosition = lastKeptComputedStyle ? lastKeptComputedStyle.position : elementIsFixed ? 'fixed' : '';
22508
+
22509
+ // A non-containing ancestor does not clip the element when the chain
22510
+ // below it escapes it: a fixed chain escapes all ancestors up to the
22511
+ // next containing block, an absolute chain escapes static ancestors.
22512
+ const shouldDropCurrentNode = !currentNodeIsContaining && (lastPosition === 'fixed' || lastPosition === 'absolute' && computedStyle.position === 'static');
22313
22513
  if (shouldDropCurrentNode) {
22314
22514
  // Drop non-containing blocks.
22315
22515
  result = result.filter(ancestor => ancestor !== currentNode);
22316
22516
  } else {
22317
- // Record last containing block for next iteration.
22318
- currentContainingBlockComputedStyle = computedStyle;
22517
+ // The kept node carries the chain position for the next iteration.
22518
+ lastKeptComputedStyle = computedStyle;
22319
22519
  }
22320
22520
  currentNode = getParentNode(currentNode);
22321
22521
  }
@@ -22325,7 +22525,7 @@ function getClippingElementAncestors(element, cache) {
22325
22525
 
22326
22526
  // Gets the maximum area that the element is visible in due to any number of
22327
22527
  // clipping ancestors.
22328
- function getClippingRect(_ref) {
22528
+ function getClippingRect$1(_ref) {
22329
22529
  let {
22330
22530
  element,
22331
22531
  boundary,
@@ -22375,13 +22575,7 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
22375
22575
  scrollTop: 0
22376
22576
  };
22377
22577
  const offsets = createCoords(0);
22378
-
22379
- // If the <body> scrollbar appears on the left (e.g. RTL systems). Use
22380
- // Firefox with layout.scrollbar.side = 3 in about:config to test this.
22381
- function setLeftRTLScrollbarOffset() {
22382
- offsets.x = getWindowScrollBarX(documentElement);
22383
- }
22384
- if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
22578
+ if (isOffsetParentAnElement || !isFixed) {
22385
22579
  if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
22386
22580
  scroll = getNodeScroll(offsetParent);
22387
22581
  }
@@ -22389,12 +22583,13 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
22389
22583
  const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);
22390
22584
  offsets.x = offsetRect.x + offsetParent.clientLeft;
22391
22585
  offsets.y = offsetRect.y + offsetParent.clientTop;
22392
- } else if (documentElement) {
22393
- setLeftRTLScrollbarOffset();
22394
22586
  }
22395
22587
  }
22396
- if (isFixed && !isOffsetParentAnElement && documentElement) {
22397
- setLeftRTLScrollbarOffset();
22588
+
22589
+ // If the <body> scrollbar appears on the left (e.g. RTL systems). Use
22590
+ // Firefox with layout.scrollbar.side = 3 in about:config to test this.
22591
+ if (!isOffsetParentAnElement && documentElement) {
22592
+ offsets.x = getWindowScrollBarX(documentElement);
22398
22593
  }
22399
22594
  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
22400
22595
  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
@@ -22479,7 +22674,7 @@ function isRTL(element) {
22479
22674
  const platform = {
22480
22675
  convertOffsetParentRelativeRectToViewportRelativeRect,
22481
22676
  getDocumentElement,
22482
- getClippingRect,
22677
+ getClippingRect: getClippingRect$1,
22483
22678
  getOffsetParent,
22484
22679
  getElementRects,
22485
22680
  getClientRects,
@@ -22494,7 +22689,7 @@ function rectsAreEqual(a, b) {
22494
22689
  }
22495
22690
 
22496
22691
  // https://samthor.au/2021/observing-dom/
22497
- function observeMove(element, onMove) {
22692
+ function observeMove(element, onMove, ancestorResize) {
22498
22693
  let io = null;
22499
22694
  let timeoutId;
22500
22695
  const root = getDocumentElement(element);
@@ -22537,13 +22732,22 @@ function observeMove(element, onMove) {
22537
22732
  let isFirstUpdate = true;
22538
22733
  function handleObserve(entries) {
22539
22734
  const ratio = entries[0].intersectionRatio;
22735
+
22736
+ // The entry is a snapshot, so the reference may have moved since the
22737
+ // intersection was computed (under performance constraints, or between
22738
+ // consecutive frames of a multi-frame layout shift). The reported ratio
22739
+ // and the observed area are stale in that case and cannot be trusted to
22740
+ // detect subsequent movement, so refresh regardless of the ratio.
22741
+ if (!rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {
22742
+ return refresh();
22743
+ }
22540
22744
  if (ratio !== threshold) {
22541
22745
  if (!isFirstUpdate) {
22542
22746
  return refresh();
22543
22747
  }
22544
22748
  if (!ratio) {
22545
- // If the reference is clipped, the ratio is 0. Throttle the refresh
22546
- // to prevent an infinite loop of updates.
22749
+ // If the reference is clipped in place, the ratio is 0. Throttle
22750
+ // the refresh to prevent an infinite loop of updates.
22547
22751
  timeoutId = setTimeout(() => {
22548
22752
  refresh(false, 1e-7);
22549
22753
  }, 1000);
@@ -22551,16 +22755,6 @@ function observeMove(element, onMove) {
22551
22755
  refresh(false, ratio);
22552
22756
  }
22553
22757
  }
22554
- if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {
22555
- // It's possible that even though the ratio is reported as 1, the
22556
- // element is not actually fully within the IntersectionObserver's root
22557
- // area anymore. This can happen under performance constraints. This may
22558
- // be a bug in the browser's IntersectionObserver implementation. To
22559
- // work around this, we compare the element's bounding rect now with
22560
- // what it was at the time we created the IntersectionObserver. If they
22561
- // are not equal then the element moved, so we refresh.
22562
- refresh();
22563
- }
22564
22758
  isFirstUpdate = false;
22565
22759
  }
22566
22760
 
@@ -22577,8 +22771,18 @@ function observeMove(element, onMove) {
22577
22771
  }
22578
22772
  io.observe(element);
22579
22773
  }
22774
+ const win = getWindow(element);
22775
+ // The window is a resize ancestor, so when `ancestorResize` is enabled its
22776
+ // listener already runs the update on resize. Here we only need to rebuild
22777
+ // the `IntersectionObserver` for the new root size, skipping a redundant
22778
+ // update. When `ancestorResize` is disabled, this becomes the sole update.
22779
+ const handleResize = () => refresh(ancestorResize);
22780
+ win.addEventListener('resize', handleResize);
22580
22781
  refresh(true);
22581
- return cleanup;
22782
+ return () => {
22783
+ win.removeEventListener('resize', handleResize);
22784
+ cleanup();
22785
+ };
22582
22786
  }
22583
22787
 
22584
22788
  /**
@@ -22603,12 +22807,10 @@ function autoUpdate(reference, floating, update, options) {
22603
22807
  const referenceEl = unwrapElement(reference);
22604
22808
  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];
22605
22809
  ancestors.forEach(ancestor => {
22606
- ancestorScroll && ancestor.addEventListener('scroll', update, {
22607
- passive: true
22608
- });
22810
+ ancestorScroll && ancestor.addEventListener('scroll', update);
22609
22811
  ancestorResize && ancestor.addEventListener('resize', update);
22610
22812
  });
22611
- const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;
22813
+ const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update, ancestorResize) : null;
22612
22814
  let reobserveFrame = -1;
22613
22815
  let resizeObserver = null;
22614
22816
  if (elementResize) {
@@ -22694,6 +22896,13 @@ const flip = flip$1;
22694
22896
  */
22695
22897
  const size = size$1;
22696
22898
 
22899
+ /**
22900
+ * Provides data to hide the floating element in applicable situations, such as
22901
+ * when it is not in the same clipping context as the reference element.
22902
+ * @see https://floating-ui.com/docs/hide
22903
+ */
22904
+ const hide = hide$1;
22905
+
22697
22906
  /**
22698
22907
  * Provides data to position an inner element of the floating element so that it
22699
22908
  * appears centered to the reference element.
@@ -22722,11 +22931,9 @@ const computePosition = (reference, floating, options) => {
22722
22931
  // multiple lifecycle resets re-use the same result. It only lives for a
22723
22932
  // single call. If other functions become expensive, we can add them as well.
22724
22933
  const cache = new Map();
22725
- const mergedOptions = {
22726
- platform,
22727
- ...options
22728
- };
22934
+ const mergedOptions = options != null ? options : {};
22729
22935
  const platformWithCache = {
22936
+ ...platform,
22730
22937
  ...mergedOptions.platform,
22731
22938
  _c: cache
22732
22939
  };
@@ -22751,6 +22958,77 @@ function popIn(el) {
22751
22958
  });
22752
22959
  }
22753
22960
 
22961
+ /**
22962
+ * This utility is covered by the end-to-end tests under 'clipping' in `popovercontainer.cy.ts`.
22963
+ */
22964
+ const CLIPPING_RECT_CACHE = Symbol('Clipping Rect Cache');
22965
+ /**
22966
+ * A custom floating UI platform that restricts clipping rectangles to the safe area.
22967
+ */
22968
+ const safeAreaPlatform = { ...platform, getClippingRect };
22969
+ /**
22970
+ * Computes the clipping rectangle of an element while accounting for the safe area.
22971
+ */
22972
+ async function getClippingRect(...args) {
22973
+ const element = args[0].element;
22974
+ // Check whether the clipping rectangle of the given element has already been computed during
22975
+ // this pass.
22976
+ const hit = this[CLIPPING_RECT_CACHE].get(element);
22977
+ if (hit)
22978
+ return hit;
22979
+ // Compute the clipping rectangle with the Floating UI DOM platform, then restrict it to the safe
22980
+ // area.
22981
+ const clippingRect = await platform.getClippingRect.apply(this, args);
22982
+ applySafeArea(clippingRect, element);
22983
+ this[CLIPPING_RECT_CACHE].set(element, clippingRect);
22984
+ return clippingRect;
22985
+ }
22986
+ /**
22987
+ * Restricts the `clippingRect` computed for `element` to the safe area, modifying it in place.
22988
+ *
22989
+ * The safe area only applies to elements that the header can actually cover, which excludes
22990
+ * elements without a header on their page, elements on a top layer and elements within the header.
22991
+ */
22992
+ function applySafeArea(clippingRect, element) {
22993
+ const headerElement = element.ownerDocument.querySelector('post-header');
22994
+ if (headerElement === null)
22995
+ return;
22996
+ let parent = element;
22997
+ while (!isLastTraversableNode(parent)) {
22998
+ parent = getParentNode(parent);
22999
+ if (!isHTMLElement(parent))
23000
+ continue;
23001
+ // Do not apply the safe area of the header to
23002
+ // - elements that are on a top layer, such as a dialog.
23003
+ // - elements that are located within the header itself.
23004
+ if (isTopLayer(parent) || parent === headerElement)
23005
+ return;
23006
+ }
23007
+ const headerRect = headerElement.getBoundingClientRect();
23008
+ const top = Math.max(clippingRect.y, headerRect.bottom);
23009
+ clippingRect.height -= top - clippingRect.y;
23010
+ clippingRect.y = top;
23011
+ }
23012
+ /**
23013
+ * Computes the coordinates that will position the `floating` element next to a given `reference`
23014
+ * element while accounting for the safe area.
23015
+ *
23016
+ * The safe area is the part of the viewport that the header does not cover. Restricting the
23017
+ * clipping rectangles to it makes floating elements behave as if they were clipped by the header.
23018
+ */
23019
+ const computePositionWithSafeArea = (reference, floating, options) => {
23020
+ // Adapted from https://github.com/floating-ui/floating-ui/blob/27629b74ba36ab8ceb2a968051927b9b69511a3b/packages/dom/src/index.ts#L15
23021
+ options ?? (options = {});
23022
+ return computePosition(reference, floating, {
23023
+ ...options,
23024
+ platform: {
23025
+ ...safeAreaPlatform,
23026
+ ...options.platform,
23027
+ [CLIPPING_RECT_CACHE]: new Map(),
23028
+ },
23029
+ });
23030
+ };
23031
+
22754
23032
  const postPopovercontainerCss = () => `@layer polyfill{@supports not selector(:popover-open){:host([popover]:not(.\\:popover-open)){display:none}}}:host{background-color:rgba(0,0,0,0);border:rgba(0,0,0,0);position:fixed;margin:0;padding:0;overflow:visible}:host>div{box-shadow:var(--post-device-elevation-300);width:max-content;max-width:100%;color:var(--post-current-fg);background-color:var(--post-current-bg);border-radius:4px;position:relative}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host>div{border:2px solid rgba(0,0,0,0)}}:host [part=post-popovercontainer-border-mask]{display:none;position:absolute;inset:0;border-radius:4px;pointer-events:none}:host .arrow{--post-popovercontainer-arrow-border: var(--post-popovercontainer-arrow-border-width, 0px) solid var(--post-popovercontainer-arrow-border-color, transparent);position:absolute;width:.5825rem;height:.5825rem;background-color:inherit;rotate:45deg;pointer-events:none;z-index:-1}:host .arrow[dynamic-placement=top]{border-bottom-right-radius:2px;border-bottom:var(--post-popovercontainer-arrow-border);border-right:var(--post-popovercontainer-arrow-border)}:host .arrow[dynamic-placement=right]{border-bottom-left-radius:2px;border-bottom:var(--post-popovercontainer-arrow-border);border-left:var(--post-popovercontainer-arrow-border)}:host .arrow[dynamic-placement=bottom]{border-top-left-radius:2px;border-top:var(--post-popovercontainer-arrow-border);border-left:var(--post-popovercontainer-arrow-border)}:host .arrow[dynamic-placement=left]{border-top-right-radius:2px;border-top:var(--post-popovercontainer-arrow-border);border-right:var(--post-popovercontainer-arrow-border)}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host .arrow[dynamic-placement=top]{border-block-end:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0);bottom:-0.3796735336rem !important}:host .arrow[dynamic-placement=left]{border-block-start:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0);right:-0.3796735336rem !important}:host .arrow[dynamic-placement=right]{border-block-end:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0);left:-0.3796735336rem !important}:host .arrow[dynamic-placement=bottom]{border-block-start:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0);top:-0.3796735336rem !important}}:host([tooltip]){position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}:host([safe-space])::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:auto}:host([safe-space=triangle])::after{clip-path:polygon(var(--post-safe-space-cursor-x, 0) var(--post-safe-space-cursor-y, 0), var(--post-safe-space-popover-x-start, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-start, 0)), var(--post-safe-space-popover-x-end, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-end, 0)))}:host([safe-space=trapezoid])::after{clip-path:polygon(var(--post-safe-space-trigger-x-start, var(--post-safe-space-trigger-x, 0)) var(--post-safe-space-trigger-y, var(--post-safe-space-trigger-y-start, 0)), var(--post-safe-space-trigger-x-end, var(--post-safe-space-trigger-x, 0)) var(--post-safe-space-trigger-y, var(--post-safe-space-trigger-y-end, 0)), var(--post-safe-space-popover-x-end, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-end, 0)), var(--post-safe-space-popover-x-start, var(--post-safe-space-popover-x, 0)) var(--post-safe-space-popover-y, var(--post-safe-space-popover-y-start, 0)))}:host(:not(:has(.arrow)))>div{box-shadow:var(--post-device-elevation-300)}:host(:has(.arrow))>div{filter:drop-shadow(1px 2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(2px 4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(4px 8px 12px hsla(225, 7%, 11%, 0.15))}:host(:has(.arrow[dynamic-placement=top]))>div{filter:drop-shadow(0px -2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(0px -4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(0px -8px 12px hsla(225, 7%, 11%, 0.15))}:host(:has(.arrow[dynamic-placement=left]))>div{filter:drop-shadow(-2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(-4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(-8px 0px 12px hsla(225, 7%, 11%, 0.15))}:host(:has(.arrow[dynamic-placement=right]))>div{filter:drop-shadow(2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(8px 0px 12px hsla(225, 7%, 11%, 0.15))}`;
22755
23033
 
22756
23034
  var __decorate$a = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
@@ -22828,7 +23106,7 @@ class PostPopovercontainer {
22828
23106
  if (this.toggleTimeoutId || !target)
22829
23107
  return;
22830
23108
  this.eventTarget = target;
22831
- this.calculatePosition();
23109
+ this.updatePosition();
22832
23110
  this.host.showPopover();
22833
23111
  }
22834
23112
  /**
@@ -22854,7 +23132,7 @@ class PostPopovercontainer {
22854
23132
  this.eventTarget = target;
22855
23133
  // Prevent instant double toggle
22856
23134
  if (!this.toggleTimeoutId) {
22857
- this.calculatePosition();
23135
+ this.updatePosition();
22858
23136
  this.host.togglePopover(force);
22859
23137
  this.toggleTimeoutId = null;
22860
23138
  }
@@ -22966,17 +23244,14 @@ class PostPopovercontainer {
22966
23244
  startAutoupdates() {
22967
23245
  if (!this.eventTarget || !this.host)
22968
23246
  return;
22969
- this.clearAutoUpdate = autoUpdate(this.eventTarget, this.host, this.calculatePosition.bind(this));
22970
- }
22971
- /**
22972
- * Retrieves the dynamic height of the header
22973
- */
22974
- getHeaderHeight() {
22975
- const header = document.querySelector('post-header');
22976
- return header ? Number.parseFloat(getComputedStyle(header).height) : 0;
23247
+ this.clearAutoUpdate = autoUpdate(this.eventTarget, this.host, this.updatePosition.bind(this));
22977
23248
  }
22978
- async calculatePosition() {
22979
- const { x, y, middlewareData, placement } = await this.computeMainPosition();
23249
+ async updatePosition() {
23250
+ const { x, y, middlewareData, placement } = await this.calculatePosition();
23251
+ // Hide the popover if the target is outside the viewport
23252
+ if (middlewareData.hide?.referenceHidden) {
23253
+ this.host.hidePopover();
23254
+ }
22980
23255
  const currentPlacement = placement.split('-')[0];
22981
23256
  this.dynamicPlacement = currentPlacement;
22982
23257
  // Position popover
@@ -23001,13 +23276,15 @@ class PostPopovercontainer {
23001
23276
  await this.updateSafeSpaceBoundaries(currentPlacement);
23002
23277
  }
23003
23278
  }
23004
- async computeMainPosition() {
23279
+ async calculatePosition() {
23005
23280
  const gap = this.edgeGap;
23006
23281
  const isAligned = (this.placement || 'top').includes('-');
23007
- const flipMiddleware = flip({
23008
- padding: this.getHeaderHeight(),
23009
- crossAxis: false,
23010
- });
23282
+ const flipMiddleware = [
23283
+ // Flip the popover if the target moves outside the viewport
23284
+ flip({ elementContext: 'reference', crossAxis: false }),
23285
+ // Flip the popover if the popover itself moves outside the viewport
23286
+ flip({ elementContext: 'floating', crossAxis: false }),
23287
+ ];
23011
23288
  const shiftMiddleware = shift({
23012
23289
  padding: gap,
23013
23290
  limiter: limitShift({
@@ -23019,7 +23296,7 @@ class PostPopovercontainer {
23019
23296
  inline(),
23020
23297
  // Per floating-ui docs: for aligned placements (e.g. bottom-end),
23021
23298
  // flip should come before shift. For non-aligned, shift before flip.
23022
- ...(isAligned ? [flipMiddleware, shiftMiddleware] : [shiftMiddleware, flipMiddleware]),
23299
+ ...(isAligned ? [...flipMiddleware, shiftMiddleware] : [shiftMiddleware, ...flipMiddleware]),
23023
23300
  size({
23024
23301
  apply({ availableWidth, elements }) {
23025
23302
  Object.assign(elements.floating.style, {
@@ -23031,7 +23308,12 @@ class PostPopovercontainer {
23031
23308
  if (this.arrow) {
23032
23309
  middleware.push(arrow({ element: this.arrowRef, padding: gap }));
23033
23310
  }
23034
- return computePosition(this.eventTarget, this.host, {
23311
+ // Automatically hide the popover if the target moves outside the scrollport.
23312
+ if (this.autoHide) {
23313
+ // Per floating-ui docs: hide should generally be placed at the end.
23314
+ middleware.push(hide({ strategy: 'referenceHidden' }));
23315
+ }
23316
+ return computePositionWithSafeArea(this.eventTarget, this.host, {
23035
23317
  placement: this.placement || 'top',
23036
23318
  strategy: 'fixed',
23037
23319
  middleware,
@@ -23098,9 +23380,9 @@ class PostPopovercontainer {
23098
23380
  }
23099
23381
  }
23100
23382
  render() {
23101
- return (hAsync(Host, { key: 'bffef7c8067f21aa99c45deaaf2bc122ea455191', "data-version": version$1, popover: "auto" }, hAsync("div", { key: '023339edd5b36827e0051179bee464236bccc62a', part: "post-popovercontainer-content", class: "popover-content" }, this.arrow && (hAsync("span", { key: 'ae921c38aa8c33ad8b37453a56d22ee7b4b9950c', "dynamic-placement": this.dynamicPlacement, class: "arrow", ref: el => {
23383
+ return (hAsync(Host, { key: 'a6f41ad3ef982f9e9ec0d6450837d1cfdca73d16', "data-version": version$1, popover: "auto" }, hAsync("div", { key: '40afab436d5550fda44c8995139080161eab5b09', part: "post-popovercontainer-content", class: "popover-content" }, this.arrow && (hAsync("span", { key: '580bd8fcaecb89334aca05001137a4d7cccd254a', "dynamic-placement": this.dynamicPlacement, class: "arrow", ref: el => {
23102
23384
  this.arrowRef = el;
23103
- } })), hAsync("span", { key: 'f7c2720a3bedb808855628482c5b1f377e2719a8', part: "post-popovercontainer-border-mask" }), hAsync("slot", { key: 'e0fee3fded9fea41bc0260f45be0375e236463f9' }))));
23385
+ } })), hAsync("span", { key: '61a6e4e8026832afc188edd5a74535716db65945', part: "post-popovercontainer-border-mask" }), hAsync("slot", { key: 'd79cb69a77dbba13ffa3c30e0393db4f3a669a12' }))));
23104
23386
  }
23105
23387
  get host() { return getElement(this); }
23106
23388
  static get style() { return postPopovercontainerCss(); }
@@ -23113,6 +23395,7 @@ class PostPopovercontainer {
23113
23395
  "offset": [2],
23114
23396
  "arrow": [4],
23115
23397
  "safeSpace": [513, "safe-space"],
23398
+ "autoHide": [4, "auto-hide"],
23116
23399
  "dynamicPlacement": [32],
23117
23400
  "show": [64],
23118
23401
  "hide": [64],
@@ -23199,7 +23482,7 @@ class PostProgressbar {
23199
23482
  const max = this.getEffectiveMax();
23200
23483
  const value = this.getEffectiveValue(min, max);
23201
23484
  const percentage = ((value - min) / (max - min)) * 100;
23202
- return (hAsync(Host, { key: '434d38d2a3157820477b80831a8283ca9e427dfb', role: "progressbar", "aria-valuenow": value, "aria-valuemin": min, "aria-valuemax": max }, hAsync("div", { key: '862332d99d2b930258e20d2f4417cdfebc6e6333', class: "progress-value", style: { '--post-progressbar-value': `${percentage}%` } })));
23485
+ return (hAsync(Host, { key: 'c08b9b976c5cb34018e48c4dafe6b87207710ba5', role: "progressbar", "aria-valuenow": value, "aria-valuemin": min, "aria-valuemax": max }, hAsync("div", { key: '485eb6657d14ad5472bfbe822b1cd0eb50cd0129', class: "progress-value", style: { '--post-progressbar-value': `${percentage}%` } })));
23203
23486
  }
23204
23487
  get host() { return getElement(this); }
23205
23488
  static get style() { return postProgressbarCss(); }
@@ -23316,7 +23599,7 @@ class PostRating {
23316
23599
  }
23317
23600
  }
23318
23601
  render() {
23319
- return (hAsync(Host, { key: '082aaa831e204f0576c494bd9ce14364b7a34436', "data-version": version$1 }, hAsync("div", { key: '1c13ae74c34a1032fa680ce608aac0320178bd65', role: "slider", class: "rating", tabindex: "0", "aria-label": this.label, "aria-valuemin": "0", "aria-valuemax": this.stars, "aria-valuenow": this.currentRating, "aria-valuetext": `${this.currentRating} / ${this.stars}`, "aria-readonly": this.readonly ? 'true' : 'false', onKeyDown: this.keydownHandler, onBlur: this.blurHandler }, Array.from({ length: this.stars }).map((v, i) => (hAsync("div", { key: `star-${v}`, "aria-hidden": "true", class: {
23602
+ return (hAsync(Host, { key: '0cf576670f16d4b8f88b714af12ded14aa1372b2', "data-version": version$1 }, hAsync("div", { key: 'a53c8f8f9c617a2bd3996fd5812c7af091497f55', role: "slider", class: "rating", tabindex: "0", "aria-label": this.label, "aria-valuemin": "0", "aria-valuemax": this.stars, "aria-valuenow": this.currentRating, "aria-valuetext": `${this.currentRating} / ${this.stars}`, "aria-readonly": this.readonly ? 'true' : 'false', onKeyDown: this.keydownHandler, onBlur: this.blurHandler }, Array.from({ length: this.stars }).map((v, i) => (hAsync("div", { key: `star-${v}`, "aria-hidden": "true", class: {
23320
23603
  'star': true,
23321
23604
  'before-hover': i < this.hoveredIndex,
23322
23605
  'active': i < Math.round(this.currentRating),
@@ -23356,7 +23639,7 @@ __decorate$8([
23356
23639
 
23357
23640
  const SIDE_NAVIGATION_SIZES = ['large', 'small'];
23358
23641
 
23359
- const postSideNavigationCss = () => `:host{--post-side-navigation-padding-block-start:34px;--post-side-navigation-padding-block-end:16px;--post-side-navigation-bg:#f0efed;--post-side-navigation-stroke:#b4b3af;display:flex;background-color:var(--post-side-navigation-bg);border-inline-end:1px solid var(--post-side-navigation-stroke)}:host dialog{overflow:visible;width:var(--post-side-navigation-width);bottom:auto;right:auto;border:none;padding:0;max-height:100dvh;background-color:var(--post-side-navigation-bg);border-inline-end:1px solid var(--post-side-navigation-stroke);transform:translateX(-100%);transition-property:transform,overlay,display;transition-behavior:allow-discrete;transition-duration:350ms}@media screen and (max-width: 1023.98px){:host dialog{box-shadow:var(--post-device-elevation-300)}}:host dialog[open]{transform:translateX(0)}@starting-style{:host dialog[open]{transform:translateX(-100%)}}@media (prefers-reduced-motion: reduce){:host dialog{transition:none}}:host post-closebutton{transform:translate(50%, 0)}`;
23642
+ const postSideNavigationCss = () => `:host{display:flex}:host,:host dialog{background-color:var(--post-scheme-color-palette-bg-2);border-inline-end:var(--post-device-border-width-alternative1) solid var(--post-scheme-color-interactive-primary-enabled-stroke4)}:host dialog{overflow:visible;width:var(--post-core-dimension-296);bottom:auto;right:auto;border:none;padding:0;max-height:100dvh;transform:translateX(-100%);transition-property:transform,overlay,display;transition-behavior:allow-discrete;transition-duration:350ms;box-shadow:var(--post-device-elevation-300)}:host dialog[open]{transform:translateX(0)}@starting-style{:host dialog[open]{transform:translateX(-100%)}}@media (prefers-reduced-motion: reduce){:host dialog{transition:none}}:host post-closebutton{transform:translate(50%, 0)}`;
23360
23643
 
23361
23644
  var __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
23362
23645
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -23486,7 +23769,7 @@ class PostSideNavigation {
23486
23769
  } }, hAsync("slot", null), hAsync("post-closebutton", { onClick: () => this.hide() }, this.textClose)));
23487
23770
  }
23488
23771
  render() {
23489
- return (hAsync(Host, { key: '48fa216d175f5fc96a722dd9aa1d4043298f9512', "data-version": version$1 }, this.device === 'desktop' ? this.renderNav() : this.renderDialog()));
23772
+ return (hAsync(Host, { key: 'd99b96af69d80dc97b44fdc61410768617ca934c', "data-version": version$1 }, this.device === 'desktop' ? this.renderNav() : this.renderDialog()));
23490
23773
  }
23491
23774
  get host() { return getElement(this); }
23492
23775
  static get style() { return postSideNavigationCss(); }
@@ -23601,7 +23884,7 @@ class PostSideNavigationTrigger {
23601
23884
  await this.sideNavigation?.toggle();
23602
23885
  }
23603
23886
  render() {
23604
- return (hAsync(Host, { key: '1fda1561026f1eb8a4c976a937d2573713068ef9', "data-version": version$1 }, hAsync("slot", { key: '4e594cf134bfa431e410099cc0b8bf3071833e9a' })));
23887
+ return (hAsync(Host, { key: 'e82eb54b68db812c3753a7d027d983fa81f01255', "data-version": version$1 }, hAsync("slot", { key: 'a1ca8877d1a9e0faa653a3f1dec3fd1655b4bcb7' })));
23605
23888
  }
23606
23889
  get host() { return getElement(this); }
23607
23890
  static get style() { return postSideNavigationTriggerCss(); }
@@ -23731,7 +24014,7 @@ class PostStepper {
23731
24014
  }
23732
24015
  }
23733
24016
  render() {
23734
- return (hAsync(Host, { key: 'c7b01aa30601ce7e2a383d637e8f9342de1c2143', "data-version": version$1 }, hAsync("ol", { key: '2c864063c2d22988b397b1b83667416edbb9b2b4' }, hAsync("slot", { key: '43a980fa016cd4d45cc90e4fe35de51e549efa19', onSlotchange: () => this.updateSteps() })), hAsync("div", { key: '6fa9f79b179f01d25aed9138614c8d99b4a3fc26', class: "active-step", "aria-hidden": "true" }, hAsync("span", { key: '89305778f7f921e6d62274142a9eb40c405d705b', class: "active-step-label" }, this.mobileActiveStepLabel), hAsync("span", { key: '5964200ae887c012ee843d0d80ce596302b952af', innerHTML: this.mobileActiveStepName }))));
24017
+ return (hAsync(Host, { key: '917393b196552a6994cfc230bf93f2cd0a5e77e7', "data-version": version$1 }, hAsync("ol", { key: 'ab15bc7eaa44c5a8246c2fcc2d1c3c8e1d8ab4a6' }, hAsync("slot", { key: 'e61ab0edfce06fe1ef7345a6472834a3af38ce9e', onSlotchange: () => this.updateSteps() })), hAsync("div", { key: 'be0556840878de5adb007ef33693ef619d8a19fa', class: "active-step", "aria-hidden": "true" }, hAsync("span", { key: '8a1663a9360d931198f52c699c4e855a1f77bbc6', class: "active-step-label" }, this.mobileActiveStepLabel), hAsync("span", { key: '31f804be237598a5d8b7cbd1f418af1758e42fd6', innerHTML: this.mobileActiveStepName }))));
23735
24018
  }
23736
24019
  get host() { return getElement(this); }
23737
24020
  static get watchers() { return {
@@ -23790,7 +24073,7 @@ class PostStepperItem {
23790
24073
  registerInstance(this, hostRef);
23791
24074
  }
23792
24075
  render() {
23793
- return (hAsync(Host, { key: '0c4bdf86a40900511d1e6cb0fee86b14235bbeec', "data-version": version$1, role: "listitem" }, hAsync("span", { key: '20743202fbefd8ba438a8dd8276462fd7587d45b', class: "stepper-item-content" }, hAsync("span", { key: '00f1b587f5219976227c3db270bb2b746e4d2c6a', class: "step-hidden-label visually-hidden" }), hAsync("span", { key: '897dd5917855cd9437ec455f1d683e213c0e9a8d', class: "label" }, hAsync("slot", { key: '9485bf03c43dcb92b49b80c28175542fed89d4a1' })))));
24076
+ return (hAsync(Host, { key: '486be1addaa512c39628cfa2fab567d5dfb4b517', "data-version": version$1, role: "listitem" }, hAsync("span", { key: 'a89be43022ff5b9d9cbcad1e4f934fdcef8919c3', class: "stepper-item-content" }, hAsync("span", { key: '60e217eab48532d7985b57159251f84217f1b362', class: "step-hidden-label visually-hidden" }), hAsync("span", { key: 'b847451659b699693d168dd8164c878281fb7793', class: "label" }, hAsync("slot", { key: '823229cba3855d597f08ebc6fc4e5a5059ef7f98' })))));
23794
24077
  }
23795
24078
  static get style() { return postStepperItemCss(); }
23796
24079
  static get cmpMeta() { return {
@@ -23846,9 +24129,9 @@ class PostTabItem {
23846
24129
  this.isPagesVariant = hasAnchor;
23847
24130
  }
23848
24131
  render() {
23849
- return (hAsync(Host, { key: '3d17a3c22c3677483bc4c86600b7527353dff290', id: this.tabId, role: this.isPagesVariant ? undefined : 'tab', "data-version": version$1, "data-pages-variant": this.isPagesVariant.toString(), "aria-selected": this.isPagesVariant ? undefined : 'false', "aria-disabled": this.disabled ? 'true' : undefined, tabindex: this.isPagesVariant ? undefined : '-1', class: `${this.isPagesVariant ? 'nav-item' : 'tab-title'}${!this.isPagesVariant ? ' ssr' : ''}`, style: !this.isPagesVariant
24132
+ return (hAsync(Host, { key: '7a12be83f1b2bd428a4fcba01b4696a253d58daf', id: this.tabId, role: this.isPagesVariant ? undefined : 'tab', "data-version": version$1, "data-pages-variant": this.isPagesVariant.toString(), "aria-selected": this.isPagesVariant ? undefined : 'false', "aria-disabled": this.disabled ? 'true' : undefined, tabindex: this.isPagesVariant ? undefined : '-1', class: `${this.isPagesVariant ? 'nav-item' : 'tab-title'}${!this.isPagesVariant ? ' ssr' : ''}`, style: !this.isPagesVariant
23850
24133
  ? { '--active': `var(--post-tab-item-${this.name}, 0)` }
23851
- : undefined }, hAsync("slot", { key: '9514279224549dcc0bf5553e98c535b64f37a191' })));
24134
+ : undefined }, hAsync("slot", { key: '7350214640bf0ab1afcd3584c4ccd48e22da1612' })));
23852
24135
  }
23853
24136
  get host() { return getElement(this); }
23854
24137
  static get cmpMeta() { return {
@@ -23894,7 +24177,7 @@ class PostTabPanel {
23894
24177
  this.panelId = `panel-${this.host.id || nanoid(6)}`;
23895
24178
  }
23896
24179
  render() {
23897
- return (hAsync(Host, { key: '51119127b00717573aa2fa270186ea907ce8bfbc', "data-version": version$1, id: this.panelId, role: "tabpanel", slot: "panels", style: { display: `var(--post-tab-panel-${this.for}, none)` } }, hAsync("slot", { key: '7defd4cfb69b1f2b5f3d36cea10df5aed65eb440' })));
24180
+ return (hAsync(Host, { key: 'a1aa48f24e91af0562683115218d19582309ef6e', "data-version": version$1, id: this.panelId, role: "tabpanel", slot: "panels", style: { display: `var(--post-tab-panel-${this.for}, none)` } }, hAsync("slot", { key: '17e0e571302ded052f9586e0754203b772a3fbec' })));
23898
24181
  }
23899
24182
  get host() { return getElement(this); }
23900
24183
  static get style() { return postTabPanelCss(); }
@@ -24343,10 +24626,10 @@ class PostTabs {
24343
24626
  }
24344
24627
  : undefined;
24345
24628
  const style = !this.isPagesVariant ? tabStyle : undefined;
24346
- return (hAsync(Host, { key: 'd5776ab3d40faaf892fc494bc57455f94f7905de', "data-version": version$1, style: style }, hAsync("div", { key: '5a8055fd968bcbaa2fe408eb14cb140db0b5cd88', class: "tabs-wrapper", part: "post-tabs" }, hAsync("button", { key: '96f5ead41bfcf826941c2d652f61e04729f18f1d', ref: el => (this.leftScrollButton = el), class: "scroll-btn scroll-btn-left", type: "button", "aria-label": this.textPrevTabItems, tabindex: this.showLeftScrollButton ? 0 : -1, hidden: !this.showLeftScrollButton, onClick: () => this.scrollTabs('prev') }, hAsync("post-icon", { key: '37593c698ce7266194819ec47eee2412a7b7779d', name: "chevronleft" })), hAsync(TabsContainer, { key: '6178c4a55c748dab1c4d1ff7eba5ba63332fd6fd', ref: el => (this.tabsContainer = el), class: "tabs", role: this.isPagesVariant ? undefined : 'tablist', "aria-label": this.isPagesVariant ? this.label : undefined }, hAsync("slot", { key: 'e08327a41440a408ae6c8a8885cef34090bfb244', onSlotchange: () => {
24629
+ return (hAsync(Host, { key: 'ad4f55f50dbd83e1383944984f79d195d1c531e7', "data-version": version$1, style: style }, hAsync("div", { key: '48456590c7b6cead75b689e3b2b463c641600cdd', class: "tabs-wrapper", part: "post-tabs" }, hAsync("button", { key: '6337fd1ba75f53f09bd80ff0873b129cb2387498', 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: '97897bb7329a070f40e6ecbacff394b10f660aec', name: "chevronleft" })), hAsync(TabsContainer, { key: 'edc801dcadf41c85ed9aafdd2dda11ff4c87756b', ref: el => (this.tabsContainer = el), class: "tabs", role: this.isPagesVariant ? undefined : 'tablist', "aria-label": this.isPagesVariant ? this.label : undefined }, hAsync("slot", { key: '908aaf787f545de1738236412dc4094cabe87155', onSlotchange: () => {
24347
24630
  this.moveMisplacedTabs();
24348
24631
  this.enableTabs();
24349
- } })), hAsync("button", { key: '1891e50feaf86f4aac16c63acc4bd836ebff3492', ref: el => (this.rightScrollButton = el), class: "scroll-btn scroll-btn-right", type: "button", "aria-label": this.textNextTabItems, tabindex: this.showRightScrollButton ? 0 : -1, hidden: !this.showRightScrollButton, onClick: () => this.scrollTabs('next') }, hAsync("post-icon", { key: '3a95b1bd98566a4783e066aa0ce0e8fb083dc7c3', name: "chevronright" }))), !this.isPagesVariant && (hAsync("div", { key: 'aef00cd5120565a053d892963e129f1ee6377a89', class: "tab-content", part: "post-tabs-content" }, hAsync("slot", { key: 'd8068bcb3d4daa6f62dc4ad0da644d993ca82aa9', name: "panels", onSlotchange: () => this.moveMisplacedPanels() })))));
24632
+ } })), hAsync("button", { key: 'ed12a602b399e1a8dcd190fca7828fcb2683b925', 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: '0ecd4444455da92f371b300299ff2f1a53f804a2', name: "chevronright" }))), !this.isPagesVariant && (hAsync("div", { key: '2252fefeca18a6135796852e511c779d413aa2c5', class: "tab-content", part: "post-tabs-content" }, hAsync("slot", { key: 'dc553352c6fa9ea4c5780108bc9ed8e3e9b29b24', name: "panels", onSlotchange: () => this.moveMisplacedPanels() })))));
24350
24633
  }
24351
24634
  get host() { return getElement(this); }
24352
24635
  static get watchers() { return {
@@ -24413,7 +24696,7 @@ class PostTogglebutton {
24413
24696
  });
24414
24697
  }
24415
24698
  render() {
24416
- return (hAsync(Host, { key: '7b935b808aa1ebbe97ac37bed25bfc215513097f', "data-version": version$1, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, hAsync("slot", { key: 'd06f112049850f8d7bdffd5e0b70440bae41010b' })));
24699
+ return (hAsync(Host, { key: 'ae46e9fcd82766abcf76c4b37d0341cfd29f2f4f', "data-version": version$1, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, hAsync("slot", { key: '9c71c065225f0f5c68e76fa2cec6d75bdf29fed0' })));
24417
24700
  }
24418
24701
  get host() { return getElement(this); }
24419
24702
  static get style() { return postTogglebuttonCss(); }
@@ -24497,7 +24780,7 @@ class PostTooltip {
24497
24780
  }
24498
24781
  render() {
24499
24782
  const popoverClass = `${this.arrow ? 'has-arrow' : ''}`;
24500
- return (hAsync(Host, { key: '88e3d485579f14915471a3d6cd09654d4bd288e7', "data-version": version$1 }, hAsync("post-popovercontainer", { key: 'e1cd5638316cf34517d46c5b73c865ac4548d906', safeSpace: "trapezoid", class: popoverClass, role: "tooltip", arrow: this.arrow, placement: this.placement, onPostBeforeToggle: e => this.handleBeforeToggle(e), ref: (el) => (this.popoverRef = el) }, hAsync("slot", { key: '02ce027505b3fe4f90c2e3208cb7e2c304138c5e' }))));
24783
+ return (hAsync(Host, { key: '1510f7ec123b7bfaa39cc348a6b496a9051163ea', "data-version": version$1 }, hAsync("post-popovercontainer", { key: '004baf52684bfed3b8af77f773c9487d3b776fa9', 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: '182f95928a4f70c747073e4585c18cab5f0eb277' }))));
24501
24784
  }
24502
24785
  get host() { return getElement(this); }
24503
24786
  static get style() { return postTooltipCss(); }
@@ -24692,7 +24975,7 @@ class PostTooltipTrigger {
24692
24975
  this.tooltip?.hide();
24693
24976
  }
24694
24977
  render() {
24695
- return (hAsync(Host, { key: '6c772242ad42feedd5ff3fe7e7ab637fae8d1292', "data-version": version$1 }, hAsync("slot", { key: 'fac33c09dcff608e386bc75af9eef4cc19eecf10', onSlotchange: () => this.handleSlotChange() })));
24978
+ return (hAsync(Host, { key: '692a3cda2890f30f0df80366a9610ec70b0872ba', "data-version": version$1 }, hAsync("slot", { key: '0a9df94a1d52ec318ecbec6740b7d3acc915b130', onSlotchange: () => this.handleSlotChange() })));
24696
24979
  }
24697
24980
  get host() { return getElement(this); }
24698
24981
  static get style() { return postTooltipTriggerCss(); }