在您安装前,Greasy Fork镜像 希望您知道此脚本包含可能不受欢迎的功能,也许会帮助脚本作者获利,而不能给你带来任何收益。
作者从这份脚本获得佣金,例如透过改写链接或提供优惠券代码以包含推荐或附属代码。
最新简洁易用的京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、唯品会(vip.com)优惠券小助手,自动显示隐藏优惠券,支持各大电商平台,包括京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、聚划算、天猫超市、天猫国际(tmall.hk)、京东国际(jd.hk)、京东图书、京东电子书、京东工业品、京东大药房(yiyaojd.com)、唯品会(vip.com),让您购物省心更省钱!
目前为
// ==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.3.7 // @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 *://*.jd.com/* // @match *://*.jd.hk/* // @match *://*.yiyaojd.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 *://search.jd.com/* // @exclude *://payc.m.jd.com/* // @exclude *://union.jd.com/* // @icon data:image/png;base64,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 // @antifeature referral-link // @noframes // @grant unsafeWindow // @grant window.close // @grant GM_openInTab // @grant GM_info // @grant GM_getValue // @grant GM_setValue // ==/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 = `*, ::before, ::after{ box-sizing:border-box; border-width:0; border-style:solid; border-color:#e5e7eb; } ::before, ::after{ --tw-content:''; } html{ line-height:1.5; -webkit-text-size-adjust:100%; -moz-tab-size:4; -o-tab-size:4; tab-size:4; font-family:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-feature-settings:normal; font-variation-settings:normal; -webkit-tap-highlight-color:transparent; } body{ margin:0; line-height:inherit; } h2, h3{ font-size:inherit; font-weight:inherit; } button, input{ font-family:inherit; font-feature-settings:inherit; font-variation-settings:inherit; font-size:100%; font-weight:inherit; line-height:inherit; letter-spacing:inherit; color:inherit; margin:0; padding:0; } button{ text-transform:none; } button, input:where([type='button']), input:where([type='submit']){ -webkit-appearance:button; background-color:transparent; background-image:none; } ::-webkit-inner-spin-button, ::-webkit-outer-spin-button{ height:auto; } ::-webkit-search-decoration{ -webkit-appearance:none; } ::-webkit-file-upload-button{ -webkit-appearance:button; font:inherit; } h2, h3, p{ margin:0; } input::-moz-placeholder{ opacity:1; color:#9ca3af; } input::placeholder{ opacity:1; color:#9ca3af; } button{ cursor:pointer; } *, ::before, ::after{ --tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x:; --tw-pan-y:; --tw-pinch-zoom:; --tw-scroll-snap-strictness:proximity; --tw-gradient-from-position:; --tw-gradient-via-position:; --tw-gradient-to-position:; --tw-ordinal:; --tw-slashed-zero:; --tw-numeric-figure:; --tw-numeric-spacing:; --tw-numeric-fraction:; --tw-ring-inset:; --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgb(59 130 246 / 0.5); --tw-ring-offset-shadow:0 0 #0000; --tw-ring-shadow:0 0 #0000; --tw-shadow:0 0 #0000; --tw-shadow-colored:0 0 #0000; --tw-blur:; --tw-brightness:; --tw-contrast:; --tw-grayscale:; --tw-hue-rotate:; --tw-invert:; --tw-saturate:; --tw-sepia:; --tw-drop-shadow:; --tw-backdrop-blur:; --tw-backdrop-brightness:; --tw-backdrop-contrast:; --tw-backdrop-grayscale:; --tw-backdrop-hue-rotate:; --tw-backdrop-invert:; --tw-backdrop-opacity:; --tw-backdrop-saturate:; --tw-backdrop-sepia:; --tw-contain-size:; --tw-contain-layout:; --tw-contain-paint:; --tw-contain-style:; } ::backdrop{ --tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x:; --tw-pan-y:; --tw-pinch-zoom:; --tw-scroll-snap-strictness:proximity; --tw-gradient-from-position:; --tw-gradient-via-position:; --tw-gradient-to-position:; --tw-ordinal:; --tw-slashed-zero:; --tw-numeric-figure:; --tw-numeric-spacing:; --tw-numeric-fraction:; --tw-ring-inset:; --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgb(59 130 246 / 0.5); --tw-ring-offset-shadow:0 0 #0000; --tw-ring-shadow:0 0 #0000; --tw-shadow:0 0 #0000; --tw-shadow-colored:0 0 #0000; --tw-blur:; --tw-brightness:; --tw-contrast:; --tw-grayscale:; --tw-hue-rotate:; --tw-invert:; --tw-saturate:; --tw-sepia:; --tw-drop-shadow:; --tw-backdrop-blur:; --tw-backdrop-brightness:; --tw-backdrop-contrast:; --tw-backdrop-grayscale:; --tw-backdrop-hue-rotate:; --tw-backdrop-invert:; --tw-backdrop-opacity:; --tw-backdrop-saturate:; --tw-backdrop-sepia:; --tw-contain-size:; --tw-contain-layout:; --tw-contain-paint:; --tw-contain-style:; }\r .cp-fixed{ position:fixed; }\r .cp-absolute{ position:absolute; }\r .cp-relative{ position:relative; }\r .cp-inset-0{ inset:0px; }\r .cp-right-\\[8px\\]{ right:8px; }\r .cp-top-\\[8px\\]{ top:8px; }\r .cp-z-20{ z-index:20; }\r .cp-mb-\\[12px\\]{ margin-bottom:12px; }\r .cp-mb-\\[20px\\]{ margin-bottom:20px; }\r .cp-mb-\\[8px\\]{ margin-bottom:8px; }\r .cp-mt-\\[28px\\]{ margin-top:28px; }\r .cp-flex{ display:flex; }\r .cp-h-\\[25px\\]{ height:25px; }\r .cp-w-\\[120px\\]{ width:120px; }\r .cp-w-\\[25px\\]{ width:25px; }\r .cp-w-full{ width:100%; }\r .cp-flex-none{ flex:none; }\r .cp-flex-grow{ flex-grow:1; }\r .cp-cursor-pointer{ cursor:pointer; }\r .cp-flex-col{ flex-direction:column; }\r .cp-flex-wrap{ flex-wrap:wrap; }\r .cp-items-center{ align-items:center; }\r .cp-justify-center{ justify-content:center; }\r .cp-gap-\\[20px\\]{ gap:20px; }\r .cp-gap-\\[4px\\]{ gap:4px; }\r .cp-rounded{ border-radius:0.25rem; }\r .cp-rounded-full{ border-radius:9999px; }\r .cp-rounded-lg{ border-radius:0.5rem; }\r .cp-rounded-md{ border-radius:0.375rem; }\r .cp-rounded-e-lg{ border-start-end-radius:0.5rem; border-end-end-radius:0.5rem; }\r .cp-border{ border-width:1px; }\r .cp-border-l-4{ border-left-width:4px; }\r .cp-border-r-2{ border-right-width:2px; }\r .cp-border-dotted{ border-style:dotted; }\r .cp-border-gray-300{ --tw-border-opacity:1; border-color:rgb(209 213 219 / var(--tw-border-opacity)); }\r .cp-border-l-red-600{ --tw-border-opacity:1; border-left-color:rgb(220 38 38 / var(--tw-border-opacity)); }\r .cp-bg-black{ --tw-bg-opacity:1; background-color:rgb(0 0 0 / var(--tw-bg-opacity)); }\r .cp-bg-blue-400{ --tw-bg-opacity:1; background-color:rgb(96 165 250 / var(--tw-bg-opacity)); }\r .cp-bg-gray-50{ --tw-bg-opacity:1; background-color:rgb(249 250 251 / var(--tw-bg-opacity)); }\r .cp-bg-slate-100{ --tw-bg-opacity:1; background-color:rgb(241 245 249 / var(--tw-bg-opacity)); }\r .cp-bg-white{ --tw-bg-opacity:1; background-color:rgb(255 255 255 / var(--tw-bg-opacity)); }\r .cp-bg-opacity-70{ --tw-bg-opacity:0.7; }\r .cp-p-4{ padding:1rem; }\r .cp-p-\\[12px\\]{ padding:12px; }\r .cp-p-\\[16px\\]{ padding:16px; }\r .cp-py-\\[10px\\]{ padding-top:10px; padding-bottom:10px; }\r .cp-pl-4{ padding-left:1rem; }\r .cp-pl-\\[10px\\]{ padding-left:10px; }\r .cp-pr-4{ padding-right:1rem; }\r .cp-pr-\\[40px\\]{ padding-right:40px; }\r .cp-text-center{ text-align:center; }\r .cp-text-2xl{ font-size:1.5rem; line-height:2rem; }\r .cp-text-3xl{ font-size:1.875rem; line-height:2.25rem; }\r .cp-text-\\[12px\\]{ font-size:12px; }\r .cp-text-lg{ font-size:1.125rem; line-height:1.75rem; }\r .cp-text-sm{ font-size:0.875rem; line-height:1.25rem; }\r .cp-font-bold{ font-weight:700; }\r .cp-font-semibold{ font-weight:600; }\r .cp-text-\\[\\#888\\]{ --tw-text-opacity:1; color:rgb(136 136 136 / var(--tw-text-opacity)); }\r .cp-text-blue-500{ --tw-text-opacity:1; color:rgb(59 130 246 / var(--tw-text-opacity)); }\r .cp-text-gray-500{ --tw-text-opacity:1; color:rgb(107 114 128 / var(--tw-text-opacity)); }\r .cp-text-gray-600{ --tw-text-opacity:1; color:rgb(75 85 99 / var(--tw-text-opacity)); }\r .cp-text-gray-900{ --tw-text-opacity:1; color:rgb(17 24 39 / var(--tw-text-opacity)); }\r .cp-text-red-500{ --tw-text-opacity:1; color:rgb(239 68 68 / var(--tw-text-opacity)); }\r .cp-underline{ text-decoration-line:underline; }\r *,\r ::before,\r ::after{\r box-sizing:initial;\r }\r @keyframes seesaw{\r 0%,\r 100%{\r transform:rotate(0deg);\r }\r 25%{\r transform:rotate(-10deg);\r }\r 75%{\r transform:rotate(10deg);\r }\r }\r .ck-shake-74nhahe{\r display:inline-block;\r transform-origin:center;\r animation:seesaw 0.6s ease-in-out;\r }\r .hover\\:cp-underline:hover{ text-decoration-line:underline; }\r `; 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 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 svg_element(name) { return document.createElementNS("http://www.w3.org/2000/svg", 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, key, value, important) { if (value == null) { node.style.removeProperty(key); } else { node.style.setProperty(key, value, ""); } } function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { return new CustomEvent(type, { detail, bubbles, cancelable }); } class HtmlTag { constructor(is_svg = false) { /** * @private * @default false */ __publicField(this, "is_svg", false); /** parent for creating node */ __publicField(this, "e"); /** html tag nodes */ __publicField(this, "n"); /** target */ __publicField(this, "t"); /** anchor */ __publicField(this, "a"); this.is_svg = is_svg; this.e = this.n = null; } /** * @param {string} html * @returns {void} */ c(html) { this.h(html); } /** * @param {string} html * @param {HTMLElement | SVGElement} target * @param {HTMLElement | SVGElement} anchor * @returns {void} */ m(html, target, anchor = null) { if (!this.e) { if (this.is_svg) this.e = svg_element( /** @type {keyof SVGElementTagNameMap} */ target.nodeName ); else this.e = element( /** @type {keyof HTMLElementTagNameMap} */ target.nodeType === 11 ? "TEMPLATE" : target.nodeName ); this.t = target.tagName !== "TEMPLATE" ? target : ( /** @type {HTMLTemplateElement} */ target.content ); this.c(html); } this.i(anchor); } /** * @param {string} html * @returns {void} */ h(html) { this.e.innerHTML = html; this.n = Array.from( this.e.nodeName === "TEMPLATE" ? this.e.content.childNodes : this.e.childNodes ); } /** * @returns {void} */ i(anchor) { for (let i = 0; i < this.n.length; i += 1) { insert(this.t, this.n[i], anchor); } } /** * @param {string} html * @returns {void} */ p(html) { this.d(); this.h(html); this.i(this.a); } /** * @returns {void} */ d() { this.n.forEach(detach); } } 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"; 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"; return Platform2; })(Platform || {}); const PluginName = "3"; 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 create_fragment$a(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$9($$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$9, create_fragment$a, safe_not_equal, { url: 1, width: 2, height: 3, logo: 4, logoWidth: 5 }); } } var ActivityType = /* @__PURE__ */ ((ActivityType2) => { ActivityType2["TEXT"] = "text"; ActivityType2["IMG"] = "img"; ActivityType2["COUPON"] = "coupon"; return ActivityType2; })(ActivityType || {}); 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 "https://cmsstaticv2.ffquan.cn/pc/img/pdd.3757fb8c.png"; 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 }); } }); } function getJdTitle() { return new Promise((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 }); } }); } 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 { platform.updatePlatform(Platform.None); } return p; } function checkCanRedirect(platform2, title) { const href = window.location.href; switch (platform2) { case Platform.Taobao: return href.indexOf("mm_117425171_2324550020_111391250310") == -1 && href.indexOf("mm_117425171_21428696_71990812") == -1 && href.indexOf("mm_117425171_33696257_277458675") == -1 && title != "天猫" && title != "淘宝网"; case Platform.JD: return href.indexOf("2015895618") == -1 || href.indexOf("jasonzk.com") > -1; case Platform.Vip: 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); default: return false; } } 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 checkKeyToOpen(activity, platform2) { const { key, list } = activity; const keyValue = localStorage.getItem(key); if (!keyValue) { const item = list.find( (item2) => item2.type === ActivityType.IMG && item2.platform === platform2 ); if (item) { openWindow(item.url); localStorage.setItem(key, key); } } } const JD_COUPON_KEY = "73haz73_jd_coupon_url"; function getJDVisitedCoupon() { const values = GM_getValue(JD_COUPON_KEY, "[]"); return JSON.parse(values); } function setJDVisitedCoupon(url) { const values = getJDVisitedCoupon(); if (values.includes(url)) return; if (values.length > 20) { values.shift(); } values.push(url); GM_setValue(JD_COUPON_KEY, JSON.stringify(values)); } function checkJDUrlInVisitedCoupon(url) { const values = getJDVisitedCoupon(); return values.includes(url); } function openWindow(shortUrl, url) { if (window.GM_openInTab) { GM_openInTab(shortUrl, { active: true }); } } function create_fragment$9(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$8($$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$8, create_fragment$9, safe_not_equal, {}); } } function create_if_block$7(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]"); 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$8(ctx) { let if_block_anchor; let current; let if_block = ( /*show*/ ctx[0] && create_if_block$7(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$7(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$7($$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$7, create_fragment$8, safe_not_equal, { show: 0, title: 1 }); } } function create_if_block_1$2(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$6(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$7(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$2(ctx) ); let if_block1 = ( /*date*/ ctx[2] && /*date*/ ctx[2] != "" && create_if_block$6(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$2(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$6(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$6($$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$6, create_fragment$7, 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(); 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 key = "jason"; const token = CryptoJS2.AES.encrypt(data.join(""), key).toString(); const keyMap = getKeyMap(words2, now, split, key); return { token, keyMap }; } function getKeyMap(words2, now, split, key) { const data = [split, words2, now]; const keyMap = CryptoJS2.AES.encrypt(JSON.stringify(data), key).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(""); } async function get(url, data) { const params = new URLSearchParams(data ?? {}); url = url + "?" + params.toString(); const { token, keyMap } = getToken(); const headers = { authorization: token, authhash: keyMap, plgn: PluginName }; if (window.GM_info) { headers["plgv"] = GM_info.script.version; } const res = await fetch(url, { headers }); const json = await res.json(); if (json.code == 1003 && json.updateVersion && json.updateVersion.force) { openWindow(json.updateVersion.addr); } return json; } const baseUrl = "https://api2.jasonzk.com"; const getPromoUrl = `${baseUrl}/compare/urlv4`; const getCouponUrl = `${baseUrl}/coupon/couponV2`; const getElevenActivity = `${baseUrl}/activity/eleven`; function get_each_context$3(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[2] = list[i]; return child_ctx; } function create_if_block$5(ctx) { let div2; let img; let img_src_value; let img_alt_value; let t0; let div1; let div0; let h2; let t1_value = ( /*activity*/ ctx[0].title + "" ); let t1; let span; let t3; let t4; let qrcode; let current; let mounted2; let dispose; let each_value = ensure_array_like( /*activity*/ ctx[0].desc ); let each_blocks = []; for (let i = 0; i < each_value.length; i += 1) { each_blocks[i] = create_each_block$3(get_each_context$3(ctx, each_value, i)); } qrcode = new QrCode({ props: { url: ( /*activity*/ ctx[0].short_url ), width: 100, height: 100, logo: getPlatformLogo( /*activity*/ ctx[0].platform ), logoWidth: getLogoWidth( /*activity*/ ctx[0].platform ) } }); return { c() { div2 = element("div"); img = element("img"); t0 = space(); div1 = element("div"); div0 = element("div"); h2 = element("h2"); t1 = text(t1_value); span = element("span"); span.textContent = "点击前往~"; t3 = space(); for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } t4 = space(); create_component(qrcode.$$.fragment); if (!src_url_equal(img.src, img_src_value = /*activity*/ ctx[0].img)) attr(img, "src", img_src_value); attr(img, "alt", img_alt_value = /*activity*/ ctx[0].title); set_style(img, "width", "480px"); set_style(span, "font-size", "14px"); set_style(span, "color", "blue"); set_style(span, "margin-left", "6px"); attr(h2, "class", "cp-cursor-pointer hover:cp-underline"); set_style(h2, "font-size", "24px"); set_style(h2, "line-height", "32px"); set_style(div1, "margin-top", "8px"); set_style(div1, "display", "flex"); set_style(div1, "align-activitys", "center"); set_style(div1, "justify-content", "space-between"); set_style(div1, "gap", "8px"); set_style(div2, "border", "1px solid #eee"); set_style(div2, "margin-bottom", "30px"); set_style(div2, "cursor", "pointer"); set_style(div2, "border-radius", "6px"); set_style(div2, "padding", "20px"); set_style(div2, "margin-top", "30px"); attr(div2, "title", "点击前往~"); }, m(target, anchor) { insert(target, div2, anchor); append(div2, img); append(div2, t0); append(div2, div1); append(div1, div0); append(div0, h2); append(h2, t1); append(h2, span); append(div0, t3); for (let i = 0; i < each_blocks.length; i += 1) { if (each_blocks[i]) { each_blocks[i].m(div0, null); } } append(div1, t4); mount_component(qrcode, div1, null); current = true; if (!mounted2) { dispose = listen( div2, "click", /*handleactivityClick*/ ctx[1] ); mounted2 = true; } }, p(ctx2, dirty) { if (!current || dirty & /*activity*/ 1 && !src_url_equal(img.src, img_src_value = /*activity*/ ctx2[0].img)) { attr(img, "src", img_src_value); } if (!current || dirty & /*activity*/ 1 && img_alt_value !== (img_alt_value = /*activity*/ ctx2[0].title)) { attr(img, "alt", img_alt_value); } if ((!current || dirty & /*activity*/ 1) && t1_value !== (t1_value = /*activity*/ ctx2[0].title + "")) set_data(t1, t1_value); if (dirty & /*activity*/ 1) { each_value = ensure_array_like( /*activity*/ ctx2[0].desc ); let i; for (i = 0; i < each_value.length; i += 1) { const child_ctx = get_each_context$3(ctx2, each_value, i); if (each_blocks[i]) { each_blocks[i].p(child_ctx, dirty); } else { each_blocks[i] = create_each_block$3(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; } const qrcode_changes = {}; if (dirty & /*activity*/ 1) qrcode_changes.url = /*activity*/ ctx2[0].short_url; if (dirty & /*activity*/ 1) qrcode_changes.logo = getPlatformLogo( /*activity*/ ctx2[0].platform ); if (dirty & /*activity*/ 1) qrcode_changes.logoWidth = getLogoWidth( /*activity*/ ctx2[0].platform ); 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) { if (detaching) { detach(div2); } destroy_each(each_blocks, detaching); destroy_component(qrcode); mounted2 = false; dispose(); } }; } function create_each_block$3(ctx) { let p; let html_tag; let raw_value = ( /*desc*/ ctx[2] + "" ); let t; return { c() { p = element("p"); html_tag = new HtmlTag(false); t = space(); html_tag.a = t; set_style(p, "max-width", "360px"); set_style(p, "margin-top", "12px"); set_style(p, "font-size", "12px"); set_style(p, "line-height", "18px"); }, m(target, anchor) { insert(target, p, anchor); html_tag.m(raw_value, p); append(p, t); }, p(ctx2, dirty) { if (dirty & /*activity*/ 1 && raw_value !== (raw_value = /*desc*/ ctx2[2] + "")) html_tag.p(raw_value); }, d(detaching) { if (detaching) { detach(p); } } }; } function create_fragment$6(ctx) { let if_block_anchor; let current; let if_block = ( /*activity*/ ctx[0] != null && 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 ( /*activity*/ ctx2[0] != null ) { if (if_block) { if_block.p(ctx2, dirty); if (dirty & /*activity*/ 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 { activity = null } = $$props; function handleactivityClick() { if (activity == null) { return; } openWindow(activity.url); } $$self.$$set = ($$props2) => { if ("activity" in $$props2) $$invalidate(0, activity = $$props2.activity); }; return [activity, handleactivityClick]; } class ImgActivity extends SvelteComponent { constructor(options) { super(); init(this, options, instance$5, create_fragment$6, safe_not_equal, { activity: 0 }); } } function get_each_context$2(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[1] = list[i]; return child_ctx; } 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$4(ctx) { var _a; let div1; let h3; let t0_value = ( /*activity*/ ((_a = ctx[0]) == null ? void 0 : _a.title) + "" ); let t0; let t1; let p; let t3; let div0; let each_value = ensure_array_like( /*activity*/ ctx[0].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"); p.textContent = "使用说明:点击复制,复制口令后打开对应平台app搜索即可领取,例如:购物红包384"; 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]"); attr(div0, "class", "cp-flex cp-flex-wrap cp-justify-center cp-gap-[20px]"); set_style(div0, "max-width", "520px"); attr(div1, "class", "cp-mb-[20px]"); }, m(target, anchor) { insert(target, div1, anchor); append(div1, h3); append(h3, t0); append(div1, t1); append(div1, p); 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 & /*activity*/ 1 && t0_value !== (t0_value = /*activity*/ ((_a2 = ctx2[0]) == null ? void 0 : _a2.title) + "")) set_data(t0, t0_value); if (dirty & /*activity, handleCopy*/ 1) { each_value = ensure_array_like( /*activity*/ ctx2[0].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_1(ctx) { var _a; let div; let span0; let t0_value = ( /*password*/ ctx[4] + "" ); let t0; let t1; let span1; let t2; let t3_value = getPlatformName( /*list*/ (_a = ctx[1]) == null ? void 0 : _a.platform ) + ""; let t3; let t4; let t5; let span2; let t7; let mounted2; let dispose; return { c() { div = element("div"); span0 = element("span"); t0 = text(t0_value); t1 = space(); span1 = element("span"); t2 = text("("); t3 = text(t3_value); t4 = text(")"); t5 = space(); span2 = element("span"); span2.textContent = "复制"; t7 = space(); attr(span2, "class", "cp-ml-[-3px] cp-cursor-pointer cp-text-blue-500 hover:cp-underline"); attr(div, "class", "cp-cursor-pointer hover:cp-underline"); }, m(target, anchor) { insert(target, div, anchor); append(div, span0); append(span0, t0); append(div, t1); append(div, span1); append(span1, t2); append(span1, t3); append(span1, t4); append(div, t5); append(div, span2); append(div, t7); if (!mounted2) { dispose = listen(span2, "click", function() { if (is_function(handleCopy$1( /*password*/ ctx[4] ))) handleCopy$1( /*password*/ ctx[4] ).apply(this, arguments); }); mounted2 = true; } }, p(new_ctx, dirty) { var _a2; ctx = new_ctx; if (dirty & /*activity*/ 1 && t0_value !== (t0_value = /*password*/ ctx[4] + "")) set_data(t0, t0_value); if (dirty & /*activity*/ 1 && t3_value !== (t3_value = getPlatformName( /*list*/ (_a2 = ctx[1]) == null ? void 0 : _a2.platform ) + "")) set_data(t3, t3_value); }, d(detaching) { if (detaching) { detach(div); } mounted2 = false; dispose(); } }; } function create_each_block$2(ctx) { let each_1_anchor; let each_value_1 = ensure_array_like( /*list*/ ctx[1].passwords ); let each_blocks = []; for (let i = 0; i < each_value_1.length; i += 1) { each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); } return { c() { for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } each_1_anchor = empty(); }, m(target, anchor) { for (let i = 0; i < each_blocks.length; i += 1) { if (each_blocks[i]) { each_blocks[i].m(target, anchor); } } insert(target, each_1_anchor, anchor); }, p(ctx2, dirty) { if (dirty & /*handleCopy, activity*/ 1) { each_value_1 = ensure_array_like( /*list*/ ctx2[1].passwords ); 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[i]) { each_blocks[i].p(child_ctx, dirty); } else { each_blocks[i] = create_each_block_1(child_ctx); each_blocks[i].c(); each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); } } for (; i < each_blocks.length; i += 1) { each_blocks[i].d(1); } each_blocks.length = each_value_1.length; } }, d(detaching) { if (detaching) { detach(each_1_anchor); } destroy_each(each_blocks, detaching); } }; } function create_fragment$5(ctx) { let if_block_anchor; let if_block = ( /*activity*/ ctx[0] != null && 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 ( /*activity*/ ctx2[0] != null ) { 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 handleCopy$1(text2) { return () => { if (window.GM_setClipboard) { GM_setClipboard(text2, "text", () => { window.alert("复制成功,温馨提示:粘贴到微信,手机打开领取更方便哦~"); }); } else { navigator.clipboard.writeText(text2).then(() => { window.alert("复制成功,温馨提示:粘贴到微信,手机打开领取更方便哦~"); }).catch((error) => { console.error("Failed to copy text:", error); }); } }; } function instance$4($$self, $$props, $$invalidate) { let { activity = null } = $$props; $$self.$$set = ($$props2) => { if ("activity" in $$props2) $$invalidate(0, activity = $$props2.activity); }; return [activity]; } class TextActivity extends SvelteComponent { constructor(options) { super(); init(this, options, instance$4, create_fragment$5, safe_not_equal, { activity: 0 }); } } function get_each_context$1(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[2] = list[i]; return child_ctx; } function create_if_block$3(ctx) { var _a, _b; let div1; let h3; let t0_value = ( /*activity*/ ((_a = ctx[0]) == null ? void 0 : _a.title) + "" ); let t0; let t1; let div0; let each_value = ensure_array_like( /*activity*/ (_b = ctx[0]) == null ? void 0 : _b.coupons ); 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)); } return { c() { div1 = element("div"); h3 = element("h3"); t0 = text(t0_value); t1 = 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(div1, "style", "cp-mb-[20px]"); }, m(target, anchor) { insert(target, div1, anchor); append(div1, h3); append(h3, t0); append(div1, t1); 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, _b2; if (dirty & /*activity*/ 1 && t0_value !== (t0_value = /*activity*/ ((_a2 = ctx2[0]) == null ? void 0 : _a2.title) + "")) set_data(t0, t0_value); if (dirty & /*handleCopy, activity, handleGo*/ 3) { each_value = ensure_array_like( /*activity*/ (_b2 = ctx2[0]) == null ? void 0 : _b2.coupons ); 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); } else { each_blocks[i] = create_each_block$1(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$1(ctx) { let p; let span0; let t0_value = ( /*item*/ ctx[2].title + "" ); let t0; let t1; let t2; let span1; let t3_value = ( /*item*/ ctx[2].url + "" ); let t3; let t4; let span2; let t6; let mounted2; let dispose; return { c() { p = element("p"); span0 = element("span"); t0 = text(t0_value); t1 = text(":"); t2 = space(); span1 = element("span"); t3 = text(t3_value); t4 = space(); span2 = element("span"); span2.textContent = "(复制)"; t6 = space(); attr(span1, "class", "cp-cursor-pointer cp-text-blue-500 hover:cp-underline"); attr(span2, "class", "cp-ml-[-3px] cp-cursor-pointer hover:cp-underline"); attr(p, "class", "cp-mb-[8px] cp-text-center"); }, m(target, anchor) { insert(target, p, anchor); append(p, span0); append(span0, t0); append(span0, t1); append(p, t2); append(p, span1); append(span1, t3); append(p, t4); append(p, span2); append(p, t6); if (!mounted2) { dispose = [ listen(span1, "click", function() { if (is_function( /*handleGo*/ ctx[1]( /*item*/ ctx[2].url ) )) ctx[1]( /*item*/ ctx[2].url ).apply(this, arguments); }), listen(span2, "click", function() { if (is_function(handleCopy( /*item*/ ctx[2].url ))) handleCopy( /*item*/ ctx[2].url ).apply(this, arguments); }) ]; mounted2 = true; } }, p(new_ctx, dirty) { ctx = new_ctx; if (dirty & /*activity*/ 1 && t0_value !== (t0_value = /*item*/ ctx[2].title + "")) set_data(t0, t0_value); if (dirty & /*activity*/ 1 && t3_value !== (t3_value = /*item*/ ctx[2].url + "")) set_data(t3, t3_value); }, d(detaching) { if (detaching) { detach(p); } mounted2 = false; run_all(dispose); } }; } function create_fragment$4(ctx) { let if_block_anchor; let if_block = ( /*activity*/ ctx[0] != null && 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); }, p(ctx2, [dirty]) { if ( /*activity*/ ctx2[0] != null ) { if (if_block) { if_block.p(ctx2, dirty); } else { if_block = create_if_block$3(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 handleCopy(text2) { return () => { if (window.GM_setClipboard) { GM_setClipboard(text2, "text", () => { window.alert("复制成功,温馨提示:粘贴到微信,手机打开领取更方便哦~"); }); } else { navigator.clipboard.writeText(text2).then(() => { window.alert("复制成功,温馨提示:粘贴到微信,手机打开领取更方便哦~"); }).catch((error) => { console.error("Failed to copy text:", error); }); } }; } function instance$3($$self, $$props, $$invalidate) { let { activity = null } = $$props; function handleGo(url) { return () => { openWindow(url); }; } $$self.$$set = ($$props2) => { if ("activity" in $$props2) $$invalidate(0, activity = $$props2.activity); }; return [activity, handleGo]; } class CouponActivity extends SvelteComponent { constructor(options) { super(); init(this, options, instance$3, create_fragment$4, safe_not_equal, { activity: 0 }); } } function get_each_context(ctx, list, i) { const child_ctx = ctx.slice(); child_ctx[10] = list[i]; return child_ctx; } function create_if_block$2(ctx) { var _a; let div; let span; let t0_value = ( /*activity*/ ((_a = ctx[1]) == null ? void 0 : _a.title) + "" ); let t0; let t1_value = ( /*activity*/ ctx[1].hot ? "🔥" : "" ); let t1; let span_class_value; let t2; let modal; let current; let mounted2; let dispose; modal = new Modal({ props: { show: ( /*showModal*/ ctx[0] ), title: ( /*title*/ ctx[3] ), $$slots: { default: [create_default_slot] }, $$scope: { ctx } } }); modal.$on( "close", /*close_handler*/ ctx[6] ); 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", span_class_value = "cp-cursor-pointer cp-text-red-500 cp-underline " + /*isShaking*/ (ctx[4] ? "ck-shake-74nhahe" : "")); }, 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", /*handleOpenModal*/ ctx[5] ); mounted2 = true; } }, p(ctx2, dirty) { var _a2; if ((!current || dirty & /*activity*/ 2) && t0_value !== (t0_value = /*activity*/ ((_a2 = ctx2[1]) == null ? void 0 : _a2.title) + "")) set_data(t0, t0_value); if ((!current || dirty & /*activity*/ 2) && t1_value !== (t1_value = /*activity*/ ctx2[1].hot ? "🔥" : "")) set_data(t1, t1_value); if (!current || dirty & /*isShaking*/ 16 && span_class_value !== (span_class_value = "cp-cursor-pointer cp-text-red-500 cp-underline " + /*isShaking*/ (ctx2[4] ? "ck-shake-74nhahe" : ""))) { attr(span, "class", span_class_value); } const modal_changes = {}; if (dirty & /*showModal*/ 1) modal_changes.show = /*showModal*/ ctx2[0]; if (dirty & /*title*/ 8) modal_changes.title = /*title*/ ctx2[3]; if (dirty & /*$$scope, list*/ 8196) { 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_if_block_3(ctx) { let couponactivity; let current; couponactivity = new CouponActivity({ props: { activity: ( /*item*/ ctx[10] ) } }); return { c() { create_component(couponactivity.$$.fragment); }, m(target, anchor) { mount_component(couponactivity, target, anchor); current = true; }, p(ctx2, dirty) { const couponactivity_changes = {}; if (dirty & /*list*/ 4) couponactivity_changes.activity = /*item*/ ctx2[10]; couponactivity.$set(couponactivity_changes); }, i(local) { if (current) return; transition_in(couponactivity.$$.fragment, local); current = true; }, o(local) { transition_out(couponactivity.$$.fragment, local); current = false; }, d(detaching) { destroy_component(couponactivity, detaching); } }; } function create_if_block_2(ctx) { let textactivity; let current; textactivity = new TextActivity({ props: { activity: ( /*item*/ ctx[10] ) } }); return { c() { create_component(textactivity.$$.fragment); }, m(target, anchor) { mount_component(textactivity, target, anchor); current = true; }, p(ctx2, dirty) { const textactivity_changes = {}; if (dirty & /*list*/ 4) textactivity_changes.activity = /*item*/ ctx2[10]; textactivity.$set(textactivity_changes); }, i(local) { if (current) return; transition_in(textactivity.$$.fragment, local); current = true; }, o(local) { transition_out(textactivity.$$.fragment, local); current = false; }, d(detaching) { destroy_component(textactivity, detaching); } }; } function create_if_block_1$1(ctx) { let imgactivity; let current; imgactivity = new ImgActivity({ props: { activity: ( /*item*/ ctx[10] ) } }); return { c() { create_component(imgactivity.$$.fragment); }, m(target, anchor) { mount_component(imgactivity, target, anchor); current = true; }, p(ctx2, dirty) { const imgactivity_changes = {}; if (dirty & /*list*/ 4) imgactivity_changes.activity = /*item*/ ctx2[10]; imgactivity.$set(imgactivity_changes); }, i(local) { if (current) return; transition_in(imgactivity.$$.fragment, local); current = true; }, o(local) { transition_out(imgactivity.$$.fragment, local); current = false; }, d(detaching) { destroy_component(imgactivity, detaching); } }; } function create_each_block(ctx) { let current_block_type_index; let if_block; let if_block_anchor; let current; const if_block_creators = [create_if_block_1$1, create_if_block_2, create_if_block_3]; const if_blocks = []; function select_block_type(ctx2, dirty) { if ( /*item*/ ctx2[10].type == ActivityType.IMG ) return 0; if ( /*item*/ ctx2[10].type == ActivityType.TEXT ) return 1; if ( /*item*/ ctx2[10].type == ActivityType.COUPON ) return 2; return -1; } if (~(current_block_type_index = select_block_type(ctx))) { if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); } return { c() { if (if_block) if_block.c(); if_block_anchor = empty(); }, m(target, anchor) { if (~current_block_type_index) { if_blocks[current_block_type_index].m(target, anchor); } insert(target, if_block_anchor, anchor); current = true; }, p(ctx2, dirty) { let previous_block_index = current_block_type_index; current_block_type_index = select_block_type(ctx2); if (current_block_type_index === previous_block_index) { if (~current_block_type_index) { if_blocks[current_block_type_index].p(ctx2, dirty); } } else { if (if_block) { group_outros(); transition_out(if_blocks[previous_block_index], 1, 1, () => { if_blocks[previous_block_index] = null; }); check_outros(); } if (~current_block_type_index) { if_block = if_blocks[current_block_type_index]; if (!if_block) { if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); if_block.c(); } else { if_block.p(ctx2, dirty); } transition_in(if_block, 1); if_block.m(if_block_anchor.parentNode, if_block_anchor); } else { if_block = null; } } }, 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 (~current_block_type_index) { if_blocks[current_block_type_index].d(detaching); } } }; } function create_default_slot(ctx) { let div; let current; let each_value = ensure_array_like( /*list*/ ctx[2] ); 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() { div = element("div"); for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } set_style(div, "max-height", "500px"); set_style(div, "padding-right", "20px"); set_style(div, "overflow", "auto"); }, 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 & /*list*/ 4) { each_value = ensure_array_like( /*list*/ ctx2[2] ); 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(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 create_fragment$3(ctx) { let if_block_anchor; let current; let if_block = ( /*activity*/ ctx[1] != null && /*activity*/ ctx[1].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]) { if ( /*activity*/ ctx2[1] != null && /*activity*/ ctx2[1].show ) { if (if_block) { if_block.p(ctx2, dirty); if (dirty & /*activity*/ 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; component_subscribe($$self, platform, ($$value) => $$invalidate(7, $platform = $$value)); let showModal = false; let activity = null; let list = []; let title = "双十一红包"; let isShaking = false; async function fetchActivity() { const json = await get(getElevenActivity, {}); const { data } = json; if (data) { $$invalidate(1, activity = data); $$invalidate(2, list = activity.list); $$invalidate(3, title = activity.title); checkKeyToOpen(activity, $platform); } } function handleOpenModal() { $$invalidate(0, showModal = true); } function startShake() { $$invalidate(4, isShaking = true); setTimeout( () => { $$invalidate(4, isShaking = false); setTimeout(startShake, 5e3); }, 600 ); } onMount(() => { fetchActivity(); startShake(); }); const close_handler = () => $$invalidate(0, showModal = false); return [showModal, activity, list, title, isShaking, handleOpenModal, close_handler]; } class ElevenActivity 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 elevenactivity; 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); elevenactivity = new ElevenActivity({}); return { c() { div = element("div"); if_block.c(); t = space(); create_component(elevenactivity.$$.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(elevenactivity, 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(elevenactivity.$$.fragment, local); current = true; }, o(local) { transition_out(elevenactivity.$$.fragment, local); current = false; }, d(detaching) { if (detaching) { detach(div); } if_block.d(); destroy_component(elevenactivity); } }; } 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 current; container = new Container({}); let if_block = false; 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 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); }); } async function mounted() { const platform2 = ensurePlatform(); const { title } = await getTitle(platform2); const flag = checkCanRedirect(platform2, title); if (flag) { const json2 = await get(getPromoUrl, { title, platform: platform2, pt: PluginName, url: window.location.href }); if (json2 && json2.data && json2.data.url) { if (!window.GM_openInTab || isMobile() && platform2 == Platform.Vip) { window.location.replace(json2.data); } else { if (platform2 == Platform.JD && json2.data.hasCoupon) { const currentUrl = location.href; const hasOpened = checkJDUrlInVisitedCoupon(currentUrl); if (!hasOpened) { setJDVisitedCoupon(currentUrl); openWindow(json2.data.url); window.close(); } } else { openWindow(json2.data.url); window.close(); } } } } if (isMobile() && platform2 == Platform.Vip) { return; } const json = await get(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 }); } } mounted(); })(QRCode, CryptoJS); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址