chache/utils/mtj-wx-sdk.js
2024-01-16 22:53:42 +08:00

1138 lines
34 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.

var t = require("../common/vendor.js");
exports.mtjInit = function (e) {
var n,
r,
o = "1.10.23",
a = "https://hmma.baidu.com/mini.gif",
i = {
app: ["onShow", "onHide", "onError"],
page: ["onShow", "onReady", "onHide", "onPageScroll"],
share: ["onShareAppMessage"],
behavior: ["tap"],
},
c = "mtj_uuid",
s = "mtj_user",
u = "mtj_user_property",
f = "mtj_track_status",
l = "mtj_remote_config",
h = "mtj_ab_experiment_list",
p = "mtj_ab_active_experiment_ids",
d = {},
g = { type: 1 },
m = { aso: {} },
y = {},
v = function (t) {
if (!1 !== d.trackStatus) {
var e = t.data.et
? { mtj_ii: t.data.uuid || "", mtj_et: t.data.et, mtj_en: t.data.en }
: {};
return n.request({
url: t.url,
data: t.data,
header: Object.assign(
{ "content-type": "application/json" },
e,
t.header
),
method: t.method || "POST",
dataType: t.dataType || "json",
success: function (e) {
t.success && t.success(e);
},
fail: function (e) {
t.fail && t.fail(e);
},
});
}
},
b = function () {
return "undefined" != typeof crypto && crypto.getRandomValues
? crypto.getRandomValues(new Uint32Array(1))[0]
: Math.floor(4294967295 * Math.random());
},
j = function (t, e) {
return "[object " + e + "]" === {}.toString.call(t);
},
S = function t(e) {
return j(e, "Object") || j(e, "Array")
? (Object.keys(e).forEach(function (n) {
var r = e[n];
j(r, "Object") || j(r, "Array") ? (e[n] = t(r)) : (e[n] = "" + r);
}),
e)
: e;
},
O = function (t) {
return j(t, "String") && /^\d{11}$/.test(t);
},
w = function (t) {
return j(t, "String") && 28 === t.length;
},
k = 0,
x = function (t) {
return new Promise(function (e, n) {
return (
(t.data = t.data || {}),
d.blacklist &&
((d.blacklist.indexOf("all") > -1 && t.data.et) ||
(d.blacklist.indexOf("behavior") > -1 && "behavior" === t.data.et))
? e()
: ((t.data.v = o),
(t.data.rqc = ++k),
(r = t.data),
JSON.stringify(r).length <= 204800
? ((t.success = function (t) {
return e(t);
}),
(t.fail = function (t) {
return n(t);
}),
void v(t))
: (k--, n(new Error("invalid data"))))
);
var r;
});
},
P = function (t, e) {
var n = j(e, "Object") ? JSON.stringify(e) : "" + e;
x({
url: a,
dataType: "string",
data: Object.assign({}, g, {
et: "error",
en: t,
ep: { ex: n },
rid: b(),
}),
});
},
_ = function (t) {
(t.rid = b()), (t.aso = t.aso || {});
var e = { url: a, dataType: "string", data: Object.assign({}, g, t) };
x(e),
(y.circleToken || y.circleByThreeFingers) &&
(("page" === t.et && "show" === t.en) ||
("behavior" === t.et && "tap" === t.en)) &&
((e.url = "https://hmma.baidu.com/mini.gif?circle=1"),
(e.data.token = y.circleToken),
x(e).catch(function (t) {
return console.error(t);
}));
};
function T(t, e) {
return (
(function (t) {
if (Array.isArray(t)) return t;
})(t) ||
(function (t, e) {
var n =
t &&
(("undefined" != typeof Symbol && t[Symbol.iterator]) ||
t["@@iterator"]);
if (null != n) {
var r,
o,
a = [],
i = !0,
c = !1;
try {
for (
n = n.call(t);
!(i = (r = n.next()).done) &&
(a.push(r.value), !e || a.length !== e);
i = !0
);
} catch (t) {
(c = !0), (o = t);
} finally {
try {
i || null == n.return || n.return();
} finally {
if (c) throw o;
}
}
return a;
}
})(t, e) ||
(function (t, e) {
if (t) {
if ("string" == typeof t) return I(t, e);
var n = Object.prototype.toString.call(t).slice(8, -1);
return (
"Object" === n && t.constructor && (n = t.constructor.name),
"Map" === n || "Set" === n
? Array.from(t)
: "Arguments" === n ||
/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
? I(t, e)
: void 0
);
}
})(t, e) ||
(function () {
throw new TypeError(
"Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
);
})()
);
}
function I(t, e) {
(null == e || e > t.length) && (e = t.length);
for (var n = 0, r = new Array(e); n < e; n++) r[n] = t[n];
return r;
}
var A = function (t) {
try {
return n.getStorageSync(t);
} catch (t) {
P("getStorageSync", t);
}
},
E = function (t, e) {
try {
n.setStorageSync(t, e);
} catch (t) {
P("setStorageSync", t);
}
},
N = function (t) {
try {
n.removeStorageSync(t);
} catch (t) {
P("removeStorageSync", t);
}
},
C = function () {
return Promise.resolve().then(function () {
var t = A(c);
return (
(j(t, "String") && 32 === t.length) ||
((t = ([1e7] + 1e3 + 4e3 + 8e3 + 1e11).replace(
/[018]/g,
function (t) {
return (
t ^
(("undefined" != typeof crypto && crypto.getRandomValues
? crypto.getRandomValues(new Uint8Array(1))[0]
: Math.floor(255 * Math.random())) &
(15 >> (t / 4)))
).toString(16);
}
)),
E(c, t),
d.hasABTest && (N(h), N(p))),
t
);
});
},
q = function () {
return (
r ||
((g.sid = b()),
(g.rqc = 0),
(r = Promise.all([
C(),
new Promise(function (t) {
n.getSystemInfo({
success: function (e) {
delete e.errMsg, t(e);
},
fail: function () {
t({});
},
});
}),
new Promise(function (t) {
n.getNetworkType({
success: function (e) {
delete e.errMsg, t(e);
},
fail: function () {
t({});
},
});
}),
Promise.resolve().then(function () {
var t = A(s),
e = j(t, "Object") ? t : {};
return new Promise(function (t) {
n.getSetting({
success: function (r) {
r.authSetting && r.authSetting["scope.userInfo"]
? n.getUserInfo({
success: function (n) {
delete n.userInfo.errMsg,
t(Object.assign(e, n.userInfo));
},
fail: function () {
t(e);
},
})
: t(e);
},
fail: function () {
t(e);
},
});
});
}),
new Promise(function (t) {
if (!d.getLocation) return t({});
n.getLocation({
type: "wgs84",
success: function (e) {
delete e.errMsg, t(e);
},
fail: function () {
t({});
},
});
}),
Promise.resolve().then(function () {
var t = A(u);
return j(t, "Object") ? t : {};
}),
]).then(function (t) {
var e = T(t, 6),
n = e[0],
r = e[1],
a = e[2],
i = e[3],
c = e[4],
s = e[5];
(g.uuid = n),
(m.system = S(r)),
(m.network = S(a)),
Object.keys(i).length > 0 && (m.user = S(i)),
Object.keys(c).length > 0 && (m.location = S(c)),
Object.keys(s).length > 0 && (m.userProperty = JSON.stringify(s)),
"devtools" === m.system.platform &&
d.latestVersion &&
(function (t, e) {
for (
var n = t.split("."), r = e.split("."), o = 0;
o < 3;
o++
) {
var a = +n[o] || 0,
i = +r[o] || 0;
if (a > i) return 1;
if (i > a) return -1;
}
return 0;
})(o, d.latestVersion) < 0 &&
console.warn(
"百度移动统计微信小程序SDK已更新为不影响您的正常使用请到SDK下载中心 https://mtj.baidu.com/web/sdk/index 下载最新版本"
);
})))
);
},
U = {
onShow: function () {
var t =
arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = (m.aso.query || []).filter(function (t) {
return 0 === t.key.indexOf("mtj_");
});
return (
(m.aso.scene = "" + (t.scene || "")),
t.referrerInfo && t.referrerInfo.appId
? (m.aso.referrerInfo = t.referrerInfo)
: delete m.aso.referrerInfo,
(m.aso.path = t.path || ""),
(m.aso.query = Object.keys(t.query || {}).map(function (e) {
return { key: e, value: t.query[e] };
})),
e.length > 0 &&
!/(^|,)mtj_/.test(Object.keys(t.query || {}).join(",")) &&
(m.aso.query = m.aso.query.concat(e)),
(t.query || {}).mtj_ctoken &&
!d.disableCircling &&
(y.circleToken = t.query.mtj_ctoken),
(t.query || {}).mtj_htoken &&
d.hasHeatmap &&
(y.heatmapToken = t.query.mtj_htoken),
q()
.then(function () {
return (function (t) {
return new Promise(function (e) {
if (!t) return e();
n.getShareInfo({
shareTicket: t,
success: function (t) {
delete t.errMsg, e(t);
},
fail: function () {
e({});
},
});
});
})(t.shareTicket);
})
.then(function (t) {
t ? (m.aso.shareInfo = t) : delete m.aso.shareInfo,
_(Object.assign({ et: "app", en: "show" }, m));
})
.catch(function (t) {
P("app.onShow", t);
})
);
},
onHide: function () {
_({ et: "app", en: "hide" });
},
onError: function (t) {
var e = j(t, "Object") ? JSON.stringify(S(t)) : "" + t;
_({ et: "app", en: "error", ep: { ex: e } });
},
};
function B() {
this.options = {
opacity: 100,
radius: 30,
bshadow: 1.5,
boundVal: 15e3,
shadowBlur: 15,
points: { max: 100, data: [] },
gradient: {
0.45: "rgb(0,0,255)",
0.55: "rgb(0,255,255)",
0.65: "rgb(0,255,0)",
0.95: "yellow",
1: "rgb(255,0,0)",
},
};
}
B.prototype = {
getCanvas: function (t) {
return new Promise(function (e, r) {
n.createSelectorQuery()
.select(t)
.fields({ node: !0, size: !0 })
.exec(function (t) {
e(t[0].node);
});
});
},
getPageClientRect: function () {
return new Promise(function (t, e) {
n.createSelectorQuery()
.select(".hm-container")
.boundingClientRect(function (e) {
t([e.width, e.height]);
})
.exec();
});
},
init: function () {
var t = this;
return Promise.all([
this.getPageClientRect(),
this.getCanvas("#cvs"),
this.getCanvas("#cvd"),
]).then(function (e) {
var n = T(e, 3),
r = n[0],
o = n[1],
a = n[2];
(t.options.width = r[0]),
(t.options.height = r[1]),
(o.width = t.options.width),
(o.height = t.options.height),
t.options.context.setData({
p_width: t.options.width,
p_height: t.options.height,
});
var i = o.getContext("2d");
(t.options.ctx = i), (a.width = 1), (a.height = 256);
var c = a.getContext("2d");
t.options.pctx = c;
});
},
renderShadow: function (t, e, n, r) {
var o = this.options.ctx,
a = this.options.boundVal,
i = parseFloat(n / this.options.points.max, 10);
(o.shadowColor = "rgba(0, 0, 0, " + i + ")"),
(o.shadowOffsetX = a),
(o.shadowOffsetY = a),
(o.shadowBlur = this.options.shadowBlur),
o.beginPath(),
o.arc(t - a, e - a, this.options.radius, 0, 2 * Math.PI, !0),
o.closePath(),
o.fill(),
r || this.cachePoint(t, e, n);
},
colorize: function () {
for (
var t = this.options.width,
e = this.options.height,
n = this.options.ctx,
r = n.getImageData(0, 0, t, e),
o = r.data,
a = o.length,
i = this.getPalette(),
c = this.options.opacity,
s = 3;
s < a;
s += 4
) {
var u = o[s],
f = 4 * u;
if (f) {
var l = u < c ? u : c;
(o[s - 3] = i[f]),
(o[s - 2] = i[f + 1]),
(o[s - 1] = i[f + 2]),
(o[s] = l);
}
}
n.putImageData(r, 0, 0);
},
getPalette: function () {
var t = this.options.gradient,
e = this.options.pctx,
n = this.options.pctx.createLinearGradient(0, 0, 1, 256);
for (var r in t) t.hasOwnProperty(r) && n.addColorStop(r, t[r]);
return (
(e.fillStyle = n),
e.fillRect(0, 0, 1, 256),
e.getImageData(0, 0, 1, 256).data
);
},
cachePoint: function (t, e, n) {
var r = this.options.points,
o = r.data;
n > r.max && (r.max = n), o.push([t, e, n]);
},
addPoint: function (t, e, n) {
this.options.ctx.clearRect(0, 0, this.options.width, this.options.height),
this.options.pctx.clearRect(0, 0, 1, 256);
for (var r = this.options.points.data, o = r.length, a = 0; a < o; a++)
this.renderShadow(r[a][0], r[a][1], r[a][2], !0);
this.renderShadow(t, e, n), this.colorize();
},
start: function (t, e) {
var n = this;
(this.options.context = e),
this.init().then(function () {
for (var e = 0; e < t.length; e++)
n.renderShadow(t[e][0], t[e][1], t[e][2]);
n.colorize();
});
},
};
var D = -1,
M = -1,
R = 0,
F = {
onShow: function () {
var t = getCurrentPages(),
e = t[t.length - 1];
return (
(g.path = e.route),
(g.query = Object.keys(e.options)
.map(function (t) {
return { key: t, value: e.options[t] };
})
.filter(function (t) {
return (
"mtj_qrid" !== t.key &&
"mtj_lkid" !== t.key &&
"mtj_shuuid" !== t.key
);
})),
(g.path === y.lastPagePath &&
JSON.stringify(g.query) === y.lastPageQuery) ||
((y.lastPagePath = g.path),
(y.lastPageQuery = JSON.stringify(g.query)),
(y.pageScrollTop = 0)),
q()
.then(function () {
_(Object.assign({ et: "page", en: "show" }, m));
})
.catch(function (t) {
P("page.onShow", t);
})
);
},
onReady: function () {
var t = this;
d.hasHeatmap &&
y.heatmapToken &&
q()
.then(function () {
var e,
n = ""
.concat(
"https://hmma.baidu.com/analytics/ajax/cors",
"?corsToken="
)
.concat(y.heatmapToken),
r = g.query
.filter(function (t) {
return "mtj_htoken" !== t.key;
})
.map(function (t) {
return "".concat(t.key, "=").concat(t.value);
})
.join("&"),
o = g.path;
v({
url: n,
data: {
method: "heatmap/heatmapData",
displayUrl: "".concat(o).concat(r ? "?" + r : ""),
screenWidth:
null === (e = m.system) || void 0 === e
? void 0
: e.windowWidth,
},
method: "POST",
success: function (e) {
var n,
r,
o =
(null == e ||
null === (n = e.data) ||
void 0 === n ||
null === (r = n.data) ||
void 0 === r
? void 0
: r.points) || [];
o.length &&
setTimeout(function () {
new B().start(o, t);
}, 1e3);
},
fail: function () {
console.error("热力图数据请求失败");
},
});
})
.catch(function (t) {
P("get heatmap", t);
});
},
onHide: function () {
var t,
e,
r,
o,
a,
i = S({
scrollTop: y.pageScrollTop,
height:
null === (t = m.system) ||
void 0 === t ||
null === (e = t.safeArea) ||
void 0 === e
? void 0
: e.height,
width:
null === (r = m.system) ||
void 0 === r ||
null === (o = r.safeArea) ||
void 0 === o
? void 0
: o.width,
}),
c = Object.keys(i).map(function (t) {
return { key: t, value: i[t] };
});
if (
(_({ et: "page", en: "hide", ep: { data: c } }), d.getComponentScroll)
)
try {
(a = JSON.parse(JSON.stringify(g))),
n
.createSelectorQuery()
.selectAll(".mtj-scroll")
.fields({ id: !0, size: !0, scrollOffset: !0 })
.exec(function (t) {
Object.keys(t[0]).length > 0 &&
_(
Object.assign(
{ et: "page", en: "scroll", ep: S(t[0]) },
a
)
);
});
} catch (t) {
P("page.trackComponentScrollEvent", t);
}
},
onPageScroll: function (t) {
(!y.pageScrollTop || t.scrollTop > y.pageScrollTop) &&
(y.pageScrollTop = t.scrollTop);
},
onShareAppMessage: function (t) {
var e =
arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
n = { from: t.from, path: e.path };
if (!n.path) {
var r = g.query
.map(function (t) {
return t.key + "=" + t.value;
})
.join("&");
n.path = g.path + (r ? "?" + r : "");
}
e.title && (n.title = "" + e.title),
t.target && (n.target = JSON.stringify(t.target)),
_(Object.assign({ et: "share", en: "action", ep: n }, m));
var o = m.aso.query.filter(function (t) {
return "mtj_shuuid" === t.key;
}),
a = o[0] ? o[0].value.split("_") : [];
g.uuid !== a[a.length - 1] && a.push(g.uuid);
var i = a.slice(Math.max(0, a.length - 3)).join("_");
return (
(e.path = (function (t, e, n) {
var r =
(t = t
.replace(new RegExp(e + "=[^&]*", "g"), "")
.replace(/(\?|&)&/g, "$1")
.replace(/(\?|&)$/g, "")).indexOf("?") > 0
? "&"
: "?";
return t + r + e + "=" + encodeURIComponent(n);
})(n.path, "mtj_shuuid", i)),
e
);
},
onAction: function (t, e) {
if (t && t.type && t.currentTarget) {
var n = "#" + (t.currentTarget.id || e);
if ("tap" === t.type) {
var r = [{ key: "xpath", value: n }],
o = t.detail,
a = o.x,
i = o.y,
c = {};
return (
void 0 !== a &&
void 0 !== i &&
(c = { x: Math.floor(a), y: Math.floor(i) }),
void _(
Object.assign(
{ et: "behavior", en: "tap", ep: { data: r }, posi: c },
m
)
)
);
}
if (
"touchmove" === t.type &&
-1 === D &&
t.touches instanceof Array &&
3 === t.touches.length
) {
if (((R += 1), clearTimeout(M), 3 === R))
return (
(y.circleByThreeFingers = !0),
(y.circleToken = void 0),
void _(Object.assign({ et: "page", en: "show" }, m))
);
D = setTimeout(function () {
(D = -1),
(M = setTimeout(function () {
R = 0;
}, 500));
}, 1e3);
}
}
},
},
J = {
trackEvent: function (t) {
var e =
arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
if (
!(function (t) {
return j(t, "String") && /^[a-z][a-z0-9_]{0,31}$/.test(t);
})(t)
)
return Promise.reject(new Error("事件名称不合法"));
var n = Object.keys(e)
.filter(function (t) {
return (
(function (t) {
return j(t, "String") && /^[a-z0-9_]{1,32}$/.test(t);
})(t) &&
(function (t) {
return j(t, "String") || j(t, "Number");
})(e[t])
);
})
.map(function (t) {
return {
key: "" + t,
value: "" + e[t],
type: j(e[t], "String") ? "string" : "number",
};
});
return q()
.then(function () {
_(Object.assign({ et: "event", en: "" + t, ep: { data: n } }, m));
})
.catch(function (t) {
P("trackEvent", t);
});
},
setTrackStatus: function (t) {
j(t, "Boolean") && ((d.trackStatus = t), E(f, t));
},
setUserInfo: function () {
var t =
arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
e = t.tel,
n = t.openId;
return q()
.then(function () {
var t = A(s),
r = j(t, "Object") ? t : {};
O(e) && (r.tel = m.user.tel = e.substr(e.length - 11)),
w(n) && (r.openId = m.user.openId = n),
(r.tel || r.openId) && E(s, r),
j(e, "Undefined") ||
O(e) ||
console.error("手机号 ".concat(e, " 不合法")),
j(n, "Undefined") ||
w(n) ||
console.error("openid ".concat(n, " 不合法"));
})
.catch(function (t) {
P("setUserInfo", t);
});
},
setUserId: function (t) {
return Promise.resolve().then(function () {
if (!(j(t, "String") || (j(t, "Number") && Number.isFinite(t))))
return Promise.reject(new Error("userId只能是字符串或数字"));
var e = "" + t,
n = A(u),
r = j(n, "Object") ? n : {};
if (!r.uid_ || r.uid_[0] !== e) {
(r.uid_ = [e, "1"]), E(u, r), (m.userProperty = JSON.stringify(r));
var o = [{ key: "uid", value: e }];
return q()
.then(function () {
_(
Object.assign(
{ et: "api", en: "setUserId", ep: { data: o } },
m
)
);
})
.catch(function (t) {
P("setUserId", t);
});
}
});
},
setUserProperty: function (t) {
return Promise.resolve().then(function () {
var e = A(u),
n = j(e, "Object") ? e : {};
if (j(t, "Null"))
Object.keys(n).forEach(function (t) {
"_" !== t.charAt(0) &&
"_" !== t.charAt(t.length - 1) &&
delete n[t];
});
else if (!j(t, "Object"))
return Promise.reject(new Error("userProperty必须是对象"));
var r = Object.keys(n).filter(function (t) {
return "_" !== t.charAt(0) && "_" !== t.charAt(t.length - 1);
}).length;
Object.keys(t || {}).forEach(function (e) {
var o = t[e];
"" === e ||
"_" === e.charAt(0) ||
("_" === e.charAt(e.length - 1) &&
"ab_" !== e &&
"ab_filter_" !== e) ||
(j(o, "Null")
? n[e] && (delete n[e], r--)
: !(j(o, "String") || (j(o, "Number") && Number.isFinite(o))) ||
e.length > 256 ||
("" + o).length > 256 ||
(!n[e] && r >= 100) ||
(n[e] || r++, (n[e] = [o, "1"])));
}),
E(u, n),
(m.userProperty = JSON.stringify(n));
});
},
},
V = {
data: [],
init: function () {
var t = this,
e = g.uuid;
e
? this.startFetch(e)
: C().then(function (e) {
(g.uuid = e), t.startFetch(e);
});
},
startFetch: function (t) {
console.log("---您的设备ID---", t), this.fetchTest();
},
getExpDataByParamName: function (t) {
var e = A(h);
if ((this.setLocalData(e), !e || !j(e, "Array"))) return {};
var n = e.find(function (e) {
return e && j(e.params, "Object") && !j(e.params[t], "Undefined");
});
return n && n.params ? { expValue: n.params[t], expId: n.e } : {};
},
fetchTest: function (t, e, n) {
var r = this,
o = g.uuid,
a = g.key;
v({
url: "https://hm.baidu.com/v1/diversion/",
data: { cid: o, tid: a },
method: "GET",
success: function (o) {
j(o, "Object") &&
200 === o.statusCode &&
j(o.data, "Object") &&
0 === o.data.status
? r.handleFetchResponse(o.data, t, e, n)
: n && n(e);
},
fail: function () {
console.error("请求分流实验失败"), n && n(e);
},
});
},
handleFetchResponse: function (t, e, n, r) {
var o = [];
if (
(j(t, "Object") &&
j(t.data, "Object") &&
j(t.data.expr, "Array") &&
(o = t.data.expr),
this.updateStorage(o),
this.setLocalData(o),
r)
) {
var a = this.getExpDataByParamName(e),
i = a.expValue,
c = a.expId;
j(i, "Null") || j(i, "Undefined") ? r(n) : this.handleInTest(i, c, r);
}
},
handleInTest: function (t, e, n) {
n(t), this.updateUserProperty(e);
},
updateStorage: function (t) {
E(h, t);
},
setLocalData: function (t) {
this.data = t || [];
},
updateUserProperty: function (t) {
var e = this,
n = this.getActiveExpIds(t) || [],
r = { ab_: null, ab_filter_: null },
o = {},
a = [];
if (
(n.forEach(function (t) {
var n = e.getExpDataFromId(t);
j(n, "Object") && ((o[n.e] = n.g), a.push(n.h || 0));
}),
a.length)
) {
var i = 0;
a.forEach(function (t) {
i = (function (t, e) {
var n = "00000000000000000000000000000000";
function r(t) {
var e = (n + n + Number(t).toString(2)).slice(-64);
return [parseInt(e.slice(0, 32), 2), parseInt(e.slice(-32), 2)];
}
function o(t) {
return (n + t.toString(2)).slice(-32);
}
var a = r(t),
i = r(e);
return parseInt(
o((a[0] | i[0]) >>> 0) + o((a[1] | i[1]) >>> 0),
2
);
})(i, t);
}),
(r = { ab_: JSON.stringify(o), ab_filter_: i });
}
J.setUserProperty(r);
},
getExpDataFromId: function (t) {
return A(h).find(function (e) {
return String(e.e) === String(t);
});
},
setActiveExperimentIds: function (t) {
E(p, t);
},
getActiveExpIds: function (t) {
var e = this,
n = A(p) || [];
return (
j(t, "Undefined") || -1 !== n.indexOf(t) || n.push(t),
(n = (n = n.filter(function (t) {
return !!e.getExpDataFromId(t);
})).filter(function (t, e) {
return n.indexOf(t) === e;
})),
this.setActiveExperimentIds(n),
n
);
},
},
H = function (t) {
if (d.hasABTest)
if (j(t, "Object")) {
var e = t.paramName;
if (null != e) {
var n = t.defaultValue;
if (j(n, "Undefined")) console.error("请设置参数默认值");
else {
var r = t.callback;
if (j(r, "Function")) {
var o = V.getExpDataByParamName(e),
a = o.expValue,
i = o.expId;
j(a, "Null") || j(a, "Undefined")
? V.fetchTest(e, n, r)
: V.handleInTest(a, i, r);
} else console.error("callback必须为函数");
}
} else console.error("请设置实验参数名称");
} else console.error("传递参数请设置为对象");
},
L = function (t, e, n) {
var r = e[t];
e[t] = function (e) {
if ((n.call(this, e, t), r)) return r.apply(this, arguments);
};
},
z = App,
$ = function (t) {
i.app.forEach(function (e) {
L(e, t, U[e]);
}),
(t.mtj = J),
(t.mtj.pageEvent = F),
(t.mtj.fetchABTest = H),
z(t);
},
K = Page,
Q = function (t) {
i.page.forEach(function (e) {
L(e, t, F[e]);
}),
i.share.forEach(function (e) {
var n, r, o, a;
(o = F[e]),
(a = (r = t)[(n = e)]),
(r[n] = function (t) {
var e = a && a.apply(this, arguments);
return o.call(this, t, e);
});
}),
Object.keys(t).forEach(function (e) {
"function" == typeof t[e] &&
-1 === i.page.indexOf(e) &&
-1 === i.share.indexOf(e) &&
L(e, t, F.onAction);
}),
K(t);
},
G = Behavior,
W = function (t) {
return (
i.page.forEach(function (e) {
L(e, t.methods, F[e]);
}),
G(t)
);
};
W.prototype.constructor = Behavior;
var X = Component,
Y = function (t) {
return (
i.page.forEach(function (e) {
L(e, t.methods, F[e]);
}),
X(t)
);
},
Z = function () {
var e, r;
(e = t.wx$1), (n = e);
try {
r = {
appKey: "1b968b76bf",
hasPlugin: !1,
getLocation: !1,
getComponentScroll: !1,
hasABTest: !1,
hasHeatmap: !1,
};
} catch (t) {
return void console.error(
"请把mtj-wx-sdk.config.js文件拷贝到utils目录中"
);
}
r && r.appKey
? ((g.key = r.appKey),
(d.getLocation = r.getLocation || !1),
(d.getComponentScroll = r.getComponentScroll || !1),
(d.disableCircling = r.disableCircling || !1),
(d.trackStatus = !(!1 === A(f))),
(d.hasABTest = r.hasABTest || !1),
(d.hasHeatmap = r.hasHeatmap || !1),
d.hasABTest && V.init(),
(function () {
var t = A(l);
if (t) {
Object.keys(t).forEach(function (e) {
d[e] = t[e];
});
var e = t.updateTimestamp || 0;
if (+new Date() - e < 864e5) return Promise.resolve();
}
x({
url: "https://hmma.baidu.com/mini.conf",
method: "POST",
header: { "content-type": "application/x-www-form-urlencoded" },
data: { type: "wx", key: g.key },
})
.then(function (t) {
if (t && t.data) {
var e = t.data;
Object.keys(e).forEach(function (t) {
d[t] = e[t];
}),
(e.updateTimestamp = +new Date()),
E(l, e);
} else P("remoteConfig", t);
})
.catch(function (t) {
P("sendRequest", t);
});
})(),
r.hasPlugin || ((App = $), (Page = Q)),
(module.exports = { App: $, Page: Q, Behavior: W, Component: Y }))
: console.error("请设置mtj-wx-sdk.config.js文件中的appKey字段");
};
return (
Z(), (e.init = Z), Object.defineProperty(e, "__esModule", { value: !0 }), e
);
};