{"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<Element>;\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":""}