@pine-ds/icons 9.6.1 → 9.7.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.
@@ -1 +1 @@
1
- {"version":3,"file":"pds-icon.entry.esm.js","sources":["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 { 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 try {\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 } else {\n pdsIconContent.set(url, '');\n }\n } catch (error) {\n pdsIconContent.set(url, '');\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 try {\n svgContent = validateContent(svgContent);\n } catch (validationError) {\n svgContent = '';\n }\n }\n pdsIconContent.set(url, svgContent || '');\n });\n } else {\n // Handle HTTP errors\n throw new Error(`Failed to load SVG: ${rsp.status} ${rsp.statusText}`);\n }\n }).catch((error) => {\n // Handle all fetch errors gracefully\n console.warn('Failed to load SVG:', url, error);\n pdsIconContent.set(url, '');\n // Don't re-throw to prevent unhandled promise rejections\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 // Fallback: Ensure icon loads even if IntersectionObserver doesn't fire\n setTimeout(() => {\n if (!this.svgContent && !this.isVisible) {\n this.isVisible = true;\n this.loadIcon();\n }\n }, 100);\n\n // Additional fallback for client-side navigation (React Router, etc.)\n // React's useLayoutEffect and rendering cycles can delay visibility detection\n setTimeout(() => {\n if (!this.svgContent && !this.isVisible) {\n this.isVisible = true;\n this.loadIcon();\n }\n }, 500);\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 // Handle re-connection during client-side navigation\n if (!this.isVisible && !this.svgContent) {\n this.waitUntilVisible(this.el, '50px', () => {\n this.isVisible = true;\n this.loadIcon();\n });\n }\n\n // Immediate load attempt if already visible (e.g., during React navigation)\n if (this.isElementInViewport(this.el)) {\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 // Reset load state when URL changes\n this.didLoadIcon = false;\n\n // Clear existing content to prevent stale content when switching icons\n this.svgContent = undefined;\n\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 // Fix: Ensure promise callback triggers re-render and handle errors\n getSvgContent(url)\n .then(() => {\n // Force re-render by setting state in next tick\n setTimeout(() => {\n this.svgContent = pdsIconContent.get(url);\n }, 0);\n })\n .catch(() => {\n // Handle fetch errors gracefully\n this.svgContent = '';\n });\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\n // Safety timeout for client-side navigation scenarios\n // Sometimes IntersectionObserver doesn't fire during React navigation\n setTimeout(() => {\n if (this.io && !this.isVisible) {\n // Check if element is actually visible in viewport\n if (this.isElementInViewport(el)) {\n this.io.disconnect();\n this.io = undefined;\n cb();\n }\n }\n }, 1000);\n } else {\n // browser doesn't support IntersectionObserver\n // so just fallback to always show it\n cb();\n }\n }\n\n private isElementInViewport(el: HTMLElement): boolean {\n if (!el || !el.isConnected) return false;\n\n const rect = el.getBoundingClientRect();\n const windowHeight = window.innerHeight || document.documentElement.clientHeight;\n const windowWidth = window.innerWidth || document.documentElement.clientWidth;\n\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= windowHeight &&\n rect.right <= windowWidth\n ) || (\n // Also consider partially visible elements\n rect.top < windowHeight &&\n rect.bottom > 0 &&\n rect.left < windowWidth &&\n rect.right > 0\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 /**\n * Debug method to help diagnose loading issues\n * Call from browser console: document.querySelector('pds-icon').debugIconState()\n */\n debugIconState() {\n const url = getUrl(this);\n const rect = this.el.getBoundingClientRect();\n\n console.log('PdsIcon Debug State:', {\n name: this.name,\n src: this.src,\n icon: this.icon,\n iconName: this.iconName,\n url,\n isVisible: this.isVisible,\n didLoadIcon: this.didLoadIcon,\n hasSvgContent: !!this.svgContent,\n svgContentLength: this.svgContent?.length || 0,\n isInCache: url ? pdsIconContent.has(url) : false,\n cachedContent: url ? pdsIconContent.get(url) : null,\n element: this.el,\n // Client-side navigation specific debug info\n isConnected: this.el.isConnected,\n isInViewport: this.isElementInViewport(this.el),\n hasIntersectionObserver: !!this.io,\n boundingClientRect: rect,\n windowDimensions: {\n width: window.innerWidth || document.documentElement.clientWidth,\n height: window.innerHeight || document.documentElement.clientHeight\n }\n });\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"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pds-icon.entry.esm.js","sources":["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 { 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 try {\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 } else {\n pdsIconContent.set(url, '');\n }\n } catch (error) {\n pdsIconContent.set(url, '');\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 try {\n svgContent = validateContent(svgContent);\n } catch (validationError) {\n svgContent = '';\n }\n }\n pdsIconContent.set(url, svgContent || '');\n });\n } else {\n // Handle HTTP errors\n throw new Error(`Failed to load SVG: ${rsp.status} ${rsp.statusText}`);\n }\n }).catch((error) => {\n // Handle all fetch errors gracefully\n console.warn('Failed to load SVG:', url, error);\n pdsIconContent.set(url, '');\n // Don't re-throw to prevent unhandled promise rejections\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 // Fallback: Ensure icon loads even if IntersectionObserver doesn't fire\n setTimeout(() => {\n if (!this.svgContent && !this.isVisible) {\n this.isVisible = true;\n this.loadIcon();\n }\n }, 100);\n\n // Additional fallback for client-side navigation (React Router, etc.)\n // React's useLayoutEffect and rendering cycles can delay visibility detection\n setTimeout(() => {\n if (!this.svgContent && !this.isVisible) {\n this.isVisible = true;\n this.loadIcon();\n }\n }, 500);\n }\n\n componentWillLoad() {\n this.inheritedAttributes = inheritAttributes(this.el, ['aria-label']);\n this.setCSSVariables();\n this.setupInitialAriaLabel();\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 // Handle re-connection during client-side navigation\n if (!this.isVisible && !this.svgContent) {\n this.waitUntilVisible(this.el, '50px', () => {\n this.isVisible = true;\n this.loadIcon();\n });\n }\n\n // Immediate load attempt if already visible (e.g., during React navigation)\n if (this.isElementInViewport(this.el)) {\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 onIconPropertyChange() {\n this.loadIcon();\n // Update aria-label when icon properties change\n this.setupInitialAriaLabel();\n }\n\n loadIcon() {\n // Reset load state when URL changes\n this.didLoadIcon = false;\n\n // Clear existing content to prevent stale content when switching icons\n this.svgContent = undefined;\n\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 // Fix: Ensure promise callback triggers re-render and handle errors\n getSvgContent(url)\n .then(() => {\n // Force re-render by setting state in next tick\n setTimeout(() => {\n this.svgContent = pdsIconContent.get(url);\n }, 0);\n })\n .catch(() => {\n // Handle fetch errors gracefully\n this.svgContent = '';\n });\n }\n this.didLoadIcon = true;\n }\n }\n\n this.iconName = getName(this.name, this.icon);\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 // Use inherited aria-label if provided, otherwise fall back to auto-generated one\n const finalAriaLabel = inheritedAttributes['aria-label'] || ariaLabel;\n\n return (\n\n <Host\n aria-label={finalAriaLabel !== undefined && !this.hasAriaHidden() ? finalAriaLabel : 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 setupInitialAriaLabel() {\n // Only set aria-label during initial load if one isn't already provided\n if (!this.inheritedAttributes['aria-label']) {\n const iconName = getName(this.name, this.icon);\n if (iconName) {\n this.ariaLabel = iconName.replace(/\\-/g, ' ');\n }\n }\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\n // Safety timeout for client-side navigation scenarios\n // Sometimes IntersectionObserver doesn't fire during React navigation\n setTimeout(() => {\n if (this.io && !this.isVisible) {\n // Check if element is actually visible in viewport\n if (this.isElementInViewport(el)) {\n this.io.disconnect();\n this.io = undefined;\n cb();\n }\n }\n }, 1000);\n } else {\n // browser doesn't support IntersectionObserver\n // so just fallback to always show it\n cb();\n }\n }\n\n private isElementInViewport(el: HTMLElement): boolean {\n if (!el || !el.isConnected) return false;\n\n const rect = el.getBoundingClientRect();\n const windowHeight = window.innerHeight || document.documentElement.clientHeight;\n const windowWidth = window.innerWidth || document.documentElement.clientWidth;\n\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= windowHeight &&\n rect.right <= windowWidth\n ) || (\n // Also consider partially visible elements\n rect.top < windowHeight &&\n rect.bottom > 0 &&\n rect.left < windowWidth &&\n rect.right > 0\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 /**\n * Debug method to help diagnose loading issues\n * Call from browser console: document.querySelector('pds-icon').debugIconState()\n */\n debugIconState() {\n const url = getUrl(this);\n const rect = this.el.getBoundingClientRect();\n\n console.log('PdsIcon Debug State:', {\n name: this.name,\n src: this.src,\n icon: this.icon,\n iconName: this.iconName,\n url,\n isVisible: this.isVisible,\n didLoadIcon: this.didLoadIcon,\n hasSvgContent: !!this.svgContent,\n svgContentLength: this.svgContent?.length || 0,\n isInCache: url ? pdsIconContent.has(url) : false,\n cachedContent: url ? pdsIconContent.get(url) : null,\n element: this.el,\n // Client-side navigation specific debug info\n isConnected: this.el.isConnected,\n isInViewport: this.isElementInViewport(this.el),\n hasIntersectionObserver: !!this.io,\n boundingClientRect: rect,\n windowDimensions: {\n width: window.innerWidth || document.documentElement.clientWidth,\n height: window.innerHeight || document.documentElement.clientHeight\n }\n });\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"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{p as o,b as a}from"./p-BtVkVfWm.js";export{s as setNonce}from"./p-BtVkVfWm.js";import{g as t}from"./p-DQuL1Twl.js";var e=()=>{const a=import.meta.url;const s={};if(a!==""){s.resourcesUrl=new URL(".",a).href}return o(s)};e().then((async o=>{await t();return a([["p-23a00a5a",[[1,"pds-icon",{color:[1],flipRtl:[4,"flip-rtl"],icon:[8],name:[513],size:[513],src:[1],ariaLabel:[32],isVisible:[32],svgContent:[32]},null,{size:["updateStyles"],color:["updateStyles"],name:["loadIcon"],src:["loadIcon"],icon:["loadIcon"]}]]]],o)}));
1
+ import{p as o,b as e}from"./p-BtVkVfWm.js";export{s as setNonce}from"./p-BtVkVfWm.js";import{g as n}from"./p-DQuL1Twl.js";var r=()=>{const e=import.meta.url;const n={};if(e!==""){n.resourcesUrl=new URL(".",e).href}return o(n)};r().then((async o=>{await n();return e([["p-5ea9f963",[[1,"pds-icon",{color:[1],flipRtl:[4,"flip-rtl"],icon:[8],name:[513],size:[513],src:[1],ariaLabel:[32],isVisible:[32],svgContent:[32]},null,{size:["updateStyles"],color:["updateStyles"],name:["onIconPropertyChange"],src:["onIconPropertyChange"],icon:["onIconPropertyChange"]}]]]],o)}));
2
2
  //# sourceMappingURL=pds-icons.esm.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pds-icons",
3
- "version": "9.6.0",
3
+ "version": "9.6.2",
4
4
  "icons": [
5
5
  {
6
6
  "name": "access-key",
@@ -3706,6 +3706,17 @@
3706
3706
  "speaker"
3707
3707
  ]
3708
3708
  },
3709
+ {
3710
+ "name": "speedometer",
3711
+ "category": "features",
3712
+ "tags": [
3713
+ "dial",
3714
+ "meter",
3715
+ "revs",
3716
+ "speed",
3717
+ "speedometer"
3718
+ ]
3719
+ },
3709
3720
  {
3710
3721
  "name": "split",
3711
3722
  "category": "actions",
@@ -1,4 +1,4 @@
1
- <svg data-pdsicons="9.6.0" style="display:none">
1
+ <svg data-pdsicons="9.6.2" style="display:none">
2
2
  <style>
3
3
  .pdsicon {
4
4
  fill: currentColor;
@@ -319,6 +319,7 @@
319
319
  <symbol id="skipped" viewBox="0 0 24 24" class="pdsicon"><path fill-rule="evenodd" d="M22.648 1.212c.222.19.352.48.352.788v9c0 .552-.41 1-.917 1-.506 0-.916-.448-.916-1V3.28l-6.195 1.69a.84.84 0 0 1-.512-.021L9.213 3.04l-6.38 1.74v15.938l6.195-1.69a.84.84 0 0 1 .512.022l2.75 1c.48.175.74.741.58 1.265s-.68.807-1.16.633l-2.497-.908-7.074 1.93a.86.86 0 0 1-.786-.183A1.03 1.03 0 0 1 1 22V4c0-.459.286-.859.694-.97l7.334-2a.84.84 0 0 1 .512.021l5.247 1.908 7.074-1.93a.86.86 0 0 1 .787.183m-.833 14.08c.358.391.358 1.025 0 1.415L19.713 19l2.102 2.293c.358.39.358 1.024 0 1.414a.864.864 0 0 1-1.297 0l-2.101-2.293-2.102 2.293a.864.864 0 0 1-1.297 0 1.065 1.065 0 0 1 0-1.414L17.12 19l-2.102-2.293a1.065 1.065 0 0 1 0-1.414.864.864 0 0 1 1.297 0l2.102 2.293 2.101-2.293a.864.864 0 0 1 1.297 0"/></symbol>
320
320
  <symbol id="slash-divider" viewBox="0 0 24 24" class="pdsicon"><path fill-rule="evenodd" d="M17.447 1.106a1 1 0 0 1 .447 1.341l-10 20a1 1 0 1 1-1.788-.894l10-20a1 1 0 0 1 1.341-.447"/></symbol>
321
321
  <symbol id="speaker" viewBox="0 0 24 24" class="pdsicon"><path fill-rule="evenodd" d="M17.39 4.022c-.24.108-.566.285-1.067.558-1.674.913-4.031 1.978-6.073 1.978H6.8c-.857 0-1.439 0-1.889.037-.438.036-.663.101-.819.18a2 2 0 0 0-.874.875c-.08.156-.145.38-.18.819C3 8.919 3 9.5 3 10.358v1.2c0 .48 0 .789.017 1.026.015.228.042.315.06.356a1 1 0 0 0 .54.542c.042.017.129.043.357.059.237.016.546.017 1.026.017a1 1 0 0 1 1 1v4.25c0 .256.001.311.005.348a1 1 0 0 0 .897.897c.037.003.092.005.348.005s.311-.002.348-.005a1 1 0 0 0 .897-.897c.004-.037.005-.092.005-.348v-4.25a1 1 0 0 1 1-1h.75c2.042 0 4.399 1.065 6.073 1.977.501.274.826.45 1.067.558q.047.022.083.037l.007-.07c.02-.245.02-.589.02-1.129V5.184c0-.54 0-.884-.02-1.128l-.007-.07zm-.823-1.823c.292-.132.718-.302 1.176-.246.573.07 1.048.352 1.384.822.264.369.321.807.347 1.122.026.334.026.76.026 1.247v9.828c0 .487 0 .912-.026 1.246-.026.316-.083.754-.347 1.123-.336.47-.81.751-1.384.821-.458.056-.884-.114-1.176-.246-.318-.143-.71-.357-1.167-.606l-.034-.019c-1.569-.855-3.41-1.642-4.866-1.726v3.285c0 .19 0 .354-.014.502a3 3 0 0 1-2.692 2.691c-.148.015-.312.015-.502.015h-.084c-.19 0-.354 0-.502-.015a3 3 0 0 1-2.692-2.691C4 19.204 4 19.04 4 18.85v-3.305l-.162-.009a3 3 0 0 1-.986-.207 3 3 0 0 1-1.624-1.623 3 3 0 0 1-.207-.986C1 12.407 1 12.028 1 11.59v-1.274c0-.805 0-1.469.044-2.01.046-.562.145-1.079.392-1.564a4 4 0 0 1 1.748-1.748c.485-.248 1.002-.346 1.564-.392.541-.044 1.206-.044 2.01-.044h3.492c1.491 0 3.456-.83 5.116-1.734l.034-.019c.457-.249.85-.463 1.167-.606M22 7.058a1 1 0 0 1 1 1v4a1 1 0 1 1-2 0v-4a1 1 0 0 1 1-1"/></symbol>
322
+ <symbol id="speedometer" viewBox="0 0 24 24" class="pdsicon"><path d="M21 12a9 9 0 1 0-18 0 9 9 0 0 0 18 0m-5.207-5.207a1 1 0 1 1 1.414 1.414l-3.277 3.276q.068.248.07.517a2 2 0 1 1-1.484-1.93zM4 12a8 8 0 0 1 8-8 1 1 0 1 1 0 2 6 6 0 0 0-6 6 1 1 0 1 1-2 0m19 0c0 6.075-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1s11 4.925 11 11"/></symbol>
322
323
  <symbol id="split" viewBox="0 0 24 24" class="pdsicon"><path fill-rule="evenodd" d="M3 23h5a1 1 0 1 0 0-2H5.414l6.12-6.12A5 5 0 0 0 13 11.294V3a1 1 0 1 0-2 0v8.31a3 3 0 0 1-.879 2.155L4 19.585V17a1 1 0 1 0-2 0v5a1 1 0 0 0 1 1m15.586-2H16a1 1 0 1 0 0 2h5a1 1 0 0 0 1-1v-5a1 1 0 1 0-2 0v2.586l-4.293-4.293a1 1 0 0 0-1.414 1.414z"/></symbol>
323
324
  <symbol id="square-dollar" viewBox="0 0 24 24" class="pdsicon"><path d="M16.241 2c.805 0 1.47 0 2.011.044.562.046 1.08.144 1.564.392a4 4 0 0 1 1.749 1.748c.247.485.345 1.002.391 1.564C22 6.29 22 6.954 22 7.758v8.483c0 .805 0 1.47-.044 2.011-.046.562-.144 1.08-.392 1.564a4 4 0 0 1-1.748 1.749c-.485.247-1.002.345-1.564.391-.541.044-1.206.044-2.01.044H7.758c-.805 0-1.47 0-2.011-.044-.562-.046-1.08-.144-1.564-.392a4 4 0 0 1-1.748-1.748c-.248-.485-.346-1.002-.392-1.564C2 17.711 2 17.046 2 16.242V7.758c0-.805 0-1.47.044-2.011.046-.562.144-1.08.392-1.564a4 4 0 0 1 1.748-1.748c.485-.248 1.002-.346 1.564-.392C6.29 2 6.954 2 7.758 2zM7.8 4c-.857 0-1.439 0-1.889.037-.438.036-.663.101-.82.18a2 2 0 0 0-.873.875c-.08.156-.145.38-.18.82C4 6.361 4 6.942 4 7.8v8.4c0 .857 0 1.439.037 1.889.036.438.101.663.18.82a2 2 0 0 0 .875.873c.156.08.38.145.82.18C6.361 20 6.942 20 7.8 20h8.4c.857 0 1.439 0 1.889-.037.438-.036.663-.101.82-.18a2 2 0 0 0 .873-.875c.08-.156.145-.38.18-.82.038-.45.038-1.031.038-1.888V7.8c0-.857 0-1.439-.037-1.889-.036-.438-.101-.663-.18-.82a2 2 0 0 0-.875-.873c-.156-.08-.38-.145-.82-.18C17.639 4 17.058 4 16.2 4zM12 5.25a1 1 0 0 1 1 1v.327h.032a3.064 3.064 0 0 1 3.065 3.064 1 1 0 0 1-2 0c0-.588-.477-1.064-1.065-1.064h-1.916a1.212 1.212 0 1 0 0 2.423h1.769A3.212 3.212 0 0 1 13 17.42v.33a1 1 0 1 1-2 0v-.327h-.031a3.064 3.064 0 0 1-3.065-3.064 1 1 0 1 1 2 0c0 .588.477 1.064 1.065 1.064h1.916a1.212 1.212 0 1 0 0-2.423h-1.769A3.212 3.212 0 0 1 11 6.58v-.33a1 1 0 0 1 1-1"/></symbol>
324
325
  <symbol id="stack" viewBox="0 0 24 24" class="pdsicon"><path fill-rule="evenodd" d="M12 3.118 19.764 7 12 10.882 4.236 7zm-.277-2.033a1.5 1.5 0 0 1 .554 0 1.9 1.9 0 0 1 .528.2l9.642 4.82a1 1 0 0 1 0 1.79l-9.642 4.82-.026.014c-.093.047-.286.146-.502.186a1.5 1.5 0 0 1-.554 0c-.216-.04-.41-.139-.502-.186l-.026-.013-9.642-4.822a1 1 0 0 1 0-1.788l9.642-4.822.026-.013c.093-.047.286-.146.502-.186M1.106 11.553a1 1 0 0 1 1.341-.447L12 15.882l9.553-4.776a1 1 0 1 1 .894 1.788l-9.642 4.821-.026.014c-.093.047-.286.146-.502.186a1.5 1.5 0 0 1-.554 0c-.216-.04-.41-.139-.502-.186l-.026-.014-9.642-4.82a1 1 0 0 1-.447-1.342m0 5a1 1 0 0 1 1.341-.447L12 20.882l9.553-4.776a1 1 0 1 1 .894 1.788l-9.642 4.822-.026.012c-.093.048-.286.147-.502.187a1.5 1.5 0 0 1-.554 0c-.216-.04-.41-.139-.502-.186l-.026-.014-9.642-4.82a1 1 0 0 1-.447-1.342"/></symbol>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="pdsicon"><path d="M21 12a9 9 0 1 0-18 0 9 9 0 0 0 18 0m-5.207-5.207a1 1 0 1 1 1.414 1.414l-3.277 3.276q.068.248.07.517a2 2 0 1 1-1.484-1.93zM4 12a8 8 0 0 1 8-8 1 1 0 1 1 0 2 6 6 0 0 0-6 6 1 1 0 1 1-2 0m19 0c0 6.075-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1s11 4.925 11 11"/></svg>
@@ -50,11 +50,13 @@ export declare class PdsIcon {
50
50
  connectedCallback(): void;
51
51
  disconnectedCallback(): void;
52
52
  updateStyles(): void;
53
+ onIconPropertyChange(): void;
53
54
  loadIcon(): void;
54
55
  render(): any;
55
56
  /*****
56
57
  * Private Methods
57
58
  ****/
59
+ private setupInitialAriaLabel;
58
60
  private waitUntilVisible;
59
61
  private isElementInViewport;
60
62
  private hasAriaHidden;
package/icons/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- /* pds-icons v9.6.0, Types */
1
+ /* pds-icons v9.6.2, Types */
2
2
 
3
3
  export declare var accessKey: string
4
4
  export declare var activity: string
@@ -309,6 +309,7 @@ export declare var shoppingCartFilled: string
309
309
  export declare var skipped: string
310
310
  export declare var slashDivider: string
311
311
  export declare var speaker: string
312
+ export declare var speedometer: string
312
313
  export declare var split: string
313
314
  export declare var squareDollar: string
314
315
  export declare var stack: string
package/icons/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /* pds-icons v9.6.0, CommonJs */
1
+ /* pds-icons v9.6.2, CommonJs */
2
2
 
3
3
  exports.accessKey = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M8 9a7 7 0 1 1 6.06 6.937 14 14 0 0 0-.514-.062l-.01.008a9 9 0 0 0-.25.245l-1.579 1.58A1 1 0 0 1 11 18h-1v1a1 1 0 0 1-1 1H8v1a1 1 0 0 1-1 1H4.568c-.252 0-.498 0-.706-.017a2 2 0 0 1-.77-.201 2 2 0 0 1-.874-.874 2 2 0 0 1-.201-.77C2 19.93 2 19.684 2 19.432v-1.82c0-.19-.001-.43.055-.665a2 2 0 0 1 .24-.578c.126-.206.296-.375.43-.509l.036-.036 5.111-5.11c.126-.126.196-.197.245-.25l.008-.01-.003-.045c-.01-.103-.03-.244-.06-.469A7 7 0 0 1 8 9m0 9v-1a1 1 0 0 1 1-1h1.586l1.286-1.286.052-.053c.18-.18.398-.4.646-.539a1.8 1.8 0 0 1 .693-.234c.193-.027.382-.014.52 0 .145.014.324.038.525.065l.018.002q.33.045.674.045a5 5 0 1 0-4.955-4.326l.002.018c.027.201.051.38.065.524.014.14.027.328 0 .521-.038.265-.104.46-.234.693-.14.248-.359.466-.54.646l-.052.052-5.11 5.11a6 6 0 0 0-.171.175l-.002.002v.004a6 6 0 0 0-.003.244V19.4a8 8 0 0 0 .011.588l.014.002c.116.01.278.01.575.01H6v-1a1 1 0 0 1 1-1zm6-11a1 1 0 0 1 1-1c.766 0 1.536.293 2.121.879.586.585.879 1.355.879 2.12A1 1 0 1 1 16 9a1 1 0 0 0-.293-.707A1 1 0 0 0 15 8a1 1 0 0 1-1-1'/></svg>"
4
4
  exports.activity = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M9 2a1 1 0 0 1 .949.684L15 17.838l2.051-6.154A1 1 0 0 1 18 11h4a1 1 0 1 1 0 2h-3.28l-2.771 8.316a1 1 0 0 1-1.898 0L9 6.162l-2.051 6.154A1 1 0 0 1 6 13H2a1 1 0 1 1 0-2h3.28L8.05 2.684A1 1 0 0 1 9 2'/></svg>"
@@ -309,6 +309,7 @@ exports.shoppingCartFilled = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.
309
309
  exports.skipped = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M22.648 1.212c.222.19.352.48.352.788v9c0 .552-.41 1-.917 1-.506 0-.916-.448-.916-1V3.28l-6.195 1.69a.84.84 0 0 1-.512-.021L9.213 3.04l-6.38 1.74v15.938l6.195-1.69a.84.84 0 0 1 .512.022l2.75 1c.48.175.74.741.58 1.265s-.68.807-1.16.633l-2.497-.908-7.074 1.93a.86.86 0 0 1-.786-.183A1.03 1.03 0 0 1 1 22V4c0-.459.286-.859.694-.97l7.334-2a.84.84 0 0 1 .512.021l5.247 1.908 7.074-1.93a.86.86 0 0 1 .787.183m-.833 14.08c.358.391.358 1.025 0 1.415L19.713 19l2.102 2.293c.358.39.358 1.024 0 1.414a.864.864 0 0 1-1.297 0l-2.101-2.293-2.102 2.293a.864.864 0 0 1-1.297 0 1.065 1.065 0 0 1 0-1.414L17.12 19l-2.102-2.293a1.065 1.065 0 0 1 0-1.414.864.864 0 0 1 1.297 0l2.102 2.293 2.101-2.293a.864.864 0 0 1 1.297 0'/></svg>"
310
310
  exports.slashDivider = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M17.447 1.106a1 1 0 0 1 .447 1.341l-10 20a1 1 0 1 1-1.788-.894l10-20a1 1 0 0 1 1.341-.447'/></svg>"
311
311
  exports.speaker = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M17.39 4.022c-.24.108-.566.285-1.067.558-1.674.913-4.031 1.978-6.073 1.978H6.8c-.857 0-1.439 0-1.889.037-.438.036-.663.101-.819.18a2 2 0 0 0-.874.875c-.08.156-.145.38-.18.819C3 8.919 3 9.5 3 10.358v1.2c0 .48 0 .789.017 1.026.015.228.042.315.06.356a1 1 0 0 0 .54.542c.042.017.129.043.357.059.237.016.546.017 1.026.017a1 1 0 0 1 1 1v4.25c0 .256.001.311.005.348a1 1 0 0 0 .897.897c.037.003.092.005.348.005s.311-.002.348-.005a1 1 0 0 0 .897-.897c.004-.037.005-.092.005-.348v-4.25a1 1 0 0 1 1-1h.75c2.042 0 4.399 1.065 6.073 1.977.501.274.826.45 1.067.558q.047.022.083.037l.007-.07c.02-.245.02-.589.02-1.129V5.184c0-.54 0-.884-.02-1.128l-.007-.07zm-.823-1.823c.292-.132.718-.302 1.176-.246.573.07 1.048.352 1.384.822.264.369.321.807.347 1.122.026.334.026.76.026 1.247v9.828c0 .487 0 .912-.026 1.246-.026.316-.083.754-.347 1.123-.336.47-.81.751-1.384.821-.458.056-.884-.114-1.176-.246-.318-.143-.71-.357-1.167-.606l-.034-.019c-1.569-.855-3.41-1.642-4.866-1.726v3.285c0 .19 0 .354-.014.502a3 3 0 0 1-2.692 2.691c-.148.015-.312.015-.502.015h-.084c-.19 0-.354 0-.502-.015a3 3 0 0 1-2.692-2.691C4 19.204 4 19.04 4 18.85v-3.305l-.162-.009a3 3 0 0 1-.986-.207 3 3 0 0 1-1.624-1.623 3 3 0 0 1-.207-.986C1 12.407 1 12.028 1 11.59v-1.274c0-.805 0-1.469.044-2.01.046-.562.145-1.079.392-1.564a4 4 0 0 1 1.748-1.748c.485-.248 1.002-.346 1.564-.392.541-.044 1.206-.044 2.01-.044h3.492c1.491 0 3.456-.83 5.116-1.734l.034-.019c.457-.249.85-.463 1.167-.606M22 7.058a1 1 0 0 1 1 1v4a1 1 0 1 1-2 0v-4a1 1 0 0 1 1-1'/></svg>"
312
+ exports.speedometer = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path d='M21 12a9 9 0 1 0-18 0 9 9 0 0 0 18 0m-5.207-5.207a1 1 0 1 1 1.414 1.414l-3.277 3.276q.068.248.07.517a2 2 0 1 1-1.484-1.93zM4 12a8 8 0 0 1 8-8 1 1 0 1 1 0 2 6 6 0 0 0-6 6 1 1 0 1 1-2 0m19 0c0 6.075-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1s11 4.925 11 11'/></svg>"
312
313
  exports.split = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M3 23h5a1 1 0 1 0 0-2H5.414l6.12-6.12A5 5 0 0 0 13 11.294V3a1 1 0 1 0-2 0v8.31a3 3 0 0 1-.879 2.155L4 19.585V17a1 1 0 1 0-2 0v5a1 1 0 0 0 1 1m15.586-2H16a1 1 0 1 0 0 2h5a1 1 0 0 0 1-1v-5a1 1 0 1 0-2 0v2.586l-4.293-4.293a1 1 0 0 0-1.414 1.414z'/></svg>"
313
314
  exports.squareDollar = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path d='M16.241 2c.805 0 1.47 0 2.011.044.562.046 1.08.144 1.564.392a4 4 0 0 1 1.749 1.748c.247.485.345 1.002.391 1.564C22 6.29 22 6.954 22 7.758v8.483c0 .805 0 1.47-.044 2.011-.046.562-.144 1.08-.392 1.564a4 4 0 0 1-1.748 1.749c-.485.247-1.002.345-1.564.391-.541.044-1.206.044-2.01.044H7.758c-.805 0-1.47 0-2.011-.044-.562-.046-1.08-.144-1.564-.392a4 4 0 0 1-1.748-1.748c-.248-.485-.346-1.002-.392-1.564C2 17.711 2 17.046 2 16.242V7.758c0-.805 0-1.47.044-2.011.046-.562.144-1.08.392-1.564a4 4 0 0 1 1.748-1.748c.485-.248 1.002-.346 1.564-.392C6.29 2 6.954 2 7.758 2zM7.8 4c-.857 0-1.439 0-1.889.037-.438.036-.663.101-.82.18a2 2 0 0 0-.873.875c-.08.156-.145.38-.18.82C4 6.361 4 6.942 4 7.8v8.4c0 .857 0 1.439.037 1.889.036.438.101.663.18.82a2 2 0 0 0 .875.873c.156.08.38.145.82.18C6.361 20 6.942 20 7.8 20h8.4c.857 0 1.439 0 1.889-.037.438-.036.663-.101.82-.18a2 2 0 0 0 .873-.875c.08-.156.145-.38.18-.82.038-.45.038-1.031.038-1.888V7.8c0-.857 0-1.439-.037-1.889-.036-.438-.101-.663-.18-.82a2 2 0 0 0-.875-.873c-.156-.08-.38-.145-.82-.18C17.639 4 17.058 4 16.2 4zM12 5.25a1 1 0 0 1 1 1v.327h.032a3.064 3.064 0 0 1 3.065 3.064 1 1 0 0 1-2 0c0-.588-.477-1.064-1.065-1.064h-1.916a1.212 1.212 0 1 0 0 2.423h1.769A3.212 3.212 0 0 1 13 17.42v.33a1 1 0 1 1-2 0v-.327h-.031a3.064 3.064 0 0 1-3.065-3.064 1 1 0 1 1 2 0c0 .588.477 1.064 1.065 1.064h1.916a1.212 1.212 0 1 0 0-2.423h-1.769A3.212 3.212 0 0 1 11 6.58v-.33a1 1 0 0 1 1-1'/></svg>"
314
315
  exports.stack = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M12 3.118 19.764 7 12 10.882 4.236 7zm-.277-2.033a1.5 1.5 0 0 1 .554 0 1.9 1.9 0 0 1 .528.2l9.642 4.82a1 1 0 0 1 0 1.79l-9.642 4.82-.026.014c-.093.047-.286.146-.502.186a1.5 1.5 0 0 1-.554 0c-.216-.04-.41-.139-.502-.186l-.026-.013-9.642-4.822a1 1 0 0 1 0-1.788l9.642-4.822.026-.013c.093-.047.286-.146.502-.186M1.106 11.553a1 1 0 0 1 1.341-.447L12 15.882l9.553-4.776a1 1 0 1 1 .894 1.788l-9.642 4.821-.026.014c-.093.047-.286.146-.502.186a1.5 1.5 0 0 1-.554 0c-.216-.04-.41-.139-.502-.186l-.026-.014-9.642-4.82a1 1 0 0 1-.447-1.342m0 5a1 1 0 0 1 1.341-.447L12 20.882l9.553-4.776a1 1 0 1 1 .894 1.788l-9.642 4.822-.026.012c-.093.048-.286.147-.502.187a1.5 1.5 0 0 1-.554 0c-.216-.04-.41-.139-.502-.186l-.026-.014-9.642-4.82a1 1 0 0 1-.447-1.342'/></svg>"
package/icons/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /* pds-icons v9.6.0, ES Modules */
1
+ /* pds-icons v9.6.2, ES Modules */
2
2
 
3
3
  export const accessKey = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M8 9a7 7 0 1 1 6.06 6.937 14 14 0 0 0-.514-.062l-.01.008a9 9 0 0 0-.25.245l-1.579 1.58A1 1 0 0 1 11 18h-1v1a1 1 0 0 1-1 1H8v1a1 1 0 0 1-1 1H4.568c-.252 0-.498 0-.706-.017a2 2 0 0 1-.77-.201 2 2 0 0 1-.874-.874 2 2 0 0 1-.201-.77C2 19.93 2 19.684 2 19.432v-1.82c0-.19-.001-.43.055-.665a2 2 0 0 1 .24-.578c.126-.206.296-.375.43-.509l.036-.036 5.111-5.11c.126-.126.196-.197.245-.25l.008-.01-.003-.045c-.01-.103-.03-.244-.06-.469A7 7 0 0 1 8 9m0 9v-1a1 1 0 0 1 1-1h1.586l1.286-1.286.052-.053c.18-.18.398-.4.646-.539a1.8 1.8 0 0 1 .693-.234c.193-.027.382-.014.52 0 .145.014.324.038.525.065l.018.002q.33.045.674.045a5 5 0 1 0-4.955-4.326l.002.018c.027.201.051.38.065.524.014.14.027.328 0 .521-.038.265-.104.46-.234.693-.14.248-.359.466-.54.646l-.052.052-5.11 5.11a6 6 0 0 0-.171.175l-.002.002v.004a6 6 0 0 0-.003.244V19.4a8 8 0 0 0 .011.588l.014.002c.116.01.278.01.575.01H6v-1a1 1 0 0 1 1-1zm6-11a1 1 0 0 1 1-1c.766 0 1.536.293 2.121.879.586.585.879 1.355.879 2.12A1 1 0 1 1 16 9a1 1 0 0 0-.293-.707A1 1 0 0 0 15 8a1 1 0 0 1-1-1'/></svg>"
4
4
  export const activity = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M9 2a1 1 0 0 1 .949.684L15 17.838l2.051-6.154A1 1 0 0 1 18 11h4a1 1 0 1 1 0 2h-3.28l-2.771 8.316a1 1 0 0 1-1.898 0L9 6.162l-2.051 6.154A1 1 0 0 1 6 13H2a1 1 0 1 1 0-2h3.28L8.05 2.684A1 1 0 0 1 9 2'/></svg>"
@@ -309,6 +309,7 @@ export const shoppingCartFilled = "data:image/svg+xml;utf8,<svg xmlns='http://ww
309
309
  export const skipped = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M22.648 1.212c.222.19.352.48.352.788v9c0 .552-.41 1-.917 1-.506 0-.916-.448-.916-1V3.28l-6.195 1.69a.84.84 0 0 1-.512-.021L9.213 3.04l-6.38 1.74v15.938l6.195-1.69a.84.84 0 0 1 .512.022l2.75 1c.48.175.74.741.58 1.265s-.68.807-1.16.633l-2.497-.908-7.074 1.93a.86.86 0 0 1-.786-.183A1.03 1.03 0 0 1 1 22V4c0-.459.286-.859.694-.97l7.334-2a.84.84 0 0 1 .512.021l5.247 1.908 7.074-1.93a.86.86 0 0 1 .787.183m-.833 14.08c.358.391.358 1.025 0 1.415L19.713 19l2.102 2.293c.358.39.358 1.024 0 1.414a.864.864 0 0 1-1.297 0l-2.101-2.293-2.102 2.293a.864.864 0 0 1-1.297 0 1.065 1.065 0 0 1 0-1.414L17.12 19l-2.102-2.293a1.065 1.065 0 0 1 0-1.414.864.864 0 0 1 1.297 0l2.102 2.293 2.101-2.293a.864.864 0 0 1 1.297 0'/></svg>"
310
310
  export const slashDivider = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M17.447 1.106a1 1 0 0 1 .447 1.341l-10 20a1 1 0 1 1-1.788-.894l10-20a1 1 0 0 1 1.341-.447'/></svg>"
311
311
  export const speaker = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M17.39 4.022c-.24.108-.566.285-1.067.558-1.674.913-4.031 1.978-6.073 1.978H6.8c-.857 0-1.439 0-1.889.037-.438.036-.663.101-.819.18a2 2 0 0 0-.874.875c-.08.156-.145.38-.18.819C3 8.919 3 9.5 3 10.358v1.2c0 .48 0 .789.017 1.026.015.228.042.315.06.356a1 1 0 0 0 .54.542c.042.017.129.043.357.059.237.016.546.017 1.026.017a1 1 0 0 1 1 1v4.25c0 .256.001.311.005.348a1 1 0 0 0 .897.897c.037.003.092.005.348.005s.311-.002.348-.005a1 1 0 0 0 .897-.897c.004-.037.005-.092.005-.348v-4.25a1 1 0 0 1 1-1h.75c2.042 0 4.399 1.065 6.073 1.977.501.274.826.45 1.067.558q.047.022.083.037l.007-.07c.02-.245.02-.589.02-1.129V5.184c0-.54 0-.884-.02-1.128l-.007-.07zm-.823-1.823c.292-.132.718-.302 1.176-.246.573.07 1.048.352 1.384.822.264.369.321.807.347 1.122.026.334.026.76.026 1.247v9.828c0 .487 0 .912-.026 1.246-.026.316-.083.754-.347 1.123-.336.47-.81.751-1.384.821-.458.056-.884-.114-1.176-.246-.318-.143-.71-.357-1.167-.606l-.034-.019c-1.569-.855-3.41-1.642-4.866-1.726v3.285c0 .19 0 .354-.014.502a3 3 0 0 1-2.692 2.691c-.148.015-.312.015-.502.015h-.084c-.19 0-.354 0-.502-.015a3 3 0 0 1-2.692-2.691C4 19.204 4 19.04 4 18.85v-3.305l-.162-.009a3 3 0 0 1-.986-.207 3 3 0 0 1-1.624-1.623 3 3 0 0 1-.207-.986C1 12.407 1 12.028 1 11.59v-1.274c0-.805 0-1.469.044-2.01.046-.562.145-1.079.392-1.564a4 4 0 0 1 1.748-1.748c.485-.248 1.002-.346 1.564-.392.541-.044 1.206-.044 2.01-.044h3.492c1.491 0 3.456-.83 5.116-1.734l.034-.019c.457-.249.85-.463 1.167-.606M22 7.058a1 1 0 0 1 1 1v4a1 1 0 1 1-2 0v-4a1 1 0 0 1 1-1'/></svg>"
312
+ export const speedometer = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path d='M21 12a9 9 0 1 0-18 0 9 9 0 0 0 18 0m-5.207-5.207a1 1 0 1 1 1.414 1.414l-3.277 3.276q.068.248.07.517a2 2 0 1 1-1.484-1.93zM4 12a8 8 0 0 1 8-8 1 1 0 1 1 0 2 6 6 0 0 0-6 6 1 1 0 1 1-2 0m19 0c0 6.075-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1s11 4.925 11 11'/></svg>"
312
313
  export const split = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M3 23h5a1 1 0 1 0 0-2H5.414l6.12-6.12A5 5 0 0 0 13 11.294V3a1 1 0 1 0-2 0v8.31a3 3 0 0 1-.879 2.155L4 19.585V17a1 1 0 1 0-2 0v5a1 1 0 0 0 1 1m15.586-2H16a1 1 0 1 0 0 2h5a1 1 0 0 0 1-1v-5a1 1 0 1 0-2 0v2.586l-4.293-4.293a1 1 0 0 0-1.414 1.414z'/></svg>"
313
314
  export const squareDollar = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path d='M16.241 2c.805 0 1.47 0 2.011.044.562.046 1.08.144 1.564.392a4 4 0 0 1 1.749 1.748c.247.485.345 1.002.391 1.564C22 6.29 22 6.954 22 7.758v8.483c0 .805 0 1.47-.044 2.011-.046.562-.144 1.08-.392 1.564a4 4 0 0 1-1.748 1.749c-.485.247-1.002.345-1.564.391-.541.044-1.206.044-2.01.044H7.758c-.805 0-1.47 0-2.011-.044-.562-.046-1.08-.144-1.564-.392a4 4 0 0 1-1.748-1.748c-.248-.485-.346-1.002-.392-1.564C2 17.711 2 17.046 2 16.242V7.758c0-.805 0-1.47.044-2.011.046-.562.144-1.08.392-1.564a4 4 0 0 1 1.748-1.748c.485-.248 1.002-.346 1.564-.392C6.29 2 6.954 2 7.758 2zM7.8 4c-.857 0-1.439 0-1.889.037-.438.036-.663.101-.82.18a2 2 0 0 0-.873.875c-.08.156-.145.38-.18.82C4 6.361 4 6.942 4 7.8v8.4c0 .857 0 1.439.037 1.889.036.438.101.663.18.82a2 2 0 0 0 .875.873c.156.08.38.145.82.18C6.361 20 6.942 20 7.8 20h8.4c.857 0 1.439 0 1.889-.037.438-.036.663-.101.82-.18a2 2 0 0 0 .873-.875c.08-.156.145-.38.18-.82.038-.45.038-1.031.038-1.888V7.8c0-.857 0-1.439-.037-1.889-.036-.438-.101-.663-.18-.82a2 2 0 0 0-.875-.873c-.156-.08-.38-.145-.82-.18C17.639 4 17.058 4 16.2 4zM12 5.25a1 1 0 0 1 1 1v.327h.032a3.064 3.064 0 0 1 3.065 3.064 1 1 0 0 1-2 0c0-.588-.477-1.064-1.065-1.064h-1.916a1.212 1.212 0 1 0 0 2.423h1.769A3.212 3.212 0 0 1 13 17.42v.33a1 1 0 1 1-2 0v-.327h-.031a3.064 3.064 0 0 1-3.065-3.064 1 1 0 1 1 2 0c0 .588.477 1.064 1.065 1.064h1.916a1.212 1.212 0 1 0 0-2.423h-1.769A3.212 3.212 0 0 1 11 6.58v-.33a1 1 0 0 1 1-1'/></svg>"
314
315
  export const stack = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M12 3.118 19.764 7 12 10.882 4.236 7zm-.277-2.033a1.5 1.5 0 0 1 .554 0 1.9 1.9 0 0 1 .528.2l9.642 4.82a1 1 0 0 1 0 1.79l-9.642 4.82-.026.014c-.093.047-.286.146-.502.186a1.5 1.5 0 0 1-.554 0c-.216-.04-.41-.139-.502-.186l-.026-.013-9.642-4.822a1 1 0 0 1 0-1.788l9.642-4.822.026-.013c.093-.047.286-.146.502-.186M1.106 11.553a1 1 0 0 1 1.341-.447L12 15.882l9.553-4.776a1 1 0 1 1 .894 1.788l-9.642 4.821-.026.014c-.093.047-.286.146-.502.186a1.5 1.5 0 0 1-.554 0c-.216-.04-.41-.139-.502-.186l-.026-.014-9.642-4.82a1 1 0 0 1-.447-1.342m0 5a1 1 0 0 1 1.341-.447L12 20.882l9.553-4.776a1 1 0 1 1 .894 1.788l-9.642 4.822-.026.012c-.093.048-.286.147-.502.187a1.5 1.5 0 0 1-.554 0c-.216-.04-.41-.139-.502-.186l-.026-.014-9.642-4.82a1 1 0 0 1-.447-1.342'/></svg>"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pine-ds/icons/icons",
3
- "version": "9.6.0",
3
+ "version": "9.6.2",
4
4
  "module": "index.mjs",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pine-ds/icons",
3
- "version": "9.6.1",
3
+ "version": "9.7.0",
4
4
  "license": "MIT",
5
5
  "description": "Pine Icon Library",
6
6
  "author": " Kajabi Design System Services",
@@ -1,2 +0,0 @@
1
- import{r as t,h as i,H as s,g as e}from"./p-BtVkVfWm.js";import{i as n,a as o,g as r,b as l,s as h,c}from"./p-6DkR999u.js";const a=t=>{const i=document.createElement("div");i.innerHTML=t;for(let t=i.childNodes.length-1;t>=0;t--){if(i.childNodes[t].nodeName.toLowerCase()!=="svg"){i.removeChild(i.childNodes[t])}}const s=i.firstElementChild;if(s&&s.nodeName.toLowerCase()==="svg"){const t=s.getAttribute("class")||"";s.setAttribute("class",(t+" s-pds-icon").trim());if(d(s)){return i.innerHTML}}return""};const d=t=>{if(t.nodeType===1){if(t.nodeName.toLowerCase()==="script"){return false}for(let i=0;i<t.attributes.length;i++){const s=t.attributes[i].name;if(n(s)&&s.toLowerCase().indexOf("on")===0){return false}}for(let i=0;i<t.childNodes.length;i++){if(!d(t.childNodes[i])){return false}}}return true};const f=t=>t.startsWith("data:image/svg+xml");const u=t=>t.indexOf(";utf8,")!==-1;const m=new Map;const p=new Map;let w;const g=(t,i=false)=>{let s=p.get(t);if(!s){if(typeof fetch!="undefined"&&typeof document!=="undefined"){if(f(t)&&u(t)){if(!w){w=new DOMParser}try{const i=w.parseFromString(t,"text/html");const s=i.querySelector("svg");if(s){m.set(t,s.outerHTML)}else{m.set(t,"")}}catch(i){m.set(t,"")}return Promise.resolve()}else{s=fetch(t).then((s=>{if(s.ok){return s.text().then((s=>{if(s&&i!==false){try{s=a(s)}catch(t){s=""}}m.set(t,s||"")}))}else{throw new Error(`Failed to load SVG: ${s.status} ${s.statusText}`)}})).catch((i=>{console.warn("Failed to load SVG:",t,i);m.set(t,"")}));p.set(t,s)}}else{m.set(t,"");return Promise.resolve()}}return s};const b=":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)}";const v=class{constructor(i){t(this,i);this.didLoadIcon=false;this.iconName=null;this.inheritedAttributes={};this.isVisible=false;this.size="regular";this.hasAriaHidden=()=>{const{el:t}=this;return t.hasAttribute("aria-hidden")&&t.getAttribute("aria-hidden")==="true"}}iconSize(){const t={small:"12px",regular:"16px",medium:"20px",large:"24px"};if(t[this.size]){return t[this.size]}else{return this.size}}componentDidLoad(){this.setCSSVariables();if(!this.didLoadIcon){this.loadIcon()}setTimeout((()=>{if(!this.svgContent&&!this.isVisible){this.isVisible=true;this.loadIcon()}}),100);setTimeout((()=>{if(!this.svgContent&&!this.isVisible){this.isVisible=true;this.loadIcon()}}),500)}componentWillLoad(){this.inheritedAttributes=o(this.el,["aria-label"]);this.setCSSVariables()}setCSSVariables(){this.el.style.setProperty(`--dimension-icon-height`,this.iconSize());this.el.style.setProperty(`--dimension-icon-width`,this.iconSize());this.el.style.setProperty(`--color-icon-fill`,typeof this.color!=="undefined"?this.color:"currentColor")}connectedCallback(){if(!this.isVisible&&!this.svgContent){this.waitUntilVisible(this.el,"50px",(()=>{this.isVisible=true;this.loadIcon()}))}if(this.isElementInViewport(this.el)){this.isVisible=true;this.loadIcon()}}disconnectedCallback(){if(this.io){this.io.disconnect();this.io=undefined}}updateStyles(){this.setCSSVariables()}loadIcon(){this.didLoadIcon=false;this.svgContent=undefined;if(this.isVisible){const t=r(this);if(t){if(m.has(t)){this.svgContent=m.get(t)}else{g(t).then((()=>{setTimeout((()=>{this.svgContent=m.get(t)}),0)})).catch((()=>{this.svgContent=""}))}this.didLoadIcon=true}}this.iconName=l(this.name,this.icon);if(this.iconName){this.ariaLabel=this.iconName.replace(/\-/g," ")}}render(){const{ariaLabel:t,flipRtl:e,iconName:n,inheritedAttributes:o}=this;const r=n?h(n,this.el)&&e!==false:false;const l=e||r;return i(s,Object.assign({key:"48056743bf1a60bbf905a0779702fd366b86659d","aria-label":t!==undefined&&!this.hasAriaHidden()?t:null,alt:"",role:"img",class:Object.assign(Object.assign({},x(this.color)),{"flip-rtl":l,"icon-rtl":l&&c(this.el)})},o),this.svgContent?i("div",{class:"icon-inner",innerHTML:this.svgContent}):i("div",{class:"icon-inner"}))}waitUntilVisible(t,i,s){if(typeof window!=="undefined"&&window.IntersectionObserver){const e=this.io=new window.IntersectionObserver((t=>{if(t[0].isIntersecting){e.disconnect();this.io=undefined;s()}}),{rootMargin:i});e.observe(t);setTimeout((()=>{if(this.io&&!this.isVisible){if(this.isElementInViewport(t)){this.io.disconnect();this.io=undefined;s()}}}),1e3)}else{s()}}isElementInViewport(t){if(!t||!t.isConnected)return false;const i=t.getBoundingClientRect();const s=window.innerHeight||document.documentElement.clientHeight;const e=window.innerWidth||document.documentElement.clientWidth;return i.top>=0&&i.left>=0&&i.bottom<=s&&i.right<=e||i.top<s&&i.bottom>0&&i.left<e&&i.right>0}debugIconState(){var t;const i=r(this);const s=this.el.getBoundingClientRect();console.log("PdsIcon Debug State:",{name:this.name,src:this.src,icon:this.icon,iconName:this.iconName,url:i,isVisible:this.isVisible,didLoadIcon:this.didLoadIcon,hasSvgContent:!!this.svgContent,svgContentLength:((t=this.svgContent)===null||t===void 0?void 0:t.length)||0,isInCache:i?m.has(i):false,cachedContent:i?m.get(i):null,element:this.el,isConnected:this.el.isConnected,isInViewport:this.isElementInViewport(this.el),hasIntersectionObserver:!!this.io,boundingClientRect:s,windowDimensions:{width:window.innerWidth||document.documentElement.clientWidth,height:window.innerHeight||document.documentElement.clientHeight}})}static get assetsDirs(){return["svg"]}get el(){return e(this)}static get watchers(){return{size:["updateStyles"],color:["updateStyles"],name:["loadIcon"],src:["loadIcon"],icon:["loadIcon"]}}};const x=t=>t?{"pds-color":true,[`pds-color-${t}`]:true}:null;v.style=b;export{v as pds_icon};
2
- //# sourceMappingURL=p-23a00a5a.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["validateContent","svgContent","div","document","createElement","innerHTML","i","childNodes","length","nodeName","toLowerCase","removeChild","svgElm","firstElementChild","svgClass","getAttribute","setAttribute","trim","isValid","elm","nodeType","attributes","name","isStr","indexOf","isSvgDataUrl","url","startsWith","isEncodedDataUrl","pdsIconContent","Map","requests","parser","getSvgContent","sanitize","req","get","fetch","DOMParser","doc","parseFromString","svg","querySelector","set","outerHTML","error","Promise","resolve","then","rsp","ok","text","validationError","Error","status","statusText","catch","console","warn","pdsIconCss","PdsIcon","constructor","hostRef","this","didLoadIcon","iconName","inheritedAttributes","isVisible","size","hasAriaHidden","el","hasAttribute","iconSize","sizes","small","regular","medium","large","componentDidLoad","setCSSVariables","loadIcon","setTimeout","componentWillLoad","inheritAttributes","style","setProperty","color","connectedCallback","waitUntilVisible","isElementInViewport","disconnectedCallback","io","disconnect","undefined","updateStyles","getUrl","has","getName","icon","ariaLabel","replace","render","flipRtl","shouldIconAutoFlip","shouldRtlFlipIcon","shouldFlip","h","Host","Object","assign","key","alt","role","class","createColorClasses","isRTL","rootMargin","cb","window","IntersectionObserver","data","isIntersecting","observe","isConnected","rect","getBoundingClientRect","windowHeight","innerHeight","documentElement","clientHeight","windowWidth","innerWidth","clientWidth","top","left","bottom","right","debugIconState","log","src","hasSvgContent","svgContentLength","_a","isInCache","cachedContent","element","isInViewport","hasIntersectionObserver","boundingClientRect","windowDimensions","width","height"],"sources":["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 { 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 try {\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 } else {\n pdsIconContent.set(url, '');\n }\n } catch (error) {\n pdsIconContent.set(url, '');\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 try {\n svgContent = validateContent(svgContent);\n } catch (validationError) {\n svgContent = '';\n }\n }\n pdsIconContent.set(url, svgContent || '');\n });\n } else {\n // Handle HTTP errors\n throw new Error(`Failed to load SVG: ${rsp.status} ${rsp.statusText}`);\n }\n }).catch((error) => {\n // Handle all fetch errors gracefully\n console.warn('Failed to load SVG:', url, error);\n pdsIconContent.set(url, '');\n // Don't re-throw to prevent unhandled promise rejections\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 // Fallback: Ensure icon loads even if IntersectionObserver doesn't fire\n setTimeout(() => {\n if (!this.svgContent && !this.isVisible) {\n this.isVisible = true;\n this.loadIcon();\n }\n }, 100);\n\n // Additional fallback for client-side navigation (React Router, etc.)\n // React's useLayoutEffect and rendering cycles can delay visibility detection\n setTimeout(() => {\n if (!this.svgContent && !this.isVisible) {\n this.isVisible = true;\n this.loadIcon();\n }\n }, 500);\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 // Handle re-connection during client-side navigation\n if (!this.isVisible && !this.svgContent) {\n this.waitUntilVisible(this.el, '50px', () => {\n this.isVisible = true;\n this.loadIcon();\n });\n }\n\n // Immediate load attempt if already visible (e.g., during React navigation)\n if (this.isElementInViewport(this.el)) {\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 // Reset load state when URL changes\n this.didLoadIcon = false;\n\n // Clear existing content to prevent stale content when switching icons\n this.svgContent = undefined;\n\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 // Fix: Ensure promise callback triggers re-render and handle errors\n getSvgContent(url)\n .then(() => {\n // Force re-render by setting state in next tick\n setTimeout(() => {\n this.svgContent = pdsIconContent.get(url);\n }, 0);\n })\n .catch(() => {\n // Handle fetch errors gracefully\n this.svgContent = '';\n });\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\n // Safety timeout for client-side navigation scenarios\n // Sometimes IntersectionObserver doesn't fire during React navigation\n setTimeout(() => {\n if (this.io && !this.isVisible) {\n // Check if element is actually visible in viewport\n if (this.isElementInViewport(el)) {\n this.io.disconnect();\n this.io = undefined;\n cb();\n }\n }\n }, 1000);\n } else {\n // browser doesn't support IntersectionObserver\n // so just fallback to always show it\n cb();\n }\n }\n\n private isElementInViewport(el: HTMLElement): boolean {\n if (!el || !el.isConnected) return false;\n\n const rect = el.getBoundingClientRect();\n const windowHeight = window.innerHeight || document.documentElement.clientHeight;\n const windowWidth = window.innerWidth || document.documentElement.clientWidth;\n\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= windowHeight &&\n rect.right <= windowWidth\n ) || (\n // Also consider partially visible elements\n rect.top < windowHeight &&\n rect.bottom > 0 &&\n rect.left < windowWidth &&\n rect.right > 0\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 /**\n * Debug method to help diagnose loading issues\n * Call from browser console: document.querySelector('pds-icon').debugIconState()\n */\n debugIconState() {\n const url = getUrl(this);\n const rect = this.el.getBoundingClientRect();\n\n console.log('PdsIcon Debug State:', {\n name: this.name,\n src: this.src,\n icon: this.icon,\n iconName: this.iconName,\n url,\n isVisible: this.isVisible,\n didLoadIcon: this.didLoadIcon,\n hasSvgContent: !!this.svgContent,\n svgContentLength: this.svgContent?.length || 0,\n isInCache: url ? pdsIconContent.has(url) : false,\n cachedContent: url ? pdsIconContent.get(url) : null,\n element: this.el,\n // Client-side navigation specific debug info\n isConnected: this.el.isConnected,\n isInViewport: this.isElementInViewport(this.el),\n hasIntersectionObserver: !!this.io,\n boundingClientRect: rect,\n windowDimensions: {\n width: window.innerWidth || document.documentElement.clientWidth,\n height: window.innerHeight || document.documentElement.clientHeight\n }\n });\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"],"mappings":"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","ignoreList":[]}