@noaignite/react-centra-checkout
Version:
React components and helpers for Centra checkout api
1 lines • 2.15 kB
Source Map (JSON)
{"version":3,"sources":["../../src/internal/HtmlEmbed.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react'\n\ninterface HtmlEmbedProps extends React.ComponentProps<'div'> {\n html: string\n}\n\nexport function HtmlEmbed(props: HtmlEmbedProps): React.ReactElement {\n const { html, ...other } = props\n\n const ref = useRef<HTMLDivElement>(null)\n\n // We need to reload scripts in the html in order for them to run\n useEffect(() => {\n const createdScripts: HTMLScriptElement[] = []\n const node = ref.current\n\n if (node && html) {\n const scripts = node.getElementsByTagName('script')\n\n Array.from(scripts).forEach((script) => {\n if (script.type === 'application/json') {\n return\n }\n\n const scriptEl = document.createElement('script')\n\n if (script.src) {\n scriptEl.src = script.src\n } else {\n const textNode = document.createTextNode(script.innerHTML)\n scriptEl.appendChild(textNode)\n }\n\n script.remove()\n createdScripts.push(scriptEl)\n node.appendChild(scriptEl)\n })\n }\n\n return () => {\n createdScripts.forEach((script) => {\n script.remove()\n })\n }\n }, [html])\n\n return <div dangerouslySetInnerHTML={{ __html: html }} ref={ref} {...other} />\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkC;AA8CzB;AAxCF,SAAS,UAAU,OAA2C;AACnE,QAAM,EAAE,MAAM,GAAG,MAAM,IAAI;AAE3B,QAAM,UAAM,qBAAuB,IAAI;AAGvC,8BAAU,MAAM;AACd,UAAM,iBAAsC,CAAC;AAC7C,UAAM,OAAO,IAAI;AAEjB,QAAI,QAAQ,MAAM;AAChB,YAAM,UAAU,KAAK,qBAAqB,QAAQ;AAElD,YAAM,KAAK,OAAO,EAAE,QAAQ,CAAC,WAAW;AACtC,YAAI,OAAO,SAAS,oBAAoB;AACtC;AAAA,QACF;AAEA,cAAM,WAAW,SAAS,cAAc,QAAQ;AAEhD,YAAI,OAAO,KAAK;AACd,mBAAS,MAAM,OAAO;AAAA,QACxB,OAAO;AACL,gBAAM,WAAW,SAAS,eAAe,OAAO,SAAS;AACzD,mBAAS,YAAY,QAAQ;AAAA,QAC/B;AAEA,eAAO,OAAO;AACd,uBAAe,KAAK,QAAQ;AAC5B,aAAK,YAAY,QAAQ;AAAA,MAC3B,CAAC;AAAA,IACH;AAEA,WAAO,MAAM;AACX,qBAAe,QAAQ,CAAC,WAAW;AACjC,eAAO,OAAO;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,IAAI,CAAC;AAET,SAAO,4CAAC,SAAI,yBAAyB,EAAE,QAAQ,KAAK,GAAG,KAAW,GAAG,OAAO;AAC9E;","names":[]}