// ==UserScript== // @name wplace-tile-dump // @namespace npm/vite-plugin-monkey // @version 0.0.2 // @icon https://vitejs.dev/logo.svg // @match https://wplace.live/ // @grant GM_addStyle // ==/UserScript== (function () { 'use strict'; const d$1=new Set;const e$1 = async e=>{d$1.has(e)||(d$1.add(e),(t=>{typeof GM_addStyle=="function"?GM_addStyle(t):document.head.appendChild(document.createElement("style")).append(t);})(e));}; e$1(" .tile.svelte-z2wwqn{border:solid 2px transparent}.tile.svelte-z2wwqn:hover{border-color:var(--tile-dumper-primary)}html{--tile-dumper-primary: oklch(.7 .1577 160)}.tile-dumper.svelte-vdvg2k{position:absolute;inset:0 auto auto 0;width:100vw;aspect-ratio:1 / 1;overflow-x:scroll;background-color:#fffffff0}.tile-list.svelte-vdvg2k{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;padding:10px}.title-bar.svelte-vdvg2k{display:flex;flex-flow:row nowrap;justify-content:space-between;cursor:grab;color:#fff;background-color:var(--tile-dumper-primary)}.title-bar.svelte-vdvg2k h2:where(.svelte-vdvg2k){display:inline-block;font-weight:700}.title-bar.svelte-vdvg2k .bar-start:where(.svelte-vdvg2k),.title-bar.svelte-vdvg2k .bar-end:where(.svelte-vdvg2k){display:flex;align-items:center}.title-bar.svelte-vdvg2k .bar-start:where(.svelte-vdvg2k){flex:1 0 max-content;padding-left:5px;justify-content:flex-start}.title-bar.svelte-vdvg2k .bar-end:where(.svelte-vdvg2k){flex:0 1 min-content;padding-right:5px;justify-content:flex-end}.title-bar.svelte-vdvg2k svg:where(.svelte-vdvg2k){color:#fff;width:1rem;aspect-ratio:1 / 1}@media (min-width: 768px){.tile-dumper.svelte-vdvg2k{width:35vw}} "); 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_all(arr) { for (var i2 = 0; i2 < arr.length; i2++) { arr[i2](); } } 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 UNOWNED = 1 << 8; const DISCONNECTED = 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 INSPECT_EFFECT = 1 << 17; const HEAD_EFFECT = 1 << 18; const EFFECT_PRESERVED = 1 << 19; const USER_EFFECT = 1 << 20; const REACTION_IS_UPDATING = 1 << 21; const ASYNC = 1 << 22; const ERROR_VALUE = 1 << 23; const STATE_SYMBOL = Symbol("$state"); const LOADING_ATTR_SYMBOL = Symbol(""); const STALE_REACTION = new class StaleReactionError extends Error { name = "StaleReactionError"; message = "The reaction that called `getAbortSignal()` was re-run or destroyed"; }(); function await_outside_boundary() { { throw new Error(`https://svelte.dev/e/await_outside_boundary`); } } function async_derived_orphan() { { throw new Error(`https://svelte.dev/e/async_derived_orphan`); } } function effect_update_depth_exceeded() { { throw new Error(`https://svelte.dev/e/effect_update_depth_exceeded`); } } 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`); } } const EACH_ITEM_REACTIVE = 1; const EACH_INDEX_REACTIVE = 1 << 1; const EACH_ITEM_IMMUTABLE = 1 << 4; const UNINITIALIZED = Symbol(); const NAMESPACE_HTML = "http://www.w3.org/1999/xhtml"; let hydrating = false; function equals(value) { return value === this.v; } function safe_not_equal(a2, b) { return a2 != a2 ? b == b : a2 !== b || a2 !== null && typeof a2 === "object" || typeof a2 === "function"; } function safe_equals(value) { return !safe_not_equal(value, this.v); } let tracing_mode_flag = false; let component_context = null; function set_component_context(context) { component_context = context; } function push(props, runes = false, fn) { component_context = { p: component_context, c: null, e: null, s: props, x: null, l: null }; } function pop(component) { var context = ( /** @type {ComponentContext} */ component_context ); var effects = context.e; if (effects !== null) { context.e = null; for (var fn of effects) { create_user_effect(fn); } } component_context = context.p; return ( /** @type {T} */ {} ); } function is_runes() { return true; } const adjustments = /* @__PURE__ */ new WeakMap(); 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) { if (!effect2.parent && error instanceof Error) { apply_adjustments(error); } 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 (e2) { error = e2; } } effect2 = effect2.parent; } if (error instanceof Error) { apply_adjustments(error); } throw error; } function apply_adjustments(error) { const adjusted = adjustments.get(error); if (adjusted) { define_property(error, "message", { value: adjusted.message }); define_property(error, "stack", { value: adjusted.stack }); } } let micro_tasks = []; function run_micro_tasks() { var tasks2 = micro_tasks; micro_tasks = []; run_all(tasks2); } function queue_micro_task(fn) { if (micro_tasks.length === 0) { queueMicrotask(run_micro_tasks); } micro_tasks.push(fn); } function get_pending_boundary() { var boundary = ( /** @type {Effect} */ active_effect.b ); while (boundary !== null && !boundary.has_pending_snippet()) { boundary = boundary.parent; } if (boundary === null) { await_outside_boundary(); } return boundary; } // @__NO_SIDE_EFFECTS__ function derived(fn) { var flags = DERIVED | DIRTY; var parent_derived = active_reaction !== null && (active_reaction.f & DERIVED) !== 0 ? ( /** @type {Derived} */ active_reaction ) : null; if (active_effect === null || parent_derived !== null && (parent_derived.f & UNOWNED) !== 0) { flags |= UNOWNED; } else { active_effect.f |= EFFECT_PRESERVED; } const signal = { ctx: component_context, deps: null, effects: null, equals, f: flags, fn, reactions: null, rv: 0, v: ( /** @type {V} */ UNINITIALIZED ), wv: 0, parent: parent_derived ?? active_effect, ac: null }; return signal; } // @__NO_SIDE_EFFECTS__ function async_derived(fn, location) { let parent = ( /** @type {Effect | null} */ active_effect ); if (parent === null) { async_derived_orphan(); } var boundary = ( /** @type {Boundary} */ parent.b ); var promise = ( /** @type {Promise} */ /** @type {unknown} */ void 0 ); var signal = source( /** @type {V} */ UNINITIALIZED ); var prev = null; var should_suspend = !active_reaction; async_effect(() => { try { var p = fn(); } catch (error) { p = Promise.reject(error); } var r2 = () => p; promise = prev?.then(r2, r2) ?? Promise.resolve(p); prev = promise; var batch = ( /** @type {Batch} */ current_batch ); var pending = boundary.pending; if (should_suspend) { boundary.update_pending_count(1); if (!pending) batch.increment(); } const handler = (value, error = void 0) => { prev = null; if (!pending) batch.activate(); if (error) { if (error !== STALE_REACTION) { signal.f |= ERROR_VALUE; internal_set(signal, error); } } else { if ((signal.f & ERROR_VALUE) !== 0) { signal.f ^= ERROR_VALUE; } internal_set(signal, value); } if (should_suspend) { boundary.update_pending_count(-1); if (!pending) batch.decrement(); } unset_context(); }; promise.then(handler, (e2) => handler(null, e2 || "unknown")); if (batch) { return () => { queueMicrotask(() => batch.neuter()); }; } }); return new Promise((fulfil) => { function next(p) { function go() { if (p === promise) { fulfil(signal); } else { next(promise); } } p.then(go, go); } next(promise); }); } // @__NO_SIDE_EFFECTS__ function derived_safe_equal(fn) { const signal = /* @__PURE__ */ 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 i2 = 0; i2 < effects.length; i2 += 1) { destroy_effect( /** @type {Effect} */ effects[i2] ); } } } function get_derived_parent_effect(derived2) { var parent = derived2.parent; while (parent !== null) { if ((parent.f & DERIVED) === 0) { return ( /** @type {Effect} */ 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 { 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_deriveds !== null) { batch_deriveds.set(derived2, derived2.v); } else { var status = (skip_reaction || (derived2.f & UNOWNED) !== 0) && derived2.deps !== null ? MAYBE_DIRTY : CLEAN; set_signal_status(derived2, status); } } function flatten(sync, async, fn) { const d2 = derived; if (async.length === 0) { fn(sync.map(d2)); return; } var batch = current_batch; var parent = ( /** @type {Effect} */ active_effect ); var restore = capture(); var boundary = get_pending_boundary(); Promise.all(async.map((expression) => /* @__PURE__ */ async_derived(expression))).then((result) => { batch?.activate(); restore(); try { fn([...sync.map(d2), ...result]); } catch (error) { if ((parent.f & DESTROYED) === 0) { invoke_error_boundary(error, parent); } } batch?.deactivate(); unset_context(); }).catch((error) => { boundary.error(error); }); } function capture() { var previous_effect = active_effect; var previous_reaction = active_reaction; var previous_component_context = component_context; return function restore() { set_active_effect(previous_effect); set_active_reaction(previous_reaction); set_component_context(previous_component_context); }; } function unset_context() { set_active_effect(null); set_active_reaction(null); set_component_context(null); } const batches = /* @__PURE__ */ new Set(); let current_batch = null; let batch_deriveds = null; let effect_pending_updates = /* @__PURE__ */ new Set(); let tasks = []; function dequeue() { const task = ( /** @type {() => void} */ tasks.shift() ); if (tasks.length > 0) { queueMicrotask(dequeue); } task(); } let queued_root_effects = []; let last_scheduled_effect = null; let is_flushing = false; class Batch { /** * The current values of any sources that are updated in this batch * They keys of this map are identical to `this.#previous` * @type {Map} */ current = /* @__PURE__ */ new Map(); /** * The values of any sources that are updated in this batch _before_ those updates took place. * They keys of this map are identical to `this.#current` * @type {Map} */ #previous = /* @__PURE__ */ new Map(); /** * When the batch is committed (and the DOM is updated), we need to remove old branches * and append new ones by calling the functions added inside (if/each/key/etc) blocks * @type {Set<() => void>} */ #callbacks = /* @__PURE__ */ new Set(); /** * The number of async effects that are currently in flight */ #pending = 0; /** * A deferred that resolves when the batch is committed, used with `settled()` * TODO replace with Promise.withResolvers once supported widely enough * @type {{ promise: Promise, resolve: (value?: any) => void, reject: (reason: unknown) => void } | null} */ #deferred = null; /** * True if an async effect inside this batch resolved and * its parent branch was already deleted */ #neutered = false; /** * Async effects (created inside `async_derived`) encountered during processing. * These run after the rest of the batch has updated, since they should * always have the latest values * @type {Effect[]} */ #async_effects = []; /** * The same as `#async_effects`, but for effects inside a newly-created * `` — these do not prevent the batch from committing * @type {Effect[]} */ #boundary_async_effects = []; /** * Template effects and `$effect.pre` effects, which run when * a batch is committed * @type {Effect[]} */ #render_effects = []; /** * The same as `#render_effects`, but for `$effect` (which runs after) * @type {Effect[]} */ #effects = []; /** * Block effects, which may need to re-run on subsequent flushes * in order to update internal sources (e.g. each block items) * @type {Effect[]} */ #block_effects = []; /** * Deferred effects (which run after async work has completed) that are DIRTY * @type {Effect[]} */ #dirty_effects = []; /** * Deferred effects that are MAYBE_DIRTY * @type {Effect[]} */ #maybe_dirty_effects = []; /** * A set of branches that still exist, but will be destroyed when this batch * is committed — we skip over these during `process` * @type {Set} */ skipped_effects = /* @__PURE__ */ new Set(); /** * * @param {Effect[]} root_effects */ process(root_effects) { queued_root_effects = []; var current_values = null; if (batches.size > 1) { current_values = /* @__PURE__ */ new Map(); batch_deriveds = /* @__PURE__ */ new Map(); for (const [source2, current] of this.current) { current_values.set(source2, { v: source2.v, wv: source2.wv }); source2.v = current; } for (const batch of batches) { if (batch === this) continue; for (const [source2, previous] of batch.#previous) { if (!current_values.has(source2)) { current_values.set(source2, { v: source2.v, wv: source2.wv }); source2.v = previous; } } } } for (const root2 of root_effects) { this.#traverse_effect_tree(root2); } if (this.#async_effects.length === 0 && this.#pending === 0) { this.#commit(); var render_effects = this.#render_effects; var effects = this.#effects; this.#render_effects = []; this.#effects = []; this.#block_effects = []; current_batch = null; flush_queued_effects(render_effects); flush_queued_effects(effects); if (current_batch === null) { current_batch = this; } else { batches.delete(this); } this.#deferred?.resolve(); } else { this.#defer_effects(this.#render_effects); this.#defer_effects(this.#effects); this.#defer_effects(this.#block_effects); } if (current_values) { for (const [source2, { v, wv }] of current_values) { if (source2.wv <= wv) { source2.v = v; } } batch_deriveds = null; } for (const effect2 of this.#async_effects) { update_effect(effect2); } for (const effect2 of this.#boundary_async_effects) { update_effect(effect2); } this.#async_effects = []; this.#boundary_async_effects = []; } /** * Traverse the effect tree, executing effects or stashing * them for later execution as appropriate * @param {Effect} root */ #traverse_effect_tree(root2) { root2.f ^= CLEAN; var effect2 = root2.first; while (effect2 !== null) { var flags = effect2.f; var is_branch = (flags & (BRANCH_EFFECT | ROOT_EFFECT)) !== 0; var is_skippable_branch = is_branch && (flags & CLEAN) !== 0; var skip = is_skippable_branch || (flags & INERT) !== 0 || this.skipped_effects.has(effect2); if (!skip && effect2.fn !== null) { if (is_branch) { effect2.f ^= CLEAN; } else if ((flags & EFFECT) !== 0) { this.#effects.push(effect2); } else if ((flags & CLEAN) === 0) { if ((flags & ASYNC) !== 0) { var effects = effect2.b?.pending ? this.#boundary_async_effects : this.#async_effects; effects.push(effect2); } else if (is_dirty(effect2)) { if ((effect2.f & BLOCK_EFFECT) !== 0) this.#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) { effect2 = parent.next; parent = parent.parent; } } } /** * @param {Effect[]} effects */ #defer_effects(effects) { for (const e2 of effects) { const target = (e2.f & DIRTY) !== 0 ? this.#dirty_effects : this.#maybe_dirty_effects; target.push(e2); set_signal_status(e2, CLEAN); } effects.length = 0; } /** * Associate a change to a given source with the current * batch, noting its previous and current values * @param {Source} source * @param {any} value */ capture(source2, value) { if (!this.#previous.has(source2)) { this.#previous.set(source2, value); } this.current.set(source2, source2.v); } activate() { current_batch = this; } deactivate() { current_batch = null; for (const update of effect_pending_updates) { effect_pending_updates.delete(update); update(); if (current_batch !== null) { break; } } } neuter() { this.#neutered = true; } flush() { if (queued_root_effects.length > 0) { flush_effects(); } else { this.#commit(); } if (current_batch !== this) { return; } if (this.#pending === 0) { batches.delete(this); } this.deactivate(); } /** * Append and remove branches to/from the DOM */ #commit() { if (!this.#neutered) { for (const fn of this.#callbacks) { fn(); } } this.#callbacks.clear(); } increment() { this.#pending += 1; } decrement() { this.#pending -= 1; if (this.#pending === 0) { for (const e2 of this.#dirty_effects) { set_signal_status(e2, DIRTY); schedule_effect(e2); } for (const e2 of this.#maybe_dirty_effects) { set_signal_status(e2, MAYBE_DIRTY); schedule_effect(e2); } this.#render_effects = []; this.#effects = []; this.flush(); } else { this.deactivate(); } } /** @param {() => void} fn */ add_callback(fn) { this.#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; } /** @param {() => void} task */ static enqueue(task) { if (tasks.length === 0) { queueMicrotask(dequeue); } tasks.unshift(task); } } 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 i2 = 0; while (i2 < length) { var effect2 = effects[i2++]; if ((effect2.f & (DESTROYED | INERT)) === 0 && is_dirty(effect2)) { eager_block_effects = []; 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.length > 0) { old_values.clear(); for (const e2 of eager_block_effects) { update_effect(e2); } eager_block_effects = []; } } } eager_block_effects = null; } function schedule_effect(signal) { var effect2 = last_scheduled_effect = signal; while (effect2.parent !== null) { effect2 = effect2.parent; var flags = effect2.f; if (is_flushing && effect2 === active_effect && (flags & BLOCK_EFFECT) !== 0) { return; } if ((flags & (ROOT_EFFECT | BRANCH_EFFECT)) !== 0) { if ((flags & CLEAN) === 0) return; effect2.f ^= CLEAN; } } queued_root_effects.push(effect2); } const old_values = /* @__PURE__ */ new Map(); function source(v, stack) { var signal = { f: 0, // TODO ideally we could skip this altogether, but it causes type errors v, reactions: null, equals, rv: 0, wv: 0 }; return signal; } // @__NO_SIDE_EFFECTS__ function state(v, stack) { const s2 = source(v); push_reaction_value(s2); return s2; } // @__NO_SIDE_EFFECTS__ function mutable_source(initial_value, immutable = false, trackable = true) { const s2 = source(initial_value); if (!immutable) { s2.equals = safe_equals; } return s2; } function set(source2, value, should_proxy = false) { if (active_reaction !== null && // since we are untracking the function inside `$inspect.with` we need to add this check // to ensure we error if state is set inside an inspect effect (!untracking || (active_reaction.f & INSPECT_EFFECT) !== 0) && is_runes() && (active_reaction.f & (DERIVED | BLOCK_EFFECT | ASYNC | INSPECT_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( /** @type {Derived} */ source2 ); } set_signal_status(source2, (source2.f & UNOWNED) === 0 ? CLEAN : MAYBE_DIRTY); } source2.wv = increment_write_version(); mark_reactions(source2, DIRTY); if (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); } } } return value; } function increment(source2) { set(source2, source2.v + 1); } function mark_reactions(signal, status) { var reactions = signal.reactions; if (reactions === null) return; var length = reactions.length; for (var i2 = 0; i2 < length; i2++) { var reaction = reactions[i2]; var flags = reaction.f; var not_dirty = (flags & DIRTY) === 0; if (not_dirty) { set_signal_status(reaction, status); } if ((flags & DERIVED) !== 0) { mark_reactions( /** @type {Derived} */ reaction, MAYBE_DIRTY ); } else if (not_dirty) { if ((flags & BLOCK_EFFECT) !== 0) { if (eager_block_effects !== null) { eager_block_effects.push( /** @type {Effect} */ reaction ); } } schedule_effect( /** @type {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 = /* @__PURE__ */ new Map(); var is_proxied_array = is_array(value); var version = /* @__PURE__ */ 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", /* @__PURE__ */ state( /** @type {any[]} */ value.length )); } return new Proxy( /** @type {any} */ value, { defineProperty(_, prop, descriptor) { if (!("value" in descriptor) || descriptor.configurable === false || descriptor.enumerable === false || descriptor.writable === false) { state_descriptors_fixed(); } var s2 = sources.get(prop); if (s2 === void 0) { s2 = with_parent(() => { var s3 = /* @__PURE__ */ state(descriptor.value); sources.set(prop, s3); return s3; }); } else { set(s2, descriptor.value, true); } return true; }, deleteProperty(target, prop) { var s2 = sources.get(prop); if (s2 === void 0) { if (prop in target) { const s3 = with_parent(() => /* @__PURE__ */ state(UNINITIALIZED)); sources.set(prop, s3); increment(version); } } else { set(s2, UNINITIALIZED); increment(version); } return true; }, get(target, prop, receiver) { if (prop === STATE_SYMBOL) { return value; } var s2 = sources.get(prop); var exists = prop in target; if (s2 === void 0 && (!exists || get_descriptor(target, prop)?.writable)) { s2 = with_parent(() => { var p = proxy(exists ? target[prop] : UNINITIALIZED); var s3 = /* @__PURE__ */ state(p); return s3; }); sources.set(prop, s2); } if (s2 !== void 0) { var v = get(s2); return v === UNINITIALIZED ? void 0 : v; } return Reflect.get(target, prop, receiver); }, getOwnPropertyDescriptor(target, prop) { var descriptor = Reflect.getOwnPropertyDescriptor(target, prop); if (descriptor && "value" in descriptor) { var s2 = sources.get(prop); if (s2) descriptor.value = get(s2); } else if (descriptor === void 0) { var source2 = sources.get(prop); var value2 = source2?.v; if (source2 !== void 0 && value2 !== UNINITIALIZED) { return { enumerable: true, configurable: true, value: value2, writable: true }; } } return descriptor; }, has(target, prop) { if (prop === STATE_SYMBOL) { return true; } var s2 = sources.get(prop); var has = s2 !== void 0 && s2.v !== UNINITIALIZED || Reflect.has(target, prop); if (s2 !== void 0 || active_effect !== null && (!has || get_descriptor(target, prop)?.writable)) { if (s2 === void 0) { s2 = with_parent(() => { var p = has ? proxy(target[prop]) : UNINITIALIZED; var s3 = /* @__PURE__ */ state(p); return s3; }); sources.set(prop, s2); } var value2 = get(s2); if (value2 === UNINITIALIZED) { return false; } } return has; }, set(target, prop, value2, receiver) { var s2 = sources.get(prop); var has = prop in target; if (is_proxied_array && prop === "length") { for (var i2 = value2; i2 < /** @type {Source} */ s2.v; i2 += 1) { var other_s = sources.get(i2 + ""); if (other_s !== void 0) { set(other_s, UNINITIALIZED); } else if (i2 in target) { other_s = with_parent(() => /* @__PURE__ */ state(UNINITIALIZED)); sources.set(i2 + "", other_s); } } } if (s2 === void 0) { if (!has || get_descriptor(target, prop)?.writable) { s2 = with_parent(() => /* @__PURE__ */ state(void 0)); set(s2, proxy(value2)); sources.set(prop, s2); } } else { has = s2.v !== UNINITIALIZED; var p = with_parent(() => proxy(value2)); set(s2, p); } var descriptor = Reflect.getOwnPropertyDescriptor(target, prop); if (descriptor?.set) { descriptor.set.call(receiver, value2); } if (!has) { if (is_proxied_array && typeof prop === "string") { var ls = ( /** @type {Source} */ sources.get("length") ); var n2 = Number(prop); if (Number.isInteger(n2) && n2 >= ls.v) { set(ls, n2 + 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); } // @__NO_SIDE_EFFECTS__ function get_first_child(node) { return first_child_getter.call(node); } // @__NO_SIDE_EFFECTS__ function get_next_sibling(node) { return next_sibling_getter.call(node); } function child(node, is_text) { { return /* @__PURE__ */ get_first_child(node); } } function sibling(node, count = 1, is_text = false) { let next_sibling = node; while (count--) { next_sibling = /** @type {TemplateNode} */ /* @__PURE__ */ get_next_sibling(next_sibling); } { return next_sibling; } } function clear_text_content(node) { node.textContent = ""; } 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 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, 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); } var inert = sync && effect2.deps === null && effect2.first === null && effect2.nodes_start === null && effect2.teardown === null && (effect2.f & EFFECT_PRESERVED) === 0; if (!inert && push2) { if (parent !== null) { push_effect(effect2, parent); } if (active_reaction !== null && (active_reaction.f & DERIVED) !== 0 && (type & ROOT_EFFECT) === 0) { var derived2 = ( /** @type {Derived} */ active_reaction ); (derived2.effects ??= []).push(effect2); } } return effect2; } function teardown(fn) { const effect2 = create_effect(RENDER_EFFECT, null, false); set_signal_status(effect2, CLEAN); effect2.teardown = fn; return effect2; } function create_user_effect(fn) { return create_effect(EFFECT | USER_EFFECT, fn, false); } function component_root(fn) { Batch.ensure(); const effect2 = create_effect(ROOT_EFFECT, 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 async_effect(fn) { return create_effect(ASYNC | EFFECT_PRESERVED, fn, true); } function render_effect(fn, flags = 0) { return create_effect(RENDER_EFFECT | flags, fn, true); } function template_effect(fn, sync = [], async = []) { flatten(sync, async, (values) => { create_effect(RENDER_EFFECT, () => fn(...values.map(get)), true); }); } function block(fn, flags = 0) { var effect2 = create_effect(BLOCK_EFFECT | flags, fn, true); return effect2; } function branch(fn, push2 = true) { return create_effect(BRANCH_EFFECT, fn, true, push2); } function execute_effect_teardown(effect2) { var teardown2 = effect2.teardown; if (teardown2 !== null) { const previously_destroying_effect = is_destroying_effect; const previous_reaction = active_reaction; set_is_destroying_effect(true); set_active_reaction(null); try { teardown2.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, /** @type {TemplateNode} */ 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 : ( /** @type {TemplateNode} */ /* @__PURE__ */ 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) { var transitions = []; pause_children(effect2, transitions, true); run_out_transitions(transitions, () => { 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 sibling2 = child2.next; var transparent = (child2.f & EFFECT_TRANSPARENT) !== 0 || (child2.f & BRANCH_EFFECT) !== 0; pause_children(child2, transitions, transparent ? local : false); child2 = sibling2; } } function resume_effect(effect2) { resume_children(effect2, true); } function resume_children(effect2, local) { if ((effect2.f & INERT) === 0) return; effect2.f ^= INERT; if ((effect2.f & CLEAN) === 0) { set_signal_status(effect2, DIRTY); schedule_effect(effect2); } var child2 = effect2.first; while (child2 !== null) { var sibling2 = child2.next; var transparent = (child2.f & EFFECT_TRANSPARENT) !== 0 || (child2.f & BRANCH_EFFECT) !== 0; resume_children(child2, transparent ? local : false); child2 = sibling2; } if (effect2.transitions !== null) { for (const transition of effect2.transitions) { if (transition.is_global || local) { transition.in(); } } } } 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; } let skip_reaction = false; function increment_write_version() { return ++write_version; } function is_dirty(reaction) { var flags = reaction.f; if ((flags & DIRTY) !== 0) { return true; } if ((flags & MAYBE_DIRTY) !== 0) { var dependencies = reaction.deps; var is_unowned = (flags & UNOWNED) !== 0; if (dependencies !== null) { var i2; var dependency; var is_disconnected = (flags & DISCONNECTED) !== 0; var is_unowned_connected = is_unowned && active_effect !== null && !skip_reaction; var length = dependencies.length; if ((is_disconnected || is_unowned_connected) && (active_effect === null || (active_effect.f & DESTROYED) === 0)) { var derived2 = ( /** @type {Derived} */ reaction ); var parent = derived2.parent; for (i2 = 0; i2 < length; i2++) { dependency = dependencies[i2]; if (is_disconnected || !dependency?.reactions?.includes(derived2)) { (dependency.reactions ??= []).push(derived2); } } if (is_disconnected) { derived2.f ^= DISCONNECTED; } if (is_unowned_connected && parent !== null && (parent.f & UNOWNED) === 0) { derived2.f ^= UNOWNED; } } for (i2 = 0; i2 < length; i2++) { dependency = dependencies[i2]; if (is_dirty( /** @type {Derived} */ dependency )) { update_derived( /** @type {Derived} */ dependency ); } if (dependency.wv > reaction.wv) { return true; } } } if (!is_unowned || active_effect !== null && !skip_reaction) { 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 i2 = 0; i2 < reactions.length; i2++) { var reaction = reactions[i2]; if ((reaction.f & DERIVED) !== 0) { schedule_possible_effect_self_invalidation( /** @type {Derived} */ 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( /** @type {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_skip_reaction = skip_reaction; var previous_sources = current_sources; var previous_component_context = component_context; var previous_untracking = untracking; var previous_update_version = update_version; var flags = reaction.f; new_deps = /** @type {null | Value[]} */ null; skipped_deps = 0; untracked_writes = null; skip_reaction = (flags & UNOWNED) !== 0 && (untracking || !is_updating_effect || active_reaction === null); active_reaction = (flags & (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 = ( /** @type {Function} */ reaction.fn ); var result = fn(); var deps = reaction.deps; if (new_deps !== null) { var i2; remove_reactions(reaction, skipped_deps); if (deps !== null && skipped_deps > 0) { deps.length = skipped_deps + new_deps.length; for (i2 = 0; i2 < new_deps.length; i2++) { deps[skipped_deps + i2] = new_deps[i2]; } } else { reaction.deps = deps = new_deps; } if (!skip_reaction || // Deriveds that already have reactions can cleanup, so we still add them as reactions (flags & DERIVED) !== 0 && /** @type {import('#client').Derived} */ reaction.reactions !== null) { for (i2 = skipped_deps; i2 < deps.length; i2++) { (deps[i2].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 (i2 = 0; i2 < /** @type {Source[]} */ untracked_writes.length; i2++) { schedule_possible_effect_self_invalidation( untracked_writes[i2], /** @type {Effect} */ 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(.../** @type {Source[]} */ 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; skip_reaction = previous_skip_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 index2 = index_of.call(reactions, signal); if (index2 !== -1) { var new_length = reactions.length - 1; if (new_length === 0) { reactions = dependency.reactions = null; } else { reactions[index2] = reactions[new_length]; reactions.pop(); } } } if (reactions === null && (dependency.f & DERIVED) !== 0 && // Destroying a child effect while updating a parent effect can cause a dependency to appear // to be unused, when in fact it is used by the currently-updating parent. Checking `new_deps` // allows us to skip the expensive work of disconnecting and immediately reconnecting it (new_deps === null || !new_deps.includes(dependency))) { set_signal_status(dependency, MAYBE_DIRTY); if ((dependency.f & (UNOWNED | DISCONNECTED)) === 0) { dependency.f ^= DISCONNECTED; } destroy_derived_effects( /** @type {Derived} **/ dependency ); remove_reactions( /** @type {Derived} **/ dependency, 0 ); } } function remove_reactions(signal, start_index) { var dependencies = signal.deps; if (dependencies === null) return; for (var i2 = start_index; i2 < dependencies.length; i2++) { remove_reaction(signal, dependencies[i2]); } } function update_effect(effect2) { var flags = effect2.f; if ((flags & 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 ((flags & BLOCK_EFFECT) !== 0) { destroy_block_effect_children(effect2); } else { destroy_effect_children(effect2); } execute_effect_teardown(effect2); var teardown2 = update_reaction(effect2); effect2.teardown = typeof teardown2 === "function" ? teardown2 : 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 flags = signal.f; var is_derived = (flags & 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 (!skip_reaction || !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); } } } } else if (is_derived && /** @type {Derived} */ signal.deps === null && /** @type {Derived} */ signal.effects === null) { var derived2 = ( /** @type {Derived} */ signal ); var parent = derived2.parent; if (parent !== null && (parent.f & UNOWNED) === 0) { derived2.f ^= UNOWNED; } } if (is_destroying_effect) { if (old_values.has(signal)) { return old_values.get(signal); } if (is_derived) { derived2 = /** @type {Derived} */ 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 = /** @type {Derived} */ signal; if (batch_deriveds?.has(derived2)) { return batch_deriveds.get(derived2); } if (is_dirty(derived2)) { update_derived(derived2); } } if ((signal.f & ERROR_VALUE) !== 0) { throw signal.v; } return signal.v; } 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( /** @type {Derived} */ 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 prop = value[key]; if (typeof prop === "object" && prop && STATE_SYMBOL in prop) { deep_read(prop); } } } } function deep_read(value, visited = /* @__PURE__ */ new Set()) { if (typeof value === "object" && value !== null && // We don't want to traverse DOM elements !(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 (e2) { } } 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 (e2) { } } } } } } const PASSIVE_EVENTS = ["touchstart", "touchmove"]; function is_passive_event(name) { return PASSIVE_EVENTS.includes(name); } const all_registered_events = /* @__PURE__ */ new Set(); const root_event_handles = /* @__PURE__ */ new Set(); function create_event(event_name, dom, handler, options = {}) { function target_handler(event2) { if (!options.capture) { handle_event_propagation.call(dom, event2); } if (!event2.cancelBubble) { return without_reactive_context(() => { return handler?.call(this, event2); }); } } if (event_name.startsWith("pointer") || event_name.startsWith("touch") || event_name === "wheel") { queue_micro_task(() => { dom.addEventListener(event_name, target_handler, options); }); } else { dom.addEventListener(event_name, target_handler, options); } return target_handler; } function event(event_name, dom, handler, capture2, passive) { var options = { capture: capture2, passive }; var target_handler = create_event(event_name, dom, handler, options); if (dom === document.body || // @ts-ignore dom === window || // @ts-ignore dom === document || // Firefox has quirky behavior, it can happen that we still get "canplay" events when the element is already removed dom instanceof HTMLMediaElement) { teardown(() => { dom.removeEventListener(event_name, target_handler, options); }); } } function delegate(events) { for (var i2 = 0; i2 < events.length; i2++) { all_registered_events.add(events[i2]); } for (var fn of root_event_handles) { fn(events); } } let last_propagated_event = null; function handle_event_propagation(event2) { var handler_element = this; var owner_document = ( /** @type {Node} */ handler_element.ownerDocument ); var event_name = event2.type; var path = event2.composedPath?.() || []; var current_target = ( /** @type {null | Element} */ path[0] || event2.target ); last_propagated_event = event2; var path_idx = 0; var handled_at = last_propagated_event === event2 && event2.__root; if (handled_at) { var at_idx = path.indexOf(handled_at); if (at_idx !== -1 && (handler_element === document || handler_element === /** @type {any} */ window)) { event2.__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 = /** @type {Element} */ path[path_idx] || event2.target; if (current_target === handler_element) return; define_property(event2, "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 || /** @type {any} */ current_target.host || null; try { var delegated = current_target["__" + event_name]; if (delegated != null && (!/** @type {any} */ current_target.disabled || // DOM could've been updated already by the time this is reached, so we check this as well // -> the target could not have been disabled because it emits the event in the first place event2.target === current_target)) { if (is_array(delegated)) { var [fn, ...data] = delegated; fn.apply(current_target, [event2, ...data]); } else { delegated.call(current_target, event2); } } } catch (error) { if (throw_error) { other_errors.push(error); } else { throw_error = error; } } if (event2.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 { event2.__root = handler_element; delete event2.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 = ( /** @type {Effect} */ active_effect ); if (effect2.nodes_start === null) { effect2.nodes_start = start; effect2.nodes_end = end; } } // @__NO_SIDE_EFFECTS__ function from_html(content, flags) { var node; var has_start = !content.startsWith(""); return () => { if (node === void 0) { node = create_fragment_from_html(has_start ? content : "" + content); node = /** @type {Node} */ /* @__PURE__ */ get_first_child(node); } var clone = ( /** @type {TemplateNode} */ 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( /** @type {Node} */ dom ); } function mount(component, options) { return _mount(component, options); } const document_listeners = /* @__PURE__ */ new Map(); function _mount(Component, { target, anchor, props = {}, events, context, intro = true }) { init_operations(); var registered_events = /* @__PURE__ */ new Set(); var event_handle = (events2) => { for (var i2 = 0; i2 < events2.length; i2++) { var event_name = events2[i2]; 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 n2 = document_listeners.get(event_name); if (n2 === void 0) { document.addEventListener(event_name, handle_event_propagation, { passive }); document_listeners.set(event_name, 1); } else { document_listeners.set(event_name, n2 + 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()); branch(() => { if (context) { push({}); var ctx = ( /** @type {ComponentContext} */ component_context ); ctx.c = context; } if (events) { props.$$events = events; } component = Component(anchor_node, props) || {}; if (context) { pop(); } }); return () => { for (var event_name of registered_events) { target.removeEventListener(event_name, handle_event_propagation); var n2 = ( /** @type {number} */ document_listeners.get(event_name) ); if (--n2 === 0) { document.removeEventListener(event_name, handle_event_propagation); document_listeners.delete(event_name); } else { document_listeners.set(event_name, n2); } } 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 = /* @__PURE__ */ new WeakMap(); function index(_, i2) { return i2; } function pause_effects(state2, items, controlled_anchor) { var items_map = state2.items; var transitions = []; var length = items.length; for (var i2 = 0; i2 < length; i2++) { pause_children(items[i2].e, transitions, true); } var is_controlled = length > 0 && transitions.length === 0 && controlled_anchor !== null; if (is_controlled) { var parent_node = ( /** @type {Element} */ /** @type {Element} */ controlled_anchor.parentNode ); clear_text_content(parent_node); parent_node.append( /** @type {Element} */ controlled_anchor ); items_map.clear(); link(state2, items[0].prev, items[length - 1].next); } run_out_transitions(transitions, () => { for (var i3 = 0; i3 < length; i3++) { var item = items[i3]; if (!is_controlled) { items_map.delete(item.k); link(state2, item.prev, item.next); } destroy_effect(item.e, !is_controlled); } }); } function each(node, flags, get_collection, get_key, render_fn, fallback_fn = null) { var anchor = node; var state2 = { flags, items: /* @__PURE__ */ new Map(), first: null }; { var parent_node = ( /** @type {Element} */ node ); anchor = parent_node.appendChild(create_text()); } var fallback = null; var was_empty = false; var offscreen_items = /* @__PURE__ */ new Map(); var each_array = /* @__PURE__ */ derived_safe_equal(() => { var collection = get_collection(); return is_array(collection) ? collection : collection == null ? [] : array_from(collection); }); var array; var each_effect; function commit() { reconcile( each_effect, array, state2, offscreen_items, anchor, render_fn, flags, get_key, get_collection ); if (fallback_fn !== null) { if (array.length === 0) { if (fallback) { resume_effect(fallback); } else { fallback = branch(() => fallback_fn(anchor)); } } else if (fallback !== null) { pause_effect(fallback, () => { fallback = null; }); } } } block(() => { each_effect ??= /** @type {Effect} */ active_effect; array = /** @type {V[]} */ get(each_array); var length = array.length; if (was_empty && length === 0) { return; } was_empty = length === 0; { { commit(); } } get(each_array); }); } function reconcile(each_effect, array, state2, offscreen_items, anchor, render_fn, flags, get_key, get_collection) { var length = array.length; var items = state2.items; var first = state2.first; var current = first; var seen; var prev = null; var matched = []; var stashed = []; var value; var key; var item; var i2; for (i2 = 0; i2 < length; i2 += 1) { value = array[i2]; key = get_key(value, i2); item = items.get(key); if (item === void 0) { var pending = offscreen_items.get(key); if (pending !== void 0) { offscreen_items.delete(key); items.set(key, pending); var next = prev ? prev.next : current; link(state2, prev, pending); link(state2, pending, next); move(pending, next, anchor); prev = pending; } else { var child_anchor = current ? ( /** @type {TemplateNode} */ current.e.nodes_start ) : anchor; prev = create_item( child_anchor, state2, prev, prev === null ? state2.first : prev.next, value, key, i2, render_fn, flags, get_collection ); } items.set(key, prev); matched = []; stashed = []; current = prev.next; continue; } { update_item(item, value, i2); } if ((item.e.f & INERT) !== 0) { resume_effect(item.e); } if (item !== current) { if (seen !== void 0 && seen.has(item)) { if (matched.length < stashed.length) { var start = stashed[0]; var j; prev = start.prev; var a2 = matched[0]; var b = matched[matched.length - 1]; for (j = 0; j < matched.length; j += 1) { move(matched[j], start, anchor); } for (j = 0; j < stashed.length; j += 1) { seen.delete(stashed[j]); } link(state2, a2.prev, b.next); link(state2, prev, a2); link(state2, b, start); current = start; prev = b; i2 -= 1; matched = []; stashed = []; } else { seen.delete(item); move(item, current, anchor); link(state2, item.prev, item.next); link(state2, item, prev === null ? state2.first : prev.next); link(state2, prev, item); prev = item; } continue; } matched = []; stashed = []; while (current !== null && current.k !== key) { if ((current.e.f & INERT) === 0) { (seen ??= /* @__PURE__ */ new Set()).add(current); } stashed.push(current); current = current.next; } if (current === null) { continue; } item = current; } matched.push(item); prev = item; current = item.next; } if (current !== null || seen !== void 0) { var to_destroy = seen === void 0 ? [] : array_from(seen); while (current !== null) { if ((current.e.f & INERT) === 0) { to_destroy.push(current); } current = current.next; } var destroy_length = to_destroy.length; if (destroy_length > 0) { var controlled_anchor = length === 0 ? anchor : null; pause_effects(state2, to_destroy, controlled_anchor); } } each_effect.first = state2.first && state2.first.e; each_effect.last = prev && prev.e; for (var unused of offscreen_items.values()) { destroy_effect(unused.e); } offscreen_items.clear(); } function update_item(item, value, index2, type) { { internal_set(item.v, value); } { item.i = index2; } } function create_item(anchor, state2, prev, next, value, key, index2, render_fn, flags, get_collection, deferred2) { var reactive = (flags & EACH_ITEM_REACTIVE) !== 0; var mutable = (flags & EACH_ITEM_IMMUTABLE) === 0; var v = reactive ? mutable ? /* @__PURE__ */ mutable_source(value, false, false) : source(value) : value; var i2 = (flags & EACH_INDEX_REACTIVE) === 0 ? index2 : source(index2); var item = { i: i2, v, k: key, a: null, // @ts-expect-error e: null, prev, next }; try { if (anchor === null) { var fragment = document.createDocumentFragment(); fragment.append(anchor = create_text()); } item.e = branch(() => render_fn( /** @type {Node} */ anchor, v, i2, get_collection ), hydrating); item.e.prev = prev && prev.e; item.e.next = next && next.e; if (prev === null) { if (!deferred2) { state2.first = item; } } else { prev.next = item; prev.e.next = item.e; } if (next !== null) { next.prev = item; next.e.prev = item.e; } return item; } finally { } } function move(item, next, anchor) { var end = item.next ? ( /** @type {TemplateNode} */ item.next.e.nodes_start ) : anchor; var dest = next ? ( /** @type {TemplateNode} */ next.e.nodes_start ) : anchor; var node = ( /** @type {TemplateNode} */ item.e.nodes_start ); while (node !== null && node !== end) { var next_node = ( /** @type {TemplateNode} */ /* @__PURE__ */ get_next_sibling(node) ); dest.before(node); node = next_node; } } function link(state2, prev, next) { if (prev === null) { state2.first = next; } else { prev.next = next; prev.e.next = next && next.e; } if (next !== null) { next.prev = prev; next.e.prev = prev && prev.e; } } function action(dom, action2, get_value) { effect(() => { var payload = untrack(() => action2(dom, get_value?.()) || {}); if (get_value && payload?.update) { var inited2 = false; var prev = ( /** @type {any} */ {} ); render_effect(() => { var value = get_value(); deep_read_state(value); if (inited2 && safe_not_equal(prev, value)) { prev = value; payload.update(value); } }); inited2 = true; } if (payload?.destroy) { return () => ( /** @type {Function} */ payload.destroy() ); } }); } const IS_CUSTOM_ELEMENT = Symbol("is custom element"); const IS_HTML = Symbol("is html"); function set_attribute(element, attribute, value, skip_warning) { var attributes = get_attributes(element); if (attributes[attribute] === (attributes[attribute] = value)) return; if (attribute === "loading") { element[LOADING_ATTR_SYMBOL] = value; } if (value == null) { element.removeAttribute(attribute); } else if (typeof value !== "string" && get_setters(element).includes(attribute)) { element[attribute] = value; } else { element.setAttribute(attribute, value); } } function get_attributes(element) { return ( /** @type {Record} **/ // @ts-expect-error element.__attributes ??= { [IS_CUSTOM_ELEMENT]: element.nodeName.includes("-"), [IS_HTML]: element.namespaceURI === NAMESPACE_HTML } ); } var setters_cache = /* @__PURE__ */ new Map(); function get_setters(element) { var setters = setters_cache.get(element.nodeName); if (setters) return setters; setters_cache.set(element.nodeName, setters = []); var descriptors; var proto = element; var element_proto = Element.prototype; while (element_proto !== proto) { descriptors = get_descriptors(proto); for (var key in descriptors) { if (descriptors[key].set) { setters.push(key); } } proto = get_prototype_of(proto); } return setters; } 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; } const PUBLIC_VERSION = "5"; if (typeof window !== "undefined") { ((window.__svelte ??= {}).v ??= /* @__PURE__ */ new Set()).add(PUBLIC_VERSION); } var e = { dragStart: true }, t = { delay: 0, distance: 3 }; var n = (e2, t2, n2) => Math.min(Math.max(e2, t2), n2), r = (e2) => "string" == typeof e2, o = ([e2, t2], n2, r2) => { const o2 = (e3, t3) => 0 === t3 ? 0 : Math.ceil(e3 / t3) * t3; return [o2(n2, e2), o2(r2, t2)]; }; var a = (e2, t2) => e2.some(((e3) => t2.some(((t3) => e3.contains(t3))))); function i(e2, t2) { if (void 0 === e2) return; if (l(e2)) return e2.getBoundingClientRect(); if ("object" == typeof e2) { const { top: t3 = 0, left: n3 = 0, right: r2 = 0, bottom: o2 = 0 } = e2; return { top: t3, right: window.innerWidth - r2, bottom: window.innerHeight - o2, left: n3 }; } if ("parent" === e2) return t2.parentNode.getBoundingClientRect(); const n2 = document.querySelector(e2); if (null === n2) throw new Error("The selector provided for bound doesn't exists in the document."); return n2.getBoundingClientRect(); } var s = (e2, t2, n2) => e2.style.setProperty(t2, n2), l = (e2) => e2 instanceof HTMLElement, d = function(d2, c = {}) { let u, f, { bounds: g, axis: h = "both", gpuAcceleration: p = true, legacyTranslate: m = false, transform: y, applyUserSelectHack: w = true, disabled: b = false, ignoreMultitouch: v = false, recomputeBounds: x = e, grid: E, threshold: S = t, position: A, cancel: C, handle: D, defaultClass: N = "neodrag", defaultClassDragging: M = "neodrag-dragging", defaultClassDragged: B = "neodrag-dragged", defaultPosition: R = { x: 0, y: 0 }, onDragStart: $, onDrag: X, onDragEnd: Y } = c, q = false, H = false, P = 0, T = false, k = false, L = 0, z = 0, I = 0, U = 0, W = 0, j = 0, { x: F, y: G } = A ? { x: A?.x ?? 0, y: A?.y ?? 0 } : R; oe(F, G); let J, K, O, Q, V, Z = "", _ = !!A; x = { ...e, ...x }, S = { ...t, ...S ?? {} }; let ee = /* @__PURE__ */ new Set(); function te(e2) { q && !H && k && T && V && (H = true, (function(e3) { ae("neodrag:start", $, e3); })(e2), re.add(M), w && (Z = ne.userSelect, ne.userSelect = "none")); } const ne = document.body.style, re = d2.classList; function oe(e2 = L, t2 = z) { if (!y) { if (m) { let n3 = `${+e2}px, ${+t2}px`; return s(d2, "transform", p ? `translate3d(${n3}, 0)` : `translate(${n3})`); } return s(d2, "translate", `${+e2}px ${+t2}px`); } const n2 = y({ offsetX: e2, offsetY: t2, rootNode: d2 }); r(n2) && s(d2, "transform", n2); } function ae(e2, t2, n2) { const r2 = /* @__PURE__ */ (function(e3) { return { offsetX: L, offsetY: z, rootNode: d2, currentNode: V, event: e3 }; })(n2); d2.dispatchEvent(new CustomEvent(e2, { detail: r2 })), t2?.(r2); } const ie = addEventListener, se = new AbortController(), le = { signal: se.signal, capture: false }; function de() { let e2 = d2.offsetWidth / K.width; return isNaN(e2) && (e2 = 1), e2; } return s(d2, "touch-action", "none"), ie("pointerdown", ((e2) => { if (b) return; if (2 === e2.button) return; if (ee.add(e2.pointerId), v && ee.size > 1) return e2.preventDefault(); if (x.dragStart && (J = i(g, d2)), r(D) && r(C) && D === C) throw new Error("`handle` selector can't be same as `cancel` selector"); if (re.add(N), O = (function(e3, t3) { if (!e3) return [t3]; if (l(e3)) return [e3]; if (Array.isArray(e3)) return e3; const n3 = t3.querySelectorAll(e3); if (null === n3) throw new Error("Selector passed for `handle` option should be child of the element on which the action is applied"); return Array.from(n3.values()); })(D, d2), Q = (function(e3, t3) { if (!e3) return []; if (l(e3)) return [e3]; if (Array.isArray(e3)) return e3; const n3 = t3.querySelectorAll(e3); if (null === n3) throw new Error("Selector passed for `cancel` option should be child of the element on which the action is applied"); return Array.from(n3.values()); })(C, d2), u = /(both|x)/.test(h), f = /(both|y)/.test(h), a(Q, O)) throw new Error("Element being dragged can't be a child of the element on which `cancel` is applied"); const t2 = e2.composedPath()[0]; if (!O.some(((e3) => e3.contains(t2) || e3.shadowRoot?.contains(t2))) || a(Q, [t2])) return; V = 1 === O.length ? d2 : O.find(((e3) => e3.contains(t2))), q = true, P = Date.now(), S.delay || (T = true), K = d2.getBoundingClientRect(); const { clientX: n2, clientY: o2 } = e2, s2 = de(); u && (I = n2 - F / s2), f && (U = o2 - G / s2), J && (W = n2 - K.left, j = o2 - K.top); }), le), ie("pointermove", ((e2) => { if (!q || v && ee.size > 1) return; if (!H) { if (!T) { Date.now() - P >= S.delay && (T = true, te(e2)); } if (!k) { const t3 = e2.clientX - I, n2 = e2.clientY - U; Math.sqrt(t3 ** 2 + n2 ** 2) >= S.distance && (k = true, te(e2)); } if (!H) return; } x.drag && (J = i(g, d2)), e2.preventDefault(), K = d2.getBoundingClientRect(); let t2 = e2.clientX, r2 = e2.clientY; const a2 = de(); if (J) { const e3 = { left: J.left + W, top: J.top + j, right: J.right + W - K.width, bottom: J.bottom + j - K.height }; t2 = n(t2, e3.left, e3.right), r2 = n(r2, e3.top, e3.bottom); } if (Array.isArray(E)) { let [e3, n2] = E; if (isNaN(+e3) || e3 < 0) throw new Error("1st argument of `grid` must be a valid positive number"); if (isNaN(+n2) || n2 < 0) throw new Error("2nd argument of `grid` must be a valid positive number"); let i2 = t2 - I, s2 = r2 - U; [i2, s2] = o([e3 / a2, n2 / a2], i2, s2), t2 = I + i2, r2 = U + s2; } u && (L = Math.round((t2 - I) * a2)), f && (z = Math.round((r2 - U) * a2)), F = L, G = z, ae("neodrag", X, e2), oe(); }), le), ie("pointerup", ((e2) => { (ee.delete(e2.pointerId), q) && (H && (ie("click", ((e3) => e3.stopPropagation()), { once: true, signal: se.signal, capture: true }), x.dragEnd && (J = i(g, d2)), re.remove(M), re.add(B), w && (ne.userSelect = Z), ae("neodrag:end", Y, e2), u && (I = L), f && (U = z)), q = false, H = false, T = false, k = false); }), le), { destroy: () => se.abort(), update: (n2) => { h = n2.axis || "both", b = n2.disabled ?? false, v = n2.ignoreMultitouch ?? false, D = n2.handle, g = n2.bounds, x = n2.recomputeBounds ?? e, C = n2.cancel, w = n2.applyUserSelectHack ?? true, E = n2.grid, p = n2.gpuAcceleration ?? true, m = n2.legacyTranslate ?? false, y = n2.transform, S = { ...t, ...n2.threshold ?? {} }; const r2 = re.contains(B); re.remove(N, B), N = n2.defaultClass ?? "neodrag", M = n2.defaultClassDragging ?? "neodrag-dragging", B = n2.defaultClassDragged ?? "neodrag-dragged", re.add(N), r2 && re.add(B), _ && (F = L = n2.position?.x ?? L, G = z = n2.position?.y ?? z, oe()); } }; }; const tileRegex = /\/files\/s0\/tiles\/(\d+)\/(\d+)\.png/; var root$1 = /* @__PURE__ */ from_html(``); function Tile($$anchor, $$props) { push($$props, true); const url = new URL($$props.image); const [full, tileX, tileY] = url.pathname.match(tileRegex); var a2 = root$1(); var img = child(a2); template_effect(() => { set_attribute(a2, "href", $$props.image); set_attribute(a2, "download", `${tileX}-${tileY}.png`); set_attribute(img, "src", $$props.image); }); append($$anchor, a2); pop(); } var read_methods = ["forEach", "isDisjointFrom", "isSubsetOf", "isSupersetOf"]; var set_like_methods = ["difference", "intersection", "symmetricDifference", "union"]; var inited = false; class SvelteSet extends Set { /** @type {Map>} */ #sources = /* @__PURE__ */ new Map(); #version = /* @__PURE__ */ state(0); #size = /* @__PURE__ */ state(0); #update_version = update_version || -1; /** * @param {Iterable | null | undefined} [value] */ constructor(value) { super(); if (value) { for (var element of value) { super.add(element); } this.#size.v = super.size; } if (!inited) this.#init(); } /** * If the source is being created inside the same reaction as the SvelteSet instance, * we use `state` so that it will not be a dependency of the reaction. Otherwise we * use `source` so it will be. * * @template T * @param {T} value * @returns {Source} */ #source(value) { return update_version === this.#update_version ? /* @__PURE__ */ state(value) : source(value); } // We init as part of the first instance so that we can treeshake this class #init() { inited = true; var proto = SvelteSet.prototype; var set_proto = Set.prototype; for (const method of read_methods) { proto[method] = function(...v) { get(this.#version); return set_proto[method].apply(this, v); }; } for (const method of set_like_methods) { proto[method] = function(...v) { get(this.#version); var set2 = ( /** @type {Set} */ set_proto[method].apply(this, v) ); return new SvelteSet(set2); }; } } /** @param {T} value */ has(value) { var has = super.has(value); var sources = this.#sources; var s2 = sources.get(value); if (s2 === void 0) { if (!has) { get(this.#version); return false; } s2 = this.#source(true); sources.set(value, s2); } get(s2); return has; } /** @param {T} value */ add(value) { if (!super.has(value)) { super.add(value); set(this.#size, super.size); increment(this.#version); } return this; } /** @param {T} value */ delete(value) { var deleted = super.delete(value); var sources = this.#sources; var s2 = sources.get(value); if (s2 !== void 0) { sources.delete(value); set(s2, false); } if (deleted) { set(this.#size, super.size); increment(this.#version); } return deleted; } clear() { if (super.size === 0) { return; } super.clear(); var sources = this.#sources; for (var s2 of sources.values()) { set(s2, false); } sources.clear(); set(this.#size, 0); increment(this.#version); } keys() { return this.values(); } values() { get(this.#version); return super.values(); } entries() { get(this.#version); return super.entries(); } [Symbol.iterator]() { return this.keys(); } get size() { return get(this.#size); } } var on_click = (_, open) => { set(open, !get(open)); }; var root = /* @__PURE__ */ from_html(`

Tiles

`); function App($$anchor, $$props) { push($$props, true); let handle; let tiles = proxy(new SvelteSet([])); let open = /* @__PURE__ */ state(true); const dragOptions = { bounds: "body", defaultPosition: { x: 50, y: 50 } }; function onMessage(e2) { if (e2?.data?.source !== "blue-marble") return; if (!e2?.data?.endpoint) return; const url = new URL(e2.data.endpoint); if (url.origin !== "https://backend.wplace.live") return; if (!url.pathname.match(tileRegex)) return; tiles.add(e2.data.endpoint); } var dialog = root(); event("message", $window, onMessage); var div = child(dialog); var div_1 = sibling(child(div), 2); var button = child(div_1); button.__click = [on_click, open]; bind_this(div, ($$value) => handle = $$value, () => handle); var div_2 = sibling(div, 2); each(div_2, 21, () => [...tiles], index, ($$anchor2, tile) => { Tile($$anchor2, { get image() { return get(tile); } }); }); action(dialog, ($$node, $$action_arg) => d?.($$node, $$action_arg), () => ({ ...dragOptions, handle })); template_effect(() => dialog.open = get(open)); append($$anchor, dialog); pop(); } delegate(["click"]); mount(App, { target: (() => { return document.body; })() }); })();