@ionic/core
Version:
Base components for Ionic
4 lines • 3.01 kB
JavaScript
/*!
* (C) Ionic http://ionicframework.com - MIT License
*/
import{a as t,c as e}from"./p-BpRUsN_W.js";const o=o=>{try{if(o instanceof h)return o.value;if(!r()||"string"!=typeof o||""===o)return o;if(/onload\s*=/i.test(o))return t("sanitizeDOMString - Content was discarded because it appears to contain an onload handler:",o.substring(0,100)),"";const e=document.createDocumentFragment(),n=document.createElement("div");e.appendChild(n),n.innerHTML=o,y.forEach((t=>{const o=e.querySelectorAll(t);for(let t=o.length-1;t>=0;t--){const n=o[t];n.parentNode?n.parentNode.removeChild(n):e.removeChild(n);const r=i(n);for(let t=0;t<r.length;t++)s(r[t],c)}}));const a=i(e);for(let t=0;t<a.length;t++)s(a[t],c);const l=document.createElement("div");l.appendChild(e);const d=l.querySelector("div");return null!==d?d.innerHTML:l.innerHTML}catch(t){return e("sanitizeDOMString",t),""}},n=t=>{r()&&(y.forEach((e=>{const o=t.querySelectorAll(e);for(let t=o.length-1;t>=0;t--)o[t].remove()})),s(t,l,d))},s=(t,e,o=[])=>{if(t.nodeType&&1!==t.nodeType)return;if("undefined"!=typeof NamedNodeMap&&!(t.attributes instanceof NamedNodeMap))return void t.remove();t.removeAttribute("style");for(let n=t.attributes.length-1;n>=0;n--){const s=t.attributes.item(n),i=s.name,r=i.toLowerCase();if(!f(r,e,o)){t.removeAttribute(i);continue}const a=s.value;if(null==a)continue;const c=a.replace(p,"").toLowerCase();(c.includes("javascript:")||c.includes("vbscript:")||u.includes(r)&&c.startsWith("data:")&&!m.test(c))&&t.removeAttribute(i)}const n=i(t);for(let t=0;t<n.length;t++)s(n[t],e,o)},i=t=>null!=t.children?t.children:t.childNodes,r=()=>{const t=window,e=t?.Ionic?.config;return!e||(e.get?e.get("sanitizerEnabled",!0):!0===e.sanitizerEnabled||void 0===e.sanitizerEnabled)},a=t=>{const e=[];t.tagName in b&&e.push(t);for(const o of Object.keys(b))e.push(...Array.from(t.querySelectorAll(o.toLowerCase())));for(const t of e){if(!(t.tagName in b))continue;const e=b[t.tagName];for(const o of e){const e=t[o];"string"==typeof e&&e.length>0&&!t.hasAttribute(o)&&t.setAttribute(o,e)}}},c=["class","id","href","src","name","slot"],l=["class","id","slot","name","title","alt","lang","dir","role","type","value","disabled","width","height","href","src","color","size","shape","fill","expand","mode","theme","icon","label","label-placement","justify","inset","lines","ios","md","xmlns","viewbox","preserveaspectratio","stroke","stroke-width","stroke-linecap","stroke-linejoin","stroke-opacity","stroke-dasharray","fill-rule","fill-opacity","clip-rule","d","points","cx","cy","r","rx","ry","x","y","x1","y1","x2","y2","transform","opacity"],d=["aria-","data-"],f=(t,e,o)=>!!e.includes(t)||o.some((e=>t.startsWith(e))),p=/[\u0000-\u0020\u007f-\u00a0]/g,u=["href","src"],m=/^data:image\/(?:png|jpe?g|gif|webp|bmp|avif|x-icon|vnd\.microsoft\.icon)[;,]/,y=["script","style","iframe","meta","link","object","embed","base"],b={"ION-ICON":["icon","name","src","ios","md"]};class h{constructor(t){this.value=t}}export{h as I,n as a,y as b,a as r,o as s}