{"version":3,"file":"static/js/250.chunk.js","mappings":"uMAQO,MAAMA,EACTC,IAEA,MAAMC,EAAMC,SAASC,cAAc,OACnCF,EAAIG,UAAYJ,EAChB,MAAMK,EAAaJ,EAAIK,qBAAqB,UAC5C,OAAOC,MAAMC,KAAKH,GACbI,KAAKC,IACF,MAAMC,EAAKD,EAAUE,aAAa,YAClC,OAAKD,EACE,CAAEE,UAAWH,EAAUN,UAAWO,MADzB,IAC6B,IAEhDG,OAAOC,QAAQ,EAyCxB,EAtCiBC,KACb,MAAMC,GAASC,EAAAA,EAAAA,YAAWC,EAAAA,IACnBC,EAASC,IAAcC,EAAAA,EAAAA,UAA4B,KAE1DC,EAAAA,EAAAA,YAAU,KACN,MAAMC,EAAOzB,EAAyBkB,EAAOQ,cACzCD,EAAKE,OAAS,GACdL,EAAWG,EACf,GACD,CAACP,EAAOQ,eAEX,MAAME,GAAkBC,EAAAA,EAAAA,UACpB,IACIR,EAAQX,KAAKoB,IACTC,EAAAA,EAAAA,KAAA,UACIC,QAASA,KACL,MAAMC,EAAO9B,SAAS+B,eAAeJ,EAAOlB,IACxCqB,EACAA,EAAKE,eAAe,CAChBC,SAAU,SACVC,MAAO,WAGXC,QAAQC,KAAK,mBAADC,OACWV,EAAOlB,GAAE,eAEpC,EAGJ,mCAAA4B,OAAkCV,EAAOlB,IACzC6B,wBAAyB,CAAEC,OAAQZ,EAAOhB,YAFrCgB,EAAOlB,OAKxB,CAACS,IAGL,OAAOU,EAAAA,EAAAA,KAAAY,EAAAA,SAAA,CAAAC,SAAGhB,GAAmB,C","sources":["Components/ScrollTo/ScrollTo.tsx"],"sourcesContent":["import { useContext, useEffect, useMemo, useState } from 'react'\r\nimport { GlobalContext } from '../../Context/GlobalContext'\r\n\r\ninterface IScrollToButton {\r\n id: string\r\n innerHtml: string\r\n}\r\n\r\nexport const parseButtonsFromTemplate = (\r\n template: string\r\n): IScrollToButton[] => {\r\n const div = document.createElement('div')\r\n div.innerHTML = template\r\n const buttonTags = div.getElementsByTagName('button')\r\n return Array.from(buttonTags)\r\n .map((buttonTag) => {\r\n const id = buttonTag.getAttribute('data-for')\r\n if (!id) return null // Skip invalid buttons\r\n return { innerHtml: buttonTag.innerHTML, id }\r\n })\r\n .filter(Boolean) as IScrollToButton[] // Filter out null values\r\n}\r\n\r\nconst ScrollTo = () => {\r\n const global = useContext(GlobalContext)\r\n const [buttons, setButtons] = useState([])\r\n\r\n useEffect(() => {\r\n const list = parseButtonsFromTemplate(global.htmlTemplate)\r\n if (list.length > 0) {\r\n setButtons(list)\r\n }\r\n }, [global.htmlTemplate])\r\n\r\n const renderedButtons = useMemo(\r\n () =>\r\n buttons.map((button) => (\r\n {\r\n const node = document.getElementById(button.id)\r\n if (node) {\r\n node.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n })\r\n } else {\r\n console.warn(\r\n `Element with ID ${button.id} not found.`\r\n )\r\n }\r\n }}\r\n key={button.id}\r\n aria-label={`Scroll to section: ${button.id}`}\r\n dangerouslySetInnerHTML={{ __html: button.innerHtml }}\r\n />\r\n )),\r\n [buttons]\r\n )\r\n\r\n return <>{renderedButtons}\r\n}\r\nexport default ScrollTo\r\n"],"names":["parseButtonsFromTemplate","template","div","document","createElement","innerHTML","buttonTags","getElementsByTagName","Array","from","map","buttonTag","id","getAttribute","innerHtml","filter","Boolean","ScrollTo","global","useContext","GlobalContext","buttons","setButtons","useState","useEffect","list","htmlTemplate","length","renderedButtons","useMemo","button","_jsx","onClick","node","getElementById","scrollIntoView","behavior","block","console","warn","concat","dangerouslySetInnerHTML","__html","_Fragment","children"],"sourceRoot":""}