{"version":3,"file":"chunks/3cd4a22f2e1bfd.js","mappings":"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","sources":["webpack:///./resources/js/buyer-experience/common/has-a-sticky.ts","webpack:///./resources/js/components/generic/features-table.ts"],"sourcesContent":["const stuckHeader = document.querySelector('.imkt-sticky') as HTMLElement;\n\nexport default class StickyHeader {\n static height() {\n return stuckHeader ? stuckHeader.offsetHeight : 0;\n }\n}\n","import StickyHeader from '../../buyer-experience/common/has-a-sticky';\n\ntype FeaturesParams = { showText: string; hideText: string; showAllText: string; hideAllText: string; useExpandAll: boolean; useAccordionStyle: boolean };\n\nexport default class FeaturesTable {\n params: FeaturesParams;\n useExpandAll: boolean;\n expandAllButton: Element | null;\n clickyThingies: NodeListOf;\n\n constructor(domRoot: HTMLElement, params: FeaturesParams) {\n this.params = params;\n\n this.useExpandAll = params.useExpandAll;\n this.expandAllButton = domRoot.querySelector('.show-hide-all');\n this.clickyThingies = domRoot.querySelectorAll('.feature-name');\n this.init();\n }\n\n init() {\n this.bindEvents();\n this.expandByHash(true);\n }\n\n expandEvent(feature: Element, showAllText?: string) {\n const table = feature.nextElementSibling;\n const toggleText = feature.querySelector('.toggle');\n const circularIconSpan = toggleText?.querySelector('.circular-icon');\n\n const showText = this.params.showText ? this.params.showText : \"Show\";\n const hideText = this.params.hideText ? this.params.hideText : \"Hide\";\n\n let isActive = table?.classList.contains('active') || false;\n\n if (showAllText) {\n isActive = showAllText == \"hideAllItems\";\n }\n\n // Assert that selectors returned elements and not null (to staify TS type enforcement)\n if (!toggleText || !table) {\n return;\n }\n\n if (!isActive) {\n this.isDisplayHideToggle(toggleText, hideText, circularIconSpan);\n table.classList.add('active');\n feature.classList.add(\"active\");\n feature.setAttribute(\"data-label\", hideText);\n } else {\n this.isDisplayShowToggle(toggleText, showText, circularIconSpan);\n table.classList.remove('active');\n feature.classList.remove(\"active\");\n feature.setAttribute(\"data-label\", showText);\n }\n\n this.setAriaLabel(feature);\n }\n\n isDisplayHideToggle(toggleText, hideText, circularIconSpan) {\n if (this.params.useAccordionStyle) {\n if(circularIconSpan.classList.contains('plus')) {\n circularIconSpan.classList.remove('plus');\n }\n if(!circularIconSpan.classList.contains('minus')) {\n circularIconSpan.classList.add('minus');\n }\n } else {\n toggleText.innerHTML = hideText;\n }\n }\n\n isDisplayShowToggle(toggleText, showText, circularIconSpan) {\n if (this.params.useAccordionStyle) {\n if(circularIconSpan.classList.contains('minus')) {\n circularIconSpan.classList.remove('minus');\n }\n if(!circularIconSpan.classList.contains('plus')) {\n circularIconSpan.classList.add('plus');\n }\n } else {\n toggleText.innerHTML = showText;\n }\n }\n\n expandByHash(initialization?: boolean) {\n for (let i = 0; i < this.clickyThingies.length; i++) {\n if (window.location.hash == '#' + this.clickyThingies[i].id) {\n this.expandEvent(this.clickyThingies[i]);\n window.scrollTo(0, window.scrollY - StickyHeader.height());\n if (initialization) {\n /* on initalization, make a second call (this combats the loading jank) */\n setTimeout(() => {\n window.scrollTo(0, window.scrollY - StickyHeader.height() - 10);\n }, 50);\n }\n break;\n }\n }\n }\n\n setAriaLabel(featureNameElement) {\n let ariaLabel;\n const clickyThingiesLabel = featureNameElement.querySelector('.label')?.innerText;\n const clickyThingiesToggle = featureNameElement.querySelector('.toggle')?.innerText;\n if (clickyThingiesToggle) {\n ariaLabel = `${clickyThingiesLabel} ${clickyThingiesToggle}`;\n } else {\n const circularIconClassList = featureNameElement.querySelector('.toggle')?.querySelector('.circular-icon')?.classList;\n if (circularIconClassList?.contains('plus')) {\n ariaLabel = `${clickyThingiesLabel} plus`;\n } else {\n ariaLabel = `${clickyThingiesLabel} minus`;\n }\n }\n featureNameElement.setAttribute(\"aria-label\", ariaLabel);\n }\n\n bindEvents() {\n window.addEventListener(\"hashchange\", () => {\n this.expandByHash();\n });\n\n for (let i = 0; i < this.clickyThingies.length; i++) {\n this.setAriaLabel(this.clickyThingies[i]);\n this.clickyThingies[i].addEventListener(\"click\", (e) => {\n e.preventDefault();\n e.cancelBubble = true;\n e.target && this.expandEvent(e.target as Element);\n });\n\n // Bind copy header URL to clipboard and \"copied\" tooltip functionality\n this.clickyThingies[i].querySelectorAll('.copy-link').forEach((copyLink) => {\n copyLink.addEventListener(\"click\", () => {\n const clickyThingyId = this.clickyThingies[i].id;\n const headerAnchorUrl = `${window.location.href.replace(/#.*/i, '')}#${encodeURIComponent(clickyThingyId)}`;\n \n navigator.clipboard.writeText(headerAnchorUrl).then(() => {\n\n // Show success label (simple, no state management, use naive timeouts)\n copyLink.classList.add('success');\n setTimeout(() => {\n copyLink.classList.remove('success');\n }, 3000);\n });\n });\n });\n }\n if (this.useExpandAll) {\n this.expandAllButton?.addEventListener(\"click\", (e) => {\n const targetElement = e.target as HTMLElement;\n targetElement.classList.toggle(\"showing-all\");\n const shouldShow = targetElement.classList.contains(\"showing-all\");\n const newLabel = shouldShow ? this.params.hideAllText : this.params.showAllText;\n targetElement.innerHTML = newLabel;\n targetElement.setAttribute('data-label', newLabel);\n\n for (let i = 0; i < this.clickyThingies.length; i++) {\n this.expandEvent(this.clickyThingies[i], shouldShow ? \"activateAllItems\" : \"hideAllItems\");\n }\n });\n }\n }\n\n}\n"],"names":["stuckHeader","document","querySelector","StickyHeader","_classCallCheck","key","value","offsetHeight","FeaturesTable","domRoot","params","this","useExpandAll","expandAllButton","clickyThingies","querySelectorAll","init","bindEvents","expandByHash","feature","showAllText","table","nextElementSibling","toggleText","circularIconSpan","showText","hideText","isActive","classList","contains","isDisplayShowToggle","remove","setAttribute","isDisplayHideToggle","add","setAriaLabel","useAccordionStyle","innerHTML","initialization","i","length","window","location","hash","id","expandEvent","scrollTo","scrollY","height","setTimeout","featureNameElement","_featureNameElement$q","_featureNameElement$q2","ariaLabel","clickyThingiesLabel","innerText","clickyThingiesToggle","concat","_featureNameElement$q3","_featureNameElement$q4","circularIconClassList","_this","addEventListener","_this$expandAllButton","_loop","e","preventDefault","cancelBubble","target","forEach","copyLink","clickyThingyId","headerAnchorUrl","href","replace","encodeURIComponent","navigator","clipboard","writeText","then","targetElement","toggle","shouldShow","newLabel","hideAllText"],"sourceRoot":""}