@swisspost/design-system-components 9.0.0-next.32 → 9.0.0-next.34

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 (347) hide show
  1. package/dist/cjs/{attribute-observer-6d8b886b.js → attribute-observer-c3a805b2.js} +3 -1
  2. package/dist/cjs/{breakpoints-c6247c71.js → breakpoints-cdf1b747.js} +12 -7
  3. package/dist/cjs/event-guard-efabc84f.js +47 -0
  4. package/dist/cjs/get-root-8102fecd.js +17 -0
  5. package/dist/cjs/{index-d6bf2c66.js → index-b60129c4.js} +2 -2
  6. package/dist/cjs/index.cjs.js +25 -25
  7. package/dist/cjs/loader.cjs.js +2 -2
  8. package/dist/cjs/long-press-event-6e62d113.js +266 -0
  9. package/dist/cjs/{package-6f8f430c.js → package-3426e8f7.js} +1 -1
  10. package/dist/cjs/{post-accordion-e3a6d78e.js → post-accordion-3ac8dca8.js} +10 -12
  11. package/dist/cjs/{post-accordion-item-7ed1f630.js → post-accordion-item-aace6bc2.js} +10 -10
  12. package/dist/cjs/post-accordion-item.cjs.entry.js +5 -3
  13. package/dist/cjs/post-accordion.cjs.entry.js +5 -3
  14. package/dist/cjs/{post-avatar-de8ec197.js → post-avatar-53abd22f.js} +5 -4
  15. package/dist/cjs/post-avatar.cjs.entry.js +4 -3
  16. package/dist/cjs/post-back-to-top-b231fc1c.js +96 -0
  17. package/dist/cjs/post-back-to-top.cjs.entry.js +4 -3
  18. package/dist/cjs/{post-banner-bf523706.js → post-banner-e6d14bf1.js} +4 -8
  19. package/dist/cjs/post-banner.cjs.entry.js +4 -3
  20. package/dist/cjs/{post-breadcrumb-da55143a.js → post-breadcrumb-a929f2a6.js} +30 -22
  21. package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +4 -3
  22. package/dist/cjs/post-breadcrumb.cjs.entry.js +4 -4
  23. package/dist/cjs/{post-card-control-0bcd7d16.js → post-card-control-cbee7b86.js} +26 -40
  24. package/dist/cjs/post-card-control.cjs.entry.js +4 -3
  25. package/dist/cjs/post-closebutton_15.cjs.entry.js +6 -5
  26. package/dist/cjs/{post-collapsible-trigger-a5e4451d.js → post-collapsible-trigger-d1cb592a.js} +39 -46
  27. package/dist/cjs/post-collapsible_2.cjs.entry.js +6 -5
  28. package/dist/cjs/post-components.cjs.js +2 -2
  29. package/dist/cjs/{post-footer-b15fee73.js → post-footer-4290dafc.js} +11 -11
  30. package/dist/cjs/post-footer.cjs.entry.js +4 -4
  31. package/dist/cjs/{post-linkarea-8c85bf5e.js → post-linkarea-f22f4f92.js} +5 -5
  32. package/dist/cjs/post-linkarea.cjs.entry.js +3 -3
  33. package/dist/cjs/{post-menu-item-509877cd.js → post-menu-item-afabaa61.js} +4 -4
  34. package/dist/cjs/{post-popover-1213aa19.js → post-popover-a4c72d38.js} +16 -14
  35. package/dist/cjs/post-popover.cjs.entry.js +5 -4
  36. package/dist/cjs/{post-rating-e1f8a668.js → post-rating-b87616fc.js} +4 -14
  37. package/dist/cjs/post-rating.cjs.entry.js +3 -3
  38. package/dist/cjs/{post-tab-header-889a6c64.js → post-tab-header-45cb6bb4.js} +5 -4
  39. package/dist/cjs/post-tab-header.cjs.entry.js +4 -3
  40. package/dist/cjs/{post-tab-panel-300f39a9.js → post-tab-panel-00d16ba7.js} +4 -4
  41. package/dist/cjs/post-tab-panel.cjs.entry.js +3 -3
  42. package/dist/cjs/{post-tabs-dc281228.js → post-tabs-2c3a89d0.js} +5 -12
  43. package/dist/cjs/post-tabs.cjs.entry.js +4 -3
  44. package/dist/cjs/{post-tag-fd9e586f.js → post-tag-370a2f4d.js} +3 -3
  45. package/dist/cjs/post-tag.cjs.entry.js +3 -3
  46. package/dist/cjs/{post-togglebutton-ad6ae1e4.js → post-togglebutton-2c9552e3.js} +969 -471
  47. package/dist/cjs/{post-tooltip-52d690e4.js → post-tooltip-4d4d2ea9.js} +39 -296
  48. package/dist/cjs/post-tooltip.cjs.entry.js +5 -4
  49. package/dist/collection/animations/collapse.js +3 -1
  50. package/dist/collection/components/post-accordion/post-accordion.js +6 -10
  51. package/dist/collection/components/post-accordion-item/post-accordion-item.js +6 -8
  52. package/dist/collection/components/post-avatar/post-avatar.js +3 -4
  53. package/dist/collection/components/post-back-to-top/post-back-to-top.css +1 -1
  54. package/dist/collection/components/post-back-to-top/post-back-to-top.js +37 -19
  55. package/dist/collection/components/post-banner/post-banner.js +0 -6
  56. package/dist/collection/components/post-breadcrumb/post-breadcrumb.js +16 -19
  57. package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +0 -2
  58. package/dist/collection/components/post-card-control/post-card-control.js +24 -40
  59. package/dist/collection/components/post-closebutton/post-closebutton.css +1 -0
  60. package/dist/collection/components/post-closebutton/post-closebutton.js +12 -2
  61. package/dist/collection/components/post-collapsible/post-collapsible.js +4 -10
  62. package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +29 -32
  63. package/dist/collection/components/post-footer/post-footer.js +8 -9
  64. package/dist/collection/components/post-header/post-header.css +1 -1
  65. package/dist/collection/components/post-header/post-header.js +16 -19
  66. package/dist/collection/components/post-icon/post-icon.js +5 -7
  67. package/dist/collection/components/post-language-option/post-language-option.js +1 -10
  68. package/dist/collection/components/post-language-switch/post-language-switch.css +1 -1
  69. package/dist/collection/components/post-language-switch/post-language-switch.js +25 -31
  70. package/dist/collection/components/post-linkarea/post-linkarea.css +1 -1
  71. package/dist/collection/components/post-linkarea/post-linkarea.js +2 -2
  72. package/dist/collection/components/post-list/post-list.js +1 -3
  73. package/dist/collection/components/post-list-item/post-list-item.js +1 -2
  74. package/dist/collection/components/post-logo/post-logo.js +1 -2
  75. package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
  76. package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +98 -182
  77. package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
  78. package/dist/collection/components/post-megadropdown/post-megadropdown.js +20 -30
  79. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +42 -36
  80. package/dist/collection/components/post-menu/post-menu.js +51 -52
  81. package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +13 -15
  82. package/dist/collection/components/post-popover/post-popover.js +12 -12
  83. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +30 -33
  84. package/dist/collection/components/post-rating/post-rating.js +1 -12
  85. package/dist/collection/components/post-tab-header/post-tab-header.js +2 -3
  86. package/dist/collection/components/post-tab-panel/post-tab-panel.js +2 -3
  87. package/dist/collection/components/post-tabs/post-tabs.js +1 -10
  88. package/dist/collection/components/post-tag/post-tag.js +0 -1
  89. package/dist/collection/components/post-togglebutton/post-togglebutton.js +10 -11
  90. package/dist/collection/components/post-tooltip/post-tooltip.js +36 -32
  91. package/dist/collection/utils/attribute-observer.js +2 -1
  92. package/dist/collection/utils/breakpoints.js +9 -7
  93. package/dist/collection/utils/environment.js +2 -0
  94. package/dist/collection/utils/event-guard.js +43 -0
  95. package/dist/collection/utils/get-root.js +6 -1
  96. package/dist/collection/utils/index.js +5 -0
  97. package/dist/collection/utils/is-motion-reduced.js +2 -1
  98. package/dist/components/attribute-observer.js +3 -1
  99. package/dist/components/breakpoints.js +12 -8
  100. package/dist/components/event-guard.js +45 -0
  101. package/dist/components/get-root.js +7 -1
  102. package/dist/components/long-press-event.js +264 -0
  103. package/dist/components/package.js +1 -1
  104. package/dist/components/post-accordion-item2.js +8 -8
  105. package/dist/components/post-accordion2.js +8 -10
  106. package/dist/components/post-avatar2.js +4 -3
  107. package/dist/components/post-back-to-top2.js +40 -20
  108. package/dist/components/post-banner2.js +2 -6
  109. package/dist/components/post-breadcrumb-item2.js +2 -2
  110. package/dist/components/post-breadcrumb2.js +28 -20
  111. package/dist/components/post-card-control2.js +25 -39
  112. package/dist/components/post-closebutton2.js +8 -3
  113. package/dist/components/post-collapsible-trigger2.js +33 -35
  114. package/dist/components/post-collapsible2.js +9 -12
  115. package/dist/components/post-footer2.js +8 -8
  116. package/dist/components/post-header2.js +18 -20
  117. package/dist/components/post-icon2.js +6 -6
  118. package/dist/components/post-language-option2.js +3 -10
  119. package/dist/components/post-language-switch2.js +28 -31
  120. package/dist/components/post-linkarea2.js +5 -4
  121. package/dist/components/post-list-item2.js +2 -2
  122. package/dist/components/post-list2.js +2 -3
  123. package/dist/components/post-logo2.js +3 -2
  124. package/dist/components/post-mainnavigation2.js +94 -182
  125. package/dist/components/post-megadropdown-trigger2.js +44 -36
  126. package/dist/components/post-megadropdown2.js +22 -31
  127. package/dist/components/post-menu-trigger2.js +15 -15
  128. package/dist/components/post-menu2.js +53 -52
  129. package/dist/components/post-popover2.js +14 -12
  130. package/dist/components/post-popovercontainer2.js +638 -36
  131. package/dist/components/post-rating2.js +2 -12
  132. package/dist/components/post-tab-header2.js +4 -3
  133. package/dist/components/post-tab-panel2.js +3 -3
  134. package/dist/components/post-tabs2.js +3 -10
  135. package/dist/components/post-tag2.js +1 -1
  136. package/dist/components/post-togglebutton2.js +12 -11
  137. package/dist/components/post-tooltip2.js +37 -294
  138. package/dist/docs.json +21 -15
  139. package/dist/esm/{attribute-observer-2f203993.js → attribute-observer-009deee5.js} +3 -1
  140. package/dist/esm/{breakpoints-bbe0c54e.js → breakpoints-7812702e.js} +12 -8
  141. package/dist/esm/event-guard-538ee077.js +45 -0
  142. package/dist/esm/get-root-1b1af46f.js +15 -0
  143. package/dist/esm/{index-3419e46d.js → index-f4d19816.js} +2 -2
  144. package/dist/esm/index.js +25 -25
  145. package/dist/esm/loader.js +3 -3
  146. package/dist/esm/long-press-event-04d24397.js +264 -0
  147. package/dist/esm/package-8986a24c.js +3 -0
  148. package/dist/esm/{post-accordion-7b6fb9c3.js → post-accordion-577b52a0.js} +10 -12
  149. package/dist/esm/{post-accordion-item-d40c0b26.js → post-accordion-item-99053b41.js} +10 -10
  150. package/dist/esm/post-accordion-item.entry.js +5 -3
  151. package/dist/esm/post-accordion.entry.js +5 -3
  152. package/dist/esm/{post-avatar-04ca6e3e.js → post-avatar-2914706c.js} +5 -4
  153. package/dist/esm/post-avatar.entry.js +4 -3
  154. package/dist/esm/post-back-to-top-4c7b1b47.js +94 -0
  155. package/dist/esm/post-back-to-top.entry.js +4 -3
  156. package/dist/esm/{post-banner-7c37e3ef.js → post-banner-295fd0f5.js} +4 -8
  157. package/dist/esm/post-banner.entry.js +4 -3
  158. package/dist/esm/{post-breadcrumb-59e4d655.js → post-breadcrumb-1abfb312.js} +30 -22
  159. package/dist/esm/post-breadcrumb-item_2.entry.js +4 -3
  160. package/dist/esm/post-breadcrumb.entry.js +4 -4
  161. package/dist/esm/{post-card-control-5471488b.js → post-card-control-ad72d4f8.js} +26 -40
  162. package/dist/esm/post-card-control.entry.js +4 -3
  163. package/dist/esm/post-closebutton_15.entry.js +6 -5
  164. package/dist/esm/{post-collapsible-trigger-1f6d816e.js → post-collapsible-trigger-6b4ece20.js} +39 -46
  165. package/dist/esm/post-collapsible_2.entry.js +6 -5
  166. package/dist/esm/post-components.js +3 -3
  167. package/dist/esm/{post-footer-d30f4dc8.js → post-footer-a5105e66.js} +11 -11
  168. package/dist/esm/post-footer.entry.js +4 -4
  169. package/dist/esm/{post-linkarea-8e1a561e.js → post-linkarea-22f97a88.js} +5 -5
  170. package/dist/esm/post-linkarea.entry.js +3 -3
  171. package/dist/esm/{post-menu-item-0c8477eb.js → post-menu-item-9465a1f3.js} +4 -4
  172. package/dist/esm/{post-popover-c43969ca.js → post-popover-e9b4569c.js} +16 -14
  173. package/dist/esm/post-popover.entry.js +5 -4
  174. package/dist/esm/{post-rating-94148df7.js → post-rating-ae16e3c9.js} +4 -14
  175. package/dist/esm/post-rating.entry.js +3 -3
  176. package/dist/esm/{post-tab-header-82df0ba9.js → post-tab-header-11f23150.js} +5 -4
  177. package/dist/esm/post-tab-header.entry.js +4 -3
  178. package/dist/esm/{post-tab-panel-a6512f53.js → post-tab-panel-0f3a952e.js} +4 -4
  179. package/dist/esm/post-tab-panel.entry.js +3 -3
  180. package/dist/esm/{post-tabs-d26ce341.js → post-tabs-1192509c.js} +5 -12
  181. package/dist/esm/post-tabs.entry.js +4 -3
  182. package/dist/esm/{post-tag-41d1667e.js → post-tag-8be0a71c.js} +3 -3
  183. package/dist/esm/post-tag.entry.js +3 -3
  184. package/dist/esm/{post-togglebutton-4f94bddb.js → post-togglebutton-b634fc7c.js} +969 -471
  185. package/dist/esm/{post-tooltip-20f916db.js → post-tooltip-f64bd0cc.js} +39 -296
  186. package/dist/esm/post-tooltip.entry.js +5 -4
  187. package/dist/post-components/index.esm.js +1 -1
  188. package/dist/post-components/p-0889c759.js +1 -0
  189. package/dist/post-components/p-0f398677.js +1 -0
  190. package/dist/post-components/p-1038fc25.js +1 -0
  191. package/dist/post-components/p-30f94eca.entry.js +1 -0
  192. package/dist/post-components/p-31bb6dc5.entry.js +1 -0
  193. package/dist/post-components/p-32173742.js +1 -0
  194. package/dist/post-components/p-338a2507.js +1 -0
  195. package/dist/post-components/p-36540dd6.entry.js +1 -0
  196. package/dist/post-components/p-3aa766a6.js +1 -0
  197. package/dist/post-components/p-3b0158b3.js +1 -0
  198. package/dist/post-components/p-40db8cd5.js +1 -0
  199. package/dist/post-components/p-44f13ce4.entry.js +1 -0
  200. package/dist/post-components/p-46a9324f.entry.js +1 -0
  201. package/dist/post-components/p-49c5aa99.js +1 -0
  202. package/dist/post-components/p-4cd4a936.entry.js +1 -0
  203. package/dist/post-components/p-548ef2f5.entry.js +1 -0
  204. package/dist/post-components/p-58f453dd.js +1 -0
  205. package/dist/post-components/p-5f54b77f.js +1 -0
  206. package/dist/post-components/p-60bb7f26.js +1 -0
  207. package/dist/post-components/p-60bfa4be.entry.js +1 -0
  208. package/dist/post-components/p-6b31a76a.js +1 -0
  209. package/dist/post-components/p-6ee81c5d.js +1 -0
  210. package/dist/post-components/p-6faad212.entry.js +1 -0
  211. package/dist/post-components/p-722ffaae.js +1 -0
  212. package/dist/post-components/p-74a0b44c.entry.js +1 -0
  213. package/dist/post-components/{p-28e77ad3.js → p-78b4c699.js} +1 -1
  214. package/dist/post-components/p-7aa0468b.entry.js +1 -0
  215. package/dist/post-components/p-7afc495e.entry.js +1 -0
  216. package/dist/post-components/p-8db32dab.js +8 -0
  217. package/dist/post-components/p-96034ba4.entry.js +1 -0
  218. package/dist/post-components/p-9aaf9f54.js +1 -0
  219. package/dist/post-components/{p-5c758f41.js → p-9e461613.js} +1 -1
  220. package/dist/post-components/p-ab4073be.js +1 -0
  221. package/dist/post-components/p-abd7eb91.js +8 -0
  222. package/dist/post-components/p-afb8a487.entry.js +1 -0
  223. package/dist/post-components/p-b003b381.js +1 -0
  224. package/dist/post-components/p-b97dea1e.entry.js +1 -0
  225. package/dist/post-components/p-be37cf2a.js +1 -0
  226. package/dist/post-components/p-c31b56ed.js +1 -0
  227. package/dist/post-components/p-ccbb51fe.js +1 -0
  228. package/dist/post-components/p-d3900385.entry.js +1 -0
  229. package/dist/post-components/p-ef49153c.entry.js +1 -0
  230. package/dist/post-components/p-f27e5691.js +1 -0
  231. package/dist/post-components/p-f553019f.entry.js +1 -0
  232. package/dist/post-components/p-ffc1db17.entry.js +1 -0
  233. package/dist/post-components/post-components.esm.js +1 -1
  234. package/dist/types/components/post-avatar/post-avatar.d.ts +1 -1
  235. package/dist/types/components/post-back-to-top/post-back-to-top.d.ts +3 -1
  236. package/dist/types/components/post-card-control/post-card-control.d.ts +1 -1
  237. package/dist/types/components/post-collapsible-trigger/post-collapsible-trigger.d.ts +9 -14
  238. package/dist/types/components/post-footer/post-footer.d.ts +2 -2
  239. package/dist/types/components/post-header/post-header.d.ts +1 -0
  240. package/dist/types/components/post-icon/post-icon.d.ts +0 -1
  241. package/dist/types/components/post-language-switch/post-language-switch.d.ts +5 -5
  242. package/dist/types/components/post-mainnavigation/post-mainnavigation.d.ts +14 -39
  243. package/dist/types/components/post-megadropdown-trigger/post-megadropdown-trigger.d.ts +2 -0
  244. package/dist/types/components/post-menu/post-menu.d.ts +1 -0
  245. package/dist/types/components/post-menu-trigger/post-menu-trigger.d.ts +1 -1
  246. package/dist/types/components/post-popover/post-popover.d.ts +3 -1
  247. package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +1 -1
  248. package/dist/types/components/post-tooltip/post-tooltip.d.ts +6 -1
  249. package/dist/types/components.d.ts +4 -4
  250. package/dist/types/popover-fn.d.ts +11 -0
  251. package/dist/types/utils/environment.d.ts +2 -0
  252. package/dist/types/utils/event-guard.d.ts +4 -0
  253. package/dist/types/utils/get-root.d.ts +4 -0
  254. package/dist/types/utils/index.d.ts +5 -0
  255. package/loaders/attribute-observer.js +3 -1
  256. package/loaders/breakpoints.js +12 -8
  257. package/loaders/event-guard.js +45 -0
  258. package/loaders/get-root.js +7 -1
  259. package/loaders/index.js +3 -3
  260. package/loaders/long-press-event.js +264 -0
  261. package/loaders/package.js +1 -1
  262. package/loaders/post-accordion-item2.js +8 -8
  263. package/loaders/post-accordion.js +8 -10
  264. package/loaders/post-avatar.js +4 -3
  265. package/loaders/post-back-to-top.js +40 -20
  266. package/loaders/post-banner.js +2 -6
  267. package/loaders/post-breadcrumb-item2.js +2 -2
  268. package/loaders/post-breadcrumb.js +28 -20
  269. package/loaders/post-card-control.js +25 -39
  270. package/loaders/post-closebutton.js +8 -3
  271. package/loaders/post-collapsible-trigger2.js +33 -35
  272. package/loaders/post-collapsible2.js +9 -12
  273. package/loaders/post-footer.js +8 -8
  274. package/loaders/post-header.js +18 -20
  275. package/loaders/post-icon2.js +6 -6
  276. package/loaders/post-language-option.js +3 -10
  277. package/loaders/post-language-switch.js +28 -31
  278. package/loaders/post-linkarea.js +5 -4
  279. package/loaders/post-list-item.js +2 -2
  280. package/loaders/post-list.js +2 -3
  281. package/loaders/post-logo.js +3 -2
  282. package/loaders/post-mainnavigation.js +94 -182
  283. package/loaders/post-megadropdown-trigger.js +44 -36
  284. package/loaders/post-megadropdown.js +22 -31
  285. package/loaders/post-menu-trigger2.js +15 -15
  286. package/loaders/post-menu2.js +53 -52
  287. package/loaders/post-popover.js +14 -12
  288. package/loaders/post-popovercontainer2.js +638 -36
  289. package/loaders/post-rating.js +2 -12
  290. package/loaders/post-tab-header.js +4 -3
  291. package/loaders/post-tab-panel.js +3 -3
  292. package/loaders/post-tabs.js +3 -10
  293. package/loaders/post-tag.js +1 -1
  294. package/loaders/post-togglebutton.js +12 -11
  295. package/loaders/post-tooltip.js +37 -294
  296. package/package.json +5 -5
  297. package/dist/cjs/debounce-158fd76f.js +0 -13
  298. package/dist/cjs/get-root-7a3498ef.js +0 -11
  299. package/dist/cjs/post-back-to-top-6a1c1ba4.js +0 -76
  300. package/dist/components/debounce.js +0 -11
  301. package/dist/esm/debounce-e54c7131.js +0 -11
  302. package/dist/esm/get-root-7af2e0d1.js +0 -9
  303. package/dist/esm/package-70367d05.js +0 -3
  304. package/dist/esm/post-back-to-top-abe253c1.js +0 -74
  305. package/dist/post-components/p-015361b5.entry.js +0 -1
  306. package/dist/post-components/p-077edb8c.js +0 -1
  307. package/dist/post-components/p-08a13d05.js +0 -1
  308. package/dist/post-components/p-08c3b919.entry.js +0 -1
  309. package/dist/post-components/p-0d7b0c2e.entry.js +0 -1
  310. package/dist/post-components/p-12f9a91e.entry.js +0 -1
  311. package/dist/post-components/p-20137c6a.entry.js +0 -1
  312. package/dist/post-components/p-21254d9c.entry.js +0 -1
  313. package/dist/post-components/p-22513a27.entry.js +0 -1
  314. package/dist/post-components/p-3638e50d.js +0 -1
  315. package/dist/post-components/p-4397f28e.js +0 -1
  316. package/dist/post-components/p-494a2a31.js +0 -1
  317. package/dist/post-components/p-509987da.entry.js +0 -1
  318. package/dist/post-components/p-5aeb3656.js +0 -1
  319. package/dist/post-components/p-5d0bb74d.js +0 -1
  320. package/dist/post-components/p-5e0f6c12.js +0 -1
  321. package/dist/post-components/p-5f89f4e8.entry.js +0 -1
  322. package/dist/post-components/p-6213f0dc.entry.js +0 -1
  323. package/dist/post-components/p-6ad7bf0f.js +0 -1
  324. package/dist/post-components/p-6f058a98.js +0 -1
  325. package/dist/post-components/p-737d76cb.js +0 -15
  326. package/dist/post-components/p-753a1935.js +0 -1
  327. package/dist/post-components/p-88a2cdaa.js +0 -1
  328. package/dist/post-components/p-90935fdd.js +0 -1
  329. package/dist/post-components/p-931c4523.js +0 -1
  330. package/dist/post-components/p-9748a355.js +0 -1
  331. package/dist/post-components/p-97865e22.entry.js +0 -1
  332. package/dist/post-components/p-a200c9c7.js +0 -1
  333. package/dist/post-components/p-a35c235a.entry.js +0 -1
  334. package/dist/post-components/p-a4264a61.entry.js +0 -1
  335. package/dist/post-components/p-a54c63d0.entry.js +0 -1
  336. package/dist/post-components/p-aebe402d.entry.js +0 -1
  337. package/dist/post-components/p-b43e79e3.entry.js +0 -1
  338. package/dist/post-components/p-c0c71e37.js +0 -1
  339. package/dist/post-components/p-c0ca344d.js +0 -1
  340. package/dist/post-components/p-c554fcf3.js +0 -1
  341. package/dist/post-components/p-cff7c06f.entry.js +0 -1
  342. package/dist/post-components/p-d1f70a05.entry.js +0 -1
  343. package/dist/post-components/p-dc67e6de.entry.js +0 -1
  344. package/dist/post-components/p-e1baac59.js +0 -1
  345. package/dist/post-components/p-f1ceccf3.js +0 -1
  346. package/dist/post-components/p-fc91cbc2.js +0 -1
  347. package/loaders/debounce.js +0 -11
@@ -1,24 +1,63 @@
1
1
  'use strict';
2
2
 
3
- const index = require('./index-d6bf2c66.js');
4
- const _package = require('./package-6f8f430c.js');
3
+ const index = require('./index-b60129c4.js');
4
+ const _package = require('./package-3426e8f7.js');
5
5
  const slide = require('./slide-cd1f09b3.js');
6
+ const eventGuard = require('./event-guard-efabc84f.js');
7
+ const breakpoints = require('./breakpoints-cdf1b747.js');
6
8
  const index$1 = require('./index-23e36ff7.js');
7
9
  const checkNonEmpty = require('./check-non-empty-bd99d236.js');
8
10
  const checkType = require('./check-type-cdbf6d29.js');
9
11
  const index_browser = require('./index.browser-2f65f583.js');
10
- const breakpoints = require('./breakpoints-c6247c71.js');
11
- const getRoot = require('./get-root-7a3498ef.js');
12
+ const getRoot = require('./get-root-8102fecd.js');
13
+
14
+ const focusableSelector = `:where(${[
15
+ 'button',
16
+ 'input:not([type="hidden"])',
17
+ '[tabindex]',
18
+ 'select',
19
+ 'textarea',
20
+ '[contenteditable]',
21
+ 'a[href]',
22
+ 'iframe',
23
+ 'audio[controls]',
24
+ 'video[controls]',
25
+ 'area[href]',
26
+ 'details > summary:first-of-type',
27
+ ].join(',')})`;
28
+ const focusDisablingSelector = `:where(${[
29
+ '[inert]',
30
+ '[inert] *',
31
+ ':disabled',
32
+ 'dialog:not([open]) *',
33
+ '[popover]:not(:popover-open) *',
34
+ 'details:not([open]) > *:not(details > summary:first-of-type)',
35
+ 'details:not([open]) > *:not(details > summary:first-of-type) *',
36
+ '[tabindex^="-"]',
37
+ '[hidden]:not([hidden="false"])',
38
+ ].join(',')})`;
39
+ function getFocusableChildren(element) {
40
+ const focusableChildren = element.querySelectorAll(`${focusableSelector}:not(${focusDisablingSelector})`);
41
+ const visibleFocusableChildren = Array.from(focusableChildren).filter(child => {
42
+ const style = window.getComputedStyle(child.parentElement);
43
+ return style.display !== 'none' && style.visibility !== 'hidden';
44
+ });
45
+ return visibleFocusableChildren;
46
+ }
47
+
48
+ const postClosebuttonCss = ".btn-icon-close{padding:0;border:unset;min-height:unset;min-width:unset;width:var(--post-device-sizing-notification-1);height:var(--post-device-sizing-notification-1);border-radius:var(--post-device-border-radius-round);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg)}.btn-icon-close>post-icon{min-width:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);height:var(--post-device-sizing-interactive-icon-size4)}.btn-icon-close:not(:disabled):hover,.btn-icon-close.pretend-hover{cursor:pointer;background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-icon-close:not(:disabled):hover,.btn-icon-close.pretend-hover{color:HighlightText !important}}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}";
49
+ const PostClosebuttonStyle0 = postClosebuttonCss;
12
50
 
13
51
  const PostClosebutton = class {
14
52
  constructor(hostRef) {
15
53
  index.registerInstance(this, hostRef);
16
54
  }
17
- get host() { return index.getElement(this); }
18
55
  render() {
19
- return (index.h(index.Host, { key: 'c03f50379252ba13992bc3d021989ac07dba9f79', "data-version": _package.version }, index.h("button", { key: 'e97a86bb6e1eace89a1a3a78fb231047f065dd5e', class: "btn btn-icon-close", type: "button" }, index.h("post-icon", { key: 'aca522d4c251a8183c91c2bd4d810d0716a2fe13', "aria-hidden": "true", name: "closex" }), index.h("span", { key: '6873522961b1683d1261163b07ee022f93eed836', class: "visually-hidden" }, index.h("slot", { key: 'bf4b13356c9a0164f1481d1fedc3a78a53e5f8e0' })))));
56
+ return (index.h(index.Host, { key: 'cfa55f799fdf9ad0f3ac1eb296e063b5001de997', "data-version": _package.version }, index.h("button", { key: '7c8a084f6d7278329ddfb5fc4b2b8f992a185666', class: "btn btn-icon-close", type: "button" }, index.h("post-icon", { key: 'fc74ccb4f0c4c091a02a41cdef918d6c3b065c8c', "aria-hidden": "true", name: "closex" }), index.h("span", { key: '98478b013714df6d82c6c2f533ac8ecd2abae778', class: "visually-hidden" }, index.h("slot", { key: '109e2bca4436986dd037d8c29088cc79395bc200' })))));
20
57
  }
58
+ get host() { return index.getElement(this); }
21
59
  };
60
+ PostClosebutton.style = PostClosebuttonStyle0;
22
61
 
23
62
  /* eslint-disable no-undefined,no-param-reassign,no-shadow */
24
63
 
@@ -154,51 +193,10 @@ function throttle (delay, callback, options) {
154
193
  return wrapper;
155
194
  }
156
195
 
157
- const focusableSelector = `:where(${[
158
- 'button',
159
- 'input:not([type="hidden"])',
160
- '[tabindex]',
161
- 'select',
162
- 'textarea',
163
- '[contenteditable]',
164
- 'a[href]',
165
- 'iframe',
166
- 'audio[controls]',
167
- 'video[controls]',
168
- 'area[href]',
169
- 'details > summary:first-of-type',
170
- ].join(',')})`;
171
- const focusDisablingSelector = `:where(${[
172
- '[inert]',
173
- '[inert] *',
174
- ':disabled',
175
- 'dialog:not([open]) *',
176
- '[popover]:not(:popover-open) *',
177
- 'details:not([open]) > *:not(details > summary:first-of-type)',
178
- 'details:not([open]) > *:not(details > summary:first-of-type) *',
179
- '[tabindex^="-"]',
180
- '[hidden]:not([hidden="false"])',
181
- ].join(',')})`;
182
- function getFocusableChildren(element) {
183
- const focusableChildren = element.querySelectorAll(`${focusableSelector}:not(${focusDisablingSelector})`);
184
- const visibleFocusableChildren = Array.from(focusableChildren).filter(child => {
185
- const style = window.getComputedStyle(child.parentElement);
186
- return style.display !== 'none' && style.visibility !== 'hidden';
187
- });
188
- return visibleFocusableChildren;
189
- }
190
-
191
- const postHeaderCss = "*,::before,::after{box-sizing:border-box}:host{z-index:1020;position:relative;--global-header-top:calc( (var(--global-header-height) - var(--global-header-reduced-height)) * -1 );--local-header-top:calc( -1 * (var(--local-header-height) - var(--main-navigation-height)) + var(--global-header-reduced-height) );--logo-height:calc(var(--global-header-height) - var(--header-scroll-top));--global-controls-top:calc(min((var(--header-scroll-top) / 4), 20px) * -1)}:host:has(.global-sub>*:not(.logo):focus-within),:host:has(.local-sub:focus-within){--global-header-top:0;--local-header-top:var(--global-header-height);--logo-height:var(--global-header-height);--global-controls-top:0}:host(:not(:has([slot=title]))) .local-header{padding-block-start:0}:host(:not(:has([slot=title]))) .local-sub{display:none}.d-flex{display:flex}.space-between{justify-content:space-between}.global-header{background-color:#fc0;display:flex;justify-content:space-between;position:sticky;padding-inline:4px;height:var(--global-header-height)}@media screen and (max-width: 1023.98px){.global-header{z-index:3;inset-block-start:0}}@media screen and (min-width: 1024px){.global-header{z-index:5;padding-inline-end:12px;inset-block-start:var(--global-header-top);transition:inset-block-start .2s ease-in-out}}.global-sub{display:flex;align-items:center;gap:24px}@media screen and (min-width: 1024px){.global-sub:not(:has(.logo)){position:relative;transition:inset-block-start .2s ease-in-out;inset-block-start:var(--global-controls-top)}}.align-end{align-items:flex-end}.logo{flex:1 0 auto;height:var(--global-header-height);width:var(--global-header-height);min-height:var(--global-header-reduced-height);align-self:flex-end}@media screen and (min-width: 1024px){.logo{transition:height .2 ease-in-out;height:var(--logo-height)}}::slotted(ul){margin-block:0 !important;list-style:none;display:flex;padding-inline-start:0;gap:1rem;flex-shrink:0 !important}.local-header{display:flex;position:sticky;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px;min-height:var(--local-header-min-height);background:#fff;transition:box-shadow .2s ease-in-out}.local-header::after{content:\"\";position:absolute;width:100%;height:1px;background-color:#e1e0dc;inset-block-end:-1px;z-index:1}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.local-header::after{background-color:Highlight}}@media screen and (min-width: 1024px){.local-header{z-index:3;inset-block-start:var(--local-header-top);padding-block-start:18px;box-shadow:var(--post-device-elevation-300);transition:box-shadow .2s ease-in-out,inset-block-start .2s ease-in-out}}@media screen and (max-width: 1023.98px){.local-header{z-index:2;inset-block-start:var(--global-header-height);padding-block:12px;flex-wrap:wrap;gap:16px}.local-header.local-header-mobile-extended::after{inset-block-end:0}.local-header:not(.local-header-mobile-extended){box-shadow:var(--post-device-elevation-300)}}.local-sub{margin-inline-end:8px}@media screen and (max-width: 1023.98px){.local-sub{margin-inline-end:4px}}::slotted(.list-inline){margin:0 !important;z-index:3 !important;position:relative !important}@media screen and (min-width: 1024px){.mobile-toggle{display:none}}.navigation{width:100%}@media screen and (min-width: 1024px){.navigation{inset-block-start:var(--global-header-reduced-height)}.navigation::before{display:block;content:\"\";position:absolute;inset:0;z-index:2;background:#fff}}@media screen and (max-width: 1023.98px){.navigation{position:sticky;z-index:1;inset-inline:0;inset-block-start:var(--header-height)}.mobile-menu{background-color:#fafafa}::slotted(post-mainnavigation),.navigation-footer{display:none;flex-direction:column;padding-block:16px 24px;padding-inline:32px}.navigation.extended ::slotted(post-mainnavigation),.navigation.extended .navigation-footer{display:flex}.navigation.extended>div{display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;height:calc(min(var(--header-scroll-parent-height, 100dvh),100dvh) - var(--header-height))}.navigation.extended.megadropdown-open>div{overflow-y:hidden}.navigation.extended ::slotted(post-mainnavigation){flex-grow:1 !important}::slotted(post-mainnavigation){gap:32px}.navigation-footer{background-color:#f0efed;gap:24px}}@media screen and (max-width: 599.98px){::slotted(post-mainnavigation),.navigation-footer{padding-inline:16px}}";
196
+ const postHeaderCss = "*,::before,::after{box-sizing:border-box}:host{z-index:1020;position:relative;--global-header-top:calc( (var(--post-global-header-height) - var(--post-global-header-reduced-height)) * -1 );--local-header-top:calc( -1 * (var(--post-local-header-height) - var(--post-main-navigation-height)) + var(--post-global-header-reduced-height) );--logo-height:calc(var(--post-global-header-height) - var(--post-header-scroll-top, 0px));--global-controls-top:calc(min((var(--post-header-scroll-top) / 4), 20px) * -1)}:host:has(.global-sub>*:not(.logo):focus-within),:host:has(.local-sub:focus-within){--global-header-top:0;--local-header-top:var(--post-global-header-height);--logo-height:var(--post-global-header-height);--global-controls-top:0}:host(:not(:has([slot=title]))) .local-header{padding-block-start:0}:host(:not(:has([slot=title]))) .local-sub{display:none}.d-flex{display:flex}.space-between{justify-content:space-between}.global-header{background-color:#fc0;display:flex;justify-content:space-between;position:sticky;padding-inline:4px;height:var(--post-global-header-height)}@media screen and (max-width: 1023.98px){.global-header{z-index:3;inset-block-start:0}}@media screen and (min-width: 1024px){.global-header{z-index:5;padding-inline-end:12px;inset-block-start:var(--global-header-top);transition:inset-block-start .2s ease-in-out}}.global-sub{display:flex;align-items:center;gap:24px}@media screen and (min-width: 1024px){.global-sub:not(:has(.logo)){position:relative;transition:inset-block-start .2s ease-in-out;inset-block-start:var(--global-controls-top)}}.align-end{align-items:flex-end}.logo{flex:1 0 auto;height:var(--post-global-header-height);width:var(--post-global-header-height);min-height:var(--post-global-header-reduced-height);align-self:flex-end}@media screen and (min-width: 1024px){.logo{transition:height .2 ease-in-out;height:var(--logo-height)}}::slotted(ul){margin-block:0 !important;list-style:none;display:flex;padding-inline-start:0;gap:1rem;flex-shrink:0 !important}.local-header{display:flex;position:sticky;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px;min-height:var(--post-local-header-min-height);background:#fff;transition:box-shadow .2s ease-in-out}.local-header::after{content:\"\";position:absolute;width:100%;height:1px;background-color:#e1e0dc;inset-block-end:-1px;z-index:1}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.local-header::after{background-color:Highlight}}@media screen and (min-width: 1024px){.local-header{z-index:3;inset-block-start:var(--local-header-top);padding-block-start:18px;box-shadow:var(--post-device-elevation-300);transition:box-shadow .2s ease-in-out,inset-block-start .2s ease-in-out}}@media screen and (max-width: 1023.98px){.local-header{z-index:2;inset-block-start:var(--post-global-header-height);padding-block:8px;flex-wrap:wrap;gap:12px}.local-header.local-header-mobile-extended::after{inset-block-end:0}.local-header:not(.local-header-mobile-extended){box-shadow:var(--post-device-elevation-300)}}.local-sub{margin-inline-end:8px}@media screen and (max-width: 1023.98px){.local-sub{margin-inline-end:4px}}::slotted(.list-inline){margin:0 !important;z-index:3 !important;position:relative !important}@media screen and (min-width: 1024px){.mobile-toggle{display:none}}.navigation{width:100%}@media screen and (min-width: 1024px){.navigation{inset-block-start:var(--post-global-header-reduced-height)}.navigation::before{display:block;content:\"\";position:absolute;inset:0;z-index:2;background:#fff}}@media screen and (max-width: 1023.98px){.navigation{position:sticky;z-index:1;inset-inline:0;inset-block-start:var(--post-header-height)}.mobile-menu{background-color:#fafafa}::slotted(post-mainnavigation),.navigation-footer{display:none;flex-direction:column;padding-block:16px 24px;padding-inline:32px}.navigation.extended ::slotted(post-mainnavigation),.navigation.extended .navigation-footer{display:flex}.navigation.extended>div{display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;height:calc(min(var(--header-scroll-parent-height, 100dvh),100dvh) - var(--post-header-height))}.navigation.extended.megadropdown-open>div{overflow-y:hidden}.navigation.extended ::slotted(post-mainnavigation){flex-grow:1 !important}::slotted(post-mainnavigation){gap:32px}.navigation-footer{background-color:#f0efed;gap:24px}}@media screen and (max-width: 599.98px){::slotted(post-mainnavigation),.navigation-footer{padding-inline:16px}}";
192
197
  const PostHeaderStyle0 = postHeaderCss;
193
198
 
194
199
  const PostHeader = class {
195
- firstFocusableEl;
196
- lastFocusableEl;
197
- mobileMenu;
198
- mobileMenuAnimation;
199
- throttledResize = throttle(50, () => this.handleResize());
200
- scrollParentResizeObserver;
201
- localHeaderResizeObserver;
202
200
  get scrollParent() {
203
201
  const frozenScrollParent = document.querySelector('[data-post-scroll-locked]');
204
202
  if (frozenScrollParent)
@@ -213,7 +211,6 @@ const PostHeader = class {
213
211
  }
214
212
  return document.body;
215
213
  }
216
- get host() { return index.getElement(this); }
217
214
  lockBody(newValue, _oldValue, propName) {
218
215
  const scrollParent = this.scrollParent;
219
216
  const mobileMenuExtended = propName === 'mobileMenuExtended' ? newValue : this.mobileMenuExtended;
@@ -226,13 +223,18 @@ const PostHeader = class {
226
223
  this.host.removeEventListener('keydown', this.keyboardHandler);
227
224
  }
228
225
  }
229
- /**
230
- * An event emitted when the device has changed
231
- */
232
- postUpdateDevice;
233
226
  constructor(hostRef) {
234
227
  index.registerInstance(this, hostRef);
235
228
  this.postUpdateDevice = index.createEvent(this, "postUpdateDevice", 7);
229
+ this.throttledResize = throttle(50, () => this.handleResize());
230
+ this.megedropdownStateHandler = (event) => {
231
+ eventGuard.eventGuard(this.host, event, {
232
+ targetLocalName: 'post-megadropdown',
233
+ delegatorSelector: 'post-header',
234
+ }, () => {
235
+ this.megadropdownOpen = event.detail.isVisible;
236
+ });
237
+ };
236
238
  this.device = null;
237
239
  this.mobileMenuExtended = false;
238
240
  this.megadropdownOpen = false;
@@ -254,10 +256,12 @@ const PostHeader = class {
254
256
  document.addEventListener('postToggleMegadropdown', this.megedropdownStateHandler);
255
257
  this.host.addEventListener('click', this.handleLinkClick);
256
258
  this.handleResize();
257
- this.handleScrollEvent();
258
259
  this.handleScrollParentResize();
259
260
  this.lockBody(false, this.mobileMenuExtended, 'mobileMenuExtended');
260
261
  }
262
+ componentWillRender() {
263
+ this.handleScrollEvent();
264
+ }
261
265
  componentDidRender() {
262
266
  this.getFocusableElements();
263
267
  this.handleLocalHeaderResize();
@@ -303,9 +307,6 @@ const PostHeader = class {
303
307
  });
304
308
  }
305
309
  }
306
- megedropdownStateHandler(event) {
307
- this.megadropdownOpen = event.detail.isVisible;
308
- }
309
310
  // Get all the focusable elements in the post-header mobile menu
310
311
  getFocusableElements() {
311
312
  // Get elements in the correct order (different as the DOM order)
@@ -338,11 +339,11 @@ const PostHeader = class {
338
339
  }
339
340
  handleScrollEvent() {
340
341
  const scrollTop = this.scrollParent === document.body ? window.scrollY : this.scrollParent.scrollTop;
341
- this.host.style.setProperty('--header-scroll-top', `${scrollTop}px`);
342
+ document.documentElement.style.setProperty('--post-header-scroll-top', `${scrollTop}px`);
342
343
  }
343
344
  updateLocalHeaderHeight() {
344
345
  const localHeaderHeight = this.host.shadowRoot.querySelector('.local-header')?.clientHeight || 0;
345
- this.host.style.setProperty('--local-header-height', `${localHeaderHeight}px`);
346
+ document.documentElement.style.setProperty('--post-local-header-height', `${localHeaderHeight}px`);
346
347
  }
347
348
  updateScrollParentHeight() {
348
349
  this.host.style.setProperty('--header-scroll-parent-height', `${this.scrollParent.clientHeight}px`);
@@ -417,8 +418,9 @@ const PostHeader = class {
417
418
  return (index.h("div", { class: navigationClasses.join(' '), style: { '--header-navigation-current-inset': `${mobileMenuScrollTop}px` } }, index.h("div", { class: "mobile-menu", ref: el => (this.mobileMenu = el) }, index.h("slot", { name: "post-mainnavigation" }), (this.device === 'mobile' || this.device === 'tablet') && (index.h("div", { class: "navigation-footer" }, index.h("slot", { name: "meta-navigation" }), index.h("slot", { name: "post-language-switch" }))))));
418
419
  }
419
420
  render() {
420
- return (index.h(index.Host, { key: '1cc6cb8fb53d744a3e857b39fe6d59dcc52616f6', version: _package.version }, index.h("div", { key: 'f2b0993095d6173cd6e6652f68a6d86cccaca0cf', class: "global-header" }, index.h("div", { key: '3199a8bfe40e617b9aa41235a836b0346afe3f5f', class: "global-sub" }, index.h("div", { key: 'acf05b7b78ca758b75b4c999a262506dc43b1692', class: "logo" }, index.h("slot", { key: '21d50a2e983f3572ce33828fd69a3eff01983206', name: "post-logo" }))), index.h("div", { key: '7222c559dca81ae94b18a5a88825169fa05b887e', class: "global-sub" }, this.device === 'desktop' && index.h("slot", { key: '4948c8d13318987f9c419ac73d901e558f763d0d', name: "meta-navigation" }), index.h("slot", { key: '2a10e4dc73716b3fd39fd9fb534678c6203f60e3', name: "global-controls" }), this.device === 'desktop' && index.h("slot", { key: '5786dcda4ca017500916ea4c9da604da46a0e2f5', name: "post-language-switch" }), index.h("div", { key: 'a2326d26003bb8101dc0236426b26f1f11bdd9df', onClick: () => this.toggleMobileMenu(), class: "mobile-toggle" }, index.h("slot", { key: 'e75d428c8a5644bcd979607de1ca85ad435e096d', name: "post-togglebutton" })))), index.h("div", { key: 'c40d1e10ce6e13e2cae5f8395ad9281dce50975e', class: 'local-header ' + (this.mobileMenuExtended ? 'local-header-mobile-extended' : '') }, index.h("slot", { key: 'e37002ea2d9d74fdfa0773cb2ca90f7e9560f193', name: "title" }), index.h("div", { key: 'fe1e158e00458d1232c5b0e9ae22c63e77b25ac6', class: "local-sub" }, index.h("slot", { key: '4b504f9652a403cf89b0a371a803251923758155', name: "local-controls" }), index.h("slot", { key: 'c02b89240f8df106f138bc14312031511c5462f6' })), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation()));
421
+ return (index.h(index.Host, { key: 'd8b43333c00a612a3a37479750874a1efaf6a855', "data-version": _package.version }, index.h("div", { key: 'b270fb139cc8730a774785c5535fb3bcdd60c59c', class: "global-header" }, index.h("div", { key: 'b3161c4b26a1be4707fa6c7360e6779547b7ab30', class: "global-sub" }, index.h("div", { key: '44ecddd8f91c86d1af0075718b63e6bf034a25b7', class: "logo" }, index.h("slot", { key: 'de5208255d0cf59707092c984b0fec33d317d38d', name: "post-logo" }))), index.h("div", { key: '199dc1da25d817b488d5c3402779130c360e0f9a', class: "global-sub" }, this.device === 'desktop' && index.h("slot", { key: '1337f13908a826022a1bf2a8a1a2e2bfe323900b', name: "meta-navigation" }), index.h("slot", { key: '2b6fbbcedc8f1803e388fdbcbcd637d6a2605c87', name: "global-controls" }), this.device === 'desktop' && index.h("slot", { key: '2861c1a0f7639678edd0f584d8f98665fcf84fb0', name: "post-language-switch" }), index.h("div", { key: '06e2d9a4abe3a804f25ffa303f6f9ed5b7c01b60', onClick: () => this.toggleMobileMenu(), class: "mobile-toggle" }, index.h("slot", { key: '772407e65d3d8f642c1e80fd8cb42b425eed4848', name: "post-togglebutton" })))), index.h("div", { key: '7b7a3da2a8cc848632c2e45badc52e23958a6faa', class: 'local-header ' + (this.mobileMenuExtended ? 'local-header-mobile-extended' : '') }, index.h("slot", { key: '96e4d68bfe0504cc09d57a8b11dabb9139d780f6', name: "title" }), index.h("div", { key: '240fae6f0f9d2a192a7b94110a9c4571856de90a', class: "local-sub" }, index.h("slot", { key: '14fd77af7dca02157248bf95d7d253d5f14e9f1e', name: "local-controls" }), index.h("slot", { key: '6dfac25cb64401123638ddfc6b94bbe89ae78249' })), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation()));
421
422
  }
423
+ get host() { return index.getElement(this); }
422
424
  static get watchers() { return {
423
425
  "device": ["lockBody"],
424
426
  "mobileMenuExtended": ["lockBody"]
@@ -429,7 +431,7 @@ PostHeader.style = PostHeaderStyle0;
429
431
  const postIconCss = ":host{display:inline-block;width:1em;height:1em;vertical-align:-0.15em}span{display:block;width:100%;height:100%;fill:currentColor;forced-color-adjust:preserve-parent-color;background-color:currentColor;-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}:host([flip-h]:not([flip-h=false])){scale:-1 1}:host([flip-v]:not([flip-v=false])){scale:1 -1}:host([flip-h][flip-v]:not([flip-h=false],[flip-v=false])){scale:-1}:host([animation]){transform-origin:center}:host([animation=cylon]){animation:icon-animation-cylon .75s ease-in-out infinite alternate}:host([animation=cylon-vertical]){animation:icon-animation-cylon-vertical .75s ease-in-out infinite alternate}:host([animation=spin]){animation:icon-animation-spin 2s linear infinite normal}:host([animation=spin-reverse]){animation:icon-animation-spin 2s linear infinite reverse}:host([animation=fade]){animation:icon-animation-fade .75s ease-in-out infinite alternate}:host([animation=throb]){animation:icon-animation-throb .75s ease-in-out infinite alternate}@keyframes icon-animation-cylon{from{transform:translateX(-25%)}to{transform:translateX(25%)}}@keyframes icon-animation-cylon-vertical{from{transform:translateY(25%)}to{transform:translateY(-25%)}}@keyframes icon-animation-fade{from{opacity:.1}to{opacity:1}}@keyframes icon-animation-spin{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes icon-animation-throb{from{opacity:.5;transform:scale(0.5)}to{opacity:1;transform:scale(1)}}";
430
432
  const PostIconStyle0 = postIconCss;
431
433
 
432
- const CDN_URL = 'https://unpkg.com/@swisspost/design-system-icons/public/post-icons/';
434
+ const CDN_URL = `https://unpkg.com/@swisspost/design-system-icons@${_package.version}/public/post-icons/`;
433
435
  const ANIMATION_NAMES = [
434
436
  'cylon',
435
437
  'cylon-vertical',
@@ -450,8 +452,6 @@ const PostIcon = class {
450
452
  this.rotate = null;
451
453
  this.scale = null;
452
454
  }
453
- isSSR = typeof window === 'undefined';
454
- get host() { return index.getElement(this); }
455
455
  validateAnimation(newValue = this.animation) {
456
456
  if (newValue !== undefined)
457
457
  index$1.checkEmptyOrOneOf(this, 'animation', ANIMATION_KEYS);
@@ -482,7 +482,7 @@ const PostIcon = class {
482
482
  // the first definition object which defines a domain, will be used to set the domain of the file url
483
483
  // the first definition object which defines a slug, will be used to set the slug of the file url
484
484
  const urlDefinitions = [this.getUrlDefinition(this.base, 'both')];
485
- if (!this.isSSR) {
485
+ if (breakpoints.IS_BROWSER) {
486
486
  urlDefinitions.push(this.getUrlDefinition(document.head
487
487
  .querySelector('meta[name="design-system-settings"][data-post-icon-base]')
488
488
  ?.getAttribute('data-post-icon-base'), 'relative'));
@@ -546,8 +546,9 @@ const PostIcon = class {
546
546
  this.validateAnimation();
547
547
  }
548
548
  render() {
549
- return (index.h(index.Host, { key: 'c80aaf693f730902c4ae57ca78360eee5dedf624', "data-version": _package.version }, index.h("span", { key: '7e01e1cf7e4fec380e8f054d3cc8fa5404c7a829', style: this.getStyles() })));
549
+ return (index.h(index.Host, { key: 'b3c3efcc03f423a248e231b4b4c5d79c93ae25a6', "data-version": _package.version }, index.h("span", { key: 'd73d4df11fcccb96d5346f3f8c3e18602bb8d484', style: this.getStyles() })));
550
550
  }
551
+ get host() { return index.getElement(this); }
551
552
  static get watchers() { return {
552
553
  "animation": ["validateAnimation"],
553
554
  "base": ["validateBase"],
@@ -574,7 +575,6 @@ const PostLanguageOption = class {
574
575
  this.name = undefined;
575
576
  this.url = undefined;
576
577
  }
577
- get host() { return index.getElement(this); }
578
578
  validateCode() {
579
579
  checkType.checkType(this, 'code', 'string');
580
580
  }
@@ -599,14 +599,6 @@ const PostLanguageOption = class {
599
599
  this.postLanguageOptionInitiallyActive.emit(this.code);
600
600
  }
601
601
  }
602
- /**
603
- * An event emitted when the language option is clicked. The payload is the ISO 639 code of the language.
604
- */
605
- postChange;
606
- /**
607
- * An event emitted when the language option is initially active. The payload is the ISO 639 code of the language.
608
- */
609
- postLanguageOptionInitiallyActive;
610
602
  /**
611
603
  * Selects the language option programmatically.
612
604
  */
@@ -627,8 +619,9 @@ const PostLanguageOption = class {
627
619
  this.emitChange();
628
620
  }
629
621
  };
630
- return (index.h(index.Host, { key: '404caa6a507637810b672c5decf4e3af300733ac', "data-version": _package.version }, this.url ? (index.h("a", { "aria-current": this.active ? 'page' : undefined, "aria-label": this.name, href: this.url, hrefLang: lang, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, index.h("slot", null))) : (index.h("button", { "aria-current": this.active ? 'true' : undefined, "aria-label": this.name, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, index.h("slot", null)))));
622
+ return (index.h(index.Host, { key: '3a6b9a8f63c90f431a13c1df529a2e4716ede5d8', "data-version": _package.version }, this.url ? (index.h("a", { "aria-current": this.active ? 'page' : undefined, "aria-label": this.name, href: this.url, hrefLang: lang, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, index.h("slot", null))) : (index.h("button", { "aria-current": this.active ? 'true' : undefined, "aria-label": this.name, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, index.h("slot", null)))));
631
623
  }
624
+ get host() { return index.getElement(this); }
632
625
  static get watchers() { return {
633
626
  "code": ["validateCode"],
634
627
  "active": ["validateActiveProp"],
@@ -640,18 +633,21 @@ PostLanguageOption.style = PostLanguageOptionStyle0;
640
633
 
641
634
  const SWITCH_VARIANTS = ['list', 'menu'];
642
635
 
643
- const postLanguageSwitchCss = ":host{display:flex !important;flex-wrap:wrap;gap:.5rem}.post-language-switch-dropdown-container{display:flex;flex-direction:column}.post-language-switch-trigger{cursor:pointer;text-transform:uppercase;padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;text-decoration:none;display:inline-flex;align-items:center;gap:6px;border-radius:24px;font-size:16px;padding:3px 12px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger{background-color:ButtonFace !important}.post-language-switch-trigger:hover{background-color:Highlight !important}}.post-language-switch-trigger{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}.post-language-switch-trigger: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){.post-language-switch-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.post-language-switch-trigger: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){.post-language-switch-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.post-language-switch-trigger:not(:disabled):hover,.post-language-switch-trigger.pretend-hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}.post-language-switch-trigger post-icon{height:24px;width:24px}.post-language-switch-trigger[aria-expanded=true]{background-color:#050400;color:#fff}.post-language-switch-trigger[aria-expanded=true] post-icon{transform:rotate(180deg)}.post-language-switch-trigger[aria-expanded=true]:hover{background-color:#504f4b;color:#fff}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger{border:1px solid ButtonBorder}.post-language-switch-trigger[aria-expanded=true] post-icon,.post-language-switch-trigger:hover post-icon{color:HighlightText}}";
636
+ const postLanguageSwitchCss = ":host{display:flex !important;flex-wrap:wrap;gap:.5rem}.post-language-switch-dropdown-container{display:flex;flex-direction:column}.post-language-switch-trigger{cursor:pointer;text-transform:uppercase;padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;text-decoration:none;display:inline-flex;align-items:center;gap:6px;border-radius:24px;font-size:16px;padding:3px 10px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger{background-color:ButtonFace !important}.post-language-switch-trigger:hover{background-color:Highlight !important}}.post-language-switch-trigger{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}.post-language-switch-trigger: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){.post-language-switch-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.post-language-switch-trigger: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){.post-language-switch-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.post-language-switch-trigger:not(:disabled):hover,.post-language-switch-trigger.pretend-hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}.post-language-switch-trigger post-icon{height:24px;width:24px}.post-language-switch-trigger[aria-expanded=true]{background-color:#050400;color:#fff}.post-language-switch-trigger[aria-expanded=true] post-icon{transform:rotate(180deg)}.post-language-switch-trigger[aria-expanded=true]:hover{background-color:#504f4b;color:#fff}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger{border:1px solid ButtonBorder}.post-language-switch-trigger[aria-expanded=true] post-icon,.post-language-switch-trigger:hover post-icon{color:HighlightText}}";
644
637
  const PostLanguageSwitchStyle0 = postLanguageSwitchCss;
645
638
 
646
639
  const PostLanguageSwitch = class {
647
640
  constructor(hostRef) {
648
641
  index.registerInstance(this, hostRef);
642
+ this.menuId = `p${index_browser.nanoid(11)}`;
649
643
  this.caption = undefined;
650
644
  this.description = undefined;
651
645
  this.variant = 'list';
652
646
  this.activeLang = undefined;
653
647
  }
654
- get host() { return index.getElement(this); }
648
+ get languageOptions() {
649
+ return Array.from(this.host.querySelectorAll('post-language-option'));
650
+ }
655
651
  validateCaption() {
656
652
  checkType.checkType(this, 'caption', 'string');
657
653
  }
@@ -669,24 +665,28 @@ const PostLanguageSwitch = class {
669
665
  // Initially set variants and active language
670
666
  // Handles cases where the language-switch is rendered after the language-options have been rendered
671
667
  this.updateChildrenVariant();
672
- this.updateActiveLanguage();
673
668
  }
669
+ /**
670
+ * Listen for the postChange event and guard it to run only for events originating from a <post-language-option> element.
671
+ */
674
672
  handlePostChange(event) {
675
- this.activeLang = event.detail;
676
- // Update the active state in the children post-language-option components
677
- this.languageOptions.forEach(lang => {
678
- if (lang.code && lang.code === this.activeLang) {
679
- lang.setAttribute('active', '');
680
- }
681
- else {
682
- lang.removeAttribute('active');
673
+ eventGuard.eventGuard(this.host, event, { targetLocalName: 'post-language-option', delegatorSelector: 'post-language-switch' }, () => {
674
+ this.activeLang = event.detail;
675
+ // Update the active state in the children post-language-option components
676
+ this.languageOptions.forEach(lang => {
677
+ if (lang.code && lang.code === this.activeLang) {
678
+ lang.setAttribute('active', '');
679
+ }
680
+ else {
681
+ lang.removeAttribute('active');
682
+ }
683
+ });
684
+ // Hides the dropdown when an option has been clicked
685
+ if (this.variant === 'menu') {
686
+ const menu = this.host.shadowRoot.querySelector('post-menu');
687
+ menu.hide();
683
688
  }
684
689
  });
685
- // Hides the dropdown when an option has been clicked
686
- if (this.variant === 'menu') {
687
- const menu = this.host.shadowRoot.querySelector('post-menu');
688
- menu.hide();
689
- }
690
690
  }
691
691
  /**
692
692
  * Handles cases where the language switch is being rendered before options are available
@@ -695,34 +695,22 @@ const PostLanguageSwitch = class {
695
695
  handleInitiallyActive(event) {
696
696
  this.activeLang = event.detail;
697
697
  }
698
- get languageOptions() {
699
- return this.host.querySelectorAll('post-language-option');
700
- }
701
- get activeLanguageOption() {
702
- return this.host.querySelector('post-language-option[active]:not([active="false"])');
703
- }
704
- handleSlotChange() {
705
- this.updateActiveLanguage();
706
- }
707
- updateActiveLanguage() {
708
- this.activeLang = this.activeLanguageOption.getAttribute('code');
709
- }
710
698
  // Update post-language-option variant to have the correct style
711
699
  updateChildrenVariant() {
712
700
  this.languageOptions.forEach(el => {
713
701
  el.setAttribute('variant', this.variant);
714
702
  });
715
703
  }
716
- menuId = `p${index_browser.nanoid(11)}`;
717
704
  renderList() {
718
- return (index.h(index.Host, { "data-version": _package.version, role: "list", "aria-label": this.caption }, index.h("div", { class: "post-language-switch-list", role: "group", "aria-label": this.description }, index.h("slot", { onSlotchange: () => this.handleSlotChange() }))));
705
+ return (index.h(index.Host, { "data-version": _package.version, role: "list", "aria-label": this.caption }, index.h("div", { class: "post-language-switch-list", role: "group", "aria-label": this.description }, index.h("slot", null))));
719
706
  }
720
707
  renderDropdown() {
721
- return (index.h(index.Host, { "data-version": _package.version }, index.h("post-menu-trigger", { for: this.menuId }, index.h("button", { class: "post-language-switch-trigger", "aria-label": this.description }, this.activeLang, index.h("post-icon", { "aria-hidden": "true", name: "chevrondown" }))), index.h("post-menu", { id: this.menuId, class: "post-language-switch-dropdown-container", "aria-label": this.caption }, index.h("slot", { onSlotchange: () => this.handleSlotChange() }))));
708
+ return (index.h(index.Host, { "data-version": _package.version }, index.h("post-menu-trigger", { for: this.menuId }, index.h("button", { class: "post-language-switch-trigger", "aria-label": this.description }, this.activeLang, index.h("post-icon", { "aria-hidden": "true", name: "chevrondown" }))), index.h("post-menu", { id: this.menuId, class: "post-language-switch-dropdown-container", "aria-label": this.caption }, index.h("slot", null))));
722
709
  }
723
710
  render() {
724
711
  return this.variant === 'list' ? this.renderList() : this.renderDropdown();
725
712
  }
713
+ get host() { return index.getElement(this); }
726
714
  static get watchers() { return {
727
715
  "caption": ["validateCaption"],
728
716
  "description": ["validateDescription"],
@@ -741,8 +729,6 @@ const PostList = class {
741
729
  this.titleHidden = false;
742
730
  this.horizontal = false;
743
731
  }
744
- get host() { return index.getElement(this); }
745
- titleEl;
746
732
  componentWillLoad() {
747
733
  /**
748
734
  * Get the id set on the host element or use a random id by default
@@ -758,8 +744,9 @@ const PostList = class {
758
744
  }
759
745
  }
760
746
  render() {
761
- return (index.h(index.Host, { key: '085a63d7b4cc85461f2c8fd0c7b9d9f48f42055a', "data-version": _package.version }, index.h("div", { key: 'd13a66ba16b71eff1a86666b04ca2f41957962e1', ref: el => (this.titleEl = el), id: this.titleId, class: `list-title${this.titleHidden ? ' visually-hidden' : ''}` }, index.h("slot", { key: '0270bcd71c8a3a34390b98b6374a1a2f06e0d606' })), index.h("div", { key: 'de04b08bf94900435c53f972c8fcd0798c8a5faf', role: "list", "aria-labelledby": this.titleId }, index.h("slot", { key: 'f7aa9976b3283ee4da3d32d84b36e2549c29e80f', name: "post-list-item" }))));
747
+ return (index.h(index.Host, { key: 'b003aa61735359b6a1d95aad8d29c609d5bb3c8b', "data-version": _package.version }, index.h("div", { key: '2f69a2c72dd357767735e10d16f1b7586da6d5a3', ref: el => (this.titleEl = el), id: this.titleId, class: `list-title${this.titleHidden ? ' visually-hidden' : ''}` }, index.h("slot", { key: '3982783d438519673a676323339a013d3edb84db' })), index.h("div", { key: 'b8a91c4430774f019cc46aa19393e2a1566204a5', role: "list", "aria-labelledby": this.titleId }, index.h("slot", { key: '378a51785c4d52df8ae422657a16e8295b405149', name: "post-list-item" }))));
762
748
  }
749
+ get host() { return index.getElement(this); }
763
750
  };
764
751
  PostList.style = PostListStyle0;
765
752
 
@@ -770,13 +757,13 @@ const PostListItem = class {
770
757
  constructor(hostRef) {
771
758
  index.registerInstance(this, hostRef);
772
759
  }
773
- get host() { return index.getElement(this); }
774
760
  connectedCallback() {
775
761
  this.host.setAttribute('slot', 'post-list-item');
776
762
  }
777
763
  render() {
778
- return (index.h(index.Host, { key: '9626999693fa26c4fb42db178e53099ea8a95c2e', role: "listitem", slot: "post-list-item", version: _package.version }, index.h("slot", { key: '5f2d0a626e9d09a44d4c20f3bc97a2c60ca77feb' })));
764
+ return (index.h(index.Host, { key: 'c826293ea2a7446bea2f5b223934b444655198a0', role: "listitem", slot: "post-list-item", version: _package.version }, index.h("slot", { key: 'b997f79da2fbc87fbc6a388c118a03c008ad2c23' })));
779
765
  }
766
+ get host() { return index.getElement(this); }
780
767
  };
781
768
  PostListItem.style = PostListItemStyle0;
782
769
 
@@ -788,7 +775,6 @@ const PostLogo = class {
788
775
  index.registerInstance(this, hostRef);
789
776
  this.url = undefined;
790
777
  }
791
- get host() { return index.getElement(this); }
792
778
  validateUrl() {
793
779
  index$1.checkEmptyOrUrl(this, 'url');
794
780
  }
@@ -804,284 +790,206 @@ const PostLogo = class {
804
790
  render() {
805
791
  const logoLink = this.url && (typeof this.url === 'string' ? this.url : this.url.href);
806
792
  const LogoTag = logoLink ? 'a' : 'span';
807
- return (index.h(index.Host, { key: '128604612a51624b537f30b0b9c91d9ea6b950be', "data-version": _package.version }, index.h(LogoTag, { key: '885f057200f9da839fd38cb7070f319f6c89793e', class: `logo ${logoLink ? 'logo-link' : ''}`, ...(logoLink ? { href: logoLink } : {}) }, index.h("span", { key: 'bee12585bf74fe5c2ce8a644c540c86626295526', class: "description" }, index.h("slot", { key: 'e516075c5138cef9378d3dc7137eb6c28d02b279', onSlotchange: () => this.checkDescription() })), index.h("svg", { key: 'c0056463b93f7c0e5da07db4656d9c8dc9161c32', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 72 72", "aria-hidden": "true" }, index.h("g", { key: '1dfc33886c9b1fb6cd3b08f448a89c11a6080598', id: "Logo" }, index.h("rect", { key: 'dd84426568259714379a92a3f56349c6b3220a61', fill: "#ffcc00", x: "0", y: "0", width: "72", height: "72" }), index.h("polygon", { key: '56fa6445c184a41355a968365098b75387a16f48', 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" }), index.h("path", { key: 'f2abb1db77a2e795f477662453d7296a28882756', 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" }))))));
793
+ return (index.h(index.Host, { key: '7dee19302c0c560b29f09b1675135f10d41fc44a', "data-version": _package.version }, index.h(LogoTag, { key: '1d851ca305d1bfc24666b416ad5f210b96d39811', class: `logo ${logoLink ? 'logo-link' : ''}`, ...(logoLink ? { href: logoLink } : {}) }, index.h("span", { key: 'cd75bd4040bc2f0d62e5cec2afc9529fa7c43c49', class: "description" }, index.h("slot", { key: 'caf63c4f823873181fa52cfb0cf38217b6a45823', onSlotchange: () => this.checkDescription() })), index.h("svg", { key: 'd41c14973b829eb35764c9e562fe449e65f410b4', xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 72 72", "aria-hidden": "true" }, index.h("g", { key: '90c52e528bf4fc8e075e6517c18a59686ffd39f6', id: "Logo" }, index.h("rect", { key: '50633d1110596123232f07272406ebd0a32ffce8', fill: "#ffcc00", x: "0", y: "0", width: "72", height: "72" }), index.h("polygon", { key: '7a617412c094669a66914edf769fba9ee9448b83', 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" }), index.h("path", { key: '74213b21fad18ba6a1dbb07e0b0b7dcf4a89b855', 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" }))))));
808
794
  }
795
+ get host() { return index.getElement(this); }
809
796
  static get watchers() { return {
810
797
  "url": ["validateUrl"]
811
798
  }; }
812
799
  };
813
800
  PostLogo.style = PostLogoStyle0;
814
801
 
815
- const postMainnavigationCss = "post-mainnavigation post-list-item>a{text-decoration:none;border-radius:0}post-mainnavigation post-list-item post-megadropdown-trigger button{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;text-align:start}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-mainnavigation post-list-item post-megadropdown-trigger button{background-color:ButtonFace !important}post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:Highlight !important}}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item post-megadropdown-trigger button{flex:0 0 fit-content;white-space:nowrap;display:flex;align-items:center;justify-content:space-between}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{color:var(--post-scheme-color-interactive-primary-hover-fg1)}post-mainnavigation post-list-item>a:focus-visible,post-mainnavigation post-list-item post-megadropdown-trigger button:focus-visible{border-radius:4px;outline-offset:-2px !important}post-mainnavigation .back-button post-icon{transform:rotate(180deg)}@media screen and (max-width: 1023.98px){post-mainnavigation .back-button{font-size:16px}}@media screen and (max-width: 599.98px){post-mainnavigation .back-button{font-size:14px}}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{content:\"\";mask-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m23.6 13.2-7.5 7.6-7.6-7.6.9-.9 6.6 6.6 6.6-6.6z'/%3E%3C/svg%3E\");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;height:24px;width:24px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-mainnavigation>button,post-mainnavigation post-megadropdown-trigger button{border:1px solid ButtonBorder !important}post-mainnavigation>button:hover::after,post-mainnavigation>button[aria-expanded=true]::after,post-mainnavigation post-megadropdown-trigger button:hover::after,post-mainnavigation post-megadropdown-trigger button[aria-expanded=true]::after{color:HighlightText}}@media screen and (min-width: 1024px){post-mainnavigation{display:block;overflow-x:hidden}post-mainnavigation nav{max-width:100%;background:#fff;max-height:var(--main-navigation-height);user-select:none;transition:margin 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation .left-scroll-button,post-mainnavigation .right-scroll-button{z-index:4;position:absolute;inset-block-end:0;overflow:hidden}post-mainnavigation .left-scroll-button button,post-mainnavigation .right-scroll-button button{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;background:#fff;padding:16px;box-shadow:var(--post-device-elevation-500);line-height:100%;height:var(--main-navigation-height)}}@media screen and (min-width: 1024px)and (forced-colors: active),screen and (min-width: 1024px)and (-ms-high-contrast: active),screen and (min-width: 1024px)and (-ms-high-contrast: white-on-black){post-mainnavigation .left-scroll-button button,post-mainnavigation .right-scroll-button button{background-color:ButtonFace !important}post-mainnavigation .left-scroll-button button:hover,post-mainnavigation .right-scroll-button button:hover{background-color:Highlight !important}}@media screen and (min-width: 1024px){post-mainnavigation .left-scroll-button button post-icon,post-mainnavigation .right-scroll-button button post-icon{font-size:1rem}}@media screen and (min-width: 1024px){post-mainnavigation .left-scroll-button.d-none,post-mainnavigation .right-scroll-button.d-none{display:none}}@media screen and (min-width: 1024px){post-mainnavigation .left-scroll-button{inset-inline-start:0;padding-inline-end:2rem}}@media screen and (min-width: 1024px){post-mainnavigation .right-scroll-button{inset-inline-end:0;padding-inline-start:2rem}}@media screen and (min-width: 1024px){post-mainnavigation post-list>[role=list]{flex-direction:row;max-width:100vw}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{position:sticky;padding-inline:12px;height:var(--main-navigation-height);gap:4px;font-size:16px;z-index:4}post-mainnavigation post-list-item>a .nav-el-active,post-mainnavigation post-list-item>button .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-active{font-weight:700;text-align:center;opacity:0}post-mainnavigation post-list-item>a .nav-el-inactive,post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{position:absolute;opacity:1;text-align:center;width:100%;inset-inline-start:0}post-mainnavigation post-list-item>a.selected,post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.selected,post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.selected,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff;font-weight:700}post-mainnavigation post-list-item>a.selected .nav-el-active,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item>button.selected .nav-el-active,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button.selected .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-active{opacity:1}post-mainnavigation post-list-item>a.selected .nav-el-inactive,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item>button.selected .nav-el-inactive,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button.selected .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-inactive{opacity:0}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}}@media screen and (min-width: 1024px)and (max-width: 599.98px){post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{font-size:14px}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{padding-inline-end:12px;transition:border-block-end-color 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{width:calc(100% - 28px)}post-mainnavigation post-list-item>button::after,post-mainnavigation post-list-item post-megadropdown-trigger button::after{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button.selected::after,post-mainnavigation post-list-item>button[aria-expanded=true]::after,post-mainnavigation post-list-item post-megadropdown-trigger button.selected::after,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]::after{transform:rotate(180deg)}}@media screen and (min-width: 1024px){post-mainnavigation post-megadropdown button:not(.btn-icon-close),post-mainnavigation post-megadropdown a{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-mainnavigation post-megadropdown button:not(.btn-icon-close)::before,post-mainnavigation post-megadropdown a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-mainnavigation post-megadropdown button:not(.btn-icon-close).selected,post-mainnavigation post-megadropdown button:not(.btn-icon-close)[aria-expanded=true],post-mainnavigation post-megadropdown a.selected,post-mainnavigation post-megadropdown a[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-megadropdown button:not(.btn-icon-close):hover,post-mainnavigation post-megadropdown a:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-megadropdown button:not(.btn-icon-close):hover::before,post-mainnavigation post-megadropdown a:hover::before{background-color:#504f4b}}@media screen and (min-width: 1024px){post-mainnavigation [slot=back-button]{display:none}}@media screen and (max-width: 1023.98px){post-mainnavigation nav{transform:none !important}post-mainnavigation .left-scroll-button,post-mainnavigation .right-scroll-button{display:none}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-mainnavigation post-list-item>a::before,post-mainnavigation post-list-item>button::before,post-mainnavigation post-list-item post-megadropdown-trigger button::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-mainnavigation post-list-item>a.selected,post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.selected,post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.selected,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-list-item>a:hover::before,post-mainnavigation post-list-item>button:hover::before,post-mainnavigation post-list-item post-megadropdown-trigger button:hover::before{background-color:#504f4b}post-mainnavigation post-list-item>a .nav-el-inactive,post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{display:none}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{transform:rotate(-90deg)}}post-mainnavigation .back-button .btn{padding-inline:0}";
802
+ const postMainnavigationCss = "post-mainnavigation post-list-item>a{text-decoration:none;border-radius:0}post-mainnavigation post-list-item post-megadropdown-trigger button{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;text-align:start}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-mainnavigation post-list-item post-megadropdown-trigger button{background-color:ButtonFace !important}post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:Highlight !important}}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item post-megadropdown-trigger button{flex:0 0 fit-content;white-space:nowrap;display:flex;align-items:center;justify-content:space-between}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{color:var(--post-scheme-color-interactive-primary-hover-fg1)}post-mainnavigation post-list-item>a:focus-visible,post-mainnavigation post-list-item post-megadropdown-trigger button:focus-visible{border-radius:4px;outline-offset:-2px !important}post-mainnavigation .back-button post-icon{transform:rotate(180deg)}@media screen and (max-width: 1023.98px){post-mainnavigation .back-button{font-size:16px}}@media screen and (max-width: 599.98px){post-mainnavigation .back-button{font-size:14px}}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{content:\"\";mask-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m23.6 13.2-7.5 7.6-7.6-7.6.9-.9 6.6 6.6 6.6-6.6z'/%3E%3C/svg%3E\");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;height:24px;width:24px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-mainnavigation>button,post-mainnavigation post-megadropdown-trigger button{border:1px solid ButtonBorder !important}post-mainnavigation>button:hover::after,post-mainnavigation>button[aria-expanded=true]::after,post-mainnavigation post-megadropdown-trigger button:hover::after,post-mainnavigation post-megadropdown-trigger button[aria-expanded=true]::after{color:HighlightText}}@media screen and (min-width: 1024px){post-mainnavigation{display:block;position:relative;height:var(--post-main-navigation-height);background:#fff;user-select:none}post-mainnavigation nav{flex:1 1 auto;overflow:hidden;scroll-behavior:smooth}post-mainnavigation .scroll-control{cursor:pointer;position:absolute;inset-block:0;z-index:5;padding:16px;background:#fff;box-shadow:var(--post-device-elevation-500);line-height:1}post-mainnavigation .scroll-control.scroll-left{inset-inline-start:0}post-mainnavigation .scroll-control.scroll-right{inset-inline-end:0}post-mainnavigation .scroll-control.d-none{display:none}post-mainnavigation .scroll-control post-icon{font-size:1rem}post-mainnavigation post-list>[role=list]{flex-direction:row;max-width:100vw}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{position:sticky;padding-inline:12px;height:var(--post-main-navigation-height);gap:4px;font-size:16px;z-index:4}post-mainnavigation post-list-item>a .nav-el-active,post-mainnavigation post-list-item>button .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-active{font-weight:700;text-align:center;opacity:0}post-mainnavigation post-list-item>a .nav-el-inactive,post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{position:absolute;opacity:1;text-align:center;width:100%;inset-inline-start:0}post-mainnavigation post-list-item>a.selected,post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.selected,post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.selected,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff;font-weight:700}post-mainnavigation post-list-item>a.selected .nav-el-active,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item>button.selected .nav-el-active,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button.selected .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-active{opacity:1}post-mainnavigation post-list-item>a.selected .nav-el-inactive,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item>button.selected .nav-el-inactive,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button.selected .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-inactive{opacity:0}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}}@media screen and (min-width: 1024px)and (max-width: 599.98px){post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{font-size:14px}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{padding-inline-end:12px;transition:border-block-end-color 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{width:calc(100% - 28px)}post-mainnavigation post-list-item>button::after,post-mainnavigation post-list-item post-megadropdown-trigger button::after{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button.selected::after,post-mainnavigation post-list-item>button[aria-expanded=true]::after,post-mainnavigation post-list-item post-megadropdown-trigger button.selected::after,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]::after{transform:rotate(180deg)}}@media screen and (min-width: 1024px){post-mainnavigation post-megadropdown button:not(.btn-icon-close),post-mainnavigation post-megadropdown a{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-mainnavigation post-megadropdown button:not(.btn-icon-close)::before,post-mainnavigation post-megadropdown a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-mainnavigation post-megadropdown button:not(.btn-icon-close).selected,post-mainnavigation post-megadropdown button:not(.btn-icon-close)[aria-expanded=true],post-mainnavigation post-megadropdown a.selected,post-mainnavigation post-megadropdown a[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-megadropdown button:not(.btn-icon-close):hover,post-mainnavigation post-megadropdown a:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-megadropdown button:not(.btn-icon-close):hover::before,post-mainnavigation post-megadropdown a:hover::before{background-color:#504f4b}}@media screen and (min-width: 1024px){post-mainnavigation [slot=back-button]{display:none}}@media screen and (max-width: 1023.98px){post-mainnavigation nav{transform:none !important}post-mainnavigation .scroll-control{display:none}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-mainnavigation post-list-item>a::before,post-mainnavigation post-list-item>button::before,post-mainnavigation post-list-item post-megadropdown-trigger button::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-mainnavigation post-list-item>a.selected,post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.selected,post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.selected,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-list-item>a:hover::before,post-mainnavigation post-list-item>button:hover::before,post-mainnavigation post-list-item post-megadropdown-trigger button:hover::before{background-color:#504f4b}post-mainnavigation post-list-item>a .nav-el-inactive,post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{display:none}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{transform:rotate(-90deg)}}post-mainnavigation .back-button .btn{padding-inline:0}";
816
803
  const PostMainnavigationStyle0 = postMainnavigationCss;
817
804
 
818
805
  const SCROLL_REPEAT_INTERVAL = 100; // Interval for repeated scrolling when holding down scroll button
819
806
  const NAVBAR_DISABLE_DURATION = 400; // Duration to temporarily disable navbar interactions during scrolling
820
- const NAVIGATION_LIST_SELECTOR = 'post-list > [role="list"]:not(post-megadropdown *)';
821
- const NAVIGATION_ITEM_SELECTOR = 'post-list-item :is(a, button):not(post-megadropdown *)';
822
807
  const PostMainnavigation = class {
823
808
  constructor(hostRef) {
824
809
  index.registerInstance(this, hostRef);
825
810
  this.canScrollLeft = false;
826
811
  this.canScrollRight = false;
827
- this.translationAmount = 0;
828
- }
829
- header;
830
- navbar;
831
- rightScrollButton;
832
- leftScrollButton;
833
- scrollRepeatInterval;
834
- navbarDisableTimer;
835
- resizeObserver;
836
- mutationObserver = new MutationObserver(async (mutations) => {
837
- // Wait for all elements to be hydrated
838
- await Promise.all(mutations
839
- .flatMap((mutation) => Array.from(mutation.addedNodes))
840
- .map((item) => item.componentOnReady ? item.componentOnReady() : Promise.resolve(item)));
841
- // Recalculate scrollability after DOM changes
842
- this.checkScrollability();
843
- });
844
- get host() { return index.getElement(this); }
845
- /**
846
- * Update navbar translation when 'translateAmount' changes and recalculate scrollability
847
- */
848
- onTranslateAmountChanges(value) {
849
- this.navbar.style.marginInlineStart = `-${value}px`;
850
- this.checkScrollability();
812
+ this.scrollRight = this.scrollRight.bind(this);
813
+ this.scrollLeft = this.scrollLeft.bind(this);
814
+ this.handleMutations = this.handleMutations.bind(this);
815
+ this.checkScrollability = this.checkScrollability.bind(this);
816
+ this.resizeObserver = new ResizeObserver(this.checkScrollability);
817
+ this.mutationObserver = new MutationObserver(this.handleMutations);
851
818
  }
852
- /**
853
- * Retrieves a reference to the closest 'post-header' element when the main navigation is added to the DOM.
854
- * This ensures that we can interact with the header for mobile menu toggling.
855
- */
856
- connectedCallback() {
857
- this.header = this.host.closest('post-header');
819
+ componentDidLoad() {
820
+ setTimeout(() => {
821
+ this.fixLayoutShift();
822
+ this.checkScrollability();
823
+ });
824
+ // Observe the navbar for size changes
825
+ this.resizeObserver.observe(this.navbar);
826
+ // Observe the navabar for mutation changes
827
+ this.mutationObserver.observe(this.navbar, { subtree: true, childList: true }); // Recheck scrollability when navigation list changes
828
+ // Ensure the scroll buttons are correctly displayed or hidden whenever the navbar is scrolled
829
+ this.navbar.addEventListener('scrollend', this.checkScrollability);
858
830
  }
859
831
  /**
860
- * Cleans up references and disconnects the MutationObserver when the main navigation is removed from the DOM.
832
+ * Disconnects observers and remove event listeners when the main navigation is removed from the DOM.
861
833
  */
862
834
  disconnectedCallback() {
863
- this.header = null;
864
835
  this.mutationObserver.disconnect();
865
- if (this.resizeObserver) {
866
- this.resizeObserver.disconnect();
867
- }
836
+ this.resizeObserver.disconnect();
837
+ this.navbar.removeEventListener('scrollend', this.checkScrollability);
868
838
  }
869
- componentDidLoad() {
870
- setTimeout(() => this.checkScrollability()); // Initial check to determine if scrolling is needed
871
- this.resizeObserver = new ResizeObserver(() => {
872
- this.checkScrollability();
839
+ /**
840
+ * Stops the repeated scrolling when the mouse button is released.
841
+ */
842
+ stopScrolling() {
843
+ if (this.scrollRepeatInterval)
844
+ clearInterval(this.scrollRepeatInterval);
845
+ }
846
+ async handleMutations(mutations) {
847
+ const addedNodes = mutations.flatMap((mutation) => {
848
+ return Array.from(mutation.addedNodes);
873
849
  });
874
- // Observe the navbar and the navigation list for size changes
875
- if (this.navbar) {
876
- this.resizeObserver.observe(this.navbar);
877
- const navList = this.navigationList;
878
- if (navList) {
879
- this.resizeObserver.observe(navList);
880
- }
881
- }
882
- this.mutationObserver.observe(this.navigationList, { subtree: true, childList: true }); // Recheck scrollability when navigation list changes
850
+ // Wait for all elements to be hydrated
851
+ await Promise.all(addedNodes.map((item) => item.componentOnReady ? item.componentOnReady() : Promise.resolve(item)));
883
852
  this.fixLayoutShift();
884
- // Handle focus changes and adjust scroll as needed
885
- this.navbar.addEventListener('focusin', e => this.adjustTranslation(e));
853
+ this.checkScrollability();
854
+ }
855
+ get navigationItems() {
856
+ return Array.from(this.navbar.querySelectorAll(':is(a, button):not(post-megadropdown *)'));
886
857
  }
887
- // Hack that duplicates navigation elements to fix the layout shift on active elements
858
+ /**
859
+ * Hack to fix the layout shift due to bold text on active elements
860
+ */
888
861
  fixLayoutShift() {
889
- // Select first level of main navigation elements, both the links and the megadropdown trigger buttons
890
- const children = this.host.querySelectorAll('nav > post-list > div > post-list-item > a, nav > post-list > div > post-list-item > post-megadropdown-trigger > button');
891
- // Update HTML so that the content is duplicated
892
- children.forEach(child => (child.innerHTML = `<span class="nav-el-active">${child.innerHTML}</span><span class="nav-el-inactive"aria-hidden="true">${child.innerHTML}</span>`));
862
+ this.navigationItems
863
+ .filter(item => !item.matches(':has(.nav-el-active)'))
864
+ .forEach(item => {
865
+ item.innerHTML = `
866
+ <span class="nav-el-active">${item.innerHTML}</span>
867
+ <span class="nav-el-inactive" aria-hidden="true">${item.innerHTML}</span>
868
+ `;
869
+ });
893
870
  }
894
871
  handleBackButtonClick() {
895
- if (this.header)
896
- this.header.toggleMobileMenu();
872
+ const header = this.navbar.closest('post-header');
873
+ if (header)
874
+ header.toggleMobileMenu();
897
875
  }
898
876
  /**
899
- * Moves focus on the navbar and adjusts scrolling to bring focused element into view.
877
+ * Returns whether scrolling is enabled in either the left or right direction.
900
878
  */
901
- adjustTranslation(e) {
902
- const focusedElement = e.target;
903
- if (!this.canScroll || !focusedElement.matches(NAVIGATION_ITEM_SELECTOR))
904
- return;
905
- // We need to move the element into the view before it is focused to avoid browser default behavior
906
- e.preventDefault();
907
- this.withoutTransition(() => {
908
- // Try scrolling in both directions, only the necessary translation will actually occur
909
- this.translateRightTo(focusedElement);
910
- this.translateLeftTo(focusedElement);
911
- focusedElement.focus();
912
- });
879
+ get canScroll() {
880
+ return this.canScrollLeft || this.canScrollRight;
913
881
  }
914
882
  /**
915
883
  * Checks if scrolling is possible in either direction (left or right) and updates the state accordingly.
916
884
  */
917
885
  checkScrollability() {
918
- const { scrollWidth, clientWidth } = this.navbar;
919
- const couldScroll = this.canScroll;
886
+ const { scrollLeft, scrollWidth, clientWidth } = this.navbar;
920
887
  if (scrollWidth === clientWidth) {
921
888
  // If scroll width equals client width, scrolling is disabled in both directions
922
889
  this.canScrollLeft = this.canScrollRight = false;
923
890
  }
924
891
  else {
925
- this.canScrollLeft = this.translationAmount > 0; // Scrolling left is possible if not at the start
926
- this.canScrollRight = clientWidth + this.translationAmount < scrollWidth; // Scrolling right is possible if not at the end
927
- }
928
- if (couldScroll && !this.canScroll) {
929
- this.withoutTransition(() => (this.translationAmount = 0));
892
+ this.canScrollLeft = Math.floor(scrollLeft) > 0; // Scrolling left is possible if not at the start
893
+ this.canScrollRight = Math.ceil(clientWidth + scrollLeft) < scrollWidth; // Scrolling right is possible if not at the end
930
894
  }
931
895
  }
932
- /**
933
- * Returns whether scrolling is enabled in either the left or right direction.
934
- */
935
- get canScroll() {
936
- return this.canScrollLeft || this.canScrollRight;
937
- }
938
896
  /**
939
897
  * Handles the scrolling behavior when a user clicks on the left or right scroll buttons.
940
898
  */
941
- handleScrollButtonClick(direction) {
942
- if (!this.canScroll)
899
+ handleScrollButtonClick(e, direction) {
900
+ if (!this.canScroll || e.button !== 0)
943
901
  return;
944
902
  // Disable interaction with the navbar during scrolling
945
- this.disableNavbar();
946
- // Perform the initial scroll action
947
- this.scroll(direction);
903
+ this.temporarilyDisableNavbar();
904
+ // Set up the correct scroll function
905
+ const scroll = direction === 'right' ? this.scrollRight : this.scrollLeft;
906
+ scroll();
948
907
  // Repeat the scrolling action while the button is held down
949
908
  this.scrollRepeatInterval = setInterval(() => {
950
- this.scroll(direction);
909
+ scroll();
951
910
  }, SCROLL_REPEAT_INTERVAL);
952
911
  }
953
- /**
954
- * Stops the repeated scrolling when the mouse button is released.
955
- */
956
- stopScrolling() {
957
- if (this.scrollRepeatInterval)
958
- clearInterval(this.scrollRepeatInterval);
959
- }
960
- scroll(direction) {
961
- const navigationItems = Array.from(this.navigationItems);
962
- if (direction === 'left')
963
- navigationItems.reverse();
964
- for (const item of navigationItems) {
965
- const couldScroll = direction === 'left' ? this.translateLeftTo(item, true) : this.translateRightTo(item, true);
966
- if (couldScroll)
967
- break;
912
+ scrollRight() {
913
+ const scrollRightLeftEdge = document
914
+ .querySelector('.scroll-right')
915
+ .getBoundingClientRect().left;
916
+ for (const navigationItem of this.navigationItems) {
917
+ const { right, width } = navigationItem.getBoundingClientRect();
918
+ // Scroll to the first navigation item that is less than 75% visible
919
+ const isThreeQuartersVisible = right - 0.25 * width < scrollRightLeftEdge;
920
+ if (!isThreeQuartersVisible) {
921
+ this.navbar.scrollBy({ left: right - scrollRightLeftEdge });
922
+ return;
923
+ }
968
924
  }
969
925
  }
970
- translateRightTo(navigationItem, skipSmallTranslation = false) {
971
- const listItem = navigationItem.closest('post-list-item');
972
- // Calculate the right edge position of the list item relative to the left of the screen
973
- const rightEdgePosition = listItem.offsetLeft + listItem.offsetWidth;
974
- // Calculate the last visible position on the screen, right before the right scroll button
975
- const lastVisiblePosition = this.host.clientWidth - this.rightScrollButton.clientWidth;
976
- // If the item is already fully visible, no translation is needed
977
- if (rightEdgePosition < lastVisiblePosition)
978
- return false;
979
- const translationIncrease = rightEdgePosition - lastVisiblePosition + 1; // + 1 because offset values are rounded
980
- // If the required scroll distance is too small (less than half the width of the item), avoid unnecessary scroll
981
- if (skipSmallTranslation && translationIncrease < listItem.clientWidth / 2)
982
- return false;
983
- // Calculate the maximum translation amount to prevent scrolling past the end of the content
984
- const maximumTranslation = this.navbar.scrollWidth - this.host.clientWidth;
985
- // Adjust the translation amount, ensuring it doesn't exceed the maximum scrollable area
986
- const { marginRight } = getComputedStyle(this.navigationList);
987
- this.translationAmount =
988
- Math.min(this.translationAmount + translationIncrease, maximumTranslation) +
989
- parseInt(marginRight);
990
- return true;
991
- }
992
- translateLeftTo(navigationItem, skipSmallTranslation = false) {
993
- const listItem = navigationItem.closest('post-list-item');
994
- // Get the left edge position of the list item relative to the left of the screen
995
- const leftEdgePosition = listItem.offsetLeft;
996
- // Calculate the first visible position on the screen to the left, right after the left scroll button
997
- const firstVisiblePosition = this.leftScrollButton.clientWidth;
998
- // If the item is already fully visible, no translation is needed
999
- if (leftEdgePosition > firstVisiblePosition)
1000
- return false;
1001
- const translationDecrease = firstVisiblePosition - leftEdgePosition + 1; // + 1 because offset values are rounded
1002
- // If the required scroll distance is too small (less than half the width of the item), don't perform the scroll
1003
- if (skipSmallTranslation && translationDecrease < listItem.clientWidth / 2)
1004
- return false;
1005
- // Calculate the minimum allowed translation amount (no negative scrolling allowed)
1006
- const minimumTranslation = 0;
1007
- // Adjust the translation amount, ensuring it doesn't go below the minimum scrollable area
1008
- const { marginLeft } = getComputedStyle(this.navigationList);
1009
- this.translationAmount = Math.max(this.translationAmount - translationDecrease - parseInt(marginLeft), minimumTranslation);
1010
- return true;
1011
- }
1012
- /**
1013
- * Returns the navigation list container element
1014
- */
1015
- get navigationList() {
1016
- return this.navbar.querySelector(NAVIGATION_LIST_SELECTOR);
1017
- }
1018
- /**
1019
- * Returns the navigation items
1020
- */
1021
- get navigationItems() {
1022
- return this.navbar.querySelectorAll(NAVIGATION_ITEM_SELECTOR);
926
+ scrollLeft() {
927
+ const scrollLeftRightEdge = document
928
+ .querySelector('.scroll-left')
929
+ .getBoundingClientRect().right;
930
+ for (const navigationItem of this.navigationItems.reverse()) {
931
+ const { left, width } = navigationItem.getBoundingClientRect();
932
+ // Scroll to the first navigation item that is less than 75% visible
933
+ const isThreeQuartersVisible = left + 0.25 * width > scrollLeftRightEdge;
934
+ if (!isThreeQuartersVisible) {
935
+ this.navbar.scrollBy({ left: left - scrollLeftRightEdge });
936
+ return;
937
+ }
938
+ }
1023
939
  }
1024
940
  /**
1025
941
  * Temporarily disables interactions with the navbar during scrolling to prevent accidental clicks.
1026
942
  * Re-enables interactions after a brief delay to avoid blocking the user entirely.
1027
943
  */
1028
- disableNavbar() {
944
+ temporarilyDisableNavbar() {
1029
945
  if (this.navbarDisableTimer)
1030
946
  clearTimeout(this.navbarDisableTimer);
1031
- this.navbar.style.pointerEvents = 'none';
947
+ this.navbar.setAttribute('inert', '');
1032
948
  this.navbarDisableTimer = setTimeout(() => {
1033
- this.navbar.style.pointerEvents = 'initial';
949
+ this.navbar.removeAttribute('inert');
1034
950
  }, NAVBAR_DISABLE_DURATION);
1035
951
  }
1036
- /**
1037
- * Allows to translate the navbar without a transition
1038
- */
1039
- withoutTransition(callback) {
1040
- const transition = this.navbar.style.transition;
1041
- this.navbar.style.transition = 'none';
1042
- callback();
1043
- setTimeout(() => {
1044
- this.navbar.style.transition = transition;
1045
- });
1046
- }
1047
952
  render() {
1048
- return (index.h(index.Host, { key: 'e91995f96b3b795fe2ed5c79ee89257b5c8aec2a', slot: "post-mainnavigation", version: _package.version }, index.h("div", { key: '165c6efcf5e05984708de9e0abdaed130036816e', onClick: () => this.handleBackButtonClick(), class: "back-button" }, index.h("slot", { key: 'a894f4788fc85d2fb0d6480831af711871c3b9f4', name: "back-button" })), index.h("nav", { key: '11d276069f40676b0c3e2fb5e8426b5803bcdad2', ref: el => (this.navbar = el) }, index.h("slot", { key: '6070e3f75ccfa7dfaf22554802e6c43dd025830c' })), index.h("div", { key: '06aefb232bfa1d7cd053e33bf7150fe418e4239a', class: `left-scroll-button${this.canScrollLeft ? '' : ' d-none'}`, "aria-hidden": "true" }, index.h("button", { key: 'f16d493af4ca62cd64a06a27ff8f805039cc806f', type: "button", tabindex: "-1", ref: el => (this.leftScrollButton = el), onMouseDown: () => this.handleScrollButtonClick('left') }, index.h("post-icon", { key: '8a4d2fa0b90a571445b02fa4b157ca4a5ac5eb9b', "aria-hidden": "true", name: "chevronleft" }))), index.h("div", { key: '2e540a2b9c6e1c1a68be89f8ed8a3a4840083b02', class: `right-scroll-button${this.canScrollRight ? '' : ' d-none'}`, "aria-hidden": "true" }, index.h("button", { key: '1aafbe38dd159eedb4b8dcb72dd19a61348b603a', type: "button", tabindex: "-1", ref: el => (this.rightScrollButton = el), onMouseDown: () => this.handleScrollButtonClick('right') }, index.h("post-icon", { key: '72eccd291ba4a15bf64bf76f87398dddf7586bae', "aria-hidden": "true", name: "chevronright" })))));
953
+ return (index.h(index.Host, { key: '6cd850555585d87eb25e3f6892b8010f5e4d23d6', slot: "post-mainnavigation", version: _package.version }, index.h("div", { key: '3411008120d072920f4de0b71c9dc014748f1390', onClick: () => this.handleBackButtonClick(), class: "back-button" }, index.h("slot", { key: '2e3747380cb546bd6da77e5ffba2403586205a55', name: "back-button" })), index.h("div", { key: 'e9eedd836b3f679ba2861109db2d0811c1142677', "aria-hidden": "true", class: { 'scroll-control scroll-left': true, 'd-none': !this.canScrollLeft }, onMouseDown: e => this.handleScrollButtonClick(e, 'left') }, index.h("post-icon", { key: '628511a2c1812a08828e1aa2b51f26ad01a5a2cf', "aria-hidden": "true", name: "chevronleft" })), index.h("nav", { key: '1b660d65e1984e8701a98a369046f391fd177338', ref: el => (this.navbar = el) }, index.h("slot", { key: '0eb35366ac0bd58509afd6a12f68c2b09396a497' })), index.h("div", { key: '11145ad6602e2df78d3c3f4643cc6e4e960775aa', "aria-hidden": "true", class: { 'scroll-control scroll-right': true, 'd-none': !this.canScrollRight }, onMouseDown: e => this.handleScrollButtonClick(e, 'right') }, index.h("post-icon", { key: '26e795cd00221dbfb1a7632453d0d48993584b0b', "aria-hidden": "true", name: "chevronright" }))));
1049
954
  }
1050
- static get watchers() { return {
1051
- "translationAmount": ["onTranslateAmountChanges"]
1052
- }; }
1053
955
  };
1054
956
  PostMainnavigation.style = PostMainnavigationStyle0;
1055
957
 
1056
- const postMegadropdownCss = "@keyframes slide-in{0%{transform:translateX(100%)}100%{transform:translateX(0%)}}@keyframes slide-out{from{transform:translateX(0%)}to{transform:translateX(100%)}}@keyframes slide-down{from{transform:translateY(-100%)}to{transform:translateY(0%)}}@keyframes slide-up{0%{transform:translateY(0%)}100%{transform:translateY(-100%)}}*,::before,::after{box-sizing:border-box}.megadropdown-container{box-shadow:0 8px 6px rgba(0,0,0,.16);position:absolute;background-color:#fafafa;border:none;z-index:1;width:100%;inset-block-start:100%;inset-inline-start:0;border-radius:0}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.megadropdown-container{border-block-end:1px solid CanvasText}}.megadropdown-container.slide-in{animation:slide-down 350ms forwards}.megadropdown-container.slide-out{animation:slide-up 350ms forwards}@media screen and (max-width: 1023.98px){.megadropdown-container{z-index:4;position:fixed;inset-block-start:var(--header-navigation-current-inset);inset-inline:0;height:calc(min(var(--header-scroll-parent-height, 100dvh),100dvh) - var(--header-height));border-block-start:unset;overflow-y:auto;overscroll-behavior:contain}.megadropdown-container.slide-in{animation:slide-in 350ms forwards}.megadropdown-container.slide-out{animation:slide-out 350ms forwards}}@media screen and (min-width: 1024px){.megadropdown-container{max-height:calc(100vh - var(--header-height) - 48px);overflow-y:auto}}.megadropdown{padding:31px 40px 40px;background-color:#fafafa}@media screen and (max-width: 1023.98px){.megadropdown{display:flex;flex-direction:column;width:inherit;padding:16px 32px 24px}}@media screen and (max-width: 599.98px){.megadropdown{padding-inline:16px}}.megadropdown .megadropdown-content{gap:1.5rem;display:grid;grid-template-columns:repeat(auto-fit, minmax(min(15vw, 100%), 1fr));grid-auto-rows:1fr auto;grid-auto-flow:dense}@media screen and (max-width: 1023.98px){.megadropdown .megadropdown-content{grid-template-columns:repeat(auto-fit, minmax(min(35vw, 100%), 1fr))}}@media screen and (max-width: 599.98px){.megadropdown .megadropdown-content{grid-template-columns:1fr}}.megadropdown h2{display:none;margin-block:0 8px;font-weight:900}.megadropdown h2 a{text-decoration:none;display:none;font-weight:inherit;border-block:0}@media screen and (max-width: 1023.98px){.megadropdown h2{display:block;font-size:1.25rem}}@media screen and (max-width: 599.98px){.megadropdown h2{font-size:1.125rem}}.megadropdown post-list{display:grid;grid-row:span 2;grid-template-rows:subgrid;row-gap:0px}.megadropdown post-list>[role=list]{flex-direction:unset;display:unset}.megadropdown post-list>*{width:100%}.megadropdown post-list .list-title{display:flex;flex-direction:column-reverse;height:100%}.megadropdown post-list .list-title h3{font-size:20px;display:block;font-weight:900}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:16px 12px 14px 8px}.megadropdown post-list .list-title h3:not(:has(a)){position:relative}.megadropdown post-list .list-title h3:not(:has(a))::before{content:\"\";background-color:#050400;inset-block-end:0;inset-inline-start:0;width:100%;height:2px;position:absolute}.megadropdown post-list .list-title h3 a{border-radius:0;text-decoration:none;font-size:inherit;display:flex;align-items:center;justify-content:space-between;min-height:53px;width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative;height:unset;font-weight:900}.megadropdown post-list .list-title h3 a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}.megadropdown post-list .list-title h3 a.selected,.megadropdown post-list .list-title h3 a[aria-expanded=true]{background-color:#050400;color:#fff}.megadropdown post-list .list-title h3 a:hover{background-color:#504f4b;color:#fff}.megadropdown post-list .list-title h3 a:hover::before{background-color:#504f4b}.megadropdown post-list .list-title h3 a::before{height:2px}@media screen and (max-width: 1023.98px){.megadropdown post-list .list-title h3{font-size:1rem}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:14px 12px 12px 8px}}@media screen and (max-width: 599.98px){.megadropdown post-list .list-title h3{font-size:.875rem}}.megadropdown post-list-item>a{padding-block:13px 12px;padding-inline-start:8px;display:flex;text-decoration:none;width:100%;min-width:100%;height:auto;min-height:48px;white-space:normal;word-break:break-word}.megadropdown post-list-item>a:hover{border-block-width:0}@media screen and (min-width: 1024px){.megadropdown post-list-item>a{font-size:1.25rem}}@media screen and (max-width: 1023.98px){.megadropdown post-list-item>a{padding-block:12px 11px}}@media screen and (max-width: 599.98px){.megadropdown post-list-item>a{font-size:.875rem}}.megadropdown .back-button{display:none;margin-block-end:2rem}.megadropdown .back-button .btn{width:auto}@media screen and (max-width: 1023.98px){.megadropdown .back-button{order:-1;display:block}}.megadropdown .close-button{position:absolute;inset-block-start:1rem;inset-inline-end:1rem}@media screen and (max-width: 1023.98px){.megadropdown .close-button{display:none}}";
958
+ const postMegadropdownCss = "@keyframes slide-in{0%{transform:translateX(100%)}100%{transform:translateX(0%)}}@keyframes slide-out{from{transform:translateX(0%)}to{transform:translateX(100%)}}@keyframes slide-down{from{transform:translateY(-100%)}to{transform:translateY(0%)}}@keyframes slide-up{0%{transform:translateY(0%)}100%{transform:translateY(-100%)}}*,::before,::after{box-sizing:border-box}.megadropdown-container{box-shadow:0 8px 6px rgba(0,0,0,.16);position:absolute;background-color:#fafafa;border:none;z-index:1;width:100%;inset-block-start:100%;inset-inline-start:0;border-radius:0}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.megadropdown-container{border-block-end:1px solid CanvasText}}.megadropdown-container.slide-in{animation:slide-down 350ms forwards}.megadropdown-container.slide-out{animation:slide-up 350ms forwards}@media screen and (max-width: 1023.98px){.megadropdown-container{z-index:4;position:fixed;inset-block-start:var(--header-navigation-current-inset);inset-inline:0;height:calc(min(var(--header-scroll-parent-height, 100dvh),100dvh) - var(--post-header-height));border-block-start:unset;overflow-y:auto;overscroll-behavior:contain}.megadropdown-container.slide-in{animation:slide-in 350ms forwards}.megadropdown-container.slide-out{animation:slide-out 350ms forwards}}@media screen and (min-width: 1024px){.megadropdown-container{max-height:calc(100vh - var(--post-header-height) - 48px);overflow-y:auto}}.megadropdown{padding:31px 40px 40px;background-color:#fafafa}@media screen and (max-width: 1023.98px){.megadropdown{display:flex;flex-direction:column;width:inherit;padding:16px 32px 24px}}@media screen and (max-width: 599.98px){.megadropdown{padding-inline:16px}}.megadropdown .megadropdown-content{gap:1.5rem;display:grid;grid-template-columns:repeat(auto-fit, minmax(min(15vw, 100%), 1fr));grid-auto-rows:1fr auto;grid-auto-flow:dense}@media screen and (max-width: 1023.98px){.megadropdown .megadropdown-content{grid-template-columns:repeat(auto-fit, minmax(min(35vw, 100%), 1fr))}}@media screen and (max-width: 599.98px){.megadropdown .megadropdown-content{grid-template-columns:1fr}}.megadropdown h2{display:none;margin-block:0 8px;font-weight:900}.megadropdown h2 a{text-decoration:none;display:none;font-weight:inherit;border-block:0}@media screen and (max-width: 1023.98px){.megadropdown h2{display:block;font-size:1.25rem}}@media screen and (max-width: 599.98px){.megadropdown h2{font-size:1.125rem}}.megadropdown post-list{display:grid;grid-row:span 2;grid-template-rows:subgrid;row-gap:0px}.megadropdown post-list>[role=list]{flex-direction:unset;display:unset}.megadropdown post-list>*{width:100%}.megadropdown post-list .list-title{display:flex;flex-direction:column-reverse;height:100%}.megadropdown post-list .list-title h3{font-size:20px;display:block;font-weight:900}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:16px 12px 14px 8px}.megadropdown post-list .list-title h3:not(:has(a)){position:relative}.megadropdown post-list .list-title h3:not(:has(a))::before{content:\"\";background-color:#050400;inset-block-end:0;inset-inline-start:0;width:100%;height:2px;position:absolute}.megadropdown post-list .list-title h3 a{border-radius:0;text-decoration:none;font-size:inherit;display:flex;align-items:center;justify-content:space-between;min-height:53px;width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative;height:unset;font-weight:900}.megadropdown post-list .list-title h3 a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}.megadropdown post-list .list-title h3 a.selected,.megadropdown post-list .list-title h3 a[aria-expanded=true]{background-color:#050400;color:#fff}.megadropdown post-list .list-title h3 a:hover{background-color:#504f4b;color:#fff}.megadropdown post-list .list-title h3 a:hover::before{background-color:#504f4b}.megadropdown post-list .list-title h3 a::before{height:2px}@media screen and (max-width: 1023.98px){.megadropdown post-list .list-title h3{font-size:1rem}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:14px 12px 12px 8px}}@media screen and (max-width: 599.98px){.megadropdown post-list .list-title h3{font-size:.875rem}}.megadropdown post-list-item>a{padding-block:13px 12px;padding-inline-start:8px;display:flex;text-decoration:none;width:100%;min-width:100%;height:auto;min-height:48px;white-space:normal;word-break:break-word}.megadropdown post-list-item>a:hover{border-block-width:0}@media screen and (min-width: 1024px){.megadropdown post-list-item>a{font-size:1.25rem}}@media screen and (max-width: 1023.98px){.megadropdown post-list-item>a{padding-block:12px 11px}}@media screen and (max-width: 599.98px){.megadropdown post-list-item>a{font-size:.875rem}}.megadropdown .back-button{display:none;margin-block-end:2rem}.megadropdown .back-button .btn{width:auto}@media screen and (max-width: 1023.98px){.megadropdown .back-button{order:-1;display:block}}.megadropdown .close-button{position:absolute;inset-block-start:1rem;inset-inline-end:1rem}@media screen and (max-width: 1023.98px){.megadropdown .close-button{display:none}}";
1057
959
  const PostMegadropdownStyle0 = postMegadropdownCss;
1058
960
 
1059
961
  const PostMegadropdown = class {
1060
962
  constructor(hostRef) {
1061
963
  index.registerInstance(this, hostRef);
1062
964
  this.postToggleMegadropdown = index.createEvent(this, "postToggleMegadropdown", 7);
965
+ this.handleClickOutside = (event) => {
966
+ if (this.device !== 'desktop')
967
+ return;
968
+ const target = event.target;
969
+ if (this.host.contains(target)) {
970
+ return;
971
+ }
972
+ if (target instanceof HTMLElement) {
973
+ const trigger = target.closest('post-megadropdown-trigger');
974
+ if (trigger) {
975
+ const targetDropdownId = trigger.getAttribute('for');
976
+ if (targetDropdownId !== this.host.id) {
977
+ return;
978
+ }
979
+ }
980
+ }
981
+ this.hide(false);
982
+ };
1063
983
  this.device = breakpoints.breakpoint.get('name');
1064
984
  this.isVisible = false;
1065
985
  this.animationClass = null;
1066
986
  }
1067
- firstFocusableEl;
1068
- lastFocusableEl;
1069
- get host() { return index.getElement(this); }
1070
- /** Tracks the currently active dropdown instance. */
1071
- static activeDropdown = null;
1072
987
  breakpointChange(e) {
1073
988
  this.device = e.detail;
1074
989
  if (this.device === 'desktop' && this.isVisible) {
1075
990
  this.animationClass = null;
1076
991
  }
1077
992
  }
1078
- /**
1079
- * Emits when the dropdown is shown or hidden.
1080
- * The event payload is an object.
1081
- * `isVisible` is true when the dropdown gets opened and false when it gets closed
1082
- * `focusParent` determines whether after the closing of the mega dropdown, the focus should go back to the trigger parent or naturally go to the next focusable element in the page
1083
- **/
1084
- postToggleMegadropdown;
1085
993
  disconnectedCallback() {
1086
994
  this.removeListeners();
1087
995
  window.removeEventListener('postBreakpoint:name', this.breakpointChange.bind(this));
@@ -1161,24 +1069,6 @@ const PostMegadropdown = class {
1161
1069
  this.removeListeners();
1162
1070
  }
1163
1071
  }
1164
- handleClickOutside = (event) => {
1165
- if (this.device !== 'desktop')
1166
- return;
1167
- const target = event.target;
1168
- if (this.host.contains(target)) {
1169
- return;
1170
- }
1171
- if (target instanceof HTMLElement) {
1172
- const trigger = target.closest('post-megadropdown-trigger');
1173
- if (trigger) {
1174
- const targetDropdownId = trigger.getAttribute('for');
1175
- if (targetDropdownId !== this.host.id) {
1176
- return;
1177
- }
1178
- }
1179
- }
1180
- this.hide(false);
1181
- };
1182
1072
  addListeners() {
1183
1073
  this.host.addEventListener('keydown', e => this.keyboardHandler(e));
1184
1074
  document.addEventListener('keyup', e => this.handleTabOutside(e));
@@ -1221,7 +1111,10 @@ const PostMegadropdown = class {
1221
1111
  const containerStyle = this.isVisible ? {} : { display: 'none' };
1222
1112
  return (index.h(index.Host, { key: '7426a12ebaeac0ce3b8402c3da4d5393daca059b', version: _package.version }, index.h("div", { key: 'd47b60c334577f5662f19912f12ce941b4b52d94', class: `megadropdown-container ${this.animationClass || ''}`, style: containerStyle, onAnimationEnd: () => this.handleAnimationEnd() }, index.h("div", { key: '2798f217b2b3e43c3c63072884bbbbe7d99ed62f', class: "megadropdown" }, index.h("slot", { key: 'b61f82bbc7f87f65d9b6957e7a4e5d6790b6dd00', name: "megadropdown-title" }), index.h("div", { key: 'f4996a819511cb59185faeedbdcec4be6e6f8a24', class: "megadropdown-content" }, index.h("slot", { key: '54f695c3b3d30a6a1aae7f7dc6f65f4d4d27de68' })), index.h("div", { key: 'b1334295c7d758e20c85b6c6c8cefc31dcf09e20', onClick: () => this.hide(true), class: "back-button" }, index.h("slot", { key: 'c4db69fa3207ce4cb47b725e37b1993820a2a64c', name: "back-button" })), index.h("div", { key: '68b22a3222382586fc749dec63e36edae84360c1', onClick: () => this.hide(true), class: "close-button" }, index.h("slot", { key: '8023b75c931a95dbd9552c1a713790e77e40f526', name: "close-button" }))))));
1223
1113
  }
1114
+ get host() { return index.getElement(this); }
1224
1115
  };
1116
+ /** Tracks the currently active dropdown instance. */
1117
+ PostMegadropdown.activeDropdown = null;
1225
1118
  PostMegadropdown.style = PostMegadropdownStyle0;
1226
1119
 
1227
1120
  const postMegadropdownTriggerCss = "post-megadropdown-trigger{width:100%;position:relative;z-index:3}";
@@ -1230,20 +1123,45 @@ const PostMegadropdownTriggerStyle0 = postMegadropdownTriggerCss;
1230
1123
  const PostMegadropdownTrigger = class {
1231
1124
  constructor(hostRef) {
1232
1125
  index.registerInstance(this, hostRef);
1126
+ /**
1127
+ * Reference to the slotted button within the trigger, if present.
1128
+ * Used to manage click and key events for mega dropdown control.
1129
+ */
1130
+ this.slottedButton = null;
1131
+ /**
1132
+ * Tracks whether this trigger's dropdown was expanded before a state change.
1133
+ * Used to determine if this trigger should handle focus when its dropdown closes.
1134
+ */
1135
+ this.wasExpanded = false;
1136
+ this.handleKeyDown = (event) => {
1137
+ if (event.key === 'Enter' || event.key === ' ') {
1138
+ event.preventDefault();
1139
+ this.handleToggle();
1140
+ if (this.megadropdown && !this.ariaExpanded) {
1141
+ setTimeout(() => this.megadropdown.focusFirst(), 100);
1142
+ }
1143
+ }
1144
+ };
1145
+ this.handleToggleMegadropdown = (event) => {
1146
+ eventGuard.eventGuard(this.host, event, { targetLocalName: 'post-megadropdown' }, () => {
1147
+ if (event.target.id === this.for) {
1148
+ this.ariaExpanded = event.detail.isVisible;
1149
+ // Focus on the trigger parent of the dropdown after it's closed if the close button had been clicked
1150
+ if (this.wasExpanded && !this.ariaExpanded && event.detail.focusParent) {
1151
+ setTimeout(() => {
1152
+ this.slottedButton?.focus();
1153
+ }, 100);
1154
+ }
1155
+ this.wasExpanded = this.ariaExpanded;
1156
+ if (this.slottedButton) {
1157
+ this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
1158
+ }
1159
+ }
1160
+ });
1161
+ };
1233
1162
  this.for = undefined;
1234
1163
  this.ariaExpanded = false;
1235
1164
  }
1236
- get host() { return index.getElement(this); }
1237
- /**
1238
- * Reference to the slotted button within the trigger, if present.
1239
- * Used to manage click and key events for mega dropdown control.
1240
- */
1241
- slottedButton = null;
1242
- /**
1243
- * Tracks whether this trigger's dropdown was expanded before a state change.
1244
- * Used to determine if this trigger should handle focus when its dropdown closes.
1245
- */
1246
- wasExpanded = false;
1247
1165
  /**
1248
1166
  * Watch for changes to the `for` property to validate its type and ensure it is a string.
1249
1167
  * @param forValue - The new value of the `for` property.
@@ -1265,33 +1183,10 @@ const PostMegadropdownTrigger = class {
1265
1183
  console.warn(`No post-megadropdown found with ID: ${this.for}`);
1266
1184
  }
1267
1185
  }
1268
- handleKeyDown = (event) => {
1269
- if (event.key === 'Enter' || event.key === ' ') {
1270
- event.preventDefault();
1271
- this.handleToggle();
1272
- if (this.megadropdown && !this.ariaExpanded) {
1273
- setTimeout(() => this.megadropdown.focusFirst(), 100);
1274
- }
1275
- }
1276
- };
1277
1186
  componentDidLoad() {
1278
1187
  this.validateControlFor();
1279
1188
  // Check if the mega dropdown attached to the trigger is expanded or not
1280
- document.addEventListener('postToggleMegadropdown', (event) => {
1281
- if (event.target.id === this.for) {
1282
- this.ariaExpanded = event.detail.isVisible;
1283
- // Focus on the trigger parent of the dropdown after it's closed if close button had been clicked
1284
- if (this.wasExpanded && !this.ariaExpanded && event.detail.focusParent) {
1285
- setTimeout(() => {
1286
- this.slottedButton?.focus();
1287
- }, 100);
1288
- }
1289
- this.wasExpanded = this.ariaExpanded;
1290
- if (this.slottedButton) {
1291
- this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
1292
- }
1293
- }
1294
- });
1189
+ document.addEventListener('postToggleMegadropdown', this.handleToggleMegadropdown);
1295
1190
  this.slottedButton = this.host.querySelector('button');
1296
1191
  if (this.slottedButton) {
1297
1192
  this.slottedButton.setAttribute('aria-haspopup', 'menu');
@@ -1304,9 +1199,13 @@ const PostMegadropdownTrigger = class {
1304
1199
  console.warn('No button found within post-megadropdown-trigger');
1305
1200
  }
1306
1201
  }
1202
+ disconnectedCallback() {
1203
+ document.removeEventListener('postToggleMegadropdown', this.handleToggleMegadropdown);
1204
+ }
1307
1205
  render() {
1308
- return (index.h(index.Host, { key: 'a879ee7ccf98c76e6cb2b82b3bfbdff39280e2d5', "data-version": _package.version, "tab-index": "-1" }, index.h("button", { key: '31e506e1bd542050ae731be74b01614e61dd9622' }, index.h("slot", { key: 'c17394f96e1d54eda841f3d9485d9e5c2457acff' }))));
1206
+ return (index.h(index.Host, { key: '86b85efede8d9b19f3f0560f500f33f5e172177f', "data-version": _package.version, "tab-index": "-1" }, index.h("button", { key: '0f810e4c38bc4abf23ac60ab27b36d408e7ced0d' }, index.h("slot", { key: '2a522ac7e15ef8ac077b73cdebf629b89ea173c6' }))));
1309
1207
  }
1208
+ get host() { return index.getElement(this); }
1310
1209
  static get watchers() { return {
1311
1210
  "for": ["validateControlFor"]
1312
1211
  }; }
@@ -1320,28 +1219,54 @@ const PostMenu = class {
1320
1219
  constructor(hostRef) {
1321
1220
  index.registerInstance(this, hostRef);
1322
1221
  this.toggleMenu = index.createEvent(this, "toggleMenu", 7);
1222
+ this.lastFocusedElement = null;
1223
+ this.KEYCODES = {
1224
+ SPACE: ' ',
1225
+ ENTER: 'Enter',
1226
+ UP: 'ArrowUp',
1227
+ DOWN: 'ArrowDown',
1228
+ TAB: 'Tab',
1229
+ HOME: 'Home',
1230
+ END: 'End',
1231
+ ESCAPE: 'Escape',
1232
+ };
1233
+ this.handleKeyDown = (e) => {
1234
+ e.stopPropagation();
1235
+ if (e.key === this.KEYCODES.ESCAPE) {
1236
+ this.toggle(this.host);
1237
+ return;
1238
+ }
1239
+ if (Object.values(this.KEYCODES).includes(e.key)) {
1240
+ this.controlKeyDownHandler(e);
1241
+ }
1242
+ };
1243
+ this.handlePostToggle = (event) => {
1244
+ eventGuard.eventGuard(this.host, event, { targetLocalName: 'post-popovercontainer', delegatorSelector: 'post-menu' }, () => {
1245
+ this.isVisible = event.detail;
1246
+ this.toggleMenu.emit(this.isVisible);
1247
+ requestAnimationFrame(() => {
1248
+ if (this.isVisible) {
1249
+ this.lastFocusedElement = this.root?.activeElement;
1250
+ const menuItems = this.getSlottedItems();
1251
+ if (menuItems.length > 0) {
1252
+ menuItems[0].focus();
1253
+ }
1254
+ }
1255
+ else if (this.lastFocusedElement) {
1256
+ this.lastFocusedElement.focus();
1257
+ }
1258
+ });
1259
+ });
1260
+ };
1261
+ this.handleClick = (e) => {
1262
+ const target = e.target;
1263
+ if (['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {
1264
+ this.toggle(this.host);
1265
+ }
1266
+ };
1323
1267
  this.placement = 'bottom';
1324
1268
  this.isVisible = false;
1325
1269
  }
1326
- popoverRef;
1327
- lastFocusedElement = null;
1328
- KEYCODES = {
1329
- SPACE: ' ',
1330
- ENTER: 'Enter',
1331
- UP: 'ArrowUp',
1332
- DOWN: 'ArrowDown',
1333
- TAB: 'Tab',
1334
- HOME: 'Home',
1335
- END: 'End',
1336
- ESCAPE: 'Escape',
1337
- };
1338
- get host() { return index.getElement(this); }
1339
- /**
1340
- * Emits when the menu is shown or hidden.
1341
- * The event payload is a boolean: `true` when the menu was opened, `false` when it was closed.
1342
- **/
1343
- toggleMenu;
1344
- root;
1345
1270
  connectedCallback() {
1346
1271
  this.root = getRoot.getRoot(this.host);
1347
1272
  this.host.addEventListener('keydown', this.handleKeyDown);
@@ -1350,24 +1275,12 @@ const PostMenu = class {
1350
1275
  disconnectedCallback() {
1351
1276
  this.host.removeEventListener('keydown', this.handleKeyDown);
1352
1277
  this.host.removeEventListener('click', this.handleClick);
1278
+ this.popoverRef?.removeEventListener('postToggle', this.handlePostToggle);
1353
1279
  }
1354
1280
  componentDidLoad() {
1355
- this.popoverRef.addEventListener('postToggle', (event) => {
1356
- this.isVisible = event.detail;
1357
- this.toggleMenu.emit(this.isVisible);
1358
- requestAnimationFrame(() => {
1359
- if (this.isVisible) {
1360
- this.lastFocusedElement = this.root.activeElement;
1361
- const menuItems = this.getSlottedItems();
1362
- if (menuItems.length > 0) {
1363
- menuItems[0].focus();
1364
- }
1365
- }
1366
- else if (this.lastFocusedElement) {
1367
- this.lastFocusedElement.focus();
1368
- }
1369
- });
1370
- });
1281
+ if (this.popoverRef) {
1282
+ this.popoverRef.addEventListener('postToggle', this.handlePostToggle);
1283
+ }
1371
1284
  }
1372
1285
  /**
1373
1286
  * Toggles the menu visibility based on its current state.
@@ -1404,22 +1317,6 @@ const PostMenu = class {
1404
1317
  console.error('hide: popoverRef is null or undefined');
1405
1318
  }
1406
1319
  }
1407
- handleKeyDown = (e) => {
1408
- e.stopPropagation();
1409
- if (e.key === this.KEYCODES.ESCAPE) {
1410
- this.toggle(this.host);
1411
- return;
1412
- }
1413
- if (Object.values(this.KEYCODES).includes(e.key)) {
1414
- this.controlKeyDownHandler(e);
1415
- }
1416
- };
1417
- handleClick = (e) => {
1418
- const target = e.target;
1419
- if (['BUTTON', 'A', 'INPUT', 'SELECT', 'TEXTAREA'].includes(target.tagName)) {
1420
- this.toggle(this.host);
1421
- }
1422
- };
1423
1320
  controlKeyDownHandler(e) {
1424
1321
  const menuItems = this.getSlottedItems();
1425
1322
  if (!menuItems.length) {
@@ -1466,8 +1363,9 @@ const PostMenu = class {
1466
1363
  .flatMap(el => Array.from(getFocusableChildren(el))));
1467
1364
  }
1468
1365
  render() {
1469
- return (index.h(index.Host, { key: 'bbf51586a2b534d8784124547afb4e3a1b5c8dc8', "data-version": _package.version, role: "menu" }, index.h("post-popovercontainer", { key: 'd54ac2a016ca74fc9fe8a34cdde5ac42786cde9e', placement: this.placement, ref: e => (this.popoverRef = e) }, index.h("div", { key: 'bbcd8c421bb6ac757c9d818ce6b56f343032ba74', class: "popover-container", part: "popover-container" }, index.h("slot", { key: 'af9513da5bb0c9d42b1f1d04af0fd9ee2a681e81' })))));
1366
+ return (index.h(index.Host, { key: 'a86276a1fefccbb1f2b50f1ad74dd98ddcbdae5d', "data-version": _package.version, role: "menu" }, index.h("post-popovercontainer", { key: 'a0b2a35714ba370b7a73d92d1d6c036aa7039aea', placement: this.placement, ref: e => (this.popoverRef = e) }, index.h("div", { key: '98da2e21f8e4b4e02b4c347bc4f9238edc635b77', class: "popover-container", part: "popover-container" }, index.h("slot", { key: 'd3060c46482c5f3179827b8996a9a4b24abf49fa' })))));
1470
1367
  }
1368
+ get host() { return index.getElement(this); }
1471
1369
  };
1472
1370
  PostMenu.style = PostMenuStyle0;
1473
1371
 
@@ -1477,16 +1375,20 @@ const PostMenuTriggerStyle0 = postMenuTriggerCss;
1477
1375
  const PostMenuTrigger = class {
1478
1376
  constructor(hostRef) {
1479
1377
  index.registerInstance(this, hostRef);
1378
+ /**
1379
+ * Reference to the slotted button within the trigger, if present.
1380
+ * Used to manage click and key events for menu control.
1381
+ */
1382
+ this.slottedButton = null;
1383
+ this.handleKeyDown = (e) => {
1384
+ if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
1385
+ e.preventDefault();
1386
+ this.handleToggle();
1387
+ }
1388
+ };
1480
1389
  this.for = undefined;
1481
1390
  this.ariaExpanded = false;
1482
1391
  }
1483
- get host() { return index.getElement(this); }
1484
- /**
1485
- * Reference to the slotted button within the trigger, if present.
1486
- * Used to manage click and key events for menu control.
1487
- */
1488
- slottedButton = null;
1489
- root;
1490
1392
  /**
1491
1393
  * Watch for changes to the `for` property to validate its type and ensure it is a string.
1492
1394
  * @param forValue - The new value of the `for` property.
@@ -1506,12 +1408,6 @@ const PostMenuTrigger = class {
1506
1408
  console.warn(`No post-menu found with ID: ${this.for}`);
1507
1409
  }
1508
1410
  }
1509
- handleKeyDown = (e) => {
1510
- if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
1511
- e.preventDefault();
1512
- this.handleToggle();
1513
- }
1514
- };
1515
1411
  connectedCallback() {
1516
1412
  this.root = getRoot.getRoot(this.host);
1517
1413
  }
@@ -1547,8 +1443,9 @@ const PostMenuTrigger = class {
1547
1443
  }
1548
1444
  }
1549
1445
  render() {
1550
- return (index.h(index.Host, { key: '84316d4a69c4231be636e5ff8971752d5af9bab2', "data-version": _package.version, "tab-index": "-1" }, index.h("slot", { key: 'd3091adcf7033c4dd25e49fa383ccb9773b2d226' })));
1446
+ return (index.h(index.Host, { key: '1b9589febc2976d17eed3363d91b4321473b7b5e', "data-version": _package.version, "tab-index": "-1" }, index.h("slot", { key: 'bec55f97274084ab4721dc085dc9e1c3a216c0a3' })));
1551
1447
  }
1448
+ get host() { return index.getElement(this); }
1552
1449
  static get watchers() { return {
1553
1450
  "for": ["validateControlFor"]
1554
1451
  }; }
@@ -3599,7 +3496,385 @@ const computePosition = (reference, floating, options) => {
3599
3496
  });
3600
3497
  };
3601
3498
 
3602
- (()=>{var c=class extends Event{oldState;newState;constructor(t,{oldState:o="",newState:r="",...i}={}){super(t,i),this.oldState=String(o||""),this.newState=String(r||"");}},R=new WeakMap;function A(e,t,o){R.set(e,setTimeout(()=>{R.has(e)&&e.dispatchEvent(new c("toggle",{cancelable:!1,oldState:t,newState:o}));},0));}var D=globalThis.ShadowRoot||function(){},z=globalThis.HTMLDialogElement||function(){},M=new WeakMap,p=new WeakMap,h=new WeakMap;function L(e){return h.get(e)||"hidden"}var b=new WeakMap;function O(e){let t=e.popoverTargetElement;if(!(t instanceof HTMLElement))return;let o=L(t);e.popoverTargetAction==="show"&&o==="showing"||e.popoverTargetAction==="hide"&&o==="hidden"||(o==="showing"?m(t,!0,!0):d(t,!1)&&(b.set(t,e),S(t)));}function d(e,t){return !(e.popover!=="auto"&&e.popover!=="manual"||!e.isConnected||t&&L(e)!=="showing"||!t&&L(e)!=="hidden"||e instanceof z&&e.hasAttribute("open")||document.fullscreenElement===e)}function N(e){return e?Array.from(p.get(e.ownerDocument)||[]).indexOf(e)+1:0}function V(e){let t=W(e),o=U(e);return N(t)>N(o)?t:o}function y(e){let t=p.get(e);for(let o of t||[])if(!o.isConnected)t.delete(o);else return o;return null}function v(e){return typeof e.getRootNode=="function"?e.getRootNode():e.parentNode?v(e.parentNode):e}function W(e){for(;e;){if(e instanceof HTMLElement&&e.popover==="auto"&&h.get(e)==="showing")return e;if(e=e.parentElement||v(e),e instanceof D&&(e=e.host),e instanceof Document)return}}function U(e){for(;e;){let t=e.popoverTargetElement;if(t instanceof HTMLElement)return t;if(e=e.parentElement||v(e),e instanceof D&&(e=e.host),e instanceof Document)return}}function G(e){let t=new Map,o=0,r=e.ownerDocument;for(let a of p.get(r)||[])t.set(a,o),o+=1;t.set(e,o),o+=1;let i=null;function l(a){let g=W(a);if(g===null)return null;let n=t.get(g);(i===null||t.get(i)<n)&&(i=g);}return l(e?.parentElement),i}function Q(e){return e.hidden||e instanceof D||(e instanceof HTMLButtonElement||e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement||e instanceof HTMLOptGroupElement||e instanceof HTMLOptionElement||e instanceof HTMLFieldSetElement)&&e.disabled||e instanceof HTMLInputElement&&e.type==="hidden"||e instanceof HTMLAnchorElement&&e.href===""?!1:typeof e.tabIndex=="number"&&e.tabIndex!==-1}function _(e){if(e.shadowRoot&&e.shadowRoot.delegatesFocus!==!0)return null;let t=e;t.shadowRoot&&(t=t.shadowRoot);let o=t.querySelector("[autofocus]");if(o)return o;{let l=t.querySelectorAll("slot");for(let a of l){let g=a.assignedElements({flatten:!0});for(let n of g){if(n.hasAttribute("autofocus"))return n;if(o=n.querySelector("[autofocus]"),o)return o}}}let r=e.ownerDocument.createTreeWalker(t,NodeFilter.SHOW_ELEMENT),i=r.currentNode;for(;i;){if(Q(i))return i;i=r.nextNode();}}function $(e){_(e)?.focus();}var H=new WeakMap;function S(e){if(!d(e,!1))return;let t=e.ownerDocument;if(!e.dispatchEvent(new c("beforetoggle",{cancelable:!0,oldState:"closed",newState:"open"}))||!d(e,!1))return;let o=!1;if(e.popover==="auto"){let i=e.getAttribute("popover"),l=G(e)||t;if(T(l,!1,!0),i!==e.getAttribute("popover")||!d(e,!1))return}y(t)||(o=!0),H.delete(e);let r=t.activeElement;e.classList.add(":popover-open"),h.set(e,"showing"),M.has(t)||M.set(t,new Set),M.get(t).add(e),$(e),e.popover==="auto"&&(p.has(t)||p.set(t,new Set),p.get(t).add(e),q(b.get(e),!0)),o&&r&&e.popover==="auto"&&H.set(e,r),A(e,"closed","open");}function m(e,t=!1,o=!1){if(!d(e,!0))return;let r=e.ownerDocument;if(e.popover==="auto"&&(T(e,t,o),!d(e,!0))||(q(b.get(e),!1),b.delete(e),o&&(e.dispatchEvent(new c("beforetoggle",{oldState:"open",newState:"closed"})),!d(e,!0))))return;M.get(r)?.delete(e),p.get(r)?.delete(e),e.classList.remove(":popover-open"),h.set(e,"hidden"),o&&A(e,"open","closed");let i=H.get(e);i&&(H.delete(e),t&&i.focus());}function F(e,t=!1,o=!1){let r=y(e);for(;r;)m(r,t,o),r=y(e);}function T(e,t,o){let r=e.ownerDocument||e;if(e instanceof Document)return F(r,t,o);let i=null,l=!1;for(let a of p.get(r)||[])if(a===e)l=!0;else if(l){i=a;break}if(!l)return F(r,t,o);for(;i&&L(i)==="showing"&&p.get(r)?.size;)m(i,t,o);}var P=new WeakMap;function x(e){if(!e.isTrusted)return;let t=e.composedPath()[0];if(!t)return;let o=t.ownerDocument;if(!y(o))return;let i=V(t);if(i&&e.type==="pointerdown")P.set(o,i);else if(e.type==="pointerup"){let l=P.get(o)===i;P.delete(o),l&&T(i||o,!1,!0);}}var k=new WeakMap;function q(e,t=!1){if(!e)return;k.has(e)||k.set(e,e.getAttribute("aria-expanded"));let o=e.popoverTargetElement;if(o instanceof HTMLElement&&o.popover==="auto")e.setAttribute("aria-expanded",String(t));else {let r=k.get(e);r?e.setAttribute("aria-expanded",r):e.removeAttribute("aria-expanded");}}var B=globalThis.ShadowRoot||function(){};function j(){return typeof HTMLElement<"u"&&typeof HTMLElement.prototype=="object"&&"popover"in HTMLElement.prototype}function f(e,t,o){let r=e[t];Object.defineProperty(e,t,{value(i){return r.call(this,o(i))}});}var J=/(^|[^\\]):popover-open\b/g,C=`
3499
+ // src/events.ts
3500
+ var ToggleEvent = class extends Event {
3501
+ oldState;
3502
+ newState;
3503
+ constructor(type, { oldState = "", newState = "", ...init } = {}) {
3504
+ super(type, init);
3505
+ this.oldState = String(oldState || "");
3506
+ this.newState = String(newState || "");
3507
+ }
3508
+ };
3509
+ var popoverToggleTaskQueue = /* @__PURE__ */ new WeakMap();
3510
+ function queuePopoverToggleEventTask(element, oldState, newState) {
3511
+ popoverToggleTaskQueue.set(
3512
+ element,
3513
+ setTimeout(() => {
3514
+ if (!popoverToggleTaskQueue.has(element)) return;
3515
+ element.dispatchEvent(
3516
+ new ToggleEvent("toggle", {
3517
+ cancelable: false,
3518
+ oldState,
3519
+ newState
3520
+ })
3521
+ );
3522
+ }, 0)
3523
+ );
3524
+ }
3525
+
3526
+ // src/popover-helpers.ts
3527
+ var ShadowRoot$1 = globalThis.ShadowRoot || function() {
3528
+ };
3529
+ var HTMLDialogElement = globalThis.HTMLDialogElement || function() {
3530
+ };
3531
+ var topLayerElements = /* @__PURE__ */ new WeakMap();
3532
+ var autoPopoverList = /* @__PURE__ */ new WeakMap();
3533
+ var visibilityState = /* @__PURE__ */ new WeakMap();
3534
+ function getPopoverVisibilityState(popover) {
3535
+ return visibilityState.get(popover) || "hidden";
3536
+ }
3537
+ var popoverInvoker = /* @__PURE__ */ new WeakMap();
3538
+ function popoverTargetAttributeActivationBehavior(element) {
3539
+ const popover = element.popoverTargetElement;
3540
+ if (!(popover instanceof HTMLElement)) {
3541
+ return;
3542
+ }
3543
+ const visibility = getPopoverVisibilityState(popover);
3544
+ if (element.popoverTargetAction === "show" && visibility === "showing") {
3545
+ return;
3546
+ }
3547
+ if (element.popoverTargetAction === "hide" && visibility === "hidden") return;
3548
+ if (visibility === "showing") {
3549
+ hidePopover(popover, true, true);
3550
+ } else if (checkPopoverValidity(popover, false)) {
3551
+ popoverInvoker.set(popover, element);
3552
+ showPopover(popover);
3553
+ }
3554
+ }
3555
+ function checkPopoverValidity(element, expectedToBeShowing) {
3556
+ if (element.popover !== "auto" && element.popover !== "manual") {
3557
+ return false;
3558
+ }
3559
+ if (!element.isConnected) return false;
3560
+ if (expectedToBeShowing && getPopoverVisibilityState(element) !== "showing") {
3561
+ return false;
3562
+ }
3563
+ if (!expectedToBeShowing && getPopoverVisibilityState(element) !== "hidden") {
3564
+ return false;
3565
+ }
3566
+ if (element instanceof HTMLDialogElement && element.hasAttribute("open")) {
3567
+ return false;
3568
+ }
3569
+ if (document.fullscreenElement === element) return false;
3570
+ return true;
3571
+ }
3572
+ function getStackPosition(popover) {
3573
+ if (!popover) return 0;
3574
+ return Array.from(autoPopoverList.get(popover.ownerDocument) || []).indexOf(
3575
+ popover
3576
+ ) + 1;
3577
+ }
3578
+ function topMostClickedPopover(target) {
3579
+ const clickedPopover = nearestInclusiveOpenPopover(target);
3580
+ const invokerPopover = nearestInclusiveTargetPopoverForInvoker(target);
3581
+ if (getStackPosition(clickedPopover) > getStackPosition(invokerPopover)) {
3582
+ return clickedPopover;
3583
+ }
3584
+ return invokerPopover;
3585
+ }
3586
+ function topMostAutoPopover(document2) {
3587
+ const documentPopovers = autoPopoverList.get(document2);
3588
+ for (const popover of documentPopovers || []) {
3589
+ if (!popover.isConnected) {
3590
+ documentPopovers.delete(popover);
3591
+ } else {
3592
+ return popover;
3593
+ }
3594
+ }
3595
+ return null;
3596
+ }
3597
+ function getRootNode(node) {
3598
+ if (typeof node.getRootNode === "function") {
3599
+ return node.getRootNode();
3600
+ }
3601
+ if (node.parentNode) return getRootNode(node.parentNode);
3602
+ return node;
3603
+ }
3604
+ function nearestInclusiveOpenPopover(node) {
3605
+ while (node) {
3606
+ if (node instanceof HTMLElement && node.popover === "auto" && visibilityState.get(node) === "showing") {
3607
+ return node;
3608
+ }
3609
+ node = node instanceof Element && node.assignedSlot || node.parentElement || getRootNode(node);
3610
+ if (node instanceof ShadowRoot$1) node = node.host;
3611
+ if (node instanceof Document) return;
3612
+ }
3613
+ }
3614
+ function nearestInclusiveTargetPopoverForInvoker(node) {
3615
+ while (node) {
3616
+ const nodePopover = node.popoverTargetElement;
3617
+ if (nodePopover instanceof HTMLElement) return nodePopover;
3618
+ node = node.parentElement || getRootNode(node);
3619
+ if (node instanceof ShadowRoot$1) node = node.host;
3620
+ if (node instanceof Document) return;
3621
+ }
3622
+ }
3623
+ function topMostPopoverAncestor(newPopover) {
3624
+ const popoverPositions = /* @__PURE__ */ new Map();
3625
+ let i = 0;
3626
+ for (const popover of autoPopoverList.get(newPopover.ownerDocument) || []) {
3627
+ popoverPositions.set(popover, i);
3628
+ i += 1;
3629
+ }
3630
+ popoverPositions.set(newPopover, i);
3631
+ i += 1;
3632
+ let topMostPopoverAncestor2 = null;
3633
+ function checkAncestor(candidate) {
3634
+ const candidateAncestor = nearestInclusiveOpenPopover(candidate);
3635
+ if (candidateAncestor === null) return null;
3636
+ const candidatePosition = popoverPositions.get(candidateAncestor);
3637
+ if (topMostPopoverAncestor2 === null || popoverPositions.get(topMostPopoverAncestor2) < candidatePosition) {
3638
+ topMostPopoverAncestor2 = candidateAncestor;
3639
+ }
3640
+ }
3641
+ checkAncestor(newPopover.parentElement || getRootNode(newPopover));
3642
+ return topMostPopoverAncestor2;
3643
+ }
3644
+ function isFocusable(focusTarget) {
3645
+ if (focusTarget.hidden || focusTarget instanceof ShadowRoot$1) return false;
3646
+ if (focusTarget instanceof HTMLButtonElement || focusTarget instanceof HTMLInputElement || focusTarget instanceof HTMLSelectElement || focusTarget instanceof HTMLTextAreaElement || focusTarget instanceof HTMLOptGroupElement || focusTarget instanceof HTMLOptionElement || focusTarget instanceof HTMLFieldSetElement) {
3647
+ if (focusTarget.disabled) return false;
3648
+ }
3649
+ if (focusTarget instanceof HTMLInputElement && focusTarget.type === "hidden") {
3650
+ return false;
3651
+ }
3652
+ if (focusTarget instanceof HTMLAnchorElement && focusTarget.href === "") {
3653
+ return false;
3654
+ }
3655
+ return typeof focusTarget.tabIndex === "number" && focusTarget.tabIndex !== -1;
3656
+ }
3657
+ function focusDelegate(focusTarget) {
3658
+ if (focusTarget.shadowRoot && focusTarget.shadowRoot.delegatesFocus !== true) {
3659
+ return null;
3660
+ }
3661
+ let whereToLook = focusTarget;
3662
+ if (whereToLook.shadowRoot) {
3663
+ whereToLook = whereToLook.shadowRoot;
3664
+ }
3665
+ let autoFocusDelegate = whereToLook.querySelector("[autofocus]");
3666
+ if (autoFocusDelegate) {
3667
+ return autoFocusDelegate;
3668
+ } else {
3669
+ const slots = whereToLook.querySelectorAll("slot");
3670
+ for (const slot of slots) {
3671
+ const assignedElements = slot.assignedElements({ flatten: true });
3672
+ for (const el of assignedElements) {
3673
+ if (el.hasAttribute("autofocus")) {
3674
+ return el;
3675
+ } else {
3676
+ autoFocusDelegate = el.querySelector("[autofocus]");
3677
+ if (autoFocusDelegate) {
3678
+ return autoFocusDelegate;
3679
+ }
3680
+ }
3681
+ }
3682
+ }
3683
+ }
3684
+ const walker = focusTarget.ownerDocument.createTreeWalker(
3685
+ whereToLook,
3686
+ NodeFilter.SHOW_ELEMENT
3687
+ );
3688
+ let descendant = walker.currentNode;
3689
+ while (descendant) {
3690
+ if (isFocusable(descendant)) {
3691
+ return descendant;
3692
+ }
3693
+ descendant = walker.nextNode();
3694
+ }
3695
+ }
3696
+ function popoverFocusingSteps(subject) {
3697
+ focusDelegate(subject)?.focus();
3698
+ }
3699
+ var previouslyFocusedElements = /* @__PURE__ */ new WeakMap();
3700
+ function showPopover(element) {
3701
+ if (!checkPopoverValidity(element, false)) {
3702
+ return;
3703
+ }
3704
+ const document2 = element.ownerDocument;
3705
+ if (!element.dispatchEvent(
3706
+ new ToggleEvent("beforetoggle", {
3707
+ cancelable: true,
3708
+ oldState: "closed",
3709
+ newState: "open"
3710
+ })
3711
+ )) {
3712
+ return;
3713
+ }
3714
+ if (!checkPopoverValidity(element, false)) {
3715
+ return;
3716
+ }
3717
+ let shouldRestoreFocus = false;
3718
+ if (element.popover === "auto") {
3719
+ const originalType = element.getAttribute("popover");
3720
+ const ancestor = topMostPopoverAncestor(element) || document2;
3721
+ hideAllPopoversUntil(ancestor, false, true);
3722
+ if (originalType !== element.getAttribute("popover") || !checkPopoverValidity(element, false)) {
3723
+ return;
3724
+ }
3725
+ }
3726
+ if (!topMostAutoPopover(document2)) {
3727
+ shouldRestoreFocus = true;
3728
+ }
3729
+ previouslyFocusedElements.delete(element);
3730
+ const originallyFocusedElement = document2.activeElement;
3731
+ element.classList.add(":popover-open");
3732
+ visibilityState.set(element, "showing");
3733
+ if (!topLayerElements.has(document2)) {
3734
+ topLayerElements.set(document2, /* @__PURE__ */ new Set());
3735
+ }
3736
+ topLayerElements.get(document2).add(element);
3737
+ popoverFocusingSteps(element);
3738
+ if (element.popover === "auto") {
3739
+ if (!autoPopoverList.has(document2)) {
3740
+ autoPopoverList.set(document2, /* @__PURE__ */ new Set());
3741
+ }
3742
+ autoPopoverList.get(document2).add(element);
3743
+ setInvokerAriaExpanded(popoverInvoker.get(element), true);
3744
+ }
3745
+ if (shouldRestoreFocus && originallyFocusedElement && element.popover === "auto") {
3746
+ previouslyFocusedElements.set(element, originallyFocusedElement);
3747
+ }
3748
+ queuePopoverToggleEventTask(element, "closed", "open");
3749
+ }
3750
+ function hidePopover(element, focusPreviousElement = false, fireEvents = false) {
3751
+ if (!checkPopoverValidity(element, true)) {
3752
+ return;
3753
+ }
3754
+ const document2 = element.ownerDocument;
3755
+ if (element.popover === "auto") {
3756
+ hideAllPopoversUntil(element, focusPreviousElement, fireEvents);
3757
+ if (!checkPopoverValidity(element, true)) {
3758
+ return;
3759
+ }
3760
+ }
3761
+ setInvokerAriaExpanded(popoverInvoker.get(element), false);
3762
+ popoverInvoker.delete(element);
3763
+ if (fireEvents) {
3764
+ element.dispatchEvent(
3765
+ new ToggleEvent("beforetoggle", {
3766
+ oldState: "open",
3767
+ newState: "closed"
3768
+ })
3769
+ );
3770
+ if (!checkPopoverValidity(element, true)) {
3771
+ return;
3772
+ }
3773
+ }
3774
+ topLayerElements.get(document2)?.delete(element);
3775
+ autoPopoverList.get(document2)?.delete(element);
3776
+ element.classList.remove(":popover-open");
3777
+ visibilityState.set(element, "hidden");
3778
+ if (fireEvents) {
3779
+ queuePopoverToggleEventTask(element, "open", "closed");
3780
+ }
3781
+ const previouslyFocusedElement = previouslyFocusedElements.get(element);
3782
+ if (previouslyFocusedElement) {
3783
+ previouslyFocusedElements.delete(element);
3784
+ if (focusPreviousElement) {
3785
+ previouslyFocusedElement.focus();
3786
+ }
3787
+ }
3788
+ }
3789
+ function closeAllOpenPopovers(document2, focusPreviousElement = false, fireEvents = false) {
3790
+ let popover = topMostAutoPopover(document2);
3791
+ while (popover) {
3792
+ hidePopover(popover, focusPreviousElement, fireEvents);
3793
+ popover = topMostAutoPopover(document2);
3794
+ }
3795
+ }
3796
+ function hideAllPopoversUntil(endpoint, focusPreviousElement, fireEvents) {
3797
+ const document2 = endpoint.ownerDocument || endpoint;
3798
+ if (endpoint instanceof Document) {
3799
+ return closeAllOpenPopovers(document2, focusPreviousElement, fireEvents);
3800
+ }
3801
+ let lastToHide = null;
3802
+ let foundEndpoint = false;
3803
+ for (const popover of autoPopoverList.get(document2) || []) {
3804
+ if (popover === endpoint) {
3805
+ foundEndpoint = true;
3806
+ } else if (foundEndpoint) {
3807
+ lastToHide = popover;
3808
+ break;
3809
+ }
3810
+ }
3811
+ if (!foundEndpoint) {
3812
+ return closeAllOpenPopovers(document2, focusPreviousElement, fireEvents);
3813
+ }
3814
+ while (lastToHide && getPopoverVisibilityState(lastToHide) === "showing" && autoPopoverList.get(document2)?.size) {
3815
+ hidePopover(lastToHide, focusPreviousElement, fireEvents);
3816
+ }
3817
+ }
3818
+ var popoverPointerDownTargets = /* @__PURE__ */ new WeakMap();
3819
+ function lightDismissOpenPopovers(event) {
3820
+ if (!event.isTrusted) return;
3821
+ const target = event.composedPath()[0];
3822
+ if (!target) return;
3823
+ const document2 = target.ownerDocument;
3824
+ const topMostPopover = topMostAutoPopover(document2);
3825
+ if (!topMostPopover) return;
3826
+ const ancestor = topMostClickedPopover(target);
3827
+ if (ancestor && event.type === "pointerdown") {
3828
+ popoverPointerDownTargets.set(document2, ancestor);
3829
+ } else if (event.type === "pointerup") {
3830
+ const sameTarget = popoverPointerDownTargets.get(document2) === ancestor;
3831
+ popoverPointerDownTargets.delete(document2);
3832
+ if (sameTarget) {
3833
+ hideAllPopoversUntil(ancestor || document2, false, true);
3834
+ }
3835
+ }
3836
+ }
3837
+ var initialAriaExpandedValue = /* @__PURE__ */ new WeakMap();
3838
+ function setInvokerAriaExpanded(el, force = false) {
3839
+ if (!el) return;
3840
+ if (!initialAriaExpandedValue.has(el)) {
3841
+ initialAriaExpandedValue.set(el, el.getAttribute("aria-expanded"));
3842
+ }
3843
+ const popover = el.popoverTargetElement;
3844
+ if (popover instanceof HTMLElement && popover.popover === "auto") {
3845
+ el.setAttribute("aria-expanded", String(force));
3846
+ } else {
3847
+ const initialValue = initialAriaExpandedValue.get(el);
3848
+ if (!initialValue) {
3849
+ el.removeAttribute("aria-expanded");
3850
+ } else {
3851
+ el.setAttribute("aria-expanded", initialValue);
3852
+ }
3853
+ }
3854
+ }
3855
+
3856
+ // src/popover.ts
3857
+ var ShadowRoot2 = globalThis.ShadowRoot || function() {
3858
+ };
3859
+ function isSupported() {
3860
+ return typeof HTMLElement !== "undefined" && typeof HTMLElement.prototype === "object" && "popover" in HTMLElement.prototype;
3861
+ }
3862
+ function patchSelectorFn(object, name, mapper) {
3863
+ const original = object[name];
3864
+ Object.defineProperty(object, name, {
3865
+ value(selector) {
3866
+ return original.call(this, mapper(selector));
3867
+ }
3868
+ });
3869
+ }
3870
+ var nonEscapedPopoverSelector = /(^|[^\\]):popover-open\b/g;
3871
+ function hasLayerSupport() {
3872
+ return typeof globalThis.CSSLayerBlockRule === "function";
3873
+ }
3874
+ function getStyles() {
3875
+ const useLayer = hasLayerSupport();
3876
+ return `
3877
+ ${useLayer ? "@layer popover-polyfill {" : ""}
3603
3878
  :where([popover]) {
3604
3879
  position: fixed;
3605
3880
  z-index: 2147483647;
@@ -3617,6 +3892,14 @@ const computePosition = (reference, floating, options) => {
3617
3892
  margin: auto;
3618
3893
  }
3619
3894
 
3895
+ :where([popover]:not(.\\:popover-open)) {
3896
+ display: none;
3897
+ }
3898
+
3899
+ :where(dialog[popover].\\:popover-open) {
3900
+ display: block;
3901
+ }
3902
+
3620
3903
  :where(dialog[popover][open]) {
3621
3904
  display: revert;
3622
3905
  }
@@ -3651,11 +3934,229 @@ const computePosition = (reference, floating, options) => {
3651
3934
  bottom: 0;
3652
3935
  }
3653
3936
  }
3654
-
3655
- :where([popover]:not(.\\:popover-open)) {
3656
- display: none;
3937
+ ${useLayer ? "}" : ""}
3938
+ `;
3939
+ }
3940
+ var popoverStyleSheet = null;
3941
+ function injectStyles(root) {
3942
+ const styles = getStyles();
3943
+ if (popoverStyleSheet === null) {
3944
+ try {
3945
+ popoverStyleSheet = new CSSStyleSheet();
3946
+ popoverStyleSheet.replaceSync(styles);
3947
+ } catch {
3948
+ popoverStyleSheet = false;
3949
+ }
3657
3950
  }
3658
- `,E=null;function I(e){if(E===null)try{E=new CSSStyleSheet,E.replaceSync(C);}catch{E=!1;}if(E===!1){let t=document.createElement("style");t.textContent=C,e instanceof Document?e.head.prepend(t):e.prepend(t);}else e.adoptedStyleSheets=[E,...e.adoptedStyleSheets];}function K(){window.ToggleEvent=window.ToggleEvent||c;function e(n){return n?.includes(":popover-open")&&(n=n.replace(J,"$1.\\:popover-open")),n}f(Document.prototype,"querySelector",e),f(Document.prototype,"querySelectorAll",e),f(Element.prototype,"querySelector",e),f(Element.prototype,"querySelectorAll",e),f(Element.prototype,"matches",e),f(Element.prototype,"closest",e),f(DocumentFragment.prototype,"querySelectorAll",e),f(DocumentFragment.prototype,"querySelectorAll",e),Object.defineProperties(HTMLElement.prototype,{popover:{enumerable:!0,configurable:!0,get(){if(!this.hasAttribute("popover"))return null;let n=(this.getAttribute("popover")||"").toLowerCase();return n===""||n=="auto"?"auto":"manual"},set(n){this.setAttribute("popover",n);}},showPopover:{enumerable:!0,configurable:!0,value(){S(this);}},hidePopover:{enumerable:!0,configurable:!0,value(){m(this,!0,!0);}},togglePopover:{enumerable:!0,configurable:!0,value(n){h.get(this)==="showing"&&n===void 0||n===!1?m(this,!0,!0):(n===void 0||n===!0)&&S(this);}}});let t=Element.prototype.attachShadow;t&&Object.defineProperties(Element.prototype,{attachShadow:{enumerable:!0,configurable:!0,writable:!0,value(n){let s=t.call(this,n);return I(s),s}}});let o=HTMLElement.prototype.attachInternals;o&&Object.defineProperties(HTMLElement.prototype,{attachInternals:{enumerable:!0,configurable:!0,writable:!0,value(){let n=o.call(this);return n.shadowRoot&&I(n.shadowRoot),n}}});let r=new WeakMap;function i(n){Object.defineProperties(n.prototype,{popoverTargetElement:{enumerable:!0,configurable:!0,set(s){if(s===null)this.removeAttribute("popovertarget"),r.delete(this);else if(s instanceof Element)this.setAttribute("popovertarget",""),r.set(this,s);else throw new TypeError("popoverTargetElement must be an element or null")},get(){if(this.localName!=="button"&&this.localName!=="input"||this.localName==="input"&&this.type!=="reset"&&this.type!=="image"&&this.type!=="button"||this.disabled||this.form&&this.type==="submit")return null;let s=r.get(this);if(s&&s.isConnected)return s;if(s&&!s.isConnected)return r.delete(this),null;let u=v(this),w=this.getAttribute("popovertarget");return (u instanceof Document||u instanceof B)&&w&&u.getElementById(w)||null}},popoverTargetAction:{enumerable:!0,configurable:!0,get(){let s=(this.getAttribute("popovertargetaction")||"").toLowerCase();return s==="show"||s==="hide"?s:"toggle"},set(s){this.setAttribute("popovertargetaction",s);}}});}i(HTMLButtonElement),i(HTMLInputElement);let l=n=>{if(!n.isTrusted)return;let s=n.composedPath()[0];if(!(s instanceof Element)||s?.shadowRoot)return;let u=v(s);if(!(u instanceof B||u instanceof Document))return;let w=s.closest("[popovertargetaction],[popovertarget]");if(w){O(w),n.preventDefault();return}},a=n=>{let s=n.key,u=n.target;!n.defaultPrevented&&u&&(s==="Escape"||s==="Esc")&&T(u.ownerDocument,!0,!0);};(n=>{n.addEventListener("click",l),n.addEventListener("keydown",a),n.addEventListener("pointerdown",x),n.addEventListener("pointerup",x);})(document),I(document);}j()||K();})();
3951
+ if (popoverStyleSheet === false) {
3952
+ const sheet = document.createElement("style");
3953
+ sheet.textContent = styles;
3954
+ if (root instanceof Document) {
3955
+ root.head.prepend(sheet);
3956
+ } else {
3957
+ root.prepend(sheet);
3958
+ }
3959
+ } else {
3960
+ root.adoptedStyleSheets = [popoverStyleSheet, ...root.adoptedStyleSheets];
3961
+ }
3962
+ }
3963
+ function apply() {
3964
+ if (typeof window === "undefined") return;
3965
+ window.ToggleEvent = window.ToggleEvent || ToggleEvent;
3966
+ function rewriteSelector(selector) {
3967
+ if (selector?.includes(":popover-open")) {
3968
+ selector = selector.replace(
3969
+ nonEscapedPopoverSelector,
3970
+ "$1.\\:popover-open"
3971
+ );
3972
+ }
3973
+ return selector;
3974
+ }
3975
+ patchSelectorFn(Document.prototype, "querySelector", rewriteSelector);
3976
+ patchSelectorFn(Document.prototype, "querySelectorAll", rewriteSelector);
3977
+ patchSelectorFn(Element.prototype, "querySelector", rewriteSelector);
3978
+ patchSelectorFn(Element.prototype, "querySelectorAll", rewriteSelector);
3979
+ patchSelectorFn(Element.prototype, "matches", rewriteSelector);
3980
+ patchSelectorFn(Element.prototype, "closest", rewriteSelector);
3981
+ patchSelectorFn(
3982
+ DocumentFragment.prototype,
3983
+ "querySelectorAll",
3984
+ rewriteSelector
3985
+ );
3986
+ Object.defineProperties(HTMLElement.prototype, {
3987
+ popover: {
3988
+ enumerable: true,
3989
+ configurable: true,
3990
+ get() {
3991
+ if (!this.hasAttribute("popover")) return null;
3992
+ const value = (this.getAttribute("popover") || "").toLowerCase();
3993
+ if (value === "" || value == "auto") return "auto";
3994
+ return "manual";
3995
+ },
3996
+ set(value) {
3997
+ if (value === null) {
3998
+ this.removeAttribute("popover");
3999
+ } else {
4000
+ this.setAttribute("popover", value);
4001
+ }
4002
+ }
4003
+ },
4004
+ showPopover: {
4005
+ enumerable: true,
4006
+ configurable: true,
4007
+ value() {
4008
+ showPopover(this);
4009
+ }
4010
+ },
4011
+ hidePopover: {
4012
+ enumerable: true,
4013
+ configurable: true,
4014
+ value() {
4015
+ hidePopover(this, true, true);
4016
+ }
4017
+ },
4018
+ togglePopover: {
4019
+ enumerable: true,
4020
+ configurable: true,
4021
+ value(force) {
4022
+ if (visibilityState.get(this) === "showing" && force === void 0 || force === false) {
4023
+ hidePopover(this, true, true);
4024
+ } else if (force === void 0 || force === true) {
4025
+ showPopover(this);
4026
+ }
4027
+ }
4028
+ }
4029
+ });
4030
+ const originalAttachShadow = Element.prototype.attachShadow;
4031
+ if (originalAttachShadow) {
4032
+ Object.defineProperties(Element.prototype, {
4033
+ attachShadow: {
4034
+ enumerable: true,
4035
+ configurable: true,
4036
+ writable: true,
4037
+ value(options) {
4038
+ const shadowRoot = originalAttachShadow.call(this, options);
4039
+ injectStyles(shadowRoot);
4040
+ return shadowRoot;
4041
+ }
4042
+ }
4043
+ });
4044
+ }
4045
+ const originalAttachInternals = HTMLElement.prototype.attachInternals;
4046
+ if (originalAttachInternals) {
4047
+ Object.defineProperties(HTMLElement.prototype, {
4048
+ attachInternals: {
4049
+ enumerable: true,
4050
+ configurable: true,
4051
+ writable: true,
4052
+ value() {
4053
+ const internals = originalAttachInternals.call(this);
4054
+ if (internals.shadowRoot) {
4055
+ injectStyles(internals.shadowRoot);
4056
+ }
4057
+ return internals;
4058
+ }
4059
+ }
4060
+ });
4061
+ }
4062
+ const popoverTargetAssociatedElements = /* @__PURE__ */ new WeakMap();
4063
+ function applyPopoverInvokerElementMixin(ElementClass) {
4064
+ Object.defineProperties(ElementClass.prototype, {
4065
+ popoverTargetElement: {
4066
+ enumerable: true,
4067
+ configurable: true,
4068
+ set(targetElement) {
4069
+ if (targetElement === null) {
4070
+ this.removeAttribute("popovertarget");
4071
+ popoverTargetAssociatedElements.delete(this);
4072
+ } else if (!(targetElement instanceof Element)) {
4073
+ throw new TypeError(
4074
+ `popoverTargetElement must be an element or null`
4075
+ );
4076
+ } else {
4077
+ this.setAttribute("popovertarget", "");
4078
+ popoverTargetAssociatedElements.set(this, targetElement);
4079
+ }
4080
+ },
4081
+ get() {
4082
+ if (this.localName !== "button" && this.localName !== "input") {
4083
+ return null;
4084
+ }
4085
+ if (this.localName === "input" && this.type !== "reset" && this.type !== "image" && this.type !== "button") {
4086
+ return null;
4087
+ }
4088
+ if (this.disabled) {
4089
+ return null;
4090
+ }
4091
+ if (this.form && this.type === "submit") {
4092
+ return null;
4093
+ }
4094
+ const targetElement = popoverTargetAssociatedElements.get(this);
4095
+ if (targetElement && targetElement.isConnected) {
4096
+ return targetElement;
4097
+ } else if (targetElement && !targetElement.isConnected) {
4098
+ popoverTargetAssociatedElements.delete(this);
4099
+ return null;
4100
+ }
4101
+ const root = getRootNode(this);
4102
+ const idref = this.getAttribute("popovertarget");
4103
+ if ((root instanceof Document || root instanceof ShadowRoot2) && idref) {
4104
+ return root.getElementById(idref) || null;
4105
+ }
4106
+ return null;
4107
+ }
4108
+ },
4109
+ popoverTargetAction: {
4110
+ enumerable: true,
4111
+ configurable: true,
4112
+ get() {
4113
+ const value = (this.getAttribute("popovertargetaction") || "").toLowerCase();
4114
+ if (value === "show" || value === "hide") return value;
4115
+ return "toggle";
4116
+ },
4117
+ set(value) {
4118
+ this.setAttribute("popovertargetaction", value);
4119
+ }
4120
+ }
4121
+ });
4122
+ }
4123
+ applyPopoverInvokerElementMixin(HTMLButtonElement);
4124
+ applyPopoverInvokerElementMixin(HTMLInputElement);
4125
+ const handleInvokerActivation = (event) => {
4126
+ const composedPath = event.composedPath();
4127
+ const target = composedPath[0];
4128
+ if (!(target instanceof Element) || target?.shadowRoot) {
4129
+ return;
4130
+ }
4131
+ const root = getRootNode(target);
4132
+ if (!(root instanceof ShadowRoot2 || root instanceof Document)) {
4133
+ return;
4134
+ }
4135
+ const invoker = composedPath.find(
4136
+ (el) => el.matches?.("[popovertargetaction],[popovertarget]")
4137
+ );
4138
+ if (invoker) {
4139
+ popoverTargetAttributeActivationBehavior(invoker);
4140
+ event.preventDefault();
4141
+ return;
4142
+ }
4143
+ };
4144
+ const onKeydown = (event) => {
4145
+ const key = event.key;
4146
+ const target = event.target;
4147
+ if (!event.defaultPrevented && target && (key === "Escape" || key === "Esc")) {
4148
+ hideAllPopoversUntil(target.ownerDocument, true, true);
4149
+ }
4150
+ };
4151
+ const addEventListeners = (root) => {
4152
+ root.addEventListener("click", handleInvokerActivation);
4153
+ root.addEventListener("keydown", onKeydown);
4154
+ root.addEventListener("pointerdown", lightDismissOpenPopovers);
4155
+ root.addEventListener("pointerup", lightDismissOpenPopovers);
4156
+ };
4157
+ addEventListeners(document);
4158
+ injectStyles(document);
4159
+ }
3659
4160
 
3660
4161
  const postPopovercontainerCss = "@layer polyfill{@supports not selector(:popover-open){[popover]:not(.\\:popover-open){display:none}}}:where(post-popovercontainer){background-color:rgba(0,0,0,0);border:rgba(0,0,0,0);position:fixed;margin:0;padding:0;overflow:visible}:where(post-popovercontainer)>div{box-shadow:var(--post-device-elevation-300);width:max-content;max-width:100%;color:var(--post-current-palette-fg);background-color:var(--post-current-palette-bg);border:2px solid rgba(0,0,0,0);border-radius:4px}:where(post-popovercontainer)[tooltip]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}:where(post-popovercontainer)[safe-space]::after{content:\"\";position:fixed;inset:0;z-index:-1;pointer-events:auto}:where(post-popovercontainer)[safe-space=triangle]::after{clip-path:polygon(var(--safe-space-cursor-x, 0) var(--safe-space-cursor-y, 0), var(--safe-space-popover-x-start, var(--safe-space-popover-x, 0)) var(--safe-space-popover-y, var(--safe-space-popover-y-start, 0)), var(--safe-space-popover-x-end, var(--safe-space-popover-x, 0)) var(--safe-space-popover-y, var(--safe-space-popover-y-end, 0)))}:where(post-popovercontainer)[safe-space=trapezoid]::after{clip-path:polygon(var(--safe-space-trigger-x-start, var(--safe-space-trigger-x, 0)) var(--safe-space-trigger-y, var(--safe-space-trigger-y-start, 0)), var(--safe-space-trigger-x-end, var(--safe-space-trigger-x, 0)) var(--safe-space-trigger-y, var(--safe-space-trigger-y-end, 0)), var(--safe-space-popover-x-end, var(--safe-space-popover-x, 0)) var(--safe-space-popover-y, var(--safe-space-popover-y-end, 0)), var(--safe-space-popover-x-start, var(--safe-space-popover-x, 0)) var(--safe-space-popover-y, var(--safe-space-popover-y-start, 0)))}:where(post-popovercontainer):not(:has(.arrow))>div{box-shadow:var(--post-device-elevation-300)}:where(post-popovercontainer):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))}:where(post-popovercontainer):has(.arrow.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))}:where(post-popovercontainer):has(.arrow.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))}:where(post-popovercontainer):has(.arrow.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))}:where(post-popovercontainer) .arrow{position:absolute;width:.5825rem;height:.5825rem;background-color:inherit;rotate:45deg;pointer-events:none;z-index:-1}:where(post-popovercontainer) .arrow.top{border-block-start:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.right{border-block-start:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.left{border-block-end:2px solid rgba(0,0,0,0);border-inline-start:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.bottom{border-block-end:2px solid rgba(0,0,0,0);border-inline-end:2px solid rgba(0,0,0,0)}";
3661
4162
  const PostPopovercontainerStyle0 = postPopovercontainerCss;
@@ -3670,35 +4171,6 @@ const PostPopovercontainer = class {
3670
4171
  this.arrow = false;
3671
4172
  this.safeSpace = undefined;
3672
4173
  }
3673
- static STATIC_SIDES = {
3674
- top: 'bottom',
3675
- right: 'left',
3676
- bottom: 'top',
3677
- left: 'right',
3678
- };
3679
- static PROPERTIES_TO_CLEAR = [
3680
- '--safe-space-popover-x',
3681
- '--safe-space-popover-y',
3682
- '--safe-space-popover-x-start',
3683
- '--safe-space-popover-x-end',
3684
- '--safe-space-popover-y-start',
3685
- '--safe-space-popover-y-end',
3686
- '--safe-space-trigger-x',
3687
- '--safe-space-trigger-y',
3688
- '--safe-space-trigger-x-start',
3689
- '--safe-space-trigger-x-end',
3690
- '--safe-space-trigger-y-start',
3691
- '--safe-space-trigger-y-end',
3692
- ];
3693
- get host() { return index.getElement(this); }
3694
- arrowRef;
3695
- eventTarget;
3696
- clearAutoUpdate;
3697
- toggleTimeoutId;
3698
- /**
3699
- * Fires whenever the popover gets shown or hidden, passing the new state in event.details as a boolean
3700
- */
3701
- postToggle;
3702
4174
  /**
3703
4175
  * Updates cursor position for safe space feature when popover is open.
3704
4176
  * Sets CSS custom properties for dynamic styling of safe area.
@@ -3708,6 +4180,11 @@ const PostPopovercontainer = class {
3708
4180
  this.host.style.setProperty('--safe-space-cursor-x', `${event.clientX}px`);
3709
4181
  this.host.style.setProperty('--safe-space-cursor-y', `${event.clientY}px`);
3710
4182
  }
4183
+ connectedCallback() {
4184
+ if (breakpoints.IS_BROWSER && !isSupported()) {
4185
+ apply();
4186
+ }
4187
+ }
3711
4188
  componentDidLoad() {
3712
4189
  this.host.addEventListener('beforetoggle', this.handleToggle.bind(this));
3713
4190
  }
@@ -3902,11 +4379,32 @@ const PostPopovercontainer = class {
3902
4379
  }
3903
4380
  }
3904
4381
  render() {
3905
- return (index.h(index.Host, { key: '4b1d039e821b26d830de798a8103995391d8e01b', "data-version": _package.version, popover: this.manualClose ? 'manual' : 'auto' }, index.h("div", { key: '30e50db7f861df8339da244b1393372759a0fc13' }, this.arrow && (index.h("span", { key: 'acd8bae5e39cf6407fdefaaf0e2137d35b4c468d', class: "arrow", ref: el => {
4382
+ return (index.h(index.Host, { key: 'bbd430fbda9344c351d59f3d59cf84049992709b', "data-version": _package.version, popover: this.manualClose ? 'manual' : 'auto' }, index.h("div", { key: 'e359cac588d1dd1359c88f8e472828be845fdad7' }, this.arrow && (index.h("span", { key: '45329ae23722e93410132746e4e39e88e86cd310', class: "arrow", ref: el => {
3906
4383
  this.arrowRef = el;
3907
- } })), index.h("slot", { key: 'a4854df31cab7e452c89cf4a8f36249878c6cd0c' }))));
4384
+ } })), index.h("slot", { key: 'bb9b4b3d8e7c36f024883d02bd34766bf2e9de88' }))));
3908
4385
  }
4386
+ get host() { return index.getElement(this); }
3909
4387
  };
4388
+ PostPopovercontainer.STATIC_SIDES = {
4389
+ top: 'bottom',
4390
+ right: 'left',
4391
+ bottom: 'top',
4392
+ left: 'right',
4393
+ };
4394
+ PostPopovercontainer.PROPERTIES_TO_CLEAR = [
4395
+ '--safe-space-popover-x',
4396
+ '--safe-space-popover-y',
4397
+ '--safe-space-popover-x-start',
4398
+ '--safe-space-popover-x-end',
4399
+ '--safe-space-popover-y-start',
4400
+ '--safe-space-popover-y-end',
4401
+ '--safe-space-trigger-x',
4402
+ '--safe-space-trigger-y',
4403
+ '--safe-space-trigger-x-start',
4404
+ '--safe-space-trigger-x-end',
4405
+ '--safe-space-trigger-y-start',
4406
+ '--safe-space-trigger-y-end',
4407
+ ];
3910
4408
  PostPopovercontainer.style = PostPopovercontainerStyle0;
3911
4409
 
3912
4410
  const postTogglebuttonCss = ":host{cursor:pointer;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(:focus-visible){outline-style:var(--post-core-border-style-solid) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){:host(:focus-visible){outline-color:Highlight !important}}:host([aria-pressed=true]) ::slotted([data-showwhen=untoggled]){display:none}:host([aria-pressed=false]) ::slotted([data-showwhen=toggled]){display:none}";
@@ -3915,9 +4413,18 @@ const PostTogglebuttonStyle0 = postTogglebuttonCss;
3915
4413
  const PostTogglebutton = class {
3916
4414
  constructor(hostRef) {
3917
4415
  index.registerInstance(this, hostRef);
4416
+ this.handleClick = () => {
4417
+ this.toggled = !this.toggled;
4418
+ };
4419
+ this.handleKeydown = (event) => {
4420
+ // perform a click when enter or spaced are pressed to mimic the button behavior
4421
+ if (event.key === 'Enter' || event.key === ' ') {
4422
+ event.preventDefault(); // prevents the page from scrolling when space is pressed
4423
+ this.host.click();
4424
+ }
4425
+ };
3918
4426
  this.toggled = false;
3919
4427
  }
3920
- get host() { return index.getElement(this); }
3921
4428
  validateToggled() {
3922
4429
  checkType.checkType(this, 'toggled', 'boolean');
3923
4430
  }
@@ -3927,19 +4434,10 @@ const PostTogglebutton = class {
3927
4434
  this.host.addEventListener('click', () => this.handleClick());
3928
4435
  this.host.addEventListener('keydown', (e) => this.handleKeydown(e));
3929
4436
  }
3930
- handleClick = () => {
3931
- this.toggled = !this.toggled;
3932
- };
3933
- handleKeydown = (event) => {
3934
- // perform a click when enter or spaced are pressed to mimic the button behavior
3935
- if (event.key === 'Enter' || event.key === ' ') {
3936
- event.preventDefault(); // prevents the page from scrolling when space is pressed
3937
- this.host.click();
3938
- }
3939
- };
3940
4437
  render() {
3941
4438
  return (index.h(index.Host, { key: '3a1429a9b67b8cfafae184fe0d060ee3a04974e0', "data-version": _package.version, role: "button", tabindex: "0", "aria-pressed": this.toggled.toString() }, index.h("slot", { key: '9ab1537574423740fc335fde732c699698acac25' })));
3942
4439
  }
4440
+ get host() { return index.getElement(this); }
3943
4441
  static get watchers() { return {
3944
4442
  "toggled": ["validateToggled"]
3945
4443
  }; }