197 lines
6.2 KiB
JavaScript
197 lines
6.2 KiB
JavaScript
import { r as run_all, p as blank_object, e as current_component, d as set_current_component } from './lifecycle-CPZ0ouVO.js';
|
|
|
|
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 _boolean_attributes = (
|
|
/** @type {const} */
|
|
[
|
|
"allowfullscreen",
|
|
"allowpaymentrequest",
|
|
"async",
|
|
"autofocus",
|
|
"autoplay",
|
|
"checked",
|
|
"controls",
|
|
"default",
|
|
"defer",
|
|
"disabled",
|
|
"formnovalidate",
|
|
"hidden",
|
|
"inert",
|
|
"ismap",
|
|
"loop",
|
|
"multiple",
|
|
"muted",
|
|
"nomodule",
|
|
"novalidate",
|
|
"open",
|
|
"playsinline",
|
|
"readonly",
|
|
"required",
|
|
"reversed",
|
|
"selected"
|
|
]
|
|
);
|
|
const boolean_attributes = /* @__PURE__ */ new Set([..._boolean_attributes]);
|
|
const invalid_attribute_name_character = /[\s'">/=\u{FDD0}-\u{FDEF}\u{FFFE}\u{FFFF}\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\u{4FFFE}\u{4FFFF}\u{5FFFE}\u{5FFFF}\u{6FFFE}\u{6FFFF}\u{7FFFE}\u{7FFFF}\u{8FFFE}\u{8FFFF}\u{9FFFE}\u{9FFFF}\u{AFFFE}\u{AFFFF}\u{BFFFE}\u{BFFFF}\u{CFFFE}\u{CFFFF}\u{DFFFE}\u{DFFFF}\u{EFFFE}\u{EFFFF}\u{FFFFE}\u{FFFFF}\u{10FFFE}\u{10FFFF}]/u;
|
|
function spread(args, attrs_to_add) {
|
|
const attributes = Object.assign({}, ...args);
|
|
if (attrs_to_add) {
|
|
const classes_to_add = attrs_to_add.classes;
|
|
const styles_to_add = attrs_to_add.styles;
|
|
if (classes_to_add) {
|
|
if (attributes.class == null) {
|
|
attributes.class = classes_to_add;
|
|
} else {
|
|
attributes.class += " " + classes_to_add;
|
|
}
|
|
}
|
|
if (styles_to_add) {
|
|
if (attributes.style == null) {
|
|
attributes.style = style_object_to_string(styles_to_add);
|
|
} else {
|
|
attributes.style = style_object_to_string(
|
|
merge_ssr_styles(attributes.style, styles_to_add)
|
|
);
|
|
}
|
|
}
|
|
}
|
|
let str = "";
|
|
Object.keys(attributes).forEach((name) => {
|
|
if (invalid_attribute_name_character.test(name))
|
|
return;
|
|
const value = attributes[name];
|
|
if (value === true)
|
|
str += " " + name;
|
|
else if (boolean_attributes.has(name.toLowerCase())) {
|
|
if (value)
|
|
str += " " + name;
|
|
} else if (value != null) {
|
|
str += ` ${name}="${value}"`;
|
|
}
|
|
});
|
|
return str;
|
|
}
|
|
function merge_ssr_styles(style_attribute, style_directive) {
|
|
const style_object = {};
|
|
for (const individual_style of style_attribute.split(";")) {
|
|
const colon_index = individual_style.indexOf(":");
|
|
const name = individual_style.slice(0, colon_index).trim();
|
|
const value = individual_style.slice(colon_index + 1).trim();
|
|
if (!name)
|
|
continue;
|
|
style_object[name] = value;
|
|
}
|
|
for (const name in style_directive) {
|
|
const value = style_directive[name];
|
|
if (value) {
|
|
style_object[name] = value;
|
|
} else {
|
|
delete style_object[name];
|
|
}
|
|
}
|
|
return style_object;
|
|
}
|
|
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 escape_object(obj) {
|
|
const result = {};
|
|
for (const key in obj) {
|
|
result[key] = escape_attribute_value(obj[key]);
|
|
}
|
|
return result;
|
|
}
|
|
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 { each as a, add_attribute as b, create_ssr_component as c, escape_attribute_value as d, escape as e, escape_object as f, add_styles as g, merge_ssr_styles as h, missing_component as m, spread as s, validate_component as v };
|
|
//# sourceMappingURL=ssr-DX6yy04n.js.map
|