{"version":3,"file":"micro-markup.es.min.js","sources":["../../../packages/coveo-search/src/tools/micro-markup.ts"],"sourcesContent":["type AttrChecker = (attr: Attr) => boolean;\nconst createMicroMarkup = (allowed: Record<string, (string | AttrChecker)[]>) => {\n const allowedTags = Object.entries(allowed)\n .reduce((map, [tag, checkers]) => map.set(\n tag.toUpperCase(),\n checkers.map((checker) => {\n if (typeof checker === \"function\") { return checker; }\n return ({ name }: Attr) => name === checker;\n })\n ), new Map<string, AttrChecker[]>())\n\n return (innerHTML: string) => {\n const sandbox = Object.assign(document.createElement('div'), { innerHTML })\n const allNodes = sandbox.querySelectorAll(\"*\");\n for (let i = 0; i < allNodes.length; i++) {\n const node = allNodes[i];\n const attrsChekers = allowedTags.get(node.tagName)\n if (!attrsChekers) {\n node.remove();\n console.error(TypeError(`Not allowed tag <${node.tagName.toLowerCase()}/>`));\n continue;\n }\n const attributes = node.attributes\n for (let j = attributes.length - 1; j >= 0; j--) {\n const attribute = attributes[j];\n if (!attribute) { continue; }\n if (!attrsChekers.some((attrsCheker) => attrsCheker(attribute))) {\n attributes.removeNamedItem(attribute.name)\n console.error(TypeError(\n `Not allowed attribute <${node.tagName.toLowerCase()} ${attribute.name}=\"${attribute.value}\"/>`\n ))\n }\n }\n if (node.tagName === \"A\") {\n node.setAttribute(\"rel\", \"noopener noreferrer\")\n node.setAttribute(\"target\", \"_blank\")\n }\n }\n return sandbox.innerHTML\n }\n}\n\nexport default createMicroMarkup"],"names":["createMicroMarkup","allowed","allowedTags","Object","entries","reduce","map","tag","checkers","set","toUpperCase","checker","name","Map","innerHTML","sandbox","assign","document","createElement","allNodes","querySelectorAll","i","length","node","attrsChekers","get","tagName","remove","error","TypeError","toLowerCase","attributes","j","attribute","some","attrsCheker","removeNamedItem","console","value","setAttribute"],"mappings":"AACMA,MAAAA,IAAoBA,CAACC,MAAsD;AAC7E,QAAMC,IAAcC,OAAOC,QAAQH,CAAO,EACrCI,OAAO,CAACC,GAAK,CAACC,GAAKC,CAAQ,MAAMF,EAAIG,IAClCF,EAAIG,YACJF,GAAAA,EAASF,IAAKK,CAAYA,MAClB,OAAOA,KAAY,aAAqBA,IACrC,CAAC;AAAA,IAAEC,MAAAA;AAAAA,EAAAA,MAAiBA,MAASD,CACvC,CACL,GAAG,oBAAIE,KAA4B;AAEvC,SAAO,CAACC,MAAsB;AAC1B,UAAMC,IAAUZ,OAAOa,OAAOC,SAASC,cAAc,KAAK,GAAG;AAAA,MAAEJ,WAAAA;AAAAA,IAAAA,CAAW,GACpEK,IAAWJ,EAAQK,iBAAiB,GAAG;AAC7C,aAASC,IAAI,GAAGA,IAAIF,EAASG,QAAQD,KAAK;AAChCE,YAAAA,IAAOJ,EAASE,CAAC,GACjBG,IAAetB,EAAYuB,IAAIF,EAAKG,OAAO;AACjD,UAAI,CAACF,GAAc;AACfD,QAAAA,EAAKI,OAAO,GACJC,QAAAA,MAAMC,UAAU,oBAAoBN,EAAKG,QAAQI,YAAa,CAAA,IAAI,CAAC;AAC3E;AAAA,MACJ;AACA,YAAMC,IAAaR,EAAKQ;AACxB,eAASC,IAAID,EAAWT,SAAS,GAAGU,KAAK,GAAGA,KAAK;AACvCC,cAAAA,IAAYF,EAAWC,CAAC;AAC9B,QAAKC,MACAT,EAAaU,KAAMC,OAAgBA,EAAYF,CAAS,CAAC,MAC/CG,EAAAA,gBAAgBH,EAAUrB,IAAI,GACzCyB,QAAQT,MAAMC,UACV,0BAA0BN,EAAKG,QAAQI,YAAa,CAAA,IAAIG,EAAUrB,IAAI,KAAKqB,EAAUK,KAAK,KAC9F,CAAC;AAAA,MAET;AACIf,MAAAA,EAAKG,YAAY,QACZa,EAAAA,aAAa,OAAO,qBAAqB,GACzCA,EAAAA,aAAa,UAAU,QAAQ;AAAA,IAE5C;AACA,WAAOxB,EAAQD;AAAAA,EAAAA;AAEvB;"}