import { H as HYDRATION_ERROR, C as COMMENT_NODE, p as HYDRATION_END, q as HYDRATION_START, t as HYDRATION_START_ELSE, v as get_next_sibling, w as effect_tracking, x as get, y as render_effect, z as source, A as untrack, B as increment, D as queue_micro_task, E as active_effect, F as BOUNDARY_EFFECT, G as block, I as branch, J as create_text, K as pause_effect, L as current_batch, M as move_effect, N as defer_effect, O as set_active_effect, P as set_active_reaction, Q as set_component_context, R as Batch, S as handle_error, T as active_reaction, U as component_context, V as internal_set, W as destroy_effect, X as invoke_error_boundary, Y as svelte_boundary_reset_onerror, Z as HYDRATION_START_FAILED, _ as EFFECT_TRANSPARENT, $ as EFFECT_PRESERVED, a0 as define_property, a1 as init_operations, a2 as get_first_child, a3 as hydration_failed, a4 as clear_text_content, a5 as component_root, a6 as array_from, a7 as is_passive_event, a8 as push, a9 as pop, aa as set, ab as LEGACY_PROPS, ac as flushSync, ad as mutable_source, ae as render, af as setContext, i as derived } from "./index.js"; 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 = /** @type {TemplateNode} */ 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} */ get_next_sibling(node) ); if (remove) node.remove(); node = next2; } } 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} */ #dirty_effects = /* @__PURE__ */ new Set(); /** @type {Set} */ #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 | 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} */ 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); } }); } } 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 = get_first_child(target); while (anchor && (anchor.nodeType !== COMMENT_NODE || /** @type {Comment} */ anchor.data !== HYDRATION_START)) { anchor = 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} */ 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} */ #instance; /** * @param {ComponentConstructorOptions & { * component: any; * }} options */ constructor(options) { var sources = /* @__PURE__ */ new Map(); var add_source = (key, value) => { var s = 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} next */ (next2) => { Object.assign(props, next2); }; this.#instance.$destroy = () => { unmount(this.#instance); }; } /** @param {Record} 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} */ {}, { 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, data_2 = null } = $$props; { setContext("__svelte__", stores); } { stores.page.set(page); } const Pyramid_2 = derived(() => constructors[2]); if (constructors[1]) { $$renderer2.push(""); const Pyramid_0 = constructors[0]; if (Pyramid_0) { $$renderer2.push(""); Pyramid_0($$renderer2, { data: data_0, form, params: page.params, children: ($$renderer3) => { if (constructors[2]) { $$renderer3.push(""); const Pyramid_1 = constructors[1]; if (Pyramid_1) { $$renderer3.push(""); Pyramid_1($$renderer3, { data: data_1, form, params: page.params, children: ($$renderer4) => { if (Pyramid_2()) { $$renderer4.push(""); Pyramid_2()($$renderer4, { data: data_2, form, params: page.params }); $$renderer4.push(""); } else { $$renderer4.push(""); $$renderer4.push(""); } }, $$slots: { default: true } }); $$renderer3.push(""); } else { $$renderer3.push(""); $$renderer3.push(""); } } else { $$renderer3.push(""); const Pyramid_1 = constructors[1]; if (Pyramid_1) { $$renderer3.push(""); Pyramid_1($$renderer3, { data: data_1, form, params: page.params }); $$renderer3.push(""); } else { $$renderer3.push(""); $$renderer3.push(""); } } $$renderer3.push(``); }, $$slots: { default: true } }); $$renderer2.push(""); } else { $$renderer2.push(""); $$renderer2.push(""); } } else { $$renderer2.push(""); 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(""); } $$renderer2.push(``); }); } const root = asClassComponent(Root); export { root as r };