{"version":3,"file":"card.BOy93BuY.js","sources":["../../../../../node_modules/@braintree/sanitize-url/dist/constants.js","../../../../../node_modules/@braintree/sanitize-url/dist/index.js","../../../../../packages/web-components/src/lib/components/card/card.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BLANK_URL = exports.relativeFirstCharacters = exports.whitespaceEscapeCharsRegex = exports.urlSchemeRegex = exports.ctrlCharactersRegex = exports.htmlCtrlEntityRegex = exports.htmlEntitiesRegex = exports.invalidProtocolRegex = void 0;\nexports.invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nexports.htmlEntitiesRegex = /&#(\\w+)(^\\w|;)?/g;\nexports.htmlCtrlEntityRegex = /&(newline|tab);/gi;\nexports.ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nexports.urlSchemeRegex = /^.+(:|:)/gim;\nexports.whitespaceEscapeCharsRegex = /(\\\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;\nexports.relativeFirstCharacters = [\".\", \"/\"];\nexports.BLANK_URL = \"about:blank\";\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sanitizeUrl = void 0;\nvar constants_1 = require(\"./constants\");\nfunction isRelativeUrlWithoutProtocol(url) {\n return constants_1.relativeFirstCharacters.indexOf(url[0]) > -1;\n}\n// adapted from https://stackoverflow.com/a/29824550/2601552\nfunction decodeHtmlCharacters(str) {\n var removedNullByte = str.replace(constants_1.ctrlCharactersRegex, \"\");\n return removedNullByte.replace(constants_1.htmlEntitiesRegex, function (match, dec) {\n return String.fromCharCode(dec);\n });\n}\nfunction decodeURI(uri) {\n try {\n return decodeURIComponent(uri);\n }\n catch (e) {\n // Ignoring error\n // It is possible that the URI contains a `%` not associated\n // with URI/URL-encoding.\n return uri;\n }\n}\nfunction sanitizeUrl(url) {\n if (!url) {\n return constants_1.BLANK_URL;\n }\n var charsToDecode;\n var decodedUrl = decodeURI(url);\n do {\n decodedUrl = decodeHtmlCharacters(decodedUrl)\n .replace(constants_1.htmlCtrlEntityRegex, \"\")\n .replace(constants_1.ctrlCharactersRegex, \"\")\n .replace(constants_1.whitespaceEscapeCharsRegex, \"\")\n .trim();\n decodedUrl = decodeURI(decodedUrl);\n charsToDecode =\n decodedUrl.match(constants_1.ctrlCharactersRegex) ||\n decodedUrl.match(constants_1.htmlEntitiesRegex) ||\n decodedUrl.match(constants_1.htmlCtrlEntityRegex) ||\n decodedUrl.match(constants_1.whitespaceEscapeCharsRegex);\n } while (charsToDecode && charsToDecode.length > 0);\n var sanitizedUrl = decodedUrl;\n if (!sanitizedUrl) {\n return constants_1.BLANK_URL;\n }\n if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n return sanitizedUrl;\n }\n var urlSchemeParseResults = sanitizedUrl.match(constants_1.urlSchemeRegex);\n if (!urlSchemeParseResults) {\n return sanitizedUrl;\n }\n var urlScheme = urlSchemeParseResults[0];\n if (constants_1.invalidProtocolRegex.test(urlScheme)) {\n return constants_1.BLANK_URL;\n }\n return sanitizedUrl;\n}\nexports.sanitizeUrl = sanitizeUrl;\n","import { html, nothing } from 'lit';\nimport { property, queryAssignedElements } from 'lit/decorators.js';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\nimport { pdsCustomElement as customElement } from '../../decorators/pds-custom-element';\nimport { PdsElement } from '../PdsElement';\nimport styles from './card.scss?inline';\n\n/**\n * @summary This component creates a card container for other elements\n *\n * @slot header Optional: Header content of the card\n * @slot default Required: Body content of the card\n * @slot footer Optional: Footer content of the card\n *\n * @fires pds-card-click A custom event dispatched on a card click when href is provided\n */\n@customElement('pds-card', {\n category: 'component',\n type: 'component',\n state: 'stable',\n styles,\n})\nexport class PdsCard extends PdsElement {\n /**\n * - **default** renders a card with a subtle border and padding\n * - **bare** renders a card without a border or drop shadow\n */\n @property()\n variant: 'default' | 'bare' = 'default';\n\n /**\n * - **default** renders a card with a border radius of 8px\n * - **sm** renders a card with a border radius of 4px\n */\n @property()\n borderRadiusSize: 'sm' | 'default' = 'default';\n\n /**\n * Adds an additional class for aligning items to the vertical center of the card.\n */\n @property({ type: Boolean })\n centerContentVertically: boolean = false;\n\n /**\n * - **default** renders a card in a vertical format\n * - **horizontal** renders a card in a horizontal format\n */\n @property()\n direction: 'horizontal' | 'default' = 'default';\n\n /**\n * Provides the src value for the href card, renders a clickable card\n * styled with a drop shadow but no border\n */\n @property()\n href?: string;\n\n /**\n * Used in combination with the href property to determine the target\n * for the clickable card. Not providing a value opens link in the same tab.\n * For a complete list of valid strings, see https://html.spec.whatwg.org/multipage/document-sequences.html#valid-navigable-target-name-or-keyword\n */\n @property()\n target?: string;\n\n /**\n * ARIA label string that describes a clickable pds-card for screen reader users\n */\n @property()\n ariaLabel: string;\n\n /**\n * If true, this property will remove the default padding from the card and\n * the content will extend all the way to the edges\n */\n @property({ type: Boolean })\n removePadding: boolean = false;\n\n /**\n * Boolean to represent that a card has no slotted link content, used\n * to determine logic for a11y features of the clickable card\n *\n * @internal\n */\n @property({ type: Boolean })\n hasNoSlottedLinkContent: boolean = true;\n\n /**\n * This grabs the pds-links from the header slot\n * @internal\n */\n @queryAssignedElements({ slot: 'header' })\n headerSlotElements: HTMLElement[];\n\n /**\n * This grabs the pds-links from the default slot\n * @internal\n */\n @queryAssignedElements({ slot: undefined })\n defaultSlotElements: HTMLElement[];\n\n /**\n * This grabs the pds-links from the footer slot\n * @internal\n */\n @queryAssignedElements({ slot: 'footer' })\n footerSlotElements: HTMLElement[];\n\n /**\n * Get summary text\n *\n * @returns string summary text\n *\n * @internal\n */\n getSummaryText(textContent: string | null) {\n if (textContent) {\n return textContent.trim();\n }\n\n return '';\n }\n\n /**\n * On click, a clickable card will open the src link and fire an event\n *\n * @internal\n */\n handleClick(e: MouseEvent) {\n if (this.href) {\n const target = e.target as HTMLElement;\n // fire event if a clickable card is clicked but the click isn't coming from an enclosed pds-link or anchor element\n if (\n (target.tagName.toLowerCase() !== 'pds-link' &&\n target.tagName.toLowerCase() !== 'a') ||\n target.classList.contains(this.classMod('clickable'))\n ) {\n const customEvent = new CustomEvent('pds-card-click', {\n bubbles: true,\n composed: true,\n detail: {\n summary: this.getSummaryText(this.textContent),\n },\n });\n this.dispatchEvent(customEvent);\n if (window) {\n if (this.target) {\n window.open(this.href, this.target);\n } else {\n window.location.href = sanitizeUrl(\n this.href ?? window.location.href,\n );\n }\n }\n }\n }\n }\n\n handleKeydown(e: KeyboardEvent) {\n if (this.href) {\n if (e.key === 'Enter') {\n // fire event if a clickable card is clicked with 'Enter' Key\n const customEvent = new CustomEvent('pds-card-click', {\n bubbles: true,\n composed: true,\n detail: {\n summary: this.getSummaryText(this.textContent),\n },\n });\n this.dispatchEvent(customEvent);\n if (window) {\n if (this.target) {\n window.open(this.href, this.target);\n } else {\n window.location.href = sanitizeUrl(\n this.href ?? window.location.href,\n );\n }\n }\n }\n }\n }\n\n /**\n * On mouseover, a clickable card will add the attribute 'hover' on\n * elements with a class of .pds-c-card__element-with-hover-state\n *\n * @internal\n */\n handleMouseover() {\n if (this.href) {\n const setHover = (element: HTMLElement) => {\n if (\n element.classList.contains(this.classEl('element-with-hover-state'))\n ) {\n element.setAttribute('hover', '');\n } else {\n element\n .querySelectorAll(`.${this.classEl('element-with-hover-state')}`)\n .forEach((hoverableItem) => {\n hoverableItem.setAttribute('hover', '');\n });\n }\n };\n\n this.headerSlotElements.forEach((element) => setHover(element));\n this.defaultSlotElements.forEach((element) => setHover(element));\n this.footerSlotElements.forEach((element) => setHover(element));\n }\n }\n\n /**\n * On mouseout, a clickable card will remove the attribute 'hover' on\n * elements with a class of .pds-c-card__element-with-hover-state\n */\n handleMouseout() {\n if (this.href) {\n const removeHover = (element: HTMLElement) => {\n if (\n element.classList.contains(this.classEl('element-with-hover-state'))\n ) {\n element.removeAttribute('hover');\n } else {\n element\n .querySelectorAll(`.${this.classEl('element-with-hover-state')}`)\n .forEach((hoverableItem) => {\n hoverableItem.removeAttribute('hover');\n });\n }\n };\n\n this.headerSlotElements.forEach((element: HTMLElement) =>\n removeHover(element),\n );\n this.defaultSlotElements.forEach((element: HTMLElement) =>\n removeHover(element),\n );\n this.footerSlotElements.forEach((element: HTMLElement) =>\n removeHover(element),\n );\n }\n }\n\n /**\n * This function checks for and tags within the card,\n * (first as the only slotted item, then as a child of a slotted item)\n * and then adds the hover class that is targeted to provide the hover\n * attribute when a clickable card is hovered.\n *\n * The tag will handle the hover effect due to the built\n * in support for the 'hover' attribute. An tag will need to have\n * the hover effect coded by the consuming application.\n */\n addHoverClassToClickableSlottedElements(slotName?: string) {\n let childElements = this.defaultSlotElements;\n\n if (this.href) {\n switch (slotName) {\n case 'header':\n childElements = this.headerSlotElements;\n break;\n case 'footer':\n childElements = this.footerSlotElements;\n break;\n default:\n childElements = this.defaultSlotElements;\n break;\n }\n childElements.forEach((element: HTMLElement) => {\n if (\n element.tagName.toLowerCase() === 'pds-link' ||\n element.tagName.toLowerCase() === 'a'\n ) {\n this.hasNoSlottedLinkContent = false;\n element.classList.add(this.classEl('element-with-hover-state'));\n } else {\n element.querySelectorAll('pds-link, a').forEach((internalElement) => {\n this.hasNoSlottedLinkContent = false;\n internalElement.classList.add(\n this.classEl('element-with-hover-state'),\n );\n });\n }\n });\n }\n }\n\n preflight() {\n if (this.target && !this.href) {\n console.warn(\n 'A target property without an href property will have no effect. Remove the target property to remove this warning.',\n this,\n );\n }\n if (this.ariaLabel && !this.href) {\n console.warn(\n 'An ariaLabel property without an href property will have no effect. Remove the ariaLabel property to remove this warning.',\n this,\n );\n }\n if (this.direction === 'horizontal' && this.centerContentVertically) {\n console.warn(\n 'The centerContentVertically property cannot be used when the card has a horizontal direction. Remove the centerContentVertically property to remove this warning.',\n this,\n );\n }\n if (this.variant === 'bare') {\n this.setAttribute('variant', 'bare');\n }\n }\n\n /**\n * @internal\n */\n get classNames() {\n return {\n [`${this.variant}`]: !!this.variant,\n [`${this.direction}`]: !!this.direction,\n [`border-radius-${this.borderRadiusSize}`]: !!this.borderRadiusSize,\n clickable: !!this.href,\n 'center-vertically':\n this.direction !== 'horizontal' &&\n this.centerContentVertically === true,\n 'remove-padding': !!this.removePadding,\n };\n }\n\n willUpdate() {\n if (\n this.innerHTML &&\n (this.innerHTML.indexOf('pds-link') > -1 ||\n this.innerHTML.indexOf(' -1)\n ) {\n this.hasNoSlottedLinkContent = false;\n }\n }\n\n protected override firstUpdated() {\n super.firstUpdated();\n\n if (this.slotNotEmpty('header')) {\n this.addHoverClassToClickableSlottedElements('header');\n }\n if (this.slotNotEmpty()) {\n this.addHoverClassToClickableSlottedElements();\n }\n if (this.slotNotEmpty('footer')) {\n this.addHoverClassToClickableSlottedElements('footer');\n }\n }\n\n updated(): void {\n if (this.shadowRoot) {\n const clickableAnchor = this.shadowRoot.querySelector(\n `.${this.classMod('clickable')}`,\n );\n // Make entire card link tabbable only if there is no visible internal link\n if (clickableAnchor && this.hasNoSlottedLinkContent) {\n clickableAnchor.setAttribute('tabindex', '0');\n }\n }\n }\n\n render() {\n this.preflight();\n if (this.href && this.hasNoSlottedLinkContent && !this.ariaLabel) {\n console.error(\n 'Cards with a href but no slotted pds-link must include an aria label.',\n this,\n );\n return nothing;\n }\n return html`\n ${this.slotNotEmpty('header') &&\n html`\n
\n \n
\n `}\n
\n \n
\n ${this.slotNotEmpty('footer') &&\n html`\n \n `}\n `;\n }\n}\n"],"names":["constants","dist","sanitizeUrl_1","constants_1","require$$0","isRelativeUrlWithoutProtocol","url","decodeHtmlCharacters","str","removedNullByte","match","dec","decodeURI","uri","sanitizeUrl","charsToDecode","decodedUrl","sanitizedUrl","urlSchemeParseResults","urlScheme","PdsCard","PdsElement","textContent","target","customEvent","setHover","element","hoverableItem","removeHover","slotName","childElements","internalElement","clickableAnchor","nothing","html","__decorateClass","property","queryAssignedElements","customElement","styles"],"mappings":"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","x_google_ignoreList":[0,1]}