luxen-ui 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/cdn/chunks/decorate.js +1 -1
  2. package/cdn/chunks/decorate.js.map +1 -1
  3. package/cdn/chunks/map.js +2 -0
  4. package/cdn/chunks/map.js.map +1 -0
  5. package/cdn/custom-elements.json +6707 -4242
  6. package/cdn/elements/avatar/avatar.d.ts +1 -1
  7. package/cdn/elements/avatar/avatar.d.ts.map +1 -1
  8. package/cdn/elements/avatar/avatar.js +3 -3
  9. package/cdn/elements/avatar/avatar.js.map +1 -1
  10. package/cdn/elements/avatar/index.d.ts +2 -2
  11. package/cdn/elements/avatar/index.d.ts.map +1 -1
  12. package/cdn/elements/avatar/index.js +1 -1
  13. package/cdn/elements/avatar/index.js.map +1 -1
  14. package/cdn/elements/badge/badge.d.ts +1 -1
  15. package/cdn/elements/badge/badge.d.ts.map +1 -1
  16. package/cdn/elements/badge/badge.js +1 -1
  17. package/cdn/elements/badge/badge.js.map +1 -1
  18. package/cdn/elements/badge/index.d.ts +2 -2
  19. package/cdn/elements/badge/index.d.ts.map +1 -1
  20. package/cdn/elements/badge/index.js +1 -1
  21. package/cdn/elements/badge/index.js.map +1 -1
  22. package/cdn/elements/carousel/carousel.d.ts +18 -11
  23. package/cdn/elements/carousel/carousel.d.ts.map +1 -1
  24. package/cdn/elements/carousel/carousel.js +21 -20
  25. package/cdn/elements/carousel/carousel.js.map +1 -1
  26. package/cdn/elements/carousel/index.d.ts +2 -2
  27. package/cdn/elements/carousel/index.d.ts.map +1 -1
  28. package/cdn/elements/carousel/index.js +1 -1
  29. package/cdn/elements/carousel/index.js.map +1 -1
  30. package/cdn/elements/carousel-item/carousel-item.d.ts +1 -1
  31. package/cdn/elements/carousel-item/carousel-item.d.ts.map +1 -1
  32. package/cdn/elements/carousel-item/carousel-item.js +1 -1
  33. package/cdn/elements/carousel-item/carousel-item.js.map +1 -1
  34. package/cdn/elements/carousel-item/index.d.ts +2 -2
  35. package/cdn/elements/carousel-item/index.d.ts.map +1 -1
  36. package/cdn/elements/carousel-item/index.js +1 -1
  37. package/cdn/elements/carousel-item/index.js.map +1 -1
  38. package/cdn/elements/dialog/dialog.d.ts +1 -1
  39. package/cdn/elements/dialog/dialog.d.ts.map +1 -1
  40. package/cdn/elements/dialog/dialog.js +2 -2
  41. package/cdn/elements/dialog/dialog.js.map +1 -1
  42. package/cdn/elements/dialog/dialog.styles.js.map +1 -1
  43. package/cdn/elements/dialog/index.d.ts +2 -2
  44. package/cdn/elements/dialog/index.d.ts.map +1 -1
  45. package/cdn/elements/dialog/index.js +1 -1
  46. package/cdn/elements/dialog/index.js.map +1 -1
  47. package/cdn/elements/divider/divider.d.ts +1 -1
  48. package/cdn/elements/divider/divider.d.ts.map +1 -1
  49. package/cdn/elements/divider/divider.js +1 -1
  50. package/cdn/elements/divider/divider.js.map +1 -1
  51. package/cdn/elements/divider/index.d.ts +2 -2
  52. package/cdn/elements/divider/index.d.ts.map +1 -1
  53. package/cdn/elements/divider/index.js +1 -1
  54. package/cdn/elements/divider/index.js.map +1 -1
  55. package/cdn/elements/drawer/drawer.d.ts +2 -2
  56. package/cdn/elements/drawer/drawer.d.ts.map +1 -1
  57. package/cdn/elements/drawer/drawer.js +1 -1
  58. package/cdn/elements/drawer/drawer.js.map +1 -1
  59. package/cdn/elements/drawer/index.d.ts +2 -2
  60. package/cdn/elements/drawer/index.d.ts.map +1 -1
  61. package/cdn/elements/drawer/index.js +1 -1
  62. package/cdn/elements/drawer/index.js.map +1 -1
  63. package/cdn/elements/dropdown/dropdown.d.ts +7 -4
  64. package/cdn/elements/dropdown/dropdown.d.ts.map +1 -1
  65. package/cdn/elements/dropdown/dropdown.js +7 -4
  66. package/cdn/elements/dropdown/dropdown.js.map +1 -1
  67. package/cdn/elements/dropdown/index.d.ts +2 -2
  68. package/cdn/elements/dropdown/index.d.ts.map +1 -1
  69. package/cdn/elements/dropdown/index.js +1 -1
  70. package/cdn/elements/dropdown/index.js.map +1 -1
  71. package/cdn/elements/dropdown-item/dropdown-item.d.ts +1 -1
  72. package/cdn/elements/dropdown-item/dropdown-item.d.ts.map +1 -1
  73. package/cdn/elements/dropdown-item/dropdown-item.js +2 -2
  74. package/cdn/elements/dropdown-item/dropdown-item.js.map +1 -1
  75. package/cdn/elements/dropdown-item/index.d.ts +2 -2
  76. package/cdn/elements/dropdown-item/index.d.ts.map +1 -1
  77. package/cdn/elements/dropdown-item/index.js +1 -1
  78. package/cdn/elements/dropdown-item/index.js.map +1 -1
  79. package/cdn/elements/icon/icon.d.ts +1 -1
  80. package/cdn/elements/icon/icon.d.ts.map +1 -1
  81. package/cdn/elements/icon/icon.js +2 -2
  82. package/cdn/elements/icon/icon.js.map +1 -1
  83. package/cdn/elements/icon/index.d.ts +2 -2
  84. package/cdn/elements/icon/index.d.ts.map +1 -1
  85. package/cdn/elements/icon/index.js +1 -1
  86. package/cdn/elements/icon/index.js.map +1 -1
  87. package/cdn/elements/input-otp/index.d.ts +2 -2
  88. package/cdn/elements/input-otp/index.d.ts.map +1 -1
  89. package/cdn/elements/input-otp/index.js +1 -1
  90. package/cdn/elements/input-otp/index.js.map +1 -1
  91. package/cdn/elements/input-otp/input-otp.d.ts +1 -1
  92. package/cdn/elements/input-otp/input-otp.d.ts.map +1 -1
  93. package/cdn/elements/input-otp/input-otp.js +1 -1
  94. package/cdn/elements/input-otp/input-otp.js.map +1 -1
  95. package/cdn/elements/input-stepper/index.d.ts +2 -2
  96. package/cdn/elements/input-stepper/index.d.ts.map +1 -1
  97. package/cdn/elements/input-stepper/index.js +1 -1
  98. package/cdn/elements/input-stepper/index.js.map +1 -1
  99. package/cdn/elements/input-stepper/input-stepper.d.ts +1 -1
  100. package/cdn/elements/input-stepper/input-stepper.d.ts.map +1 -1
  101. package/cdn/elements/input-stepper/input-stepper.js +1 -1
  102. package/cdn/elements/input-stepper/input-stepper.js.map +1 -1
  103. package/cdn/elements/popover/index.d.ts +2 -2
  104. package/cdn/elements/popover/index.d.ts.map +1 -1
  105. package/cdn/elements/popover/index.js +1 -1
  106. package/cdn/elements/popover/index.js.map +1 -1
  107. package/cdn/elements/popover/popover.d.ts +1 -1
  108. package/cdn/elements/popover/popover.d.ts.map +1 -1
  109. package/cdn/elements/popover/popover.js +2 -2
  110. package/cdn/elements/popover/popover.js.map +1 -1
  111. package/cdn/elements/rating/index.d.ts +2 -2
  112. package/cdn/elements/rating/index.d.ts.map +1 -1
  113. package/cdn/elements/rating/index.js +1 -1
  114. package/cdn/elements/rating/index.js.map +1 -1
  115. package/cdn/elements/rating/rating.d.ts +1 -1
  116. package/cdn/elements/rating/rating.d.ts.map +1 -1
  117. package/cdn/elements/rating/rating.js +2 -2
  118. package/cdn/elements/rating/rating.js.map +1 -1
  119. package/cdn/elements/skeleton/index.d.ts +2 -2
  120. package/cdn/elements/skeleton/index.d.ts.map +1 -1
  121. package/cdn/elements/skeleton/index.js +1 -1
  122. package/cdn/elements/skeleton/index.js.map +1 -1
  123. package/cdn/elements/skeleton/skeleton.d.ts +1 -1
  124. package/cdn/elements/skeleton/skeleton.d.ts.map +1 -1
  125. package/cdn/elements/skeleton/skeleton.js +1 -1
  126. package/cdn/elements/skeleton/skeleton.js.map +1 -1
  127. package/cdn/elements/spinner/index.d.ts +2 -2
  128. package/cdn/elements/spinner/index.d.ts.map +1 -1
  129. package/cdn/elements/spinner/index.js +1 -1
  130. package/cdn/elements/spinner/index.js.map +1 -1
  131. package/cdn/elements/spinner/spinner.d.ts +1 -1
  132. package/cdn/elements/spinner/spinner.d.ts.map +1 -1
  133. package/cdn/elements/spinner/spinner.js +1 -1
  134. package/cdn/elements/spinner/spinner.js.map +1 -1
  135. package/cdn/elements/sticky-bar/index.d.ts +8 -0
  136. package/cdn/elements/sticky-bar/index.d.ts.map +1 -0
  137. package/cdn/elements/sticky-bar/index.js +2 -0
  138. package/cdn/elements/sticky-bar/index.js.map +1 -0
  139. package/cdn/elements/sticky-bar/sticky-bar.d.ts +46 -0
  140. package/cdn/elements/sticky-bar/sticky-bar.d.ts.map +1 -0
  141. package/cdn/elements/sticky-bar/sticky-bar.js +2 -0
  142. package/cdn/elements/sticky-bar/sticky-bar.js.map +1 -0
  143. package/cdn/elements/stories/index.d.ts +8 -0
  144. package/cdn/elements/stories/index.d.ts.map +1 -0
  145. package/cdn/elements/stories/index.js +2 -0
  146. package/cdn/elements/stories/index.js.map +1 -0
  147. package/cdn/elements/stories/stories.d.ts +50 -0
  148. package/cdn/elements/stories/stories.d.ts.map +1 -0
  149. package/cdn/elements/stories/stories.js +2 -0
  150. package/cdn/elements/stories/stories.js.map +1 -0
  151. package/cdn/elements/stories-viewer/index.d.ts +8 -0
  152. package/cdn/elements/stories-viewer/index.d.ts.map +1 -0
  153. package/cdn/elements/stories-viewer/index.js +2 -0
  154. package/cdn/elements/stories-viewer/index.js.map +1 -0
  155. package/cdn/elements/stories-viewer/stories-viewer.d.ts +136 -0
  156. package/cdn/elements/stories-viewer/stories-viewer.d.ts.map +1 -0
  157. package/cdn/elements/stories-viewer/stories-viewer.js +160 -0
  158. package/cdn/elements/stories-viewer/stories-viewer.js.map +1 -0
  159. package/cdn/elements/story/index.d.ts +8 -0
  160. package/cdn/elements/story/index.d.ts.map +1 -0
  161. package/cdn/elements/story/index.js +2 -0
  162. package/cdn/elements/story/index.js.map +1 -0
  163. package/cdn/elements/story/story.d.ts +48 -0
  164. package/cdn/elements/story/story.d.ts.map +1 -0
  165. package/cdn/elements/story/story.js +35 -0
  166. package/cdn/elements/story/story.js.map +1 -0
  167. package/cdn/elements/tabs/index.d.ts +2 -2
  168. package/cdn/elements/tabs/index.d.ts.map +1 -1
  169. package/cdn/elements/tabs/index.js +1 -1
  170. package/cdn/elements/tabs/index.js.map +1 -1
  171. package/cdn/elements/tabs/tabs.d.ts +1 -1
  172. package/cdn/elements/tabs/tabs.d.ts.map +1 -1
  173. package/cdn/elements/tabs/tabs.js +1 -1
  174. package/cdn/elements/tabs/tabs.js.map +1 -1
  175. package/cdn/elements/toast/index.d.ts +3 -3
  176. package/cdn/elements/toast/index.d.ts.map +1 -1
  177. package/cdn/elements/toast/index.js +1 -1
  178. package/cdn/elements/toast/index.js.map +1 -1
  179. package/cdn/elements/toast/toast.d.ts +2 -2
  180. package/cdn/elements/toast/toast.d.ts.map +1 -1
  181. package/cdn/elements/toast/toast.js +1 -1
  182. package/cdn/elements/toast/toast.js.map +1 -1
  183. package/cdn/elements/tooltip/index.d.ts +2 -2
  184. package/cdn/elements/tooltip/index.d.ts.map +1 -1
  185. package/cdn/elements/tooltip/index.js +1 -1
  186. package/cdn/elements/tooltip/index.js.map +1 -1
  187. package/cdn/elements/tooltip/tooltip.d.ts +4 -4
  188. package/cdn/elements/tooltip/tooltip.d.ts.map +1 -1
  189. package/cdn/elements/tooltip/tooltip.js +2 -2
  190. package/cdn/elements/tooltip/tooltip.js.map +1 -1
  191. package/cdn/elements/tree/index.d.ts +2 -2
  192. package/cdn/elements/tree/index.d.ts.map +1 -1
  193. package/cdn/elements/tree/index.js +1 -1
  194. package/cdn/elements/tree/index.js.map +1 -1
  195. package/cdn/elements/tree/tree.d.ts +5 -5
  196. package/cdn/elements/tree/tree.d.ts.map +1 -1
  197. package/cdn/elements/tree/tree.js +2 -2
  198. package/cdn/elements/tree/tree.js.map +1 -1
  199. package/cdn/elements/tree-item/index.d.ts +2 -2
  200. package/cdn/elements/tree-item/index.d.ts.map +1 -1
  201. package/cdn/elements/tree-item/index.js +1 -1
  202. package/cdn/elements/tree-item/index.js.map +1 -1
  203. package/cdn/elements/tree-item/tree-item.d.ts +2 -2
  204. package/cdn/elements/tree-item/tree-item.d.ts.map +1 -1
  205. package/cdn/elements/tree-item/tree-item.js +2 -2
  206. package/cdn/elements/tree-item/tree-item.js.map +1 -1
  207. package/cdn/registry.d.ts +1 -1
  208. package/cdn/registry.d.ts.map +1 -1
  209. package/cdn/registry.js.map +1 -1
  210. package/cdn/shared/controllers/popover.js.map +1 -1
  211. package/cdn/shared/luxen-form-associated-element.js +1 -1
  212. package/cdn/shared/styles/host.styles.js.map +1 -1
  213. package/cdn/styles/elements/divider.css +7 -0
  214. package/cdn/styles/elements/select.css +3 -3
  215. package/cdn/styles/elements/stories.css +63 -0
  216. package/cdn/styles/elements/story.css +192 -0
  217. package/cdn/styles/index.css +3 -0
  218. package/dist/css/elements/divider.css +7 -0
  219. package/dist/css/elements/select.css +3 -3
  220. package/dist/css/elements/stories.css +63 -0
  221. package/dist/css/elements/story.css +192 -0
  222. package/dist/css/index.css +3 -0
  223. package/dist/custom-elements.json +6707 -4242
  224. package/dist/elements/avatar/avatar.css +13 -7
  225. package/dist/elements/avatar/avatar.d.ts +1 -1
  226. package/dist/elements/avatar/avatar.d.ts.map +1 -1
  227. package/dist/elements/avatar/avatar.js +11 -11
  228. package/dist/elements/avatar/index.d.ts +2 -2
  229. package/dist/elements/avatar/index.d.ts.map +1 -1
  230. package/dist/elements/avatar/index.js +2 -2
  231. package/dist/elements/badge/badge.d.ts +1 -1
  232. package/dist/elements/badge/badge.d.ts.map +1 -1
  233. package/dist/elements/badge/badge.js +5 -5
  234. package/dist/elements/badge/index.d.ts +2 -2
  235. package/dist/elements/badge/index.d.ts.map +1 -1
  236. package/dist/elements/badge/index.js +2 -2
  237. package/dist/elements/carousel/carousel.css +7 -0
  238. package/dist/elements/carousel/carousel.d.ts +18 -11
  239. package/dist/elements/carousel/carousel.d.ts.map +1 -1
  240. package/dist/elements/carousel/carousel.js +193 -167
  241. package/dist/elements/carousel/index.d.ts +2 -2
  242. package/dist/elements/carousel/index.d.ts.map +1 -1
  243. package/dist/elements/carousel/index.js +2 -2
  244. package/dist/elements/carousel-item/carousel-item.d.ts +1 -1
  245. package/dist/elements/carousel-item/carousel-item.d.ts.map +1 -1
  246. package/dist/elements/carousel-item/carousel-item.js +2 -2
  247. package/dist/elements/carousel-item/index.d.ts +2 -2
  248. package/dist/elements/carousel-item/index.d.ts.map +1 -1
  249. package/dist/elements/carousel-item/index.js +2 -2
  250. package/dist/elements/dialog/dialog.d.ts +1 -1
  251. package/dist/elements/dialog/dialog.d.ts.map +1 -1
  252. package/dist/elements/dialog/dialog.js +9 -9
  253. package/dist/elements/dialog/index.d.ts +2 -2
  254. package/dist/elements/dialog/index.d.ts.map +1 -1
  255. package/dist/elements/dialog/index.js +2 -2
  256. package/dist/elements/divider/divider.d.ts +1 -1
  257. package/dist/elements/divider/divider.d.ts.map +1 -1
  258. package/dist/elements/divider/divider.js +3 -3
  259. package/dist/elements/divider/index.d.ts +2 -2
  260. package/dist/elements/divider/index.d.ts.map +1 -1
  261. package/dist/elements/divider/index.js +2 -2
  262. package/dist/elements/drawer/drawer.d.ts +2 -2
  263. package/dist/elements/drawer/drawer.d.ts.map +1 -1
  264. package/dist/elements/drawer/drawer.js +4 -4
  265. package/dist/elements/drawer/index.d.ts +2 -2
  266. package/dist/elements/drawer/index.d.ts.map +1 -1
  267. package/dist/elements/drawer/index.js +2 -2
  268. package/dist/elements/dropdown/dropdown.css +14 -3
  269. package/dist/elements/dropdown/dropdown.d.ts +7 -4
  270. package/dist/elements/dropdown/dropdown.d.ts.map +1 -1
  271. package/dist/elements/dropdown/dropdown.js +41 -29
  272. package/dist/elements/dropdown/index.d.ts +2 -2
  273. package/dist/elements/dropdown/index.d.ts.map +1 -1
  274. package/dist/elements/dropdown/index.js +2 -2
  275. package/dist/elements/dropdown-item/dropdown-item.d.ts +1 -1
  276. package/dist/elements/dropdown-item/dropdown-item.d.ts.map +1 -1
  277. package/dist/elements/dropdown-item/dropdown-item.js +20 -20
  278. package/dist/elements/dropdown-item/index.d.ts +2 -2
  279. package/dist/elements/dropdown-item/index.d.ts.map +1 -1
  280. package/dist/elements/dropdown-item/index.js +2 -2
  281. package/dist/elements/icon/icon.d.ts +1 -1
  282. package/dist/elements/icon/icon.d.ts.map +1 -1
  283. package/dist/elements/icon/icon.js +4 -4
  284. package/dist/elements/icon/index.d.ts +2 -2
  285. package/dist/elements/icon/index.d.ts.map +1 -1
  286. package/dist/elements/icon/index.js +2 -2
  287. package/dist/elements/input-otp/index.d.ts +2 -2
  288. package/dist/elements/input-otp/index.d.ts.map +1 -1
  289. package/dist/elements/input-otp/index.js +2 -2
  290. package/dist/elements/input-otp/input-otp.d.ts +1 -1
  291. package/dist/elements/input-otp/input-otp.d.ts.map +1 -1
  292. package/dist/elements/input-otp/input-otp.js +2 -2
  293. package/dist/elements/input-stepper/index.d.ts +2 -2
  294. package/dist/elements/input-stepper/index.d.ts.map +1 -1
  295. package/dist/elements/input-stepper/index.js +2 -2
  296. package/dist/elements/input-stepper/input-stepper.d.ts +1 -1
  297. package/dist/elements/input-stepper/input-stepper.d.ts.map +1 -1
  298. package/dist/elements/input-stepper/input-stepper.js +8 -8
  299. package/dist/elements/popover/index.d.ts +2 -2
  300. package/dist/elements/popover/index.d.ts.map +1 -1
  301. package/dist/elements/popover/index.js +2 -2
  302. package/dist/elements/popover/popover.d.ts +1 -1
  303. package/dist/elements/popover/popover.d.ts.map +1 -1
  304. package/dist/elements/popover/popover.js +33 -33
  305. package/dist/elements/rating/index.d.ts +2 -2
  306. package/dist/elements/rating/index.d.ts.map +1 -1
  307. package/dist/elements/rating/index.js +2 -2
  308. package/dist/elements/rating/rating.d.ts +1 -1
  309. package/dist/elements/rating/rating.d.ts.map +1 -1
  310. package/dist/elements/rating/rating.js +48 -48
  311. package/dist/elements/skeleton/index.d.ts +2 -2
  312. package/dist/elements/skeleton/index.d.ts.map +1 -1
  313. package/dist/elements/skeleton/index.js +2 -2
  314. package/dist/elements/skeleton/skeleton.d.ts +1 -1
  315. package/dist/elements/skeleton/skeleton.d.ts.map +1 -1
  316. package/dist/elements/skeleton/skeleton.js +1 -1
  317. package/dist/elements/spinner/index.d.ts +2 -2
  318. package/dist/elements/spinner/index.d.ts.map +1 -1
  319. package/dist/elements/spinner/index.js +2 -2
  320. package/dist/elements/spinner/spinner.d.ts +1 -1
  321. package/dist/elements/spinner/spinner.d.ts.map +1 -1
  322. package/dist/elements/spinner/spinner.js +2 -2
  323. package/dist/elements/sticky-bar/index.d.ts +8 -0
  324. package/dist/elements/sticky-bar/index.d.ts.map +1 -0
  325. package/dist/elements/sticky-bar/index.js +4 -0
  326. package/dist/elements/sticky-bar/sticky-bar.css +56 -0
  327. package/dist/elements/sticky-bar/sticky-bar.d.ts +46 -0
  328. package/dist/elements/sticky-bar/sticky-bar.d.ts.map +1 -0
  329. package/dist/elements/sticky-bar/sticky-bar.js +146 -0
  330. package/dist/elements/stories/index.d.ts +8 -0
  331. package/dist/elements/stories/index.d.ts.map +1 -0
  332. package/dist/elements/stories/index.js +4 -0
  333. package/dist/elements/stories/stories.d.ts +50 -0
  334. package/dist/elements/stories/stories.d.ts.map +1 -0
  335. package/dist/elements/stories/stories.js +113 -0
  336. package/dist/elements/stories-viewer/index.d.ts +8 -0
  337. package/dist/elements/stories-viewer/index.d.ts.map +1 -0
  338. package/dist/elements/stories-viewer/index.js +4 -0
  339. package/dist/elements/stories-viewer/stories-viewer.css +337 -0
  340. package/dist/elements/stories-viewer/stories-viewer.d.ts +136 -0
  341. package/dist/elements/stories-viewer/stories-viewer.d.ts.map +1 -0
  342. package/dist/elements/stories-viewer/stories-viewer.js +719 -0
  343. package/dist/elements/story/index.d.ts +8 -0
  344. package/dist/elements/story/index.d.ts.map +1 -0
  345. package/dist/elements/story/index.js +4 -0
  346. package/dist/elements/story/story.d.ts +48 -0
  347. package/dist/elements/story/story.d.ts.map +1 -0
  348. package/dist/elements/story/story.js +161 -0
  349. package/dist/elements/tabs/index.d.ts +2 -2
  350. package/dist/elements/tabs/index.d.ts.map +1 -1
  351. package/dist/elements/tabs/index.js +2 -2
  352. package/dist/elements/tabs/tabs.d.ts +1 -1
  353. package/dist/elements/tabs/tabs.d.ts.map +1 -1
  354. package/dist/elements/tabs/tabs.js +5 -5
  355. package/dist/elements/toast/index.d.ts +3 -3
  356. package/dist/elements/toast/index.d.ts.map +1 -1
  357. package/dist/elements/toast/index.js +3 -3
  358. package/dist/elements/toast/toast.d.ts +2 -2
  359. package/dist/elements/toast/toast.d.ts.map +1 -1
  360. package/dist/elements/toast/toast.js +5 -5
  361. package/dist/elements/tooltip/index.d.ts +2 -2
  362. package/dist/elements/tooltip/index.d.ts.map +1 -1
  363. package/dist/elements/tooltip/index.js +2 -2
  364. package/dist/elements/tooltip/tooltip.css +15 -7
  365. package/dist/elements/tooltip/tooltip.d.ts +4 -4
  366. package/dist/elements/tooltip/tooltip.d.ts.map +1 -1
  367. package/dist/elements/tooltip/tooltip.js +32 -32
  368. package/dist/elements/tree/index.d.ts +2 -2
  369. package/dist/elements/tree/index.d.ts.map +1 -1
  370. package/dist/elements/tree/index.js +2 -2
  371. package/dist/elements/tree/tree.d.ts +5 -5
  372. package/dist/elements/tree/tree.d.ts.map +1 -1
  373. package/dist/elements/tree/tree.js +14 -16
  374. package/dist/elements/tree-item/index.d.ts +2 -2
  375. package/dist/elements/tree-item/index.d.ts.map +1 -1
  376. package/dist/elements/tree-item/index.js +2 -2
  377. package/dist/elements/tree-item/tree-item.d.ts +2 -2
  378. package/dist/elements/tree-item/tree-item.d.ts.map +1 -1
  379. package/dist/elements/tree-item/tree-item.js +28 -28
  380. package/dist/registry.d.ts +1 -1
  381. package/dist/registry.d.ts.map +1 -1
  382. package/dist/skills/luxen-ui/SKILL.md +1 -0
  383. package/dist/skills/luxen-ui/references/select.md +1 -1
  384. package/dist/skills/luxen-ui/references/sticky-bar.md +148 -0
  385. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"icon.js","names":[],"sources":["../../../../../node_modules/.pnpm/iconify-icon@3.0.2/node_modules/iconify-icon/dist/iconify-icon.mjs","../../../src/html/elements/icon/icon.css?inline","../../../src/html/elements/icon/icon.ts"],"sourcesContent":["/**\n* (c) Iconify\n*\n* For the full copyright and license information, please view the license.txt\n* files at https://github.com/iconify/iconify\n*\n* Licensed under MIT.\n*\n* @license MIT\n* @version 3.0.2\n*/\n/** Default values for dimensions */\nconst defaultIconDimensions = Object.freeze({\n\tleft: 0,\n\ttop: 0,\n\twidth: 16,\n\theight: 16\n});\n/** Default values for transformations */\nconst defaultIconTransformations = Object.freeze({\n\trotate: 0,\n\tvFlip: false,\n\thFlip: false\n});\n/** Default values for all optional IconifyIcon properties */\nconst defaultIconProps = Object.freeze({\n\t...defaultIconDimensions,\n\t...defaultIconTransformations\n});\n/** Default values for all properties used in ExtendedIconifyIcon */\nconst defaultExtendedIconProps = Object.freeze({\n\t...defaultIconProps,\n\tbody: \"\",\n\thidden: false\n});\n\n/**\n* Default icon customisations values\n*/\nconst defaultIconSizeCustomisations = Object.freeze({\n\twidth: null,\n\theight: null\n});\nconst defaultIconCustomisations = Object.freeze({\n\t...defaultIconSizeCustomisations,\n\t...defaultIconTransformations\n});\n\n/**\n* Get rotation value\n*/\nfunction rotateFromString(value, defaultValue = 0) {\n\tconst units = value.replace(/^-?[0-9.]*/, \"\");\n\tfunction cleanup(value$1) {\n\t\twhile (value$1 < 0) value$1 += 4;\n\t\treturn value$1 % 4;\n\t}\n\tif (units === \"\") {\n\t\tconst num = parseInt(value);\n\t\treturn isNaN(num) ? 0 : cleanup(num);\n\t} else if (units !== value) {\n\t\tlet split = 0;\n\t\tswitch (units) {\n\t\t\tcase \"%\":\n\t\t\t\tsplit = 25;\n\t\t\t\tbreak;\n\t\t\tcase \"deg\": split = 90;\n\t\t}\n\t\tif (split) {\n\t\t\tlet num = parseFloat(value.slice(0, value.length - units.length));\n\t\t\tif (isNaN(num)) return 0;\n\t\t\tnum = num / split;\n\t\t\treturn num % 1 === 0 ? cleanup(num) : 0;\n\t\t}\n\t}\n\treturn defaultValue;\n}\n\nconst separator = /[\\s,]+/;\n/**\n* Apply \"flip\" string to icon customisations\n*/\nfunction flipFromString(custom, flip) {\n\tflip.split(separator).forEach((str) => {\n\t\tswitch (str.trim()) {\n\t\t\tcase \"horizontal\":\n\t\t\t\tcustom.hFlip = true;\n\t\t\t\tbreak;\n\t\t\tcase \"vertical\":\n\t\t\t\tcustom.vFlip = true;\n\t\t\t\tbreak;\n\t\t}\n\t});\n}\n\nconst defaultCustomisations = {\n ...defaultIconCustomisations,\n preserveAspectRatio: '',\n};\n/**\n * Get customisations\n */\nfunction getCustomisations(node) {\n const customisations = {\n ...defaultCustomisations,\n };\n const attr = (key, def) => node.getAttribute(key) || def;\n // Dimensions\n customisations.width = attr('width', null);\n customisations.height = attr('height', null);\n // Rotation\n customisations.rotate = rotateFromString(attr('rotate', ''));\n // Flip\n flipFromString(customisations, attr('flip', ''));\n // SVG attributes\n customisations.preserveAspectRatio = attr('preserveAspectRatio', attr('preserveaspectratio', ''));\n return customisations;\n}\n/**\n * Check if customisations have been updated\n */\nfunction haveCustomisationsChanged(value1, value2) {\n for (const key in defaultCustomisations) {\n if (value1[key] !== value2[key]) {\n return true;\n }\n }\n return false;\n}\n\n/**\n* Expression to test part of icon name.\n*\n* Used when loading icons from Iconify API due to project naming convension.\n* Ignored when using custom icon sets - convension does not apply.\n*/\nconst matchIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;\n/**\n* Convert string icon name to IconifyIconName object.\n*/\nconst stringToIcon = (value, validate, allowSimpleName, provider = \"\") => {\n\tconst colonSeparated = value.split(\":\");\n\tif (value.slice(0, 1) === \"@\") {\n\t\tif (colonSeparated.length < 2 || colonSeparated.length > 3) return null;\n\t\tprovider = colonSeparated.shift().slice(1);\n\t}\n\tif (colonSeparated.length > 3 || !colonSeparated.length) return null;\n\tif (colonSeparated.length > 1) {\n\t\tconst name$1 = colonSeparated.pop();\n\t\tconst prefix = colonSeparated.pop();\n\t\tconst result = {\n\t\t\tprovider: colonSeparated.length > 0 ? colonSeparated[0] : provider,\n\t\t\tprefix,\n\t\t\tname: name$1\n\t\t};\n\t\treturn validate && !validateIconName(result) ? null : result;\n\t}\n\tconst name = colonSeparated[0];\n\tconst dashSeparated = name.split(\"-\");\n\tif (dashSeparated.length > 1) {\n\t\tconst result = {\n\t\t\tprovider,\n\t\t\tprefix: dashSeparated.shift(),\n\t\t\tname: dashSeparated.join(\"-\")\n\t\t};\n\t\treturn validate && !validateIconName(result) ? null : result;\n\t}\n\tif (allowSimpleName && provider === \"\") {\n\t\tconst result = {\n\t\t\tprovider,\n\t\t\tprefix: \"\",\n\t\t\tname\n\t\t};\n\t\treturn validate && !validateIconName(result, allowSimpleName) ? null : result;\n\t}\n\treturn null;\n};\n/**\n* Check if icon is valid.\n*\n* This function is not part of stringToIcon because validation is not needed for most code.\n*/\nconst validateIconName = (icon, allowSimpleName) => {\n\tif (!icon) return false;\n\treturn !!((allowSimpleName && icon.prefix === \"\" || !!icon.prefix) && !!icon.name);\n};\n\n/**\n* Resolve icon set icons\n*\n* Returns parent icon for each icon\n*/\nfunction getIconsTree(data, names) {\n\tconst icons = data.icons;\n\tconst aliases = data.aliases || Object.create(null);\n\tconst resolved = Object.create(null);\n\tfunction resolve(name) {\n\t\tif (icons[name]) return resolved[name] = [];\n\t\tif (!(name in resolved)) {\n\t\t\tresolved[name] = null;\n\t\t\tconst parent = aliases[name] && aliases[name].parent;\n\t\t\tconst value = parent && resolve(parent);\n\t\t\tif (value) resolved[name] = [parent].concat(value);\n\t\t}\n\t\treturn resolved[name];\n\t}\n\t(Object.keys(icons).concat(Object.keys(aliases))).forEach(resolve);\n\treturn resolved;\n}\n\n/**\n* Merge transformations\n*/\nfunction mergeIconTransformations(obj1, obj2) {\n\tconst result = {};\n\tif (!obj1.hFlip !== !obj2.hFlip) result.hFlip = true;\n\tif (!obj1.vFlip !== !obj2.vFlip) result.vFlip = true;\n\tconst rotate = ((obj1.rotate || 0) + (obj2.rotate || 0)) % 4;\n\tif (rotate) result.rotate = rotate;\n\treturn result;\n}\n\n/**\n* Merge icon and alias\n*\n* Can also be used to merge default values and icon\n*/\nfunction mergeIconData(parent, child) {\n\tconst result = mergeIconTransformations(parent, child);\n\tfor (const key in defaultExtendedIconProps) if (key in defaultIconTransformations) {\n\t\tif (key in parent && !(key in result)) result[key] = defaultIconTransformations[key];\n\t} else if (key in child) result[key] = child[key];\n\telse if (key in parent) result[key] = parent[key];\n\treturn result;\n}\n\n/**\n* Get icon data, using prepared aliases tree\n*/\nfunction internalGetIconData(data, name, tree) {\n\tconst icons = data.icons;\n\tconst aliases = data.aliases || Object.create(null);\n\tlet currentProps = {};\n\tfunction parse(name$1) {\n\t\tcurrentProps = mergeIconData(icons[name$1] || aliases[name$1], currentProps);\n\t}\n\tparse(name);\n\ttree.forEach(parse);\n\treturn mergeIconData(data, currentProps);\n}\n\n/**\n* Extract icons from an icon set\n*\n* Returns list of icons that were found in icon set\n*/\nfunction parseIconSet(data, callback) {\n\tconst names = [];\n\tif (typeof data !== \"object\" || typeof data.icons !== \"object\") return names;\n\tif (data.not_found instanceof Array) data.not_found.forEach((name) => {\n\t\tcallback(name, null);\n\t\tnames.push(name);\n\t});\n\tconst tree = getIconsTree(data);\n\tfor (const name in tree) {\n\t\tconst item = tree[name];\n\t\tif (item) {\n\t\t\tcallback(name, internalGetIconData(data, name, item));\n\t\t\tnames.push(name);\n\t\t}\n\t}\n\treturn names;\n}\n\n/**\n* Optional properties\n*/\nconst optionalPropertyDefaults = {\n\tprovider: \"\",\n\taliases: {},\n\tnot_found: {},\n\t...defaultIconDimensions\n};\n/**\n* Check props\n*/\nfunction checkOptionalProps(item, defaults) {\n\tfor (const prop in defaults) if (prop in item && typeof item[prop] !== typeof defaults[prop]) return false;\n\treturn true;\n}\n/**\n* Validate icon set, return it as IconifyJSON on success, null on failure\n*\n* Unlike validateIconSet(), this function is very basic.\n* It does not throw exceptions, it does not check metadata, it does not fix stuff.\n*/\nfunction quicklyValidateIconSet(obj) {\n\tif (typeof obj !== \"object\" || obj === null) return null;\n\tconst data = obj;\n\tif (typeof data.prefix !== \"string\" || !obj.icons || typeof obj.icons !== \"object\") return null;\n\tif (!checkOptionalProps(obj, optionalPropertyDefaults)) return null;\n\tconst icons = data.icons;\n\tfor (const name in icons) {\n\t\tconst icon = icons[name];\n\t\tif (!name || typeof icon.body !== \"string\" || !checkOptionalProps(icon, defaultExtendedIconProps)) return null;\n\t}\n\tconst aliases = data.aliases || Object.create(null);\n\tfor (const name in aliases) {\n\t\tconst icon = aliases[name];\n\t\tconst parent = icon.parent;\n\t\tif (!name || typeof parent !== \"string\" || !icons[parent] && !aliases[parent] || !checkOptionalProps(icon, defaultExtendedIconProps)) return null;\n\t}\n\treturn data;\n}\n\n/**\n* Storage by provider and prefix\n*/\nconst dataStorage = Object.create(null);\n/**\n* Create new storage\n*/\nfunction newStorage(provider, prefix) {\n\treturn {\n\t\tprovider,\n\t\tprefix,\n\t\ticons: Object.create(null),\n\t\tmissing: /* @__PURE__ */ new Set()\n\t};\n}\n/**\n* Get storage for provider and prefix\n*/\nfunction getStorage(provider, prefix) {\n\tconst providerStorage = dataStorage[provider] || (dataStorage[provider] = Object.create(null));\n\treturn providerStorage[prefix] || (providerStorage[prefix] = newStorage(provider, prefix));\n}\n/**\n* Add icon set to storage\n*\n* Returns array of added icons\n*/\nfunction addIconSet(storage, data) {\n\tif (!quicklyValidateIconSet(data)) return [];\n\treturn parseIconSet(data, (name, icon) => {\n\t\tif (icon) storage.icons[name] = icon;\n\t\telse storage.missing.add(name);\n\t});\n}\n/**\n* Add icon to storage\n*/\nfunction addIconToStorage(storage, name, icon) {\n\ttry {\n\t\tif (typeof icon.body === \"string\") {\n\t\t\tstorage.icons[name] = { ...icon };\n\t\t\treturn true;\n\t\t}\n\t} catch (err) {}\n\treturn false;\n}\n/**\n* List available icons\n*/\nfunction listIcons$1(provider, prefix) {\n\tlet allIcons = [];\n\t(typeof provider === \"string\" ? [provider] : Object.keys(dataStorage)).forEach((provider$1) => {\n\t\t(typeof provider$1 === \"string\" && typeof prefix === \"string\" ? [prefix] : Object.keys(dataStorage[provider$1] || {})).forEach((prefix$1) => {\n\t\t\tconst storage = getStorage(provider$1, prefix$1);\n\t\t\tallIcons = allIcons.concat(Object.keys(storage.icons).map((name) => (provider$1 !== \"\" ? \"@\" + provider$1 + \":\" : \"\") + prefix$1 + \":\" + name));\n\t\t});\n\t});\n\treturn allIcons;\n}\n\n/**\n* Allow storing icons without provider or prefix, making it possible to store icons like \"home\"\n*/\nlet simpleNames = false;\nfunction allowSimpleNames(allow) {\n\tif (typeof allow === \"boolean\") simpleNames = allow;\n\treturn simpleNames;\n}\n/**\n* Get icon data\n*\n* Returns:\n* - IconifyIcon on success, object directly from storage so don't modify it\n* - null if icon is marked as missing (returned in `not_found` property from API, so don't bother sending API requests)\n* - undefined if icon is missing in storage\n*/\nfunction getIconData(name) {\n\tconst icon = typeof name === \"string\" ? stringToIcon(name, true, simpleNames) : name;\n\tif (icon) {\n\t\tconst storage = getStorage(icon.provider, icon.prefix);\n\t\tconst iconName = icon.name;\n\t\treturn storage.icons[iconName] || (storage.missing.has(iconName) ? null : void 0);\n\t}\n}\n/**\n* Add one icon\n*/\nfunction addIcon$1(name, data) {\n\tconst icon = stringToIcon(name, true, simpleNames);\n\tif (!icon) return false;\n\tconst storage = getStorage(icon.provider, icon.prefix);\n\tif (data) return addIconToStorage(storage, icon.name, data);\n\telse {\n\t\tstorage.missing.add(icon.name);\n\t\treturn true;\n\t}\n}\n/**\n* Add icon set\n*/\nfunction addCollection$1(data, provider) {\n\tif (typeof data !== \"object\") return false;\n\tif (typeof provider !== \"string\") provider = data.provider || \"\";\n\tif (simpleNames && !provider && !data.prefix) {\n\t\tlet added = false;\n\t\tif (quicklyValidateIconSet(data)) {\n\t\t\tdata.prefix = \"\";\n\t\t\tparseIconSet(data, (name, icon) => {\n\t\t\t\tif (addIcon$1(name, icon)) added = true;\n\t\t\t});\n\t\t}\n\t\treturn added;\n\t}\n\tconst prefix = data.prefix;\n\tif (!validateIconName({\n\t\tprefix,\n\t\tname: \"a\"\n\t})) return false;\n\treturn !!addIconSet(getStorage(provider, prefix), data);\n}\n/**\n* Check if icon data is available\n*/\nfunction iconLoaded$1(name) {\n\treturn !!getIconData(name);\n}\n/**\n* Get full icon\n*/\nfunction getIcon$1(name) {\n\tconst result = getIconData(name);\n\treturn result ? {\n\t\t...defaultIconProps,\n\t\t...result\n\t} : result;\n}\n\n/**\n* Remove callback\n*/\nfunction removeCallback(storages, id) {\n\tstorages.forEach((storage) => {\n\t\tconst items = storage.loaderCallbacks;\n\t\tif (items) storage.loaderCallbacks = items.filter((row) => row.id !== id);\n\t});\n}\n/**\n* Update all callbacks for provider and prefix\n*/\nfunction updateCallbacks(storage) {\n\tif (!storage.pendingCallbacksFlag) {\n\t\tstorage.pendingCallbacksFlag = true;\n\t\tsetTimeout(() => {\n\t\t\tstorage.pendingCallbacksFlag = false;\n\t\t\tconst items = storage.loaderCallbacks ? storage.loaderCallbacks.slice(0) : [];\n\t\t\tif (!items.length) return;\n\t\t\tlet hasPending = false;\n\t\t\tconst provider = storage.provider;\n\t\t\tconst prefix = storage.prefix;\n\t\t\titems.forEach((item) => {\n\t\t\t\tconst icons = item.icons;\n\t\t\t\tconst oldLength = icons.pending.length;\n\t\t\t\ticons.pending = icons.pending.filter((icon) => {\n\t\t\t\t\tif (icon.prefix !== prefix) return true;\n\t\t\t\t\tconst name = icon.name;\n\t\t\t\t\tif (storage.icons[name]) icons.loaded.push({\n\t\t\t\t\t\tprovider,\n\t\t\t\t\t\tprefix,\n\t\t\t\t\t\tname\n\t\t\t\t\t});\n\t\t\t\t\telse if (storage.missing.has(name)) icons.missing.push({\n\t\t\t\t\t\tprovider,\n\t\t\t\t\t\tprefix,\n\t\t\t\t\t\tname\n\t\t\t\t\t});\n\t\t\t\t\telse {\n\t\t\t\t\t\thasPending = true;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t\t\tif (icons.pending.length !== oldLength) {\n\t\t\t\t\tif (!hasPending) removeCallback([storage], item.id);\n\t\t\t\t\titem.callback(icons.loaded.slice(0), icons.missing.slice(0), icons.pending.slice(0), item.abort);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n/**\n* Unique id counter for callbacks\n*/\nlet idCounter = 0;\n/**\n* Add callback\n*/\nfunction storeCallback(callback, icons, pendingSources) {\n\tconst id = idCounter++;\n\tconst abort = removeCallback.bind(null, pendingSources, id);\n\tif (!icons.pending.length) return abort;\n\tconst item = {\n\t\tid,\n\t\ticons,\n\t\tcallback,\n\t\tabort\n\t};\n\tpendingSources.forEach((storage) => {\n\t\t(storage.loaderCallbacks || (storage.loaderCallbacks = [])).push(item);\n\t});\n\treturn abort;\n}\n\n/**\n* Check if icons have been loaded\n*/\nfunction sortIcons(icons) {\n\tconst result = {\n\t\tloaded: [],\n\t\tmissing: [],\n\t\tpending: []\n\t};\n\tconst storage = Object.create(null);\n\ticons.sort((a, b) => {\n\t\tif (a.provider !== b.provider) return a.provider.localeCompare(b.provider);\n\t\tif (a.prefix !== b.prefix) return a.prefix.localeCompare(b.prefix);\n\t\treturn a.name.localeCompare(b.name);\n\t});\n\tlet lastIcon = {\n\t\tprovider: \"\",\n\t\tprefix: \"\",\n\t\tname: \"\"\n\t};\n\ticons.forEach((icon) => {\n\t\tif (lastIcon.name === icon.name && lastIcon.prefix === icon.prefix && lastIcon.provider === icon.provider) return;\n\t\tlastIcon = icon;\n\t\tconst provider = icon.provider;\n\t\tconst prefix = icon.prefix;\n\t\tconst name = icon.name;\n\t\tconst providerStorage = storage[provider] || (storage[provider] = Object.create(null));\n\t\tconst localStorage = providerStorage[prefix] || (providerStorage[prefix] = getStorage(provider, prefix));\n\t\tlet list;\n\t\tif (name in localStorage.icons) list = result.loaded;\n\t\telse if (prefix === \"\" || localStorage.missing.has(name)) list = result.missing;\n\t\telse list = result.pending;\n\t\tconst item = {\n\t\t\tprovider,\n\t\t\tprefix,\n\t\t\tname\n\t\t};\n\t\tlist.push(item);\n\t});\n\treturn result;\n}\n\n/**\n* Local storate types and entries\n*/\nconst storage = Object.create(null);\n/**\n* Set API module\n*/\nfunction setAPIModule(provider, item) {\n\tstorage[provider] = item;\n}\n/**\n* Get API module\n*/\nfunction getAPIModule(provider) {\n\treturn storage[provider] || storage[\"\"];\n}\n\n/**\n* Convert icons list from string/icon mix to icons and validate them\n*/\nfunction listToIcons(list, validate = true, simpleNames = false) {\n\tconst result = [];\n\tlist.forEach((item) => {\n\t\tconst icon = typeof item === \"string\" ? stringToIcon(item, validate, simpleNames) : item;\n\t\tif (icon) result.push(icon);\n\t});\n\treturn result;\n}\n\n/**\n* Create full API configuration from partial data\n*/\nfunction createAPIConfig(source) {\n\tlet resources;\n\tif (typeof source.resources === \"string\") resources = [source.resources];\n\telse {\n\t\tresources = source.resources;\n\t\tif (!(resources instanceof Array) || !resources.length) return null;\n\t}\n\treturn {\n\t\tresources,\n\t\tpath: source.path || \"/\",\n\t\tmaxURL: source.maxURL || 500,\n\t\trotate: source.rotate || 750,\n\t\ttimeout: source.timeout || 5e3,\n\t\trandom: source.random === true,\n\t\tindex: source.index || 0,\n\t\tdataAfterTimeout: source.dataAfterTimeout !== false\n\t};\n}\n/**\n* Local storage\n*/\nconst configStorage = Object.create(null);\n/**\n* Redundancy for API servers.\n*\n* API should have very high uptime because of implemented redundancy at server level, but\n* sometimes bad things happen. On internet 100% uptime is not possible.\n*\n* There could be routing problems. Server might go down for whatever reason, but it takes\n* few minutes to detect that downtime, so during those few minutes API might not be accessible.\n*\n* This script has some redundancy to mitigate possible network issues.\n*\n* If one host cannot be reached in 'rotate' (750 by default) ms, script will try to retrieve\n* data from different host. Hosts have different configurations, pointing to different\n* API servers hosted at different providers.\n*/\nconst fallBackAPISources = [\"https://api.simplesvg.com\", \"https://api.unisvg.com\"];\nconst fallBackAPI = [];\nwhile (fallBackAPISources.length > 0) if (fallBackAPISources.length === 1) fallBackAPI.push(fallBackAPISources.shift());\nelse if (Math.random() > .5) fallBackAPI.push(fallBackAPISources.shift());\nelse fallBackAPI.push(fallBackAPISources.pop());\nconfigStorage[\"\"] = createAPIConfig({ resources: [\"https://api.iconify.design\"].concat(fallBackAPI) });\n/**\n* Add custom config for provider\n*/\nfunction addAPIProvider$1(provider, customConfig) {\n\tconst config = createAPIConfig(customConfig);\n\tif (config === null) return false;\n\tconfigStorage[provider] = config;\n\treturn true;\n}\n/**\n* Get API configuration\n*/\nfunction getAPIConfig(provider) {\n\treturn configStorage[provider];\n}\n/**\n* List API providers\n*/\nfunction listAPIProviders() {\n\treturn Object.keys(configStorage);\n}\n\n/**\n* Default RedundancyConfig for API calls\n*/\nconst defaultConfig = {\n\tresources: [],\n\tindex: 0,\n\ttimeout: 2e3,\n\trotate: 750,\n\trandom: false,\n\tdataAfterTimeout: false\n};\n\n/**\n* Send query\n*/\nfunction sendQuery(config, payload, query, done) {\n\tconst resourcesCount = config.resources.length;\n\tconst startIndex = config.random ? Math.floor(Math.random() * resourcesCount) : config.index;\n\tlet resources;\n\tif (config.random) {\n\t\tlet list = config.resources.slice(0);\n\t\tresources = [];\n\t\twhile (list.length > 1) {\n\t\t\tconst nextIndex = Math.floor(Math.random() * list.length);\n\t\t\tresources.push(list[nextIndex]);\n\t\t\tlist = list.slice(0, nextIndex).concat(list.slice(nextIndex + 1));\n\t\t}\n\t\tresources = resources.concat(list);\n\t} else resources = config.resources.slice(startIndex).concat(config.resources.slice(0, startIndex));\n\tconst startTime = Date.now();\n\tlet status = \"pending\";\n\tlet queriesSent = 0;\n\tlet lastError;\n\tlet timer = null;\n\tlet queue = [];\n\tlet doneCallbacks = [];\n\tif (typeof done === \"function\") doneCallbacks.push(done);\n\t/**\n\t* Reset timer\n\t*/\n\tfunction resetTimer() {\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimer = null;\n\t\t}\n\t}\n\t/**\n\t* Abort everything\n\t*/\n\tfunction abort() {\n\t\tif (status === \"pending\") status = \"aborted\";\n\t\tresetTimer();\n\t\tqueue.forEach((item) => {\n\t\t\tif (item.status === \"pending\") item.status = \"aborted\";\n\t\t});\n\t\tqueue = [];\n\t}\n\t/**\n\t* Add / replace callback to call when execution is complete.\n\t* This can be used to abort pending query implementations when query is complete or aborted.\n\t*/\n\tfunction subscribe(callback, overwrite) {\n\t\tif (overwrite) doneCallbacks = [];\n\t\tif (typeof callback === \"function\") doneCallbacks.push(callback);\n\t}\n\t/**\n\t* Get query status\n\t*/\n\tfunction getQueryStatus() {\n\t\treturn {\n\t\t\tstartTime,\n\t\t\tpayload,\n\t\t\tstatus,\n\t\t\tqueriesSent,\n\t\t\tqueriesPending: queue.length,\n\t\t\tsubscribe,\n\t\t\tabort\n\t\t};\n\t}\n\t/**\n\t* Fail query\n\t*/\n\tfunction failQuery() {\n\t\tstatus = \"failed\";\n\t\tdoneCallbacks.forEach((callback) => {\n\t\t\tcallback(void 0, lastError);\n\t\t});\n\t}\n\t/**\n\t* Clear queue\n\t*/\n\tfunction clearQueue() {\n\t\tqueue.forEach((item) => {\n\t\t\tif (item.status === \"pending\") item.status = \"aborted\";\n\t\t});\n\t\tqueue = [];\n\t}\n\t/**\n\t* Got response from module\n\t*/\n\tfunction moduleResponse(item, response, data) {\n\t\tconst isError = response !== \"success\";\n\t\tqueue = queue.filter((queued) => queued !== item);\n\t\tswitch (status) {\n\t\t\tcase \"pending\": break;\n\t\t\tcase \"failed\":\n\t\t\t\tif (isError || !config.dataAfterTimeout) return;\n\t\t\t\tbreak;\n\t\t\tdefault: return;\n\t\t}\n\t\tif (response === \"abort\") {\n\t\t\tlastError = data;\n\t\t\tfailQuery();\n\t\t\treturn;\n\t\t}\n\t\tif (isError) {\n\t\t\tlastError = data;\n\t\t\tif (!queue.length) if (!resources.length) failQuery();\n\t\t\telse execNext();\n\t\t\treturn;\n\t\t}\n\t\tresetTimer();\n\t\tclearQueue();\n\t\tif (!config.random) {\n\t\t\tconst index = config.resources.indexOf(item.resource);\n\t\t\tif (index !== -1 && index !== config.index) config.index = index;\n\t\t}\n\t\tstatus = \"completed\";\n\t\tdoneCallbacks.forEach((callback) => {\n\t\t\tcallback(data);\n\t\t});\n\t}\n\t/**\n\t* Execute next query\n\t*/\n\tfunction execNext() {\n\t\tif (status !== \"pending\") return;\n\t\tresetTimer();\n\t\tconst resource = resources.shift();\n\t\tif (resource === void 0) {\n\t\t\tif (queue.length) {\n\t\t\t\ttimer = setTimeout(() => {\n\t\t\t\t\tresetTimer();\n\t\t\t\t\tif (status === \"pending\") {\n\t\t\t\t\t\tclearQueue();\n\t\t\t\t\t\tfailQuery();\n\t\t\t\t\t}\n\t\t\t\t}, config.timeout);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfailQuery();\n\t\t\treturn;\n\t\t}\n\t\tconst item = {\n\t\t\tstatus: \"pending\",\n\t\t\tresource,\n\t\t\tcallback: (status$1, data) => {\n\t\t\t\tmoduleResponse(item, status$1, data);\n\t\t\t}\n\t\t};\n\t\tqueue.push(item);\n\t\tqueriesSent++;\n\t\ttimer = setTimeout(execNext, config.rotate);\n\t\tquery(resource, payload, item.callback);\n\t}\n\tsetTimeout(execNext);\n\treturn getQueryStatus;\n}\n\n/**\n* Redundancy instance\n*/\nfunction initRedundancy(cfg) {\n\tconst config = {\n\t\t...defaultConfig,\n\t\t...cfg\n\t};\n\tlet queries = [];\n\t/**\n\t* Remove aborted and completed queries\n\t*/\n\tfunction cleanup() {\n\t\tqueries = queries.filter((item) => item().status === \"pending\");\n\t}\n\t/**\n\t* Send query\n\t*/\n\tfunction query(payload, queryCallback, doneCallback) {\n\t\tconst query$1 = sendQuery(config, payload, queryCallback, (data, error) => {\n\t\t\tcleanup();\n\t\t\tif (doneCallback) doneCallback(data, error);\n\t\t});\n\t\tqueries.push(query$1);\n\t\treturn query$1;\n\t}\n\t/**\n\t* Find instance\n\t*/\n\tfunction find(callback) {\n\t\treturn queries.find((value) => {\n\t\t\treturn callback(value);\n\t\t}) || null;\n\t}\n\treturn {\n\t\tquery,\n\t\tfind,\n\t\tsetIndex: (index) => {\n\t\t\tconfig.index = index;\n\t\t},\n\t\tgetIndex: () => config.index,\n\t\tcleanup\n\t};\n}\n\nfunction emptyCallback$1() {}\nconst redundancyCache = Object.create(null);\n/**\n* Get Redundancy instance for provider\n*/\nfunction getRedundancyCache(provider) {\n\tif (!redundancyCache[provider]) {\n\t\tconst config = getAPIConfig(provider);\n\t\tif (!config) return;\n\t\tredundancyCache[provider] = {\n\t\t\tconfig,\n\t\t\tredundancy: initRedundancy(config)\n\t\t};\n\t}\n\treturn redundancyCache[provider];\n}\n/**\n* Send API query\n*/\nfunction sendAPIQuery(target, query, callback) {\n\tlet redundancy;\n\tlet send;\n\tif (typeof target === \"string\") {\n\t\tconst api = getAPIModule(target);\n\t\tif (!api) {\n\t\t\tcallback(void 0, 424);\n\t\t\treturn emptyCallback$1;\n\t\t}\n\t\tsend = api.send;\n\t\tconst cached = getRedundancyCache(target);\n\t\tif (cached) redundancy = cached.redundancy;\n\t} else {\n\t\tconst config = createAPIConfig(target);\n\t\tif (config) {\n\t\t\tredundancy = initRedundancy(config);\n\t\t\tconst api = getAPIModule(target.resources ? target.resources[0] : \"\");\n\t\t\tif (api) send = api.send;\n\t\t}\n\t}\n\tif (!redundancy || !send) {\n\t\tcallback(void 0, 424);\n\t\treturn emptyCallback$1;\n\t}\n\treturn redundancy.query(query, send, callback)().abort;\n}\n\nfunction emptyCallback() {}\n/**\n* Function called when new icons have been loaded\n*/\nfunction loadedNewIcons(storage) {\n\tif (!storage.iconsLoaderFlag) {\n\t\tstorage.iconsLoaderFlag = true;\n\t\tsetTimeout(() => {\n\t\t\tstorage.iconsLoaderFlag = false;\n\t\t\tupdateCallbacks(storage);\n\t\t});\n\t}\n}\n/**\n* Check icon names for API\n*/\nfunction checkIconNamesForAPI(icons) {\n\tconst valid = [];\n\tconst invalid = [];\n\ticons.forEach((name) => {\n\t\t(name.match(matchIconName) ? valid : invalid).push(name);\n\t});\n\treturn {\n\t\tvalid,\n\t\tinvalid\n\t};\n}\n/**\n* Parse loader response\n*/\nfunction parseLoaderResponse(storage, icons, data) {\n\tfunction checkMissing() {\n\t\tconst pending = storage.pendingIcons;\n\t\ticons.forEach((name) => {\n\t\t\tif (pending) pending.delete(name);\n\t\t\tif (!storage.icons[name]) storage.missing.add(name);\n\t\t});\n\t}\n\tif (data && typeof data === \"object\") try {\n\t\tif (!addIconSet(storage, data).length) {\n\t\t\tcheckMissing();\n\t\t\treturn;\n\t\t}\n\t} catch (err) {\n\t\tconsole.error(err);\n\t}\n\tcheckMissing();\n\tloadedNewIcons(storage);\n}\n/**\n* Handle response that can be async\n*/\nfunction parsePossiblyAsyncResponse(response, callback) {\n\tif (response instanceof Promise) response.then((data) => {\n\t\tcallback(data);\n\t}).catch(() => {\n\t\tcallback(null);\n\t});\n\telse callback(response);\n}\n/**\n* Load icons\n*/\nfunction loadNewIcons(storage, icons) {\n\tif (!storage.iconsToLoad) storage.iconsToLoad = icons;\n\telse storage.iconsToLoad = storage.iconsToLoad.concat(icons).sort();\n\tif (!storage.iconsQueueFlag) {\n\t\tstorage.iconsQueueFlag = true;\n\t\tsetTimeout(() => {\n\t\t\tstorage.iconsQueueFlag = false;\n\t\t\tconst { provider, prefix } = storage;\n\t\t\tconst icons$1 = storage.iconsToLoad;\n\t\t\tdelete storage.iconsToLoad;\n\t\t\tif (!icons$1 || !icons$1.length) return;\n\t\t\tconst customIconLoader = storage.loadIcon;\n\t\t\tif (storage.loadIcons && (icons$1.length > 1 || !customIconLoader)) {\n\t\t\t\tparsePossiblyAsyncResponse(storage.loadIcons(icons$1, prefix, provider), (data) => {\n\t\t\t\t\tparseLoaderResponse(storage, icons$1, data);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (customIconLoader) {\n\t\t\t\ticons$1.forEach((name) => {\n\t\t\t\t\tparsePossiblyAsyncResponse(customIconLoader(name, prefix, provider), (data) => {\n\t\t\t\t\t\tparseLoaderResponse(storage, [name], data ? {\n\t\t\t\t\t\t\tprefix,\n\t\t\t\t\t\t\ticons: { [name]: data }\n\t\t\t\t\t\t} : null);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { valid, invalid } = checkIconNamesForAPI(icons$1);\n\t\t\tif (invalid.length) parseLoaderResponse(storage, invalid, null);\n\t\t\tif (!valid.length) return;\n\t\t\tconst api = prefix.match(matchIconName) ? getAPIModule(provider) : null;\n\t\t\tif (!api) {\n\t\t\t\tparseLoaderResponse(storage, valid, null);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tapi.prepare(provider, prefix, valid).forEach((item) => {\n\t\t\t\tsendAPIQuery(provider, item, (data) => {\n\t\t\t\t\tparseLoaderResponse(storage, item.icons, data);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n}\n/**\n* Load icons\n*/\nconst loadIcons$1 = (icons, callback) => {\n\tconst sortedIcons = sortIcons(listToIcons(icons, true, allowSimpleNames()));\n\tif (!sortedIcons.pending.length) {\n\t\tlet callCallback = true;\n\t\tif (callback) setTimeout(() => {\n\t\t\tif (callCallback) callback(sortedIcons.loaded, sortedIcons.missing, sortedIcons.pending, emptyCallback);\n\t\t});\n\t\treturn () => {\n\t\t\tcallCallback = false;\n\t\t};\n\t}\n\tconst newIcons = Object.create(null);\n\tconst sources = [];\n\tlet lastProvider, lastPrefix;\n\tsortedIcons.pending.forEach((icon) => {\n\t\tconst { provider, prefix } = icon;\n\t\tif (prefix === lastPrefix && provider === lastProvider) return;\n\t\tlastProvider = provider;\n\t\tlastPrefix = prefix;\n\t\tsources.push(getStorage(provider, prefix));\n\t\tconst providerNewIcons = newIcons[provider] || (newIcons[provider] = Object.create(null));\n\t\tif (!providerNewIcons[prefix]) providerNewIcons[prefix] = [];\n\t});\n\tsortedIcons.pending.forEach((icon) => {\n\t\tconst { provider, prefix, name } = icon;\n\t\tconst storage = getStorage(provider, prefix);\n\t\tconst pendingQueue = storage.pendingIcons || (storage.pendingIcons = /* @__PURE__ */ new Set());\n\t\tif (!pendingQueue.has(name)) {\n\t\t\tpendingQueue.add(name);\n\t\t\tnewIcons[provider][prefix].push(name);\n\t\t}\n\t});\n\tsources.forEach((storage) => {\n\t\tconst list = newIcons[storage.provider][storage.prefix];\n\t\tif (list.length) loadNewIcons(storage, list);\n\t});\n\treturn callback ? storeCallback(callback, sortedIcons, sources) : emptyCallback;\n};\n/**\n* Load one icon using Promise\n*/\nconst loadIcon$1 = (icon) => {\n\treturn new Promise((fulfill, reject) => {\n\t\tconst iconObj = typeof icon === \"string\" ? stringToIcon(icon, true) : icon;\n\t\tif (!iconObj) {\n\t\t\treject(icon);\n\t\t\treturn;\n\t\t}\n\t\tloadIcons$1([iconObj || icon], (loaded) => {\n\t\t\tif (loaded.length && iconObj) {\n\t\t\t\tconst data = getIconData(iconObj);\n\t\t\t\tif (data) {\n\t\t\t\t\tfulfill({\n\t\t\t\t\t\t...defaultIconProps,\n\t\t\t\t\t\t...data\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\treject(icon);\n\t\t});\n\t});\n};\n\n/**\n * Test icon string\n */\nfunction testIconObject(value) {\n try {\n const obj = typeof value === 'string' ? JSON.parse(value) : value;\n if (typeof obj.body === 'string') {\n return {\n ...obj,\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (err) {\n //\n }\n}\n\n/**\n * Parse icon value, load if needed\n */\nfunction parseIconValue(value, onload) {\n if (typeof value === 'object') {\n const data = testIconObject(value);\n return {\n data,\n value,\n };\n }\n if (typeof value !== 'string') {\n // Invalid value\n return {\n value,\n };\n }\n // Check for JSON\n if (value.includes('{')) {\n const data = testIconObject(value);\n if (data) {\n return {\n data,\n value,\n };\n }\n }\n // Parse icon name\n const name = stringToIcon(value, true, true);\n if (!name) {\n return {\n value,\n };\n }\n // Valid icon name: check if data is available\n const data = getIconData(name);\n // Icon data exists or icon has no prefix. Do not load icon from API if icon has no prefix\n if (data !== undefined || !name.prefix) {\n return {\n value,\n name,\n data, // could be 'null' -> icon is missing\n };\n }\n // Load icon\n const loading = loadIcons$1([name], () => onload(value, name, getIconData(name)));\n return {\n value,\n name,\n loading,\n };\n}\n\n// Check for Safari\nlet isBuggedSafari = false;\ntry {\n isBuggedSafari = navigator.vendor.indexOf('Apple') === 0;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n}\ncatch (err) {\n //\n}\n/**\n * Get render mode\n */\nfunction getRenderMode(body, mode) {\n switch (mode) {\n // Force mode\n case 'svg':\n case 'bg':\n case 'mask':\n return mode;\n }\n // Check for animation, use 'style' for animated icons, unless browser is Safari\n // (only <a>, which should be ignored or animations start with '<a')\n if (mode !== 'style' &&\n (isBuggedSafari || body.indexOf('<a') === -1)) {\n // Render <svg>\n return 'svg';\n }\n // Use background or mask\n return body.indexOf('currentColor') === -1 ? 'bg' : 'mask';\n}\n\n/**\n* Regular expressions for calculating dimensions\n*/\nconst unitsSplit = /(-?[0-9.]*[0-9]+[0-9.]*)/g;\nconst unitsTest = /^-?[0-9.]*[0-9]+[0-9.]*$/g;\nfunction calculateSize$1(size, ratio, precision) {\n\tif (ratio === 1) return size;\n\tprecision = precision || 100;\n\tif (typeof size === \"number\") return Math.ceil(size * ratio * precision) / precision;\n\tif (typeof size !== \"string\") return size;\n\tconst oldParts = size.split(unitsSplit);\n\tif (oldParts === null || !oldParts.length) return size;\n\tconst newParts = [];\n\tlet code = oldParts.shift();\n\tlet isNumber = unitsTest.test(code);\n\twhile (true) {\n\t\tif (isNumber) {\n\t\t\tconst num = parseFloat(code);\n\t\t\tif (isNaN(num)) newParts.push(code);\n\t\t\telse newParts.push(Math.ceil(num * ratio * precision) / precision);\n\t\t} else newParts.push(code);\n\t\tcode = oldParts.shift();\n\t\tif (code === void 0) return newParts.join(\"\");\n\t\tisNumber = !isNumber;\n\t}\n}\n\nfunction splitSVGDefs(content, tag = \"defs\") {\n\tlet defs = \"\";\n\tconst index = content.indexOf(\"<\" + tag);\n\twhile (index >= 0) {\n\t\tconst start = content.indexOf(\">\", index);\n\t\tconst end = content.indexOf(\"</\" + tag);\n\t\tif (start === -1 || end === -1) break;\n\t\tconst endEnd = content.indexOf(\">\", end);\n\t\tif (endEnd === -1) break;\n\t\tdefs += content.slice(start + 1, end).trim();\n\t\tcontent = content.slice(0, index).trim() + content.slice(endEnd + 1);\n\t}\n\treturn {\n\t\tdefs,\n\t\tcontent\n\t};\n}\n/**\n* Merge defs and content\n*/\nfunction mergeDefsAndContent(defs, content) {\n\treturn defs ? \"<defs>\" + defs + \"</defs>\" + content : content;\n}\n/**\n* Wrap SVG content, without wrapping definitions\n*/\nfunction wrapSVGContent(body, start, end) {\n\tconst split = splitSVGDefs(body);\n\treturn mergeDefsAndContent(split.defs, start + split.content + end);\n}\n\n/**\n* Check if value should be unset. Allows multiple keywords\n*/\nconst isUnsetKeyword = (value) => value === \"unset\" || value === \"undefined\" || value === \"none\";\n/**\n* Get SVG attributes and content from icon + customisations\n*\n* Does not generate style to make it compatible with frameworks that use objects for style, such as React.\n* Instead, it generates 'inline' value. If true, rendering engine should add verticalAlign: -0.125em to icon.\n*\n* Customisations should be normalised by platform specific parser.\n* Result should be converted to <svg> by platform specific parser.\n* Use replaceIDs to generate unique IDs for body.\n*/\nfunction iconToSVG(icon, customisations) {\n\tconst fullIcon = {\n\t\t...defaultIconProps,\n\t\t...icon\n\t};\n\tconst fullCustomisations = {\n\t\t...defaultIconCustomisations,\n\t\t...customisations\n\t};\n\tconst box = {\n\t\tleft: fullIcon.left,\n\t\ttop: fullIcon.top,\n\t\twidth: fullIcon.width,\n\t\theight: fullIcon.height\n\t};\n\tlet body = fullIcon.body;\n\t[fullIcon, fullCustomisations].forEach((props) => {\n\t\tconst transformations = [];\n\t\tconst hFlip = props.hFlip;\n\t\tconst vFlip = props.vFlip;\n\t\tlet rotation = props.rotate;\n\t\tif (hFlip) if (vFlip) rotation += 2;\n\t\telse {\n\t\t\ttransformations.push(\"translate(\" + (box.width + box.left).toString() + \" \" + (0 - box.top).toString() + \")\");\n\t\t\ttransformations.push(\"scale(-1 1)\");\n\t\t\tbox.top = box.left = 0;\n\t\t}\n\t\telse if (vFlip) {\n\t\t\ttransformations.push(\"translate(\" + (0 - box.left).toString() + \" \" + (box.height + box.top).toString() + \")\");\n\t\t\ttransformations.push(\"scale(1 -1)\");\n\t\t\tbox.top = box.left = 0;\n\t\t}\n\t\tlet tempValue;\n\t\tif (rotation < 0) rotation -= Math.floor(rotation / 4) * 4;\n\t\trotation = rotation % 4;\n\t\tswitch (rotation) {\n\t\t\tcase 1:\n\t\t\t\ttempValue = box.height / 2 + box.top;\n\t\t\t\ttransformations.unshift(\"rotate(90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\");\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\ttransformations.unshift(\"rotate(180 \" + (box.width / 2 + box.left).toString() + \" \" + (box.height / 2 + box.top).toString() + \")\");\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\ttempValue = box.width / 2 + box.left;\n\t\t\t\ttransformations.unshift(\"rotate(-90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\");\n\t\t\t\tbreak;\n\t\t}\n\t\tif (rotation % 2 === 1) {\n\t\t\tif (box.left !== box.top) {\n\t\t\t\ttempValue = box.left;\n\t\t\t\tbox.left = box.top;\n\t\t\t\tbox.top = tempValue;\n\t\t\t}\n\t\t\tif (box.width !== box.height) {\n\t\t\t\ttempValue = box.width;\n\t\t\t\tbox.width = box.height;\n\t\t\t\tbox.height = tempValue;\n\t\t\t}\n\t\t}\n\t\tif (transformations.length) body = wrapSVGContent(body, \"<g transform=\\\"\" + transformations.join(\" \") + \"\\\">\", \"</g>\");\n\t});\n\tconst customisationsWidth = fullCustomisations.width;\n\tconst customisationsHeight = fullCustomisations.height;\n\tconst boxWidth = box.width;\n\tconst boxHeight = box.height;\n\tlet width;\n\tlet height;\n\tif (customisationsWidth === null) {\n\t\theight = customisationsHeight === null ? \"1em\" : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n\t\twidth = calculateSize$1(height, boxWidth / boxHeight);\n\t} else {\n\t\twidth = customisationsWidth === \"auto\" ? boxWidth : customisationsWidth;\n\t\theight = customisationsHeight === null ? calculateSize$1(width, boxHeight / boxWidth) : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n\t}\n\tconst attributes = {};\n\tconst setAttr = (prop, value) => {\n\t\tif (!isUnsetKeyword(value)) attributes[prop] = value.toString();\n\t};\n\tsetAttr(\"width\", width);\n\tsetAttr(\"height\", height);\n\tconst viewBox = [\n\t\tbox.left,\n\t\tbox.top,\n\t\tboxWidth,\n\t\tboxHeight\n\t];\n\tattributes.viewBox = viewBox.join(\" \");\n\treturn {\n\t\tattributes,\n\t\tviewBox,\n\t\tbody\n\t};\n}\n\n/**\n* Generate <svg>\n*/\nfunction iconToHTML$1(body, attributes) {\n\tlet renderAttribsHTML = body.indexOf(\"xlink:\") === -1 ? \"\" : \" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"\";\n\tfor (const attr in attributes) renderAttribsHTML += \" \" + attr + \"=\\\"\" + attributes[attr] + \"\\\"\";\n\treturn \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\"\" + renderAttribsHTML + \">\" + body + \"</svg>\";\n}\n\n/**\n* Encode SVG for use in url()\n*\n* Short alternative to encodeURIComponent() that encodes only stuff used in SVG, generating\n* smaller code.\n*/\nfunction encodeSVGforURL(svg) {\n\treturn svg.replace(/\"/g, \"'\").replace(/%/g, \"%25\").replace(/#/g, \"%23\").replace(/</g, \"%3C\").replace(/>/g, \"%3E\").replace(/\\s+/g, \" \");\n}\n/**\n* Generate data: URL from SVG\n*/\nfunction svgToData(svg) {\n\treturn \"data:image/svg+xml,\" + encodeSVGforURL(svg);\n}\n/**\n* Generate url() from SVG\n*/\nfunction svgToURL$1(svg) {\n\treturn \"url(\\\"\" + svgToData(svg) + \"\\\")\";\n}\n\nconst detectFetch = () => {\n\tlet callback;\n\ttry {\n\t\tcallback = fetch;\n\t\tif (typeof callback === \"function\") return callback;\n\t} catch (err) {}\n};\n/**\n* Fetch function\n*/\nlet fetchModule = detectFetch();\n/**\n* Set custom fetch() function\n*/\nfunction setFetch(fetch$1) {\n\tfetchModule = fetch$1;\n}\n/**\n* Get fetch() function. Used by Icon Finder Core\n*/\nfunction getFetch() {\n\treturn fetchModule;\n}\n/**\n* Calculate maximum icons list length for prefix\n*/\nfunction calculateMaxLength(provider, prefix) {\n\tconst config = getAPIConfig(provider);\n\tif (!config) return 0;\n\tlet result;\n\tif (!config.maxURL) result = 0;\n\telse {\n\t\tlet maxHostLength = 0;\n\t\tconfig.resources.forEach((item) => {\n\t\t\tconst host = item;\n\t\t\tmaxHostLength = Math.max(maxHostLength, host.length);\n\t\t});\n\t\tconst url = prefix + \".json?icons=\";\n\t\tresult = config.maxURL - maxHostLength - config.path.length - url.length;\n\t}\n\treturn result;\n}\n/**\n* Should query be aborted, based on last HTTP status\n*/\nfunction shouldAbort(status) {\n\treturn status === 404;\n}\n/**\n* Prepare params\n*/\nconst prepare = (provider, prefix, icons) => {\n\tconst results = [];\n\tconst maxLength = calculateMaxLength(provider, prefix);\n\tconst type = \"icons\";\n\tlet item = {\n\t\ttype,\n\t\tprovider,\n\t\tprefix,\n\t\ticons: []\n\t};\n\tlet length = 0;\n\ticons.forEach((name, index) => {\n\t\tlength += name.length + 1;\n\t\tif (length >= maxLength && index > 0) {\n\t\t\tresults.push(item);\n\t\t\titem = {\n\t\t\t\ttype,\n\t\t\t\tprovider,\n\t\t\t\tprefix,\n\t\t\t\ticons: []\n\t\t\t};\n\t\t\tlength = name.length;\n\t\t}\n\t\titem.icons.push(name);\n\t});\n\tresults.push(item);\n\treturn results;\n};\n/**\n* Get path\n*/\nfunction getPath(provider) {\n\tif (typeof provider === \"string\") {\n\t\tconst config = getAPIConfig(provider);\n\t\tif (config) return config.path;\n\t}\n\treturn \"/\";\n}\n/**\n* Load icons\n*/\nconst send = (host, params, callback) => {\n\tif (!fetchModule) {\n\t\tcallback(\"abort\", 424);\n\t\treturn;\n\t}\n\tlet path = getPath(params.provider);\n\tswitch (params.type) {\n\t\tcase \"icons\": {\n\t\t\tconst prefix = params.prefix;\n\t\t\tconst iconsList = params.icons.join(\",\");\n\t\t\tconst urlParams = new URLSearchParams({ icons: iconsList });\n\t\t\tpath += prefix + \".json?\" + urlParams.toString();\n\t\t\tbreak;\n\t\t}\n\t\tcase \"custom\": {\n\t\t\tconst uri = params.uri;\n\t\t\tpath += uri.slice(0, 1) === \"/\" ? uri.slice(1) : uri;\n\t\t\tbreak;\n\t\t}\n\t\tdefault:\n\t\t\tcallback(\"abort\", 400);\n\t\t\treturn;\n\t}\n\tlet defaultError = 503;\n\tfetchModule(host + path).then((response) => {\n\t\tconst status = response.status;\n\t\tif (status !== 200) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tcallback(shouldAbort(status) ? \"abort\" : \"next\", status);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tdefaultError = 501;\n\t\treturn response.json();\n\t}).then((data) => {\n\t\tif (typeof data !== \"object\" || data === null) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (data === 404) callback(\"abort\", data);\n\t\t\t\telse callback(\"next\", defaultError);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tsetTimeout(() => {\n\t\t\tcallback(\"success\", data);\n\t\t});\n\t}).catch(() => {\n\t\tcallback(\"next\", defaultError);\n\t});\n};\n/**\n* Export module\n*/\nconst fetchAPIModule = {\n\tprepare,\n\tsend\n};\n\n/**\n* Set custom loader for multiple icons\n*/\nfunction setCustomIconsLoader$1(loader, prefix, provider) {\n\tgetStorage(provider || \"\", prefix).loadIcons = loader;\n}\n/**\n* Set custom loader for one icon\n*/\nfunction setCustomIconLoader$1(loader, prefix, provider) {\n\tgetStorage(provider || \"\", prefix).loadIcon = loader;\n}\n\n/**\n * Attribute to add\n */\nconst nodeAttr = 'data-style';\n/**\n * Custom style to add to each node\n */\nlet customStyle = '';\n/**\n * Set custom style to add to all components\n *\n * Affects only components rendered after function call\n */\nfunction appendCustomStyle(style) {\n customStyle = style;\n}\n/**\n * Add/update style node\n */\nfunction updateStyle(parent, inline) {\n // Get node, create if needed\n let styleNode = Array.from(parent.childNodes).find((node) => node.hasAttribute &&\n node.hasAttribute(nodeAttr));\n if (!styleNode) {\n styleNode = document.createElement('style');\n styleNode.setAttribute(nodeAttr, nodeAttr);\n parent.appendChild(styleNode);\n }\n // Update content\n styleNode.textContent =\n ':host{display:inline-block;vertical-align:' +\n (inline ? '-0.125em' : '0') +\n '}span,svg{display:block;margin:auto}' +\n customStyle;\n}\n\n// Core\n/**\n * Get functions and initialise stuff\n */\nfunction exportFunctions() {\n /**\n * Initialise stuff\n */\n // Set API module\n setAPIModule('', fetchAPIModule);\n // Allow simple icon names\n allowSimpleNames(true);\n let _window;\n try {\n _window = window;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (err) {\n //\n }\n if (_window) {\n // Load icons from global \"IconifyPreload\"\n if (_window.IconifyPreload !== void 0) {\n const preload = _window.IconifyPreload;\n const err = 'Invalid IconifyPreload syntax.';\n if (typeof preload === 'object' && preload !== null) {\n (preload instanceof Array ? preload : [preload]).forEach((item) => {\n try {\n if (\n // Check if item is an object and not null/array\n typeof item !== 'object' ||\n item === null ||\n item instanceof Array ||\n // Check for 'icons' and 'prefix'\n typeof item.icons !== 'object' ||\n typeof item.prefix !== 'string' ||\n // Add icon set\n !addCollection$1(item)) {\n console.error(err);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (e) {\n console.error(err);\n }\n });\n }\n }\n // Set API from global \"IconifyProviders\"\n if (_window.IconifyProviders !== void 0) {\n const providers = _window.IconifyProviders;\n if (typeof providers === 'object' && providers !== null) {\n for (const key in providers) {\n const err = 'IconifyProviders[' + key + '] is invalid.';\n try {\n const value = providers[key];\n if (typeof value !== 'object' ||\n !value ||\n value.resources === void 0) {\n continue;\n }\n if (!addAPIProvider$1(key, value)) {\n console.error(err);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (e) {\n console.error(err);\n }\n }\n }\n }\n }\n const _api = {\n getAPIConfig,\n setAPIModule,\n sendAPIQuery,\n setFetch,\n getFetch,\n listAPIProviders,\n };\n return {\n iconLoaded: iconLoaded$1,\n getIcon: getIcon$1,\n listIcons: listIcons$1,\n addIcon: addIcon$1,\n addCollection: addCollection$1,\n calculateSize: calculateSize$1,\n buildIcon: iconToSVG,\n iconToHTML: iconToHTML$1,\n svgToURL: svgToURL$1,\n loadIcons: loadIcons$1,\n loadIcon: loadIcon$1,\n addAPIProvider: addAPIProvider$1,\n setCustomIconLoader: setCustomIconLoader$1,\n setCustomIconsLoader: setCustomIconsLoader$1,\n appendCustomStyle,\n _api,\n };\n}\n\n// List of properties to apply\nconst monotoneProps = {\n 'background-color': 'currentColor',\n};\nconst coloredProps = {\n 'background-color': 'transparent',\n};\n// Dynamically add common props to variables above\nconst propsToAdd = {\n image: 'var(--svg)',\n repeat: 'no-repeat',\n size: '100% 100%',\n};\nconst propsToAddTo = {\n '-webkit-mask': monotoneProps,\n 'mask': monotoneProps,\n 'background': coloredProps,\n};\nfor (const prefix in propsToAddTo) {\n const list = propsToAddTo[prefix];\n for (const prop in propsToAdd) {\n list[prefix + '-' + prop] = propsToAdd[prop];\n }\n}\n/**\n * Fix size: add 'px' to numbers\n */\nfunction fixSize(value) {\n return value ? value + (value.match(/^[-0-9.]+$/) ? 'px' : '') : 'inherit';\n}\n/**\n * Render node as <span>\n */\nfunction renderSPAN(data, icon, useMask) {\n const node = document.createElement('span');\n // Body\n let body = data.body;\n if (body.indexOf('<a') !== -1) {\n // Animated SVG: add something to fix timing bug\n body += '<!-- ' + Date.now() + ' -->';\n }\n // Generate SVG as URL\n const renderAttribs = data.attributes;\n const html = iconToHTML$1(body, {\n ...renderAttribs,\n width: icon.width + '',\n height: icon.height + '',\n });\n const url = svgToURL$1(html);\n // Generate style\n const svgStyle = node.style;\n const styles = {\n '--svg': url,\n 'width': fixSize(renderAttribs.width),\n 'height': fixSize(renderAttribs.height),\n ...(useMask ? monotoneProps : coloredProps),\n };\n // Apply style\n for (const prop in styles) {\n svgStyle.setProperty(prop, styles[prop]);\n }\n return node;\n}\n\nlet policy;\n/**\n* Attempt to create policy\n*/\nfunction createPolicy() {\n\ttry {\n\t\tpolicy = window.trustedTypes.createPolicy(\"iconify\", { createHTML: (s) => s });\n\t} catch (err) {\n\t\tpolicy = null;\n\t}\n}\n/**\n* Clean up value for innerHTML assignment\n*\n* This code doesn't actually clean up anything.\n* It is intended be used with Iconify icon data, which has already been validated\n*/\nfunction cleanUpInnerHTML(html) {\n\tif (policy === void 0) createPolicy();\n\treturn policy ? policy.createHTML(html) : html;\n}\n\n/**\n * Render node as <svg>\n */\nfunction renderSVG(data) {\n const node = document.createElement('span');\n // Add style if needed\n const attr = data.attributes;\n let style = '';\n if (!attr.width) {\n style = 'width: inherit;';\n }\n if (!attr.height) {\n style += 'height: inherit;';\n }\n if (style) {\n attr.style = style;\n }\n // Generate SVG\n const html = iconToHTML$1(data.body, attr);\n node.innerHTML = cleanUpInnerHTML(html);\n return node.firstChild;\n}\n\n/**\n * Find icon node\n */\nfunction findIconElement(parent) {\n return Array.from(parent.childNodes).find((node) => {\n const tag = node.tagName &&\n node.tagName.toUpperCase();\n return tag === 'SPAN' || tag === 'SVG';\n });\n}\n/**\n * Render icon\n */\nfunction renderIcon(parent, state) {\n const iconData = state.icon.data;\n const customisations = state.customisations;\n // Render icon\n const renderData = iconToSVG(iconData, customisations);\n if (customisations.preserveAspectRatio) {\n renderData.attributes['preserveAspectRatio'] =\n customisations.preserveAspectRatio;\n }\n const mode = state.renderedMode;\n let node;\n switch (mode) {\n case 'svg':\n node = renderSVG(renderData);\n break;\n default:\n node = renderSPAN(renderData, {\n ...defaultIconProps,\n ...iconData,\n }, mode === 'mask');\n }\n // Set element\n const oldNode = findIconElement(parent);\n if (oldNode) {\n // Replace old element\n if (node.tagName === 'SPAN' && oldNode.tagName === node.tagName) {\n // Swap style instead of whole node\n oldNode.setAttribute('style', node.getAttribute('style'));\n }\n else {\n parent.replaceChild(node, oldNode);\n }\n }\n else {\n // Add new element\n parent.appendChild(node);\n }\n}\n\n/**\n * Set state to PendingState\n */\nfunction setPendingState(icon, inline, lastState) {\n const lastRender = lastState &&\n (lastState.rendered\n ? lastState\n : lastState.lastRender);\n return {\n rendered: false,\n inline,\n icon,\n lastRender,\n };\n}\n\n/**\n * Register 'iconify-icon' component, if it does not exist\n */\nfunction defineIconifyIcon(name = 'iconify-icon') {\n // Check for custom elements registry and HTMLElement\n let customElements;\n let ParentClass;\n try {\n customElements = window.customElements;\n ParentClass = window.HTMLElement;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (err) {\n return;\n }\n // Make sure registry and HTMLElement exist\n if (!customElements || !ParentClass) {\n return;\n }\n // Check for duplicate\n const ConflictingClass = customElements.get(name);\n if (ConflictingClass) {\n return ConflictingClass;\n }\n // All attributes\n const attributes = [\n // Icon\n 'icon',\n // Mode\n 'mode',\n 'inline',\n 'noobserver',\n // Customisations\n 'width',\n 'height',\n 'rotate',\n 'flip',\n ];\n /**\n * Component class\n */\n const IconifyIcon = class extends ParentClass {\n // Root\n _shadowRoot;\n // Initialised\n _initialised = false;\n // Icon state\n _state;\n // Attributes check queued\n _checkQueued = false;\n // Connected\n _connected = false;\n // Observer\n _observer = null;\n _visible = true;\n /**\n * Constructor\n */\n constructor() {\n super();\n // Attach shadow DOM\n const root = (this._shadowRoot = this.attachShadow({\n mode: 'open',\n }));\n // Add style\n const inline = this.hasAttribute('inline');\n updateStyle(root, inline);\n // Create empty state\n this._state = setPendingState({\n value: '',\n }, inline);\n // Queue icon render\n this._queueCheck();\n }\n /**\n * Connected to DOM\n */\n connectedCallback() {\n this._connected = true;\n this.startObserver();\n }\n /**\n * Disconnected from DOM\n */\n disconnectedCallback() {\n this._connected = false;\n this.stopObserver();\n }\n /**\n * Observed attributes\n */\n static get observedAttributes() {\n return attributes.slice(0);\n }\n /**\n * Observed properties that are different from attributes\n *\n * Experimental! Need to test with various frameworks that support it\n */\n /*\n static get properties() {\n return {\n inline: {\n type: Boolean,\n reflect: true,\n },\n // Not listing other attributes because they are strings or combination\n // of string and another type. Cannot have multiple types\n };\n }\n */\n /**\n * Attribute has changed\n */\n attributeChangedCallback(name) {\n switch (name) {\n case 'inline': {\n // Update immediately: not affected by other attributes\n const newInline = this.hasAttribute('inline');\n const state = this._state;\n if (newInline !== state.inline) {\n // Update style if inline mode changed\n state.inline = newInline;\n updateStyle(this._shadowRoot, newInline);\n }\n break;\n }\n case 'noobserver': {\n const value = this.hasAttribute('noobserver');\n if (value) {\n this.startObserver();\n }\n else {\n this.stopObserver();\n }\n break;\n }\n default:\n // Queue check for other attributes\n this._queueCheck();\n }\n }\n /**\n * Get/set icon\n */\n get icon() {\n const value = this.getAttribute('icon');\n if (value && value.slice(0, 1) === '{') {\n try {\n return JSON.parse(value);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (err) {\n //\n }\n }\n return value;\n }\n set icon(value) {\n if (typeof value === 'object') {\n value = JSON.stringify(value);\n }\n this.setAttribute('icon', value);\n }\n /**\n * Get/set inline\n */\n get inline() {\n return this.hasAttribute('inline');\n }\n set inline(value) {\n if (value) {\n this.setAttribute('inline', 'true');\n }\n else {\n this.removeAttribute('inline');\n }\n }\n /**\n * Get/set observer\n */\n get observer() {\n return this.hasAttribute('observer');\n }\n set observer(value) {\n if (value) {\n this.setAttribute('observer', 'true');\n }\n else {\n this.removeAttribute('observer');\n }\n }\n /**\n * Restart animation\n */\n restartAnimation() {\n const state = this._state;\n if (state.rendered) {\n const root = this._shadowRoot;\n if (state.renderedMode === 'svg') {\n // Update root node\n try {\n root.lastChild.setCurrentTime(0);\n return;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (err) {\n // Failed: setCurrentTime() is not supported\n }\n }\n renderIcon(root, state);\n }\n }\n /**\n * Get status\n */\n get status() {\n const state = this._state;\n return state.rendered\n ? 'rendered'\n : state.icon.data === null\n ? 'failed'\n : 'loading';\n }\n /**\n * Queue attributes re-check\n */\n _queueCheck() {\n if (!this._checkQueued) {\n this._checkQueued = true;\n setTimeout(() => {\n this._check();\n });\n }\n }\n /**\n * Check for changes\n */\n _check() {\n if (!this._checkQueued) {\n return;\n }\n this._checkQueued = false;\n const state = this._state;\n // Get icon\n const newIcon = this.getAttribute('icon');\n if (newIcon !== state.icon.value) {\n this._iconChanged(newIcon);\n return;\n }\n // Ignore other attributes if icon is not rendered\n if (!state.rendered || !this._visible) {\n return;\n }\n // Check for mode and attribute changes\n const mode = this.getAttribute('mode');\n const customisations = getCustomisations(this);\n if (state.attrMode !== mode ||\n haveCustomisationsChanged(state.customisations, customisations) ||\n !findIconElement(this._shadowRoot)) {\n this._renderIcon(state.icon, customisations, mode);\n }\n }\n /**\n * Icon value has changed\n */\n _iconChanged(newValue) {\n const icon = parseIconValue(newValue, (value, name, data) => {\n // Asynchronous callback: re-check values to make sure stuff wasn't changed\n const state = this._state;\n if (state.rendered || this.getAttribute('icon') !== value) {\n // Icon data is already available or icon attribute was changed\n return;\n }\n // Change icon\n const icon = {\n value,\n name,\n data,\n };\n if (icon.data) {\n // Render icon\n this._gotIconData(icon);\n }\n else {\n // Nothing to render: update icon in state\n state.icon = icon;\n }\n });\n if (icon.data) {\n // Icon is ready to render\n this._gotIconData(icon);\n }\n else {\n // Pending icon\n this._state = setPendingState(icon, this._state.inline, this._state);\n }\n }\n /**\n * Force render icon on state change\n */\n _forceRender() {\n if (!this._visible) {\n // Remove icon\n const node = findIconElement(this._shadowRoot);\n if (node) {\n this._shadowRoot.removeChild(node);\n }\n return;\n }\n // Re-render icon\n this._queueCheck();\n }\n /**\n * Got new icon data, icon is ready to (re)render\n */\n _gotIconData(icon) {\n this._checkQueued = false;\n this._renderIcon(icon, getCustomisations(this), this.getAttribute('mode'));\n }\n /**\n * Re-render based on icon data\n */\n _renderIcon(icon, customisations, attrMode) {\n // Get mode\n const renderedMode = getRenderMode(icon.data.body, attrMode);\n // Inline was not changed\n const inline = this._state.inline;\n // Set state and render\n renderIcon(this._shadowRoot, (this._state = {\n rendered: true,\n icon,\n inline,\n customisations,\n attrMode,\n renderedMode,\n }));\n }\n /**\n * Start observer\n */\n startObserver() {\n if (!this._observer && !this.hasAttribute('noobserver')) {\n try {\n this._observer = new IntersectionObserver((entries) => {\n const intersecting = entries.some((entry) => entry.isIntersecting);\n if (intersecting !== this._visible) {\n this._visible = intersecting;\n this._forceRender();\n }\n });\n this._observer.observe(this);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (err) {\n // Something went wrong, possibly observer is not supported\n if (this._observer) {\n try {\n this._observer.disconnect();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (err) {\n //\n }\n this._observer = null;\n }\n }\n }\n }\n /**\n * Stop observer\n */\n stopObserver() {\n if (this._observer) {\n this._observer.disconnect();\n this._observer = null;\n this._visible = true;\n if (this._connected) {\n // Render icon\n this._forceRender();\n }\n }\n }\n };\n // Add getters and setters\n attributes.forEach((attr) => {\n if (!(attr in IconifyIcon.prototype)) {\n Object.defineProperty(IconifyIcon.prototype, attr, {\n get: function () {\n return this.getAttribute(attr);\n },\n set: function (value) {\n if (value !== null) {\n this.setAttribute(attr, value);\n }\n else {\n this.removeAttribute(attr);\n }\n },\n });\n }\n });\n // Add exported functions: both as static and instance methods\n const functions = exportFunctions();\n for (const key in functions) {\n IconifyIcon[key] = IconifyIcon.prototype[key] = functions[key];\n }\n // Define new component\n customElements.define(name, IconifyIcon);\n return IconifyIcon;\n}\n\n/**\n * Create exported data: either component instance or functions\n */\nconst IconifyIconComponent = defineIconifyIcon() || exportFunctions();\n/**\n * Export functions\n */\nconst { iconLoaded, getIcon, listIcons, addIcon, addCollection, calculateSize, buildIcon, iconToHTML, svgToURL, loadIcons, loadIcon, setCustomIconLoader, setCustomIconsLoader, addAPIProvider, _api, } = IconifyIconComponent;\n\nexport { IconifyIconComponent, _api, addAPIProvider, addCollection, addIcon, appendCustomStyle, buildIcon, calculateSize, getIcon, iconLoaded, iconToHTML, listIcons, loadIcon, loadIcons, setCustomIconLoader, setCustomIconsLoader, svgToURL };\n",":host {\n --color: currentColor;\n\n display: contents;\n color: var(--color);\n}\n\niconify-icon {\n color: inherit;\n}\n","import 'iconify-icon';\nimport type { PropertyValues } from 'lit';\nimport { html, unsafeCSS } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { LuxenElement } from '../../shared/luxen-element';\nimport hostStyles from '../../shared/styles/host.styles';\nimport rawStyles from './icon.css?inline';\n\nconst styles = unsafeCSS(rawStyles);\n\n/**\n * @summary An icon component that renders icons from any Iconify icon set. Decorative by default. Set `label` for meaningful icons.\n * @customElement l-icon\n *\n * @cssproperty --color - The color of the icon. Defaults to `currentColor`.\n */\nexport class LuxenIcon extends LuxenElement {\n static override styles = [hostStyles, styles];\n\n /** The icon name in Iconify format (e.g. `mdi:home`, `lucide:check`). */\n @property()\n name = '';\n\n /** Accessible label. When set, the icon becomes meaningful (`role=\"img\"` + `aria-label`). When absent, the icon is decorative. */\n @property()\n label?: string;\n\n override updated(changedProperties: PropertyValues<this>) {\n if (changedProperties.has('label')) {\n if (this.label) {\n this.setAttribute('role', 'img');\n this.setAttribute('aria-label', this.label);\n } else {\n this.removeAttribute('role');\n this.removeAttribute('aria-label');\n }\n }\n }\n\n override render() {\n return html`\n <iconify-icon\n icon=${this.name}\n aria-hidden=\"true\"\n ></iconify-icon>\n `;\n }\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"icon.js","names":["host"],"sources":["../../../../../node_modules/.pnpm/iconify-icon@3.0.2/node_modules/iconify-icon/dist/iconify-icon.mjs","../../../src/html/elements/icon/icon.css?inline","../../../src/html/elements/icon/icon.ts"],"sourcesContent":["/**\n* (c) Iconify\n*\n* For the full copyright and license information, please view the license.txt\n* files at https://github.com/iconify/iconify\n*\n* Licensed under MIT.\n*\n* @license MIT\n* @version 3.0.2\n*/\n/** Default values for dimensions */\nconst defaultIconDimensions = Object.freeze({\n\tleft: 0,\n\ttop: 0,\n\twidth: 16,\n\theight: 16\n});\n/** Default values for transformations */\nconst defaultIconTransformations = Object.freeze({\n\trotate: 0,\n\tvFlip: false,\n\thFlip: false\n});\n/** Default values for all optional IconifyIcon properties */\nconst defaultIconProps = Object.freeze({\n\t...defaultIconDimensions,\n\t...defaultIconTransformations\n});\n/** Default values for all properties used in ExtendedIconifyIcon */\nconst defaultExtendedIconProps = Object.freeze({\n\t...defaultIconProps,\n\tbody: \"\",\n\thidden: false\n});\n\n/**\n* Default icon customisations values\n*/\nconst defaultIconSizeCustomisations = Object.freeze({\n\twidth: null,\n\theight: null\n});\nconst defaultIconCustomisations = Object.freeze({\n\t...defaultIconSizeCustomisations,\n\t...defaultIconTransformations\n});\n\n/**\n* Get rotation value\n*/\nfunction rotateFromString(value, defaultValue = 0) {\n\tconst units = value.replace(/^-?[0-9.]*/, \"\");\n\tfunction cleanup(value$1) {\n\t\twhile (value$1 < 0) value$1 += 4;\n\t\treturn value$1 % 4;\n\t}\n\tif (units === \"\") {\n\t\tconst num = parseInt(value);\n\t\treturn isNaN(num) ? 0 : cleanup(num);\n\t} else if (units !== value) {\n\t\tlet split = 0;\n\t\tswitch (units) {\n\t\t\tcase \"%\":\n\t\t\t\tsplit = 25;\n\t\t\t\tbreak;\n\t\t\tcase \"deg\": split = 90;\n\t\t}\n\t\tif (split) {\n\t\t\tlet num = parseFloat(value.slice(0, value.length - units.length));\n\t\t\tif (isNaN(num)) return 0;\n\t\t\tnum = num / split;\n\t\t\treturn num % 1 === 0 ? cleanup(num) : 0;\n\t\t}\n\t}\n\treturn defaultValue;\n}\n\nconst separator = /[\\s,]+/;\n/**\n* Apply \"flip\" string to icon customisations\n*/\nfunction flipFromString(custom, flip) {\n\tflip.split(separator).forEach((str) => {\n\t\tswitch (str.trim()) {\n\t\t\tcase \"horizontal\":\n\t\t\t\tcustom.hFlip = true;\n\t\t\t\tbreak;\n\t\t\tcase \"vertical\":\n\t\t\t\tcustom.vFlip = true;\n\t\t\t\tbreak;\n\t\t}\n\t});\n}\n\nconst defaultCustomisations = {\n ...defaultIconCustomisations,\n preserveAspectRatio: '',\n};\n/**\n * Get customisations\n */\nfunction getCustomisations(node) {\n const customisations = {\n ...defaultCustomisations,\n };\n const attr = (key, def) => node.getAttribute(key) || def;\n // Dimensions\n customisations.width = attr('width', null);\n customisations.height = attr('height', null);\n // Rotation\n customisations.rotate = rotateFromString(attr('rotate', ''));\n // Flip\n flipFromString(customisations, attr('flip', ''));\n // SVG attributes\n customisations.preserveAspectRatio = attr('preserveAspectRatio', attr('preserveaspectratio', ''));\n return customisations;\n}\n/**\n * Check if customisations have been updated\n */\nfunction haveCustomisationsChanged(value1, value2) {\n for (const key in defaultCustomisations) {\n if (value1[key] !== value2[key]) {\n return true;\n }\n }\n return false;\n}\n\n/**\n* Expression to test part of icon name.\n*\n* Used when loading icons from Iconify API due to project naming convension.\n* Ignored when using custom icon sets - convension does not apply.\n*/\nconst matchIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;\n/**\n* Convert string icon name to IconifyIconName object.\n*/\nconst stringToIcon = (value, validate, allowSimpleName, provider = \"\") => {\n\tconst colonSeparated = value.split(\":\");\n\tif (value.slice(0, 1) === \"@\") {\n\t\tif (colonSeparated.length < 2 || colonSeparated.length > 3) return null;\n\t\tprovider = colonSeparated.shift().slice(1);\n\t}\n\tif (colonSeparated.length > 3 || !colonSeparated.length) return null;\n\tif (colonSeparated.length > 1) {\n\t\tconst name$1 = colonSeparated.pop();\n\t\tconst prefix = colonSeparated.pop();\n\t\tconst result = {\n\t\t\tprovider: colonSeparated.length > 0 ? colonSeparated[0] : provider,\n\t\t\tprefix,\n\t\t\tname: name$1\n\t\t};\n\t\treturn validate && !validateIconName(result) ? null : result;\n\t}\n\tconst name = colonSeparated[0];\n\tconst dashSeparated = name.split(\"-\");\n\tif (dashSeparated.length > 1) {\n\t\tconst result = {\n\t\t\tprovider,\n\t\t\tprefix: dashSeparated.shift(),\n\t\t\tname: dashSeparated.join(\"-\")\n\t\t};\n\t\treturn validate && !validateIconName(result) ? null : result;\n\t}\n\tif (allowSimpleName && provider === \"\") {\n\t\tconst result = {\n\t\t\tprovider,\n\t\t\tprefix: \"\",\n\t\t\tname\n\t\t};\n\t\treturn validate && !validateIconName(result, allowSimpleName) ? null : result;\n\t}\n\treturn null;\n};\n/**\n* Check if icon is valid.\n*\n* This function is not part of stringToIcon because validation is not needed for most code.\n*/\nconst validateIconName = (icon, allowSimpleName) => {\n\tif (!icon) return false;\n\treturn !!((allowSimpleName && icon.prefix === \"\" || !!icon.prefix) && !!icon.name);\n};\n\n/**\n* Resolve icon set icons\n*\n* Returns parent icon for each icon\n*/\nfunction getIconsTree(data, names) {\n\tconst icons = data.icons;\n\tconst aliases = data.aliases || Object.create(null);\n\tconst resolved = Object.create(null);\n\tfunction resolve(name) {\n\t\tif (icons[name]) return resolved[name] = [];\n\t\tif (!(name in resolved)) {\n\t\t\tresolved[name] = null;\n\t\t\tconst parent = aliases[name] && aliases[name].parent;\n\t\t\tconst value = parent && resolve(parent);\n\t\t\tif (value) resolved[name] = [parent].concat(value);\n\t\t}\n\t\treturn resolved[name];\n\t}\n\t(Object.keys(icons).concat(Object.keys(aliases))).forEach(resolve);\n\treturn resolved;\n}\n\n/**\n* Merge transformations\n*/\nfunction mergeIconTransformations(obj1, obj2) {\n\tconst result = {};\n\tif (!obj1.hFlip !== !obj2.hFlip) result.hFlip = true;\n\tif (!obj1.vFlip !== !obj2.vFlip) result.vFlip = true;\n\tconst rotate = ((obj1.rotate || 0) + (obj2.rotate || 0)) % 4;\n\tif (rotate) result.rotate = rotate;\n\treturn result;\n}\n\n/**\n* Merge icon and alias\n*\n* Can also be used to merge default values and icon\n*/\nfunction mergeIconData(parent, child) {\n\tconst result = mergeIconTransformations(parent, child);\n\tfor (const key in defaultExtendedIconProps) if (key in defaultIconTransformations) {\n\t\tif (key in parent && !(key in result)) result[key] = defaultIconTransformations[key];\n\t} else if (key in child) result[key] = child[key];\n\telse if (key in parent) result[key] = parent[key];\n\treturn result;\n}\n\n/**\n* Get icon data, using prepared aliases tree\n*/\nfunction internalGetIconData(data, name, tree) {\n\tconst icons = data.icons;\n\tconst aliases = data.aliases || Object.create(null);\n\tlet currentProps = {};\n\tfunction parse(name$1) {\n\t\tcurrentProps = mergeIconData(icons[name$1] || aliases[name$1], currentProps);\n\t}\n\tparse(name);\n\ttree.forEach(parse);\n\treturn mergeIconData(data, currentProps);\n}\n\n/**\n* Extract icons from an icon set\n*\n* Returns list of icons that were found in icon set\n*/\nfunction parseIconSet(data, callback) {\n\tconst names = [];\n\tif (typeof data !== \"object\" || typeof data.icons !== \"object\") return names;\n\tif (data.not_found instanceof Array) data.not_found.forEach((name) => {\n\t\tcallback(name, null);\n\t\tnames.push(name);\n\t});\n\tconst tree = getIconsTree(data);\n\tfor (const name in tree) {\n\t\tconst item = tree[name];\n\t\tif (item) {\n\t\t\tcallback(name, internalGetIconData(data, name, item));\n\t\t\tnames.push(name);\n\t\t}\n\t}\n\treturn names;\n}\n\n/**\n* Optional properties\n*/\nconst optionalPropertyDefaults = {\n\tprovider: \"\",\n\taliases: {},\n\tnot_found: {},\n\t...defaultIconDimensions\n};\n/**\n* Check props\n*/\nfunction checkOptionalProps(item, defaults) {\n\tfor (const prop in defaults) if (prop in item && typeof item[prop] !== typeof defaults[prop]) return false;\n\treturn true;\n}\n/**\n* Validate icon set, return it as IconifyJSON on success, null on failure\n*\n* Unlike validateIconSet(), this function is very basic.\n* It does not throw exceptions, it does not check metadata, it does not fix stuff.\n*/\nfunction quicklyValidateIconSet(obj) {\n\tif (typeof obj !== \"object\" || obj === null) return null;\n\tconst data = obj;\n\tif (typeof data.prefix !== \"string\" || !obj.icons || typeof obj.icons !== \"object\") return null;\n\tif (!checkOptionalProps(obj, optionalPropertyDefaults)) return null;\n\tconst icons = data.icons;\n\tfor (const name in icons) {\n\t\tconst icon = icons[name];\n\t\tif (!name || typeof icon.body !== \"string\" || !checkOptionalProps(icon, defaultExtendedIconProps)) return null;\n\t}\n\tconst aliases = data.aliases || Object.create(null);\n\tfor (const name in aliases) {\n\t\tconst icon = aliases[name];\n\t\tconst parent = icon.parent;\n\t\tif (!name || typeof parent !== \"string\" || !icons[parent] && !aliases[parent] || !checkOptionalProps(icon, defaultExtendedIconProps)) return null;\n\t}\n\treturn data;\n}\n\n/**\n* Storage by provider and prefix\n*/\nconst dataStorage = Object.create(null);\n/**\n* Create new storage\n*/\nfunction newStorage(provider, prefix) {\n\treturn {\n\t\tprovider,\n\t\tprefix,\n\t\ticons: Object.create(null),\n\t\tmissing: /* @__PURE__ */ new Set()\n\t};\n}\n/**\n* Get storage for provider and prefix\n*/\nfunction getStorage(provider, prefix) {\n\tconst providerStorage = dataStorage[provider] || (dataStorage[provider] = Object.create(null));\n\treturn providerStorage[prefix] || (providerStorage[prefix] = newStorage(provider, prefix));\n}\n/**\n* Add icon set to storage\n*\n* Returns array of added icons\n*/\nfunction addIconSet(storage, data) {\n\tif (!quicklyValidateIconSet(data)) return [];\n\treturn parseIconSet(data, (name, icon) => {\n\t\tif (icon) storage.icons[name] = icon;\n\t\telse storage.missing.add(name);\n\t});\n}\n/**\n* Add icon to storage\n*/\nfunction addIconToStorage(storage, name, icon) {\n\ttry {\n\t\tif (typeof icon.body === \"string\") {\n\t\t\tstorage.icons[name] = { ...icon };\n\t\t\treturn true;\n\t\t}\n\t} catch (err) {}\n\treturn false;\n}\n/**\n* List available icons\n*/\nfunction listIcons$1(provider, prefix) {\n\tlet allIcons = [];\n\t(typeof provider === \"string\" ? [provider] : Object.keys(dataStorage)).forEach((provider$1) => {\n\t\t(typeof provider$1 === \"string\" && typeof prefix === \"string\" ? [prefix] : Object.keys(dataStorage[provider$1] || {})).forEach((prefix$1) => {\n\t\t\tconst storage = getStorage(provider$1, prefix$1);\n\t\t\tallIcons = allIcons.concat(Object.keys(storage.icons).map((name) => (provider$1 !== \"\" ? \"@\" + provider$1 + \":\" : \"\") + prefix$1 + \":\" + name));\n\t\t});\n\t});\n\treturn allIcons;\n}\n\n/**\n* Allow storing icons without provider or prefix, making it possible to store icons like \"home\"\n*/\nlet simpleNames = false;\nfunction allowSimpleNames(allow) {\n\tif (typeof allow === \"boolean\") simpleNames = allow;\n\treturn simpleNames;\n}\n/**\n* Get icon data\n*\n* Returns:\n* - IconifyIcon on success, object directly from storage so don't modify it\n* - null if icon is marked as missing (returned in `not_found` property from API, so don't bother sending API requests)\n* - undefined if icon is missing in storage\n*/\nfunction getIconData(name) {\n\tconst icon = typeof name === \"string\" ? stringToIcon(name, true, simpleNames) : name;\n\tif (icon) {\n\t\tconst storage = getStorage(icon.provider, icon.prefix);\n\t\tconst iconName = icon.name;\n\t\treturn storage.icons[iconName] || (storage.missing.has(iconName) ? null : void 0);\n\t}\n}\n/**\n* Add one icon\n*/\nfunction addIcon$1(name, data) {\n\tconst icon = stringToIcon(name, true, simpleNames);\n\tif (!icon) return false;\n\tconst storage = getStorage(icon.provider, icon.prefix);\n\tif (data) return addIconToStorage(storage, icon.name, data);\n\telse {\n\t\tstorage.missing.add(icon.name);\n\t\treturn true;\n\t}\n}\n/**\n* Add icon set\n*/\nfunction addCollection$1(data, provider) {\n\tif (typeof data !== \"object\") return false;\n\tif (typeof provider !== \"string\") provider = data.provider || \"\";\n\tif (simpleNames && !provider && !data.prefix) {\n\t\tlet added = false;\n\t\tif (quicklyValidateIconSet(data)) {\n\t\t\tdata.prefix = \"\";\n\t\t\tparseIconSet(data, (name, icon) => {\n\t\t\t\tif (addIcon$1(name, icon)) added = true;\n\t\t\t});\n\t\t}\n\t\treturn added;\n\t}\n\tconst prefix = data.prefix;\n\tif (!validateIconName({\n\t\tprefix,\n\t\tname: \"a\"\n\t})) return false;\n\treturn !!addIconSet(getStorage(provider, prefix), data);\n}\n/**\n* Check if icon data is available\n*/\nfunction iconLoaded$1(name) {\n\treturn !!getIconData(name);\n}\n/**\n* Get full icon\n*/\nfunction getIcon$1(name) {\n\tconst result = getIconData(name);\n\treturn result ? {\n\t\t...defaultIconProps,\n\t\t...result\n\t} : result;\n}\n\n/**\n* Remove callback\n*/\nfunction removeCallback(storages, id) {\n\tstorages.forEach((storage) => {\n\t\tconst items = storage.loaderCallbacks;\n\t\tif (items) storage.loaderCallbacks = items.filter((row) => row.id !== id);\n\t});\n}\n/**\n* Update all callbacks for provider and prefix\n*/\nfunction updateCallbacks(storage) {\n\tif (!storage.pendingCallbacksFlag) {\n\t\tstorage.pendingCallbacksFlag = true;\n\t\tsetTimeout(() => {\n\t\t\tstorage.pendingCallbacksFlag = false;\n\t\t\tconst items = storage.loaderCallbacks ? storage.loaderCallbacks.slice(0) : [];\n\t\t\tif (!items.length) return;\n\t\t\tlet hasPending = false;\n\t\t\tconst provider = storage.provider;\n\t\t\tconst prefix = storage.prefix;\n\t\t\titems.forEach((item) => {\n\t\t\t\tconst icons = item.icons;\n\t\t\t\tconst oldLength = icons.pending.length;\n\t\t\t\ticons.pending = icons.pending.filter((icon) => {\n\t\t\t\t\tif (icon.prefix !== prefix) return true;\n\t\t\t\t\tconst name = icon.name;\n\t\t\t\t\tif (storage.icons[name]) icons.loaded.push({\n\t\t\t\t\t\tprovider,\n\t\t\t\t\t\tprefix,\n\t\t\t\t\t\tname\n\t\t\t\t\t});\n\t\t\t\t\telse if (storage.missing.has(name)) icons.missing.push({\n\t\t\t\t\t\tprovider,\n\t\t\t\t\t\tprefix,\n\t\t\t\t\t\tname\n\t\t\t\t\t});\n\t\t\t\t\telse {\n\t\t\t\t\t\thasPending = true;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t\t\tif (icons.pending.length !== oldLength) {\n\t\t\t\t\tif (!hasPending) removeCallback([storage], item.id);\n\t\t\t\t\titem.callback(icons.loaded.slice(0), icons.missing.slice(0), icons.pending.slice(0), item.abort);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n/**\n* Unique id counter for callbacks\n*/\nlet idCounter = 0;\n/**\n* Add callback\n*/\nfunction storeCallback(callback, icons, pendingSources) {\n\tconst id = idCounter++;\n\tconst abort = removeCallback.bind(null, pendingSources, id);\n\tif (!icons.pending.length) return abort;\n\tconst item = {\n\t\tid,\n\t\ticons,\n\t\tcallback,\n\t\tabort\n\t};\n\tpendingSources.forEach((storage) => {\n\t\t(storage.loaderCallbacks || (storage.loaderCallbacks = [])).push(item);\n\t});\n\treturn abort;\n}\n\n/**\n* Check if icons have been loaded\n*/\nfunction sortIcons(icons) {\n\tconst result = {\n\t\tloaded: [],\n\t\tmissing: [],\n\t\tpending: []\n\t};\n\tconst storage = Object.create(null);\n\ticons.sort((a, b) => {\n\t\tif (a.provider !== b.provider) return a.provider.localeCompare(b.provider);\n\t\tif (a.prefix !== b.prefix) return a.prefix.localeCompare(b.prefix);\n\t\treturn a.name.localeCompare(b.name);\n\t});\n\tlet lastIcon = {\n\t\tprovider: \"\",\n\t\tprefix: \"\",\n\t\tname: \"\"\n\t};\n\ticons.forEach((icon) => {\n\t\tif (lastIcon.name === icon.name && lastIcon.prefix === icon.prefix && lastIcon.provider === icon.provider) return;\n\t\tlastIcon = icon;\n\t\tconst provider = icon.provider;\n\t\tconst prefix = icon.prefix;\n\t\tconst name = icon.name;\n\t\tconst providerStorage = storage[provider] || (storage[provider] = Object.create(null));\n\t\tconst localStorage = providerStorage[prefix] || (providerStorage[prefix] = getStorage(provider, prefix));\n\t\tlet list;\n\t\tif (name in localStorage.icons) list = result.loaded;\n\t\telse if (prefix === \"\" || localStorage.missing.has(name)) list = result.missing;\n\t\telse list = result.pending;\n\t\tconst item = {\n\t\t\tprovider,\n\t\t\tprefix,\n\t\t\tname\n\t\t};\n\t\tlist.push(item);\n\t});\n\treturn result;\n}\n\n/**\n* Local storate types and entries\n*/\nconst storage = Object.create(null);\n/**\n* Set API module\n*/\nfunction setAPIModule(provider, item) {\n\tstorage[provider] = item;\n}\n/**\n* Get API module\n*/\nfunction getAPIModule(provider) {\n\treturn storage[provider] || storage[\"\"];\n}\n\n/**\n* Convert icons list from string/icon mix to icons and validate them\n*/\nfunction listToIcons(list, validate = true, simpleNames = false) {\n\tconst result = [];\n\tlist.forEach((item) => {\n\t\tconst icon = typeof item === \"string\" ? stringToIcon(item, validate, simpleNames) : item;\n\t\tif (icon) result.push(icon);\n\t});\n\treturn result;\n}\n\n/**\n* Create full API configuration from partial data\n*/\nfunction createAPIConfig(source) {\n\tlet resources;\n\tif (typeof source.resources === \"string\") resources = [source.resources];\n\telse {\n\t\tresources = source.resources;\n\t\tif (!(resources instanceof Array) || !resources.length) return null;\n\t}\n\treturn {\n\t\tresources,\n\t\tpath: source.path || \"/\",\n\t\tmaxURL: source.maxURL || 500,\n\t\trotate: source.rotate || 750,\n\t\ttimeout: source.timeout || 5e3,\n\t\trandom: source.random === true,\n\t\tindex: source.index || 0,\n\t\tdataAfterTimeout: source.dataAfterTimeout !== false\n\t};\n}\n/**\n* Local storage\n*/\nconst configStorage = Object.create(null);\n/**\n* Redundancy for API servers.\n*\n* API should have very high uptime because of implemented redundancy at server level, but\n* sometimes bad things happen. On internet 100% uptime is not possible.\n*\n* There could be routing problems. Server might go down for whatever reason, but it takes\n* few minutes to detect that downtime, so during those few minutes API might not be accessible.\n*\n* This script has some redundancy to mitigate possible network issues.\n*\n* If one host cannot be reached in 'rotate' (750 by default) ms, script will try to retrieve\n* data from different host. Hosts have different configurations, pointing to different\n* API servers hosted at different providers.\n*/\nconst fallBackAPISources = [\"https://api.simplesvg.com\", \"https://api.unisvg.com\"];\nconst fallBackAPI = [];\nwhile (fallBackAPISources.length > 0) if (fallBackAPISources.length === 1) fallBackAPI.push(fallBackAPISources.shift());\nelse if (Math.random() > .5) fallBackAPI.push(fallBackAPISources.shift());\nelse fallBackAPI.push(fallBackAPISources.pop());\nconfigStorage[\"\"] = createAPIConfig({ resources: [\"https://api.iconify.design\"].concat(fallBackAPI) });\n/**\n* Add custom config for provider\n*/\nfunction addAPIProvider$1(provider, customConfig) {\n\tconst config = createAPIConfig(customConfig);\n\tif (config === null) return false;\n\tconfigStorage[provider] = config;\n\treturn true;\n}\n/**\n* Get API configuration\n*/\nfunction getAPIConfig(provider) {\n\treturn configStorage[provider];\n}\n/**\n* List API providers\n*/\nfunction listAPIProviders() {\n\treturn Object.keys(configStorage);\n}\n\n/**\n* Default RedundancyConfig for API calls\n*/\nconst defaultConfig = {\n\tresources: [],\n\tindex: 0,\n\ttimeout: 2e3,\n\trotate: 750,\n\trandom: false,\n\tdataAfterTimeout: false\n};\n\n/**\n* Send query\n*/\nfunction sendQuery(config, payload, query, done) {\n\tconst resourcesCount = config.resources.length;\n\tconst startIndex = config.random ? Math.floor(Math.random() * resourcesCount) : config.index;\n\tlet resources;\n\tif (config.random) {\n\t\tlet list = config.resources.slice(0);\n\t\tresources = [];\n\t\twhile (list.length > 1) {\n\t\t\tconst nextIndex = Math.floor(Math.random() * list.length);\n\t\t\tresources.push(list[nextIndex]);\n\t\t\tlist = list.slice(0, nextIndex).concat(list.slice(nextIndex + 1));\n\t\t}\n\t\tresources = resources.concat(list);\n\t} else resources = config.resources.slice(startIndex).concat(config.resources.slice(0, startIndex));\n\tconst startTime = Date.now();\n\tlet status = \"pending\";\n\tlet queriesSent = 0;\n\tlet lastError;\n\tlet timer = null;\n\tlet queue = [];\n\tlet doneCallbacks = [];\n\tif (typeof done === \"function\") doneCallbacks.push(done);\n\t/**\n\t* Reset timer\n\t*/\n\tfunction resetTimer() {\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimer = null;\n\t\t}\n\t}\n\t/**\n\t* Abort everything\n\t*/\n\tfunction abort() {\n\t\tif (status === \"pending\") status = \"aborted\";\n\t\tresetTimer();\n\t\tqueue.forEach((item) => {\n\t\t\tif (item.status === \"pending\") item.status = \"aborted\";\n\t\t});\n\t\tqueue = [];\n\t}\n\t/**\n\t* Add / replace callback to call when execution is complete.\n\t* This can be used to abort pending query implementations when query is complete or aborted.\n\t*/\n\tfunction subscribe(callback, overwrite) {\n\t\tif (overwrite) doneCallbacks = [];\n\t\tif (typeof callback === \"function\") doneCallbacks.push(callback);\n\t}\n\t/**\n\t* Get query status\n\t*/\n\tfunction getQueryStatus() {\n\t\treturn {\n\t\t\tstartTime,\n\t\t\tpayload,\n\t\t\tstatus,\n\t\t\tqueriesSent,\n\t\t\tqueriesPending: queue.length,\n\t\t\tsubscribe,\n\t\t\tabort\n\t\t};\n\t}\n\t/**\n\t* Fail query\n\t*/\n\tfunction failQuery() {\n\t\tstatus = \"failed\";\n\t\tdoneCallbacks.forEach((callback) => {\n\t\t\tcallback(void 0, lastError);\n\t\t});\n\t}\n\t/**\n\t* Clear queue\n\t*/\n\tfunction clearQueue() {\n\t\tqueue.forEach((item) => {\n\t\t\tif (item.status === \"pending\") item.status = \"aborted\";\n\t\t});\n\t\tqueue = [];\n\t}\n\t/**\n\t* Got response from module\n\t*/\n\tfunction moduleResponse(item, response, data) {\n\t\tconst isError = response !== \"success\";\n\t\tqueue = queue.filter((queued) => queued !== item);\n\t\tswitch (status) {\n\t\t\tcase \"pending\": break;\n\t\t\tcase \"failed\":\n\t\t\t\tif (isError || !config.dataAfterTimeout) return;\n\t\t\t\tbreak;\n\t\t\tdefault: return;\n\t\t}\n\t\tif (response === \"abort\") {\n\t\t\tlastError = data;\n\t\t\tfailQuery();\n\t\t\treturn;\n\t\t}\n\t\tif (isError) {\n\t\t\tlastError = data;\n\t\t\tif (!queue.length) if (!resources.length) failQuery();\n\t\t\telse execNext();\n\t\t\treturn;\n\t\t}\n\t\tresetTimer();\n\t\tclearQueue();\n\t\tif (!config.random) {\n\t\t\tconst index = config.resources.indexOf(item.resource);\n\t\t\tif (index !== -1 && index !== config.index) config.index = index;\n\t\t}\n\t\tstatus = \"completed\";\n\t\tdoneCallbacks.forEach((callback) => {\n\t\t\tcallback(data);\n\t\t});\n\t}\n\t/**\n\t* Execute next query\n\t*/\n\tfunction execNext() {\n\t\tif (status !== \"pending\") return;\n\t\tresetTimer();\n\t\tconst resource = resources.shift();\n\t\tif (resource === void 0) {\n\t\t\tif (queue.length) {\n\t\t\t\ttimer = setTimeout(() => {\n\t\t\t\t\tresetTimer();\n\t\t\t\t\tif (status === \"pending\") {\n\t\t\t\t\t\tclearQueue();\n\t\t\t\t\t\tfailQuery();\n\t\t\t\t\t}\n\t\t\t\t}, config.timeout);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfailQuery();\n\t\t\treturn;\n\t\t}\n\t\tconst item = {\n\t\t\tstatus: \"pending\",\n\t\t\tresource,\n\t\t\tcallback: (status$1, data) => {\n\t\t\t\tmoduleResponse(item, status$1, data);\n\t\t\t}\n\t\t};\n\t\tqueue.push(item);\n\t\tqueriesSent++;\n\t\ttimer = setTimeout(execNext, config.rotate);\n\t\tquery(resource, payload, item.callback);\n\t}\n\tsetTimeout(execNext);\n\treturn getQueryStatus;\n}\n\n/**\n* Redundancy instance\n*/\nfunction initRedundancy(cfg) {\n\tconst config = {\n\t\t...defaultConfig,\n\t\t...cfg\n\t};\n\tlet queries = [];\n\t/**\n\t* Remove aborted and completed queries\n\t*/\n\tfunction cleanup() {\n\t\tqueries = queries.filter((item) => item().status === \"pending\");\n\t}\n\t/**\n\t* Send query\n\t*/\n\tfunction query(payload, queryCallback, doneCallback) {\n\t\tconst query$1 = sendQuery(config, payload, queryCallback, (data, error) => {\n\t\t\tcleanup();\n\t\t\tif (doneCallback) doneCallback(data, error);\n\t\t});\n\t\tqueries.push(query$1);\n\t\treturn query$1;\n\t}\n\t/**\n\t* Find instance\n\t*/\n\tfunction find(callback) {\n\t\treturn queries.find((value) => {\n\t\t\treturn callback(value);\n\t\t}) || null;\n\t}\n\treturn {\n\t\tquery,\n\t\tfind,\n\t\tsetIndex: (index) => {\n\t\t\tconfig.index = index;\n\t\t},\n\t\tgetIndex: () => config.index,\n\t\tcleanup\n\t};\n}\n\nfunction emptyCallback$1() {}\nconst redundancyCache = Object.create(null);\n/**\n* Get Redundancy instance for provider\n*/\nfunction getRedundancyCache(provider) {\n\tif (!redundancyCache[provider]) {\n\t\tconst config = getAPIConfig(provider);\n\t\tif (!config) return;\n\t\tredundancyCache[provider] = {\n\t\t\tconfig,\n\t\t\tredundancy: initRedundancy(config)\n\t\t};\n\t}\n\treturn redundancyCache[provider];\n}\n/**\n* Send API query\n*/\nfunction sendAPIQuery(target, query, callback) {\n\tlet redundancy;\n\tlet send;\n\tif (typeof target === \"string\") {\n\t\tconst api = getAPIModule(target);\n\t\tif (!api) {\n\t\t\tcallback(void 0, 424);\n\t\t\treturn emptyCallback$1;\n\t\t}\n\t\tsend = api.send;\n\t\tconst cached = getRedundancyCache(target);\n\t\tif (cached) redundancy = cached.redundancy;\n\t} else {\n\t\tconst config = createAPIConfig(target);\n\t\tif (config) {\n\t\t\tredundancy = initRedundancy(config);\n\t\t\tconst api = getAPIModule(target.resources ? target.resources[0] : \"\");\n\t\t\tif (api) send = api.send;\n\t\t}\n\t}\n\tif (!redundancy || !send) {\n\t\tcallback(void 0, 424);\n\t\treturn emptyCallback$1;\n\t}\n\treturn redundancy.query(query, send, callback)().abort;\n}\n\nfunction emptyCallback() {}\n/**\n* Function called when new icons have been loaded\n*/\nfunction loadedNewIcons(storage) {\n\tif (!storage.iconsLoaderFlag) {\n\t\tstorage.iconsLoaderFlag = true;\n\t\tsetTimeout(() => {\n\t\t\tstorage.iconsLoaderFlag = false;\n\t\t\tupdateCallbacks(storage);\n\t\t});\n\t}\n}\n/**\n* Check icon names for API\n*/\nfunction checkIconNamesForAPI(icons) {\n\tconst valid = [];\n\tconst invalid = [];\n\ticons.forEach((name) => {\n\t\t(name.match(matchIconName) ? valid : invalid).push(name);\n\t});\n\treturn {\n\t\tvalid,\n\t\tinvalid\n\t};\n}\n/**\n* Parse loader response\n*/\nfunction parseLoaderResponse(storage, icons, data) {\n\tfunction checkMissing() {\n\t\tconst pending = storage.pendingIcons;\n\t\ticons.forEach((name) => {\n\t\t\tif (pending) pending.delete(name);\n\t\t\tif (!storage.icons[name]) storage.missing.add(name);\n\t\t});\n\t}\n\tif (data && typeof data === \"object\") try {\n\t\tif (!addIconSet(storage, data).length) {\n\t\t\tcheckMissing();\n\t\t\treturn;\n\t\t}\n\t} catch (err) {\n\t\tconsole.error(err);\n\t}\n\tcheckMissing();\n\tloadedNewIcons(storage);\n}\n/**\n* Handle response that can be async\n*/\nfunction parsePossiblyAsyncResponse(response, callback) {\n\tif (response instanceof Promise) response.then((data) => {\n\t\tcallback(data);\n\t}).catch(() => {\n\t\tcallback(null);\n\t});\n\telse callback(response);\n}\n/**\n* Load icons\n*/\nfunction loadNewIcons(storage, icons) {\n\tif (!storage.iconsToLoad) storage.iconsToLoad = icons;\n\telse storage.iconsToLoad = storage.iconsToLoad.concat(icons).sort();\n\tif (!storage.iconsQueueFlag) {\n\t\tstorage.iconsQueueFlag = true;\n\t\tsetTimeout(() => {\n\t\t\tstorage.iconsQueueFlag = false;\n\t\t\tconst { provider, prefix } = storage;\n\t\t\tconst icons$1 = storage.iconsToLoad;\n\t\t\tdelete storage.iconsToLoad;\n\t\t\tif (!icons$1 || !icons$1.length) return;\n\t\t\tconst customIconLoader = storage.loadIcon;\n\t\t\tif (storage.loadIcons && (icons$1.length > 1 || !customIconLoader)) {\n\t\t\t\tparsePossiblyAsyncResponse(storage.loadIcons(icons$1, prefix, provider), (data) => {\n\t\t\t\t\tparseLoaderResponse(storage, icons$1, data);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (customIconLoader) {\n\t\t\t\ticons$1.forEach((name) => {\n\t\t\t\t\tparsePossiblyAsyncResponse(customIconLoader(name, prefix, provider), (data) => {\n\t\t\t\t\t\tparseLoaderResponse(storage, [name], data ? {\n\t\t\t\t\t\t\tprefix,\n\t\t\t\t\t\t\ticons: { [name]: data }\n\t\t\t\t\t\t} : null);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { valid, invalid } = checkIconNamesForAPI(icons$1);\n\t\t\tif (invalid.length) parseLoaderResponse(storage, invalid, null);\n\t\t\tif (!valid.length) return;\n\t\t\tconst api = prefix.match(matchIconName) ? getAPIModule(provider) : null;\n\t\t\tif (!api) {\n\t\t\t\tparseLoaderResponse(storage, valid, null);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tapi.prepare(provider, prefix, valid).forEach((item) => {\n\t\t\t\tsendAPIQuery(provider, item, (data) => {\n\t\t\t\t\tparseLoaderResponse(storage, item.icons, data);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n}\n/**\n* Load icons\n*/\nconst loadIcons$1 = (icons, callback) => {\n\tconst sortedIcons = sortIcons(listToIcons(icons, true, allowSimpleNames()));\n\tif (!sortedIcons.pending.length) {\n\t\tlet callCallback = true;\n\t\tif (callback) setTimeout(() => {\n\t\t\tif (callCallback) callback(sortedIcons.loaded, sortedIcons.missing, sortedIcons.pending, emptyCallback);\n\t\t});\n\t\treturn () => {\n\t\t\tcallCallback = false;\n\t\t};\n\t}\n\tconst newIcons = Object.create(null);\n\tconst sources = [];\n\tlet lastProvider, lastPrefix;\n\tsortedIcons.pending.forEach((icon) => {\n\t\tconst { provider, prefix } = icon;\n\t\tif (prefix === lastPrefix && provider === lastProvider) return;\n\t\tlastProvider = provider;\n\t\tlastPrefix = prefix;\n\t\tsources.push(getStorage(provider, prefix));\n\t\tconst providerNewIcons = newIcons[provider] || (newIcons[provider] = Object.create(null));\n\t\tif (!providerNewIcons[prefix]) providerNewIcons[prefix] = [];\n\t});\n\tsortedIcons.pending.forEach((icon) => {\n\t\tconst { provider, prefix, name } = icon;\n\t\tconst storage = getStorage(provider, prefix);\n\t\tconst pendingQueue = storage.pendingIcons || (storage.pendingIcons = /* @__PURE__ */ new Set());\n\t\tif (!pendingQueue.has(name)) {\n\t\t\tpendingQueue.add(name);\n\t\t\tnewIcons[provider][prefix].push(name);\n\t\t}\n\t});\n\tsources.forEach((storage) => {\n\t\tconst list = newIcons[storage.provider][storage.prefix];\n\t\tif (list.length) loadNewIcons(storage, list);\n\t});\n\treturn callback ? storeCallback(callback, sortedIcons, sources) : emptyCallback;\n};\n/**\n* Load one icon using Promise\n*/\nconst loadIcon$1 = (icon) => {\n\treturn new Promise((fulfill, reject) => {\n\t\tconst iconObj = typeof icon === \"string\" ? stringToIcon(icon, true) : icon;\n\t\tif (!iconObj) {\n\t\t\treject(icon);\n\t\t\treturn;\n\t\t}\n\t\tloadIcons$1([iconObj || icon], (loaded) => {\n\t\t\tif (loaded.length && iconObj) {\n\t\t\t\tconst data = getIconData(iconObj);\n\t\t\t\tif (data) {\n\t\t\t\t\tfulfill({\n\t\t\t\t\t\t...defaultIconProps,\n\t\t\t\t\t\t...data\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\treject(icon);\n\t\t});\n\t});\n};\n\n/**\n * Test icon string\n */\nfunction testIconObject(value) {\n try {\n const obj = typeof value === 'string' ? JSON.parse(value) : value;\n if (typeof obj.body === 'string') {\n return {\n ...obj,\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (err) {\n //\n }\n}\n\n/**\n * Parse icon value, load if needed\n */\nfunction parseIconValue(value, onload) {\n if (typeof value === 'object') {\n const data = testIconObject(value);\n return {\n data,\n value,\n };\n }\n if (typeof value !== 'string') {\n // Invalid value\n return {\n value,\n };\n }\n // Check for JSON\n if (value.includes('{')) {\n const data = testIconObject(value);\n if (data) {\n return {\n data,\n value,\n };\n }\n }\n // Parse icon name\n const name = stringToIcon(value, true, true);\n if (!name) {\n return {\n value,\n };\n }\n // Valid icon name: check if data is available\n const data = getIconData(name);\n // Icon data exists or icon has no prefix. Do not load icon from API if icon has no prefix\n if (data !== undefined || !name.prefix) {\n return {\n value,\n name,\n data, // could be 'null' -> icon is missing\n };\n }\n // Load icon\n const loading = loadIcons$1([name], () => onload(value, name, getIconData(name)));\n return {\n value,\n name,\n loading,\n };\n}\n\n// Check for Safari\nlet isBuggedSafari = false;\ntry {\n isBuggedSafari = navigator.vendor.indexOf('Apple') === 0;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n}\ncatch (err) {\n //\n}\n/**\n * Get render mode\n */\nfunction getRenderMode(body, mode) {\n switch (mode) {\n // Force mode\n case 'svg':\n case 'bg':\n case 'mask':\n return mode;\n }\n // Check for animation, use 'style' for animated icons, unless browser is Safari\n // (only <a>, which should be ignored or animations start with '<a')\n if (mode !== 'style' &&\n (isBuggedSafari || body.indexOf('<a') === -1)) {\n // Render <svg>\n return 'svg';\n }\n // Use background or mask\n return body.indexOf('currentColor') === -1 ? 'bg' : 'mask';\n}\n\n/**\n* Regular expressions for calculating dimensions\n*/\nconst unitsSplit = /(-?[0-9.]*[0-9]+[0-9.]*)/g;\nconst unitsTest = /^-?[0-9.]*[0-9]+[0-9.]*$/g;\nfunction calculateSize$1(size, ratio, precision) {\n\tif (ratio === 1) return size;\n\tprecision = precision || 100;\n\tif (typeof size === \"number\") return Math.ceil(size * ratio * precision) / precision;\n\tif (typeof size !== \"string\") return size;\n\tconst oldParts = size.split(unitsSplit);\n\tif (oldParts === null || !oldParts.length) return size;\n\tconst newParts = [];\n\tlet code = oldParts.shift();\n\tlet isNumber = unitsTest.test(code);\n\twhile (true) {\n\t\tif (isNumber) {\n\t\t\tconst num = parseFloat(code);\n\t\t\tif (isNaN(num)) newParts.push(code);\n\t\t\telse newParts.push(Math.ceil(num * ratio * precision) / precision);\n\t\t} else newParts.push(code);\n\t\tcode = oldParts.shift();\n\t\tif (code === void 0) return newParts.join(\"\");\n\t\tisNumber = !isNumber;\n\t}\n}\n\nfunction splitSVGDefs(content, tag = \"defs\") {\n\tlet defs = \"\";\n\tconst index = content.indexOf(\"<\" + tag);\n\twhile (index >= 0) {\n\t\tconst start = content.indexOf(\">\", index);\n\t\tconst end = content.indexOf(\"</\" + tag);\n\t\tif (start === -1 || end === -1) break;\n\t\tconst endEnd = content.indexOf(\">\", end);\n\t\tif (endEnd === -1) break;\n\t\tdefs += content.slice(start + 1, end).trim();\n\t\tcontent = content.slice(0, index).trim() + content.slice(endEnd + 1);\n\t}\n\treturn {\n\t\tdefs,\n\t\tcontent\n\t};\n}\n/**\n* Merge defs and content\n*/\nfunction mergeDefsAndContent(defs, content) {\n\treturn defs ? \"<defs>\" + defs + \"</defs>\" + content : content;\n}\n/**\n* Wrap SVG content, without wrapping definitions\n*/\nfunction wrapSVGContent(body, start, end) {\n\tconst split = splitSVGDefs(body);\n\treturn mergeDefsAndContent(split.defs, start + split.content + end);\n}\n\n/**\n* Check if value should be unset. Allows multiple keywords\n*/\nconst isUnsetKeyword = (value) => value === \"unset\" || value === \"undefined\" || value === \"none\";\n/**\n* Get SVG attributes and content from icon + customisations\n*\n* Does not generate style to make it compatible with frameworks that use objects for style, such as React.\n* Instead, it generates 'inline' value. If true, rendering engine should add verticalAlign: -0.125em to icon.\n*\n* Customisations should be normalised by platform specific parser.\n* Result should be converted to <svg> by platform specific parser.\n* Use replaceIDs to generate unique IDs for body.\n*/\nfunction iconToSVG(icon, customisations) {\n\tconst fullIcon = {\n\t\t...defaultIconProps,\n\t\t...icon\n\t};\n\tconst fullCustomisations = {\n\t\t...defaultIconCustomisations,\n\t\t...customisations\n\t};\n\tconst box = {\n\t\tleft: fullIcon.left,\n\t\ttop: fullIcon.top,\n\t\twidth: fullIcon.width,\n\t\theight: fullIcon.height\n\t};\n\tlet body = fullIcon.body;\n\t[fullIcon, fullCustomisations].forEach((props) => {\n\t\tconst transformations = [];\n\t\tconst hFlip = props.hFlip;\n\t\tconst vFlip = props.vFlip;\n\t\tlet rotation = props.rotate;\n\t\tif (hFlip) if (vFlip) rotation += 2;\n\t\telse {\n\t\t\ttransformations.push(\"translate(\" + (box.width + box.left).toString() + \" \" + (0 - box.top).toString() + \")\");\n\t\t\ttransformations.push(\"scale(-1 1)\");\n\t\t\tbox.top = box.left = 0;\n\t\t}\n\t\telse if (vFlip) {\n\t\t\ttransformations.push(\"translate(\" + (0 - box.left).toString() + \" \" + (box.height + box.top).toString() + \")\");\n\t\t\ttransformations.push(\"scale(1 -1)\");\n\t\t\tbox.top = box.left = 0;\n\t\t}\n\t\tlet tempValue;\n\t\tif (rotation < 0) rotation -= Math.floor(rotation / 4) * 4;\n\t\trotation = rotation % 4;\n\t\tswitch (rotation) {\n\t\t\tcase 1:\n\t\t\t\ttempValue = box.height / 2 + box.top;\n\t\t\t\ttransformations.unshift(\"rotate(90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\");\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\ttransformations.unshift(\"rotate(180 \" + (box.width / 2 + box.left).toString() + \" \" + (box.height / 2 + box.top).toString() + \")\");\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\ttempValue = box.width / 2 + box.left;\n\t\t\t\ttransformations.unshift(\"rotate(-90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\");\n\t\t\t\tbreak;\n\t\t}\n\t\tif (rotation % 2 === 1) {\n\t\t\tif (box.left !== box.top) {\n\t\t\t\ttempValue = box.left;\n\t\t\t\tbox.left = box.top;\n\t\t\t\tbox.top = tempValue;\n\t\t\t}\n\t\t\tif (box.width !== box.height) {\n\t\t\t\ttempValue = box.width;\n\t\t\t\tbox.width = box.height;\n\t\t\t\tbox.height = tempValue;\n\t\t\t}\n\t\t}\n\t\tif (transformations.length) body = wrapSVGContent(body, \"<g transform=\\\"\" + transformations.join(\" \") + \"\\\">\", \"</g>\");\n\t});\n\tconst customisationsWidth = fullCustomisations.width;\n\tconst customisationsHeight = fullCustomisations.height;\n\tconst boxWidth = box.width;\n\tconst boxHeight = box.height;\n\tlet width;\n\tlet height;\n\tif (customisationsWidth === null) {\n\t\theight = customisationsHeight === null ? \"1em\" : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n\t\twidth = calculateSize$1(height, boxWidth / boxHeight);\n\t} else {\n\t\twidth = customisationsWidth === \"auto\" ? boxWidth : customisationsWidth;\n\t\theight = customisationsHeight === null ? calculateSize$1(width, boxHeight / boxWidth) : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n\t}\n\tconst attributes = {};\n\tconst setAttr = (prop, value) => {\n\t\tif (!isUnsetKeyword(value)) attributes[prop] = value.toString();\n\t};\n\tsetAttr(\"width\", width);\n\tsetAttr(\"height\", height);\n\tconst viewBox = [\n\t\tbox.left,\n\t\tbox.top,\n\t\tboxWidth,\n\t\tboxHeight\n\t];\n\tattributes.viewBox = viewBox.join(\" \");\n\treturn {\n\t\tattributes,\n\t\tviewBox,\n\t\tbody\n\t};\n}\n\n/**\n* Generate <svg>\n*/\nfunction iconToHTML$1(body, attributes) {\n\tlet renderAttribsHTML = body.indexOf(\"xlink:\") === -1 ? \"\" : \" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"\";\n\tfor (const attr in attributes) renderAttribsHTML += \" \" + attr + \"=\\\"\" + attributes[attr] + \"\\\"\";\n\treturn \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\"\" + renderAttribsHTML + \">\" + body + \"</svg>\";\n}\n\n/**\n* Encode SVG for use in url()\n*\n* Short alternative to encodeURIComponent() that encodes only stuff used in SVG, generating\n* smaller code.\n*/\nfunction encodeSVGforURL(svg) {\n\treturn svg.replace(/\"/g, \"'\").replace(/%/g, \"%25\").replace(/#/g, \"%23\").replace(/</g, \"%3C\").replace(/>/g, \"%3E\").replace(/\\s+/g, \" \");\n}\n/**\n* Generate data: URL from SVG\n*/\nfunction svgToData(svg) {\n\treturn \"data:image/svg+xml,\" + encodeSVGforURL(svg);\n}\n/**\n* Generate url() from SVG\n*/\nfunction svgToURL$1(svg) {\n\treturn \"url(\\\"\" + svgToData(svg) + \"\\\")\";\n}\n\nconst detectFetch = () => {\n\tlet callback;\n\ttry {\n\t\tcallback = fetch;\n\t\tif (typeof callback === \"function\") return callback;\n\t} catch (err) {}\n};\n/**\n* Fetch function\n*/\nlet fetchModule = detectFetch();\n/**\n* Set custom fetch() function\n*/\nfunction setFetch(fetch$1) {\n\tfetchModule = fetch$1;\n}\n/**\n* Get fetch() function. Used by Icon Finder Core\n*/\nfunction getFetch() {\n\treturn fetchModule;\n}\n/**\n* Calculate maximum icons list length for prefix\n*/\nfunction calculateMaxLength(provider, prefix) {\n\tconst config = getAPIConfig(provider);\n\tif (!config) return 0;\n\tlet result;\n\tif (!config.maxURL) result = 0;\n\telse {\n\t\tlet maxHostLength = 0;\n\t\tconfig.resources.forEach((item) => {\n\t\t\tconst host = item;\n\t\t\tmaxHostLength = Math.max(maxHostLength, host.length);\n\t\t});\n\t\tconst url = prefix + \".json?icons=\";\n\t\tresult = config.maxURL - maxHostLength - config.path.length - url.length;\n\t}\n\treturn result;\n}\n/**\n* Should query be aborted, based on last HTTP status\n*/\nfunction shouldAbort(status) {\n\treturn status === 404;\n}\n/**\n* Prepare params\n*/\nconst prepare = (provider, prefix, icons) => {\n\tconst results = [];\n\tconst maxLength = calculateMaxLength(provider, prefix);\n\tconst type = \"icons\";\n\tlet item = {\n\t\ttype,\n\t\tprovider,\n\t\tprefix,\n\t\ticons: []\n\t};\n\tlet length = 0;\n\ticons.forEach((name, index) => {\n\t\tlength += name.length + 1;\n\t\tif (length >= maxLength && index > 0) {\n\t\t\tresults.push(item);\n\t\t\titem = {\n\t\t\t\ttype,\n\t\t\t\tprovider,\n\t\t\t\tprefix,\n\t\t\t\ticons: []\n\t\t\t};\n\t\t\tlength = name.length;\n\t\t}\n\t\titem.icons.push(name);\n\t});\n\tresults.push(item);\n\treturn results;\n};\n/**\n* Get path\n*/\nfunction getPath(provider) {\n\tif (typeof provider === \"string\") {\n\t\tconst config = getAPIConfig(provider);\n\t\tif (config) return config.path;\n\t}\n\treturn \"/\";\n}\n/**\n* Load icons\n*/\nconst send = (host, params, callback) => {\n\tif (!fetchModule) {\n\t\tcallback(\"abort\", 424);\n\t\treturn;\n\t}\n\tlet path = getPath(params.provider);\n\tswitch (params.type) {\n\t\tcase \"icons\": {\n\t\t\tconst prefix = params.prefix;\n\t\t\tconst iconsList = params.icons.join(\",\");\n\t\t\tconst urlParams = new URLSearchParams({ icons: iconsList });\n\t\t\tpath += prefix + \".json?\" + urlParams.toString();\n\t\t\tbreak;\n\t\t}\n\t\tcase \"custom\": {\n\t\t\tconst uri = params.uri;\n\t\t\tpath += uri.slice(0, 1) === \"/\" ? uri.slice(1) : uri;\n\t\t\tbreak;\n\t\t}\n\t\tdefault:\n\t\t\tcallback(\"abort\", 400);\n\t\t\treturn;\n\t}\n\tlet defaultError = 503;\n\tfetchModule(host + path).then((response) => {\n\t\tconst status = response.status;\n\t\tif (status !== 200) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tcallback(shouldAbort(status) ? \"abort\" : \"next\", status);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tdefaultError = 501;\n\t\treturn response.json();\n\t}).then((data) => {\n\t\tif (typeof data !== \"object\" || data === null) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (data === 404) callback(\"abort\", data);\n\t\t\t\telse callback(\"next\", defaultError);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tsetTimeout(() => {\n\t\t\tcallback(\"success\", data);\n\t\t});\n\t}).catch(() => {\n\t\tcallback(\"next\", defaultError);\n\t});\n};\n/**\n* Export module\n*/\nconst fetchAPIModule = {\n\tprepare,\n\tsend\n};\n\n/**\n* Set custom loader for multiple icons\n*/\nfunction setCustomIconsLoader$1(loader, prefix, provider) {\n\tgetStorage(provider || \"\", prefix).loadIcons = loader;\n}\n/**\n* Set custom loader for one icon\n*/\nfunction setCustomIconLoader$1(loader, prefix, provider) {\n\tgetStorage(provider || \"\", prefix).loadIcon = loader;\n}\n\n/**\n * Attribute to add\n */\nconst nodeAttr = 'data-style';\n/**\n * Custom style to add to each node\n */\nlet customStyle = '';\n/**\n * Set custom style to add to all components\n *\n * Affects only components rendered after function call\n */\nfunction appendCustomStyle(style) {\n customStyle = style;\n}\n/**\n * Add/update style node\n */\nfunction updateStyle(parent, inline) {\n // Get node, create if needed\n let styleNode = Array.from(parent.childNodes).find((node) => node.hasAttribute &&\n node.hasAttribute(nodeAttr));\n if (!styleNode) {\n styleNode = document.createElement('style');\n styleNode.setAttribute(nodeAttr, nodeAttr);\n parent.appendChild(styleNode);\n }\n // Update content\n styleNode.textContent =\n ':host{display:inline-block;vertical-align:' +\n (inline ? '-0.125em' : '0') +\n '}span,svg{display:block;margin:auto}' +\n customStyle;\n}\n\n// Core\n/**\n * Get functions and initialise stuff\n */\nfunction exportFunctions() {\n /**\n * Initialise stuff\n */\n // Set API module\n setAPIModule('', fetchAPIModule);\n // Allow simple icon names\n allowSimpleNames(true);\n let _window;\n try {\n _window = window;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (err) {\n //\n }\n if (_window) {\n // Load icons from global \"IconifyPreload\"\n if (_window.IconifyPreload !== void 0) {\n const preload = _window.IconifyPreload;\n const err = 'Invalid IconifyPreload syntax.';\n if (typeof preload === 'object' && preload !== null) {\n (preload instanceof Array ? preload : [preload]).forEach((item) => {\n try {\n if (\n // Check if item is an object and not null/array\n typeof item !== 'object' ||\n item === null ||\n item instanceof Array ||\n // Check for 'icons' and 'prefix'\n typeof item.icons !== 'object' ||\n typeof item.prefix !== 'string' ||\n // Add icon set\n !addCollection$1(item)) {\n console.error(err);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (e) {\n console.error(err);\n }\n });\n }\n }\n // Set API from global \"IconifyProviders\"\n if (_window.IconifyProviders !== void 0) {\n const providers = _window.IconifyProviders;\n if (typeof providers === 'object' && providers !== null) {\n for (const key in providers) {\n const err = 'IconifyProviders[' + key + '] is invalid.';\n try {\n const value = providers[key];\n if (typeof value !== 'object' ||\n !value ||\n value.resources === void 0) {\n continue;\n }\n if (!addAPIProvider$1(key, value)) {\n console.error(err);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (e) {\n console.error(err);\n }\n }\n }\n }\n }\n const _api = {\n getAPIConfig,\n setAPIModule,\n sendAPIQuery,\n setFetch,\n getFetch,\n listAPIProviders,\n };\n return {\n iconLoaded: iconLoaded$1,\n getIcon: getIcon$1,\n listIcons: listIcons$1,\n addIcon: addIcon$1,\n addCollection: addCollection$1,\n calculateSize: calculateSize$1,\n buildIcon: iconToSVG,\n iconToHTML: iconToHTML$1,\n svgToURL: svgToURL$1,\n loadIcons: loadIcons$1,\n loadIcon: loadIcon$1,\n addAPIProvider: addAPIProvider$1,\n setCustomIconLoader: setCustomIconLoader$1,\n setCustomIconsLoader: setCustomIconsLoader$1,\n appendCustomStyle,\n _api,\n };\n}\n\n// List of properties to apply\nconst monotoneProps = {\n 'background-color': 'currentColor',\n};\nconst coloredProps = {\n 'background-color': 'transparent',\n};\n// Dynamically add common props to variables above\nconst propsToAdd = {\n image: 'var(--svg)',\n repeat: 'no-repeat',\n size: '100% 100%',\n};\nconst propsToAddTo = {\n '-webkit-mask': monotoneProps,\n 'mask': monotoneProps,\n 'background': coloredProps,\n};\nfor (const prefix in propsToAddTo) {\n const list = propsToAddTo[prefix];\n for (const prop in propsToAdd) {\n list[prefix + '-' + prop] = propsToAdd[prop];\n }\n}\n/**\n * Fix size: add 'px' to numbers\n */\nfunction fixSize(value) {\n return value ? value + (value.match(/^[-0-9.]+$/) ? 'px' : '') : 'inherit';\n}\n/**\n * Render node as <span>\n */\nfunction renderSPAN(data, icon, useMask) {\n const node = document.createElement('span');\n // Body\n let body = data.body;\n if (body.indexOf('<a') !== -1) {\n // Animated SVG: add something to fix timing bug\n body += '<!-- ' + Date.now() + ' -->';\n }\n // Generate SVG as URL\n const renderAttribs = data.attributes;\n const html = iconToHTML$1(body, {\n ...renderAttribs,\n width: icon.width + '',\n height: icon.height + '',\n });\n const url = svgToURL$1(html);\n // Generate style\n const svgStyle = node.style;\n const styles = {\n '--svg': url,\n 'width': fixSize(renderAttribs.width),\n 'height': fixSize(renderAttribs.height),\n ...(useMask ? monotoneProps : coloredProps),\n };\n // Apply style\n for (const prop in styles) {\n svgStyle.setProperty(prop, styles[prop]);\n }\n return node;\n}\n\nlet policy;\n/**\n* Attempt to create policy\n*/\nfunction createPolicy() {\n\ttry {\n\t\tpolicy = window.trustedTypes.createPolicy(\"iconify\", { createHTML: (s) => s });\n\t} catch (err) {\n\t\tpolicy = null;\n\t}\n}\n/**\n* Clean up value for innerHTML assignment\n*\n* This code doesn't actually clean up anything.\n* It is intended be used with Iconify icon data, which has already been validated\n*/\nfunction cleanUpInnerHTML(html) {\n\tif (policy === void 0) createPolicy();\n\treturn policy ? policy.createHTML(html) : html;\n}\n\n/**\n * Render node as <svg>\n */\nfunction renderSVG(data) {\n const node = document.createElement('span');\n // Add style if needed\n const attr = data.attributes;\n let style = '';\n if (!attr.width) {\n style = 'width: inherit;';\n }\n if (!attr.height) {\n style += 'height: inherit;';\n }\n if (style) {\n attr.style = style;\n }\n // Generate SVG\n const html = iconToHTML$1(data.body, attr);\n node.innerHTML = cleanUpInnerHTML(html);\n return node.firstChild;\n}\n\n/**\n * Find icon node\n */\nfunction findIconElement(parent) {\n return Array.from(parent.childNodes).find((node) => {\n const tag = node.tagName &&\n node.tagName.toUpperCase();\n return tag === 'SPAN' || tag === 'SVG';\n });\n}\n/**\n * Render icon\n */\nfunction renderIcon(parent, state) {\n const iconData = state.icon.data;\n const customisations = state.customisations;\n // Render icon\n const renderData = iconToSVG(iconData, customisations);\n if (customisations.preserveAspectRatio) {\n renderData.attributes['preserveAspectRatio'] =\n customisations.preserveAspectRatio;\n }\n const mode = state.renderedMode;\n let node;\n switch (mode) {\n case 'svg':\n node = renderSVG(renderData);\n break;\n default:\n node = renderSPAN(renderData, {\n ...defaultIconProps,\n ...iconData,\n }, mode === 'mask');\n }\n // Set element\n const oldNode = findIconElement(parent);\n if (oldNode) {\n // Replace old element\n if (node.tagName === 'SPAN' && oldNode.tagName === node.tagName) {\n // Swap style instead of whole node\n oldNode.setAttribute('style', node.getAttribute('style'));\n }\n else {\n parent.replaceChild(node, oldNode);\n }\n }\n else {\n // Add new element\n parent.appendChild(node);\n }\n}\n\n/**\n * Set state to PendingState\n */\nfunction setPendingState(icon, inline, lastState) {\n const lastRender = lastState &&\n (lastState.rendered\n ? lastState\n : lastState.lastRender);\n return {\n rendered: false,\n inline,\n icon,\n lastRender,\n };\n}\n\n/**\n * Register 'iconify-icon' component, if it does not exist\n */\nfunction defineIconifyIcon(name = 'iconify-icon') {\n // Check for custom elements registry and HTMLElement\n let customElements;\n let ParentClass;\n try {\n customElements = window.customElements;\n ParentClass = window.HTMLElement;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (err) {\n return;\n }\n // Make sure registry and HTMLElement exist\n if (!customElements || !ParentClass) {\n return;\n }\n // Check for duplicate\n const ConflictingClass = customElements.get(name);\n if (ConflictingClass) {\n return ConflictingClass;\n }\n // All attributes\n const attributes = [\n // Icon\n 'icon',\n // Mode\n 'mode',\n 'inline',\n 'noobserver',\n // Customisations\n 'width',\n 'height',\n 'rotate',\n 'flip',\n ];\n /**\n * Component class\n */\n const IconifyIcon = class extends ParentClass {\n // Root\n _shadowRoot;\n // Initialised\n _initialised = false;\n // Icon state\n _state;\n // Attributes check queued\n _checkQueued = false;\n // Connected\n _connected = false;\n // Observer\n _observer = null;\n _visible = true;\n /**\n * Constructor\n */\n constructor() {\n super();\n // Attach shadow DOM\n const root = (this._shadowRoot = this.attachShadow({\n mode: 'open',\n }));\n // Add style\n const inline = this.hasAttribute('inline');\n updateStyle(root, inline);\n // Create empty state\n this._state = setPendingState({\n value: '',\n }, inline);\n // Queue icon render\n this._queueCheck();\n }\n /**\n * Connected to DOM\n */\n connectedCallback() {\n this._connected = true;\n this.startObserver();\n }\n /**\n * Disconnected from DOM\n */\n disconnectedCallback() {\n this._connected = false;\n this.stopObserver();\n }\n /**\n * Observed attributes\n */\n static get observedAttributes() {\n return attributes.slice(0);\n }\n /**\n * Observed properties that are different from attributes\n *\n * Experimental! Need to test with various frameworks that support it\n */\n /*\n static get properties() {\n return {\n inline: {\n type: Boolean,\n reflect: true,\n },\n // Not listing other attributes because they are strings or combination\n // of string and another type. Cannot have multiple types\n };\n }\n */\n /**\n * Attribute has changed\n */\n attributeChangedCallback(name) {\n switch (name) {\n case 'inline': {\n // Update immediately: not affected by other attributes\n const newInline = this.hasAttribute('inline');\n const state = this._state;\n if (newInline !== state.inline) {\n // Update style if inline mode changed\n state.inline = newInline;\n updateStyle(this._shadowRoot, newInline);\n }\n break;\n }\n case 'noobserver': {\n const value = this.hasAttribute('noobserver');\n if (value) {\n this.startObserver();\n }\n else {\n this.stopObserver();\n }\n break;\n }\n default:\n // Queue check for other attributes\n this._queueCheck();\n }\n }\n /**\n * Get/set icon\n */\n get icon() {\n const value = this.getAttribute('icon');\n if (value && value.slice(0, 1) === '{') {\n try {\n return JSON.parse(value);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (err) {\n //\n }\n }\n return value;\n }\n set icon(value) {\n if (typeof value === 'object') {\n value = JSON.stringify(value);\n }\n this.setAttribute('icon', value);\n }\n /**\n * Get/set inline\n */\n get inline() {\n return this.hasAttribute('inline');\n }\n set inline(value) {\n if (value) {\n this.setAttribute('inline', 'true');\n }\n else {\n this.removeAttribute('inline');\n }\n }\n /**\n * Get/set observer\n */\n get observer() {\n return this.hasAttribute('observer');\n }\n set observer(value) {\n if (value) {\n this.setAttribute('observer', 'true');\n }\n else {\n this.removeAttribute('observer');\n }\n }\n /**\n * Restart animation\n */\n restartAnimation() {\n const state = this._state;\n if (state.rendered) {\n const root = this._shadowRoot;\n if (state.renderedMode === 'svg') {\n // Update root node\n try {\n root.lastChild.setCurrentTime(0);\n return;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (err) {\n // Failed: setCurrentTime() is not supported\n }\n }\n renderIcon(root, state);\n }\n }\n /**\n * Get status\n */\n get status() {\n const state = this._state;\n return state.rendered\n ? 'rendered'\n : state.icon.data === null\n ? 'failed'\n : 'loading';\n }\n /**\n * Queue attributes re-check\n */\n _queueCheck() {\n if (!this._checkQueued) {\n this._checkQueued = true;\n setTimeout(() => {\n this._check();\n });\n }\n }\n /**\n * Check for changes\n */\n _check() {\n if (!this._checkQueued) {\n return;\n }\n this._checkQueued = false;\n const state = this._state;\n // Get icon\n const newIcon = this.getAttribute('icon');\n if (newIcon !== state.icon.value) {\n this._iconChanged(newIcon);\n return;\n }\n // Ignore other attributes if icon is not rendered\n if (!state.rendered || !this._visible) {\n return;\n }\n // Check for mode and attribute changes\n const mode = this.getAttribute('mode');\n const customisations = getCustomisations(this);\n if (state.attrMode !== mode ||\n haveCustomisationsChanged(state.customisations, customisations) ||\n !findIconElement(this._shadowRoot)) {\n this._renderIcon(state.icon, customisations, mode);\n }\n }\n /**\n * Icon value has changed\n */\n _iconChanged(newValue) {\n const icon = parseIconValue(newValue, (value, name, data) => {\n // Asynchronous callback: re-check values to make sure stuff wasn't changed\n const state = this._state;\n if (state.rendered || this.getAttribute('icon') !== value) {\n // Icon data is already available or icon attribute was changed\n return;\n }\n // Change icon\n const icon = {\n value,\n name,\n data,\n };\n if (icon.data) {\n // Render icon\n this._gotIconData(icon);\n }\n else {\n // Nothing to render: update icon in state\n state.icon = icon;\n }\n });\n if (icon.data) {\n // Icon is ready to render\n this._gotIconData(icon);\n }\n else {\n // Pending icon\n this._state = setPendingState(icon, this._state.inline, this._state);\n }\n }\n /**\n * Force render icon on state change\n */\n _forceRender() {\n if (!this._visible) {\n // Remove icon\n const node = findIconElement(this._shadowRoot);\n if (node) {\n this._shadowRoot.removeChild(node);\n }\n return;\n }\n // Re-render icon\n this._queueCheck();\n }\n /**\n * Got new icon data, icon is ready to (re)render\n */\n _gotIconData(icon) {\n this._checkQueued = false;\n this._renderIcon(icon, getCustomisations(this), this.getAttribute('mode'));\n }\n /**\n * Re-render based on icon data\n */\n _renderIcon(icon, customisations, attrMode) {\n // Get mode\n const renderedMode = getRenderMode(icon.data.body, attrMode);\n // Inline was not changed\n const inline = this._state.inline;\n // Set state and render\n renderIcon(this._shadowRoot, (this._state = {\n rendered: true,\n icon,\n inline,\n customisations,\n attrMode,\n renderedMode,\n }));\n }\n /**\n * Start observer\n */\n startObserver() {\n if (!this._observer && !this.hasAttribute('noobserver')) {\n try {\n this._observer = new IntersectionObserver((entries) => {\n const intersecting = entries.some((entry) => entry.isIntersecting);\n if (intersecting !== this._visible) {\n this._visible = intersecting;\n this._forceRender();\n }\n });\n this._observer.observe(this);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (err) {\n // Something went wrong, possibly observer is not supported\n if (this._observer) {\n try {\n this._observer.disconnect();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n }\n catch (err) {\n //\n }\n this._observer = null;\n }\n }\n }\n }\n /**\n * Stop observer\n */\n stopObserver() {\n if (this._observer) {\n this._observer.disconnect();\n this._observer = null;\n this._visible = true;\n if (this._connected) {\n // Render icon\n this._forceRender();\n }\n }\n }\n };\n // Add getters and setters\n attributes.forEach((attr) => {\n if (!(attr in IconifyIcon.prototype)) {\n Object.defineProperty(IconifyIcon.prototype, attr, {\n get: function () {\n return this.getAttribute(attr);\n },\n set: function (value) {\n if (value !== null) {\n this.setAttribute(attr, value);\n }\n else {\n this.removeAttribute(attr);\n }\n },\n });\n }\n });\n // Add exported functions: both as static and instance methods\n const functions = exportFunctions();\n for (const key in functions) {\n IconifyIcon[key] = IconifyIcon.prototype[key] = functions[key];\n }\n // Define new component\n customElements.define(name, IconifyIcon);\n return IconifyIcon;\n}\n\n/**\n * Create exported data: either component instance or functions\n */\nconst IconifyIconComponent = defineIconifyIcon() || exportFunctions();\n/**\n * Export functions\n */\nconst { iconLoaded, getIcon, listIcons, addIcon, addCollection, calculateSize, buildIcon, iconToHTML, svgToURL, loadIcons, loadIcon, setCustomIconLoader, setCustomIconsLoader, addAPIProvider, _api, } = IconifyIconComponent;\n\nexport { IconifyIconComponent, _api, addAPIProvider, addCollection, addIcon, appendCustomStyle, buildIcon, calculateSize, getIcon, iconLoaded, iconToHTML, listIcons, loadIcon, loadIcons, setCustomIconLoader, setCustomIconsLoader, svgToURL };\n",":host {\n --color: currentColor;\n\n display: contents;\n color: var(--color);\n}\n\niconify-icon {\n color: inherit;\n}\n","import 'iconify-icon';\nimport type { PropertyValues } from 'lit';\nimport { html, unsafeCSS } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { LuxenElement } from '../../shared/luxen-element';\nimport hostStyles from '../../shared/styles/host.styles';\nimport rawStyles from './icon.css?inline';\n\nconst styles = unsafeCSS(rawStyles);\n\n/**\n * @summary An icon component that renders icons from any Iconify icon set. Decorative by default. Set `label` for meaningful icons.\n * @customElement l-icon\n *\n * @cssproperty --color - The color of the icon. Defaults to `currentColor`.\n */\nexport class Icon extends LuxenElement {\n static override styles = [hostStyles, styles];\n\n /** The icon name in Iconify format (e.g. `mdi:home`, `lucide:check`). */\n @property()\n name = '';\n\n /** Accessible label. When set, the icon becomes meaningful (`role=\"img\"` + `aria-label`). When absent, the icon is decorative. */\n @property()\n label?: string;\n\n override updated(changedProperties: PropertyValues<this>) {\n if (changedProperties.has('label')) {\n if (this.label) {\n this.setAttribute('role', 'img');\n this.setAttribute('aria-label', this.label);\n } else {\n this.removeAttribute('role');\n this.removeAttribute('aria-label');\n }\n }\n }\n\n override render() {\n return html`\n <iconify-icon\n icon=${this.name}\n aria-hidden=\"true\"\n ></iconify-icon>\n `;\n }\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { LuxenIcon } from './icon';
1
+ import { Icon } from './icon';
2
2
  export * from './icon';
3
3
  declare global {
4
4
  interface HTMLElementTagNameMap {
5
- 'l-icon': LuxenIcon;
5
+ 'l-icon': Icon;
6
6
  }
7
7
  }
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/html/elements/icon/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,cAAc,QAAQ,CAAC;AAGvB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,QAAQ,EAAE,SAAS,CAAC;KACrB;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/html/elements/icon/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,cAAc,QAAQ,CAAC;AAGvB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,QAAQ,EAAE,IAAI,CAAC;KAChB;CACF"}
@@ -1,2 +1,2 @@
1
- import{define as e}from"../../define.js";import{LuxenIcon as t}from"./icon.js";e(`icon`,t);
1
+ import{define as e}from"../../define.js";import{Icon as t}from"./icon.js";e(`icon`,t);
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/html/elements/icon/index.ts"],"sourcesContent":["import { define } from '../../define';\nimport { LuxenIcon } from './icon';\nexport * from './icon';\ndefine('icon', LuxenIcon);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'l-icon': LuxenIcon;\n }\n}\n"],"mappings":"+EAGA,EAAO,OAAQ,EAAU"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/html/elements/icon/index.ts"],"sourcesContent":["import { define } from '../../define';\nimport { Icon } from './icon';\nexport * from './icon';\ndefine('icon', Icon);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'l-icon': Icon;\n }\n}\n"],"mappings":"0EAGA,EAAO,OAAQ,EAAK"}
@@ -1,8 +1,8 @@
1
- import { LuxenInputOtp } from './input-otp';
1
+ import { InputOtp } from './input-otp';
2
2
  export * from './input-otp';
3
3
  declare global {
4
4
  interface HTMLElementTagNameMap {
5
- 'l-input-otp': LuxenInputOtp;
5
+ 'l-input-otp': InputOtp;
6
6
  }
7
7
  }
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/html/elements/input-otp/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,cAAc,aAAa,CAAC;AAG5B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,aAAa,CAAC;KAC9B;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/html/elements/input-otp/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,cAAc,aAAa,CAAC;AAG5B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,QAAQ,CAAC;KACzB;CACF"}
@@ -1,2 +1,2 @@
1
- import{define as e}from"../../define.js";import{LuxenInputOtp as t}from"./input-otp.js";e(`input-otp`,t);
1
+ import{define as e}from"../../define.js";import{InputOtp as t}from"./input-otp.js";e(`input-otp`,t);
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/html/elements/input-otp/index.ts"],"sourcesContent":["import { define } from '../../define';\nimport { LuxenInputOtp } from './input-otp';\nexport * from './input-otp';\ndefine('input-otp', LuxenInputOtp);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'l-input-otp': LuxenInputOtp;\n }\n}\n"],"mappings":"wFAGA,EAAO,YAAa,EAAc"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/html/elements/input-otp/index.ts"],"sourcesContent":["import { define } from '../../define';\nimport { InputOtp } from './input-otp';\nexport * from './input-otp';\ndefine('input-otp', InputOtp);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'l-input-otp': InputOtp;\n }\n}\n"],"mappings":"mFAGA,EAAO,YAAa,EAAS"}
@@ -17,7 +17,7 @@ import { LuxenElement } from '../../shared/luxen-element';
17
17
  * @cssproperty --cell-focus-color - Border + ring color of the active (focused) cell.
18
18
  * @cssproperty --cell-focus-ring - `box-shadow` of the active cell ring (defaults to a 1px solid ring; set to `none` to disable).
19
19
  */
20
- export declare class LuxenInputOtp extends LuxenElement {
20
+ export declare class InputOtp extends LuxenElement {
21
21
  createRenderRoot(): this;
22
22
  /** Position after which to insert a visual separator (e.g., 3 for a 3-3 grouping). */
23
23
  separatorAfter?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"input-otp.d.ts","sourceRoot":"","sources":["../../../src/html/elements/input-otp/input-otp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,aAAc,SAAQ,YAAY;IACpC,gBAAgB;IAIzB,sFAAsF;IAEtF,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,YAAY,CAAS;IAEpB,iBAAiB;IAKjB,oBAAoB;IAO7B,OAAO,CAAC,MAAM;IA4Dd,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,YAAY,CAyBlB;IAEF,OAAO,CAAC,WAAW,CAIjB;IAEF,OAAO,CAAC,oBAAoB,CAE1B;CACH"}
1
+ {"version":3,"file":"input-otp.d.ts","sourceRoot":"","sources":["../../../src/html/elements/input-otp/input-otp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,QAAS,SAAQ,YAAY;IAC/B,gBAAgB;IAIzB,sFAAsF;IAEtF,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,YAAY,CAAS;IAEpB,iBAAiB;IAKjB,oBAAoB;IAO7B,OAAO,CAAC,MAAM;IA4Dd,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,YAAY,CAyBlB;IAEF,OAAO,CAAC,WAAW,CAIjB;IAEF,OAAO,CAAC,oBAAoB,CAE1B;CACH"}
@@ -1,2 +1,2 @@
1
- import{LuxenElement as e}from"../../shared/luxen-element.js";import{a as t,t as n}from"../../chunks/decorate.js";var r=class extends e{constructor(...e){super(...e),this._cells=[],this._separatorEl=null,this._initialized=!1,this._updateCells=()=>{let e=this._input.value,t=this._input.maxLength||6,n=Math.min(this._input.selectionStart??0,t-1),r=document.activeElement===this._input;for(let t=0;t<this._cells.length;t++){let i=this._cells[t],a=i.firstElementChild,o=e[t]??``;a.textContent=o,o?i.setAttribute(`data-filled`,``):i.removeAttribute(`data-filled`),r&&t===n?i.setAttribute(`data-active`,``):i.removeAttribute(`data-active`)}},this._clearCells=()=>{for(let e of this._cells)e.removeAttribute(`data-active`)},this._scheduleUpdateCells=()=>{requestAnimationFrame(this._updateCells)}}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),requestAnimationFrame(()=>this._setup())}disconnectedCallback(){super.disconnectedCallback(),this._teardown()}_setup(){let e=this.querySelector(`input`);if(!e)return;this._input=e;let t=Number(getComputedStyle(this).getPropertyValue(`--digits`).trim())||6,n={type:`text`,inputmode:`numeric`,autocomplete:`one-time-code`,maxlength:String(t),pattern:String.raw`\d{${t}}`};for(let[e,t]of Object.entries(n))this._input.hasAttribute(e)||this._input.setAttribute(e,t);this._container=document.createElement(`div`),this._container.className=`l-input-otp-cells`,this._container.setAttribute(`aria-hidden`,`true`);for(let e=0;e<t;e++){let n=document.createElement(`div`);n.className=`l-input-otp-cell`,n.appendChild(document.createElement(`span`)),this._cells.push(n),this._container.appendChild(n),this.separatorAfter&&e===this.separatorAfter-1&&e<t-1&&(this._separatorEl=document.createElement(`span`),this._separatorEl.className=`l-input-otp-separator`,this._container.appendChild(this._separatorEl))}this._input.replaceWith(this._container),this._container.appendChild(this._input),this._initialized=!0,this._updateCells(),this._input.addEventListener(`input`,this._updateCells),this._input.addEventListener(`click`,this._updateCells),this._input.addEventListener(`keyup`,this._updateCells),this._input.addEventListener(`focus`,this._scheduleUpdateCells),this._input.addEventListener(`blur`,this._clearCells)}_teardown(){this._initialized&&=(this._input.removeEventListener(`input`,this._updateCells),this._input.removeEventListener(`click`,this._updateCells),this._input.removeEventListener(`keyup`,this._updateCells),this._input.removeEventListener(`focus`,this._scheduleUpdateCells),this._input.removeEventListener(`blur`,this._clearCells),this._container.replaceWith(this._input),this._separatorEl?.remove(),this._cells=[],this._separatorEl=null,!1)}};n([t({type:Number,reflect:!0,attribute:`separator-after`})],r.prototype,`separatorAfter`,void 0);export{r as LuxenInputOtp};
1
+ import{LuxenElement as e}from"../../shared/luxen-element.js";import{i as t,t as n}from"../../chunks/decorate.js";var r=class extends e{constructor(...e){super(...e),this._cells=[],this._separatorEl=null,this._initialized=!1,this._updateCells=()=>{let e=this._input.value,t=this._input.maxLength||6,n=Math.min(this._input.selectionStart??0,t-1),r=document.activeElement===this._input;for(let t=0;t<this._cells.length;t++){let i=this._cells[t],a=i.firstElementChild,o=e[t]??``;a.textContent=o,o?i.setAttribute(`data-filled`,``):i.removeAttribute(`data-filled`),r&&t===n?i.setAttribute(`data-active`,``):i.removeAttribute(`data-active`)}},this._clearCells=()=>{for(let e of this._cells)e.removeAttribute(`data-active`)},this._scheduleUpdateCells=()=>{requestAnimationFrame(this._updateCells)}}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),requestAnimationFrame(()=>this._setup())}disconnectedCallback(){super.disconnectedCallback(),this._teardown()}_setup(){let e=this.querySelector(`input`);if(!e)return;this._input=e;let t=Number(getComputedStyle(this).getPropertyValue(`--digits`).trim())||6,n={type:`text`,inputmode:`numeric`,autocomplete:`one-time-code`,maxlength:String(t),pattern:String.raw`\d{${t}}`};for(let[e,t]of Object.entries(n))this._input.hasAttribute(e)||this._input.setAttribute(e,t);this._container=document.createElement(`div`),this._container.className=`l-input-otp-cells`,this._container.setAttribute(`aria-hidden`,`true`);for(let e=0;e<t;e++){let n=document.createElement(`div`);n.className=`l-input-otp-cell`,n.appendChild(document.createElement(`span`)),this._cells.push(n),this._container.appendChild(n),this.separatorAfter&&e===this.separatorAfter-1&&e<t-1&&(this._separatorEl=document.createElement(`span`),this._separatorEl.className=`l-input-otp-separator`,this._container.appendChild(this._separatorEl))}this._input.replaceWith(this._container),this._container.appendChild(this._input),this._initialized=!0,this._updateCells(),this._input.addEventListener(`input`,this._updateCells),this._input.addEventListener(`click`,this._updateCells),this._input.addEventListener(`keyup`,this._updateCells),this._input.addEventListener(`focus`,this._scheduleUpdateCells),this._input.addEventListener(`blur`,this._clearCells)}_teardown(){this._initialized&&=(this._input.removeEventListener(`input`,this._updateCells),this._input.removeEventListener(`click`,this._updateCells),this._input.removeEventListener(`keyup`,this._updateCells),this._input.removeEventListener(`focus`,this._scheduleUpdateCells),this._input.removeEventListener(`blur`,this._clearCells),this._container.replaceWith(this._input),this._separatorEl?.remove(),this._cells=[],this._separatorEl=null,!1)}};n([t({type:Number,reflect:!0,attribute:`separator-after`})],r.prototype,`separatorAfter`,void 0);export{r as InputOtp};
2
2
  //# sourceMappingURL=input-otp.js.map