igniteui-webcomponents 4.11.0 → 5.0.0-rc.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 (373) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/README.md +168 -110
  3. package/components/accordion/accordion.d.ts +2 -2
  4. package/components/accordion/accordion.js +25 -35
  5. package/components/accordion/accordion.js.map +1 -1
  6. package/components/avatar/avatar.d.ts +1 -3
  7. package/components/avatar/avatar.js +1 -3
  8. package/components/avatar/avatar.js.map +1 -1
  9. package/components/avatar/themes/avatar.base.css.js +1 -1
  10. package/components/avatar/themes/avatar.base.css.js.map +1 -1
  11. package/components/badge/badge.d.ts +2 -1
  12. package/components/badge/badge.js.map +1 -1
  13. package/components/badge/themes/badge.base.css.js +1 -1
  14. package/components/badge/themes/badge.base.css.js.map +1 -1
  15. package/components/button/button-base.d.ts +3 -4
  16. package/components/button/button-base.js +1 -9
  17. package/components/button/button-base.js.map +1 -1
  18. package/components/button/button.d.ts +3 -7
  19. package/components/button/button.js +4 -5
  20. package/components/button/button.js.map +1 -1
  21. package/components/button/icon-button.d.ts +2 -2
  22. package/components/button/icon-button.js +0 -3
  23. package/components/button/icon-button.js.map +1 -1
  24. package/components/button/themes/button/button.base.css.js +1 -1
  25. package/components/button/themes/button/button.base.css.js.map +1 -1
  26. package/components/button/themes/icon-button/icon-button.base.css.js +1 -1
  27. package/components/button/themes/icon-button/icon-button.base.css.js.map +1 -1
  28. package/components/button-group/themes/button.base.css.js +1 -1
  29. package/components/button-group/themes/button.base.css.js.map +1 -1
  30. package/components/button-group/themes/group.base.css.js +1 -1
  31. package/components/button-group/themes/group.base.css.js.map +1 -1
  32. package/components/calendar/base.d.ts +65 -0
  33. package/components/calendar/base.js +150 -0
  34. package/components/calendar/base.js.map +1 -0
  35. package/components/calendar/calendar.d.ts +113 -61
  36. package/components/calendar/calendar.js +417 -514
  37. package/components/calendar/calendar.js.map +1 -1
  38. package/components/calendar/days-view/days-view.d.ts +43 -46
  39. package/components/calendar/days-view/days-view.js +269 -340
  40. package/components/calendar/days-view/days-view.js.map +1 -1
  41. package/components/calendar/helpers.d.ts +30 -0
  42. package/components/calendar/helpers.js +99 -0
  43. package/components/calendar/helpers.js.map +1 -0
  44. package/components/calendar/model.d.ts +55 -0
  45. package/components/calendar/model.js +94 -0
  46. package/components/calendar/model.js.map +1 -0
  47. package/components/calendar/months-view/months-view.d.ts +12 -12
  48. package/components/calendar/months-view/months-view.js +72 -79
  49. package/components/calendar/months-view/months-view.js.map +1 -1
  50. package/components/calendar/themes/calendar.base.css.js +1 -1
  51. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  52. package/components/calendar/types.d.ts +16 -0
  53. package/components/calendar/types.js +10 -0
  54. package/components/calendar/types.js.map +1 -0
  55. package/components/calendar/years-view/years-view.d.ts +13 -12
  56. package/components/calendar/years-view/years-view.js +58 -73
  57. package/components/calendar/years-view/years-view.js.map +1 -1
  58. package/components/card/themes/card.actions.base.css.js +1 -1
  59. package/components/card/themes/card.actions.base.css.js.map +1 -1
  60. package/components/card/themes/card.content.base.css.js +1 -1
  61. package/components/card/themes/card.content.base.css.js.map +1 -1
  62. package/components/card/themes/card.header.base.css.js +1 -1
  63. package/components/card/themes/card.header.base.css.js.map +1 -1
  64. package/components/card/themes/card.media.base.css.js +1 -1
  65. package/components/card/themes/card.media.base.css.js.map +1 -1
  66. package/components/card/themes/container.base.css.js +1 -1
  67. package/components/card/themes/container.base.css.js.map +1 -1
  68. package/components/checkbox/checkbox-base.d.ts +8 -5
  69. package/components/checkbox/checkbox-base.js +8 -15
  70. package/components/checkbox/checkbox-base.js.map +1 -1
  71. package/components/checkbox/checkbox.d.ts +2 -4
  72. package/components/checkbox/checkbox.js.map +1 -1
  73. package/components/checkbox/switch.d.ts +1 -3
  74. package/components/checkbox/switch.js.map +1 -1
  75. package/components/checkbox/themes/checkbox.base.css.js +1 -1
  76. package/components/checkbox/themes/checkbox.base.css.js.map +1 -1
  77. package/components/checkbox/themes/switch.base.css.js +1 -1
  78. package/components/checkbox/themes/switch.base.css.js.map +1 -1
  79. package/components/checkbox/validators.d.ts +3 -0
  80. package/components/checkbox/validators.js +5 -0
  81. package/components/checkbox/validators.js.map +1 -0
  82. package/components/chip/chip.d.ts +4 -3
  83. package/components/chip/chip.js +11 -19
  84. package/components/chip/chip.js.map +1 -1
  85. package/components/chip/themes/chip.base.css.js +1 -1
  86. package/components/chip/themes/chip.base.css.js.map +1 -1
  87. package/components/chip/themes/shared/chip.common.css.js +1 -1
  88. package/components/chip/themes/shared/chip.common.css.js.map +1 -1
  89. package/components/combo/combo.d.ts +36 -54
  90. package/components/combo/combo.js +36 -59
  91. package/components/combo/combo.js.map +1 -1
  92. package/components/combo/themes/combo-header.base.css.js +1 -1
  93. package/components/combo/themes/combo-header.base.css.js.map +1 -1
  94. package/components/combo/themes/combo-item.base.css.js +1 -1
  95. package/components/combo/themes/combo-item.base.css.js.map +1 -1
  96. package/components/combo/themes/combo.base.css.js +1 -1
  97. package/components/combo/themes/combo.base.css.js.map +1 -1
  98. package/components/combo/types.d.ts +2 -2
  99. package/components/combo/types.js.map +1 -1
  100. package/components/combo/validators.d.ts +3 -0
  101. package/components/combo/validators.js +9 -0
  102. package/components/combo/validators.js.map +1 -0
  103. package/components/common/controllers/key-bindings.d.ts +1 -0
  104. package/components/common/controllers/key-bindings.js.map +1 -1
  105. package/components/common/controllers/mutation-observer.d.ts +1 -0
  106. package/components/common/controllers/mutation-observer.js.map +1 -1
  107. package/components/common/controllers/root-click.d.ts +4 -2
  108. package/components/common/controllers/root-click.js +13 -7
  109. package/components/common/controllers/root-click.js.map +1 -1
  110. package/components/common/definitions/defineAllComponents.js +0 -2
  111. package/components/common/definitions/defineAllComponents.js.map +1 -1
  112. package/components/common/localization/intl-formatters.d.ts +17 -0
  113. package/components/common/localization/intl-formatters.js +46 -0
  114. package/components/common/localization/intl-formatters.js.map +1 -0
  115. package/components/common/mixins/alert.d.ts +3 -3
  116. package/components/common/mixins/alert.js +6 -4
  117. package/components/common/mixins/alert.js.map +1 -1
  118. package/components/common/mixins/combo-box.d.ts +4 -3
  119. package/components/common/mixins/combo-box.js +16 -10
  120. package/components/common/mixins/combo-box.js.map +1 -1
  121. package/components/common/mixins/form-associated.d.ts +1 -1
  122. package/components/common/mixins/form-associated.js +4 -2
  123. package/components/common/mixins/form-associated.js.map +1 -1
  124. package/components/common/util.d.ts +26 -0
  125. package/components/common/util.js +34 -0
  126. package/components/common/util.js.map +1 -1
  127. package/components/date-picker/date-picker.d.ts +7 -10
  128. package/components/date-picker/date-picker.js +16 -33
  129. package/components/date-picker/date-picker.js.map +1 -1
  130. package/components/date-picker/themes/date-picker.base.css.js +1 -1
  131. package/components/date-picker/themes/date-picker.base.css.js.map +1 -1
  132. package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
  133. package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
  134. package/components/date-picker/validators.d.ts +3 -0
  135. package/components/date-picker/validators.js +15 -0
  136. package/components/date-picker/validators.js.map +1 -0
  137. package/components/date-time-input/date-time-input.d.ts +3 -22
  138. package/components/date-time-input/date-time-input.js +8 -36
  139. package/components/date-time-input/date-time-input.js.map +1 -1
  140. package/components/date-time-input/date-util.js +3 -1
  141. package/components/date-time-input/date-util.js.map +1 -1
  142. package/components/date-time-input/validators.d.ts +3 -0
  143. package/components/date-time-input/validators.js +18 -0
  144. package/components/date-time-input/validators.js.map +1 -0
  145. package/components/dialog/dialog.d.ts +12 -25
  146. package/components/dialog/dialog.js +55 -77
  147. package/components/dialog/dialog.js.map +1 -1
  148. package/components/dialog/themes/dialog.base.css.js +1 -1
  149. package/components/dialog/themes/dialog.base.css.js.map +1 -1
  150. package/components/dialog/themes/shared/dialog.common.css.js +1 -1
  151. package/components/dialog/themes/shared/dialog.common.css.js.map +1 -1
  152. package/components/divider/divider.js.map +1 -1
  153. package/components/divider/themes/divider.base.css.js +1 -1
  154. package/components/divider/themes/divider.base.css.js.map +1 -1
  155. package/components/dropdown/dropdown-group.d.ts +1 -1
  156. package/components/dropdown/dropdown-group.js +5 -3
  157. package/components/dropdown/dropdown-group.js.map +1 -1
  158. package/components/dropdown/dropdown.d.ts +4 -11
  159. package/components/dropdown/dropdown.js +10 -23
  160. package/components/dropdown/dropdown.js.map +1 -1
  161. package/components/dropdown/themes/dropdown-group.base.css.js +1 -1
  162. package/components/dropdown/themes/dropdown-group.base.css.js.map +1 -1
  163. package/components/dropdown/themes/dropdown-header.base.css.js +1 -1
  164. package/components/dropdown/themes/dropdown-header.base.css.js.map +1 -1
  165. package/components/dropdown/themes/dropdown-item.base.css.js +1 -1
  166. package/components/dropdown/themes/dropdown-item.base.css.js.map +1 -1
  167. package/components/dropdown/themes/dropdown.base.css.js +1 -1
  168. package/components/dropdown/themes/dropdown.base.css.js.map +1 -1
  169. package/components/expansion-panel/expansion-panel.d.ts +10 -10
  170. package/components/expansion-panel/expansion-panel.js +39 -39
  171. package/components/expansion-panel/expansion-panel.js.map +1 -1
  172. package/components/expansion-panel/themes/expansion-panel.base.css.js +1 -1
  173. package/components/expansion-panel/themes/expansion-panel.base.css.js.map +1 -1
  174. package/components/icon/icon-references.d.ts +28 -0
  175. package/components/icon/icon-references.js +151 -0
  176. package/components/icon/icon-references.js.map +1 -0
  177. package/components/icon/icon-state.broadcast.d.ts +10 -0
  178. package/components/icon/icon-state.broadcast.js +36 -0
  179. package/components/icon/icon-state.broadcast.js.map +1 -0
  180. package/components/icon/icon.d.ts +3 -3
  181. package/components/icon/icon.js +13 -7
  182. package/components/icon/icon.js.map +1 -1
  183. package/components/icon/icon.registry.d.ts +14 -14
  184. package/components/icon/icon.registry.js +70 -26
  185. package/components/icon/icon.registry.js.map +1 -1
  186. package/components/icon/internal-icons-lib.d.ts +2 -2
  187. package/components/icon/internal-icons-lib.js +2 -2
  188. package/components/icon/internal-icons-lib.js.map +1 -1
  189. package/components/icon/registry/default-map.d.ts +12 -0
  190. package/components/icon/registry/default-map.js +31 -0
  191. package/components/icon/registry/default-map.js.map +1 -0
  192. package/components/icon/registry/parser.d.ts +6 -0
  193. package/components/icon/registry/parser.js +21 -0
  194. package/components/icon/registry/parser.js.map +1 -0
  195. package/components/icon/registry/types.d.ts +34 -0
  196. package/components/icon/registry/types.js +7 -0
  197. package/components/icon/registry/types.js.map +1 -0
  198. package/components/icon/themes/icon.base.css.js +1 -1
  199. package/components/icon/themes/icon.base.css.js.map +1 -1
  200. package/components/input/input-base.d.ts +8 -21
  201. package/components/input/input-base.js +12 -41
  202. package/components/input/input-base.js.map +1 -1
  203. package/components/input/input.d.ts +3 -29
  204. package/components/input/input.js +4 -78
  205. package/components/input/input.js.map +1 -1
  206. package/components/input/themes/input.base.css.js +1 -1
  207. package/components/input/themes/input.base.css.js.map +1 -1
  208. package/components/input/validators.d.ts +4 -0
  209. package/components/input/validators.js +30 -0
  210. package/components/input/validators.js.map +1 -0
  211. package/components/list/list.d.ts +1 -3
  212. package/components/list/list.js +1 -2
  213. package/components/list/list.js.map +1 -1
  214. package/components/list/themes/container.base.css.js +1 -1
  215. package/components/list/themes/container.base.css.js.map +1 -1
  216. package/components/mask-input/mask-input-base.d.ts +3 -2
  217. package/components/mask-input/mask-input-base.js.map +1 -1
  218. package/components/mask-input/mask-input.d.ts +1 -4
  219. package/components/mask-input/mask-input.js +7 -17
  220. package/components/mask-input/mask-input.js.map +1 -1
  221. package/components/mask-input/validators.d.ts +3 -0
  222. package/components/mask-input/validators.js +11 -0
  223. package/components/mask-input/validators.js.map +1 -0
  224. package/components/nav-drawer/nav-drawer-item.d.ts +1 -5
  225. package/components/nav-drawer/nav-drawer-item.js +9 -10
  226. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  227. package/components/nav-drawer/nav-drawer.d.ts +4 -3
  228. package/components/nav-drawer/nav-drawer.js +18 -7
  229. package/components/nav-drawer/nav-drawer.js.map +1 -1
  230. package/components/nav-drawer/themes/container.base.css.js +1 -1
  231. package/components/nav-drawer/themes/container.base.css.js.map +1 -1
  232. package/components/nav-drawer/themes/header-item.base.css.js +1 -1
  233. package/components/nav-drawer/themes/header-item.base.css.js.map +1 -1
  234. package/components/nav-drawer/themes/item.base.css.js +1 -1
  235. package/components/nav-drawer/themes/item.base.css.js.map +1 -1
  236. package/components/navbar/themes/navbar.base.css.js +1 -1
  237. package/components/navbar/themes/navbar.base.css.js.map +1 -1
  238. package/components/popover/themes/light/popover.base.css.js +1 -1
  239. package/components/popover/themes/light/popover.base.css.js.map +1 -1
  240. package/components/progress/base.d.ts +2 -1
  241. package/components/progress/base.js.map +1 -1
  242. package/components/progress/themes/circular/circular.progress.base.css.js +1 -1
  243. package/components/progress/themes/circular/circular.progress.base.css.js.map +1 -1
  244. package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
  245. package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
  246. package/components/radio/radio.d.ts +9 -9
  247. package/components/radio/radio.js +17 -31
  248. package/components/radio/radio.js.map +1 -1
  249. package/components/radio/themes/radio.base.css.js +1 -1
  250. package/components/radio/themes/radio.base.css.js.map +1 -1
  251. package/components/radio/validators.d.ts +3 -0
  252. package/components/radio/validators.js +13 -0
  253. package/components/radio/validators.js.map +1 -0
  254. package/components/radio-group/radio-group.base.css.js +1 -1
  255. package/components/radio-group/radio-group.base.css.js.map +1 -1
  256. package/components/radio-group/radio-group.js.map +1 -1
  257. package/components/rating/rating.d.ts +1 -9
  258. package/components/rating/rating.js +6 -16
  259. package/components/rating/rating.js.map +1 -1
  260. package/components/rating/themes/rating-symbol.base.css.js +1 -1
  261. package/components/rating/themes/rating-symbol.base.css.js.map +1 -1
  262. package/components/rating/themes/rating.base.css.js +1 -1
  263. package/components/rating/themes/rating.base.css.js.map +1 -1
  264. package/components/ripple/ripple.material.css.js +1 -1
  265. package/components/ripple/ripple.material.css.js.map +1 -1
  266. package/components/select/select.d.ts +5 -33
  267. package/components/select/select.js +23 -66
  268. package/components/select/select.js.map +1 -1
  269. package/components/select/themes/select.base.css.js +1 -1
  270. package/components/select/themes/select.base.css.js.map +1 -1
  271. package/components/select/validators.d.ts +3 -0
  272. package/components/select/validators.js +5 -0
  273. package/components/select/validators.js.map +1 -0
  274. package/components/slider/range-slider.d.ts +0 -16
  275. package/components/slider/range-slider.js +0 -18
  276. package/components/slider/range-slider.js.map +1 -1
  277. package/components/slider/themes/slider.base.css.js +1 -1
  278. package/components/slider/themes/slider.base.css.js.map +1 -1
  279. package/components/snackbar/snackbar.js +3 -7
  280. package/components/snackbar/snackbar.js.map +1 -1
  281. package/components/snackbar/themes/snackbar.base.css.js +1 -1
  282. package/components/snackbar/themes/snackbar.base.css.js.map +1 -1
  283. package/components/stepper/animations.d.ts +7 -1
  284. package/components/stepper/animations.js +63 -15
  285. package/components/stepper/animations.js.map +1 -1
  286. package/components/stepper/step.d.ts +3 -1
  287. package/components/stepper/step.js +17 -6
  288. package/components/stepper/step.js.map +1 -1
  289. package/components/stepper/themes/step/step.base.css.js +1 -1
  290. package/components/stepper/themes/step/step.base.css.js.map +1 -1
  291. package/components/stepper/themes/stepper/stepper.base.css.js +1 -1
  292. package/components/stepper/themes/stepper/stepper.base.css.js.map +1 -1
  293. package/components/stepper/themes/stepper/stepper.bootstrap.css.js +1 -1
  294. package/components/stepper/themes/stepper/stepper.bootstrap.css.js.map +1 -1
  295. package/components/stepper/themes/stepper/stepper.fluent.css.js +1 -1
  296. package/components/stepper/themes/stepper/stepper.fluent.css.js.map +1 -1
  297. package/components/stepper/themes/stepper/stepper.indigo.css.js +1 -1
  298. package/components/stepper/themes/stepper/stepper.indigo.css.js.map +1 -1
  299. package/components/tabs/tabs.js +2 -3
  300. package/components/tabs/tabs.js.map +1 -1
  301. package/components/tabs/themes/tab.base.css.js +1 -1
  302. package/components/tabs/themes/tab.base.css.js.map +1 -1
  303. package/components/tabs/themes/tabs.base.css.js +1 -1
  304. package/components/tabs/themes/tabs.base.css.js.map +1 -1
  305. package/components/textarea/textarea.d.ts +13 -16
  306. package/components/textarea/textarea.js +10 -12
  307. package/components/textarea/textarea.js.map +1 -1
  308. package/components/textarea/themes/textarea.base.css.js +1 -1
  309. package/components/textarea/themes/textarea.base.css.js.map +1 -1
  310. package/components/textarea/validators.d.ts +3 -0
  311. package/components/textarea/validators.js +7 -0
  312. package/components/textarea/validators.js.map +1 -0
  313. package/components/toast/themes/toast.base.css.js +1 -1
  314. package/components/toast/themes/toast.base.css.js.map +1 -1
  315. package/components/tree/themes/container.base.css.js +1 -1
  316. package/components/tree/themes/container.base.css.js.map +1 -1
  317. package/components/tree/themes/item.base.css.js +1 -1
  318. package/components/tree/themes/item.base.css.js.map +1 -1
  319. package/components/tree/tree-item.d.ts +4 -4
  320. package/components/tree/tree-item.js +11 -23
  321. package/components/tree/tree-item.js.map +1 -1
  322. package/components/tree/tree.d.ts +3 -4
  323. package/components/tree/tree.js +1 -37
  324. package/components/tree/tree.js.map +1 -1
  325. package/components/types.d.ts +3 -0
  326. package/components/types.js +2 -0
  327. package/components/types.js.map +1 -0
  328. package/custom-elements.json +30656 -31315
  329. package/igniteui-webcomponents.css-data.json +5 -928
  330. package/igniteui-webcomponents.html-data.json +4 -2699
  331. package/index.d.ts +5 -4
  332. package/index.js +2 -3
  333. package/index.js.map +1 -1
  334. package/package.json +1 -1
  335. package/theming/config.js +3 -3
  336. package/theming/config.js.map +1 -1
  337. package/theming/theming-controller.d.ts +4 -6
  338. package/theming/theming-controller.js +30 -34
  339. package/theming/theming-controller.js.map +1 -1
  340. package/theming/theming-decorator.d.ts +29 -11
  341. package/theming/theming-decorator.js +21 -7
  342. package/theming/theming-decorator.js.map +1 -1
  343. package/theming/theming-event.js.map +1 -1
  344. package/theming/types.d.ts +5 -0
  345. package/theming/types.js.map +1 -1
  346. package/theming/utils.d.ts +1 -1
  347. package/theming/utils.js +8 -8
  348. package/theming/utils.js.map +1 -1
  349. package/web-types.json +12 -7621
  350. package/components/calendar/common/calendar-base.d.ts +0 -40
  351. package/components/calendar/common/calendar-base.js +0 -118
  352. package/components/calendar/common/calendar-base.js.map +0 -1
  353. package/components/calendar/common/calendar.model.d.ts +0 -128
  354. package/components/calendar/common/calendar.model.js +0 -246
  355. package/components/calendar/common/calendar.model.js.map +0 -1
  356. package/components/calendar/common/utils.d.ts +0 -12
  357. package/components/calendar/common/utils.js +0 -54
  358. package/components/calendar/common/utils.js.map +0 -1
  359. package/components/common/decorators/alternateName.d.ts +0 -7
  360. package/components/common/decorators/alternateName.js +0 -4
  361. package/components/common/decorators/alternateName.js.map +0 -1
  362. package/components/common/decorators/blazorSuppress.d.ts +0 -5
  363. package/components/common/decorators/blazorSuppress.js +0 -4
  364. package/components/common/decorators/blazorSuppress.js.map +0 -1
  365. package/components/common/decorators/blazorTwoWayBind.d.ts +0 -7
  366. package/components/common/decorators/blazorTwoWayBind.js +0 -4
  367. package/components/common/decorators/blazorTwoWayBind.js.map +0 -1
  368. package/components/common/mixins/sizable.d.ts +0 -13
  369. package/components/common/mixins/sizable.js +0 -27
  370. package/components/common/mixins/sizable.js.map +0 -1
  371. package/components/form/form.d.ts +0 -48
  372. package/components/form/form.js +0 -158
  373. package/components/form/form.js.map +0 -1
@@ -0,0 +1,151 @@
1
+ export const iconReferences = [];
2
+ const makeIconRefs = (icons) => {
3
+ return new Map(Object.entries(icons).map((icon) => {
4
+ return icon;
5
+ }));
6
+ };
7
+ const addIcon = (name, target) => {
8
+ const icon = {
9
+ alias: {
10
+ name,
11
+ collection: 'default',
12
+ },
13
+ target: makeIconRefs(target),
14
+ };
15
+ iconReferences.push(icon);
16
+ };
17
+ addIcon('expand', {
18
+ default: {
19
+ name: 'keyboard_arrow_down',
20
+ collection: 'internal',
21
+ },
22
+ });
23
+ addIcon('collapse', {
24
+ default: {
25
+ name: 'keyboard_arrow_up',
26
+ collection: 'internal',
27
+ },
28
+ });
29
+ addIcon('arrow_prev', {
30
+ default: {
31
+ name: 'navigate_before',
32
+ collection: 'internal',
33
+ },
34
+ fluent: {
35
+ name: 'arrow_upward',
36
+ collection: 'internal',
37
+ },
38
+ });
39
+ addIcon('arrow_next', {
40
+ default: {
41
+ name: 'navigate_next',
42
+ collection: 'internal',
43
+ },
44
+ fluent: {
45
+ name: 'arrow_downward',
46
+ collection: 'internal',
47
+ },
48
+ });
49
+ addIcon('selected', {
50
+ default: {
51
+ name: 'chip_select',
52
+ collection: 'internal',
53
+ },
54
+ });
55
+ addIcon('remove', {
56
+ default: {
57
+ name: 'chip_cancel',
58
+ collection: 'internal',
59
+ },
60
+ });
61
+ addIcon('input_clear', {
62
+ default: {
63
+ name: 'clear',
64
+ collection: 'internal',
65
+ },
66
+ material: {
67
+ name: 'chip_cancel',
68
+ collection: 'internal',
69
+ },
70
+ });
71
+ addIcon('input_expand', {
72
+ default: {
73
+ name: 'arrow_drop_down',
74
+ collection: 'internal',
75
+ },
76
+ material: {
77
+ name: 'keyboard_arrow_down',
78
+ collection: 'internal',
79
+ },
80
+ });
81
+ addIcon('input_collapse', {
82
+ default: {
83
+ name: 'arrow_drop_up',
84
+ collection: 'internal',
85
+ },
86
+ material: {
87
+ name: 'keyboard_arrow_up',
88
+ collection: 'internal',
89
+ },
90
+ });
91
+ addIcon('chevron_right', {
92
+ default: {
93
+ name: 'keyboard_arrow_right',
94
+ collection: 'internal',
95
+ },
96
+ });
97
+ addIcon('chevron_left', {
98
+ default: {
99
+ name: 'navigate_before',
100
+ collection: 'internal',
101
+ },
102
+ });
103
+ addIcon('case_sensitive', {
104
+ default: {
105
+ name: 'case_sensitive',
106
+ collection: 'internal',
107
+ },
108
+ });
109
+ addIcon('today', {
110
+ default: {
111
+ name: 'calendar_today',
112
+ collection: 'internal',
113
+ },
114
+ });
115
+ addIcon('star_filled', {
116
+ default: {
117
+ name: 'star',
118
+ collection: 'internal',
119
+ },
120
+ });
121
+ addIcon('star_outlined', {
122
+ default: {
123
+ name: 'star_border',
124
+ collection: 'internal',
125
+ },
126
+ });
127
+ addIcon('prev', {
128
+ default: {
129
+ name: 'navigate_before',
130
+ collection: 'internal',
131
+ },
132
+ });
133
+ addIcon('next', {
134
+ default: {
135
+ name: 'navigate_next',
136
+ collection: 'internal',
137
+ },
138
+ });
139
+ addIcon('tree_expand', {
140
+ default: {
141
+ name: 'keyboard_arrow_right',
142
+ collection: 'internal',
143
+ },
144
+ });
145
+ addIcon('tree_collapse', {
146
+ default: {
147
+ name: 'keyboard_arrow_down',
148
+ collection: 'internal',
149
+ },
150
+ });
151
+ //# sourceMappingURL=icon-references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-references.js","sourceRoot":"","sources":["../../../src/components/icon/icon-references.ts"],"names":[],"mappings":"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","sourcesContent":["/** READ BEFORE YOU MODIFY THIS FILE!\n *\n * Before you add/modify an icon reference, please think about the semantics of the icon you are adding/modifying.\n *\n * Icon aliases have sematic meaning depending on the context in which they are used.\n * For instance, if your component handles toggling between expanded and collapsed states,\n * you may want to use the already existing `expand` and `collapse` aliases that point to\n * the `expand_more` and `expand_less` icons in the material font set.\n *\n * It may so happen, however, that the design of your component requires you to use the `chevron_right` for the\n * expand icon and the `expand_more` for the collapse icon. In this case the `tree_expand` and `tree_collapse` aliases\n * would be appropriate.\n * This distinction is important when choosing which icon to use for your component as it will have an impact\n * when a user decides to rewire the `expand`/`collapse` icons to some other icons.\n *\n * Likewise, modifying existing references should be handled with caution as many component in the framework already\n * share icons that have equivalent semantic meaning. For example, the `Paginator`, `Grid Filtering Row`,\n * and `Tabs` components in Ignite UI for Angular all use the `prev` and `next` icons for navigating between pages\n * or lists of items. Changing the underlying target for those icons should be done in a way that suits all components.\n *\n * Keep in mind that icon aliases and their underlying names are shared between Ignite UI component frameworks\n * and changing an alias name here should be reflected in the other frameworks as well.\n *\n * To get acquainted with which component uses what icon, please make sure to read the\n * [docs](https://infragistics.com/products/ignite-ui-angular/Angular/components/icon-service#internal-usage).\n */\nimport type {\n IconMeta,\n IconReference,\n IconThemeKey,\n} from './registry/types.js';\n\ntype Icon = { [key in IconThemeKey]?: IconMeta };\n\nexport const iconReferences: IconReference[] = [];\nconst makeIconRefs = (icons: Icon) => {\n return new Map(\n Object.entries(icons).map((icon) => {\n return icon as [theme: IconThemeKey, IconMeta];\n })\n );\n};\n\nconst addIcon = (name: string, target: Icon) => {\n const icon = {\n alias: {\n name,\n collection: 'default',\n },\n target: makeIconRefs(target),\n };\n\n iconReferences.push(icon as IconReference);\n};\n\naddIcon('expand', {\n default: {\n name: 'keyboard_arrow_down',\n collection: 'internal',\n },\n});\naddIcon('collapse', {\n default: {\n name: 'keyboard_arrow_up',\n collection: 'internal',\n },\n});\naddIcon('arrow_prev', {\n default: {\n name: 'navigate_before',\n collection: 'internal',\n },\n fluent: {\n name: 'arrow_upward',\n collection: 'internal',\n },\n});\naddIcon('arrow_next', {\n default: {\n name: 'navigate_next',\n collection: 'internal',\n },\n fluent: {\n name: 'arrow_downward',\n collection: 'internal',\n },\n});\naddIcon('selected', {\n default: {\n name: 'chip_select',\n collection: 'internal',\n },\n});\naddIcon('remove', {\n default: {\n name: 'chip_cancel',\n collection: 'internal',\n },\n});\naddIcon('input_clear', {\n default: {\n name: 'clear',\n collection: 'internal',\n },\n material: {\n name: 'chip_cancel',\n collection: 'internal',\n },\n});\naddIcon('input_expand', {\n default: {\n name: 'arrow_drop_down',\n collection: 'internal',\n },\n material: {\n name: 'keyboard_arrow_down',\n collection: 'internal',\n },\n});\naddIcon('input_collapse', {\n default: {\n name: 'arrow_drop_up',\n collection: 'internal',\n },\n material: {\n name: 'keyboard_arrow_up',\n collection: 'internal',\n },\n});\naddIcon('chevron_right', {\n default: {\n name: 'keyboard_arrow_right',\n collection: 'internal',\n },\n});\naddIcon('chevron_left', {\n default: {\n name: 'navigate_before',\n collection: 'internal',\n },\n});\naddIcon('case_sensitive', {\n default: {\n name: 'case_sensitive',\n collection: 'internal',\n },\n});\naddIcon('today', {\n default: {\n name: 'calendar_today',\n collection: 'internal',\n },\n});\naddIcon('star_filled', {\n default: {\n name: 'star',\n collection: 'internal',\n },\n});\naddIcon('star_outlined', {\n default: {\n name: 'star_border',\n collection: 'internal',\n },\n});\naddIcon('prev', {\n default: {\n name: 'navigate_before',\n collection: 'internal',\n },\n});\naddIcon('next', {\n default: {\n name: 'navigate_next',\n collection: 'internal',\n },\n});\naddIcon('tree_expand', {\n default: {\n name: 'keyboard_arrow_right',\n collection: 'internal',\n },\n});\naddIcon('tree_collapse', {\n default: {\n name: 'keyboard_arrow_down',\n collection: 'internal',\n },\n});\n"]}
@@ -0,0 +1,10 @@
1
+ import type { BroadcastIconsChangeMessage, IconMeta, IconsCollection, SvgIcon } from './registry/types.js';
2
+ export declare class IconsStateBroadcast {
3
+ private iconBroadcastChannel;
4
+ private collections;
5
+ private refsCollection;
6
+ constructor(collections: IconsCollection<SvgIcon>, refsCollection: IconsCollection<IconMeta>);
7
+ send(data: BroadcastIconsChangeMessage): void;
8
+ handleEvent({ data }: MessageEvent<BroadcastIconsChangeMessage>): void;
9
+ private getUserSetCollection;
10
+ }
@@ -0,0 +1,36 @@
1
+ import { createIconDefaultMap } from './registry/default-map.js';
2
+ import { ActionType } from './registry/types.js';
3
+ export class IconsStateBroadcast {
4
+ constructor(collections, refsCollection) {
5
+ this.collections = collections;
6
+ this.refsCollection = refsCollection;
7
+ this.iconBroadcastChannel = new BroadcastChannel('ignite-ui-icon-channel');
8
+ this.iconBroadcastChannel.addEventListener('message', this);
9
+ }
10
+ send(data) {
11
+ this.iconBroadcastChannel.postMessage(data);
12
+ }
13
+ handleEvent({ data }) {
14
+ if (data.actionType !== ActionType.SyncState) {
15
+ return;
16
+ }
17
+ this.send({
18
+ actionType: ActionType.SyncState,
19
+ collections: this.getUserSetCollection(this.collections).toMap(),
20
+ references: this.refsCollection.toMap(),
21
+ });
22
+ }
23
+ getUserSetCollection(collections) {
24
+ const userSetIcons = createIconDefaultMap();
25
+ for (const [collectionKey, collection] of collections.entries()) {
26
+ if (collectionKey === 'internal') {
27
+ continue;
28
+ }
29
+ for (const [iconKey, icon] of collection.entries()) {
30
+ userSetIcons.getOrCreate(collectionKey).set(iconKey, icon);
31
+ }
32
+ }
33
+ return userSetIcons;
34
+ }
35
+ }
36
+ //# sourceMappingURL=icon-state.broadcast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-state.broadcast.js","sourceRoot":"","sources":["../../../src/components/icon/icon-state.broadcast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAOjE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,OAAO,mBAAmB;IAK9B,YACE,WAAqC,EACrC,cAAyC;QAEzC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,oBAAoB,GAAG,IAAI,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;QAC3E,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;IAEM,IAAI,CAAC,IAAiC;QAC3C,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEM,WAAW,CAAC,EAAE,IAAI,EAA6C;QACpE,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC;YACR,UAAU,EAAE,UAAU,CAAC,SAAS;YAChC,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE;YAChE,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;SACxC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,WAAqC;QAChE,MAAM,YAAY,GAAG,oBAAoB,EAAmB,CAAC;QAE7D,KAAK,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;YAChE,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;gBACjC,SAAS;YACX,CAAC;YACD,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;gBACnD,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;CACF","sourcesContent":["import { createIconDefaultMap } from './registry/default-map.js';\nimport type {\n BroadcastIconsChangeMessage,\n IconMeta,\n IconsCollection,\n SvgIcon,\n} from './registry/types.js';\nimport { ActionType } from './registry/types.js';\n\nexport class IconsStateBroadcast {\n private iconBroadcastChannel: BroadcastChannel;\n private collections: IconsCollection<SvgIcon>;\n private refsCollection: IconsCollection<IconMeta>;\n\n constructor(\n collections: IconsCollection<SvgIcon>,\n refsCollection: IconsCollection<IconMeta>\n ) {\n this.collections = collections;\n this.refsCollection = refsCollection;\n this.iconBroadcastChannel = new BroadcastChannel('ignite-ui-icon-channel');\n this.iconBroadcastChannel.addEventListener('message', this);\n }\n\n public send(data: BroadcastIconsChangeMessage) {\n this.iconBroadcastChannel.postMessage(data);\n }\n\n public handleEvent({ data }: MessageEvent<BroadcastIconsChangeMessage>) {\n if (data.actionType !== ActionType.SyncState) {\n return;\n }\n\n this.send({\n actionType: ActionType.SyncState,\n collections: this.getUserSetCollection(this.collections).toMap(),\n references: this.refsCollection.toMap(),\n });\n }\n\n private getUserSetCollection(collections: IconsCollection<SvgIcon>) {\n const userSetIcons = createIconDefaultMap<string, SvgIcon>();\n\n for (const [collectionKey, collection] of collections.entries()) {\n if (collectionKey === 'internal') {\n continue;\n }\n for (const [iconKey, icon] of collection.entries()) {\n userSetIcons.getOrCreate(collectionKey).set(iconKey, icon);\n }\n }\n return userSetIcons;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { LitElement } from 'lit';
2
- declare const IgcIconComponent_base: import("../common/mixins/constructor.js").Constructor<import("../common/mixins/sizable.js").SizableInterface> & typeof LitElement;
2
+ import type { IconMeta } from './registry/types.js';
3
3
  /**
4
4
  * The icon component allows visualizing collections of pre-registered SVG icons.
5
5
  *
@@ -7,7 +7,7 @@ declare const IgcIconComponent_base: import("../common/mixins/constructor.js").C
7
7
  *
8
8
  *
9
9
  */
10
- export default class IgcIconComponent extends IgcIconComponent_base {
10
+ export default class IgcIconComponent extends LitElement {
11
11
  static readonly tagName = "igc-icon";
12
12
  static styles: import("lit").CSSResult[];
13
13
  static register(): void;
@@ -38,10 +38,10 @@ export default class IgcIconComponent extends IgcIconComponent_base {
38
38
  protected render(): import("lit-html").TemplateResult<1>;
39
39
  protected registerIcon(name: string, url: string, collection?: string): Promise<void>;
40
40
  protected registerIconFromText(name: string, iconText: string, collection?: string): void;
41
+ protected setIconRef(name: string, collection: string, icon: IconMeta): void;
41
42
  }
42
43
  declare global {
43
44
  interface HTMLElementTagNameMap {
44
45
  'igc-icon': IgcIconComponent;
45
46
  }
46
47
  }
47
- export {};
@@ -8,16 +8,15 @@ var IgcIconComponent_1;
8
8
  import { LitElement, html } from 'lit';
9
9
  import { property, state } from 'lit/decorators.js';
10
10
  import { unsafeSVG } from 'lit/directives/unsafe-svg.js';
11
- import { themes } from '../../theming/theming-decorator.js';
11
+ import { getThemeController, themes } from '../../theming/theming-decorator.js';
12
12
  import { blazorInclude } from '../common/decorators/blazorInclude.js';
13
13
  import { watch } from '../common/decorators/watch.js';
14
14
  import { registerComponent } from '../common/definitions/register.js';
15
- import { SizableMixin } from '../common/mixins/sizable.js';
16
- import { getIconRegistry, registerIconFromText as registerIconFromText_impl, registerIcon as registerIcon_impl, } from './icon.registry.js';
15
+ import { getIconRegistry, registerIconFromText as registerIconFromText_impl, registerIcon as registerIcon_impl, setIconRef as setIconRef_impl, } from './icon.registry.js';
17
16
  import { styles } from './themes/icon.base.css.js';
18
17
  import { styles as shared } from './themes/shared/icon.common.css.js';
19
18
  import { all } from './themes/themes.js';
20
- let IgcIconComponent = IgcIconComponent_1 = class IgcIconComponent extends SizableMixin(LitElement) {
19
+ let IgcIconComponent = IgcIconComponent_1 = class IgcIconComponent extends LitElement {
21
20
  static register() {
22
21
  registerComponent(IgcIconComponent_1);
23
22
  }
@@ -34,7 +33,7 @@ let IgcIconComponent = IgcIconComponent_1 = class IgcIconComponent extends Sizab
34
33
  };
35
34
  this.__internals = this.attachInternals();
36
35
  this.__internals.role = 'img';
37
- this.size = 'medium';
36
+ getThemeController(this).onThemeChanged = (theme) => getIconRegistry().setRefsByTheme(theme);
38
37
  }
39
38
  connectedCallback() {
40
39
  super.connectedCallback();
@@ -50,7 +49,8 @@ let IgcIconComponent = IgcIconComponent_1 = class IgcIconComponent extends Sizab
50
49
  }
51
50
  }
52
51
  getIcon() {
53
- const { svg, title } = getIconRegistry().get(this.name, this.collection) ?? {};
52
+ const { name, collection } = getIconRegistry().getIconRef(this.name, this.collection);
53
+ const { svg, title } = getIconRegistry().get(name, collection) ?? {};
54
54
  this.svg = svg ?? '';
55
55
  this.__internals.ariaLabel = title ?? null;
56
56
  }
@@ -63,6 +63,9 @@ let IgcIconComponent = IgcIconComponent_1 = class IgcIconComponent extends Sizab
63
63
  registerIconFromText(name, iconText, collection = 'default') {
64
64
  registerIconFromText_impl(name, iconText, collection);
65
65
  }
66
+ setIconRef(name, collection, icon) {
67
+ setIconRef_impl(name, collection, icon);
68
+ }
66
69
  };
67
70
  IgcIconComponent.tagName = 'igc-icon';
68
71
  IgcIconComponent.styles = [styles, shared];
@@ -88,8 +91,11 @@ __decorate([
88
91
  __decorate([
89
92
  blazorInclude()
90
93
  ], IgcIconComponent.prototype, "registerIconFromText", null);
94
+ __decorate([
95
+ blazorInclude()
96
+ ], IgcIconComponent.prototype, "setIconRef", null);
91
97
  IgcIconComponent = IgcIconComponent_1 = __decorate([
92
- themes(all)
98
+ themes(all, { exposeController: true })
93
99
  ], IgcIconComponent);
94
100
  export default IgcIconComponent;
95
101
  //# sourceMappingURL=icon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../src/components/icon/icon.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\n\nimport { themes } from '../../theming/theming-decorator.js';\nimport { blazorInclude } from '../common/decorators/blazorInclude.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { SizableMixin } from '../common/mixins/sizable.js';\nimport {\n getIconRegistry,\n registerIconFromText as registerIconFromText_impl,\n registerIcon as registerIcon_impl,\n} from './icon.registry.js';\nimport { styles } from './themes/icon.base.css.js';\nimport { styles as shared } from './themes/shared/icon.common.css.js';\nimport { all } from './themes/themes.js';\n\n/**\n * The icon component allows visualizing collections of pre-registered SVG icons.\n *\n * @element igc-icon\n *\n *\n */\n@themes(all)\nexport default class IgcIconComponent extends SizableMixin(LitElement) {\n public static readonly tagName = 'igc-icon';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcIconComponent);\n }\n\n private __internals: ElementInternals;\n\n @state()\n private svg = '';\n\n /* alternateName: iconName */\n /**\n * The name of the icon glyph to draw.\n * @attr\n */\n @property()\n public name = '';\n\n /**\n * The name of the registered collection for look up of icons.\n * Defaults to `default`.\n * @attr\n */\n @property()\n public collection = 'default';\n\n /**\n * Whether to flip the icon. Useful for RTL layouts.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public mirrored = false;\n\n constructor() {\n super();\n this.__internals = this.attachInternals();\n this.__internals.role = 'img';\n this.size = 'medium';\n }\n\n public override connectedCallback() {\n super.connectedCallback();\n getIconRegistry().subscribe(this.iconLoaded);\n }\n\n public override disconnectedCallback() {\n getIconRegistry().unsubscribe(this.iconLoaded);\n super.disconnectedCallback();\n }\n\n @watch('name')\n @watch('collection')\n protected iconChanged(prev: string, curr: string) {\n if (prev !== curr) {\n this.getIcon();\n }\n }\n\n private iconLoaded = (name: string, collection: string) => {\n if (this.name === name && this.collection === collection) {\n this.getIcon();\n }\n };\n\n private getIcon() {\n const { svg, title } =\n getIconRegistry().get(this.name, this.collection) ?? {};\n\n this.svg = svg ?? '';\n this.__internals.ariaLabel = title ?? null;\n }\n\n protected override render() {\n return html`${unsafeSVG(this.svg)}`;\n }\n\n /* c8 ignore next 8 */\n @blazorInclude()\n protected async registerIcon(\n name: string,\n url: string,\n collection = 'default'\n ) {\n await registerIcon_impl(name, url, collection);\n }\n\n /* c8 ignore next 8 */\n @blazorInclude()\n protected registerIconFromText(\n name: string,\n iconText: string,\n collection = 'default'\n ) {\n registerIconFromText_impl(name, iconText, collection);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-icon': IgcIconComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../src/components/icon/icon.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\n\nimport { getThemeController, themes } from '../../theming/theming-decorator.js';\nimport { blazorInclude } from '../common/decorators/blazorInclude.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport {\n getIconRegistry,\n registerIconFromText as registerIconFromText_impl,\n registerIcon as registerIcon_impl,\n setIconRef as setIconRef_impl,\n} from './icon.registry.js';\nimport type { IconMeta } from './registry/types.js';\nimport { styles } from './themes/icon.base.css.js';\nimport { styles as shared } from './themes/shared/icon.common.css.js';\nimport { all } from './themes/themes.js';\n\n/**\n * The icon component allows visualizing collections of pre-registered SVG icons.\n *\n * @element igc-icon\n *\n *\n */\n@themes(all, { exposeController: true })\nexport default class IgcIconComponent extends LitElement {\n public static readonly tagName = 'igc-icon';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcIconComponent);\n }\n\n private __internals: ElementInternals;\n\n @state()\n private svg = '';\n\n /* alternateName: iconName */\n /**\n * The name of the icon glyph to draw.\n * @attr\n */\n @property()\n public name = '';\n\n /**\n * The name of the registered collection for look up of icons.\n * Defaults to `default`.\n * @attr\n */\n @property()\n public collection = 'default';\n\n /**\n * Whether to flip the icon. Useful for RTL layouts.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public mirrored = false;\n\n constructor() {\n super();\n this.__internals = this.attachInternals();\n this.__internals.role = 'img';\n\n getThemeController(this)!.onThemeChanged = (theme) =>\n getIconRegistry().setRefsByTheme(theme);\n }\n\n public override connectedCallback() {\n super.connectedCallback();\n getIconRegistry().subscribe(this.iconLoaded);\n }\n\n public override disconnectedCallback() {\n getIconRegistry().unsubscribe(this.iconLoaded);\n super.disconnectedCallback();\n }\n\n @watch('name')\n @watch('collection')\n protected iconChanged(prev: string, curr: string) {\n if (prev !== curr) {\n this.getIcon();\n }\n }\n\n private iconLoaded = (name: string, collection: string) => {\n if (this.name === name && this.collection === collection) {\n this.getIcon();\n }\n };\n\n private getIcon() {\n const { name, collection } = getIconRegistry().getIconRef(\n this.name,\n this.collection\n );\n const { svg, title } = getIconRegistry().get(name, collection) ?? {};\n\n this.svg = svg ?? '';\n this.__internals.ariaLabel = title ?? null;\n }\n\n protected override render() {\n return html`${unsafeSVG(this.svg)}`;\n }\n\n /* c8 ignore next 8 */\n @blazorInclude()\n protected async registerIcon(\n name: string,\n url: string,\n collection = 'default'\n ) {\n await registerIcon_impl(name, url, collection);\n }\n\n /* c8 ignore next 8 */\n @blazorInclude()\n protected registerIconFromText(\n name: string,\n iconText: string,\n collection = 'default'\n ) {\n registerIconFromText_impl(name, iconText, collection);\n }\n\n /* c8 ignore next 4 */\n @blazorInclude()\n protected setIconRef(name: string, collection: string, icon: IconMeta) {\n setIconRef_impl(name, collection, icon);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-icon': IgcIconComponent;\n }\n}\n"]}
@@ -1,24 +1,24 @@
1
- export type IconCollection = {
2
- [name: string]: ParsedIcon;
3
- };
4
- type IconCallback = (name: string, collection: string) => void;
5
- interface ParsedIcon {
6
- svg: string;
7
- title?: string;
8
- }
9
- export declare class IconsRegistry {
10
- private _parser;
1
+ import type { Theme } from '../../theming/types.js';
2
+ import type { IconCallback, IconMeta, IconReferencePair, SvgIcon } from './registry/types.js';
3
+ declare class IconsRegistry {
4
+ private parser;
11
5
  private collections;
6
+ private references;
12
7
  private listeners;
8
+ private theme;
9
+ private broadcast;
13
10
  constructor();
11
+ register(name: string, iconText: string, collection?: string): void;
14
12
  subscribe(callback: IconCallback): void;
15
13
  unsubscribe(callback: IconCallback): void;
16
- private parseSVG;
17
- register(name: string, iconText: string, collection?: string): void;
18
- get(name: string, collection?: string): ParsedIcon | undefined;
19
- private getOrCreateCollection;
14
+ setRefsByTheme(theme: Theme): void;
15
+ setIconRef(options: IconReferencePair): void;
16
+ getIconRef(name: string, collection: string): IconMeta;
17
+ get(name: string, collection?: string): SvgIcon | undefined;
18
+ private notifyAll;
20
19
  }
21
20
  export declare function getIconRegistry(): IconsRegistry;
22
21
  export declare function registerIcon(name: string, url: string, collection?: string): Promise<void>;
23
22
  export declare function registerIconFromText(name: string, iconText: string, collection?: string): void;
23
+ export declare function setIconRef(name: string, collection: string, icon: IconMeta): void;
24
24
  export {};
@@ -1,47 +1,84 @@
1
+ import { sameObject } from '../common/util.js';
2
+ import { iconReferences } from './icon-references.js';
3
+ import { IconsStateBroadcast } from './icon-state.broadcast.js';
1
4
  import { internalIcons } from './internal-icons-lib.js';
2
- export class IconsRegistry {
5
+ import { createIconDefaultMap } from './registry/default-map.js';
6
+ import { SvgIconParser } from './registry/parser.js';
7
+ import { ActionType } from './registry/types.js';
8
+ class IconsRegistry {
3
9
  constructor() {
4
- this.collections = new Map();
10
+ this.collections = createIconDefaultMap();
11
+ this.references = createIconDefaultMap();
5
12
  this.listeners = new Set();
6
- this._parser = new DOMParser();
13
+ this.parser = new SvgIconParser();
14
+ this.broadcast = new IconsStateBroadcast(this.collections, this.references);
7
15
  this.collections.set('internal', internalIcons);
8
16
  }
17
+ register(name, iconText, collection = 'default') {
18
+ const svgIcon = this.parser.parse(iconText);
19
+ this.collections.getOrCreate(collection).set(name, svgIcon);
20
+ const icons = createIconDefaultMap();
21
+ icons.getOrCreate(collection).set(name, svgIcon);
22
+ this.broadcast.send({
23
+ actionType: ActionType.RegisterIcon,
24
+ collections: icons.toMap(),
25
+ });
26
+ this.notifyAll(name, collection);
27
+ }
9
28
  subscribe(callback) {
10
29
  this.listeners.add(callback);
11
30
  }
12
31
  unsubscribe(callback) {
13
32
  this.listeners.delete(callback);
14
33
  }
15
- parseSVG(svgString) {
16
- const parsed = this._parser.parseFromString(svgString, 'image/svg+xml');
17
- const svg = parsed.querySelector('svg');
18
- if (parsed.querySelector('parsererror') || !svg) {
19
- throw new Error('SVG element not found or malformed SVG string.');
34
+ setRefsByTheme(theme) {
35
+ if (this.theme !== theme) {
36
+ this.theme = theme;
37
+ for (const { alias, target } of iconReferences) {
38
+ const external = this.references
39
+ .get(alias.collection)
40
+ ?.get(alias.name)?.external;
41
+ const _ref = this.references.get('default')?.get(alias.name) ?? {};
42
+ const _target = target.get(this.theme) ?? target.get('default');
43
+ this.setIconRef({
44
+ alias,
45
+ target: _target,
46
+ overwrite: !external && !sameObject(_ref, _target),
47
+ });
48
+ }
20
49
  }
21
- svg.setAttribute('fit', '');
22
- svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');
23
- return {
24
- svg: svg.outerHTML,
25
- title: svg.querySelector('title')?.textContent ?? '',
26
- };
27
50
  }
28
- register(name, iconText, collection = 'default') {
29
- const namespace = this.getOrCreateCollection(collection);
30
- namespace[name] = this.parseSVG(iconText);
31
- for (const listener of this.listeners) {
32
- listener(name, collection);
51
+ setIconRef(options) {
52
+ const { alias, target, overwrite } = options;
53
+ const reference = this.references.getOrCreate(alias.collection);
54
+ if (overwrite) {
55
+ reference.set(alias.name, { ...target });
56
+ this.notifyAll(alias.name, alias.collection);
33
57
  }
58
+ const refs = createIconDefaultMap();
59
+ refs.getOrCreate(alias.collection).set(alias.name, {
60
+ name: target.name,
61
+ collection: target.collection,
62
+ });
63
+ this.broadcast.send({
64
+ actionType: ActionType.UpdateIconReference,
65
+ references: refs.toMap(),
66
+ });
67
+ }
68
+ getIconRef(name, collection) {
69
+ const icon = this.references.get(collection)?.get(name);
70
+ return {
71
+ name: icon?.name ?? name,
72
+ collection: icon?.collection ?? collection,
73
+ };
34
74
  }
35
75
  get(name, collection = 'default') {
36
- return this.collections.has(collection)
37
- ? this.collections.get(collection)[name]
38
- : undefined;
76
+ return this.collections.get(collection)?.get(name);
39
77
  }
40
- getOrCreateCollection(name) {
41
- if (!this.collections.has(name)) {
42
- this.collections.set(name, {});
78
+ notifyAll(name, collection) {
79
+ for (const listener of this.listeners) {
80
+ listener(name, collection);
43
81
  }
44
- return this.collections.get(name);
45
82
  }
46
83
  }
47
84
  const registry = Symbol.for('igc.icons-registry.instance');
@@ -65,4 +102,11 @@ export async function registerIcon(name, url, collection = 'default') {
65
102
  export function registerIconFromText(name, iconText, collection = 'default') {
66
103
  getIconRegistry().register(name, iconText, collection);
67
104
  }
105
+ export function setIconRef(name, collection, icon) {
106
+ getIconRegistry().setIconRef({
107
+ alias: { name, collection },
108
+ target: { ...icon, external: true },
109
+ overwrite: true,
110
+ });
111
+ }
68
112
  //# sourceMappingURL=icon.registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icon.registry.js","sourceRoot":"","sources":["../../../src/components/icon/icon.registry.ts"],"names":[],"mappings":"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","sourcesContent":["import { internalIcons } from './internal-icons-lib.js';\n\nexport type IconCollection = { [name: string]: ParsedIcon };\n\ntype IconCallback = (name: string, collection: string) => void;\n\ninterface ParsedIcon {\n svg: string;\n title?: string;\n}\n\nexport class IconsRegistry {\n private _parser: DOMParser;\n\n private collections = new Map<string, IconCollection>();\n private listeners = new Set<IconCallback>();\n\n constructor() {\n this._parser = new DOMParser();\n this.collections.set('internal', internalIcons);\n }\n\n public subscribe(callback: IconCallback) {\n this.listeners.add(callback);\n }\n\n public unsubscribe(callback: IconCallback) {\n this.listeners.delete(callback);\n }\n\n private parseSVG(svgString: string): ParsedIcon {\n const parsed = this._parser.parseFromString(svgString, 'image/svg+xml');\n const svg = parsed.querySelector('svg');\n\n if (parsed.querySelector('parsererror') || !svg) {\n throw new Error('SVG element not found or malformed SVG string.');\n }\n\n svg.setAttribute('fit', '');\n svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n\n return {\n svg: svg.outerHTML,\n title: svg.querySelector('title')?.textContent ?? '',\n };\n }\n\n public register(name: string, iconText: string, collection = 'default') {\n const namespace = this.getOrCreateCollection(collection);\n namespace[name] = this.parseSVG(iconText);\n\n for (const listener of this.listeners) {\n listener(name, collection);\n }\n }\n\n public get(name: string, collection = 'default') {\n return this.collections.has(collection)\n ? this.collections.get(collection)![name]\n : undefined;\n }\n\n private getOrCreateCollection(name: string) {\n if (!this.collections.has(name)) {\n this.collections.set(name, {});\n }\n\n return this.collections.get(name) as IconCollection;\n }\n}\n\nconst registry = Symbol.for('igc.icons-registry.instance');\n\ntype IgcIconRegistry = typeof globalThis & {\n [registry]?: IconsRegistry;\n};\n\nexport function getIconRegistry() {\n const _global = globalThis as IgcIconRegistry;\n if (!_global[registry]) {\n _global[registry] = new IconsRegistry();\n }\n return _global[registry];\n}\n\nexport async function registerIcon(\n name: string,\n url: string,\n collection = 'default'\n) {\n const response = await fetch(url);\n\n if (response.ok) {\n const value = await response.text();\n getIconRegistry().register(name, value, collection);\n } else {\n throw new Error(`Icon request failed. Status: ${response.status}.`);\n }\n}\n\nexport function registerIconFromText(\n name: string,\n iconText: string,\n collection = 'default'\n) {\n getIconRegistry().register(name, iconText, collection);\n}\n"]}
1
+ {"version":3,"file":"icon.registry.js","sourceRoot":"","sources":["../../../src/components/icon/icon.registry.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Theme } from '../../theming/types.js';\nimport { sameObject } from '../common/util.js';\nimport { iconReferences } from './icon-references.js';\nimport { IconsStateBroadcast } from './icon-state.broadcast.js';\nimport { internalIcons } from './internal-icons-lib.js';\nimport { createIconDefaultMap } from './registry/default-map.js';\nimport { SvgIconParser } from './registry/parser.js';\nimport type {\n IconCallback,\n IconMeta,\n IconReferencePair,\n SvgIcon,\n} from './registry/types.js';\nimport { ActionType } from './registry/types.js';\n\nclass IconsRegistry {\n private parser: SvgIconParser;\n private collections = createIconDefaultMap<string, SvgIcon>();\n private references = createIconDefaultMap<string, IconMeta>();\n private listeners = new Set<IconCallback>();\n private theme!: Theme;\n private broadcast: IconsStateBroadcast;\n\n constructor() {\n this.parser = new SvgIconParser();\n this.broadcast = new IconsStateBroadcast(this.collections, this.references);\n\n this.collections.set('internal', internalIcons);\n }\n\n public register(name: string, iconText: string, collection = 'default') {\n const svgIcon = this.parser.parse(iconText);\n this.collections.getOrCreate(collection).set(name, svgIcon);\n\n const icons = createIconDefaultMap<string, SvgIcon>();\n icons.getOrCreate(collection).set(name, svgIcon);\n\n this.broadcast.send({\n actionType: ActionType.RegisterIcon,\n collections: icons.toMap(),\n });\n\n this.notifyAll(name, collection);\n }\n\n public subscribe(callback: IconCallback) {\n this.listeners.add(callback);\n }\n\n public unsubscribe(callback: IconCallback) {\n this.listeners.delete(callback);\n }\n\n public setRefsByTheme(theme: Theme) {\n if (this.theme !== theme) {\n this.theme = theme;\n\n for (const { alias, target } of iconReferences) {\n const external = this.references\n .get(alias.collection)\n ?.get(alias.name)?.external;\n\n const _ref = this.references.get('default')?.get(alias.name) ?? {};\n const _target = target.get(this.theme) ?? target.get('default')!;\n\n this.setIconRef({\n alias,\n target: _target,\n overwrite: !external && !sameObject(_ref, _target),\n });\n }\n }\n }\n\n public setIconRef(options: IconReferencePair) {\n const { alias, target, overwrite } = options;\n const reference = this.references.getOrCreate(alias.collection);\n\n if (overwrite) {\n reference.set(alias.name, { ...target });\n this.notifyAll(alias.name, alias.collection);\n }\n\n const refs = createIconDefaultMap<string, IconMeta>();\n refs.getOrCreate(alias.collection).set(alias.name, {\n name: target.name,\n collection: target.collection,\n });\n\n this.broadcast.send({\n actionType: ActionType.UpdateIconReference,\n references: refs.toMap(),\n });\n }\n\n public getIconRef(name: string, collection: string): IconMeta {\n const icon = this.references.get(collection)?.get(name);\n\n return {\n name: icon?.name ?? name,\n collection: icon?.collection ?? collection,\n };\n }\n\n public get(name: string, collection = 'default') {\n return this.collections.get(collection)?.get(name);\n }\n\n private notifyAll(name: string, collection: string) {\n for (const listener of this.listeners) {\n listener(name, collection);\n }\n }\n}\n\nconst registry = Symbol.for('igc.icons-registry.instance');\n\ntype IgcIconRegistry = typeof globalThis & {\n [registry]?: IconsRegistry;\n};\n\nexport function getIconRegistry() {\n const _global = globalThis as IgcIconRegistry;\n if (!_global[registry]) {\n _global[registry] = new IconsRegistry();\n }\n return _global[registry];\n}\n\nexport async function registerIcon(\n name: string,\n url: string,\n collection = 'default'\n) {\n const response = await fetch(url);\n\n if (response.ok) {\n const value = await response.text();\n getIconRegistry().register(name, value, collection);\n } else {\n throw new Error(`Icon request failed. Status: ${response.status}.`);\n }\n}\n\nexport function registerIconFromText(\n name: string,\n iconText: string,\n collection = 'default'\n) {\n getIconRegistry().register(name, iconText, collection);\n}\n\nexport function setIconRef(name: string, collection: string, icon: IconMeta) {\n getIconRegistry().setIconRef({\n alias: { name, collection },\n target: { ...icon, external: true },\n overwrite: true,\n });\n}\n"]}
@@ -1,2 +1,2 @@
1
- import type { IconCollection } from './icon.registry.js';
2
- export declare const internalIcons: IconCollection;
1
+ import type { SvgIcon } from './registry/types.js';
2
+ export declare const internalIcons: Map<string, SvgIcon>;
@@ -1,4 +1,4 @@
1
- export const internalIcons = {
1
+ export const internalIcons = new Map(Object.entries({
2
2
  navigate_before: {
3
3
  svg: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M15.61 7.41L14.2 6l-6 6 6 6 1.41-1.41L11.03 12l4.58-4.59z"/></svg>`,
4
4
  },
@@ -50,5 +50,5 @@ export const internalIcons = {
50
50
  calendar_today: {
51
51
  svg: `<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0z" fill="none"/><path d="M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V8h16v13z"/></svg>`,
52
52
  },
53
- };
53
+ }));
54
54
  //# sourceMappingURL=internal-icons-lib.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal-icons-lib.js","sourceRoot":"","sources":["../../../src/components/icon/internal-icons-lib.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAmB;IAC3C,eAAe,EAAE;QACf,GAAG,EAAE,gLAAgL;KACtL;IACD,aAAa,EAAE;QACb,GAAG,EAAE,+KAA+K;KACrL;IACD,iBAAiB,EAAE;QACjB,GAAG,EAAE,mKAAmK;KACzK;IACD,mBAAmB,EAAE;QACnB,GAAG,EAAE,8KAA8K;KACpL;IACD,oBAAoB,EAAE;QACpB,GAAG,EAAE,6KAA6K;KACnL;IACD,WAAW,EAAE;QACX,GAAG,EAAE,2TAA2T;KACjU;IACD,WAAW,EAAE;QACX,GAAG,EAAE,6LAA6L;KACnM;IACD,IAAI,EAAE;QACJ,GAAG,EAAE,6QAA6Q;KACnR;IACD,WAAW,EAAE;QACX,GAAG,EAAE,gVAAgV;KACtV;IACD,cAAc,EAAE;QACd,GAAG,EAAE,66BAA66B;KACn7B;IACD,KAAK,EAAE;QACL,GAAG,EAAE,0NAA0N;KAChO;IACD,aAAa,EAAE;QACb,GAAG,EAAE,mIAAmI;KACzI;IACD,eAAe,EAAE;QACf,GAAG,EAAE,mIAAmI;KACzI;IACD,cAAc,EAAE;QACd,GAAG,EAAE,gNAAgN;KACtN;IACD,YAAY,EAAE;QACZ,GAAG,EAAE,6MAA6M;KACnN;IACD,QAAQ,EAAE;QACR,GAAG,EAAE,oTAAoT;KAC1T;IACD,cAAc,EAAE;QACd,GAAG,EAAE,0PAA0P;KAChQ;CACF,CAAC","sourcesContent":["import type { IconCollection } from './icon.registry.js';\n\nexport const internalIcons: IconCollection = {\n navigate_before: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M15.61 7.41L14.2 6l-6 6 6 6 1.41-1.41L11.03 12l4.58-4.59z\"/></svg>`,\n },\n navigate_next: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M10.02 6L8.61 7.41 13.19 12l-4.58 4.59L10.02 18l6-6-6-6z\"/></svg>`,\n },\n keyboard_arrow_up: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z\"/></svg>`,\n },\n keyboard_arrow_down: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\"/></svg>`,\n },\n keyboard_arrow_right: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"/></svg>`,\n },\n chip_cancel: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"/></svg>`,\n },\n chip_select: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/></svg>`,\n },\n star: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z\"/></svg>`,\n },\n star_border: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\"/></svg>`,\n },\n case_sensitive: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" preserveAspectRatio=\"xMidYMid meet\"><path d=\"M21.2 16.5c0-.2-.1-.5-.1-.7v-4.4c0-.4-.1-.8-.3-1.2-.2-.3-.5-.6-.8-.7-.3-.2-.7-.3-1.1-.3-.4-.1-.8-.1-1.2-.1-.5 0-.9 0-1.4.1-.4.1-.8.3-1.2.5-.3.2-.6.5-.8.9s-.3.9-.3 1.3h1.4c0-.5.2-1 .7-1.3.5-.2 1-.4 1.5-.3.2 0 .5 0 .7.1.2 0 .4.1.6.2.2.1.3.2.5.4.1.2.2.5.2.7s-.1.4-.2.6c-.2.2-.4.3-.6.3-.3.1-.6.1-.9.2-.4 0-.7.1-1.1.2-.4.1-.7.1-1.1.2-.3.1-.7.2-1 .4s-.5.5-.7.8c-.2.4-.3.8-.3 1.2s.1.8.2 1.1c.1.3.4.5.6.7.3.2.6.3.9.4.9.2 1.9.2 2.8-.2.5-.2 1-.6 1.4-1 0 .4.1.7.3 1 .2.2.6.3.9.3.4 0 .7-.1 1-.2v-1.1c-.1 0-.3.1-.4.1-.1.1-.2 0-.2-.2zm-1.5-1.7c0 .2-.1.4-.2.6-.1.2-.3.5-.5.6-.2.2-.5.4-.8.5-.4.1-.8.2-1.2.2-.2 0-.4 0-.6-.1-.2 0-.4-.1-.5-.2-.2-.1-.3-.2-.4-.4-.1-.2-.2-.4-.1-.6 0-.3.1-.6.2-.8.2-.2.4-.4.6-.5.3-.1.6-.2.9-.2s.7-.1 1-.1.6-.1.9-.1.5-.1.7-.3v1.4zm-9.6-.4l1.3 3.6h1.8L8.5 6H6.7L2 18h1.7L5 14.4h5.1zm-2.5-7l2.1 5.5H5.5l2.1-5.5z\"></path></svg>`,\n },\n clear: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/></svg>`,\n },\n arrow_drop_up: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M7 14l5-5 5 5z\"/></svg>`,\n },\n arrow_drop_down: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M7 10l5 5 5-5z\"/></svg>`,\n },\n arrow_downward: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"/></svg>`,\n },\n arrow_upward: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\"/></svg>`,\n },\n calendar: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\"><path d=\"M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Zm0-480h560v-80H200v80Zm0 0v-80 80Z\"/></svg>`,\n },\n calendar_today: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V8h16v13z\"/></svg>`,\n },\n};\n"]}
1
+ {"version":3,"file":"internal-icons-lib.js","sourceRoot":"","sources":["../../../src/components/icon/internal-icons-lib.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,CAClC,MAAM,CAAC,OAAO,CAAC;IACb,eAAe,EAAE;QACf,GAAG,EAAE,gLAAgL;KACtL;IACD,aAAa,EAAE;QACb,GAAG,EAAE,+KAA+K;KACrL;IACD,iBAAiB,EAAE;QACjB,GAAG,EAAE,mKAAmK;KACzK;IACD,mBAAmB,EAAE;QACnB,GAAG,EAAE,8KAA8K;KACpL;IACD,oBAAoB,EAAE;QACpB,GAAG,EAAE,6KAA6K;KACnL;IACD,WAAW,EAAE;QACX,GAAG,EAAE,2TAA2T;KACjU;IACD,WAAW,EAAE;QACX,GAAG,EAAE,6LAA6L;KACnM;IACD,IAAI,EAAE;QACJ,GAAG,EAAE,6QAA6Q;KACnR;IACD,WAAW,EAAE;QACX,GAAG,EAAE,gVAAgV;KACtV;IACD,cAAc,EAAE;QACd,GAAG,EAAE,66BAA66B;KACn7B;IACD,KAAK,EAAE;QACL,GAAG,EAAE,0NAA0N;KAChO;IACD,aAAa,EAAE;QACb,GAAG,EAAE,mIAAmI;KACzI;IACD,eAAe,EAAE;QACf,GAAG,EAAE,mIAAmI;KACzI;IACD,cAAc,EAAE;QACd,GAAG,EAAE,gNAAgN;KACtN;IACD,YAAY,EAAE;QACZ,GAAG,EAAE,6MAA6M;KACnN;IACD,QAAQ,EAAE;QACR,GAAG,EAAE,oTAAoT;KAC1T;IACD,cAAc,EAAE;QACd,GAAG,EAAE,0PAA0P;KAChQ;CACF,CAAC,CACH,CAAC","sourcesContent":["import type { SvgIcon } from './registry/types.js';\n\nexport const internalIcons = new Map<string, SvgIcon>(\n Object.entries({\n navigate_before: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M15.61 7.41L14.2 6l-6 6 6 6 1.41-1.41L11.03 12l4.58-4.59z\"/></svg>`,\n },\n navigate_next: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M10.02 6L8.61 7.41 13.19 12l-4.58 4.59L10.02 18l6-6-6-6z\"/></svg>`,\n },\n keyboard_arrow_up: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z\"/></svg>`,\n },\n keyboard_arrow_down: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\"/></svg>`,\n },\n keyboard_arrow_right: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"/></svg>`,\n },\n chip_cancel: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"/></svg>`,\n },\n chip_select: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/></svg>`,\n },\n star: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z\"/></svg>`,\n },\n star_border: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\"/></svg>`,\n },\n case_sensitive: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" preserveAspectRatio=\"xMidYMid meet\"><path d=\"M21.2 16.5c0-.2-.1-.5-.1-.7v-4.4c0-.4-.1-.8-.3-1.2-.2-.3-.5-.6-.8-.7-.3-.2-.7-.3-1.1-.3-.4-.1-.8-.1-1.2-.1-.5 0-.9 0-1.4.1-.4.1-.8.3-1.2.5-.3.2-.6.5-.8.9s-.3.9-.3 1.3h1.4c0-.5.2-1 .7-1.3.5-.2 1-.4 1.5-.3.2 0 .5 0 .7.1.2 0 .4.1.6.2.2.1.3.2.5.4.1.2.2.5.2.7s-.1.4-.2.6c-.2.2-.4.3-.6.3-.3.1-.6.1-.9.2-.4 0-.7.1-1.1.2-.4.1-.7.1-1.1.2-.3.1-.7.2-1 .4s-.5.5-.7.8c-.2.4-.3.8-.3 1.2s.1.8.2 1.1c.1.3.4.5.6.7.3.2.6.3.9.4.9.2 1.9.2 2.8-.2.5-.2 1-.6 1.4-1 0 .4.1.7.3 1 .2.2.6.3.9.3.4 0 .7-.1 1-.2v-1.1c-.1 0-.3.1-.4.1-.1.1-.2 0-.2-.2zm-1.5-1.7c0 .2-.1.4-.2.6-.1.2-.3.5-.5.6-.2.2-.5.4-.8.5-.4.1-.8.2-1.2.2-.2 0-.4 0-.6-.1-.2 0-.4-.1-.5-.2-.2-.1-.3-.2-.4-.4-.1-.2-.2-.4-.1-.6 0-.3.1-.6.2-.8.2-.2.4-.4.6-.5.3-.1.6-.2.9-.2s.7-.1 1-.1.6-.1.9-.1.5-.1.7-.3v1.4zm-9.6-.4l1.3 3.6h1.8L8.5 6H6.7L2 18h1.7L5 14.4h5.1zm-2.5-7l2.1 5.5H5.5l2.1-5.5z\"></path></svg>`,\n },\n clear: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/></svg>`,\n },\n arrow_drop_up: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M7 14l5-5 5 5z\"/></svg>`,\n },\n arrow_drop_down: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M7 10l5 5 5-5z\"/></svg>`,\n },\n arrow_downward: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"/></svg>`,\n },\n arrow_upward: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\"/></svg>`,\n },\n calendar: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\"><path d=\"M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Zm0-480h560v-80H200v80Zm0 0v-80 80Z\"/></svg>`,\n },\n calendar_today: {\n svg: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V8h16v13z\"/></svg>`,\n },\n })\n);\n"]}