markupress 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +113 -77
- package/dist/content.d.ts +33 -8
- package/dist/content.d.ts.map +1 -1
- package/dist/content.js +126 -250
- package/dist/content.js.map +1 -1
- package/dist/controllers/shell.d.ts +2 -3
- package/dist/controllers/shell.d.ts.map +1 -1
- package/dist/controllers/shell.js +4 -12
- package/dist/controllers/shell.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/markdown.d.ts +1 -1
- package/dist/markdown.d.ts.map +1 -1
- package/dist/markdown.js +1 -9
- package/dist/markdown.js.map +1 -1
- package/dist/navigation.d.ts +17 -31
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +43 -62
- package/dist/navigation.js.map +1 -1
- package/dist/site.d.ts +9 -25
- package/dist/site.d.ts.map +1 -1
- package/dist/site.js +62 -40
- package/dist/site.js.map +1 -1
- package/dist/versions.d.ts +4 -1
- package/dist/versions.d.ts.map +1 -1
- package/dist/versions.js +21 -41
- package/dist/versions.js.map +1 -1
- package/package.json +8 -7
- package/styles/prose.css +24 -0
- package/theme/shell.html +13 -13
package/dist/content.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { basename, resolve } from 'node:path';
|
|
2
2
|
import { pathToFileURL } from 'node:url';
|
|
3
|
-
import {
|
|
3
|
+
import { applyLoomaCodeNotation, parseLoomaFenceInfo, splitLoomaFrontmatter } from '@threadlabs/looma/markdown';
|
|
4
|
+
import { createLoomaMarkdownIt } from '@threadlabs/looma/markdown/markdown-it';
|
|
4
5
|
import { parseFragment, serialize, serializeOuter } from 'parse5';
|
|
5
6
|
import { bundledLanguages, createHighlighter } from 'shiki';
|
|
6
7
|
import { parseDocument } from 'yaml';
|
|
7
8
|
import { stylesheet } from './styles.js';
|
|
9
|
+
const index = /^(?:\d+\.)?index\.md$/;
|
|
10
|
+
/** Whether a Markdown file is its folder's index page, which HTMLKit reads as the folder's own entry. */
|
|
11
|
+
export const isIndex = (file) => index.test(basename(file));
|
|
8
12
|
export function escapeHTML(value) {
|
|
9
13
|
return value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
10
14
|
}
|
|
@@ -33,84 +37,102 @@ async function highlight(code, lang, lines) {
|
|
|
33
37
|
await shiki.loadLanguage(lang);
|
|
34
38
|
return shiki.codeToHtml(code, { lang, themes, defaultColor: 'light-dark()', transformers: [shikiOutput, lines] });
|
|
35
39
|
}
|
|
36
|
-
// Line highlighting and numbers are classes written at build time; the theme's stylesheet draws them.
|
|
37
|
-
|
|
40
|
+
// Line highlighting and numbers are classes written at build time; the theme's stylesheet draws them. The fence
|
|
41
|
+
// meta stays on <code> as Looma Markdown's canonical HTML writes it.
|
|
42
|
+
const lineClasses = (marked, numbers, meta) => ({
|
|
38
43
|
pre(node) { if (numbers)
|
|
39
44
|
this.addClassToHast(node, 'line-numbers'); },
|
|
45
|
+
code(node) { if (meta)
|
|
46
|
+
node.properties['data-meta'] = meta; },
|
|
40
47
|
line(node, line) { if (marked.has(line))
|
|
41
48
|
this.addClassToHast(node, 'highlighted'); },
|
|
42
49
|
});
|
|
43
|
-
// A fence's first info word names its language unless it is an attribute, as in ```title="notes.txt".
|
|
44
|
-
// It ends at `{` or `:`, so VitePress's ```ts{1} and ```ts:line-numbers work too.
|
|
45
|
-
const fenceLanguage = (info = '') => /^[^\s={:]+(?=[\s{:]|$)/.exec(info)?.[0];
|
|
46
|
-
// Fence meta: `{1,3-5}` highlights lines, and `:line-numbers` or `:no-line-numbers` overrides the default.
|
|
47
|
-
function fenceLines(info = '') {
|
|
48
|
-
const meta = info.replace(/(?:^|\s)title="[^"]*"/, '');
|
|
49
|
-
const marked = new Set();
|
|
50
|
-
for (const range of /\{([\d\s,-]+)\}/.exec(meta)?.[1].split(',') ?? []) {
|
|
51
|
-
const [from = NaN, to = from] = range.split('-').map(part => Number.parseInt(part, 10));
|
|
52
|
-
for (let line = from; line <= to; line++)
|
|
53
|
-
marked.add(line);
|
|
54
|
-
}
|
|
55
|
-
const numbers = /:(no-)?line-numbers(?![\w-])/.exec(meta);
|
|
56
|
-
return { marked, numbers: numbers ? numbers[1] === undefined : undefined };
|
|
57
|
-
}
|
|
58
|
-
// `// [!code highlight]` at the end of a line highlights it and is removed, and `[!code highlight:3]` covers three
|
|
59
|
-
// lines. Alone on a line, the marker is removed with its line and applies to the lines after it.
|
|
60
|
-
// ponytail: matched on source lines rather than on Shiki's comment tokens, so a string ending in the marker counts too.
|
|
61
|
-
const notation = /[ \t]*(?:\/\/|#|--|<!--|\{?\/\*)[ \t]*\[!code highlight(?::(\d+))?\][ \t]*(?:-->|\*\/\}?)?[ \t]*$/;
|
|
62
|
-
function highlightNotation(code, marked) {
|
|
63
|
-
const lines = [];
|
|
64
|
-
for (const line of code.split('\n')) {
|
|
65
|
-
const match = notation.exec(line);
|
|
66
|
-
if (!match) {
|
|
67
|
-
lines.push(line);
|
|
68
|
-
continue;
|
|
69
|
-
}
|
|
70
|
-
const rest = line.slice(0, match.index), own = rest.trim() !== '';
|
|
71
|
-
if (own)
|
|
72
|
-
lines.push(rest);
|
|
73
|
-
for (let n = 0; n < Number(match[1] ?? 1); n++)
|
|
74
|
-
marked.add(lines.length + (own ? 0 : 1) + n);
|
|
75
|
-
}
|
|
76
|
-
return lines.join('\n');
|
|
77
|
-
}
|
|
78
50
|
// Hidden until the page's code controller connects, so without JavaScript a code block is only its code.
|
|
79
51
|
const codeActions = '<div class="code-actions" hidden aria-live="polite"><button type="button" data-code-action="wrap" aria-pressed="false">Wrap</button>' +
|
|
80
52
|
'<button type="button" data-code-action="copy">Copy</button></div>';
|
|
81
|
-
const fenceTitle = (info = '') => /(?:^|\s)title="([^"]*)"/.exec(info)?.[1];
|
|
82
|
-
// Looma's shared block vocabulary (its "Shared blocks" page): a container's name, matched without regard to
|
|
83
|
-
// case, is a callout tone, details or tabs. `caution` and GitHub's [!CAUTION] mean danger.
|
|
84
|
-
const tones = { note: 'note', tip: 'tip', info: 'info', important: 'important', warning: 'warning', danger: 'danger', caution: 'danger' };
|
|
85
|
-
const blocks = new Set([...Object.keys(tones), 'details', 'tabs', 'code-group']);
|
|
86
53
|
function textContent(node) {
|
|
87
54
|
if ('value' in node)
|
|
88
55
|
return node.value;
|
|
89
56
|
return 'childNodes' in node ? node.childNodes.map(textContent).join('') : '';
|
|
90
57
|
}
|
|
58
|
+
// Looma Markdown: Looma's markdown-it plugin parses every form and renders the standard's canonical HTML. Markupress adds its presentation on top: Shiki code figures, heading self-links, literal text,
|
|
59
|
+
// and native component carriers.
|
|
60
|
+
const md = createLoomaMarkdownIt();
|
|
61
|
+
const { escapeHtml } = md.utils;
|
|
62
|
+
const rules = md.renderer.rules;
|
|
63
|
+
// Markdown text is literal: braces are escaped so HTML Next never interpolates them. Attributes are always literal
|
|
64
|
+
// in HTML Next, and raw HTML keeps its expressions. Plugin rules escape their text and attributes alike, so their
|
|
65
|
+
// text segments (between tags, where escaped HTML holds no `>`) gain the same escape.
|
|
66
|
+
const literalText = (html) => html.replace(/>([^<]+)</g, (_, text) => `>${literal(text)}<`);
|
|
67
|
+
for (const name of ['looma_container_open', 'looma_chip', 'looma_mention', 'looma_toc']) {
|
|
68
|
+
const rule = rules[name];
|
|
69
|
+
rules[name] = (...args) => literalText(rule(...args));
|
|
70
|
+
}
|
|
71
|
+
rules.text = (tokens, index) => literal(escapeHtml(tokens[index].content));
|
|
72
|
+
rules.code_inline = (tokens, index, _options, _env, self) => `<code${self.renderAttrs(tokens[index])}>${literal(escapeHtml(tokens[index].content))}</code>`;
|
|
73
|
+
// Each heading links to its own anchor, which the plugin assigned.
|
|
74
|
+
rules.heading_open = (tokens, index, options, _env, self) => `${self.renderToken(tokens, index, options)}<a href="#${escapeHtml(tokens[index].attrGet('id') ?? '')}">`;
|
|
75
|
+
rules.heading_close = (tokens, index, options, _env, self) => `</a>${self.renderToken(tokens, index, options)}`;
|
|
76
|
+
// Code reads as Looma's code notation leaves it: `[!code highlight]` comments are removed from every fence.
|
|
77
|
+
const plainCode = (code, { language, meta }) => `<pre><code${language ? ` class="language-${escapeHtml(language)}"` : ''}${meta ? ` data-meta="${escapeHtml(meta)}"` : ''}>${literal(escapeHtml(applyLoomaCodeNotation(code.replace(/\n$/, '')).code))}</code></pre>`;
|
|
78
|
+
const codeFigure = (pre, title) => `<figure class="code">${title ? `<figcaption>${literal(escapeHtml(title))}</figcaption>` : ''}${codeActions}${pre}</figure>\n`;
|
|
79
|
+
rules.fence = (tokens, index, _options, env) => {
|
|
80
|
+
const token = tokens[index], info = parseLoomaFenceInfo(token.info), tab = tokens[index - 1];
|
|
81
|
+
// A code group's tab already shows the fence title that labels it.
|
|
82
|
+
const title = tab?.type === 'looma_tab_open' && tab.meta.label === info.title ? undefined : info.title;
|
|
83
|
+
return codeFigure(env.highlighted.get(token) ?? plainCode(token.content, info), title);
|
|
84
|
+
};
|
|
85
|
+
rules.code_block = (tokens, index) => codeFigure(plainCode(tokens[index].content, { meta: '' }));
|
|
86
|
+
// A native component carrier, `<template component>` at the start of a block, is raw HTML through its closing tag,
|
|
87
|
+
// blank lines included. Native fragment parsing finds the boundary, nested templates too, so Markdown never
|
|
88
|
+
// interprets a component's CSS, expressions or internal markup.
|
|
89
|
+
md.block.ruler.before('html_block', 'native_component', (state, startLine, endLine, silent) => {
|
|
90
|
+
const start = state.bMarks[startLine] + state.tShift[startLine];
|
|
91
|
+
if (state.sCount[startLine] - state.blkIndent >= 4 || !/^<template(?:\s|>)/i.test(state.src.slice(start, start + 10)))
|
|
92
|
+
return false;
|
|
93
|
+
const carrier = parseFragment(state.src.slice(start), { sourceCodeLocationInfo: true }).childNodes.find(node => 'tagName' in node);
|
|
94
|
+
if (!carrier || !('tagName' in carrier) || carrier.tagName !== 'template' || !carrier.attrs.some(attr => attr.name === 'component'))
|
|
95
|
+
return false;
|
|
96
|
+
const end = carrier.sourceCodeLocation?.endTag?.endOffset;
|
|
97
|
+
if (end === undefined)
|
|
98
|
+
throw new Error(`${state.env.file}: unclosed native component template.`);
|
|
99
|
+
let line = startLine;
|
|
100
|
+
while (line < endLine && state.eMarks[line] < start + end)
|
|
101
|
+
line++;
|
|
102
|
+
if (line >= endLine)
|
|
103
|
+
return false;
|
|
104
|
+
if (silent)
|
|
105
|
+
return true;
|
|
106
|
+
const token = state.push('html_block', '', 0);
|
|
107
|
+
token.content = state.src.slice(start, state.eMarks[line]) + '\n';
|
|
108
|
+
token.map = [startLine, line + 1];
|
|
109
|
+
state.line = line + 1;
|
|
110
|
+
return true;
|
|
111
|
+
}, { alt: ['paragraph', 'reference', 'blockquote'] });
|
|
91
112
|
function frontmatter(source, file) {
|
|
92
|
-
const
|
|
93
|
-
if (
|
|
113
|
+
const split = splitLoomaFrontmatter(source);
|
|
114
|
+
if (split === null)
|
|
94
115
|
return { body: source, fields: {} };
|
|
95
|
-
const document = parseDocument(
|
|
116
|
+
const document = parseDocument(split.yaml);
|
|
96
117
|
if (document.errors.length > 0)
|
|
97
118
|
throw new Error(`${file}: ${document.errors.map(error => error.message).join('; ')}`);
|
|
98
119
|
const fields = document.toJS();
|
|
99
120
|
if (fields === null || typeof fields !== 'object' || Array.isArray(fields))
|
|
100
121
|
throw new Error(`${file}: frontmatter must be a mapping.`);
|
|
101
|
-
return { body:
|
|
122
|
+
return { body: split.body, fields: fields };
|
|
102
123
|
}
|
|
103
124
|
const text = (value) => typeof value === 'string' && value !== '';
|
|
104
125
|
const strings = (value) => value !== null && typeof value === 'object' && !Array.isArray(value) &&
|
|
105
126
|
Object.values(value).every(item => typeof item === 'string' || typeof item === 'number');
|
|
106
127
|
const level = (value) => Number.isInteger(value) && value >= 1 && value <= 6;
|
|
107
128
|
const fieldTypes = {
|
|
108
|
-
title: [text, 'a nonempty string'], description: [text, 'a nonempty string'],
|
|
109
|
-
|
|
110
|
-
|
|
129
|
+
title: [text, 'a nonempty string'], description: [text, 'a nonempty string'],
|
|
130
|
+
order: [value => Number.isSafeInteger(value) && value >= 0, 'a whole number'],
|
|
131
|
+
navigation: [value => value === 'hidden' || value === 'collapsed', 'hidden, or collapsed on a folder\'s index page'],
|
|
132
|
+
id: [text, 'a nonempty string'],
|
|
111
133
|
aliases: [value => Array.isArray(value) && value.every(item => typeof item === 'string'), 'a list of route paths'],
|
|
112
134
|
layout: [value => value === false || text(value), 'an HTMLKit layout name or false'],
|
|
113
|
-
|
|
135
|
+
outline: [value => value === false || (Array.isArray(value) && value.length === 2 && value.every(level) && value[0] <= value[1]), 'false or a heading range such as [2, 3]'],
|
|
114
136
|
head: [value => (value !== null && typeof value === 'object' && !Array.isArray(value) && Object.entries(value).every(([key, item]) => key === 'canonical' ? text(item) : (key === 'meta' || key === 'og') && strings(item))), 'a mapping of meta, og and canonical'],
|
|
115
137
|
editLink: [value => value === false || text(value), 'a URL or false'],
|
|
116
138
|
};
|
|
@@ -122,202 +144,55 @@ function validFrontMatter(fields, file) {
|
|
|
122
144
|
if (!type[0](value))
|
|
123
145
|
throw new Error(`${file}: front matter ${name} must be ${type[1]}.`);
|
|
124
146
|
}
|
|
147
|
+
// HTMLKit reads a folder from its index page, so only an index page can start its folder collapsed.
|
|
148
|
+
if (fields.navigation === 'collapsed' && !isIndex(file))
|
|
149
|
+
throw new Error(`${file}: front matter navigation collapsed applies to a folder's index page.`);
|
|
125
150
|
return fields;
|
|
126
151
|
}
|
|
152
|
+
// Blocks rendered as Looma components, which the page links by package specifier, as the theme's shell links
|
|
153
|
+
// ui-button, so the site resolves Looma.
|
|
154
|
+
const blockComponent = (token) => token.type === 'looma_container_open'
|
|
155
|
+
? (token.info === 'tabs' || token.info === 'code-group' ? 'ui-tabs' : token.info === 'details' || token.info === 'figure' ? undefined : 'ui-callout')
|
|
156
|
+
: token.type === 'blockquote_open' && token.tag === 'ui-callout' ? 'ui-callout' : undefined;
|
|
157
|
+
/**
|
|
158
|
+
* The Looma Markdown layer: splits the front matter, parses with Looma's plugin and renders with Markupress's
|
|
159
|
+
* presentation. Front matter fields are left to the host; compileMarkdown validates Markupress's.
|
|
160
|
+
*/
|
|
161
|
+
export async function renderMarkdown(source, options) {
|
|
162
|
+
const { body, fields } = frontmatter(source, options.file);
|
|
163
|
+
const tokens = md.parse(source, { file: options.file });
|
|
164
|
+
const highlighted = new Map(), components = new Set(), headings = [];
|
|
165
|
+
let hasCode = false;
|
|
166
|
+
for (const [index, token] of tokens.entries()) {
|
|
167
|
+
const component = blockComponent(token);
|
|
168
|
+
if (component)
|
|
169
|
+
components.add(component);
|
|
170
|
+
if (token.type === 'heading_open') {
|
|
171
|
+
const id = token.attrGet('id');
|
|
172
|
+
const label = textContent(parseFragment(md.renderer.renderInline(tokens[index + 1].children ?? [], md.options, { highlighted }))).replace(/\\([\\{])/g, '$1');
|
|
173
|
+
headings.push({ id, href: `#${id}`, label, depth: Number(token.tag.slice(1)) });
|
|
174
|
+
}
|
|
175
|
+
if (token.type === 'code_block')
|
|
176
|
+
hasCode = true;
|
|
177
|
+
if (token.type !== 'fence')
|
|
178
|
+
continue;
|
|
179
|
+
hasCode = true;
|
|
180
|
+
const { language, meta, lines, lineNumbers = options.lineNumbers ?? false } = parseLoomaFenceInfo(token.info);
|
|
181
|
+
// Languages Shiki does not bundle stay escaped plain text.
|
|
182
|
+
if (!language || !(Object.hasOwn(bundledLanguages, language) || plain.has(language)))
|
|
183
|
+
continue;
|
|
184
|
+
// Highlighted lines are the fence's `{1,3-5}` and the lines its `[!code highlight]` comments mark.
|
|
185
|
+
const { code, lines: noted } = applyLoomaCodeNotation(token.content.replace(/\n$/, ''));
|
|
186
|
+
const marked = new Set([...lines, ...noted]);
|
|
187
|
+
highlighted.set(token, await highlight(code, language, lineClasses(marked, lineNumbers, meta)));
|
|
188
|
+
}
|
|
189
|
+
return { html: md.renderer.render(tokens, md.options, { highlighted }), frontmatter: fields, body, headings, hasCode, components };
|
|
190
|
+
}
|
|
127
191
|
export async function compileMarkdown(source, options) {
|
|
128
|
-
const {
|
|
192
|
+
const { html, frontmatter: raw, body, headings, hasCode, components } = await renderMarkdown(source, options);
|
|
129
193
|
const fields = { ...options.frontmatter, ...validFrontMatter(raw, options.file) };
|
|
130
194
|
const aliases = fields.aliases ?? [];
|
|
131
|
-
|
|
132
|
-
const used = new Set(), reserved = new Set(), suffixes = new Map();
|
|
133
|
-
const customIds = new Map();
|
|
134
|
-
let firstHeading, hasCode = false;
|
|
135
|
-
const headings = [];
|
|
136
|
-
const highlighted = new Map();
|
|
137
|
-
// Code group panels labelled by their fence title, and the Looma components the page's blocks use. The page
|
|
138
|
-
// links each one by package specifier, as the theme's shell links ui-button, so the site resolves Looma.
|
|
139
|
-
const labelled = new WeakSet(), components = new Set();
|
|
140
|
-
const fail = (message) => { throw new Error(`${options.file}: ${message}`); };
|
|
141
|
-
// Tabs content is "== Label" panels; a code group may instead make each fence a panel labelled by its title.
|
|
142
|
-
const panels = (tokens, code) => {
|
|
143
|
-
const result = [];
|
|
144
|
-
const marked = tokens.some(token => token.type === 'tab-label');
|
|
145
|
-
for (const token of tokens) {
|
|
146
|
-
if (token.type === 'tab-label')
|
|
147
|
-
result.push({ type: 'tab-panel', raw: '', label: token.label, tokens: [] });
|
|
148
|
-
else if (marked && result.length > 0)
|
|
149
|
-
result.at(-1).tokens.push(token);
|
|
150
|
-
else if (!marked && code && token.type === 'code') {
|
|
151
|
-
labelled.add(token);
|
|
152
|
-
result.push({ type: 'tab-panel', raw: '', label: fenceTitle(token.lang) ?? fenceLanguage(token.lang) ?? 'Code', tokens: [token] });
|
|
153
|
-
}
|
|
154
|
-
else if (token.type !== 'space')
|
|
155
|
-
fail(code ? 'a code group holds fences, or "== Label" panels.' : 'tabs content starts with an "== Label" line.');
|
|
156
|
-
}
|
|
157
|
-
return result;
|
|
158
|
-
};
|
|
159
|
-
const markdown = new Marked({ async: true, async walkTokens(token) {
|
|
160
|
-
if (token.type === 'heading') {
|
|
161
|
-
// `## Title {#custom-id}` names the anchor; the marker ends the heading's last text token. Every token is
|
|
162
|
-
// walked before any renders, so a custom ID is reserved before an earlier heading could generate it.
|
|
163
|
-
const last = token.tokens?.at(-1);
|
|
164
|
-
const custom = last?.type === 'text' ? / +\{#([\w-]+)\}$/.exec(last.text) : null;
|
|
165
|
-
if (custom && last?.type === 'text') {
|
|
166
|
-
last.text = last.text.slice(0, custom.index);
|
|
167
|
-
customIds.set(token, custom[1]);
|
|
168
|
-
reserved.add(custom[1]);
|
|
169
|
-
}
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
if (token.type !== 'code')
|
|
173
|
-
return;
|
|
174
|
-
const language = fenceLanguage(token.lang);
|
|
175
|
-
// Languages Shiki does not bundle stay escaped plain text.
|
|
176
|
-
if (!language || !(Object.hasOwn(bundledLanguages, language) || plain.has(language)))
|
|
177
|
-
return;
|
|
178
|
-
const { marked, numbers = options.lineNumbers ?? false } = fenceLines(token.lang);
|
|
179
|
-
highlighted.set(token, await highlight(highlightNotation(token.text, marked), language, lineClasses(marked, numbers)));
|
|
180
|
-
}, renderer: {
|
|
181
|
-
text(token) { return 'tokens' in token && token.tokens ? this.parser.parseInline(token.tokens) : literal(token.text); },
|
|
182
|
-
codespan({ text }) { return `<code>${literal(escapeHTML(text))}</code>`; },
|
|
183
|
-
code(token) {
|
|
184
|
-
const { text, lang = '' } = token;
|
|
185
|
-
const language = fenceLanguage(lang);
|
|
186
|
-
// A code group's tab already shows a panel's fence title.
|
|
187
|
-
const title = labelled.has(token) ? undefined : fenceTitle(lang);
|
|
188
|
-
const pre = highlighted.get(token) ?? `<pre><code${language ? ` class="language-${escapeHTML(language)}"` : ''}>${literal(escapeHTML(text))}</code></pre>`;
|
|
189
|
-
hasCode = true;
|
|
190
|
-
return `<figure class="code">${title ? `<figcaption>${literal(escapeHTML(title))}</figcaption>` : ''}${codeActions}${pre}</figure>\n`;
|
|
191
|
-
},
|
|
192
|
-
heading(token) {
|
|
193
|
-
const { tokens, depth } = token;
|
|
194
|
-
const html = this.parser.parseInline(tokens);
|
|
195
|
-
const label = textContent(parseFragment(html)).replace(/\\([\\{])/g, '$1');
|
|
196
|
-
firstHeading ??= label;
|
|
197
|
-
const custom = customIds.get(token);
|
|
198
|
-
const stem = custom ?? (label.normalize('NFKD').toLowerCase().replace(/[^\p{L}\p{N}]+/gu, '-').replace(/^-|-$/g, '') || 'heading');
|
|
199
|
-
// A custom ID is kept unless an earlier heading used it. Any other ID takes the first free suffix,
|
|
200
|
-
// skipping IDs already used and custom IDs reserved by later headings, so no two headings share an ID.
|
|
201
|
-
const taken = (id) => used.has(id) || reserved.has(id);
|
|
202
|
-
let id = stem;
|
|
203
|
-
if (custom === undefined ? taken(id) : used.has(id)) {
|
|
204
|
-
let n = suffixes.get(stem) ?? 1;
|
|
205
|
-
while (taken(`${stem}-${n}`))
|
|
206
|
-
n++;
|
|
207
|
-
suffixes.set(stem, n + 1);
|
|
208
|
-
id = `${stem}-${n}`;
|
|
209
|
-
}
|
|
210
|
-
used.add(id);
|
|
211
|
-
headings.push({ id, href: `#${id}`, label, depth });
|
|
212
|
-
return `<h${depth} id="${escapeHTML(id)}"><a href="#${escapeHTML(id)}">${html}</a></h${depth}>\n`;
|
|
213
|
-
},
|
|
214
|
-
link({ href, title, tokens }) {
|
|
215
|
-
const target = options.resolveLink?.(href, 'link') ?? href;
|
|
216
|
-
return `<a href="${escapeHTML(target)}"${title ? ` title="${escapeHTML(title)}"` : ''}>${this.parser.parseInline(tokens)}</a>`;
|
|
217
|
-
},
|
|
218
|
-
image({ href, title, text }) {
|
|
219
|
-
const target = options.resolveLink?.(href, 'asset') ?? href;
|
|
220
|
-
return `<img src="${escapeHTML(target)}" alt="${escapeHTML(text)}"${title ? ` title="${escapeHTML(title)}"` : ''}>`;
|
|
221
|
-
},
|
|
222
|
-
} });
|
|
223
|
-
markdown.use({ extensions: [{ name: 'native-component', level: 'block',
|
|
224
|
-
start(text) { return text.indexOf('<template'); },
|
|
225
|
-
tokenizer(text) {
|
|
226
|
-
if (!/^ {0,3}<template(?:\s|>)/i.test(text))
|
|
227
|
-
return undefined;
|
|
228
|
-
// Native fragment parsing identifies the carrier boundary, including nested templates.
|
|
229
|
-
// Markdown must never interpret a component's CSS, expressions or internal markup.
|
|
230
|
-
const carrier = parseFragment(text, { sourceCodeLocationInfo: true }).childNodes.find(node => 'tagName' in node);
|
|
231
|
-
if (!carrier || !('tagName' in carrier) || carrier.tagName !== 'template' || !carrier.attrs.some(attr => attr.name === 'component'))
|
|
232
|
-
return undefined;
|
|
233
|
-
const end = carrier.sourceCodeLocation?.endTag?.endOffset;
|
|
234
|
-
if (end === undefined)
|
|
235
|
-
throw new Error(`${options.file}: unclosed native component template.`);
|
|
236
|
-
const raw = text.slice(0, end);
|
|
237
|
-
return { type: 'native-component', raw };
|
|
238
|
-
}, renderer(token) { return token.raw; },
|
|
239
|
-
}, { name: 'container', level: 'block',
|
|
240
|
-
// `::: name Title` … `:::` is a shared block; any other name stays text. A container closes at the first
|
|
241
|
-
// marker at least as long as its own, so an outer container uses more colons than those it contains.
|
|
242
|
-
start(text) { return /^ {0,3}:{3,}[ \t]*(?:note|tip|info|important|warning|danger|caution|details|tabs|code-group)(?![\w-])/im.exec(text)?.index; },
|
|
243
|
-
tokenizer(text) {
|
|
244
|
-
const open = /^ {0,3}(:{3,})[ \t]*([A-Za-z][\w-]*)(?:[ \t]+([^\n]*?))?[ \t]*(?:\n|$)/.exec(text);
|
|
245
|
-
const name = open?.[2].toLowerCase();
|
|
246
|
-
if (!open || !name || !blocks.has(name))
|
|
247
|
-
return undefined;
|
|
248
|
-
const close = new RegExp(`^ {0,3}:{${open[1].length},}[ \\t]*$`);
|
|
249
|
-
// A marker line inside fenced code is code, so the scan skips fences while looking for the close.
|
|
250
|
-
let fence;
|
|
251
|
-
let offset = open[0].length;
|
|
252
|
-
for (const line of text.slice(offset).split('\n')) {
|
|
253
|
-
if (fence) {
|
|
254
|
-
if (fence.test(line))
|
|
255
|
-
fence = undefined;
|
|
256
|
-
}
|
|
257
|
-
else if (close.test(line)) {
|
|
258
|
-
// Like a blockquote, the content is a document of its own, so its paragraphs stay paragraphs inside a list.
|
|
259
|
-
// `== Label` lines start panels only directly inside tabs.
|
|
260
|
-
const grouped = name === 'tabs' || name === 'code-group';
|
|
261
|
-
const state = this.lexer.state, { top, tabs } = state;
|
|
262
|
-
state.top = true;
|
|
263
|
-
state.tabs = grouped;
|
|
264
|
-
const tokens = this.lexer.blockTokens(text.slice(open[0].length, offset));
|
|
265
|
-
state.top = top;
|
|
266
|
-
state.tabs = tabs;
|
|
267
|
-
return { type: 'container', raw: text.slice(0, offset + line.length + 1), name, title: open[3] ?? '', tokens: grouped ? panels(tokens, name === 'code-group') : tokens };
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
const opener = /^ {0,3}(`{3,}|~{3,})/.exec(line)?.[1];
|
|
271
|
-
if (opener)
|
|
272
|
-
fence = new RegExp(`^ {0,3}${opener[0]}{${opener.length},}[ \\t]*$`);
|
|
273
|
-
}
|
|
274
|
-
offset += line.length + 1;
|
|
275
|
-
}
|
|
276
|
-
return undefined;
|
|
277
|
-
}, renderer(token) {
|
|
278
|
-
const { name, title } = token;
|
|
279
|
-
const content = (tokens = token.tokens ?? []) => this.parser.parse(tokens);
|
|
280
|
-
const tone = tones[name];
|
|
281
|
-
if (tone) {
|
|
282
|
-
components.add('ui-callout');
|
|
283
|
-
return `<ui-callout tone="${tone}"${title ? ` heading="${escapeHTML(title)}"` : ''}>\n${content()}</ui-callout>\n`;
|
|
284
|
-
}
|
|
285
|
-
// Native <details> opens without JavaScript and find-in-page can reveal it; the contract allows it in place of ui-disclosure.
|
|
286
|
-
if (name === 'details') {
|
|
287
|
-
const [, summary, open] = /^(.*?)[ \t]*(\{open\})?$/.exec(title);
|
|
288
|
-
return `<details${open ? ' open' : ''}><summary>${literal(escapeHTML(summary || 'Details'))}</summary>\n${content()}</details>\n`;
|
|
289
|
-
}
|
|
290
|
-
// Tabs of one group keep one selection across the page and remember it; the group defaults to the block name.
|
|
291
|
-
components.add('ui-tabs');
|
|
292
|
-
return `<ui-tabs${name === 'code-group' ? ' class="code-group"' : ''} group="${escapeHTML(title || name)}">\n${token.tokens.map(panel => `<section aria-label="${escapeHTML(panel.label)}">\n${content(panel.tokens)}</section>\n`).join('')}</ui-tabs>\n`;
|
|
293
|
-
},
|
|
294
|
-
}, { name: 'alert', level: 'block',
|
|
295
|
-
// A GitHub alert, `> [!TIP]` alone on a quote's first line, is a callout without a title.
|
|
296
|
-
start(text) { return /^ {0,3}>[ \t]?\[!/m.exec(text)?.index; },
|
|
297
|
-
tokenizer(text) {
|
|
298
|
-
const kind = /^ {0,3}>[ \t]?\[!(note|tip|important|warning|caution)\][ \t]*(?:\n|$)/i.exec(text)?.[1];
|
|
299
|
-
const quote = kind === undefined ? undefined : this.lexer.tokenizer.blockquote(text);
|
|
300
|
-
if (!kind || !quote)
|
|
301
|
-
return undefined;
|
|
302
|
-
const state = this.lexer.state, { top, tabs } = state;
|
|
303
|
-
state.top = true;
|
|
304
|
-
state.tabs = false;
|
|
305
|
-
const tokens = this.lexer.blockTokens(quote.text.replace(/^[^\n]*\n?/, ''));
|
|
306
|
-
state.top = top;
|
|
307
|
-
state.tabs = tabs;
|
|
308
|
-
return { type: 'container', raw: quote.raw, name: kind.toLowerCase(), title: '', tokens };
|
|
309
|
-
},
|
|
310
|
-
}, { name: 'tab-label', level: 'block',
|
|
311
|
-
start(text) { return this.lexer.state.tabs ? /^ {0,3}==[ \t]/m.exec(text)?.index : undefined; },
|
|
312
|
-
tokenizer(text) {
|
|
313
|
-
if (!this.lexer.state.tabs)
|
|
314
|
-
return undefined;
|
|
315
|
-
const label = /^ {0,3}==[ \t]+(\S[^\n]*?)[ \t]*(?:\n|$)/.exec(text);
|
|
316
|
-
return label ? { type: 'tab-label', raw: label[0], label: label[1] } : undefined;
|
|
317
|
-
},
|
|
318
|
-
// Panels consume the labels directly inside tabs; one nested deeper, as in a quote, stays text.
|
|
319
|
-
renderer(token) { return `<p>${literal(escapeHTML(token.raw.trim()))}</p>\n`; }, }] });
|
|
320
|
-
const fragment = parseFragment(await markdown.parse(body));
|
|
195
|
+
const fragment = parseFragment(html);
|
|
321
196
|
const declarations = [];
|
|
322
197
|
const metadata = [];
|
|
323
198
|
const original = pathToFileURL(resolve(options.file)).href;
|
|
@@ -334,7 +209,7 @@ export async function compileMarkdown(source, options) {
|
|
|
334
209
|
if (node.tagName === 'link' && attribute.name === 'href' && node.attrs.some(attr => attr.name === 'rel' && attr.value.split(/\s+/).includes('component')))
|
|
335
210
|
attribute.value = rebase(attribute.value);
|
|
336
211
|
else if (options.resolveLink && ((attribute.name === 'href' && node.tagName === 'a') || (attribute.name === 'src' && node.tagName === 'img'))) {
|
|
337
|
-
//
|
|
212
|
+
// Every authored link and image, from Markdown or raw HTML, resolves here once.
|
|
338
213
|
attribute.value = options.resolveLink(attribute.value, attribute.name === 'src' ? 'asset' : 'link');
|
|
339
214
|
}
|
|
340
215
|
}
|
|
@@ -360,23 +235,24 @@ export async function compileMarkdown(source, options) {
|
|
|
360
235
|
visit(fragment, false);
|
|
361
236
|
for (const name of components)
|
|
362
237
|
declarations.push(`<link rel="component" href="@threadlabs/looma/components/${name}/${name}.html">`);
|
|
363
|
-
const title = fields.title ??
|
|
364
|
-
|
|
238
|
+
const title = fields.title ?? headings[0]?.label ?? basename(options.file, '.md').replace(/^\d+\./, '');
|
|
239
|
+
// A folder's index page with front matter only generates the folder's listing, which the layout's loader supplies.
|
|
240
|
+
const generated = isIndex(options.file) && body.trim() === '';
|
|
365
241
|
// Front matter becomes HTMLKit page metadata: HTMLKit owns navigation labels, order, visibility, alias routes, the
|
|
366
242
|
// layout choice, and the document head, which merges meta and canonical links by identity.
|
|
367
243
|
const { meta = {}, og = {}, canonical } = fields.head ?? {};
|
|
368
244
|
const head = `<title>${literal(escapeHTML(title))}</title>` + (fields.description === undefined ? '' : `<meta name="description" content="${escapeHTML(fields.description)}">`) +
|
|
369
|
-
`<meta name="hk:label" content="${escapeHTML(
|
|
370
|
-
(fields.
|
|
245
|
+
`<meta name="hk:label" content="${escapeHTML(title)}">` + (fields.navigation === 'hidden' ? '<meta name="hk:navigation" content="hidden">' : '') +
|
|
246
|
+
(fields.order === undefined ? '' : `<meta name="hk:order" content="${fields.order}">`) +
|
|
371
247
|
aliases.map(alias => `<meta name="hk:alias" content="${escapeHTML(alias)}">`).join('') +
|
|
372
248
|
(fields.layout === undefined ? '' : `<meta name="hk:layout" content="${fields.layout === false ? 'none' : escapeHTML(fields.layout)}">`) +
|
|
373
249
|
Object.entries(meta).map(([name, content]) => `<meta name="${escapeHTML(name)}" content="${escapeHTML(String(content))}">`).join('') +
|
|
374
250
|
Object.entries(og).map(([name, content]) => `<meta property="og:${escapeHTML(name)}" content="${escapeHTML(String(content))}">`).join('') +
|
|
375
251
|
(canonical === undefined ? '' : `<link rel="canonical" href="${escapeHTML(canonical)}">`);
|
|
376
|
-
const [from, to] = fields.
|
|
252
|
+
const [from, to] = fields.outline === false ? [0, -1] : fields.outline ?? [2, 3];
|
|
377
253
|
const styles = options.styles?.length ? `<style>${options.styles.map(file => `@import "${pathToFileURL(file).href}";`).join('')}</style>` : '';
|
|
378
|
-
return { title,
|
|
254
|
+
return { title, aliases, generated, ...(fields.id === undefined ? {} : { id: fields.id }),
|
|
379
255
|
frontmatter: fields, outline: headings.filter(heading => heading.depth >= from && heading.depth <= to),
|
|
380
|
-
resource: `<meta name="hk:page" content="${escapeHTML(options.pageName)}">\n${declarations.join('\n')}\n<template component="${escapeHTML(options.pageName)}"${hasCode ? ' controller="markupress/controllers/code.js"' : ''}>${head}${metadata.join('')}<article class="markupress-prose">${serialize(fragment)}</article>${styles}</template>\n` };
|
|
256
|
+
resource: `<meta name="hk:page" content="${escapeHTML(options.pageName)}">\n${declarations.join('\n')}\n<template component="${escapeHTML(options.pageName)}"${hasCode ? ' controller="markupress/controllers/code.js"' : ''}>${head}${metadata.join('')}<article class="markupress-prose">${generated ? `<h1>${literal(escapeHTML(title))}</h1>` : ''}${serialize(fragment)}</article>${styles}</template>\n` };
|
|
381
257
|
}
|
|
382
258
|
//# sourceMappingURL=content.js.map
|
package/dist/content.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAA2C,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAA8B,MAAM,QAAQ,CAAC;AAC9F,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAiE,MAAM,OAAO,CAAC;AAC3H,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAyDzC,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC1G,CAAC;AACD,yFAAyF;AACzF,MAAM,UAAU,OAAO,CAAC,KAAa,IAAY,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAE5G,sGAAsG;AACtG,iGAAiG;AACjG,qEAAqE;AACrE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,qBAAqB,EAAW,CAAC;AACvF,IAAI,WAA6C,CAAC;AAClD,MAAM,WAAW,GAAqB;IACpC,0FAA0F;IAC1F,GAAG,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,mGAAmG;IACnG,IAAI,CAAC,IAAI,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;QAAE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACjH,CAAC;AACF,sGAAsG;AACtG,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7D,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,IAAY,EAAE,KAAuB;IAC1E,+FAA+F;IAC/F,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,KAAK,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACtG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,MAAM,KAAK,CAAC,YAAY,CAAC,IAAuB,CAAC,CAAC;IACxE,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AACpH,CAAC;AACD,sGAAsG;AACtG,MAAM,WAAW,GAAG,CAAC,MAA2B,EAAE,OAAgB,EAAoB,EAAE,CAAC,CAAC;IACxF,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO;QAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CACrF,CAAC,CAAC;AACH,sGAAsG;AACtG,kFAAkF;AAClF,MAAM,aAAa,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9E,2GAA2G;AAC3G,SAAS,UAAU,CAAC,IAAI,GAAG,EAAE;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,KAAK,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACxE,MAAM,CAAC,IAAI,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACxF,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,OAAO,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAC7E,CAAC;AACD,mHAAmH;AACnH,iGAAiG;AACjG,wHAAwH;AACxH,MAAM,QAAQ,GAAG,mGAAmG,CAAC;AACrH,SAAS,iBAAiB,CAAC,IAAY,EAAE,MAAmB;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QAClE,IAAI,GAAG;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE;YAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AACD,yGAAyG;AACzG,MAAM,WAAW,GAAG,sIAAsI;IACxJ,mEAAmE,CAAC;AACtE,MAAM,UAAU,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE5E,4GAA4G;AAC5G,2FAA2F;AAC3F,MAAM,KAAK,GAAqC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC5K,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;AAGjF,SAAS,WAAW,CAAC,IAAmC;IACtD,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IACvC,OAAO,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,IAAY;IAC/C,MAAM,KAAK,GAAG,wCAAwC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpE,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAA6B,EAAE,CAAC;IACnF,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IAC1C,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtH,MAAM,MAAM,GAAY,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAC;IACvI,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAiC,EAAE,CAAC;AAC5F,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC;AAC3E,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IACtG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;AAC3F,MAAM,KAAK,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAK,KAAgB,IAAI,CAAC,IAAK,KAAgB,IAAI,CAAC,CAAC;AAC9G,MAAM,UAAU,GAA8F;IAC5G,KAAK,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACxJ,aAAa,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,SAAS,EAAE,WAAW,CAAC;IACjE,eAAe,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAK,KAAgB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACnG,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IAClH,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,iCAAiC,CAAC;IACpF,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAK,KAAK,CAAC,CAAC,CAAY,IAAK,KAAK,CAAC,CAAC,CAAY,CAAC,EAAE,yCAAyC,CAAC;IAChM,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CACnI,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,qCAAqC,CAAC;IAChI,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;CACtE,CAAC;AACF,SAAS,gBAAgB,CAAC,MAA+B,EAAE,IAAY;IACrE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,gCAAgC,IAAI,gBAAgB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1I,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kBAAkB,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,MAAqB,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,OAAwB;IAC5E,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAClF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,iGAAiG;IACjG,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,EAAE,QAAQ,GAAG,IAAI,GAAG,EAAU,EAAE,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IACnG,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC3C,IAAI,YAAgC,EAAE,OAAO,GAAG,KAAK,CAAC;IACtD,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC7C,4GAA4G;IAC5G,yGAAyG;IACzG,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAS,EAAE,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACtE,MAAM,IAAI,GAAG,CAAC,OAAe,EAAS,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,6GAA6G;IAC7G,MAAM,MAAM,GAAG,CAAC,MAAe,EAAE,IAAa,EAAoB,EAAE;QAClE,MAAM,MAAM,GAAqB,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAChE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;iBACvG,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,MAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACpE,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAClD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACrI,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;gBAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC;QACtJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK;YAC/D,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,0GAA0G;gBAC1G,qGAAqG;gBACrG,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,MAAM,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACjF,IAAI,MAAM,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;oBAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;oBAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;gBAAC,CAAC;gBAClJ,OAAO;YACT,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO;YAClC,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,2DAA2D;YAC3D,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAAE,OAAO;YAC7F,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,IAAI,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClF,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACzH,CAAC,EAAE,QAAQ,EAAE;YACX,IAAI,CAAC,KAAK,IAAI,OAAO,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvH,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,OAAO,SAAS,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1E,IAAI,CAAC,KAAK;gBACR,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC;gBAClC,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;gBACrC,0DAA0D;gBAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,aAAa,QAAQ,CAAC,CAAC,CAAC,oBAAoB,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC;gBAC3J,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,wBAAwB,KAAK,CAAC,CAAC,CAAC,eAAe,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,GAAG,GAAG,aAAa,CAAC;YACxI,CAAC;YACD,OAAO,CAAC,KAAK;gBACX,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;gBAChC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBAC3E,YAAY,KAAK,KAAK,CAAC;gBACvB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC;gBACnI,mGAAmG;gBACnG,uGAAuG;gBACvG,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/D,IAAI,EAAE,GAAG,IAAI,CAAC;gBACd,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBACpD,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAChC,OAAO,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;wBAAE,CAAC,EAAE,CAAC;oBAClC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAC,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;gBACjD,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACb,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBACpD,OAAO,KAAK,KAAK,QAAQ,UAAU,CAAC,EAAE,CAAC,eAAe,UAAU,CAAC,EAAE,CAAC,KAAK,IAAI,UAAU,KAAK,KAAK,CAAC;YACpG,CAAC;YACD,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;gBAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;gBAC3D,OAAO,YAAY,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,WAAW,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;YACjI,CAAC;YACD,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;gBACzB,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC;gBAC5D,OAAO,aAAa,UAAU,CAAC,MAAM,CAAC,UAAU,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,WAAW,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;YACtH,CAAC;SACF,EAAE,CAAC,CAAC;IACL,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO;gBACpE,KAAK,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACjD,SAAS,CAAC,IAAI;oBACZ,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC;wBAAE,OAAO,SAAS,CAAC;oBAC9D,uFAAuF;oBACvF,mFAAmF;oBACnF,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;oBACjH,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC;wBAAE,OAAO,SAAS,CAAC;oBACtJ,MAAM,GAAG,GAAG,OAAO,CAAC,kBAAkB,EAAE,MAAM,EAAE,SAAS,CAAC;oBAC1D,IAAI,GAAG,KAAK,SAAS;wBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,uCAAuC,CAAC,CAAC;oBAC/F,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/B,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC;gBAC3C,CAAC,EAAE,QAAQ,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;aACzC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO;gBACpC,yGAAyG;gBACzG,qGAAqG;gBACrG,KAAK,CAAC,IAAI,IAAI,OAAO,yGAAyG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBACnJ,SAAS,CAAC,IAAI;oBACZ,MAAM,IAAI,GAAG,wEAAwE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjG,MAAM,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC;oBACtC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;wBAAE,OAAO,SAAS,CAAC;oBAC1D,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAE,CAAC,MAAM,YAAY,CAAC,CAAC;oBAClE,kGAAkG;oBAClG,IAAI,KAAyB,CAAC;oBAC9B,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC5B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBAClD,IAAI,KAAK,EAAE,CAAC;4BAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gCAAE,KAAK,GAAG,SAAS,CAAC;wBAAC,CAAC;6BAClD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC1B,4GAA4G;4BAC5G,2DAA2D;4BAC3D,MAAM,OAAO,GAAG,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,CAAC;4BACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAA8B,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;4BAC/E,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;4BAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;4BACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;4BAC1E,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;4BAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;4BACnC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;wBAC3K,CAAC;6BAAM,CAAC;4BACN,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;4BACtD,IAAI,MAAM;gCAAE,KAAK,GAAG,IAAI,MAAM,CAAC,UAAU,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC;wBACnF,CAAC;wBACD,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;oBAC5B,CAAC;oBACD,OAAO,SAAS,CAAC;gBACnB,CAAC,EAAE,QAAQ,CAAC,KAAK;oBACf,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAmD,CAAC;oBAC5E,MAAM,OAAO,GAAG,CAAC,MAAM,GAAY,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACpF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;oBACzB,IAAI,IAAI,EAAE,CAAC;wBAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;wBAAC,OAAO,qBAAqB,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,aAAa,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,OAAO,EAAE,iBAAiB,CAAC;oBAAC,CAAC;oBAC/J,8HAA8H;oBAC9H,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;wBACvB,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC;wBAClE,OAAO,WAAW,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,eAAe,OAAO,EAAE,cAAc,CAAC;oBACpI,CAAC;oBACD,8GAA8G;oBAC9G,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC1B,OAAO,WAAW,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,WAAW,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,OAAQ,KAAK,CAAC,MAA2B,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,wBAAwB,UAAU,CAAC,KAAK,CAAC,KAAe,CAAC,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC;gBAC7R,CAAC;aACF,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO;gBAChC,0FAA0F;gBAC1F,KAAK,CAAC,IAAI,IAAI,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC9D,SAAS,CAAC,IAAI;oBACZ,MAAM,IAAI,GAAG,wEAAwE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACtG,MAAM,KAAK,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,IAAI,CAAC,KAA6C,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAC9H,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;wBAAE,OAAO,SAAS,CAAC;oBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAA8B,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;oBAC/E,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;oBAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;oBACrC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC5E,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;oBAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;oBACnC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;gBAC5F,CAAC;aACF,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO;gBACpC,KAAK,CAAC,IAAI,IAAI,OAAQ,IAAI,CAAC,KAAK,CAAC,KAA+B,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC1H,SAAS,CAAC,IAAI;oBACZ,IAAI,CAAE,IAAI,CAAC,KAAK,CAAC,KAA+B,CAAC,IAAI;wBAAE,OAAO,SAAS,CAAC;oBACxE,MAAM,KAAK,GAAG,0CAA0C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBACnF,CAAC;gBACD,gGAAgG;gBAChG,QAAQ,CAAC,KAAK,IAAI,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAChF,CAAC,EAAE,CAAC,CAAC;IACN,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACxG,MAAM,KAAK,GAAG,CAAC,IAAmC,EAAE,SAAkB,EAAQ,EAAE;QAC9E,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;gBAAE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU;oBAAE,IAAI,OAAO,IAAI,KAAK;wBAAE,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;YACvJ,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACnC,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY;oBAAE,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC/E,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;oBAAE,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;qBAChM,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC9I,sFAAsF;oBACtF,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACtG,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,SAAS,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,IAAI,GAA2B,EAAE,CAAC;YACxC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBACxB,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC;oBAAE,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;qBACjK,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;oBAAE,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;qBAC7M,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;oBAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;;oBAChI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IACF,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,UAAU;QAAE,YAAY,CAAC,IAAI,CAAC,4DAA4D,IAAI,IAAI,IAAI,SAAS,CAAC,CAAC;IACpI,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,YAAY,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAClG,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC;IAC3C,mHAAmH;IACnH,2FAA2F;IAC3F,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAC5D,MAAM,IAAI,GAAG,UAAU,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qCAAqC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QAC7K,kCAAkC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/I,CAAC,MAAM,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kCAAkC,MAAM,CAAC,eAAe,IAAI,CAAC;QAC1G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,kCAAkC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACtF,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mCAAmC,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QACxI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,eAAe,UAAU,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACpI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,sBAAsB,UAAU,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACzI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+BAA+B,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5F,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/I,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,KAAK,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QACjI,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACtG,QAAQ,EAAE,iCAAiC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,qCAAqC,SAAS,CAAC,QAAQ,CAAC,aAAa,MAAM,eAAe,EAAE,CAAC;AACzV,CAAC"}
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { ComponentHost } from '@nextwebwg/html-next/runtime';
|
|
2
2
|
/**
|
|
3
3
|
* Native controls and storage own interaction; HTML Next owns reactive state and cleanup. The drawer is a
|
|
4
|
-
* native popover
|
|
5
|
-
*
|
|
6
|
-
* document load would.
|
|
4
|
+
* native popover, which opens without this controller. HTMLKit keeps the shell across client navigation, so a
|
|
5
|
+
* followed link here closes the drawer, as a document load would.
|
|
7
6
|
*/
|
|
8
7
|
export default function shell(host: ComponentHost): void;
|
|
9
8
|
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/controllers/shell.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/controllers/shell.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAqBvD"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Native controls and storage own interaction; HTML Next owns reactive state and cleanup. The drawer is a
|
|
3
|
-
* native popover
|
|
4
|
-
*
|
|
5
|
-
* document load would.
|
|
3
|
+
* native popover, which opens without this controller. HTMLKit keeps the shell across client navigation, so a
|
|
4
|
+
* followed link here closes the drawer, as a document load would.
|
|
6
5
|
*/
|
|
7
6
|
export default function shell(host) {
|
|
8
7
|
host.on('connect', () => {
|
|
@@ -10,11 +9,6 @@ export default function shell(host) {
|
|
|
10
9
|
const window = document.defaultView;
|
|
11
10
|
// The plugin's head script chose the theme before first paint.
|
|
12
11
|
host.state.dark = document.documentElement.dataset.theme === 'dark';
|
|
13
|
-
const close = (except) => {
|
|
14
|
-
for (const open of host.root.querySelectorAll('header details[open]'))
|
|
15
|
-
if (!open.contains(except ?? null))
|
|
16
|
-
open.removeAttribute('open');
|
|
17
|
-
};
|
|
18
12
|
const click = (event) => {
|
|
19
13
|
const target = event.target;
|
|
20
14
|
if (!(target instanceof window.Element))
|
|
@@ -28,12 +22,10 @@ export default function shell(host) {
|
|
|
28
22
|
}
|
|
29
23
|
catch { /* Theme still applies for this page. */ }
|
|
30
24
|
}
|
|
31
|
-
|
|
32
|
-
close(link ? undefined : target);
|
|
33
|
-
if (link)
|
|
25
|
+
if (target.closest('a[href]'))
|
|
34
26
|
host.root.querySelector('#documentation-navigation:popover-open')?.hidePopover();
|
|
35
27
|
};
|
|
36
|
-
// The page sits inside the shell, so this sees every click
|
|
28
|
+
// The page sits inside the shell, so this sees every click.
|
|
37
29
|
host.root.addEventListener('click', click);
|
|
38
30
|
return () => host.root.removeEventListener('click', click);
|
|
39
31
|
});
|