function noop() { } function assign(tar, src) { for (const k in src) tar[k] = src[k]; return ( /** @type {T & S} */ tar ); } function is_promise(value) { return !!value && (typeof value === "object" || typeof value === "function") && typeof /** @type {any} */ value.then === "function"; } function run(fn) { return fn(); } function blank_object() { return /* @__PURE__ */ Object.create(null); } function run_all(fns) { fns.forEach(run); } function is_function(thing) { return typeof thing === "function"; } function safe_not_equal(a, b) { return a != a ? b == b : a !== b || a && typeof a === "object" || typeof a === "function"; } function subscribe(store, ...callbacks) { if (store == null) { for (const callback of callbacks) { callback(void 0); } return noop; } const unsub = store.subscribe(...callbacks); return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; } function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { return new CustomEvent(type, { detail, bubbles, cancelable }); } let current_component; function set_current_component(component) { current_component = component; } function get_current_component() { if (!current_component) throw new Error("Function called outside component initialization"); return current_component; } function onDestroy(fn) { get_current_component().$$.on_destroy.push(fn); } function createEventDispatcher() { const component = get_current_component(); return (type, detail, { cancelable = false } = {}) => { const callbacks = component.$$.callbacks[type]; if (callbacks) { const event = custom_event( /** @type {string} */ type, detail, { cancelable } ); callbacks.slice().forEach((fn) => { fn.call(component, event); }); return !event.defaultPrevented; } return true; }; } function setContext(key, context) { get_current_component().$$.context.set(key, context); return context; } function getContext(key) { return get_current_component().$$.context.get(key); } function ensure_array_like(array_like_or_iterator) { return array_like_or_iterator?.length !== void 0 ? array_like_or_iterator : Array.from(array_like_or_iterator); } const ATTR_REGEX = /[&"]/g; const CONTENT_REGEX = /[&<]/g; function escape(value, is_attr = false) { const str = String(value); const pattern = is_attr ? ATTR_REGEX : CONTENT_REGEX; pattern.lastIndex = 0; let escaped = ""; let last = 0; while (pattern.test(str)) { const i = pattern.lastIndex - 1; const ch = str[i]; escaped += str.substring(last, i) + (ch === "&" ? "&" : ch === '"' ? """ : "<"); last = i + 1; } return escaped + str.substring(last); } function escape_attribute_value(value) { const should_escape = typeof value === "string" || value && typeof value === "object"; return should_escape ? escape(value, true) : value; } function each(items, fn) { items = ensure_array_like(items); let str = ""; for (let i = 0; i < items.length; i += 1) { str += fn(items[i], i); } return str; } const missing_component = { $$render: () => "" }; function validate_component(component, name) { if (!component || !component.$$render) { if (name === "svelte:component") name += " this={...}"; throw new Error( `<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules. Otherwise you may need to fix a <${name}>.` ); } return component; } let on_destroy; function create_ssr_component(fn) { function $$render(result, props, bindings, slots, context) { const parent_component = current_component; const $$ = { on_destroy, context: new Map(context || (parent_component ? parent_component.$$.context : [])), // these will be immediately discarded on_mount: [], before_update: [], after_update: [], callbacks: blank_object() }; set_current_component({ $$ }); const html = fn(result, props, bindings, slots); set_current_component(parent_component); return html; } return { render: (props = {}, { $$slots = {}, context = /* @__PURE__ */ new Map() } = {}) => { on_destroy = []; const result = { title: "", head: "", css: /* @__PURE__ */ new Set() }; const html = $$render(result, props, {}, $$slots, context); run_all(on_destroy); return { html, css: { code: Array.from(result.css).map((css) => css.code).join("\n"), map: null // TODO }, head: result.title + result.head }; }, $$render }; } function add_attribute(name, value, boolean) { if (value == null || boolean && !value) return ""; const assignment = boolean && value === true ? "" : `="${escape(value, true)}"`; return ` ${name}${assignment}`; } function style_object_to_string(style_object) { return Object.keys(style_object).filter((key) => style_object[key]).map((key) => `${key}: ${escape_attribute_value(style_object[key])};`).join(" "); } function add_styles(style_object) { const styles = style_object_to_string(style_object); return styles ? ` style="${styles}"` : ""; } export { subscribe as a, add_attribute as b, create_ssr_component as c, escape as d, each as e, assign as f, getContext as g, is_function as h, is_promise as i, createEventDispatcher as j, add_styles as k, safe_not_equal as l, missing_component as m, noop as n, onDestroy as o, run_all as r, setContext as s, validate_component as v };