@siemens/ix-icons 3.1.0 → 3.2.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 (283) hide show
  1. package/READMEOSS.html +10 -10
  2. package/components/index.js +1470 -1
  3. package/components/index.js.map +1 -1
  4. package/components/ix-icon.js +2 -1
  5. package/dist/cjs/app-globals-V2Kpy_OQ.js +8 -0
  6. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +1 -0
  7. package/dist/cjs/{index-494dae28.js → index-DUsbo4-K.js} +191 -115
  8. package/dist/cjs/index-DUsbo4-K.js.map +1 -0
  9. package/dist/cjs/index.cjs.js +250 -8
  10. package/dist/cjs/index.cjs.js.map +1 -1
  11. package/dist/cjs/ix-icon.cjs.entry.js +4 -7
  12. package/dist/cjs/ix-icon.entry.cjs.js.map +1 -0
  13. package/dist/cjs/ix-icons.cjs.js +8 -9
  14. package/dist/cjs/ix-icons.cjs.js.map +1 -1
  15. package/dist/cjs/loader.cjs.js +4 -7
  16. package/dist/cjs/loader.cjs.js.map +1 -1
  17. package/dist/collection/collection-manifest.json +1 -1
  18. package/dist/collection/components/icon/icon.js +6 -6
  19. package/dist/collection/components/icon/icon.js.map +1 -1
  20. package/dist/collection/components/icon/parser.js +8 -1
  21. package/dist/collection/components/icon/parser.js.map +1 -1
  22. package/dist/esm/app-globals-DQuL1Twl.js +6 -0
  23. package/dist/esm/app-globals-DQuL1Twl.js.map +1 -0
  24. package/dist/esm/{index-22f745e9.js → index-BiqddxKp.js} +188 -110
  25. package/dist/esm/index-BiqddxKp.js.map +1 -0
  26. package/dist/esm/index.js +252 -3
  27. package/dist/esm/index.js.map +1 -1
  28. package/dist/esm/ix-icon.entry.js +3 -4
  29. package/dist/esm/ix-icon.entry.js.map +1 -1
  30. package/dist/esm/ix-icons.js +7 -7
  31. package/dist/esm/ix-icons.js.map +1 -1
  32. package/dist/esm/loader.js +5 -6
  33. package/dist/esm/loader.js.map +1 -1
  34. package/dist/ix-icons/index.esm.js +1 -1
  35. package/dist/ix-icons/index.esm.js.map +1 -1
  36. package/dist/ix-icons/ix-icon.entry.esm.js.map +1 -0
  37. package/dist/ix-icons/ix-icons.esm.js +1 -1
  38. package/dist/ix-icons/ix-icons.esm.js.map +1 -1
  39. package/dist/ix-icons/loader.esm.js.map +1 -0
  40. package/dist/ix-icons/p-6b0af2cb.entry.js +2 -0
  41. package/dist/ix-icons/p-6b0af2cb.entry.js.map +1 -0
  42. package/dist/ix-icons/p-BiqddxKp.js +3 -0
  43. package/dist/ix-icons/p-BiqddxKp.js.map +1 -0
  44. package/dist/ix-icons/p-DQuL1Twl.js +2 -0
  45. package/dist/ix-icons/p-DQuL1Twl.js.map +1 -0
  46. package/dist/ix-icons/svg/app-update.svg +1 -0
  47. package/dist/ix-icons/svg/cam-disk-600-seg.svg +1 -0
  48. package/dist/ix-icons/svg/cam-disk-6k-seg.svg +1 -0
  49. package/dist/ix-icons/svg/chart-error-bar.svg +1 -0
  50. package/dist/ix-icons/svg/collapse-all.svg +1 -0
  51. package/dist/ix-icons/svg/configuration-safety.svg +1 -0
  52. package/dist/ix-icons/svg/connected-circle-filled.svg +1 -0
  53. package/dist/ix-icons/svg/connected-circle.svg +1 -0
  54. package/dist/ix-icons/svg/controller-device-safety.svg +1 -0
  55. package/dist/ix-icons/svg/database-safety.svg +1 -0
  56. package/dist/ix-icons/svg/disconnected-circle-filled.svg +1 -0
  57. package/dist/ix-icons/svg/disconnected-circle.svg +1 -0
  58. package/dist/ix-icons/svg/download-add.svg +1 -1
  59. package/dist/ix-icons/svg/download-list.svg +1 -1
  60. package/dist/ix-icons/svg/download.svg +1 -1
  61. package/dist/ix-icons/svg/drive-safety.svg +1 -0
  62. package/dist/ix-icons/svg/drive.svg +1 -0
  63. package/dist/ix-icons/svg/edit-document-filled.svg +1 -1
  64. package/dist/ix-icons/svg/edit-document.svg +1 -1
  65. package/dist/ix-icons/svg/emergency-stop-filled.svg +1 -0
  66. package/dist/ix-icons/svg/expand-all.svg +1 -0
  67. package/dist/ix-icons/svg/flare.svg +1 -0
  68. package/dist/ix-icons/svg/function-block-safety.svg +1 -0
  69. package/dist/ix-icons/svg/generic-device-alarm.svg +1 -0
  70. package/dist/ix-icons/svg/generic-device-brackets.svg +1 -0
  71. package/dist/ix-icons/svg/generic-device-cancelled.svg +1 -0
  72. package/dist/ix-icons/svg/generic-device-connected.svg +1 -0
  73. package/dist/ix-icons/svg/generic-device-dashed.svg +1 -0
  74. package/dist/ix-icons/svg/generic-device-disconnected.svg +1 -0
  75. package/dist/ix-icons/svg/generic-device-error.svg +1 -0
  76. package/dist/ix-icons/svg/generic-device-flare.svg +1 -0
  77. package/dist/ix-icons/svg/generic-device-forced-mode.svg +1 -0
  78. package/dist/ix-icons/svg/generic-device-incompatible.svg +1 -0
  79. package/dist/ix-icons/svg/generic-device-io-unavailable.svg +1 -0
  80. package/dist/ix-icons/svg/generic-device-lock.svg +1 -0
  81. package/dist/ix-icons/svg/generic-device-maintenance.svg +1 -0
  82. package/dist/ix-icons/svg/generic-device-pause.svg +1 -0
  83. package/dist/ix-icons/svg/generic-device-play.svg +1 -0
  84. package/dist/ix-icons/svg/generic-device-power-saving.svg +1 -0
  85. package/dist/ix-icons/svg/generic-device-published.svg +1 -0
  86. package/dist/ix-icons/svg/generic-device-question.svg +1 -0
  87. package/dist/ix-icons/svg/generic-device-refresh.svg +1 -0
  88. package/dist/ix-icons/svg/generic-device-reset.svg +1 -0
  89. package/dist/ix-icons/svg/generic-device-restart.svg +1 -0
  90. package/dist/ix-icons/svg/generic-device-rocket.svg +1 -0
  91. package/dist/ix-icons/svg/generic-device-safety.svg +1 -0
  92. package/dist/ix-icons/svg/generic-device-shield.svg +1 -0
  93. package/dist/ix-icons/svg/generic-device-shutdown.svg +1 -0
  94. package/dist/ix-icons/svg/generic-device-slash.svg +1 -0
  95. package/dist/ix-icons/svg/generic-device-software-alarm.svg +1 -0
  96. package/dist/ix-icons/svg/generic-device-standby.svg +1 -0
  97. package/dist/ix-icons/svg/generic-device-stop-userprogram.svg +1 -0
  98. package/dist/ix-icons/svg/generic-device-stop.svg +1 -0
  99. package/dist/ix-icons/svg/generic-device-success.svg +1 -0
  100. package/dist/ix-icons/svg/generic-device-synchronized.svg +1 -0
  101. package/dist/ix-icons/svg/generic-device-traffic.svg +1 -0
  102. package/dist/ix-icons/svg/generic-device.svg +1 -0
  103. package/dist/ix-icons/svg/helmet-safety-filled.svg +1 -0
  104. package/dist/ix-icons/svg/helmet-safety.svg +1 -0
  105. package/dist/ix-icons/svg/import-check.svg +1 -0
  106. package/dist/ix-icons/svg/import-failed.svg +1 -0
  107. package/dist/ix-icons/svg/import-progress.svg +1 -0
  108. package/dist/ix-icons/svg/incompatible.svg +1 -0
  109. package/dist/ix-icons/svg/live-feed.svg +1 -0
  110. package/dist/ix-icons/svg/lower-limit.svg +1 -1
  111. package/dist/ix-icons/svg/maintenance-filled.svg +1 -0
  112. package/dist/ix-icons/svg/maintenance-info-filled.svg +1 -0
  113. package/dist/ix-icons/svg/maintenance-info.svg +1 -1
  114. package/dist/ix-icons/svg/maintenance-octagon-filled.svg +1 -0
  115. package/dist/ix-icons/svg/maintenance-octagon.svg +1 -0
  116. package/dist/ix-icons/svg/maintenance-rhomb-filled.svg +1 -0
  117. package/dist/ix-icons/svg/maintenance-rhomb.svg +1 -0
  118. package/dist/ix-icons/svg/maintenance-square-filled.svg +1 -0
  119. package/dist/ix-icons/svg/maintenance-square.svg +1 -0
  120. package/dist/ix-icons/svg/maintenance-triangle-filled.svg +1 -0
  121. package/dist/ix-icons/svg/maintenance-triangle.svg +1 -0
  122. package/dist/ix-icons/svg/maintenance.svg +1 -1
  123. package/dist/ix-icons/svg/output-cam.svg +1 -0
  124. package/dist/ix-icons/svg/profisafe-logo.svg +1 -0
  125. package/dist/ix-icons/svg/restart.svg +1 -0
  126. package/dist/ix-icons/svg/rocket-circle-filled.svg +1 -0
  127. package/dist/ix-icons/svg/rocket-circle.svg +1 -0
  128. package/dist/ix-icons/svg/ruler-diagonal.svg +1 -0
  129. package/dist/ix-icons/svg/safety-settings.svg +1 -0
  130. package/dist/ix-icons/svg/send-right-filled.svg +1 -0
  131. package/dist/ix-icons/svg/send-right.svg +1 -0
  132. package/dist/ix-icons/svg/send-top-right-filled.svg +1 -0
  133. package/dist/ix-icons/svg/send-top-right.svg +1 -0
  134. package/dist/ix-icons/svg/sensor.svg +1 -0
  135. package/dist/ix-icons/svg/shutdown.svg +1 -0
  136. package/dist/ix-icons/svg/tag-safety-filled.svg +1 -0
  137. package/dist/ix-icons/svg/tag-safety.svg +1 -0
  138. package/dist/ix-icons/svg/traffic-left-right.svg +1 -0
  139. package/dist/ix-icons/svg/update-application.svg +1 -0
  140. package/dist/ix-icons/svg/upload-fail.svg +1 -1
  141. package/dist/ix-icons/svg/upload-success.svg +1 -1
  142. package/dist/ix-icons/svg/upload.svg +1 -1
  143. package/dist/ix-icons/svg/upper-limit.svg +1 -1
  144. package/dist/ix-icons/svg/warning-hexagon-filled.svg +1 -0
  145. package/dist/ix-icons/svg/warning-hexagon.svg +1 -0
  146. package/dist/ix-icons/svg/warning-octagon-filled.svg +1 -0
  147. package/dist/ix-icons/svg/warning-octagon.svg +1 -0
  148. package/dist/ix-icons/svg/warning-square-filled.svg +1 -0
  149. package/dist/ix-icons/svg/warning-square.svg +1 -0
  150. package/dist/sample.json +92 -0
  151. package/dist/types/components.d.ts +4 -0
  152. package/dist/types/stencil-public-runtime.d.ts +58 -6
  153. package/icons/index.d.ts +92 -0
  154. package/icons/index.js +104 -12
  155. package/icons/index.mjs +104 -12
  156. package/icons/package.json +1 -1
  157. package/package.json +14 -11
  158. package/svg/app-update.svg +1 -0
  159. package/svg/cam-disk-600-seg.svg +1 -0
  160. package/svg/cam-disk-6k-seg.svg +1 -0
  161. package/svg/chart-error-bar.svg +1 -0
  162. package/svg/collapse-all.svg +1 -0
  163. package/svg/configuration-safety.svg +1 -0
  164. package/svg/connected-circle-filled.svg +1 -0
  165. package/svg/connected-circle.svg +1 -0
  166. package/svg/controller-device-safety.svg +1 -0
  167. package/svg/database-safety.svg +1 -0
  168. package/svg/disconnected-circle-filled.svg +1 -0
  169. package/svg/disconnected-circle.svg +1 -0
  170. package/svg/download-add.svg +1 -1
  171. package/svg/download-list.svg +1 -1
  172. package/svg/download.svg +1 -1
  173. package/svg/drive-safety.svg +1 -0
  174. package/svg/drive.svg +1 -0
  175. package/svg/edit-document-filled.svg +1 -1
  176. package/svg/edit-document.svg +1 -1
  177. package/svg/emergency-stop-filled.svg +1 -0
  178. package/svg/expand-all.svg +1 -0
  179. package/svg/flare.svg +1 -0
  180. package/svg/function-block-safety.svg +1 -0
  181. package/svg/generic-device-alarm.svg +1 -0
  182. package/svg/generic-device-brackets.svg +1 -0
  183. package/svg/generic-device-cancelled.svg +1 -0
  184. package/svg/generic-device-connected.svg +1 -0
  185. package/svg/generic-device-dashed.svg +1 -0
  186. package/svg/generic-device-disconnected.svg +1 -0
  187. package/svg/generic-device-error.svg +1 -0
  188. package/svg/generic-device-flare.svg +1 -0
  189. package/svg/generic-device-forced-mode.svg +1 -0
  190. package/svg/generic-device-incompatible.svg +1 -0
  191. package/svg/generic-device-io-unavailable.svg +1 -0
  192. package/svg/generic-device-lock.svg +1 -0
  193. package/svg/generic-device-maintenance.svg +1 -0
  194. package/svg/generic-device-pause.svg +1 -0
  195. package/svg/generic-device-play.svg +1 -0
  196. package/svg/generic-device-power-saving.svg +1 -0
  197. package/svg/generic-device-published.svg +1 -0
  198. package/svg/generic-device-question.svg +1 -0
  199. package/svg/generic-device-refresh.svg +1 -0
  200. package/svg/generic-device-reset.svg +1 -0
  201. package/svg/generic-device-restart.svg +1 -0
  202. package/svg/generic-device-rocket.svg +1 -0
  203. package/svg/generic-device-safety.svg +1 -0
  204. package/svg/generic-device-shield.svg +1 -0
  205. package/svg/generic-device-shutdown.svg +1 -0
  206. package/svg/generic-device-slash.svg +1 -0
  207. package/svg/generic-device-software-alarm.svg +1 -0
  208. package/svg/generic-device-standby.svg +1 -0
  209. package/svg/generic-device-stop-userprogram.svg +1 -0
  210. package/svg/generic-device-stop.svg +1 -0
  211. package/svg/generic-device-success.svg +1 -0
  212. package/svg/generic-device-synchronized.svg +1 -0
  213. package/svg/generic-device-traffic.svg +1 -0
  214. package/svg/generic-device.svg +1 -0
  215. package/svg/helmet-safety-filled.svg +1 -0
  216. package/svg/helmet-safety.svg +1 -0
  217. package/svg/import-check.svg +1 -0
  218. package/svg/import-failed.svg +1 -0
  219. package/svg/import-progress.svg +1 -0
  220. package/svg/incompatible.svg +1 -0
  221. package/svg/live-feed.svg +1 -0
  222. package/svg/lower-limit.svg +1 -1
  223. package/svg/maintenance-filled.svg +1 -0
  224. package/svg/maintenance-info-filled.svg +1 -0
  225. package/svg/maintenance-info.svg +1 -1
  226. package/svg/maintenance-octagon-filled.svg +1 -0
  227. package/svg/maintenance-octagon.svg +1 -0
  228. package/svg/maintenance-rhomb-filled.svg +1 -0
  229. package/svg/maintenance-rhomb.svg +1 -0
  230. package/svg/maintenance-square-filled.svg +1 -0
  231. package/svg/maintenance-square.svg +1 -0
  232. package/svg/maintenance-triangle-filled.svg +1 -0
  233. package/svg/maintenance-triangle.svg +1 -0
  234. package/svg/maintenance.svg +1 -1
  235. package/svg/output-cam.svg +1 -0
  236. package/svg/profisafe-logo.svg +1 -0
  237. package/svg/restart.svg +1 -0
  238. package/svg/rocket-circle-filled.svg +1 -0
  239. package/svg/rocket-circle.svg +1 -0
  240. package/svg/ruler-diagonal.svg +1 -0
  241. package/svg/safety-settings.svg +1 -0
  242. package/svg/send-right-filled.svg +1 -0
  243. package/svg/send-right.svg +1 -0
  244. package/svg/send-top-right-filled.svg +1 -0
  245. package/svg/send-top-right.svg +1 -0
  246. package/svg/sensor.svg +1 -0
  247. package/svg/shutdown.svg +1 -0
  248. package/svg/tag-safety-filled.svg +1 -0
  249. package/svg/tag-safety.svg +1 -0
  250. package/svg/traffic-left-right.svg +1 -0
  251. package/svg/update-application.svg +1 -0
  252. package/svg/upload-fail.svg +1 -1
  253. package/svg/upload-success.svg +1 -1
  254. package/svg/upload.svg +1 -1
  255. package/svg/upper-limit.svg +1 -1
  256. package/svg/warning-hexagon-filled.svg +1 -0
  257. package/svg/warning-hexagon.svg +1 -0
  258. package/svg/warning-octagon-filled.svg +1 -0
  259. package/svg/warning-octagon.svg +1 -0
  260. package/svg/warning-square-filled.svg +1 -0
  261. package/svg/warning-square.svg +1 -0
  262. package/components/p-aee14f18.js +0 -1391
  263. package/components/p-aee14f18.js.map +0 -1
  264. package/dist/cjs/app-globals-3a1e7e63.js +0 -7
  265. package/dist/cjs/app-globals-3a1e7e63.js.map +0 -1
  266. package/dist/cjs/icon-1dc6c206.js +0 -251
  267. package/dist/cjs/icon-1dc6c206.js.map +0 -1
  268. package/dist/cjs/index-494dae28.js.map +0 -1
  269. package/dist/cjs/ix-icon.cjs.entry.js.map +0 -1
  270. package/dist/esm/app-globals-0f993ce5.js +0 -5
  271. package/dist/esm/app-globals-0f993ce5.js.map +0 -1
  272. package/dist/esm/icon-1ecd1404.js +0 -247
  273. package/dist/esm/icon-1ecd1404.js.map +0 -1
  274. package/dist/esm/index-22f745e9.js.map +0 -1
  275. package/dist/ix-icons/p-2a1a6384.entry.js +0 -2
  276. package/dist/ix-icons/p-2a1a6384.entry.js.map +0 -1
  277. package/dist/ix-icons/p-580c92f7.js +0 -3
  278. package/dist/ix-icons/p-580c92f7.js.map +0 -1
  279. package/dist/ix-icons/p-e1255160.js +0 -2
  280. package/dist/ix-icons/p-e1255160.js.map +0 -1
  281. package/dist/ix-icons/p-f9830889.js +0 -2
  282. package/dist/ix-icons/p-f9830889.js.map +0 -1
  283. package/loader/package.json +0 -11
@@ -1,247 +0,0 @@
1
- import { g as getAssetPath, r as registerInstance, h, H as Host, c as getElement } from './index-22f745e9.js';
2
-
3
- /**
4
- * Provide custom SVG path for icons
5
- *
6
- * <meta name="ix-icons:path" content="/build/svg" />
7
- */
8
- function getCustomAssetUrl() {
9
- const assetPath = document.querySelector("meta[name='ix-icons:path']");
10
- if (assetPath) {
11
- const path = assetPath.getAttribute('content');
12
- return path;
13
- }
14
- return false;
15
- }
16
-
17
- /*
18
- * COPYRIGHT (c) Siemens AG 2018-2025 ALL RIGHTS RESERVED.
19
- */
20
- let parser = null;
21
- const errorSymbol = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='512' height='512' viewBox='0 0 512 512'><path fill-rule='evenodd' d='M384,0 L384,384 L0,384 L0,0 L384,0 Z M192,207.085 L57.751,341.333 L326.248,341.333 L192,207.085 Z M42.666,57.751 L42.666,326.248 L176.915,192 L42.666,57.751 Z M341.333,57.751 L207.085,192 L341.333,326.248 L341.333,57.751 Z M326.248,42.666 L57.751,42.666 L192,176.915 L326.248,42.666 Z' transform='translate(64 64)'/></svg>";
22
- function parseSVGDataContent(content, element) {
23
- if (typeof window['DOMParser'] === 'undefined') {
24
- console.error('DOMParser not supported by your browser.');
25
- return '';
26
- }
27
- if (parser === null) {
28
- parser = new window['DOMParser']();
29
- }
30
- const svgDocument = parser.parseFromString(decodeURI(content), 'text/html');
31
- const svgElement = svgDocument.querySelector('svg');
32
- if (!svgElement) {
33
- if (element) {
34
- console.error('No valid svg data provided', element);
35
- }
36
- else {
37
- console.error('No valid svg data provided');
38
- }
39
- return '';
40
- }
41
- return svgElement.outerHTML;
42
- }
43
-
44
- /*
45
- * SPDX-FileCopyrightText: 2023 Siemens AG
46
- *
47
- * SPDX-License-Identifier: MIT
48
- *
49
- * This source code is licensed under the MIT license found in the
50
- * LICENSE file in the root directory of this source tree.
51
- */
52
- let fetchCache;
53
- const requests = new Map();
54
- const getIconCacheMap = () => {
55
- if (typeof window === 'undefined') {
56
- return new Map();
57
- }
58
- if (!fetchCache) {
59
- window.IxIcons = window.IxIcons || {};
60
- fetchCache = window.IxIcons.map = window.IxIcons.map || new Map();
61
- }
62
- return fetchCache;
63
- };
64
- const isSvgDataUrl = (url) => {
65
- if (!url) {
66
- return false;
67
- }
68
- if (typeof url !== 'string') {
69
- return false;
70
- }
71
- return url.startsWith('data:image/svg+xml');
72
- };
73
- async function fetchSVG(url, element) {
74
- const cache = getIconCacheMap();
75
- if (cache.has(url)) {
76
- return cache.get(url);
77
- }
78
- if (requests.has(url)) {
79
- return requests.get(url);
80
- }
81
- const fetching = fetch(url)
82
- .then(async (response) => {
83
- const responseText = await response.text();
84
- let svgContent = '';
85
- if (response.ok) {
86
- svgContent = parseSVGDataContent(responseText, element);
87
- cache.set(url, svgContent);
88
- }
89
- else {
90
- console.error('Failed to request svg data from', url, 'with status code', response.status, element);
91
- }
92
- return svgContent;
93
- })
94
- .catch(() => {
95
- console.error('Failed to fetch svg data:', url, element);
96
- cache.set(url, '');
97
- return '';
98
- })
99
- .finally(() => {
100
- requests.delete(url);
101
- });
102
- return fetching;
103
- }
104
- const urlRegex = /^(?:(?:https?|ftp):\/\/)?(?:\S+(?::\S*)?@)?(?:www\.)?(?:\S+\.\S+)(?:\S*)$/i;
105
- function isValidUrl(url) {
106
- return urlRegex.test(url);
107
- }
108
- function getIconUrl(name, element) {
109
- const customAssetUrl = getCustomAssetUrl();
110
- if (customAssetUrl) {
111
- return `${customAssetUrl}/${name}.svg`;
112
- }
113
- let url = `svg/${name}.svg`;
114
- try {
115
- url = getAssetPath(url);
116
- }
117
- catch (error) {
118
- console.warn(`Could not load icon with name "${name}". Ensure that the icon is registered using addIcons or that the icon SVG data is passed directly to property.`, element);
119
- }
120
- return url;
121
- }
122
- async function resolveIcon(element, iconName) {
123
- if (!iconName) {
124
- console.warn('No icon was provided', element);
125
- return '';
126
- }
127
- if (isSvgDataUrl(iconName)) {
128
- const content = parseSVGDataContent(iconName, element);
129
- if (!content) {
130
- console.error('Failed to parse icon data', element);
131
- }
132
- return content;
133
- }
134
- return loadIcon(iconName, element);
135
- }
136
- async function loadIcon(iconName, element) {
137
- const cache = getIconCacheMap();
138
- if (cache.has(iconName)) {
139
- return cache.get(iconName);
140
- }
141
- if (isValidUrl(iconName)) {
142
- return fetchSVG(iconName, element);
143
- }
144
- const iconUrl = getIconUrl(iconName, element);
145
- if (!iconUrl) {
146
- return '';
147
- }
148
- return fetchSVG(iconUrl, element);
149
- }
150
- function removePrefix(name, prefix) {
151
- if (name.startsWith(prefix)) {
152
- name = name.slice(prefix.length);
153
- return name.replace(/^(\w)/, (_match, p1) => p1.toLowerCase());
154
- }
155
- return name;
156
- }
157
- function addIcons(icons) {
158
- Object.keys(icons).forEach(name => {
159
- const icon = icons[name];
160
- name = removePrefix(name, 'icon');
161
- addIconToCache(name, icon);
162
- });
163
- }
164
- function addIconToCache(name, icon) {
165
- const cache = getIconCacheMap();
166
- if (cache.has(name)) {
167
- console.warn(`Icon name '${name}' already in cache. Overwritting with new icon data.`);
168
- }
169
- const svg = parseSVGDataContent(icon);
170
- cache.set(name, svg);
171
- const toKebabCase = name.replace(/([a-z0-9]|(?=[A-Z]))([A-Z0-9])/g, '$1-$2').toLowerCase();
172
- if (name != toKebabCase) {
173
- cache.set(toKebabCase, svg);
174
- }
175
- }
176
-
177
- const iconCss = ":host{display:inline-flex;height:1.5rem;width:1.5rem;min-height:1.5rem;min-width:1.5rem;color:inherit}:host .svg-container{display:block;position:relative;width:100%;height:100%}:host .svg-container svg{display:block;position:relative;height:100%;width:100%}:host .svg-container svg,:host .svg-container svg[fill],:host .svg-container svg [fill]{fill:currentColor !important}:host(.size-12){height:0.75rem;width:0.75rem;min-height:0.75rem;min-width:0.75rem}:host(.size-16){height:1rem;width:1rem;min-height:1rem;min-width:1rem}:host(.size-32){height:2rem;width:2rem;min-height:2rem;min-width:2rem}";
178
- const IxIconStyle0 = iconCss;
179
-
180
- const Icon = class {
181
- constructor(hostRef) {
182
- registerInstance(this, hostRef);
183
- /**
184
- * Size of the icon
185
- */
186
- this.size = '24';
187
- /**
188
- * Only fetch and parse svg data when icon is visible
189
- */
190
- this.lazyLoading = false;
191
- this.isVisible = false;
192
- }
193
- componentWillLoad() {
194
- this.waitForRendering(() => {
195
- this.isVisible = true;
196
- this.loadIconContent();
197
- });
198
- }
199
- async loadIconContent() {
200
- const content = await resolveIcon(this.hostElement, this.name);
201
- if (!content) {
202
- this.svgContent = parseSVGDataContent(errorSymbol);
203
- return;
204
- }
205
- this.svgContent = content;
206
- }
207
- waitForRendering(onRender) {
208
- if (this.lazyLoading && typeof window !== 'undefined' && window.IntersectionObserver) {
209
- const observer = new IntersectionObserver(entries => {
210
- entries.forEach(entry => {
211
- if (entry.isIntersecting) {
212
- onRender();
213
- observer.disconnect();
214
- }
215
- });
216
- }, {
217
- rootMargin: '25px',
218
- });
219
- observer.observe(this.hostElement);
220
- }
221
- else {
222
- onRender();
223
- }
224
- }
225
- render() {
226
- const style = {};
227
- if (this.color) {
228
- style['color'] = `var(--theme-${this.color})`;
229
- }
230
- return (h(Host, { key: '484071b4f74e0b803b8d36913c866bfdb4b1a259', style: style, class: {
231
- ['size-12']: this.size === '12',
232
- ['size-16']: this.size === '16',
233
- ['size-24']: this.size === '24',
234
- ['size-32']: this.size === '32',
235
- } }, h("div", { key: 'd988ef0fcc83087c24c905cf95ff02fe187aed5e', class: 'svg-container', innerHTML: this.svgContent })));
236
- }
237
- static get assetsDirs() { return ["svg"]; }
238
- get hostElement() { return getElement(this); }
239
- static get watchers() { return {
240
- "name": ["loadIconContent"]
241
- }; }
242
- };
243
- Icon.style = IxIconStyle0;
244
-
245
- export { Icon as I, addIcons as a, addIconToCache as b };
246
-
247
- //# sourceMappingURL=icon-1ecd1404.js.map
@@ -1 +0,0 @@
1
- {"file":"icon-1ecd1404.js","mappings":"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","names":[],"sources":["src/components/icon/meta-tag.ts","src/components/icon/parser.ts","src/components/icon/resolveIcon.ts","src/components/icon/icon.scss?tag=ix-icon&encapsulation=shadow","src/components/icon/icon.tsx"],"sourcesContent":["/**\n * Provide custom SVG path for icons\n *\n * <meta name=\"ix-icons:path\" content=\"/build/svg\" />\n */\nexport function getCustomAssetUrl() {\n const assetPath = document.querySelector(\"meta[name='ix-icons:path']\");\n if (assetPath) {\n const path = assetPath.getAttribute('content');\n return path;\n }\n\n return false;\n}\n","/*\n * COPYRIGHT (c) Siemens AG 2018-2025 ALL RIGHTS RESERVED.\n */\n\nlet parser: any = null;\n\nexport const errorSymbol =\n \"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='512' height='512' viewBox='0 0 512 512'><path fill-rule='evenodd' d='M384,0 L384,384 L0,384 L0,0 L384,0 Z M192,207.085 L57.751,341.333 L326.248,341.333 L192,207.085 Z M42.666,57.751 L42.666,326.248 L176.915,192 L42.666,57.751 Z M341.333,57.751 L207.085,192 L341.333,326.248 L341.333,57.751 Z M326.248,42.666 L57.751,42.666 L192,176.915 L326.248,42.666 Z' transform='translate(64 64)'/></svg>\";\n\nexport function parseSVGDataContent(content: string, element?: HTMLElement): string {\n if (typeof window['DOMParser'] === 'undefined') {\n console.error('DOMParser not supported by your browser.');\n return '';\n }\n\n if (parser === null) {\n parser = new window['DOMParser']();\n }\n\n const svgDocument = parser.parseFromString(decodeURI(content), 'text/html');\n const svgElement = svgDocument.querySelector('svg') as HTMLElement;\n\n if (!svgElement) {\n if (element) {\n console.error('No valid svg data provided', element);\n } else {\n console.error('No valid svg data provided');\n }\n return '';\n }\n\n return svgElement.outerHTML;\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { getAssetPath } from '@stencil/core';\nimport { getCustomAssetUrl } from './meta-tag';\nimport { parseSVGDataContent } from './parser';\n\ndeclare global {\n interface Window {\n IxIcons: any;\n }\n}\n\nlet fetchCache: Map<string, string>;\nconst requests = new Map<string, Promise<string>>();\n\nexport const getIconCacheMap = (): Map<string, string> => {\n if (typeof window === 'undefined') {\n return new Map();\n }\n\n if (!fetchCache) {\n window.IxIcons = window.IxIcons || {};\n fetchCache = window.IxIcons.map = window.IxIcons.map || new Map();\n }\n\n return fetchCache;\n};\n\nexport const isSvgDataUrl = (url: string) => {\n if (!url) {\n return false;\n }\n\n if (typeof url !== 'string') {\n return false;\n }\n\n return url.startsWith('data:image/svg+xml');\n};\n\nasync function fetchSVG(url: string, element: HTMLIxIconElement) {\n const cache = getIconCacheMap();\n\n if (cache.has(url)) {\n return cache.get(url)!;\n }\n\n if (requests.has(url)) {\n return requests.get(url)!;\n }\n\n const fetching = fetch(url)\n .then(async response => {\n const responseText = await response.text();\n\n let svgContent = '';\n if (response.ok) {\n svgContent = parseSVGDataContent(responseText, element);\n cache.set(url, svgContent);\n } else {\n console.error('Failed to request svg data from', url, 'with status code', response.status, element);\n }\n\n return svgContent;\n })\n .catch(() => {\n console.error('Failed to fetch svg data:', url, element);\n cache.set(url, '');\n return '';\n })\n .finally(() => {\n requests.delete(url);\n });\n\n return fetching;\n}\n\nconst urlRegex = /^(?:(?:https?|ftp):\\/\\/)?(?:\\S+(?::\\S*)?@)?(?:www\\.)?(?:\\S+\\.\\S+)(?:\\S*)$/i;\n\nfunction isValidUrl(url: string) {\n return urlRegex.test(url);\n}\n\nexport function getIconUrl(name: string, element: HTMLIxIconElement) {\n const customAssetUrl = getCustomAssetUrl();\n\n if (customAssetUrl) {\n return `${customAssetUrl}/${name}.svg`;\n }\n\n let url: string = `svg/${name}.svg`;\n\n try {\n url = getAssetPath(url);\n } catch (error) {\n console.warn(`Could not load icon with name \"${name}\". Ensure that the icon is registered using addIcons or that the icon SVG data is passed directly to property.`, element);\n }\n\n return url;\n}\n\nexport async function resolveIcon(element: HTMLIxIconElement, iconName?: string): Promise<string> {\n if (!iconName) {\n console.warn('No icon was provided', element);\n return '';\n }\n\n if (isSvgDataUrl(iconName)) {\n const content = parseSVGDataContent(iconName, element);\n\n if (!content) {\n console.error('Failed to parse icon data', element);\n }\n return content;\n }\n\n return loadIcon(iconName, element);\n}\n\nasync function loadIcon(iconName: string, element: HTMLIxIconElement): Promise<string> {\n const cache = getIconCacheMap();\n\n if (cache.has(iconName)) {\n return cache.get(iconName)!;\n }\n\n if (isValidUrl(iconName)) {\n return fetchSVG(iconName, element);\n }\n\n const iconUrl = getIconUrl(iconName, element);\n\n if (!iconUrl) {\n return '';\n }\n\n return fetchSVG(iconUrl, element);\n}\n\nfunction removePrefix(name: string, prefix: string) {\n if (name.startsWith(prefix)) {\n name = name.slice(prefix.length);\n return name.replace(/^(\\w)/, (_match, p1) => p1.toLowerCase());\n }\n\n return name;\n}\n\nexport function addIcons(icons: { [name: string]: any }) {\n Object.keys(icons).forEach(name => {\n const icon = icons[name];\n name = removePrefix(name, 'icon');\n\n addIconToCache(name, icon);\n });\n}\n\nexport function addIconToCache(name: string, icon: string) {\n const cache = getIconCacheMap();\n\n if (cache.has(name)) {\n console.warn(`Icon name '${name}' already in cache. Overwritting with new icon data.`);\n }\n\n const svg = parseSVGDataContent(icon);\n\n cache.set(name, svg);\n\n const toKebabCase = name.replace(/([a-z0-9]|(?=[A-Z]))([A-Z0-9])/g, '$1-$2').toLowerCase();\n\n if (name != toKebabCase) {\n cache.set(toKebabCase, svg);\n }\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n@mixin size($size) {\n height: $size;\n width: $size;\n min-height: $size;\n min-width: $size;\n}\n\n:host {\n display: inline-flex;\n @include size(1.5rem);\n color: inherit;\n\n .svg-container {\n display: block;\n position: relative;\n width: 100%;\n height: 100%;\n\n svg {\n display: block;\n position: relative;\n height: 100%;\n width: 100%;\n }\n\n svg,\n svg[fill],\n svg [fill] {\n fill: currentColor !important;\n }\n }\n}\n\n:host(.size-12) {\n @include size(0.75rem);\n}\n\n:host(.size-16) {\n @include size(1rem);\n}\n\n:host(.size-32) {\n @include size(2rem);\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { Component, h, Host, Prop, State, Watch, Element, Build } from '@stencil/core';\nimport { resolveIcon } from './resolveIcon';\nimport { errorSymbol, parseSVGDataContent } from './parser';\n\n@Component({\n tag: 'ix-icon',\n styleUrl: 'icon.scss',\n shadow: true,\n assetsDirs: ['svg'],\n})\nexport class Icon {\n @Element() hostElement!: HTMLIxIconElement;\n\n /**\n * Size of the icon\n */\n @Prop() size: '12' | '16' | '24' | '32' = '24';\n\n /**\n * Color of the icon\n */\n @Prop() color?: string;\n\n /**\n * Use one of our defined icon names e.g. `copy`\n *\n * https://ix.siemens.io/docs/icon-library/icons\n *\n * or the import variant\n *\n * ```\n * import { rocket } from '@siemens/ix-icons/icons';\n *\n * <ix-icon name={rocket}></ix-icon>\n * ```\n */\n @Prop() name?: string;\n\n /**\n * Only fetch and parse svg data when icon is visible\n */\n @Prop() lazyLoading = false;\n\n @State() svgContent?: string;\n @State() isVisible = false;\n\n componentWillLoad() {\n this.waitForRendering(() => {\n this.isVisible = true;\n this.loadIconContent();\n });\n }\n\n @Watch('name')\n async loadIconContent() {\n const content = await resolveIcon(this.hostElement, this.name);\n\n if (!content) {\n this.svgContent = parseSVGDataContent(errorSymbol);\n return;\n }\n\n this.svgContent = content;\n }\n\n private waitForRendering(onRender: () => void) {\n if (Build.isBrowser && this.lazyLoading && typeof window !== 'undefined' && (window as any).IntersectionObserver) {\n const observer = new IntersectionObserver(\n entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n onRender();\n observer.disconnect();\n }\n });\n },\n {\n rootMargin: '25px',\n },\n );\n\n observer.observe(this.hostElement);\n } else {\n onRender();\n }\n }\n\n render() {\n const style: {\n [key: string]: string;\n } = {};\n\n if (this.color) {\n style['color'] = `var(--theme-${this.color})`;\n }\n\n return (\n <Host\n style={style}\n class={{\n ['size-12']: this.size === '12',\n ['size-16']: this.size === '16',\n ['size-24']: this.size === '24',\n ['size-32']: this.size === '32',\n }}\n >\n <div class={'svg-container'} innerHTML={this.svgContent}></div>\n </Host>\n );\n }\n}\n"],"version":3}