@synergy-design-system/components 2.20.0-settings.1 → 2.20.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 (343) hide show
  1. package/dist/chunks/{chunk.742PBV5R.js → chunk.2BWRXKN2.js} +8 -14
  2. package/dist/chunks/chunk.2BWRXKN2.js.map +7 -0
  3. package/dist/chunks/{chunk.JBLFNOCX.js → chunk.2IVNHVMH.js} +37 -35
  4. package/dist/chunks/chunk.2IVNHVMH.js.map +7 -0
  5. package/dist/chunks/{chunk.POGMEL53.js → chunk.2MDGY2UP.js} +10 -3
  6. package/dist/chunks/chunk.2MDGY2UP.js.map +7 -0
  7. package/dist/chunks/{chunk.WLHRVKAR.js → chunk.2RO5SDFI.js} +2 -2
  8. package/dist/chunks/{chunk.IBQDKFYH.js → chunk.2TG4SORD.js} +72 -48
  9. package/dist/chunks/chunk.2TG4SORD.js.map +7 -0
  10. package/dist/chunks/{chunk.B2WOBIWW.js → chunk.2UVFBYRY.js} +2 -2
  11. package/dist/chunks/{chunk.UY5AOQHP.js → chunk.3PLJRLWU.js} +2 -2
  12. package/dist/chunks/{chunk.Q33XUREM.js → chunk.3UADS2FG.js} +2 -2
  13. package/dist/chunks/{chunk.QWMAKCAT.js → chunk.4DPLWNXK.js} +2 -2
  14. package/dist/chunks/{chunk.XDM6VD32.js → chunk.4WRP75PK.js} +2 -2
  15. package/dist/chunks/{chunk.DYUCTKM6.js → chunk.52LV42QJ.js} +2 -2
  16. package/dist/chunks/{chunk.VL74BJLP.js → chunk.6SX6G2R5.js} +2 -2
  17. package/dist/chunks/{chunk.EBYGA33B.js → chunk.76VMRLB3.js} +2 -2
  18. package/dist/chunks/{chunk.Z4OFLKEQ.js → chunk.7QSI2KTA.js} +2 -2
  19. package/dist/chunks/{chunk.XSS62TBI.js → chunk.ABFTGQIG.js} +2 -2
  20. package/dist/chunks/{chunk.HNVPPNYZ.js → chunk.ADPRVKM4.js} +2 -2
  21. package/dist/chunks/{chunk.A2JLMFJ4.js → chunk.AYGM4AMZ.js} +2 -2
  22. package/dist/chunks/{chunk.53THUSDO.js → chunk.BCJDEKZV.js} +2 -2
  23. package/dist/chunks/{chunk.BJTRYICX.js → chunk.BN3TNJKZ.js} +2 -2
  24. package/dist/chunks/{chunk.BPZOCAHJ.js → chunk.BNFIYDZO.js} +2 -2
  25. package/dist/chunks/{chunk.4ZPJSGD5.js → chunk.BRJMFR3A.js} +2 -2
  26. package/dist/chunks/{chunk.EVECGQOP.js → chunk.BYCL2SI7.js} +4 -10
  27. package/dist/chunks/chunk.BYCL2SI7.js.map +7 -0
  28. package/dist/chunks/{chunk.7NZ7JAEV.js → chunk.C7WDSHTE.js} +2 -2
  29. package/dist/chunks/{chunk.7XMTQ7P7.js → chunk.CK64L7GU.js} +3 -3
  30. package/dist/chunks/{chunk.JHPSR3AP.js → chunk.D2AMFNCW.js} +2 -2
  31. package/dist/chunks/{chunk.TXQLKFUU.js → chunk.D3QHOCYT.js} +3 -9
  32. package/dist/chunks/chunk.D3QHOCYT.js.map +7 -0
  33. package/dist/chunks/{chunk.UYGCYMDS.js → chunk.DN2RWBXM.js} +2 -2
  34. package/dist/chunks/{chunk.PDAOZ7HN.js → chunk.DSTRFXMO.js} +2 -2
  35. package/dist/chunks/{chunk.E72GLNXI.js → chunk.DYUWNUJK.js} +2 -2
  36. package/dist/chunks/{chunk.LYMHXGME.js → chunk.E6XELP7N.js} +2 -2
  37. package/dist/chunks/{chunk.UXHC3W5U.js → chunk.EAFPSNLJ.js} +6 -6
  38. package/dist/chunks/{chunk.Z2PVOPJK.js → chunk.EFPAPHDN.js} +3 -9
  39. package/dist/chunks/chunk.EFPAPHDN.js.map +7 -0
  40. package/dist/chunks/{chunk.PLSOGFSX.js → chunk.EHRE7REF.js} +2 -2
  41. package/dist/chunks/{chunk.BO7VIZR3.js → chunk.FIYONEFX.js} +8 -14
  42. package/dist/chunks/chunk.FIYONEFX.js.map +7 -0
  43. package/dist/chunks/{chunk.NL4FKYIJ.js → chunk.GFMUULQR.js} +2 -2
  44. package/dist/chunks/{chunk.P5XIUYNV.js → chunk.GLD3DYFW.js} +2 -2
  45. package/dist/chunks/{chunk.XP47Y2SU.js → chunk.HDAUY6QG.js} +2 -2
  46. package/dist/chunks/{chunk.MDG7KZFO.js → chunk.HMVKM2LC.js} +2 -2
  47. package/dist/chunks/{chunk.FLB37Q2Y.js → chunk.I4PP7TTT.js} +6 -6
  48. package/dist/chunks/{chunk.VKRMYKYH.js → chunk.II2KA3OR.js} +10 -4
  49. package/dist/chunks/chunk.II2KA3OR.js.map +7 -0
  50. package/dist/chunks/{chunk.HPQBH3O2.js → chunk.IOP352J7.js} +2 -2
  51. package/dist/chunks/{chunk.MKQXTHWU.js → chunk.JHSYQUJH.js} +2 -2
  52. package/dist/chunks/{chunk.MKQXTHWU.js.map → chunk.JHSYQUJH.js.map} +1 -1
  53. package/dist/chunks/{chunk.HZ3S4J3T.js → chunk.JRBHRPZR.js} +2 -2
  54. package/dist/chunks/{chunk.7467Z6PG.js → chunk.JWKGHB3O.js} +2 -2
  55. package/dist/chunks/{chunk.24C4XJAI.js → chunk.K2HEGEPX.js} +3 -9
  56. package/dist/chunks/chunk.K2HEGEPX.js.map +7 -0
  57. package/dist/chunks/{chunk.QMVBPAZF.js → chunk.KFBZFX3D.js} +2 -2
  58. package/dist/chunks/{chunk.ST3V3ZVP.js → chunk.KKX6OV4A.js} +2 -2
  59. package/dist/chunks/{chunk.YTMSHKEA.js → chunk.LFTDPRZJ.js} +10 -10
  60. package/dist/chunks/{chunk.SXFIFBVM.js → chunk.LGJ6I7QC.js} +4 -10
  61. package/dist/chunks/chunk.LGJ6I7QC.js.map +7 -0
  62. package/dist/chunks/{chunk.OFA3YJLS.js → chunk.LVNDSKZE.js} +2 -2
  63. package/dist/chunks/{chunk.Y4EGILWE.js → chunk.MN76TCGZ.js} +2 -2
  64. package/dist/chunks/{chunk.JNAG6IBY.js → chunk.MPPVRHYV.js} +2 -2
  65. package/dist/chunks/{chunk.XMSHEZ3R.js → chunk.NDXLRMDA.js} +2 -2
  66. package/dist/chunks/{chunk.AQS4YK7Q.js → chunk.NHQHD65V.js} +2 -2
  67. package/dist/chunks/{chunk.Y334QFFZ.js → chunk.NIYWCDQQ.js} +7 -7
  68. package/dist/chunks/{chunk.LZ27X5R6.js → chunk.NOWXA25R.js} +2 -2
  69. package/dist/chunks/{chunk.LYNLLR54.js → chunk.NUOEVS57.js} +9 -9
  70. package/dist/chunks/{chunk.EMGPXY5T.js → chunk.O2E77ZO7.js} +2 -2
  71. package/dist/chunks/{chunk.XY3WHMD7.js → chunk.O4OYBWOG.js} +2 -2
  72. package/dist/chunks/{chunk.XCILIICJ.js → chunk.PLGBAAOJ.js} +8 -14
  73. package/dist/chunks/chunk.PLGBAAOJ.js.map +7 -0
  74. package/dist/chunks/{chunk.DERBT2MN.js → chunk.PMILVAQ7.js} +8 -14
  75. package/dist/chunks/chunk.PMILVAQ7.js.map +7 -0
  76. package/dist/chunks/{chunk.NUCBTPTS.js → chunk.QA7VKYYH.js} +8 -14
  77. package/dist/chunks/chunk.QA7VKYYH.js.map +7 -0
  78. package/dist/chunks/{chunk.S7PAQRVY.js → chunk.RODVBLTN.js} +7 -7
  79. package/dist/chunks/{chunk.TL5RQ2KH.js → chunk.RS7QM77K.js} +2 -2
  80. package/dist/chunks/{chunk.EMU2E2VE.js → chunk.RTK2527V.js} +3 -9
  81. package/dist/chunks/{chunk.EMU2E2VE.js.map → chunk.RTK2527V.js.map} +2 -2
  82. package/dist/chunks/{chunk.HCMNEIRN.js → chunk.RXNHONDB.js} +6 -6
  83. package/dist/chunks/{chunk.BWESHYBN.js → chunk.SG4JU5HT.js} +2 -2
  84. package/dist/chunks/{chunk.WLYLSH3H.js → chunk.SGW6T6AH.js} +2 -2
  85. package/dist/chunks/{chunk.7Y7O45CM.js → chunk.SMOCJ6CY.js} +2 -8
  86. package/dist/chunks/chunk.SMOCJ6CY.js.map +7 -0
  87. package/dist/chunks/{chunk.VOOMTA4X.js → chunk.SUUQ7PWG.js} +2 -2
  88. package/dist/chunks/{chunk.VLE3Q74Y.js → chunk.SVAYQQEQ.js} +2 -2
  89. package/dist/chunks/{chunk.MGET4VXP.js → chunk.TBZ4NGLX.js} +2 -2
  90. package/dist/chunks/{chunk.SYWSXUHZ.js → chunk.TNR3DRP2.js} +2 -2
  91. package/dist/chunks/{chunk.T53XYA43.js → chunk.TVG3CB4W.js} +2 -8
  92. package/dist/chunks/chunk.TVG3CB4W.js.map +7 -0
  93. package/dist/chunks/{chunk.4AKA2QRO.js → chunk.TWUIL4KN.js} +2 -2
  94. package/dist/chunks/{chunk.ZDIDYG6H.js → chunk.U3QINJJN.js} +2 -2
  95. package/dist/chunks/{chunk.24DN2XDS.js → chunk.UAH335JY.js} +7 -13
  96. package/dist/chunks/chunk.UAH335JY.js.map +7 -0
  97. package/dist/chunks/{chunk.5EGFFSLN.js → chunk.UBS3CSG4.js} +2 -2
  98. package/dist/chunks/{chunk.5EGFFSLN.js.map → chunk.UBS3CSG4.js.map} +1 -1
  99. package/dist/chunks/{chunk.SNHVIH7F.js → chunk.UD7TMIOI.js} +2 -2
  100. package/dist/chunks/{chunk.SKA5Y7HA.js → chunk.UI3JVXJO.js} +3 -3
  101. package/dist/chunks/{chunk.7LASULTQ.js → chunk.UTLJPCF6.js} +2 -2
  102. package/dist/chunks/{chunk.BA7XLIED.js → chunk.UVY2BCUE.js} +3 -9
  103. package/dist/chunks/{chunk.BA7XLIED.js.map → chunk.UVY2BCUE.js.map} +2 -2
  104. package/dist/chunks/{chunk.J53UXHXV.js → chunk.VDR7MHDJ.js} +2 -2
  105. package/dist/chunks/{chunk.O7JPMKUW.js → chunk.VNVGDBIY.js} +8 -14
  106. package/dist/chunks/chunk.VNVGDBIY.js.map +7 -0
  107. package/dist/chunks/{chunk.LHNUNBCA.js → chunk.VRIWW3IQ.js} +2 -2
  108. package/dist/chunks/{chunk.3HW4J22U.js → chunk.VSXPNDRV.js} +5 -5
  109. package/dist/chunks/{chunk.AS3TB27D.js → chunk.W4SGQB3N.js} +7 -7
  110. package/dist/chunks/{chunk.R2HFUCJI.js → chunk.WBYNKJUU.js} +18 -24
  111. package/dist/chunks/chunk.WBYNKJUU.js.map +7 -0
  112. package/dist/chunks/{chunk.NM5EI7ZH.js → chunk.WDWOLLU7.js} +2 -2
  113. package/dist/chunks/{chunk.WMUMEYQJ.js → chunk.WSN5XASN.js} +6 -6
  114. package/dist/chunks/{chunk.NN73HBIU.js → chunk.WYXCB5I5.js} +6 -6
  115. package/dist/chunks/{chunk.NN73HBIU.js.map → chunk.WYXCB5I5.js.map} +2 -2
  116. package/dist/chunks/{chunk.YQLTFWYX.js → chunk.XFWY2BGU.js} +2 -2
  117. package/dist/chunks/{chunk.N54SVWTA.js → chunk.YBDH432U.js} +2 -2
  118. package/dist/chunks/{chunk.SWUXKALS.js → chunk.YNJ5L3DR.js} +2 -2
  119. package/dist/chunks/{chunk.2QFNK7XL.js → chunk.YNWZ5ZFI.js} +2 -2
  120. package/dist/chunks/{chunk.IFWSRMUK.js → chunk.YQZ2UGG3.js} +2 -2
  121. package/dist/chunks/{chunk.FAREQGAK.js → chunk.ZK2J5LTO.js} +2 -2
  122. package/dist/chunks/{chunk.AIQ3EJZY.js → chunk.ZR6W46YN.js} +2 -8
  123. package/dist/chunks/chunk.ZR6W46YN.js.map +7 -0
  124. package/dist/chunks/{chunk.7EYHNKMM.js → chunk.ZXWHFKUE.js} +3 -3
  125. package/dist/components/accordion/accordion.component.js +3 -6
  126. package/dist/components/accordion/accordion.js +4 -7
  127. package/dist/components/alert/alert.component.d.ts +2 -0
  128. package/dist/components/alert/alert.component.js +9 -12
  129. package/dist/components/alert/alert.js +10 -13
  130. package/dist/components/badge/badge.component.js +4 -7
  131. package/dist/components/badge/badge.js +5 -8
  132. package/dist/components/breadcrumb/breadcrumb.component.js +7 -7
  133. package/dist/components/breadcrumb/breadcrumb.js +8 -8
  134. package/dist/components/breadcrumb-item/breadcrumb-item.component.js +2 -2
  135. package/dist/components/breadcrumb-item/breadcrumb-item.js +3 -3
  136. package/dist/components/button/button.component.js +8 -11
  137. package/dist/components/button/button.custom.styles.js +1 -1
  138. package/dist/components/button/button.js +9 -12
  139. package/dist/components/button-group/button-group.component.js +2 -2
  140. package/dist/components/button-group/button-group.js +3 -3
  141. package/dist/components/card/card.component.js +2 -2
  142. package/dist/components/card/card.js +3 -3
  143. package/dist/components/checkbox/checkbox.component.js +5 -8
  144. package/dist/components/checkbox/checkbox.js +6 -9
  145. package/dist/components/combobox/combobox.component.js +10 -13
  146. package/dist/components/combobox/combobox.js +11 -14
  147. package/dist/components/details/details.component.js +6 -9
  148. package/dist/components/details/details.js +7 -10
  149. package/dist/components/dialog/dialog.component.js +10 -13
  150. package/dist/components/dialog/dialog.js +11 -14
  151. package/dist/components/divider/divider.component.js +2 -2
  152. package/dist/components/divider/divider.js +3 -3
  153. package/dist/components/drawer/drawer.component.js +9 -12
  154. package/dist/components/drawer/drawer.js +10 -13
  155. package/dist/components/dropdown/dropdown.component.js +5 -5
  156. package/dist/components/dropdown/dropdown.js +6 -6
  157. package/dist/components/file/file.component.js +9 -12
  158. package/dist/components/file/file.js +10 -13
  159. package/dist/components/header/header.component.js +7 -7
  160. package/dist/components/header/header.js +8 -8
  161. package/dist/components/icon/icon.component.js +2 -2
  162. package/dist/components/icon/icon.js +3 -3
  163. package/dist/components/icon-button/icon-button.component.js +3 -6
  164. package/dist/components/icon-button/icon-button.js +4 -7
  165. package/dist/components/input/input.component.js +8 -11
  166. package/dist/components/input/input.custom.styles.js +1 -1
  167. package/dist/components/input/input.js +9 -12
  168. package/dist/components/menu/menu.component.js +2 -2
  169. package/dist/components/menu/menu.js +3 -3
  170. package/dist/components/menu-item/menu-item.component.js +8 -8
  171. package/dist/components/menu-item/menu-item.js +9 -9
  172. package/dist/components/menu-label/menu-label.component.js +3 -3
  173. package/dist/components/menu-label/menu-label.js +4 -4
  174. package/dist/components/nav-item/nav-item.component.js +3 -3
  175. package/dist/components/nav-item/nav-item.js +4 -4
  176. package/dist/components/optgroup/optgroup.component.js +3 -3
  177. package/dist/components/optgroup/optgroup.js +4 -4
  178. package/dist/components/option/option.component.js +5 -5
  179. package/dist/components/option/option.js +6 -6
  180. package/dist/components/popup/popup.component.js +2 -2
  181. package/dist/components/popup/popup.js +3 -3
  182. package/dist/components/prio-nav/prio-nav.component.js +12 -12
  183. package/dist/components/prio-nav/prio-nav.js +13 -13
  184. package/dist/components/progress-bar/progress-bar.component.js +2 -2
  185. package/dist/components/progress-bar/progress-bar.js +3 -3
  186. package/dist/components/progress-ring/progress-ring.component.js +2 -2
  187. package/dist/components/progress-ring/progress-ring.js +3 -3
  188. package/dist/components/radio/radio.component.js +3 -6
  189. package/dist/components/radio/radio.js +4 -7
  190. package/dist/components/radio-button/radio-button.component.js +2 -5
  191. package/dist/components/radio-button/radio-button.js +3 -6
  192. package/dist/components/radio-group/radio-group.component.js +3 -6
  193. package/dist/components/radio-group/radio-group.js +4 -7
  194. package/dist/components/range/range.component.js +5 -8
  195. package/dist/components/range/range.js +6 -9
  196. package/dist/components/range-tick/range-tick.component.js +2 -2
  197. package/dist/components/range-tick/range-tick.js +3 -3
  198. package/dist/components/resize-observer/resize-observer.component.js +2 -2
  199. package/dist/components/select/select.component.js +9 -12
  200. package/dist/components/select/select.js +10 -13
  201. package/dist/components/side-nav/side-nav.component.js +11 -14
  202. package/dist/components/side-nav/side-nav.js +12 -15
  203. package/dist/components/spinner/spinner.component.js +2 -2
  204. package/dist/components/spinner/spinner.js +3 -3
  205. package/dist/components/switch/switch.component.js +2 -5
  206. package/dist/components/switch/switch.js +3 -6
  207. package/dist/components/tab/tab.component.js +6 -9
  208. package/dist/components/tab/tab.js +7 -10
  209. package/dist/components/tab-group/tab-group.component.js +7 -10
  210. package/dist/components/tab-group/tab-group.js +8 -11
  211. package/dist/components/tab-panel/tab-panel.component.js +2 -2
  212. package/dist/components/tab-panel/tab-panel.js +3 -3
  213. package/dist/components/tag/tag.component.js +6 -9
  214. package/dist/components/tag/tag.js +7 -10
  215. package/dist/components/textarea/textarea.component.js +2 -5
  216. package/dist/components/textarea/textarea.js +3 -6
  217. package/dist/components/tooltip/tooltip.component.js +4 -4
  218. package/dist/components/tooltip/tooltip.js +5 -5
  219. package/dist/components/validate/utility.js +2 -2
  220. package/dist/components/validate/validate.component.js +11 -14
  221. package/dist/components/validate/validate.js +12 -15
  222. package/dist/custom-elements.json +183 -167
  223. package/dist/events/events.d.ts +0 -1
  224. package/dist/styles/index.css +1 -1
  225. package/dist/synergy.d.ts +0 -1
  226. package/dist/synergy.js +129 -145
  227. package/dist/vscode.html-custom-data.json +32 -32
  228. package/package.json +17 -18
  229. package/dist/chunks/chunk.24C4XJAI.js.map +0 -7
  230. package/dist/chunks/chunk.24DN2XDS.js.map +0 -7
  231. package/dist/chunks/chunk.742PBV5R.js.map +0 -7
  232. package/dist/chunks/chunk.7Y7O45CM.js.map +0 -7
  233. package/dist/chunks/chunk.AIQ3EJZY.js.map +0 -7
  234. package/dist/chunks/chunk.BO7VIZR3.js.map +0 -7
  235. package/dist/chunks/chunk.DERBT2MN.js.map +0 -7
  236. package/dist/chunks/chunk.EVECGQOP.js.map +0 -7
  237. package/dist/chunks/chunk.IBQDKFYH.js.map +0 -7
  238. package/dist/chunks/chunk.JBLFNOCX.js.map +0 -7
  239. package/dist/chunks/chunk.JSEL4YPW.js +0 -147
  240. package/dist/chunks/chunk.JSEL4YPW.js.map +0 -7
  241. package/dist/chunks/chunk.NUCBTPTS.js.map +0 -7
  242. package/dist/chunks/chunk.O7JPMKUW.js.map +0 -7
  243. package/dist/chunks/chunk.OLCT57R5.js +0 -69
  244. package/dist/chunks/chunk.OLCT57R5.js.map +0 -7
  245. package/dist/chunks/chunk.POGMEL53.js.map +0 -7
  246. package/dist/chunks/chunk.R2HFUCJI.js.map +0 -7
  247. package/dist/chunks/chunk.RSCUHBW3.js +0 -1
  248. package/dist/chunks/chunk.RSCUHBW3.js.map +0 -7
  249. package/dist/chunks/chunk.SXFIFBVM.js.map +0 -7
  250. package/dist/chunks/chunk.T53XYA43.js.map +0 -7
  251. package/dist/chunks/chunk.TXQLKFUU.js.map +0 -7
  252. package/dist/chunks/chunk.UPDPVGHT.js +0 -59
  253. package/dist/chunks/chunk.UPDPVGHT.js.map +0 -7
  254. package/dist/chunks/chunk.VKRMYKYH.js.map +0 -7
  255. package/dist/chunks/chunk.XCILIICJ.js.map +0 -7
  256. package/dist/chunks/chunk.Z2PVOPJK.js.map +0 -7
  257. package/dist/events/syn-default-settings-changed.d.ts +0 -16
  258. package/dist/utilities/defaultSettings/base.d.ts +0 -87
  259. package/dist/utilities/defaultSettings/base.js +0 -10
  260. package/dist/utilities/defaultSettings/base.js.map +0 -7
  261. package/dist/utilities/defaultSettings/decorator.d.ts +0 -12
  262. package/dist/utilities/defaultSettings/decorator.js +0 -10
  263. package/dist/utilities/defaultSettings/decorator.js.map +0 -7
  264. package/dist/utilities/defaultSettings/functions.d.ts +0 -41
  265. package/dist/utilities/defaultSettings/functions.js +0 -21
  266. package/dist/utilities/defaultSettings/functions.js.map +0 -7
  267. package/dist/utilities/defaultSettings/index.d.ts +0 -3
  268. package/dist/utilities/defaultSettings/index.js +0 -20
  269. package/dist/utilities/defaultSettings/index.js.map +0 -7
  270. /package/dist/chunks/{chunk.WLHRVKAR.js.map → chunk.2RO5SDFI.js.map} +0 -0
  271. /package/dist/chunks/{chunk.B2WOBIWW.js.map → chunk.2UVFBYRY.js.map} +0 -0
  272. /package/dist/chunks/{chunk.UY5AOQHP.js.map → chunk.3PLJRLWU.js.map} +0 -0
  273. /package/dist/chunks/{chunk.Q33XUREM.js.map → chunk.3UADS2FG.js.map} +0 -0
  274. /package/dist/chunks/{chunk.QWMAKCAT.js.map → chunk.4DPLWNXK.js.map} +0 -0
  275. /package/dist/chunks/{chunk.XDM6VD32.js.map → chunk.4WRP75PK.js.map} +0 -0
  276. /package/dist/chunks/{chunk.DYUCTKM6.js.map → chunk.52LV42QJ.js.map} +0 -0
  277. /package/dist/chunks/{chunk.VL74BJLP.js.map → chunk.6SX6G2R5.js.map} +0 -0
  278. /package/dist/chunks/{chunk.EBYGA33B.js.map → chunk.76VMRLB3.js.map} +0 -0
  279. /package/dist/chunks/{chunk.Z4OFLKEQ.js.map → chunk.7QSI2KTA.js.map} +0 -0
  280. /package/dist/chunks/{chunk.XSS62TBI.js.map → chunk.ABFTGQIG.js.map} +0 -0
  281. /package/dist/chunks/{chunk.HNVPPNYZ.js.map → chunk.ADPRVKM4.js.map} +0 -0
  282. /package/dist/chunks/{chunk.A2JLMFJ4.js.map → chunk.AYGM4AMZ.js.map} +0 -0
  283. /package/dist/chunks/{chunk.53THUSDO.js.map → chunk.BCJDEKZV.js.map} +0 -0
  284. /package/dist/chunks/{chunk.BJTRYICX.js.map → chunk.BN3TNJKZ.js.map} +0 -0
  285. /package/dist/chunks/{chunk.BPZOCAHJ.js.map → chunk.BNFIYDZO.js.map} +0 -0
  286. /package/dist/chunks/{chunk.4ZPJSGD5.js.map → chunk.BRJMFR3A.js.map} +0 -0
  287. /package/dist/chunks/{chunk.7NZ7JAEV.js.map → chunk.C7WDSHTE.js.map} +0 -0
  288. /package/dist/chunks/{chunk.7XMTQ7P7.js.map → chunk.CK64L7GU.js.map} +0 -0
  289. /package/dist/chunks/{chunk.JHPSR3AP.js.map → chunk.D2AMFNCW.js.map} +0 -0
  290. /package/dist/chunks/{chunk.UYGCYMDS.js.map → chunk.DN2RWBXM.js.map} +0 -0
  291. /package/dist/chunks/{chunk.PDAOZ7HN.js.map → chunk.DSTRFXMO.js.map} +0 -0
  292. /package/dist/chunks/{chunk.E72GLNXI.js.map → chunk.DYUWNUJK.js.map} +0 -0
  293. /package/dist/chunks/{chunk.LYMHXGME.js.map → chunk.E6XELP7N.js.map} +0 -0
  294. /package/dist/chunks/{chunk.UXHC3W5U.js.map → chunk.EAFPSNLJ.js.map} +0 -0
  295. /package/dist/chunks/{chunk.PLSOGFSX.js.map → chunk.EHRE7REF.js.map} +0 -0
  296. /package/dist/chunks/{chunk.NL4FKYIJ.js.map → chunk.GFMUULQR.js.map} +0 -0
  297. /package/dist/chunks/{chunk.P5XIUYNV.js.map → chunk.GLD3DYFW.js.map} +0 -0
  298. /package/dist/chunks/{chunk.XP47Y2SU.js.map → chunk.HDAUY6QG.js.map} +0 -0
  299. /package/dist/chunks/{chunk.MDG7KZFO.js.map → chunk.HMVKM2LC.js.map} +0 -0
  300. /package/dist/chunks/{chunk.FLB37Q2Y.js.map → chunk.I4PP7TTT.js.map} +0 -0
  301. /package/dist/chunks/{chunk.HPQBH3O2.js.map → chunk.IOP352J7.js.map} +0 -0
  302. /package/dist/chunks/{chunk.HZ3S4J3T.js.map → chunk.JRBHRPZR.js.map} +0 -0
  303. /package/dist/chunks/{chunk.7467Z6PG.js.map → chunk.JWKGHB3O.js.map} +0 -0
  304. /package/dist/chunks/{chunk.QMVBPAZF.js.map → chunk.KFBZFX3D.js.map} +0 -0
  305. /package/dist/chunks/{chunk.ST3V3ZVP.js.map → chunk.KKX6OV4A.js.map} +0 -0
  306. /package/dist/chunks/{chunk.YTMSHKEA.js.map → chunk.LFTDPRZJ.js.map} +0 -0
  307. /package/dist/chunks/{chunk.OFA3YJLS.js.map → chunk.LVNDSKZE.js.map} +0 -0
  308. /package/dist/chunks/{chunk.Y4EGILWE.js.map → chunk.MN76TCGZ.js.map} +0 -0
  309. /package/dist/chunks/{chunk.JNAG6IBY.js.map → chunk.MPPVRHYV.js.map} +0 -0
  310. /package/dist/chunks/{chunk.XMSHEZ3R.js.map → chunk.NDXLRMDA.js.map} +0 -0
  311. /package/dist/chunks/{chunk.AQS4YK7Q.js.map → chunk.NHQHD65V.js.map} +0 -0
  312. /package/dist/chunks/{chunk.Y334QFFZ.js.map → chunk.NIYWCDQQ.js.map} +0 -0
  313. /package/dist/chunks/{chunk.LZ27X5R6.js.map → chunk.NOWXA25R.js.map} +0 -0
  314. /package/dist/chunks/{chunk.LYNLLR54.js.map → chunk.NUOEVS57.js.map} +0 -0
  315. /package/dist/chunks/{chunk.EMGPXY5T.js.map → chunk.O2E77ZO7.js.map} +0 -0
  316. /package/dist/chunks/{chunk.XY3WHMD7.js.map → chunk.O4OYBWOG.js.map} +0 -0
  317. /package/dist/chunks/{chunk.S7PAQRVY.js.map → chunk.RODVBLTN.js.map} +0 -0
  318. /package/dist/chunks/{chunk.TL5RQ2KH.js.map → chunk.RS7QM77K.js.map} +0 -0
  319. /package/dist/chunks/{chunk.HCMNEIRN.js.map → chunk.RXNHONDB.js.map} +0 -0
  320. /package/dist/chunks/{chunk.BWESHYBN.js.map → chunk.SG4JU5HT.js.map} +0 -0
  321. /package/dist/chunks/{chunk.WLYLSH3H.js.map → chunk.SGW6T6AH.js.map} +0 -0
  322. /package/dist/chunks/{chunk.VOOMTA4X.js.map → chunk.SUUQ7PWG.js.map} +0 -0
  323. /package/dist/chunks/{chunk.VLE3Q74Y.js.map → chunk.SVAYQQEQ.js.map} +0 -0
  324. /package/dist/chunks/{chunk.MGET4VXP.js.map → chunk.TBZ4NGLX.js.map} +0 -0
  325. /package/dist/chunks/{chunk.SYWSXUHZ.js.map → chunk.TNR3DRP2.js.map} +0 -0
  326. /package/dist/chunks/{chunk.4AKA2QRO.js.map → chunk.TWUIL4KN.js.map} +0 -0
  327. /package/dist/chunks/{chunk.ZDIDYG6H.js.map → chunk.U3QINJJN.js.map} +0 -0
  328. /package/dist/chunks/{chunk.SNHVIH7F.js.map → chunk.UD7TMIOI.js.map} +0 -0
  329. /package/dist/chunks/{chunk.SKA5Y7HA.js.map → chunk.UI3JVXJO.js.map} +0 -0
  330. /package/dist/chunks/{chunk.7LASULTQ.js.map → chunk.UTLJPCF6.js.map} +0 -0
  331. /package/dist/chunks/{chunk.J53UXHXV.js.map → chunk.VDR7MHDJ.js.map} +0 -0
  332. /package/dist/chunks/{chunk.LHNUNBCA.js.map → chunk.VRIWW3IQ.js.map} +0 -0
  333. /package/dist/chunks/{chunk.3HW4J22U.js.map → chunk.VSXPNDRV.js.map} +0 -0
  334. /package/dist/chunks/{chunk.AS3TB27D.js.map → chunk.W4SGQB3N.js.map} +0 -0
  335. /package/dist/chunks/{chunk.NM5EI7ZH.js.map → chunk.WDWOLLU7.js.map} +0 -0
  336. /package/dist/chunks/{chunk.WMUMEYQJ.js.map → chunk.WSN5XASN.js.map} +0 -0
  337. /package/dist/chunks/{chunk.YQLTFWYX.js.map → chunk.XFWY2BGU.js.map} +0 -0
  338. /package/dist/chunks/{chunk.N54SVWTA.js.map → chunk.YBDH432U.js.map} +0 -0
  339. /package/dist/chunks/{chunk.SWUXKALS.js.map → chunk.YNJ5L3DR.js.map} +0 -0
  340. /package/dist/chunks/{chunk.2QFNK7XL.js.map → chunk.YNWZ5ZFI.js.map} +0 -0
  341. /package/dist/chunks/{chunk.IFWSRMUK.js.map → chunk.YQZ2UGG3.js.map} +0 -0
  342. /package/dist/chunks/{chunk.FAREQGAK.js.map → chunk.ZK2J5LTO.js.map} +0 -0
  343. /package/dist/chunks/{chunk.7EYHNKMM.js.map → chunk.ZXWHFKUE.js.map} +0 -0
@@ -1,38 +1,35 @@
1
1
  import {
2
2
  SynSpinner
3
- } from "./chunk.UY5AOQHP.js";
3
+ } from "./chunk.3PLJRLWU.js";
4
4
  import {
5
5
  FormControlController,
6
6
  validValidityState
7
7
  } from "./chunk.AMIQC3O7.js";
8
8
  import {
9
9
  button_custom_styles_default
10
- } from "./chunk.5EGFFSLN.js";
10
+ } from "./chunk.UBS3CSG4.js";
11
11
  import {
12
12
  button_styles_default
13
13
  } from "./chunk.5SQ7NVBX.js";
14
- import {
15
- SynIcon
16
- } from "./chunk.SWUXKALS.js";
17
14
  import {
18
15
  HasSlotController,
19
16
  getTextContent
20
17
  } from "./chunk.WVVQK5TE.js";
21
18
  import {
22
- LocalizeController
23
- } from "./chunk.GIU3H3J3.js";
19
+ SynIcon
20
+ } from "./chunk.YNJ5L3DR.js";
24
21
  import {
25
22
  watch
26
23
  } from "./chunk.74IOULXM.js";
27
24
  import {
28
- enableDefaultSettings
29
- } from "./chunk.OLCT57R5.js";
25
+ LocalizeController
26
+ } from "./chunk.GIU3H3J3.js";
30
27
  import {
31
28
  component_styles_default
32
29
  } from "./chunk.NLYVOJGK.js";
33
30
  import {
34
31
  SynergyElement
35
- } from "./chunk.MKQXTHWU.js";
32
+ } from "./chunk.JHSYQUJH.js";
36
33
  import {
37
34
  __decorateClass
38
35
  } from "./chunk.2GFK6XTO.js";
@@ -288,11 +285,8 @@ __decorateClass([
288
285
  __decorateClass([
289
286
  watch("disabled", { waitUntilFirstUpdate: true })
290
287
  ], SynButton.prototype, "handleDisabledChange", 1);
291
- SynButton = __decorateClass([
292
- enableDefaultSettings("SynButton")
293
- ], SynButton);
294
288
 
295
289
  export {
296
290
  SynButton
297
291
  };
298
- //# sourceMappingURL=chunk.742PBV5R.js.map
292
+ //# sourceMappingURL=chunk.2BWRXKN2.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/button/button.component.ts"],
4
+ "sourcesContent": ["/**\n * ---------------------------------------------------------------------\n * \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n * Removing this comment will prevent it from being managed by it.\n * ---------------------------------------------------------------------\n */\n\n/* eslint-disable */\nimport { classMap } from 'lit/directives/class-map.js';\nimport { FormControlController, validValidityState } from '../../internal/form.js';\nimport { HasSlotController, getTextContent } from '../../internal/slot.js';\nimport { html, literal } from 'lit/static-html.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { LocalizeController } from '../../utilities/localize.js';\nimport { property, query, state } from 'lit/decorators.js';\nimport { watch } from '../../internal/watch.js';\nimport componentStyles from '../../styles/component.styles.js';\nimport SynergyElement from '../../internal/synergy-element.js';\nimport SynIcon from '../icon/icon.component.js';\nimport SynSpinner from '../spinner/spinner.component.js';\nimport styles from './button.styles.js';\nimport customStyles from './button.custom.styles.js';\nimport type { CSSResultGroup } from 'lit';\nimport type { SynergyFormControl } from '../../internal/synergy-element.js';\n\n/**\n * @summary Buttons represent actions that are available to the user.\n * @documentation https://synergy.style/components/button\n * @status stable\n * @since 2.0\n *\n * @dependency syn-icon\n * @dependency syn-spinner\n *\n * @event syn-blur - Emitted when the button loses focus.\n * @event syn-focus - Emitted when the button gains focus.\n * @event syn-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @slot - The button's label.\n * @slot prefix - A presentational prefix icon or similar element.\n * @slot suffix - A presentational suffix icon or similar element.\n *\n * @csspart base - The component's base wrapper.\n * @csspart prefix - The container that wraps the prefix.\n * @csspart label - The button's label.\n * @csspart suffix - The container that wraps the suffix.\n * @csspart caret - The button's caret icon, an `<syn-icon>` element.\n * @csspart spinner - The spinner that shows when the button is in the loading state.\n */\nexport default class SynButton extends SynergyElement implements SynergyFormControl {\n static styles: CSSResultGroup = [componentStyles, styles, customStyles];\n static dependencies = {\n 'syn-icon': SynIcon,\n 'syn-spinner': SynSpinner\n };\n\n private readonly formControlController = new FormControlController(this, {\n assumeInteractionOn: ['click']\n });\n\n private readonly hasSlotController = new HasSlotController(this, '[default]', 'prefix', 'suffix');\n private readonly localize = new LocalizeController(this);\n\n @query('.button') button: HTMLButtonElement | HTMLLinkElement;\n @query('slot:not([name])') defaultSlot: HTMLSlotElement;\n\n @state() private iconOnly = false;\n\n @state() private hasFocus = false;\n @state() invalid = false;\n @property() title = ''; // make reactive to pass through\n\n /** The button's theme variant. */\n @property({ reflect: true }) variant: 'filled' | 'outline' | 'text' = 'outline';\n\n /** The button's size. */\n @property({ reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';\n\n /** Draws the button with a caret. Used to indicate that the button triggers a dropdown menu or similar behavior. */\n @property({ type: Boolean, reflect: true }) caret = false;\n\n /** Disables the button. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Draws the button in a loading state. */\n @property({ type: Boolean, reflect: true }) loading = false;\n\n /**\n * The type of button. Note that the default value is `button` instead of `submit`, which is opposite of how native\n * `<button>` elements behave. When the type is `submit`, the button will submit the surrounding form.\n */\n @property() type: 'button' | 'submit' | 'reset' = 'button';\n\n /**\n * The name of the button, submitted as a name/value pair with form data, but only when this button is the submitter.\n * This attribute is ignored when `href` is present.\n */\n @property() name = '';\n\n /**\n * The value of the button, submitted as a pair with the button's name as part of the form data, but only when this\n * button is the submitter. This attribute is ignored when `href` is present.\n */\n @property() value = '';\n\n /** When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>`. */\n @property() href = '';\n\n /** Tells the browser where to open the link. Only used when `href` is present. */\n @property() target: '_blank' | '_parent' | '_self' | '_top';\n\n /**\n * When using `href`, this attribute will map to the underlying link's `rel` attribute. Unlike regular links, the\n * default is `noreferrer noopener` to prevent security exploits. However, if you're using `target` to point to a\n * specific tab/window, this will prevent that from working correctly. You can remove or change the default value by\n * setting the attribute to an empty string or a value of your choice, respectively.\n */\n @property() rel = 'noreferrer noopener';\n\n /** Tells the browser to download the linked file as this filename. Only used when `href` is present. */\n @property() download?: string;\n\n /**\n * The \"form owner\" to associate the button with. If omitted, the closest containing form will be used instead. The\n * value of this attribute must be an id of a form in the same document or shadow root as the button.\n */\n @property() form: string;\n\n /** Used to override the form owner's `action` attribute. */\n @property({ attribute: 'formaction' }) formAction: string;\n\n /** Used to override the form owner's `enctype` attribute. */\n @property({ attribute: 'formenctype' })\n formEnctype: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';\n\n /** Used to override the form owner's `method` attribute. */\n @property({ attribute: 'formmethod' }) formMethod: 'post' | 'get';\n\n /** Used to override the form owner's `novalidate` attribute. */\n @property({ attribute: 'formnovalidate', type: Boolean }) formNoValidate: boolean;\n\n /** Used to override the form owner's `target` attribute. */\n @property({ attribute: 'formtarget' }) formTarget: '_self' | '_blank' | '_parent' | '_top' | string;\n\n /** Gets the validity state object */\n get validity() {\n if (this.isButton()) {\n return (this.button as HTMLButtonElement).validity;\n }\n\n return validValidityState;\n }\n\n /** Gets the validation message */\n get validationMessage() {\n if (this.isButton()) {\n return (this.button as HTMLButtonElement).validationMessage;\n }\n\n return '';\n }\n\n firstUpdated() {\n if (this.isButton()) {\n this.formControlController.updateValidity();\n }\n }\n\n private handleBlur() {\n this.hasFocus = false;\n this.emit('syn-blur');\n }\n\n private handleFocus() {\n this.hasFocus = true;\n this.emit('syn-focus');\n }\n\n private handleClick() {\n if (this.type === 'submit') {\n this.formControlController.submit(this);\n }\n\n if (this.type === 'reset') {\n this.formControlController.reset(this);\n }\n }\n\n private handleInvalid(event: Event) {\n this.formControlController.setValidity(false);\n this.formControlController.emitInvalidEvent(event);\n }\n\n private isButton() {\n return this.href ? false : true;\n }\n\n private isLink() {\n return this.href ? true : false;\n }\n\n private handleSlotChange() {\n const textContent = getTextContent(this.defaultSlot).trim();\n const assignedElements = this.defaultSlot.assignedElements({flatten: true})\n const iconOnlyElement = assignedElements.length === 1 && assignedElements[0].tagName.toLowerCase() === 'syn-icon';\n\n this.iconOnly = iconOnlyElement && textContent === '';\n }\n\n @watch('disabled', { waitUntilFirstUpdate: true })\n handleDisabledChange() {\n if (this.isButton()) {\n // Disabled form controls are always valid\n this.formControlController.setValidity(this.disabled);\n }\n }\n\n /** Simulates a click on the button. */\n click() {\n this.button.click();\n }\n\n /** Sets focus on the button. */\n focus(options?: FocusOptions) {\n this.button.focus(options);\n }\n\n /** Removes focus from the button. */\n blur() {\n this.button.blur();\n }\n\n /** Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid. */\n checkValidity() {\n if (this.isButton()) {\n return (this.button as HTMLButtonElement).checkValidity();\n }\n\n return true;\n }\n\n /** Gets the associated form, if one exists. */\n getForm(): HTMLFormElement | null {\n return this.formControlController.getForm();\n }\n\n /** Checks for validity and shows the browser's validation message if the control is invalid. */\n reportValidity() {\n if (this.isButton()) {\n return (this.button as HTMLButtonElement).reportValidity();\n }\n\n return true;\n }\n\n /** Sets a custom validation message. Pass an empty string to restore validity. */\n setCustomValidity(message: string) {\n if (this.isButton()) {\n (this.button as HTMLButtonElement).setCustomValidity(message);\n this.formControlController.updateValidity();\n }\n }\n\n render() {\n const isLink = this.isLink();\n const tag = isLink ? literal`a` : literal`button`;\n\n /* eslint-disable lit/no-invalid-html */\n /* eslint-disable lit/binding-positions */\n return html`\n <${tag}\n part=\"base\"\n class=${classMap({\n button: true,\n 'button--primary': true,\n 'button--text': this.variant === 'text',\n 'button--small': this.size === 'small',\n 'button--medium': this.size === 'medium',\n 'button--large': this.size === 'large',\n 'button--caret': this.caret,\n 'button--disabled': this.disabled,\n 'button--focused': this.hasFocus,\n 'button--loading': this.loading,\n 'button--filled': this.variant === 'filled',\n 'button--outline': this.variant === 'outline',\n 'button--rtl': this.localize.dir() === 'rtl',\n 'button--has-label': this.hasSlotController.test('[default]'),\n 'button--has-prefix': this.hasSlotController.test('prefix'),\n 'button--has-suffix': this.hasSlotController.test('suffix')\n })}\n ?disabled=${ifDefined(isLink ? undefined : this.disabled)}\n type=${ifDefined(isLink ? undefined : this.type)}\n title=${this.title /* An empty title prevents browser validation tooltips from appearing on hover */}\n name=${ifDefined(isLink ? undefined : this.name)}\n value=${ifDefined(isLink ? undefined : this.value)}\n href=${ifDefined(isLink && !this.disabled ? this.href : undefined)}\n target=${ifDefined(isLink ? this.target : undefined)}\n download=${ifDefined(isLink ? this.download : undefined)}\n rel=${ifDefined(isLink ? this.rel : undefined)}\n role=${ifDefined(isLink ? undefined : 'button')}\n aria-disabled=${this.disabled ? 'true' : 'false'}\n tabindex=${this.disabled ? '-1' : '0'}\n @blur=${this.handleBlur}\n @focus=${this.handleFocus}\n @invalid=${this.isButton() ? this.handleInvalid : null}\n @click=${this.handleClick}\n >\n <slot name=\"prefix\" part=\"prefix\" class=\"button__prefix\"></slot>\n <slot part=\"label\" class=${classMap({ 'button__label': true, 'button__icon-only': this.iconOnly })} @slotchange=${this.handleSlotChange}></slot>\n <slot name=\"suffix\" part=\"suffix\" class=\"button__suffix\"></slot>\n ${\n this.caret ? html` <syn-icon part=\"caret\" class=\"button__caret\" library=\"system\" name=\"caret\"></syn-icon> ` : ''\n }\n ${this.loading ? html`<syn-spinner part=\"spinner\"></syn-spinner>` : ''}\n </${tag}>\n `;\n /* eslint-enable lit/no-invalid-html */\n /* eslint-enable lit/binding-positions */\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SynIconButton
3
- } from "./chunk.EMU2E2VE.js";
3
+ } from "./chunk.RTK2527V.js";
4
4
  import {
5
5
  waitForEvent
6
6
  } from "./chunk.C2ENQBPM.js";
@@ -16,26 +16,23 @@ import {
16
16
  HasSlotController
17
17
  } from "./chunk.WVVQK5TE.js";
18
18
  import {
19
- LocalizeController
20
- } from "./chunk.GIU3H3J3.js";
19
+ alert_custom_styles_default
20
+ } from "./chunk.JRYXECAY.js";
21
+ import {
22
+ alert_styles_default
23
+ } from "./chunk.IFXKIEOU.js";
21
24
  import {
22
25
  watch
23
26
  } from "./chunk.74IOULXM.js";
24
27
  import {
25
- enableDefaultSettings
26
- } from "./chunk.OLCT57R5.js";
28
+ LocalizeController
29
+ } from "./chunk.GIU3H3J3.js";
27
30
  import {
28
31
  component_styles_default
29
32
  } from "./chunk.NLYVOJGK.js";
30
33
  import {
31
34
  SynergyElement
32
- } from "./chunk.MKQXTHWU.js";
33
- import {
34
- alert_custom_styles_default
35
- } from "./chunk.JRYXECAY.js";
36
- import {
37
- alert_styles_default
38
- } from "./chunk.IFXKIEOU.js";
35
+ } from "./chunk.JHSYQUJH.js";
39
36
  import {
40
37
  __decorateClass
41
38
  } from "./chunk.2GFK6XTO.js";
@@ -44,8 +41,7 @@ import {
44
41
  import { classMap } from "lit/directives/class-map.js";
45
42
  import { html } from "lit";
46
43
  import { property, query, state } from "lit/decorators.js";
47
- var toastStack = Object.assign(document.createElement("div"), { className: "syn-toast-stack" });
48
- var SynAlert = class extends SynergyElement {
44
+ var _SynAlert = class _SynAlert extends SynergyElement {
49
45
  constructor() {
50
46
  super(...arguments);
51
47
  this.hasSlotController = new HasSlotController(this, "icon", "suffix");
@@ -56,6 +52,14 @@ var SynAlert = class extends SynergyElement {
56
52
  this.duration = Infinity;
57
53
  this.remainingTime = this.duration;
58
54
  }
55
+ static get toastStack() {
56
+ if (!this.currentToastStack) {
57
+ this.currentToastStack = Object.assign(document.createElement("div"), {
58
+ className: "syn-toast-stack"
59
+ });
60
+ }
61
+ return this.currentToastStack;
62
+ }
59
63
  firstUpdated() {
60
64
  this.base.hidden = !this.open;
61
65
  }
@@ -150,10 +154,10 @@ var SynAlert = class extends SynergyElement {
150
154
  async toast() {
151
155
  return new Promise((resolve) => {
152
156
  this.handleCountdownChange();
153
- if (toastStack.parentElement === null) {
154
- document.body.append(toastStack);
157
+ if (_SynAlert.toastStack.parentElement === null) {
158
+ document.body.append(_SynAlert.toastStack);
155
159
  }
156
- toastStack.appendChild(this);
160
+ _SynAlert.toastStack.appendChild(this);
157
161
  requestAnimationFrame(() => {
158
162
  this.clientWidth;
159
163
  this.show();
@@ -161,10 +165,10 @@ var SynAlert = class extends SynergyElement {
161
165
  this.addEventListener(
162
166
  "syn-after-hide",
163
167
  () => {
164
- toastStack.removeChild(this);
168
+ _SynAlert.toastStack.removeChild(this);
165
169
  resolve();
166
- if (toastStack.querySelector("syn-alert") === null) {
167
- toastStack.remove();
170
+ if (_SynAlert.toastStack.querySelector("syn-alert") === null) {
171
+ _SynAlert.toastStack.remove();
168
172
  }
169
173
  },
170
174
  { once: true }
@@ -227,38 +231,36 @@ var SynAlert = class extends SynergyElement {
227
231
  `;
228
232
  }
229
233
  };
230
- SynAlert.styles = [component_styles_default, alert_styles_default, alert_custom_styles_default];
231
- SynAlert.dependencies = { "syn-icon-button": SynIconButton };
234
+ _SynAlert.styles = [component_styles_default, alert_styles_default, alert_custom_styles_default];
235
+ _SynAlert.dependencies = { "syn-icon-button": SynIconButton };
232
236
  __decorateClass([
233
237
  query('[part~="base"]')
234
- ], SynAlert.prototype, "base", 2);
238
+ ], _SynAlert.prototype, "base", 2);
235
239
  __decorateClass([
236
240
  query(".alert__countdown-elapsed")
237
- ], SynAlert.prototype, "countdownElement", 2);
241
+ ], _SynAlert.prototype, "countdownElement", 2);
238
242
  __decorateClass([
239
243
  property({ type: Boolean, reflect: true })
240
- ], SynAlert.prototype, "open", 2);
244
+ ], _SynAlert.prototype, "open", 2);
241
245
  __decorateClass([
242
246
  property({ type: Boolean, reflect: true })
243
- ], SynAlert.prototype, "closable", 2);
247
+ ], _SynAlert.prototype, "closable", 2);
244
248
  __decorateClass([
245
249
  property({ reflect: true })
246
- ], SynAlert.prototype, "variant", 2);
250
+ ], _SynAlert.prototype, "variant", 2);
247
251
  __decorateClass([
248
252
  property({ type: Number })
249
- ], SynAlert.prototype, "duration", 2);
253
+ ], _SynAlert.prototype, "duration", 2);
250
254
  __decorateClass([
251
255
  state()
252
- ], SynAlert.prototype, "remainingTime", 2);
256
+ ], _SynAlert.prototype, "remainingTime", 2);
253
257
  __decorateClass([
254
258
  watch("open", { waitUntilFirstUpdate: true })
255
- ], SynAlert.prototype, "handleOpenChange", 1);
259
+ ], _SynAlert.prototype, "handleOpenChange", 1);
256
260
  __decorateClass([
257
261
  watch("duration")
258
- ], SynAlert.prototype, "handleDurationChange", 1);
259
- SynAlert = __decorateClass([
260
- enableDefaultSettings("SynAlert")
261
- ], SynAlert);
262
+ ], _SynAlert.prototype, "handleDurationChange", 1);
263
+ var SynAlert = _SynAlert;
262
264
  setDefaultAnimation("alert.show", {
263
265
  keyframes: [
264
266
  { opacity: 0, scale: 0.8 },
@@ -277,4 +279,4 @@ setDefaultAnimation("alert.hide", {
277
279
  export {
278
280
  SynAlert
279
281
  };
280
- //# sourceMappingURL=chunk.JBLFNOCX.js.map
282
+ //# sourceMappingURL=chunk.2IVNHVMH.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/alert/alert.component.ts"],
4
+ "sourcesContent": ["/**\n * ---------------------------------------------------------------------\n * \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n * Removing this comment will prevent it from being managed by it.\n * ---------------------------------------------------------------------\n */\n\n/* eslint-disable */\nimport { animateTo, stopAnimations } from '../../internal/animate.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { getAnimation, setDefaultAnimation } from '../../utilities/animation-registry.js';\nimport { HasSlotController } from '../../internal/slot.js';\nimport { html } from 'lit';\nimport { LocalizeController } from '../../utilities/localize.js';\nimport { property, query, state } from 'lit/decorators.js';\nimport { waitForEvent } from '../../internal/event.js';\nimport { watch } from '../../internal/watch.js';\nimport componentStyles from '../../styles/component.styles.js';\nimport SynergyElement from '../../internal/synergy-element.js';\nimport SynIconButton from '../icon-button/icon-button.component.js';\nimport styles from './alert.styles.js';\nimport customStyles from './alert.custom.styles.js';\nimport type { CSSResultGroup } from 'lit';\n\n/**\n * @summary Alerts are used to display important messages inline or as toast notifications.\n * @documentation https://synergy.style/components/alert\n * @status stable\n * @since 2.0\n *\n * @dependency syn-icon-button\n *\n * @slot - The alert's main content.\n * @slot icon - An icon to show in the alert. Works best with `<syn-icon>`.\n *\n * @event syn-show - Emitted when the alert opens.\n * @event syn-after-show - Emitted after the alert opens and all animations are complete.\n * @event syn-hide - Emitted when the alert closes.\n * @event syn-after-hide - Emitted after the alert closes and all animations are complete.\n *\n * @csspart base - The component's base wrapper.\n * @csspart icon - The container that wraps the optional icon.\n * @csspart message - The container that wraps the alert's main content.\n * @csspart close-button - The close button, an `<syn-icon-button>`.\n * @csspart close-button__base - The close button's exported `base` part.\n *\n * @animation alert.show - The animation to use when showing the alert.\n * @animation alert.hide - The animation to use when hiding the alert.\n */\nexport default class SynAlert extends SynergyElement {\n static styles: CSSResultGroup = [componentStyles, styles, customStyles];\n static dependencies = { 'syn-icon-button': SynIconButton };\n\n private autoHideTimeout: number;\n private remainingTimeInterval: number;\n private countdownAnimation?: Animation;\n private readonly hasSlotController = new HasSlotController(this, 'icon', 'suffix');\n private readonly localize = new LocalizeController(this);\n\n private static currentToastStack: HTMLDivElement;\n\n private static get toastStack() {\n if (!this.currentToastStack) {\n this.currentToastStack = Object.assign(document.createElement('div'), {\n className: 'syn-toast-stack'\n });\n }\n return this.currentToastStack;\n }\n\n @query('[part~=\"base\"]') base: HTMLElement;\n\n @query('.alert__countdown-elapsed') countdownElement: HTMLElement;\n\n /**\n * Indicates whether or not the alert is open. You can toggle this attribute to show and hide the alert, or you can\n * use the `show()` and `hide()` methods and this attribute will reflect the alert's open state.\n */\n @property({ type: Boolean, reflect: true }) open = false;\n\n /** Enables a close button that allows the user to dismiss the alert. */\n @property({ type: Boolean, reflect: true }) closable = false;\n\n /** The alert's theme variant. */\n @property({ reflect: true }) variant: 'primary' | 'success' | 'neutral' | 'warning' | 'danger' = 'primary';\n\n /**\n * The length of time, in milliseconds, the alert will show before closing itself. If the user interacts with\n * the alert before it closes (e.g. moves the mouse over it), the timer will restart. Defaults to `Infinity`, meaning\n * the alert will not close on its own.\n */\n @property({ type: Number }) duration = Infinity;\n\n /**\n * Enables a countdown that indicates the remaining time the alert will be displayed.\n * Typically used to indicate the remaining time before a whole app refresh.\n */\n private countdown? : 'rtl' | 'ltr';\n\n @state() private remainingTime = this.duration;\n\n firstUpdated() {\n this.base.hidden = !this.open;\n }\n\n private restartAutoHide() {\n this.handleCountdownChange();\n clearTimeout(this.autoHideTimeout);\n clearInterval(this.remainingTimeInterval);\n if (this.open && this.duration < Infinity) {\n this.autoHideTimeout = window.setTimeout(() => this.hide(), this.duration);\n this.remainingTime = this.duration;\n this.remainingTimeInterval = window.setInterval(() => {\n this.remainingTime -= 100;\n }, 100);\n }\n }\n\n private pauseAutoHide() {\n this.countdownAnimation?.pause();\n clearTimeout(this.autoHideTimeout);\n clearInterval(this.remainingTimeInterval);\n }\n\n private resumeAutoHide() {\n if (this.duration < Infinity) {\n this.autoHideTimeout = window.setTimeout(() => this.hide(), this.remainingTime);\n this.remainingTimeInterval = window.setInterval(() => {\n this.remainingTime -= 100;\n }, 100);\n this.countdownAnimation?.play();\n }\n }\n\n private handleCountdownChange() {\n if (this.open && this.duration < Infinity && this.countdown) {\n const { countdownElement } = this;\n const start = '100%';\n const end = '0';\n this.countdownAnimation = countdownElement.animate([{ width: start }, { width: end }], {\n duration: this.duration,\n easing: 'linear'\n });\n }\n }\n\n private handleCloseClick() {\n this.hide();\n }\n\n @watch('open', { waitUntilFirstUpdate: true })\n async handleOpenChange() {\n if (this.open) {\n // Show\n this.emit('syn-show');\n\n if (this.duration < Infinity) {\n this.restartAutoHide();\n }\n\n await stopAnimations(this.base);\n this.base.hidden = false;\n const { keyframes, options } = getAnimation(this, 'alert.show', { dir: this.localize.dir() });\n await animateTo(this.base, keyframes, options);\n\n this.emit('syn-after-show');\n } else {\n // Hide\n this.emit('syn-hide');\n\n clearTimeout(this.autoHideTimeout);\n clearInterval(this.remainingTimeInterval);\n\n await stopAnimations(this.base);\n const { keyframes, options } = getAnimation(this, 'alert.hide', { dir: this.localize.dir() });\n await animateTo(this.base, keyframes, options);\n this.base.hidden = true;\n\n this.emit('syn-after-hide');\n }\n }\n\n @watch('duration')\n handleDurationChange() {\n this.restartAutoHide();\n }\n\n /** Shows the alert. */\n async show() {\n if (this.open) {\n return undefined;\n }\n\n this.open = true;\n return waitForEvent(this, 'syn-after-show');\n }\n\n /** Hides the alert */\n async hide() {\n if (!this.open) {\n return undefined;\n }\n\n this.open = false;\n return waitForEvent(this, 'syn-after-hide');\n }\n\n /**\n * Displays the alert as a toast notification. This will move the alert out of its position in the DOM and, when\n * dismissed, it will be removed from the DOM completely. By storing a reference to the alert, you can reuse it by\n * calling this method again. The returned promise will resolve after the alert is hidden.\n */\n async toast() {\n return new Promise<void>(resolve => {\n this.handleCountdownChange();\n if (SynAlert.toastStack.parentElement === null) {\n document.body.append(SynAlert.toastStack);\n }\n\n SynAlert.toastStack.appendChild(this);\n\n // Wait for the toast stack to render\n requestAnimationFrame(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- force a reflow for the initial transition\n this.clientWidth;\n this.show();\n });\n\n this.addEventListener(\n 'syn-after-hide',\n () => {\n SynAlert.toastStack.removeChild(this);\n resolve();\n\n // Remove the toast stack from the DOM when there are no more alerts\n if (SynAlert.toastStack.querySelector('syn-alert') === null) {\n SynAlert.toastStack.remove();\n }\n },\n { once: true }\n );\n });\n }\n\n render() {\n return html`\n <div\n part=\"base\"\n class=${classMap({\n alert: true,\n 'alert--open': this.open,\n 'alert--closable': this.closable,\n 'alert--has-icon': this.hasSlotController.test('icon'),\n 'alert--primary': this.variant === 'primary',\n 'alert--success': this.variant === 'success',\n 'alert--neutral': this.variant === 'neutral',\n 'alert--warning': this.variant === 'warning',\n 'alert--danger': this.variant === 'danger'\n })}\n role=\"alert\"\n aria-hidden=${this.open ? 'false' : 'true'}\n @mouseenter=${this.pauseAutoHide}\n @mouseleave=${this.resumeAutoHide}\n >\n <div part=\"icon\" class=\"alert__icon\">\n <slot name=\"icon\"></slot>\n </div>\n\n <div part=\"message\" class=\"alert__message\" aria-live=\"polite\">\n <slot></slot>\n </div>\n\n ${this.closable\n ? html`\n <syn-icon-button\n part=\"close-button\"\n exportparts=\"base:close-button__base\"\n class=\"alert__close-button\"\n name=\"x-lg\"\n library=\"system\"\n label=${this.localize.term('close')}\n @click=${this.handleCloseClick}\n ></syn-icon-button>\n `\n : ''}\n\n <div role=\"timer\" class=\"alert__timer\">${this.remainingTime}</div>\n\n ${this.countdown\n ? html`\n <div\n class=${classMap({\n alert__countdown: true,\n 'alert__countdown--ltr': this.countdown === 'ltr'\n })}\n >\n <div class=\"alert__countdown-elapsed\"></div>\n </div>\n `\n : ''}\n </div>\n `;\n }\n}\n\nsetDefaultAnimation('alert.show', {\n keyframes: [\n { opacity: 0, scale: 0.8 },\n { opacity: 1, scale: 1 }\n ],\n options: { duration: 250, easing: 'ease' }\n});\n\nsetDefaultAnimation('alert.hide', {\n keyframes: [\n { opacity: 1, scale: 1 },\n { opacity: 0, scale: 0.8 }\n ],\n options: { duration: 250, easing: 'ease' }\n});\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -47,8 +47,15 @@ function isTabbable(el) {
47
47
  if (el.closest("[inert]")) {
48
48
  return false;
49
49
  }
50
- if (tag === "input" && el.getAttribute("type") === "radio" && !el.hasAttribute("checked")) {
51
- return false;
50
+ if (tag === "input" && el.getAttribute("type") === "radio") {
51
+ const rootNode = el.getRootNode();
52
+ const findRadios = `input[type='radio'][name="${el.getAttribute("name")}"]`;
53
+ const firstChecked = rootNode.querySelector(`${findRadios}:checked`);
54
+ if (firstChecked) {
55
+ return firstChecked === el;
56
+ }
57
+ const firstRadio = rootNode.querySelector(findRadios);
58
+ return firstRadio === el;
52
59
  }
53
60
  if (!isVisible(el)) {
54
61
  return false;
@@ -129,4 +136,4 @@ export {
129
136
  getTabbableBoundary,
130
137
  getTabbableElements
131
138
  };
132
- //# sourceMappingURL=chunk.POGMEL53.js.map
139
+ //# sourceMappingURL=chunk.2MDGY2UP.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/internal/tabbable.ts"],
4
+ "sourcesContent": ["/**\n * ---------------------------------------------------------------------\n * \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n * Removing this comment will prevent it from being managed by it.\n * ---------------------------------------------------------------------\n */\n\n/* eslint-disable */\n// Cached compute style calls. This is specifically for browsers that dont support `checkVisibility()`.\n// computedStyle calls are \"live\" so they only need to be retrieved once for an element.\nconst computedStyleMap = new WeakMap<Element, CSSStyleDeclaration>();\n\nfunction getCachedComputedStyle(el: HTMLElement): CSSStyleDeclaration {\n let computedStyle: undefined | CSSStyleDeclaration = computedStyleMap.get(el);\n\n if (!computedStyle) {\n computedStyle = window.getComputedStyle(el, null);\n computedStyleMap.set(el, computedStyle);\n }\n\n return computedStyle;\n}\n\nfunction isVisible(el: HTMLElement): boolean {\n // This is the fastest check, but isn't supported in Safari.\n if (typeof el.checkVisibility === 'function') {\n // Opacity is focusable, visibility is not.\n return el.checkVisibility({ checkOpacity: false, checkVisibilityCSS: true });\n }\n\n // Fallback \"polyfill\" for \"checkVisibility\"\n const computedStyle = getCachedComputedStyle(el);\n\n return computedStyle.visibility !== 'hidden' && computedStyle.display !== 'none';\n}\n\n// While this behavior isn't standard in Safari / Chrome yet, I think it's the most reasonable\n// way of handling tabbable overflow areas. Browser sniffing seems gross, and it's the most\n// accessible way of handling overflow areas. [Konnor]\nfunction isOverflowingAndTabbable(el: HTMLElement): boolean {\n const computedStyle = getCachedComputedStyle(el);\n\n const { overflowY, overflowX } = computedStyle;\n\n if (overflowY === 'scroll' || overflowX === 'scroll') {\n return true;\n }\n\n if (overflowY !== 'auto' || overflowX !== 'auto') {\n return false;\n }\n\n // Always overflow === \"auto\" by this point\n const isOverflowingY = el.scrollHeight > el.clientHeight;\n\n if (isOverflowingY && overflowY === 'auto') {\n return true;\n }\n\n const isOverflowingX = el.scrollWidth > el.clientWidth;\n\n if (isOverflowingX && overflowX === 'auto') {\n return true;\n }\n\n return false;\n}\n\n/** Determines if the specified element is tabbable using heuristics inspired by https://github.com/focus-trap/tabbable */\nfunction isTabbable(el: HTMLElement) {\n const tag = el.tagName.toLowerCase();\n\n const tabindex = Number(el.getAttribute('tabindex'));\n const hasTabindex = el.hasAttribute('tabindex');\n\n // elements with a tabindex attribute that is either NaN or <= -1 are not tabbable\n if (hasTabindex && (isNaN(tabindex) || tabindex <= -1)) {\n return false;\n }\n\n // Elements with a disabled attribute are not tabbable\n if (el.hasAttribute('disabled')) {\n return false;\n }\n\n // If any parents have \"inert\", we aren't \"tabbable\"\n if (el.closest('[inert]')) {\n return false;\n }\n\n if (tag === 'input' && el.getAttribute('type') === 'radio') {\n const rootNode = el.getRootNode() as HTMLElement;\n\n const findRadios = `input[type='radio'][name=\"${el.getAttribute('name')}\"]`;\n const firstChecked = rootNode.querySelector(`${findRadios}:checked`);\n\n if (firstChecked) {\n return firstChecked === el;\n }\n\n const firstRadio = rootNode.querySelector(findRadios);\n\n return firstRadio === el;\n }\n\n if (!isVisible(el)) {\n return false;\n }\n\n // Audio and video elements with the controls attribute are tabbable\n if ((tag === 'audio' || tag === 'video') && el.hasAttribute('controls')) {\n return true;\n }\n\n // Elements with a tabindex other than -1 are tabbable\n if (el.hasAttribute('tabindex')) {\n return true;\n }\n\n // Elements with a contenteditable attribute are tabbable\n if (el.hasAttribute('contenteditable') && el.getAttribute('contenteditable') !== 'false') {\n return true;\n }\n\n // At this point, the following elements are considered tabbable\n const isNativelyTabbable = [\n 'button',\n 'input',\n 'select',\n 'textarea',\n 'a',\n 'audio',\n 'video',\n 'summary',\n 'iframe'\n ].includes(tag);\n\n if (isNativelyTabbable) {\n return true;\n }\n\n // We save the overflow checks for last, because they're the most expensive\n return isOverflowingAndTabbable(el);\n}\n\n/**\n * Returns the first and last bounding elements that are tabbable. This is more performant than checking every single\n * element because it short-circuits after finding the first and last ones.\n */\nexport function getTabbableBoundary(root: HTMLElement | ShadowRoot) {\n const tabbableElements = getTabbableElements(root);\n\n // Find the first and last tabbable elements\n const start = tabbableElements[0] ?? null;\n const end = tabbableElements[tabbableElements.length - 1] ?? null;\n\n return { start, end };\n}\n\n/**\n * This looks funky. Basically a slot's children will always be picked up *if* they're within the `root` element.\n * However, there is an edge case when, if the `root` is wrapped by another shadow DOM, it won't grab the children.\n * This fixes that fun edge case.\n */\nfunction getSlottedChildrenOutsideRootElement(slotElement: HTMLSlotElement, root: HTMLElement | ShadowRoot) {\n return (slotElement.getRootNode({ composed: true }) as ShadowRoot | null)?.host !== root;\n}\n\nexport function getTabbableElements(root: HTMLElement | ShadowRoot) {\n const walkedEls = new WeakMap();\n const tabbableElements: HTMLElement[] = [];\n\n function walk(el: HTMLElement | ShadowRoot) {\n if (el instanceof Element) {\n // if the element has \"inert\" we can just no-op it.\n if (el.hasAttribute('inert') || el.closest('[inert]')) {\n return;\n }\n\n if (walkedEls.has(el)) {\n return;\n }\n walkedEls.set(el, true);\n\n if (!tabbableElements.includes(el) && isTabbable(el)) {\n tabbableElements.push(el);\n }\n\n if (el instanceof HTMLSlotElement && getSlottedChildrenOutsideRootElement(el, root)) {\n el.assignedElements({ flatten: true }).forEach((assignedEl: HTMLElement) => {\n walk(assignedEl);\n });\n }\n\n if (el.shadowRoot !== null && el.shadowRoot.mode === 'open') {\n walk(el.shadowRoot);\n }\n }\n\n for (const e of el.children) {\n walk(e as HTMLElement);\n }\n }\n\n // Collect all elements including the root\n walk(root);\n\n // Is this worth having? Most sorts will always add increased overhead. And positive tabindexes shouldn't really be used.\n // So is it worth being right? Or fast?\n return tabbableElements.sort((a, b) => {\n // Make sure we sort by tabindex.\n const aTabindex = Number(a.getAttribute('tabindex')) || 0;\n const bTabindex = Number(b.getAttribute('tabindex')) || 0;\n return bTabindex - aTabindex;\n });\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SynergyElement
3
- } from "./chunk.MKQXTHWU.js";
3
+ } from "./chunk.JHSYQUJH.js";
4
4
 
5
5
  // src/components/validate/utility.ts
6
6
  var WhitelistedSynergyFormEventNames = [
@@ -33,4 +33,4 @@ export {
33
33
  normalizeEventAttribute,
34
34
  getEventNameForElement
35
35
  };
36
- //# sourceMappingURL=chunk.WLHRVKAR.js.map
36
+ //# sourceMappingURL=chunk.2RO5SDFI.js.map
@@ -6,25 +6,25 @@ import {
6
6
  } from "./chunk.PKYC7QF3.js";
7
7
  import {
8
8
  SynResizeObserver
9
- } from "./chunk.HPQBH3O2.js";
9
+ } from "./chunk.IOP352J7.js";
10
10
  import {
11
11
  scrollIntoView
12
12
  } from "./chunk.5732DMBC.js";
13
13
  import {
14
14
  SynIconButton
15
- } from "./chunk.EMU2E2VE.js";
16
- import {
17
- LocalizeController
18
- } from "./chunk.GIU3H3J3.js";
15
+ } from "./chunk.RTK2527V.js";
19
16
  import {
20
17
  watch
21
18
  } from "./chunk.74IOULXM.js";
19
+ import {
20
+ LocalizeController
21
+ } from "./chunk.GIU3H3J3.js";
22
22
  import {
23
23
  component_styles_default
24
24
  } from "./chunk.NLYVOJGK.js";
25
25
  import {
26
26
  SynergyElement
27
- } from "./chunk.MKQXTHWU.js";
27
+ } from "./chunk.JHSYQUJH.js";
28
28
  import {
29
29
  __decorateClass,
30
30
  __spreadValues
@@ -47,43 +47,48 @@ var decorate = (proto, method, decorateFn) => {
47
47
  decorateFn.call(this, superFn, ...args);
48
48
  };
49
49
  };
50
- var isSupported = "onscrollend" in window;
51
- if (!isSupported) {
52
- const pointers = /* @__PURE__ */ new Set();
53
- const scrollHandlers = /* @__PURE__ */ new WeakMap();
54
- const handlePointerDown = (event) => {
55
- for (const touch of event.changedTouches) {
56
- pointers.add(touch.identifier);
57
- }
58
- };
59
- const handlePointerUp = (event) => {
60
- for (const touch of event.changedTouches) {
61
- pointers.delete(touch.identifier);
62
- }
63
- };
64
- document.addEventListener("touchstart", handlePointerDown, true);
65
- document.addEventListener("touchend", handlePointerUp, true);
66
- document.addEventListener("touchcancel", handlePointerUp, true);
67
- decorate(EventTarget.prototype, "addEventListener", function(addEventListener, type) {
68
- if (type !== "scrollend") return;
69
- const handleScrollEnd = debounce(() => {
70
- if (!pointers.size) {
71
- this.dispatchEvent(new Event("scrollend"));
72
- } else {
73
- handleScrollEnd();
50
+ (() => {
51
+ if (typeof window === "undefined") {
52
+ return;
53
+ }
54
+ const isSupported = "onscrollend" in window;
55
+ if (!isSupported) {
56
+ const pointers = /* @__PURE__ */ new Set();
57
+ const scrollHandlers = /* @__PURE__ */ new WeakMap();
58
+ const handlePointerDown = (event) => {
59
+ for (const touch of event.changedTouches) {
60
+ pointers.add(touch.identifier);
74
61
  }
75
- }, 100);
76
- addEventListener.call(this, "scroll", handleScrollEnd, { passive: true });
77
- scrollHandlers.set(this, handleScrollEnd);
78
- });
79
- decorate(EventTarget.prototype, "removeEventListener", function(removeEventListener, type) {
80
- if (type !== "scrollend") return;
81
- const scrollHandler = scrollHandlers.get(this);
82
- if (scrollHandler) {
83
- removeEventListener.call(this, "scroll", scrollHandler, { passive: true });
84
- }
85
- });
86
- }
62
+ };
63
+ const handlePointerUp = (event) => {
64
+ for (const touch of event.changedTouches) {
65
+ pointers.delete(touch.identifier);
66
+ }
67
+ };
68
+ document.addEventListener("touchstart", handlePointerDown, true);
69
+ document.addEventListener("touchend", handlePointerUp, true);
70
+ document.addEventListener("touchcancel", handlePointerUp, true);
71
+ decorate(EventTarget.prototype, "addEventListener", function(addEventListener, type) {
72
+ if (type !== "scrollend") return;
73
+ const handleScrollEnd = debounce(() => {
74
+ if (!pointers.size) {
75
+ this.dispatchEvent(new Event("scrollend"));
76
+ } else {
77
+ handleScrollEnd();
78
+ }
79
+ }, 100);
80
+ addEventListener.call(this, "scroll", handleScrollEnd, { passive: true });
81
+ scrollHandlers.set(this, handleScrollEnd);
82
+ });
83
+ decorate(EventTarget.prototype, "removeEventListener", function(removeEventListener, type) {
84
+ if (type !== "scrollend") return;
85
+ const scrollHandler = scrollHandlers.get(this);
86
+ if (scrollHandler) {
87
+ removeEventListener.call(this, "scroll", scrollHandler, { passive: true });
88
+ }
89
+ });
90
+ }
91
+ })();
87
92
 
88
93
  // src/components/tab-group/tab-group.component.ts
89
94
  import { classMap } from "lit/directives/class-map.js";
@@ -122,13 +127,22 @@ var SynTabGroup = class extends SynergyElement {
122
127
  this.updateScrollControls();
123
128
  });
124
129
  this.mutationObserver = new MutationObserver((mutations) => {
125
- if (mutations.some((m) => !["aria-labelledby", "aria-controls"].includes(m.attributeName))) {
130
+ const instanceMutations = mutations.filter(({ target }) => {
131
+ if (target === this) return true;
132
+ if (target.closest("syn-tab-group") !== this) return false;
133
+ const tagName = target.tagName.toLowerCase();
134
+ return tagName === "syn-tab" || tagName === "syn-tab-panel";
135
+ });
136
+ if (instanceMutations.length === 0) {
137
+ return;
138
+ }
139
+ if (instanceMutations.some((m) => !["aria-labelledby", "aria-controls"].includes(m.attributeName))) {
126
140
  setTimeout(() => this.setAriaLabels());
127
141
  }
128
- if (mutations.some((m) => m.attributeName === "disabled")) {
142
+ if (instanceMutations.some((m) => m.attributeName === "disabled")) {
129
143
  this.syncTabsAndPanels();
130
- } else if (mutations.some((m) => m.attributeName === "active")) {
131
- const tabs = mutations.filter((m) => m.attributeName === "active" && m.target.tagName.toLowerCase() === "syn-tab").map((m) => m.target);
144
+ } else if (instanceMutations.some((m) => m.attributeName === "active")) {
145
+ const tabs = instanceMutations.filter((m) => m.attributeName === "active" && m.target.tagName.toLowerCase() === "syn-tab").map((m) => m.target);
132
146
  const newActiveTab = tabs.find((tab) => tab.active);
133
147
  if (newActiveTab) {
134
148
  this.setActiveTab(newActiveTab);
@@ -137,7 +151,17 @@ var SynTabGroup = class extends SynergyElement {
137
151
  });
138
152
  this.updateComplete.then(() => {
139
153
  this.syncTabsAndPanels();
140
- this.mutationObserver.observe(this, { attributes: true, childList: true, subtree: true });
154
+ this.mutationObserver.observe(this, {
155
+ attributes: true,
156
+ attributeFilter: [
157
+ "active",
158
+ "disabled",
159
+ "name",
160
+ "panel"
161
+ ],
162
+ childList: true,
163
+ subtree: true
164
+ });
141
165
  this.resizeObserver.observe(this.nav);
142
166
  whenAllDefined.then(() => {
143
167
  const intersectionObserver = new IntersectionObserver((entries, observer) => {
@@ -497,4 +521,4 @@ __decorateClass([
497
521
  export {
498
522
  SynTabGroup
499
523
  };
500
- //# sourceMappingURL=chunk.IBQDKFYH.js.map
524
+ //# sourceMappingURL=chunk.2TG4SORD.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/internal/scrollend-polyfill.ts", "../../src/components/tab-group/tab-group.component.ts"],
4
+ "sourcesContent": ["/**\n * ---------------------------------------------------------------------\n * \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n * Removing this comment will prevent it from being managed by it.\n * ---------------------------------------------------------------------\n */\n\n/* eslint-disable */\ntype GenericCallback = (this: unknown, ...args: unknown[]) => unknown;\n\ntype MethodOf<T, K extends keyof T> = T[K] extends GenericCallback ? T[K] : never;\n\nconst debounce = <T extends GenericCallback>(fn: T, delay: number) => {\n let timerId = 0;\n\n return function (this: unknown, ...args: unknown[]) {\n window.clearTimeout(timerId);\n timerId = window.setTimeout(() => {\n fn.call(this, ...args);\n }, delay);\n };\n};\n\nconst decorate = <T, M extends keyof T>(\n proto: T,\n method: M,\n decorateFn: (this: unknown, superFn: T[M], ...args: unknown[]) => unknown\n) => {\n const superFn = proto[method] as MethodOf<T, M>;\n\n proto[method] = function (this: unknown, ...args: unknown[]) {\n superFn.call(this, ...args);\n decorateFn.call(this, superFn, ...args);\n } as MethodOf<T, M>;\n};\n\n(() => {\n // SSR environments should not apply the polyfill\n if (typeof window === 'undefined') {\n return;\n }\n\n const isSupported = 'onscrollend' in window;\n\n if (!isSupported) {\n const pointers = new Set();\n const scrollHandlers = new WeakMap<EventTarget, EventListenerOrEventListenerObject>();\n\n const handlePointerDown = (event: TouchEvent) => {\n for (const touch of event.changedTouches) {\n pointers.add(touch.identifier);\n }\n };\n\n const handlePointerUp = (event: TouchEvent) => {\n for (const touch of event.changedTouches) {\n pointers.delete(touch.identifier);\n }\n };\n\n document.addEventListener('touchstart', handlePointerDown, true);\n document.addEventListener('touchend', handlePointerUp, true);\n document.addEventListener('touchcancel', handlePointerUp, true);\n\n decorate(EventTarget.prototype, 'addEventListener', function (this: EventTarget, addEventListener, type) {\n if (type !== 'scrollend') return;\n\n const handleScrollEnd = debounce(() => {\n if (!pointers.size) {\n // If no pointer is active in the scroll area then the scroll has ended\n this.dispatchEvent(new Event('scrollend'));\n } else {\n // otherwise let's wait a bit more\n handleScrollEnd();\n }\n }, 100);\n\n addEventListener.call(this, 'scroll', handleScrollEnd, { passive: true });\n scrollHandlers.set(this, handleScrollEnd);\n });\n\n decorate(EventTarget.prototype, 'removeEventListener', function (this: EventTarget, removeEventListener, type) {\n if (type !== 'scrollend') return;\n\n const scrollHandler = scrollHandlers.get(this);\n if (scrollHandler) {\n removeEventListener.call(this, 'scroll', scrollHandler, { passive: true } as unknown as EventListenerOptions);\n }\n });\n }\n})();\n\n// Without an import or export, TypeScript sees vars in this file as global\nexport {};\n", "/**\n * ---------------------------------------------------------------------\n * \uD83D\uDD12 AUTOGENERATED BY VENDORISM\n * Removing this comment will prevent it from being managed by it.\n * ---------------------------------------------------------------------\n */\n\n/* eslint-disable */\nimport '../../internal/scrollend-polyfill.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { eventOptions, property, query, state } from 'lit/decorators.js';\nimport { html } from 'lit';\nimport { LocalizeController } from '../../utilities/localize.js';\nimport { scrollIntoView } from '../../internal/scroll.js';\nimport { watch } from '../../internal/watch.js';\nimport componentStyles from '../../styles/component.styles.js';\nimport SynergyElement from '../../internal/synergy-element.js';\nimport SynIconButton from '../icon-button/icon-button.component.js';\nimport SynResizeObserver from '../resize-observer/resize-observer.component.js';\nimport styles from './tab-group.styles.js';\nimport customStyles from './tab-group.custom.styles.js';\nimport type { CSSResultGroup } from 'lit';\nimport type SynTab from '../tab/tab.js';\nimport type SynTabPanel from '../tab-panel/tab-panel.js';\n\n/**\n * @summary Tab groups organize content into a container that shows one section at a time.\n * @documentation https://synergy.style/components/tab-group\n * @status stable\n * @since 2.0\n *\n * @dependency syn-icon-button\n *\n * @slot - Used for grouping tab panels in the tab group. Must be `<syn-tab-panel>` elements.\n * @slot nav - Used for grouping tabs in the tab group. Must be `<syn-tab>` elements.\n *\n * @event {{ name: String }} syn-tab-show - Emitted when a tab is shown. The payload of the event returns the \"panel\" attribute of the shown tab.\n * @event {{ name: String }} syn-tab-hide - Emitted when a tab is hidden. The payload of the event returns the \"panel\" attribute of the hidden tab.\n *\n * @csspart base - The component's base wrapper.\n * @csspart nav - The tab group's navigation container where tabs are slotted in.\n * @csspart tabs - The container that wraps the tabs.\n * @csspart active-tab-indicator - The line that highlights the currently selected tab.\n * @csspart body - The tab group's body where tab panels are slotted in.\n * @csspart scroll-button - The previous/next scroll buttons that show when tabs are scrollable, an `<syn-icon-button>`.\n * @csspart scroll-button--start - The starting scroll button.\n * @csspart scroll-button--end - The ending scroll button.\n * @csspart scroll-button__base - The scroll button's exported `base` part.\n *\n * @cssproperty --indicator-color - The color of the active tab indicator.\n * @cssproperty --indicator-width - The width of the active tab indicator.\n * @cssproperty --track-color - The color of the indicator's track (the line that separates tabs from panels).\n * @cssproperty --track-width - The width of the indicator's track (the line that separates tabs from panels).\n */\nexport default class SynTabGroup extends SynergyElement {\n static styles: CSSResultGroup = [componentStyles, styles, customStyles];\n static dependencies = { 'syn-icon-button': SynIconButton, 'syn-resize-observer': SynResizeObserver };\n\n private activeTab?: SynTab;\n private mutationObserver: MutationObserver;\n private resizeObserver: ResizeObserver;\n private tabs: SynTab[] = [];\n private focusableTabs: SynTab[] = [];\n private panels: SynTabPanel[] = [];\n private readonly localize = new LocalizeController(this);\n\n @query('.tab-group') tabGroup: HTMLElement;\n @query('.tab-group__body') body: HTMLSlotElement;\n @query('.tab-group__nav') nav: HTMLElement;\n @query('.tab-group__indicator') indicator: HTMLElement;\n\n @state() private hasScrollControls = false;\n\n @state() private shouldHideScrollStartButton = false;\n @state() private shouldHideScrollEndButton = false;\n\n /** The placement of the tabs. */\n @property() placement: 'top' | 'start' | 'end' = 'top';\n\n /**\n * When set to auto, navigating tabs with the arrow keys will instantly show the corresponding tab panel. When set to\n * manual, the tab will receive focus but will not show until the user presses spacebar or enter.\n */\n @property() activation: 'auto' | 'manual' = 'auto';\n\n /** Disables the scroll arrows that appear when tabs overflow. */\n @property({ attribute: 'no-scroll-controls', type: Boolean }) noScrollControls = false;\n\n /** Draws the tab group as a contained element. */\n @property({ type: Boolean }) contained = false;\n \n /** Draws the tab group with edges instead of roundings. Takes only effect if used with the 'contained' property */\n @property({ type: Boolean }) sharp = false;\n\n /** Prevent scroll buttons from being hidden when inactive. */\n @property({ attribute: 'fixed-scroll-controls', type: Boolean }) fixedScrollControls = false;\n\n connectedCallback() {\n const whenAllDefined = Promise.all([\n customElements.whenDefined('syn-tab'),\n customElements.whenDefined('syn-tab-panel')\n ]);\n\n super.connectedCallback();\n\n this.resizeObserver = new ResizeObserver(() => {\n this.repositionIndicator();\n this.updateScrollControls();\n });\n\n this.mutationObserver = new MutationObserver(mutations => {\n // Make sure to only observe the direct children of the tab group\n // instead of other sub elements that might be slotted in.\n // @see https://github.com/shoelace-style/shoelace/issues/2320\n const instanceMutations = mutations.filter(({ target }) => {\n if (target === this) return true; // Allow self updates\n if ((target as HTMLElement).closest('syn-tab-group') !== this) return false; // We are not direct children\n\n // We should only care about changes to the tab or tab panel\n const tagName = (target as HTMLElement).tagName.toLowerCase();\n return tagName === 'syn-tab' || tagName === 'syn-tab-panel';\n });\n\n if (instanceMutations.length === 0) {\n return;\n }\n\n // Update aria labels when the DOM changes\n if (instanceMutations.some(m => !['aria-labelledby', 'aria-controls'].includes(m.attributeName!))) {\n setTimeout(() => this.setAriaLabels());\n }\n\n // Sync tabs when disabled states change\n if (instanceMutations.some(m => m.attributeName === 'disabled')) {\n this.syncTabsAndPanels();\n // sync tabs when active state on tab changes\n } else if (instanceMutations.some(m => m.attributeName === 'active')) {\n const tabs = instanceMutations\n .filter(m => m.attributeName === 'active' && (m.target as HTMLElement).tagName.toLowerCase() === 'syn-tab')\n .map(m => m.target as SynTab);\n const newActiveTab = tabs.find(tab => tab.active);\n\n if (newActiveTab) {\n this.setActiveTab(newActiveTab);\n }\n }\n });\n\n // After the first update...\n this.updateComplete.then(() => {\n this.syncTabsAndPanels();\n this.mutationObserver.observe(this, {\n attributes: true,\n attributeFilter: [\n 'active',\n 'disabled',\n 'name',\n 'panel',\n ],\n childList: true,\n subtree: true\n });\n this.resizeObserver.observe(this.nav);\n\n // Wait for tabs and tab panels to be registered\n whenAllDefined.then(() => {\n // Set initial tab state when the tabs become visible\n const intersectionObserver = new IntersectionObserver((entries, observer) => {\n if (entries[0].intersectionRatio > 0) {\n this.setAriaLabels();\n this.setActiveTab(this.getActiveTab() ?? this.tabs[0], { emitEvents: false });\n observer.unobserve(entries[0].target);\n }\n });\n intersectionObserver.observe(this.tabGroup);\n });\n });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.mutationObserver?.disconnect();\n\n if (this.nav) {\n this.resizeObserver?.unobserve(this.nav);\n }\n }\n\n private getAllTabs() {\n const slot = this.shadowRoot!.querySelector<HTMLSlotElement>('slot[name=\"nav\"]')!;\n\n return slot.assignedElements() as SynTab[];\n }\n\n private getAllPanels() {\n return [...this.body.assignedElements()].filter(el => el.tagName.toLowerCase() === 'syn-tab-panel') as [SynTabPanel];\n }\n\n private getActiveTab() {\n return this.tabs.find(el => el.active);\n }\n\n private handleClick(event: MouseEvent) {\n const target = event.target as HTMLElement;\n const tab = target.closest('syn-tab');\n const tabGroup = tab?.closest('syn-tab-group');\n\n // Ensure the target tab is in this tab group\n if (tabGroup !== this) {\n return;\n }\n\n if (tab !== null) {\n this.setActiveTab(tab, { scrollBehavior: 'smooth' });\n }\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n const target = event.target as HTMLElement;\n const tab = target.closest('syn-tab');\n const tabGroup = tab?.closest('syn-tab-group');\n\n // Ensure the target tab is in this tab group\n if (tabGroup !== this) {\n return;\n }\n\n // Activate a tab\n if (['Enter', ' '].includes(event.key)) {\n if (tab !== null) {\n this.setActiveTab(tab, { scrollBehavior: 'smooth' });\n event.preventDefault();\n }\n }\n\n // Move focus left or right\n if (['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) {\n const activeEl = this.tabs.find(t => t.matches(':focus'));\n const isRtl = this.localize.dir() === 'rtl';\n let nextTab: null | SynTab = null;\n\n if (activeEl?.tagName.toLowerCase() === 'syn-tab') {\n if (event.key === 'Home') {\n nextTab = this.focusableTabs[0];\n } else if (event.key === 'End') {\n nextTab = this.focusableTabs[this.focusableTabs.length - 1];\n } else if (\n (['top'].includes(this.placement) && event.key === (isRtl ? 'ArrowRight' : 'ArrowLeft')) ||\n (['start', 'end'].includes(this.placement) && event.key === 'ArrowUp')\n ) {\n const currentIndex = this.tabs.findIndex(el => el === activeEl);\n nextTab = this.findNextFocusableTab(currentIndex, 'backward');\n } else if (\n (['top'].includes(this.placement) && event.key === (isRtl ? 'ArrowLeft' : 'ArrowRight')) ||\n (['start', 'end'].includes(this.placement) && event.key === 'ArrowDown')\n ) {\n const currentIndex = this.tabs.findIndex(el => el === activeEl);\n nextTab = this.findNextFocusableTab(currentIndex, 'forward');\n }\n\n if (!nextTab) {\n return;\n }\n\n nextTab.tabIndex = 0;\n nextTab.focus({ preventScroll: true });\n\n if (this.activation === 'auto') {\n this.setActiveTab(nextTab, { scrollBehavior: 'smooth' });\n } else {\n this.tabs.forEach(tabEl => {\n tabEl.tabIndex = tabEl === nextTab ? 0 : -1;\n });\n }\n\n if (['top'].includes(this.placement)) {\n scrollIntoView(nextTab, this.nav, 'horizontal');\n }\n\n event.preventDefault();\n }\n }\n }\n\n private handleScrollToStart() {\n this.nav.scroll({\n left:\n this.localize.dir() === 'rtl'\n ? this.nav.scrollLeft + this.nav.clientWidth\n : this.nav.scrollLeft - this.nav.clientWidth,\n behavior: 'smooth'\n });\n }\n\n private handleScrollToEnd() {\n this.nav.scroll({\n left:\n this.localize.dir() === 'rtl'\n ? this.nav.scrollLeft - this.nav.clientWidth\n : this.nav.scrollLeft + this.nav.clientWidth,\n behavior: 'smooth'\n });\n }\n\n private setActiveTab(tab: SynTab, options?: { emitEvents?: boolean; scrollBehavior?: 'auto' | 'smooth' }) {\n options = {\n emitEvents: true,\n scrollBehavior: 'auto',\n ...options\n };\n\n if (tab !== this.activeTab && !tab.disabled) {\n const previousTab = this.activeTab;\n this.activeTab = tab;\n\n // Sync active tab and panel\n this.tabs.forEach(el => {\n el.active = el === this.activeTab;\n el.tabIndex = el === this.activeTab ? 0 : -1;\n });\n this.panels.forEach(el => (el.active = el.name === this.activeTab?.panel));\n this.syncIndicator();\n\n if (['top'].includes(this.placement)) {\n scrollIntoView(this.activeTab, this.nav, 'horizontal', options.scrollBehavior);\n }\n\n // Emit events\n if (options.emitEvents) {\n if (previousTab) {\n this.emit('syn-tab-hide', { detail: { name: previousTab.panel } });\n }\n\n this.emit('syn-tab-show', { detail: { name: this.activeTab.panel } });\n }\n }\n }\n\n private setAriaLabels() {\n // Link each tab with its corresponding panel\n this.tabs.forEach(tab => {\n const panel = this.panels.find(el => el.name === tab.panel);\n if (panel) {\n tab.setAttribute('aria-controls', panel.getAttribute('id')!);\n panel.setAttribute('aria-labelledby', tab.getAttribute('id')!);\n }\n });\n }\n\n private repositionIndicator() {\n const currentTab = this.getActiveTab();\n\n if (!currentTab) {\n return;\n }\n\n const width = currentTab.clientWidth;\n const height = currentTab.clientHeight;\n const isRtl = this.localize.dir() === 'rtl';\n\n // We can't used offsetLeft/offsetTop here due to a shadow parent issue where neither can getBoundingClientRect\n // because it provides invalid values for animating elements: https://bugs.chromium.org/p/chromium/issues/detail?id=920069\n const allTabs = this.getAllTabs();\n const precedingTabs = allTabs.slice(0, allTabs.indexOf(currentTab));\n const offset = precedingTabs.reduce(\n (previous, current) => ({\n left: previous.left + current.clientWidth,\n top: previous.top + current.clientHeight\n }),\n { left: 0, top: 0 }\n );\n\n switch (this.placement) {\n case 'top':\n this.indicator.style.width = `calc(${width}px - ${ (this.contained || this.sharp) ? '2 * var(--syn-spacing-large)' : '0px' })`;\n this.indicator.style.height = 'auto';\n this.indicator.style.translate = `calc(${isRtl ? '-' : ''}1 * (${offset.left}px + ${ (this.contained || this.sharp) ? 'var(--syn-spacing-large)' : '0px' }))`;\n break;\n\n case 'start':\n case 'end':\n this.indicator.style.width = 'auto';\n this.indicator.style.height = `calc(${height}px - ${ (this.contained || this.sharp) ? '2 * var(--syn-spacing-small)' : '0px' })`;\n this.indicator.style.translate = `0 calc(${offset.top}px + ${ (this.contained || this.sharp) ? 'var(--syn-spacing-small)' : '0px' })`;\n break;\n }\n }\n\n // This stores tabs and panels so we can refer to a cache instead of calling querySelectorAll() multiple times.\n private syncTabsAndPanels() {\n this.tabs = this.getAllTabs();\n this.focusableTabs = this.tabs.filter(el => !el.disabled);\n\n this.panels = this.getAllPanels();\n this.syncIndicator();\n\n // After updating, show or hide scroll controls as needed\n this.updateComplete.then(() => this.updateScrollControls());\n }\n\n private findNextFocusableTab(currentIndex: number, direction: 'forward' | 'backward') {\n let nextTab = null;\n const iterator = direction === 'forward' ? 1 : -1;\n let nextIndex = currentIndex + iterator;\n\n while (currentIndex < this.tabs.length) {\n nextTab = this.tabs[nextIndex] || null;\n\n if (nextTab === null) {\n // This is where wrapping happens. If we're moving forward and get to the end, then we jump to the beginning. If we're moving backward and get to the start, then we jump to the end.\n if (direction === 'forward') {\n nextTab = this.focusableTabs[0];\n } else {\n nextTab = this.focusableTabs[this.focusableTabs.length - 1];\n }\n break;\n }\n\n if (!nextTab.disabled) {\n break;\n }\n\n nextIndex += iterator;\n }\n\n return nextTab;\n }\n\n /**\n * The reality of the browser means that we can't expect the scroll position to be exactly what we want it to be, so\n * we add one pixel of wiggle room to our calculations.\n */\n private scrollOffset = 1;\n\n @eventOptions({ passive: true })\n private updateScrollButtons() {\n if (this.hasScrollControls && !this.fixedScrollControls) {\n this.shouldHideScrollStartButton = this.scrollFromStart() <= this.scrollOffset;\n this.shouldHideScrollEndButton = this.isScrolledToEnd();\n }\n }\n\n private isScrolledToEnd() {\n return this.scrollFromStart() + this.nav.clientWidth >= this.nav.scrollWidth - this.scrollOffset;\n }\n\n private scrollFromStart() {\n return this.localize.dir() === 'rtl' ? -this.nav.scrollLeft : this.nav.scrollLeft;\n }\n\n @watch('noScrollControls', { waitUntilFirstUpdate: true })\n updateScrollControls() {\n if (this.noScrollControls) {\n this.hasScrollControls = false;\n } else {\n // In most cases, we can compare scrollWidth to clientWidth to determine if scroll controls should show. However,\n // Safari appears to calculate this incorrectly when zoomed at 110%, causing the controls to toggle indefinitely.\n // Adding a single pixel to the comparison seems to resolve it.\n //\n // See https://github.com/synergy-design-system/synergy/issues/1839\n this.hasScrollControls =\n ['top'].includes(this.placement) && this.nav.scrollWidth > this.nav.clientWidth + 1;\n }\n\n this.updateScrollButtons();\n }\n\n @watch('placement', { waitUntilFirstUpdate: true })\n syncIndicator() {\n const tab = this.getActiveTab();\n\n if (tab) {\n this.indicator.style.display = 'block';\n this.repositionIndicator();\n } else {\n this.indicator.style.display = 'none';\n }\n }\n\n /** Shows the specified tab panel. */\n show(panel: string) {\n const tab = this.tabs.find(el => el.panel === panel);\n\n if (tab) {\n this.setActiveTab(tab, { scrollBehavior: 'smooth' });\n }\n }\n\n render() {\n\n return html`\n <div\n part=\"base\"\n class=${classMap({\n 'tab-group': true,\n 'tab-group--top': this.placement === 'top',\n 'tab-group--start': this.placement === 'start',\n 'tab-group--end': this.placement === 'end',\n 'tab-group--rtl': this.localize.dir() === 'rtl',\n 'tab-group--has-scroll-controls': this.hasScrollControls,\n 'tab-group--contained': this.contained,\n 'tab-group--sharp': this.sharp,\n })}\n @click=${this.handleClick}\n @keydown=${this.handleKeyDown}\n >\n <div class=\"tab-group__nav-container\" part=\"nav\">\n ${this.hasScrollControls\n ? html`\n <syn-icon-button\n part=\"scroll-button scroll-button--start\"\n exportparts=\"base:scroll-button__base\"\n class=${classMap({\n 'tab-group__scroll-button': true,\n 'tab-group__scroll-button--start': true,\n 'tab-group__scroll-button--start--hidden': this.shouldHideScrollStartButton\n })}\n name=\"chevron-right\"\n library=\"system\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n label=${this.localize.term('scrollToStart')}\n @click=${this.handleScrollToStart}\n ></syn-icon-button>\n `\n : ''}\n\n <div class=\"tab-group__nav\" @scrollend=${this.updateScrollButtons}>\n <div part=\"tabs\" class=\"tab-group__tabs\" role=\"tablist\">\n <div part=\"active-tab-indicator\" class=\"tab-group__indicator\"></div>\n <syn-resize-observer @syn-resize=${this.syncIndicator}>\n <slot name=\"nav\" @slotchange=${this.syncTabsAndPanels}></slot>\n </syn-resize-observer>\n </div>\n </div>\n\n ${this.hasScrollControls\n ? html`\n <syn-icon-button\n part=\"scroll-button scroll-button--end\"\n exportparts=\"base:scroll-button__base\"\n class=${classMap({\n 'tab-group__scroll-button': true,\n 'tab-group__scroll-button--end': true,\n 'tab-group__scroll-button--end--hidden': this.shouldHideScrollEndButton\n })}\n name=\"chevron-right\"\n library=\"system\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n label=${this.localize.term('scrollToEnd')}\n @click=${this.handleScrollToEnd}\n ></syn-icon-button>\n `\n : ''}\n </div>\n\n <slot part=\"body\" class=\"tab-group__body\" @slotchange=${this.syncTabsAndPanels}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'syn-tab-group': SynTabGroup;\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,IAAM,WAAW,CAA4B,IAAO,UAAkB;AACpE,MAAI,UAAU;AAEd,SAAO,YAA4B,MAAiB;AAClD,WAAO,aAAa,OAAO;AAC3B,cAAU,OAAO,WAAW,MAAM;AAChC,SAAG,KAAK,MAAM,GAAG,IAAI;AAAA,IACvB,GAAG,KAAK;AAAA,EACV;AACF;AAEA,IAAM,WAAW,CACf,OACA,QACA,eACG;AACH,QAAM,UAAU,MAAM,MAAM;AAE5B,QAAM,MAAM,IAAI,YAA4B,MAAiB;AAC3D,YAAQ,KAAK,MAAM,GAAG,IAAI;AAC1B,eAAW,KAAK,MAAM,SAAS,GAAG,IAAI;AAAA,EACxC;AACF;AAAA,CAEC,MAAM;AAEL,MAAI,OAAO,WAAW,aAAa;AACjC;AAAA,EACF;AAEA,QAAM,cAAc,iBAAiB;AAErC,MAAI,CAAC,aAAa;AAChB,UAAM,WAAW,oBAAI,IAAI;AACzB,UAAM,iBAAiB,oBAAI,QAAyD;AAEpF,UAAM,oBAAoB,CAAC,UAAsB;AAC/C,iBAAW,SAAS,MAAM,gBAAgB;AACxC,iBAAS,IAAI,MAAM,UAAU;AAAA,MAC/B;AAAA,IACF;AAEA,UAAM,kBAAkB,CAAC,UAAsB;AAC7C,iBAAW,SAAS,MAAM,gBAAgB;AACxC,iBAAS,OAAO,MAAM,UAAU;AAAA,MAClC;AAAA,IACF;AAEA,aAAS,iBAAiB,cAAc,mBAAmB,IAAI;AAC/D,aAAS,iBAAiB,YAAY,iBAAiB,IAAI;AAC3D,aAAS,iBAAiB,eAAe,iBAAiB,IAAI;AAE9D,aAAS,YAAY,WAAW,oBAAoB,SAA6B,kBAAkB,MAAM;AACvG,UAAI,SAAS,YAAa;AAE1B,YAAM,kBAAkB,SAAS,MAAM;AACrC,YAAI,CAAC,SAAS,MAAM;AAElB,eAAK,cAAc,IAAI,MAAM,WAAW,CAAC;AAAA,QAC3C,OAAO;AAEL,0BAAgB;AAAA,QAClB;AAAA,MACF,GAAG,GAAG;AAEN,uBAAiB,KAAK,MAAM,UAAU,iBAAiB,EAAE,SAAS,KAAK,CAAC;AACxE,qBAAe,IAAI,MAAM,eAAe;AAAA,IAC1C,CAAC;AAED,aAAS,YAAY,WAAW,uBAAuB,SAA6B,qBAAqB,MAAM;AAC7G,UAAI,SAAS,YAAa;AAE1B,YAAM,gBAAgB,eAAe,IAAI,IAAI;AAC7C,UAAI,eAAe;AACjB,4BAAoB,KAAK,MAAM,UAAU,eAAe,EAAE,SAAS,KAAK,CAAoC;AAAA,MAC9G;AAAA,IACF,CAAC;AAAA,EACH;AACF,GAAG;;;ACjFH,SAAS,gBAAgB;AACzB,SAAS,cAAc,UAAU,OAAO,aAAa;AACrD,SAAS,YAAY;AA2CrB,IAAqB,cAArB,cAAyC,eAAe;AAAA,EAAxD;AAAA;AAOE,SAAQ,OAAiB,CAAC;AAC1B,SAAQ,gBAA0B,CAAC;AACnC,SAAQ,SAAwB,CAAC;AACjC,SAAiB,WAAW,IAAI,mBAAmB,IAAI;AAO9C,SAAQ,oBAAoB;AAE5B,SAAQ,8BAA8B;AACtC,SAAQ,4BAA4B;AAGjC,qBAAqC;AAMrC,sBAAgC;AAGkB,4BAAmB;AAGpD,qBAAY;AAGZ,iBAAQ;AAG4B,+BAAsB;AAiVvF;AAAA;AAAA;AAAA;AAAA,SAAQ,eAAe;AAAA;AAAA,EA/UvB,oBAAoB;AAClB,UAAM,iBAAiB,QAAQ,IAAI;AAAA,MACjC,eAAe,YAAY,SAAS;AAAA,MACpC,eAAe,YAAY,eAAe;AAAA,IAC5C,CAAC;AAED,UAAM,kBAAkB;AAExB,SAAK,iBAAiB,IAAI,eAAe,MAAM;AAC7C,WAAK,oBAAoB;AACzB,WAAK,qBAAqB;AAAA,IAC5B,CAAC;AAED,SAAK,mBAAmB,IAAI,iBAAiB,eAAa;AAIxD,YAAM,oBAAoB,UAAU,OAAO,CAAC,EAAE,OAAO,MAAM;AACzD,YAAI,WAAW,KAAM,QAAO;AAC5B,YAAK,OAAuB,QAAQ,eAAe,MAAM,KAAM,QAAO;AAGtE,cAAM,UAAW,OAAuB,QAAQ,YAAY;AAC5D,eAAO,YAAY,aAAa,YAAY;AAAA,MAC9C,CAAC;AAED,UAAI,kBAAkB,WAAW,GAAG;AAClC;AAAA,MACF;AAGA,UAAI,kBAAkB,KAAK,OAAK,CAAC,CAAC,mBAAmB,eAAe,EAAE,SAAS,EAAE,aAAc,CAAC,GAAG;AACjG,mBAAW,MAAM,KAAK,cAAc,CAAC;AAAA,MACvC;AAGA,UAAI,kBAAkB,KAAK,OAAK,EAAE,kBAAkB,UAAU,GAAG;AAC/D,aAAK,kBAAkB;AAAA,MAEzB,WAAW,kBAAkB,KAAK,OAAK,EAAE,kBAAkB,QAAQ,GAAG;AACpE,cAAM,OAAO,kBACV,OAAO,OAAK,EAAE,kBAAkB,YAAa,EAAE,OAAuB,QAAQ,YAAY,MAAM,SAAS,EACzG,IAAI,OAAK,EAAE,MAAgB;AAC9B,cAAM,eAAe,KAAK,KAAK,SAAO,IAAI,MAAM;AAEhD,YAAI,cAAc;AAChB,eAAK,aAAa,YAAY;AAAA,QAChC;AAAA,MACF;AAAA,IACF,CAAC;AAGD,SAAK,eAAe,KAAK,MAAM;AAC7B,WAAK,kBAAkB;AACvB,WAAK,iBAAiB,QAAQ,MAAM;AAAA,QAClC,YAAY;AAAA,QACZ,iBAAiB;AAAA,UACf;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,WAAW;AAAA,QACX,SAAS;AAAA,MACX,CAAC;AACD,WAAK,eAAe,QAAQ,KAAK,GAAG;AAGpC,qBAAe,KAAK,MAAM;AAExB,cAAM,uBAAuB,IAAI,qBAAqB,CAAC,SAAS,aAAa;AAvKrF;AAwKU,cAAI,QAAQ,CAAC,EAAE,oBAAoB,GAAG;AACpC,iBAAK,cAAc;AACnB,iBAAK,cAAa,UAAK,aAAa,MAAlB,YAAuB,KAAK,KAAK,CAAC,GAAG,EAAE,YAAY,MAAM,CAAC;AAC5E,qBAAS,UAAU,QAAQ,CAAC,EAAE,MAAM;AAAA,UACtC;AAAA,QACF,CAAC;AACD,6BAAqB,QAAQ,KAAK,QAAQ;AAAA,MAC5C,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,uBAAuB;AAnLzB;AAoLI,UAAM,qBAAqB;AAC3B,eAAK,qBAAL,mBAAuB;AAEvB,QAAI,KAAK,KAAK;AACZ,iBAAK,mBAAL,mBAAqB,UAAU,KAAK;AAAA,IACtC;AAAA,EACF;AAAA,EAEQ,aAAa;AACnB,UAAM,OAAO,KAAK,WAAY,cAA+B,kBAAkB;AAE/E,WAAO,KAAK,iBAAiB;AAAA,EAC/B;AAAA,EAEQ,eAAe;AACrB,WAAO,CAAC,GAAG,KAAK,KAAK,iBAAiB,CAAC,EAAE,OAAO,QAAM,GAAG,QAAQ,YAAY,MAAM,eAAe;AAAA,EACpG;AAAA,EAEQ,eAAe;AACrB,WAAO,KAAK,KAAK,KAAK,QAAM,GAAG,MAAM;AAAA,EACvC;AAAA,EAEQ,YAAY,OAAmB;AACrC,UAAM,SAAS,MAAM;AACrB,UAAM,MAAM,OAAO,QAAQ,SAAS;AACpC,UAAM,WAAW,2BAAK,QAAQ;AAG9B,QAAI,aAAa,MAAM;AACrB;AAAA,IACF;AAEA,QAAI,QAAQ,MAAM;AAChB,WAAK,aAAa,KAAK,EAAE,gBAAgB,SAAS,CAAC;AAAA,IACrD;AAAA,EACF;AAAA,EAEQ,cAAc,OAAsB;AAC1C,UAAM,SAAS,MAAM;AACrB,UAAM,MAAM,OAAO,QAAQ,SAAS;AACpC,UAAM,WAAW,2BAAK,QAAQ;AAG9B,QAAI,aAAa,MAAM;AACrB;AAAA,IACF;AAGA,QAAI,CAAC,SAAS,GAAG,EAAE,SAAS,MAAM,GAAG,GAAG;AACtC,UAAI,QAAQ,MAAM;AAChB,aAAK,aAAa,KAAK,EAAE,gBAAgB,SAAS,CAAC;AACnD,cAAM,eAAe;AAAA,MACvB;AAAA,IACF;AAGA,QAAI,CAAC,aAAa,cAAc,WAAW,aAAa,QAAQ,KAAK,EAAE,SAAS,MAAM,GAAG,GAAG;AAC1F,YAAM,WAAW,KAAK,KAAK,KAAK,OAAK,EAAE,QAAQ,QAAQ,CAAC;AACxD,YAAM,QAAQ,KAAK,SAAS,IAAI,MAAM;AACtC,UAAI,UAAyB;AAE7B,WAAI,qCAAU,QAAQ,mBAAkB,WAAW;AACjD,YAAI,MAAM,QAAQ,QAAQ;AACxB,oBAAU,KAAK,cAAc,CAAC;AAAA,QAChC,WAAW,MAAM,QAAQ,OAAO;AAC9B,oBAAU,KAAK,cAAc,KAAK,cAAc,SAAS,CAAC;AAAA,QAC5D,WACG,CAAC,KAAK,EAAE,SAAS,KAAK,SAAS,KAAK,MAAM,SAAS,QAAQ,eAAe,gBAC1E,CAAC,SAAS,KAAK,EAAE,SAAS,KAAK,SAAS,KAAK,MAAM,QAAQ,WAC5D;AACA,gBAAM,eAAe,KAAK,KAAK,UAAU,QAAM,OAAO,QAAQ;AAC9D,oBAAU,KAAK,qBAAqB,cAAc,UAAU;AAAA,QAC9D,WACG,CAAC,KAAK,EAAE,SAAS,KAAK,SAAS,KAAK,MAAM,SAAS,QAAQ,cAAc,iBACzE,CAAC,SAAS,KAAK,EAAE,SAAS,KAAK,SAAS,KAAK,MAAM,QAAQ,aAC5D;AACA,gBAAM,eAAe,KAAK,KAAK,UAAU,QAAM,OAAO,QAAQ;AAC9D,oBAAU,KAAK,qBAAqB,cAAc,SAAS;AAAA,QAC7D;AAEA,YAAI,CAAC,SAAS;AACZ;AAAA,QACF;AAEA,gBAAQ,WAAW;AACnB,gBAAQ,MAAM,EAAE,eAAe,KAAK,CAAC;AAErC,YAAI,KAAK,eAAe,QAAQ;AAC9B,eAAK,aAAa,SAAS,EAAE,gBAAgB,SAAS,CAAC;AAAA,QACzD,OAAO;AACL,eAAK,KAAK,QAAQ,WAAS;AACzB,kBAAM,WAAW,UAAU,UAAU,IAAI;AAAA,UAC3C,CAAC;AAAA,QACH;AAEA,YAAI,CAAC,KAAK,EAAE,SAAS,KAAK,SAAS,GAAG;AACpC,yBAAe,SAAS,KAAK,KAAK,YAAY;AAAA,QAChD;AAEA,cAAM,eAAe;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,sBAAsB;AAC5B,SAAK,IAAI,OAAO;AAAA,MACd,MACE,KAAK,SAAS,IAAI,MAAM,QACpB,KAAK,IAAI,aAAa,KAAK,IAAI,cAC/B,KAAK,IAAI,aAAa,KAAK,IAAI;AAAA,MACrC,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB;AAC1B,SAAK,IAAI,OAAO;AAAA,MACd,MACE,KAAK,SAAS,IAAI,MAAM,QACpB,KAAK,IAAI,aAAa,KAAK,IAAI,cAC/B,KAAK,IAAI,aAAa,KAAK,IAAI;AAAA,MACrC,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA,EAEQ,aAAa,KAAa,SAAwE;AACxG,cAAU;AAAA,MACR,YAAY;AAAA,MACZ,gBAAgB;AAAA,OACb;AAGL,QAAI,QAAQ,KAAK,aAAa,CAAC,IAAI,UAAU;AAC3C,YAAM,cAAc,KAAK;AACzB,WAAK,YAAY;AAGjB,WAAK,KAAK,QAAQ,QAAM;AACtB,WAAG,SAAS,OAAO,KAAK;AACxB,WAAG,WAAW,OAAO,KAAK,YAAY,IAAI;AAAA,MAC5C,CAAC;AACD,WAAK,OAAO,QAAQ,QAAG;AAhU7B;AAgUiC,kBAAG,SAAS,GAAG,WAAS,UAAK,cAAL,mBAAgB;AAAA,OAAM;AACzE,WAAK,cAAc;AAEnB,UAAI,CAAC,KAAK,EAAE,SAAS,KAAK,SAAS,GAAG;AACpC,uBAAe,KAAK,WAAW,KAAK,KAAK,cAAc,QAAQ,cAAc;AAAA,MAC/E;AAGA,UAAI,QAAQ,YAAY;AACtB,YAAI,aAAa;AACf,eAAK,KAAK,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,MAAM,EAAE,CAAC;AAAA,QACnE;AAEA,aAAK,KAAK,gBAAgB,EAAE,QAAQ,EAAE,MAAM,KAAK,UAAU,MAAM,EAAE,CAAC;AAAA,MACtE;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,gBAAgB;AAEtB,SAAK,KAAK,QAAQ,SAAO;AACvB,YAAM,QAAQ,KAAK,OAAO,KAAK,QAAM,GAAG,SAAS,IAAI,KAAK;AAC1D,UAAI,OAAO;AACT,YAAI,aAAa,iBAAiB,MAAM,aAAa,IAAI,CAAE;AAC3D,cAAM,aAAa,mBAAmB,IAAI,aAAa,IAAI,CAAE;AAAA,MAC/D;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,sBAAsB;AAC5B,UAAM,aAAa,KAAK,aAAa;AAErC,QAAI,CAAC,YAAY;AACf;AAAA,IACF;AAEA,UAAM,QAAQ,WAAW;AACzB,UAAM,SAAS,WAAW;AAC1B,UAAM,QAAQ,KAAK,SAAS,IAAI,MAAM;AAItC,UAAM,UAAU,KAAK,WAAW;AAChC,UAAM,gBAAgB,QAAQ,MAAM,GAAG,QAAQ,QAAQ,UAAU,CAAC;AAClE,UAAM,SAAS,cAAc;AAAA,MAC3B,CAAC,UAAU,aAAa;AAAA,QACtB,MAAM,SAAS,OAAO,QAAQ;AAAA,QAC9B,KAAK,SAAS,MAAM,QAAQ;AAAA,MAC9B;AAAA,MACA,EAAE,MAAM,GAAG,KAAK,EAAE;AAAA,IACpB;AAEA,YAAQ,KAAK,WAAW;AAAA,MACtB,KAAK;AACH,aAAK,UAAU,MAAM,QAAQ,QAAQ,KAAK,QAAU,KAAK,aAAa,KAAK,QAAS,iCAAiC,KAAM;AAC3H,aAAK,UAAU,MAAM,SAAS;AAC9B,aAAK,UAAU,MAAM,YAAY,QAAQ,QAAQ,MAAM,EAAE,QAAQ,OAAO,IAAI,QAAU,KAAK,aAAa,KAAK,QAAS,6BAA6B,KAAM;AACzJ;AAAA,MAEF,KAAK;AAAA,MACL,KAAK;AACH,aAAK,UAAU,MAAM,QAAQ;AAC7B,aAAK,UAAU,MAAM,SAAS,QAAQ,MAAM,QAAU,KAAK,aAAa,KAAK,QAAS,iCAAiC,KAAM;AAC7H,aAAK,UAAU,MAAM,YAAY,UAAU,OAAO,GAAG,QAAU,KAAK,aAAa,KAAK,QAAS,6BAA6B,KAAM;AAClI;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAGQ,oBAAoB;AAC1B,SAAK,OAAO,KAAK,WAAW;AAC5B,SAAK,gBAAgB,KAAK,KAAK,OAAO,QAAM,CAAC,GAAG,QAAQ;AAExD,SAAK,SAAS,KAAK,aAAa;AAChC,SAAK,cAAc;AAGnB,SAAK,eAAe,KAAK,MAAM,KAAK,qBAAqB,CAAC;AAAA,EAC5D;AAAA,EAEQ,qBAAqB,cAAsB,WAAmC;AACpF,QAAI,UAAU;AACd,UAAM,WAAW,cAAc,YAAY,IAAI;AAC/C,QAAI,YAAY,eAAe;AAE/B,WAAO,eAAe,KAAK,KAAK,QAAQ;AACtC,gBAAU,KAAK,KAAK,SAAS,KAAK;AAElC,UAAI,YAAY,MAAM;AAEpB,YAAI,cAAc,WAAW;AAC3B,oBAAU,KAAK,cAAc,CAAC;AAAA,QAChC,OAAO;AACL,oBAAU,KAAK,cAAc,KAAK,cAAc,SAAS,CAAC;AAAA,QAC5D;AACA;AAAA,MACF;AAEA,UAAI,CAAC,QAAQ,UAAU;AACrB;AAAA,MACF;AAEA,mBAAa;AAAA,IACf;AAEA,WAAO;AAAA,EACT;AAAA,EASQ,sBAAsB;AAC5B,QAAI,KAAK,qBAAqB,CAAC,KAAK,qBAAqB;AACvD,WAAK,8BAA8B,KAAK,gBAAgB,KAAK,KAAK;AAClE,WAAK,4BAA4B,KAAK,gBAAgB;AAAA,IACxD;AAAA,EACF;AAAA,EAEQ,kBAAkB;AACxB,WAAO,KAAK,gBAAgB,IAAI,KAAK,IAAI,eAAe,KAAK,IAAI,cAAc,KAAK;AAAA,EACtF;AAAA,EAEQ,kBAAkB;AACxB,WAAO,KAAK,SAAS,IAAI,MAAM,QAAQ,CAAC,KAAK,IAAI,aAAa,KAAK,IAAI;AAAA,EACzE;AAAA,EAGA,uBAAuB;AACrB,QAAI,KAAK,kBAAkB;AACzB,WAAK,oBAAoB;AAAA,IAC3B,OAAO;AAML,WAAK,oBACH,CAAC,KAAK,EAAE,SAAS,KAAK,SAAS,KAAK,KAAK,IAAI,cAAc,KAAK,IAAI,cAAc;AAAA,IACtF;AAEA,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAGA,gBAAgB;AACd,UAAM,MAAM,KAAK,aAAa;AAE9B,QAAI,KAAK;AACP,WAAK,UAAU,MAAM,UAAU;AAC/B,WAAK,oBAAoB;AAAA,IAC3B,OAAO;AACL,WAAK,UAAU,MAAM,UAAU;AAAA,IACjC;AAAA,EACF;AAAA;AAAA,EAGA,KAAK,OAAe;AAClB,UAAM,MAAM,KAAK,KAAK,KAAK,QAAM,GAAG,UAAU,KAAK;AAEnD,QAAI,KAAK;AACP,WAAK,aAAa,KAAK,EAAE,gBAAgB,SAAS,CAAC;AAAA,IACrD;AAAA,EACF;AAAA,EAEA,SAAS;AAEP,WAAO;AAAA;AAAA;AAAA,gBAGK,SAAS;AAAA,MACf,aAAa;AAAA,MACb,kBAAkB,KAAK,cAAc;AAAA,MACrC,oBAAoB,KAAK,cAAc;AAAA,MACvC,kBAAkB,KAAK,cAAc;AAAA,MACrC,kBAAkB,KAAK,SAAS,IAAI,MAAM;AAAA,MAC1C,kCAAkC,KAAK;AAAA,MACvC,wBAAwB,KAAK;AAAA,MAC7B,oBAAoB,KAAK;AAAA,IAC3B,CAAC,CAAC;AAAA,iBACO,KAAK,WAAW;AAAA,mBACd,KAAK,aAAa;AAAA;AAAA;AAAA,YAGzB,KAAK,oBACH;AAAA;AAAA;AAAA;AAAA,0BAIY,SAAS;AAAA,MACf,4BAA4B;AAAA,MAC5B,mCAAmC;AAAA,MACnC,2CAA2C,KAAK;AAAA,IAClD,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,0BAKM,KAAK,SAAS,KAAK,eAAe,CAAC;AAAA,2BAClC,KAAK,mBAAmB;AAAA;AAAA,kBAGrC,EAAE;AAAA;AAAA,mDAEmC,KAAK,mBAAmB;AAAA;AAAA;AAAA,iDAG1B,KAAK,aAAa;AAAA,+CACpB,KAAK,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,YAKzD,KAAK,oBACH;AAAA;AAAA;AAAA;AAAA,0BAIY,SAAS;AAAA,MACf,4BAA4B;AAAA,MAC5B,iCAAiC;AAAA,MACjC,yCAAyC,KAAK;AAAA,IAChD,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,0BAKM,KAAK,SAAS,KAAK,aAAa,CAAC;AAAA,2BAChC,KAAK,iBAAiB;AAAA;AAAA,kBAGnC,EAAE;AAAA;AAAA;AAAA,gEAGgD,KAAK,iBAAiB;AAAA;AAAA;AAAA,EAGpF;AACF;AA3fqB,YACZ,SAAyB,CAAC,0BAAiB,0BAAQ,+BAAY;AADnD,YAEZ,eAAe,EAAE,mBAAmB,eAAe,uBAAuB,kBAAkB;AAU9E;AAAA,EAApB,MAAM,YAAY;AAAA,GAZA,YAYE;AACM;AAAA,EAA1B,MAAM,kBAAkB;AAAA,GAbN,YAaQ;AACD;AAAA,EAAzB,MAAM,iBAAiB;AAAA,GAdL,YAcO;AACM;AAAA,EAA/B,MAAM,uBAAuB;AAAA,GAfX,YAea;AAEf;AAAA,EAAhB,MAAM;AAAA,GAjBY,YAiBF;AAEA;AAAA,EAAhB,MAAM;AAAA,GAnBY,YAmBF;AACA;AAAA,EAAhB,MAAM;AAAA,GApBY,YAoBF;AAGL;AAAA,EAAX,SAAS;AAAA,GAvBS,YAuBP;AAMA;AAAA,EAAX,SAAS;AAAA,GA7BS,YA6BP;AAGkD;AAAA,EAA7D,SAAS,EAAE,WAAW,sBAAsB,MAAM,QAAQ,CAAC;AAAA,GAhCzC,YAgC2C;AAGjC;AAAA,EAA5B,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,GAnCR,YAmCU;AAGA;AAAA,EAA5B,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,GAtCR,YAsCU;AAGoC;AAAA,EAAhE,SAAS,EAAE,WAAW,yBAAyB,MAAM,QAAQ,CAAC;AAAA,GAzC5C,YAyC8C;AAoVzD;AAAA,EADP,aAAa,EAAE,SAAS,KAAK,CAAC;AAAA,GA5XZ,YA6XX;AAgBR;AAAA,EADC,MAAM,oBAAoB,EAAE,sBAAsB,KAAK,CAAC;AAAA,GA5YtC,YA6YnB;AAiBA;AAAA,EADC,MAAM,aAAa,EAAE,sBAAsB,KAAK,CAAC;AAAA,GA7Z/B,YA8ZnB;",
6
+ "names": []
7
+ }