{"version":3,"file":"static/js/sections-embed-grader-Grader.08a99304e75f85f164b7.js","mappings":"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","sources":["components/SectionComponents/embed/HTMLEmbed.tsx","components/SectionComponents/embed/grader/Grader.tsx","components/SectionComponents/helpers/DangerouslySetInnerHTMLHelper.ts","stateManagement/atoms/admin.ts"],"sourcesContent":["import React, { useEffect } from 'react';\nimport {\n addScriptsToDOM,\n removeScriptTags,\n removeLinkTags,\n addLinksToDOM,\n} from '../helpers/DangerouslySetInnerHTMLHelper';\nimport { isEditingAtom } from '@atoms/admin';\nimport { useAtom } from 'jotai';\nimport { Text } from '@web-for-marketing/react-ui';\nimport { Grid } from '@mui/material';\n\ninterface HTMLEmbedProps {\n html: string;\n}\n\nexport function HTMLEmbed({ html }: HTMLEmbedProps): JSX.Element {\n const [isEditing] = useAtom(isEditingAtom);\n const { sanitizedHtml: htmlWithoutScripts, scriptTags } = removeScriptTags(html);\n const { sanitizedHtml, linkTags } = removeLinkTags(htmlWithoutScripts);\n\n useEffect(() => {\n if (!isEditing) {\n addLinksToDOM(linkTags);\n addScriptsToDOM(scriptTags);\n document.documentElement.style.fontSize = 'initial';\n }\n }, [scriptTags, isEditing, linkTags]);\n\n return isEditing ? (\n \n Embedded pages are not available to preview.\n \n ) : (\n
\n );\n}\n","import React, { useEffect } from 'react';\nimport html from './index.html';\nimport { HTMLEmbed } from '../HTMLEmbed';\nimport { useStaticValues } from '@stateManagement/StaticValuesContext';\n\ndeclare const window: Window & {\n grecaptchaKey?: string;\n};\n\nexport default function Grader(): JSX.Element {\n const { recaptchaSiteKey } = useStaticValues();\n\n useEffect(() => {\n window.grecaptchaKey = recaptchaSiteKey;\n\n return () => {\n delete window.grecaptchaKey;\n };\n }, [recaptchaSiteKey]);\n\n return ;\n}\n","import { isInternalOrBaseLink } from '@helpers/string';\n\nexport const getDangerouslySetInnerHTML = (\n html: string,\n baseUrl: string,\n parseLinks?: boolean,\n hideLinks?: boolean\n): string => {\n if (parseLinks) {\n const spliHtml = html.split(' {\n if (index === 0) {\n return str;\n }\n const match = str.match(/href=\"(.*?)\"/);\n if (match) {\n let linkAttributes = '';\n if (hideLinks) {\n linkAttributes += ' tabIndex=\"-1\"';\n }\n if (match[1] && !isInternalOrBaseLink(match[1], baseUrl)) {\n linkAttributes += ' target=\"_blank\" rel=\"noopener noreferrer\"';\n }\n return ` {\n const domParser = new DOMParser();\n const parsedScriptTags = domParser.parseFromString(scriptTags, 'text/html').querySelectorAll('script');\n\n parsedScriptTags.forEach((scriptTag) => {\n const newScriptTag = document.createElement('script');\n newScriptTag.innerHTML = scriptTag.innerHTML;\n const attributes = scriptTag.attributes;\n for (let i = 0; i < attributes.length; i++) {\n const { name, value } = attributes[i];\n newScriptTag.setAttribute(name, value);\n }\n document.body.appendChild(newScriptTag);\n });\n};\n\nexport const addLinksToDOM = (linkTags: string): void => {\n const domParser = new DOMParser();\n const parsedLinkTags = domParser.parseFromString(linkTags, 'text/html').querySelectorAll('link');\n\n parsedLinkTags.forEach((linkTag) => {\n const newLinkTag = document.createElement('link');\n newLinkTag.innerHTML = linkTag.innerHTML;\n const attributes = linkTag.attributes;\n for (let i = 0; i < attributes.length; i++) {\n const { name, value } = attributes[i];\n newLinkTag.setAttribute(name, value);\n }\n document.head.appendChild(newLinkTag);\n });\n};\n\nexport const removeScriptTags = (html: string): { sanitizedHtml: string; scriptTags: string } => {\n const scriptTags: string[] = [];\n\n const sanitizedHtml = html.replace(\n /]*<\\/script>)(?:(?!\\/\\/)(?!\\/\\*)[^'\"]|\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\/\\/.*(?:\\n)|\\/\\*(?:(?:.|\\s))*?\\*\\/)*?<\\/script>/gi,\n (match) => {\n scriptTags.push(match);\n return '';\n }\n );\n\n return { sanitizedHtml, scriptTags: scriptTags.join('') };\n};\n\nexport const removeLinkTags = (html: string): { sanitizedHtml: string; linkTags: string } => {\n const linkTags: string[] = [];\n\n const sanitizedHtml = html.replace(/]*?(?:\\/>|>)/gi, (match) => {\n linkTags.push(match);\n return '';\n });\n\n return { sanitizedHtml, linkTags: linkTags.join('') };\n};\n","import { atom } from 'jotai';\nimport { getLanguageByCode } from '@helpers/languages';\nimport { LanguageCode } from '@models/languageCode';\n\nexport const isEditorExpandedAtom = atom(false);\n\nexport const isNavbarExpandedAtom = atom(false);\n\nexport const enableNavbarExpansionAtom = atom(true);\n\nexport const adminLanguageAtom = atom(getLanguageByCode(LanguageCode.en));\n\nexport const isEditingAtom = atom(false);\n\nexport const isSideNavbarVisibleAtom = atom(true);\n"],"names":["HTMLEmbed","html","isEditing","useAtom","isEditingAtom","sanitizedHtml","htmlWithoutScripts","scriptTags","removeScriptTags","linkTags","removeLinkTags","useEffect","addLinksToDOM","addScriptsToDOM","document","documentElement","style","fontSize","_jsx","Grid","container","alignItems","justifyContent","children","Text","dangerouslySetInnerHTML","__html","Grader","recaptchaSiteKey","useStaticValues","window","grecaptchaKey","getDangerouslySetInnerHTML","baseUrl","parseLinks","hideLinks","split","map","str","index","match","linkAttributes","isInternalOrBaseLink","join","DOMParser","parseFromString","querySelectorAll","forEach","scriptTag","newScriptTag","createElement","innerHTML","attributes","i","length","name","value","setAttribute","body","appendChild","linkTag","newLinkTag","head","replace","push","isEditorExpandedAtom","atom","isNavbarExpandedAtom","enableNavbarExpansionAtom","adminLanguageAtom","getLanguageByCode","LanguageCode","en","isSideNavbarVisibleAtom"],"sourceRoot":""}