EASYAIuniappNewUI/dist/dev/mp-weixin/components/firstui/fui-parse/fui-parse.js
2025-02-08 18:50:38 +08:00

424 lines
14 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
const common_vendor = require("../../../common/vendor.js");
const components_firstui_fuiParse_utils_html2json = require("./utils/html2json.js");
const components_firstui_fuiParse_marked_index = require("./marked/index.js");
const components_firstui_fuiParse_utils_util = require("./utils/util.js");
const firstuiCode = () => "./firstui-code.js";
const firstuiAudio = () => "./firstui-audio.js";
const BIND_NAME = "fuiParse";
const _sfc_main = {
name: "fui-parse",
inject: {
parsegroup: {
value: "parsegroup",
default: null
}
},
components: {
firstuiCode,
firstuiAudio
},
props: {
// 可选html | markdown (md)
language: {
type: String,
default: "html"
},
nodes: {
type: [String, Object, Array],
default: ""
}
},
watch: {
nodes: {
handler(val) {
if (!val)
return;
if (this.language === "markdown" || this.language === "md") {
const parseNodes = components_firstui_fuiParse_marked_index.marked(val);
setTimeout(() => {
this._parseNodes(parseNodes);
}, 0);
} else {
setTimeout(() => {
this._parseNodes(val);
}, 0);
}
},
immediate: true
}
},
beforeUnmount() {
components_firstui_fuiParse_utils_util.util.cacheInstance.remove(this.pageNodeKey);
},
data() {
return {
pageNodeKey: "",
nodesData: [],
bindData: {},
width: 0,
height: 0,
thBgcolor: true,
mode: ""
};
},
created() {
this.$nextTick(() => {
setTimeout(() => {
if (this.parsegroup) {
this.thBgcolor = this.parsegroup.thBgcolor;
}
this.mode = "widthFix";
}, 50);
});
},
methods: {
_parseNodes(nodes) {
this.pageNodeKey = this.parsegroup ? this.parsegroup.pageNodeKey : BIND_NAME;
if (typeof nodes === "string") {
this._parseHtml(nodes);
} else if (Array.isArray(nodes)) {
this.nodesData = nodes;
} else {
this.nodesData = [nodes];
}
},
_parseHtml(html) {
const transData = components_firstui_fuiParse_utils_html2json.HtmlToJson.html2json(html, this.pageNodeKey);
transData.view = {};
transData.view.imagePadding = 0;
this.nodesData = transData.nodes;
this.bindData = {
[this.pageNodeKey]: transData
};
components_firstui_fuiParse_utils_util.util.cacheInstance.set(this.pageNodeKey, transData);
},
/**
* 图片视觉宽高计算函数区
* @param {*} e
*/
fuiParseImgLoad(e) {
const {
from: tagFrom,
index
} = e.target.dataset || e.currentTarget.dataset || {};
if (typeof tagFrom !== "undefined" && tagFrom.length > 0) {
const {
width,
height
} = e.detail;
const recal = this._fuiAutoImageCal(width, height);
this.width = recal.imageWidth;
this.height = recal.imageHeight;
const nodesData = this.nodesData;
nodesData[index].loaded = true;
this.nodesData = nodesData;
}
},
/**
* 预览图片
* @param {*} e
*/
fuiParseImgTap(e) {
const {
src
} = e.target.dataset || e.currentTarget.dataset;
let {
imageUrls = []
} = components_firstui_fuiParse_utils_util.util.cacheInstance.get(this.pageNodeKey);
if (imageUrls.length == 0) {
imageUrls = [src];
}
if (this.parsegroup) {
if (this.parsegroup.imgPreview) {
common_vendor.index.previewImage({
current: src,
urls: imageUrls
});
}
this.parsegroup.previewImage(src, imageUrls);
} else {
common_vendor.index.previewImage({
current: src,
urls: imageUrls
});
}
},
/**
* 计算视觉优先的图片宽高
* @param {*} originalWidth
* @param {*} originalHeight
*/
_fuiAutoImageCal(originalWidth, originalHeight) {
let autoWidth = 0, autoHeight = 0;
const results = {};
const [windowWidth, windowHeight] = components_firstui_fuiParse_utils_util.util.getSystemInfo();
if (originalWidth > windowWidth) {
autoWidth = windowWidth;
autoHeight = autoWidth * originalHeight / originalWidth;
results.imageWidth = autoWidth;
results.imageHeight = autoHeight;
} else {
results.imageWidth = originalWidth;
results.imageHeight = originalHeight;
}
return results;
},
/**
* 增加a标签跳转
* @param {*} e
*/
fuiParseTagATap(e) {
const {
src = ""
} = e.currentTarget.dataset;
if (this.parsegroup) {
this.parsegroup.onATap(src);
return;
}
const isInnerPage = src.indexOf("http") === -1;
if (isInnerPage) {
common_vendor.index.navigateTo({
url: src
});
}
}
}
};
if (!Array) {
const _easycom_fui_parse2 = common_vendor.resolveComponent("fui-parse");
const _component_firstui_code = common_vendor.resolveComponent("firstui-code");
const _component_firstui_audio = common_vendor.resolveComponent("firstui-audio");
(_easycom_fui_parse2 + _component_firstui_code + _component_firstui_audio)();
}
const _easycom_fui_parse = () => Promise.resolve().then(() => Rjov5oiR55qE5byA5rqQ6aG555uuL215c2VsZi1hY2dpL3NyYy9jb21wb25lbnRzL2ZpcnN0dWkvZnVpLXBhcnNlL2Z1aS1wYXJzZS52dWU);
if (!Math) {
_easycom_fui_parse();
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.f($data.nodesData, (item, index, i0) => {
return common_vendor.e({
a: item.node == "element"
}, item.node == "element" ? common_vendor.e({
b: item.tag == "button"
}, item.tag == "button" ? {
c: common_vendor.f(item.nodes, (child, idx, i1) => {
return {
a: "231dc595-0-" + i0 + "-" + i1,
b: common_vendor.p({
nodes: child
}),
c: idx
};
})
} : item && item.tag == "code" ? {
e: "231dc595-1-" + i0,
f: common_vendor.p({
codeText: item.content,
language: item.attr && item.attr.lang
}),
g: common_vendor.n(item.classStr),
h: common_vendor.s(item.styleStr)
} : item.tag == "ol" ? {
j: common_vendor.f(item.nodes, (child, idx, i1) => {
return {
a: common_vendor.t(idx + 1),
b: "231dc595-2-" + i0 + "-" + i1,
c: common_vendor.p({
nodes: child
}),
d: idx
};
}),
k: common_vendor.n(item.classStr),
l: common_vendor.s(item.styleStr)
} : item.tag == "ul" ? {
n: common_vendor.f(item.nodes, (child, idx, i1) => {
return {
a: "231dc595-3-" + i0 + "-" + i1,
b: common_vendor.p({
nodes: child
}),
c: idx
};
}),
o: common_vendor.n(item.classStr),
p: common_vendor.s(item.style && item.style.Str)
} : item.tag == "li" ? {
r: common_vendor.f(item.nodes, (child, idx, i1) => {
return {
a: "231dc595-4-" + i0 + "-" + i1,
b: common_vendor.p({
nodes: child
}),
c: idx
};
}),
s: common_vendor.n(item.classStr),
t: common_vendor.s(item.styleStr)
} : item.tag == "video" ? {
w: common_vendor.n(item.classStr),
x: common_vendor.n(`fuiParse-${item.tag}-video`),
y: item.attr && item.attr.src,
z: common_vendor.n(item.classStr),
A: common_vendor.n(`fuiParse-${item.tag}`),
B: common_vendor.s(item.styleStr)
} : item.tag == "img" ? common_vendor.e({
D: item.attr && item.attr.src
}, item.attr && item.attr.src ? {
E: common_vendor.n(item.classStr),
F: common_vendor.n(`fuiParse-${item.tag}`),
G: common_vendor.n(item.loaded ? "fuiParse-img-fadein" : ""),
H: item.from,
I: item.attr.src,
J: item.imgIndex,
K: item.loaded ? item.attr.src : "",
L: common_vendor.o((...args) => $options.fuiParseImgTap && $options.fuiParseImgTap(...args), index),
M: $data.mode,
N: common_vendor.s("width:" + (item.attr.width || $data.width) + "px;height:" + (item.attr.height || $data.height) + "px;" + item.styleStr),
O: item.loaded ? 1 : "",
P: $data.mode,
Q: item.from,
R: index,
S: item.attr.src,
T: common_vendor.o((...args) => $options.fuiParseImgLoad && $options.fuiParseImgLoad(...args), index)
} : {}) : item.tag == "a" ? {
V: common_vendor.f(item.nodes, (child, idx, i1) => {
return {
a: "231dc595-5-" + i0 + "-" + i1,
b: common_vendor.p({
nodes: child
}),
c: idx
};
}),
W: common_vendor.o((...args) => $options.fuiParseTagATap && $options.fuiParseTagATap(...args), index),
X: common_vendor.n(item.classStr),
Y: common_vendor.n(`fuiParse-${item.tag}`),
Z: item.attr && item.attr.title,
aa: item.attr && item.attr.href,
ab: common_vendor.s(item.styleStr)
} : item.tag == "table" ? {
ad: common_vendor.f(item.nodes, (child, idx, i1) => {
return {
a: "231dc595-6-" + i0 + "-" + i1,
b: common_vendor.p({
nodes: child
}),
c: idx
};
}),
ae: common_vendor.n(item.classStr),
af: common_vendor.n(`fuiParse-${item.tag}`)
} : item.tag == "tr" ? {
ah: common_vendor.f(item.nodes, (child, idx, i1) => {
return {
a: common_vendor.n(child.classStr),
b: common_vendor.n(`fuiParse-${child.tag}`),
c: common_vendor.n(`fuiParse-${child.tag}-container`),
d: common_vendor.n(child.tag == "th" && $data.thBgcolor ? "fuiParse-th__bg" : ""),
e: common_vendor.s(child.styleStr),
f: "231dc595-7-" + i0 + "-" + i1,
g: common_vendor.p({
nodes: child
}),
h: idx
};
}),
ai: common_vendor.n(item.classStr),
aj: common_vendor.n(`fuiParse-${item.tag}`)
} : item.tag == "td" ? {
al: common_vendor.f(item.nodes, (child, idx, i1) => {
return {
a: common_vendor.n(child.classStr),
b: common_vendor.n(`fuiParse-${child.tag}`),
c: common_vendor.n(`fuiParse-${child.tag}-container`),
d: common_vendor.s(child.styleStr),
e: "231dc595-8-" + i0 + "-" + i1,
f: common_vendor.p({
nodes: child
}),
g: idx
};
}),
am: common_vendor.n(item.classStr),
an: common_vendor.n(`fuiParse-${item.tag}`)
} : item.tag == "audio" ? {
ap: common_vendor.n(item.classStr),
aq: common_vendor.s(item.styleStr),
ar: "231dc595-9-" + i0,
as: common_vendor.p({
src: item.attr && item.attr.src,
title: item.attr && item.attr.title,
desc: item.attr && item.attr.desc
})
} : item.tag == "br" ? {} : item.tagType == "block" ? {
aw: common_vendor.f(item.nodes, (child, idx, i1) => {
return {
a: "231dc595-10-" + i0 + "-" + i1,
b: common_vendor.p({
nodes: child
}),
c: idx
};
}),
ax: common_vendor.n(item.classStr),
ay: common_vendor.n(`fuiParse-${item.tag}`),
az: common_vendor.s(item.styleStr)
} : {
aA: common_vendor.f(item.nodes, (child, idx, i1) => {
return {
a: "231dc595-11-" + i0 + "-" + i1,
b: common_vendor.p({
nodes: child
}),
c: idx
};
}),
aB: common_vendor.n(item.classStr),
aC: common_vendor.n(`fuiParse-${item.tag}`),
aD: common_vendor.n(`fuiParse-${item.tagType}`),
aE: common_vendor.s(item.styleStr)
}, {
d: item && item.tag == "code",
i: item.tag == "ol",
m: item.tag == "ul",
q: item.tag == "li",
v: item.tag == "video",
C: item.tag == "img",
U: item.tag == "a",
ac: item.tag == "table",
ag: item.tag == "tr",
ak: item.tag == "td",
ao: item.tag == "audio",
at: item.tag == "br",
av: item.tagType == "block"
}) : item.node == "text" ? {
aG: common_vendor.f(item.textArray, (textItem, idx, i1) => {
return common_vendor.e({
a: textItem.node == "text"
}, textItem.node == "text" ? {
b: common_vendor.t(textItem.text),
c: common_vendor.n(textItem.text == "\\n" ? "fuiParse-hide" : "")
} : textItem.node == "element" ? {
e: textItem.baseSrc + textItem.text
} : {}, {
d: textItem.node == "element",
f: idx
});
}),
aH: common_vendor.s(item.styleStr)
} : {}, {
aF: item.node == "text",
aI: index
});
})
};
}
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-231dc595"]]);
wx.createComponent(Component);
const Rjov5oiR55qE5byA5rqQ6aG555uuL215c2VsZi1hY2dpL3NyYy9jb21wb25lbnRzL2ZpcnN0dWkvZnVpLXBhcnNlL2Z1aS1wYXJzZS52dWU = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null
}, Symbol.toStringTag, { value: "Module" }));