Commit abb7d878 by TengFengLian

使用富文本渲染框架 parser

parent 2190640d
function t(t){var s=Object.assign(Object.create(null),i.userAgentStyles);for(var h in t)s[h]=(s[h]?s[h]+";":"")+t[h];this.styles=s}function s(t,s){this.data=t,this.floor=0,this.i=0,this.list=[],this.res=s,this.state=this.Space}var i=require("./config.js"),h=function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"};t.prototype.getStyle=function(t){this.styles=new s(t,this.styles).parse()},t.prototype.match=function(t,s){var i,h=(i=this.styles[t])?i+";":"";if(s.class)for(var e,a=s.class.split(" "),o=0;e=a[o];o++)(i=this.styles["."+e])&&(h+=i+";");return(i=this.styles["#"+s.id])&&(h+=i+";"),h},module.exports=t,s.prototype.parse=function(){for(var t;t=this.data[this.i];this.i++)this.state(t);return this.res},s.prototype.section=function(){return this.data.substring(this.start,this.i)},s.prototype.Space=function(t){"."==t||"#"==t||h(t)?(this.start=this.i,this.state=this.Name):"/"==t&&"*"==this.data[this.i+1]?this.Comment():i.blankChar[t]||";"==t||(this.state=this.Ignore)},s.prototype.Comment=function(){this.i=this.data.indexOf("*/",this.i)+1,this.i||(this.i=this.data.length),this.state=this.Space},s.prototype.Ignore=function(t){"{"==t?this.floor++:"}"!=t||--this.floor||(this.state=this.Space)},s.prototype.Name=function(t){i.blankChar[t]?(this.list.push(this.section()),this.state=this.NameSpace):"{"==t?(this.list.push(this.section()),this.Content()):","==t?(this.list.push(this.section()),this.Comma()):!h(t)&&(t<"0"||t>"9")&&"-"!=t&&"_"!=t&&(this.state=this.Ignore)},s.prototype.NameSpace=function(t){"{"==t?this.Content():","==t?this.Comma():i.blankChar[t]||(this.state=this.Ignore)},s.prototype.Comma=function(){for(;i.blankChar[this.data[++this.i]];);"{"==this.data[this.i]?this.Content():(this.start=this.i--,this.state=this.Name)},s.prototype.Content=function(){this.start=++this.i,-1==(this.i=this.data.indexOf("}",this.i))&&(this.i=this.data.length);for(var t,s=this.section(),i=0;t=this.list[i++];)this.res[t]?this.res[t]+=";"+s:this.res[t]=s;this.list=[],this.state=this.Space}
\ No newline at end of file
// 小程序富文本插件 https://github.com/jin-yufeng/Parser
var emoji;function t(t){var s=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.attrs={},this.CssHandler=new e(r.tagStyle,a),this.data=t,this.domain=r.domain,this.DOM=[],this.i=this.start=this.audioNum=this.imgNum=this.videoNum=0,r.prot=(this.domain||"").includes("://")?this.domain.split("://")[0]:"http",this.options=r,this.state=this.Text,this.STACK=[],this.bubble=function(){for(var t,e=s.STACK.length;t=s.STACK[--e];){if(i.richOnlyTags[t.name])return"table"!=t.name||Object.hasOwnProperty.call(t,"c")||(t.c=1),!1;t.c=1}return!0},this.decode=function(t,s){for(var e,a,r=-1;;){if(-1==(r=t.indexOf("&",r+1)))break;if(-1==(e=t.indexOf(";",r+2)))break;"#"==t[r+1]?(a=parseInt(("x"==t[r+2]?"0":"")+t.substring(r+2,e)),isNaN(a)||(t=t.substr(0,r)+String.fromCharCode(a)+t.substr(e+1))):(a=t.substring(r+1,e),(i.entities[a]||a==s)&&(t=t.substr(0,r)+(i.entities[a]||"&")+t.substr(e+1)))}return t},this.getUrl=function(t){return"/"==t[0]?"/"==t[1]?t=s.options.prot+":"+t:s.domain&&(t=s.domain+t):s.domain&&0!=t.indexOf("data:")&&!t.includes("://")&&(t=s.domain+"/"+t),t},this.isClose=function(){return">"==s.data[s.i]||"/"==s.data[s.i]&&">"==s.data[s.i+1]},this.section=function(){return s.data.substring(s.start,s.i)},this.parent=function(){return s.STACK[s.STACK.length-1]},this.siblings=function(){return s.STACK.length?s.parent().children:s.DOM}}var i=require("./config.js"),s=i.blankChar,e=require("./CssHandler.js"),a=wx.getSystemInfoSync().windowWidth;t.prototype.parse=function(){emoji&&(this.data=emoji.parseEmoji(this.data));for(var t;t=this.data[this.i];this.i++)this.state(t);for(this.state==this.Text&&this.setText();this.STACK.length;)this.popNode(this.STACK.pop());return this.DOM},t.prototype.setAttr=function(){var t=this.attrName.toLowerCase(),e=this.attrVal;for(i.boolAttrs[t]?this.attrs[t]="T":e&&("src"==t||"data-src"==t&&!this.attrs.src?this.attrs.src=this.getUrl(this.decode(e,"amp")):"href"==t||"style"==t?this.attrs[t]=this.decode(e,"amp"):"data-"!=t.substr(0,5)&&(this.attrs[t]=e)),this.attrVal="";s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)},t.prototype.setText=function(){var t,e=this.section();if(e)if(e=i.onText&&i.onText(e,function(){return t=!0})||e,t){this.data=this.data.substr(0,this.start)+e+this.data.substr(this.i);var a=this.start+e.length;for(this.i=this.start;this.i<a;this.i++)this.state(this.data[this.i])}else{if(!this.pre){for(var r,h,n=[],o=e.length;h=e[--o];)s[h]?(" "!=n[0]&&n.unshift(" "),"\n"==h&&void 0==r&&(r=0)):(n.unshift(h),r||(r=1));if(0==r)return;e=n.join("")}this.siblings().push({type:"text",text:this.decode(e)})}},t.prototype.setNode=function(){var t={name:this.tagName.toLowerCase(),attrs:this.attrs},e=i.selfClosingTags[t.name];if(this.attrs={},i.ignoreTags[t.name])if(e)if("source"==t.name){var r=this.parent();r&&("video"==r.name||"audio"==r.name)&&t.attrs.src&&r.attrs.source.push(t.attrs.src)}else"base"!=t.name||this.domain||(this.domain=t.attrs.href);else this.remove(t);else{var h=t.attrs,n=this.CssHandler.match(t.name,h,t)+(h.style||""),o={};switch(h.id&&(1&this.options.compress?h.id=void 0:this.options.useAnchor&&this.bubble()),2&this.options.compress&&h.class&&(h.class=void 0),t.name){case"a":case"ad":this.bubble();break;case"font":if(h.color&&(o.color=h.color,h.color=void 0),h.face&&(o["font-family"]=h.face,h.face=void 0),h.size){var l=parseInt(h.size);l<1?l=1:l>7&&(l=7);var d=["xx-small","x-small","small","medium","large","x-large","xx-large"];o["font-size"]=d[l-1],h.size=void 0}break;case"embed":var u=t.attrs.src||"",c=t.attrs.type||"";if(c.includes("video")||u.includes(".mp4")||u.includes(".3gp")||u.includes(".m3u8"))t.name="video";else{if(!(c.includes("audio")||u.includes(".m4a")||u.includes(".wav")||u.includes(".mp3")||u.includes(".aac")))break;t.name="audio"}t.attrs.autostart&&(t.attrs.autoplay="T"),t.attrs.controls="T";/*fallsthrough*/case"video":case"audio":h.id?this[t.name+"Num"]++:h.id=t.name+ ++this[t.name+"Num"],"video"==t.name&&(this.videoNum>3&&(t.lazyLoad=1),h.width&&(o.width=parseFloat(h.width)+(h.width.includes("%")?"%":"px"),h.width=void 0),h.height&&(o.height=parseFloat(h.height)+(h.height.includes("%")?"%":"px"),h.height=void 0)),h.controls||h.autoplay||(h.controls="T"),h.source=[],h.src&&(h.source.push(h.src),h.src=void 0),this.bubble();break;case"td":case"th":if(h.colspan||h.rowspan)for(var f,p=this.STACK.length;f=this.STACK[--p];)if("table"==f.name){f.c=void 0;break}}h.align&&(o["text-align"]=h.align,h.align=void 0);var m=n.split(";");n="";for(var g=0,v=m.length;g<v;g++){var b=m[g].split(":");if(!(b.length<2)){var x=b[0].trim().toLowerCase(),y=b.slice(1).join(":").trim();"-"==y[0]||y.includes("safe")?n+=";"+x+":"+y:o[x]&&!y.includes("import")&&o[x].includes("import")||(o[x]=y)}}if("img"==t.name){h.src&&!h.ignore&&(this.bubble()?h.i=(this.imgNum++).toString():h.ignore="T"),h.ignore&&(n+=";-webkit-touch-callout:none",o["max-width"]="100%");var C;o.width?C=o.width:h.width&&(C=h.width.includes("%")?h.width:h.width+"px"),C&&(o.width=C,h.width="100%",parseInt(C)>a&&(o.height="",h.height&&(h.height=void 0))),o.height?(h.height=o.height,o.height=""):h.height&&!h.height.includes("%")&&(h.height+="px")}for(var T in o){var w=o[T];if(w){if((T.includes("flex")||"order"==T||"self-align"==T)&&(t.c=1),w.includes("url")){var A=w.indexOf("(");if(-1!=A++){for(;'"'==w[A]||"'"==w[A]||s[w[A]];)A++;w=w.substr(0,A)+this.getUrl(w.substr(A))}}else w.includes("rpx")?w=w.replace(/[0-9.]+\s*rpx/g,function(t){return parseFloat(t)*a/750+"px"}):"white-space"==T&&w.includes("pre")&&!e&&(this.pre=t.pre=!0);n+=";"+T+":"+w}}n=n.substr(1),n&&(h.style=n),e?i.filter&&0==i.filter(t,this)||this.siblings().push(t):(t.children=[],"pre"==t.name&&i.highlight&&(this.remove(t),this.pre=t.pre=!0),this.siblings().push(t),this.STACK.push(t))}"/"==this.data[this.i]&&this.i++,this.start=this.i+1,this.state=this.Text},t.prototype.remove=function(t){var e=this,a=t.name,r=this.i,h=function(){var i=e.data.substring(r,e.i+1);t.attrs.xmlns||(i=' xmlns="http://www.w3.org/2000/svg"'+i);for(var s=r;"<"!=e.data[r];)r--;i=e.data.substring(r,s).replace("viewbox","viewBox")+i;var a=e.parent();"100%"==t.attrs.width&&a&&(a.attrs.style||"").includes("inline")&&(a.attrs.style="width:300px;max-width:100%;"+a.attrs.style),e.siblings().push({name:"img",attrs:{src:"data:image/svg+xml;utf8,"+i.replace(/#/g,"%23"),style:(/vertical[^;]+/.exec(t.attrs.style)||[]).shift(),ignore:"T"}})};if("svg"==t.name&&"/"==this.data[r])return h(this.i++);for(;;){if(-1==(this.i=this.data.indexOf("</",this.i+1)))return void(this.i="pre"==a||"svg"==a?r:this.data.length);for(this.start=this.i+=2;!s[this.data[this.i]]&&!this.isClose();)this.i++;if(this.section().toLowerCase()==a)return"pre"==a?(this.data=this.data.substr(0,r+1)+i.highlight(this.data.substring(r+1,this.i-5),t.attrs)+this.data.substr(this.i-5),this.i=r):("style"==a?this.CssHandler.getStyle(this.data.substring(r+1,this.i-7)):"title"==a&&(this.DOM.title=this.data.substring(r+1,this.i-7)),-1==(this.i=this.data.indexOf(">",this.i))&&(this.i=this.data.length),void("svg"==a&&h()))}},t.prototype.popNode=function(t){if(t.pre){t.pre=this.pre=void 0;for(var s=this.STACK.length;s--;)this.STACK[s].pre&&(this.pre=!0)}var e=this.siblings(),a=e.length,r=t.children;if("head"==t.name||i.filter&&0==i.filter(t,this))return e.pop();var h=t.attrs;if(i.blockTags[t.name]?t.name="div":i.trustTags[t.name]||(t.name="span"),t.c&&("ul"==t.name||"ol"==t.name))if((t.attrs.style||"").includes("list-style:none"))for(var n,o=0;n=r[o++];)"li"==n.name&&(n.name="div");else if("ul"==t.name){for(var l=1,d=this.STACK.length;d--;)"ul"==this.STACK[d].name&&l++;if(1!=l)for(var u=r.length;u--;)r[u].floor=l}else for(var c,f=0,p=1;c=r[f++];)"li"==c.name&&(c.type="ol",c.num=function(t,i){if("a"==i)return String.fromCharCode(97+(t-1)%26);if("A"==i)return String.fromCharCode(65+(t-1)%26);if("i"==i||"I"==i){t=(t-1)%99+1;var s=["I","II","III","IV","V","VI","VII","VIII","IX"],e=["X","XX","XXX","XL","L","LX","LXX","LXXX","XC"],a=(e[Math.floor(t/10)-1]||"")+(s[t%10-1]||"");return"i"==i?a.toLowerCase():a}return t}(p++,h.type)+".");if("table"==t.name){var m=h.cellpadding,g=h.cellspacing,v=h.border;if(t.c&&(this.bubble(),h.style=(h.style||"")+";display:table",m||(m=2),g||(g=2)),v&&(h.style="border:"+v+"px solid gray;"+(h.style||"")),g&&(h.style="border-spacing:"+g+"px;"+(h.style||"")),(v||m||t.c)&&function i(s){for(var e,a=0;e=s[a];a++)if("text"!=e.type){var r=e.attrs.style||"";t.c&&"t"==e.name[0]&&(e.c=1,r+=";display:table-"+("th"==e.name||"td"==e.name?"cell":"tr"==e.name?"row":"row-group")),"th"==e.name||"td"==e.name?(v&&(r="border:"+v+"px solid gray;"+r),m&&(r="padding:"+m+"px;"+r)):i(e.children||[]),r&&(e.attrs.style=r)}}(r),this.options.autoscroll){var b=Object.assign({},t);t.name="div",t.attrs={style:"overflow:scroll"},t.children=[b]}}this.CssHandler.pop&&this.CssHandler.pop(t),"div"!=t.name||Object.keys(h).length||1!=r.length||"div"!=r[0].name||(e[a-1]=r[0])},t.prototype.Text=function(t){if("<"==t){var i=this.data[this.i+1],s=function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"};s(i)?(this.setText(),this.start=this.i+1,this.state=this.TagName):"/"==i?(this.setText(),s(this.data[++this.i+1])?(this.start=this.i+1,this.state=this.EndTag):this.Comment()):"!"!=i&&"?"!=i||(this.setText(),this.Comment())}},t.prototype.Comment=function(){var t;t="--"==this.data.substring(this.i+2,this.i+4)?"--\x3e":"[CDATA["==this.data.substring(this.i+2,this.i+9)?"]]>":">",-1==(this.i=this.data.indexOf(t,this.i+2))?this.i=this.data.length:this.i+=t.length-1,this.start=this.i+1,this.state=this.Text},t.prototype.TagName=function(t){if(s[t]){for(this.tagName=this.section();s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)}else this.isClose()&&(this.tagName=this.section(),this.setNode())},t.prototype.AttrName=function(t){if("="==t||s[t]||this.isClose()){if(this.attrName=this.section(),s[t])for(;s[this.data[++this.i]];);if("="==this.data[this.i]){for(;s[this.data[++this.i]];);this.start=this.i--,this.state=this.AttrValue}else this.setAttr()}},t.prototype.AttrValue=function(t){if('"'==t||"'"==t){if(this.start++,-1==(this.i=this.data.indexOf(t,this.i+1)))return this.i=this.data.length;this.attrVal=this.section(),this.i++}else{for(;!s[this.data[this.i]]&&!this.isClose();this.i++);this.attrVal=this.section()}this.setAttr()},t.prototype.EndTag=function(t){if(s[t]||">"==t||"/"==t){for(var i=this.section().toLowerCase(),e=this.STACK.length;e--&&this.STACK[e].name!=i;);if(-1!=e){for(var a;(a=this.STACK.pop()).name!=i;)this.popNode(a);this.popNode(a)}else"p"!=i&&"br"!=i||this.siblings().push({name:i,attrs:{}});this.i=this.data.indexOf(">",this.i),this.start=this.i+1,-1==this.i?this.i=this.data.length:this.state=this.Text}},module.exports=t
\ No newline at end of file
function e(e){for(var t=Object.create(null),a=e.split(","),o=a.length;o--;)t[a[o]]=!0;return t}var t=wx.canIUse("editor");
module.exports={
errorImg:null,
filter:null,
highlight:null,
onText:null,
entities:{quot:'"',apos:"'",semi:";",nbsp:" ",ndash:"–",mdash:"—",middot:"·",lsquo:"‘",rsquo:"’",ldquo:"“",rdquo:"”",bull:"•",hellip:"…"},
blankChar:e(' ,\xA0,\t,\r,\n,\f'),
boolAttrs:e('autoplay,autostart,controls,ignore,loop,muted'),
blockTags:e('address,article,aside,body,caption,center,cite,footer,header,html,nav,section'+(t?'':',pre')),
ignoreTags:e('area,base,canvas,frame,iframe,input,link,map,meta,param,script,source,style,svg,textarea,title,track,wbr'+(t?',rp':'')),
richOnlyTags:e('a,colgroup,fieldset,legend,table'+(t?',bdi,bdo,rt,ruby':'')),
selfClosingTags:e('area,base,br,col,circle,ellipse,embed,frame,hr,img,input,line,link,meta,param,path,polygon,rect,source,track,use,wbr'),
trustTags:e('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,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video'+(t?',bdi,bdo,caption,pre,rt,ruby':'')),
userAgentStyles:{address:"font-style:italic",big:"display:inline;font-size:1.2em",blockquote:"background-color:#f6f6f6;border-left:3px solid #dbdbdb;color:#6c6c6c;padding:5px 0 5px 10px",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;overflow:scroll",s:"text-decoration:line-through",small:"display:inline;font-size:0.8em",u:"text-decoration:underline"}
}
\ No newline at end of file
// 小程序富文本插件 https://github.com/jin-yufeng/Parser
var dom;var search;function t(t){for(var e=t.length,i=5381;e--;)i+=(i<<5)+t.charCodeAt(e);return i}var e={},i=require("./libs/MpHtmlParser.js"),n=wx.getFileSystemManager&&wx.getFileSystemManager();Component({options:{pureDataPattern:/^[acdgtu]|W/},data:{nodes:[]},properties:{html:{type:String,observer:function(t){this.setContent(t)}},autopause:{type:Boolean,value:!0},autoscroll:Boolean,autosetTitle:{type:Boolean,value:!0},compress:Number,domain:String,lazyLoad:Boolean,loadingImg:String,selectable:Boolean,tagStyle:Object,showWithAnimation:Boolean,useAnchor:Boolean,useCache:Boolean},relations:{"../parser-group/parser-group":{type:"ancestor"}},created:function(){var t=this;this.imgList=[],this.imgList.setItem=function(t,e){var i=this;if(t&&e){if(0==e.indexOf("http")&&this.includes(e)){for(var s,a="",o=0;(s=e[o])&&("/"!=s||"/"==e[o-1]||"/"==e[o+1]);o++)a+=Math.random()>.5?s.toUpperCase():s;return a+=e.substr(o),this[t]=a}if(this[t]=e,e.includes("data:image")){var r=e.match(/data:image\/(\S+?);(\S+?),(.+)/);if(!r)return;var l=wx.env.USER_DATA_PATH+"/"+Date.now()+"."+r[1];n&&n.writeFile({filePath:l,data:r[3],encoding:r[2],success:function(){return i[t]=l}})}}},this.imgList.each=function(t){for(var e=0,i=this.length;e<i;e++)this.setItem(e,t(this[e],e,this))},dom&&(this.document=new dom(this)),search&&(this.search=function(e){return search(t,e)})},detached:function(){this.imgList.each(function(t){t&&t.includes(wx.env.USER_DATA_PATH)&&n&&n.unlink({filePath:t})}),clearInterval(this._timer)},methods:{in:function(t){t.page&&t.selector&&t.scrollTop&&(this._in=t)},navigateTo:function(t){var e=this;if(!this.data.useAnchor)return t.fail&&t.fail("Anchor is disabled");var i=(this._in?this._in.page:this).createSelectorQuery().select((this._in?this._in.selector:".top")+(t.id?">>>#"+t.id:"")).boundingClientRect();this._in?i.select(this._in.selector).fields({rect:!0,scrollOffset:!0}):i.selectViewport().scrollOffset(),i.exec(function(i){if(!i[0])return e.group?e.group.navigateTo(e.i,t):t.fail&&t.fail("Label not found");var n=i[1].scrollTop+i[0].top-(i[1].top||0)+(t.offset||0);if(e._in){var s={};s[e._in.scrollTop]=n,e._in.page.setData(s)}else wx.pageScrollTo({scrollTop:n});t.success&&t.success()})},getText:function(){for(var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.data.nodes,i="",n=0;t=e[n++];)if("text"==t.type)i+=t.text.replace(/&nbsp;/g," ").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&");else if("br"==t.type)i+="\n";else{var s="p"==t.name||"div"==t.name||"tr"==t.name||"li"==t.name||"h"==t.name[0]&&t.name[1]>"0"&&t.name[1]<"7";s&&i&&"\n"!=i[i.length-1]&&(i+="\n"),t.children&&(i+=this.getText(t.children)),s&&"\n"!=i[i.length-1]?i+="\n":"td"!=t.name&&"th"!=t.name||(i+="\t")}return i},getVideoContext:function(t){if(!t)return this.videoContexts;for(var e=this.videoContexts.length;e--;)if(this.videoContexts[e].id==t)return this.videoContexts[e]},setContent:function(n,s){var a,o=this,r=new i(n,this.data);if(this.data.useCache){var l=t(n);e[l]?a=e[l]:e[l]=a=r.parse()}else a=r.parse();this.triggerEvent("parse",a);var h={};if(s)for(var c=this.data.nodes.length,d=a.length;d--;)h["nodes["+(c+d)+"]"]=a[d];else h.nodes=a;this.showWithAnimation&&(h.showAm="animation: show .5s"),this.setData(h,function(){o.triggerEvent("load")}),a.title&&this.data.autosetTitle&&wx.setNavigationBarTitle({title:a.title}),this.imgList.length=0,this.videoContexts=[];for(var u,g=this.selectAllComponents(".top,.top>>>._node"),f=0;u=g[f++];){u.top=this;for(var m,p=0;m=u.data.nodes[p++];)if(!m.c)if("img"==m.name)this.imgList.setItem(m.attrs.i,m.attrs.src);else if("video"==m.name||"audio"==m.name){var v;v="video"==m.name?wx.createVideoContext(m.attrs.id,u):u.selectComponent("#"+m.attrs.id),v&&(v.id=m.attrs.id,this.videoContexts.push(v))}}var x;clearInterval(this._timer),this._timer=setInterval(function(){o.createSelectorQuery().select(".top").boundingClientRect(function(t){t&&(o.rect=t,t.height==x&&(o.triggerEvent("ready",t),clearInterval(o._timer)),x=t.height)}).exec()},350)}}})
\ No newline at end of file
{"component":true,"usingComponents":{"trees":"./trees/trees"}}
\ No newline at end of file
<slot wx:if="{{!nodes.length}}"/><trees class="top"style="{{selectable?'user-select:text;-webkit-user-select:text;':''}}{{showAm}}"lazy-load="{{lazyLoad}}"loading="{{loadingImg}}"nodes="{{nodes}}"/>
\ No newline at end of file
:host{display:block;overflow:scroll;webkit-overflow-scrolling:touch}.top{display:inherit}@keyframes show{0%{opacity:0}100%{opacity:1}}
\ No newline at end of file
function _defineProperty(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var t=require("../libs/config.js").errorImg;Component({data:{canIUse:!!wx.chooseMessageFile,placeholder:"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='300' height='225'/>",ctrl:[]},properties:{nodes:Array,lazyLoad:Boolean,loading:String},methods:{play:function(t){if(this.top.group&&this.top.group.pause(this.top.i),this.top.videoContexts.length>1&&this.top.data.autopause)for(var e=this.top.videoContexts.length;e--;)this.top.videoContexts[e].id!=t.currentTarget.id&&this.top.videoContexts[e].pause()},imgtap:function(t){var e=t.currentTarget.dataset.attrs;if(!e.ignore){var r=!0;if(this.top.triggerEvent("imgtap",{id:t.currentTarget.id,src:e.src,ignore:function(){return r=!1}}),r){if(this.top.group)return this.top.group.preview(this.top.i,e.i);var i=this.top.imgList,a=i[e.i]?i[e.i]:(i=[e.src],e.src);wx.previewImage({current:a,urls:i})}}},loadImg:function(t){var e=t.target.dataset.i;this.data.lazyLoad&&!this.data.ctrl[e]?this.setData(_defineProperty({},"ctrl["+e+"]",1)):this.data.loading&&2!=this.data.ctrl[e]&&this.setData(_defineProperty({},"ctrl["+e+"]",2))},linkpress:function(t){var e=!0,r=t.currentTarget.dataset.attrs;r.ignore=function(){return e=!1},this.top.triggerEvent("linkpress",r),e&&(r["app-id"]?wx.navigateToMiniProgram({appId:r["app-id"],path:r.path}):r.href&&("#"==r.href[0]?this.top.navigateTo({id:r.href.substring(1)}):0==r.href.indexOf("http")||0==r.href.indexOf("//")?wx.setClipboardData({data:r.href,success:function(){return wx.showToast({title:"链接已复制"})}}):wx.navigateTo({url:r.href,fail:function(){wx.switchTab({url:r.href})}})))},error:function(e){var r=e.target.dataset.source,i=e.target.dataset.i,a=this.data.nodes[i];if("video"==r||"audio"==r){var s=(a.i||0)+1;if(s<a.attrs.source.length)return this.setData(_defineProperty({},"nodes["+i+"].i",s))}else"img"==r&&t&&(this.top.imgList.setItem(e.target.dataset.index,t),this.setData(_defineProperty({},"nodes["+i+"].attrs.src",t)));this.top&&this.top.triggerEvent("error",{source:r,target:e.target,errMsg:e.detail.errMsg})},loadVideo:function(t){this.setData(_defineProperty({},"nodes["+t.target.dataset.i+"].attrs.autoplay",!0))}}})
\ No newline at end of file
{"component":true,"usingComponents":{"trees":"./trees"}}
\ No newline at end of file
<wxs module="handler">var s={abbr:1,b:1,big:1,code:1,del:1,em:1,i:1,ins:1,label:1,q:1,small:1,span:1,strong:1,sub:1,sup:1};module.exports={visited:function(s,e){s.instance.hasClass("_visited")||s.instance.addClass("_visited"),e.callMethod("linkpress",s)},use:function(e){return!e.c&&!s[e.name]&&-1==(e.attrs.style||"").indexOf("display:inline")}}</wxs><block wx:for="{{nodes}}" wx:for-item="n" wx:for-index="i" wx:key="i"><view wx:if="{{n.name=='img'}}" id="{{n.attrs.id}}" class="_img {{n.attrs.class}}" style="{{n.attrs.style}}" data-attrs="{{n.attrs}}" bindtap="imgtap"><rich-text nodes="{{[{attrs:{src:loading&&ctrl[i]!=2?loading:(lazyLoad&&!ctrl[i]?placeholder:n.attrs.src||''),alt:n.attrs.alt||'',width:n.attrs.width||'',style:'-webkit-touch-callout:none;max-width:100%;display:block'+(n.attrs.height?';height:'+n.attrs.height:'')},name:'img'}]}}"/><image class="_image" src="{{lazyLoad&&!ctrl[i]?placeholder:n.attrs.src}}" lazy-load="{{lazyLoad}}" show-menu-by-longpress="{{!n.attrs.ignore}}" data-i="{{i}}" data-index="{{n.attrs.i}}" data-source="img" bindload="loadImg" binderror="error"/></view><text wx:elif="{{n.type=='text'}}" decode>{{n.text}}</text><text wx:elif="{{n.name=='br'}}">\n</text><view wx:elif="{{n.name=='a'}}" id="{{n.attrs.id}}" class="_a {{n.attrs.class}}" hover-class="_hover" style="{{n.attrs.style}}" data-attrs="{{n.attrs}}" bindtap="{{canIUse?handler.visited:'linkpress'}}"><trees class="_node" nodes="{{n.children}}"/></view><block wx:elif="{{n.name=='video'}}"><view wx:if="{{n.lazyLoad&&!n.attrs.autoplay}}" id="{{n.attrs.id}}" class="_video {{n.attrs.class}}" style="{{n.attrs.style}}" data-i="{{i}}" bindtap="loadVideo"/><video wx:else id="{{n.attrs.id}}" class="{{n.attrs.class}}" style="{{n.attrs.style}}" autoplay="{{n.attrs.autoplay}}" controls="{{n.attrs.controls}}" loop="{{n.attrs.loop}}" muted="{{n.attrs.muted}}" poster="{{n.attrs.poster}}" src="{{n.attrs.source[n.i||0]}}" unit-id="{{n.attrs['unit-id']}}" data-i="{{i}}" data-source="video" binderror="error" bindplay="play"/></block><audio wx:elif="{{n.name=='audio'}}" id="{{n.attrs.id}}" class="{{n.attrs.class}}" style="{{n.attrs.style}}" author="{{n.attrs.author}}" autoplay="{{n.attrs.autoplay}}" controls="{{n.attrs.controls}}" loop="{{n.attrs.loop}}" name="{{n.attrs.name}}" poster="{{n.attrs.poster}}" src="{{n.attrs.source[n.i||0]}}" data-i="{{i}}" data-source="audio" binderror="error" bindplay="play"/><ad wx:elif="{{n.name=='ad'}}" class="{{n.attrs.class}}" style="{{n.attrs.style}}" unit-id="{{n.attrs['unit-id']}}" data-source="ad" binderror="error"/><view wx:elif="{{n.name=='li'}}" id="{{n.attrs.id}}" class="{{n.attrs.class}}" style="{{n.attrs.style}};display:flex"><view wx:if="{{n.type=='ol'}}" class="_ol-bef">{{n.num}}</view><view wx:else class="_ul-bef"><view wx:if="{{n.floor%3==0}}" class="_ul-p1">█</view><view wx:elif="{{n.floor%3==2}}" class="_ul-p2"/><view wx:else class="_ul-p1" style="border-radius:50%">█</view></view><trees class="_node _li" lazyLoad="{{lazyLoad}}" loading="{{loading}}" nodes="{{n.children}}"/></view><rich-text wx:elif="{{handler.use(n)}}" id="{{n.attrs.id}}" class="_p __{{n.name}}" nodes="{{[n]}}"/><trees wx:else id="{{n.attrs.id}}" class="_node _{{n.name}} {{n.attrs.class}}" style="{{n.attrs.style}}" lazyLoad="{{lazyLoad}}" loading="{{loading}}" nodes="{{n.children}}"/></block>
\ No newline at end of file
._a{display:inline;padding:1.5px 0 1.5px 0;color:#366092;word-break:break-all}._hover{text-decoration:underline;opacity:.7}._visited{color:#551a8b}._img{display:inline-block;max-width:100%;overflow:hidden}:host{display:inline}._blockquote,._div,._p,._ul,._ol,._li{display:block}._b,._strong{font-weight:bold}._code{font-family:monospace}._del{text-decoration:line-through}._em,._i{font-style:italic}._h1{font-size:2em}._h2{font-size:1.5em}._h3{font-size:1.17em}._h5{font-size:.83em}._h6{font-size:.67em}._h1,._h2,._h3,._h4,._h5,._h6{display:block;font-weight:bold}._image{display:block;width:100%;height:360px;margin-top:-360px;opacity:0}._ins{text-decoration:underline}._li{flex:1;width:0}._ol-bef{width:36px;margin-right:5px;text-align:right}._ul-bef{margin:0 12px 0 23px;line-height:normal}._ol-bef,._ul-bef{flex:none;user-select:none}._ul-p1{display:inline-block;width:.3em;height:.3em;overflow:hidden;line-height:.3em}._ul-p2{display:inline-block;width:.23em;height:.23em;border:.05em solid black;border-radius:50%}._q::before{content:'"'}._q::after{content:'"'}._sub{font-size:smaller;vertical-align:sub}._sup{font-size:smaller;vertical-align:super}.__bdi,.__bdo,.__ruby,.__rt{display:inline-block}._video{position:relative;display:inline-block;width:300px;height:225px;background-color:black}._video::after{position:absolute;top:50%;left:50%;margin:-15px 0 0 -15px;content:'';border-color:transparent transparent transparent white;border-style:solid;border-width:15px 0 15px 30px}
\ No newline at end of file
{ {
"usingComponents": {} "usingComponents": {
"parser":"../../component/parser.min/parser"
}
} }
\ No newline at end of file
...@@ -37,8 +37,8 @@ ...@@ -37,8 +37,8 @@
</view> </view>
</view> </view>
<view class="detail-describe"> <view class="detail-describe">
<rich-text nodes="{{info.describe}}"></rich-text>
<!-- <text>{{info.describe}}</text> --> <!-- <text>{{info.describe}}</text> -->
<parser html="{{info.describe}}"/>
</view> </view>
</view> </view>
......
{ {
"navigationBarTextStyle": "black", "navigationBarTextStyle": "black",
"usingComponents": {} "usingComponents": {
"parser":"../../component/parser.min/parser"
}
} }
\ No newline at end of file
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<image src="{{notice.cover}}" mode="center"></image> <image src="{{notice.cover}}" mode="center"></image>
</view> </view>
<view class="describe"> <view class="describe">
<rich-text nodes="{{notice.describe}}"></rich-text> <parser html="{{notice.describe}}"/>
<!-- <block wx:for="{{notice.describe}}" wx:for-index="index" wx:for-item="item" wx:key="index"> <!-- <block wx:for="{{notice.describe}}" wx:for-index="index" wx:for-item="item" wx:key="index">
<view> <view>
<text>{{item}}</text> <text>{{item}}</text>
......
{ {
"navigationBarTextStyle": "black", "navigationBarTextStyle": "black",
"usingComponents": {} "usingComponents": {
"parser":"../../component/parser.min/parser"
}
} }
\ No newline at end of file
...@@ -14,8 +14,8 @@ ...@@ -14,8 +14,8 @@
<text>{{item.date}}</text> <text>{{item.date}}</text>
</view> </view>
<view class="notice-describe"> <view class="notice-describe">
<rich-text nodes="{{item.describe}}"></rich-text>
<!-- <text>{{item.describe}}</text> --> <!-- <text>{{item.describe}}</text> -->
<parser html="{{item.describe}}"/>
</view> </view>
<view class="notice-cover" wx:if="{{item.cover !== ''}}"> <view class="notice-cover" wx:if="{{item.cover !== ''}}">
<image src="{{item.cover}}" mode="center"></image> <image src="{{item.cover}}" mode="center"></image>
......
{ {
"usingComponents": {} "usingComponents": {
"parser":"../../component/parser.min/parser"
}
} }
\ No newline at end of file
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<!-- <block wx:for="{{detailImageUrl}}" wx:for-index="index" wx:for-item="item" wx:key="index"> <!-- <block wx:for="{{detailImageUrl}}" wx:for-index="index" wx:for-item="item" wx:key="index">
<image mode="widthFix" src="{{item}}"></image> <image mode="widthFix" src="{{item}}"></image>
</block> --> </block> -->
<rich-text nodes="{{content}}"></rich-text> <parser html="{{content}}"/>
<view class="relation" wx:if="{{relation.length>0}}"> <view class="relation" wx:if="{{relation.length>0}}">
<view class="relation-title"> <view class="relation-title">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment