@synergy-design-system/components 3.14.0 → 3.15.1

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 (336) hide show
  1. package/README.md +84 -2
  2. package/dist/chunks/{chunk.PKI5G2BK.js → chunk.2ICMQHK2.js} +2 -2
  3. package/dist/chunks/{chunk.VUIJVW2Q.js → chunk.2QJN274R.js} +13 -13
  4. package/dist/chunks/{chunk.CRFIJO63.js → chunk.3ET6VFFM.js} +2 -2
  5. package/dist/chunks/{chunk.SDAD3TIZ.js → chunk.3SWPHSWX.js} +2 -2
  6. package/dist/chunks/{chunk.KI5VDJAL.js → chunk.4E5YHPM6.js} +9 -9
  7. package/dist/chunks/{chunk.KEWOYD7U.js → chunk.4NOC74ME.js} +2 -2
  8. package/dist/chunks/{chunk.LHT3EV6M.js → chunk.4OIWU6V3.js} +2 -2
  9. package/dist/chunks/{chunk.5KYKNKXK.js → chunk.4UNKGNWY.js} +2 -2
  10. package/dist/chunks/{chunk.73JTC3OL.js → chunk.52CE6GAX.js} +2 -2
  11. package/dist/chunks/{chunk.UYTYFCZO.js → chunk.5PNZHX46.js} +2 -2
  12. package/dist/chunks/{chunk.MLW6J2PI.js → chunk.5PUONAZP.js} +2 -2
  13. package/dist/chunks/{chunk.IMFHPXZV.js → chunk.672U24GD.js} +2 -2
  14. package/dist/chunks/{chunk.Q462PIAC.js → chunk.7CPWT4JW.js} +2 -2
  15. package/dist/chunks/{chunk.VICY5B3Y.js → chunk.7GUN5FTB.js} +2 -2
  16. package/dist/chunks/{chunk.4OSNBR72.js → chunk.7GVHLAPF.js} +17 -17
  17. package/dist/chunks/{chunk.244QNZMJ.js → chunk.7NW3UNQH.js} +2 -2
  18. package/dist/chunks/{chunk.66QNJSLF.js → chunk.7W55HRDH.js} +2 -2
  19. package/dist/chunks/{chunk.I4Z5TIK5.js → chunk.7WBNGACU.js} +2 -2
  20. package/dist/chunks/{chunk.42C7SFEG.js → chunk.ASYOUIIA.js} +8 -8
  21. package/dist/chunks/{chunk.YUWPQV2J.js → chunk.ATXXETUW.js} +6 -6
  22. package/dist/chunks/{chunk.KPAGL3JH.js → chunk.BK4L5JTZ.js} +2 -2
  23. package/dist/chunks/{chunk.TV7RAXV6.js → chunk.BKK3LZIE.js} +2 -2
  24. package/dist/chunks/{chunk.QEELQI3B.js → chunk.BW4PBG4C.js} +2 -2
  25. package/dist/chunks/{chunk.NP7ZR5HF.js → chunk.C7M5UTLM.js} +2 -2
  26. package/dist/chunks/{chunk.EXQNCNEL.js → chunk.CIR3MZ3J.js} +2 -2
  27. package/dist/chunks/{chunk.O6IOGX2G.js → chunk.CWADFVTW.js} +12 -12
  28. package/dist/chunks/{chunk.RXGMDDX4.js → chunk.DG7N2GPP.js} +2 -2
  29. package/dist/chunks/{chunk.KDW4KG7L.js → chunk.DZU5IHW5.js} +2 -2
  30. package/dist/chunks/{chunk.NLFERVI7.js → chunk.EE2T4DI3.js} +2 -2
  31. package/dist/chunks/{chunk.XH5QCNSL.js → chunk.EHQPWQIP.js} +2 -2
  32. package/dist/chunks/{chunk.K47UDTAJ.js → chunk.ELOOAXBS.js} +10 -10
  33. package/dist/chunks/{chunk.ITZAD4HQ.js → chunk.EOFEAQAT.js} +2 -2
  34. package/dist/chunks/{chunk.G3CHXAEJ.js → chunk.HJVKBMLH.js} +2 -2
  35. package/dist/chunks/{chunk.5HOJNW7M.js → chunk.HTYK7AJW.js} +9 -9
  36. package/dist/chunks/{chunk.XUI5ISF3.js → chunk.HWHC6OI3.js} +2 -2
  37. package/dist/chunks/{chunk.234CRR27.js → chunk.IT2TKYM7.js} +2 -2
  38. package/dist/chunks/{chunk.GMCTWMH3.js → chunk.IYXZ2SMF.js} +7 -7
  39. package/dist/chunks/{chunk.7GSNTJ3J.js → chunk.JFERWFTG.js} +2 -2
  40. package/dist/chunks/{chunk.RASMI2WO.js → chunk.JJCL4WAB.js} +5 -5
  41. package/dist/chunks/{chunk.VKBFEDS6.js → chunk.K2PFFMHF.js} +2 -2
  42. package/dist/chunks/{chunk.A4I33Y6H.js → chunk.K3CXMAMI.js} +2 -2
  43. package/dist/chunks/{chunk.SSNYL7AZ.js → chunk.KCVQZ4BE.js} +2 -2
  44. package/dist/chunks/chunk.KPO6RJLG.js +20 -0
  45. package/dist/chunks/chunk.KPO6RJLG.js.map +7 -0
  46. package/dist/chunks/{chunk.OVS5YCLG.js → chunk.KRMDIBND.js} +2 -2
  47. package/dist/chunks/{chunk.HXQ3Q22D.js → chunk.LRFQWF2J.js} +2 -2
  48. package/dist/chunks/{chunk.NXIQ25W4.js → chunk.M3HEPL2F.js} +1 -9
  49. package/dist/chunks/{chunk.NXIQ25W4.js.map → chunk.M3HEPL2F.js.map} +2 -2
  50. package/dist/chunks/chunk.M3K2Q7WJ.js +142 -0
  51. package/dist/chunks/chunk.M3K2Q7WJ.js.map +7 -0
  52. package/dist/chunks/{chunk.BLR7KKUM.js → chunk.M5MQJOPS.js} +2 -2
  53. package/dist/chunks/{chunk.O5XZM45U.js → chunk.MET45KSE.js} +3 -3
  54. package/dist/chunks/{chunk.JQZRVTI3.js → chunk.MJYLGANL.js} +3 -3
  55. package/dist/chunks/{chunk.KC4SP6UE.js → chunk.N5KGL3GC.js} +2 -2
  56. package/dist/chunks/{chunk.N7DY6HOE.js → chunk.N6MOQ6B5.js} +8 -8
  57. package/dist/chunks/{chunk.KYHWQEEI.js → chunk.NPCR7UVQ.js} +5 -5
  58. package/dist/chunks/{chunk.OTXTNYRJ.js → chunk.OEYLCJ7N.js} +6 -6
  59. package/dist/chunks/{chunk.JNKPQ22W.js → chunk.OGHUH4RS.js} +3 -3
  60. package/dist/chunks/{chunk.4BS6CBRX.js → chunk.OIAQHRZR.js} +8 -14
  61. package/dist/chunks/chunk.OIAQHRZR.js.map +7 -0
  62. package/dist/chunks/{chunk.FJLIZ7EH.js → chunk.OJDJ5NGZ.js} +2 -2
  63. package/dist/chunks/{chunk.PKPJXZNO.js → chunk.P5U27SXU.js} +2 -2
  64. package/dist/chunks/{chunk.NB7NQ6ZJ.js → chunk.PHR6O2TK.js} +17 -17
  65. package/dist/chunks/{chunk.GBWQCBER.js → chunk.PVIVA2RW.js} +2 -2
  66. package/dist/chunks/{chunk.3GCIZUDQ.js → chunk.Q3QSOXKM.js} +2 -2
  67. package/dist/chunks/{chunk.LJLE6S7K.js → chunk.QKDPTEYP.js} +2 -2
  68. package/dist/chunks/{chunk.FZ3YJGQZ.js → chunk.R2K2SDDU.js} +2 -2
  69. package/dist/chunks/{chunk.NLK6U5GU.js → chunk.R6HOFUDS.js} +9 -9
  70. package/dist/chunks/{chunk.FVOA7OCQ.js → chunk.R7DCOYSA.js} +2 -2
  71. package/dist/chunks/{chunk.ZXI2ZVNR.js → chunk.RANSYZYC.js} +2 -2
  72. package/dist/chunks/{chunk.6JPV7IDA.js → chunk.RFDAYKRC.js} +2 -2
  73. package/dist/chunks/{chunk.5XISXZ24.js → chunk.RGPTWKCY.js} +2 -2
  74. package/dist/chunks/{chunk.T4L342TL.js → chunk.RKAIJDOM.js} +3 -3
  75. package/dist/chunks/{chunk.AVHIO6QX.js → chunk.SDC2FVNL.js} +5 -5
  76. package/dist/chunks/{chunk.XBW7Z2RY.js → chunk.SUL6IWF7.js} +2 -2
  77. package/dist/chunks/{chunk.K7MD7OW2.js → chunk.T2BDECHP.js} +6 -6
  78. package/dist/chunks/{chunk.VFXNG3S7.js → chunk.T6GT575U.js} +2 -2
  79. package/dist/chunks/{chunk.DXWCV5LF.js → chunk.T6JI76WU.js} +8 -8
  80. package/dist/chunks/{chunk.NYRH7CY4.js → chunk.TAS6WBOB.js} +13 -13
  81. package/dist/chunks/{chunk.C7LDSA6N.js → chunk.TIRGUR3V.js} +5 -5
  82. package/dist/chunks/{chunk.LUVQR5GV.js → chunk.TS65LJ5O.js} +6 -6
  83. package/dist/chunks/{chunk.KHHMKU5F.js → chunk.U5BNYIGY.js} +2 -2
  84. package/dist/chunks/{chunk.TKQ3JMIQ.js → chunk.UGUHHPHS.js} +2 -2
  85. package/dist/chunks/{chunk.LQSKCZDZ.js → chunk.UH52IQFZ.js} +2 -2
  86. package/dist/chunks/{chunk.M3E33KXI.js → chunk.UJBDQHXK.js} +13 -13
  87. package/dist/chunks/{chunk.2DIJ66WQ.js → chunk.ULEMFOWH.js} +4 -4
  88. package/dist/chunks/{chunk.6OB6RYPM.js → chunk.UQMYXB35.js} +2 -2
  89. package/dist/chunks/{chunk.7GDKE5DX.js → chunk.UTG3I2RF.js} +14 -14
  90. package/dist/chunks/{chunk.EMJFLRJX.js → chunk.UYUCPG3J.js} +2 -2
  91. package/dist/chunks/chunk.VJIXW4Z5.js +166 -0
  92. package/dist/chunks/chunk.VJIXW4Z5.js.map +7 -0
  93. package/dist/chunks/{chunk.PSAFHY7P.js → chunk.W5XDOOIR.js} +3 -3
  94. package/dist/chunks/{chunk.OIZEJYK7.js → chunk.WFPTZ3W7.js} +55 -29
  95. package/dist/chunks/chunk.WFPTZ3W7.js.map +7 -0
  96. package/dist/chunks/{chunk.RLWMJ7ST.js → chunk.WP2OIWA5.js} +2 -2
  97. package/dist/chunks/{chunk.YAXXSDKF.js → chunk.WTJCFKLR.js} +2 -2
  98. package/dist/chunks/{chunk.BC532CB6.js → chunk.WUGCLTH6.js} +78 -1
  99. package/dist/chunks/chunk.WUGCLTH6.js.map +7 -0
  100. package/dist/chunks/{chunk.ZJRSA6FU.js → chunk.WWJFXCJ7.js} +2 -2
  101. package/dist/chunks/{chunk.TTCMP7MI.js → chunk.X72G6ASQ.js} +9 -9
  102. package/dist/chunks/{chunk.TYSWA3XY.js → chunk.XT6UCMCP.js} +2 -2
  103. package/dist/chunks/{chunk.UISWB5WE.js → chunk.YBXR5HES.js} +2 -2
  104. package/dist/chunks/{chunk.UISWB5WE.js.map → chunk.YBXR5HES.js.map} +1 -1
  105. package/dist/chunks/{chunk.ZT47ZFJC.js → chunk.YEVEQT3G.js} +3 -3
  106. package/dist/chunks/{chunk.S3SB2L64.js → chunk.YJPWGTIA.js} +2 -2
  107. package/dist/chunks/{chunk.ZQZGMCRB.js → chunk.YT4ZXOLI.js} +2 -2
  108. package/dist/chunks/{chunk.X7M4AZCK.js → chunk.Z3WWZV5J.js} +8 -8
  109. package/dist/chunks/{chunk.QGVMPPJU.js → chunk.Z4LFYYMX.js} +5 -5
  110. package/dist/chunks/{chunk.LLRGAMEA.js → chunk.ZGUUEAVE.js} +2 -2
  111. package/dist/chunks/{chunk.HA4TRDJB.js → chunk.ZJSLHMYK.js} +18 -18
  112. package/dist/chunks/{chunk.QATINK6D.js → chunk.ZPWGYTRR.js} +30 -30
  113. package/dist/chunks/{chunk.7ZCFVUIZ.js → chunk.ZTKX2YB4.js} +2 -2
  114. package/dist/components/accordion/accordion.component.js +4 -4
  115. package/dist/components/accordion/accordion.js +5 -5
  116. package/dist/components/alert/alert.component.js +14 -14
  117. package/dist/components/alert/alert.js +15 -15
  118. package/dist/components/badge/badge.component.js +6 -6
  119. package/dist/components/badge/badge.js +7 -7
  120. package/dist/components/breadcrumb/breadcrumb.component.js +5 -5
  121. package/dist/components/breadcrumb/breadcrumb.js +6 -6
  122. package/dist/components/breadcrumb-item/breadcrumb-item.component.js +2 -2
  123. package/dist/components/breadcrumb-item/breadcrumb-item.js +3 -3
  124. package/dist/components/button/button.component.js +11 -11
  125. package/dist/components/button/button.js +12 -12
  126. package/dist/components/button-group/button-group.component.js +2 -2
  127. package/dist/components/button-group/button-group.js +3 -3
  128. package/dist/components/card/card.component.js +2 -2
  129. package/dist/components/card/card.js +3 -3
  130. package/dist/components/chart/chart.component.d.ts +86 -0
  131. package/dist/components/chart/chart.component.js +12 -0
  132. package/dist/components/chart/chart.component.js.map +7 -0
  133. package/dist/components/chart/chart.d.ts +8 -0
  134. package/dist/components/chart/chart.js +16 -0
  135. package/dist/components/chart/chart.js.map +7 -0
  136. package/dist/components/chart/chart.palettes.d.ts +12 -0
  137. package/dist/components/chart/chart.palettes.js +8 -0
  138. package/dist/components/chart/chart.palettes.js.map +7 -0
  139. package/dist/components/chart/chart.styles.d.ts +2 -0
  140. package/dist/components/chart/chart.styles.js +8 -0
  141. package/dist/components/chart/chart.styles.js.map +7 -0
  142. package/dist/components/chart/types.d.ts +3 -0
  143. package/dist/components/chart/types.js +1 -0
  144. package/dist/components/chart/types.js.map +7 -0
  145. package/dist/components/checkbox/checkbox.component.js +6 -6
  146. package/dist/components/checkbox/checkbox.js +7 -7
  147. package/dist/components/combobox/combobox.component.js +24 -24
  148. package/dist/components/combobox/combobox.js +25 -25
  149. package/dist/components/details/details.component.js +11 -11
  150. package/dist/components/details/details.js +12 -12
  151. package/dist/components/dialog/dialog.component.js +14 -14
  152. package/dist/components/dialog/dialog.js +15 -15
  153. package/dist/components/divider/divider.component.js +2 -2
  154. package/dist/components/divider/divider.js +3 -3
  155. package/dist/components/drawer/drawer.component.js +14 -14
  156. package/dist/components/drawer/drawer.js +15 -15
  157. package/dist/components/dropdown/dropdown.component.js +3 -3
  158. package/dist/components/dropdown/dropdown.js +4 -4
  159. package/dist/components/file/file.component.js +16 -16
  160. package/dist/components/file/file.js +17 -17
  161. package/dist/components/header/header.component.js +3 -3
  162. package/dist/components/header/header.js +4 -4
  163. package/dist/components/icon/icon.component.js +2 -2
  164. package/dist/components/icon/icon.js +3 -3
  165. package/dist/components/icon-button/icon-button.component.js +5 -5
  166. package/dist/components/icon-button/icon-button.js +6 -6
  167. package/dist/components/input/input.component.js +10 -10
  168. package/dist/components/input/input.js +11 -11
  169. package/dist/components/menu/menu.component.d.ts +4 -0
  170. package/dist/components/menu/menu.component.js +3 -3
  171. package/dist/components/menu/menu.js +4 -4
  172. package/dist/components/menu/menu.styles.js +1 -1
  173. package/dist/components/menu-item/menu-item.component.d.ts +0 -1
  174. package/dist/components/menu-item/menu-item.component.js +7 -7
  175. package/dist/components/menu-item/menu-item.js +8 -8
  176. package/dist/components/menu-item/submenu-controller.d.ts +10 -0
  177. package/dist/components/menu-item/submenu-controller.js +1 -1
  178. package/dist/components/menu-label/menu-label.component.js +3 -3
  179. package/dist/components/menu-label/menu-label.js +4 -4
  180. package/dist/components/nav-item/nav-item.component.js +4 -4
  181. package/dist/components/nav-item/nav-item.js +5 -5
  182. package/dist/components/optgroup/optgroup.component.js +3 -3
  183. package/dist/components/optgroup/optgroup.js +4 -4
  184. package/dist/components/option/option.component.js +8 -8
  185. package/dist/components/option/option.js +9 -9
  186. package/dist/components/pagination/pagination.component.js +30 -30
  187. package/dist/components/pagination/pagination.js +31 -31
  188. package/dist/components/popup/popup.component.js +2 -2
  189. package/dist/components/popup/popup.js +3 -3
  190. package/dist/components/prio-nav/prio-nav.component.js +16 -16
  191. package/dist/components/prio-nav/prio-nav.js +17 -17
  192. package/dist/components/progress-bar/progress-bar.component.js +2 -2
  193. package/dist/components/progress-bar/progress-bar.js +3 -3
  194. package/dist/components/progress-ring/progress-ring.component.js +2 -2
  195. package/dist/components/progress-ring/progress-ring.js +3 -3
  196. package/dist/components/radio/radio.component.js +5 -5
  197. package/dist/components/radio/radio.js +6 -6
  198. package/dist/components/radio-button/radio-button.component.js +3 -3
  199. package/dist/components/radio-button/radio-button.js +4 -4
  200. package/dist/components/radio-group/radio-group.component.js +6 -6
  201. package/dist/components/radio-group/radio-group.js +7 -7
  202. package/dist/components/range/range.component.js +12 -12
  203. package/dist/components/range/range.js +13 -13
  204. package/dist/components/range-tick/range-tick.component.js +2 -2
  205. package/dist/components/range-tick/range-tick.js +3 -3
  206. package/dist/components/resize-observer/resize-observer.component.js +2 -2
  207. package/dist/components/select/select.component.js +19 -19
  208. package/dist/components/select/select.js +20 -20
  209. package/dist/components/side-nav/side-nav.component.js +19 -19
  210. package/dist/components/side-nav/side-nav.js +20 -20
  211. package/dist/components/spinner/spinner.component.js +2 -2
  212. package/dist/components/spinner/spinner.js +3 -3
  213. package/dist/components/switch/switch.component.js +3 -3
  214. package/dist/components/switch/switch.js +4 -4
  215. package/dist/components/tab/tab.component.js +9 -9
  216. package/dist/components/tab/tab.js +10 -10
  217. package/dist/components/tab-group/tab-group.component.js +12 -12
  218. package/dist/components/tab-group/tab-group.js +13 -13
  219. package/dist/components/tab-panel/tab-panel.component.js +2 -2
  220. package/dist/components/tab-panel/tab-panel.js +3 -3
  221. package/dist/components/tag/tag.component.js +9 -9
  222. package/dist/components/tag/tag.js +10 -10
  223. package/dist/components/tag-group/tag-group.component.js +3 -3
  224. package/dist/components/tag-group/tag-group.js +4 -4
  225. package/dist/components/textarea/textarea.component.js +4 -4
  226. package/dist/components/textarea/textarea.js +5 -5
  227. package/dist/components/tooltip/tooltip.component.js +4 -4
  228. package/dist/components/tooltip/tooltip.js +5 -5
  229. package/dist/components/validate/utility.js +2 -2
  230. package/dist/components/validate/validate.component.js +21 -21
  231. package/dist/components/validate/validate.js +22 -22
  232. package/dist/custom-elements.json +1730 -1567
  233. package/dist/styles/fouc.css +1 -0
  234. package/dist/styles/index.css +2 -1
  235. package/dist/synergy.js +243 -243
  236. package/dist/vscode.html-custom-data.json +164 -147
  237. package/package.json +9 -6
  238. package/dist/chunks/chunk.4BS6CBRX.js.map +0 -7
  239. package/dist/chunks/chunk.BC532CB6.js.map +0 -7
  240. package/dist/chunks/chunk.OIZEJYK7.js.map +0 -7
  241. /package/dist/chunks/{chunk.PKI5G2BK.js.map → chunk.2ICMQHK2.js.map} +0 -0
  242. /package/dist/chunks/{chunk.VUIJVW2Q.js.map → chunk.2QJN274R.js.map} +0 -0
  243. /package/dist/chunks/{chunk.CRFIJO63.js.map → chunk.3ET6VFFM.js.map} +0 -0
  244. /package/dist/chunks/{chunk.SDAD3TIZ.js.map → chunk.3SWPHSWX.js.map} +0 -0
  245. /package/dist/chunks/{chunk.KI5VDJAL.js.map → chunk.4E5YHPM6.js.map} +0 -0
  246. /package/dist/chunks/{chunk.KEWOYD7U.js.map → chunk.4NOC74ME.js.map} +0 -0
  247. /package/dist/chunks/{chunk.LHT3EV6M.js.map → chunk.4OIWU6V3.js.map} +0 -0
  248. /package/dist/chunks/{chunk.5KYKNKXK.js.map → chunk.4UNKGNWY.js.map} +0 -0
  249. /package/dist/chunks/{chunk.73JTC3OL.js.map → chunk.52CE6GAX.js.map} +0 -0
  250. /package/dist/chunks/{chunk.UYTYFCZO.js.map → chunk.5PNZHX46.js.map} +0 -0
  251. /package/dist/chunks/{chunk.MLW6J2PI.js.map → chunk.5PUONAZP.js.map} +0 -0
  252. /package/dist/chunks/{chunk.IMFHPXZV.js.map → chunk.672U24GD.js.map} +0 -0
  253. /package/dist/chunks/{chunk.Q462PIAC.js.map → chunk.7CPWT4JW.js.map} +0 -0
  254. /package/dist/chunks/{chunk.VICY5B3Y.js.map → chunk.7GUN5FTB.js.map} +0 -0
  255. /package/dist/chunks/{chunk.4OSNBR72.js.map → chunk.7GVHLAPF.js.map} +0 -0
  256. /package/dist/chunks/{chunk.244QNZMJ.js.map → chunk.7NW3UNQH.js.map} +0 -0
  257. /package/dist/chunks/{chunk.66QNJSLF.js.map → chunk.7W55HRDH.js.map} +0 -0
  258. /package/dist/chunks/{chunk.I4Z5TIK5.js.map → chunk.7WBNGACU.js.map} +0 -0
  259. /package/dist/chunks/{chunk.42C7SFEG.js.map → chunk.ASYOUIIA.js.map} +0 -0
  260. /package/dist/chunks/{chunk.YUWPQV2J.js.map → chunk.ATXXETUW.js.map} +0 -0
  261. /package/dist/chunks/{chunk.KPAGL3JH.js.map → chunk.BK4L5JTZ.js.map} +0 -0
  262. /package/dist/chunks/{chunk.TV7RAXV6.js.map → chunk.BKK3LZIE.js.map} +0 -0
  263. /package/dist/chunks/{chunk.QEELQI3B.js.map → chunk.BW4PBG4C.js.map} +0 -0
  264. /package/dist/chunks/{chunk.NP7ZR5HF.js.map → chunk.C7M5UTLM.js.map} +0 -0
  265. /package/dist/chunks/{chunk.EXQNCNEL.js.map → chunk.CIR3MZ3J.js.map} +0 -0
  266. /package/dist/chunks/{chunk.O6IOGX2G.js.map → chunk.CWADFVTW.js.map} +0 -0
  267. /package/dist/chunks/{chunk.RXGMDDX4.js.map → chunk.DG7N2GPP.js.map} +0 -0
  268. /package/dist/chunks/{chunk.KDW4KG7L.js.map → chunk.DZU5IHW5.js.map} +0 -0
  269. /package/dist/chunks/{chunk.NLFERVI7.js.map → chunk.EE2T4DI3.js.map} +0 -0
  270. /package/dist/chunks/{chunk.XH5QCNSL.js.map → chunk.EHQPWQIP.js.map} +0 -0
  271. /package/dist/chunks/{chunk.K47UDTAJ.js.map → chunk.ELOOAXBS.js.map} +0 -0
  272. /package/dist/chunks/{chunk.ITZAD4HQ.js.map → chunk.EOFEAQAT.js.map} +0 -0
  273. /package/dist/chunks/{chunk.G3CHXAEJ.js.map → chunk.HJVKBMLH.js.map} +0 -0
  274. /package/dist/chunks/{chunk.5HOJNW7M.js.map → chunk.HTYK7AJW.js.map} +0 -0
  275. /package/dist/chunks/{chunk.XUI5ISF3.js.map → chunk.HWHC6OI3.js.map} +0 -0
  276. /package/dist/chunks/{chunk.234CRR27.js.map → chunk.IT2TKYM7.js.map} +0 -0
  277. /package/dist/chunks/{chunk.GMCTWMH3.js.map → chunk.IYXZ2SMF.js.map} +0 -0
  278. /package/dist/chunks/{chunk.7GSNTJ3J.js.map → chunk.JFERWFTG.js.map} +0 -0
  279. /package/dist/chunks/{chunk.RASMI2WO.js.map → chunk.JJCL4WAB.js.map} +0 -0
  280. /package/dist/chunks/{chunk.VKBFEDS6.js.map → chunk.K2PFFMHF.js.map} +0 -0
  281. /package/dist/chunks/{chunk.A4I33Y6H.js.map → chunk.K3CXMAMI.js.map} +0 -0
  282. /package/dist/chunks/{chunk.SSNYL7AZ.js.map → chunk.KCVQZ4BE.js.map} +0 -0
  283. /package/dist/chunks/{chunk.OVS5YCLG.js.map → chunk.KRMDIBND.js.map} +0 -0
  284. /package/dist/chunks/{chunk.HXQ3Q22D.js.map → chunk.LRFQWF2J.js.map} +0 -0
  285. /package/dist/chunks/{chunk.BLR7KKUM.js.map → chunk.M5MQJOPS.js.map} +0 -0
  286. /package/dist/chunks/{chunk.O5XZM45U.js.map → chunk.MET45KSE.js.map} +0 -0
  287. /package/dist/chunks/{chunk.JQZRVTI3.js.map → chunk.MJYLGANL.js.map} +0 -0
  288. /package/dist/chunks/{chunk.KC4SP6UE.js.map → chunk.N5KGL3GC.js.map} +0 -0
  289. /package/dist/chunks/{chunk.N7DY6HOE.js.map → chunk.N6MOQ6B5.js.map} +0 -0
  290. /package/dist/chunks/{chunk.KYHWQEEI.js.map → chunk.NPCR7UVQ.js.map} +0 -0
  291. /package/dist/chunks/{chunk.OTXTNYRJ.js.map → chunk.OEYLCJ7N.js.map} +0 -0
  292. /package/dist/chunks/{chunk.JNKPQ22W.js.map → chunk.OGHUH4RS.js.map} +0 -0
  293. /package/dist/chunks/{chunk.FJLIZ7EH.js.map → chunk.OJDJ5NGZ.js.map} +0 -0
  294. /package/dist/chunks/{chunk.PKPJXZNO.js.map → chunk.P5U27SXU.js.map} +0 -0
  295. /package/dist/chunks/{chunk.NB7NQ6ZJ.js.map → chunk.PHR6O2TK.js.map} +0 -0
  296. /package/dist/chunks/{chunk.GBWQCBER.js.map → chunk.PVIVA2RW.js.map} +0 -0
  297. /package/dist/chunks/{chunk.3GCIZUDQ.js.map → chunk.Q3QSOXKM.js.map} +0 -0
  298. /package/dist/chunks/{chunk.LJLE6S7K.js.map → chunk.QKDPTEYP.js.map} +0 -0
  299. /package/dist/chunks/{chunk.FZ3YJGQZ.js.map → chunk.R2K2SDDU.js.map} +0 -0
  300. /package/dist/chunks/{chunk.NLK6U5GU.js.map → chunk.R6HOFUDS.js.map} +0 -0
  301. /package/dist/chunks/{chunk.FVOA7OCQ.js.map → chunk.R7DCOYSA.js.map} +0 -0
  302. /package/dist/chunks/{chunk.ZXI2ZVNR.js.map → chunk.RANSYZYC.js.map} +0 -0
  303. /package/dist/chunks/{chunk.6JPV7IDA.js.map → chunk.RFDAYKRC.js.map} +0 -0
  304. /package/dist/chunks/{chunk.5XISXZ24.js.map → chunk.RGPTWKCY.js.map} +0 -0
  305. /package/dist/chunks/{chunk.T4L342TL.js.map → chunk.RKAIJDOM.js.map} +0 -0
  306. /package/dist/chunks/{chunk.AVHIO6QX.js.map → chunk.SDC2FVNL.js.map} +0 -0
  307. /package/dist/chunks/{chunk.XBW7Z2RY.js.map → chunk.SUL6IWF7.js.map} +0 -0
  308. /package/dist/chunks/{chunk.K7MD7OW2.js.map → chunk.T2BDECHP.js.map} +0 -0
  309. /package/dist/chunks/{chunk.VFXNG3S7.js.map → chunk.T6GT575U.js.map} +0 -0
  310. /package/dist/chunks/{chunk.DXWCV5LF.js.map → chunk.T6JI76WU.js.map} +0 -0
  311. /package/dist/chunks/{chunk.NYRH7CY4.js.map → chunk.TAS6WBOB.js.map} +0 -0
  312. /package/dist/chunks/{chunk.C7LDSA6N.js.map → chunk.TIRGUR3V.js.map} +0 -0
  313. /package/dist/chunks/{chunk.LUVQR5GV.js.map → chunk.TS65LJ5O.js.map} +0 -0
  314. /package/dist/chunks/{chunk.KHHMKU5F.js.map → chunk.U5BNYIGY.js.map} +0 -0
  315. /package/dist/chunks/{chunk.TKQ3JMIQ.js.map → chunk.UGUHHPHS.js.map} +0 -0
  316. /package/dist/chunks/{chunk.LQSKCZDZ.js.map → chunk.UH52IQFZ.js.map} +0 -0
  317. /package/dist/chunks/{chunk.M3E33KXI.js.map → chunk.UJBDQHXK.js.map} +0 -0
  318. /package/dist/chunks/{chunk.2DIJ66WQ.js.map → chunk.ULEMFOWH.js.map} +0 -0
  319. /package/dist/chunks/{chunk.6OB6RYPM.js.map → chunk.UQMYXB35.js.map} +0 -0
  320. /package/dist/chunks/{chunk.7GDKE5DX.js.map → chunk.UTG3I2RF.js.map} +0 -0
  321. /package/dist/chunks/{chunk.EMJFLRJX.js.map → chunk.UYUCPG3J.js.map} +0 -0
  322. /package/dist/chunks/{chunk.PSAFHY7P.js.map → chunk.W5XDOOIR.js.map} +0 -0
  323. /package/dist/chunks/{chunk.RLWMJ7ST.js.map → chunk.WP2OIWA5.js.map} +0 -0
  324. /package/dist/chunks/{chunk.YAXXSDKF.js.map → chunk.WTJCFKLR.js.map} +0 -0
  325. /package/dist/chunks/{chunk.ZJRSA6FU.js.map → chunk.WWJFXCJ7.js.map} +0 -0
  326. /package/dist/chunks/{chunk.TTCMP7MI.js.map → chunk.X72G6ASQ.js.map} +0 -0
  327. /package/dist/chunks/{chunk.TYSWA3XY.js.map → chunk.XT6UCMCP.js.map} +0 -0
  328. /package/dist/chunks/{chunk.ZT47ZFJC.js.map → chunk.YEVEQT3G.js.map} +0 -0
  329. /package/dist/chunks/{chunk.S3SB2L64.js.map → chunk.YJPWGTIA.js.map} +0 -0
  330. /package/dist/chunks/{chunk.ZQZGMCRB.js.map → chunk.YT4ZXOLI.js.map} +0 -0
  331. /package/dist/chunks/{chunk.X7M4AZCK.js.map → chunk.Z3WWZV5J.js.map} +0 -0
  332. /package/dist/chunks/{chunk.QGVMPPJU.js.map → chunk.Z4LFYYMX.js.map} +0 -0
  333. /package/dist/chunks/{chunk.LLRGAMEA.js.map → chunk.ZGUUEAVE.js.map} +0 -0
  334. /package/dist/chunks/{chunk.HA4TRDJB.js.map → chunk.ZJSLHMYK.js.map} +0 -0
  335. /package/dist/chunks/{chunk.QATINK6D.js.map → chunk.ZPWGYTRR.js.map} +0 -0
  336. /package/dist/chunks/{chunk.7ZCFVUIZ.js.map → chunk.ZTKX2YB4.js.map} +0 -0
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  menu_styles_default
3
- } from "./chunk.NXIQ25W4.js";
3
+ } from "./chunk.M3HEPL2F.js";
4
4
  import {
5
5
  component_styles_default
6
6
  } from "./chunk.2NT3B5WJ.js";
7
7
  import {
8
8
  SynergyElement
9
- } from "./chunk.UISWB5WE.js";
9
+ } from "./chunk.YBXR5HES.js";
10
10
  import {
11
11
  __decorateClass
12
12
  } from "./chunk.MO2GTRUM.js";
@@ -15,11 +15,11 @@ import {
15
15
  import { html } from "lit";
16
16
  import { query } from "lit/decorators.js";
17
17
  import { state } from "lit/decorators.js";
18
- import { classMap } from "lit/directives/class-map.js";
19
18
  var SynMenu = class extends SynergyElement {
20
19
  constructor() {
21
20
  super(...arguments);
22
21
  this.hasMenuItemsWithCheckmarks = false;
22
+ this.checkmarkStyledItems = /* @__PURE__ */ new Set();
23
23
  this.updateCheckMarksByChildPropChange = (e) => {
24
24
  e.stopImmediatePropagation();
25
25
  this.handleUpdateCheckmarks(this.getAllItems());
@@ -27,30 +27,52 @@ var SynMenu = class extends SynergyElement {
27
27
  }
28
28
  handleUpdateCheckmarks(items) {
29
29
  this.hasMenuItemsWithCheckmarks = items.some((item) => item.type === "checkbox" || item.loading);
30
+ this.syncCheckmarkVisibility(items);
31
+ }
32
+ syncCheckmarkVisibility(items) {
33
+ this.checkmarkStyledItems.forEach((item) => {
34
+ if (!items.includes(item)) {
35
+ item.style.removeProperty("--display-checkmark");
36
+ this.checkmarkStyledItems.delete(item);
37
+ }
38
+ });
39
+ if (this.hasMenuItemsWithCheckmarks) {
40
+ items.forEach((item) => {
41
+ item.style.removeProperty("--display-checkmark");
42
+ this.checkmarkStyledItems.delete(item);
43
+ });
44
+ return;
45
+ }
46
+ items.forEach((item) => {
47
+ item.style.setProperty("--display-checkmark", "none");
48
+ this.checkmarkStyledItems.add(item);
49
+ });
30
50
  }
31
51
  disconnectedCallback() {
32
52
  this.removeEventListener("syn-attributes-changed", this.updateCheckMarksByChildPropChange);
53
+ this.checkmarkStyledItems.forEach((item) => item.style.removeProperty("--display-checkmark"));
54
+ this.checkmarkStyledItems.clear();
33
55
  }
34
56
  connectedCallback() {
35
57
  super.connectedCallback();
36
58
  this.setAttribute("role", "menu");
37
59
  this.addEventListener("syn-attributes-changed", this.updateCheckMarksByChildPropChange);
38
60
  }
39
- handleClick(event) {
40
- const menuItemTypes = ["menuitem", "menuitemcheckbox"];
61
+ getMenuItemFromEvent(event) {
41
62
  const composedPath = event.composedPath();
42
- const target = composedPath.find((el) => {
43
- var _a;
44
- return menuItemTypes.includes(((_a = el == null ? void 0 : el.getAttribute) == null ? void 0 : _a.call(el, "role")) || "");
45
- });
46
- if (!target) return;
47
- const closestMenu = composedPath.find((el) => {
48
- var _a;
49
- return ((_a = el == null ? void 0 : el.getAttribute) == null ? void 0 : _a.call(el, "role")) === "menu";
50
- });
51
- const clickHasSubmenu = closestMenu !== this;
52
- if (clickHasSubmenu) return;
53
- const item = target;
63
+ const target = composedPath.find((el) => el instanceof HTMLElement && this.isMenuItem(el));
64
+ if (!target || !(target instanceof HTMLElement)) {
65
+ return void 0;
66
+ }
67
+ const closestMenu = composedPath.find((el) => el instanceof Element && el.getAttribute("role") === "menu");
68
+ if (closestMenu !== this) {
69
+ return void 0;
70
+ }
71
+ return target;
72
+ }
73
+ handleClick(event) {
74
+ const item = this.getMenuItemFromEvent(event);
75
+ if (!item) return;
54
76
  if (item.type === "checkbox") {
55
77
  item.checked = !item.checked;
56
78
  }
@@ -90,8 +112,8 @@ var SynMenu = class extends SynergyElement {
90
112
  }
91
113
  }
92
114
  handleMouseDown(event) {
93
- const target = event.target;
94
- if (this.isMenuItem(target)) {
115
+ const target = this.getMenuItemFromEvent(event);
116
+ if (target) {
95
117
  this.setCurrentItem(target);
96
118
  }
97
119
  }
@@ -106,14 +128,21 @@ var SynMenu = class extends SynergyElement {
106
128
  var _a;
107
129
  return item.tagName.toLowerCase() === "syn-menu-item" || ["menuitem", "menuitemcheckbox", "menuitemradio"].includes((_a = item.getAttribute("role")) != null ? _a : "");
108
130
  }
131
+ getMenuItemsFromElement(element) {
132
+ if (element.inert) {
133
+ return [];
134
+ }
135
+ if (this.isMenuItem(element)) {
136
+ return [element];
137
+ }
138
+ if (element.tagName.toLowerCase() === "syn-menu") {
139
+ return [];
140
+ }
141
+ return [...element.children].flatMap((child) => this.getMenuItemsFromElement(child));
142
+ }
109
143
  /** @internal Gets all slotted menu items, ignoring dividers, headers, and other elements. */
110
144
  getAllItems() {
111
- return [...this.defaultSlot.assignedElements({ flatten: true })].filter((el) => {
112
- if (el.inert || !this.isMenuItem(el)) {
113
- return false;
114
- }
115
- return true;
116
- });
145
+ return [...this.defaultSlot.assignedElements({ flatten: true })].flatMap((el) => this.getMenuItemsFromElement(el));
117
146
  }
118
147
  /**
119
148
  * @internal Gets the current menu item, which is the menu item that has `tabindex="0"` within the roving tab index.
@@ -135,9 +164,6 @@ var SynMenu = class extends SynergyElement {
135
164
  render() {
136
165
  return html`
137
166
  <slot
138
- class=${classMap({
139
- "menu--no-checkmarks": !this.hasMenuItemsWithCheckmarks
140
- })}
141
167
  @slotchange=${this.handleSlotChange}
142
168
  @click=${this.handleClick}
143
169
  @keydown=${this.handleKeyDown}
@@ -157,4 +183,4 @@ __decorateClass([
157
183
  export {
158
184
  SynMenu
159
185
  };
160
- //# sourceMappingURL=chunk.OIZEJYK7.js.map
186
+ //# sourceMappingURL=chunk.WFPTZ3W7.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/menu/menu.component.ts"],
4
+ "sourcesContent": ["/* eslint-disable */\nimport { html } from 'lit';\nimport { query } from 'lit/decorators.js';\nimport { state } from 'lit/decorators.js';\nimport type { SynAttributesChangedEvent } from '../../events/syn-attributes-changed.js';\nimport componentStyles from '../../styles/component.styles.js';\nimport SynergyElement from '../../internal/synergy-element.js';\nimport styles from './menu.styles.js';\nimport type { CSSResultGroup } from 'lit';\nimport type SynMenuItem from '../menu-item/menu-item.component.js';\n\nexport interface MenuSelectEventDetail {\n item: SynMenuItem;\n}\n\n/**\n * @summary Menus provide a list of options for the user to choose from.\n * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-menu--docs\n * @status stable\n * @since 1.12.0\n *\n * @slot - The menu's content, including menu items, menu labels, and dividers.\n *\n * @event {{ item: SynMenuItem }} syn-select - Emitted when a menu item is selected.\n */\nexport default class SynMenu extends SynergyElement {\n static styles: CSSResultGroup = [componentStyles, styles];\n\n @query('slot') defaultSlot: HTMLSlotElement;\n @state() hasMenuItemsWithCheckmarks = false;\n private checkmarkStyledItems = new Set<SynMenuItem>();\n\n private handleUpdateCheckmarks(items: SynMenuItem[]) {\n // #368: Treat a menu as having checkmarks if it has any checkboxes or items with loading states\n // The loading indicator has to be checked as well, as it's specially placed over the check mark\n this.hasMenuItemsWithCheckmarks = items.some(item => item.type === 'checkbox' || item.loading);\n this.syncCheckmarkVisibility(items);\n }\n\n private syncCheckmarkVisibility(items: SynMenuItem[]) {\n this.checkmarkStyledItems.forEach(item => {\n if (!items.includes(item)) {\n item.style.removeProperty('--display-checkmark');\n this.checkmarkStyledItems.delete(item);\n }\n });\n\n if (this.hasMenuItemsWithCheckmarks) {\n items.forEach(item => {\n item.style.removeProperty('--display-checkmark');\n this.checkmarkStyledItems.delete(item);\n });\n return;\n }\n\n items.forEach(item => {\n item.style.setProperty('--display-checkmark', 'none');\n this.checkmarkStyledItems.add(item);\n });\n }\n\n private updateCheckMarksByChildPropChange = (e: SynAttributesChangedEvent) => {\n e.stopImmediatePropagation();\n this.handleUpdateCheckmarks(this.getAllItems());\n };\n \n disconnectedCallback() {\n this.removeEventListener('syn-attributes-changed', this.updateCheckMarksByChildPropChange);\n this.checkmarkStyledItems.forEach(item => item.style.removeProperty('--display-checkmark'));\n this.checkmarkStyledItems.clear();\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'menu');\n this.addEventListener('syn-attributes-changed', this.updateCheckMarksByChildPropChange);\n }\n\n private getMenuItemFromEvent(event: Event) {\n const composedPath = event.composedPath();\n const target = composedPath.find((el: EventTarget) => el instanceof HTMLElement && this.isMenuItem(el));\n\n if (!target || !(target instanceof HTMLElement)) {\n return undefined;\n }\n\n const closestMenu = composedPath.find((el: EventTarget) => el instanceof Element && el.getAttribute('role') === 'menu');\n if (closestMenu !== this) {\n return undefined;\n }\n\n return target as SynMenuItem;\n }\n\n private handleClick(event: MouseEvent) {\n const item = this.getMenuItemFromEvent(event);\n\n if (!item) return;\n\n if (item.type === 'checkbox') {\n item.checked = !item.checked;\n }\n\n this.emit('syn-select', { detail: { item } });\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n // Make a selection when pressing enter or space\n if (event.key === 'Enter' || event.key === ' ') {\n const item = this.getCurrentItem();\n event.preventDefault();\n event.stopPropagation();\n\n // Simulate a click to support @click handlers on menu items that also work with the keyboard\n item?.click();\n }\n\n // Move the selection when pressing down or up\n else if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n const items = this.getAllItems();\n const activeItem = this.getCurrentItem();\n let index = activeItem ? items.indexOf(activeItem) : 0;\n\n if (items.length > 0) {\n event.preventDefault();\n event.stopPropagation();\n\n if (event.key === 'ArrowDown') {\n index++;\n } else if (event.key === 'ArrowUp') {\n index--;\n } else if (event.key === 'Home') {\n index = 0;\n } else if (event.key === 'End') {\n index = items.length - 1;\n }\n\n if (index < 0) {\n index = items.length - 1;\n }\n if (index > items.length - 1) {\n index = 0;\n }\n\n this.setCurrentItem(items[index]);\n items[index].focus();\n }\n }\n }\n\n private handleMouseDown(event: MouseEvent) {\n const target = this.getMenuItemFromEvent(event);\n\n if (target) {\n this.setCurrentItem(target);\n }\n }\n\n private handleSlotChange() {\n const items = this.getAllItems();\n this.handleUpdateCheckmarks(items);\n\n // Reset the roving tab index when the slotted items change\n if (items.length > 0) {\n this.setCurrentItem(items[0]);\n }\n }\n\n private isMenuItem(item: HTMLElement) {\n return (\n item.tagName.toLowerCase() === 'syn-menu-item' ||\n ['menuitem', 'menuitemcheckbox', 'menuitemradio'].includes(item.getAttribute('role') ?? '')\n );\n }\n\n private getMenuItemsFromElement(element: HTMLElement): SynMenuItem[] {\n if (element.inert) {\n return [];\n }\n\n if (this.isMenuItem(element)) {\n return [element as SynMenuItem];\n }\n\n if (element.tagName.toLowerCase() === 'syn-menu') {\n return [];\n }\n\n return [...element.children].flatMap(child => this.getMenuItemsFromElement(child as HTMLElement));\n }\n\n /** @internal Gets all slotted menu items, ignoring dividers, headers, and other elements. */\n getAllItems() {\n return [...this.defaultSlot.assignedElements({ flatten: true })].flatMap(el => this.getMenuItemsFromElement(el as HTMLElement));\n }\n\n /**\n * @internal Gets the current menu item, which is the menu item that has `tabindex=\"0\"` within the roving tab index.\n * The menu item may or may not have focus, but for keyboard interaction purposes it's considered the \"active\" item.\n */\n getCurrentItem() {\n return this.getAllItems().find(i => i.getAttribute('tabindex') === '0');\n }\n\n /**\n * @internal Sets the current menu item to the specified element. This sets `tabindex=\"0\"` on the target element and\n * `tabindex=\"-1\"` to all other items. This method must be called prior to setting focus on a menu item.\n */\n setCurrentItem(item: SynMenuItem) {\n const items = this.getAllItems();\n\n // Update tab indexes\n items.forEach(i => {\n i.setAttribute('tabindex', i === item ? '0' : '-1');\n });\n }\n\n render() {\n return html`\n <slot\n @slotchange=${this.handleSlotChange}\n @click=${this.handleClick}\n @keydown=${this.handleKeyDown}\n @mousedown=${this.handleMouseDown}\n ></slot>\n `;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SynPagination
3
- } from "./chunk.NB7NQ6ZJ.js";
3
+ } from "./chunk.PHR6O2TK.js";
4
4
 
5
5
  // src/components/pagination/pagination.ts
6
6
  var pagination_default = SynPagination;
@@ -9,4 +9,4 @@ SynPagination.define("syn-pagination");
9
9
  export {
10
10
  pagination_default
11
11
  };
12
- //# sourceMappingURL=chunk.RLWMJ7ST.js.map
12
+ //# sourceMappingURL=chunk.WP2OIWA5.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SynButton
3
- } from "./chunk.M3E33KXI.js";
3
+ } from "./chunk.UJBDQHXK.js";
4
4
 
5
5
  // src/components/button/button.ts
6
6
  var button_default = SynButton;
@@ -9,4 +9,4 @@ SynButton.define("syn-button");
9
9
  export {
10
10
  button_default
11
11
  };
12
- //# sourceMappingURL=chunk.YAXXSDKF.js.map
12
+ //# sourceMappingURL=chunk.WTJCFKLR.js.map
@@ -5,6 +5,7 @@ var SubmenuController = class {
5
5
  constructor(host, hasSlotController) {
6
6
  this.popupRef = createRef();
7
7
  this.enableSubmenuTimer = -1;
8
+ this.hasGlobalDismissListeners = false;
8
9
  this.isConnected = false;
9
10
  this.isPopupConnected = false;
10
11
  this.skidding = 0;
@@ -19,6 +20,12 @@ var SubmenuController = class {
19
20
  this.enableSubmenu();
20
21
  }
21
22
  };
23
+ this.handleHostMouseLeave = (event) => {
24
+ if (this.isWithinSubmenuInteractionTree(event.relatedTarget)) {
25
+ return;
26
+ }
27
+ this.disableSubmenu();
28
+ };
22
29
  // Focus on the first menu-item of a submenu.
23
30
  this.handleKeyDown = (event) => {
24
31
  switch (event.key) {
@@ -59,10 +66,33 @@ var SubmenuController = class {
59
66
  }
60
67
  this.disableSubmenu();
61
68
  };
69
+ this.handleWindowBlur = () => {
70
+ this.disableSubmenu();
71
+ };
72
+ this.handlePageHide = () => {
73
+ this.disableSubmenu();
74
+ };
75
+ this.handleVisibilityChange = () => {
76
+ if (document.visibilityState === "hidden") {
77
+ this.disableSubmenu();
78
+ }
79
+ };
80
+ this.handleDocumentKeyDown = (event) => {
81
+ if (event.key === "Escape" && this.isExpanded()) {
82
+ this.disableSubmenu();
83
+ event.stopPropagation();
84
+ }
85
+ };
62
86
  // Prevent the parent menu-item from getting focus on mouse movement on the submenu
63
87
  this.handlePopupMouseover = (event) => {
64
88
  event.stopPropagation();
65
89
  };
90
+ this.handlePopupMouseLeave = (event) => {
91
+ if (this.isWithinSubmenuInteractionTree(event.relatedTarget)) {
92
+ return;
93
+ }
94
+ this.disableSubmenu();
95
+ };
66
96
  // Set the safe triangle values for the submenu when the position changes
67
97
  this.handlePopupReposition = () => {
68
98
  const submenuSlot = this.host.renderRoot.querySelector("slot[name='submenu']");
@@ -100,6 +130,7 @@ var SubmenuController = class {
100
130
  if (!this.isConnected) {
101
131
  this.host.addEventListener("mousemove", this.handleMouseMove);
102
132
  this.host.addEventListener("mouseover", this.handleMouseOver);
133
+ this.host.addEventListener("mouseleave", this.handleHostMouseLeave);
103
134
  this.host.addEventListener("keydown", this.handleKeyDown);
104
135
  this.host.addEventListener("click", this.handleClick);
105
136
  this.host.addEventListener("focusout", this.handleFocusOut);
@@ -108,6 +139,7 @@ var SubmenuController = class {
108
139
  if (!this.isPopupConnected) {
109
140
  if (this.popupRef.value) {
110
141
  this.popupRef.value.addEventListener("mouseover", this.handlePopupMouseover);
142
+ this.popupRef.value.addEventListener("mouseleave", this.handlePopupMouseLeave);
111
143
  this.popupRef.value.addEventListener("syn-reposition", this.handlePopupReposition);
112
144
  this.isPopupConnected = true;
113
145
  }
@@ -117,6 +149,7 @@ var SubmenuController = class {
117
149
  if (this.isConnected) {
118
150
  this.host.removeEventListener("mousemove", this.handleMouseMove);
119
151
  this.host.removeEventListener("mouseover", this.handleMouseOver);
152
+ this.host.removeEventListener("mouseleave", this.handleHostMouseLeave);
120
153
  this.host.removeEventListener("keydown", this.handleKeyDown);
121
154
  this.host.removeEventListener("click", this.handleClick);
122
155
  this.host.removeEventListener("focusout", this.handleFocusOut);
@@ -125,10 +158,49 @@ var SubmenuController = class {
125
158
  if (this.isPopupConnected) {
126
159
  if (this.popupRef.value) {
127
160
  this.popupRef.value.removeEventListener("mouseover", this.handlePopupMouseover);
161
+ this.popupRef.value.removeEventListener("mouseleave", this.handlePopupMouseLeave);
128
162
  this.popupRef.value.removeEventListener("syn-reposition", this.handlePopupReposition);
129
163
  this.isPopupConnected = false;
130
164
  }
131
165
  }
166
+ this.removeGlobalDismissListeners();
167
+ }
168
+ addGlobalDismissListeners() {
169
+ if (this.hasGlobalDismissListeners) {
170
+ return;
171
+ }
172
+ document.addEventListener("keydown", this.handleDocumentKeyDown);
173
+ window.addEventListener("blur", this.handleWindowBlur);
174
+ window.addEventListener("pagehide", this.handlePageHide);
175
+ document.addEventListener("visibilitychange", this.handleVisibilityChange);
176
+ this.hasGlobalDismissListeners = true;
177
+ }
178
+ removeGlobalDismissListeners() {
179
+ if (!this.hasGlobalDismissListeners) {
180
+ return;
181
+ }
182
+ document.removeEventListener("keydown", this.handleDocumentKeyDown);
183
+ window.removeEventListener("blur", this.handleWindowBlur);
184
+ window.removeEventListener("pagehide", this.handlePageHide);
185
+ document.removeEventListener("visibilitychange", this.handleVisibilityChange);
186
+ this.hasGlobalDismissListeners = false;
187
+ }
188
+ isWithinSubmenuInteractionTree(target) {
189
+ var _a;
190
+ if (!(target instanceof Node)) {
191
+ return false;
192
+ }
193
+ if (this.host.contains(target)) {
194
+ return true;
195
+ }
196
+ if ((_a = this.popupRef.value) == null ? void 0 : _a.contains(target)) {
197
+ return true;
198
+ }
199
+ const rootNode = target.getRootNode();
200
+ if (rootNode instanceof ShadowRoot) {
201
+ return this.isWithinSubmenuInteractionTree(rootNode.host);
202
+ }
203
+ return false;
132
204
  }
133
205
  handleSubmenuEntry(event) {
134
206
  const submenuSlot = this.host.renderRoot.querySelector("slot[name='submenu']");
@@ -172,6 +244,11 @@ var SubmenuController = class {
172
244
  if (this.popupRef.value) {
173
245
  if (this.popupRef.value.active !== state) {
174
246
  this.popupRef.value.active = state;
247
+ if (state) {
248
+ this.addGlobalDismissListeners();
249
+ } else {
250
+ this.removeGlobalDismissListeners();
251
+ }
175
252
  this.host.requestUpdate();
176
253
  }
177
254
  }
@@ -237,4 +314,4 @@ var SubmenuController = class {
237
314
  export {
238
315
  SubmenuController
239
316
  };
240
- //# sourceMappingURL=chunk.BC532CB6.js.map
317
+ //# sourceMappingURL=chunk.WUGCLTH6.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/menu-item/submenu-controller.ts"],
4
+ "sourcesContent": ["/* eslint-disable */\nimport { createRef, ref, type Ref } from 'lit/directives/ref.js';\nimport { type HasSlotController } from '../../internal/slot.js';\nimport { html } from 'lit';\nimport type { ReactiveController, ReactiveControllerHost } from 'lit';\nimport type SynMenuItem from './menu-item.js';\nimport type SynPopup from '../popup/popup.js';\n\n/** A reactive controller to manage the registration of event listeners for submenus. */\nexport class SubmenuController implements ReactiveController {\n private host: ReactiveControllerHost & SynMenuItem;\n private popupRef: Ref<SynPopup> = createRef();\n private enableSubmenuTimer = -1;\n private hasGlobalDismissListeners = false;\n private isConnected = false;\n private isPopupConnected = false;\n private skidding = 0;\n private readonly hasSlotController: HasSlotController;\n private readonly submenuOpenDelay = 100;\n\n constructor(host: ReactiveControllerHost & SynMenuItem, hasSlotController: HasSlotController) {\n (this.host = host).addController(this);\n this.hasSlotController = hasSlotController;\n }\n\n hostConnected() {\n if (this.hasSlotController.test('submenu') && !this.host.disabled) {\n this.addListeners();\n }\n }\n\n hostDisconnected() {\n this.removeListeners();\n }\n\n hostUpdated() {\n if (this.hasSlotController.test('submenu') && !this.host.disabled) {\n this.addListeners();\n this.updateSkidding();\n } else {\n this.removeListeners();\n }\n }\n\n private addListeners() {\n if (!this.isConnected) {\n this.host.addEventListener('mousemove', this.handleMouseMove);\n this.host.addEventListener('mouseover', this.handleMouseOver);\n this.host.addEventListener('mouseleave', this.handleHostMouseLeave);\n this.host.addEventListener('keydown', this.handleKeyDown);\n this.host.addEventListener('click', this.handleClick);\n this.host.addEventListener('focusout', this.handleFocusOut);\n this.isConnected = true;\n }\n\n // The popup does not seem to get wired when the host is\n // connected, so manage its listeners separately.\n if (!this.isPopupConnected) {\n if (this.popupRef.value) {\n this.popupRef.value.addEventListener('mouseover', this.handlePopupMouseover);\n this.popupRef.value.addEventListener('mouseleave', this.handlePopupMouseLeave);\n this.popupRef.value.addEventListener('syn-reposition', this.handlePopupReposition);\n this.isPopupConnected = true;\n }\n }\n }\n\n private removeListeners() {\n if (this.isConnected) {\n this.host.removeEventListener('mousemove', this.handleMouseMove);\n this.host.removeEventListener('mouseover', this.handleMouseOver);\n this.host.removeEventListener('mouseleave', this.handleHostMouseLeave);\n this.host.removeEventListener('keydown', this.handleKeyDown);\n this.host.removeEventListener('click', this.handleClick);\n this.host.removeEventListener('focusout', this.handleFocusOut);\n this.isConnected = false;\n }\n if (this.isPopupConnected) {\n if (this.popupRef.value) {\n this.popupRef.value.removeEventListener('mouseover', this.handlePopupMouseover);\n this.popupRef.value.removeEventListener('mouseleave', this.handlePopupMouseLeave);\n this.popupRef.value.removeEventListener('syn-reposition', this.handlePopupReposition);\n this.isPopupConnected = false;\n }\n }\n\n this.removeGlobalDismissListeners();\n }\n\n private addGlobalDismissListeners() {\n if (this.hasGlobalDismissListeners) {\n return;\n }\n\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n window.addEventListener('blur', this.handleWindowBlur);\n window.addEventListener('pagehide', this.handlePageHide);\n document.addEventListener('visibilitychange', this.handleVisibilityChange);\n this.hasGlobalDismissListeners = true;\n }\n\n private removeGlobalDismissListeners() {\n if (!this.hasGlobalDismissListeners) {\n return;\n }\n\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n window.removeEventListener('blur', this.handleWindowBlur);\n window.removeEventListener('pagehide', this.handlePageHide);\n document.removeEventListener('visibilitychange', this.handleVisibilityChange);\n this.hasGlobalDismissListeners = false;\n }\n\n // Set the safe triangle cursor position\n private handleMouseMove = (event: MouseEvent) => {\n this.host.style.setProperty('--safe-triangle-cursor-x', `${event.clientX}px`);\n this.host.style.setProperty('--safe-triangle-cursor-y', `${event.clientY}px`);\n };\n\n private handleMouseOver = () => {\n if (this.hasSlotController.test('submenu')) {\n this.enableSubmenu();\n }\n };\n\n private isWithinSubmenuInteractionTree(target: EventTarget | null): boolean {\n if (!(target instanceof Node)) {\n return false;\n }\n\n if (this.host.contains(target)) {\n return true;\n }\n\n if (this.popupRef.value?.contains(target)) {\n return true;\n }\n\n const rootNode = target.getRootNode();\n if (rootNode instanceof ShadowRoot) {\n return this.isWithinSubmenuInteractionTree(rootNode.host);\n }\n\n return false;\n }\n\n private handleHostMouseLeave = (event: MouseEvent) => {\n if (this.isWithinSubmenuInteractionTree(event.relatedTarget)) {\n return;\n }\n\n this.disableSubmenu();\n };\n\n private handleSubmenuEntry(event: KeyboardEvent) {\n // Pass focus to the first menu-item in the submenu.\n const submenuSlot: HTMLSlotElement | null = this.host.renderRoot.querySelector(\"slot[name='submenu']\");\n\n // Missing slot\n if (!submenuSlot) {\n console.error('Cannot activate a submenu if no corresponding menuitem can be found.', this);\n return;\n }\n\n // Menus\n let menuItems: NodeListOf<Element> | null = null;\n for (const elt of submenuSlot.assignedElements()) {\n menuItems = elt.querySelectorAll(\"syn-menu-item, [role^='menuitem']\");\n if (menuItems.length !== 0) {\n break;\n }\n }\n\n if (!menuItems || menuItems.length === 0) {\n return;\n }\n\n menuItems[0].setAttribute('tabindex', '0');\n for (let i = 1; i !== menuItems.length; ++i) {\n menuItems[i].setAttribute('tabindex', '-1');\n }\n\n // Open the submenu (if not open), and set focus to first menuitem.\n if (this.popupRef.value) {\n event.preventDefault();\n event.stopPropagation();\n if (this.popupRef.value.active) {\n if (menuItems[0] instanceof HTMLElement) {\n menuItems[0].focus();\n }\n } else {\n this.enableSubmenu(false);\n this.host.updateComplete.then(() => {\n if (menuItems[0] instanceof HTMLElement) {\n menuItems[0].focus();\n }\n });\n this.host.requestUpdate();\n }\n }\n }\n\n // Focus on the first menu-item of a submenu.\n private handleKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'Escape':\n case 'Tab':\n this.disableSubmenu();\n break;\n case 'ArrowLeft':\n // Either focus is currently on the host element or a child\n if (event.target !== this.host) {\n event.preventDefault();\n event.stopPropagation();\n this.host.focus();\n this.disableSubmenu();\n }\n break;\n case 'ArrowRight':\n case 'Enter':\n case ' ':\n this.handleSubmenuEntry(event);\n break;\n default:\n break;\n }\n };\n\n private handleClick = (event: MouseEvent) => {\n // Clicking on the item which heads the menu does nothing, otherwise hide submenu and propagate\n if (event.target === this.host) {\n event.preventDefault();\n event.stopPropagation();\n } else if (\n event.target instanceof Element &&\n (event.target.tagName === 'syn-menu-item' || event.target.role?.startsWith('menuitem'))\n ) {\n this.disableSubmenu();\n }\n };\n\n // Close this submenu on focus outside of the parent or any descendants.\n private handleFocusOut = (event: FocusEvent) => {\n if (event.relatedTarget && event.relatedTarget instanceof Element && this.host.contains(event.relatedTarget)) {\n return;\n }\n this.disableSubmenu();\n };\n\n private handleWindowBlur = () => {\n this.disableSubmenu();\n };\n\n private handlePageHide = () => {\n this.disableSubmenu();\n };\n\n private handleVisibilityChange = () => {\n if (document.visibilityState === 'hidden') {\n this.disableSubmenu();\n }\n };\n\n private handleDocumentKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && this.isExpanded()) {\n this.disableSubmenu();\n event.stopPropagation();\n }\n };\n\n // Prevent the parent menu-item from getting focus on mouse movement on the submenu\n private handlePopupMouseover = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n private handlePopupMouseLeave = (event: MouseEvent) => {\n if (this.isWithinSubmenuInteractionTree(event.relatedTarget)) {\n return;\n }\n\n this.disableSubmenu();\n };\n\n // Set the safe triangle values for the submenu when the position changes\n private handlePopupReposition = () => {\n const submenuSlot: HTMLSlotElement | null = this.host.renderRoot.querySelector(\"slot[name='submenu']\");\n const menu = submenuSlot?.assignedElements({ flatten: true }).filter(el => el.localName === 'syn-menu')[0];\n const isRtl = getComputedStyle(this.host).direction === 'rtl';\n if (!menu) {\n return;\n }\n\n const { left, top, width, height } = menu.getBoundingClientRect();\n\n this.host.style.setProperty('--safe-triangle-submenu-start-x', `${isRtl ? left + width : left}px`);\n this.host.style.setProperty('--safe-triangle-submenu-start-y', `${top}px`);\n this.host.style.setProperty('--safe-triangle-submenu-end-x', `${isRtl ? left + width : left}px`);\n this.host.style.setProperty('--safe-triangle-submenu-end-y', `${top + height}px`);\n };\n\n private setSubmenuState(state: boolean) {\n if (this.popupRef.value) {\n if (this.popupRef.value.active !== state) {\n this.popupRef.value.active = state;\n if (state) {\n this.addGlobalDismissListeners();\n } else {\n this.removeGlobalDismissListeners();\n }\n this.host.requestUpdate();\n }\n }\n }\n\n // Shows the submenu. Supports disabling the opening delay, e.g. for keyboard events that want to set the focus to the\n // newly opened menu.\n private enableSubmenu(delay = true) {\n if (delay) {\n window.clearTimeout(this.enableSubmenuTimer);\n this.enableSubmenuTimer = window.setTimeout(() => {\n this.setSubmenuState(true);\n }, this.submenuOpenDelay);\n } else {\n this.setSubmenuState(true);\n }\n }\n\n private disableSubmenu() {\n window.clearTimeout(this.enableSubmenuTimer);\n this.setSubmenuState(false);\n }\n\n // Calculate the space the top of a menu takes-up, for aligning the popup menu-item with the activating element.\n private updateSkidding(): void {\n // .computedStyleMap() not always available.\n if (!this.host.parentElement?.computedStyleMap) {\n return;\n }\n const styleMap: StylePropertyMapReadOnly = this.host.parentElement.computedStyleMap();\n const attrs: string[] = ['padding-top', 'border-top-width', 'margin-top'];\n\n const skidding = attrs.reduce((accumulator, attr) => {\n const styleValue: CSSStyleValue = styleMap.get(attr) ?? new CSSUnitValue(0, 'px');\n const unitValue = styleValue instanceof CSSUnitValue ? styleValue : new CSSUnitValue(0, 'px');\n const pxValue = unitValue.to('px');\n return accumulator - pxValue.value;\n }, 0);\n\n this.skidding = skidding;\n }\n\n isExpanded(): boolean {\n return this.popupRef.value ? this.popupRef.value.active : false;\n }\n\n renderSubmenu() {\n const isRtl = getComputedStyle(this.host).direction === 'rtl';\n\n // Always render the slot, but conditionally render the outer <syn-popup>\n if (!this.isConnected) {\n return html` <slot name=\"submenu\" hidden></slot> `;\n }\n\n return html`\n <syn-popup\n ${ref(this.popupRef)}\n placement=${isRtl ? 'left-start' : 'right-start'}\n anchor=\"anchor\"\n flip\n flip-fallback-strategy=\"best-fit\"\n skidding=\"${this.skidding}\"\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n >\n <slot name=\"submenu\"></slot>\n </syn-popup>\n `;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["_a"]
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SynRange
3
- } from "./chunk.N7DY6HOE.js";
3
+ } from "./chunk.N6MOQ6B5.js";
4
4
 
5
5
  // src/components/range/range.ts
6
6
  var range_default = SynRange;
@@ -9,4 +9,4 @@ SynRange.define("syn-range");
9
9
  export {
10
10
  range_default
11
11
  };
12
- //# sourceMappingURL=chunk.ZJRSA6FU.js.map
12
+ //# sourceMappingURL=chunk.WWJFXCJ7.js.map
@@ -1,9 +1,9 @@
1
- import {
2
- defaultValue
3
- } from "./chunk.3JDUKQRN.js";
4
1
  import {
5
2
  checkbox_styles_default
6
3
  } from "./chunk.VOUZJK5T.js";
4
+ import {
5
+ defaultValue
6
+ } from "./chunk.3JDUKQRN.js";
7
7
  import {
8
8
  form_control_styles_default
9
9
  } from "./chunk.34WYIU4C.js";
@@ -15,19 +15,19 @@ import {
15
15
  } from "./chunk.CHFWLQN5.js";
16
16
  import {
17
17
  SynIcon
18
- } from "./chunk.I4Z5TIK5.js";
19
- import {
20
- watch
21
- } from "./chunk.SMIMHADA.js";
18
+ } from "./chunk.7WBNGACU.js";
22
19
  import {
23
20
  enableDefaultSettings
24
21
  } from "./chunk.4MG3QDNW.js";
22
+ import {
23
+ watch
24
+ } from "./chunk.SMIMHADA.js";
25
25
  import {
26
26
  component_styles_default
27
27
  } from "./chunk.2NT3B5WJ.js";
28
28
  import {
29
29
  SynergyElement
30
- } from "./chunk.UISWB5WE.js";
30
+ } from "./chunk.YBXR5HES.js";
31
31
  import {
32
32
  __decorateClass
33
33
  } from "./chunk.MO2GTRUM.js";
@@ -266,4 +266,4 @@ SynCheckbox = __decorateClass([
266
266
  export {
267
267
  SynCheckbox
268
268
  };
269
- //# sourceMappingURL=chunk.TTCMP7MI.js.map
269
+ //# sourceMappingURL=chunk.X72G6ASQ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SynTabGroup
3
- } from "./chunk.KI5VDJAL.js";
3
+ } from "./chunk.4E5YHPM6.js";
4
4
 
5
5
  // src/components/tab-group/tab-group.ts
6
6
  var tab_group_default = SynTabGroup;
@@ -9,4 +9,4 @@ SynTabGroup.define("syn-tab-group");
9
9
  export {
10
10
  tab_group_default
11
11
  };
12
- //# sourceMappingURL=chunk.TYSWA3XY.js.map
12
+ //# sourceMappingURL=chunk.XT6UCMCP.js.map
@@ -81,7 +81,7 @@ var SynergyElement = class extends LitElement {
81
81
  _hasRecordedInitialProperties = new WeakMap();
82
82
  /* eslint-disable */
83
83
  // @ts-expect-error This is auto-injected at build time.
84
- SynergyElement.version = "3.14.0";
84
+ SynergyElement.version = "3.15.1";
85
85
  SynergyElement.dependencies = {};
86
86
  __decorateClass([
87
87
  property()
@@ -93,4 +93,4 @@ __decorateClass([
93
93
  export {
94
94
  SynergyElement
95
95
  };
96
- //# sourceMappingURL=chunk.UISWB5WE.js.map
96
+ //# sourceMappingURL=chunk.YBXR5HES.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/internal/synergy-element.ts"],
4
- "sourcesContent": ["/* eslint-disable */\nimport { LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\n\n// Match event type name strings that are registered on GlobalEventHandlersEventMap...\ntype EventTypeRequiresDetail<T> = T extends keyof GlobalEventHandlersEventMap\n ? // ...where the event detail is an object...\n GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, unknown>>\n ? // ...that is non-empty...\n GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, never>>\n ? never\n : // ...and has at least one non-optional property\n Partial<GlobalEventHandlersEventMap[T]['detail']> extends GlobalEventHandlersEventMap[T]['detail']\n ? never\n : T\n : never\n : never;\n\n// The inverse of the above (match any type that doesn't match EventTypeRequiresDetail)\ntype EventTypeDoesNotRequireDetail<T> = T extends keyof GlobalEventHandlersEventMap\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, unknown>>\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, never>>\n ? T\n : Partial<GlobalEventHandlersEventMap[T]['detail']> extends GlobalEventHandlersEventMap[T]['detail']\n ? T\n : never\n : T\n : T;\n\n// `keyof EventTypesWithRequiredDetail` lists all registered event types that require detail\ntype EventTypesWithRequiredDetail = {\n [EventType in keyof GlobalEventHandlersEventMap as EventTypeRequiresDetail<EventType>]: true;\n};\n\n// `keyof EventTypesWithoutRequiredDetail` lists all registered event types that do NOT require detail\ntype EventTypesWithoutRequiredDetail = {\n [EventType in keyof GlobalEventHandlersEventMap as EventTypeDoesNotRequireDetail<EventType>]: true;\n};\n\n// Helper to make a specific property of an object non-optional\ntype WithRequired<T, K extends keyof T> = T & { [P in K]-?: T[P] };\n\n// Given an event name string, get a valid type for the options to initialize the event that is more restrictive than\n// just CustomEventInit when appropriate (validate the type of the event detail, and require it to be provided if the\n// event requires it)\ntype SynEventInit<T> = T extends keyof GlobalEventHandlersEventMap\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, unknown>>\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, never>>\n ? CustomEventInit<GlobalEventHandlersEventMap[T]['detail']>\n : Partial<GlobalEventHandlersEventMap[T]['detail']> extends GlobalEventHandlersEventMap[T]['detail']\n ? CustomEventInit<GlobalEventHandlersEventMap[T]['detail']>\n : WithRequired<CustomEventInit<GlobalEventHandlersEventMap[T]['detail']>, 'detail'>\n : CustomEventInit\n : CustomEventInit;\n\n// Given an event name string, get the type of the event\ntype GetCustomEventType<T> = T extends keyof GlobalEventHandlersEventMap\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<unknown>\n ? GlobalEventHandlersEventMap[T]\n : CustomEvent<unknown>\n : CustomEvent<unknown>;\n\n// `keyof ValidEventTypeMap` is equivalent to `keyof GlobalEventHandlersEventMap` but gives a nicer error message\ntype ValidEventTypeMap = EventTypesWithRequiredDetail | EventTypesWithoutRequiredDetail;\n\nexport default class SynergyElement extends LitElement {\n // Make localization attributes reactive\n @property() dir: string;\n @property() lang: string;\n\n /** Emits a custom event with more convenient defaults. */\n emit<T extends string & keyof EventTypesWithoutRequiredDetail>(\n name: EventTypeDoesNotRequireDetail<T>,\n options?: SynEventInit<T> | undefined\n ): GetCustomEventType<T>;\n emit<T extends string & keyof EventTypesWithRequiredDetail>(\n name: EventTypeRequiresDetail<T>,\n options: SynEventInit<T>\n ): GetCustomEventType<T>;\n emit<T extends string & keyof ValidEventTypeMap>(\n name: T,\n options?: SynEventInit<T> | undefined\n ): GetCustomEventType<T> {\n const event = new CustomEvent(name, {\n bubbles: true,\n cancelable: false,\n composed: true,\n detail: {},\n ...options\n });\n\n this.dispatchEvent(event);\n\n return event as GetCustomEventType<T>;\n }\n\n /* eslint-disable */\n // @ts-expect-error This is auto-injected at build time.\n static version = \"3.14.0\";\n \n\n static define(name: string, elementConstructor = this, options: ElementDefinitionOptions = {}) {\n const currentlyRegisteredConstructor = customElements.get(name) as\n | CustomElementConstructor\n | typeof SynergyElement;\n\n if (!currentlyRegisteredConstructor) {\n // We try to register as the actual class first. If for some reason that fails, we fall back to anonymous classes.\n // customElements can only have 1 class of the same \"object id\" per registry, so that is why the try {} catch {} exists.\n // Some tools like Jest Snapshots and if you import the constructor and call `new SynButton()` they will fail with\n // the anonymous class version.\n try {\n customElements.define(name, elementConstructor, options);\n } catch (_err) {\n customElements.define(name, class extends elementConstructor {}, options);\n }\n return;\n }\n\n let newVersion = ' (unknown version)';\n let existingVersion = newVersion;\n\n if ('version' in elementConstructor && elementConstructor.version) {\n newVersion = ' v' + elementConstructor.version;\n }\n\n if ('version' in currentlyRegisteredConstructor && currentlyRegisteredConstructor.version) {\n existingVersion = ' v' + currentlyRegisteredConstructor.version;\n }\n\n // Need to make sure we're not working with null or empty strings before doing version comparisons.\n if (newVersion && existingVersion && newVersion === existingVersion) {\n // If versions match, we don't need to warn anyone. Carry on.\n return;\n }\n\n console.warn(\n `Attempted to register <${name}>${newVersion}, but <${name}>${existingVersion} has already been registered.`\n );\n }\n\n static dependencies: Record<string, typeof SynergyElement> = {};\n\n constructor() {\n super();\n Object.entries((this.constructor as typeof SynergyElement).dependencies).forEach(([name, component]) => {\n (this.constructor as typeof SynergyElement).define(name, component);\n });\n }\n\n #hasRecordedInitialProperties = false;\n\n // Store the constructor value of all `static properties = {}`\n initialReflectedProperties: Map<string, unknown> = new Map();\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n if (!this.#hasRecordedInitialProperties) {\n (this.constructor as typeof SynergyElement).elementProperties.forEach(\n (obj, prop: keyof typeof this & string) => {\n // eslint-disable-next-line\n if (obj.reflect && this[prop] != null) {\n this.initialReflectedProperties.set(prop, this[prop]);\n }\n }\n );\n\n this.#hasRecordedInitialProperties = true;\n }\n\n super.attributeChangedCallback(name, oldValue, newValue);\n }\n\n protected willUpdate(changedProperties: Parameters<LitElement['willUpdate']>[0]): void {\n super.willUpdate(changedProperties);\n\n // Run the morph fixing *after* willUpdate.\n this.initialReflectedProperties.forEach((value, prop: string & keyof typeof this) => {\n // If a prop changes to `null`, we assume this happens via an attribute changing to `null`.\n // eslint-disable-next-line\n if (changedProperties.has(prop) && this[prop] == null) {\n // Silly type gymnastics to appease the compiler.\n (this as Record<string, unknown>)[prop] = value;\n }\n });\n }\n}\n\nexport interface SynergyFormControl extends SynergyElement {\n // Form attributes\n name: string;\n value: unknown;\n disabled?: boolean;\n defaultValue?: unknown;\n defaultChecked?: boolean;\n form?: string;\n\n // Constraint validation attributes\n pattern?: string;\n min?: number | string | Date;\n max?: number | string | Date;\n step?: number | 'any';\n required?: boolean;\n minlength?: number;\n maxlength?: number;\n\n // Form validation properties\n readonly validity: ValidityState;\n readonly validationMessage: string;\n\n // Form validation methods\n checkValidity: () => boolean;\n getForm: () => HTMLFormElement | null;\n reportValidity: () => boolean;\n setCustomValidity: (message: string) => void;\n}\n"],
4
+ "sourcesContent": ["/* eslint-disable */\nimport { LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\n\n// Match event type name strings that are registered on GlobalEventHandlersEventMap...\ntype EventTypeRequiresDetail<T> = T extends keyof GlobalEventHandlersEventMap\n ? // ...where the event detail is an object...\n GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, unknown>>\n ? // ...that is non-empty...\n GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, never>>\n ? never\n : // ...and has at least one non-optional property\n Partial<GlobalEventHandlersEventMap[T]['detail']> extends GlobalEventHandlersEventMap[T]['detail']\n ? never\n : T\n : never\n : never;\n\n// The inverse of the above (match any type that doesn't match EventTypeRequiresDetail)\ntype EventTypeDoesNotRequireDetail<T> = T extends keyof GlobalEventHandlersEventMap\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, unknown>>\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, never>>\n ? T\n : Partial<GlobalEventHandlersEventMap[T]['detail']> extends GlobalEventHandlersEventMap[T]['detail']\n ? T\n : never\n : T\n : T;\n\n// `keyof EventTypesWithRequiredDetail` lists all registered event types that require detail\ntype EventTypesWithRequiredDetail = {\n [EventType in keyof GlobalEventHandlersEventMap as EventTypeRequiresDetail<EventType>]: true;\n};\n\n// `keyof EventTypesWithoutRequiredDetail` lists all registered event types that do NOT require detail\ntype EventTypesWithoutRequiredDetail = {\n [EventType in keyof GlobalEventHandlersEventMap as EventTypeDoesNotRequireDetail<EventType>]: true;\n};\n\n// Helper to make a specific property of an object non-optional\ntype WithRequired<T, K extends keyof T> = T & { [P in K]-?: T[P] };\n\n// Given an event name string, get a valid type for the options to initialize the event that is more restrictive than\n// just CustomEventInit when appropriate (validate the type of the event detail, and require it to be provided if the\n// event requires it)\ntype SynEventInit<T> = T extends keyof GlobalEventHandlersEventMap\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, unknown>>\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<Record<PropertyKey, never>>\n ? CustomEventInit<GlobalEventHandlersEventMap[T]['detail']>\n : Partial<GlobalEventHandlersEventMap[T]['detail']> extends GlobalEventHandlersEventMap[T]['detail']\n ? CustomEventInit<GlobalEventHandlersEventMap[T]['detail']>\n : WithRequired<CustomEventInit<GlobalEventHandlersEventMap[T]['detail']>, 'detail'>\n : CustomEventInit\n : CustomEventInit;\n\n// Given an event name string, get the type of the event\ntype GetCustomEventType<T> = T extends keyof GlobalEventHandlersEventMap\n ? GlobalEventHandlersEventMap[T] extends CustomEvent<unknown>\n ? GlobalEventHandlersEventMap[T]\n : CustomEvent<unknown>\n : CustomEvent<unknown>;\n\n// `keyof ValidEventTypeMap` is equivalent to `keyof GlobalEventHandlersEventMap` but gives a nicer error message\ntype ValidEventTypeMap = EventTypesWithRequiredDetail | EventTypesWithoutRequiredDetail;\n\nexport default class SynergyElement extends LitElement {\n // Make localization attributes reactive\n @property() dir: string;\n @property() lang: string;\n\n /** Emits a custom event with more convenient defaults. */\n emit<T extends string & keyof EventTypesWithoutRequiredDetail>(\n name: EventTypeDoesNotRequireDetail<T>,\n options?: SynEventInit<T> | undefined\n ): GetCustomEventType<T>;\n emit<T extends string & keyof EventTypesWithRequiredDetail>(\n name: EventTypeRequiresDetail<T>,\n options: SynEventInit<T>\n ): GetCustomEventType<T>;\n emit<T extends string & keyof ValidEventTypeMap>(\n name: T,\n options?: SynEventInit<T> | undefined\n ): GetCustomEventType<T> {\n const event = new CustomEvent(name, {\n bubbles: true,\n cancelable: false,\n composed: true,\n detail: {},\n ...options\n });\n\n this.dispatchEvent(event);\n\n return event as GetCustomEventType<T>;\n }\n\n /* eslint-disable */\n // @ts-expect-error This is auto-injected at build time.\n static version = \"3.15.1\";\n \n\n static define(name: string, elementConstructor = this, options: ElementDefinitionOptions = {}) {\n const currentlyRegisteredConstructor = customElements.get(name) as\n | CustomElementConstructor\n | typeof SynergyElement;\n\n if (!currentlyRegisteredConstructor) {\n // We try to register as the actual class first. If for some reason that fails, we fall back to anonymous classes.\n // customElements can only have 1 class of the same \"object id\" per registry, so that is why the try {} catch {} exists.\n // Some tools like Jest Snapshots and if you import the constructor and call `new SynButton()` they will fail with\n // the anonymous class version.\n try {\n customElements.define(name, elementConstructor, options);\n } catch (_err) {\n customElements.define(name, class extends elementConstructor {}, options);\n }\n return;\n }\n\n let newVersion = ' (unknown version)';\n let existingVersion = newVersion;\n\n if ('version' in elementConstructor && elementConstructor.version) {\n newVersion = ' v' + elementConstructor.version;\n }\n\n if ('version' in currentlyRegisteredConstructor && currentlyRegisteredConstructor.version) {\n existingVersion = ' v' + currentlyRegisteredConstructor.version;\n }\n\n // Need to make sure we're not working with null or empty strings before doing version comparisons.\n if (newVersion && existingVersion && newVersion === existingVersion) {\n // If versions match, we don't need to warn anyone. Carry on.\n return;\n }\n\n console.warn(\n `Attempted to register <${name}>${newVersion}, but <${name}>${existingVersion} has already been registered.`\n );\n }\n\n static dependencies: Record<string, typeof SynergyElement> = {};\n\n constructor() {\n super();\n Object.entries((this.constructor as typeof SynergyElement).dependencies).forEach(([name, component]) => {\n (this.constructor as typeof SynergyElement).define(name, component);\n });\n }\n\n #hasRecordedInitialProperties = false;\n\n // Store the constructor value of all `static properties = {}`\n initialReflectedProperties: Map<string, unknown> = new Map();\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n if (!this.#hasRecordedInitialProperties) {\n (this.constructor as typeof SynergyElement).elementProperties.forEach(\n (obj, prop: keyof typeof this & string) => {\n // eslint-disable-next-line\n if (obj.reflect && this[prop] != null) {\n this.initialReflectedProperties.set(prop, this[prop]);\n }\n }\n );\n\n this.#hasRecordedInitialProperties = true;\n }\n\n super.attributeChangedCallback(name, oldValue, newValue);\n }\n\n protected willUpdate(changedProperties: Parameters<LitElement['willUpdate']>[0]): void {\n super.willUpdate(changedProperties);\n\n // Run the morph fixing *after* willUpdate.\n this.initialReflectedProperties.forEach((value, prop: string & keyof typeof this) => {\n // If a prop changes to `null`, we assume this happens via an attribute changing to `null`.\n // eslint-disable-next-line\n if (changedProperties.has(prop) && this[prop] == null) {\n // Silly type gymnastics to appease the compiler.\n (this as Record<string, unknown>)[prop] = value;\n }\n });\n }\n}\n\nexport interface SynergyFormControl extends SynergyElement {\n // Form attributes\n name: string;\n value: unknown;\n disabled?: boolean;\n defaultValue?: unknown;\n defaultChecked?: boolean;\n form?: string;\n\n // Constraint validation attributes\n pattern?: string;\n min?: number | string | Date;\n max?: number | string | Date;\n step?: number | 'any';\n required?: boolean;\n minlength?: number;\n maxlength?: number;\n\n // Form validation properties\n readonly validity: ValidityState;\n readonly validationMessage: string;\n\n // Form validation methods\n checkValidity: () => boolean;\n getForm: () => HTMLFormElement | null;\n reportValidity: () => boolean;\n setCustomValidity: (message: string) => void;\n}\n"],
5
5
  "mappings": ";;;;;;;;;AACA,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AAFzB;AAiEA,IAAqB,iBAArB,cAA4C,WAAW;AAAA,EA8ErD,cAAc;AACZ,UAAM;AAMR,sDAAgC;AAGhC;AAAA,sCAAmD,oBAAI,IAAI;AARzD,WAAO,QAAS,KAAK,YAAsC,YAAY,EAAE,QAAQ,CAAC,CAAC,MAAM,SAAS,MAAM;AACtG,MAAC,KAAK,YAAsC,OAAO,MAAM,SAAS;AAAA,IACpE,CAAC;AAAA,EACH;AAAA,EArEA,KACE,MACA,SACuB;AACvB,UAAM,QAAQ,IAAI,YAAY,MAAM;AAAA,MAClC,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,QAAQ,CAAC;AAAA,OACN,QACJ;AAED,SAAK,cAAc,KAAK;AAExB,WAAO;AAAA,EACT;AAAA,EAOA,OAAO,OAAO,MAAc,qBAAqB,MAAM,UAAoC,CAAC,GAAG;AAC7F,UAAM,iCAAiC,eAAe,IAAI,IAAI;AAI9D,QAAI,CAAC,gCAAgC;AAKnC,UAAI;AACF,uBAAe,OAAO,MAAM,oBAAoB,OAAO;AAAA,MACzD,SAAS,MAAM;AACb,uBAAe,OAAO,MAAM,cAAc,mBAAmB;AAAA,QAAC,GAAG,OAAO;AAAA,MAC1E;AACA;AAAA,IACF;AAEA,QAAI,aAAa;AACjB,QAAI,kBAAkB;AAEtB,QAAI,aAAa,sBAAsB,mBAAmB,SAAS;AACjE,mBAAa,OAAO,mBAAmB;AAAA,IACzC;AAEA,QAAI,aAAa,kCAAkC,+BAA+B,SAAS;AACzF,wBAAkB,OAAO,+BAA+B;AAAA,IAC1D;AAGA,QAAI,cAAc,mBAAmB,eAAe,iBAAiB;AAEnE;AAAA,IACF;AAEA,YAAQ;AAAA,MACN,0BAA0B,IAAI,IAAI,UAAU,UAAU,IAAI,IAAI,eAAe;AAAA,IAC/E;AAAA,EACF;AAAA,EAgBA,yBAAyB,MAAc,UAAyB,UAAyB;AACvF,QAAI,CAAC,mBAAK,gCAA+B;AACvC,MAAC,KAAK,YAAsC,kBAAkB;AAAA,QAC5D,CAAC,KAAK,SAAqC;AAEzC,cAAI,IAAI,WAAW,KAAK,IAAI,KAAK,MAAM;AACrC,iBAAK,2BAA2B,IAAI,MAAM,KAAK,IAAI,CAAC;AAAA,UACtD;AAAA,QACF;AAAA,MACF;AAEA,yBAAK,+BAAgC;AAAA,IACvC;AAEA,UAAM,yBAAyB,MAAM,UAAU,QAAQ;AAAA,EACzD;AAAA,EAEU,WAAW,mBAAkE;AACrF,UAAM,WAAW,iBAAiB;AAGlC,SAAK,2BAA2B,QAAQ,CAAC,OAAO,SAAqC;AAGnF,UAAI,kBAAkB,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,MAAM;AAErD,QAAC,KAAiC,IAAI,IAAI;AAAA,MAC5C;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAnCE;AAAA;AAAA;AArFmB,eAiCZ,UAAU;AAjCE,eA4EZ,eAAsD,CAAC;AA1ElD;AAAA,EAAX,SAAS;AAAA,GAFS,eAEP;AACA;AAAA,EAAX,SAAS;AAAA,GAHS,eAGP;",
6
6
  "names": []
7
7
  }
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk.JDYQ7EFG.js";
7
7
  import {
8
8
  SynIconButton
9
- } from "./chunk.T4L342TL.js";
9
+ } from "./chunk.RKAIJDOM.js";
10
10
  import {
11
11
  LocalizeController
12
12
  } from "./chunk.VCRQ2GII.js";
@@ -18,7 +18,7 @@ import {
18
18
  } from "./chunk.2NT3B5WJ.js";
19
19
  import {
20
20
  SynergyElement
21
- } from "./chunk.UISWB5WE.js";
21
+ } from "./chunk.YBXR5HES.js";
22
22
  import {
23
23
  __decorateClass
24
24
  } from "./chunk.MO2GTRUM.js";
@@ -118,4 +118,4 @@ __decorateClass([
118
118
  export {
119
119
  SynTab
120
120
  };
121
- //# sourceMappingURL=chunk.ZT47ZFJC.js.map
121
+ //# sourceMappingURL=chunk.YEVEQT3G.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SynTab
3
- } from "./chunk.ZT47ZFJC.js";
3
+ } from "./chunk.YEVEQT3G.js";
4
4
 
5
5
  // src/components/tab/tab.ts
6
6
  var tab_default = SynTab;
@@ -9,4 +9,4 @@ SynTab.define("syn-tab");
9
9
  export {
10
10
  tab_default
11
11
  };
12
- //# sourceMappingURL=chunk.S3SB2L64.js.map
12
+ //# sourceMappingURL=chunk.YJPWGTIA.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SynRangeTick
3
- } from "./chunk.66QNJSLF.js";
3
+ } from "./chunk.7W55HRDH.js";
4
4
 
5
5
  // src/components/range-tick/range-tick.ts
6
6
  var range_tick_default = SynRangeTick;
@@ -9,4 +9,4 @@ SynRangeTick.define("syn-range-tick");
9
9
  export {
10
10
  range_tick_default
11
11
  };
12
- //# sourceMappingURL=chunk.ZQZGMCRB.js.map
12
+ //# sourceMappingURL=chunk.YT4ZXOLI.js.map
@@ -1,6 +1,3 @@
1
- import {
2
- textarea_styles_default
3
- } from "./chunk.NDJJVGQL.js";
4
1
  import {
5
2
  defaultValue
6
3
  } from "./chunk.3JDUKQRN.js";
@@ -10,21 +7,24 @@ import {
10
7
  import {
11
8
  FormControlController
12
9
  } from "./chunk.J3GDDM6Q.js";
10
+ import {
11
+ textarea_styles_default
12
+ } from "./chunk.NDJJVGQL.js";
13
13
  import {
14
14
  HasSlotController
15
15
  } from "./chunk.CHFWLQN5.js";
16
- import {
17
- watch
18
- } from "./chunk.SMIMHADA.js";
19
16
  import {
20
17
  enableDefaultSettings
21
18
  } from "./chunk.4MG3QDNW.js";
19
+ import {
20
+ watch
21
+ } from "./chunk.SMIMHADA.js";
22
22
  import {
23
23
  component_styles_default
24
24
  } from "./chunk.2NT3B5WJ.js";
25
25
  import {
26
26
  SynergyElement
27
- } from "./chunk.UISWB5WE.js";
27
+ } from "./chunk.YBXR5HES.js";
28
28
  import {
29
29
  __decorateClass
30
30
  } from "./chunk.MO2GTRUM.js";
@@ -379,4 +379,4 @@ SynTextarea = __decorateClass([
379
379
  export {
380
380
  SynTextarea
381
381
  };
382
- //# sourceMappingURL=chunk.X7M4AZCK.js.map
382
+ //# sourceMappingURL=chunk.Z3WWZV5J.js.map