@siemens/ix-icons 1.2.0 → 2.0.0-beta.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. package/README.md +6 -31
  2. package/dist/cjs/icon-edb3bf4b.js +1487 -0
  3. package/dist/cjs/icon-edb3bf4b.js.map +1 -0
  4. package/dist/cjs/index.cjs.js +1 -1
  5. package/dist/cjs/ix-icon.cjs.entry.js +1 -1
  6. package/dist/collection/components/icon/icon.css +17 -2780
  7. package/dist/collection/components/icon/icon.js +10 -21
  8. package/dist/collection/components/icon/icon.js.map +1 -1
  9. package/dist/collection/components/icon/icons.js +679 -0
  10. package/dist/collection/components/icon/icons.js.map +1 -0
  11. package/dist/collection/components/icon/resolveIcon.js +27 -3
  12. package/dist/collection/components/icon/resolveIcon.js.map +1 -1
  13. package/dist/components/icon.js +1387 -25
  14. package/dist/components/icon.js.map +1 -1
  15. package/dist/css/ix-icons.css +13 -719
  16. package/dist/esm/icon-605d6082.js +1485 -0
  17. package/dist/esm/icon-605d6082.js.map +1 -0
  18. package/dist/esm/index.js +1 -1
  19. package/dist/esm/ix-icon.entry.js +1 -1
  20. package/dist/ix-icons/index.esm.js +1 -1
  21. package/dist/ix-icons/ix-icons.esm.js +1 -1
  22. package/dist/ix-icons/p-0749ffaf.entry.js +2 -0
  23. package/dist/ix-icons/p-71dafc93.js +2 -0
  24. package/dist/ix-icons/p-71dafc93.js.map +1 -0
  25. package/dist/sample.json +676 -1351
  26. package/dist/svg/missing-symbol.svg +1 -0
  27. package/dist/types/components/icon/icon.d.ts +2 -1
  28. package/dist/types/components/icon/icons.d.ts +677 -0
  29. package/dist/types/components.d.ts +4 -2
  30. package/icons/index.d.ts +678 -676
  31. package/icons/index.js +678 -676
  32. package/icons/index.mjs +678 -676
  33. package/icons/package.json +1 -1
  34. package/package.json +2 -5
  35. package/dist/cjs/icon-f93d1754.js +0 -125
  36. package/dist/cjs/icon-f93d1754.js.map +0 -1
  37. package/dist/collection/components/icon/question.js +0 -5
  38. package/dist/collection/components/icon/question.js.map +0 -1
  39. package/dist/esm/icon-6a9c5e3a.js +0 -123
  40. package/dist/esm/icon-6a9c5e3a.js.map +0 -1
  41. package/dist/fonts/ix-icons.eot +0 -0
  42. package/dist/fonts/ix-icons.svg +0 -2037
  43. package/dist/fonts/ix-icons.ttf +0 -0
  44. package/dist/fonts/ix-icons.woff +0 -0
  45. package/dist/fonts/ix-icons.woff2 +0 -0
  46. package/dist/ix-icons/p-3f1bfdd7.js +0 -2
  47. package/dist/ix-icons/p-3f1bfdd7.js.map +0 -1
  48. package/dist/ix-icons/p-56e47578.entry.js +0 -2
  49. package/dist/sample.html +0 -11645
  50. package/dist/types/components/icon/question.d.ts +0 -1
  51. /package/dist/ix-icons/{p-56e47578.entry.js.map → p-0749ffaf.entry.js.map} +0 -0
@@ -1,3 +1,22 @@
1
+ function toCamelCase(value) {
2
+ value = value.replace(/[\(\)\[\]\{\}\=\?\!\.\:,\-_\+\\\"#~\/]/g, ' ');
3
+ let returnValue = '';
4
+ let makeNextUppercase = true;
5
+ value = value.toLowerCase();
6
+ for (let i = 0; value.length > i; i++) {
7
+ let c = value.charAt(i);
8
+ if (c.match(/^\s+$/g) || c.match(/[\(\)\[\]\{\}\\\/]/g)) {
9
+ makeNextUppercase = true;
10
+ }
11
+ else if (makeNextUppercase) {
12
+ c = c.toUpperCase();
13
+ makeNextUppercase = false;
14
+ }
15
+ returnValue += c;
16
+ }
17
+ const normalized = returnValue.replace(/\s+/g, '');
18
+ return normalized.charAt(0).toUpperCase() + normalized.slice(1);
19
+ }
1
20
  export const isSvgDataUrl = (url) => {
2
21
  if (!url) {
3
22
  return false;
@@ -36,10 +55,16 @@ const urlRegex = /^(?:(?:https?|ftp):\/\/)?(?:\S+(?::\S*)?@)?(?:www\.)?(?:\S+\.\
36
55
  function isValidUrl(url) {
37
56
  return urlRegex.test(url);
38
57
  }
58
+ async function getESMIcon(name) {
59
+ const esmIcon = await import('./icons');
60
+ let iconName = toCamelCase(name);
61
+ iconName = `icon${iconName}`;
62
+ return parseSVGDataContent(esmIcon[iconName]);
63
+ }
39
64
  export async function resolveIcon(icon) {
40
65
  const { name } = icon;
41
66
  if (!name) {
42
- return;
67
+ throw Error('no icon name provided');
43
68
  }
44
69
  if (isSvgDataUrl(name)) {
45
70
  return parseSVGDataContent(name);
@@ -52,7 +77,6 @@ export async function resolveIcon(icon) {
52
77
  throw error;
53
78
  }
54
79
  }
55
- //Fallback return undefined to render web font icon
56
- return;
80
+ return getESMIcon(name);
57
81
  }
58
82
  //# sourceMappingURL=resolveIcon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveIcon.js","sourceRoot":"","sources":["../../../src/components/icon/resolveIcon.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE;EAC1C,IAAI,CAAC,GAAG,EAAE;IACR,OAAO,KAAK,CAAC;GACd;EAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;IAC3B,OAAO,KAAK,CAAC;GACd;EAED,OAAO,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF,IAAI,MAAM,GAAG,IAAI,CAAC;AAElB,MAAM,UAAU,mBAAmB,CAAC,OAAe;EACjD,IAAI,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,WAAW,EAAE;IAC9C,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACzD,OAAO;GACR;EAED,IAAI,MAAM,KAAK,IAAI,EAAE;IACnB,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;GACpC;EAED,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;EACjE,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAgB,CAAC;EAEnE,IAAI,CAAC,UAAU,EAAE;IACf,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;GAC3C;EAED,OAAO,UAAU,CAAC,SAAS,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,GAAW;EACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;EAClC,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;EAE3C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;IAChB,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5B,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;GAC3B;EAED,OAAO,mBAAmB,CAAC,YAAY,CAAC,CAAC;AAC3C,CAAC;AACD,MAAM,QAAQ,GAAG,4EAA4E,CAAC;AAE9F,SAAS,UAAU,CAAC,GAAW;EAC7B,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAU;EAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;EAEtB,IAAI,CAAC,IAAI,EAAE;IACT,OAAO;GACR;EAED,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;IACtB,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;GAClC;EAED,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;IACpB,IAAI;MACF,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC7B;IAAC,OAAO,KAAK,EAAE;MACd,MAAM,KAAK,CAAC;KACb;GACF;EAED,mDAAmD;EACnD,OAAO;AACT,CAAC","sourcesContent":["/*\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 { Icon } from './icon';\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\nlet parser = null;\n\nexport function parseSVGDataContent(content: string) {\n if (typeof window['DOMParser'] === 'undefined') {\n console.warn('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(content, 'text/html');\n const svgElement = svgDocument.querySelector('svg') as HTMLElement;\n\n if (!svgElement) {\n throw Error('No valid svg data provided');\n }\n\n return svgElement.outerHTML;\n}\n\nasync function fetchSVG(url: string) {\n const response = await fetch(url);\n const responseText = await response.text();\n\n if (!response.ok) {\n console.error(responseText);\n throw Error(responseText);\n }\n\n return parseSVGDataContent(responseText);\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 async function resolveIcon(icon: Icon) {\n const { name } = icon;\n\n if (!name) {\n return;\n }\n\n if (isSvgDataUrl(name)) {\n return parseSVGDataContent(name);\n }\n\n if (isValidUrl(name)) {\n try {\n return await fetchSVG(name);\n } catch (error) {\n throw error;\n }\n }\n\n //Fallback return undefined to render web font icon\n return;\n}\n"]}
1
+ {"version":3,"file":"resolveIcon.js","sourceRoot":"","sources":["../../../src/components/icon/resolveIcon.ts"],"names":[],"mappings":"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","sourcesContent":["/*\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 { Icon } from './icon';\n\nfunction toCamelCase(value: string) {\n value = value.replace(/[\\(\\)\\[\\]\\{\\}\\=\\?\\!\\.\\:,\\-_\\+\\\\\\\"#~\\/]/g, ' ');\n let returnValue = '';\n let makeNextUppercase = true;\n value = value.toLowerCase();\n for (let i = 0; value.length > i; i++) {\n let c = value.charAt(i);\n if (c.match(/^\\s+$/g) || c.match(/[\\(\\)\\[\\]\\{\\}\\\\\\/]/g)) {\n makeNextUppercase = true;\n } else if (makeNextUppercase) {\n c = c.toUpperCase();\n makeNextUppercase = false;\n }\n returnValue += c;\n }\n const normalized = returnValue.replace(/\\s+/g, '');\n return normalized.charAt(0).toUpperCase() + normalized.slice(1);\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\nlet parser = null;\n\nexport function parseSVGDataContent(content: string) {\n if (typeof window['DOMParser'] === 'undefined') {\n console.warn('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(content, 'text/html');\n const svgElement = svgDocument.querySelector('svg') as HTMLElement;\n\n if (!svgElement) {\n throw Error('No valid svg data provided');\n }\n\n return svgElement.outerHTML;\n}\n\nasync function fetchSVG(url: string) {\n const response = await fetch(url);\n const responseText = await response.text();\n\n if (!response.ok) {\n console.error(responseText);\n throw Error(responseText);\n }\n\n return parseSVGDataContent(responseText);\n}\nconst urlRegex = /^(?:(?:https?|ftp):\\/\\/)?(?:\\S+(?::\\S*)?@)?(?:www\\.)?(?:\\S+\\.\\S+)(?:\\S*)$/i;\n\nfunction isValidUrl(url: string) {\n return urlRegex.test(url);\n}\n\nasync function getESMIcon(name: string) {\n const esmIcon = await import('./icons');\n let iconName = toCamelCase(name);\n iconName = `icon${iconName}`;\n\n return parseSVGDataContent(esmIcon[iconName]);\n}\n\nexport async function resolveIcon(icon: Icon) {\n const { name } = icon;\n\n if (!name) {\n throw Error('no icon name provided');\n }\n\n if (isSvgDataUrl(name)) {\n return parseSVGDataContent(name);\n }\n\n if (isValidUrl(name)) {\n try {\n return await fetchSVG(name);\n } catch (error) {\n throw error;\n }\n }\n\n return getESMIcon(name);\n}\n"]}