123456 |
- "use strict";var l=require("../../common/vendor.js"),d=require("./parser.js"),u=require("./editable/index.js");require("./editable/config.js");const _=()=>"./node/node.js",h=[u.Editable],g={name:"mp-html",data(){return{tooltip:null,slider:null,nodes:[]}},props:{editable:Boolean,placeholder:String,containerStyle:{type:String,default:""},content:{type:String,default:""},copyLink:{type:[Boolean,String],default:!0},domain:String,errorImg:{type:String,default:""},lazyLoad:{type:[Boolean,String],default:!1},loadingImg:{type:String,default:""},pauseVideo:{type:[Boolean,String],default:!0},previewImg:{type:[Boolean,String],default:!0},scrollTable:[Boolean,String],selectable:[Boolean,String],setTitle:{type:[Boolean,String],default:!0},showImgMenu:{type:[Boolean,String],default:!0},tagStyle:Object,useAnchor:[Boolean,Number]},emits:["load","ready","imgtap","linktap","play","error"],components:{node:_},watch:{editable(e){this.setContent(e?this.content:this.getContent()),e||this._maskTap()},content(e){this.setContent(e)}},created(){this.plugins=[];for(let e=h.length;e--;)this.plugins.push(new h[e](this))},mounted(){(this.content||this.editable)&&!this.nodes.length&&this.setContent(this.content)},beforeDestroy(){this._hook("onDetached"),clearInterval(this._timer)},methods:{_containTap(){!this._lock&&!this.slider&&(this._edit=void 0,this._maskTap())},_tooltipTap(e){this._tooltipcb(e.currentTarget.dataset.i),this.$set(this,"tooltip",null)},_sliderChanging(e){this._slideringcb(e.detail.value)},_sliderChange(e){this._slidercb(e.detail.value)},in(e,t,o){e&&t&&o&&(this._in={page:e,selector:t,scrollTop:o})},navigateTo(e,t){return new Promise((o,r)=>{if(!this.useAnchor){r(Error("Anchor is disabled"));return}t=t||parseInt(this.useAnchor)||0;let n=" ";n=">>>";const i=l.index.createSelectorQuery().in(this._in?this._in.page:this).select((this._in?this._in.selector:"._root")+(e?`${n}#${e}`:"")).boundingClientRect();this._in?i.select(this._in.selector).scrollOffset().select(this._in.selector).boundingClientRect():i.selectViewport().scrollOffset(),i.exec(s=>{if(!s[0]){r(Error("Label not found"));return}const a=s[1].scrollTop+s[0].top-(s[2]?s[2].top:0)+t;this._in?this._in.page[this._in.scrollTop]=a:l.index.pageScrollTo({scrollTop:a,duration:300}),o()})})},getText(e){let t="";return function o(r){for(let n=0;n<r.length;n++){const i=r[n];if(i.type==="text")t+=i.text.replace(/&/g,"&");else if(i.name==="br")t+=`
- `;else{const s=i.name==="p"||i.name==="div"||i.name==="tr"||i.name==="li"||i.name[0]==="h"&&i.name[1]>"0"&&i.name[1]<"7";s&&t&&t[t.length-1]!==`
- `&&(t+=`
- `),i.children&&o(i.children),s&&t[t.length-1]!==`
- `?t+=`
- `:(i.name==="td"||i.name==="th")&&(t+=" ")}}}(e||this.nodes),t},getRect(){return new Promise((e,t)=>{l.index.createSelectorQuery().in(this).select("#_root").boundingClientRect().exec(o=>o[0]?e(o[0]):t(Error("Root label not found")))})},pauseMedia(){for(let e=(this._videos||[]).length;e--;)this._videos[e].pause()},setContent(e,t){(!t||!this.imgList)&&(this.imgList=[]);const o=new d.Parser(this).parse(e);this.$set(this,"nodes",t?(this.nodes||[]).concat(o):o),this._videos=[],this.$nextTick(()=>{this._hook("onLoad"),this.$emit("load")});let r;clearInterval(this._timer),this._timer=setInterval(()=>{this.getRect().then(n=>{n.height===r&&(this.$emit("ready",n),clearInterval(this._timer)),r=n.height}).catch(()=>{})},350)},_hook(e){for(let t=h.length;t--;)this.plugins[t][e]&&this.plugins[t][e]()}}};Array||l.resolveComponent("node")();function m(e,t,o,r,n,i){return l.e({a:!n.nodes[0]},n.nodes[0]?{b:l.p({childs:n.nodes,opts:[o.lazyLoad,o.loadingImg,o.errorImg,o.showImgMenu,o.selectable,o.editable,o.placeholder,"nodes"],name:"span"})}:{},{c:n.tooltip},n.tooltip?{d:l.f(n.tooltip.items,(s,a,f)=>({a:l.t(s),b:a,c:a,d:l.o((...c)=>i._tooltipTap&&i._tooltipTap(...c),a)})),e:l.s("top:"+n.tooltip.top+"px")}:{},{f:n.slider},n.slider?{g:n.slider.value,h:n.slider.min,i:n.slider.max,j:l.o((...s)=>i._sliderChanging&&i._sliderChanging(...s)),k:l.o((...s)=>i._sliderChange&&i._sliderChange(...s)),l:l.s("top:"+n.slider.top+"px")}:{},{m:l.n((o.selectable?"_select ":"")+"_root"),n:l.s((o.editable?"min-height:200px;":"")+o.containerStyle),o:l.o((...s)=>i._containTap&&i._containTap(...s))})}var p=l._export_sfc(g,[["render",m],["__file","D:/work/his_user_app/uni_modules/mp-html/mp-html.vue"]]);wx.createComponent(p);
|