// ==UserScript== // @name 全网比价神器!一键扫码比价,淘宝、京东、拼多多商品价格实时对比,省钱省心! // @name:zh 全网比价神器!一键扫码比价,淘宝、京东、拼多多商品价格实时对比,省钱省心! // @name:zh-TW 全網比價神器!一鍵掃碼比價,淘寶、京東、拼多多商品價格實時對比,省錢省心! // @namespace jackern-qrcode-plugin // @version 1.0.2 // @author Jackern // @description 全网比价神器!自动在淘宝、天猫、京东、唯品会商品详情页生成比价二维码,手机扫码即可查看全网价格对比和优惠信息。智能识别商品信息,实时获取各大平台价格数据,帮你找到最优惠的购买方案。安装即用,操作简单,购物必备神器! // @description:zh 全网比价神器!自动在淘宝、天猫、京东、唯品会商品详情页生成比价二维码,手机扫码即可查看全网价格对比和优惠信息。智能识别商品信息,实时获取各大平台价格数据,帮你找到最优惠的购买方案。安装即用,操作简单,购物必备神器! // @description:zh-TW 全網比價神器!自動在淘寶、天貓、京東、唯品會商品詳情頁生成比價二維碼,手機掃碼即可查看全網價格對比和優惠信息。智能識別商品信息,實時獲取各大平台價格數據,幫你找到最優惠的購買方案。安裝即用,操作簡單,購物必備神器! // @license None // @icon data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIHZpZXdCb3g9IjAgMCA2NCA2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8IS0tIOiDjOaZr+a4kOWPmCAtLT4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iYmciIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjEwMCUiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdHlsZT0ic3RvcC1jb2xvcjojNjY3RUVBO3N0b3Atb3BhY2l0eToxIiAvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0eWxlPSJzdG9wLWNvbG9yOiM3NjRCQTI7c3RvcC1vcGFjaXR5OjEiIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogIDwvZGVmcz4KICAKICA8IS0tIOWchuinkuiDjOaZryAtLT4KICA8cmVjdCB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIHJ4PSIxNiIgZmlsbD0idXJsKCNiZykiLz4KICAKICA8IS0tIOeugOWMlueahOS6jOe7tOeggeespuWPtyAtLT4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNiwgMTYpIj4KICAgIDwhLS0g5aSW5qGGIC0tPgogICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiByeD0iNCIgZmlsbD0id2hpdGUiIG9wYWNpdHk9IjAuOTUiLz4KICAgIAogICAgPCEtLSDkuInkuKrlrprkvY3op5IgLS0+CiAgICA8cmVjdCB4PSI0IiB5PSI0IiB3aWR0aD0iOCIgaGVpZ2h0PSI4IiByeD0iMiIgZmlsbD0iIzY2N0VFQSIvPgogICAgPHJlY3QgeD0iMjAiIHk9IjQiIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHJ4PSIyIiBmaWxsPSIjNjY3RUVBIi8+CiAgICA8cmVjdCB4PSI0IiB5PSIyMCIgd2lkdGg9IjgiIGhlaWdodD0iOCIgcng9IjIiIGZpbGw9IiM2NjdFRUEiLz4KICAgIAogICAgPCEtLSDkuK3lv4PmlbDmja7ngrkgLS0+CiAgICA8Y2lyY2xlIGN4PSIxNiIgY3k9IjE2IiByPSIyIiBmaWxsPSIjNjY3RUVBIi8+CiAgICA8Y2lyY2xlIGN4PSIyNCIgY3k9IjE2IiByPSIyIiBmaWxsPSIjNjY3RUVBIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjI0IiByPSIyIiBmaWxsPSIjNjY3RUVBIi8+CiAgICA8Y2lyY2xlIGN4PSIyMCIgY3k9IjI0IiByPSIyIiBmaWxsPSIjNjY3RUVBIi8+CiAgICA8Y2lyY2xlIGN4PSIyOCIgY3k9IjI0IiByPSIyIiBmaWxsPSIjNjY3RUVBIi8+CiAgPC9nPgo8L3N2Zz4= // @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 *://*.jingdonghealth.cn/* // @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/* // @require https://cdn.jsdelivr.net/npm/easyqrcodejs@4.6.2/dist/easy.qrcode.min.js // @grant unsafeWindow // @grant window.close // @run-at document-start // @noframes // ==/UserScript== (function (EasyQRCode) { 'use strict'; const PUBLIC_VERSION = "5"; if (typeof window !== "undefined") { ((window.__svelte ??= {}).v ??= new Set()).add(PUBLIC_VERSION); } let legacy_mode_flag = false; let tracing_mode_flag = false; function enable_legacy_mode_flag() { legacy_mode_flag = true; } enable_legacy_mode_flag(); const PROPS_IS_RUNES = 1 << 1; const PROPS_IS_UPDATED = 1 << 2; const PROPS_IS_BINDABLE = 1 << 3; const UNINITIALIZED = Symbol(); const DEV = false; var is_array = Array.isArray; var index_of = Array.prototype.indexOf; var array_from = Array.from; var define_property = Object.defineProperty; var get_descriptor = Object.getOwnPropertyDescriptor; var get_descriptors = Object.getOwnPropertyDescriptors; var object_prototype = Object.prototype; var array_prototype = Array.prototype; var get_prototype_of = Object.getPrototypeOf; var is_extensible = Object.isExtensible; function run(fn) { return fn(); } function run_all(arr) { for (var i = 0; i < arr.length; i++) { arr[i](); } } function deferred() { var resolve; var reject; var promise = new Promise((res, rej) => { resolve = res; reject = rej; }); return { promise, resolve, reject }; } const DERIVED = 1 << 1; const EFFECT = 1 << 2; const RENDER_EFFECT = 1 << 3; const BLOCK_EFFECT = 1 << 4; const BRANCH_EFFECT = 1 << 5; const ROOT_EFFECT = 1 << 6; const BOUNDARY_EFFECT = 1 << 7; const CONNECTED = 1 << 9; const CLEAN = 1 << 10; const DIRTY = 1 << 11; const MAYBE_DIRTY = 1 << 12; const INERT = 1 << 13; const DESTROYED = 1 << 14; const EFFECT_RAN = 1 << 15; const EFFECT_TRANSPARENT = 1 << 16; const EAGER_EFFECT = 1 << 17; const HEAD_EFFECT = 1 << 18; const EFFECT_PRESERVED = 1 << 19; const USER_EFFECT = 1 << 20; const WAS_MARKED = 1 << 15; const REACTION_IS_UPDATING = 1 << 21; const ASYNC = 1 << 22; const ERROR_VALUE = 1 << 23; const STATE_SYMBOL = Symbol("$state"); const LEGACY_PROPS = Symbol("legacy props"); const STALE_REACTION = new class StaleReactionError extends Error { name = "StaleReactionError"; message = "The reaction that called `getAbortSignal()` was re-run or destroyed"; }(); function lifecycle_outside_component(name) { { throw new Error(`https://svelte.dev/e/lifecycle_outside_component`); } } function effect_in_teardown(rune) { { throw new Error(`https://svelte.dev/e/effect_in_teardown`); } } function effect_in_unowned_derived() { { throw new Error(`https://svelte.dev/e/effect_in_unowned_derived`); } } function effect_orphan(rune) { { throw new Error(`https://svelte.dev/e/effect_orphan`); } } function effect_update_depth_exceeded() { { throw new Error(`https://svelte.dev/e/effect_update_depth_exceeded`); } } function props_invalid_value(key) { { throw new Error(`https://svelte.dev/e/props_invalid_value`); } } function state_descriptors_fixed() { { throw new Error(`https://svelte.dev/e/state_descriptors_fixed`); } } function state_prototype_fixed() { { throw new Error(`https://svelte.dev/e/state_prototype_fixed`); } } function state_unsafe_mutation() { { throw new Error(`https://svelte.dev/e/state_unsafe_mutation`); } } function svelte_boundary_reset_onerror() { { throw new Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`); } } function svelte_boundary_reset_noop() { { console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`); } } function equals(value) { return value === this.v; } function safe_not_equal(a, b) { return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function"; } function safe_equals(value) { return !safe_not_equal(value, this.v); } let component_context = null; function set_component_context(context) { component_context = context; } function push(props, runes = false, fn) { component_context = { p: component_context, i: false, c: null, e: null, s: props, x: null, l: legacy_mode_flag && !runes ? { s: null, u: null, $: [] } : null }; } function pop(component) { var context = ( component_context ); var effects = context.e; if (effects !== null) { context.e = null; for (var fn of effects) { create_user_effect(fn); } } context.i = true; component_context = context.p; return ( {} ); } function is_runes() { return !legacy_mode_flag || component_context !== null && component_context.l === null; } let micro_tasks = []; function run_micro_tasks() { var tasks = micro_tasks; micro_tasks = []; run_all(tasks); } function queue_micro_task(fn) { if (micro_tasks.length === 0 && true) { var tasks = micro_tasks; queueMicrotask(() => { if (tasks === micro_tasks) run_micro_tasks(); }); } micro_tasks.push(fn); } function handle_error(error) { var effect2 = active_effect; if (effect2 === null) { active_reaction.f |= ERROR_VALUE; return error; } if ((effect2.f & EFFECT_RAN) === 0) { if ((effect2.f & BOUNDARY_EFFECT) === 0) { throw error; } effect2.b.error(error); } else { invoke_error_boundary(error, effect2); } } function invoke_error_boundary(error, effect2) { while (effect2 !== null) { if ((effect2.f & BOUNDARY_EFFECT) !== 0) { try { effect2.b.error(error); return; } catch (e) { error = e; } } effect2 = effect2.parent; } throw error; } const batches = new Set(); let current_batch = null; let batch_values = null; let queued_root_effects = []; let last_scheduled_effect = null; let is_flushing = false; class Batch { committed = false; current = new Map(); previous = new Map(); #commit_callbacks = new Set(); #discard_callbacks = new Set(); #pending = 0; #blocking_pending = 0; #deferred = null; #dirty_effects = []; #maybe_dirty_effects = []; skipped_effects = new Set(); is_fork = false; process(root_effects) { queued_root_effects = []; this.apply(); var target = { parent: null, effect: null, effects: [], render_effects: [], block_effects: [] }; for (const root2 of root_effects) { this.#traverse_effect_tree(root2, target); } if (!this.is_fork) { this.#resolve(); } if (this.#blocking_pending > 0 || this.is_fork) { this.#defer_effects(target.effects); this.#defer_effects(target.render_effects); this.#defer_effects(target.block_effects); } else { current_batch = null; flush_queued_effects(target.render_effects); flush_queued_effects(target.effects); this.#deferred?.resolve(); } batch_values = null; } #traverse_effect_tree(root2, target) { root2.f ^= CLEAN; var effect2 = root2.first; while (effect2 !== null) { var flags2 = effect2.f; var is_branch = (flags2 & (BRANCH_EFFECT | ROOT_EFFECT)) !== 0; var is_skippable_branch = is_branch && (flags2 & CLEAN) !== 0; var skip = is_skippable_branch || (flags2 & INERT) !== 0 || this.skipped_effects.has(effect2); if ((effect2.f & BOUNDARY_EFFECT) !== 0 && effect2.b?.is_pending()) { target = { parent: target, effect: effect2, effects: [], render_effects: [], block_effects: [] }; } if (!skip && effect2.fn !== null) { if (is_branch) { effect2.f ^= CLEAN; } else if ((flags2 & EFFECT) !== 0) { target.effects.push(effect2); } else if (is_dirty(effect2)) { if ((effect2.f & BLOCK_EFFECT) !== 0) target.block_effects.push(effect2); update_effect(effect2); } var child2 = effect2.first; if (child2 !== null) { effect2 = child2; continue; } } var parent = effect2.parent; effect2 = effect2.next; while (effect2 === null && parent !== null) { if (parent === target.effect) { this.#defer_effects(target.effects); this.#defer_effects(target.render_effects); this.#defer_effects(target.block_effects); target = target.parent; } effect2 = parent.next; parent = parent.parent; } } } #defer_effects(effects) { for (const e of effects) { const target = (e.f & DIRTY) !== 0 ? this.#dirty_effects : this.#maybe_dirty_effects; target.push(e); set_signal_status(e, CLEAN); } } capture(source2, value) { if (!this.previous.has(source2)) { this.previous.set(source2, value); } if ((source2.f & ERROR_VALUE) === 0) { this.current.set(source2, source2.v); batch_values?.set(source2, source2.v); } } activate() { current_batch = this; this.apply(); } deactivate() { current_batch = null; batch_values = null; } flush() { this.activate(); if (queued_root_effects.length > 0) { flush_effects(); if (current_batch !== null && current_batch !== this) { return; } } else if (this.#pending === 0) { this.process([]); } this.deactivate(); } discard() { for (const fn of this.#discard_callbacks) fn(this); this.#discard_callbacks.clear(); } #resolve() { if (this.#blocking_pending === 0) { for (const fn of this.#commit_callbacks) fn(); this.#commit_callbacks.clear(); } if (this.#pending === 0) { this.#commit(); } } #commit() { if (batches.size > 1) { this.previous.clear(); var previous_batch_values = batch_values; var is_earlier = true; var dummy_target = { parent: null, effect: null, effects: [], render_effects: [], block_effects: [] }; for (const batch of batches) { if (batch === this) { is_earlier = false; continue; } const sources = []; for (const [source2, value] of this.current) { if (batch.current.has(source2)) { if (is_earlier && value !== batch.current.get(source2)) { batch.current.set(source2, value); } else { continue; } } sources.push(source2); } if (sources.length === 0) { continue; } const others = [...batch.current.keys()].filter((s) => !this.current.has(s)); if (others.length > 0) { const marked = new Set(); const checked = new Map(); for (const source2 of sources) { mark_effects(source2, others, marked, checked); } if (queued_root_effects.length > 0) { current_batch = batch; batch.apply(); for (const root2 of queued_root_effects) { batch.#traverse_effect_tree(root2, dummy_target); } queued_root_effects = []; batch.deactivate(); } } } current_batch = null; batch_values = previous_batch_values; } this.committed = true; batches.delete(this); } increment(blocking) { this.#pending += 1; if (blocking) this.#blocking_pending += 1; } decrement(blocking) { this.#pending -= 1; if (blocking) this.#blocking_pending -= 1; this.revive(); } revive() { for (const e of this.#dirty_effects) { set_signal_status(e, DIRTY); schedule_effect(e); } for (const e of this.#maybe_dirty_effects) { set_signal_status(e, MAYBE_DIRTY); schedule_effect(e); } this.#dirty_effects = []; this.#maybe_dirty_effects = []; this.flush(); } oncommit(fn) { this.#commit_callbacks.add(fn); } ondiscard(fn) { this.#discard_callbacks.add(fn); } settled() { return (this.#deferred ??= deferred()).promise; } static ensure() { if (current_batch === null) { const batch = current_batch = new Batch(); batches.add(current_batch); { Batch.enqueue(() => { if (current_batch !== batch) { return; } batch.flush(); }); } } return current_batch; } static enqueue(task) { queue_micro_task(task); } apply() { return; } } function flush_effects() { var was_updating_effect = is_updating_effect; is_flushing = true; try { var flush_count = 0; set_is_updating_effect(true); while (queued_root_effects.length > 0) { var batch = Batch.ensure(); if (flush_count++ > 1e3) { var updates, entry; if (DEV) ; infinite_loop_guard(); } batch.process(queued_root_effects); old_values.clear(); } } finally { is_flushing = false; set_is_updating_effect(was_updating_effect); last_scheduled_effect = null; } } function infinite_loop_guard() { try { effect_update_depth_exceeded(); } catch (error) { invoke_error_boundary(error, last_scheduled_effect); } } let eager_block_effects = null; function flush_queued_effects(effects) { var length = effects.length; if (length === 0) return; var i = 0; while (i < length) { var effect2 = effects[i++]; if ((effect2.f & (DESTROYED | INERT)) === 0 && is_dirty(effect2)) { eager_block_effects = new Set(); update_effect(effect2); if (effect2.deps === null && effect2.first === null && effect2.nodes_start === null) { if (effect2.teardown === null && effect2.ac === null) { unlink_effect(effect2); } else { effect2.fn = null; } } if (eager_block_effects?.size > 0) { old_values.clear(); for (const e of eager_block_effects) { if ((e.f & (DESTROYED | INERT)) !== 0) continue; const ordered_effects = [e]; let ancestor = e.parent; while (ancestor !== null) { if (eager_block_effects.has(ancestor)) { eager_block_effects.delete(ancestor); ordered_effects.push(ancestor); } ancestor = ancestor.parent; } for (let j = ordered_effects.length - 1; j >= 0; j--) { const e2 = ordered_effects[j]; if ((e2.f & (DESTROYED | INERT)) !== 0) continue; update_effect(e2); } } eager_block_effects.clear(); } } } eager_block_effects = null; } function mark_effects(value, sources, marked, checked) { if (marked.has(value)) return; marked.add(value); if (value.reactions !== null) { for (const reaction of value.reactions) { const flags2 = reaction.f; if ((flags2 & DERIVED) !== 0) { mark_effects( reaction, sources, marked, checked ); } else if ((flags2 & (ASYNC | BLOCK_EFFECT)) !== 0 && (flags2 & DIRTY) === 0 && depends_on(reaction, sources, checked)) { set_signal_status(reaction, DIRTY); schedule_effect( reaction ); } } } } function depends_on(reaction, sources, checked) { const depends = checked.get(reaction); if (depends !== void 0) return depends; if (reaction.deps !== null) { for (const dep of reaction.deps) { if (sources.includes(dep)) { return true; } if ((dep.f & DERIVED) !== 0 && depends_on( dep, sources, checked )) { checked.set( dep, true ); return true; } } } checked.set(reaction, false); return false; } function schedule_effect(signal) { var effect2 = last_scheduled_effect = signal; while (effect2.parent !== null) { effect2 = effect2.parent; var flags2 = effect2.f; if (is_flushing && effect2 === active_effect && (flags2 & BLOCK_EFFECT) !== 0 && (flags2 & HEAD_EFFECT) === 0) { return; } if ((flags2 & (ROOT_EFFECT | BRANCH_EFFECT)) !== 0) { if ((flags2 & CLEAN) === 0) return; effect2.f ^= CLEAN; } } queued_root_effects.push(effect2); } function createSubscriber(start) { let subscribers = 0; let version = source(0); let stop; return () => { if (effect_tracking()) { get(version); render_effect(() => { if (subscribers === 0) { stop = untrack(() => start(() => increment(version))); } subscribers += 1; return () => { queue_micro_task(() => { subscribers -= 1; if (subscribers === 0) { stop?.(); stop = void 0; increment(version); } }); }; }); } }; } var flags = EFFECT_TRANSPARENT | EFFECT_PRESERVED | BOUNDARY_EFFECT; function boundary(node, props, children) { new Boundary(node, props, children); } class Boundary { parent; #pending = false; #anchor; #hydrate_open = null; #props; #children; #effect; #main_effect = null; #pending_effect = null; #failed_effect = null; #offscreen_fragment = null; #pending_anchor = null; #local_pending_count = 0; #pending_count = 0; #is_creating_fallback = false; #effect_pending = null; #effect_pending_subscriber = createSubscriber(() => { this.#effect_pending = source(this.#local_pending_count); return () => { this.#effect_pending = null; }; }); constructor(node, props, children) { this.#anchor = node; this.#props = props; this.#children = children; this.parent = active_effect.b; this.#pending = !!this.#props.pending; this.#effect = block(() => { active_effect.b = this; { var anchor = this.#get_anchor(); try { this.#main_effect = branch(() => children(anchor)); } catch (error) { this.error(error); } if (this.#pending_count > 0) { this.#show_pending_snippet(); } else { this.#pending = false; } } return () => { this.#pending_anchor?.remove(); }; }, flags); } #hydrate_resolved_content() { try { this.#main_effect = branch(() => this.#children(this.#anchor)); } catch (error) { this.error(error); } this.#pending = false; } #hydrate_pending_content() { const pending = this.#props.pending; if (!pending) { return; } this.#pending_effect = branch(() => pending(this.#anchor)); Batch.enqueue(() => { var anchor = this.#get_anchor(); this.#main_effect = this.#run(() => { Batch.ensure(); return branch(() => this.#children(anchor)); }); if (this.#pending_count > 0) { this.#show_pending_snippet(); } else { pause_effect( this.#pending_effect, () => { this.#pending_effect = null; } ); this.#pending = false; } }); } #get_anchor() { var anchor = this.#anchor; if (this.#pending) { this.#pending_anchor = create_text(); this.#anchor.before(this.#pending_anchor); anchor = this.#pending_anchor; } return anchor; } is_pending() { return this.#pending || !!this.parent && this.parent.is_pending(); } has_pending_snippet() { return !!this.#props.pending; } #run(fn) { var previous_effect = active_effect; var previous_reaction = active_reaction; var previous_ctx = component_context; set_active_effect(this.#effect); set_active_reaction(this.#effect); set_component_context(this.#effect.ctx); try { return fn(); } catch (e) { handle_error(e); return null; } finally { set_active_effect(previous_effect); set_active_reaction(previous_reaction); set_component_context(previous_ctx); } } #show_pending_snippet() { const pending = ( this.#props.pending ); if (this.#main_effect !== null) { this.#offscreen_fragment = document.createDocumentFragment(); this.#offscreen_fragment.append( this.#pending_anchor ); move_effect(this.#main_effect, this.#offscreen_fragment); } if (this.#pending_effect === null) { this.#pending_effect = branch(() => pending(this.#anchor)); } } #update_pending_count(d) { if (!this.has_pending_snippet()) { if (this.parent) { this.parent.#update_pending_count(d); } return; } this.#pending_count += d; if (this.#pending_count === 0) { this.#pending = false; if (this.#pending_effect) { pause_effect(this.#pending_effect, () => { this.#pending_effect = null; }); } if (this.#offscreen_fragment) { this.#anchor.before(this.#offscreen_fragment); this.#offscreen_fragment = null; } } } update_pending_count(d) { this.#update_pending_count(d); this.#local_pending_count += d; if (this.#effect_pending) { internal_set(this.#effect_pending, this.#local_pending_count); } } get_effect_pending() { this.#effect_pending_subscriber(); return get( this.#effect_pending ); } error(error) { var onerror = this.#props.onerror; let failed = this.#props.failed; if (this.#is_creating_fallback || !onerror && !failed) { throw error; } if (this.#main_effect) { destroy_effect(this.#main_effect); this.#main_effect = null; } if (this.#pending_effect) { destroy_effect(this.#pending_effect); this.#pending_effect = null; } if (this.#failed_effect) { destroy_effect(this.#failed_effect); this.#failed_effect = null; } var did_reset = false; var calling_on_error = false; const reset = () => { if (did_reset) { svelte_boundary_reset_noop(); return; } did_reset = true; if (calling_on_error) { svelte_boundary_reset_onerror(); } Batch.ensure(); this.#local_pending_count = 0; if (this.#failed_effect !== null) { pause_effect(this.#failed_effect, () => { this.#failed_effect = null; }); } this.#pending = this.has_pending_snippet(); this.#main_effect = this.#run(() => { this.#is_creating_fallback = false; return branch(() => this.#children(this.#anchor)); }); if (this.#pending_count > 0) { this.#show_pending_snippet(); } else { this.#pending = false; } }; var previous_reaction = active_reaction; try { set_active_reaction(null); calling_on_error = true; onerror?.(error, reset); calling_on_error = false; } catch (error2) { invoke_error_boundary(error2, this.#effect && this.#effect.parent); } finally { set_active_reaction(previous_reaction); } if (failed) { queue_micro_task(() => { this.#failed_effect = this.#run(() => { Batch.ensure(); this.#is_creating_fallback = true; try { return branch(() => { failed( this.#anchor, () => error, () => reset ); }); } catch (error2) { invoke_error_boundary( error2, this.#effect.parent ); return null; } finally { this.#is_creating_fallback = false; } }); }); } } } function derived(fn) { var flags2 = DERIVED | DIRTY; var parent_derived = active_reaction !== null && (active_reaction.f & DERIVED) !== 0 ? ( active_reaction ) : null; if (active_effect !== null) { active_effect.f |= EFFECT_PRESERVED; } const signal = { ctx: component_context, deps: null, effects: null, equals, f: flags2, fn, reactions: null, rv: 0, v: ( UNINITIALIZED ), wv: 0, parent: parent_derived ?? active_effect, ac: null }; return signal; } function derived_safe_equal(fn) { const signal = derived(fn); signal.equals = safe_equals; return signal; } function destroy_derived_effects(derived2) { var effects = derived2.effects; if (effects !== null) { derived2.effects = null; for (var i = 0; i < effects.length; i += 1) { destroy_effect( effects[i] ); } } } function get_derived_parent_effect(derived2) { var parent = derived2.parent; while (parent !== null) { if ((parent.f & DERIVED) === 0) { return ( parent ); } parent = parent.parent; } return null; } function execute_derived(derived2) { var value; var prev_active_effect = active_effect; set_active_effect(get_derived_parent_effect(derived2)); { try { derived2.f &= ~WAS_MARKED; destroy_derived_effects(derived2); value = update_reaction(derived2); } finally { set_active_effect(prev_active_effect); } } return value; } function update_derived(derived2) { var value = execute_derived(derived2); if (!derived2.equals(value)) { derived2.v = value; derived2.wv = increment_write_version(); } if (is_destroying_effect) { return; } if (batch_values !== null) { if (effect_tracking()) { batch_values.set(derived2, derived2.v); } } else { var status = (derived2.f & CONNECTED) === 0 ? MAYBE_DIRTY : CLEAN; set_signal_status(derived2, status); } } let eager_effects = new Set(); const old_values = new Map(); let eager_effects_deferred = false; function source(v, stack) { var signal = { f: 0, v, reactions: null, equals, rv: 0, wv: 0 }; return signal; } function state(v, stack) { const s = source(v); push_reaction_value(s); return s; } function mutable_source(initial_value, immutable = false, trackable = true) { const s = source(initial_value); if (!immutable) { s.equals = safe_equals; } if (legacy_mode_flag && trackable && component_context !== null && component_context.l !== null) { (component_context.l.s ??= []).push(s); } return s; } function mutate(source2, value) { set( source2, untrack(() => get(source2)) ); return value; } function set(source2, value, should_proxy = false) { if (active_reaction !== null && (!untracking || (active_reaction.f & EAGER_EFFECT) !== 0) && is_runes() && (active_reaction.f & (DERIVED | BLOCK_EFFECT | ASYNC | EAGER_EFFECT)) !== 0 && !current_sources?.includes(source2)) { state_unsafe_mutation(); } let new_value = should_proxy ? proxy(value) : value; return internal_set(source2, new_value); } function internal_set(source2, value) { if (!source2.equals(value)) { var old_value = source2.v; if (is_destroying_effect) { old_values.set(source2, value); } else { old_values.set(source2, old_value); } source2.v = value; var batch = Batch.ensure(); batch.capture(source2, old_value); if ((source2.f & DERIVED) !== 0) { if ((source2.f & DIRTY) !== 0) { execute_derived( source2 ); } set_signal_status(source2, (source2.f & CONNECTED) !== 0 ? CLEAN : MAYBE_DIRTY); } source2.wv = increment_write_version(); mark_reactions(source2, DIRTY); if (is_runes() && active_effect !== null && (active_effect.f & CLEAN) !== 0 && (active_effect.f & (BRANCH_EFFECT | ROOT_EFFECT)) === 0) { if (untracked_writes === null) { set_untracked_writes([source2]); } else { untracked_writes.push(source2); } } if (!batch.is_fork && eager_effects.size > 0 && !eager_effects_deferred) { flush_eager_effects(); } } return value; } function flush_eager_effects() { eager_effects_deferred = false; const inspects = Array.from(eager_effects); for (const effect2 of inspects) { if ((effect2.f & CLEAN) !== 0) { set_signal_status(effect2, MAYBE_DIRTY); } if (is_dirty(effect2)) { update_effect(effect2); } } eager_effects.clear(); } function increment(source2) { set(source2, source2.v + 1); } function mark_reactions(signal, status) { var reactions = signal.reactions; if (reactions === null) return; var runes = is_runes(); var length = reactions.length; for (var i = 0; i < length; i++) { var reaction = reactions[i]; var flags2 = reaction.f; if (!runes && reaction === active_effect) continue; var not_dirty = (flags2 & DIRTY) === 0; if (not_dirty) { set_signal_status(reaction, status); } if ((flags2 & DERIVED) !== 0) { var derived2 = ( reaction ); batch_values?.delete(derived2); if ((flags2 & WAS_MARKED) === 0) { if (flags2 & CONNECTED) { reaction.f |= WAS_MARKED; } mark_reactions(derived2, MAYBE_DIRTY); } } else if (not_dirty) { if ((flags2 & BLOCK_EFFECT) !== 0) { if (eager_block_effects !== null) { eager_block_effects.add( reaction ); } } schedule_effect( reaction ); } } } function proxy(value) { if (typeof value !== "object" || value === null || STATE_SYMBOL in value) { return value; } const prototype = get_prototype_of(value); if (prototype !== object_prototype && prototype !== array_prototype) { return value; } var sources = new Map(); var is_proxied_array = is_array(value); var version = state(0); var parent_version = update_version; var with_parent = (fn) => { if (update_version === parent_version) { return fn(); } var reaction = active_reaction; var version2 = update_version; set_active_reaction(null); set_update_version(parent_version); var result = fn(); set_active_reaction(reaction); set_update_version(version2); return result; }; if (is_proxied_array) { sources.set("length", state( value.length )); } return new Proxy( value, { defineProperty(_, prop2, descriptor) { if (!("value" in descriptor) || descriptor.configurable === false || descriptor.enumerable === false || descriptor.writable === false) { state_descriptors_fixed(); } var s = sources.get(prop2); if (s === void 0) { s = with_parent(() => { var s2 = state(descriptor.value); sources.set(prop2, s2); return s2; }); } else { set(s, descriptor.value, true); } return true; }, deleteProperty(target, prop2) { var s = sources.get(prop2); if (s === void 0) { if (prop2 in target) { const s2 = with_parent(() => state(UNINITIALIZED)); sources.set(prop2, s2); increment(version); } } else { set(s, UNINITIALIZED); increment(version); } return true; }, get(target, prop2, receiver) { if (prop2 === STATE_SYMBOL) { return value; } var s = sources.get(prop2); var exists = prop2 in target; if (s === void 0 && (!exists || get_descriptor(target, prop2)?.writable)) { s = with_parent(() => { var p = proxy(exists ? target[prop2] : UNINITIALIZED); var s2 = state(p); return s2; }); sources.set(prop2, s); } if (s !== void 0) { var v = get(s); return v === UNINITIALIZED ? void 0 : v; } return Reflect.get(target, prop2, receiver); }, getOwnPropertyDescriptor(target, prop2) { var descriptor = Reflect.getOwnPropertyDescriptor(target, prop2); if (descriptor && "value" in descriptor) { var s = sources.get(prop2); if (s) descriptor.value = get(s); } else if (descriptor === void 0) { var source2 = sources.get(prop2); var value2 = source2?.v; if (source2 !== void 0 && value2 !== UNINITIALIZED) { return { enumerable: true, configurable: true, value: value2, writable: true }; } } return descriptor; }, has(target, prop2) { if (prop2 === STATE_SYMBOL) { return true; } var s = sources.get(prop2); var has = s !== void 0 && s.v !== UNINITIALIZED || Reflect.has(target, prop2); if (s !== void 0 || active_effect !== null && (!has || get_descriptor(target, prop2)?.writable)) { if (s === void 0) { s = with_parent(() => { var p = has ? proxy(target[prop2]) : UNINITIALIZED; var s2 = state(p); return s2; }); sources.set(prop2, s); } var value2 = get(s); if (value2 === UNINITIALIZED) { return false; } } return has; }, set(target, prop2, value2, receiver) { var s = sources.get(prop2); var has = prop2 in target; if (is_proxied_array && prop2 === "length") { for (var i = value2; i < s.v; i += 1) { var other_s = sources.get(i + ""); if (other_s !== void 0) { set(other_s, UNINITIALIZED); } else if (i in target) { other_s = with_parent(() => state(UNINITIALIZED)); sources.set(i + "", other_s); } } } if (s === void 0) { if (!has || get_descriptor(target, prop2)?.writable) { s = with_parent(() => state(void 0)); set(s, proxy(value2)); sources.set(prop2, s); } } else { has = s.v !== UNINITIALIZED; var p = with_parent(() => proxy(value2)); set(s, p); } var descriptor = Reflect.getOwnPropertyDescriptor(target, prop2); if (descriptor?.set) { descriptor.set.call(receiver, value2); } if (!has) { if (is_proxied_array && typeof prop2 === "string") { var ls = ( sources.get("length") ); var n = Number(prop2); if (Number.isInteger(n) && n >= ls.v) { set(ls, n + 1); } } increment(version); } return true; }, ownKeys(target) { get(version); var own_keys = Reflect.ownKeys(target).filter((key2) => { var source3 = sources.get(key2); return source3 === void 0 || source3.v !== UNINITIALIZED; }); for (var [key, source2] of sources) { if (source2.v !== UNINITIALIZED && !(key in target)) { own_keys.push(key); } } return own_keys; }, setPrototypeOf() { state_prototype_fixed(); } } ); } var $window; var is_firefox; var first_child_getter; var next_sibling_getter; function init_operations() { if ($window !== void 0) { return; } $window = window; is_firefox = /Firefox/.test(navigator.userAgent); var element_prototype = Element.prototype; var node_prototype = Node.prototype; var text_prototype = Text.prototype; first_child_getter = get_descriptor(node_prototype, "firstChild").get; next_sibling_getter = get_descriptor(node_prototype, "nextSibling").get; if (is_extensible(element_prototype)) { element_prototype.__click = void 0; element_prototype.__className = void 0; element_prototype.__attributes = null; element_prototype.__style = void 0; element_prototype.__e = void 0; } if (is_extensible(text_prototype)) { text_prototype.__t = void 0; } } function create_text(value = "") { return document.createTextNode(value); } function get_first_child(node) { return first_child_getter.call(node); } function get_next_sibling(node) { return next_sibling_getter.call(node); } function child(node, is_text) { { return get_first_child(node); } } function without_reactive_context(fn) { var previous_reaction = active_reaction; var previous_effect = active_effect; set_active_reaction(null); set_active_effect(null); try { return fn(); } finally { set_active_reaction(previous_reaction); set_active_effect(previous_effect); } } function validate_effect(rune) { if (active_effect === null) { if (active_reaction === null) { effect_orphan(); } effect_in_unowned_derived(); } if (is_destroying_effect) { effect_in_teardown(); } } function push_effect(effect2, parent_effect) { var parent_last = parent_effect.last; if (parent_last === null) { parent_effect.last = parent_effect.first = effect2; } else { parent_last.next = effect2; effect2.prev = parent_last; parent_effect.last = effect2; } } function create_effect(type, fn, sync, push2 = true) { var parent = active_effect; if (parent !== null && (parent.f & INERT) !== 0) { type |= INERT; } var effect2 = { ctx: component_context, deps: null, nodes_start: null, nodes_end: null, f: type | DIRTY | CONNECTED, first: null, fn, last: null, next: null, parent, b: parent && parent.b, prev: null, teardown: null, transitions: null, wv: 0, ac: null }; if (sync) { try { update_effect(effect2); effect2.f |= EFFECT_RAN; } catch (e2) { destroy_effect(effect2); throw e2; } } else if (fn !== null) { schedule_effect(effect2); } if (push2) { var e = effect2; if (sync && e.deps === null && e.teardown === null && e.nodes_start === null && e.first === e.last && (e.f & EFFECT_PRESERVED) === 0) { e = e.first; if ((type & BLOCK_EFFECT) !== 0 && (type & EFFECT_TRANSPARENT) !== 0 && e !== null) { e.f |= EFFECT_TRANSPARENT; } } if (e !== null) { e.parent = parent; if (parent !== null) { push_effect(e, parent); } if (active_reaction !== null && (active_reaction.f & DERIVED) !== 0 && (type & ROOT_EFFECT) === 0) { var derived2 = ( active_reaction ); (derived2.effects ??= []).push(e); } } } return effect2; } function effect_tracking() { return active_reaction !== null && !untracking; } function user_effect(fn) { validate_effect(); var flags2 = ( active_effect.f ); var defer = !active_reaction && (flags2 & BRANCH_EFFECT) !== 0 && (flags2 & EFFECT_RAN) === 0; if (defer) { var context = ( component_context ); (context.e ??= []).push(fn); } else { return create_user_effect(fn); } } function create_user_effect(fn) { return create_effect(EFFECT | USER_EFFECT, fn, false); } function user_pre_effect(fn) { validate_effect(); return create_effect(RENDER_EFFECT | USER_EFFECT, fn, true); } function component_root(fn) { Batch.ensure(); const effect2 = create_effect(ROOT_EFFECT | EFFECT_PRESERVED, fn, true); return (options = {}) => { return new Promise((fulfil) => { if (options.outro) { pause_effect(effect2, () => { destroy_effect(effect2); fulfil(void 0); }); } else { destroy_effect(effect2); fulfil(void 0); } }); }; } function effect(fn) { return create_effect(EFFECT, fn, false); } function legacy_pre_effect(deps, fn) { var context = ( component_context ); var token = { effect: null, ran: false, deps }; context.l.$.push(token); token.effect = render_effect(() => { deps(); if (token.ran) return; token.ran = true; untrack(fn); }); } function legacy_pre_effect_reset() { var context = ( component_context ); render_effect(() => { for (var token of context.l.$) { token.deps(); var effect2 = token.effect; if ((effect2.f & CLEAN) !== 0) { set_signal_status(effect2, MAYBE_DIRTY); } if (is_dirty(effect2)) { update_effect(effect2); } token.ran = false; } }); } function render_effect(fn, flags2 = 0) { return create_effect(RENDER_EFFECT | flags2, fn, true); } function block(fn, flags2 = 0) { var effect2 = create_effect(BLOCK_EFFECT | flags2, fn, true); return effect2; } function branch(fn, push2 = true) { return create_effect(BRANCH_EFFECT | EFFECT_PRESERVED, fn, true, push2); } function execute_effect_teardown(effect2) { var teardown = effect2.teardown; if (teardown !== null) { const previously_destroying_effect = is_destroying_effect; const previous_reaction = active_reaction; set_is_destroying_effect(true); set_active_reaction(null); try { teardown.call(null); } finally { set_is_destroying_effect(previously_destroying_effect); set_active_reaction(previous_reaction); } } } function destroy_effect_children(signal, remove_dom = false) { var effect2 = signal.first; signal.first = signal.last = null; while (effect2 !== null) { const controller = effect2.ac; if (controller !== null) { without_reactive_context(() => { controller.abort(STALE_REACTION); }); } var next = effect2.next; if ((effect2.f & ROOT_EFFECT) !== 0) { effect2.parent = null; } else { destroy_effect(effect2, remove_dom); } effect2 = next; } } function destroy_block_effect_children(signal) { var effect2 = signal.first; while (effect2 !== null) { var next = effect2.next; if ((effect2.f & BRANCH_EFFECT) === 0) { destroy_effect(effect2); } effect2 = next; } } function destroy_effect(effect2, remove_dom = true) { var removed = false; if ((remove_dom || (effect2.f & HEAD_EFFECT) !== 0) && effect2.nodes_start !== null && effect2.nodes_end !== null) { remove_effect_dom( effect2.nodes_start, effect2.nodes_end ); removed = true; } destroy_effect_children(effect2, remove_dom && !removed); remove_reactions(effect2, 0); set_signal_status(effect2, DESTROYED); var transitions = effect2.transitions; if (transitions !== null) { for (const transition of transitions) { transition.stop(); } } execute_effect_teardown(effect2); var parent = effect2.parent; if (parent !== null && parent.first !== null) { unlink_effect(effect2); } effect2.next = effect2.prev = effect2.teardown = effect2.ctx = effect2.deps = effect2.fn = effect2.nodes_start = effect2.nodes_end = effect2.ac = null; } function remove_effect_dom(node, end) { while (node !== null) { var next = node === end ? null : ( get_next_sibling(node) ); node.remove(); node = next; } } function unlink_effect(effect2) { var parent = effect2.parent; var prev = effect2.prev; var next = effect2.next; if (prev !== null) prev.next = next; if (next !== null) next.prev = prev; if (parent !== null) { if (parent.first === effect2) parent.first = next; if (parent.last === effect2) parent.last = prev; } } function pause_effect(effect2, callback, destroy = true) { var transitions = []; pause_children(effect2, transitions, true); run_out_transitions(transitions, () => { if (destroy) destroy_effect(effect2); if (callback) callback(); }); } function run_out_transitions(transitions, fn) { var remaining = transitions.length; if (remaining > 0) { var check = () => --remaining || fn(); for (var transition of transitions) { transition.out(check); } } else { fn(); } } function pause_children(effect2, transitions, local) { if ((effect2.f & INERT) !== 0) return; effect2.f ^= INERT; if (effect2.transitions !== null) { for (const transition of effect2.transitions) { if (transition.is_global || local) { transitions.push(transition); } } } var child2 = effect2.first; while (child2 !== null) { var sibling = child2.next; var transparent = (child2.f & EFFECT_TRANSPARENT) !== 0 || (child2.f & BRANCH_EFFECT) !== 0 && (effect2.f & BLOCK_EFFECT) !== 0; pause_children(child2, transitions, transparent ? local : false); child2 = sibling; } } function move_effect(effect2, fragment) { var node = effect2.nodes_start; var end = effect2.nodes_end; while (node !== null) { var next = node === end ? null : ( get_next_sibling(node) ); fragment.append(node); node = next; } } let is_updating_effect = false; function set_is_updating_effect(value) { is_updating_effect = value; } let is_destroying_effect = false; function set_is_destroying_effect(value) { is_destroying_effect = value; } let active_reaction = null; let untracking = false; function set_active_reaction(reaction) { active_reaction = reaction; } let active_effect = null; function set_active_effect(effect2) { active_effect = effect2; } let current_sources = null; function push_reaction_value(value) { if (active_reaction !== null && true) { if (current_sources === null) { current_sources = [value]; } else { current_sources.push(value); } } } let new_deps = null; let skipped_deps = 0; let untracked_writes = null; function set_untracked_writes(value) { untracked_writes = value; } let write_version = 1; let read_version = 0; let update_version = read_version; function set_update_version(value) { update_version = value; } function increment_write_version() { return ++write_version; } function is_dirty(reaction) { var flags2 = reaction.f; if ((flags2 & DIRTY) !== 0) { return true; } if (flags2 & DERIVED) { reaction.f &= ~WAS_MARKED; } if ((flags2 & MAYBE_DIRTY) !== 0) { var dependencies = reaction.deps; if (dependencies !== null) { var length = dependencies.length; for (var i = 0; i < length; i++) { var dependency = dependencies[i]; if (is_dirty( dependency )) { update_derived( dependency ); } if (dependency.wv > reaction.wv) { return true; } } } if ((flags2 & CONNECTED) !== 0 && batch_values === null) { set_signal_status(reaction, CLEAN); } } return false; } function schedule_possible_effect_self_invalidation(signal, effect2, root2 = true) { var reactions = signal.reactions; if (reactions === null) return; if (current_sources?.includes(signal)) { return; } for (var i = 0; i < reactions.length; i++) { var reaction = reactions[i]; if ((reaction.f & DERIVED) !== 0) { schedule_possible_effect_self_invalidation( reaction, effect2, false ); } else if (effect2 === reaction) { if (root2) { set_signal_status(reaction, DIRTY); } else if ((reaction.f & CLEAN) !== 0) { set_signal_status(reaction, MAYBE_DIRTY); } schedule_effect( reaction ); } } } function update_reaction(reaction) { var previous_deps = new_deps; var previous_skipped_deps = skipped_deps; var previous_untracked_writes = untracked_writes; var previous_reaction = active_reaction; var previous_sources = current_sources; var previous_component_context = component_context; var previous_untracking = untracking; var previous_update_version = update_version; var flags2 = reaction.f; new_deps = null; skipped_deps = 0; untracked_writes = null; active_reaction = (flags2 & (BRANCH_EFFECT | ROOT_EFFECT)) === 0 ? reaction : null; current_sources = null; set_component_context(reaction.ctx); untracking = false; update_version = ++read_version; if (reaction.ac !== null) { without_reactive_context(() => { reaction.ac.abort(STALE_REACTION); }); reaction.ac = null; } try { reaction.f |= REACTION_IS_UPDATING; var fn = ( reaction.fn ); var result = fn(); var deps = reaction.deps; if (new_deps !== null) { var i; remove_reactions(reaction, skipped_deps); if (deps !== null && skipped_deps > 0) { deps.length = skipped_deps + new_deps.length; for (i = 0; i < new_deps.length; i++) { deps[skipped_deps + i] = new_deps[i]; } } else { reaction.deps = deps = new_deps; } if (is_updating_effect && effect_tracking() && (reaction.f & CONNECTED) !== 0) { for (i = skipped_deps; i < deps.length; i++) { (deps[i].reactions ??= []).push(reaction); } } } else if (deps !== null && skipped_deps < deps.length) { remove_reactions(reaction, skipped_deps); deps.length = skipped_deps; } if (is_runes() && untracked_writes !== null && !untracking && deps !== null && (reaction.f & (DERIVED | MAYBE_DIRTY | DIRTY)) === 0) { for (i = 0; i < untracked_writes.length; i++) { schedule_possible_effect_self_invalidation( untracked_writes[i], reaction ); } } if (previous_reaction !== null && previous_reaction !== reaction) { read_version++; if (untracked_writes !== null) { if (previous_untracked_writes === null) { previous_untracked_writes = untracked_writes; } else { previous_untracked_writes.push(... untracked_writes); } } } if ((reaction.f & ERROR_VALUE) !== 0) { reaction.f ^= ERROR_VALUE; } return result; } catch (error) { return handle_error(error); } finally { reaction.f ^= REACTION_IS_UPDATING; new_deps = previous_deps; skipped_deps = previous_skipped_deps; untracked_writes = previous_untracked_writes; active_reaction = previous_reaction; current_sources = previous_sources; set_component_context(previous_component_context); untracking = previous_untracking; update_version = previous_update_version; } } function remove_reaction(signal, dependency) { let reactions = dependency.reactions; if (reactions !== null) { var index = index_of.call(reactions, signal); if (index !== -1) { var new_length = reactions.length - 1; if (new_length === 0) { reactions = dependency.reactions = null; } else { reactions[index] = reactions[new_length]; reactions.pop(); } } } if (reactions === null && (dependency.f & DERIVED) !== 0 && (new_deps === null || !new_deps.includes(dependency))) { set_signal_status(dependency, MAYBE_DIRTY); if ((dependency.f & CONNECTED) !== 0) { dependency.f ^= CONNECTED; dependency.f &= ~WAS_MARKED; } destroy_derived_effects( dependency ); remove_reactions( dependency, 0 ); } } function remove_reactions(signal, start_index) { var dependencies = signal.deps; if (dependencies === null) return; for (var i = start_index; i < dependencies.length; i++) { remove_reaction(signal, dependencies[i]); } } function update_effect(effect2) { var flags2 = effect2.f; if ((flags2 & DESTROYED) !== 0) { return; } set_signal_status(effect2, CLEAN); var previous_effect = active_effect; var was_updating_effect = is_updating_effect; active_effect = effect2; is_updating_effect = true; try { if ((flags2 & BLOCK_EFFECT) !== 0) { destroy_block_effect_children(effect2); } else { destroy_effect_children(effect2); } execute_effect_teardown(effect2); var teardown = update_reaction(effect2); effect2.teardown = typeof teardown === "function" ? teardown : null; effect2.wv = write_version; var dep; if (DEV && tracing_mode_flag && (effect2.f & DIRTY) !== 0 && effect2.deps !== null) ; } finally { is_updating_effect = was_updating_effect; active_effect = previous_effect; } } function get(signal) { var flags2 = signal.f; var is_derived = (flags2 & DERIVED) !== 0; if (active_reaction !== null && !untracking) { var destroyed = active_effect !== null && (active_effect.f & DESTROYED) !== 0; if (!destroyed && !current_sources?.includes(signal)) { var deps = active_reaction.deps; if ((active_reaction.f & REACTION_IS_UPDATING) !== 0) { if (signal.rv < read_version) { signal.rv = read_version; if (new_deps === null && deps !== null && deps[skipped_deps] === signal) { skipped_deps++; } else if (new_deps === null) { new_deps = [signal]; } else if (!new_deps.includes(signal)) { new_deps.push(signal); } } } else { (active_reaction.deps ??= []).push(signal); var reactions = signal.reactions; if (reactions === null) { signal.reactions = [active_reaction]; } else if (!reactions.includes(active_reaction)) { reactions.push(active_reaction); } } } } if (is_destroying_effect) { if (old_values.has(signal)) { return old_values.get(signal); } if (is_derived) { var derived2 = ( signal ); var value = derived2.v; if ((derived2.f & CLEAN) === 0 && derived2.reactions !== null || depends_on_old_values(derived2)) { value = execute_derived(derived2); } old_values.set(derived2, value); return value; } } else if (is_derived) { derived2 = signal; if (batch_values?.has(derived2)) { return batch_values.get(derived2); } if (is_dirty(derived2)) { update_derived(derived2); } if (is_updating_effect && effect_tracking() && (derived2.f & CONNECTED) === 0) { reconnect(derived2); } } else if (batch_values?.has(signal)) { return batch_values.get(signal); } if ((signal.f & ERROR_VALUE) !== 0) { throw signal.v; } return signal.v; } function reconnect(derived2) { if (derived2.deps === null) return; derived2.f ^= CONNECTED; for (const dep of derived2.deps) { (dep.reactions ??= []).push(derived2); if ((dep.f & DERIVED) !== 0 && (dep.f & CONNECTED) === 0) { reconnect( dep ); } } } function depends_on_old_values(derived2) { if (derived2.v === UNINITIALIZED) return true; if (derived2.deps === null) return false; for (const dep of derived2.deps) { if (old_values.has(dep)) { return true; } if ((dep.f & DERIVED) !== 0 && depends_on_old_values( dep )) { return true; } } return false; } function untrack(fn) { var previous_untracking = untracking; try { untracking = true; return fn(); } finally { untracking = previous_untracking; } } const STATUS_MASK = -7169; function set_signal_status(signal, status) { signal.f = signal.f & STATUS_MASK | status; } function deep_read_state(value) { if (typeof value !== "object" || !value || value instanceof EventTarget) { return; } if (STATE_SYMBOL in value) { deep_read(value); } else if (!Array.isArray(value)) { for (let key in value) { const prop2 = value[key]; if (typeof prop2 === "object" && prop2 && STATE_SYMBOL in prop2) { deep_read(prop2); } } } } function deep_read(value, visited = new Set()) { if (typeof value === "object" && value !== null && !(value instanceof EventTarget) && !visited.has(value)) { visited.add(value); if (value instanceof Date) { value.getTime(); } for (let key in value) { try { deep_read(value[key], visited); } catch (e) { } } const proto = get_prototype_of(value); if (proto !== Object.prototype && proto !== Array.prototype && proto !== Map.prototype && proto !== Set.prototype && proto !== Date.prototype) { const descriptors = get_descriptors(proto); for (let key in descriptors) { const get2 = descriptors[key].get; if (get2) { try { get2.call(value); } catch (e) { } } } } } } const all_registered_events = new Set(); const root_event_handles = new Set(); let last_propagated_event = null; function handle_event_propagation(event) { var handler_element = this; var owner_document = ( handler_element.ownerDocument ); var event_name = event.type; var path = event.composedPath?.() || []; var current_target = ( path[0] || event.target ); last_propagated_event = event; var path_idx = 0; var handled_at = last_propagated_event === event && event.__root; if (handled_at) { var at_idx = path.indexOf(handled_at); if (at_idx !== -1 && (handler_element === document || handler_element === window)) { event.__root = handler_element; return; } var handler_idx = path.indexOf(handler_element); if (handler_idx === -1) { return; } if (at_idx <= handler_idx) { path_idx = at_idx; } } current_target = path[path_idx] || event.target; if (current_target === handler_element) return; define_property(event, "currentTarget", { configurable: true, get() { return current_target || owner_document; } }); var previous_reaction = active_reaction; var previous_effect = active_effect; set_active_reaction(null); set_active_effect(null); try { var throw_error; var other_errors = []; while (current_target !== null) { var parent_element = current_target.assignedSlot || current_target.parentNode || current_target.host || null; try { var delegated = current_target["__" + event_name]; if (delegated != null && (! current_target.disabled || event.target === current_target)) { delegated.call(current_target, event); } } catch (error) { if (throw_error) { other_errors.push(error); } else { throw_error = error; } } if (event.cancelBubble || parent_element === handler_element || parent_element === null) { break; } current_target = parent_element; } if (throw_error) { for (let error of other_errors) { queueMicrotask(() => { throw error; }); } throw throw_error; } } finally { event.__root = handler_element; delete event.currentTarget; set_active_reaction(previous_reaction); set_active_effect(previous_effect); } } function create_fragment_from_html(html) { var elem = document.createElement("template"); elem.innerHTML = html.replaceAll("", ""); return elem.content; } function assign_nodes(start, end) { var effect2 = ( active_effect ); if (effect2.nodes_start === null) { effect2.nodes_start = start; effect2.nodes_end = end; } } function from_html(content, flags2) { var node; var has_start = !content.startsWith(""); return () => { if (node === void 0) { node = create_fragment_from_html(has_start ? content : "" + content); node = get_first_child(node); } var clone = ( is_firefox ? document.importNode(node, true) : node.cloneNode(true) ); { assign_nodes(clone, clone); } return clone; }; } function append(anchor, dom) { if (anchor === null) { return; } anchor.before( dom ); } const PASSIVE_EVENTS = ["touchstart", "touchmove"]; function is_passive_event(name) { return PASSIVE_EVENTS.includes(name); } function mount(component, options) { return _mount(component, options); } const document_listeners = new Map(); function _mount(Component, { target, anchor, props = {}, events, context, intro = true }) { init_operations(); var registered_events = new Set(); var event_handle = (events2) => { for (var i = 0; i < events2.length; i++) { var event_name = events2[i]; if (registered_events.has(event_name)) continue; registered_events.add(event_name); var passive = is_passive_event(event_name); target.addEventListener(event_name, handle_event_propagation, { passive }); var n = document_listeners.get(event_name); if (n === void 0) { document.addEventListener(event_name, handle_event_propagation, { passive }); document_listeners.set(event_name, 1); } else { document_listeners.set(event_name, n + 1); } } }; event_handle(array_from(all_registered_events)); root_event_handles.add(event_handle); var component = void 0; var unmount = component_root(() => { var anchor_node = anchor ?? target.appendChild(create_text()); boundary( anchor_node, { pending: () => { } }, (anchor_node2) => { if (context) { push({}); var ctx = ( component_context ); ctx.c = context; } if (events) { props.$$events = events; } component = Component(anchor_node2, props) || {}; if (context) { pop(); } } ); return () => { for (var event_name of registered_events) { target.removeEventListener(event_name, handle_event_propagation); var n = ( document_listeners.get(event_name) ); if (--n === 0) { document.removeEventListener(event_name, handle_event_propagation); document_listeners.delete(event_name); } else { document_listeners.set(event_name, n); } } root_event_handles.delete(event_handle); if (anchor_node !== anchor) { anchor_node.parentNode?.removeChild(anchor_node); } }; }); mounted_components.set(component, unmount); return component; } let mounted_components = new WeakMap(); function onMount(fn) { if (component_context === null) { lifecycle_outside_component(); } if (legacy_mode_flag && component_context.l !== null) { init_update_callbacks(component_context).m.push(fn); } else { user_effect(() => { const cleanup = untrack(fn); if (typeof cleanup === "function") return ( cleanup ); }); } } function init_update_callbacks(context) { var l = ( context.l ); return l.u ??= { a: [], b: [], m: [] }; } function is_bound_this(bound_value, element_or_component) { return bound_value === element_or_component || bound_value?.[STATE_SYMBOL] === element_or_component; } function bind_this(element_or_component = {}, update, get_value, get_parts) { effect(() => { var old_parts; var parts; render_effect(() => { old_parts = parts; parts = []; untrack(() => { if (element_or_component !== get_value(...parts)) { update(element_or_component, ...parts); if (old_parts && is_bound_this(get_value(...old_parts), element_or_component)) { update(null, ...old_parts); } } }); }); return () => { queue_micro_task(() => { if (parts && is_bound_this(get_value(...parts), element_or_component)) { update(null, ...parts); } }); }; }); return element_or_component; } function init(immutable = false) { const context = ( component_context ); const callbacks = context.l.u; if (!callbacks) return; let props = () => deep_read_state(context.s); if (immutable) { let version = 0; let prev = ( {} ); const d = derived(() => { let changed = false; const props2 = context.s; for (const key in props2) { if (props2[key] !== prev[key]) { prev[key] = props2[key]; changed = true; } } if (changed) version++; return version; }); props = () => get(d); } if (callbacks.b.length) { user_pre_effect(() => { observe_all(context, props); run_all(callbacks.b); }); } user_effect(() => { const fns = untrack(() => callbacks.m.map(run)); return () => { for (const fn of fns) { if (typeof fn === "function") { fn(); } } }; }); if (callbacks.a.length) { user_effect(() => { observe_all(context, props); run_all(callbacks.a); }); } } function observe_all(context, props) { if (context.l.s) { for (const signal of context.l.s) get(signal); } props(); } let is_store_binding = false; function capture_store_binding(fn) { var previous_is_store_binding = is_store_binding; try { is_store_binding = false; return [fn(), is_store_binding]; } finally { is_store_binding = previous_is_store_binding; } } function prop(props, key, flags2, fallback) { var runes = !legacy_mode_flag || (flags2 & PROPS_IS_RUNES) !== 0; var bindable = (flags2 & PROPS_IS_BINDABLE) !== 0; var fallback_value = ( fallback ); var fallback_dirty = true; var get_fallback = () => { if (fallback_dirty) { fallback_dirty = false; fallback_value = fallback; } return fallback_value; }; var setter; { var is_entry_props = STATE_SYMBOL in props || LEGACY_PROPS in props; setter = get_descriptor(props, key)?.set ?? (is_entry_props && key in props ? (v) => props[key] = v : void 0); } var initial_value; var is_store_sub = false; { [initial_value, is_store_sub] = capture_store_binding(() => ( props[key] )); } if (initial_value === void 0 && fallback !== void 0) { initial_value = get_fallback(); if (setter) { if (runes) props_invalid_value(); setter(initial_value); } } var getter; if (runes) { getter = () => { var value = ( props[key] ); if (value === void 0) return get_fallback(); fallback_dirty = true; return value; }; } else { getter = () => { var value = ( props[key] ); if (value !== void 0) { fallback_value = void 0; } return value === void 0 ? fallback_value : value; }; } if (runes && (flags2 & PROPS_IS_UPDATED) === 0) { return getter; } if (setter) { var legacy_parent = props.$$legacy; return ( (function(value, mutation) { if (arguments.length > 0) { if (!runes || !mutation || legacy_parent || is_store_sub) { setter(mutation ? getter() : value); } return value; } return getter(); }) ); } var overridden = false; var d = derived_safe_equal(() => { overridden = false; return getter(); }); get(d); var parent_effect = ( active_effect ); return ( (function(value, mutation) { if (arguments.length > 0) { const new_value = mutation ? get(d) : runes && bindable ? proxy(value) : value; set(d, new_value); overridden = true; if (fallback_value !== void 0) { fallback_value = new_value; } return value; } if (is_destroying_effect && overridden || (parent_effect.f & DESTROYED) !== 0) { return d.v; } return get(d); }) ); } var root$1 = from_html(`