|
function noop() { |
|
} |
|
function run(fn) { |
|
return fn(); |
|
} |
|
function blank_object() { |
|
return Object.create(null); |
|
} |
|
function run_all(fns) { |
|
fns.forEach(run); |
|
} |
|
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; |
|
} |
|
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 setContext(key, context) { |
|
get_current_component().$$.context.set(key, context); |
|
return context; |
|
} |
|
function getContext(key) { |
|
return get_current_component().$$.context.get(key); |
|
} |
|
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); |
|
} |
|
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 : [])), |
|
|
|
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: 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 |
|
|
|
}, |
|
head: result.title + result.head |
|
}; |
|
}, |
|
$$render |
|
}; |
|
} |
|
|
|
export { setContext as a, subscribe as b, create_ssr_component as c, escape as e, getContext as g, missing_component as m, noop as n, safe_not_equal as s, validate_component as v }; |
|
|
|
|