| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815 |
- import { H as HYDRATION_ERROR, C as COMMENT_NODE, a as HYDRATION_END, b as HYDRATION_START, c as HYDRATION_START_ELSE, r as run_all, B as BOUNDARY_EFFECT, R as REACTION_RAN, E as ERROR_VALUE, d as EFFECT, f as CONNECTED, h as CLEAN, M as MAYBE_DIRTY, D as DIRTY, i as DERIVED, W as WAS_MARKED, I as INERT, j as BLOCK_EFFECT, U as UNINITIALIZED, k as DESTROYED, l as EAGER_EFFECT, A as ASYNC, m as deferred, o as RENDER_EFFECT, p as MANAGED_EFFECT, q as ROOT_EFFECT, s as BRANCH_EFFECT, t as includes, u as HYDRATION_START_FAILED, v as EFFECT_TRANSPARENT, w as EFFECT_PRESERVED, S as STALE_REACTION, n as noop, x as STATE_SYMBOL, y as object_prototype, z as array_prototype, F as get_descriptor, G as get_prototype_of, J as is_array, K as is_extensible, L as HEAD_EFFECT, N as DESTROYING, O as USER_EFFECT, P as REACTION_IS_UPDATING, Q as index_of, T as define_property, V as array_from, X as is_passive_event, Y as LEGACY_PROPS, Z as render, _ as setContext, $ as derived } from "./index.js";
- import { B as BROWSER } from "./false.js";
- function equals(value) {
- return value === this.v;
- }
- function safe_not_equal(a, b) {
- return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
- }
- function safe_equals(value) {
- return !safe_not_equal(value, this.v);
- }
- 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(/* @__PURE__ */ get_next_sibling(hydrate_node));
- }
- function next(count = 1) {
- if (hydrating) {
- var i = count;
- var node = hydrate_node;
- while (i--) {
- node = /** @type {TemplateNode} */
- /* @__PURE__ */ 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 = (
- /** @type {Comment} */
- node.data
- );
- if (data === HYDRATION_END) {
- if (depth === 0) return node;
- depth -= 1;
- } else if (data === HYDRATION_START || data === HYDRATION_START_ELSE || // "[1", "[2", etc. for if blocks
- data[0] === "[" && !isNaN(Number(data.slice(1)))) {
- depth += 1;
- }
- }
- var next2 = (
- /** @type {TemplateNode} */
- /* @__PURE__ */ 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,
- r: (
- /** @type {Effect} */
- active_effect
- ),
- 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);
- }
- }
- context.i = true;
- component_context = context.p;
- return (
- /** @type {T} */
- {}
- );
- }
- 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 & REACTION_RAN) === 0 && (effect.f & EFFECT) === 0) {
- throw error;
- }
- invoke_error_boundary(error, effect);
- }
- function invoke_error_boundary(error, effect) {
- while (effect !== null) {
- if ((effect.f & BOUNDARY_EFFECT) !== 0) {
- if ((effect.f & REACTION_RAN) === 0) {
- throw error;
- }
- try {
- effect.b.error(error);
- return;
- } catch (e) {
- error = e;
- }
- }
- effect = effect.parent;
- }
- throw error;
- }
- const STATUS_MASK = -7169;
- function set_signal_status(signal, status) {
- signal.f = signal.f & STATUS_MASK | status;
- }
- function update_derived_status(derived2) {
- if ((derived2.f & CONNECTED) !== 0 || derived2.deps === null) {
- set_signal_status(derived2, CLEAN);
- } else {
- set_signal_status(derived2, MAYBE_DIRTY);
- }
- }
- function 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;
- clear_marked(
- /** @type {Derived} */
- dep.deps
- );
- }
- }
- function defer_effect(effect, dirty_effects, maybe_dirty_effects) {
- if ((effect.f & DIRTY) !== 0) {
- dirty_effects.add(effect);
- } else if ((effect.f & MAYBE_DIRTY) !== 0) {
- maybe_dirty_effects.add(effect);
- }
- clear_marked(effect.deps);
- set_signal_status(effect, CLEAN);
- }
- const batches = /* @__PURE__ */ new Set();
- let current_batch = null;
- let batch_values = null;
- let last_scheduled_effect = null;
- let is_flushing_sync = false;
- let is_processing = false;
- let collected_effects = null;
- let legacy_updates = null;
- var flush_count = 0;
- let uid = 1;
- class Batch {
- id = uid++;
- /**
- * The current values of any signals that are updated in this batch.
- * Tuple format: [value, is_derived] (note: is_derived is false for deriveds, too, if they were overridden via assignment)
- * They keys of this map are identical to `this.#previous`
- * @type {Map<Value, [any, boolean]>}
- */
- current = /* @__PURE__ */ new Map();
- /**
- * The values of any signals (sources and deriveds) that are updated in this batch _before_ those updates took place.
- * They keys of this map are identical to `this.#current`
- * @type {Map<Value, any>}
- */
- 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<(batch: Batch) => void>}
- */
- #commit_callbacks = /* @__PURE__ */ new Set();
- /**
- * If a fork is discarded, we need to destroy any effects that are no longer needed
- * @type {Set<(batch: Batch) => void>}
- */
- #discard_callbacks = /* @__PURE__ */ new Set();
- /**
- * Async effects that are currently in flight
- * @type {Map<Effect, number>}
- */
- #pending = /* @__PURE__ */ new Map();
- /**
- * Async effects that are currently in flight, _not_ inside a pending boundary
- * @type {Map<Effect, number>}
- */
- #blocking_pending = /* @__PURE__ */ new Map();
- /**
- * A deferred that resolves when the batch is committed, used with `settled()`
- * TODO replace with Promise.withResolvers once supported widely enough
- * @type {{ promise: Promise<void>, resolve: (value?: any) => void, reject: (reason: unknown) => void } | null}
- */
- #deferred = null;
- /**
- * The root effects that need to be flushed
- * @type {Effect[]}
- */
- #roots = [];
- /**
- * Effects created while this batch was active.
- * @type {Effect[]}
- */
- #new_effects = [];
- /**
- * Deferred effects (which run after async work has completed) that are DIRTY
- * @type {Set<Effect>}
- */
- #dirty_effects = /* @__PURE__ */ new Set();
- /**
- * Deferred effects that are MAYBE_DIRTY
- * @type {Set<Effect>}
- */
- #maybe_dirty_effects = /* @__PURE__ */ new Set();
- /**
- * A map of branches that still exist, but will be destroyed when this batch
- * is committed — we skip over these during `process`.
- * The value contains child effects that were dirty/maybe_dirty before being reset,
- * so they can be rescheduled if the branch survives.
- * @type {Map<Effect, { d: Effect[], m: Effect[] }>}
- */
- #skipped_branches = /* @__PURE__ */ new Map();
- is_fork = false;
- #decrement_queued = false;
- /** @type {Set<Batch>} */
- #blockers = /* @__PURE__ */ new Set();
- #is_deferred() {
- return this.is_fork || this.#blocking_pending.size > 0;
- }
- #is_blocked() {
- for (const batch of this.#blockers) {
- for (const effect of batch.#blocking_pending.keys()) {
- var skipped = false;
- var e = effect;
- while (e.parent !== null) {
- if (this.#skipped_branches.has(e)) {
- skipped = true;
- break;
- }
- e = e.parent;
- }
- if (!skipped) {
- return true;
- }
- }
- }
- return false;
- }
- /**
- * Add an effect to the #skipped_branches map and reset its children
- * @param {Effect} effect
- */
- skip_effect(effect) {
- if (!this.#skipped_branches.has(effect)) {
- this.#skipped_branches.set(effect, { d: [], m: [] });
- }
- }
- /**
- * Remove an effect from the #skipped_branches map and reschedule
- * any tracked dirty/maybe_dirty child effects
- * @param {Effect} effect
- */
- unskip_effect(effect) {
- var tracked = this.#skipped_branches.get(effect);
- if (tracked) {
- this.#skipped_branches.delete(effect);
- for (var e of tracked.d) {
- set_signal_status(e, DIRTY);
- this.schedule(e);
- }
- for (e of tracked.m) {
- set_signal_status(e, MAYBE_DIRTY);
- this.schedule(e);
- }
- }
- }
- #process() {
- if (flush_count++ > 1e3) {
- batches.delete(this);
- infinite_loop_guard();
- }
- if (!this.#is_deferred()) {
- for (const e of this.#dirty_effects) {
- this.#maybe_dirty_effects.delete(e);
- set_signal_status(e, DIRTY);
- this.schedule(e);
- }
- for (const e of this.#maybe_dirty_effects) {
- set_signal_status(e, MAYBE_DIRTY);
- this.schedule(e);
- }
- }
- const roots = this.#roots;
- this.#roots = [];
- this.apply();
- var effects = collected_effects = [];
- var render_effects = [];
- var updates = legacy_updates = [];
- for (const root2 of roots) {
- try {
- this.#traverse(root2, effects, render_effects);
- } catch (e) {
- reset_all(root2);
- throw e;
- }
- }
- current_batch = null;
- if (updates.length > 0) {
- var batch = Batch.ensure();
- for (const e of updates) {
- batch.schedule(e);
- }
- }
- collected_effects = null;
- legacy_updates = null;
- if (this.#is_deferred() || this.#is_blocked()) {
- this.#defer_effects(render_effects);
- this.#defer_effects(effects);
- for (const [e, t] of this.#skipped_branches) {
- reset_branch(e, t);
- }
- } else {
- if (this.#pending.size === 0) {
- batches.delete(this);
- }
- this.#dirty_effects.clear();
- this.#maybe_dirty_effects.clear();
- for (const fn of this.#commit_callbacks) fn(this);
- this.#commit_callbacks.clear();
- flush_queued_effects(render_effects);
- flush_queued_effects(effects);
- this.#deferred?.resolve();
- }
- var next_batch = (
- /** @type {Batch | null} */
- /** @type {unknown} */
- current_batch
- );
- if (this.#roots.length > 0) {
- const batch2 = next_batch ??= this;
- batch2.#roots.push(...this.#roots.filter((r) => !batch2.#roots.includes(r)));
- }
- if (next_batch !== null) {
- batches.add(next_batch);
- next_batch.#process();
- }
- if (!batches.has(this)) {
- this.#commit();
- }
- }
- /**
- * Traverse the effect tree, executing effects or stashing
- * them for later execution as appropriate
- * @param {Effect} root
- * @param {Effect[]} effects
- * @param {Effect[]} render_effects
- */
- #traverse(root2, effects, render_effects) {
- 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_branches.has(effect);
- if (!skip && effect.fn !== null) {
- if (is_branch) {
- effect.f ^= CLEAN;
- } else if ((flags2 & EFFECT) !== 0) {
- effects.push(effect);
- } else if (is_dirty(effect)) {
- if ((flags2 & BLOCK_EFFECT) !== 0) this.#maybe_dirty_effects.add(effect);
- update_effect(effect);
- }
- var child = effect.first;
- if (child !== null) {
- effect = child;
- continue;
- }
- }
- while (effect !== null) {
- var next2 = effect.next;
- if (next2 !== null) {
- effect = next2;
- break;
- }
- effect = effect.parent;
- }
- }
- }
- /**
- * @param {Effect[]} effects
- */
- #defer_effects(effects) {
- for (var i = 0; i < effects.length; i += 1) {
- defer_effect(effects[i], this.#dirty_effects, this.#maybe_dirty_effects);
- }
- }
- /**
- * Associate a change to a given source with the current
- * batch, noting its previous and current values
- * @param {Value} source
- * @param {any} old_value
- * @param {boolean} [is_derived]
- */
- capture(source2, old_value, is_derived = false) {
- if (old_value !== UNINITIALIZED && !this.previous.has(source2)) {
- this.previous.set(source2, old_value);
- }
- if ((source2.f & ERROR_VALUE) === 0) {
- this.current.set(source2, [source2.v, is_derived]);
- batch_values?.set(source2, source2.v);
- }
- }
- activate() {
- current_batch = this;
- }
- deactivate() {
- current_batch = null;
- batch_values = null;
- }
- flush() {
- try {
- is_processing = true;
- current_batch = this;
- this.#process();
- } finally {
- flush_count = 0;
- last_scheduled_effect = null;
- collected_effects = null;
- legacy_updates = null;
- is_processing = false;
- current_batch = null;
- batch_values = null;
- old_values.clear();
- }
- }
- discard() {
- for (const fn of this.#discard_callbacks) fn(this);
- this.#discard_callbacks.clear();
- batches.delete(this);
- }
- /**
- * @param {Effect} effect
- */
- register_created_effect(effect) {
- this.#new_effects.push(effect);
- }
- #commit() {
- for (const batch of batches) {
- var is_earlier = batch.id < this.id;
- var sources = [];
- for (const [source3, [value, is_derived]] of this.current) {
- if (batch.current.has(source3)) {
- var batch_value = (
- /** @type {[any, boolean]} */
- batch.current.get(source3)[0]
- );
- if (is_earlier && value !== batch_value) {
- batch.current.set(source3, [value, is_derived]);
- } else {
- continue;
- }
- }
- sources.push(source3);
- }
- var others = [...batch.current.keys()].filter((s) => !this.current.has(s));
- if (others.length === 0) {
- if (is_earlier) {
- batch.discard();
- }
- } else if (sources.length > 0) {
- batch.activate();
- var marked = /* @__PURE__ */ new Set();
- var checked = /* @__PURE__ */ new Map();
- for (var source2 of sources) {
- mark_effects(source2, others, marked, checked);
- }
- checked = /* @__PURE__ */ new Map();
- var current_unequal = [...batch.current.keys()].filter(
- (c) => this.current.has(c) ? (
- /** @type {[any, boolean]} */
- this.current.get(c)[0] !== c
- ) : true
- );
- for (const effect of this.#new_effects) {
- if ((effect.f & (DESTROYED | INERT | EAGER_EFFECT)) === 0 && depends_on(effect, current_unequal, checked)) {
- if ((effect.f & (ASYNC | BLOCK_EFFECT)) !== 0) {
- set_signal_status(effect, DIRTY);
- batch.schedule(effect);
- } else {
- batch.#dirty_effects.add(effect);
- }
- }
- }
- if (batch.#roots.length > 0) {
- batch.apply();
- for (var root2 of batch.#roots) {
- batch.#traverse(root2, [], []);
- }
- batch.#roots = [];
- }
- batch.deactivate();
- }
- }
- for (const batch of batches) {
- if (batch.#blockers.has(this)) {
- batch.#blockers.delete(this);
- if (batch.#blockers.size === 0 && !batch.#is_deferred()) {
- batch.activate();
- batch.#process();
- }
- }
- }
- }
- /**
- * @param {boolean} blocking
- * @param {Effect} effect
- */
- increment(blocking, effect) {
- let pending_count = this.#pending.get(effect) ?? 0;
- this.#pending.set(effect, pending_count + 1);
- if (blocking) {
- let blocking_pending_count = this.#blocking_pending.get(effect) ?? 0;
- this.#blocking_pending.set(effect, blocking_pending_count + 1);
- }
- }
- /**
- * @param {boolean} blocking
- * @param {Effect} effect
- * @param {boolean} skip - whether to skip updates (because this is triggered by a stale reaction)
- */
- decrement(blocking, effect, skip) {
- let pending_count = this.#pending.get(effect) ?? 0;
- if (pending_count === 1) {
- this.#pending.delete(effect);
- } else {
- this.#pending.set(effect, pending_count - 1);
- }
- if (blocking) {
- let blocking_pending_count = this.#blocking_pending.get(effect) ?? 0;
- if (blocking_pending_count === 1) {
- this.#blocking_pending.delete(effect);
- } else {
- this.#blocking_pending.set(effect, blocking_pending_count - 1);
- }
- }
- if (this.#decrement_queued || skip) return;
- this.#decrement_queued = true;
- queue_micro_task(() => {
- this.#decrement_queued = false;
- this.flush();
- });
- }
- /**
- * @param {Set<Effect>} dirty_effects
- * @param {Set<Effect>} maybe_dirty_effects
- */
- transfer_effects(dirty_effects, maybe_dirty_effects) {
- for (const e of dirty_effects) {
- this.#dirty_effects.add(e);
- }
- for (const e of maybe_dirty_effects) {
- this.#maybe_dirty_effects.add(e);
- }
- dirty_effects.clear();
- maybe_dirty_effects.clear();
- }
- /** @param {(batch: Batch) => void} fn */
- oncommit(fn) {
- this.#commit_callbacks.add(fn);
- }
- /** @param {(batch: Batch) => void} 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();
- if (!is_processing) {
- batches.add(current_batch);
- if (!is_flushing_sync) {
- queue_micro_task(() => {
- if (current_batch !== batch) {
- return;
- }
- batch.flush();
- });
- }
- }
- }
- return current_batch;
- }
- apply() {
- {
- batch_values = null;
- return;
- }
- }
- /**
- *
- * @param {Effect} effect
- */
- schedule(effect) {
- last_scheduled_effect = effect;
- if (effect.b?.is_pending && (effect.f & (EFFECT | RENDER_EFFECT | MANAGED_EFFECT)) !== 0 && (effect.f & REACTION_RAN) === 0) {
- effect.b.defer_effect(effect);
- return;
- }
- var e = effect;
- while (e.parent !== null) {
- e = e.parent;
- var flags2 = e.f;
- if (collected_effects !== null && e === active_effect) {
- if ((active_reaction === null || (active_reaction.f & DERIVED) === 0) && true) {
- return;
- }
- }
- if ((flags2 & (ROOT_EFFECT | BRANCH_EFFECT)) !== 0) {
- if ((flags2 & CLEAN) === 0) {
- return;
- }
- e.f ^= CLEAN;
- }
- }
- this.#roots.push(e);
- }
- }
- function flushSync(fn) {
- var was_flushing_sync = is_flushing_sync;
- is_flushing_sync = true;
- try {
- var result;
- if (fn) ;
- while (true) {
- flush_tasks();
- if (current_batch === null) {
- return (
- /** @type {T} */
- result
- );
- }
- current_batch.flush();
- }
- } finally {
- is_flushing_sync = was_flushing_sync;
- }
- }
- 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 = /* @__PURE__ */ new Set();
- update_effect(effect);
- if (effect.deps === null && effect.first === null && effect.nodes === null && effect.teardown === null && effect.ac === null) {
- unlink_effect(effect);
- }
- 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(
- /** @type {Derived} */
- 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(
- /** @type {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 (includes.call(sources, dep)) {
- return true;
- }
- if ((dep.f & DERIVED) !== 0 && depends_on(
- /** @type {Derived} */
- dep,
- sources,
- checked
- )) {
- checked.set(
- /** @type {Derived} */
- dep,
- true
- );
- return true;
- }
- }
- }
- checked.set(reaction, false);
- return false;
- }
- function schedule_effect(effect) {
- current_batch.schedule(effect);
- }
- function reset_branch(effect, tracked) {
- if ((effect.f & BRANCH_EFFECT) !== 0 && (effect.f & CLEAN) !== 0) {
- return;
- }
- if ((effect.f & DIRTY) !== 0) {
- tracked.d.push(effect);
- } else if ((effect.f & MAYBE_DIRTY) !== 0) {
- tracked.m.push(effect);
- }
- set_signal_status(effect, CLEAN);
- var e = effect.first;
- while (e !== null) {
- reset_branch(e, tracked);
- e = e.next;
- }
- }
- function reset_all(effect) {
- set_signal_status(effect, CLEAN);
- var e = effect.first;
- while (e !== null) {
- reset_all(e);
- e = e.next;
- }
- }
- 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;
- function boundary(node, props, children, transform_error) {
- new Boundary(node, props, children, transform_error);
- }
- class Boundary {
- /** @type {Boundary | null} */
- parent;
- is_pending = false;
- /**
- * API-level transformError transform function. Transforms errors before they reach the `failed` snippet.
- * Inherited from parent boundary, or defaults to identity.
- * @type {(error: unknown) => unknown}
- */
- transform_error;
- /** @type {TemplateNode} */
- #anchor;
- /** @type {TemplateNode | null} */
- #hydrate_open = hydrating ? hydrate_node : null;
- /** @type {BoundaryProps} */
- #props;
- /** @type {((anchor: Node) => void)} */
- #children;
- /** @type {Effect} */
- #effect;
- /** @type {Effect | null} */
- #main_effect = null;
- /** @type {Effect | null} */
- #pending_effect = null;
- /** @type {Effect | null} */
- #failed_effect = null;
- /** @type {DocumentFragment | null} */
- #offscreen_fragment = null;
- #local_pending_count = 0;
- #pending_count = 0;
- #pending_count_update_queued = false;
- /** @type {Set<Effect>} */
- #dirty_effects = /* @__PURE__ */ new Set();
- /** @type {Set<Effect>} */
- #maybe_dirty_effects = /* @__PURE__ */ new Set();
- /**
- * A source containing the number of pending async deriveds/expressions.
- * Only created if `$effect.pending()` is used inside the boundary,
- * otherwise updating the source results in needless `Batch.ensure()`
- * calls followed by no-op flushes
- * @type {Source<number> | null}
- */
- #effect_pending = null;
- #effect_pending_subscriber = createSubscriber(() => {
- this.#effect_pending = source(this.#local_pending_count);
- return () => {
- this.#effect_pending = null;
- };
- });
- /**
- * @param {TemplateNode} node
- * @param {BoundaryProps} props
- * @param {((anchor: Node) => void)} children
- * @param {((error: unknown) => unknown) | undefined} [transform_error]
- */
- constructor(node, props, children, transform_error) {
- this.#anchor = node;
- this.#props = props;
- this.#children = (anchor) => {
- var effect = (
- /** @type {Effect} */
- active_effect
- );
- effect.b = this;
- effect.f |= BOUNDARY_EFFECT;
- children(anchor);
- };
- this.parent = /** @type {Effect} */
- active_effect.b;
- this.transform_error = transform_error ?? this.parent?.transform_error ?? ((e) => e);
- this.#effect = block(() => {
- if (hydrating) {
- const comment = (
- /** @type {Comment} */
- this.#hydrate_open
- );
- hydrate_next();
- const server_rendered_pending = comment.data === HYDRATION_START_ELSE;
- const server_rendered_failed = comment.data.startsWith(HYDRATION_START_FAILED);
- if (server_rendered_failed) {
- const serialized_error = JSON.parse(comment.data.slice(HYDRATION_START_FAILED.length));
- this.#hydrate_failed_content(serialized_error);
- } else if (server_rendered_pending) {
- this.#hydrate_pending_content();
- } else {
- this.#hydrate_resolved_content();
- }
- } else {
- this.#render();
- }
- }, flags);
- if (hydrating) {
- this.#anchor = hydrate_node;
- }
- }
- #hydrate_resolved_content() {
- try {
- this.#main_effect = branch(() => this.#children(this.#anchor));
- } catch (error) {
- this.error(error);
- }
- }
- /**
- * @param {unknown} error The deserialized error from the server's hydration comment
- */
- #hydrate_failed_content(error) {
- const failed = this.#props.failed;
- if (!failed) return;
- this.#failed_effect = branch(() => {
- failed(
- this.#anchor,
- () => error,
- () => () => {
- }
- );
- });
- }
- #hydrate_pending_content() {
- const pending = this.#props.pending;
- if (!pending) return;
- this.is_pending = true;
- this.#pending_effect = branch(() => pending(this.#anchor));
- queue_micro_task(() => {
- var fragment = this.#offscreen_fragment = document.createDocumentFragment();
- var anchor = create_text();
- fragment.append(anchor);
- this.#main_effect = this.#run(() => {
- return branch(() => this.#children(anchor));
- });
- if (this.#pending_count === 0) {
- this.#anchor.before(fragment);
- this.#offscreen_fragment = null;
- pause_effect(
- /** @type {Effect} */
- this.#pending_effect,
- () => {
- this.#pending_effect = null;
- }
- );
- this.#resolve(
- /** @type {Batch} */
- current_batch
- );
- }
- });
- }
- #render() {
- try {
- this.is_pending = this.has_pending_snippet();
- this.#pending_count = 0;
- this.#local_pending_count = 0;
- this.#main_effect = branch(() => {
- this.#children(this.#anchor);
- });
- if (this.#pending_count > 0) {
- var fragment = this.#offscreen_fragment = document.createDocumentFragment();
- move_effect(this.#main_effect, fragment);
- const pending = (
- /** @type {(anchor: Node) => void} */
- this.#props.pending
- );
- this.#pending_effect = branch(() => pending(this.#anchor));
- } else {
- this.#resolve(
- /** @type {Batch} */
- current_batch
- );
- }
- } catch (error) {
- this.error(error);
- }
- }
- /**
- * @param {Batch} batch
- */
- #resolve(batch) {
- this.is_pending = false;
- batch.transfer_effects(this.#dirty_effects, this.#maybe_dirty_effects);
- }
- /**
- * Defer an effect inside a pending boundary until the boundary resolves
- * @param {Effect} effect
- */
- defer_effect(effect) {
- defer_effect(effect, this.#dirty_effects, this.#maybe_dirty_effects);
- }
- /**
- * Returns `false` if the effect exists inside a boundary whose pending snippet is shown
- * @returns {boolean}
- */
- is_rendered() {
- return !this.is_pending && (!this.parent || this.parent.is_rendered());
- }
- has_pending_snippet() {
- return !!this.#props.pending;
- }
- /**
- * @template T
- * @param {() => T} fn
- */
- #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 {
- Batch.ensure();
- 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);
- }
- }
- /**
- * Updates the pending count associated with the currently visible pending snippet,
- * if any, such that we can replace the snippet with content once work is done
- * @param {1 | -1} d
- * @param {Batch} batch
- */
- #update_pending_count(d, batch) {
- if (!this.has_pending_snippet()) {
- if (this.parent) {
- this.parent.#update_pending_count(d, batch);
- }
- return;
- }
- this.#pending_count += d;
- if (this.#pending_count === 0) {
- this.#resolve(batch);
- 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 the source that powers `$effect.pending()` inside this boundary,
- * and controls when the current `pending` snippet (if any) is removed.
- * Do not call from inside the class
- * @param {1 | -1} d
- * @param {Batch} batch
- */
- update_pending_count(d, batch) {
- this.#update_pending_count(d, batch);
- this.#local_pending_count += d;
- if (!this.#effect_pending || this.#pending_count_update_queued) return;
- this.#pending_count_update_queued = true;
- queue_micro_task(() => {
- this.#pending_count_update_queued = false;
- if (this.#effect_pending) {
- internal_set(this.#effect_pending, this.#local_pending_count);
- }
- });
- }
- get_effect_pending() {
- this.#effect_pending_subscriber();
- return get(
- /** @type {Source<number>} */
- this.#effect_pending
- );
- }
- /** @param {unknown} error */
- error(error) {
- var onerror = this.#props.onerror;
- let failed = this.#props.failed;
- if (!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(
- /** @type {TemplateNode} */
- 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();
- }
- if (this.#failed_effect !== null) {
- pause_effect(this.#failed_effect, () => {
- this.#failed_effect = null;
- });
- }
- this.#run(() => {
- this.#render();
- });
- };
- const handle_error_result = (transformed_error) => {
- try {
- calling_on_error = true;
- onerror?.(transformed_error, reset);
- calling_on_error = false;
- } catch (error2) {
- invoke_error_boundary(error2, this.#effect && this.#effect.parent);
- }
- if (failed) {
- this.#failed_effect = this.#run(() => {
- try {
- return branch(() => {
- var effect = (
- /** @type {Effect} */
- active_effect
- );
- effect.b = this;
- effect.f |= BOUNDARY_EFFECT;
- failed(
- this.#anchor,
- () => transformed_error,
- () => reset
- );
- });
- } catch (error2) {
- invoke_error_boundary(
- error2,
- /** @type {Effect} */
- this.#effect.parent
- );
- return null;
- }
- });
- }
- };
- queue_micro_task(() => {
- var result;
- try {
- result = this.transform_error(error);
- } catch (e) {
- invoke_error_boundary(e, this.#effect && this.#effect.parent);
- return;
- }
- if (result !== null && typeof result === "object" && typeof /** @type {any} */
- result.then === "function") {
- result.then(
- handle_error_result,
- /** @param {unknown} e */
- (e) => invoke_error_boundary(e, this.#effect && this.#effect.parent)
- );
- } else {
- handle_error_result(result);
- }
- });
- }
- }
- function destroy_derived_effects(derived2) {
- var effects = derived2.effects;
- if (effects !== null) {
- derived2.effects = null;
- for (var i = 0; i < effects.length; i += 1) {
- destroy_effect(
- /** @type {Effect} */
- effects[i]
- );
- }
- }
- }
- function get_derived_parent_effect(derived2) {
- var parent = derived2.parent;
- while (parent !== null) {
- if ((parent.f & DERIVED) === 0) {
- return (parent.f & DESTROYED) === 0 ? (
- /** @type {Effect} */
- parent
- ) : null;
- }
- parent = parent.parent;
- }
- return null;
- }
- function execute_derived(derived2) {
- var value;
- var prev_active_effect = active_effect;
- set_active_effect(get_derived_parent_effect(derived2));
- {
- try {
- derived2.f &= ~WAS_MARKED;
- destroy_derived_effects(derived2);
- value = update_reaction(derived2);
- } finally {
- set_active_effect(prev_active_effect);
- }
- }
- return value;
- }
- function update_derived(derived2) {
- var old_value = derived2.v;
- var value = execute_derived(derived2);
- if (!derived2.equals(value)) {
- derived2.wv = increment_write_version();
- if (!current_batch?.is_fork || derived2.deps === null) {
- derived2.v = value;
- current_batch?.capture(derived2, old_value, true);
- if (derived2.deps === null) {
- set_signal_status(derived2, CLEAN);
- return;
- }
- }
- }
- if (is_destroying_effect) {
- return;
- }
- if (batch_values !== null) {
- if (effect_tracking() || current_batch?.is_fork) {
- batch_values.set(derived2, value);
- }
- } else {
- update_derived_status(derived2);
- }
- }
- function freeze_derived_effects(derived2) {
- if (derived2.effects === null) return;
- for (const e of derived2.effects) {
- if (e.teardown || e.ac) {
- e.teardown?.();
- e.ac?.abort(STALE_REACTION);
- e.teardown = noop;
- e.ac = null;
- remove_reactions(e, 0);
- destroy_effect_children(e);
- }
- }
- }
- function unfreeze_derived_effects(derived2) {
- if (derived2.effects === null) return;
- for (const e of derived2.effects) {
- if (e.teardown) {
- update_effect(e);
- }
- }
- }
- let eager_effects = /* @__PURE__ */ new Set();
- const old_values = /* @__PURE__ */ new Map();
- let eager_effects_deferred = false;
- 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 s = source(v);
- push_reaction_value(s);
- return s;
- }
- // @__NO_SIDE_EFFECTS__
- 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 && // 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 & EAGER_EFFECT) !== 0) && is_runes() && (active_reaction.f & (DERIVED | BLOCK_EFFECT | ASYNC | EAGER_EFFECT)) !== 0 && (current_sources === null || !includes.call(current_sources, source2))) {
- state_unsafe_mutation();
- }
- let new_value = should_proxy ? proxy(value) : value;
- return internal_set(source2, new_value, legacy_updates);
- }
- function internal_set(source2, value, updated_during_traversal = null) {
- 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) {
- const derived2 = (
- /** @type {Derived} */
- source2
- );
- if ((source2.f & DIRTY) !== 0) {
- execute_derived(derived2);
- }
- if (batch_values === null) {
- update_derived_status(derived2);
- }
- }
- source2.wv = increment_write_version();
- mark_reactions(source2, DIRTY, updated_during_traversal);
- 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;
- for (const effect of eager_effects) {
- if ((effect.f & CLEAN) !== 0) {
- set_signal_status(effect, MAYBE_DIRTY);
- }
- if (is_dirty(effect)) {
- update_effect(effect);
- }
- }
- eager_effects.clear();
- }
- function increment(source2) {
- set(source2, source2.v + 1);
- }
- function mark_reactions(signal, status, updated_during_traversal) {
- 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 derived2 = (
- /** @type {Derived} */
- reaction
- );
- batch_values?.delete(derived2);
- if ((flags2 & WAS_MARKED) === 0) {
- if (flags2 & CONNECTED) {
- reaction.f |= WAS_MARKED;
- }
- mark_reactions(derived2, MAYBE_DIRTY, updated_during_traversal);
- }
- } else if (not_dirty) {
- var effect = (
- /** @type {Effect} */
- reaction
- );
- if ((flags2 & BLOCK_EFFECT) !== 0 && eager_block_effects !== null) {
- eager_block_effects.add(effect);
- }
- if (updated_during_traversal !== null) {
- updated_during_traversal.push(effect);
- } else {
- schedule_effect(effect);
- }
- }
- }
- }
- 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 s = sources.get(prop);
- if (s === void 0) {
- with_parent(() => {
- var s2 = /* @__PURE__ */ 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(() => /* @__PURE__ */ 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 = /* @__PURE__ */ 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 = /* @__PURE__ */ 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 < /** @type {Source<number>} */
- 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(() => /* @__PURE__ */ state(UNINITIALIZED));
- sources.set(i + "", other_s);
- }
- }
- }
- if (s === void 0) {
- if (!has || get_descriptor(target, prop)?.writable) {
- s = with_parent(() => /* @__PURE__ */ 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 = (
- /** @type {Source<number>} */
- 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);
- }
- // @__NO_SIDE_EFFECTS__
- function get_first_child(node) {
- return (
- /** @type {TemplateNode | null} */
- first_child_getter.call(node)
- );
- }
- // @__NO_SIDE_EFFECTS__
- function get_next_sibling(node) {
- return (
- /** @type {TemplateNode | null} */
- 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) {
- var parent = active_effect;
- if (parent !== null && (parent.f & INERT) !== 0) {
- type |= INERT;
- }
- var effect = {
- ctx: component_context,
- deps: null,
- nodes: null,
- f: type | DIRTY | CONNECTED,
- first: null,
- fn,
- last: null,
- next: null,
- parent,
- b: parent && parent.b,
- prev: null,
- teardown: null,
- wv: 0,
- ac: null
- };
- current_batch?.register_created_effect(effect);
- var e = effect;
- if ((type & EFFECT) !== 0) {
- if (collected_effects !== null) {
- collected_effects.push(effect);
- } else {
- Batch.ensure().schedule(effect);
- }
- } else if (fn !== null) {
- try {
- update_effect(effect);
- } catch (e2) {
- destroy_effect(effect);
- throw e2;
- }
- if (e.deps === null && e.teardown === null && e.nodes === null && e.first === e.last && // either `null`, or a singular child
- (e.f & EFFECT_PRESERVED) === 0) {
- e = e.first;
- if ((type & BLOCK_EFFECT) !== 0 && (type & EFFECT_TRANSPARENT) !== 0 && e !== null) {
- e.f |= EFFECT_TRANSPARENT;
- }
- }
- }
- if (e !== null) {
- e.parent = parent;
- if (parent !== null) {
- push_effect(e, parent);
- }
- if (active_reaction !== null && (active_reaction.f & DERIVED) !== 0 && (type & ROOT_EFFECT) === 0) {
- var derived2 = (
- /** @type {Derived} */
- active_reaction
- );
- (derived2.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);
- }
- function component_root(fn) {
- Batch.ensure();
- const effect = create_effect(ROOT_EFFECT | EFFECT_PRESERVED, fn);
- return (options = {}) => {
- return new Promise((fulfil) => {
- if (options.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);
- }
- function block(fn, flags2 = 0) {
- var effect = create_effect(BLOCK_EFFECT | flags2, fn);
- return effect;
- }
- function branch(fn) {
- return create_effect(BRANCH_EFFECT | EFFECT_PRESERVED, fn);
- }
- 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 !== null && effect.nodes.end !== null) {
- remove_effect_dom(
- effect.nodes.start,
- /** @type {TemplateNode} */
- effect.nodes.end
- );
- removed = true;
- }
- set_signal_status(effect, DESTROYING);
- destroy_effect_children(effect, remove_dom && !removed);
- remove_reactions(effect, 0);
- var transitions = effect.nodes && effect.nodes.t;
- if (transitions !== null) {
- for (const transition of transitions) {
- transition.stop();
- }
- }
- execute_effect_teardown(effect);
- effect.f ^= DESTROYING;
- effect.f |= DESTROYED;
- 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 = effect.ac = effect.b = null;
- }
- function remove_effect_dom(node, end) {
- while (node !== null) {
- var next2 = node === end ? null : /* @__PURE__ */ 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);
- var fn = () => {
- if (destroy) destroy_effect(effect);
- if (callback) callback();
- };
- 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;
- var t = effect.nodes && effect.nodes.t;
- if (t !== null) {
- for (const transition of t) {
- 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 || // If this is a branch effect without a block effect parent,
- // it means the parent block effect was pruned. In that case,
- // transparency information was transferred to the branch effect.
- (child.f & BRANCH_EFFECT) !== 0 && (effect.f & BLOCK_EFFECT) !== 0;
- pause_children(child, transitions, transparent ? local : false);
- child = sibling;
- }
- }
- function move_effect(effect, fragment) {
- if (!effect.nodes) return;
- var node = effect.nodes.start;
- var end = effect.nodes.end;
- while (node !== null) {
- var next2 = node === end ? null : /* @__PURE__ */ get_next_sibling(node);
- fragment.append(node);
- node = next2;
- }
- }
- let is_updating_effect = false;
- 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 = (
- /** @type {Value[]} */
- reaction.deps
- );
- var length = dependencies.length;
- for (var i = 0; i < length; i++) {
- var dependency = dependencies[i];
- if (is_dirty(
- /** @type {Derived} */
- dependency
- )) {
- update_derived(
- /** @type {Derived} */
- dependency
- );
- }
- if (dependency.wv > reaction.wv) {
- return true;
- }
- }
- if ((flags2 & CONNECTED) !== 0 && // During time traveling we don't want to reset the status so that
- // traversal of the graph in the other batches still happens
- 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 !== null && includes.call(current_sources, signal)) {
- return;
- }
- for (var i = 0; i < reactions.length; i++) {
- var reaction = reactions[i];
- if ((reaction.f & DERIVED) !== 0) {
- schedule_possible_effect_self_invalidation(
- /** @type {Derived} */
- 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(
- /** @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_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 = /** @type {null | Value[]} */
- 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 = (
- /** @type {Function} */
- reaction.fn
- );
- var result = fn();
- reaction.f |= REACTION_RAN;
- var deps = reaction.deps;
- var is_fork = current_batch?.is_fork;
- if (new_deps !== null) {
- var i;
- if (!is_fork) {
- 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 (effect_tracking() && (reaction.f & CONNECTED) !== 0) {
- for (i = skipped_deps; i < deps.length; i++) {
- (deps[i].reactions ??= []).push(reaction);
- }
- }
- } else if (!is_fork && 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 < /** @type {Source[]} */
- untracked_writes.length; i++) {
- schedule_possible_effect_self_invalidation(
- untracked_writes[i],
- /** @type {Effect} */
- reaction
- );
- }
- }
- if (previous_reaction !== null && previous_reaction !== reaction) {
- read_version++;
- if (previous_reaction.deps !== null) {
- for (let i2 = 0; i2 < previous_skipped_deps; i2 += 1) {
- previous_reaction.deps[i2].rv = read_version;
- }
- }
- if (previous_deps !== null) {
- for (const dep of previous_deps) {
- dep.rv = 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;
- 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 && // 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 || !includes.call(new_deps, dependency))) {
- var derived2 = (
- /** @type {Derived} */
- dependency
- );
- if ((derived2.f & CONNECTED) !== 0) {
- derived2.f ^= CONNECTED;
- derived2.f &= ~WAS_MARKED;
- }
- update_derived_status(derived2);
- freeze_derived_effects(derived2);
- remove_reactions(derived2, 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 | MANAGED_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 (BROWSER && 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 === null || !includes.call(current_sources, 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 {
- new_deps.push(signal);
- }
- }
- } else {
- (active_reaction.deps ??= []).push(signal);
- var reactions = signal.reactions;
- if (reactions === null) {
- signal.reactions = [active_reaction];
- } else if (!includes.call(reactions, active_reaction)) {
- reactions.push(active_reaction);
- }
- }
- }
- }
- if (is_destroying_effect && old_values.has(signal)) {
- return old_values.get(signal);
- }
- if (is_derived) {
- var derived2 = (
- /** @type {Derived} */
- signal
- );
- if (is_destroying_effect) {
- 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;
- }
- var should_connect = (derived2.f & CONNECTED) === 0 && !untracking && active_reaction !== null && (is_updating_effect || (active_reaction.f & CONNECTED) !== 0);
- var is_new = (derived2.f & REACTION_RAN) === 0;
- if (is_dirty(derived2)) {
- if (should_connect) {
- derived2.f |= CONNECTED;
- }
- update_derived(derived2);
- }
- if (should_connect && !is_new) {
- unfreeze_derived_effects(derived2);
- reconnect(derived2);
- }
- }
- if (batch_values?.has(signal)) {
- return batch_values.get(signal);
- }
- if ((signal.f & ERROR_VALUE) !== 0) {
- throw signal.v;
- }
- return signal.v;
- }
- function reconnect(derived2) {
- derived2.f |= CONNECTED;
- if (derived2.deps === null) return;
- for (const dep of derived2.deps) {
- (dep.reactions ??= []).push(derived2);
- if ((dep.f & DERIVED) !== 0 && (dep.f & CONNECTED) === 0) {
- unfreeze_derived_effects(
- /** @type {Derived} */
- dep
- );
- reconnect(
- /** @type {Derived} */
- dep
- );
- }
- }
- }
- function depends_on_old_values(derived2) {
- if (derived2.v === UNINITIALIZED) return true;
- if (derived2.deps === null) return false;
- for (const dep of derived2.deps) {
- if (old_values.has(dep)) {
- return true;
- }
- if ((dep.f & DERIVED) !== 0 && depends_on_old_values(
- /** @type {Derived} */
- dep
- )) {
- return true;
- }
- }
- return false;
- }
- function untrack(fn) {
- var previous_untracking = untracking;
- try {
- untracking = true;
- return fn();
- } finally {
- untracking = previous_untracking;
- }
- }
- const event_symbol = Symbol("events");
- const all_registered_events = /* @__PURE__ */ new Set();
- const root_event_handles = /* @__PURE__ */ new Set();
- let last_propagated_event = null;
- function handle_event_propagation(event) {
- var handler_element = this;
- var owner_document = (
- /** @type {Node} */
- handler_element.ownerDocument
- );
- var event_name = event.type;
- var path = event.composedPath?.() || [];
- var current_target = (
- /** @type {null | Element} */
- path[0] || event.target
- );
- last_propagated_event = event;
- var path_idx = 0;
- var handled_at = last_propagated_event === event && event[event_symbol];
- if (handled_at) {
- var at_idx = path.indexOf(handled_at);
- if (at_idx !== -1 && (handler_element === document || handler_element === /** @type {any} */
- window)) {
- event[event_symbol] = 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] || 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 || /** @type {any} */
- current_target.host || null;
- try {
- var delegated = current_target[event_symbol]?.[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
- 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[event_symbol] = handler_element;
- delete event.currentTarget;
- set_active_reaction(previous_reaction);
- set_active_effect(previous_effect);
- }
- }
- function assign_nodes(start, end) {
- var effect = (
- /** @type {Effect} */
- active_effect
- );
- if (effect.nodes === null) {
- effect.nodes = { start, end, a: null, t: null };
- }
- }
- function mount(component, options) {
- return _mount(component, options);
- }
- function hydrate(component, options) {
- init_operations();
- options.intro = options.intro ?? false;
- const target = options.target;
- const was_hydrating = hydrating;
- const previous_hydrate_node = hydrate_node;
- try {
- var anchor = /* @__PURE__ */ get_first_child(target);
- while (anchor && (anchor.nodeType !== COMMENT_NODE || /** @type {Comment} */
- anchor.data !== HYDRATION_START)) {
- anchor = /* @__PURE__ */ get_next_sibling(anchor);
- }
- if (!anchor) {
- throw HYDRATION_ERROR;
- }
- set_hydrating(true);
- set_hydrate_node(
- /** @type {Comment} */
- anchor
- );
- const instance = _mount(component, { ...options, anchor });
- set_hydrating(false);
- return (
- /** @type {Exports} */
- 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 (options.recover === false) {
- hydration_failed();
- }
- init_operations();
- clear_text_content(target);
- set_hydrating(false);
- return mount(component, options);
- } finally {
- set_hydrating(was_hydrating);
- set_hydrate_node(previous_hydrate_node);
- }
- }
- const listeners = /* @__PURE__ */ new Map();
- function _mount(Component, { target, anchor, props = {}, events, context, intro = true, transformError }) {
- init_operations();
- var component = void 0;
- var unmount2 = component_root(() => {
- var anchor_node = anchor ?? target.appendChild(create_text());
- boundary(
- /** @type {TemplateNode} */
- anchor_node,
- {
- pending: () => {
- }
- },
- (anchor_node2) => {
- push({});
- var ctx = (
- /** @type {ComponentContext} */
- component_context
- );
- if (context) ctx.c = context;
- if (events) {
- props.$$events = events;
- }
- if (hydrating) {
- assign_nodes(
- /** @type {TemplateNode} */
- 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 || /** @type {Comment} */
- hydrate_node.data !== HYDRATION_END) {
- hydration_mismatch();
- throw HYDRATION_ERROR;
- }
- }
- pop();
- },
- transformError
- );
- var registered_events = /* @__PURE__ */ 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);
- for (const node of [target, document]) {
- var counts = listeners.get(node);
- if (counts === void 0) {
- counts = /* @__PURE__ */ new Map();
- listeners.set(node, counts);
- }
- var count = counts.get(event_name);
- if (count === void 0) {
- node.addEventListener(event_name, handle_event_propagation, { passive });
- counts.set(event_name, 1);
- } else {
- counts.set(event_name, count + 1);
- }
- }
- }
- };
- event_handle(array_from(all_registered_events));
- root_event_handles.add(event_handle);
- return () => {
- for (var event_name of registered_events) {
- for (const node of [target, document]) {
- var counts = (
- /** @type {Map<string, number>} */
- listeners.get(node)
- );
- var count = (
- /** @type {number} */
- counts.get(event_name)
- );
- if (--count == 0) {
- node.removeEventListener(event_name, handle_event_propagation);
- counts.delete(event_name);
- if (counts.size === 0) {
- listeners.delete(node);
- }
- } else {
- counts.set(event_name, count);
- }
- }
- }
- 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 = /* @__PURE__ */ new WeakMap();
- function unmount(component, options) {
- const fn = mounted_components.get(component);
- if (fn) {
- mounted_components.delete(component);
- return fn(options);
- }
- return Promise.resolve();
- }
- function asClassComponent$1(component) {
- return class extends Svelte4Component {
- /** @param {any} options */
- constructor(options) {
- super({
- component,
- ...options
- });
- }
- };
- }
- class Svelte4Component {
- /** @type {any} */
- #events;
- /** @type {Record<string, any>} */
- #instance;
- /**
- * @param {ComponentConstructorOptions & {
- * component: any;
- * }} options
- */
- constructor(options) {
- var sources = /* @__PURE__ */ new Map();
- var add_source = (key, value) => {
- var s = /* @__PURE__ */ mutable_source(value, false, false);
- sources.set(key, s);
- return s;
- };
- const props = new Proxy(
- { ...options.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 = (options.hydrate ? hydrate : mount)(options.component, {
- target: options.target,
- anchor: options.anchor,
- props,
- context: options.context,
- intro: options.intro ?? false,
- recover: options.recover,
- transformError: options.transformError
- });
- if (!options?.props?.$$host || options.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];
- },
- /** @param {any} value */
- set(value) {
- this.#instance[key] = value;
- },
- enumerable: true
- });
- }
- this.#instance.$set = /** @param {Record<string, any>} next */
- (next2) => {
- Object.assign(props, next2);
- };
- this.#instance.$destroy = () => {
- unmount(this.#instance);
- };
- }
- /** @param {Record<string, any>} props */
- $set(props) {
- this.#instance.$set(props);
- }
- /**
- * @param {string} event
- * @param {(...args: any[]) => any} callback
- * @returns {any}
- */
- $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(
- /** @param {any} fn */
- (fn) => fn !== cb
- );
- };
- }
- $destroy() {
- this.#instance.$destroy();
- }
- }
- function asClassComponent(component) {
- const component_constructor = asClassComponent$1(component);
- const _render = (props, { context, csp, transformError } = {}) => {
- const result = render(component, { props, context, csp, transformError });
- const munged = Object.defineProperties(
- /** @type {LegacyRenderResult & PromiseLike<LegacyRenderResult>} */
- {},
- {
- css: {
- value: { code: "", map: null }
- },
- head: {
- get: () => result.head
- },
- html: {
- get: () => result.body
- },
- then: {
- /**
- * this is not type-safe, but honestly it's the best I can do right now, and it's a straightforward function.
- *
- * @template TResult1
- * @template [TResult2=never]
- * @param { (value: LegacyRenderResult) => TResult1 } onfulfilled
- * @param { (reason: unknown) => TResult2 } onrejected
- */
- 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 = derived(() => constructors[1]);
- if (constructors[1]) {
- $$renderer2.push("<!--[0-->");
- const Pyramid_0 = constructors[0];
- if (Pyramid_0) {
- $$renderer2.push("<!--[-->");
- Pyramid_0($$renderer2, {
- data: data_0,
- form,
- params: page.params,
- children: ($$renderer3) => {
- if (Pyramid_1()) {
- $$renderer3.push("<!--[-->");
- Pyramid_1()($$renderer3, { data: data_1, form, params: page.params });
- $$renderer3.push("<!--]-->");
- } else {
- $$renderer3.push("<!--[!-->");
- $$renderer3.push("<!--]-->");
- }
- },
- $$slots: { default: true }
- });
- $$renderer2.push("<!--]-->");
- } else {
- $$renderer2.push("<!--[!-->");
- $$renderer2.push("<!--]-->");
- }
- } else {
- $$renderer2.push("<!--[-1-->");
- const Pyramid_0 = constructors[0];
- if (Pyramid_0) {
- $$renderer2.push("<!--[-->");
- Pyramid_0($$renderer2, { data: data_0, form, params: page.params });
- $$renderer2.push("<!--]-->");
- } else {
- $$renderer2.push("<!--[!-->");
- $$renderer2.push("<!--]-->");
- }
- }
- $$renderer2.push(`<!--]--> `);
- {
- $$renderer2.push("<!--[-1-->");
- }
- $$renderer2.push(`<!--]-->`);
- });
- }
- const root = asClassComponent(Root);
- export {
- root as r,
- safe_not_equal as s
- };
|