"use strict";var t=require("../../common/vendor.js");const e={trustTags:o("a,abbr,ad,audio,b,blockquote,br,code,col,colgroup,dd,del,dl,dt,div,em,fieldset,h1,h2,h3,h4,h5,h6,hr,i,img,ins,label,legend,li,ol,p,q,ruby,rt,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video"),blockTags:o("address,article,aside,body,caption,center,cite,footer,header,html,nav,pre,section"),inlineTags:o("abbr,b,big,code,del,em,i,ins,label,q,small,span,strong,sub,sup"),ignoreTags:o("area,base,canvas,embed,frame,head,iframe,input,link,map,meta,param,rp,script,source,style,textarea,title,track,wbr"),voidTags:o("area,base,br,col,circle,ellipse,embed,frame,hr,img,input,line,link,meta,param,path,polygon,rect,source,track,use,wbr"),entities:{lt:"<",gt:">",quot:'"',apos:"'",ensp:" ",emsp:" ",nbsp:" ",semi:";",ndash:"–",mdash:"—",middot:"·",lsquo:"‘",rsquo:"’",ldquo:"“",rdquo:"”",bull:"•",hellip:"…",larr:"←",uarr:"↑",rarr:"→",darr:"↓"},tagStyle:{address:"font-style:italic",big:"display:inline;font-size:1.2em",caption:"display:table-caption;text-align:center",center:"text-align:center",cite:"font-style:italic",dd:"margin-left:40px",mark:"background-color:yellow",pre:"font-family:monospace;white-space:pre",s:"text-decoration:line-through",small:"display:inline;font-size:0.8em",strike:"text-decoration:line-through",u:"text-decoration:underline"},svgDict:{animatetransform:"animateTransform",lineargradient:"linearGradient",viewbox:"viewBox",attributename:"attributeName",repeatcount:"repeatCount",repeatdur:"repeatDur"}},i={},{windowWidth:s,system:n}=t.index.getSystemInfoSync(),a=o(" ,\r,\n,\t,\f");let r=0;function o(t){const e=Object.create(null),i=t.split(",");for(let s=i.length;s--;)e[i[s]]=!0;return e}function l(t,i){let s=t.indexOf("&");for(;-1!==s;){const n=t.indexOf(";",s+3);let a;if(-1===n)break;"#"===t[s+1]?(a=parseInt(("x"===t[s+2]?"0":"")+t.substring(s+2,n)),isNaN(a)||(t=t.substr(0,s)+String.fromCharCode(a)+t.substr(n+1))):(a=t.substring(s+1,n),(e.entities[a]||"amp"===a&&i)&&(t=t.substr(0,s)+(e.entities[a]||"&")+t.substr(n+1))),s=t.indexOf("&",s+1)}return t}function h(t){let e=t.length-1;for(let i=e;i>=-1;i--)(-1===i||t[i].c||!t[i].name||"div"!==t[i].name&&"p"!==t[i].name&&"h"!==t[i].name[0]||(t[i].attrs.style||"").includes("inline"))&&(e-i>=5&&t.splice(i+1,e-i,{name:"div",attrs:{},children:t.slice(i+1,e+1)}),e=i-1)}function c(t){this.options=t||{},this.tagStyle=Object.assign({},e.tagStyle,this.options.tagStyle),this.imgList=t.imgList||[],this.plugins=t.plugins||[],this.attrs=Object.create(null),this.stack=[],this.nodes=[],this.pre=(this.options.containerStyle||"").includes("white-space")&&this.options.containerStyle.includes("pre")?2:0}function d(t){this.handler=t}c.prototype.parse=function(t){for(let i=this.plugins.length;i--;)this.plugins[i].onUpdate&&(t=this.plugins[i].onUpdate(t,e)||t);for(new d(this).parse(t);this.stack.length;)this.popNode();return this.nodes.length>50&&h(this.nodes),this.nodes},c.prototype.expose=function(){for(let t=this.stack.length;t--;){const e=this.stack[t];if(e.c||"a"===e.name||"video"===e.name||"audio"===e.name)return;e.c=1}},c.prototype.hook=function(t){for(let e=this.plugins.length;e--;)if(this.plugins[e].onParse&&!1===this.plugins[e].onParse(t,this))return!1;return!0},c.prototype.getUrl=function(t){const e=this.options.domain;return"/"===t[0]?"/"===t[1]?t=(e?e.split("://")[0]:"http")+":"+t:e&&(t=e+t):t.includes("data:")||t.includes("://")||e&&(t=e+"/"+t),t},c.prototype.parseStyle=function(t){const e=t.attrs,i=(this.tagStyle[t.name]||"").split(";").concat((e.style||"").split(";")),n={};let r="";e.id&&!this.xml&&(this.options.useAnchor?this.expose():"img"!==t.name&&"a"!==t.name&&"video"!==t.name&&"audio"!==t.name&&(e.id=void 0)),e.width&&(n.width=parseFloat(e.width)+(e.width.includes("%")?"%":"px"),e.width=void 0),e.height&&(n.height=parseFloat(e.height)+(e.height.includes("%")?"%":"px"),e.height=void 0);for(let o=0,l=i.length;o0||l.includes("safe"))r+=`;${e}:${l}`;else if(!n[e]||l.includes("import")||!n[e].includes("import")){if(l.includes("url")){let t=l.indexOf("(")+1;if(t){for(;'"'===l[t]||"'"===l[t]||a[l[t]];)t++;l=l.substr(0,t)+this.getUrl(l.substr(t))}}else l.includes("rpx")&&(l=l.replace(/[0-9.]+\s*rpx/g,(t=>parseFloat(t)*s/750+"px")));n[e]=l}}return t.attrs.style=r,n},c.prototype.onTagName=function(t){this.tagName=this.xml?t:t.toLowerCase(),"svg"===this.tagName&&(this.xml=(this.xml||0)+1)},c.prototype.onAttrName=function(t){"data-"===(t=this.xml?t:t.toLowerCase()).substr(0,5)?"data-src"!==t||this.attrs.src?"img"===this.tagName||"a"===this.tagName?this.attrName=t:this.attrName=void 0:this.attrName="src":(this.attrName=t,this.attrs[t]="T")},c.prototype.onAttrVal=function(t){const e=this.attrName||"";"style"===e||"href"===e?this.attrs[e]=l(t,!0):e.includes("src")?this.attrs[e]=this.getUrl(l(t,!0)):e&&(this.attrs[e]=t)},c.prototype.onOpenTag=function(t){const n=Object.create(null);n.name=this.tagName,n.attrs=this.attrs,this.options.nodes.length&&(n.type="node"),this.attrs=Object.create(null);const a=n.attrs,o=this.stack[this.stack.length-1],l=o?o.children:this.nodes,h=this.xml?t:e.voidTags[n.name];if(i[n.name]&&(a.class=i[n.name]+(a.class?" "+a.class:"")),"embed"===n.name){const t=a.src||"";t.includes(".mp4")||t.includes(".3gp")||t.includes(".m3u8")||(a.type||"").includes("video")?n.name="video":(t.includes(".mp3")||t.includes(".wav")||t.includes(".aac")||t.includes(".m4a")||(a.type||"").includes("audio"))&&(n.name="audio"),a.autostart&&(a.autoplay="T"),a.controls="T"}if("video"!==n.name&&"audio"!==n.name||("video"!==n.name||a.id||(a.id="v"+r++),a.controls||a.autoplay||(a.controls="T"),n.src=[],a.src&&(n.src.push(a.src),a.src=void 0),this.expose()),h){if(!this.hook(n)||e.ignoreTags[n.name])return void("base"!==n.name||this.options.domain?"source"===n.name&&o&&("video"===o.name||"audio"===o.name)&&a.src&&o.src.push(a.src):this.options.domain=a.href);const t=this.parseStyle(n);if("img"===n.name){if(a.src&&(a.src.includes("webp")&&(n.webp="T"),a.src.includes("data:")&&!a["original-src"]&&(a.ignore="T"),!a.ignore||n.webp||a.src.includes("cloud://"))){for(let i=this.stack.length;i--;){const e=this.stack[i];if("a"===e.name){n.a=e.attrs;break}const s=e.attrs.style||"";if(!s.includes("flex:")||s.includes("flex:0")||s.includes("flex: 0")||t.width&&t.width.includes("%"))if(s.includes("flex")&&"100%"===t.width)for(let n=i+1;n.5?e[t].toUpperCase():e[t];i+=e.substr(t),e=i}}this.imgList.push(e)}"inline"===t.display&&(t.display=""),a.ignore&&(t["max-width"]=t["max-width"]||"100%",a.style+=";-webkit-touch-callout:none"),parseInt(t.width)>s&&(t.height=void 0),isNaN(parseInt(t.width))||(n.w="T"),!isNaN(parseInt(t.height))&&(!t.height.includes("%")||o&&(o.attrs.style||"").includes("height"))&&(n.h="T")}else if("svg"===n.name)return l.push(n),this.stack.push(n),void this.popNode();for(const e in t)t[e]&&(a.style+=`;${e}:${t[e].replace(" !important","")}`);a.style=a.style.substr(1)||void 0,a.style||delete a.style}else("pre"===n.name||(a.style||"").includes("white-space")&&a.style.includes("pre"))&&2!==this.pre&&(this.pre=n.pre=1),n.children=[],this.stack.push(n);l.push(n)},c.prototype.onCloseTag=function(t){let e;for(t=this.xml?t:t.toLowerCase(),e=this.stack.length;e--&&this.stack[e].name!==t;);if(-1!==e)for(;this.stack.length>e;)this.popNode();else if("p"===t||"br"===t){(this.stack.length?this.stack[this.stack.length-1].children:this.nodes).push({name:t,attrs:{class:i[t]||"",style:this.tagStyle[t]||""}})}},c.prototype.popNode=function(){const i=this.options.editable,n=this.stack.pop();let a=n.attrs;const r=n.children,o=this.stack[this.stack.length-1],l=o?o.children:this.nodes;if(!this.hook(n)||e.ignoreTags[n.name])return"title"===n.name&&r.length&&"text"===r[0].type&&this.options.setTitle&&t.index.setNavigationBarTitle({title:r[0].text}),void l.pop();if(n.pre&&2!==this.pre){this.pre=n.pre=void 0;for(let t=this.stack.length;t--;)this.stack[t].pre&&(this.pre=1)}const c={};if("svg"===n.name){if(this.xml>1)return void this.xml--;let t="";const i=a.style;return a.style="",a.xmlns="http://www.w3.org/2000/svg",function i(s){if("text"===s.type)return void(t+=s.text);const n=e.svgDict[s.name]||s.name;t+="<"+n;for(const a in s.attrs){const i=s.attrs[a];i&&(t+=` ${e.svgDict[a]||a}="${i}"`)}if(s.children){t+=">";for(let t=0;t"}else t+="/>"}(n),n.name="img",n.attrs={src:"data:image/svg+xml;utf8,"+t.replace(/#/g,"%23"),style:i,ignore:"T"},n.children=void 0,void(this.xml=!1)}if(a.align&&("table"===n.name?"center"===a.align?c["margin-inline-start"]=c["margin-inline-end"]="auto":c.float=a.align:c["text-align"]=a.align,a.align=void 0),a.dir&&(c.direction=a.dir,a.dir=void 0),"font"===n.name&&(a.color&&(c.color=a.color,a.color=void 0),a.face&&(c["font-family"]=a.face,a.face=void 0),a.size)){let t=parseInt(a.size);isNaN(t)||(t<1?t=1:t>7&&(t=7),c["font-size"]=["x-small","small","medium","large","x-large","xx-large","xxx-large"][t-1]),a.size=void 0}if((a.class||"").includes("align-center")&&(c["text-align"]="center"),Object.assign(c,this.parseStyle(n)),"table"!==n.name&&parseInt(c.width)>s&&(c["max-width"]="100%",c["box-sizing"]="border-box"),e.blockTags[n.name]?i||(n.name="div"):e.trustTags[n.name]||this.xml||(n.name="span"),"a"===n.name||"ad"===n.name)this.expose();else if("video"===n.name)(c.height||"").includes("auto")&&(c.height=void 0);else if("ul"!==n.name&&"ol"!==n.name||!n.c&&!i){if("table"===n.name){let t=parseFloat(a.cellpadding),e=parseFloat(a.cellspacing);const s=parseFloat(a.border),o=c["border-color"],l=c["border-style"];if((n.c||i)&&(isNaN(t)&&(t=2),isNaN(e)&&(e=2)),s&&(a.style+=`;border:${s}px ${l||"solid"} ${o||"gray"}`),n.flag&&(n.c||i)){c.display="grid",e?(c["grid-gap"]=e+"px",c.padding=e+"px"):s&&(a.style+=";border-left:0;border-top:0");const h=[],d=[],p=[],u={};!function t(e){for(let i=0;i=50&&(n.c||i)&&!(c.display||"").includes("flex")&&h(r);for(const t in c)if(c[t]){const e=`;${t}:${c[t].replace(" !important","")}`;d&&(t.includes("flex")&&"flex-direction"!==t||"align-self"===t||t.includes("grid")||"-"===c[t][0]||t.includes("width")&&e.includes("%"))?(n.f+=e,"width"===t&&(a.style+=";width:100%")):a.style+=e}a.style=a.style.substr(1)||void 0;for(const t in a)a[t]||delete a[t]},c.prototype.onText=function(e){if(!this.pre){let t,i="";for(let s=0,n=e.length;s"===this.content[this.i]||e&&">"===this.content[this.i+1])&&(t&&this.handler[t](this.content.substring(this.start,this.i)),this.i+=e?2:1,this.start=this.i,this.handler.onOpenTag(e),"script"===this.handler.tagName?(this.i=this.content.indexOf("="a"&&t<="z"||t>="A"&&t<="Z")this.start!==this.i&&this.handler.onText(this.content.substring(this.start,this.i)),this.start=++this.i,this.state=this.tagName;else if("/"===t||"!"===t||"?"===t){this.start!==this.i&&this.handler.onText(this.content.substring(this.start,this.i));const e=this.content[this.i+2];if("/"===t&&(e>="a"&&e<="z"||e>="A"&&e<="Z"))return this.i+=2,this.start=this.i,void(this.state=this.endTag);let i="--\x3e";"!"===t&&"-"===this.content[this.i+2]&&"-"===this.content[this.i+3]||(i=">"),this.i=this.content.indexOf(i,this.i),-1!==this.i&&(this.i+=i.length,this.start=this.i)}else this.i++},d.prototype.tagName=function(){if(a[this.content[this.i]]){for(this.handler.onTagName(this.content.substring(this.start,this.i));a[this.content[++this.i]];);this.i"===t||"/"===t){if(this.handler.onCloseTag(this.content.substring(this.start,this.i)),">"!==t&&(this.i=this.content.indexOf(">",this.i),-1===this.i))return;this.start=++this.i,this.state=this.text}else this.i++},exports.Parser=c;