gov_propagandize/components/mp-html/index.js
2025-02-07 16:29:25 +08:00

152 lines
5.3 KiB
JavaScript

"use strict";
function e(e, t, n) {
return t in e ? Object.defineProperty(e, t, {
value: n,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[t] = n, e
}
/*!
* mp-html v2.5.0
* https://github.com/jin-yufeng/mp-html
*
* Released under the MIT license
* Author: Jin Yufeng
*/
var t = require("./parser"),
n = [];
Component({
data: {
nodes: []
},
properties: {
containerStyle: String,
content: {
type: String,
value: "",
observer: function (e) {
this.setContent(e)
}
},
copyLink: {
type: Boolean,
value: !0
},
domain: String,
errorImg: String,
lazyLoad: Boolean,
loadingImg: String,
pauseVideo: {
type: Boolean,
value: !0
},
previewImg: {
type: null,
value: !0
},
scrollTable: Boolean,
selectable: null,
setTitle: {
type: Boolean,
value: !0
},
showImgMenu: {
type: Boolean,
value: !0
},
tagStyle: Object,
useAnchor: null
},
created: function () {
this.plugins = [];
for (var e = n.length; e--;) this.plugins.push(new n[e](this))
},
detached: function () {
this._hook("onDetached")
},
methods: {
in: function (e, t, n) {
e && t && n && (this._in = {
page: e,
selector: t,
scrollTop: n
})
},
navigateTo: function (t, n) {
var i = this;
return new Promise(function (o, r) {
if (!i.data.useAnchor) return void r(Error("Anchor is disabled"));
var a = wx.createSelectorQuery().in(i._in ? i._in.page : i).select((i._in ? i._in.selector : "._root") + (t ? "".concat(">>>", "#").concat(t) : "")).boundingClientRect();
i._in ? a.select(i._in.selector).scrollOffset().select(i._in.selector).boundingClientRect() : a.selectViewport().scrollOffset(), a.exec(function (t) {
if (!t[0]) return void r(Error("Label not found"));
var a = t[1].scrollTop + t[0].top - (t[2] ? t[2].top : 0) + (n || parseInt(i.data.useAnchor) || 0);
i._in ? i._in.page.setData(e({}, i._in.scrollTop, a)) : wx.pageScrollTo({
scrollTop: a,
duration: 300
}), o()
})
})
},
getText: function (e) {
var t = "";
return function e(n) {
for (var i = 0; i < n.length; i++) {
var o = n[i];
if ("text" === o.type) t += o.text.replace(/&amp;/g, "&");
else if ("br" === o.name) t += "\n";
else {
var r = "p" === o.name || "div" === o.name || "tr" === o.name || "li" === o.name || "h" === o.name[0] && o.name[1] > "0" && o.name[1] < "7";
r && t && "\n" !== t[t.length - 1] && (t += "\n"), o.children && e(o.children), r && "\n" !== t[t.length - 1] ? t += "\n" : "td" !== o.name && "th" !== o.name || (t += "\t")
}
}
}(e || this.data.nodes), t
},
getRect: function () {
var e = this;
return new Promise(function (t, n) {
wx.createSelectorQuery().in(e).select("._root").boundingClientRect().exec(function (e) {
return e[0] ? t(e[0]) : n(Error("Root label not found"))
})
})
},
pauseMedia: function () {
for (var e = (this._videos || []).length; e--;) this._videos[e].pause()
},
setPlaybackRate: function (e) {
this.playbackRate = e;
for (var t = (this._videos || []).length; t--;) this._videos[t].playbackRate(e)
},
setContent: function (e, n) {
var i = this;
this.imgList && n || (this.imgList = []), this._videos = [];
var o = {},
r = new t(this).parse(e);
if (n)
for (var a = this.data.nodes.length, s = r.length; s--;) o["nodes[".concat(a + s, "]")] = r[s];
else o.nodes = r;
if (this.setData(o, function () {
i._hook("onLoad"), i.triggerEvent("load")
}), this.data.lazyLoad || this.imgList._unloadimgs < this.imgList.length / 2) {
var l = 0,
c = function e(t) {
t && t.height || (t = {}), t.height === l ? i.triggerEvent("ready", t) : (l = t.height, setTimeout(function () {
i.getRect().then(e).catch(e)
}, 350))
};
this.getRect().then(c).catch(c)
} else this.imgList._unloadimgs || this.getRect().then(function (e) {
i.triggerEvent("ready", e)
}).catch(function () {
i.triggerEvent("ready", {})
})
},
_hook: function (e) {
for (var t = n.length; t--;) this.plugins[t][e] && this.plugins[t][e]()
},
_add: function (e) {
e.detail.root = this
}
}
});