@pine-ds/icons 9.3.1 → 9.4.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 (72) hide show
  1. package/components/pds-icon.js +103 -7
  2. package/components/pds-icon.js.map +1 -1
  3. package/dist/cheatsheet.html +408 -362
  4. package/dist/cjs/{index-Dww19Xh5.js → index-Rab0J0J-.js} +5 -2
  5. package/dist/cjs/index-Rab0J0J-.js.map +1 -0
  6. package/dist/cjs/{index-CWsTgiaV.js → index-vqovWm2E.js} +90 -3
  7. package/dist/cjs/index-vqovWm2E.js.map +1 -0
  8. package/dist/cjs/index.cjs.js +2 -2
  9. package/dist/cjs/loader.cjs.js +2 -2
  10. package/dist/cjs/pds-icon.cjs.entry.js +19 -9
  11. package/dist/cjs/pds-icon.cjs.entry.js.map +1 -1
  12. package/dist/cjs/pds-icon.entry.cjs.js.map +1 -1
  13. package/dist/cjs/pds-icons.cjs.js +2 -2
  14. package/dist/collection/components/pds-icon/pds-icon.css +18 -0
  15. package/dist/collection/components/pds-icon/pds-icon.js +38 -9
  16. package/dist/collection/components/pds-icon/pds-icon.js.map +1 -1
  17. package/dist/collection/components/pds-icon/utils.js +85 -0
  18. package/dist/collection/components/pds-icon/utils.js.map +1 -1
  19. package/dist/docs.json +26 -3
  20. package/dist/esm/{index-DQ7l5XCP.js → index-BtVkVfWm.js} +5 -2
  21. package/dist/esm/index-BtVkVfWm.js.map +1 -0
  22. package/dist/esm/{index-Bp0--We9.js → index-DageRZ16.js} +89 -4
  23. package/dist/esm/index-DageRZ16.js.map +1 -0
  24. package/dist/esm/index.js +2 -2
  25. package/dist/esm/loader.js +3 -3
  26. package/dist/esm/pds-icon.entry.js +19 -9
  27. package/dist/esm/pds-icon.entry.js.map +1 -1
  28. package/dist/esm/pds-icons.js +3 -3
  29. package/dist/pds-icons/index.esm.js +1 -1
  30. package/dist/pds-icons/p-5a3a5e3c.entry.js +2 -0
  31. package/dist/pds-icons/p-5a3a5e3c.entry.js.map +1 -0
  32. package/dist/pds-icons/p-6DkR999u.js +2 -0
  33. package/dist/pds-icons/p-6DkR999u.js.map +1 -0
  34. package/dist/pds-icons/p-BtVkVfWm.js +3 -0
  35. package/dist/pds-icons/p-BtVkVfWm.js.map +1 -0
  36. package/dist/pds-icons/pds-icon.entry.esm.js.map +1 -1
  37. package/dist/pds-icons/pds-icons.esm.js +1 -1
  38. package/dist/pds-icons.json +117 -1
  39. package/dist/pds-icons.symbols.svg +11 -1
  40. package/dist/scripts/figma_icons/finalize-export.js +1 -1
  41. package/dist/scripts/figma_icons/finalize-export.js.map +1 -1
  42. package/dist/scripts/optimize-svgs.js +1 -1
  43. package/dist/scripts/optimize-svgs.js.map +1 -1
  44. package/dist/svg/activity.svg +1 -0
  45. package/dist/svg/brackets.svg +1 -0
  46. package/dist/svg/facebook-messenger.svg +1 -0
  47. package/dist/svg/git-pull-request.svg +1 -0
  48. package/dist/svg/layout-alt-03.svg +1 -0
  49. package/dist/svg/logo-openai.svg +1 -0
  50. package/dist/svg/percent-02.svg +1 -0
  51. package/dist/svg/split.svg +1 -0
  52. package/dist/svg/zoom-in.svg +1 -0
  53. package/dist/svg/zoom-out.svg +1 -0
  54. package/dist/types/components/pds-icon/pds-icon.d.ts +12 -3
  55. package/dist/types/components/pds-icon/utils.d.ts +17 -0
  56. package/dist/types/components.d.ts +12 -4
  57. package/icons/index.d.ts +11 -1
  58. package/icons/index.js +11 -1
  59. package/icons/index.mjs +11 -1
  60. package/icons/package.json +1 -1
  61. package/package.json +5 -1
  62. package/readme.md +107 -2
  63. package/dist/cjs/index-CWsTgiaV.js.map +0 -1
  64. package/dist/cjs/index-Dww19Xh5.js.map +0 -1
  65. package/dist/esm/index-Bp0--We9.js.map +0 -1
  66. package/dist/esm/index-DQ7l5XCP.js.map +0 -1
  67. package/dist/pds-icons/p-4c7a7083.entry.js +0 -2
  68. package/dist/pds-icons/p-4c7a7083.entry.js.map +0 -1
  69. package/dist/pds-icons/p-BawFQd8z.js +0 -2
  70. package/dist/pds-icons/p-BawFQd8z.js.map +0 -1
  71. package/dist/pds-icons/p-DQ7l5XCP.js +0 -3
  72. package/dist/pds-icons/p-DQ7l5XCP.js.map +0 -1
@@ -102,6 +102,19 @@ const getUrl = (pdsIcon) => {
102
102
  }
103
103
  return null;
104
104
  };
105
+ /**
106
+ * Returns `true` if the document or host element
107
+ * has a `dir` set to `rtl`. The host value will always
108
+ * take priority over the root document value.
109
+ */
110
+ const isRTL = (hostEl) => {
111
+ if (hostEl) {
112
+ if (hostEl.dir !== '') {
113
+ return hostEl.dir.toLowerCase() === 'rtl';
114
+ }
115
+ }
116
+ return (document === null || document === void 0 ? void 0 : document.dir.toLowerCase()) === 'rtl';
117
+ };
105
118
  const isSrc = (str) => str.length > 0 && /(\/|\.)/.test(str);
106
119
  const isStr = (val) => typeof val === 'string'; // eslint-disable-line @typescript-eslint/no-explicit-any
107
120
  const toLower = (val) => val.toLowerCase();
@@ -128,6 +141,78 @@ const inheritAttributes = (el, attributes = []) => {
128
141
  });
129
142
  return attributeObject;
130
143
  };
144
+ /**
145
+ * Determines if an icon should be flipped when RTL is enabled
146
+ * @param iconName - The name of the icon to check
147
+ * @param hostEl - Optional host element to check for RTL direction
148
+ * @returns {boolean} - True if the icon should be flipped in RTL mode, false otherwise
149
+ */
150
+ const shouldRtlFlipIcon = (iconName, hostEl) => {
151
+ // First check if we're in RTL mode
152
+ const rtlEnabled = isRTL(hostEl);
153
+ // Only flip if we're in RTL mode and the icon is in the flip list
154
+ return rtlEnabled && ICONS_TO_FLIP.includes(iconName);
155
+ };
156
+ /**
157
+ * Array of available icon names
158
+ */
159
+ const ICONS_TO_FLIP = [
160
+ 'align-horizontal-bottom',
161
+ 'align-horizontal-center',
162
+ 'align-horizontal-top',
163
+ 'align-left',
164
+ 'align-right',
165
+ 'align-vertical-left',
166
+ 'align-vertical-right',
167
+ 'arrow-corner',
168
+ 'arrow-left',
169
+ 'arrow-right',
170
+ 'calendar-schedule',
171
+ 'caret-left',
172
+ 'caret-right',
173
+ 'cart',
174
+ 'cart-add',
175
+ 'comment',
176
+ 'comment-no',
177
+ 'conversation',
178
+ 'copy',
179
+ 'copy-07',
180
+ 'delete-key',
181
+ 'delete-x',
182
+ 'downsell',
183
+ 'drawer-collapse',
184
+ 'drawer-expand',
185
+ 'duplicate',
186
+ 'feedback',
187
+ 'file-lock',
188
+ 'file-search',
189
+ 'form-field',
190
+ 'form-filled',
191
+ 'left-small',
192
+ 'launch',
193
+ 'list-bullet',
194
+ 'list-numbers',
195
+ 'margin-left',
196
+ 'margin-right',
197
+ 'move-left',
198
+ 'move-right',
199
+ 'newsletter-2',
200
+ 'one-off-session',
201
+ 'quote',
202
+ 'redo',
203
+ 'reset-password',
204
+ 'right-small',
205
+ 'send-message',
206
+ 'share',
207
+ 'super-admin',
208
+ 'tablet-landscape',
209
+ 'undo',
210
+ 'user-star',
211
+ 'user-star-filled',
212
+ 'users',
213
+ 'users-filled',
214
+ 'users-tone'
215
+ ];
131
216
 
132
217
  const validateContent = (svgContent) => {
133
218
  const div = document.createElement('div');
@@ -216,18 +301,20 @@ const getSvgContent = (url, sanitize = false) => {
216
301
  return req;
217
302
  };
218
303
 
219
- const pdsIconCss = ":host{--dimension-icon-height:16px;--dimension-icon-width:16px;--color-icon-fill:currentColor;contain:strict;display:inline-block;fill:var(--color-icon-fill);flex-shrink:0;height:var(--dimension-icon-height);width:var(--dimension-icon-width)}:host .pdsicon{fill:var(--color-icon-fill)}.pds-icon-fill-none{fill:none}.icon-inner,.pds-icon,svg{display:block;height:100%;width:100%}";
304
+ const pdsIconCss = ":host{--dimension-icon-height:16px;--dimension-icon-width:16px;--color-icon-fill:currentColor;contain:strict;display:inline-block;fill:var(--color-icon-fill);flex-shrink:0;height:var(--dimension-icon-height);width:var(--dimension-icon-width)}:host .pdsicon{fill:var(--color-icon-fill)}.pds-icon-fill-none{fill:none}.icon-inner,.pds-icon,svg{display:block;height:100%;width:100%}:host(.flip-rtl):host-context([dir=rtl]) .icon-inner{transform:scaleX(-1)}:host(.flip-rtl:dir(rtl)) .icon-inner{transform:scaleX(-1)}:host(.flip-rtl:dir(ltr)) .icon-inner{transform:scaleX(1)}";
220
305
 
221
306
  const PdsIcon$1 = /*@__PURE__*/ proxyCustomElement(class PdsIcon extends HTMLElement {
222
307
  constructor() {
223
308
  super();
224
309
  this.__registerHost();
225
310
  this.__attachShadow();
311
+ this.didLoadIcon = false;
312
+ this.iconName = null;
226
313
  this.inheritedAttributes = {}; // eslint-disable-line @typescript-eslint/no-explicit-any
227
314
  this.isVisible = false;
228
315
  /**
229
316
  * The size of the icon. This can be
230
- * 'small', 'regular', 'medium', large, or a
317
+ * 'small', 'regular', 'medium', 'large', or a
231
318
  * custom value (40px, 1rem, etc)
232
319
  *
233
320
  */
@@ -254,6 +341,9 @@ const PdsIcon$1 = /*@__PURE__*/ proxyCustomElement(class PdsIcon extends HTMLEle
254
341
  }
255
342
  componentDidLoad() {
256
343
  this.setCSSVariables();
344
+ if (!this.didLoadIcon) {
345
+ this.loadIcon();
346
+ }
257
347
  }
258
348
  componentWillLoad() {
259
349
  this.inheritedAttributes = inheritAttributes(this.el, ['aria-label']);
@@ -289,16 +379,21 @@ const PdsIcon$1 = /*@__PURE__*/ proxyCustomElement(class PdsIcon extends HTMLEle
289
379
  else {
290
380
  getSvgContent(url).then(() => (this.svgContent = pdsIconContent.get(url)));
291
381
  }
382
+ this.didLoadIcon = true;
292
383
  }
293
384
  }
294
- const label = getName(this.name, this.icon);
295
- if (label) {
296
- this.ariaLabel = label.replace(/\-/g, ' ');
385
+ this.iconName = getName(this.name, this.icon);
386
+ if (this.iconName) {
387
+ this.ariaLabel = this.iconName.replace(/\-/g, ' ');
297
388
  }
298
389
  }
299
390
  render() {
300
- const { ariaLabel, inheritedAttributes } = this;
301
- return (h(Host, Object.assign({ key: '4bbc232e2530d43e8b5afefb754486d94ea6538b', "aria-label": ariaLabel !== undefined && !this.hasAriaHidden() ? ariaLabel : null, alt: "", role: "img", class: Object.assign({}, createColorClasses(this.color)) }, inheritedAttributes), Build.isBrowser && this.svgContent ? (h("div", { class: "icon-inner", innerHTML: this.svgContent })) : (h("div", { class: "icon-inner" }))));
391
+ const { ariaLabel, flipRtl, iconName, inheritedAttributes } = this;
392
+ const shouldIconAutoFlip = iconName
393
+ ? shouldRtlFlipIcon(iconName, this.el) && flipRtl !== false
394
+ : false;
395
+ const shouldFlip = flipRtl || shouldIconAutoFlip;
396
+ return (h(Host, Object.assign({ key: 'bc8e46daa75df27a8039e0e767bdb43164ad7d4c', "aria-label": ariaLabel !== undefined && !this.hasAriaHidden() ? ariaLabel : null, alt: "", role: "img", class: Object.assign(Object.assign({}, createColorClasses(this.color)), { 'flip-rtl': shouldFlip, 'icon-rtl': shouldFlip && isRTL(this.el) }) }, inheritedAttributes), Build.isBrowser && this.svgContent ? (h("div", { class: "icon-inner", innerHTML: this.svgContent })) : (h("div", { class: "icon-inner" }))));
302
397
  }
303
398
  /*****
304
399
  * Private Methods
@@ -332,6 +427,7 @@ const PdsIcon$1 = /*@__PURE__*/ proxyCustomElement(class PdsIcon extends HTMLEle
332
427
  static get style() { return pdsIconCss; }
333
428
  }, [1, "pds-icon", {
334
429
  "color": [1],
430
+ "flipRtl": [4, "flip-rtl"],
335
431
  "icon": [8],
336
432
  "name": [513],
337
433
  "size": [513],
@@ -1 +1 @@
1
- {"file":"pds-icon.js","mappings":"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","names":["PdsIcon","__stencil_proxyCustomElement"],"sources":["src/components/pds-icon/assetPath.ts","src/components/pds-icon/utils.ts","src/components/pds-icon/validate.ts","src/components/pds-icon/request.ts","src/components/pds-icon/pds-icon.scss?tag=pds-icon&encapsulation=shadow","src/components/pds-icon/pds-icon.tsx"],"sourcesContent":["import { Build } from '@stencil/core';\n\nlet missingAssetPathWarning = false;\n\ndeclare global {\n interface Window {\n __PINE_ASSET_PATH__?: string\n }\n}\n\n/**\n *\n * Reads the component asset path config from meta tag or a global variable.\n * This is a temporary workaround until these issues have been addressed:\n *\n * https://github.com/ionic-team/stencil/issues/2826/\n * https://github.com/ionic-team/stencil/issues/3470\n * https://github.com/ionic-team/stencil-ds-output-targets/issues/186\n */\nexport const getAssetPath = (path: string) => {\n const metaPineAssetPath = document.head.querySelector<HTMLMetaElement>('meta[data-pine-asset-path]')?.dataset.pineAssetPath;\n\n // Get the asset path from the window object if available\n const windowAssetPath = window.__PINE_ASSET_PATH__;\n\n // Set the CDN Asset path using the latest version\n const cdnAssetPath = 'https://cdn.jsdelivr.net/npm/@pine-ds/icons/dist/';\n\n const assetBasePath = Build.isTesting ? '/dist/pds-icons' : metaPineAssetPath || windowAssetPath || cdnAssetPath || '/'\n\n // Display a warning if the assets are fetched from the CDN.\n if ( assetBasePath.startsWith('https://cdn.jsdelivr.net/npm/') && !missingAssetPathWarning ) {\n missingAssetPathWarning = true;\n console.warn(`\n Fetching Pine assets from jsDelivr CDN.\\n\\n It's recommended that you bundle Pine Assets with your application and set the path accordingly.\\n\\nFor more information, read the documentation: \\nhttps://pine-design-system.netlify.app/?path=/docs/resources-assets--docs\n `)\n }\n\n let assetPath = path;\n\n if ( path.startsWith ('./') ) {\n assetPath = path.substring(2);\n }\n\n if ( !assetBasePath.endsWith('/') ) {\n assetPath = '/' + assetPath;\n }\n\n return assetBasePath + assetPath;\n}\n\n\nexport {};\n","import { getAssetPath } from './assetPath';\n\nimport { PdsIcon } from './pds-icon';\n\nlet CACHED_MAP: Map<string, string>;\n\nexport const addIcons = (icons: { [name: string]: string; }) => {\n const map = getIconMap();\n Object.keys(icons).forEach(name => map.set(name, icons[name]));\n}\n\nexport const getIconMap = (): Map<string, string> => {\n if (typeof window === 'undefined') {\n return new Map();\n } else {\n if (!CACHED_MAP) {\n const win = window as any; // eslint-disable-line @typescript-eslint/no-explicit-any\n win.PdsIcons = win.PdsIcons || {};\n CACHED_MAP = win.PdsIcons.map = win.PdsIcons.map || new Map();\n }\n\n return CACHED_MAP;\n }\n}\n\nexport const getName = (\n iconName: string | undefined,\n icon: string | undefined\n ) => {\n\n if(!iconName && icon && !isSrc(icon)) {\n iconName = icon;\n }\n\n if (isStr(iconName)) {\n iconName = toLower(iconName);\n }\n\n if (!isStr(iconName) || iconName.trim() === '') {\n return null;\n }\n\n const invalidChars = iconName.replace(/[a-z]|-|\\d/gi,'');\n if (invalidChars != '') { return null; }\n\n return iconName;\n}\n\nconst getNamedUrl = (iconName: string) => {\n const url = getIconMap().get(iconName);\n if (url) {\n return url;\n }\n\n return getAssetPath(`svg/${iconName}.svg`);\n};\n\nexport const getSrc = (src: string | undefined) => {\n if (isStr(src)) {\n src = src.trim();\n\n if (isSrc(src)) {\n return src;\n }\n }\n\n return null;\n}\n\nexport const getUrl = (pdsIcon: PdsIcon) => {\n let url = getSrc(pdsIcon.src);\n if (url) {\n return url;\n }\n\n url = getName(pdsIcon.name, pdsIcon.icon);\n if (url) {\n return getNamedUrl(url);\n }\n\n if (pdsIcon.icon) {\n url = getSrc(pdsIcon.icon);\n\n if(url) {\n return url;\n }\n }\n\n return null;\n};\n\n\nexport const isSrc = (str: string) => str.length > 0 && /(\\/|\\.)/.test(str);\nexport const isStr = (val: any): val is string => typeof val === 'string'; // eslint-disable-line @typescript-eslint/no-explicit-any\nexport const toLower = (val: string) => val.toLowerCase();\n\n/**\n * Elements inside of web components sometimes need to inherit global attributes\n * set on the host. For example, the inner input in `pds-input` should inherit\n * the `title` attribute that developers set directly on `pds-input`. This\n * helper function should be called in componentWillLoad and assigned to a variable\n * that is later used in the render function.\n *\n * This does not need to be reactive as changing attributes on the host element\n * does not trigger a re-render.\n */\n export const inheritAttributes = (el: HTMLElement, attributes: string[] = []) => {\n const attributeObject: { [k: string]: any } = {}; // eslint-disable-line @typescript-eslint/no-explicit-any\n\n attributes.forEach(attr => {\n if (el.hasAttribute(attr)) {\n const value = el.getAttribute(attr);\n if (value !== null) {\n attributeObject[attr] = el.getAttribute(attr);\n }\n el.removeAttribute(attr);\n }\n });\n\n return attributeObject;\n}\n","import { isStr } from './utils';\n\nexport const validateContent = (svgContent: string) => {\n const div = document.createElement('div');\n div.innerHTML = svgContent;\n\n // setup this way to ensure it works on our buddy IE\n for (let i = div.childNodes.length - 1; i >= 0; i--) {\n if (div.childNodes[i].nodeName.toLowerCase() !== 'svg') {\n div.removeChild(div.childNodes[i]);\n }\n }\n\n // must only have 1 root element\n const svgElm = div.firstElementChild;\n if (svgElm && svgElm.nodeName.toLowerCase() === 'svg') {\n const svgClass = svgElm.getAttribute('class') || '';\n svgElm.setAttribute('class', (svgClass + ' s-pds-icon').trim());\n\n // root element must be an svg\n // lets double check we've got valid elements\n // do not allow scripts\n if (isValid(svgElm as HTMLElement)) {\n return div.innerHTML;\n }\n }\n return '';\n};\n\nexport const isValid = (elm: HTMLElement) => {\n if (elm.nodeType === 1) {\n if (elm.nodeName.toLowerCase() === 'script') {\n return false;\n }\n\n for (let i = 0; i < elm.attributes.length; i++) {\n const name = elm.attributes[i].name;\n if (isStr(name) && name.toLowerCase().indexOf('on') === 0) {\n return false;\n }\n }\n\n for (let i = 0; i < elm.childNodes.length; i++) {\n if (!isValid(elm.childNodes[i] as HTMLElement)) {\n return false;\n }\n }\n }\n return true;\n};\n\nexport const isSvgDataUrl = (url: string) => url.startsWith('data:image/svg+xml');\nexport const isEncodedDataUrl = (url: string) => url.indexOf(';utf8,') !== -1;\n","import { isEncodedDataUrl, isSvgDataUrl, validateContent } from './validate';\n\nexport const pdsIconContent = new Map<string, string>();\nconst requests = new Map<string, Promise<any>>(); // eslint-disable-line @typescript-eslint/no-explicit-any\n\nlet parser: DOMParser;\n\nexport const getSvgContent = (url: string, sanitize = false) => {\n let req = requests.get(url);\n\n if(!req) {\n if (typeof fetch != 'undefined' && typeof document !== 'undefined') {\n if (isSvgDataUrl(url) && isEncodedDataUrl(url)) {\n if (!parser) {\n parser = new DOMParser();\n }\n\n const doc = parser.parseFromString(url, 'text/html');\n const svg = doc.querySelector('svg');\n\n if (svg) {\n pdsIconContent.set(url, svg.outerHTML);\n }\n\n return Promise.resolve();\n } else {\n // we don't have a request\n req = fetch(url).then((rsp) => {\n if (rsp.ok) {\n return rsp.text().then((svgContent) => {\n if (svgContent && sanitize !== false) {\n svgContent = validateContent(svgContent);\n }\n pdsIconContent.set(url, svgContent || '');\n });\n }\n pdsIconContent.set(url, '');\n });\n\n requests.set(url, req);\n }\n } else {\n pdsIconContent.set(url, '');\n return Promise.resolve();\n }\n }\n\n return req;\n}\n",":host {\n --dimension-icon-height: 16px;\n --dimension-icon-width: 16px;\n --color-icon-fill: currentColor;\n\n contain: strict;\n display: inline-block;\n fill: var(--color-icon-fill);\n flex-shrink: 0;\n height: var(--dimension-icon-height);\n width: var(--dimension-icon-width);\n\n .pdsicon {\n fill: var(--color-icon-fill);\n }\n}\n\n.pds-icon-fill-none {\n fill: none;\n}\n\n.icon-inner,\n.pds-icon,\nsvg {\n display: block;\n height: 100%;\n width: 100%;\n}\n","import { Build, Component, Element, Host, Prop, State, Watch, h } from '@stencil/core';\nimport { getSvgContent, pdsIconContent } from './request';\nimport { getName, getUrl, inheritAttributes } from './utils';\n\n@Component({\n tag: 'pds-icon',\n assetsDirs: ['svg'],\n styleUrl: 'pds-icon.scss',\n shadow: true,\n})\nexport class PdsIcon {\n private io?: IntersectionObserver;\n private inheritedAttributes: { [k: string]: any } = {}; // eslint-disable-line @typescript-eslint/no-explicit-any\n\n @Element() el!: HTMLPdsIconElement;\n\n @State() private ariaLabel?: string;\n @State() private isVisible = false;\n @State() private svgContent?: string;\n\n /**\n *\n * The color of the icon\n *\n */\n @Prop() color?: string;\n\n /**\n * This a combination of both `name` and `src`. If a `src` url is detected\n * it will set the `src` property. Otherwise it assumes it's a built-in named\n * SVG and set the `name` property.\n */\n @Prop() icon?: any;\n\n /**\n * The name of the icon to use from\n * the built-in set.\n */\n @Prop({ reflect: true }) name?: string;\n\n /**\n * The size of the icon. This can be\n * 'small', 'regular', 'medium', large, or a\n * custom value (40px, 1rem, etc)\n *\n */\n @Prop({ reflect: true }) size?:\n | 'small' // 12px\n | 'regular' // 16px\n | 'medium' // 20px\n | 'large' // 24px\n | 'auto'\n | string = 'regular'\n\n /**\n *\n * Specifies the exact `src` of an SVG file to use.\n */\n @Prop() src?: string;\n\n private iconSize() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const sizes: { [key: string]: any } = {\n small: '12px',\n regular: '16px',\n medium: '20px',\n large: '24px',\n }\n\n if (sizes[this.size]) {\n return sizes[this.size];\n } else {\n return this.size;\n }\n }\n\n componentDidLoad() {\n this.setCSSVariables();\n }\n\n componentWillLoad() {\n this.inheritedAttributes = inheritAttributes(this.el, ['aria-label']);\n this.setCSSVariables();\n }\n\n setCSSVariables() {\n this.el.style.setProperty(`--dimension-icon-height`, this.iconSize());\n this.el.style.setProperty(`--dimension-icon-width`, this.iconSize());\n this.el.style.setProperty(`--color-icon-fill`, typeof this.color !== 'undefined' ? this.color : 'currentColor');\n }\n\n connectedCallback() {\n this.waitUntilVisible(this.el, '50px', () => {\n this.isVisible = true;\n this.loadIcon();\n })\n }\n\n disconnectedCallback() {\n if (this.io) {\n this.io.disconnect();\n this.io = undefined;\n }\n }\n\n @Watch('size')\n @Watch('color')\n updateStyles() {\n this.setCSSVariables();\n }\n\n @Watch('name')\n @Watch('src')\n @Watch('icon')\n loadIcon() {\n if (Build.isBrowser && this.isVisible) {\n const url = getUrl(this);\n if (url) {\n if (pdsIconContent.has(url)) {\n this.svgContent = pdsIconContent.get(url);\n } else {\n getSvgContent(url).then(() => (this.svgContent = pdsIconContent.get(url)));\n }\n }\n }\n\n const label = getName(this.name, this.icon);\n\n if (label) {\n this.ariaLabel = label.replace(/\\-/g, ' ');\n }\n }\n\n render() {\n const { ariaLabel, inheritedAttributes } = this;\n\n return (\n\n <Host\n aria-label={ariaLabel !== undefined && !this.hasAriaHidden() ? ariaLabel : null }\n alt=\"\"\n role=\"img\"\n class={{\n ...createColorClasses(this.color),\n }}\n {...inheritedAttributes}\n >\n {Build.isBrowser && this.svgContent ? (\n <div class=\"icon-inner\" innerHTML={this.svgContent}></div>\n ) : (\n <div class=\"icon-inner\"></div>\n )}\n </Host>\n )\n }\n\n /*****\n * Private Methods\n ****/\n\n private waitUntilVisible(el: HTMLElement, rootMargin: string, cb: () => void) {\n if (Build.isBrowser && typeof window !== 'undefined' && (window).IntersectionObserver) {\n const io = (this.io = new (window).IntersectionObserver(\n (data: IntersectionObserverEntry[]) => {\n if (data[0].isIntersecting) {\n io.disconnect();\n this.io = undefined;\n cb();\n }\n },\n { rootMargin },\n ));\n\n io.observe(el);\n } else {\n // browser doesn't support IntersectionObserver\n // so just fallback to always show it\n cb();\n }\n }\n\n private hasAriaHidden = () => {\n const { el } = this;\n\n return el.hasAttribute('aria-hidden') && el.getAttribute('aria-hidden') === 'true';\n }\n}\n\nconst createColorClasses = (color: string | undefined) => {\n return color\n ? {\n 'pds-color': true,\n [`pds-color-${color}`]: true,\n }\n : null;\n };\n"],"version":3}
1
+ {"file":"pds-icon.js","mappings":"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","names":["PdsIcon","__stencil_proxyCustomElement"],"sources":["src/components/pds-icon/assetPath.ts","src/components/pds-icon/utils.ts","src/components/pds-icon/validate.ts","src/components/pds-icon/request.ts","src/components/pds-icon/pds-icon.scss?tag=pds-icon&encapsulation=shadow","src/components/pds-icon/pds-icon.tsx"],"sourcesContent":["import { Build } from '@stencil/core';\n\nlet missingAssetPathWarning = false;\n\ndeclare global {\n interface Window {\n __PINE_ASSET_PATH__?: string\n }\n}\n\n/**\n *\n * Reads the component asset path config from meta tag or a global variable.\n * This is a temporary workaround until these issues have been addressed:\n *\n * https://github.com/ionic-team/stencil/issues/2826/\n * https://github.com/ionic-team/stencil/issues/3470\n * https://github.com/ionic-team/stencil-ds-output-targets/issues/186\n */\nexport const getAssetPath = (path: string) => {\n const metaPineAssetPath = document.head.querySelector<HTMLMetaElement>('meta[data-pine-asset-path]')?.dataset.pineAssetPath;\n\n // Get the asset path from the window object if available\n const windowAssetPath = window.__PINE_ASSET_PATH__;\n\n // Set the CDN Asset path using the latest version\n const cdnAssetPath = 'https://cdn.jsdelivr.net/npm/@pine-ds/icons/dist/';\n\n const assetBasePath = Build.isTesting ? '/dist/pds-icons' : metaPineAssetPath || windowAssetPath || cdnAssetPath || '/'\n\n // Display a warning if the assets are fetched from the CDN.\n if ( assetBasePath.startsWith('https://cdn.jsdelivr.net/npm/') && !missingAssetPathWarning ) {\n missingAssetPathWarning = true;\n console.warn(`\n Fetching Pine assets from jsDelivr CDN.\\n\\n It's recommended that you bundle Pine Assets with your application and set the path accordingly.\\n\\nFor more information, read the documentation: \\nhttps://pine-design-system.netlify.app/?path=/docs/resources-assets--docs\n `)\n }\n\n let assetPath = path;\n\n if ( path.startsWith ('./') ) {\n assetPath = path.substring(2);\n }\n\n if ( !assetBasePath.endsWith('/') ) {\n assetPath = '/' + assetPath;\n }\n\n return assetBasePath + assetPath;\n}\n\n\nexport {};\n","import { getAssetPath } from './assetPath';\n\nimport { PdsIcon } from './pds-icon';\n\nlet CACHED_MAP: Map<string, string>;\n\nexport const addIcons = (icons: { [name: string]: string; }) => {\n const map = getIconMap();\n Object.keys(icons).forEach(name => map.set(name, icons[name]));\n}\n\nexport const getIconMap = (): Map<string, string> => {\n if (typeof window === 'undefined') {\n return new Map();\n } else {\n if (!CACHED_MAP) {\n const win = window as any; // eslint-disable-line @typescript-eslint/no-explicit-any\n win.PdsIcons = win.PdsIcons || {};\n CACHED_MAP = win.PdsIcons.map = win.PdsIcons.map || new Map();\n }\n\n return CACHED_MAP;\n }\n}\n\nexport const getName = (\n iconName: string | undefined,\n icon: string | undefined\n ) => {\n\n if(!iconName && icon && !isSrc(icon)) {\n iconName = icon;\n }\n\n if (isStr(iconName)) {\n iconName = toLower(iconName);\n }\n\n if (!isStr(iconName) || iconName.trim() === '') {\n return null;\n }\n\n const invalidChars = iconName.replace(/[a-z]|-|\\d/gi,'');\n if (invalidChars != '') { return null; }\n\n return iconName;\n}\n\nconst getNamedUrl = (iconName: string) => {\n const url = getIconMap().get(iconName);\n if (url) {\n return url;\n }\n\n return getAssetPath(`svg/${iconName}.svg`);\n};\n\nexport const getSrc = (src: string | undefined) => {\n if (isStr(src)) {\n src = src.trim();\n\n if (isSrc(src)) {\n return src;\n }\n }\n\n return null;\n}\n\nexport const getUrl = (pdsIcon: PdsIcon) => {\n let url = getSrc(pdsIcon.src);\n if (url) {\n return url;\n }\n\n url = getName(pdsIcon.name, pdsIcon.icon);\n if (url) {\n return getNamedUrl(url);\n }\n\n if (pdsIcon.icon) {\n url = getSrc(pdsIcon.icon);\n\n if(url) {\n return url;\n }\n }\n\n return null;\n};\n\n\n/**\n * Returns `true` if the document or host element\n * has a `dir` set to `rtl`. The host value will always\n * take priority over the root document value.\n */\nexport const isRTL = (hostEl?: Pick<HTMLElement, 'dir'>) => {\n if (hostEl) {\n if (hostEl.dir !== '') {\n return hostEl.dir.toLowerCase() === 'rtl';\n }\n }\n return document?.dir.toLowerCase() === 'rtl';\n};\n\nexport const isSrc = (str: string) => str.length > 0 && /(\\/|\\.)/.test(str);\nexport const isStr = (val: any): val is string => typeof val === 'string'; // eslint-disable-line @typescript-eslint/no-explicit-any\nexport const toLower = (val: string) => val.toLowerCase();\n\n/**\n * Elements inside of web components sometimes need to inherit global attributes\n * set on the host. For example, the inner input in `pds-input` should inherit\n * the `title` attribute that developers set directly on `pds-input`. This\n * helper function should be called in componentWillLoad and assigned to a variable\n * that is later used in the render function.\n *\n * This does not need to be reactive as changing attributes on the host element\n * does not trigger a re-render.\n */\n export const inheritAttributes = (el: HTMLElement, attributes: string[] = []) => {\n const attributeObject: { [k: string]: any } = {}; // eslint-disable-line @typescript-eslint/no-explicit-any\n\n attributes.forEach(attr => {\n if (el.hasAttribute(attr)) {\n const value = el.getAttribute(attr);\n if (value !== null) {\n attributeObject[attr] = el.getAttribute(attr);\n }\n el.removeAttribute(attr);\n }\n });\n\n return attributeObject;\n}\n\n/**\n * Determines if an icon should be flipped when RTL is enabled\n * @param iconName - The name of the icon to check\n * @param hostEl - Optional host element to check for RTL direction\n * @returns {boolean} - True if the icon should be flipped in RTL mode, false otherwise\n */\nexport const shouldRtlFlipIcon = (iconName: string, hostEl?: Pick<HTMLElement, 'dir'>): boolean => {\n // First check if we're in RTL mode\n const rtlEnabled = isRTL(hostEl);\n\n // Only flip if we're in RTL mode and the icon is in the flip list\n return rtlEnabled && ICONS_TO_FLIP.includes(iconName);\n}\n\n/**\n * Array of available icon names\n */\nexport const ICONS_TO_FLIP = [\n 'align-horizontal-bottom',\n 'align-horizontal-center',\n 'align-horizontal-top',\n 'align-left',\n 'align-right',\n 'align-vertical-left',\n 'align-vertical-right',\n 'arrow-corner',\n 'arrow-left',\n 'arrow-right',\n 'calendar-schedule',\n 'caret-left',\n 'caret-right',\n 'cart',\n 'cart-add',\n 'comment',\n 'comment-no',\n 'conversation',\n 'copy',\n 'copy-07',\n 'delete-key',\n 'delete-x',\n 'downsell',\n 'drawer-collapse',\n 'drawer-expand',\n 'duplicate',\n 'feedback',\n 'file-lock',\n 'file-search',\n 'form-field',\n 'form-filled',\n 'left-small',\n 'launch',\n 'list-bullet',\n 'list-numbers',\n 'margin-left',\n 'margin-right',\n 'move-left',\n 'move-right',\n 'newsletter-2',\n 'one-off-session',\n 'quote',\n 'redo',\n 'reset-password',\n 'right-small',\n 'send-message',\n 'share',\n 'super-admin',\n 'tablet-landscape',\n 'undo',\n 'user-star',\n 'user-star-filled',\n 'users',\n 'users-filled',\n 'users-tone'\n];\n\n","import { isStr } from './utils';\n\nexport const validateContent = (svgContent: string) => {\n const div = document.createElement('div');\n div.innerHTML = svgContent;\n\n // setup this way to ensure it works on our buddy IE\n for (let i = div.childNodes.length - 1; i >= 0; i--) {\n if (div.childNodes[i].nodeName.toLowerCase() !== 'svg') {\n div.removeChild(div.childNodes[i]);\n }\n }\n\n // must only have 1 root element\n const svgElm = div.firstElementChild;\n if (svgElm && svgElm.nodeName.toLowerCase() === 'svg') {\n const svgClass = svgElm.getAttribute('class') || '';\n svgElm.setAttribute('class', (svgClass + ' s-pds-icon').trim());\n\n // root element must be an svg\n // lets double check we've got valid elements\n // do not allow scripts\n if (isValid(svgElm as HTMLElement)) {\n return div.innerHTML;\n }\n }\n return '';\n};\n\nexport const isValid = (elm: HTMLElement) => {\n if (elm.nodeType === 1) {\n if (elm.nodeName.toLowerCase() === 'script') {\n return false;\n }\n\n for (let i = 0; i < elm.attributes.length; i++) {\n const name = elm.attributes[i].name;\n if (isStr(name) && name.toLowerCase().indexOf('on') === 0) {\n return false;\n }\n }\n\n for (let i = 0; i < elm.childNodes.length; i++) {\n if (!isValid(elm.childNodes[i] as HTMLElement)) {\n return false;\n }\n }\n }\n return true;\n};\n\nexport const isSvgDataUrl = (url: string) => url.startsWith('data:image/svg+xml');\nexport const isEncodedDataUrl = (url: string) => url.indexOf(';utf8,') !== -1;\n","import { isEncodedDataUrl, isSvgDataUrl, validateContent } from './validate';\n\nexport const pdsIconContent = new Map<string, string>();\nconst requests = new Map<string, Promise<any>>(); // eslint-disable-line @typescript-eslint/no-explicit-any\n\nlet parser: DOMParser;\n\nexport const getSvgContent = (url: string, sanitize = false) => {\n let req = requests.get(url);\n\n if(!req) {\n if (typeof fetch != 'undefined' && typeof document !== 'undefined') {\n if (isSvgDataUrl(url) && isEncodedDataUrl(url)) {\n if (!parser) {\n parser = new DOMParser();\n }\n\n const doc = parser.parseFromString(url, 'text/html');\n const svg = doc.querySelector('svg');\n\n if (svg) {\n pdsIconContent.set(url, svg.outerHTML);\n }\n\n return Promise.resolve();\n } else {\n // we don't have a request\n req = fetch(url).then((rsp) => {\n if (rsp.ok) {\n return rsp.text().then((svgContent) => {\n if (svgContent && sanitize !== false) {\n svgContent = validateContent(svgContent);\n }\n pdsIconContent.set(url, svgContent || '');\n });\n }\n pdsIconContent.set(url, '');\n });\n\n requests.set(url, req);\n }\n } else {\n pdsIconContent.set(url, '');\n return Promise.resolve();\n }\n }\n\n return req;\n}\n",":host {\n --dimension-icon-height: 16px;\n --dimension-icon-width: 16px;\n --color-icon-fill: currentColor;\n\n contain: strict;\n display: inline-block;\n fill: var(--color-icon-fill);\n flex-shrink: 0;\n height: var(--dimension-icon-height);\n width: var(--dimension-icon-width);\n\n .pdsicon {\n fill: var(--color-icon-fill);\n }\n}\n\n.pds-icon-fill-none {\n fill: none;\n}\n\n.icon-inner,\n.pds-icon,\nsvg {\n display: block;\n height: 100%;\n width: 100%;\n}\n\n/* :host-context is supported in chromium; :dir is supported in safari & firefox */\n:host(.flip-rtl):host-context([dir='rtl']) .icon-inner {\n transform: scaleX(-1);\n}\n\n:host(.flip-rtl:dir(rtl)) .icon-inner {\n transform: scaleX(-1);\n}\n\n/**\n * This is needed for WebKit otherwise the fallback\n * will always cause the icon to be flipped if the document\n * loads in RTL.\n */\n:host(.flip-rtl:dir(ltr)) .icon-inner {\n transform: scaleX(1);\n}\n\n","import { Build, Component, Element, Host, Prop, State, Watch, h } from '@stencil/core';\nimport { getSvgContent, pdsIconContent } from './request';\nimport { getName, getUrl, inheritAttributes, isRTL, shouldRtlFlipIcon } from './utils';\n\n@Component({\n tag: 'pds-icon',\n assetsDirs: ['svg'],\n styleUrl: 'pds-icon.scss',\n shadow: true,\n})\nexport class PdsIcon {\n private didLoadIcon = false;\n private iconName: string | null = null;\n private io?: IntersectionObserver;\n private inheritedAttributes: { [k: string]: any } = {}; // eslint-disable-line @typescript-eslint/no-explicit-any\n\n @Element() el!: HTMLPdsIconElement;\n\n @State() private ariaLabel?: string;\n @State() private isVisible = false;\n @State() private svgContent?: string;\n\n /**\n *\n * The color of the icon\n *\n */\n @Prop() color?: string;\n\n /**\n * Determines if the icon should be flipped when the `dir` is right-to-left (`\"rtl\"`).\n * This is automatically enabled for icons that are in the `ICONS_TO_FLIP` list and\n * when the `dir` is `\"rtl\"`. If `flipRtl` is set to `false`, the icon will not be flipped\n * even if the `dir` is `\"rtl\"`.\n */\n @Prop() flipRtl?: boolean;\n\n /**\n * This is a combination of both `name` and `src`. If a `src` URL is detected,\n * it will set the `src` property. Otherwise it assumes it's a built-in named\n * SVG and sets the `name` property.\n */\n @Prop() icon?: any;\n\n /**\n * The name of the icon to use from\n * the built-in set.\n */\n @Prop({ reflect: true }) name?: string;\n\n /**\n * The size of the icon. This can be\n * 'small', 'regular', 'medium', 'large', or a\n * custom value (40px, 1rem, etc)\n *\n */\n @Prop({ reflect: true }) size?:\n | 'small' // 12px\n | 'regular' // 16px\n | 'medium' // 20px\n | 'large' // 24px\n | 'auto'\n | string = 'regular'\n\n /**\n *\n * Specifies the exact `src` of an SVG file to use.\n */\n @Prop() src?: string;\n\n private iconSize() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const sizes: { [key: string]: any } = {\n small: '12px',\n regular: '16px',\n medium: '20px',\n large: '24px',\n }\n\n if (sizes[this.size]) {\n return sizes[this.size];\n } else {\n return this.size;\n }\n }\n\n componentDidLoad() {\n this.setCSSVariables();\n\n if (!this.didLoadIcon) {\n this.loadIcon();\n }\n }\n\n componentWillLoad() {\n this.inheritedAttributes = inheritAttributes(this.el, ['aria-label']);\n this.setCSSVariables();\n }\n\n setCSSVariables() {\n this.el.style.setProperty(`--dimension-icon-height`, this.iconSize());\n this.el.style.setProperty(`--dimension-icon-width`, this.iconSize());\n this.el.style.setProperty(`--color-icon-fill`, typeof this.color !== 'undefined' ? this.color : 'currentColor');\n }\n\n connectedCallback() {\n this.waitUntilVisible(this.el, '50px', () => {\n this.isVisible = true;\n this.loadIcon();\n })\n }\n\n disconnectedCallback() {\n if (this.io) {\n this.io.disconnect();\n this.io = undefined;\n }\n }\n\n @Watch('size')\n @Watch('color')\n updateStyles() {\n this.setCSSVariables();\n }\n\n @Watch('name')\n @Watch('src')\n @Watch('icon')\n loadIcon() {\n if (Build.isBrowser && this.isVisible) {\n const url = getUrl(this);\n if (url) {\n if (pdsIconContent.has(url)) {\n this.svgContent = pdsIconContent.get(url);\n } else {\n getSvgContent(url).then(() => (this.svgContent = pdsIconContent.get(url)));\n }\n this.didLoadIcon = true;\n }\n }\n\n this.iconName = getName(this.name, this.icon);\n\n if (this.iconName) {\n this.ariaLabel = this.iconName.replace(/\\-/g, ' ');\n }\n }\n\n render() {\n const { ariaLabel, flipRtl, iconName,inheritedAttributes } = this;\n const shouldIconAutoFlip = iconName\n ? shouldRtlFlipIcon(iconName, this.el) && flipRtl !== false\n : false;\n const shouldFlip = flipRtl || shouldIconAutoFlip;\n\n return (\n\n <Host\n aria-label={ariaLabel !== undefined && !this.hasAriaHidden() ? ariaLabel : null }\n alt=\"\"\n role=\"img\"\n class={{\n ...createColorClasses(this.color),\n 'flip-rtl': shouldFlip,\n 'icon-rtl': shouldFlip && isRTL(this.el)\n }}\n {...inheritedAttributes}\n >\n {Build.isBrowser && this.svgContent ? (\n <div class=\"icon-inner\" innerHTML={this.svgContent}></div>\n ) : (\n <div class=\"icon-inner\"></div>\n )}\n </Host>\n )\n }\n\n /*****\n * Private Methods\n ****/\n\n private waitUntilVisible(el: HTMLElement, rootMargin: string, cb: () => void) {\n if (Build.isBrowser && typeof window !== 'undefined' && (window).IntersectionObserver) {\n const io = (this.io = new (window).IntersectionObserver(\n (data: IntersectionObserverEntry[]) => {\n if (data[0].isIntersecting) {\n io.disconnect();\n this.io = undefined;\n cb();\n }\n },\n { rootMargin },\n ));\n\n io.observe(el);\n } else {\n // browser doesn't support IntersectionObserver\n // so just fallback to always show it\n cb();\n }\n }\n\n private hasAriaHidden = () => {\n const { el } = this;\n\n return el.hasAttribute('aria-hidden') && el.getAttribute('aria-hidden') === 'true';\n }\n}\n\nconst createColorClasses = (color: string | undefined) => {\n return color\n ? {\n 'pds-color': true,\n [`pds-color-${color}`]: true,\n }\n : null;\n };\n"],"version":3}