// ==UserScript==
// @name 【老虎优惠券】京东、淘宝、天猫商品优惠券、淘宝礼金、京东礼金、历史价格、历史优惠金额。
// @description 自动获取京东、淘宝、天猫商品优惠券、历史价格、历史优惠金额。不止让您省钱开心购物,更可以告别虚假降价,以最优惠的价格,把宝贝抱回家。持续维护中...
// @namespace https://tampermonkey.lhynq.cn
// @version 3.1.9
// @author 上山打老虎
// @match *://item.taobao.com/*
// @match *://*.detail.tmall.com/*
// @match *://*.detail.tmall.hk/*
// @match *://s.taobao.com/*
// @match *://list.tmall.com/*
// @match *://search.jd.com/*
// @match *://search.jd.hk/*
// @match *://item.jd.com/*
// @match *://npcitem.jd.hk/*
// @icon data:image/ico;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIeIgAXIioAESMvABIjLgATJCwAEBsgAA4WGwAQHCUACgwQKgYEB1INFBl5DhYcmRAaIrAQHye+DyApxw0gKsoMHynHDh4nvg8bIrAOFhycDRQZegYFCFEJDBApDxwlAA4XHQAQHCAAEyQrABIjLQASJC8AFyIqACIeIgAAAAAAIh4iABciKgARIy8AEiMuABMlLQAOFhoUCg0RbQ8aIcQeP07qLGR4/zmDn/87mLv/NKHM/zyt2P9Jt+D/Ubvi/1C54P9Jstv/OaPN/y2Ruf8wfp3/LmR5/x5AT+oOGiHFCw0Raw4XGhMTJSwAEiMtABIkLwAXIioAIh4iAAAAAAAiHiIAFyIqABEjLwASIy4jEB4knhcuN+EydIz/SK3P/1TK9/9Z1f3/TMz8/1DJ+P+h5f7/1Pf//+j+///t/v//7f7//+r////X+///re3//13T//9Kzvr/Vsv4/0itzv8xcYr/Fy024REeJJoTJC0gEiQvABciKgAiHiIAAAAAACIeIgAYIikAECEtCxEfJckSK0f/HUtz/0+/7f9Wz/r/UMDr/0a55/9Vv+j/3vL6///////38/H/+/j3//////////////z7//Xx7/////7/5fT7/2DC6v9Fu+n/V8/6/1DB7/8fTHT/EyxH/xIgJsQSIywIGSEpACIeIgAAAAAAIh4jEiAfIwwOHSVyFS1C/xMyXf8JGkD/OIew/1XM+P9Pvej/Pbfn/6be9P///////////4uLjf9RUFP/fHt9/39+gf9ZWFr/c3J2//v7+///////t+T2/zu25f9WzPf/OYu0/wkZP/8SMV3/FCtA/xAfJWwfHyUKIR4jEwAAAAAiHyMXHRYYbxgxPOZKuN3/I1d//y5vlv9VzvP/Vc32/0+/6v89t+b/t+T2////////////7+/v/93d3f93d3n/Xl1f/9zb3P/r6uv////////////D6Pb/P7jo/1XM9/9Vz/X/L3Ka/yNYf/9Ktdn/GC884BwXGW0iHiMbAAAAACIfHw8RFBl+LV5w/02uyP9Vyu//Vc31/ydghv8rapL/U8Xx/z656P+L1PD//////////////////////////////////////////////////////6Hd9f89vu7/LGqS/yhhiP9Wzvb/Vcvw/02txf8sWWr/ERQadiEeIwgAAAAAIR4gXxMXHc1Hq73/T7ja/1DA5/8YPmT/Cx5D/wseQv9GqNL/Tsby/0286P/m9fv/////////////////trW3/6qqq//////////////////x+f3/W8v0/zyjz/8LHUP/Cx1C/xk/Zv9QwOj/Trfa/0aou/8RFR3AIR4hYAAAAAAcHiQXFyoz1yFBXf8eQGL/UcXo/zeFqv8RKlD/IlR8/1C/6v9Wzvv/Qsj8/3PT9//6/f7///38/4SEhf8IBwr/AgIE/21tb//9+vn///7//4jZ+P9Cy///VMz4/yFUev8QKlD/N4ar/1DE6P8dQmT/IT9Z/xclLdsdHyIhAAAAACAeIE8YJi/lEiI+/wgVOf8ye6T/Wtj//0y34v9Rw+7/VtH+/0aevf86dIz/NajV/5Dt//+foqT/BAAA/xkTF/8dFxr/AAAA/5GQj/+d8P//N67b/zp1kP9Fmbb/VtH3/0244/9a2f//Mnmj/wkVOP8SIj3/FyYv5iAeIU0AAAAAGR4mDBMlL8QtbI3/Hkx0/0Cbxf9TxvL/UcPv/1TN+v9Bj63/HA8R/wcAAP8PFh3/Q7PY/0Kqzv8pQU3/IiQq/yIlK/8oPEb/Pp+9/0TA5f8kKDH/EAAA/wIAAP88fJX/V9b//1PF8P9AmcL/H012/y1ri/8SJC3GGh4mCwAAAAAQIy0ACxQanUamwv9Y1f//UsPw/0+96P9PwOv/VM77/yg8Sf8NAAD/jI6R/3tnY/8mWW//Vtz//1PK+P9Pvuf/Tr7m/1TK+f9V2v//PoOd/woAAP9NUFT/lImG/yQtNf9NxPH/T77q/1HE7/9Y1v//RKG8/wsSGKARJCwAAAAAAAwSFwAJCxBzNXuV/1bQ/v9Pvej/T77p/0++6f9Uzvz/NnGI/wUAAP+onJn/nYyJ/zCEo/9Syvn/T77q/1HE8P9RxfD/UL/q/1LI9P9Jqcv/CgkL/1xSUf+4oZv/MFps/07K9/9Pvej/T73o/1bQ/f8zdpH/CQ0RdwwUGgAAAAAAEiAlAA4WGTsiS13/Vs75/0+/6/9Pvun/T77p/0/A6/9SyfT/OXSL/xoxPf8yfZn/Vc75/0+96P9Pvun/T77p/0++6f9Pvun/Tr3o/1PM+v9Elrf/Ij1M/yNUaP9Qwu3/UcPv/0++6P9PwOv/Vs/4/yFHWP8NFR5BER8rAAAAAAAQHiQADhYcChIgKdVNuuD/Usby/0++6f9Pvun/T73o/0+/6/9V0P3/V9r//1bW//9TyPT/T7/q/0+96P9Pvun/T77p/0+96P9RxvH/U8n0/1fX//9V0vv/Us75/1HC7v9PvOf/T77p/1LF8v9Nud7/EiEr2Q4VIAwQHSgAAAAAABEeKAARHyoADBIYfDR6lf5W0fv/Trzo/0++6f9Pvun/UMDr/0++6f9Bk7z/MmeQ/zJokf9Ou+b/UcLt/0+96P9Pvej/U8n0/zyHsP8uXIT/Poiy/0686P9Rwe3/T73o/0++6f9Ou+f/VtH9/zBuh/8KDBKNEiEtABEgKwAAAAAAEyQuABQlLwAKDRNhFis3/VLG8v9Rwu7/T73o/0+/6v9QwOv/Q5zG/0KXwf9FoMr/P5C6/0665f9QwOv/T73o/0++6P9RxfD/RJvF/z6Ks/8+jLb/PYix/0665f9Qwez/Trvn/1LH8/9Z1///PpOy/w4WHM8QHSYfFSgyAAAAAAASJTAADhUbVhcwOvFJrcz/WNX7/1PK9P9Pven/T77p/0++6f9PwOv/Usfz/1LI8/9TyfT/T77p/1DA6/9TxvH/T77p/0+96P9RxfH/U8n1/1PJ9f9Pv+r/Trrl/0686P9Tyvb/RKLH/0Gbvv9e5f//PIyn/wwRGLMTJC0EAAAAAA8aIxwTJC7nU8jk/1PI5P8iRWH/LWKB/1jU//9Pvun/T77o/0+/6v9Pvun/T73o/0++6f9Qv+r/T7/q/0u03v9Sw+//T73o/0+96P9Pvej/T77p/1DA6/9Pvej/U8bx/1XM8f8aM0j/DRAg/0enzv9d5P//I0xc/QwTGlAAAAAACxAYdjiDnP9Z2PX/FiZB/w0KHv8ODyP/OYSm/1na//9Pv+v/T73o/0++6f9Ovun/VMr1/1zc//8wdZz/BxU6/z6WwP9Y1P3/VMr2/0++6f9Pvun/Tr3n/1PJ8/9W0PP/JUtm/xATKf8RFiz/Gi5G/1jW9/9BnL3/DRUbpQAAAAAQHSW4UMHk/z6QtP8ODyP/FSE4/xAVKf8MCRz/N36f/1fS+v9QwOr/T77o/1HE8P8zfab/OYqw/0Gdxf8LHEP/OIet/0u02P81gKr/UcPu/0+96f9RxPH/Tbje/yNJYv8LBhv/EBQq/xIZLv8PESb/P5S4/1TK7f8SIivWAAAAABQoNNNX0vD/OIGj/w8RJP8cM0z/Jk1p/yJFYP8SHDH/Iklh/1HD8P9W0f3/Usju/w0kSv8EDTL/Qp3H/1XL8f9QwOr/EStR/wcTOv9Pv+b/Wtr//0+96v8XLED/DQ4f/y5khP84fqD/L2eF/wwJHf81d5j/V9Tx/xUoNOAAAAAAFCgz01XO8v9Fosn/CwYZ/yRHZP8+lrf/I0Zi/x88Vf9GqMX/Wdf9/0mt1P9LsdP/PJS//zJ8qP9Rw+z/XNz//1fS/v82hbH/OIq1/0qw0/9CnLv/V9P9/0674P8oVXP/EyMz/yZQbP8iRl//CwYa/0WjyP9RxOj/ER8pzwAAAAARHSa9TLbc/1bS+P8fPVf/BwAO/wwVIv8zdY7/XeP//0271f8jUGT/EBsk0REeJ8IjS1n3L2l9/y9rg/8ua4X/LWd//y1me/8jTl37EiAoxQoNEsUrYXX/WNb4/17l//9DnsP/HjpT/wsKGv8pWXj/XOD//zyOrP8MExqXAAAAAA0VGoU6iaj/Wdb//0qw2/84gqD/U8bp/1jT8P8rYXX/DRUe1AkKDmAMEhoRDRYeCgwSGSYOFRtIDBQaYg0VGmYNFBpjDRYbTgwSFykOFBoLEyMtCwoMEoAZMj/3RKHC/13h//9Z1///S7Db/1PJ9f9X0vj/HD1L+Q4WHD0AAAAADhUZPiNLXPpY1v//WNX//1/m//8+kqz/EiIs9QkLEYESISsLDxohAA0UGwAOFx8AEB4nABMjLQAQHiYAEB0kABEeJgATJSwAER8mAA4VGwAUJjAAEBokAAwSGUAMExnGKVxy/0uz1f9Z2P//Wtz//y5qfv8KDhOaEiUtAQAAAAAPHi0FDhgfvj2Qqv9Gp8f/IERV/wsQFrsLEhgyESEsABIjLgAPGSAADRQbAA4XHwAQHSYAEyIsABAeJgAQHSQAER4mABMkKwARHiUADhUbABQlLwAPGSIAEyIsAA4ZHwkKDhNoEBskzSJMXfYjS1v7DhceshAdJg0TJS4AAAAAABIjMQARISwpDhgguQ0XHbkLEhhaEiMtAA4ZIgAQHykAEiMuAA8ZIAANFBsADhcfABAdJgATIiwAEB4mABAdJAARHiYAEyQrABEeJQAOFRsAFCUvAA8ZIgASISoADxsiAA4YIAAPGSAGBwgMOQcGCz8TIy4FFCgwABQmLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////gAD//AAAH/AAAAfgAAADgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAAHAAAABwAAAAcAAAAHgAAAD4AAAAcAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgD/+AID//wHD///D//////////8=
// @require https://cdn.jsdelivr.net/npm/react@16/umd/react.production.min.js
// @require https://cdn.jsdelivr.net/npm/react-dom@16/umd/react-dom.production.min.js
// @require https://cdn.jsdelivr.net/npm/axios@0.21.1/dist/axios.min.js
// @require https://cdn.jsdelivr.net/npm/@material-ui/core@4.12.3/umd/material-ui.production.min.js
// @require https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js
// @require https://cdn.jsdelivr.net/npm/md5@2.3.0/dist/md5.min.js
// @require https://cdn.jsdelivr.net/npm/uuid@8.3.2/dist/umd/uuid.min.js
// @antifeature referral-link 【应GreasyFork代码规范要求:含有优惠券查询功能的脚本必须添加此提示!在此感谢大家的理解...】
// @grant unsafeWindow
// @grant window.close
// @grant window.focus
// ==/UserScript==
/******/ (() => {
// webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = {
/***/ 395: /***/ (module, __webpack_exports__, __webpack_require__) => {
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ Z: () => __WEBPACK_DEFAULT_EXPORT__,
/* harmony export */
});
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(613);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default =
/*#__PURE__*/ __webpack_require__.n(
_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__
);
// Imports
var ___CSS_LOADER_EXPORT___ =
_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function (i) {
return i[1];
});
// Module
___CSS_LOADER_EXPORT___.push([
module.id,
".x-lhq-hover-9527{display:inline-block;margin-left:5px}.x-lhq-hover-9527__show{display:none;position:absolute;left:0;right:0;top:30px;background-color:#f4f4f4;z-index:99999999}.x-lhq-hover-9527:hover .x-lhq-hover-9527__show{display:block}.jd-item-9951{display:block;margin:0;background-color:#fff;text-decoration:none;color:#333;overflow:hidden}.jd-item-9951:hover{box-shadow:1px 1px 4px rgba(0,0,0,0.2)}.jd-item-9951__img{text-align:center;display:block;cursor:pointer}.jd-item-9951__img img{border:0}.jd-item-9951__price{display:block;color:#e4393c;margin-top:10px}.jd-item-9951__price i{font-style:normal;font-size:22px;margin:0 3px}.jd-item-9951__price em{font-size:14px;font-weight:400;font-family:Verdana;font-style:normal}.jd-item-9951__price strong{font-family:Verdana;font-weight:400;font-style:normal;font-size:12px}.jd-item-9951__tag{background-color:#c81623;color:#fff;display:inline-block;padding:0px 3px;font-size:12px;border-radius:3px;font-style:normal;line-height:20px;margin-right:3px}.jd-item-9951__tag--0{background-color:#ff5000}.jd-item-9951__h3{cursor:pointer;margin:5px 0 0 0;padding:0;font-style:normal;font-size:14px;font-weight:400;line-height:22px;max-height:44px;overflow:hidden;color:#666;word-wrap:break-word;display:block;text-decoration:none}.jd-item-9951__h3:hover{color:red}.jd-item-9951__comments{font-size:12px;color:#999;margin:5px 0 0 0}.jd-item-9951__comments strong{color:#646fb0;font-family:verdana;font-weight:700}.jd-item-9951__shop{margin:5px 0 0 0;font-size:12px;color:#999}.jd-item-9951__icons{margin:5px 0 0 0;font-size:12px;display:flex;flex-wrap:wrap;justify-content:flex-start}.jd-item-9951__icons a,.jd-item-9951__icons i{font-style:normal;color:#df3033;border:1px solid #df3033;background-color:#ffdedf;display:inline-block;padding:0 4px;text-decoration:none;margin:0 3px 3px 0}.pagination-9784{margin-top:20px;text-align:center}.pagination-9784 li{display:inline-block;padding:4px;text-align:center;min-width:22px;min-height:22px;line-height:22px;font-size:15px;margin-right:4px}.pagination-9784__text{display:inline-block;background-color:#f3f3f3;border-radius:4px;width:160px;height:42px;line-height:42px;font-size:16px;color:#333;text-align:center;cursor:pointer}.pagination-9784__text:hover{background-color:#eee}.jd-coupon-list-9527{width:100%}.jd-coupon-list-9527 td{border-bottom:1px #aaa solid;padding:0 5px}.jd-coupon-list-9527 thead td{padding-top:8px;padding-bottom:8px;font-weight:700;font-size:15px}.jd-coupon-list-9527 tbody td{font-size:14px}.jd-coupon-list-9527 tbody td:first-child{color:#ec407a}\n",
"",
]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ___CSS_LOADER_EXPORT___;
/***/
},
/***/ 768: /***/ (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
/* harmony export */
});
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(379);
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default =
/*#__PURE__*/ __webpack_require__.n(
_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__
);
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__(795);
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__
);
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__(569);
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default =
/*#__PURE__*/ __webpack_require__.n(
_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__
);
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__(565);
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default =
/*#__PURE__*/ __webpack_require__.n(
_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__
);
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ =
__webpack_require__(216);
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default =
/*#__PURE__*/ __webpack_require__.n(
_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__
);
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__(589);
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default =
/*#__PURE__*/ __webpack_require__.n(
_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__
);
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_components_scss__WEBPACK_IMPORTED_MODULE_6__ =
__webpack_require__(395);
var options = {};
options.styleTagTransform =
_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default();
options.setAttributes =
_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default();
options.insert =
_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(
null,
"head"
);
options.domAPI =
_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default();
options.insertStyleElement =
_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default();
var update =
_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(
_node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_components_scss__WEBPACK_IMPORTED_MODULE_6__ /* .default */.Z,
options
);
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ =
_node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_components_scss__WEBPACK_IMPORTED_MODULE_6__ /* .default */.Z &&
_node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_components_scss__WEBPACK_IMPORTED_MODULE_6__ /* .default.locals */
.Z.locals
? _node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_components_scss__WEBPACK_IMPORTED_MODULE_6__ /* .default.locals */
.Z.locals
: undefined;
/***/
},
/***/ 379: /***/ (module) => {
var stylesInDom = [];
function getIndexByIdentifier(identifier) {
var result = -1;
for (var i = 0; i < stylesInDom.length; i++) {
if (stylesInDom[i].identifier === identifier) {
result = i;
break;
}
}
return result;
}
function modulesToDom(list, options) {
var idCountMap = {};
var identifiers = [];
for (var i = 0; i < list.length; i++) {
var item = list[i];
var id = options.base ? item[0] + options.base : item[0];
var count = idCountMap[id] || 0;
var identifier = "".concat(id, " ").concat(count);
idCountMap[id] = count + 1;
var index = getIndexByIdentifier(identifier);
var obj = {
css: item[1],
media: item[2],
sourceMap: item[3],
};
if (index !== -1) {
stylesInDom[index].references++;
stylesInDom[index].updater(obj);
} else {
stylesInDom.push({
identifier: identifier,
updater: addStyle(obj, options),
references: 1,
});
}
identifiers.push(identifier);
}
return identifiers;
}
function addStyle(obj, options) {
var api = options.domAPI(options);
api.update(obj);
return function updateStyle(newObj) {
if (newObj) {
if (
newObj.css === obj.css &&
newObj.media === obj.media &&
newObj.sourceMap === obj.sourceMap
) {
return;
}
api.update((obj = newObj));
} else {
api.remove();
}
};
}
module.exports = function (list, options) {
options = options || {};
list = list || [];
var lastIdentifiers = modulesToDom(list, options);
return function update(newList) {
newList = newList || [];
for (var i = 0; i < lastIdentifiers.length; i++) {
var identifier = lastIdentifiers[i];
var index = getIndexByIdentifier(identifier);
stylesInDom[index].references--;
}
var newLastIdentifiers = modulesToDom(newList, options);
for (var _i = 0; _i < lastIdentifiers.length; _i++) {
var _identifier = lastIdentifiers[_i];
var _index = getIndexByIdentifier(_identifier);
if (stylesInDom[_index].references === 0) {
stylesInDom[_index].updater();
stylesInDom.splice(_index, 1);
}
}
lastIdentifiers = newLastIdentifiers;
};
};
/***/
},
/***/ 569: /***/ (module) => {
var memo = {};
/* istanbul ignore next */
function getTarget(target) {
if (typeof memo[target] === "undefined") {
var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself
if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
try {
// This will throw an exception if access to iframe is blocked
// due to cross-origin restrictions
styleTarget = styleTarget.contentDocument.head;
} catch (e) {
// istanbul ignore next
styleTarget = null;
}
}
memo[target] = styleTarget;
}
return memo[target];
}
/* istanbul ignore next */
function insertBySelector(insert, style) {
var target = getTarget(insert);
if (!target) {
throw new Error(
"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."
);
}
target.appendChild(style);
}
module.exports = insertBySelector;
/***/
},
/***/ 216: /***/ (module) => {
/* istanbul ignore next */
function insertStyleElement(options) {
var style = document.createElement("style");
options.setAttributes(style, options.attributes);
options.insert(style);
return style;
}
module.exports = insertStyleElement;
/***/
},
/***/ 565: /***/ (module, __unused_webpack_exports, __webpack_require__) => {
/* istanbul ignore next */
function setAttributesWithoutAttributes(style) {
var nonce = true ? __webpack_require__.nc : 0;
if (nonce) {
style.setAttribute("nonce", nonce);
}
}
module.exports = setAttributesWithoutAttributes;
/***/
},
/***/ 795: /***/ (module) => {
/* istanbul ignore next */
function apply(style, options, obj) {
var css = obj.css;
var media = obj.media;
var sourceMap = obj.sourceMap;
if (media) {
style.setAttribute("media", media);
} else {
style.removeAttribute("media");
}
if (sourceMap && typeof btoa !== "undefined") {
css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(
btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))),
" */"
);
} // For old IE
/* istanbul ignore if */
options.styleTagTransform(css, style);
}
function removeStyleElement(style) {
// istanbul ignore if
if (style.parentNode === null) {
return false;
}
style.parentNode.removeChild(style);
}
/* istanbul ignore next */
function domAPI(options) {
var style = options.insertStyleElement(options);
return {
update: function update(obj) {
apply(style, options, obj);
},
remove: function remove() {
removeStyleElement(style);
},
};
}
module.exports = domAPI;
/***/
},
/***/ 589: /***/ (module) => {
/* istanbul ignore next */
function styleTagTransform(css, style) {
if (style.styleSheet) {
style.styleSheet.cssText = css;
} else {
while (style.firstChild) {
style.removeChild(style.firstChild);
}
style.appendChild(document.createTextNode(css));
}
}
module.exports = styleTagTransform;
/***/
},
/***/ 613: /***/ (module) => {
module.exports = function (cssWithMappingToString) {
var list = [];
list.toString = function toString() {
return this.map(function (item) {
var content = cssWithMappingToString(item);
if (item[2]) {
return "@media ".concat(item[2], " {").concat(content, "}");
}
return content;
}).join("");
};
list.i = function (modules, mediaQuery, dedupe) {
if (typeof modules === "string") {
modules = [[null, modules, ""]];
}
var alreadyImportedModules = {};
if (dedupe) {
for (var i = 0; i < this.length; i++) {
var id = this[i][0];
if (id != null) {
alreadyImportedModules[id] = true;
}
}
}
for (var _i = 0; _i < modules.length; _i++) {
var item = [].concat(modules[_i]);
if (dedupe && alreadyImportedModules[item[0]]) {
continue;
}
if (mediaQuery) {
if (!item[2]) {
item[2] = mediaQuery;
} else {
item[2] = "".concat(mediaQuery, " and ").concat(item[2]);
}
}
list.push(item);
}
};
return list;
};
/***/
},
/***/ 665: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __createBinding =
(this && this.__createBinding) ||
(Object.create
? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, {
enumerable: true,
get: function () {
return m[k];
},
});
}
: function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __setModuleDefault =
(this && this.__setModuleDefault) ||
(Object.create
? function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}
: function (o, v) {
o["default"] = v;
});
var __importStar =
(this && this.__importStar) ||
function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k in mod)
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importStar(__webpack_require__(804));
const union_link_1 = __importDefault(__webpack_require__(176));
const config_1 = __webpack_require__(913);
const button_styles_1 = __webpack_require__(288);
const JDHttpRequest_1 = __importDefault(__webpack_require__(948));
const TBHttpRequest_1 = __importDefault(__webpack_require__(259));
const useGetRequest = (url, config) => {
const [data, setData] = react_1.useState();
const request = async (url, config) => {
try {
let http = TBHttpRequest_1.default;
if (config.params?.type == "jd") {
http = JDHttpRequest_1.default;
}
const result = await http.get(url, config);
return result.data;
} catch (e) {
console.log(e);
}
};
react_1.useEffect(() => {
request(url, config).then((result) => setData(result));
}, []);
return data;
};
const Component = (props) => {
const result = useGetRequest("push", { params: { type: props.type } });
if (result?.success) {
return react_1.default.createElement(
union_link_1.default,
{
show: config_1.is_360,
union: props.type == "jd" ? "京东联盟" : "淘宝客",
target: "_blank",
href: result.result.url,
},
react_1.default.createElement(
button_styles_1.GreenColorButton,
{ variant: "contained", size: "small" },
result.result.text
)
);
}
return null;
};
exports.default = Component;
/***/
},
/***/ 288: /***/ (__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.TealColorButton =
exports.BlueColorButton =
exports.PinkColorButton =
exports.GreenColorButton =
void 0;
const core_1 = __webpack_require__(657);
exports.GreenColorButton = core_1.withStyles(() => ({
root: {
color: "#fff",
backgroundColor: "#07c160",
boxShadow: "none",
borderRadius: "2px",
"&:active": {
boxShadow: "none",
},
"&:focus": {
boxShadow: "none",
},
"&:hover": {
boxShadow: "none",
backgroundColor: "#03b352",
},
},
}))(core_1.Button);
exports.PinkColorButton = core_1.withStyles(() => ({
root: {
color: "#fff",
backgroundColor: "#ec407a",
boxShadow: "none",
borderRadius: "2px",
"&:active": {
boxShadow: "none",
},
"&:focus": {
boxShadow: "none",
},
"&:hover": {
boxShadow: "none",
backgroundColor: "#d81b60",
},
},
}))(core_1.Button);
exports.BlueColorButton = core_1.withStyles(() => ({
root: {
color: "#fff",
backgroundColor: "#1e88e5",
boxShadow: "none",
borderRadius: "2px",
"&:active": {
boxShadow: "none",
},
"&:focus": {
boxShadow: "none",
},
"&:hover": {
boxShadow: "none",
backgroundColor: "#1565c0",
},
},
}))(core_1.Button);
exports.TealColorButton = core_1.withStyles(() => ({
root: {
color: "#fff",
backgroundColor: "#07c160",
boxShadow: "none",
borderRadius: "2px",
"&:active": {
boxShadow: "none",
},
"&:focus": {
boxShadow: "none",
},
"&:hover": {
boxShadow: "none",
backgroundColor: "#03b352",
},
},
}))(core_1.Button);
/***/
},
/***/ 836: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __createBinding =
(this && this.__createBinding) ||
(Object.create
? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, {
enumerable: true,
get: function () {
return m[k];
},
});
}
: function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __setModuleDefault =
(this && this.__setModuleDefault) ||
(Object.create
? function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}
: function (o, v) {
o["default"] = v;
});
var __importStar =
(this && this.__importStar) ||
function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k in mod)
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importStar(__webpack_require__(804));
const button_styles_1 = __webpack_require__(288);
const core_1 = __webpack_require__(657);
const jd_1 = __webpack_require__(181);
const config_1 = __webpack_require__(913);
const functions_1 = __webpack_require__(877);
const union_link_1 = __importDefault(__webpack_require__(176));
const redirect = (params) => {
let result = new Array();
for (let k in params) {
result.push(`${k}=${encodeURIComponent(params[k])}`);
}
return window.open(config_1.baseUrl.jd + "/jd.goods.redirect?" + result.join("&"), "_blank");
};
const useGetCoupon = (skuid) => {
const [coupon, setCoupon] = react_1.useState();
const getItem = (skuid) => {
return jd_1.JdGoodsCouponStore.getItem(skuid);
};
react_1.useEffect(() => {
getItem(skuid).then((r) => setCoupon(r));
}, []);
return coupon;
};
const Component = (props) => {
const couponList = useGetCoupon(props.skuid);
const [random, setRandom] = react_1.useState(0);
react_1.useEffect(() => {
let timerid = 0;
if (couponList && couponList.length) {
if (timerid) return;
timerid = window.setInterval(() => {
setRandom(functions_1.randomInt(0, couponList.length));
timerid = 0;
window.clearTimeout(timerid);
}, 1000 * 7);
}
return () => {
window.clearTimeout(timerid);
};
}, [couponList]);
if (couponList?.length) {
return react_1.default.createElement(
"div",
{ className: "x-lhq-hover-9527" },
react_1.default.createElement(
button_styles_1.PinkColorButton,
{
style: { cursor: "default" },
title: "\u63D0\u793A\uFF1A\u5148\u9886\u53D6\u4F18\u60E0\u5238\u5728\u8D2D\u7269",
variant: "contained",
size: "small",
},
"\u6EE1",
couponList[random]["quota"],
"\u51CF",
couponList[random]["discount"],
"\u4F18\u60E0\u5238"
),
react_1.default.createElement(
"div",
{ className: "x-lhq-hover-9527__show", style: { width: props.width } },
react_1.default.createElement(
"table",
{ cellSpacing: "0", cellPadding: "0", className: "jd-coupon-list-9527" },
react_1.default.createElement(
"thead",
null,
react_1.default.createElement(
"tr",
{ key: "header" },
react_1.default.createElement("td", null, "\u4F18\u60E0\u5238\u4FE1\u606F"),
react_1.default.createElement("td", null, "\u6709\u6548\u671F"),
react_1.default.createElement("td", null)
)
),
react_1.default.createElement(
"tbody",
null,
couponList.map((v, i) => {
return react_1.default.createElement(
"tr",
{ key: i },
react_1.default.createElement(
"td",
{ width: "25%" },
"\u6EE1",
v.quota,
"\u51CF",
v.discount
),
react_1.default.createElement(
"td",
{ width: "45%" },
new Date(v.getStartTime).toLocaleDateString(),
"\u81F3",
new Date(v.getEndTime).toLocaleDateString()
),
react_1.default.createElement(
"td",
{ width: "30%" },
react_1.default.createElement(
core_1.Button,
{ color: "primary", disabled: v.price < v.quota, size: "small" },
react_1.default.createElement(
union_link_1.default,
{
union: "\u4EAC\u4E1C\u8054\u76DF",
show: config_1.is_360,
style: { color: "inherit" },
onClick: () =>
redirect({
secret: config_1.JD_AES_SECRET_KEY,
siteId: config_1.jd_site_id,
positionId: config_1.jd_position_id,
materialId: `https://item.jd.com/${props.skuid}.html`,
couponUrl: v.link,
}),
},
v.price < v.quota ? "商品价格过低,无法领取" : "领取优惠券"
)
)
)
);
})
)
)
)
);
}
return null;
};
exports.default = Component;
/***/
},
/***/ 687: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(__webpack_require__(804));
const react_2 = __webpack_require__(804);
const button_styles_1 = __webpack_require__(288);
const config_1 = __webpack_require__(913);
const JDHttpRequest_1 = __importDefault(__webpack_require__(948));
const union_link_1 = __importDefault(__webpack_require__(176));
const create_url = (materialUrl) => {
return /https?:\/\//.test(materialUrl) ? materialUrl : "https://" + materialUrl;
};
const Component = (props) => {
const [open, setOpen] = react_2.useState(props.open);
const redirect = async () => {
const wind = window.open("about:blank", "_blank");
const res = await JDHttpRequest_1.default.get("jd.goods.lijin", {
params: {
materialId: create_url(props.materialUrl),
siteId: config_1.jd_site_id,
lhq_secret: props.lhq_secret,
positionId: config_1.jd_position_id,
},
});
if (!res.data.success) {
wind.close();
alert("错误" + res.data.message);
setOpen(false);
}
const title = encodeURIComponent("手机打开京东APP扫码领取");
const clickURL = encodeURIComponent(res.data.data.clickURL);
wind.location.href = `${config_1.baseUrl.jd}/qrcode?title=${title}&url=${clickURL}`;
};
if (!(open && props.lhq_lijin && props.lhq_secret)) return null;
return react_1.default.createElement(
union_link_1.default,
{ union: "\u4EAC\u4E1C\u8054\u76DF", show: config_1.is_360, onClick: () => redirect() },
react_1.default.createElement(
button_styles_1.PinkColorButton,
{
title: "\u63D0\u793A\uFF1A\u793C\u91D1\u6709\u9650\uFF0C\u6CA1\u4E86\u5C31\u4F1A\u6D88\u5931\u6389\u6216\u6253\u5F00\u7A7A\u767D\u7F51\u9875",
variant: "contained",
size: "small",
},
"\u9886\u53D6",
react_1.default.createElement("b", null, props.lhq_lijin),
"\u5143\u793C\u91D1"
)
);
};
exports.default = Component;
/***/
},
/***/ 344: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(__webpack_require__(804));
const button_styles_1 = __webpack_require__(288);
const price_trend_chart_1 = __importDefault(__webpack_require__(228));
const JDHttpRequest_1 = __webpack_require__(948);
__webpack_require__(768);
const Component = (props) => {
const result = JDHttpRequest_1.useGetRequest("jd.goods.history.info", {
params: props,
});
if (result && result.result) {
return react_1.default.createElement(
"div",
{ className: "x-lhq-hover-9527" },
react_1.default.createElement(
button_styles_1.BlueColorButton,
{ style: { cursor: "default" }, variant: "contained", size: "small" },
"\u67E5\u770B\u5386\u53F2\u4EF7\u683C"
),
react_1.default.createElement(
"div",
{ className: "x-lhq-hover-9527__show", style: { width: props.width } },
react_1.default.createElement(price_trend_chart_1.default, {
width: props.width,
height: props.width / 2,
text: result?.result?.title,
data: { price: result?.result?.data ?? [] },
length: props.length,
})
)
);
}
return null;
};
exports.default = Component;
/***/
},
/***/ 412: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __createBinding =
(this && this.__createBinding) ||
(Object.create
? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, {
enumerable: true,
get: function () {
return m[k];
},
});
}
: function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __setModuleDefault =
(this && this.__setModuleDefault) ||
(Object.create
? function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}
: function (o, v) {
o["default"] = v;
});
var __importStar =
(this && this.__importStar) ||
function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k in mod)
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importStar(__webpack_require__(804));
const jd_1 = __webpack_require__(181);
const config_1 = __webpack_require__(913);
const union_link_1 = __importDefault(__webpack_require__(176));
__webpack_require__(768);
const redirect = (params) => {
let result = new Array();
for (let k in params) {
result.push(`${k}=${encodeURIComponent(params[k])}`);
}
return window.open(config_1.baseUrl.jd + "/jd.goods.redirect?" + result.join("&"), "_blank");
};
const getCouponList = (props) => {
const map = new Map();
if (props.couponInfo.couponList.length) {
for (let i = 0; i < props.couponInfo.couponList.length; i++) {
const data = Object.assign({}, props.couponInfo.couponList[i], {
price: props.priceInfo.price,
});
map.set(data.discount, data);
}
}
return map.size ? Array.from(map.values()) : [];
};
const storeCoupon = (skuId, price, couponList) => {
const result = new Array();
for (let i = 0; i < couponList.length; i++) {
const data = Object.assign({ price }, couponList[i]);
result.push(data);
}
jd_1.JdGoodsCouponStore.setItem(skuId, ...result);
};
const Item = (props) => {
const url = /^https?:\/\//gi.test(props.materialUrl)
? props.materialUrl
: "https://" + props.materialUrl;
const couponList = getCouponList(props);
react_1.useEffect(() => {
if (couponList.length) {
storeCoupon(props.skuId, props.priceInfo.price, props.couponInfo.couponList);
}
}, []);
return react_1.default.createElement(
"div",
{ className: "jd-item-9951" },
react_1.default.createElement(
union_link_1.default,
{
className: "jd-item-9951__img",
union: "\u4EAC\u4E1C\u8054\u76DF",
show: config_1.is_360,
onClick: () =>
redirect({
secret: config_1.JD_AES_SECRET_KEY,
siteId: config_1.jd_site_id,
positionId: config_1.jd_position_id,
materialId: url,
}),
},
react_1.default.createElement("img", {
width: "240",
height: "240",
src: props.imageInfo.imageList[0]["url"],
})
),
react_1.default.createElement(
"div",
{ className: "jd-item-9951__price" },
react_1.default.createElement("em", null, "\uFFE5"),
react_1.default.createElement("i", null, props.priceInfo.lowestCouponPrice),
react_1.default.createElement("strong", null, "\u5238\u540E\u4EF7")
),
react_1.default.createElement(
union_link_1.default,
{
union: "\u4EAC\u4E1C\u8054\u76DF",
show: config_1.is_360,
className: "jd-item-9951__h3",
onClick: () =>
redirect({
secret: config_1.JD_AES_SECRET_KEY,
siteId: config_1.jd_site_id,
positionId: config_1.jd_position_id,
materialId: url,
}),
},
props.owner === "g"
? react_1.default.createElement(
"em",
{ className: "jd-item-9951__tag" },
"\u4EAC\u4E1C\u81EA\u8425"
)
: null,
props.skuName
),
react_1.default.createElement(
"div",
{ className: "jd-item-9951__comments" },
react_1.default.createElement("strong", null, props.comments, " "),
"\u6761\u8BC4\u4EF7"
),
react_1.default.createElement(
"div",
{ className: "jd-item-9951__shop" },
react_1.default.createElement("span", null, props.shopInfo.shopName)
),
react_1.default.createElement(
"div",
{ className: "jd-item-9951__icons" },
props.lhq_lijin
? react_1.default.createElement(
"i",
{
title: "\u63D0\u793A\uFF1A\u793C\u91D1\u6709\u9650\uFF0C\u6CA1\u4E86\u5C31\u4F1A\u6D88\u606F\u6389\u6216\u6253\u5F00\u7A7A\u767D\u7F51\u9875",
},
props.lhq_lijin.toFixed(2),
" \u5143\u793C\u91D1"
)
: null,
couponList.map((v, i) =>
react_1.default.createElement(
"i",
{ title: `满${v.quota}元可用${v.discount}元券,请先点击领取优惠券`, key: i },
"\u6EE1",
v.quota,
"\u51CF",
v.discount
)
)
)
);
};
const ListItem = (props) => {
if (props.data?.length) {
return react_1.default.createElement(
"div",
{
style: {
display: "grid",
width: "100%",
gridTemplateColumns: "repeat(4,240px)",
justifyContent: "space-around",
rowGap: "15px",
},
},
props.data.map((v, i) => react_1.default.createElement(Item, { key: i, ...v }))
);
}
return react_1.default.createElement(react_1.default.Fragment, null, "\u6682\u65E0\u6570\u636E");
};
exports.default = ListItem;
/***/
},
/***/ 111: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __createBinding =
(this && this.__createBinding) ||
(Object.create
? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, {
enumerable: true,
get: function () {
return m[k];
},
});
}
: function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __setModuleDefault =
(this && this.__setModuleDefault) ||
(Object.create
? function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}
: function (o, v) {
o["default"] = v;
});
var __importStar =
(this && this.__importStar) ||
function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k in mod)
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importStar(__webpack_require__(804));
const JDHttpRequest_1 = __importDefault(__webpack_require__(948));
const modal_tabs_goods_push_1 = __importDefault(__webpack_require__(128));
const jd_item_goods_1 = __importDefault(__webpack_require__(412));
const pagination_1 = __importDefault(__webpack_require__(503));
const Component = ({ tabs, autoToggleTitle }) => {
const [tabIndex, setTabIndex] = react_1.useState(0);
const [items, setItems] = react_1.useState(
tabs.map((v) => {
return {
pageIndex: v.params.pageIndex,
maxPageIndex: 40,
data: new Array(),
state: "undone",
};
})
);
const [current, setCurrent] = react_1.useState();
const request = async (index, params) => {
try {
const [tab, item] = [tabs[index], items[index]];
item.state = "loading";
setCurrent(item);
const res = await JDHttpRequest_1.default.get(tab.url, {
params: Object.assign(tab.params, params),
});
if (res.data && res.data.success && res.data.data?.length) {
item.data.push(...res.data.data);
item.state = "undone";
if (item.pageIndex >= item.maxPageIndex) {
item.state = "done";
}
setItems(items);
return { ...item };
}
item.state = "done";
return { ...item };
} catch (e) {
console.log(e);
}
};
const onChangeTab = (index) => {
const target = items[index];
if (!target.data.length) {
request(index, { pageIndex: target.pageIndex }).then((result) => {
setCurrent(result);
});
} else {
setCurrent(target);
}
setTabIndex(index);
};
const onChangePage = () => {
items[tabIndex]["pageIndex"] += 1;
request(tabIndex, { pageIndex: items[tabIndex]["pageIndex"] }).then((result) => {
setCurrent(result);
});
};
return react_1.default.createElement(
modal_tabs_goods_push_1.default,
{
autoToggleTitle: autoToggleTitle,
tabs: tabs.map((v) => v.label),
onLoading: (i) => onChangeTab(i),
onChange: (i) => onChangeTab(i),
},
react_1.default.createElement(jd_item_goods_1.default, { data: current?.data }),
!current || current.state == "done"
? null
: react_1.default.createElement(pagination_1.default, {
loading: current.state == "loading",
onClick: () => onChangePage(),
})
);
};
exports.default = Component;
/***/
},
/***/ 128: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __createBinding =
(this && this.__createBinding) ||
(Object.create
? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, {
enumerable: true,
get: function () {
return m[k];
},
});
}
: function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __setModuleDefault =
(this && this.__setModuleDefault) ||
(Object.create
? function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}
: function (o, v) {
o["default"] = v;
});
var __importStar =
(this && this.__importStar) ||
function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k in mod)
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importStar(__webpack_require__(804));
const button_styles_1 = __webpack_require__(288);
const core_1 = __webpack_require__(657);
const functions_1 = __webpack_require__(877);
const useStyles = core_1.makeStyles((theme) => ({
modal: {
display: "flex",
alignItems: "center",
justifyContent: "center",
},
bar: {
boxShadow: "none",
},
tab: {
minWidth: "100px",
},
paper: {
backgroundColor: theme.palette.background.paper,
width: 1050,
position: "relative",
},
}));
function a11yProps(index) {
return {
id: `scrollable-auto-tab-${index}`,
};
}
const Component = (props) => {
const random = props.autoToggleTitle ? functions_1.randomInt(0, props.tabs.length) : 0;
const classes = useStyles();
const [open, setOpen] = react_1.useState(false);
const [tabIndex, setTabIndex] = react_1.useState(random);
const [tabDefaultIndexItem, setTabDefaultIndexItem] = react_1.useState(random);
const onChangeTab = (value) => {
setTabDefaultIndexItem(value);
props.onChange && props.onChange(value);
};
const onOpenModal = (value) => {
setTabDefaultIndexItem(value);
props.onLoading && props.onLoading(value);
setOpen(true);
};
const onCloseModal = () => setOpen(false);
react_1.useEffect(() => {
let timerid = 0;
if (props.autoToggleTitle) {
if (!timerid) {
timerid = window.setInterval(() => {
setTabIndex(functions_1.randomInt(0, props.tabs.length));
timerid = 0;
window.clearTimeout(timerid);
}, 1000 * 5);
}
}
return () => {
window.clearTimeout(timerid);
};
}, []);
return react_1.default.createElement(
"div",
{ style: { display: "inline-block" } },
react_1.default.createElement(
button_styles_1.TealColorButton,
{
variant: "contained",
title: "\u5185\u7F6E\u5546\u54C1\u4F18\u60E0\u5238",
size: "small",
onClick: () => onOpenModal(tabIndex),
},
props.tabs[tabIndex]
),
react_1.default.createElement(
core_1.Modal,
{
open: open,
style: { zIndex: 99999999 },
onClose: () => setOpen(false),
className: classes.modal,
},
react_1.default.createElement(
"div",
{ className: classes.paper },
react_1.default.createElement(
core_1.AppBar,
{ position: "static", color: "default", className: classes.bar },
react_1.default.createElement(
core_1.Tabs,
{
value: tabDefaultIndexItem,
onChange: (e, value) => onChangeTab(value),
indicatorColor: "primary",
textColor: "primary",
variant: "scrollable",
scrollButtons: "auto",
},
props.tabs.map((value, index) => {
return react_1.default.createElement(core_1.Tab, {
className: classes.tab,
key: index,
value: index,
label: value,
...a11yProps(index),
});
})
)
),
react_1.default.createElement(
"div",
{ style: { padding: "15px 5px", maxHeight: 700, height: "75vh", overflowY: "scroll" } },
props.children
),
react_1.default.createElement(
core_1.Fab,
{
style: { position: "absolute", bottom: "20px", right: "30px" },
size: "medium",
title: "\u70B9\u51FB\u5916\u90E8\u6697\u8272\u533A\u57DF\u4E5F\u53EF\u5173\u95ED",
onClick: () => onCloseModal(),
},
"\u5173\u95ED"
)
)
)
);
};
exports.default = Component;
/***/
},
/***/ 503: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(__webpack_require__(804));
__webpack_require__(768);
const Pagination = (props) => {
return react_1.default.createElement(
"div",
{ className: "pagination-9784" },
react_1.default.createElement(
"div",
{ className: "pagination-9784__text", onClick: () => props.loading || props.onClick() },
props.loading ? "加载中..." : props.text ?? "点击加载更多内容"
)
);
};
exports.default = Pagination;
/***/
},
/***/ 228: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __createBinding =
(this && this.__createBinding) ||
(Object.create
? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, {
enumerable: true,
get: function () {
return m[k];
},
});
}
: function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __setModuleDefault =
(this && this.__setModuleDefault) ||
(Object.create
? function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}
: function (o, v) {
o["default"] = v;
});
var __importStar =
(this && this.__importStar) ||
function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k in mod)
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importStar(__webpack_require__(804));
const echarts = __importStar(__webpack_require__(83));
const options = {
title: {
textStyle: {
fontSize: 13,
width: 250,
overflow: "break",
lineHeight: 18,
},
},
tooltip: {
trigger: "axis",
label: {
precision: 2,
},
},
legend: {
data: ["历史价格"],
right: "20px",
},
xAxis: {
type: "time",
boundaryGap: false,
data: new Array(),
},
yAxis: {
type: "value",
axisLabel: {
formatter: "{value} 元",
},
},
series: [
{
name: "历史价格",
type: "line",
data: new Array(),
markPoint: {
data: [
{ type: "max", name: "最大值" },
{ type: "min", name: "最小值" },
],
},
markLine: {
data: [{ type: "average", name: "平均值" }],
},
},
],
};
const serieCoupon = {
name: "历史优惠券",
type: "line",
data: new Array(),
markPoint: {
data: [{ type: "max", name: "最大值" }],
},
markLine: {
data: [{ type: "average", name: "平均值" }],
},
};
const format = (length, data) => {
const time = fill(length);
const result = new Array();
for (let i = 0; i < length; i++) {
if (data[i]) result.push([time[i], data[i]]);
}
return result;
};
const fill = (length) => {
const result = new Array();
const dayTimestamp = 1000 * 60 * 60 * 24;
let start = new Date(Date.now() - dayTimestamp * length);
for (let i = 0; i < length; i++) {
start = new Date(start.getTime() + dayTimestamp);
const year = start.getFullYear();
const month = start.getMonth() + 1;
const day = start.getDate();
result.push(`${year}-${month}-${day}`);
}
return result;
};
const component = (props) => {
const myecharts = react_1.useRef();
const chartRef = react_1.useRef(null);
const reset = () => {
options.xAxis.data = fill(props.length);
options.series[0].data = format(props.length, props.data.price);
options.title = Object.assign(options.title, { text: props.text, subtext: props.subtext });
if (typeof props.width != "undefined") {
options.title.textStyle.width =
typeof props.width == "string" ? Number.parseInt(props.width) * 0.65 : props.width * 0.65;
}
if (props.data.coupon?.length) {
const legend = new Set([...options.legend.data, "历史优惠券"]);
options.legend.data = Array.from(legend);
options.series[1] = serieCoupon;
options.series[1].data = format(props.length, props.data.coupon);
}
myecharts.current?.setOption(options);
};
react_1.useEffect(() => {
if (chartRef.current) {
myecharts.current = echarts.init(chartRef.current);
reset();
}
}, [myecharts.current]);
if (chartRef.current) reset();
return react_1.default.createElement("div", {
style: { width: props.width ?? "500px", height: props.height ?? "340px" },
ref: chartRef,
});
};
exports.default = component;
/***/
},
/***/ 783: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __createBinding =
(this && this.__createBinding) ||
(Object.create
? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, {
enumerable: true,
get: function () {
return m[k];
},
});
}
: function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __setModuleDefault =
(this && this.__setModuleDefault) ||
(Object.create
? function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}
: function (o, v) {
o["default"] = v;
});
var __importStar =
(this && this.__importStar) ||
function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k in mod)
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importStar(__webpack_require__(804));
const button_styles_1 = __webpack_require__(288);
const tb_1 = __webpack_require__(609);
const TBHttpRequest_1 = __importDefault(__webpack_require__(259));
const config_1 = __webpack_require__(913);
const tb_goods_lijin_1 = __importDefault(__webpack_require__(890));
const union_link_1 = __importDefault(__webpack_require__(176));
const create_url = (coupon_share_url) => {
const url = "https:" + coupon_share_url;
return config_1.baseUrl.tb + "/redirect?url=" + encodeURI(url);
};
const useGetRequest = (item_id, title) => {
const [coupon, setCoupon] = react_1.useState();
const request = async () => {
const item = await tb_1.TbGoodsCouponStore.getItem(item_id);
if (!item) {
try {
const res = await TBHttpRequest_1.default.get("taobao.tbk.goods.find.one", {
params: {
item_id: item_id,
title: title,
adzone_id: config_1.ADZONE_ID,
},
});
if (
res.data &&
res.data.success &&
res.data.result_list &&
res.data.result_list.map_data?.length
) {
tb_1.TbGoodsCouponStore.setItem(item_id, res.data.result_list.map_data[0]);
return res.data.result_list.map_data[0];
}
} catch (e) {}
return null;
}
return item;
};
react_1.useEffect(() => {
request().then((result) => result && setCoupon(result));
}, []);
return coupon;
};
const component = (props) => {
const item = useGetRequest(props.item_id, props.title);
if (!item) return null;
let coupon = null;
if (item?.coupon_share_url && item?.coupon_amount) {
const coupon_share_url = create_url(item.coupon_share_url);
coupon = react_1.default.createElement(
union_link_1.default,
{ union: "\u6DD8\u5B9D\u5BA2", show: config_1.is_360, target: "_self", href: coupon_share_url },
react_1.default.createElement(
button_styles_1.PinkColorButton,
{
title: "\u63D0\u793A\uFF1A\u5148\u9886\u53D6\u4F18\u60E0\u5238\u5728\u8D2D\u7269",
variant: "contained",
size: "small",
},
"\u9886\u53D6",
react_1.default.createElement("b", null, item.coupon_amount),
"\u5143\u4F18\u60E0\u5238"
)
);
}
return react_1.default.createElement(
react_1.default.Fragment,
null,
react_1.default.createElement(tb_goods_lijin_1.default, {
open: props.lijin,
item_id: item.item_id,
lhq_lijin: item.lhq_lijin,
lhq_secret: item.lhq_secret,
}),
coupon
);
};
exports.default = component;
/***/
},
/***/ 890: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(__webpack_require__(804));
const react_2 = __webpack_require__(804);
const button_styles_1 = __webpack_require__(288);
const config_1 = __webpack_require__(913);
const TBHttpRequest_1 = __importDefault(__webpack_require__(259));
const union_link_1 = __importDefault(__webpack_require__(176));
const Component = (props) => {
const [open, setOpen] = react_2.useState(props.open);
const redirect = async (lhq_secret) => {
try {
const wind = window.open("about:blank", "_blank");
const res = await TBHttpRequest_1.default.get("taotao.tbk.goods.lijin", {
params: { lhq_secret, adzone_id: config_1.ADZONE_ID },
});
if (res.data.success && res.data.result) {
const title = encodeURIComponent("手机打开淘宝APP扫码领取");
const clickURL = encodeURIComponent(res.data.result.clickURL);
wind.location.href = `${config_1.baseUrl.tb}/qrcode?title=${title}&url=${clickURL}`;
} else {
wind.close();
setOpen(false);
alert("错误" + res.data.msg);
}
} catch (e) {
alert("礼金创建异常-网络请求出错");
}
};
if (!(open && props.lhq_lijin && props.lhq_secret)) return null;
return react_1.default.createElement(
union_link_1.default,
{
union: "\u6DD8\u5B9D\u5BA2",
show: config_1.is_360,
onClick: () => props.lhq_secret && redirect(props.lhq_secret),
},
react_1.default.createElement(
button_styles_1.PinkColorButton,
{
title: "\u63D0\u793A\uFF1A\u793C\u91D1\u6709\u9650\uFF0C\u6CA1\u4E86\u5C31\u4F1A\u6D88\u5931\u6389\u6216\u6253\u5F00\u7A7A\u767D\u7F51\u9875",
variant: "contained",
size: "small",
},
"\u9886\u53D6",
react_1.default.createElement("b", null, props.lhq_lijin),
"\u5143\u6DD8\u793C\u91D1"
)
);
};
exports.default = Component;
/***/
},
/***/ 447: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(__webpack_require__(804));
const TBHttpRequest_1 = __webpack_require__(259);
const button_styles_1 = __webpack_require__(288);
const price_trend_chart_1 = __importDefault(__webpack_require__(228));
__webpack_require__(768);
const component = ({ num_iid, length, width }) => {
const result_price = TBHttpRequest_1.useGetRequest("taobao.tbk.goods.history.info/price", {
params: {
item_id: num_iid,
length: length,
},
});
const result_coupon = TBHttpRequest_1.useGetRequest("taobao.tbk.goods.history.info/coupon", {
params: {
item_id: num_iid,
length: length,
},
});
return result_price?.result || result_coupon?.result
? react_1.default.createElement(
"div",
{ className: "x-lhq-hover-9527" },
react_1.default.createElement(
button_styles_1.BlueColorButton,
{ style: { cursor: "default" }, variant: "contained", size: "small" },
"\u67E5\u770B\u5386\u53F2\u4EF7\u683C"
),
react_1.default.createElement(
"div",
{ className: "x-lhq-hover-9527__show", style: { width } },
react_1.default.createElement(price_trend_chart_1.default, {
text: result_price?.result?.title ?? result_coupon?.result?.title,
data: {
price: result_price?.result?.data ?? [],
coupon: result_coupon?.result?.data ?? [],
},
length: length,
width: width,
height: width / 2,
})
)
)
: null;
};
exports.default = component;
/***/
},
/***/ 23: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(__webpack_require__(804));
const tb_1 = __webpack_require__(609);
const config_1 = __webpack_require__(913);
const union_link_1 = __importDefault(__webpack_require__(176));
__webpack_require__(768);
const create_url = (props) => {
let url = "https://item.taobao.com/item.htm?id=" + props.item_id;
if (props.click_url) url = "https:" + props.click_url;
if (props.coupon_share_url) url = "https:" + props.coupon_share_url;
return config_1.baseUrl.tb + "/redirect?url=" + encodeURI(url);
};
const lowestCouponPrice = (zk_price, coupon_amount) => {
let price1 = Number.parseFloat(zk_price);
let price2 = coupon_amount ? Number.parseFloat(coupon_amount) : 0;
return (price1 - price2).toFixed(2);
};
const Item = (props) => {
const user_type = ["淘宝", "天猫", "", "特价版"];
tb_1.TbGoodsCouponStore.setItem(props.item_id, props);
return react_1.default.createElement(
"div",
{ className: "jd-item-9951" },
react_1.default.createElement(
union_link_1.default,
{
className: "jd-item-9951__img",
show: config_1.is_360,
union: "\u6DD8\u5B9D\u5BA2",
target: "_blank",
href: create_url(props),
},
react_1.default.createElement("img", {
width: "240",
height: "240",
src: props.pict_url + "_250x250",
})
),
react_1.default.createElement(
"div",
{ className: "jd-item-9951__price" },
react_1.default.createElement("em", null, "\uFFE5"),
react_1.default.createElement(
"i",
null,
lowestCouponPrice(props.zk_final_price, props.coupon_amount)
),
react_1.default.createElement("strong", null, "\u5238\u540E\u4EF7")
),
react_1.default.createElement(
union_link_1.default,
{
className: "jd-item-9951__h3",
show: config_1.is_360,
target: "_blank",
union: "\u6DD8\u5B9D\u5BA2",
href: create_url(props),
},
react_1.default.createElement(
"em",
{ className: `jd-item-9951__tag jd-item-9951__tag--${props.user_type}` },
user_type[props.user_type]
),
props.title
),
react_1.default.createElement(
"div",
{ className: "jd-item-9951__comments" },
react_1.default.createElement("strong", null, props.volume, " "),
" \u6708\u9500\u91CF"
),
react_1.default.createElement(
"div",
{ className: "jd-item-9951__shop" },
react_1.default.createElement("span", null, props.shop_title)
),
react_1.default.createElement(
"div",
{ className: "jd-item-9951__icons" },
!props.lhq_lijin
? null
: react_1.default.createElement(
"i",
{
title: "\u63D0\u793A\uFF1A\u793C\u91D1\u6709\u9650\uFF0C\u6CA1\u4E86\u5C31\u4F1A\u6D88\u606F\u6389\u6216\u6253\u5F00\u7A7A\u767D\u7F51\u9875",
},
props.lhq_lijin.toFixed(2),
" \u5143\u6DD8\u793C\u91D1"
),
!props.coupon_amount
? null
: react_1.default.createElement(
"i",
{
title: `满${props.coupon_start_fee}减${props.coupon_amount}券,请先点击领取优惠券`,
},
props.coupon_start_fee?.length
? `满${props.coupon_start_fee}减${props.coupon_amount}`
: `${props.coupon_amount}元优惠券`
)
)
);
};
const ListItem = (props) => {
if (props.data?.length) {
return react_1.default.createElement(
"div",
{
style: {
display: "grid",
width: "100%",
gridTemplateColumns: "repeat(4,240px)",
justifyContent: "space-around",
rowGap: "15px",
},
},
props.data.map((v, i) => react_1.default.createElement(Item, { key: i, ...v }))
);
}
return react_1.default.createElement(react_1.default.Fragment, null, "\u6682\u65E0\u6570\u636E");
};
exports.default = ListItem;
/***/
},
/***/ 807: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __createBinding =
(this && this.__createBinding) ||
(Object.create
? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, {
enumerable: true,
get: function () {
return m[k];
},
});
}
: function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __setModuleDefault =
(this && this.__setModuleDefault) ||
(Object.create
? function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}
: function (o, v) {
o["default"] = v;
});
var __importStar =
(this && this.__importStar) ||
function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k in mod)
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importStar(__webpack_require__(804));
const TBHttpRequest_1 = __importDefault(__webpack_require__(259));
const modal_tabs_goods_push_1 = __importDefault(__webpack_require__(128));
const tb_item_goods_1 = __importDefault(__webpack_require__(23));
const pagination_1 = __importDefault(__webpack_require__(503));
const config_1 = __webpack_require__(913);
const Component = ({ tabs, autoToggleTitle }) => {
const [tabIndex, setTabIndex] = react_1.useState(0);
const [items, setItems] = react_1.useState(
tabs.map((v) => {
return {
page_no: v.params.page_no,
maxPageIndex: 40,
data: new Array(),
state: "undone",
};
})
);
const [current, setCurrent] = react_1.useState();
const request = async (index, params) => {
try {
const [tab, item] = [tabs[index], items[index]];
item.state = "loading";
setCurrent(item);
const res = await TBHttpRequest_1.default.get(tab.url, {
params: Object.assign({ adzone_id: config_1.ADZONE_ID }, tab.params, params),
});
if (
res.data &&
res.data.success &&
res.data.result_list &&
res.data.result_list.map_data?.length
) {
item.data.push(...res.data.result_list.map_data);
item.state = "undone";
if (item.page_no >= item.maxPageIndex) {
item.state = "done";
}
setItems(items);
return { ...item };
}
item.state = "done";
return { ...item };
} catch (e) {
console.log(e);
}
};
const onChangeTab = (index) => {
const target = items[index];
if (target.data?.length) {
setCurrent(target);
} else {
request(index, { page_no: target.page_no }).then((result) => {
setCurrent(result);
});
}
setTabIndex(index);
};
const onChangePage = () => {
items[tabIndex]["page_no"] += 1;
request(tabIndex, { page_no: items[tabIndex]["page_no"] }).then((result) => {
setCurrent(result);
});
};
return react_1.default.createElement(
modal_tabs_goods_push_1.default,
{
autoToggleTitle: autoToggleTitle,
tabs: tabs.map((v) => v.label),
onLoading: (i) => onChangeTab(i),
onChange: (i) => onChangeTab(i),
},
react_1.default.createElement(tb_item_goods_1.default, { data: current?.data }),
!current || current.state == "done"
? null
: react_1.default.createElement(pagination_1.default, {
loading: current.state == "loading",
onClick: () => onChangePage(),
})
);
};
exports.default = Component;
/***/
},
/***/ 176: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __createBinding =
(this && this.__createBinding) ||
(Object.create
? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, {
enumerable: true,
get: function () {
return m[k];
},
});
}
: function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __setModuleDefault =
(this && this.__setModuleDefault) ||
(Object.create
? function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}
: function (o, v) {
o["default"] = v;
});
var __importStar =
(this && this.__importStar) ||
function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k in mod)
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importStar(__webpack_require__(804));
const core_1 = __webpack_require__(657);
function getItem() {
const result = window.localStorage.getItem("protocol");
return result ? JSON.parse(result) : false;
}
function setItem(value) {
try {
window.localStorage.setItem("protocol", JSON.stringify(value));
} catch (e) {
window.localStorage.clear();
window.localStorage.setItem("protocol", JSON.stringify(value));
}
}
const Component = (props) => {
const [open, setOpen] = react_1.useState(false);
const [checked, setChecked] = react_1.useState(true);
const handleClose = () => {
setOpen(false);
};
const handleClick = (event) => {
const protocol = getItem();
if (!props.show || protocol) {
if (props.href) {
return window.open(props.href, props.target);
}
return props.onClick && props.onClick(event);
}
setOpen(true);
};
const handleAgree = (event) => {
setItem(checked);
setOpen(false);
if (props.href) {
return window.open(props.href, props.target);
}
return props.onClick && props.onClick(event);
};
const handleChange = (event) => {
setChecked(event.target.checked);
};
return react_1.default.createElement(
react_1.default.Fragment,
null,
react_1.default.createElement(
"a",
{
className: props.className,
rel: "noopener noreferrer",
onClick: handleClick,
style: Object.assign({ cursor: "pointer", textDecoration: "none" }, props.style),
},
props.children
),
react_1.default.createElement(
core_1.Dialog,
{ style: { zIndex: 99999999 + 1 }, open: open, onClose: handleClose, maxWidth: "sm" },
react_1.default.createElement(
core_1.DialogContent,
null,
react_1.default.createElement(
core_1.DialogContentText,
{ id: "alert-dialog-description" },
"\u5F53\u524D\u70B9\u51FB\u5C06\u8DF3\u8F6C\u81F3",
props.union,
"\u94FE\u63A5\uFF0C\u6211\u4EEC\u627F\u8BFA\u8BE5\u8DF3\u8F6C\u5BF9\u8D2D\u7269\u6CA1\u6709\u4EFB\u4F55\u5F71\u54CD\u3002\u60A8\u662F\u5426\u540C\u610F\uFF1F",
react_1.default.createElement("br", null)
)
),
react_1.default.createElement(
core_1.DialogActions,
null,
react_1.default.createElement(
"div",
{ style: { display: "flex", flex: "1", alignItems: "center" } },
react_1.default.createElement(
"div",
{ style: { color: "rgba(0, 0, 0, 0.54)" } },
react_1.default.createElement(core_1.Checkbox, {
checked: checked,
color: "primary",
inputProps: { "aria-label": "indeterminate checkbox" },
onChange: handleChange,
}),
"\u4E0B\u6B21\u662F\u5426\u76F4\u63A5\u8BBF\u95EE,\u4E0D\u5728\u5F39\u51FA\u63D0\u793A\uFF1F"
),
react_1.default.createElement(
"div",
{ style: { marginLeft: "auto" } },
react_1.default.createElement(
core_1.Button,
{
variant: "contained",
style: { marginRight: "20px" },
onClick: handleAgree,
autoFocus: true,
color: "primary",
},
"\u540C\u610F"
),
react_1.default.createElement(
core_1.Button,
{ variant: "outlined", onClick: handleClose },
"\u53D6\u6D88"
)
)
)
)
)
);
};
exports.default = Component;
/***/
},
/***/ 913: /***/ (__unused_webpack_module, exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.jd_pid =
exports.jd_position_id =
exports.jd_site_id =
exports.JD_AES_SECRET_KEY =
exports.TB_AES_SECRET_KEY =
exports.ADZONE_ID =
exports.is_360 =
exports.iframeName =
exports.KEY_SECRET =
exports.iframeURL =
exports.wwwroot =
exports.version =
exports.baseUrl =
void 0;
exports.baseUrl = {
jd: "https://www.zhuamimi.cn/v3",
tb: "https://www.24tao.net/v3",
};
exports.version = "3.1.9";
exports.wwwroot = "https://www.24tao.net";
exports.iframeURL = `https://tampermonkey.lhyhq.cn/iframe.html`;
exports.KEY_SECRET = "api.lhyhq.cn";
exports.iframeName = "iframe-name-9527";
exports.is_360 = false;
exports.ADZONE_ID = "111397100201";
exports.TB_AES_SECRET_KEY =
"U2FsdGVkX19Hq18uEcZ9DZS3brf6hiISppL5kOdkwRZnV4tZg232Xnmlp32J8IORQxitf67ialO/he8zGKgrU59hRPf9qzf4I9qbzQieLg53g6eWJC5rnl9eMchYZ2ONdWx0MAf6PBLfJ+iRG6gxfka0gwEDe5lxsZqIh5EDvvq9hexxME677Uzo99XNhj0E";
exports.JD_AES_SECRET_KEY =
"U2FsdGVkX18E952dfysVPf9MUfCcTO2NI1AJ04YIxcMqsn/5nv/Te2BJ+x6uq+UuMwtkzcJZSeXrl5dx9q2g4yLqKCd8LvKC3k26nfbX/bbDlRugwzc6QRdiLhMGQDJMMox5ksqG3OGi/5K72AWEvXNTJ/537pChD2LMzY1YmGcvD4VTbdOI//ZSy8ikpgCuHfrG8Djq4FOLcp+EqNWK5g==";
exports.jd_site_id = "4000207880";
exports.jd_position_id = "3002582676";
exports.jd_pid = "1002977806_4000207880_3002582676";
/***/
},
/***/ 249: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(__webpack_require__(804));
const jd_hover_history_price_1 = __importDefault(__webpack_require__(344));
const core_1 = __webpack_require__(657);
const jd_modal_goods_push_1 = __importDefault(__webpack_require__(111));
const jd_goods_coupon_1 = __importDefault(__webpack_require__(836));
const JDHttpRequest_1 = __webpack_require__(948);
const jd_goods_lijin_1 = __importDefault(__webpack_require__(687));
const activity_push_1 = __importDefault(__webpack_require__(665));
const useStyles = core_1.makeStyles((theme) =>
core_1.createStyles({
root: {
display: "flex",
flexWrap: "wrap",
position: "relative",
"& > *": {
margin: "0 5px 5px 0",
"&:last-child": {
marginRight: "0",
},
},
},
})
);
const App = (props) => {
const classes = useStyles();
const servercfg = JDHttpRequest_1.useGetRequest("server");
const columns = JDHttpRequest_1.useGetColumns("static/jd_push_column.json");
const goods = JDHttpRequest_1.useGetRequest("jd.goods.promotiongoodsinfo.query", {
params: {
skuIds: props.skuid,
},
});
return react_1.default.createElement(
"div",
{ className: classes.root },
react_1.default.createElement(jd_goods_coupon_1.default, {
width: props.width,
skuid: props.skuid,
}),
servercfg && goods && goods.data?.length
? react_1.default.createElement(jd_goods_lijin_1.default, {
open: servercfg.jd_linji_state,
lhq_lijin: goods.data[0].lhq_lijin,
lhq_secret: goods.data[0].lhq_secret,
materialUrl: goods.data[0].materialUrl,
})
: null,
goods
? react_1.default.createElement(jd_hover_history_price_1.default, {
width: props.width,
length: props.histroy,
item_id: props.skuid,
})
: null,
columns.length
? react_1.default.createElement(jd_modal_goods_push_1.default, {
tabs: columns,
autoToggleTitle: true,
})
: null,
react_1.default.createElement(activity_push_1.default, { type: "jd" })
);
};
exports.default = App;
/***/
},
/***/ 814: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(__webpack_require__(804));
const core_1 = __webpack_require__(657);
const activity_push_1 = __importDefault(__webpack_require__(665));
const TBHttpRequest_1 = __webpack_require__(259);
const tb_modal_goods_push_1 = __importDefault(__webpack_require__(807));
const tb_goods_coupon_1 = __importDefault(__webpack_require__(783));
const tb_hover_history_price_1 = __importDefault(__webpack_require__(447));
const useStyles = core_1.makeStyles((theme) =>
core_1.createStyles({
root: {
display: "flex",
flexWrap: "wrap",
position: "relative",
"& > *": {
margin: "0 5px 5px 0",
"&:last-child": {
marginRight: "0",
},
},
},
})
);
const App = (props) => {
const classes = useStyles();
const columns = TBHttpRequest_1.useGetColumns("static/tb_push_column.json");
const servercfg = TBHttpRequest_1.useGetRequest("server");
return react_1.default.createElement(
"div",
{ className: classes.root },
servercfg
? react_1.default.createElement(tb_goods_coupon_1.default, {
lijin: servercfg.tb_lijin_state,
item_id: props.num_iid,
title: props.title,
})
: null,
react_1.default.createElement(tb_hover_history_price_1.default, {
length: props.histroy,
num_iid: props.num_iid,
width: props.width,
}),
columns.length
? react_1.default.createElement(tb_modal_goods_push_1.default, {
tabs: columns.map((v) => {
if (v.params.material_id == "13256") {
v.params.item_id = props.num_iid;
}
return v;
}),
autoToggleTitle: true,
})
: null,
react_1.default.createElement(activity_push_1.default, { type: "tb" })
);
};
exports.default = App;
/***/
},
/***/ 154: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(__webpack_require__(804));
const core_1 = __webpack_require__(657);
const TBHttpRequest_1 = __webpack_require__(259);
const tb_modal_goods_push_1 = __importDefault(__webpack_require__(807));
const tb_goods_coupon_1 = __importDefault(__webpack_require__(783));
const useStyles = core_1.makeStyles((theme) =>
core_1.createStyles({
root: {
display: "inline-flex",
flexDirection: "column",
"& > *": {
margin: "5px 0 0 5px",
},
},
})
);
const App = (props) => {
const classes = useStyles();
const columns = TBHttpRequest_1.useGetColumns("static/tb_push_column.json");
const servercfg = TBHttpRequest_1.useGetRequest("server");
return react_1.default.createElement(
"div",
{ className: classes.root },
servercfg
? react_1.default.createElement(tb_goods_coupon_1.default, {
lijin: servercfg.tb_lijin_state,
item_id: props.num_iid,
title: props.title,
})
: null,
columns.length
? react_1.default.createElement(tb_modal_goods_push_1.default, {
tabs: columns.map((v) => {
if (v.params.material_id == "13256") {
v.params.item_id = props.num_iid;
}
return v;
}),
autoToggleTitle: false,
})
: null
);
};
exports.default = App;
/***/
},
/***/ 948: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.useGetColumns = exports.useGetRequest = void 0;
const axios_1 = __importDefault(__webpack_require__(376));
const react_1 = __webpack_require__(804);
const config_1 = __webpack_require__(913);
const functions_1 = __webpack_require__(877);
const http = axios_1.default.create({
timeout: 1000 * 30,
baseURL: config_1.baseUrl.jd,
params: {
secret: config_1.JD_AES_SECRET_KEY,
},
});
const retry = (s, config) => {
return new Promise((resolve, reject) => {
if (!config.params.retry || config.params.retry < 3) {
config.params.retry = config.params.retry ? config.params.retry + 1 : 1;
setTimeout(() => resolve(http.request(config)), s);
} else {
reject("请求失败");
}
});
};
http.interceptors.request.use(async (config) => {
if (!config.params) config.params = {};
const userID = await functions_1.uuid();
const timestamp = Date.now();
config.params["__v"] = config_1.version;
config.params["x-me-sign"] = functions_1.sign(config.params, timestamp, userID);
config.params["x-me-time"] = timestamp;
config.params["x-me-uuid"] = userID;
return config;
});
http.interceptors.response.use(undefined, (error) => {
if (!error.response) {
console.log("没有 response 对象");
console.log(error);
return retry(500, error.config);
}
return Promise.reject(error);
});
const useGetRequest = (url, config) => {
const [data, setData] = react_1.useState();
const request = async (url, config) => {
try {
const result = await http.get(url, config);
return result.data;
} catch (e) {
console.log(e);
}
};
react_1.useEffect(() => {
request(url, config).then((result) => setData(result));
}, []);
return data;
};
exports.useGetRequest = useGetRequest;
const useGetColumns = (url) => {
const [columns, setColumns] = react_1.useState([]);
const request = async (url) => {
try {
const item = sessionStorage.getItem("jd_push_column");
if (item) {
const parse_item = JSON.parse(item);
if (Array.isArray(parse_item) && parse_item.length) {
return parse_item;
}
}
const res = await http.get(url);
const data = res.data;
sessionStorage.setItem("jd_push_column", JSON.stringify(data));
return data;
} catch (e) {
sessionStorage.clear();
console.log(e);
}
return [];
};
react_1.useEffect(() => {
request(url).then((r) => setColumns(r));
}, []);
return columns;
};
exports.useGetColumns = useGetColumns;
exports.default = http;
/***/
},
/***/ 259: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.useGetColumns = exports.useGetRequest = void 0;
const axios_1 = __importDefault(__webpack_require__(376));
const config_1 = __webpack_require__(913);
const react_1 = __webpack_require__(804);
const functions_1 = __webpack_require__(877);
const http = axios_1.default.create({
timeout: 1000 * 30,
baseURL: config_1.baseUrl.tb,
params: {
secret: config_1.TB_AES_SECRET_KEY,
},
});
const retry = (s, config) => {
return new Promise((resolve, reject) => {
if (!config.params.retry || config.params.retry < 3) {
config.params.retry = config.params.retry ? config.params.retry + 1 : 1;
setTimeout(() => resolve(http.request(config)), s);
} else {
reject("请求失败");
}
});
};
http.interceptors.request.use(async (config) => {
if (!config.params) config.params = {};
const userID = await functions_1.uuid();
const timestamp = Date.now();
config.params["__v"] = config_1.version;
config.params["x-me-sign"] = functions_1.sign(config.params, timestamp, userID);
config.params["x-me-time"] = timestamp;
config.params["x-me-uuid"] = userID;
return config;
});
http.interceptors.response.use(
(res) => {
if (res.data.code == 15) {
return retry(500, res.config);
}
return res;
},
(error) => {
if (!error.response) {
console.log("没有 response 对象");
console.log(error);
return retry(500, error.config);
}
return Promise.reject(error);
}
);
const useGetRequest = (url, config) => {
const [data, setData] = react_1.useState();
const request = async (url, config) => {
try {
const result = await http.get(url, config);
return result.data;
} catch (e) {
console.log(e);
}
};
react_1.useEffect(() => {
request(url, config).then((result) => setData(result));
}, []);
return data;
};
exports.useGetRequest = useGetRequest;
const useGetColumns = (url) => {
const [columns, setColumns] = react_1.useState([]);
const request = async (url) => {
try {
const item = sessionStorage.getItem("tb_push_column");
if (item) {
const parse_item = JSON.parse(item);
if (Array.isArray(parse_item) && parse_item.length) {
return parse_item;
}
}
const res = await http.get(url);
const data = res.data;
sessionStorage.setItem("tb_push_column", JSON.stringify(data));
return data;
} catch (e) {
sessionStorage.clear();
console.log(e);
}
return [];
};
react_1.useEffect(() => {
request(url).then((r) => setColumns(r));
}, []);
return columns;
};
exports.useGetColumns = useGetColumns;
exports.default = http;
/***/
},
/***/ 963: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.JD_ContextItemPage = void 0;
const react_1 = __importDefault(__webpack_require__(804));
const react_dom_1 = __importDefault(__webpack_require__(196));
const item_jd_com_1 = __importDefault(__webpack_require__(249));
const functions_1 = __webpack_require__(877);
function getSkuid(url) {
const result = /(\d+)\.html/gi.exec(url);
if (result?.length && result.length > 1) {
return result[1];
}
}
const JD_ContextItemPage = (href) => {
const skuid = getSkuid(href);
const selector = ".itemInfo-wrap .p-choose-wrap";
const current = document.querySelector(selector);
const parent = current?.parentElement;
if (skuid && current && parent) {
functions_1.appendIframeElement(() => {
const { width } = current.getBoundingClientRect();
const custom = document.createElement("div");
custom.style.margin = "5px 0 10px 0";
custom.style.position = "relative";
parent.insertBefore(custom, current);
react_dom_1.default.render(
react_1.default.createElement(item_jd_com_1.default, {
histroy: 180,
skuid: skuid,
width: width,
}),
custom
);
});
}
};
exports.JD_ContextItemPage = JD_ContextItemPage;
/***/
},
/***/ 872: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TB_ContextItemPage = void 0;
const react_1 = __importDefault(__webpack_require__(804));
const react_dom_1 = __importDefault(__webpack_require__(196));
const item_tb_com_1 = __importDefault(__webpack_require__(814));
const functions_1 = __webpack_require__(877);
const insertDom = (num_iid, selectors) => {
const els = document.querySelectorAll(selectors);
if (els.length) {
functions_1.appendIframeElement(() => {
const container = document.createElement("div");
container.style.margin = "5px 0 0 0";
els[0].parentElement?.insertBefore(container, els[0]);
react_dom_1.default.render(
react_1.default.createElement(item_tb_com_1.default, {
histroy: 180,
width: width(els[0]),
num_iid: num_iid,
}),
container
);
});
}
};
const width = (el) => {
const { width } = el.getBoundingClientRect();
return width;
};
const TB_ContextItemPage = (href) => {
const url = new URL(href);
const num_iid = url.searchParams.get("id");
const selectors = "#J_logistic,#J_DetailMeta .tb-property .tb-meta";
if (num_iid) insertDom(num_iid, selectors);
};
exports.TB_ContextItemPage = TB_ContextItemPage;
/***/
},
/***/ 386: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.JD_ContextSearchPage = void 0;
const JDHttpRequest_1 = __importDefault(__webpack_require__(948));
const JD_ContextSearchPage = () => {
let timerid = 0;
window.addEventListener("scroll", (e) => {
if (timerid) return;
timerid = window.setTimeout(() => {
const goods = document.querySelectorAll(
"#J_goodsList .gl-warp .gl-item, #plist .gl-warp .gl-item .item"
);
const skuIds = new Array();
for (let i = 0; i < goods.length; i++) {
if (!goods[i].getAttribute("data-lhy")) {
let skuid = goods[i].getAttribute("data-sku");
if (!skuid) {
skuid = goods[i].getAttribute("skuid");
if (skuid) skuid = skuid.replace(/^J_/, "");
}
skuid && skuIds.push(skuid);
goods[i].setAttribute("data-lhy", "1");
}
}
if (skuIds.length) {
JDHttpRequest_1.default.get("jd.goods.promotiongoodsinfo.query", {
params: {
skuIds: skuIds.join(","),
},
});
}
window.clearTimeout(timerid);
timerid = 0;
}, 200);
});
};
exports.JD_ContextSearchPage = JD_ContextSearchPage;
/***/
},
/***/ 281: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TB_ContextSearchPage = void 0;
const react_1 = __importDefault(__webpack_require__(804));
const react_dom_1 = __importDefault(__webpack_require__(196));
const scroll_watch_1 = __importDefault(__webpack_require__(187));
const search_tb_com_1 = __importDefault(__webpack_require__(154));
const functions_1 = __webpack_require__(877);
function insertElement() {
const items = document.querySelectorAll("#mainsrp-itemlist .items .item");
const scroll = new scroll_watch_1.default(items);
scroll.listener(async (event, el) => {
const current = el.querySelector(".pic-box-inner a.pic-link");
if (current) {
const num_iid = current.getAttribute("data-nid");
const title = current.querySelector("img")?.getAttribute("alt");
if (num_iid && title) {
el.style.position = "relative";
const container = document.createElement("div");
container.style.position = "absolute";
container.style.top = "0px";
container.style.left = "0px";
el.appendChild(container);
react_dom_1.default.render(
react_1.default.createElement(search_tb_com_1.default, {
num_iid: num_iid,
title: title,
}),
container
);
}
}
});
}
const watchElement = (root) => {
const main = document.querySelector(root) ?? document.body;
const mutation = new MutationObserver((mutations) => {
for (let i = 0; i < mutations.length; i++) {
const target = mutations[i].target;
if (target instanceof HTMLElement && target.id.indexOf("mainsrp-itemlist") != -1) {
insertElement();
}
}
});
mutation.observe(main, { subtree: true, childList: true, attributes: true });
};
const TB_ContextSearchPage = () => {
watchElement("#main");
functions_1.appendIframeElement(() => insertElement());
};
exports.TB_ContextSearchPage = TB_ContextSearchPage;
/***/
},
/***/ 402: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TM_ContextSearchPage = void 0;
const react_1 = __importDefault(__webpack_require__(804));
const react_dom_1 = __importDefault(__webpack_require__(196));
const scroll_watch_1 = __importDefault(__webpack_require__(187));
const search_tb_com_1 = __importDefault(__webpack_require__(154));
const functions_1 = __webpack_require__(877);
function insertElement() {
const items = document.querySelectorAll("#J_ItemList .product");
const scroll = new scroll_watch_1.default(items);
scroll.listener(async (event, el) => {
const current = el.querySelector(".productTitle a");
if (current) {
const num_iid = el.getAttribute("data-id");
const title = current.getAttribute("title");
if (num_iid && title) {
el.style.position = "relative";
const container = document.createElement("div");
container.style.position = "absolute";
container.style.top = "0px";
container.style.left = "0px";
el.appendChild(container);
react_dom_1.default.render(
react_1.default.createElement(search_tb_com_1.default, {
num_iid: num_iid,
title: title,
}),
container
);
}
}
});
}
const TM_ContextSearchPage = () => {
functions_1.appendIframeElement(() => insertElement());
};
exports.TM_ContextSearchPage = TM_ContextSearchPage;
/***/
},
/***/ 499: /***/ (__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", { value: true });
exports.iframeName = void 0;
const config_1 = __webpack_require__(913);
Object.defineProperty(exports, "iframeName", {
enumerable: true,
get: function () {
return config_1.iframeName;
},
});
class CrossIframeStore {
sendGetItem(item_id, type) {
const iframe = this.iframe;
iframe?.contentWindow?.postMessage(
{
name: config_1.iframeName,
type: type,
action: "get",
item_id: item_id,
},
config_1.iframeURL
);
}
sendSetItem(item_id, type, data) {
const iframe = this.iframe;
iframe?.contentWindow?.postMessage(
{
name: config_1.iframeName,
type: type,
action: "set",
item_id: item_id,
data,
},
config_1.iframeURL
);
}
get iframe() {
return document.querySelector(`iframe[name=${config_1.iframeName}]`);
}
}
exports.default = new CrossIframeStore();
/***/
},
/***/ 877: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.appendIframeElement =
exports.randomInt =
exports.params_stringify_sign =
exports.sign =
exports.uuid =
void 0;
const uuid_1 = __webpack_require__(231);
const config_1 = __webpack_require__(913);
const md5_1 = __importDefault(__webpack_require__(420));
const uuid = () => {
let result = localStorage.getItem("lhyhquuid");
if (!result) {
result = uuid_1.v4();
localStorage.setItem("lhyhquuid", result);
}
return result;
};
exports.uuid = uuid;
const sign = (params, timestamp, uuid) => {
const arr = [config_1.KEY_SECRET];
for (let key in params) {
params[key] && arr.push(key, params[key]);
}
arr.sort();
return md5_1.default(md5_1.default(arr.join("-") + md5_1.default(timestamp + "")) + uuid);
};
exports.sign = sign;
const params_stringify_sign = async (o) => {
const user_id = await exports.uuid();
const timestamp = Date.now();
const params = Object.assign({}, o, {
"x-me-sign": exports.sign(o, timestamp, user_id),
"x-me-time": timestamp,
"x-me-uuid": user_id,
});
let result = new Array();
for (let [key, value] of Object.entries(params)) {
result.push(`${key}=${value}`);
}
return result.join("&");
};
exports.params_stringify_sign = params_stringify_sign;
function randomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}
exports.randomInt = randomInt;
const appendIframeElement = (callback) => {
const iframe = document.createElement("iframe");
iframe.src = config_1.iframeURL;
iframe.name = config_1.iframeName;
iframe.title = "stroe";
iframe.style.display = "none";
iframe.style.position = "absolute";
iframe.style.top = "-9999px";
iframe.style.left = "-9999px";
iframe.onload = (e) => {
if (typeof callback == "function") {
callback(e);
}
};
document.body.appendChild(iframe);
};
exports.appendIframeElement = appendIframeElement;
/***/
},
/***/ 181: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __createBinding =
(this && this.__createBinding) ||
(Object.create
? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, {
enumerable: true,
get: function () {
return m[k];
},
});
}
: function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __setModuleDefault =
(this && this.__setModuleDefault) ||
(Object.create
? function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}
: function (o, v) {
o["default"] = v;
});
var __importStar =
(this && this.__importStar) ||
function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k in mod)
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.JdGoodsCouponStore = void 0;
const CrossIframeStore_1 = __importStar(__webpack_require__(499));
class JdGoodsCouponStore {
static async getItem(skuid) {
return new Promise((resolve, reject) => {
window.addEventListener("message", message);
CrossIframeStore_1.default.sendGetItem(skuid, "jd");
function message(e) {
const data = e.data;
if (data["name"] == CrossIframeStore_1.iframeName && data["type"] == "jd") {
resolve(data["data"]);
window.removeEventListener("message", message);
}
}
});
}
static setItem(skuid, ...coupon) {
CrossIframeStore_1.default.sendSetItem(skuid, "jd", coupon);
}
}
exports.JdGoodsCouponStore = JdGoodsCouponStore;
/***/
},
/***/ 187: /***/ (__unused_webpack_module, exports) => {
Object.defineProperty(exports, "__esModule", { value: true });
class ScrollWatch {
els;
doc = window.document.documentElement;
offsetBottom = 100;
constructor(els) {
this.els = Array.from(els);
}
listener(callback) {
let interout = null;
window.addEventListener("scroll", (event) => {
if (!interout) {
interout = setTimeout(() => {
this.els.forEach((v, i) => {
const top = v.getBoundingClientRect().top;
if (top - this.doc.clientHeight <= 0) {
callback(event, v);
this.els.splice(i, 1);
}
});
interout = clearTimeout(interout);
interout = 0;
}, 300);
}
});
}
}
exports.default = ScrollWatch;
/***/
},
/***/ 609: /***/ function (__unused_webpack_module, exports, __webpack_require__) {
var __createBinding =
(this && this.__createBinding) ||
(Object.create
? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, {
enumerable: true,
get: function () {
return m[k];
},
});
}
: function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __setModuleDefault =
(this && this.__setModuleDefault) ||
(Object.create
? function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}
: function (o, v) {
o["default"] = v;
});
var __importStar =
(this && this.__importStar) ||
function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k in mod)
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TbGoodsCouponStore = void 0;
const CrossIframeStore_1 = __importStar(__webpack_require__(499));
class TbGoodsCouponStore {
static async getItem(item_id) {
return new Promise((resolve, reject) => {
window.addEventListener("message", message);
CrossIframeStore_1.default.sendGetItem(item_id, "tb");
function message(e) {
const data = e.data;
if (data["name"] == CrossIframeStore_1.iframeName && data["type"] == "tb") {
resolve(data["data"]);
window.removeEventListener("message", message);
}
}
});
}
static setItem(item_id, coupon) {
CrossIframeStore_1.default.sendSetItem(item_id, "tb", coupon);
}
}
exports.TbGoodsCouponStore = TbGoodsCouponStore;
/***/
},
/***/ 420: /***/ (module) => {
module.exports = MD5;
/***/
},
/***/ 657: /***/ (module) => {
module.exports = MaterialUI;
/***/
},
/***/ 804: /***/ (module) => {
module.exports = React;
/***/
},
/***/ 196: /***/ (module) => {
module.exports = ReactDOM;
/***/
},
/***/ 376: /***/ (module) => {
module.exports = axios;
/***/
},
/***/ 83: /***/ (module) => {
module.exports = echarts;
/***/
},
/***/ 231: /***/ (module) => {
module.exports = uuid;
/***/
},
/******/
};
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/
}
/******/ // Create a new module (and put it into the cache)
/******/ var module = (__webpack_module_cache__[moduleId] = {
/******/ id: moduleId,
/******/ // no module.loaded needed
/******/ exports: {},
/******/
});
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/
}
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter =
module && module.__esModule ? /******/ () => module["default"] : /******/ () => module;
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/
};
/******/
})();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for (var key in definition) {
/******/ if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/
}
/******/
}
/******/
};
/******/
})();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
/******/
})();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if (typeof Symbol !== "undefined" && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
/******/
}
/******/ Object.defineProperty(exports, "__esModule", { value: true });
/******/
};
/******/
})();
/******/
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
(() => {
var exports = __webpack_exports__;
var __webpack_unused_export__;
__webpack_unused_export__ = { value: true };
const item_jd_com_1 = __webpack_require__(963);
const item_tb_com_1 = __webpack_require__(872);
const search_jd_com_1 = __webpack_require__(386);
const search_tb_com_1 = __webpack_require__(281);
const search_tm_com_1 = __webpack_require__(402);
(() => {
"use strict";
const content_scripts = [
{
matches: ["item.taobao.com", "detail.tmall.com", "detail.tmall.hk"],
execute: item_tb_com_1.TB_ContextItemPage,
},
{
matches: ["s.taobao.com"],
execute: search_tb_com_1.TB_ContextSearchPage,
},
{
matches: ["list.tmall.com"],
execute: search_tm_com_1.TM_ContextSearchPage,
},
{
matches: ["search.jd.com", "search.jd.hk"],
execute: search_jd_com_1.JD_ContextSearchPage,
},
{
matches: ["item.jd.com", "npcitem.jd.hk"],
execute: item_jd_com_1.JD_ContextItemPage,
},
];
const url = window.location.href;
for (let i = 0; i < content_scripts.length; i++) {
if (validate(url, ...content_scripts[i]["matches"])) {
content_scripts[i]["execute"](url);
}
}
function validate(href, ...matches) {
const url = new URL(href);
for (let i = 0; i < matches.length; i++) {
const r = new RegExp(matches[i], "i");
if (r.test(url.hostname)) return true;
}
return false;
}
})();
})();
/******/
})();