// ==UserScript==
// @name 优惠券小助手——自动显示京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、天猫国际(tmall.hk)、唯品会(vip.com)、京东国际(jd.hk)优惠券,简洁易用!
// @name:zh 优惠券小助手——自动显示京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、天猫国际(tmall.hk)、唯品会(vip.com)、京东国际(jd.hk)优惠券,简洁易用!
// @name:zh-TW 優惠券小助手——自動顯示京東(jd.com)、淘寶(taobao.com)、天貓(tmall.com)、天貓國際(tmall.hk)、唯品會(vip.com)、京東國際(jd.hk)優惠券,簡潔易用!
// @namespace yiyezhiqiu
// @version 1.8.4
// @description 最新简洁易用的京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、唯品会(vip.com)优惠券小助手,自动显示隐藏优惠券,支持各大电商平台,包括京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、聚划算、天猫超市、天猫国际(tmall.hk)、京东国际(jd.hk)、京东图书、京东电子书、京东工业品、京东大药房(yiyaojd.com)、唯品会(vip.com),让您购物省心更省钱!
// @description:zh 最新简洁易用的京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、唯品会(vip.com)优惠券小助手,自动显示隐藏优惠券,支持各大电商平台,包括京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、聚划算、天猫超市、天猫国际(tmall.hk)、京东国际(jd.hk)、京东图书、京东电子书、京东工业品、京东大药房(yiyaojd.com)、唯品会(vip.com),让您购物省心更省钱!
// @description:zh-TW 最新簡潔易用的京東(jd.com)、淘寶(taobao.com)、天貓(tmall.com)、唯品會(vip.com)優惠券小助手,自動顯示隱藏優惠券,支持各大電商平台,包括京東(jd.com)、淘寶(taobao.com)、天貓(tmall.com)、聚划算、天貓超市、天貓國際(tmall.hk)、京東國際(jd.hk)、京東圖書、京東電子書、京東工業品、京東大藥房(yiyaojd.com)、唯品會(vip.com),讓您購物省心更省錢!
// @author 一叶知秋
// @homepage https://coupon.jasonzk.com
// @license None
// @require https://cdn.jsdelivr.net/npm/[email protected]/crypto-js.min.js
// @require https://cdn.jsdelivr.net/npm/[email protected]/dist/easy.qrcode.min.js
// @match *://*.taobao.com/*
// @match *://*.tmall.com/*
// @match *://*.tmall.hk/*
// @match *://*.detail.tmall.com/*
// @match *://*.liangxinyao.com/*
// @match *://*.jasonzk.com/*
// @match *://*.jd.com/*
// @match *://*.jd.hk/*
// @match *://*.yiyaojd.com/*
// @match *://*.jkcsjd.com/*
// @match *://*.vip.com/*
// @match *://*.vipglobal.hk/*
// @exclude *://login.taobao.com/*
// @exclude *://uland.taobao.com/*
// @exclude *://login.tmall.com/*
// @exclude *://pages.tmall.com/*
// @exclude *://wq.jd.com/*
// @exclude *://trade.jd.com/*
// @exclude *://union.jd.com/*
// @icon data:image/png;base64,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
// @antifeature referral-link
// @noframes
// @grant unsafeWindow
// @grant window.focus
// @grant window.close
// @grant GM_openInTab
// @grant GM_info
// @grant GM_notification
// @grant GM_registerMenuCommand
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_deleteValue
// @grant GM_setClipboard
// @grant GM.openInTab
// @grant GM.info
// @grant GM.getValue
// @grant GM.setValue
// @grant GM.deleteValue
// @grant GM.registerMenuCommand
// @grant GM.setClipboard
// @grant GM.notification
// @run-at document-start
// ==/UserScript==
(function() {
'use strict';
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
(function(EasyQRCode, CryptoJS2) {
"use strict";
var __vite_style__ = document.createElement("style");
__vite_style__.textContent = "*,\n::before,\n::after{\n box-sizing:border-box;\n border-width:0;\n border-style:solid;\n border-color:#e5e7eb;\n}\n\n::before,\n::after{\n --tw-content:'';\n}\n\nbody{\n margin:0;\n line-height:inherit;\n}\n\n\nh3,\nh4{\n font-size:inherit;\n font-weight:inherit;\n}\n\n\nstrong{\n font-weight:bolder;\n}\n\n::-webkit-search-decoration{\n -webkit-appearance:none;\n}\n\n\nh3,\nh4,\np{\n margin:0;\n}\n\n*, ::before, ::after{\n --tw-border-spacing-x:0;\n --tw-border-spacing-y:0;\n --tw-translate-x:0;\n --tw-translate-y:0;\n --tw-rotate:0;\n --tw-skew-x:0;\n --tw-skew-y:0;\n --tw-scale-x:1;\n --tw-scale-y:1;\n --tw-pan-x:;\n --tw-pan-y:;\n --tw-pinch-zoom:;\n --tw-scroll-snap-strictness:proximity;\n --tw-gradient-from-position:;\n --tw-gradient-via-position:;\n --tw-gradient-to-position:;\n --tw-ordinal:;\n --tw-slashed-zero:;\n --tw-numeric-figure:;\n --tw-numeric-spacing:;\n --tw-numeric-fraction:;\n --tw-ring-inset:;\n --tw-ring-offset-width:0px;\n --tw-ring-offset-color:#fff;\n --tw-ring-color:rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow:0 0 #0000;\n --tw-ring-shadow:0 0 #0000;\n --tw-shadow:0 0 #0000;\n --tw-shadow-colored:0 0 #0000;\n --tw-blur:;\n --tw-brightness:;\n --tw-contrast:;\n --tw-grayscale:;\n --tw-hue-rotate:;\n --tw-invert:;\n --tw-saturate:;\n --tw-sepia:;\n --tw-drop-shadow:;\n --tw-backdrop-blur:;\n --tw-backdrop-brightness:;\n --tw-backdrop-contrast:;\n --tw-backdrop-grayscale:;\n --tw-backdrop-hue-rotate:;\n --tw-backdrop-invert:;\n --tw-backdrop-opacity:;\n --tw-backdrop-saturate:;\n --tw-backdrop-sepia:;\n --tw-contain-size:;\n --tw-contain-layout:;\n --tw-contain-paint:;\n --tw-contain-style:;\n}\n\n::backdrop{\n --tw-border-spacing-x:0;\n --tw-border-spacing-y:0;\n --tw-translate-x:0;\n --tw-translate-y:0;\n --tw-rotate:0;\n --tw-skew-x:0;\n --tw-skew-y:0;\n --tw-scale-x:1;\n --tw-scale-y:1;\n --tw-pan-x:;\n --tw-pan-y:;\n --tw-pinch-zoom:;\n --tw-scroll-snap-strictness:proximity;\n --tw-gradient-from-position:;\n --tw-gradient-via-position:;\n --tw-gradient-to-position:;\n --tw-ordinal:;\n --tw-slashed-zero:;\n --tw-numeric-figure:;\n --tw-numeric-spacing:;\n --tw-numeric-fraction:;\n --tw-ring-inset:;\n --tw-ring-offset-width:0px;\n --tw-ring-offset-color:#fff;\n --tw-ring-color:rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow:0 0 #0000;\n --tw-ring-shadow:0 0 #0000;\n --tw-shadow:0 0 #0000;\n --tw-shadow-colored:0 0 #0000;\n --tw-blur:;\n --tw-brightness:;\n --tw-contrast:;\n --tw-grayscale:;\n --tw-hue-rotate:;\n --tw-invert:;\n --tw-saturate:;\n --tw-sepia:;\n --tw-drop-shadow:;\n --tw-backdrop-blur:;\n --tw-backdrop-brightness:;\n --tw-backdrop-contrast:;\n --tw-backdrop-grayscale:;\n --tw-backdrop-hue-rotate:;\n --tw-backdrop-invert:;\n --tw-backdrop-opacity:;\n --tw-backdrop-saturate:;\n --tw-backdrop-sepia:;\n --tw-contain-size:;\n --tw-contain-layout:;\n --tw-contain-paint:;\n --tw-contain-style:;\n}\r\n.cp-fixed{\n position:fixed;\n}\r\n.cp-absolute{\n position:absolute;\n}\r\n.cp-relative{\n position:relative;\n}\r\n.cp-inset-0{\n inset:0px;\n}\r\n.cp-right-\\[8px\\]{\n right:8px;\n}\r\n.cp-top-\\[8px\\]{\n top:8px;\n}\r\n.cp-z-20{\n z-index:20;\n}\r\n.cp-my-\\[8px\\]{\n margin-top:8px;\n margin-bottom:8px;\n}\r\n.cp-mb-4{\n margin-bottom:1rem;\n}\r\n.cp-mb-\\[12px\\]{\n margin-bottom:12px;\n}\r\n.cp-mb-\\[20px\\]{\n margin-bottom:20px;\n}\r\n.cp-mb-\\[6px\\]{\n margin-bottom:6px;\n}\r\n.cp-mt-\\[28px\\]{\n margin-top:28px;\n}\r\n.cp-mt-\\[8px\\]{\n margin-top:8px;\n}\r\n.cp-flex{\n display:flex;\n}\r\n.cp-grid{\n display:grid;\n}\r\n.cp-h-\\[25px\\]{\n height:25px;\n}\r\n.cp-w-\\[120px\\]{\n width:120px;\n}\r\n.cp-w-\\[25px\\]{\n width:25px;\n}\r\n.cp-w-full{\n width:100%;\n}\r\n.cp-flex-none{\n flex:none;\n}\r\n.cp-flex-grow{\n flex-grow:1;\n}\r\n.cp-cursor-pointer{\n cursor:pointer;\n}\r\n.cp-grid-cols-3{\n grid-template-columns:repeat(3, minmax(0, 1fr));\n}\r\n.cp-flex-col{\n flex-direction:column;\n}\r\n.cp-items-center{\n align-items:center;\n}\r\n.cp-justify-center{\n justify-content:center;\n}\r\n.cp-justify-between{\n justify-content:space-between;\n}\r\n.cp-gap-4{\n gap:1rem;\n}\r\n.cp-gap-5{\n gap:1.25rem;\n}\r\n.cp-gap-\\[12px\\]{\n gap:12px;\n}\r\n.cp-gap-\\[20px\\]{\n gap:20px;\n}\r\n.cp-gap-\\[4px\\]{\n gap:4px;\n}\r\n.cp-gap-\\[6px\\]{\n gap:6px;\n}\r\n.cp-overflow-auto{\n overflow:auto;\n}\r\n.cp-rounded{\n border-radius:0.25rem;\n}\r\n.cp-rounded-full{\n border-radius:9999px;\n}\r\n.cp-rounded-lg{\n border-radius:0.5rem;\n}\r\n.cp-rounded-md{\n border-radius:0.375rem;\n}\r\n.cp-rounded-e-lg{\n border-start-end-radius:0.5rem;\n border-end-end-radius:0.5rem;\n}\r\n.cp-border{\n border-width:1px;\n}\r\n.cp-border-l-4{\n border-left-width:4px;\n}\r\n.cp-border-r-2{\n border-right-width:2px;\n}\r\n.cp-border-dotted{\n border-style:dotted;\n}\r\n.cp-border-gray-300{\n --tw-border-opacity:1;\n border-color:rgb(209 213 219 / var(--tw-border-opacity));\n}\r\n.cp-border-l-red-600{\n --tw-border-opacity:1;\n border-left-color:rgb(220 38 38 / var(--tw-border-opacity));\n}\r\n.cp-bg-black{\n --tw-bg-opacity:1;\n background-color:rgb(0 0 0 / var(--tw-bg-opacity));\n}\r\n.cp-bg-blue-400{\n --tw-bg-opacity:1;\n background-color:rgb(96 165 250 / var(--tw-bg-opacity));\n}\r\n.cp-bg-blue-500{\n --tw-bg-opacity:1;\n background-color:rgb(59 130 246 / var(--tw-bg-opacity));\n}\r\n.cp-bg-gray-50{\n --tw-bg-opacity:1;\n background-color:rgb(249 250 251 / var(--tw-bg-opacity));\n}\r\n.cp-bg-slate-100{\n --tw-bg-opacity:1;\n background-color:rgb(241 245 249 / var(--tw-bg-opacity));\n}\r\n.cp-bg-white{\n --tw-bg-opacity:1;\n background-color:rgb(255 255 255 / var(--tw-bg-opacity));\n}\r\n.cp-bg-opacity-70{\n --tw-bg-opacity:0.7;\n}\r\n.cp-p-4{\n padding:1rem;\n}\r\n.cp-p-\\[12px\\]{\n padding:12px;\n}\r\n.cp-p-\\[16px\\]{\n padding:16px;\n}\r\n.cp-p-\\[8px\\]{\n padding:8px;\n}\r\n.cp-px-4{\n padding-left:1rem;\n padding-right:1rem;\n}\r\n.cp-py-2{\n padding-top:0.5rem;\n padding-bottom:0.5rem;\n}\r\n.cp-py-\\[10px\\]{\n padding-top:10px;\n padding-bottom:10px;\n}\r\n.cp-pl-4{\n padding-left:1rem;\n}\r\n.cp-pl-\\[10px\\]{\n padding-left:10px;\n}\r\n.cp-pr-4{\n padding-right:1rem;\n}\r\n.cp-pr-\\[40px\\]{\n padding-right:40px;\n}\r\n.cp-text-center{\n text-align:center;\n}\r\n.cp-text-2xl{\n font-size:1.5rem;\n line-height:2rem;\n}\r\n.cp-text-3xl{\n font-size:1.875rem;\n line-height:2.25rem;\n}\r\n.cp-text-\\[12px\\]{\n font-size:12px;\n}\r\n.cp-text-lg{\n font-size:1.125rem;\n line-height:1.75rem;\n}\r\n.cp-text-sm{\n font-size:0.875rem;\n line-height:1.25rem;\n}\r\n.cp-font-bold{\n font-weight:700;\n}\r\n.cp-font-semibold{\n font-weight:600;\n}\r\n.cp-text-\\[\\#888\\]{\n --tw-text-opacity:1;\n color:rgb(136 136 136 / var(--tw-text-opacity));\n}\r\n.cp-text-blue-500{\n --tw-text-opacity:1;\n color:rgb(59 130 246 / var(--tw-text-opacity));\n}\r\n.cp-text-gray-500{\n --tw-text-opacity:1;\n color:rgb(107 114 128 / var(--tw-text-opacity));\n}\r\n.cp-text-gray-600{\n --tw-text-opacity:1;\n color:rgb(75 85 99 / var(--tw-text-opacity));\n}\r\n.cp-text-gray-900{\n --tw-text-opacity:1;\n color:rgb(17 24 39 / var(--tw-text-opacity));\n}\r\n.cp-text-red-500{\n --tw-text-opacity:1;\n color:rgb(239 68 68 / var(--tw-text-opacity));\n}\r\n.cp-text-white{\n --tw-text-opacity:1;\n color:rgb(255 255 255 / var(--tw-text-opacity));\n}\r\n.cp-underline{\n text-decoration-line:underline;\n}\r\n.cp-shadow{\n --tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\r\n.cp-shadow-md{\n --tw-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\r\n.cp-transition{\n transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration:150ms;\n}\r\n*,\r\n::before,\r\n::after{\r\n box-sizing:initial;\r\n}\r\n@keyframes seesaw{\r\n 0%,\r\n 100%{\r\n transform:rotate(0deg);\r\n }\r\n 25%{\r\n transform:rotate(-10deg);\r\n }\r\n 75%{\r\n transform:rotate(10deg);\r\n }\r\n}\r\n.hover\\:cp-bg-blue-400:hover{\n --tw-bg-opacity:1;\n background-color:rgb(96 165 250 / var(--tw-bg-opacity));\n}\r\n.hover\\:cp-text-white:hover{\n --tw-text-opacity:1;\n color:rgb(255 255 255 / var(--tw-text-opacity));\n}\r\n.hover\\:cp-underline:hover{\n text-decoration-line:underline;\n}\r\n";
waitForDOMReady().then(() => {
document.head.appendChild(__vite_style__);
});
function noop() {
}
function assign(tar, src) {
for (const k in src) tar[k] = src[k];
return (
/** @type {T & S} */
tar
);
}
function run(fn) {
return fn();
}
function blank_object() {
return /* @__PURE__ */ Object.create(null);
}
function run_all(fns) {
fns.forEach(run);
}
function is_function(thing) {
return typeof thing === "function";
}
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || a && typeof a === "object" || typeof a === "function";
}
let src_url_equal_anchor;
function src_url_equal(element_src, url) {
if (element_src === url) return true;
if (!src_url_equal_anchor) {
src_url_equal_anchor = document.createElement("a");
}
src_url_equal_anchor.href = url;
return element_src === src_url_equal_anchor.href;
}
function is_empty(obj) {
return Object.keys(obj).length === 0;
}
function subscribe(store, ...callbacks) {
if (store == null) {
for (const callback of callbacks) {
callback(void 0);
}
return noop;
}
const unsub = store.subscribe(...callbacks);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
function get_store_value(store) {
let value;
subscribe(store, (_) => value = _)();
return value;
}
function component_subscribe(component, store, callback) {
component.$.on_destroy.push(subscribe(store, callback));
}
function create_slot(definition, ctx, $scope, fn) {
if (definition) {
const slot_ctx = get_slot_context(definition, ctx, $scope, fn);
return definition[0](slot_ctx);
}
}
function get_slot_context(definition, ctx, $scope, fn) {
return definition[1] && fn ? assign($scope.ctx.slice(), definition[1](fn(ctx))) : $scope.ctx;
}
function get_slot_changes(definition, $scope, dirty, fn) {
if (definition[2] && fn) {
const lets = definition[2](fn(dirty));
if ($scope.dirty === void 0) {
return lets;
}
if (typeof lets === "object") {
const merged = [];
const len = Math.max($scope.dirty.length, lets.length);
for (let i = 0; i < len; i += 1) {
merged[i] = $scope.dirty[i] | lets[i];
}
return merged;
}
return $scope.dirty | lets;
}
return $scope.dirty;
}
function update_slot_base(slot, slot_definition, ctx, $scope, slot_changes, get_slot_context_fn) {
if (slot_changes) {
const slot_context = get_slot_context(slot_definition, ctx, $scope, get_slot_context_fn);
slot.p(slot_context, slot_changes);
}
}
function get_all_dirty_from_scope($scope) {
if ($scope.ctx.length > 32) {
const dirty = [];
const length = $scope.ctx.length / 32;
for (let i = 0; i < length; i++) {
dirty[i] = -1;
}
return dirty;
}
return -1;
}
function append(target, node) {
target.appendChild(node);
}
function insert(target, node, anchor) {
target.insertBefore(node, anchor || null);
}
function detach(node) {
if (node.parentNode) {
node.parentNode.removeChild(node);
}
}
function destroy_each(iterations, detaching) {
for (let i = 0; i < iterations.length; i += 1) {
if (iterations[i]) iterations[i].d(detaching);
}
}
function element(name) {
return document.createElement(name);
}
function text(data) {
return document.createTextNode(data);
}
function space() {
return text(" ");
}
function empty() {
return text("");
}
function listen(node, event, handler, options) {
node.addEventListener(event, handler, options);
return () => node.removeEventListener(event, handler, options);
}
function stop_propagation(fn) {
return function(event) {
event.stopPropagation();
return fn.call(this, event);
};
}
function attr(node, attribute, value) {
if (value == null) node.removeAttribute(attribute);
else if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, value);
}
function children(element2) {
return Array.from(element2.childNodes);
}
function set_data(text2, data) {
data = "" + data;
if (text2.data === data) return;
text2.data = /** @type {string} */
data;
}
function set_style(node, key2, value, important) {
if (value == null) {
node.style.removeProperty(key2);
} else {
node.style.setProperty(key2, value, "");
}
}
function toggle_class(element2, name, toggle) {
element2.classList.toggle(name, !!toggle);
}
function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {
return new CustomEvent(type, { detail, bubbles, cancelable });
}
function construct_svelte_component(component, props) {
return new component(props);
}
let current_component;
function set_current_component(component) {
current_component = component;
}
function get_current_component() {
if (!current_component) throw new Error("Function called outside component initialization");
return current_component;
}
function onMount(fn) {
get_current_component().$.on_mount.push(fn);
}
function createEventDispatcher() {
const component = get_current_component();
return (type, detail, { cancelable = false } = {}) => {
const callbacks = component.$.callbacks[type];
if (callbacks) {
const event = custom_event(
/** @type {string} */
type,
detail,
{ cancelable }
);
callbacks.slice().forEach((fn) => {
fn.call(component, event);
});
return !event.defaultPrevented;
}
return true;
};
}
function bubble(component, event) {
const callbacks = component.$.callbacks[event.type];
if (callbacks) {
callbacks.slice().forEach((fn) => fn.call(this, event));
}
}
const dirty_components = [];
const binding_callbacks = [];
let render_callbacks = [];
const flush_callbacks = [];
const resolved_promise = /* @__PURE__ */ Promise.resolve();
let update_scheduled = false;
function schedule_update() {
if (!update_scheduled) {
update_scheduled = true;
resolved_promise.then(flush);
}
}
function add_render_callback(fn) {
render_callbacks.push(fn);
}
const seen_callbacks = /* @__PURE__ */ new Set();
let flushidx = 0;
function flush() {
if (flushidx !== 0) {
return;
}
const saved_component = current_component;
do {
try {
while (flushidx < dirty_components.length) {
const component = dirty_components[flushidx];
flushidx++;
set_current_component(component);
update(component.$);
}
} catch (e) {
dirty_components.length = 0;
flushidx = 0;
throw e;
}
set_current_component(null);
dirty_components.length = 0;
flushidx = 0;
while (binding_callbacks.length) binding_callbacks.pop()();
for (let i = 0; i < render_callbacks.length; i += 1) {
const callback = render_callbacks[i];
if (!seen_callbacks.has(callback)) {
seen_callbacks.add(callback);
callback();
}
}
render_callbacks.length = 0;
} while (dirty_components.length);
while (flush_callbacks.length) {
flush_callbacks.pop()();
}
update_scheduled = false;
seen_callbacks.clear();
set_current_component(saved_component);
}
function update($) {
if ($.fragment !== null) {
$.update();
run_all($.before_update);
const dirty = $.dirty;
$.dirty = [-1];
$.fragment && $.fragment.p($.ctx, dirty);
$.after_update.forEach(add_render_callback);
}
}
function flush_render_callbacks(fns) {
const filtered = [];
const targets = [];
render_callbacks.forEach((c) => fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c));
targets.forEach((c) => c());
render_callbacks = filtered;
}
const outroing = /* @__PURE__ */ new Set();
let outros;
function group_outros() {
outros = {
r: 0,
c: [],
p: outros
// parent group
};
}
function check_outros() {
if (!outros.r) {
run_all(outros.c);
}
outros = outros.p;
}
function transition_in(block, local) {
if (block && block.i) {
outroing.delete(block);
block.i(local);
}
}
function transition_out(block, local, detach2, callback) {
if (block && block.o) {
if (outroing.has(block)) return;
outroing.add(block);
outros.c.push(() => {
outroing.delete(block);
if (callback) {
if (detach2) block.d(1);
callback();
}
});
block.o(local);
} else if (callback) {
callback();
}
}
function ensure_array_like(array_like_or_iterator) {
return (array_like_or_iterator == null ? void 0 : array_like_or_iterator.length) !== void 0 ? array_like_or_iterator : Array.from(array_like_or_iterator);
}
function create_component(block) {
block && block.c();
}
function mount_component(component, target, anchor) {
const { fragment, after_update } = component.$;
fragment && fragment.m(target, anchor);
add_render_callback(() => {
const new_on_destroy = component.$.on_mount.map(run).filter(is_function);
if (component.$.on_destroy) {
component.$.on_destroy.push(...new_on_destroy);
} else {
run_all(new_on_destroy);
}
component.$.on_mount = [];
});
after_update.forEach(add_render_callback);
}
function destroy_component(component, detaching) {
const $ = component.$;
if ($.fragment !== null) {
flush_render_callbacks($.after_update);
run_all($.on_destroy);
$.fragment && $.fragment.d(detaching);
$.on_destroy = $.fragment = null;
$.ctx = [];
}
}
function make_dirty(component, i) {
if (component.$.dirty[0] === -1) {
dirty_components.push(component);
schedule_update();
component.$.dirty.fill(0);
}
component.$.dirty[i / 31 | 0] |= 1 << i % 31;
}
function init(component, options, instance2, create_fragment2, not_equal, props, append_styles = null, dirty = [-1]) {
const parent_component = current_component;
set_current_component(component);
const $ = component.$ = {
fragment: null,
ctx: [],
// state
props,
update: noop,
not_equal,
bound: blank_object(),
// lifecycle
on_mount: [],
on_destroy: [],
on_disconnect: [],
before_update: [],
after_update: [],
context: new Map(options.context || (parent_component ? parent_component.$.context : [])),
// everything else
callbacks: blank_object(),
dirty,
skip_bound: false,
root: options.target || parent_component.$.root
};
append_styles && append_styles($.root);
let ready = false;
$.ctx = instance2 ? instance2(component, options.props || {}, (i, ret, ...rest) => {
const value = rest.length ? rest[0] : ret;
if ($.ctx && not_equal($.ctx[i], $.ctx[i] = value)) {
if (!$.skip_bound && $.bound[i]) $.bound[i](value);
if (ready) make_dirty(component, i);
}
return ret;
}) : [];
$.update();
ready = true;
run_all($.before_update);
$.fragment = create_fragment2 ? create_fragment2($.ctx) : false;
if (options.target) {
if (options.hydrate) {
const nodes = children(options.target);
$.fragment && $.fragment.l(nodes);
nodes.forEach(detach);
} else {
$.fragment && $.fragment.c();
}
if (options.intro) transition_in(component.$.fragment);
mount_component(component, options.target, options.anchor);
flush();
}
set_current_component(parent_component);
}
class SvelteComponent {
constructor() {
/**
* ### PRIVATE API
*
* Do not use, may change at any time
*
* @type {any}
*/
__publicField(this, "$");
/**
* ### PRIVATE API
*
* Do not use, may change at any time
*
* @type {any}
*/
__publicField(this, "$set");
}
/** @returns {void} */
$destroy() {
destroy_component(this, 1);
this.$destroy = noop;
}
/**
* @template {Extract<keyof Events, string>} K
* @param {K} type
* @param {((e: Events[K]) => void) | null | undefined} callback
* @returns {() => void}
*/
$on(type, callback) {
if (!is_function(callback)) {
return noop;
}
const callbacks = this.$.callbacks[type] || (this.$.callbacks[type] = []);
callbacks.push(callback);
return () => {
const index = callbacks.indexOf(callback);
if (index !== -1) callbacks.splice(index, 1);
};
}
/**
* @param {Partial<Props>} props
* @returns {void}
*/
$set(props) {
if (this.$set && !is_empty(props)) {
this.$.skip_bound = true;
this.$set(props);
this.$.skip_bound = false;
}
}
}
const PUBLIC_VERSION = "4";
if (typeof window !== "undefined")
(window.__svelte || (window.__svelte = { v: /* @__PURE__ */ new Set() })).v.add(PUBLIC_VERSION);
var UrlType = /* @__PURE__ */ ((UrlType2) => {
UrlType2["Tmall"] = "tmall";
UrlType2["YYTmall"] = "liangxinyao";
UrlType2["Taobao"] = "taobao";
UrlType2["JD"] = "jd";
UrlType2["Vip"] = "vip";
UrlType2["ZK"] = "jasonzk";
UrlType2["DEV"] = "localhost";
return UrlType2;
})(UrlType || {});
var Platform = /* @__PURE__ */ ((Platform2) => {
Platform2[Platform2["Taobao"] = 1] = "Taobao";
Platform2[Platform2["JD"] = 2] = "JD";
Platform2[Platform2["Pdd"] = 3] = "Pdd";
Platform2[Platform2["Vip"] = 4] = "Vip";
Platform2[Platform2["None"] = 5] = "None";
Platform2[Platform2["Dev"] = 6] = "Dev";
Platform2[Platform2["ZK"] = 7] = "ZK";
return Platform2;
})(Platform || {});
var PluginType = /* @__PURE__ */ ((PluginType2) => {
PluginType2["Coupon"] = "1";
PluginType2["Compare"] = "2";
PluginType2["Promotion"] = "3";
PluginType2["No_Promotion"] = "4";
PluginType2["Tool"] = "5";
return PluginType2;
})(PluginType || {});
const PluginName = "3";
var GM_KEY = /* @__PURE__ */ ((GM_KEY2) => {
GM_KEY2["JD_HAS_COUPON_URL"] = "73haz73_jd_coupon_url";
GM_KEY2["JD_USER_NAME"] = "jd_user_name";
GM_KEY2["JD_GOODS_LIST"] = "jd_goods_list";
GM_KEY2["JD_GOODS_LIST2"] = "jd_goods_list2";
GM_KEY2["JD_GOODS_LIST3"] = "jd_goods_list3";
GM_KEY2["Tmall_USER_NAME"] = "tmall_user_name";
GM_KEY2["Tmall_GOODS_LIST"] = "tmall_goods_list";
GM_KEY2["VIP_USER_NAME"] = "vip_user_name";
GM_KEY2["VIP_GOODS_LIST"] = "vip_goods_list";
GM_KEY2["UUID"] = "jae2u5xruuid";
GM_KEY2["VERSION_CHECK_TIME"] = "version_check_time";
GM_KEY2["VERSION_UPDATE_TIME"] = "version_update_time";
GM_KEY2["VERSION_IS_FORCE"] = "version_force_update";
return GM_KEY2;
})(GM_KEY || {});
var COOKIE_KEY = /* @__PURE__ */ ((COOKIE_KEY2) => {
COOKIE_KEY2["JD_USER_NAME"] = "unick";
COOKIE_KEY2["Tmall_USER_NAME"] = "tracknick";
COOKIE_KEY2["VIP_USER_NAME"] = "VipRNAME";
return COOKIE_KEY2;
})(COOKIE_KEY || {});
const subscriber_queue = [];
function writable(value, start = noop) {
let stop;
const subscribers = /* @__PURE__ */ new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update2(fn) {
set(fn(value));
}
function subscribe2(run2, invalidate = noop) {
const subscriber = [run2, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update2) || noop;
}
run2(value);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update: update2, subscribe: subscribe2 };
}
function createPlatform() {
const { subscribe: subscribe2, set, update: update2 } = writable(null);
return {
subscribe: subscribe2,
updatePlatform: (data) => update2(() => data)
};
}
const platform = createPlatform();
function getPlatform() {
return get_store_value(platform);
}
function create_fragment$b(ctx) {
let div1;
let div0;
return {
c() {
div1 = element("div");
div0 = element("div");
},
m(target, anchor) {
insert(target, div1, anchor);
append(div1, div0);
ctx[6](div0);
},
p: noop,
i: noop,
o: noop,
d(detaching) {
if (detaching) {
detach(div1);
}
ctx[6](null);
}
};
}
function instance$a($self, $props, $invalidate) {
let { url = "" } = $props;
let { width = 70 } = $props;
let { height = 70 } = $props;
let { logo = "" } = $props;
let { logoWidth = 20 } = $props;
let qrCodeContainer;
onMount(() => {
generateQRCode();
});
function generateQRCode() {
if (!qrCodeContainer) return;
$invalidate(0, qrCodeContainer.innerHTML = "", qrCodeContainer);
new EasyQRCode(
qrCodeContainer,
{
text: url,
width,
height,
logo,
logoWidth,
logoBackgroundTransparent: true
}
);
}
function div0_binding($value) {
binding_callbacks[$value ? "unshift" : "push"](() => {
qrCodeContainer = $value;
$invalidate(0, qrCodeContainer);
});
}
$self.$set = ($props2) => {
if ("url" in $props2) $invalidate(1, url = $props2.url);
if ("width" in $props2) $invalidate(2, width = $props2.width);
if ("height" in $props2) $invalidate(3, height = $props2.height);
if ("logo" in $props2) $invalidate(4, logo = $props2.logo);
if ("logoWidth" in $props2) $invalidate(5, logoWidth = $props2.logoWidth);
};
$self.$.update = () => {
if ($self.$.dirty & /*url, width, height, logo, logoWidth*/
62) {
if (url || width || height || logo || logoWidth) {
generateQRCode();
}
}
};
return [qrCodeContainer, url, width, height, logo, logoWidth, div0_binding];
}
class QrCode extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$a, create_fragment$b, safe_not_equal, {
url: 1,
width: 2,
height: 3,
logo: 4,
logoWidth: 5
});
}
}
var ActivityType = /* @__PURE__ */ ((ActivityType2) => {
ActivityType2["TEXT"] = "text";
ActivityType2["IMG"] = "img";
ActivityType2["IMAGETEXT"] = "imgtext";
return ActivityType2;
})(ActivityType || {});
const isAsyncAPIAvailable = (fn) => typeof GM !== "undefined" && typeof GM[fn] === "function";
const isSyncAPIAvailable = (fn) => typeof window[fn] === "function";
async function getGMValue(key2, initialValue) {
if (isAsyncAPIAvailable("getValue")) {
return await GM.getValue(key2, initialValue);
} else if (isSyncAPIAvailable("GM_getValue")) {
return GM_getValue(key2, initialValue);
} else {
console.warn("GM_getValue or GM.getValue is not available.");
return initialValue;
}
}
async function setGMValue(key2, value) {
if (isAsyncAPIAvailable("setValue")) {
await GM.setValue(key2, value);
} else if (isSyncAPIAvailable("GM_setValue")) {
GM_setValue(key2, value);
} else {
console.warn("GM_setValue or GM.setValue is not available.");
}
}
async function deleteGMValue(key2) {
if (isAsyncAPIAvailable("deleteValue")) {
await GM.deleteValue(key2);
} else if (isSyncAPIAvailable("GM_deleteValue")) {
GM_deleteValue(key2);
} else {
console.warn("GM_deleteValue or GM.deleteValue is not available.");
}
}
async function openNewTab(url, active = true) {
if (isSyncAPIAvailable("GM_openInTab")) {
GM_openInTab(url, { active });
} else {
const a = document.createElement("a");
a.href = url;
a.target = "_blank";
a.rel = "noreferrer";
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
}
}
async function setClipboard(text2, callback) {
if (isAsyncAPIAvailable("setClipboard")) {
await GM.setClipboard(text2, "text");
callback == null ? void 0 : callback();
} else if (isSyncAPIAvailable("GM_setClipboard")) {
GM_setClipboard(text2, "text", callback);
} else {
console.warn("GM_setClipboard or GM.setClipboard is not available.");
}
}
async function openWindow(url) {
await openNewTab(url);
}
async function copy(text2, callback) {
const flag = !!window.GM_setClipboard;
if (flag) {
await setClipboard(text2, callback);
} else {
navigator.clipboard.writeText(text2).then(callback).catch((error) => {
console.error("Failed to copy text:", error);
});
}
}
const words = [
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"J",
"K",
"L",
"M",
"N",
"O",
"P",
"Q",
"R",
"S",
"T",
"U",
"V",
"W",
"X",
"Y",
"Z",
"-",
","
];
function shuffleWords() {
return words.sort(() => Math.random() - 0.5);
}
function getToken() {
const words2 = shuffleWords();
const index0 = getIndex(words2, "all", true);
const index1 = getIndex(words2, "iance", true);
const random = Math.floor(Math.random() * 2);
const splits = [getIndex(words2, ","), getIndex(words2, "-")];
const now = Date.now();
const split = random == 0 ? "," : "-";
const data = [
split,
index0,
splits[random] + split,
index1,
splits[random] + split,
now
];
const key2 = "jason";
const token = CryptoJS2.AES.encrypt(data.join(""), key2).toString();
const keyMap = getKeyMap(words2, now, split, key2);
return {
token,
keyMap
};
}
function getKeyMap(words2, now, split, key2) {
const data = [split, words2, now];
const keyMap = CryptoJS2.AES.encrypt(JSON.stringify(data), key2).toString();
return keyMap;
}
function getIndex(words2, keyword, needSplit = false) {
const index = [];
for (let i = 0; i < keyword.length; i++) {
index.push(words2.indexOf(keyword[i]).toString());
if (needSplit) {
index.push("@");
}
}
return index.join("");
}
function getCkValue(key2) {
const cookies = document.cookie.split("; ");
for (let cookie of cookies) {
const [k, v] = cookie.split("=");
if (k === key2) return decodeURIComponent(v);
}
return null;
}
function getEncryptUUID(platform2) {
switch (platform2) {
case Platform.JD:
return getJDUUID();
}
}
function getJDUUID() {
const nick = getCkValue(COOKIE_KEY.JD_USER_NAME);
const c = encrypt(`${nick}`);
return c;
}
function generateUUID() {
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (char) => {
const random = Math.random() * 16 | 0;
const value = char === "x" ? random : random & 3 | 8;
return value.toString(16);
});
}
async function initUUID() {
const uuid = await getUUID();
if (!uuid) {
const id = generateUUID();
await setGMValue(GM_KEY.UUID, id);
localStorage.setItem(GM_KEY.UUID, id);
}
}
async function getUUID() {
const u1 = await getGMValue(GM_KEY.UUID);
const u2 = localStorage.getItem(GM_KEY.UUID);
if (!u1 && u2) {
await setGMValue(GM_KEY.UUID, u2);
}
if (u1 && (!u2 || u1 != u2)) {
localStorage.setItem(GM_KEY.UUID, u1);
}
return u1 ?? u2;
}
function getScriptEnv() {
let scriptManager = "Unknown";
if (typeof GM_info !== "undefined" && GM_info.scriptHandler) {
scriptManager = GM_info.scriptHandler;
} else if (typeof GM !== "undefined" && GM.info && GM.info.scriptHandler) {
scriptManager = GM.info.scriptHandler;
}
return scriptManager;
}
function getScriptVersion() {
if (typeof GM_info !== "undefined" && GM_info.script.version) {
return GM_info.script.version;
} else if (typeof GM !== "undefined" && GM.info && GM.info.script.version) {
return GM.info.script.version;
}
return "Unknown";
}
async function fetchWithOptionalTimeout(url, options = {}, timeout) {
if (!timeout) {
return fetch(url, options);
}
const controller = new AbortController();
const signal = controller.signal;
const timeoutId = setTimeout(() => controller.abort(), timeout);
try {
const res = await fetch(url, { ...options, signal });
clearTimeout(timeoutId);
return res;
} catch (error) {
clearTimeout(timeoutId);
if (error.name === "AbortError") {
throw new Error("Fetch request timed out");
}
throw error;
}
}
async function get(url, data, timeout) {
const params = new URLSearchParams(data ?? {});
url = url + "?" + params.toString();
const { token, keyMap } = getToken();
const plgid = await getUUID() ?? "";
const pf = getPlatform();
const headers = {
authorization: token,
authhash: keyMap,
plgn: PluginName,
plgv: getScriptVersion(),
plgEnv: getScriptEnv(),
plgzid: getEncryptUUID(pf) ?? "",
plgid: plgid ?? ""
};
const res = await fetchWithOptionalTimeout(url, { headers }, timeout);
const json = await res.json();
return json;
}
const baseUrl = "https://api2.jasonzk.com";
const transformLink = "transform/link";
const lvt = "vw/lvt";
const getTransformLink = `${baseUrl}/${transformLink}`;
const getCouponUrl = `${baseUrl}/coupon/couponV2`;
const getActivitySets = `${baseUrl}/activity/sets2`;
const vwC = `${baseUrl}/vw/c`;
const vwB = `${baseUrl}/vw/b`;
const vwLvt = `${baseUrl}/${lvt}`;
const checkVersion = `${baseUrl}/version/check`;
const API = {
getTransformLink,
getCouponUrl,
getActivitySets,
vwC,
vwB,
vwLvt,
checkVersion
};
function getPlatformLogo(platform2) {
switch (platform2) {
case Platform.Taobao:
return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAABE0lEQVRIS2P8r6XF9uLGjcp/DAwxjAwMCv8ZGFgYqAgYGRj+/GdgeMDEwLBEQkOjnfEpC0sDw79/9VS0A6dRTAwMDYxPmZhuMzAwqNDDQgYGhjuMz5iYflM7GHE5HhS8IB/+p5PvwNYMDgsFly5lYLWwwOpxJhERBkZ2drDc/58/Gf69eYNV3e8TJxjeR0djyGH1ofDevQzsDg4UhfTPAwcY3jo7D1ILecrKGFjU1bH6kN3dnYFZUhIs9/f5c4afO3diVffn5k2GL11dxPkQX1giBzeuYMOnn+RUOmohoaQ9GqQYITSaaEYTzWi2wEgDyDUJrhoBb+E9EI0o+jYTnzMx1f9jYGgglH+oIQ9uCNO7qQ8Aj+XKFcR3kJwAAAAASUVORK5CYII=";
case Platform.JD:
return "data:image/png;base64,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";
case Platform.Pdd:
return "data:image/png;base64,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";
case Platform.Vip:
return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAFZElEQVR42mWWW4id1RXHf2t/35xJnLSStqaiYhOmaWIvtqTTVii9aUGaFEpLrZS2UlBffNQXES8oQXwVFV/0QfRFJSJe0eiDRsS7eE0cjXclmURjJpmcmZxvr78nszbfRt2w+PbZa+/13+u/LvsYgM69ZQPYtbjOBqaQwAAnhgQYSP3UBAgkAWWOMEE9KwxbkPQIyS4D3jKde+uPcH9IYtqES0pGGDIKCIAquGQYFYhv6ONsuYwjErA7edrcMspbEdOITlJbMEAgHFQWqEaNYlQCVSxU96gaSYLOxHQmb23J2hxK2qDLsGQIgQwzgALqQu4wckgJT8TeLnQAJMPCUE+xQRsXtM2tsqZQodAMLSyipUyNCwHWNrCiBQw779fw4xOxvfP4TU9hG07A/v1L9O5+uO155FDprbkgfKpV58UPoexwziZs08kw7MALdRMN7JlHtz47BvsV9t8ZGGX8ul3w/gH47TpsLKw+Dr/56WDAQI1B02D0CaaWLBOE+1nY6SdhZ6wDV6XHDH1yEJqE/f10APTpPLb2O3Dl2di68RdgzSrSxX+Miw8aeOFj2D6L2gQCJGtxKBwsb7TFLuazc2jbK/CLk0lbfoJ9dwr728+WQZGwH6xG/5vBAKOM703B5tNIWWjVJBp2+MO7+jKSi1bZa5rlmor66Av8+h3YeTMwBlyO34Ej6GjGvv8t/L7X8asfBUG67CzSP3+OXvmUfNE2rBOycMRSgq7Wa1In5EI5YihBaBKsHGBtAwCHlshjAL30MUDEabFDSx1kBwAXjDLqMnQOo7B5TCgYCRd0RbJA9Ic1ctSFMX22gL+2JyiFANt/BI7JMMJg2eHzYch4XfNLkCnORI60uMABQoGLfizfTtXjiQbMwvjMKTTXbYksPuNUABgnUbr0zLj4oEFv7MUf3NmfkUSrkcAACesqGBLqhLn634S3Abj+BGzDGqAOGydNc8Fv+gz3R2fJ972JGRUQV1/h7iL1AMDXPFb2HtSffJd8y3OYQfr/DOms9fjsPvI1j0H2oH7fEcwBU580LVm1y9cYIini59SRASn0H36B3/8mYPCHaRLAgSH+xHsBaAYJbKJFoseIsqDY6Qog1UPlr3tMDBWdCVT30MW6oeg0SYiqb79ya6+A9g1KyxwL/SnH0/xlIxLYqasB4PgV2O/WYoVS5hbQO/uLPUMoPKweeAWXygUMIL5ZUH6mP/1wOW5QRzptDYO7/tMnTX5gJ6Pzty3PJYWH5tSunsuXmJNHaGGpUujVY981F/ESpN+vJf30RDR3mO6Ol7HOUZPQq3sgg2qm03rnGLUOe8TjBrDxJJo/ry86R0dzf9h3fMBo3MYEDG74RwCOG3p3xXY4ts8MaxOsnAiTAuuztCZFFDfQnDlNs/MSyAXg9T3ow4O9nkHCJleElcmmNodx02aUMTNwQRYmENQ6lISVGGrvYTS/CIePBvefD/HH3yHf+AyIyoBZPDt1FJ0VAUGAigIqbLhmqyMMK1y3ifIEhWShQ0exZDCRGNz+L5q/box1A0ToylwHh8HKqgHdna8xuvDeKA/AJLVyN2Qg1abs9V+XGdhkC5RGkOKwv70PvTEXFJdXxiAuLMFku5w0cg9bgIS1ZBaQTyGjnjL6IdAox5pDd9Oz5O27yTvex1/8BBs0yMEQKlYRIUawlQuabMEWvn31XUjnAB2irbGgHkT9XbQ4AhxSi7UJ1T0giz21lmPNVGzb3W0Sl3vWJonp8EEpvA1g9QEuBgYT9b3M1ZuCEEel2pGQS7QGu8EuTysPXTWLNVuSuIfMsH/5PQQnYpePSTzKjKX0zABWEWodG+WLDQ27x2i2GDb7JcYo/09XdwlHAAAAAElFTkSuQmCC";
default:
return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAABE0lEQVRIS2P8r6XF9uLGjcp/DAwxjAwMCv8ZGFgYqAgYGRj+/GdgeMDEwLBEQkOjnfEpC0sDw79/9VS0A6dRTAwMDYxPmZhuMzAwqNDDQgYGhjuMz5iYflM7GHE5HhS8IB/+p5PvwNYMDgsFly5lYLWwwOpxJhERBkZ2drDc/58/Gf69eYNV3e8TJxjeR0djyGH1ofDevQzsDg4UhfTPAwcY3jo7D1ILecrKGFjU1bH6kN3dnYFZUhIs9/f5c4afO3diVffn5k2GL11dxPkQX1giBzeuYMOnn+RUOmohoaQ9GqQYITSaaEYTzWi2wEgDyDUJrhoBb+E9EI0o+jYTnzMx1f9jYGgglH+oIQ9uCNO7qQ8Aj+XKFcR3kJwAAAAASUVORK5CYII=";
}
}
function getLogoWidth(platform2, rate = 1) {
switch (platform2) {
case Platform.Taobao:
return 15 * rate;
case Platform.JD:
return 20 * rate;
case Platform.Vip:
return 15 * rate;
case Platform.Pdd:
return 30 * rate;
default:
return 20 * rate;
}
}
async function getTitle(p) {
const pat = p ?? ensurePlatform();
let title = "";
switch (pat) {
case Platform.Taobao:
title = await getTbTitle();
break;
case Platform.JD:
title = await getJdTitle();
break;
case Platform.Vip:
title = await getVipTitle();
break;
}
return {
platform: pat,
title
};
}
function getTbTitle() {
return new Promise((resolve) => {
var _a;
const title = (_a = document.querySelector("h1")) == null ? void 0 : _a.textContent;
if (title) {
resolve(title);
} else {
const observer = new MutationObserver(() => {
var _a2;
const title2 = (_a2 = document.querySelector("h1")) == null ? void 0 : _a2.textContent;
if (title2) {
observer.disconnect();
resolve(title2);
}
});
observer.observe(document.body, {
childList: true,
subtree: true
});
}
});
}
async function getJdTitle() {
return new Promise(async (resolve) => {
var _a;
const title = (_a = document.querySelector(".sku-name")) == null ? void 0 : _a.textContent;
if (title) {
const rt = title.replace(/\s+/g, "");
resolve(rt);
} else {
const observer = new MutationObserver(() => {
var _a2;
const title2 = (_a2 = document.querySelector(".sku-name")) == null ? void 0 : _a2.textContent;
if (title2) {
observer.disconnect();
const rt = title2.replace(/\s+/g, "");
resolve(rt);
}
});
observer.observe(document.body, {
childList: true,
subtree: true
});
}
});
}
async function getVipTitle() {
const isH5 = isMobile();
const className = isH5 ? ".name_title_ll" : ".pib-title-detail";
return new Promise((resolve) => {
var _a;
const title = (_a = document.querySelector(className)) == null ? void 0 : _a.textContent;
if (title && title != "商家店铺") {
resolve(title.replace("商家店铺", ""));
} else {
const observer = new MutationObserver(() => {
var _a2;
const title2 = (_a2 = document.querySelector(className)) == null ? void 0 : _a2.textContent;
if (title2 && title2 != "商家店铺") {
observer.disconnect();
resolve(title2.replace("商家店铺", ""));
}
});
observer.observe(document.body, {
childList: true,
subtree: true
});
}
});
}
function ensurePlatform() {
const url = window.location.host;
let p = Platform.None;
if (url.indexOf(UrlType.Taobao) != -1 || url.indexOf(UrlType.Tmall) != -1 || url.indexOf(UrlType.YYTmall) != -1) {
platform.updatePlatform(Platform.Taobao);
p = Platform.Taobao;
} else if (url.indexOf(UrlType.JD) != -1) {
platform.updatePlatform(Platform.JD);
p = Platform.JD;
} else if (url.indexOf(UrlType.Vip) != -1) {
platform.updatePlatform(Platform.Vip);
p = Platform.Vip;
} else if (url.indexOf(UrlType.DEV) != -1) {
platform.updatePlatform(Platform.Dev);
p = Platform.Dev;
} else if (url.indexOf(UrlType.ZK) != -1) {
platform.updatePlatform(Platform.ZK);
p = Platform.ZK;
} else {
platform.updatePlatform(Platform.None);
}
return p;
}
function isMobile() {
return /Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent);
}
function getPlatformName(platform2) {
switch (platform2) {
case Platform.Taobao:
return "淘宝";
case Platform.JD:
return "京东";
case Platform.Vip:
return "唯品会";
case Platform.Pdd:
return "拼多多";
default:
return "";
}
}
function checkIsOpenedActivity(activity, platform2) {
const { key: key2, jdLink, tbLink } = activity;
const keyValue = localStorage.getItem(key2);
if (!keyValue) {
localStorage.setItem(key2, key2);
switch (platform2) {
case Platform.JD:
if (jdLink && jdLink != "") {
openWindow(jdLink);
}
return;
case Platform.Taobao:
if (tbLink && tbLink != "") {
openWindow(tbLink);
}
return;
}
}
}
function clearLocalStorage(key2) {
localStorage.removeItem(key2);
}
function clearSessionStorage(key2) {
sessionStorage.removeItem(key2);
}
function savePlugin() {
const key2 = "tampermonkey_plugin_je82j46";
function updateTimestamp() {
const plugins = JSON.parse(sessionStorage.getItem(key2)) ?? [];
const currentTime = Date.now();
const updatedPlugins = plugins.filter(
(plugin) => plugin.name !== PluginName
);
updatedPlugins.push({ name: PluginName, timestamp: currentTime });
sessionStorage.setItem(key2, JSON.stringify(updatedPlugins));
setTimeout(updateTimestamp, 3e3);
}
updateTimestamp();
}
function existPlugin(pluginName, timeout = 3e3) {
const key2 = "tampermonkey_plugin_je82j46";
const plugins = JSON.parse(sessionStorage.getItem(key2)) ?? [];
const plugin = plugins.find(
(plugin2) => plugin2.name === pluginName
);
if (!plugin) return false;
return Date.now() - plugin.timestamp <= timeout;
}
function canExec() {
const currentPlugin = PluginName;
switch (currentPlugin) {
case PluginType.Compare:
return true;
case PluginType.Tool:
return !existPlugin(PluginType.Compare);
case PluginType.Coupon:
return !existPlugin(PluginType.Compare) && !existPlugin(PluginType.Tool);
case PluginType.Promotion:
return !existPlugin(PluginType.Compare) && !existPlugin(PluginType.Coupon) && !existPlugin(PluginType.Tool);
}
return true;
}
function isProduction() {
return true;
}
async function fetchTransformLink(params) {
const {
platform: platform2,
url = getOriginalUrl(platform2),
dl = true,
timeout
} = params;
const json = await get(
API.getTransformLink,
{
platform: platform2,
url,
pt: PluginName,
dl: dl ? 1 : 0
},
timeout
);
return json;
}
function encrypt(content) {
return CryptoJS2.AES.encrypt(content, "ck").toString();
}
async function wait(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
async function waitForTs(timestamp, timeout = 1050) {
const now = Date.now();
if (now - timestamp < timeout) {
await wait(timeout - (now - timestamp));
}
}
function getOriginalUrl(platform2) {
switch (platform2) {
case Platform.JD:
return location.origin + location.pathname;
case Platform.Taobao:
return location.href;
case Platform.Vip:
return location.origin + location.pathname;
}
return location.href;
}
function create_fragment$a(ctx) {
let div;
let current;
const default_slot_template = (
/*#slots*/
ctx[2].default
);
const default_slot = create_slot(
default_slot_template,
ctx,
/*$scope*/
ctx[1],
null
);
return {
c() {
div = element("div");
if (default_slot) default_slot.c();
},
m(target, anchor) {
insert(target, div, anchor);
if (default_slot) {
default_slot.m(div, null);
}
ctx[3](div);
current = true;
},
p(ctx2, [dirty]) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$scope*/
2)) {
update_slot_base(
default_slot,
default_slot_template,
ctx2,
/*$scope*/
ctx2[1],
!current ? get_all_dirty_from_scope(
/*$scope*/
ctx2[1]
) : get_slot_changes(
default_slot_template,
/*$scope*/
ctx2[1],
dirty,
null
),
null
);
}
}
},
i(local) {
if (current) return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching) {
detach(div);
}
if (default_slot) default_slot.d(detaching);
ctx[3](null);
}
};
}
function instance$9($self, $props, $invalidate) {
let { $slots: slots = {}, $scope } = $props;
let ref;
function div_binding($value) {
binding_callbacks[$value ? "unshift" : "push"](() => {
ref = $value;
$invalidate(0, ref);
});
}
$self.$set = ($props2) => {
if ("$scope" in $props2) $invalidate(1, $scope = $props2.$scope);
};
$self.$.update = () => {
if ($self.$.dirty & /*ref*/
1) {
ref && document.body.appendChild(ref);
}
};
return [ref, $scope, slots, div_binding];
}
class Portal extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$9, create_fragment$a, safe_not_equal, {});
}
}
function create_if_block$8(ctx) {
let portal;
let current;
portal = new Portal({
props: {
$slots: { default: [create_default_slot$2] },
$scope: { ctx }
}
});
return {
c() {
create_component(portal.$.fragment);
},
m(target, anchor) {
mount_component(portal, target, anchor);
current = true;
},
p(ctx2, dirty) {
const portal_changes = {};
if (dirty & /*$scope, title*/
34) {
portal_changes.$scope = { dirty, ctx: ctx2 };
}
portal.$set(portal_changes);
},
i(local) {
if (current) return;
transition_in(portal.$.fragment, local);
current = true;
},
o(local) {
transition_out(portal.$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(portal, detaching);
}
};
}
function create_default_slot$2(ctx) {
let div3;
let div2;
let div0;
let p;
let t0;
let t1;
let button;
let t3;
let div1;
let current;
let mounted2;
let dispose;
const default_slot_template = (
/*#slots*/
ctx[3].default
);
const default_slot = create_slot(
default_slot_template,
ctx,
/*$scope*/
ctx[5],
null
);
return {
c() {
div3 = element("div");
div2 = element("div");
div0 = element("div");
p = element("p");
t0 = text(
/*title*/
ctx[1]
);
t1 = space();
button = element("button");
button.textContent = "×";
t3 = space();
div1 = element("div");
if (default_slot) default_slot.c();
set_style(p, "margin-top", "-3px");
attr(button, "class", "cp-hover:text-gray-900 cp-focus:outline-none cp-absolute cp-right-[8px] cp-top-[8px] cp-text-2xl cp-text-gray-600");
attr(div1, "class", "cp-mt-[28px]");
attr(div2, "class", "cp-relative cp-flex cp-flex-col cp-items-center cp-justify-center cp-rounded-lg cp-bg-white cp-p-[16px]");
set_style(div2, "max-width", "90%");
attr(div3, "class", "cp-fixed cp-inset-0 cp-flex cp-items-center cp-justify-center cp-bg-black cp-bg-opacity-70");
set_style(div3, "z-index", "99999999");
},
m(target, anchor) {
insert(target, div3, anchor);
append(div3, div2);
append(div2, div0);
append(div0, p);
append(p, t0);
append(div0, t1);
append(div0, button);
append(div2, t3);
append(div2, div1);
if (default_slot) {
default_slot.m(div1, null);
}
current = true;
if (!mounted2) {
dispose = [
listen(
button,
"click",
/*closeModal*/
ctx[2]
),
listen(div2, "click", stop_propagation(
/*click_handler*/
ctx[4]
)),
listen(
div3,
"click",
/*closeModal*/
ctx[2]
)
];
mounted2 = true;
}
},
p(ctx2, dirty) {
if (!current || dirty & /*title*/
2) set_data(
t0,
/*title*/
ctx2[1]
);
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$scope*/
32)) {
update_slot_base(
default_slot,
default_slot_template,
ctx2,
/*$scope*/
ctx2[5],
!current ? get_all_dirty_from_scope(
/*$scope*/
ctx2[5]
) : get_slot_changes(
default_slot_template,
/*$scope*/
ctx2[5],
dirty,
null
),
null
);
}
}
},
i(local) {
if (current) return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching) {
detach(div3);
}
if (default_slot) default_slot.d(detaching);
mounted2 = false;
run_all(dispose);
}
};
}
function create_fragment$9(ctx) {
let if_block_anchor;
let current;
let if_block = (
/*show*/
ctx[0] && create_if_block$8(ctx)
);
return {
c() {
if (if_block) if_block.c();
if_block_anchor = empty();
},
m(target, anchor) {
if (if_block) if_block.m(target, anchor);
insert(target, if_block_anchor, anchor);
current = true;
},
p(ctx2, [dirty]) {
if (
/*show*/
ctx2[0]
) {
if (if_block) {
if_block.p(ctx2, dirty);
if (dirty & /*show*/
1) {
transition_in(if_block, 1);
}
} else {
if_block = create_if_block$8(ctx2);
if_block.c();
transition_in(if_block, 1);
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
} else if (if_block) {
group_outros();
transition_out(if_block, 1, 1, () => {
if_block = null;
});
check_outros();
}
},
i(local) {
if (current) return;
transition_in(if_block);
current = true;
},
o(local) {
transition_out(if_block);
current = false;
},
d(detaching) {
if (detaching) {
detach(if_block_anchor);
}
if (if_block) if_block.d(detaching);
}
};
}
function instance$8($self, $props, $invalidate) {
let { $slots: slots = {}, $scope } = $props;
let { show = false } = $props;
let { title = "微信扫码购买" } = $props;
const dispatch = createEventDispatcher();
function closeModal() {
dispatch("close");
}
function click_handler(event) {
bubble.call(this, $self, event);
}
$self.$set = ($props2) => {
if ("show" in $props2) $invalidate(0, show = $props2.show);
if ("title" in $props2) $invalidate(1, title = $props2.title);
if ("$scope" in $props2) $invalidate(5, $scope = $props2.$scope);
};
return [show, title, closeModal, slots, click_handler, $scope];
}
class Modal extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$8, create_fragment$9, safe_not_equal, { show: 0, title: 1 });
}
}
function create_if_block_1$3(ctx) {
let div;
let t0;
let t1;
return {
c() {
div = element("div");
t0 = text("剩余:");
t1 = text(
/*left*/
ctx[4]
);
attr(div, "class", "cp-text-md");
},
m(target, anchor) {
insert(target, div, anchor);
append(div, t0);
append(div, t1);
},
p(ctx2, dirty) {
if (dirty & /*left*/
16) set_data(
t1,
/*left*/
ctx2[4]
);
},
d(detaching) {
if (detaching) {
detach(div);
}
}
};
}
function create_if_block$7(ctx) {
let div;
let t0;
let t1;
return {
c() {
div = element("div");
t0 = text("有效期至:");
t1 = text(
/*date*/
ctx[2]
);
attr(div, "class", "cp-text-md");
},
m(target, anchor) {
insert(target, div, anchor);
append(div, t0);
append(div, t1);
},
p(ctx2, dirty) {
if (dirty & /*date*/
4) set_data(
t1,
/*date*/
ctx2[2]
);
},
d(detaching) {
if (detaching) {
detach(div);
}
}
};
}
function create_default_slot$1(ctx) {
let qrcode;
let current;
qrcode = new QrCode({
props: {
url: (
/*url*/
ctx[3]
),
width: 250,
height: 250,
logo: getPlatformLogo(
/*$platform*/
ctx[7]
),
logoWidth: getLogoWidth(
/*$platform*/
ctx[7],
2
)
}
});
return {
c() {
create_component(qrcode.$.fragment);
},
m(target, anchor) {
mount_component(qrcode, target, anchor);
current = true;
},
p(ctx2, dirty) {
const qrcode_changes = {};
if (dirty & /*url*/
8) qrcode_changes.url = /*url*/
ctx2[3];
if (dirty & /*$platform*/
128) qrcode_changes.logo = getPlatformLogo(
/*$platform*/
ctx2[7]
);
if (dirty & /*$platform*/
128) qrcode_changes.logoWidth = getLogoWidth(
/*$platform*/
ctx2[7],
2
);
qrcode.$set(qrcode_changes);
},
i(local) {
if (current) return;
transition_in(qrcode.$.fragment, local);
current = true;
},
o(local) {
transition_out(qrcode.$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(qrcode, detaching);
}
};
}
function create_fragment$8(ctx) {
let div8;
let div4;
let div0;
let t0;
let div1;
let t1;
let div2;
let t2;
let t3;
let t4;
let div3;
let t5;
let t6;
let div6;
let div5;
let t7;
let t8;
let t9;
let t10;
let t11;
let div7;
let qrcode;
let t12;
let modal;
let current;
let mounted2;
let dispose;
let if_block0 = (
/*left*/
ctx[4] != null && /*left*/
ctx[4] > 0 && create_if_block_1$3(ctx)
);
let if_block1 = (
/*date*/
ctx[2] && /*date*/
ctx[2] != "" && create_if_block$7(ctx)
);
qrcode = new QrCode({
props: {
url: (
/*url*/
ctx[3]
),
logo: getPlatformLogo(
/*$platform*/
ctx[7]
),
logoWidth: getLogoWidth(
/*$platform*/
ctx[7],
0.8
)
}
});
modal = new Modal({
props: {
show: (
/*showModal*/
ctx[6]
),
title: (
/*modalTitle*/
ctx[5]
),
$slots: { default: [create_default_slot$1] },
$scope: { ctx }
}
});
modal.$on(
"close",
/*close_handler*/
ctx[10]
);
return {
c() {
div8 = element("div");
div4 = element("div");
div0 = element("div");
t0 = space();
div1 = element("div");
t1 = space();
div2 = element("div");
t2 = text("¥");
t3 = text(
/*amount*/
ctx[0]
);
t4 = space();
div3 = element("div");
t5 = text(
/*condition*/
ctx[1]
);
t6 = space();
div6 = element("div");
div5 = element("div");
t7 = text(
/*amount*/
ctx[0]
);
t8 = text("元优惠券");
t9 = space();
if (if_block0) if_block0.c();
t10 = space();
if (if_block1) if_block1.c();
t11 = space();
div7 = element("div");
create_component(qrcode.$.fragment);
t12 = space();
create_component(modal.$.fragment);
attr(div0, "class", "cp-absolute cp-h-[25px] cp-w-[25px] cp-rounded-full cp-border cp-bg-slate-100");
set_style(div0, "border-bottom", "transparent");
set_style(div0, "border-right", "transparent");
set_style(div0, "transform", "rotate(-135deg)");
set_style(div0, "right", "-12.5px");
set_style(div0, "top", "-25px");
attr(div1, "class", "cp-absolute cp-h-[25px] cp-w-[25px] cp-rounded-full cp-border cp-bg-slate-100");
set_style(div1, "border-bottom", "transparent");
set_style(div1, "border-right", "transparent");
set_style(div1, "transform", "rotate(45deg)");
set_style(div1, "right", "-12.5px");
set_style(div1, "bottom", "-25px");
attr(div2, "class", "cp-text-3xl cp-font-bold cp-text-red-500");
attr(div3, "class", "cp-text-gray-500");
attr(div4, "class", "cp-relative cp-w-[120px] cp-flex-none cp-border-r-2 cp-border-dotted cp-pr-4 cp-text-center");
attr(div5, "class", "cp-text-lg cp-font-semibold");
attr(div6, "class", "cp-flex cp-flex-grow cp-flex-col cp-gap-[4px] cp-pl-4");
attr(div7, "class", "zk-flex zk-cursor-pointer zk-flex-col zk-items-center zk-gap-[8px]");
attr(div7, "title", "官方商品二维码,安全无毒,点击可放大");
attr(div8, "class", "cp-flex cp-cursor-pointer cp-rounded-lg cp-border cp-border-l-4 cp-border-l-red-600 cp-bg-white cp-p-4");
},
m(target, anchor) {
insert(target, div8, anchor);
append(div8, div4);
append(div4, div0);
append(div4, t0);
append(div4, div1);
append(div4, t1);
append(div4, div2);
append(div2, t2);
append(div2, t3);
append(div4, t4);
append(div4, div3);
append(div3, t5);
append(div8, t6);
append(div8, div6);
append(div6, div5);
append(div5, t7);
append(div5, t8);
append(div6, t9);
if (if_block0) if_block0.m(div6, null);
append(div6, t10);
if (if_block1) if_block1.m(div6, null);
append(div8, t11);
append(div8, div7);
mount_component(qrcode, div7, null);
append(div8, t12);
mount_component(modal, div8, null);
current = true;
if (!mounted2) {
dispose = [
listen(
div7,
"click",
/*handleShowQrCode*/
ctx[9]
),
listen(
div8,
"click",
/*handleClick*/
ctx[8]
)
];
mounted2 = true;
}
},
p(ctx2, [dirty]) {
if (!current || dirty & /*amount*/
1) set_data(
t3,
/*amount*/
ctx2[0]
);
if (!current || dirty & /*condition*/
2) set_data(
t5,
/*condition*/
ctx2[1]
);
if (!current || dirty & /*amount*/
1) set_data(
t7,
/*amount*/
ctx2[0]
);
if (
/*left*/
ctx2[4] != null && /*left*/
ctx2[4] > 0
) {
if (if_block0) {
if_block0.p(ctx2, dirty);
} else {
if_block0 = create_if_block_1$3(ctx2);
if_block0.c();
if_block0.m(div6, t10);
}
} else if (if_block0) {
if_block0.d(1);
if_block0 = null;
}
if (
/*date*/
ctx2[2] && /*date*/
ctx2[2] != ""
) {
if (if_block1) {
if_block1.p(ctx2, dirty);
} else {
if_block1 = create_if_block$7(ctx2);
if_block1.c();
if_block1.m(div6, null);
}
} else if (if_block1) {
if_block1.d(1);
if_block1 = null;
}
const qrcode_changes = {};
if (dirty & /*url*/
8) qrcode_changes.url = /*url*/
ctx2[3];
if (dirty & /*$platform*/
128) qrcode_changes.logo = getPlatformLogo(
/*$platform*/
ctx2[7]
);
if (dirty & /*$platform*/
128) qrcode_changes.logoWidth = getLogoWidth(
/*$platform*/
ctx2[7],
0.8
);
qrcode.$set(qrcode_changes);
const modal_changes = {};
if (dirty & /*showModal*/
64) modal_changes.show = /*showModal*/
ctx2[6];
if (dirty & /*modalTitle*/
32) modal_changes.title = /*modalTitle*/
ctx2[5];
if (dirty & /*$scope, url, $platform*/
2184) {
modal_changes.$scope = { dirty, ctx: ctx2 };
}
modal.$set(modal_changes);
},
i(local) {
if (current) return;
transition_in(qrcode.$.fragment, local);
transition_in(modal.$.fragment, local);
current = true;
},
o(local) {
transition_out(qrcode.$.fragment, local);
transition_out(modal.$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) {
detach(div8);
}
if (if_block0) if_block0.d();
if (if_block1) if_block1.d();
destroy_component(qrcode);
destroy_component(modal);
mounted2 = false;
run_all(dispose);
}
};
}
function instance$7($self, $props, $invalidate) {
let $platform;
component_subscribe($self, platform, ($value) => $invalidate(7, $platform = $value));
let { amount = 5 } = $props;
let { condition = "满100可用" } = $props;
let { date = "" } = $props;
let { url = "" } = $props;
let { left = 0 } = $props;
let modalTitle = "";
let showModal = false;
const handleClick = () => {
var _a;
if (Platform.Vip == $platform) {
(_a = document.querySelector(".J-getCouponBtn")) == null ? void 0 : _a.click();
return;
}
if (url) {
openWindow(url);
window.close();
}
};
function handleShowQrCode(e) {
e.stopPropagation();
if ($platform == Platform.Taobao) {
$invalidate(5, modalTitle = "天猫/淘宝APP扫码购买");
} else {
$invalidate(5, modalTitle = `微信扫码,${getPlatformName($platform)}购买`);
}
$invalidate(6, showModal = true);
}
const close_handler = () => $invalidate(6, showModal = false);
$self.$set = ($props2) => {
if ("amount" in $props2) $invalidate(0, amount = $props2.amount);
if ("condition" in $props2) $invalidate(1, condition = $props2.condition);
if ("date" in $props2) $invalidate(2, date = $props2.date);
if ("url" in $props2) $invalidate(3, url = $props2.url);
if ("left" in $props2) $invalidate(4, left = $props2.left);
};
return [
amount,
condition,
date,
url,
left,
modalTitle,
showModal,
$platform,
handleClick,
handleShowQrCode,
close_handler
];
}
class Coupon extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$7, create_fragment$8, safe_not_equal, {
amount: 0,
condition: 1,
date: 2,
url: 3,
left: 4
});
}
}
function createCoupon() {
const { subscribe: subscribe2, set, update: update2 } = writable(null);
return {
subscribe: subscribe2,
updateCoupon: (data) => update2(() => data)
};
}
const coupon = createCoupon();
function create_if_block$6(ctx) {
let div;
let img;
let img_src_value;
let img_title_value;
let img_alt_value;
return {
c() {
div = element("div");
img = element("img");
if (!src_url_equal(img.src, img_src_value = /*activityItem*/
ctx[0].img)) attr(img, "src", img_src_value);
attr(img, "title", img_title_value = /*activityItem*/
ctx[0].title);
attr(img, "alt", img_alt_value = /*activityItem*/
ctx[0].title);
attr(img, "width", "98%");
toggle_class(
div,
"cp-cursor-pointer",
/*activityItem*/
ctx[0].url && /*activityItem*/
ctx[0].url != ""
);
},
m(target, anchor) {
insert(target, div, anchor);
append(div, img);
},
p(ctx2, dirty) {
if (dirty & /*activityItem*/
1 && !src_url_equal(img.src, img_src_value = /*activityItem*/
ctx2[0].img)) {
attr(img, "src", img_src_value);
}
if (dirty & /*activityItem*/
1 && img_title_value !== (img_title_value = /*activityItem*/
ctx2[0].title)) {
attr(img, "title", img_title_value);
}
if (dirty & /*activityItem*/
1 && img_alt_value !== (img_alt_value = /*activityItem*/
ctx2[0].title)) {
attr(img, "alt", img_alt_value);
}
if (dirty & /*activityItem*/
1) {
toggle_class(
div,
"cp-cursor-pointer",
/*activityItem*/
ctx2[0].url && /*activityItem*/
ctx2[0].url != ""
);
}
},
d(detaching) {
if (detaching) {
detach(div);
}
}
};
}
function create_fragment$7(ctx) {
let if_block_anchor;
let if_block = (
/*activityItem*/
ctx[0] && create_if_block$6(ctx)
);
return {
c() {
if (if_block) if_block.c();
if_block_anchor = empty();
},
m(target, anchor) {
if (if_block) if_block.m(target, anchor);
insert(target, if_block_anchor, anchor);
},
p(ctx2, [dirty]) {
if (
/*activityItem*/
ctx2[0]
) {
if (if_block) {
if_block.p(ctx2, dirty);
} else {
if_block = create_if_block$6(ctx2);
if_block.c();
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
} else if (if_block) {
if_block.d(1);
if_block = null;
}
},
i: noop,
o: noop,
d(detaching) {
if (detaching) {
detach(if_block_anchor);
}
if (if_block) if_block.d(detaching);
}
};
}
function instance$6($self, $props, $invalidate) {
let { activityItem = null } = $props;
const platform2 = null;
$self.$set = ($props2) => {
if ("activityItem" in $props2) $invalidate(0, activityItem = $props2.activityItem);
};
return [activityItem, platform2];
}
class ActivityImg extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$6, create_fragment$7, safe_not_equal, { activityItem: 0, platform: 1 });
}
get platform() {
return this.$.ctx[1];
}
}
function create_if_block$5(ctx) {
let div3;
let img;
let img_src_value;
let img_title_value;
let img_alt_value;
let t0;
let div2;
let div1;
let div0;
let h4;
let t1_value = (
/*activityItem*/
ctx[0].title + ""
);
let t1;
let t2;
let t3;
let t4;
let current;
let if_block0 = (
/*activityItem*/
ctx[0].desc && /*activityItem*/
ctx[0].desc != "" && create_if_block_3(ctx)
);
let if_block1 = (
/*activityItem*/
ctx[0].activity_date && /*activityItem*/
ctx[0].activity_date != "" && create_if_block_2(ctx)
);
let if_block2 = (
/*activityItem*/
ctx[0].short_url && /*activityItem*/
ctx[0].short_url != "" && create_if_block_1$2(ctx)
);
return {
c() {
div3 = element("div");
img = element("img");
t0 = space();
div2 = element("div");
div1 = element("div");
div0 = element("div");
h4 = element("h4");
t1 = text(t1_value);
t2 = space();
if (if_block0) if_block0.c();
t3 = space();
if (if_block1) if_block1.c();
t4 = space();
if (if_block2) if_block2.c();
if (!src_url_equal(img.src, img_src_value = /*activityItem*/
ctx[0].img)) attr(img, "src", img_src_value);
attr(img, "title", img_title_value = /*activityItem*/
ctx[0].title);
attr(img, "alt", img_alt_value = /*activityItem*/
ctx[0].title);
attr(img, "width", "98%");
attr(h4, "class", "cp-mb-[6px] cp-font-bold");
attr(div1, "class", "cp-flex cp-items-center cp-justify-between cp-gap-[12px]");
attr(div2, "class", "cp-mt-[8px] cp-w-full");
toggle_class(
div3,
"cp-cursor-pointer",
/*activityItem*/
ctx[0].url && /*activityItem*/
ctx[0].url != ""
);
},
m(target, anchor) {
insert(target, div3, anchor);
append(div3, img);
append(div3, t0);
append(div3, div2);
append(div2, div1);
append(div1, div0);
append(div0, h4);
append(h4, t1);
append(div0, t2);
if (if_block0) if_block0.m(div0, null);
append(div0, t3);
if (if_block1) if_block1.m(div0, null);
append(div1, t4);
if (if_block2) if_block2.m(div1, null);
current = true;
},
p(ctx2, dirty) {
if (!current || dirty & /*activityItem*/
1 && !src_url_equal(img.src, img_src_value = /*activityItem*/
ctx2[0].img)) {
attr(img, "src", img_src_value);
}
if (!current || dirty & /*activityItem*/
1 && img_title_value !== (img_title_value = /*activityItem*/
ctx2[0].title)) {
attr(img, "title", img_title_value);
}
if (!current || dirty & /*activityItem*/
1 && img_alt_value !== (img_alt_value = /*activityItem*/
ctx2[0].title)) {
attr(img, "alt", img_alt_value);
}
if ((!current || dirty & /*activityItem*/
1) && t1_value !== (t1_value = /*activityItem*/
ctx2[0].title + "")) set_data(t1, t1_value);
if (
/*activityItem*/
ctx2[0].desc && /*activityItem*/
ctx2[0].desc != ""
) {
if (if_block0) {
if_block0.p(ctx2, dirty);
} else {
if_block0 = create_if_block_3(ctx2);
if_block0.c();
if_block0.m(div0, t3);
}
} else if (if_block0) {
if_block0.d(1);
if_block0 = null;
}
if (
/*activityItem*/
ctx2[0].activity_date && /*activityItem*/
ctx2[0].activity_date != ""
) {
if (if_block1) {
if_block1.p(ctx2, dirty);
} else {
if_block1 = create_if_block_2(ctx2);
if_block1.c();
if_block1.m(div0, null);
}
} else if (if_block1) {
if_block1.d(1);
if_block1 = null;
}
if (
/*activityItem*/
ctx2[0].short_url && /*activityItem*/
ctx2[0].short_url != ""
) {
if (if_block2) {
if_block2.p(ctx2, dirty);
if (dirty & /*activityItem*/
1) {
transition_in(if_block2, 1);
}
} else {
if_block2 = create_if_block_1$2(ctx2);
if_block2.c();
transition_in(if_block2, 1);
if_block2.m(div1, null);
}
} else if (if_block2) {
group_outros();
transition_out(if_block2, 1, 1, () => {
if_block2 = null;
});
check_outros();
}
if (!current || dirty & /*activityItem*/
1) {
toggle_class(
div3,
"cp-cursor-pointer",
/*activityItem*/
ctx2[0].url && /*activityItem*/
ctx2[0].url != ""
);
}
},
i(local) {
if (current) return;
transition_in(if_block2);
current = true;
},
o(local) {
transition_out(if_block2);
current = false;
},
d(detaching) {
if (detaching) {
detach(div3);
}
if (if_block0) if_block0.d();
if (if_block1) if_block1.d();
if (if_block2) if_block2.d();
}
};
}
function create_if_block_3(ctx) {
let p;
let t_value = (
/*activityItem*/
ctx[0].desc + ""
);
let t;
return {
c() {
p = element("p");
t = text(t_value);
attr(p, "class", "cp-my-[8px] cp-text-[12px]");
},
m(target, anchor) {
insert(target, p, anchor);
append(p, t);
},
p(ctx2, dirty) {
if (dirty & /*activityItem*/
1 && t_value !== (t_value = /*activityItem*/
ctx2[0].desc + "")) set_data(t, t_value);
},
d(detaching) {
if (detaching) {
detach(p);
}
}
};
}
function create_if_block_2(ctx) {
let p;
let t_value = (
/*activityItem*/
ctx[0].activity_date + ""
);
let t;
return {
c() {
p = element("p");
t = text(t_value);
attr(p, "class", "cp-text-[12px]");
},
m(target, anchor) {
insert(target, p, anchor);
append(p, t);
},
p(ctx2, dirty) {
if (dirty & /*activityItem*/
1 && t_value !== (t_value = /*activityItem*/
ctx2[0].activity_date + "")) set_data(t, t_value);
},
d(detaching) {
if (detaching) {
detach(p);
}
}
};
}
function create_if_block_1$2(ctx) {
let qrcode;
let current;
qrcode = new QrCode({
props: {
url: (
/*activityItem*/
ctx[0].short_url
),
width: 100,
height: 100,
logo: getPlatformLogo(
/*platform*/
ctx[1]
),
logoWidth: getLogoWidth(
/*platform*/
ctx[1]
)
}
});
return {
c() {
create_component(qrcode.$.fragment);
},
m(target, anchor) {
mount_component(qrcode, target, anchor);
current = true;
},
p(ctx2, dirty) {
const qrcode_changes = {};
if (dirty & /*activityItem*/
1) qrcode_changes.url = /*activityItem*/
ctx2[0].short_url;
if (dirty & /*platform*/
2) qrcode_changes.logo = getPlatformLogo(
/*platform*/
ctx2[1]
);
if (dirty & /*platform*/
2) qrcode_changes.logoWidth = getLogoWidth(
/*platform*/
ctx2[1]
);
qrcode.$set(qrcode_changes);
},
i(local) {
if (current) return;
transition_in(qrcode.$.fragment, local);
current = true;
},
o(local) {
transition_out(qrcode.$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(qrcode, detaching);
}
};
}
function create_fragment$6(ctx) {
let if_block_anchor;
let current;
let if_block = (
/*activityItem*/
ctx[0] && create_if_block$5(ctx)
);
return {
c() {
if (if_block) if_block.c();
if_block_anchor = empty();
},
m(target, anchor) {
if (if_block) if_block.m(target, anchor);
insert(target, if_block_anchor, anchor);
current = true;
},
p(ctx2, [dirty]) {
if (
/*activityItem*/
ctx2[0]
) {
if (if_block) {
if_block.p(ctx2, dirty);
if (dirty & /*activityItem*/
1) {
transition_in(if_block, 1);
}
} else {
if_block = create_if_block$5(ctx2);
if_block.c();
transition_in(if_block, 1);
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
} else if (if_block) {
group_outros();
transition_out(if_block, 1, 1, () => {
if_block = null;
});
check_outros();
}
},
i(local) {
if (current) return;
transition_in(if_block);
current = true;
},
o(local) {
transition_out(if_block);
current = false;
},
d(detaching) {
if (detaching) {
detach(if_block_anchor);
}
if (if_block) if_block.d(detaching);
}
};
}
function instance$5($self, $props, $invalidate) {
let { activityItem = null } = $props;
let { platform: platform2 } = $props;
$self.$set = ($props2) => {
if ("activityItem" in $props2) $invalidate(0, activityItem = $props2.activityItem);
if ("platform" in $props2) $invalidate(1, platform2 = $props2.platform);
};
return [activityItem, platform2];
}
class ActivityImgText extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$5, create_fragment$6, safe_not_equal, { activityItem: 0, platform: 1 });
}
}
function get_each_context$2(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[4] = list[i];
return child_ctx;
}
function create_if_block$4(ctx) {
var _a;
let div1;
let h3;
let t0_value = (
/*activityItem*/
ctx[0].title + ""
);
let t0;
let t1;
let p;
let t2_value = (
/*activityItem*/
(ctx[0].desc ?? "使用说明:点击复制,复制口令后打开对应平台app搜索即可") + ""
);
let t2;
let t3;
let div0;
let each_value = ensure_array_like(
/*activityItem*/
(_a = ctx[0]) == null ? void 0 : _a.list
);
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i));
}
return {
c() {
div1 = element("div");
h3 = element("h3");
t0 = text(t0_value);
t1 = space();
p = element("p");
t2 = text(t2_value);
t3 = space();
div0 = element("div");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
attr(h3, "class", "cp-mb-[12px] cp-text-center");
attr(p, "class", "cp-mb-[20px] cp-text-center cp-text-[12px] cp-text-[#888]");
set_style(div0, "width", "80%");
set_style(div0, "margin", "0 auto");
attr(div1, "class", "cp-flex cp-w-full cp-flex-col cp-justify-center");
},
m(target, anchor) {
insert(target, div1, anchor);
append(div1, h3);
append(h3, t0);
append(div1, t1);
append(div1, p);
append(p, t2);
append(div1, t3);
append(div1, div0);
for (let i = 0; i < each_blocks.length; i += 1) {
if (each_blocks[i]) {
each_blocks[i].m(div0, null);
}
}
},
p(ctx2, dirty) {
var _a2;
if (dirty & /*activityItem*/
1 && t0_value !== (t0_value = /*activityItem*/
ctx2[0].title + "")) set_data(t0, t0_value);
if (dirty & /*activityItem*/
1 && t2_value !== (t2_value = /*activityItem*/
(ctx2[0].desc ?? "使用说明:点击复制,复制口令后打开对应平台app搜索即可") + "")) set_data(t2, t2_value);
if (dirty & /*handleCopy, activityItem, handleGo*/
7) {
each_value = ensure_array_like(
/*activityItem*/
(_a2 = ctx2[0]) == null ? void 0 : _a2.list
);
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context$2(ctx2, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
} else {
each_blocks[i] = create_each_block$2(child_ctx);
each_blocks[i].c();
each_blocks[i].m(div0, null);
}
}
for (; i < each_blocks.length; i += 1) {
each_blocks[i].d(1);
}
each_blocks.length = each_value.length;
}
},
d(detaching) {
if (detaching) {
detach(div1);
}
destroy_each(each_blocks, detaching);
}
};
}
function create_each_block$2(ctx) {
let p;
let span0;
let t0_value = (
/*item*/
ctx[4] + ""
);
let t0;
let t1;
let span1;
let t3;
let mounted2;
let dispose;
return {
c() {
p = element("p");
span0 = element("span");
t0 = text(t0_value);
t1 = space();
span1 = element("span");
span1.textContent = "(复制)";
t3 = space();
toggle_class(
span0,
"cp-text-blue-500",
/*item*/
ctx[4].startsWith("https")
);
toggle_class(
span0,
"cp-cursor-pointer",
/*item*/
ctx[4].startsWith("https")
);
attr(span1, "class", "cp-ml-[-3px] cp-cursor-pointer cp-text-blue-500 hover:cp-underline");
attr(p, "class", "cp-my-[8px]");
},
m(target, anchor) {
insert(target, p, anchor);
append(p, span0);
append(span0, t0);
append(p, t1);
append(p, span1);
append(p, t3);
if (!mounted2) {
dispose = [
listen(span0, "click", function() {
if (is_function(
/*handleGo*/
ctx[1](
/*item*/
ctx[4]
)
)) ctx[1](
/*item*/
ctx[4]
).apply(this, arguments);
}),
listen(span1, "click", function() {
if (is_function(
/*handleCopy*/
ctx[2](
/*item*/
ctx[4]
)
)) ctx[2](
/*item*/
ctx[4]
).apply(this, arguments);
})
];
mounted2 = true;
}
},
p(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*activityItem*/
1 && t0_value !== (t0_value = /*item*/
ctx[4] + "")) set_data(t0, t0_value);
if (dirty & /*activityItem*/
1) {
toggle_class(
span0,
"cp-text-blue-500",
/*item*/
ctx[4].startsWith("https")
);
}
if (dirty & /*activityItem*/
1) {
toggle_class(
span0,
"cp-cursor-pointer",
/*item*/
ctx[4].startsWith("https")
);
}
},
d(detaching) {
if (detaching) {
detach(p);
}
mounted2 = false;
run_all(dispose);
}
};
}
function create_fragment$5(ctx) {
let if_block_anchor;
let if_block = (
/*activityItem*/
ctx[0] && /*activityItem*/
ctx[0].list && /*activityItem*/
ctx[0].list.length > 0 && create_if_block$4(ctx)
);
return {
c() {
if (if_block) if_block.c();
if_block_anchor = empty();
},
m(target, anchor) {
if (if_block) if_block.m(target, anchor);
insert(target, if_block_anchor, anchor);
},
p(ctx2, [dirty]) {
if (
/*activityItem*/
ctx2[0] && /*activityItem*/
ctx2[0].list && /*activityItem*/
ctx2[0].list.length > 0
) {
if (if_block) {
if_block.p(ctx2, dirty);
} else {
if_block = create_if_block$4(ctx2);
if_block.c();
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
} else if (if_block) {
if_block.d(1);
if_block = null;
}
},
i: noop,
o: noop,
d(detaching) {
if (detaching) {
detach(if_block_anchor);
}
if (if_block) if_block.d(detaching);
}
};
}
function instance$4($self, $props, $invalidate) {
let { activityItem = null } = $props;
const platform2 = null;
function handleGo(url) {
return () => {
if (url.startsWith("https")) {
openWindow(url);
}
};
}
function handleCopy(text2) {
return () => {
copy(text2, () => {
window.alert("复制成功,温馨提示:粘贴到微信,手机打开领取更方便哦~");
});
};
}
$self.$set = ($props2) => {
if ("activityItem" in $props2) $invalidate(0, activityItem = $props2.activityItem);
};
return [activityItem, handleGo, handleCopy, platform2];
}
class ActivityText extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$4, create_fragment$5, safe_not_equal, { activityItem: 0, platform: 3 });
}
get platform() {
return this.$.ctx[3];
}
}
function get_each_context$1(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[4] = list[i];
return child_ctx;
}
function create_if_block$3(ctx) {
let div;
let switch_instance;
let t;
let current;
let mounted2;
let dispose;
var switch_value = (
/*getComponent*/
ctx[2](
/*item*/
ctx[4].type
)
);
function switch_props(ctx2, dirty) {
return {
props: {
activityItem: (
/*item*/
ctx2[4]
),
platform: (
/*platform*/
ctx2[1]
)
}
};
}
if (switch_value) {
switch_instance = construct_svelte_component(switch_value, switch_props(ctx));
}
return {
c() {
div = element("div");
if (switch_instance) create_component(switch_instance.$.fragment);
t = space();
attr(div, "class", "cp-flex cp-flex-col cp-items-center cp-justify-center cp-rounded-md cp-p-[8px] cp-shadow");
},
m(target, anchor) {
insert(target, div, anchor);
if (switch_instance) mount_component(switch_instance, div, null);
append(div, t);
current = true;
if (!mounted2) {
dispose = listen(div, "click", function() {
if (is_function(
/*handleGo*/
ctx[3](
/*item*/
ctx[4]
)
)) ctx[3](
/*item*/
ctx[4]
).apply(this, arguments);
});
mounted2 = true;
}
},
p(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*data*/
1 && switch_value !== (switch_value = /*getComponent*/
ctx[2](
/*item*/
ctx[4].type
))) {
if (switch_instance) {
group_outros();
const old_component = switch_instance;
transition_out(old_component.$.fragment, 1, 0, () => {
destroy_component(old_component, 1);
});
check_outros();
}
if (switch_value) {
switch_instance = construct_svelte_component(switch_value, switch_props(ctx));
create_component(switch_instance.$.fragment);
transition_in(switch_instance.$.fragment, 1);
mount_component(switch_instance, div, t);
} else {
switch_instance = null;
}
} else if (switch_value) {
const switch_instance_changes = {};
if (dirty & /*data*/
1) switch_instance_changes.activityItem = /*item*/
ctx[4];
if (dirty & /*platform*/
2) switch_instance_changes.platform = /*platform*/
ctx[1];
switch_instance.$set(switch_instance_changes);
}
},
i(local) {
if (current) return;
if (switch_instance) transition_in(switch_instance.$.fragment, local);
current = true;
},
o(local) {
if (switch_instance) transition_out(switch_instance.$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) {
detach(div);
}
if (switch_instance) destroy_component(switch_instance);
mounted2 = false;
dispose();
}
};
}
function create_each_block$1(ctx) {
let show_if = (
/*getComponent*/
ctx[2](
/*item*/
ctx[4].type
)
);
let if_block_anchor;
let current;
let if_block = show_if && create_if_block$3(ctx);
return {
c() {
if (if_block) if_block.c();
if_block_anchor = empty();
},
m(target, anchor) {
if (if_block) if_block.m(target, anchor);
insert(target, if_block_anchor, anchor);
current = true;
},
p(ctx2, dirty) {
if (dirty & /*data*/
1) show_if = /*getComponent*/
ctx2[2](
/*item*/
ctx2[4].type
);
if (show_if) {
if (if_block) {
if_block.p(ctx2, dirty);
if (dirty & /*data*/
1) {
transition_in(if_block, 1);
}
} else {
if_block = create_if_block$3(ctx2);
if_block.c();
transition_in(if_block, 1);
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
} else if (if_block) {
group_outros();
transition_out(if_block, 1, 1, () => {
if_block = null;
});
check_outros();
}
},
i(local) {
if (current) return;
transition_in(if_block);
current = true;
},
o(local) {
transition_out(if_block);
current = false;
},
d(detaching) {
if (detaching) {
detach(if_block_anchor);
}
if (if_block) if_block.d(detaching);
}
};
}
function create_fragment$4(ctx) {
let div;
let current;
let each_value = ensure_array_like(
/*data*/
ctx[0]
);
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i));
}
const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
each_blocks[i] = null;
});
return {
c() {
div = element("div");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
attr(div, "class", "cp-grid cp-grid-cols-3 cp-gap-5 cp-p-4");
},
m(target, anchor) {
insert(target, div, anchor);
for (let i = 0; i < each_blocks.length; i += 1) {
if (each_blocks[i]) {
each_blocks[i].m(div, null);
}
}
current = true;
},
p(ctx2, [dirty]) {
if (dirty & /*handleGo, data, getComponent, platform*/
15) {
each_value = ensure_array_like(
/*data*/
ctx2[0]
);
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context$1(ctx2, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
transition_in(each_blocks[i], 1);
} else {
each_blocks[i] = create_each_block$1(child_ctx);
each_blocks[i].c();
transition_in(each_blocks[i], 1);
each_blocks[i].m(div, null);
}
}
group_outros();
for (i = each_value.length; i < each_blocks.length; i += 1) {
out(i);
}
check_outros();
}
},
i(local) {
if (current) return;
for (let i = 0; i < each_value.length; i += 1) {
transition_in(each_blocks[i]);
}
current = true;
},
o(local) {
each_blocks = each_blocks.filter(Boolean);
for (let i = 0; i < each_blocks.length; i += 1) {
transition_out(each_blocks[i]);
}
current = false;
},
d(detaching) {
if (detaching) {
detach(div);
}
destroy_each(each_blocks, detaching);
}
};
}
function instance$3($self, $props, $invalidate) {
let { data = [] } = $props;
let { platform: platform2 } = $props;
function getComponent(type) {
switch (type) {
case ActivityType.IMG:
return ActivityImg;
case ActivityType.IMAGETEXT:
return ActivityImgText;
case ActivityType.TEXT:
return ActivityText;
default:
return null;
}
}
function handleGo(item) {
return () => {
if (!item || !item.url || item.url === "") {
return;
}
openWindow(item.url);
};
}
$self.$set = ($props2) => {
if ("data" in $props2) $invalidate(0, data = $props2.data);
if ("platform" in $props2) $invalidate(1, platform2 = $props2.platform);
};
return [data, platform2, getComponent, handleGo];
}
class TabContainer extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$3, create_fragment$4, safe_not_equal, { data: 0, platform: 1 });
}
}
function get_each_context(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[10] = list[i].data;
child_ctx[11] = list[i].platform;
child_ctx[13] = i;
return child_ctx;
}
function get_each_context_1(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[14] = list[i].name;
child_ctx[16] = i;
return child_ctx;
}
function create_if_block$2(ctx) {
let div;
let span;
let t0_value = (
/*activityList*/
ctx[1].title + ""
);
let t0;
let t1_value = (
/*activityList*/
ctx[1].hot ? "🔥" : ""
);
let t1;
let t2;
let modal;
let current;
let mounted2;
let dispose;
modal = new Modal({
props: {
show: (
/*showModal*/
ctx[0]
),
title: (
/*activityList*/
ctx[1].title
),
$slots: { default: [create_default_slot] },
$scope: { ctx }
}
});
modal.$on(
"close",
/*closeModal*/
ctx[4]
);
return {
c() {
div = element("div");
span = element("span");
t0 = text(t0_value);
t1 = text(t1_value);
t2 = space();
create_component(modal.$.fragment);
attr(span, "class", "cp-cursor-pointer cp-text-red-500 cp-underline");
},
m(target, anchor) {
insert(target, div, anchor);
append(div, span);
append(span, t0);
append(span, t1);
append(div, t2);
mount_component(modal, div, null);
current = true;
if (!mounted2) {
dispose = listen(
span,
"click",
/*openModal*/
ctx[3]
);
mounted2 = true;
}
},
p(ctx2, dirty) {
if ((!current || dirty & /*activityList*/
2) && t0_value !== (t0_value = /*activityList*/
ctx2[1].title + "")) set_data(t0, t0_value);
if ((!current || dirty & /*activityList*/
2) && t1_value !== (t1_value = /*activityList*/
ctx2[1].hot ? "🔥" : "")) set_data(t1, t1_value);
const modal_changes = {};
if (dirty & /*showModal*/
1) modal_changes.show = /*showModal*/
ctx2[0];
if (dirty & /*activityList*/
2) modal_changes.title = /*activityList*/
ctx2[1].title;
if (dirty & /*$scope, activityList, $activeTab*/
131078) {
modal_changes.$scope = { dirty, ctx: ctx2 };
}
modal.$set(modal_changes);
},
i(local) {
if (current) return;
transition_in(modal.$.fragment, local);
current = true;
},
o(local) {
transition_out(modal.$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) {
detach(div);
}
destroy_component(modal);
mounted2 = false;
dispose();
}
};
}
function create_each_block_1(ctx) {
let button;
let t0_value = (
/*name*/
ctx[14] + ""
);
let t0;
let t1;
let mounted2;
let dispose;
function click_handler() {
return (
/*click_handler*/
ctx[7](
/*index*/
ctx[16]
)
);
}
return {
c() {
button = element("button");
t0 = text(t0_value);
t1 = space();
attr(button, "class", "cp-cursor-pointer cp-rounded cp-bg-blue-500 cp-px-4 cp-py-2 cp-text-sm cp-font-semibold cp-text-white cp-shadow-md cp-transition hover:cp-bg-blue-400 hover:cp-text-white");
toggle_class(
button,
"cp-bg-blue-500",
/*$activeTab*/
ctx[2] === /*index*/
ctx[16]
);
toggle_class(
button,
"cp-text-white",
/*$activeTab*/
ctx[2] === /*index*/
ctx[16]
);
},
m(target, anchor) {
insert(target, button, anchor);
append(button, t0);
append(button, t1);
if (!mounted2) {
dispose = listen(button, "click", click_handler);
mounted2 = true;
}
},
p(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*activityList*/
2 && t0_value !== (t0_value = /*name*/
ctx[14] + "")) set_data(t0, t0_value);
if (dirty & /*$activeTab*/
4) {
toggle_class(
button,
"cp-bg-blue-500",
/*$activeTab*/
ctx[2] === /*index*/
ctx[16]
);
}
if (dirty & /*$activeTab*/
4) {
toggle_class(
button,
"cp-text-white",
/*$activeTab*/
ctx[2] === /*index*/
ctx[16]
);
}
},
d(detaching) {
if (detaching) {
detach(button);
}
mounted2 = false;
dispose();
}
};
}
function create_if_block_1$1(ctx) {
let tabcontainer;
let current;
tabcontainer = new TabContainer({
props: {
data: (
/*data*/
ctx[10]
),
platform: (
/*platform*/
ctx[11]
)
}
});
return {
c() {
create_component(tabcontainer.$.fragment);
},
m(target, anchor) {
mount_component(tabcontainer, target, anchor);
current = true;
},
p(ctx2, dirty) {
const tabcontainer_changes = {};
if (dirty & /*activityList*/
2) tabcontainer_changes.data = /*data*/
ctx2[10];
if (dirty & /*activityList*/
2) tabcontainer_changes.platform = /*platform*/
ctx2[11];
tabcontainer.$set(tabcontainer_changes);
},
i(local) {
if (current) return;
transition_in(tabcontainer.$.fragment, local);
current = true;
},
o(local) {
transition_out(tabcontainer.$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(tabcontainer, detaching);
}
};
}
function create_each_block(ctx) {
let if_block_anchor;
let current;
let if_block = (
/*$activeTab*/
ctx[2] === /*tabIndex*/
ctx[13] && create_if_block_1$1(ctx)
);
return {
c() {
if (if_block) if_block.c();
if_block_anchor = empty();
},
m(target, anchor) {
if (if_block) if_block.m(target, anchor);
insert(target, if_block_anchor, anchor);
current = true;
},
p(ctx2, dirty) {
if (
/*$activeTab*/
ctx2[2] === /*tabIndex*/
ctx2[13]
) {
if (if_block) {
if_block.p(ctx2, dirty);
if (dirty & /*$activeTab*/
4) {
transition_in(if_block, 1);
}
} else {
if_block = create_if_block_1$1(ctx2);
if_block.c();
transition_in(if_block, 1);
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
} else if (if_block) {
group_outros();
transition_out(if_block, 1, 1, () => {
if_block = null;
});
check_outros();
}
},
i(local) {
if (current) return;
transition_in(if_block);
current = true;
},
o(local) {
transition_out(if_block);
current = false;
},
d(detaching) {
if (detaching) {
detach(if_block_anchor);
}
if (if_block) if_block.d(detaching);
}
};
}
function create_default_slot(ctx) {
let div2;
let div0;
let t;
let div1;
let current;
let each_value_1 = ensure_array_like(
/*activityList*/
ctx[1].tabs
);
let each_blocks_1 = [];
for (let i = 0; i < each_value_1.length; i += 1) {
each_blocks_1[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i));
}
let each_value = ensure_array_like(
/*activityList*/
ctx[1].tabs
);
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
}
const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
each_blocks[i] = null;
});
return {
c() {
div2 = element("div");
div0 = element("div");
for (let i = 0; i < each_blocks_1.length; i += 1) {
each_blocks_1[i].c();
}
t = space();
div1 = element("div");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
attr(div0, "class", "cp-mb-4 cp-flex cp-gap-4");
attr(div1, "class", "cp-overflow-auto");
set_style(div1, "max-height", "450px");
attr(div2, "class", "cp-flex cp-flex-col cp-items-center cp-gap-4");
},
m(target, anchor) {
insert(target, div2, anchor);
append(div2, div0);
for (let i = 0; i < each_blocks_1.length; i += 1) {
if (each_blocks_1[i]) {
each_blocks_1[i].m(div0, null);
}
}
append(div2, t);
append(div2, div1);
for (let i = 0; i < each_blocks.length; i += 1) {
if (each_blocks[i]) {
each_blocks[i].m(div1, null);
}
}
current = true;
},
p(ctx2, dirty) {
if (dirty & /*$activeTab, switchTab, activityList*/
70) {
each_value_1 = ensure_array_like(
/*activityList*/
ctx2[1].tabs
);
let i;
for (i = 0; i < each_value_1.length; i += 1) {
const child_ctx = get_each_context_1(ctx2, each_value_1, i);
if (each_blocks_1[i]) {
each_blocks_1[i].p(child_ctx, dirty);
} else {
each_blocks_1[i] = create_each_block_1(child_ctx);
each_blocks_1[i].c();
each_blocks_1[i].m(div0, null);
}
}
for (; i < each_blocks_1.length; i += 1) {
each_blocks_1[i].d(1);
}
each_blocks_1.length = each_value_1.length;
}
if (dirty & /*activityList, $activeTab*/
6) {
each_value = ensure_array_like(
/*activityList*/
ctx2[1].tabs
);
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context(ctx2, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
transition_in(each_blocks[i], 1);
} else {
each_blocks[i] = create_each_block(child_ctx);
each_blocks[i].c();
transition_in(each_blocks[i], 1);
each_blocks[i].m(div1, null);
}
}
group_outros();
for (i = each_value.length; i < each_blocks.length; i += 1) {
out(i);
}
check_outros();
}
},
i(local) {
if (current) return;
for (let i = 0; i < each_value.length; i += 1) {
transition_in(each_blocks[i]);
}
current = true;
},
o(local) {
each_blocks = each_blocks.filter(Boolean);
for (let i = 0; i < each_blocks.length; i += 1) {
transition_out(each_blocks[i]);
}
current = false;
},
d(detaching) {
if (detaching) {
detach(div2);
}
destroy_each(each_blocks_1, detaching);
destroy_each(each_blocks, detaching);
}
};
}
function create_fragment$3(ctx) {
var _a;
let if_block_anchor;
let current;
let if_block = (
/*activityList*/
ctx[1] && /*activityList*/
((_a = ctx[1]) == null ? void 0 : _a.show) && create_if_block$2(ctx)
);
return {
c() {
if (if_block) if_block.c();
if_block_anchor = empty();
},
m(target, anchor) {
if (if_block) if_block.m(target, anchor);
insert(target, if_block_anchor, anchor);
current = true;
},
p(ctx2, [dirty]) {
var _a2;
if (
/*activityList*/
ctx2[1] && /*activityList*/
((_a2 = ctx2[1]) == null ? void 0 : _a2.show)
) {
if (if_block) {
if_block.p(ctx2, dirty);
if (dirty & /*activityList*/
2) {
transition_in(if_block, 1);
}
} else {
if_block = create_if_block$2(ctx2);
if_block.c();
transition_in(if_block, 1);
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
} else if (if_block) {
group_outros();
transition_out(if_block, 1, 1, () => {
if_block = null;
});
check_outros();
}
},
i(local) {
if (current) return;
transition_in(if_block);
current = true;
},
o(local) {
transition_out(if_block);
current = false;
},
d(detaching) {
if (detaching) {
detach(if_block_anchor);
}
if (if_block) if_block.d(detaching);
}
};
}
function instance$2($self, $props, $invalidate) {
let $platform;
let $activeTab;
component_subscribe($self, platform, ($value) => $invalidate(8, $platform = $value));
let showModal = false;
let activityList = null;
function openModal() {
$invalidate(0, showModal = true);
}
function closeModal() {
$invalidate(0, showModal = false);
}
let activeTab = writable(0);
component_subscribe($self, activeTab, (value) => $invalidate(2, $activeTab = value));
function switchTab(index) {
activeTab.set(index);
}
async function fetchActivity() {
const json = await get(API.getActivitySets, {});
const { data } = json;
if (data) {
$invalidate(1, activityList = data);
checkIsOpenedActivity(data, $platform);
}
}
onMount(() => {
fetchActivity();
});
const click_handler = (index) => switchTab(index);
return [
showModal,
activityList,
$activeTab,
openModal,
closeModal,
activeTab,
switchTab,
click_handler
];
}
let Container$1 = class Container extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$2, create_fragment$3, safe_not_equal, {});
}
};
function create_else_block(ctx) {
let span;
return {
c() {
span = element("span");
span.textContent = "暂无优惠券!";
attr(span, "class", "cp-text-red-500");
},
m(target, anchor) {
insert(target, span, anchor);
},
p: noop,
d(detaching) {
if (detaching) {
detach(span);
}
}
};
}
function create_if_block$1(ctx) {
let if_block_anchor;
let if_block = (
/*$platform*/
ctx[1] == Platform.Taobao && create_if_block_1()
);
return {
c() {
if (if_block) if_block.c();
if_block_anchor = empty();
},
m(target, anchor) {
if (if_block) if_block.m(target, anchor);
insert(target, if_block_anchor, anchor);
},
p(ctx2, dirty) {
if (
/*$platform*/
ctx2[1] == Platform.Taobao
) {
if (if_block) ;
else {
if_block = create_if_block_1();
if_block.c();
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
} else if (if_block) {
if_block.d(1);
if_block = null;
}
},
d(detaching) {
if (detaching) {
detach(if_block_anchor);
}
if (if_block) if_block.d(detaching);
}
};
}
function create_if_block_1(ctx) {
let span;
return {
c() {
span = element("span");
span.textContent = "已领取优惠券!";
attr(span, "class", "cp-text-red-500");
},
m(target, anchor) {
insert(target, span, anchor);
},
d(detaching) {
if (detaching) {
detach(span);
}
}
};
}
function create_fragment$2(ctx) {
let div;
let t;
let activitycontainer;
let current;
function select_block_type(ctx2, dirty) {
if (
/*show*/
ctx2[0]
) return create_if_block$1;
return create_else_block;
}
let current_block_type = select_block_type(ctx);
let if_block = current_block_type(ctx);
activitycontainer = new Container$1({});
return {
c() {
div = element("div");
if_block.c();
t = space();
create_component(activitycontainer.$.fragment);
attr(div, "class", "cp-flex cp-justify-center cp-gap-[20px] cp-text-center");
},
m(target, anchor) {
insert(target, div, anchor);
if_block.m(div, null);
append(div, t);
mount_component(activitycontainer, div, null);
current = true;
},
p(ctx2, [dirty]) {
if (current_block_type === (current_block_type = select_block_type(ctx2)) && if_block) {
if_block.p(ctx2, dirty);
} else {
if_block.d(1);
if_block = current_block_type(ctx2);
if (if_block) {
if_block.c();
if_block.m(div, t);
}
}
},
i(local) {
if (current) return;
transition_in(activitycontainer.$.fragment, local);
current = true;
},
o(local) {
transition_out(activitycontainer.$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) {
detach(div);
}
if_block.d();
destroy_component(activitycontainer);
}
};
}
function instance$1($self, $props, $invalidate) {
let $platform;
component_subscribe($self, platform, ($value) => $invalidate(1, $platform = $value));
let { show = false } = $props;
$self.$set = ($props2) => {
if ("show" in $props2) $invalidate(0, show = $props2.show);
};
return [show, $platform];
}
class Desc extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$1, create_fragment$2, safe_not_equal, { show: 0 });
}
}
function create_if_block(ctx) {
var _a, _b, _c, _d, _e;
let div;
let t;
let coupon_1;
let current;
coupon_1 = new Coupon({
props: {
amount: (
/*$coupon*/
(_a = ctx[0]) == null ? void 0 : _a.amount
),
condition: (
/*$coupon*/
(_b = ctx[0]) == null ? void 0 : _b.condition
),
date: (
/*$coupon*/
(_c = ctx[0]) == null ? void 0 : _c.date
),
url: (
/*$coupon*/
(_d = ctx[0]) == null ? void 0 : _d.short_url
),
left: (
/*$coupon*/
(_e = ctx[0]) == null ? void 0 : _e.left
)
}
});
return {
c() {
div = element("div");
t = space();
create_component(coupon_1.$.fragment);
attr(div, "class", "cp-mb-[12px]");
},
m(target, anchor) {
insert(target, div, anchor);
insert(target, t, anchor);
mount_component(coupon_1, target, anchor);
current = true;
},
p(ctx2, dirty) {
var _a2, _b2, _c2, _d2, _e2;
const coupon_1_changes = {};
if (dirty & /*$coupon*/
1) coupon_1_changes.amount = /*$coupon*/
(_a2 = ctx2[0]) == null ? void 0 : _a2.amount;
if (dirty & /*$coupon*/
1) coupon_1_changes.condition = /*$coupon*/
(_b2 = ctx2[0]) == null ? void 0 : _b2.condition;
if (dirty & /*$coupon*/
1) coupon_1_changes.date = /*$coupon*/
(_c2 = ctx2[0]) == null ? void 0 : _c2.date;
if (dirty & /*$coupon*/
1) coupon_1_changes.url = /*$coupon*/
(_d2 = ctx2[0]) == null ? void 0 : _d2.short_url;
if (dirty & /*$coupon*/
1) coupon_1_changes.left = /*$coupon*/
(_e2 = ctx2[0]) == null ? void 0 : _e2.left;
coupon_1.$set(coupon_1_changes);
},
i(local) {
if (current) return;
transition_in(coupon_1.$.fragment, local);
current = true;
},
o(local) {
transition_out(coupon_1.$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) {
detach(div);
detach(t);
}
destroy_component(coupon_1, detaching);
}
};
}
function create_fragment$1(ctx) {
var _a, _b, _c, _d;
let div;
let desc;
let t;
let current;
desc = new Desc({
props: {
show: (
/*$coupon*/
((_a = ctx[0]) == null ? void 0 : _a.amount) != null && /*$coupon*/
((_b = ctx[0]) == null ? void 0 : _b.amount) > 0
)
}
});
let if_block = (
/*$coupon*/
((_c = ctx[0]) == null ? void 0 : _c.amount) != null && /*$coupon*/
((_d = ctx[0]) == null ? void 0 : _d.amount) > 0 && create_if_block(ctx)
);
return {
c() {
div = element("div");
create_component(desc.$.fragment);
t = space();
if (if_block) if_block.c();
attr(div, "class", "cp-mb-[12px] cp-rounded-md cp-bg-slate-100 cp-p-[12px]");
},
m(target, anchor) {
insert(target, div, anchor);
mount_component(desc, div, null);
append(div, t);
if (if_block) if_block.m(div, null);
current = true;
},
p(ctx2, [dirty]) {
var _a2, _b2, _c2, _d2;
const desc_changes = {};
if (dirty & /*$coupon*/
1) desc_changes.show = /*$coupon*/
((_a2 = ctx2[0]) == null ? void 0 : _a2.amount) != null && /*$coupon*/
((_b2 = ctx2[0]) == null ? void 0 : _b2.amount) > 0;
desc.$set(desc_changes);
if (
/*$coupon*/
((_c2 = ctx2[0]) == null ? void 0 : _c2.amount) != null && /*$coupon*/
((_d2 = ctx2[0]) == null ? void 0 : _d2.amount) > 0
) {
if (if_block) {
if_block.p(ctx2, dirty);
if (dirty & /*$coupon*/
1) {
transition_in(if_block, 1);
}
} else {
if_block = create_if_block(ctx2);
if_block.c();
transition_in(if_block, 1);
if_block.m(div, null);
}
} else if (if_block) {
group_outros();
transition_out(if_block, 1, 1, () => {
if_block = null;
});
check_outros();
}
},
i(local) {
if (current) return;
transition_in(desc.$.fragment, local);
transition_in(if_block);
current = true;
},
o(local) {
transition_out(desc.$.fragment, local);
transition_out(if_block);
current = false;
},
d(detaching) {
if (detaching) {
detach(div);
}
destroy_component(desc);
if (if_block) if_block.d();
}
};
}
function instance($self, $props, $invalidate) {
let $coupon;
component_subscribe($self, coupon, ($value) => $invalidate(0, $coupon = $value));
return [$coupon];
}
class Container extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance, create_fragment$1, safe_not_equal, {});
}
}
function create_fragment(ctx) {
let main;
let container;
let t;
let show_if = !isProduction();
let current;
container = new Container({});
let if_block = show_if;
return {
c() {
main = element("main");
create_component(container.$.fragment);
t = space();
},
m(target, anchor) {
insert(target, main, anchor);
mount_component(container, main, null);
append(main, t);
current = true;
},
p: noop,
i(local) {
if (current) return;
transition_in(container.$.fragment, local);
transition_in(if_block);
current = true;
},
o(local) {
transition_out(container.$.fragment, local);
transition_out(if_block);
current = false;
},
d(detaching) {
if (detaching) {
detach(main);
}
destroy_component(container);
}
};
}
class App extends SvelteComponent {
constructor(options) {
super();
init(this, options, null, create_fragment, safe_not_equal, {});
}
}
async function waitForElement(selector) {
return new Promise((resolve) => {
const existingElement = document.querySelector(selector);
if (existingElement) {
return resolve(existingElement);
}
const observer = new MutationObserver(() => {
const targetElement = document.querySelector(selector);
if (targetElement) {
resolve(targetElement);
observer.disconnect();
}
});
observer.observe(document.body, {
childList: true,
subtree: true
});
});
}
async function waitForDOMReady() {
return new Promise((resolve) => {
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", resolve);
} else {
resolve(0);
}
});
}
const HOST = {
JD: {
HOME: "www.jd.com",
GLOBAL: "global.jd.com",
HK_HOME: "www.jd.hk",
YIYAO_HOME: "www.yiyaojd.com",
BOOK_HOME: "book.jd.com",
E_BOOK_HOME: "e.jd.com",
MRO_HOME: "mro.jd.com",
// 五金
IC_HOME: "ic.jd.com",
// 元器件
H5_HOME: "m.jd.com",
// 手机端
SEARCH: "search.jd.com",
LIST: "list.jd.com",
// https://list.jd.com/list.html?cat=6728,12402
DETAIL: "https://item.jd.com",
I_DETAIL: "https://i-item.jd.com",
IC_DETAIL: "https://ic-item.jd.com",
YIYAO_DETAIL: "https://item.yiyaojd.com",
GLOBAL_DETAIL: "https://npcitem.jd.hk",
HEALTH_DETAIL: "https://item.jkcsjd.com",
E_BOOK_DETAIL: "https://e.jd.com",
H5_DETAIL: "https://item.m.jd.com/product"
},
TMALL: {
HOME: "www.tmall.com",
TB_HOME: "www.taobao.com",
DETAIL: "detail.tmall.com/item",
TB_DETAIL: "item.taobao.com/item",
CHAOSHI_DETAIL: "chaoshi.detail.tmall.com/item",
GLOBAL_DETAIL: "detail.tmall.hk/item",
GLOBAL_HK_DETAIL: "detail.tmall.hk/hk/item"
},
VIP: {
DETAIL: "detail.vip.com/detail",
GLOABL_DETAIL: "www.vipglobal.hk/detail",
H5_DETAIL: "m.vip.com/product"
}
};
function isGoodsDetailPage(url) {
if (!url) return false;
if (url.includes(HOST.JD.DETAIL) || url.includes(HOST.JD.YIYAO_DETAIL) || url.includes(HOST.JD.GLOBAL_DETAIL) || url.includes(HOST.JD.IC_DETAIL) || url.includes(HOST.JD.I_DETAIL) || url.includes(HOST.JD.HEALTH_DETAIL))
return true;
return false;
}
const key$1 = "gm_transform_goods";
function setTransformGoods(data) {
if (data && data.shortUrl) {
setGMValue(key$1, data);
}
}
async function getTransformGoods() {
const data = await getGMValue(key$1);
return data ?? null;
}
const key = "gm_goods_list";
function getJdId(url) {
try {
if (url == "") {
return null;
}
const parsedUrl = new URL(url);
for (const [key2, value] of parsedUrl.searchParams.entries()) {
if (value.includes("http")) {
return getJdId(value);
}
}
const pathMatch = parsedUrl.pathname.match(/\/(\d+)\.html/);
if (pathMatch) {
return pathMatch[1];
}
for (const value of parsedUrl.searchParams.values()) {
const embeddedMatch = value.match(/\/(\d+)\.html/);
if (embeddedMatch) {
return embeddedMatch[1];
}
}
return null;
} catch (e) {
return null;
}
}
function getId(url) {
const platform2 = getPlatform();
switch (platform2) {
case Platform.JD:
return "jd-" + getJdId(url);
}
}
async function setGoodsList(url, data) {
let goodsList = await getGoodsList();
if (!goodsList) {
goodsList = {};
}
const id = getId(url);
if (!id) {
return;
}
if (goodsList[id]) return;
goodsList[id] = {
...data,
originalUrl: url
};
await setGMValue(key, goodsList);
}
async function getGoodsList() {
const goodsList = await getGMValue(
key,
{}
);
return goodsList;
}
async function getGoodsByUrl(url) {
const goodsList = await getGoodsList();
const id = getId(url);
if (!id) return null;
return (goodsList == null ? void 0 : goodsList[id]) ?? null;
}
async function clearGoodsList() {
const goodsList = await getGoodsList();
if (goodsList) {
const keys = Object.keys(goodsList);
if (keys.length > 5e3) {
await deleteGMValue(key);
}
}
}
function initJDGoodsClick(event) {
const host = location.host;
switch (host) {
case "www.jd.com":
initHomeGoodsClick(event);
break;
case "item.jd.com":
case "npcitem.jd.hk":
case "item.yiyaojd.com":
case "i-item.jd.com":
case "ic-item.jd.com":
initOpenComment(event);
break;
case "mall.jd.com":
case "search.jd.com":
initSearchGoodsClick(event);
break;
}
}
async function initHomeGoodsClick(event) {
const target = event.target;
const link = target == null ? void 0 : target.closest("a.more2_lk");
if (link) {
event.preventDefault();
let url = link.getAttribute("href");
target.style.cursor = "wait";
if (!url.includes("https")) {
url = "https:" + url;
}
const cached = await getGoodsByUrl(url);
setTransformGoods(cached);
if ((cached == null ? void 0 : cached.url) && (cached == null ? void 0 : cached.url) != "") {
await waitForTs((cached == null ? void 0 : cached.ts) ?? Date.now() - 2e4);
openWindow(cached == null ? void 0 : cached.url);
} else {
openWindow(url);
}
}
target.style.cursor = "pointer";
}
async function initSearchGoodsClick(event) {
const target = event.target;
const link = target == null ? void 0 : target.closest("a");
if (link) {
let url = link.getAttribute("href");
if (!url.includes("https")) {
url = "https:" + url;
}
if (!isGoodsDetailPage(url)) {
return;
}
event.preventDefault();
target.style.cursor = "wait";
const cached = await getGoodsByUrl(url);
setTransformGoods(cached);
if ((cached == null ? void 0 : cached.url) && (cached == null ? void 0 : cached.url) != "") {
await waitForTs((cached == null ? void 0 : cached.ts) ?? Date.now() - 2e4);
openWindow(cached == null ? void 0 : cached.url);
} else {
openWindow(url);
}
}
target.style.cursor = "pointer";
}
async function initOpenComment(event) {
const target = event.target;
const el = target == null ? void 0 : target.closest("#comment-count");
if (el) {
const node = document.querySelector(
"[data-anchor='#comment']"
);
node == null ? void 0 : node.scrollIntoView({
behavior: "smooth",
block: "start"
});
await waitForElement("#comm-curr-sku");
await wait(300);
const currentComment = document.querySelector("#comm-curr-sku");
if (!(currentComment == null ? void 0 : currentComment.checked)) {
currentComment == null ? void 0 : currentComment.click();
}
}
}
function initZKBuyClick(event) {
const target = event.target;
let url = target.getAttribute("href");
if (url) {
event.preventDefault();
openWindow(url);
}
}
function initEvent(platform2) {
document.body.addEventListener("click", function(event) {
if (platform2 == Platform.JD) {
initJDGoodsClick(event);
} else if (platform2 == Platform.ZK) {
initZKBuyClick(event);
}
});
}
async function initQrCode(data) {
if (data) {
const url = data.qrUrl;
const [container, el] = await Promise.all([
waitForElement("#toolbar-qrcode"),
waitForElement("#toolbar-qrcode img")
]);
if (el && container && url) {
const originalSrc = el.src;
container.style.display = "none";
const index = originalSrc.indexOf("html") + 4;
el.src = "//qrimg.jd.com/" + encodeURIComponent(url) + originalSrc.slice(index);
await wait(2e3);
container.style.display = "block";
}
}
}
async function initJDGoodsDetail() {
const url = getOriginalUrl(Platform.JD);
let data = await getGoodsByUrl(url);
if (!data) {
data = await getTransformGoods();
}
const id1 = getJdId(url);
const id2 = getJdId((data == null ? void 0 : data.originalUrl) ?? "");
if (id2 && id1 == id2) {
initQrCode(data);
}
}
async function initGoodsDetail() {
const href = location.href;
if (href.includes(HOST.JD.DETAIL) || href.includes(HOST.JD.I_DETAIL) || href.includes(HOST.JD.YIYAO_DETAIL) || href.includes(HOST.JD.GLOBAL_DETAIL) || href.includes(HOST.JD.IC_DETAIL) || href.includes(HOST.JD.HEALTH_DETAIL)) {
await initJDGoodsDetail();
}
}
class TaskQueue {
// 任务队列
constructor(maxConcurrency) {
__publicField(this, "maxConcurrency");
// 最大并发数
__publicField(this, "activeCount", 0);
// 当前正在执行的任务数
__publicField(this, "taskQueue", []);
this.maxConcurrency = maxConcurrency;
}
// 添加任务
add(task) {
this.taskQueue.push(task);
this.runTask();
}
// 运行任务
async runTask() {
if (this.activeCount >= this.maxConcurrency || this.taskQueue.length === 0) {
return;
}
this.activeCount++;
const task = this.taskQueue.shift();
if (task) {
try {
await task();
} catch (error) {
console.error("Task execution error:", error);
} finally {
this.activeCount--;
this.runTask();
}
}
}
}
async function initJDPrefetch() {
const host = location.host;
const homeSelector = ".more2_list .more2_item_good a";
const searchSelector = "#J_goodsList .p-img a";
const advanceSearchSelector = ".jSubObject .jPic a";
switch (host) {
case "www.jd.com":
await waitForElement(homeSelector);
initPrefetch$1(homeSelector);
break;
case "search.jd.com":
await waitForElement(searchSelector);
initPrefetch$1(searchSelector);
break;
case "mall.jd.com":
await waitForElement(advanceSearchSelector);
initPrefetch$1(advanceSearchSelector);
break;
}
}
function initPrefetch$1(selector) {
const itemsSet = /* @__PURE__ */ new Set();
const taskQueue = new TaskQueue(20);
async function processLinks() {
const items = document.querySelectorAll(selector);
items.forEach((item) => {
const task = async () => {
let link = item.getAttribute("href") ?? "";
if (!link.includes("https")) {
link = "https:" + link;
}
const cached = await getGoodsByUrl(link);
if (cached) {
return;
}
if (!itemsSet.has(link)) {
itemsSet.add(link);
const json = await fetchTransformLink({
platform: Platform.JD,
url: link,
dl: false
});
if (json && json.data) {
setGoodsList(link, json.data);
}
}
};
taskQueue.add(task);
});
}
processLinks();
let throttleTimeout = null;
window.addEventListener("scroll", () => {
if (throttleTimeout) return;
throttleTimeout = setTimeout(() => {
throttleTimeout = null;
processLinks();
}, 500);
});
}
async function initPrefetch() {
await wait(1500);
initJDPrefetch();
}
async function initTMallRedirect() {
const flag = checkCanRedirect$1();
if (flag) {
const json = await fetchTransformLink({
platform: Platform.Taobao
});
if (json && json.data && json.data.url) {
if (!window.GM_openInTab) {
window.location.replace(json.data.url);
} else {
await openWindow(json.data.url);
window.close();
}
}
}
}
function checkCanRedirect$1() {
const href = window.location.href;
return href.indexOf("mm_117425171_2324550020_111391250310") == -1 && href.indexOf("mm_117425171_21428696_71990812") == -1 && href.indexOf("mm_117425171_33696257_277458675") == -1;
}
async function initVIPRedirect() {
const flag = checkCanRedirect();
if (flag) {
const json = await fetchTransformLink({
platform: Platform.Vip
});
if (json && json.data && json.data.url) {
if (!window.GM_openInTab) {
window.location.replace(json.data.url);
} else {
await openWindow(json.data.url);
window.close();
}
}
}
}
function checkCanRedirect() {
const href = window.location.href;
return href.indexOf("a1bea5af456e316c7745ed3ca2a379e6") == -1 && href.indexOf("f938d6787b301f8cd8d258aa477437a3") == -1 && href.indexOf("41c6df95c56c4de075bf27fffb06af9f") == -1 && (window.location.pathname.indexOf("detail-") > -1 || window.location.hostname.indexOf("m.vip.com") > -1);
}
async function initRedirect() {
const href = location.href;
if (href.includes(HOST.JD.DETAIL) || href.includes(HOST.JD.I_DETAIL) || href.includes(HOST.JD.YIYAO_DETAIL) || href.includes(HOST.JD.GLOBAL_DETAIL) || href.includes(HOST.JD.IC_DETAIL) || href.includes(HOST.JD.HEALTH_DETAIL)) ;
else if (href.includes(HOST.TMALL.DETAIL) || href.includes(HOST.TMALL.TB_DETAIL) || href.includes(HOST.TMALL.CHAOSHI_DETAIL) || href.includes(HOST.TMALL.GLOBAL_DETAIL) || href.includes(HOST.TMALL.GLOBAL_HK_DETAIL)) {
initTMallRedirect();
} else if (href.includes(HOST.VIP.DETAIL) || href.includes(HOST.VIP.GLOABL_DETAIL) || href.includes(HOST.VIP.H5_DETAIL)) {
initVIPRedirect();
}
}
function clear() {
clearLocalStorage("73haz73_unique_url");
clearLocalStorage("tampermonkey_plugin_je82j45");
clearSessionStorage("tampermonkey_plugin_je82j45");
clearGoodsList();
deleteGMValue(GM_KEY.JD_GOODS_LIST);
deleteGMValue(GM_KEY.JD_GOODS_LIST2);
deleteGMValue(GM_KEY.JD_GOODS_LIST3);
deleteGMValue(GM_KEY.JD_HAS_COUPON_URL);
}
async function createTarget(target) {
const div = document.createElement("div");
return new Promise((resolve) => {
let timer = 0;
function addSibling() {
let t = null;
for (const item of target) {
t = document.querySelector(item);
if (t) {
break;
}
}
if (t) {
t.after(div);
clearTimeout(timer);
resolve(div);
} else {
timer = setTimeout(addSibling, 100);
}
}
timer = setTimeout(addSibling, 100);
});
}
function daysToMs(days) {
return days * 24 * 60 * 60 * 1e3;
}
async function checkAndUpdate() {
const now = Date.now();
const t = await getGMValue(GM_KEY.VERSION_CHECK_TIME, "0") ?? "0";
const isForce = (await getGMValue(GM_KEY.VERSION_IS_FORCE, "0") ?? "0") == "1";
const lastCheckTime = parseInt(t, 10);
if (now - lastCheckTime < daysToMs(0.02) && !isForce) return;
try {
const res = await get(API.checkVersion);
await setGMValue(GM_KEY.VERSION_CHECK_TIME, now + "");
if (!res || !res.data) {
await setGMValue(GM_KEY.VERSION_IS_FORCE, "0");
return;
}
const { force, url } = res.data;
if (force) {
await setGMValue(GM_KEY.VERSION_IS_FORCE, "1");
openWindow(url);
} else {
await setGMValue(GM_KEY.VERSION_IS_FORCE, "0");
const t2 = await getGMValue(GM_KEY.VERSION_UPDATE_TIME, "0") ?? "0";
const lastUpdateTime = parseInt(t2, 10);
if (now - lastUpdateTime >= daysToMs(10)) {
openWindow(url);
await setGMValue(GM_KEY.VERSION_UPDATE_TIME, now + "");
}
}
} catch (error) {
}
}
async function mounted() {
savePlugin();
await initUUID();
const platform2 = ensurePlatform();
const execFlag = canExec();
if (execFlag) {
await initRedirect();
}
clear();
await waitForDOMReady();
if (execFlag) {
initPrefetch();
initEvent(platform2);
initGoodsDetail();
}
const { title } = await getTitle(platform2);
if (title == "" && (platform2 == Platform.None || platform2 == Platform.ZK)) {
return;
}
if (isMobile() && platform2 == Platform.Vip) {
return;
}
const json = await get(API.getCouponUrl, {
title,
platform: platform2,
pt: PluginName,
url: window.location.href
});
if (json && json.data) {
coupon.updateCoupon(json.data);
const target = await createTarget(json.data.selector);
new App({
target
});
}
{
checkAndUpdate();
}
}
mounted();
})(QRCode, CryptoJS);
})();