feat:初始提交uni-app项目
This commit is contained in:
269
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/mp-html.js
vendored
Normal file
269
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/mp-html.js
vendored
Normal file
@@ -0,0 +1,269 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../../../common/vendor.js");
|
||||
const uni_modules_mpHtml_components_mpHtml_parser = require("./parser.js");
|
||||
const node = () => "./node/node.js";
|
||||
const plugins = [];
|
||||
const _sfc_main = {
|
||||
name: "mp-html",
|
||||
data() {
|
||||
return {
|
||||
nodes: []
|
||||
};
|
||||
},
|
||||
props: {
|
||||
containerStyle: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
content: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
copyLink: {
|
||||
type: [Boolean, String],
|
||||
default: true
|
||||
},
|
||||
domain: String,
|
||||
errorImg: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
lazyLoad: {
|
||||
type: [Boolean, String],
|
||||
default: false
|
||||
},
|
||||
loadingImg: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
pauseVideo: {
|
||||
type: [Boolean, String],
|
||||
default: true
|
||||
},
|
||||
previewImg: {
|
||||
type: [Boolean, String],
|
||||
default: true
|
||||
},
|
||||
scrollTable: [Boolean, String],
|
||||
selectable: [Boolean, String],
|
||||
setTitle: {
|
||||
type: [Boolean, String],
|
||||
default: true
|
||||
},
|
||||
showImgMenu: {
|
||||
type: [Boolean, String],
|
||||
default: true
|
||||
},
|
||||
tagStyle: Object,
|
||||
useAnchor: [Boolean, Number]
|
||||
},
|
||||
emits: ["load", "ready", "imgtap", "linktap", "play", "error"],
|
||||
components: {
|
||||
node
|
||||
},
|
||||
watch: {
|
||||
content(content) {
|
||||
this.setContent(content);
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.plugins = [];
|
||||
for (let i = plugins.length; i--; ) {
|
||||
this.plugins.push(new plugins[i](this));
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
if (this.content && !this.nodes.length) {
|
||||
this.setContent(this.content);
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
this._hook("onDetached");
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* @description 将锚点跳转的范围限定在一个 scroll-view 内
|
||||
* @param {Object} page scroll-view 所在页面的示例
|
||||
* @param {String} selector scroll-view 的选择器
|
||||
* @param {String} scrollTop scroll-view scroll-top 属性绑定的变量名
|
||||
*/
|
||||
in(page, selector, scrollTop) {
|
||||
if (page && selector && scrollTop) {
|
||||
this._in = {
|
||||
page,
|
||||
selector,
|
||||
scrollTop
|
||||
};
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description 锚点跳转
|
||||
* @param {String} id 要跳转的锚点 id
|
||||
* @param {Number} offset 跳转位置的偏移量
|
||||
* @returns {Promise}
|
||||
*/
|
||||
navigateTo(id, offset) {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!this.useAnchor) {
|
||||
reject(Error("Anchor is disabled"));
|
||||
return;
|
||||
}
|
||||
offset = offset || parseInt(this.useAnchor) || 0;
|
||||
let deep = " ";
|
||||
deep = ">>>";
|
||||
const selector = common_vendor.index.createSelectorQuery().in(this._in ? this._in.page : this).select((this._in ? this._in.selector : "._root") + (id ? `${deep}#${id}` : "")).boundingClientRect();
|
||||
if (this._in) {
|
||||
selector.select(this._in.selector).scrollOffset().select(this._in.selector).boundingClientRect();
|
||||
} else {
|
||||
selector.selectViewport().scrollOffset();
|
||||
}
|
||||
selector.exec((res) => {
|
||||
if (!res[0]) {
|
||||
reject(Error("Label not found"));
|
||||
return;
|
||||
}
|
||||
const scrollTop = res[1].scrollTop + res[0].top - (res[2] ? res[2].top : 0) + offset;
|
||||
if (this._in) {
|
||||
this._in.page[this._in.scrollTop] = scrollTop;
|
||||
} else {
|
||||
common_vendor.index.pageScrollTo({
|
||||
scrollTop,
|
||||
duration: 300
|
||||
});
|
||||
}
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
},
|
||||
/**
|
||||
* @description 获取文本内容
|
||||
* @return {String}
|
||||
*/
|
||||
getText(nodes) {
|
||||
let text = "";
|
||||
(function traversal(nodes2) {
|
||||
for (let i = 0; i < nodes2.length; i++) {
|
||||
const node2 = nodes2[i];
|
||||
if (node2.type === "text") {
|
||||
text += node2.text.replace(/&/g, "&");
|
||||
} else if (node2.name === "br") {
|
||||
text += "\n";
|
||||
} else {
|
||||
const isBlock = node2.name === "p" || node2.name === "div" || node2.name === "tr" || node2.name === "li" || node2.name[0] === "h" && node2.name[1] > "0" && node2.name[1] < "7";
|
||||
if (isBlock && text && text[text.length - 1] !== "\n") {
|
||||
text += "\n";
|
||||
}
|
||||
if (node2.children) {
|
||||
traversal(node2.children);
|
||||
}
|
||||
if (isBlock && text[text.length - 1] !== "\n") {
|
||||
text += "\n";
|
||||
} else if (node2.name === "td" || node2.name === "th") {
|
||||
text += " ";
|
||||
}
|
||||
}
|
||||
}
|
||||
})(nodes || this.nodes);
|
||||
return text;
|
||||
},
|
||||
/**
|
||||
* @description 获取内容大小和位置
|
||||
* @return {Promise}
|
||||
*/
|
||||
getRect() {
|
||||
return new Promise((resolve, reject) => {
|
||||
common_vendor.index.createSelectorQuery().in(this).select("#_root").boundingClientRect().exec((res) => res[0] ? resolve(res[0]) : reject(Error("Root label not found")));
|
||||
});
|
||||
},
|
||||
/**
|
||||
* @description 暂停播放媒体
|
||||
*/
|
||||
pauseMedia() {
|
||||
for (let i = (this._videos || []).length; i--; ) {
|
||||
this._videos[i].pause();
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description 设置媒体播放速率
|
||||
* @param {Number} rate 播放速率
|
||||
*/
|
||||
setPlaybackRate(rate) {
|
||||
this.playbackRate = rate;
|
||||
for (let i = (this._videos || []).length; i--; ) {
|
||||
this._videos[i].playbackRate(rate);
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description 设置内容
|
||||
* @param {String} content html 内容
|
||||
* @param {Boolean} append 是否在尾部追加
|
||||
*/
|
||||
setContent(content, append) {
|
||||
if (!append || !this.imgList) {
|
||||
this.imgList = [];
|
||||
}
|
||||
const nodes = new uni_modules_mpHtml_components_mpHtml_parser.Parser(this).parse(content);
|
||||
this.$set(this, "nodes", append ? (this.nodes || []).concat(nodes) : nodes);
|
||||
this._videos = [];
|
||||
this.$nextTick(() => {
|
||||
this._hook("onLoad");
|
||||
this.$emit("load");
|
||||
});
|
||||
if (this.lazyLoad || this.imgList._unloadimgs < this.imgList.length / 2) {
|
||||
let height = 0;
|
||||
const callback = (rect) => {
|
||||
if (!rect || !rect.height)
|
||||
rect = {};
|
||||
if (rect.height === height) {
|
||||
this.$emit("ready", rect);
|
||||
} else {
|
||||
height = rect.height;
|
||||
setTimeout(() => {
|
||||
this.getRect().then(callback).catch(callback);
|
||||
}, 350);
|
||||
}
|
||||
};
|
||||
this.getRect().then(callback).catch(callback);
|
||||
} else {
|
||||
if (!this.imgList._unloadimgs) {
|
||||
this.getRect().then((rect) => {
|
||||
this.$emit("ready", rect);
|
||||
}).catch(() => {
|
||||
this.$emit("ready", {});
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description 调用插件钩子函数
|
||||
*/
|
||||
_hook(name) {
|
||||
for (let i = plugins.length; i--; ) {
|
||||
if (this.plugins[i][name]) {
|
||||
this.plugins[i][name]();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
if (!Array) {
|
||||
const _component_node = common_vendor.resolveComponent("node");
|
||||
_component_node();
|
||||
}
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return common_vendor.e({
|
||||
a: !$data.nodes[0]
|
||||
}, !$data.nodes[0] ? {} : {
|
||||
b: common_vendor.p({
|
||||
childs: $data.nodes,
|
||||
opts: [$props.lazyLoad, $props.loadingImg, $props.errorImg, $props.showImgMenu, $props.selectable],
|
||||
name: "span"
|
||||
})
|
||||
}, {
|
||||
c: common_vendor.n(($props.selectable ? "_select " : "") + "_root"),
|
||||
d: common_vendor.s($props.containerStyle)
|
||||
});
|
||||
}
|
||||
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
|
||||
wx.createComponent(Component);
|
||||
//# sourceMappingURL=../../../../../.sourcemap/mp-weixin/uni_modules/mp-html/components/mp-html/mp-html.js.map
|
||||
6
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/mp-html.json
vendored
Normal file
6
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/mp-html.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {
|
||||
"node": "./node/node"
|
||||
}
|
||||
}
|
||||
1
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/mp-html.wxml
vendored
Normal file
1
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/mp-html.wxml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
<view id="_root" class="{{c}}" style="{{d}}"><slot wx:if="{{a}}"/><node wx:else u-i="305b9be7-0" bind:__l="__l" u-p="{{b||''}}"/></view>
|
||||
16
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/mp-html.wxss
vendored
Normal file
16
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/mp-html.wxss
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
|
||||
/* 根节点样式 */
|
||||
._root {
|
||||
padding: 1px 0;
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
/* 长按复制 */
|
||||
._select {
|
||||
-webkit-user-select: text;
|
||||
user-select: text;
|
||||
}
|
||||
|
||||
404
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/node/node.js
vendored
Normal file
404
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/node/node.js
vendored
Normal file
@@ -0,0 +1,404 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../../../../common/vendor.js");
|
||||
const block0 = {};
|
||||
const node = () => Promise.resolve().then(() => RDovY29kaW5nIHNvZnR3YXJlL0hCdWlsZGVyWC91bmlhcHBfdnVlM19jb2RlL3dhbGxwYXBlci1rdC91bmlfbW9kdWxlcy9tcC1odG1sL2NvbXBvbmVudHMvbXAtaHRtbC9ub2RlL25vZGUudnVl);
|
||||
const _sfc_main = {
|
||||
name: "node",
|
||||
options: {
|
||||
virtualHost: true
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
ctrl: {},
|
||||
isiOS: common_vendor.index.getSystemInfoSync().system.includes("iOS")
|
||||
};
|
||||
},
|
||||
props: {
|
||||
name: String,
|
||||
attrs: {
|
||||
type: Object,
|
||||
default() {
|
||||
return {};
|
||||
}
|
||||
},
|
||||
childs: Array,
|
||||
opts: Array
|
||||
},
|
||||
components: {
|
||||
node
|
||||
},
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
for (this.root = this.$parent; this.root.$options.name !== "mp-html"; this.root = this.root.$parent)
|
||||
;
|
||||
});
|
||||
},
|
||||
beforeDestroy() {
|
||||
},
|
||||
methods: {
|
||||
toJSON() {
|
||||
return this;
|
||||
},
|
||||
/**
|
||||
* @description 播放视频事件
|
||||
* @param {Event} e
|
||||
*/
|
||||
play(e) {
|
||||
const i = e.currentTarget.dataset.i;
|
||||
const node2 = this.childs[i];
|
||||
this.root.$emit("play", {
|
||||
source: node2.name,
|
||||
attrs: {
|
||||
...node2.attrs,
|
||||
src: node2.src[this.ctrl[i] || 0]
|
||||
}
|
||||
});
|
||||
if (this.root.pauseVideo) {
|
||||
let flag = false;
|
||||
const id = e.target.id;
|
||||
for (let i2 = this.root._videos.length; i2--; ) {
|
||||
if (this.root._videos[i2].id === id) {
|
||||
flag = true;
|
||||
} else {
|
||||
this.root._videos[i2].pause();
|
||||
}
|
||||
}
|
||||
if (!flag) {
|
||||
const ctx = common_vendor.index.createVideoContext(
|
||||
id,
|
||||
this
|
||||
);
|
||||
ctx.id = id;
|
||||
if (this.root.playbackRate) {
|
||||
ctx.playbackRate(this.root.playbackRate);
|
||||
}
|
||||
this.root._videos.push(ctx);
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description 图片点击事件
|
||||
* @param {Event} e
|
||||
*/
|
||||
imgTap(e) {
|
||||
const node2 = this.childs[e.currentTarget.dataset.i];
|
||||
if (node2.a) {
|
||||
this.linkTap(node2.a);
|
||||
return;
|
||||
}
|
||||
if (node2.attrs.ignore)
|
||||
return;
|
||||
this.root.$emit("imgtap", node2.attrs);
|
||||
if (this.root.previewImg) {
|
||||
common_vendor.index.previewImage({
|
||||
showmenu: this.root.showImgMenu,
|
||||
current: parseInt(node2.attrs.i),
|
||||
urls: this.root.imgList
|
||||
});
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description 图片长按
|
||||
*/
|
||||
imgLongTap(e) {
|
||||
},
|
||||
/**
|
||||
* @description 图片加载完成事件
|
||||
* @param {Event} e
|
||||
*/
|
||||
imgLoad(e) {
|
||||
const i = e.currentTarget.dataset.i;
|
||||
if (!this.childs[i].w) {
|
||||
this.$set(this.ctrl, i, e.detail.width);
|
||||
} else if (this.opts[1] && !this.ctrl[i] || this.ctrl[i] === -1) {
|
||||
this.$set(this.ctrl, i, 1);
|
||||
}
|
||||
this.checkReady();
|
||||
},
|
||||
/**
|
||||
* @description 检查是否所有图片加载完毕
|
||||
*/
|
||||
checkReady() {
|
||||
if (this.root && !this.root.lazyLoad) {
|
||||
this.root._unloadimgs -= 1;
|
||||
if (!this.root._unloadimgs) {
|
||||
setTimeout(() => {
|
||||
this.root.getRect().then((rect) => {
|
||||
this.root.$emit("ready", rect);
|
||||
}).catch(() => {
|
||||
this.root.$emit("ready", {});
|
||||
});
|
||||
}, 350);
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description 链接点击事件
|
||||
* @param {Event} e
|
||||
*/
|
||||
linkTap(e) {
|
||||
const node2 = e.currentTarget ? this.childs[e.currentTarget.dataset.i] : {};
|
||||
const attrs = node2.attrs || e;
|
||||
const href = attrs.href;
|
||||
this.root.$emit("linktap", Object.assign({
|
||||
innerText: this.root.getText(node2.children || [])
|
||||
// 链接内的文本内容
|
||||
}, attrs));
|
||||
if (href) {
|
||||
if (href[0] === "#") {
|
||||
this.root.navigateTo(href.substring(1)).catch(() => {
|
||||
});
|
||||
} else if (href.split("?")[0].includes("://")) {
|
||||
if (this.root.copyLink) {
|
||||
common_vendor.index.setClipboardData({
|
||||
data: href,
|
||||
success: () => common_vendor.index.showToast({
|
||||
title: "链接已复制"
|
||||
})
|
||||
});
|
||||
}
|
||||
} else {
|
||||
common_vendor.index.navigateTo({
|
||||
url: href,
|
||||
fail() {
|
||||
common_vendor.index.switchTab({
|
||||
url: href,
|
||||
fail() {
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description 错误事件
|
||||
* @param {Event} e
|
||||
*/
|
||||
mediaError(e) {
|
||||
const i = e.currentTarget.dataset.i;
|
||||
const node2 = this.childs[i];
|
||||
if (node2.name === "video" || node2.name === "audio") {
|
||||
let index = (this.ctrl[i] || 0) + 1;
|
||||
if (index > node2.src.length) {
|
||||
index = 0;
|
||||
}
|
||||
if (index < node2.src.length) {
|
||||
this.$set(this.ctrl, i, index);
|
||||
return;
|
||||
}
|
||||
} else if (node2.name === "img") {
|
||||
if (this.opts[2]) {
|
||||
this.$set(this.ctrl, i, -1);
|
||||
}
|
||||
this.checkReady();
|
||||
}
|
||||
if (this.root) {
|
||||
this.root.$emit("error", {
|
||||
source: node2.name,
|
||||
attrs: node2.attrs,
|
||||
errMsg: e.detail.errMsg
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
if (!Array) {
|
||||
const _component_node = common_vendor.resolveComponent("node");
|
||||
_component_node();
|
||||
}
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return {
|
||||
a: common_vendor.f($props.childs, (n, i, i0) => {
|
||||
return common_vendor.e({
|
||||
a: n.name === "img" && !n.t && ($props.opts[1] && !$data.ctrl[i] || $data.ctrl[i] < 0)
|
||||
}, n.name === "img" && !n.t && ($props.opts[1] && !$data.ctrl[i] || $data.ctrl[i] < 0) ? {
|
||||
b: common_vendor.s(n.attrs.style),
|
||||
c: $data.ctrl[i] < 0 ? $props.opts[2] : $props.opts[1]
|
||||
} : {}, {
|
||||
d: n.name === "img" && n.t
|
||||
}, n.name === "img" && n.t ? {
|
||||
e: common_vendor.s("display:" + n.t),
|
||||
f: [{
|
||||
attrs: {
|
||||
style: n.attrs.style || "",
|
||||
src: n.attrs.src
|
||||
},
|
||||
name: "img"
|
||||
}],
|
||||
g: i,
|
||||
h: common_vendor.o((...args) => $options.imgTap && $options.imgTap(...args), i)
|
||||
} : n.name === "img" ? {
|
||||
j: n.attrs.id,
|
||||
k: common_vendor.n("_img " + n.attrs.class),
|
||||
l: common_vendor.s(($data.ctrl[i] === -1 ? "display:none;" : "") + "width:" + ($data.ctrl[i] || 1) + "px;height:1px;" + n.attrs.style),
|
||||
m: n.attrs.src,
|
||||
n: !n.h ? "widthFix" : !n.w ? "heightFix" : n.m || "scaleToFill",
|
||||
o: $props.opts[0],
|
||||
p: n.webp,
|
||||
q: $props.opts[3] && !n.attrs.ignore,
|
||||
r: !$props.opts[3] || n.attrs.ignore,
|
||||
s: i,
|
||||
t: common_vendor.o((...args) => $options.imgLoad && $options.imgLoad(...args), i),
|
||||
v: common_vendor.o((...args) => $options.mediaError && $options.mediaError(...args), i),
|
||||
w: common_vendor.o((...args) => $options.imgTap && $options.imgTap(...args), i),
|
||||
x: common_vendor.o((...args) => $options.imgLongTap && $options.imgLongTap(...args), i)
|
||||
} : n.text ? {
|
||||
z: common_vendor.t(n.text),
|
||||
A: $props.opts[4] == "force" && $data.isiOS
|
||||
} : n.name === "br" ? {} : n.name === "a" ? {
|
||||
D: "0b985e7e-0-" + i0,
|
||||
E: common_vendor.p({
|
||||
name: "span",
|
||||
childs: n.children,
|
||||
opts: $props.opts
|
||||
}),
|
||||
F: n.attrs.id,
|
||||
G: common_vendor.n((n.attrs.href ? "_a " : "") + n.attrs.class),
|
||||
H: common_vendor.s("display:inline;" + n.attrs.style),
|
||||
I: i,
|
||||
J: common_vendor.o((...args) => $options.linkTap && $options.linkTap(...args), i)
|
||||
} : n.name === "video" ? {
|
||||
L: n.attrs.id,
|
||||
M: common_vendor.n(n.attrs.class),
|
||||
N: common_vendor.s(n.attrs.style),
|
||||
O: n.attrs.autoplay,
|
||||
P: n.attrs.controls,
|
||||
Q: n.attrs.loop,
|
||||
R: n.attrs.muted,
|
||||
S: n.attrs["object-fit"],
|
||||
T: n.attrs.poster,
|
||||
U: n.src[$data.ctrl[i] || 0],
|
||||
V: i,
|
||||
W: common_vendor.o((...args) => $options.play && $options.play(...args), i),
|
||||
X: common_vendor.o((...args) => $options.mediaError && $options.mediaError(...args), i)
|
||||
} : n.name === "audio" ? {
|
||||
Z: n.attrs.id,
|
||||
aa: common_vendor.n(n.attrs.class),
|
||||
ab: common_vendor.s(n.attrs.style),
|
||||
ac: n.attrs.author,
|
||||
ad: n.attrs.controls,
|
||||
ae: n.attrs.loop,
|
||||
af: n.attrs.name,
|
||||
ag: n.attrs.poster,
|
||||
ah: n.src[$data.ctrl[i] || 0],
|
||||
ai: i,
|
||||
aj: common_vendor.o((...args) => $options.play && $options.play(...args), i),
|
||||
ak: common_vendor.o((...args) => $options.mediaError && $options.mediaError(...args), i)
|
||||
} : n.name === "table" && n.c || n.name === "li" ? common_vendor.e({
|
||||
am: n.name === "li"
|
||||
}, n.name === "li" ? {
|
||||
an: "0b985e7e-1-" + i0,
|
||||
ao: common_vendor.p({
|
||||
childs: n.children,
|
||||
opts: $props.opts
|
||||
})
|
||||
} : {
|
||||
ap: common_vendor.f(n.children, (tbody, x, i1) => {
|
||||
return common_vendor.e({
|
||||
a: tbody.name === "td" || tbody.name === "th"
|
||||
}, tbody.name === "td" || tbody.name === "th" ? {
|
||||
b: "0b985e7e-2-" + i0 + "-" + i1,
|
||||
c: common_vendor.p({
|
||||
childs: tbody.children,
|
||||
opts: $props.opts
|
||||
})
|
||||
} : {
|
||||
d: common_vendor.f(tbody.children, (tr, y, i2) => {
|
||||
return common_vendor.e({
|
||||
a: tr.name === "td" || tr.name === "th"
|
||||
}, tr.name === "td" || tr.name === "th" ? {
|
||||
b: "0b985e7e-3-" + i0 + "-" + i1 + "-" + i2,
|
||||
c: common_vendor.p({
|
||||
childs: tr.children,
|
||||
opts: $props.opts
|
||||
}),
|
||||
d: common_vendor.n("_" + tr.name + " " + tr.attrs.class),
|
||||
e: common_vendor.s(tr.attrs.style)
|
||||
} : {
|
||||
f: common_vendor.f(tr.children, (td, z, i3) => {
|
||||
return {
|
||||
a: "0b985e7e-4-" + i0 + "-" + i1 + "-" + i2 + "-" + i3,
|
||||
b: common_vendor.p({
|
||||
childs: td.children,
|
||||
opts: $props.opts
|
||||
}),
|
||||
c: z,
|
||||
d: common_vendor.n("_" + td.name + " " + td.attrs.class),
|
||||
e: common_vendor.s(td.attrs.style)
|
||||
};
|
||||
}),
|
||||
g: common_vendor.n("_" + tr.name + " " + tr.attrs.class),
|
||||
h: common_vendor.s(tr.attrs.style)
|
||||
}, {
|
||||
i: y
|
||||
});
|
||||
})
|
||||
}, {
|
||||
e: x,
|
||||
f: common_vendor.n("_" + tbody.name + " " + tbody.attrs.class),
|
||||
g: common_vendor.s(tbody.attrs.style)
|
||||
});
|
||||
})
|
||||
}, {
|
||||
aq: n.attrs.id,
|
||||
ar: common_vendor.n("_" + n.name + " " + n.attrs.class),
|
||||
as: common_vendor.s(n.attrs.style)
|
||||
}) : !n.c ? {
|
||||
av: n.attrs.id,
|
||||
aw: common_vendor.s("display:inline;" + n.f),
|
||||
ax: $props.opts[4],
|
||||
ay: $props.opts[4],
|
||||
az: [n]
|
||||
} : n.c === 2 ? {
|
||||
aB: common_vendor.f(n.children, (n2, j, i1) => {
|
||||
return {
|
||||
a: j,
|
||||
b: common_vendor.s(n2.f),
|
||||
c: "0b985e7e-5-" + i0 + "-" + i1,
|
||||
d: common_vendor.p({
|
||||
name: n2.name,
|
||||
attrs: n2.attrs,
|
||||
childs: n2.children,
|
||||
opts: $props.opts
|
||||
})
|
||||
};
|
||||
}),
|
||||
aC: n.attrs.id,
|
||||
aD: common_vendor.n("_block _" + n.name + " " + n.attrs.class),
|
||||
aE: common_vendor.s(n.f + ";" + n.attrs.style)
|
||||
} : {
|
||||
aF: common_vendor.s(n.f),
|
||||
aG: "0b985e7e-6-" + i0,
|
||||
aH: common_vendor.p({
|
||||
name: n.name,
|
||||
attrs: n.attrs,
|
||||
childs: n.children,
|
||||
opts: $props.opts
|
||||
})
|
||||
}, {
|
||||
i: n.name === "img",
|
||||
y: n.text,
|
||||
B: n.name === "br",
|
||||
C: n.name === "a",
|
||||
K: n.name === "video",
|
||||
Y: n.name === "audio",
|
||||
al: n.name === "table" && n.c || n.name === "li",
|
||||
at: !n.c,
|
||||
aA: n.c === 2,
|
||||
aI: i
|
||||
});
|
||||
}),
|
||||
b: $props.attrs.id,
|
||||
c: common_vendor.n("_block _" + $props.name + " " + $props.attrs.class),
|
||||
d: common_vendor.s($props.attrs.style)
|
||||
};
|
||||
}
|
||||
if (typeof block0 === "function")
|
||||
block0(_sfc_main);
|
||||
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
|
||||
wx.createComponent(Component);
|
||||
const RDovY29kaW5nIHNvZnR3YXJlL0hCdWlsZGVyWC91bmlhcHBfdnVlM19jb2RlL3dhbGxwYXBlci1rdC91bmlfbW9kdWxlcy9tcC1odG1sL2NvbXBvbmVudHMvbXAtaHRtbC9ub2RlL25vZGUudnVl = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
||||
__proto__: null
|
||||
}, Symbol.toStringTag, { value: "Module" }));
|
||||
//# sourceMappingURL=../../../../../../.sourcemap/mp-weixin/uni_modules/mp-html/components/mp-html/node/node.js.map
|
||||
6
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/node/node.json
vendored
Normal file
6
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/node/node.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"component": true,
|
||||
"usingComponents": {
|
||||
"node": "./node"
|
||||
}
|
||||
}
|
||||
31
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/node/node.wxml
vendored
Normal file
31
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/node/node.wxml
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
<wxs module="handler">
|
||||
|
||||
// 行内标签列表
|
||||
var inlineTags = {
|
||||
abbr: true,
|
||||
b: true,
|
||||
big: true,
|
||||
code: true,
|
||||
del: true,
|
||||
em: true,
|
||||
i: true,
|
||||
ins: true,
|
||||
label: true,
|
||||
q: true,
|
||||
small: true,
|
||||
span: true,
|
||||
strong: true,
|
||||
sub: true,
|
||||
sup: true
|
||||
}
|
||||
/**
|
||||
* @description 判断是否为行内标签
|
||||
*/
|
||||
module.exports = {
|
||||
isInline: function (tagName, style) {
|
||||
return inlineTags[tagName] || (style || '').indexOf('display:inline') !== -1
|
||||
}
|
||||
}
|
||||
|
||||
</wxs>
|
||||
<view id="{{b}}" class="{{c}}" style="{{d}}"><block wx:for="{{a}}" wx:for-item="n" wx:key="aI"><image wx:if="{{n.a}}" class="_img" style="{{n.b}}" src="{{n.c}}" mode="widthFix"/><rich-text wx:if="{{n.d}}" style="{{n.e}}" nodes="{{n.f}}" data-i="{{n.g}}" catchtap="{{n.h}}"/><image wx:elif="{{n.i}}" id="{{n.j}}" class="{{n.k}}" style="{{n.l}}" src="{{n.m}}" mode="{{n.n}}" lazy-load="{{n.o}}" webp="{{n.p}}" show-menu-by-longpress="{{n.q}}" image-menu-prevent="{{n.r}}" data-i="{{n.s}}" bindload="{{n.t}}" binderror="{{n.v}}" catchtap="{{n.w}}" bindlongpress="{{n.x}}"/><text wx:elif="{{n.y}}" user-select="{{n.A}}" decode>{{n.z}}</text><text wx:elif="{{n.B}}">\n</text><view wx:elif="{{n.C}}" id="{{n.F}}" class="{{n.G}}" hover-class="_hover" style="{{n.H}}" data-i="{{n.I}}" catchtap="{{n.J}}"><node wx:if="{{n.E}}" style="display:inherit" u-i="{{n.D}}" bind:__l="__l" u-p="{{n.E}}"/></view><video wx:elif="{{n.K}}" id="{{n.L}}" class="{{n.M}}" style="{{n.N}}" autoplay="{{n.O}}" controls="{{n.P}}" loop="{{n.Q}}" muted="{{n.R}}" object-fit="{{n.S}}" poster="{{n.T}}" src="{{n.U}}" data-i="{{n.V}}" bindplay="{{n.W}}" binderror="{{n.X}}"/><audio wx:elif="{{n.Y}}" id="{{n.Z}}" class="{{n.aa}}" style="{{n.ab}}" author="{{n.ac}}" controls="{{n.ad}}" loop="{{n.ae}}" name="{{n.af}}" poster="{{n.ag}}" src="{{n.ah}}" data-i="{{n.ai}}" bindplay="{{n.aj}}" binderror="{{n.ak}}"/><view wx:elif="{{n.al}}" id="{{n.aq}}" class="{{n.ar}}" style="{{n.as}}"><node wx:if="{{n.am}}" u-i="{{n.an}}" bind:__l="__l" u-p="{{n.ao}}"/><block wx:else><view wx:for="{{n.ap}}" wx:for-item="tbody" wx:key="e" class="{{tbody.f}}" style="{{tbody.g}}"><node wx:if="{{tbody.a}}" u-i="{{tbody.b}}" bind:__l="__l" u-p="{{tbody.c}}"/><block wx:else><block wx:for="{{tbody.d}}" wx:for-item="tr" wx:key="i"><view wx:if="{{tr.a}}" class="{{tr.d}}" style="{{tr.e}}"><node wx:if="{{tr.c}}" u-i="{{tr.b}}" bind:__l="__l" u-p="{{tr.c}}"/></view><view wx:else class="{{tr.g}}" style="{{tr.h}}"><view wx:for="{{tr.f}}" wx:for-item="td" wx:key="c" class="{{td.d}}" style="{{td.e}}"><node wx:if="{{td.b}}" u-i="{{td.a}}" bind:__l="__l" u-p="{{td.b}}"/></view></view></block></block></view></block></view><rich-text wx:elif="{{n.at}}" id="{{n.av}}" style="{{n.aw}}" preview="{{false}}" selectable="{{n.ax}}" user-select="{{n.ay}}" nodes="{{n.az}}"/><view wx:elif="{{n.aA}}" id="{{n.aC}}" class="{{n.aD}}" style="{{n.aE}}"><node wx:for="{{n.aB}}" wx:for-item="n2" wx:key="a" style="{{n2.b}}" u-i="{{n2.c}}" bind:__l="__l" u-p="{{n2.d}}"/></view><node wx:else style="{{n.aF}}" u-i="{{n.aG}}" bind:__l="__l" u-p="{{n.aH||''}}"/></block></view>
|
||||
143
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/node/node.wxss
vendored
Normal file
143
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/node/node.wxss
vendored
Normal file
@@ -0,0 +1,143 @@
|
||||
|
||||
/* a 标签默认效果 */
|
||||
._a {
|
||||
padding: 1.5px 0 1.5px 0;
|
||||
color: #366092;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
/* a 标签点击态效果 */
|
||||
._hover {
|
||||
text-decoration: underline;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
/* 图片默认效果 */
|
||||
._img {
|
||||
max-width: 100%;
|
||||
-webkit-touch-callout: none;
|
||||
}
|
||||
|
||||
/* 内部样式 */
|
||||
._block {
|
||||
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: 0.83em;
|
||||
}
|
||||
._h6 {
|
||||
font-size: 0.67em;
|
||||
}
|
||||
._h1,
|
||||
._h2,
|
||||
._h3,
|
||||
._h4,
|
||||
._h5,
|
||||
._h6 {
|
||||
display: block;
|
||||
font-weight: bold;
|
||||
}
|
||||
._image {
|
||||
height: 1px;
|
||||
}
|
||||
._ins {
|
||||
text-decoration: underline;
|
||||
}
|
||||
._li {
|
||||
display: list-item;
|
||||
}
|
||||
._ol {
|
||||
list-style-type: decimal;
|
||||
}
|
||||
._ol,
|
||||
._ul {
|
||||
display: block;
|
||||
padding-left: 40px;
|
||||
margin: 1em 0;
|
||||
}
|
||||
._q::before {
|
||||
content: '"';
|
||||
}
|
||||
._q::after {
|
||||
content: '"';
|
||||
}
|
||||
._sub {
|
||||
font-size: smaller;
|
||||
vertical-align: sub;
|
||||
}
|
||||
._sup {
|
||||
font-size: smaller;
|
||||
vertical-align: super;
|
||||
}
|
||||
._thead,
|
||||
._tbody,
|
||||
._tfoot {
|
||||
display: table-row-group;
|
||||
}
|
||||
._tr {
|
||||
display: table-row;
|
||||
}
|
||||
._td,
|
||||
._th {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
}
|
||||
._th {
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
._ul {
|
||||
list-style-type: disc;
|
||||
}
|
||||
._ul ._ul {
|
||||
margin: 0;
|
||||
list-style-type: circle;
|
||||
}
|
||||
._ul ._ul ._ul {
|
||||
list-style-type: square;
|
||||
}
|
||||
._abbr,
|
||||
._b,
|
||||
._code,
|
||||
._del,
|
||||
._em,
|
||||
._i,
|
||||
._ins,
|
||||
._label,
|
||||
._q,
|
||||
._span,
|
||||
._strong,
|
||||
._sub,
|
||||
._sup {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1047
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/parser.js
vendored
Normal file
1047
unpackage/dist/dev/mp-weixin/uni_modules/mp-html/components/mp-html/parser.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user