{"version":3,"file":"utils.js","sources":["../../src/Toast/utils.ts"],"sourcesContent":["export const TOAST_SWIPE_START = 'toast.swipeStart'\nexport const TOAST_SWIPE_MOVE = 'toast.swipeMove'\nexport const TOAST_SWIPE_CANCEL = 'toast.swipeCancel'\nexport const TOAST_SWIPE_END = 'toast.swipeEnd'\n\nexport const VIEWPORT_NAME = 'ToastViewport'\nexport const VIEWPORT_DEFAULT_HOTKEY = ['F8']\nexport const VIEWPORT_PAUSE = 'toast.viewportPause'\nexport const VIEWPORT_RESUME = 'toast.viewportResume'\n\nexport type SwipeDirection = 'up' | 'down' | 'left' | 'right'\n\nexport type SwipeEvent = { currentTarget: EventTarget & HTMLElement } & Omit<\n CustomEvent<{ originalEvent: PointerEvent, delta: { x: number, y: number } }>,\n 'currentTarget'\n>\n\nexport function handleAndDispatchCustomEvent<\n E extends CustomEvent,\n OriginalEvent extends Event,\n>(\n name: string,\n handler: ((event: E) => void) | undefined,\n detail: { originalEvent: OriginalEvent } & (E extends CustomEvent\n ? D\n : never),\n) {\n const currentTarget = detail.originalEvent.currentTarget as HTMLElement\n const event = new CustomEvent(name, {\n bubbles: false,\n cancelable: true,\n detail,\n })\n if (handler)\n currentTarget.addEventListener(name, handler as EventListener, { once: true })\n\n currentTarget.dispatchEvent(event)\n}\n\nexport function isDeltaInDirection(delta: { x: number, y: number }, direction: SwipeDirection, threshold = 0) {\n const deltaX = Math.abs(delta.x)\n const deltaY = Math.abs(delta.y)\n const isDeltaX = deltaX > deltaY\n if (direction === 'left' || direction === 'right')\n return isDeltaX && deltaX > threshold\n else\n return !isDeltaX && deltaY > threshold\n}\n\nexport function isHTMLElement(node: any): node is HTMLElement {\n return node.nodeType === node.ELEMENT_NODE\n}\n\nexport function getAnnounceTextContent(container: HTMLElement) {\n const textContent: string[] = []\n const childNodes = Array.from(container.childNodes)\n\n childNodes.forEach((node) => {\n if (node.nodeType === node.TEXT_NODE && node.textContent)\n textContent.push(node.textContent)\n if (isHTMLElement(node)) {\n const isHidden = node.ariaHidden || node.hidden || node.style.display === 'none'\n const isExcluded = node.dataset.rekaToastAnnounceExclude === ''\n\n if (!isHidden) {\n if (isExcluded) {\n const altText = node.dataset.rekaToastAnnounceAlt\n if (altText)\n textContent.push(altText)\n }\n else {\n textContent.push(...getAnnounceTextContent(node))\n }\n }\n }\n })\n // We return a collection of text rather than a single concatenated string.\n // This allows SR VO to naturally pause break between nodes while announcing.\n return textContent\n}\n"],"names":[],"mappings":"AAAO,MAAM,iBAAoB,GAAA;AAC1B,MAAM,gBAAmB,GAAA;AACzB,MAAM,kBAAqB,GAAA;AAC3B,MAAM,eAAkB,GAAA;AAIxB,MAAM,cAAiB,GAAA;AACvB,MAAM,eAAkB,GAAA;AASf,SAAA,4BAAA,CAId,IACA,EAAA,OAAA,EACA,MAGA,EAAA;AACA,EAAM,MAAA,aAAA,GAAgB,OAAO,aAAc,CAAA,aAAA;AAC3C,EAAM,MAAA,KAAA,GAAQ,IAAI,WAAA,CAAY,IAAM,EAAA;AAAA,IAClC,OAAS,EAAA,KAAA;AAAA,IACT,UAAY,EAAA,IAAA;AAAA,IACZ;AAAA,GACD,CAAA;AACD,EAAI,IAAA,OAAA;AACF,IAAA,aAAA,CAAc,iBAAiB,IAAM,EAAA,OAAA,EAA0B,EAAE,IAAA,EAAM,MAAM,CAAA;AAE/E,EAAA,aAAA,CAAc,cAAc,KAAK,CAAA;AACnC;AAEO,SAAS,kBAAmB,CAAA,KAAA,EAAiC,SAA2B,EAAA,SAAA,GAAY,CAAG,EAAA;AAC5G,EAAA,MAAM,MAAS,GAAA,IAAA,CAAK,GAAI,CAAA,KAAA,CAAM,CAAC,CAAA;AAC/B,EAAA,MAAM,MAAS,GAAA,IAAA,CAAK,GAAI,CAAA,KAAA,CAAM,CAAC,CAAA;AAC/B,EAAA,MAAM,WAAW,MAAS,GAAA,MAAA;AAC1B,EAAI,IAAA,SAAA,KAAc,UAAU,SAAc,KAAA,OAAA;AACxC,IAAA,OAAO,YAAY,MAAS,GAAA,SAAA;AAAA;AAE5B,IAAO,OAAA,CAAC,YAAY,MAAS,GAAA,SAAA;AACjC;AAEO,SAAS,cAAc,IAAgC,EAAA;AAC5D,EAAO,OAAA,IAAA,CAAK,aAAa,IAAK,CAAA,YAAA;AAChC;AAEO,SAAS,uBAAuB,SAAwB,EAAA;AAC7D,EAAA,MAAM,cAAwB,EAAC;AAC/B,EAAA,MAAM,UAAa,GAAA,KAAA,CAAM,IAAK,CAAA,SAAA,CAAU,UAAU,CAAA;AAElD,EAAW,UAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AAC3B,IAAA,IAAI,IAAK,CAAA,QAAA,KAAa,IAAK,CAAA,SAAA,IAAa,IAAK,CAAA,WAAA;AAC3C,MAAY,WAAA,CAAA,IAAA,CAAK,KAAK,WAAW,CAAA;AACnC,IAAI,IAAA,aAAA,CAAc,IAAI,CAAG,EAAA;AACvB,MAAA,MAAM,WAAW,IAAK,CAAA,UAAA,IAAc,KAAK,MAAU,IAAA,IAAA,CAAK,MAAM,OAAY,KAAA,MAAA;AAC1E,MAAM,MAAA,UAAA,GAAa,IAAK,CAAA,OAAA,CAAQ,wBAA6B,KAAA,EAAA;AAE7D,MAAA,IAAI,CAAC,QAAU,EAAA;AACb,QAAA,IAAI,UAAY,EAAA;AACd,UAAM,MAAA,OAAA,GAAU,KAAK,OAAQ,CAAA,oBAAA;AAC7B,UAAI,IAAA,OAAA;AACF,YAAA,WAAA,CAAY,KAAK,OAAO,CAAA;AAAA,SAEvB,MAAA;AACH,UAAA,WAAA,CAAY,IAAK,CAAA,GAAG,sBAAuB,CAAA,IAAI,CAAC,CAAA;AAAA;AAClD;AACF;AACF,GACD,CAAA;AAGD,EAAO,OAAA,WAAA;AACT;;;;"}