|
|
import { H as HYDRATION_ERROR, C as COMMENT_NODE, a as HYDRATION_END, b as HYDRATION_START, c as HYDRATION_START_ELSE, B as BOUNDARY_EFFECT, E as ERROR_VALUE, d as EFFECT_RAN, e as CLEAN, I as INERT, f as EFFECT, g as BLOCK_EFFECT, D as DIRTY, h as DERIVED, W as WAS_MARKED, i as BRANCH_EFFECT, R as ROOT_EFFECT, M as MAYBE_DIRTY, j as DESTROYED, A as ASYNC, k as HEAD_EFFECT, l as EFFECT_TRANSPARENT, m as EFFECT_PRESERVED, n as CONNECTED, o as EAGER_EFFECT, S as STATE_SYMBOL, U as UNINITIALIZED, p as STALE_REACTION, q as RENDER_EFFECT, r as USER_EFFECT, s as REACTION_IS_UPDATING, t as is_passive_event, L as LEGACY_PROPS, u as render } from "./index.js"; |
|
|
import { D as DEV } from "./environment.js"; |
|
|
import { r as run_all, d as deferred, o as object_prototype, a as array_prototype, g as get_descriptor, b as get_prototype_of, i as is_array, c as is_extensible, e as index_of, f as define_property, h as array_from } from "./utils2.js"; |
|
|
import { s as safe_equals, e as equals } from "./equality.js"; |
|
|
import "clsx"; |
|
|
import { s as setContext } from "./context.js"; |
|
|
let public_env = {}; |
|
|
function set_private_env(environment) { |
|
|
} |
|
|
function set_public_env(environment) { |
|
|
public_env = environment; |
|
|
} |
|
|
function effect_update_depth_exceeded() { |
|
|
{ |
|
|
throw new Error(`https://svelte.dev/e/effect_update_depth_exceeded`); |
|
|
} |
|
|
} |
|
|
function hydration_failed() { |
|
|
{ |
|
|
throw new Error(`https://svelte.dev/e/hydration_failed`); |
|
|
} |
|
|
} |
|
|
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 hydration_mismatch(location) { |
|
|
{ |
|
|
console.warn(`https://svelte.dev/e/hydration_mismatch`); |
|
|
} |
|
|
} |
|
|
function svelte_boundary_reset_noop() { |
|
|
{ |
|
|
console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`); |
|
|
} |
|
|
} |
|
|
let hydrating = false; |
|
|
function set_hydrating(value) { |
|
|
hydrating = value; |
|
|
} |
|
|
let hydrate_node; |
|
|
function set_hydrate_node(node) { |
|
|
if (node === null) { |
|
|
hydration_mismatch(); |
|
|
throw HYDRATION_ERROR; |
|
|
} |
|
|
return hydrate_node = node; |
|
|
} |
|
|
function hydrate_next() { |
|
|
return set_hydrate_node( |
|
|
|
|
|
get_next_sibling(hydrate_node) |
|
|
); |
|
|
} |
|
|
function next(count = 1) { |
|
|
if (hydrating) { |
|
|
var i = count; |
|
|
var node = hydrate_node; |
|
|
while (i--) { |
|
|
node = |
|
|
get_next_sibling(node); |
|
|
} |
|
|
hydrate_node = node; |
|
|
} |
|
|
} |
|
|
function skip_nodes(remove = true) { |
|
|
var depth = 0; |
|
|
var node = hydrate_node; |
|
|
while (true) { |
|
|
if (node.nodeType === COMMENT_NODE) { |
|
|
var data = ( |
|
|
|
|
|
node.data |
|
|
); |
|
|
if (data === HYDRATION_END) { |
|
|
if (depth === 0) return node; |
|
|
depth -= 1; |
|
|
} else if (data === HYDRATION_START || data === HYDRATION_START_ELSE) { |
|
|
depth += 1; |
|
|
} |
|
|
} |
|
|
var next2 = ( |
|
|
|
|
|
get_next_sibling(node) |
|
|
); |
|
|
if (remove) node.remove(); |
|
|
node = next2; |
|
|
} |
|
|
} |
|
|
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, |
|
|
i: false, |
|
|
c: null, |
|
|
e: null, |
|
|
s: props, |
|
|
x: null, |
|
|
l: 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 true; |
|
|
} |
|
|
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 && !is_flushing_sync) { |
|
|
var tasks = micro_tasks; |
|
|
queueMicrotask(() => { |
|
|
if (tasks === micro_tasks) run_micro_tasks(); |
|
|
}); |
|
|
} |
|
|
micro_tasks.push(fn); |
|
|
} |
|
|
function flush_tasks() { |
|
|
while (micro_tasks.length > 0) { |
|
|
run_micro_tasks(); |
|
|
} |
|
|
} |
|
|
function handle_error(error) { |
|
|
var effect = active_effect; |
|
|
if (effect === null) { |
|
|
active_reaction.f |= ERROR_VALUE; |
|
|
return error; |
|
|
} |
|
|
if ((effect.f & EFFECT_RAN) === 0) { |
|
|
if ((effect.f & BOUNDARY_EFFECT) === 0) { |
|
|
throw error; |
|
|
} |
|
|
effect.b.error(error); |
|
|
} else { |
|
|
invoke_error_boundary(error, effect); |
|
|
} |
|
|
} |
|
|
function invoke_error_boundary(error, effect) { |
|
|
while (effect !== null) { |
|
|
if ((effect.f & BOUNDARY_EFFECT) !== 0) { |
|
|
try { |
|
|
effect.b.error(error); |
|
|
return; |
|
|
} catch (e) { |
|
|
error = e; |
|
|
} |
|
|
} |
|
|
effect = effect.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; |
|
|
let is_flushing_sync = 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; |
|
|
is_deferred() { |
|
|
return this.is_fork || this.#blocking_pending > 0; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.is_deferred()) { |
|
|
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 effect = root2.first; |
|
|
while (effect !== null) { |
|
|
var flags2 = effect.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(effect); |
|
|
if ((effect.f & BOUNDARY_EFFECT) !== 0 && effect.b?.is_pending()) { |
|
|
target = { |
|
|
parent: target, |
|
|
effect, |
|
|
effects: [], |
|
|
render_effects: [], |
|
|
block_effects: [] |
|
|
}; |
|
|
} |
|
|
if (!skip && effect.fn !== null) { |
|
|
if (is_branch) { |
|
|
effect.f ^= CLEAN; |
|
|
} else if ((flags2 & EFFECT) !== 0) { |
|
|
target.effects.push(effect); |
|
|
} else if (is_dirty(effect)) { |
|
|
if ((effect.f & BLOCK_EFFECT) !== 0) target.block_effects.push(effect); |
|
|
update_effect(effect); |
|
|
} |
|
|
var child = effect.first; |
|
|
if (child !== null) { |
|
|
effect = child; |
|
|
continue; |
|
|
} |
|
|
} |
|
|
var parent = effect.parent; |
|
|
effect = effect.next; |
|
|
while (effect === 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; |
|
|
} |
|
|
effect = 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); |
|
|
this.#clear_marked(e.deps); |
|
|
set_signal_status(e, CLEAN); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#clear_marked(deps) { |
|
|
if (deps === null) return; |
|
|
for (const dep of deps) { |
|
|
if ((dep.f & DERIVED) === 0 || (dep.f & WAS_MARKED) === 0) { |
|
|
continue; |
|
|
} |
|
|
dep.f ^= WAS_MARKED; |
|
|
this.#clear_marked( |
|
|
|
|
|
dep.deps |
|
|
); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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() { |
|
|
if (current_batch !== this) return; |
|
|
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) { |
|
|
var prev_queued_root_effects = queued_root_effects; |
|
|
queued_root_effects = []; |
|
|
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); |
|
|
} |
|
|
batch.deactivate(); |
|
|
} |
|
|
queued_root_effects = prev_queued_root_effects; |
|
|
} |
|
|
} |
|
|
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); |
|
|
if (!is_flushing_sync) { |
|
|
Batch.enqueue(() => { |
|
|
if (current_batch !== batch) { |
|
|
return; |
|
|
} |
|
|
batch.flush(); |
|
|
}); |
|
|
} |
|
|
} |
|
|
return current_batch; |
|
|
} |
|
|
|
|
|
static enqueue(task) { |
|
|
queue_micro_task(task); |
|
|
} |
|
|
apply() { |
|
|
return; |
|
|
} |
|
|
} |
|
|
function flushSync(fn) { |
|
|
var was_flushing_sync = is_flushing_sync; |
|
|
is_flushing_sync = true; |
|
|
try { |
|
|
var result; |
|
|
if (fn) ; |
|
|
while (true) { |
|
|
flush_tasks(); |
|
|
if (queued_root_effects.length === 0) { |
|
|
current_batch?.flush(); |
|
|
if (queued_root_effects.length === 0) { |
|
|
last_scheduled_effect = null; |
|
|
return ( |
|
|
|
|
|
result |
|
|
); |
|
|
} |
|
|
} |
|
|
flush_effects(); |
|
|
} |
|
|
} finally { |
|
|
is_flushing_sync = was_flushing_sync; |
|
|
} |
|
|
} |
|
|
function flush_effects() { |
|
|
var was_updating_effect = is_updating_effect; |
|
|
is_flushing = true; |
|
|
var source_stacks = null; |
|
|
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(); |
|
|
if (DEV) ; |
|
|
} |
|
|
} 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 effect = effects[i++]; |
|
|
if ((effect.f & (DESTROYED | INERT)) === 0 && is_dirty(effect)) { |
|
|
eager_block_effects = new Set(); |
|
|
update_effect(effect); |
|
|
if (effect.deps === null && effect.first === null && effect.nodes_start === null) { |
|
|
if (effect.teardown === null && effect.ac === null) { |
|
|
unlink_effect(effect); |
|
|
} else { |
|
|
effect.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 effect = last_scheduled_effect = signal; |
|
|
while (effect.parent !== null) { |
|
|
effect = effect.parent; |
|
|
var flags2 = effect.f; |
|
|
if (is_flushing && effect === active_effect && (flags2 & BLOCK_EFFECT) !== 0 && (flags2 & HEAD_EFFECT) === 0) { |
|
|
return; |
|
|
} |
|
|
if ((flags2 & (ROOT_EFFECT | BRANCH_EFFECT)) !== 0) { |
|
|
if ((flags2 & CLEAN) === 0) return; |
|
|
effect.f ^= CLEAN; |
|
|
} |
|
|
} |
|
|
queued_root_effects.push(effect); |
|
|
} |
|
|
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 = hydrating ? hydrate_node : 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; |
|
|
if (hydrating) { |
|
|
const comment = this.#hydrate_open; |
|
|
hydrate_next(); |
|
|
const server_rendered_pending = ( |
|
|
|
|
|
comment.nodeType === COMMENT_NODE && |
|
|
comment.data === HYDRATION_START_ELSE |
|
|
); |
|
|
if (server_rendered_pending) { |
|
|
this.#hydrate_pending_content(); |
|
|
} else { |
|
|
this.#hydrate_resolved_content(); |
|
|
} |
|
|
} else { |
|
|
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); |
|
|
if (hydrating) { |
|
|
this.#anchor = hydrate_node; |
|
|
} |
|
|
} |
|
|
#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; |
|
|
} |
|
|
if (hydrating) { |
|
|
set_hydrate_node( |
|
|
|
|
|
this.#hydrate_open |
|
|
); |
|
|
next(); |
|
|
set_hydrate_node(skip_nodes()); |
|
|
} |
|
|
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 destroy_derived_effects(derived) { |
|
|
var effects = derived.effects; |
|
|
if (effects !== null) { |
|
|
derived.effects = null; |
|
|
for (var i = 0; i < effects.length; i += 1) { |
|
|
destroy_effect( |
|
|
|
|
|
effects[i] |
|
|
); |
|
|
} |
|
|
} |
|
|
} |
|
|
function get_derived_parent_effect(derived) { |
|
|
var parent = derived.parent; |
|
|
while (parent !== null) { |
|
|
if ((parent.f & DERIVED) === 0) { |
|
|
return (parent.f & DESTROYED) === 0 ? ( |
|
|
|
|
|
parent |
|
|
) : null; |
|
|
} |
|
|
parent = parent.parent; |
|
|
} |
|
|
return null; |
|
|
} |
|
|
function execute_derived(derived) { |
|
|
var value; |
|
|
var prev_active_effect = active_effect; |
|
|
set_active_effect(get_derived_parent_effect(derived)); |
|
|
{ |
|
|
try { |
|
|
derived.f &= ~WAS_MARKED; |
|
|
destroy_derived_effects(derived); |
|
|
value = update_reaction(derived); |
|
|
} finally { |
|
|
set_active_effect(prev_active_effect); |
|
|
} |
|
|
} |
|
|
return value; |
|
|
} |
|
|
function update_derived(derived) { |
|
|
var value = execute_derived(derived); |
|
|
if (!derived.equals(value)) { |
|
|
derived.v = value; |
|
|
derived.wv = increment_write_version(); |
|
|
} |
|
|
if (is_destroying_effect) { |
|
|
return; |
|
|
} |
|
|
if (batch_values !== null) { |
|
|
if (effect_tracking()) { |
|
|
batch_values.set(derived, derived.v); |
|
|
} |
|
|
} else { |
|
|
var status = (derived.f & CONNECTED) === 0 ? MAYBE_DIRTY : CLEAN; |
|
|
set_signal_status(derived, 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; |
|
|
} |
|
|
return s; |
|
|
} |
|
|
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 (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; |
|
|
var prev_is_updating_effect = is_updating_effect; |
|
|
set_is_updating_effect(true); |
|
|
const inspects = Array.from(eager_effects); |
|
|
try { |
|
|
for (const effect of inspects) { |
|
|
if ((effect.f & CLEAN) !== 0) { |
|
|
set_signal_status(effect, MAYBE_DIRTY); |
|
|
} |
|
|
if (is_dirty(effect)) { |
|
|
update_effect(effect); |
|
|
} |
|
|
} |
|
|
} finally { |
|
|
set_is_updating_effect(prev_is_updating_effect); |
|
|
} |
|
|
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 length = reactions.length; |
|
|
for (var i = 0; i < length; i++) { |
|
|
var reaction = reactions[i]; |
|
|
var flags2 = reaction.f; |
|
|
var not_dirty = (flags2 & DIRTY) === 0; |
|
|
if (not_dirty) { |
|
|
set_signal_status(reaction, status); |
|
|
} |
|
|
if ((flags2 & DERIVED) !== 0) { |
|
|
var derived = ( |
|
|
|
|
|
reaction |
|
|
); |
|
|
batch_values?.delete(derived); |
|
|
if ((flags2 & WAS_MARKED) === 0) { |
|
|
if (flags2 & CONNECTED) { |
|
|
reaction.f |= WAS_MARKED; |
|
|
} |
|
|
mark_reactions(derived, 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(_, prop, descriptor) { |
|
|
if (!("value" in descriptor) || descriptor.configurable === false || descriptor.enumerable === false || descriptor.writable === false) { |
|
|
state_descriptors_fixed(); |
|
|
} |
|
|
var s = sources.get(prop); |
|
|
if (s === void 0) { |
|
|
s = with_parent(() => { |
|
|
var s2 = state(descriptor.value); |
|
|
sources.set(prop, s2); |
|
|
return s2; |
|
|
}); |
|
|
} else { |
|
|
set(s, descriptor.value, true); |
|
|
} |
|
|
return true; |
|
|
}, |
|
|
deleteProperty(target, prop) { |
|
|
var s = sources.get(prop); |
|
|
if (s === void 0) { |
|
|
if (prop in target) { |
|
|
const s2 = with_parent(() => state(UNINITIALIZED)); |
|
|
sources.set(prop, s2); |
|
|
increment(version); |
|
|
} |
|
|
} else { |
|
|
set(s, UNINITIALIZED); |
|
|
increment(version); |
|
|
} |
|
|
return true; |
|
|
}, |
|
|
get(target, prop, receiver) { |
|
|
if (prop === STATE_SYMBOL) { |
|
|
return value; |
|
|
} |
|
|
var s = sources.get(prop); |
|
|
var exists = prop in target; |
|
|
if (s === void 0 && (!exists || get_descriptor(target, prop)?.writable)) { |
|
|
s = with_parent(() => { |
|
|
var p = proxy(exists ? target[prop] : UNINITIALIZED); |
|
|
var s2 = state(p); |
|
|
return s2; |
|
|
}); |
|
|
sources.set(prop, s); |
|
|
} |
|
|
if (s !== void 0) { |
|
|
var v = get(s); |
|
|
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 s = sources.get(prop); |
|
|
if (s) descriptor.value = get(s); |
|
|
} 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 s = sources.get(prop); |
|
|
var has = s !== void 0 && s.v !== UNINITIALIZED || Reflect.has(target, prop); |
|
|
if (s !== void 0 || active_effect !== null && (!has || get_descriptor(target, prop)?.writable)) { |
|
|
if (s === void 0) { |
|
|
s = with_parent(() => { |
|
|
var p = has ? proxy(target[prop]) : UNINITIALIZED; |
|
|
var s2 = state(p); |
|
|
return s2; |
|
|
}); |
|
|
sources.set(prop, s); |
|
|
} |
|
|
var value2 = get(s); |
|
|
if (value2 === UNINITIALIZED) { |
|
|
return false; |
|
|
} |
|
|
} |
|
|
return has; |
|
|
}, |
|
|
set(target, prop, value2, receiver) { |
|
|
var s = sources.get(prop); |
|
|
var has = prop in target; |
|
|
if (is_proxied_array && prop === "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, prop)?.writable) { |
|
|
s = with_parent(() => state(void 0)); |
|
|
set(s, proxy(value2)); |
|
|
sources.set(prop, s); |
|
|
} |
|
|
} else { |
|
|
has = s.v !== UNINITIALIZED; |
|
|
var p = with_parent(() => proxy(value2)); |
|
|
set(s, 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 = ( |
|
|
|
|
|
sources.get("length") |
|
|
); |
|
|
var n = Number(prop); |
|
|
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 first_child_getter; |
|
|
var next_sibling_getter; |
|
|
function init_operations() { |
|
|
if ($window !== void 0) { |
|
|
return; |
|
|
} |
|
|
$window = window; |
|
|
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 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(effect, parent_effect) { |
|
|
var parent_last = parent_effect.last; |
|
|
if (parent_last === null) { |
|
|
parent_effect.last = parent_effect.first = effect; |
|
|
} else { |
|
|
parent_last.next = effect; |
|
|
effect.prev = parent_last; |
|
|
parent_effect.last = effect; |
|
|
} |
|
|
} |
|
|
function create_effect(type, fn, sync) { |
|
|
var parent = active_effect; |
|
|
if (parent !== null && (parent.f & INERT) !== 0) { |
|
|
type |= INERT; |
|
|
} |
|
|
var effect = { |
|
|
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(effect); |
|
|
effect.f |= EFFECT_RAN; |
|
|
} catch (e2) { |
|
|
destroy_effect(effect); |
|
|
throw e2; |
|
|
} |
|
|
} else if (fn !== null) { |
|
|
schedule_effect(effect); |
|
|
} |
|
|
var e = effect; |
|
|
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 derived = ( |
|
|
|
|
|
active_reaction |
|
|
); |
|
|
(derived.effects ??= []).push(e); |
|
|
} |
|
|
} |
|
|
return effect; |
|
|
} |
|
|
function effect_tracking() { |
|
|
return active_reaction !== null && !untracking; |
|
|
} |
|
|
function create_user_effect(fn) { |
|
|
return create_effect(EFFECT | USER_EFFECT, fn, false); |
|
|
} |
|
|
function component_root(fn) { |
|
|
Batch.ensure(); |
|
|
const effect = create_effect(ROOT_EFFECT | EFFECT_PRESERVED, fn, true); |
|
|
return (options2 = {}) => { |
|
|
return new Promise((fulfil) => { |
|
|
if (options2.outro) { |
|
|
pause_effect(effect, () => { |
|
|
destroy_effect(effect); |
|
|
fulfil(void 0); |
|
|
}); |
|
|
} else { |
|
|
destroy_effect(effect); |
|
|
fulfil(void 0); |
|
|
} |
|
|
}); |
|
|
}; |
|
|
} |
|
|
function render_effect(fn, flags2 = 0) { |
|
|
return create_effect(RENDER_EFFECT | flags2, fn, true); |
|
|
} |
|
|
function block(fn, flags2 = 0) { |
|
|
var effect = create_effect(BLOCK_EFFECT | flags2, fn, true); |
|
|
return effect; |
|
|
} |
|
|
function branch(fn) { |
|
|
return create_effect(BRANCH_EFFECT | EFFECT_PRESERVED, fn, true); |
|
|
} |
|
|
function execute_effect_teardown(effect) { |
|
|
var teardown = effect.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 effect = signal.first; |
|
|
signal.first = signal.last = null; |
|
|
while (effect !== null) { |
|
|
const controller = effect.ac; |
|
|
if (controller !== null) { |
|
|
without_reactive_context(() => { |
|
|
controller.abort(STALE_REACTION); |
|
|
}); |
|
|
} |
|
|
var next2 = effect.next; |
|
|
if ((effect.f & ROOT_EFFECT) !== 0) { |
|
|
effect.parent = null; |
|
|
} else { |
|
|
destroy_effect(effect, remove_dom); |
|
|
} |
|
|
effect = next2; |
|
|
} |
|
|
} |
|
|
function destroy_block_effect_children(signal) { |
|
|
var effect = signal.first; |
|
|
while (effect !== null) { |
|
|
var next2 = effect.next; |
|
|
if ((effect.f & BRANCH_EFFECT) === 0) { |
|
|
destroy_effect(effect); |
|
|
} |
|
|
effect = next2; |
|
|
} |
|
|
} |
|
|
function destroy_effect(effect, remove_dom = true) { |
|
|
var removed = false; |
|
|
if ((remove_dom || (effect.f & HEAD_EFFECT) !== 0) && effect.nodes_start !== null && effect.nodes_end !== null) { |
|
|
remove_effect_dom( |
|
|
effect.nodes_start, |
|
|
|
|
|
effect.nodes_end |
|
|
); |
|
|
removed = true; |
|
|
} |
|
|
destroy_effect_children(effect, remove_dom && !removed); |
|
|
remove_reactions(effect, 0); |
|
|
set_signal_status(effect, DESTROYED); |
|
|
var transitions = effect.transitions; |
|
|
if (transitions !== null) { |
|
|
for (const transition of transitions) { |
|
|
transition.stop(); |
|
|
} |
|
|
} |
|
|
execute_effect_teardown(effect); |
|
|
var parent = effect.parent; |
|
|
if (parent !== null && parent.first !== null) { |
|
|
unlink_effect(effect); |
|
|
} |
|
|
effect.next = effect.prev = effect.teardown = effect.ctx = effect.deps = effect.fn = effect.nodes_start = effect.nodes_end = effect.ac = null; |
|
|
} |
|
|
function remove_effect_dom(node, end) { |
|
|
while (node !== null) { |
|
|
var next2 = node === end ? null : ( |
|
|
|
|
|
get_next_sibling(node) |
|
|
); |
|
|
node.remove(); |
|
|
node = next2; |
|
|
} |
|
|
} |
|
|
function unlink_effect(effect) { |
|
|
var parent = effect.parent; |
|
|
var prev = effect.prev; |
|
|
var next2 = effect.next; |
|
|
if (prev !== null) prev.next = next2; |
|
|
if (next2 !== null) next2.prev = prev; |
|
|
if (parent !== null) { |
|
|
if (parent.first === effect) parent.first = next2; |
|
|
if (parent.last === effect) parent.last = prev; |
|
|
} |
|
|
} |
|
|
function pause_effect(effect, callback, destroy = true) { |
|
|
var transitions = []; |
|
|
pause_children(effect, transitions, true); |
|
|
run_out_transitions(transitions, () => { |
|
|
if (destroy) destroy_effect(effect); |
|
|
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(effect, transitions, local) { |
|
|
if ((effect.f & INERT) !== 0) return; |
|
|
effect.f ^= INERT; |
|
|
if (effect.transitions !== null) { |
|
|
for (const transition of effect.transitions) { |
|
|
if (transition.is_global || local) { |
|
|
transitions.push(transition); |
|
|
} |
|
|
} |
|
|
} |
|
|
var child = effect.first; |
|
|
while (child !== null) { |
|
|
var sibling = child.next; |
|
|
var transparent = (child.f & EFFECT_TRANSPARENT) !== 0 || |
|
|
|
|
|
|
|
|
(child.f & BRANCH_EFFECT) !== 0 && (effect.f & BLOCK_EFFECT) !== 0; |
|
|
pause_children(child, transitions, transparent ? local : false); |
|
|
child = sibling; |
|
|
} |
|
|
} |
|
|
function move_effect(effect, fragment) { |
|
|
var node = effect.nodes_start; |
|
|
var end = effect.nodes_end; |
|
|
while (node !== null) { |
|
|
var next2 = node === end ? null : ( |
|
|
|
|
|
get_next_sibling(node) |
|
|
); |
|
|
fragment.append(node); |
|
|
node = next2; |
|
|
} |
|
|
} |
|
|
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(effect) { |
|
|
active_effect = effect; |
|
|
} |
|
|
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, effect, 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, |
|
|
effect, |
|
|
false |
|
|
); |
|
|
} else if (effect === 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(effect) { |
|
|
var flags2 = effect.f; |
|
|
if ((flags2 & DESTROYED) !== 0) { |
|
|
return; |
|
|
} |
|
|
set_signal_status(effect, CLEAN); |
|
|
var previous_effect = active_effect; |
|
|
var was_updating_effect = is_updating_effect; |
|
|
active_effect = effect; |
|
|
is_updating_effect = true; |
|
|
try { |
|
|
if ((flags2 & BLOCK_EFFECT) !== 0) { |
|
|
destroy_block_effect_children(effect); |
|
|
} else { |
|
|
destroy_effect_children(effect); |
|
|
} |
|
|
execute_effect_teardown(effect); |
|
|
var teardown = update_reaction(effect); |
|
|
effect.teardown = typeof teardown === "function" ? teardown : null; |
|
|
effect.wv = write_version; |
|
|
var dep; |
|
|
if (DEV && tracing_mode_flag && (effect.f & DIRTY) !== 0 && effect.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 derived = ( |
|
|
|
|
|
signal |
|
|
); |
|
|
var value = derived.v; |
|
|
if ((derived.f & CLEAN) === 0 && derived.reactions !== null || depends_on_old_values(derived)) { |
|
|
value = execute_derived(derived); |
|
|
} |
|
|
old_values.set(derived, value); |
|
|
return value; |
|
|
} |
|
|
} else if (is_derived) { |
|
|
derived = |
|
|
signal; |
|
|
if (batch_values?.has(derived)) { |
|
|
return batch_values.get(derived); |
|
|
} |
|
|
if (is_dirty(derived)) { |
|
|
update_derived(derived); |
|
|
} |
|
|
if (is_updating_effect && effect_tracking() && (derived.f & CONNECTED) === 0) { |
|
|
reconnect(derived); |
|
|
} |
|
|
} 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(derived) { |
|
|
if (derived.deps === null) return; |
|
|
derived.f ^= CONNECTED; |
|
|
for (const dep of derived.deps) { |
|
|
(dep.reactions ??= []).push(derived); |
|
|
if ((dep.f & DERIVED) !== 0 && (dep.f & CONNECTED) === 0) { |
|
|
reconnect( |
|
|
|
|
|
dep |
|
|
); |
|
|
} |
|
|
} |
|
|
} |
|
|
function depends_on_old_values(derived) { |
|
|
if (derived.v === UNINITIALIZED) return true; |
|
|
if (derived.deps === null) return false; |
|
|
for (const dep of derived.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; |
|
|
} |
|
|
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 assign_nodes(start, end) { |
|
|
var effect = ( |
|
|
|
|
|
active_effect |
|
|
); |
|
|
if (effect.nodes_start === null) { |
|
|
effect.nodes_start = start; |
|
|
effect.nodes_end = end; |
|
|
} |
|
|
} |
|
|
function mount(component, options2) { |
|
|
return _mount(component, options2); |
|
|
} |
|
|
function hydrate(component, options2) { |
|
|
init_operations(); |
|
|
options2.intro = options2.intro ?? false; |
|
|
const target = options2.target; |
|
|
const was_hydrating = hydrating; |
|
|
const previous_hydrate_node = hydrate_node; |
|
|
try { |
|
|
var anchor = ( |
|
|
|
|
|
get_first_child(target) |
|
|
); |
|
|
while (anchor && (anchor.nodeType !== COMMENT_NODE || |
|
|
anchor.data !== HYDRATION_START)) { |
|
|
anchor = |
|
|
get_next_sibling(anchor); |
|
|
} |
|
|
if (!anchor) { |
|
|
throw HYDRATION_ERROR; |
|
|
} |
|
|
set_hydrating(true); |
|
|
set_hydrate_node( |
|
|
|
|
|
anchor |
|
|
); |
|
|
const instance = _mount(component, { ...options2, anchor }); |
|
|
set_hydrating(false); |
|
|
return ( |
|
|
|
|
|
instance |
|
|
); |
|
|
} catch (error) { |
|
|
if (error instanceof Error && error.message.split("\n").some((line) => line.startsWith("https://svelte.dev/e/"))) { |
|
|
throw error; |
|
|
} |
|
|
if (error !== HYDRATION_ERROR) { |
|
|
console.warn("Failed to hydrate: ", error); |
|
|
} |
|
|
if (options2.recover === false) { |
|
|
hydration_failed(); |
|
|
} |
|
|
init_operations(); |
|
|
clear_text_content(target); |
|
|
set_hydrating(false); |
|
|
return mount(component, options2); |
|
|
} finally { |
|
|
set_hydrating(was_hydrating); |
|
|
set_hydrate_node(previous_hydrate_node); |
|
|
} |
|
|
} |
|
|
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 unmount2 = 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; |
|
|
} |
|
|
if (hydrating) { |
|
|
assign_nodes( |
|
|
|
|
|
anchor_node2, |
|
|
null |
|
|
); |
|
|
} |
|
|
component = Component(anchor_node2, props) || {}; |
|
|
if (hydrating) { |
|
|
active_effect.nodes_end = hydrate_node; |
|
|
if (hydrate_node === null || hydrate_node.nodeType !== COMMENT_NODE || |
|
|
hydrate_node.data !== HYDRATION_END) { |
|
|
hydration_mismatch(); |
|
|
throw HYDRATION_ERROR; |
|
|
} |
|
|
} |
|
|
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, unmount2); |
|
|
return component; |
|
|
} |
|
|
let mounted_components = new WeakMap(); |
|
|
function unmount(component, options2) { |
|
|
const fn = mounted_components.get(component); |
|
|
if (fn) { |
|
|
mounted_components.delete(component); |
|
|
return fn(options2); |
|
|
} |
|
|
return Promise.resolve(); |
|
|
} |
|
|
function asClassComponent$1(component) { |
|
|
return class extends Svelte4Component { |
|
|
|
|
|
constructor(options2) { |
|
|
super({ |
|
|
component, |
|
|
...options2 |
|
|
}); |
|
|
} |
|
|
}; |
|
|
} |
|
|
class Svelte4Component { |
|
|
|
|
|
#events; |
|
|
|
|
|
#instance; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
constructor(options2) { |
|
|
var sources = new Map(); |
|
|
var add_source = (key, value) => { |
|
|
var s = mutable_source(value, false, false); |
|
|
sources.set(key, s); |
|
|
return s; |
|
|
}; |
|
|
const props = new Proxy( |
|
|
{ ...options2.props || {}, $$events: {} }, |
|
|
{ |
|
|
get(target, prop) { |
|
|
return get(sources.get(prop) ?? add_source(prop, Reflect.get(target, prop))); |
|
|
}, |
|
|
has(target, prop) { |
|
|
if (prop === LEGACY_PROPS) return true; |
|
|
get(sources.get(prop) ?? add_source(prop, Reflect.get(target, prop))); |
|
|
return Reflect.has(target, prop); |
|
|
}, |
|
|
set(target, prop, value) { |
|
|
set(sources.get(prop) ?? add_source(prop, value), value); |
|
|
return Reflect.set(target, prop, value); |
|
|
} |
|
|
} |
|
|
); |
|
|
this.#instance = (options2.hydrate ? hydrate : mount)(options2.component, { |
|
|
target: options2.target, |
|
|
anchor: options2.anchor, |
|
|
props, |
|
|
context: options2.context, |
|
|
intro: options2.intro ?? false, |
|
|
recover: options2.recover |
|
|
}); |
|
|
if (!options2?.props?.$$host || options2.sync === false) { |
|
|
flushSync(); |
|
|
} |
|
|
this.#events = props.$$events; |
|
|
for (const key of Object.keys(this.#instance)) { |
|
|
if (key === "$set" || key === "$destroy" || key === "$on") continue; |
|
|
define_property(this, key, { |
|
|
get() { |
|
|
return this.#instance[key]; |
|
|
}, |
|
|
|
|
|
set(value) { |
|
|
this.#instance[key] = value; |
|
|
}, |
|
|
enumerable: true |
|
|
}); |
|
|
} |
|
|
this.#instance.$set = |
|
|
(next2) => { |
|
|
Object.assign(props, next2); |
|
|
}; |
|
|
this.#instance.$destroy = () => { |
|
|
unmount(this.#instance); |
|
|
}; |
|
|
} |
|
|
|
|
|
$set(props) { |
|
|
this.#instance.$set(props); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$on(event, callback) { |
|
|
this.#events[event] = this.#events[event] || []; |
|
|
const cb = (...args) => callback.call(this, ...args); |
|
|
this.#events[event].push(cb); |
|
|
return () => { |
|
|
this.#events[event] = this.#events[event].filter( |
|
|
|
|
|
(fn) => fn !== cb |
|
|
); |
|
|
}; |
|
|
} |
|
|
$destroy() { |
|
|
this.#instance.$destroy(); |
|
|
} |
|
|
} |
|
|
let read_implementation = null; |
|
|
function set_read_implementation(fn) { |
|
|
read_implementation = fn; |
|
|
} |
|
|
function set_manifest(_) { |
|
|
} |
|
|
function asClassComponent(component) { |
|
|
const component_constructor = asClassComponent$1(component); |
|
|
const _render = (props, { context } = {}) => { |
|
|
const result = render(component, { props, context }); |
|
|
const munged = Object.defineProperties( |
|
|
|
|
|
{}, |
|
|
{ |
|
|
css: { |
|
|
value: { code: "", map: null } |
|
|
}, |
|
|
head: { |
|
|
get: () => result.head |
|
|
}, |
|
|
html: { |
|
|
get: () => result.body |
|
|
}, |
|
|
then: { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
value: (onfulfilled, onrejected) => { |
|
|
{ |
|
|
const user_result = onfulfilled({ |
|
|
css: munged.css, |
|
|
head: munged.head, |
|
|
html: munged.html |
|
|
}); |
|
|
return Promise.resolve(user_result); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
); |
|
|
return munged; |
|
|
}; |
|
|
component_constructor.render = _render; |
|
|
return component_constructor; |
|
|
} |
|
|
function Root($$renderer, $$props) { |
|
|
$$renderer.component(($$renderer2) => { |
|
|
let { |
|
|
stores, |
|
|
page, |
|
|
constructors, |
|
|
components = [], |
|
|
form, |
|
|
data_0 = null, |
|
|
data_1 = null |
|
|
} = $$props; |
|
|
{ |
|
|
setContext("__svelte__", stores); |
|
|
} |
|
|
{ |
|
|
stores.page.set(page); |
|
|
} |
|
|
const Pyramid_1 = constructors[1]; |
|
|
if (constructors[1]) { |
|
|
$$renderer2.push("<!--[-->"); |
|
|
const Pyramid_0 = constructors[0]; |
|
|
$$renderer2.push(`<!---->`); |
|
|
Pyramid_0($$renderer2, { |
|
|
data: data_0, |
|
|
form, |
|
|
params: page.params, |
|
|
children: ($$renderer3) => { |
|
|
$$renderer3.push(`<!---->`); |
|
|
Pyramid_1($$renderer3, { data: data_1, form, params: page.params }); |
|
|
$$renderer3.push(`<!---->`); |
|
|
}, |
|
|
$$slots: { default: true } |
|
|
}); |
|
|
$$renderer2.push(`<!---->`); |
|
|
} else { |
|
|
$$renderer2.push("<!--[!-->"); |
|
|
const Pyramid_0 = constructors[0]; |
|
|
$$renderer2.push(`<!---->`); |
|
|
Pyramid_0($$renderer2, { data: data_0, form, params: page.params }); |
|
|
$$renderer2.push(`<!---->`); |
|
|
} |
|
|
$$renderer2.push(`<!--]--> `); |
|
|
{ |
|
|
$$renderer2.push("<!--[!-->"); |
|
|
} |
|
|
$$renderer2.push(`<!--]-->`); |
|
|
}); |
|
|
} |
|
|
const root = asClassComponent(Root); |
|
|
const options = { |
|
|
app_template_contains_nonce: false, |
|
|
async: false, |
|
|
csp: { "mode": "auto", "directives": { "upgrade-insecure-requests": false, "block-all-mixed-content": false }, "reportOnly": { "upgrade-insecure-requests": false, "block-all-mixed-content": false } }, |
|
|
csrf_check_origin: true, |
|
|
csrf_trusted_origins: [], |
|
|
embedded: false, |
|
|
env_public_prefix: "PUBLIC_", |
|
|
env_private_prefix: "", |
|
|
hash_routing: false, |
|
|
hooks: null, |
|
|
|
|
|
preload_strategy: "modulepreload", |
|
|
root, |
|
|
service_worker: false, |
|
|
service_worker_options: void 0, |
|
|
templates: { |
|
|
app: ({ head, body, assets, nonce, env }) => '<!doctype html>\n<html lang="en">\n <head>\n <meta charset="utf-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1" />\n ' + head + '\n </head>\n <body data-sveltekit-preload-data="hover">\n <div style="display: contents">' + body + "</div>\n </body>\n</html>\n", |
|
|
error: ({ status, message }) => '<!doctype html>\n<html lang="en">\n <head>\n <meta charset="utf-8" />\n <title>' + message + `</title> |
|
|
|
|
|
<style> |
|
|
body { |
|
|
--bg: white; |
|
|
--fg: #222; |
|
|
--divider: #ccc; |
|
|
background: var(--bg); |
|
|
color: var(--fg); |
|
|
font-family: |
|
|
system-ui, |
|
|
-apple-system, |
|
|
BlinkMacSystemFont, |
|
|
'Segoe UI', |
|
|
Roboto, |
|
|
Oxygen, |
|
|
Ubuntu, |
|
|
Cantarell, |
|
|
'Open Sans', |
|
|
'Helvetica Neue', |
|
|
sans-serif; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
height: 100vh; |
|
|
margin: 0; |
|
|
} |
|
|
|
|
|
.error { |
|
|
display: flex; |
|
|
align-items: center; |
|
|
max-width: 32rem; |
|
|
margin: 0 1rem; |
|
|
} |
|
|
|
|
|
.status { |
|
|
font-weight: 200; |
|
|
font-size: 3rem; |
|
|
line-height: 1; |
|
|
position: relative; |
|
|
top: -0.05rem; |
|
|
} |
|
|
|
|
|
.message { |
|
|
border-left: 1px solid var(--divider); |
|
|
padding: 0 0 0 1rem; |
|
|
margin: 0 0 0 1rem; |
|
|
min-height: 2.5rem; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
} |
|
|
|
|
|
.message h1 { |
|
|
font-weight: 400; |
|
|
font-size: 1em; |
|
|
margin: 0; |
|
|
} |
|
|
|
|
|
@media (prefers-color-scheme: dark) { |
|
|
body { |
|
|
--bg: #222; |
|
|
--fg: #ddd; |
|
|
--divider: #666; |
|
|
} |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body> |
|
|
<div class="error"> |
|
|
<span class="status">` + status + '</span>\n <div class="message">\n <h1>' + message + "</h1>\n </div>\n </div>\n </body>\n</html>\n" |
|
|
}, |
|
|
version_hash: "1mzbha" |
|
|
}; |
|
|
async function get_hooks() { |
|
|
let handle; |
|
|
let handleFetch; |
|
|
let handleError; |
|
|
let handleValidationError; |
|
|
let init; |
|
|
let reroute; |
|
|
let transport; |
|
|
return { |
|
|
handle, |
|
|
handleFetch, |
|
|
handleError, |
|
|
handleValidationError, |
|
|
init, |
|
|
reroute, |
|
|
transport |
|
|
}; |
|
|
} |
|
|
export { |
|
|
set_public_env as a, |
|
|
set_read_implementation as b, |
|
|
set_manifest as c, |
|
|
get_hooks as g, |
|
|
options as o, |
|
|
public_env as p, |
|
|
read_implementation as r, |
|
|
set_private_env as s |
|
|
}; |
|
|
|