{"version":3,"sources":["components/ads-cta-link/ads-cta-link.tsx","components/ads-cta-link/ads-cta-link.scss?tag=ads-cta-link&encapsulation=shadow","components/core/global/pipeline.ts","components/core/utils/pipeline.ts","components/core/utils/components.ts","utils/imageHelper.tsx","components/core/interfaces/Hyperlink.ts","../node_modules/@fortawesome/pro-light-svg-icons/faChevronRight.js"],"names":["AdsCtaLink","this","el","setAttribute","identifier","component","newValue","Pipeline.addComponent","Pipeline.removeComponent","linkObj","link","linkAttributes","href","hreflang","rel","target","tabIndex","srLabel","onClick","class","data","svgPathData","height","width","add","window","pipeline","set","id","tagName","toLowerCase","config","getBoolean","trackEvent","name","COMPONENT_REGISTER","componentId","environment","version","host","location","err","console","log","sendCustomEvent","addComponent","Pipeline.add","removeComponent","delete","Pipeline.remove","generateId","namespace","generateRandomString","Math","random","toString","substr","getClassFromSize","size","MEDIUM","SMALL","getClassFromLevel","level","PRIMARY","SECONDARY","TERTIARY","getMediaQueryBreakpointClassUp","bp","getMediaQueryBreakpointClassDown","showErrorMessage","message","ADS_CONSOLE_ERROR","warn","generateSVGImage","icon","className","xmlns","viewBox","d","getHyperLinkObject","Object","defineProperty","exports","value","aliases","prefix","iconName","definition"],"mappings":"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","file":"static/js/15.f014e910.chunk.js","sourcesContent":["import * as Pipeline from '../core/utils/pipeline';\nimport { BaseComponent } from '../core/interfaces/BaseComponent';\nimport { Component, Element, Prop, VNode, Watch, h } from '@stencil/core';\nimport { Hyperlink, getHyperLinkObject } from '../core/interfaces/Hyperlink';\nimport { Theme } from '../core/types/globalTypes';\nimport { generateId } from '../core/utils/components';\nimport { generateSVGImage } from 'utils/imageHelper';\nimport { height, svgPathData, width } from '@fortawesome/pro-light-svg-icons/faChevronRight';\n\n/**\n * The call to action link is used to combination of anchor text and a chevron to provide greater affordance\n * for the most important link related to a set of content. Avoid using too many CTA links in proximity,\n * for example in lists. Instead use a single CTA link per content section or card.\n * @tag `<ads-cta-link>`\n * @slot - Content rendered as rich text inside the component\n * @example <ads-cta-link link=\"https://www.arm.com\">Learn More</ads-cta-link>\n */\n@Component({\n tag: 'ads-cta-link',\n styleUrl: 'ads-cta-link.scss',\n shadow: true,\n})\nexport class AdsCtaLink implements BaseComponent {\n /**\n * @hidden\n */\n public component: string;\n\n constructor() {\n this.el.setAttribute('id', this.identifier || generateId('ads-cta-link'));\n this.component = 'ads-cta-link';\n }\n\n /**\n * @hidden\n */\n @Element() el: HTMLAdsCtaLinkElement;\n\n /**\n * The unique identifier (optional)\n */\n @Prop({ attribute: 'id' }) identifier?: string;\n\n /**\n * The theme for this component instance (optional)\n * Values: \"default\", \"dark\"\n */\n @Prop({ reflect: true }) theme?: Theme;\n\n /**\n * Contains a URL (fragment).\n * If this property is set, an anchor tag will be rendered.\n */\n @Prop({ reflect: true }) link: Hyperlink;\n\n /**\n * Text to display as the aria-label (optional)\n */\n @Prop({ reflect: true }) srLabel?: string;\n\n /**\n * Handle identifier property changes\n * @param {string} newValue The new value for \"identifier\"\n * @hidden\n */\n @Watch('identifier')\n handleIdentifierChange(newValue: string): void {\n this.el.setAttribute('id', newValue || generateId('ads-cta-link'));\n }\n\n protected componentDidLoad(): void {\n Pipeline.addComponent(this.el);\n }\n\n protected disconnectedCallback(): void {\n Pipeline.removeComponent(this.el);\n }\n\n protected render(): VNode {\n const linkObj = getHyperLinkObject(this.link);\n\n const linkAttributes = {\n href: linkObj?.href,\n hreflang: linkObj?.hreflang || null,\n rel: linkObj?.rel || null,\n target: linkObj?.target || null,\n tabIndex: 0,\n 'aria-label': this.srLabel,\n onClick: linkObj?.onClick || null,\n 'data-track': 'true',\n 'data-track-value': this.srLabel,\n };\n\n return (\n <span class=\"c-cta-link\">\n <a class=\"c-cta-link__anchor\" {...linkAttributes}>\n <slot />\n </a>\n <span class=\"c-cta-link__icon\" aria-hidden=\"true\">\n {generateSVGImage({ data: svgPathData, height, width })}\n </span>\n </span>\n ) as VNode;\n }\n}\n","@import 'core';\n\n/**\n * @prop --ads-cta-link-color: Link text color\n * @prop --ads-cta-link-color-hover: Link text color on hover\n *\n * @prop --ads-cta-link-icon-color: Icon color\n * @prop --ads-cta-link-icon-margin-left: Icon left margin value\n * @prop --ads-cta-link-icon-margin-right: Icon right margin value\n * @prop --ads-cta-link-icon-rotation: Icon rotation value\n */\n\n::slotted(*) {\n color: inherit !important;\n font-size: inherit !important;\n font-weight: inherit !important;\n}\n\n:host {\n display: inline-block;\n}\n\n:host([theme='default']) {\n @include ads-vars-component-cta-link-default;\n}\n\n:host([theme='dark']) {\n @include ads-vars-component-cta-link-dark;\n}\n\n:host([dir='ltr']) {\n @include ads-vars-component-cta-link-ltr;\n}\n\n:host([dir='rtl']) {\n @include ads-vars-component-cta-link-rtl;\n}\n\n.c-cta-link {\n @include ads-cta-link;\n}\n","import { EventTypes, environment, version } from './AppInsights/constants';\nimport { WindowGlobal } from '../types/globalTypes';\n\n/**\n * Send custom event to AppInsights\n * @param {string} component The reference to the component\n * @returns {void}\n * @hidden\n */\nconst sendCustomEvent = (component: HTMLElement): void => {\n try {\n (window as WindowGlobal)['AppInsights'].trackEvent(\n {\n name: EventTypes.COMPONENT_REGISTER,\n },\n {\n component: component.tagName.toLowerCase(),\n componentId: component.id,\n environment,\n version,\n host: window.location.host,\n }\n );\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log('[APP INSIGHTS] Could not send event', err);\n }\n};\n\n/**\n * Add the component to the pipeline and send component events to AppInsights\n * @param {HTMLElement} component The component element\n * @returns {void}\n * @hidden\n */\nexport function add(component: HTMLElement): void {\n (window as WindowGlobal)['ArmDesignSystem'].pipeline.set(component.id, component.tagName.toLowerCase());\n\n // Disable sending events to AppInsights during unit tests\n if (!(window as WindowGlobal)['ArmDesignSystem'].config.getBoolean('_isTesting')) {\n sendCustomEvent(component);\n }\n}\n\n/**\n * Remove the component from the pipeline\n * @param {HTMLElement} component The component element\n * @returns {void}\n * @hidden\n */\nexport function remove(component: HTMLElement): void {\n (window as WindowGlobal)['ArmDesignSystem'].pipeline.delete(component.id);\n}\n","import * as Pipeline from '../global/pipeline';\n\n/**\n * Add a component to the ADS pipeline\n * @param {HTMLElement} component The component element\n * @return {void}\n */\nexport const addComponent = (component: HTMLElement): void => {\n Pipeline.add(component);\n};\n\n/**\n * Remove a component from the ADS pipeline\n * @param {HTMLElement} component The component element\n * @return {void}\n */\nexport const removeComponent = (component: HTMLElement): void => {\n Pipeline.remove(component);\n};\n","import { Breakpoint, ButtonLevel, ButtonLevels, ButtonSize, ButtonSizes, WindowGlobal } from '../types/globalTypes';\nimport { EventTypes, environment, version } from '../global/AppInsights/constants';\n\nexport type ShadowRootLegacy = ShadowRoot & { tagName: string };\n\n/**\n * Generates a unique component ID\n * @param {string} namespace The unique id's namespace (e.g. ads)\n * @returns {string} A generated random id (e.g. ads-1234)\n */\nexport const generateId = (namespace = 'ads'): string => {\n return `${namespace}-${generateRandomString()}`;\n};\n\n/**\n * Generates a randon string\n * @returns {string} A generated random string\n */\nexport const generateRandomString = (): string => {\n return Math.random().toString(36).substr(2, 16);\n};\n\n/**\n * Generates a size class based on a button size\n * @param {ButtonSize} size The size of the button (e.g. ButtonSizes.SMALL)\n * @returns {string} The button size class (e.g. 'is-small')\n */\nexport const getClassFromSize = (size: ButtonSize): string => {\n switch (size) {\n case ButtonSizes.MEDIUM:\n return 'is-medium';\n case ButtonSizes.SMALL:\n return 'is-small';\n default:\n return '';\n }\n};\n\n/**\n * Generates a level class based on button a level\n * @param {ButtonLevel} level The level of the button (e.g. ButtonLevels.PRIMARY)\n * @returns {string} The button level class (e.g. 'is-primary')\n */\nexport const getClassFromLevel = (level: ButtonLevel): string => {\n switch (level) {\n case ButtonLevels.PRIMARY:\n return 'is-primary';\n case ButtonLevels.SECONDARY:\n return 'is-secondary';\n case ButtonLevels.TERTIARY:\n return 'is-tertiary';\n default:\n return '';\n }\n};\n\n/**\n * Given a breakpoint it will return the appropriate class for the media-queries (breakpoints-up).\n * @param {Breakpoint} bp The breakpoint.\n * @returns {string} The class.\n */\nexport const getMediaQueryBreakpointClassUp = (bp: Breakpoint): string => `${bp.toString()}-up`;\n\n/**\n * Given a breakpoint it will return the appropriate class for the media-queries (breakpoints-down).\n * @param {Breakpoint} bp The breakpoint.\n * @returns {string} The class.\n */\nexport const getMediaQueryBreakpointClassDown = (bp: Breakpoint): string => `${bp.toString()}-down`;\n\n/**\n * Display an ADS warning with the given message\n * @param {string} message The error message to show\n * @param {string} component The reference to the component\n * @returns {void}\n */\nexport const showErrorMessage = (message: string, component: HTMLElement): void => {\n try {\n (window as WindowGlobal)['AppInsights'].trackEvent(\n {\n name: EventTypes.ADS_CONSOLE_ERROR as string,\n },\n {\n component: component.tagName.toLowerCase(),\n componentId: component.id,\n message: message,\n environment,\n version,\n host: window.location.host,\n }\n );\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log('[APP INSIGHTS] Could not send console error', err);\n }\n // eslint-disable-next-line no-console\n console.warn(`ADS-Warning: ${message}`);\n};\n","import { SVGIconData } from '../components/core/interfaces/Icon';\nimport { h } from '@stencil/core';\n\n/**\n * Generates an SVG image\n * @param {IconData} icon The SVG image properties\n * @param {string} className The SVG image class name\n * @returns {HTMLElement} The generated SVG image\n */\nexport const generateSVGImage = (icon: SVGIconData, className?: string): HTMLElement => {\n return (\n <svg class={className ? className : null} xmlns=\"http://www.w3.org/2000/svg\" viewBox={`0 0 ${icon.width} ${icon.height}`}>\n <path d={icon.data} />\n </svg>\n ) as HTMLElement;\n};\n","/**\n * An interface for a hyperlink\n * @docs\n * @global\n */\nexport interface HyperlinkObj {\n /* the hyperlink url (fragment) value */\n href: string;\n\n /* the language of the linked resource */\n hreflang?: string;\n\n /* the relationship between the current document and the linked document */\n rel?: string;\n\n /* the context in which the linked resource will open */\n target?: string;\n\n /* the onClick handler of the link */\n onClick?: (evt: MouseEvent) => void;\n}\n\n/**\n * Describes a link.\n * @docs\n * @global\n */\nexport type Hyperlink = HyperlinkObj | string;\n\n/**\n * Given a link object or string (href), this function will return the full object that describes a link\n * That way we can \"combine\" the two possible link inputs (string or obj) and work with objects as a result\n * @param {Hyperlink} link The link data\n * @returns {HyperlinkObj} The link in obj form\n */\nexport const getHyperLinkObject = (link: Hyperlink): HyperlinkObj => {\n if (typeof link === 'string') {\n return { href: link };\n }\n return link;\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fal';\nvar iconName = 'chevron-right';\nvar width = 320;\nvar height = 512;\nvar aliases = [9002];\nvar unicode = 'f054';\nvar svgPathData = 'M299.3 244.7c6.2 6.2 6.2 16.4 0 22.6l-192 192c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L265.4 256 84.7 75.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l192 192z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faChevronRight = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;"],"sourceRoot":""}