marko 6.1.3 → 6.1.5
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/dist/common/accessor.d.ts +5 -0
- package/dist/common/accessor.debug.d.ts +5 -0
- package/dist/common/compat-meta.d.ts +0 -1
- package/dist/common/opt.d.ts +3 -1
- package/dist/common/types.d.ts +1 -1
- package/dist/debug/dom.js +283 -111
- package/dist/debug/dom.mjs +275 -112
- package/dist/debug/html.js +846 -576
- package/dist/debug/html.mjs +844 -577
- package/dist/dom/compat.d.ts +3 -2
- package/dist/dom/control-flow.d.ts +2 -1
- package/dist/dom/load.d.ts +23 -0
- package/dist/dom/queue.d.ts +3 -2
- package/dist/dom/resume.d.ts +10 -8
- package/dist/dom.d.ts +2 -1
- package/dist/dom.js +178 -58
- package/dist/dom.mjs +178 -58
- package/dist/html/assets.d.ts +47 -0
- package/dist/html/compat.d.ts +3 -2
- package/dist/html/serializer.d.ts +14 -9
- package/dist/html/writer.d.ts +34 -15
- package/dist/html.d.ts +1 -0
- package/dist/html.js +439 -268
- package/dist/html.mjs +439 -268
- package/dist/translator/index.d.ts +1 -0
- package/dist/translator/index.js +286 -38
- package/dist/translator/interop/index.d.ts +1 -0
- package/dist/translator/util/marko-config.d.ts +2 -0
- package/dist/translator/util/runtime.d.ts +1 -0
- package/dist/translator/util/tag-name-type.d.ts +2 -0
- package/dist/translator/util/walks.d.ts +1 -1
- package/dist/translator/visitors/import-declaration.d.ts +10 -1
- package/dist/translator/visitors/tag/custom-tag.d.ts +7 -0
- package/package.json +2 -2
package/dist/dom/compat.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RendererProp } from "../common/types";
|
|
1
|
+
import { RendererProp, type Scope } from "../common/types";
|
|
2
2
|
import { patchDynamicTag } from "./control-flow";
|
|
3
3
|
import { queueEffect } from "./queue";
|
|
4
4
|
import { type Renderer } from "./renderer";
|
|
@@ -6,7 +6,8 @@ export declare const compat: {
|
|
|
6
6
|
patchDynamicTag: typeof patchDynamicTag;
|
|
7
7
|
queueEffect: typeof queueEffect;
|
|
8
8
|
init(warp10Noop: any): void;
|
|
9
|
-
|
|
9
|
+
getScope($global: Record<string, unknown>, scopeId: unknown): Scope | undefined;
|
|
10
|
+
setRendererId(renderer: any, id: unknown): void;
|
|
10
11
|
isRenderer(renderer: any): any;
|
|
11
12
|
getStartNode(branch: any): any;
|
|
12
13
|
setScopeNodes(branch: any, startNode: Node, endNode: Node): void;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { type Accessor, AccessorProp, type BranchScope, type EncodedAccessor, type Scope } from "../common/types";
|
|
1
|
+
import { type Accessor, AccessorProp, type AwaitCounter, type BranchScope, type EncodedAccessor, type Scope } from "../common/types";
|
|
2
2
|
import { type Renderer, type SetupFn } from "./renderer";
|
|
3
3
|
import { type Signal } from "./signals";
|
|
4
4
|
export declare function _await_promise(nodeAccessor: EncodedAccessor, params?: Signal<unknown>): (scope: Scope, promise: Promise<unknown>) => void;
|
|
5
5
|
export declare function _await_content(nodeAccessor: EncodedAccessor, template?: string | 0, walks?: string | 0, setup?: SetupFn | 0): (scope: Scope) => void;
|
|
6
|
+
export declare function addAwaitCounter(scope: Scope, tryBranch?: BranchScope | undefined): AwaitCounter | undefined;
|
|
6
7
|
export declare function _try(nodeAccessor: EncodedAccessor, template?: string | 0, walks?: string | 0, setup?: SetupFn | 0): (scope: Scope, input: {
|
|
7
8
|
catch: unknown;
|
|
8
9
|
placeholder: unknown;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type EncodedAccessor, type Scope, type Template } from "../common/types";
|
|
2
|
+
import { type Renderer, type SetupFn } from "./renderer";
|
|
3
|
+
import type { Signal } from "./signals";
|
|
4
|
+
interface LoadModule {
|
|
5
|
+
_: [template: string, walks: string, setup: SetupFn];
|
|
6
|
+
}
|
|
7
|
+
interface LoadSignal {
|
|
8
|
+
_: Signal;
|
|
9
|
+
}
|
|
10
|
+
export interface LoadTrigger {
|
|
11
|
+
<T>(load: () => Promise<T>): () => Promise<T>;
|
|
12
|
+
}
|
|
13
|
+
export declare function _load_template(id: string, load: () => Promise<Renderer>): Template & Renderer;
|
|
14
|
+
export declare function _load_setup(nodeAccessor: EncodedAccessor, childScopeAccessor: EncodedAccessor, load: () => Promise<LoadModule>): (owner: Scope) => void;
|
|
15
|
+
export declare function _load_signal(load: () => Promise<LoadSignal>): Signal;
|
|
16
|
+
export declare function _load_visible_trigger(selector: string, options?: IntersectionObserverInit): LoadTrigger;
|
|
17
|
+
export declare function _load_idle_trigger(options?: {
|
|
18
|
+
timeout?: number;
|
|
19
|
+
}): LoadTrigger;
|
|
20
|
+
export declare function _load_event_trigger(event: string, selector: string): LoadTrigger;
|
|
21
|
+
export declare function _load_media_trigger(query: string): LoadTrigger;
|
|
22
|
+
export declare function _load_race_trigger(...triggers: LoadTrigger[]): LoadTrigger;
|
|
23
|
+
export {};
|
package/dist/dom/queue.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ type ExecFn<S extends Scope = Scope> = (scope: S, arg?: any) => void;
|
|
|
4
4
|
export type PendingRender = {
|
|
5
5
|
[PendingRenderProp.Key]: number;
|
|
6
6
|
[PendingRenderProp.Scope]: Scope;
|
|
7
|
-
[PendingRenderProp.Signal]: Signal<any>;
|
|
7
|
+
[PendingRenderProp.Signal]: Signal<any, any>;
|
|
8
8
|
[PendingRenderProp.Value]: unknown;
|
|
9
9
|
};
|
|
10
10
|
export declare const caughtError: WeakSet<unknown[]>;
|
|
@@ -12,10 +12,11 @@ export declare const placeholderShown: WeakSet<unknown[]>;
|
|
|
12
12
|
export declare let pendingEffects: unknown[];
|
|
13
13
|
export declare let pendingScopes: Scope[];
|
|
14
14
|
export declare let rendering: undefined | 0 | 1;
|
|
15
|
-
export declare function queueRender<T>(scope:
|
|
15
|
+
export declare function queueRender<T, U extends Scope = Scope>(scope: U, signal: Signal<T, U>, signalKey: number, value?: T, scopeKey?: number): void;
|
|
16
16
|
export declare function queuePendingRender(render: PendingRender): void;
|
|
17
17
|
export declare function queueEffect<S extends Scope, T extends ExecFn<S>>(scope: S, fn: T): void;
|
|
18
18
|
export declare function run(): void;
|
|
19
|
+
export declare function queueAsyncRender<T, U extends Scope = Scope>(scope: U, signal: Signal<T, U>, value?: T): void;
|
|
19
20
|
export declare function prepareEffects(fn: () => void): unknown[];
|
|
20
21
|
export declare let runEffects: (effects: unknown[], checkPending?: boolean | 1) => void;
|
|
21
22
|
export declare function skipDestroyedRenders(): void;
|
package/dist/dom/resume.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { type AwaitCounter, type EncodedAccessor, type Scope } from "../common/types";
|
|
2
2
|
import { type Signal } from "./signals";
|
|
3
|
-
type
|
|
4
|
-
type
|
|
3
|
+
type ResumeFn = (ctx: SerializeContext) => unknown;
|
|
4
|
+
type ResumeData = (string | number | (string | number)[] | ResumeFn)[];
|
|
5
|
+
interface SerializeContext {
|
|
6
|
+
(data: number | (Scope | number)[], registryId?: string): unknown;
|
|
7
|
+
_: Record<string, unknown>;
|
|
8
|
+
}
|
|
5
9
|
export interface Renders {
|
|
6
10
|
(renderId: string): RenderData;
|
|
7
11
|
[renderId: string]: RenderData;
|
|
@@ -9,12 +13,10 @@ export interface Renders {
|
|
|
9
13
|
export interface RenderData {
|
|
10
14
|
i: string;
|
|
11
15
|
v: Comment[];
|
|
12
|
-
r?:
|
|
13
|
-
s?: Record<string, Scope>;
|
|
16
|
+
r?: ResumeData;
|
|
14
17
|
w(): void;
|
|
15
|
-
m?(): unknown[];
|
|
16
|
-
|
|
17
|
-
b?: 0 | Record<string, 1 | 0>;
|
|
18
|
+
m?(effects: unknown[]): unknown[];
|
|
19
|
+
b?: Record<string, ResumeData>;
|
|
18
20
|
d: never;
|
|
19
21
|
l: never;
|
|
20
22
|
x: never;
|
|
@@ -22,7 +24,7 @@ export interface RenderData {
|
|
|
22
24
|
p?: Record<string | number, AwaitCounter>;
|
|
23
25
|
}
|
|
24
26
|
export declare function enableBranches(): void;
|
|
25
|
-
export declare
|
|
27
|
+
export declare function ready(readyId: string, runtimeId?: string): void;
|
|
26
28
|
export declare function initEmbedded(readyId: string, runtimeId?: string): void;
|
|
27
29
|
export declare function init(runtimeId?: string): void;
|
|
28
30
|
export declare let isResuming: undefined | 0 | 1;
|
package/dist/dom.d.ts
CHANGED
|
@@ -8,8 +8,9 @@ export { _await_content, _await_promise, _dynamic_tag, _for_in, _for_of, _for_to
|
|
|
8
8
|
export { _attr_details_or_dialog_open as _attr_details_open, _attr_details_or_dialog_open_default as _attr_details_open_default, _attr_details_or_dialog_open_script as _attr_details_open_script, _attr_details_or_dialog_open as _attr_dialog_open, _attr_details_or_dialog_open_default as _attr_dialog_open_default, _attr_details_or_dialog_open_script as _attr_dialog_open_script, _attr_input_checked, _attr_input_checked_default, _attr_input_checked_script, _attr_input_checkedValue, _attr_input_checkedValue_default, _attr_input_checkedValue_script, _attr_input_value, _attr_input_value_default, _attr_input_value_script, _attr_select_value, _attr_select_value_default, _attr_select_value_script, _attr_input_value as _attr_textarea_value, _attr_input_value_default as _attr_textarea_value_default, _attr_input_value_script as _attr_textarea_value_script, } from "./dom/controllable";
|
|
9
9
|
export { _attr, _attr_class, _attr_class_item, _attr_class_items, _attr_content, _attr_nonce, _attr_style, _attr_style_item, _attr_style_items, _attrs, _attrs_content, _attrs_partial, _attrs_partial_content, _attrs_script, _html, _lifecycle, _text, _text_content, _to_text, } from "./dom/dom";
|
|
10
10
|
export { _on } from "./dom/event";
|
|
11
|
+
export { _load_event_trigger, _load_idle_trigger, _load_media_trigger, _load_race_trigger, _load_setup, _load_signal, _load_template, _load_visible_trigger, } from "./dom/load";
|
|
11
12
|
export { _enable_catch, run } from "./dom/queue";
|
|
12
13
|
export { _content, _content_closures, _content_resume } from "./dom/renderer";
|
|
13
|
-
export { _el, _resume, _var_resume, init, initEmbedded } from "./dom/resume";
|
|
14
|
+
export { _el, _resume, _var_resume, init, initEmbedded, ready, } from "./dom/resume";
|
|
14
15
|
export { _child_setup, _closure, _closure_get, _const, _el_read, _for_closure, _hoist, _hoist_resume, _id, _if_closure, _let, _let_change, _or, _return, _return_change, _script, _var, _var_change, } from "./dom/signals";
|
|
15
16
|
export { _template } from "./dom/template";
|
package/dist/dom.js
CHANGED
|
@@ -20,10 +20,7 @@ let empty = [], rest = Symbol(), toDelimitedString = function toDelimitedString(
|
|
|
20
20
|
for (value = 10 * currentMultiplier + value - 107; value--;) walker.parentNode();
|
|
21
21
|
walker.nextSibling();
|
|
22
22
|
} else storedMultiplier = currentMultiplier * 10 + value - 117;
|
|
23
|
-
}, cloneCache = {}, registeredValues = {},
|
|
24
|
-
let cb = readyLookup[id];
|
|
25
|
-
readyLookup[id] = 1, cb?.();
|
|
26
|
-
})(readyLookup = {}), isResuming, inputType = "", controllableDelegate = /* @__PURE__ */ createDelegator(), _dynamic_tag = function(nodeAccessor, getContent, getTagVar, inputIsArgs) {
|
|
23
|
+
}, cloneCache = {}, registeredValues = {}, curRenders, branchesEnabled, embedRenders, readyIds, isResuming, inputType = "", controllableDelegate = /* @__PURE__ */ createDelegator(), _dynamic_tag = function(nodeAccessor, getContent, getTagVar, inputIsArgs) {
|
|
27
24
|
nodeAccessor = decodeAccessor(nodeAccessor);
|
|
28
25
|
let childScopeAccessor = "A" + nodeAccessor, rendererAccessor = "D" + nodeAccessor;
|
|
29
26
|
return enableBranches(), (scope, newRenderer, getInput) => {
|
|
@@ -54,16 +51,22 @@ let empty = [], rest = Symbol(), toDelimitedString = function toDelimitedString(
|
|
|
54
51
|
typeof by == "string" ? forOf(all, (item, i) => cb(item[by], [item, i])) : forOf(all, (item, i) => cb(by(item, i), [item, i]));
|
|
55
52
|
}), _for_in = /* @__PURE__ */ loop(([obj, by = byFirstArg], cb) => forIn(obj, (key, value) => cb(by(key, value), [key, value]))), _for_to = /* @__PURE__ */ loop(([to, from, step, by = byFirstArg], cb) => forTo(to, from, step, (v) => cb(by(v), [v]))), _for_until = /* @__PURE__ */ loop(([until, from, step, by = byFirstArg], cb) => forUntil(until, from, step, (v) => cb(by(v), [v]))), pendingRenders = [], pendingRendersLookup = {}, asyncRendersLookup, caughtError = /* @__PURE__ */ new WeakSet(), placeholderShown = /* @__PURE__ */ new WeakSet(), pendingEffects = [], pendingScopes = [], rendering, runEffects = ((effects) => {
|
|
56
53
|
for (let i = 0; i < effects.length;) effects[i++](effects[i++]);
|
|
57
|
-
}), runRender = (render) => render.c(render.b, render.d), catchEnabled, classIdToBranch = /* @__PURE__ */ new Map(),
|
|
54
|
+
}), runRender = (render) => render.c(render.b, render.d), catchEnabled, classIdToBranch = /* @__PURE__ */ new Map(), scopesByRender = /* @__PURE__ */ new WeakMap(), getRenderScopes = ($global) => {
|
|
55
|
+
let render = self[$global.runtimeId]?.[$global.renderId], scopes = render && scopesByRender.get(render);
|
|
56
|
+
return render && !scopes && scopesByRender.set(render, scopes = {}), scopes;
|
|
57
|
+
}, compat = {
|
|
58
58
|
patchDynamicTag,
|
|
59
59
|
queueEffect,
|
|
60
60
|
init(warp10Noop) {
|
|
61
|
-
_resume("$C_s", (
|
|
62
|
-
classIdToBranch.set(
|
|
61
|
+
_resume("$C_s", (scope) => {
|
|
62
|
+
getRenderScopes(scope.$)[scope.L] = scope, scope.m5c && classIdToBranch.set(scope.m5c, scope);
|
|
63
63
|
}), _resume("$C_b", warp10Noop);
|
|
64
64
|
},
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
getScope($global, scopeId) {
|
|
66
|
+
return getRenderScopes($global)?.[scopeId];
|
|
67
|
+
},
|
|
68
|
+
setRendererId(renderer, id) {
|
|
69
|
+
renderer.a = id;
|
|
67
70
|
},
|
|
68
71
|
isRenderer(renderer) {
|
|
69
72
|
return renderer.b;
|
|
@@ -81,7 +84,7 @@ let empty = [], rest = Symbol(), toDelimitedString = function toDelimitedString(
|
|
|
81
84
|
this.scope && destroyBranch(this.scope);
|
|
82
85
|
},
|
|
83
86
|
resolveRegistered(value, $global) {
|
|
84
|
-
return Array.isArray(value) && typeof value[0] == "string" ? getRegisteredWithScope(value[0],
|
|
87
|
+
return Array.isArray(value) && typeof value[0] == "string" ? getRegisteredWithScope(value[0], getRenderScopes($global)?.[value[1]]) : value;
|
|
85
88
|
},
|
|
86
89
|
createRenderer(params, clone) {
|
|
87
90
|
let renderer = _content("", 0, 0, 0, params)();
|
|
@@ -412,27 +415,35 @@ function createCloneableHTML(html, ns) {
|
|
|
412
415
|
function enableBranches() {
|
|
413
416
|
branchesEnabled || (branchesEnabled = 1, skipDestroyedRenders());
|
|
414
417
|
}
|
|
418
|
+
function ready(readyId, runtimeId) {
|
|
419
|
+
(readyIds ||= /* @__PURE__ */ new Set()).add(readyId), init(runtimeId);
|
|
420
|
+
for (let renderId in curRenders) runResumeEffects(curRenders[renderId]);
|
|
421
|
+
}
|
|
415
422
|
function initEmbedded(readyId, runtimeId) {
|
|
416
|
-
|
|
417
|
-
let
|
|
418
|
-
|
|
419
|
-
let
|
|
420
|
-
if (n && !n.isConnected) {
|
|
421
|
-
delete renders[renderId];
|
|
422
|
-
for (let id in s) destroyScope(s[id]);
|
|
423
|
-
}
|
|
423
|
+
embedRenders || (embedRenders = /* @__PURE__ */ new Map(), new MutationObserver(() => {
|
|
424
|
+
for (let [anchor, [renderId, scopes]] of embedRenders) if (!anchor.isConnected) {
|
|
425
|
+
embedRenders.delete(anchor), delete curRenders[renderId];
|
|
426
|
+
for (let id in scopes) destroyScope(scopes[id]);
|
|
424
427
|
}
|
|
425
|
-
}).observe(document
|
|
428
|
+
}).observe(document, {
|
|
426
429
|
childList: !0,
|
|
427
430
|
subtree: !0
|
|
428
|
-
});
|
|
431
|
+
})), ready(readyId, runtimeId);
|
|
429
432
|
}
|
|
430
433
|
function init(runtimeId = "M") {
|
|
431
|
-
if (
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
434
|
+
if (curRenders) return;
|
|
435
|
+
let renders = self[runtimeId], defineRuntime = (desc) => Object.defineProperty(self, runtimeId, desc), initRuntime = (renders) => {
|
|
436
|
+
defineRuntime({ value: curRenders = ((renderId) => {
|
|
437
|
+
let render = curRenders[renderId] = renders[renderId] || renders(renderId), walk = render.w, scopeLookup = {}, getScope = (id) => scopeLookup[id] || initScope(scopeLookup[id] = { L: +id }), initGlobal = () => $global ||= {
|
|
438
|
+
runtimeId,
|
|
439
|
+
renderId
|
|
440
|
+
}, initScope = (scope) => (scope.$ = initGlobal(), branchesEnabled && scope.G && (scope.F = getScope(scope.G)), scope), applyScopes = (partials) => {
|
|
441
|
+
let scopeId = partials[0];
|
|
442
|
+
for (let i = 1; i < partials.length; i++) {
|
|
443
|
+
let partial = partials[i];
|
|
444
|
+
typeof partial == "number" ? scopeId += partial : (scopeId ? initScope(Object.assign(scopeLookup[scopeId] ||= (partial.L = scopeId, partial), partial)) : Object.assign(initGlobal(), partial), scopeId++);
|
|
445
|
+
}
|
|
446
|
+
}, serializeContext = ((data, registryId) => typeof data == "number" ? registryId ? registeredValues[registryId](getScope(data)) : getScope(data) : applyScopes(data)), createVisitBranches = (branchScopesStack = [], branchStarts = [], orphanBranches = [], curBranchScopes) => (branchId, branch, endedBranches, accessor, singleNode, parent = visit.parentNode, startVisit = visit, i = orphanBranches.length) => {
|
|
436
447
|
for (visitType !== "[" && (visitScope[nextToken()] = visitType === ")" || visitType === "}" ? parent : visit, accessor = "A" + lastToken, singleNode = visitType !== "]" && visitType !== ")", nextToken()); branchId = +lastToken;) {
|
|
437
448
|
if ((endedBranches ||= []).push(branch = getScope(branchId)), setParentBranch(branch, branch.F), (branch.O = render.p?.[branchId]) && (branch.O.m = render.m), singleNode) {
|
|
438
449
|
for (; startVisit.previousSibling && ~visits.indexOf(startVisit = startVisit.previousSibling););
|
|
@@ -441,22 +452,40 @@ function init(runtimeId = "M") {
|
|
|
441
452
|
for (; i && orphanBranches[--i].L > branchId;) setParentBranch(orphanBranches.pop(), branch);
|
|
442
453
|
nextToken();
|
|
443
454
|
}
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
455
|
+
if (endedBranches) {
|
|
456
|
+
for (let ended of endedBranches) orphanBranches.push(ended);
|
|
457
|
+
singleNode && (visitScope[accessor] = endedBranches.length > 1 ? endedBranches.reverse() : endedBranches[0]);
|
|
458
|
+
}
|
|
459
|
+
visitType === "[" && (endedBranches || (branchScopesStack.push(curBranchScopes), curBranchScopes = void 0), branchStarts.push(visit));
|
|
460
|
+
}, nextToken = () => lastToken = visitText.slice(lastTokenIndex, (lastTokenIndex = visitText.indexOf(" ", lastTokenIndex) + 1 || visitText.length + 1) - 1), processResumes = (resumes = [], effects) => {
|
|
461
|
+
let i = 0;
|
|
462
|
+
for (; i < resumes.length; i++) {
|
|
463
|
+
let serialized = resumes[i];
|
|
464
|
+
if (typeof serialized == "string") for (lastTokenIndex = 0, visitText = serialized; nextToken();) /\D/.test(lastToken) ? lastEffect = registeredValues[lastToken] : effects.push(lastEffect, getScope(lastToken));
|
|
465
|
+
else if (Array.isArray(serialized)) {
|
|
466
|
+
if (!(readyIds && serialized.every((dep) => readyIds.has(dep) && !render.b[dep].length))) break;
|
|
467
|
+
} else if (readyIds && typeof serialized == "number") break;
|
|
468
|
+
else {
|
|
469
|
+
let scopes = serialized(serializeContext);
|
|
470
|
+
Array.isArray(scopes) && applyScopes(scopes);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
return resumes.splice(0, i), i;
|
|
474
|
+
}, $global, lastEffect, visits, visit, visitText, visitType, visitScope, lastToken, lastTokenIndex, visitBranches, embedAnchor;
|
|
475
|
+
return serializeContext._ = registeredValues, render.m = (effects) => {
|
|
476
|
+
if (processResumes(render.r, effects), readyIds && render.b) for (let progress = 1; progress;) {
|
|
477
|
+
progress = 0;
|
|
478
|
+
for (let readyId of readyIds) {
|
|
479
|
+
let resumes = render.b[readyId];
|
|
480
|
+
resumes && processResumes(resumes, effects) && (progress = 1);
|
|
481
|
+
}
|
|
452
482
|
}
|
|
453
|
-
|
|
454
|
-
else for (let scope of serialized(serializeContext)) $global ? typeof scope == "number" ? lastScopeId += scope : (scopeLookup[scope.L = ++lastScopeId] = scope, scope.$ = $global, branchesEnabled && (scope.F = getScope(scope.G))) : ($global = scope || {}, $global.runtimeId = runtimeId, $global.renderId = renderId);
|
|
483
|
+
let retained = 0;
|
|
455
484
|
for (visit of visits = render.v) if (lastTokenIndex = render.i.length, visitText = visit.data, visitType = visitText[lastTokenIndex++], visitScope = getScope(nextToken()), visitType === "*") {
|
|
456
485
|
let prev = visit.previousSibling;
|
|
457
486
|
visitScope[nextToken()] = prev && (prev.nodeType < 8 || prev.data) ? prev : visit.parentNode.insertBefore(new Text(), visit);
|
|
458
|
-
} else branchesEnabled
|
|
459
|
-
return
|
|
487
|
+
} else branchesEnabled ? (visitBranches ||= createVisitBranches())() : render.b && (visits[retained++] = visit);
|
|
488
|
+
return embedRenders && !embedAnchor && visit && embedRenders.set(embedAnchor = visit.parentNode.insertBefore(new Text(), visit.nextSibling), [renderId, scopeLookup]), visits.length = retained, effects;
|
|
460
489
|
}, render.w = () => {
|
|
461
490
|
walk(), runResumeEffects(render);
|
|
462
491
|
}, render;
|
|
@@ -464,7 +493,7 @@ function init(runtimeId = "M") {
|
|
|
464
493
|
};
|
|
465
494
|
if (renders) {
|
|
466
495
|
initRuntime(renders);
|
|
467
|
-
for (let renderId in renders) runResumeEffects(
|
|
496
|
+
for (let renderId in renders) runResumeEffects(curRenders(renderId));
|
|
468
497
|
} else defineRuntime({
|
|
469
498
|
configurable: !0,
|
|
470
499
|
set: initRuntime
|
|
@@ -472,7 +501,7 @@ function init(runtimeId = "M") {
|
|
|
472
501
|
}
|
|
473
502
|
function runResumeEffects(render) {
|
|
474
503
|
try {
|
|
475
|
-
isResuming = 1, runEffects(render.m(), 1);
|
|
504
|
+
isResuming = 1, runEffects(render.m([]), 1);
|
|
476
505
|
} finally {
|
|
477
506
|
isResuming = 0;
|
|
478
507
|
}
|
|
@@ -830,32 +859,24 @@ function _await_promise(nodeAccessor, params) {
|
|
|
830
859
|
nodeAccessor = decodeAccessor(nodeAccessor);
|
|
831
860
|
let promiseAccessor = "L" + nodeAccessor, branchAccessor = "A" + nodeAccessor;
|
|
832
861
|
return _enable_catch(), (scope, promise) => {
|
|
833
|
-
let awaitBranch = scope[branchAccessor],
|
|
834
|
-
awaitCounter?.i || (awaitCounter = tryBranch.O = {
|
|
862
|
+
let awaitBranch = scope[branchAccessor], tryPlaceholder = findBranchWithKey(scope, "Q"), tryBranch = tryPlaceholder || awaitBranch, awaitCounter = tryBranch.O;
|
|
863
|
+
placeholderShown.add(pendingEffects), tryPlaceholder ? scope[promiseAccessor] || (awaitBranch && (awaitBranch.W ||= []), awaitCounter = addAwaitCounter(scope, tryPlaceholder)) : (awaitCounter?.i || (awaitCounter = tryBranch.O = {
|
|
835
864
|
i: 0,
|
|
836
865
|
c() {
|
|
837
866
|
if (--awaitCounter.i) return 1;
|
|
838
|
-
|
|
839
|
-
else {
|
|
840
|
-
let placeholderBranch = tryBranch.P;
|
|
841
|
-
placeholderBranch && (tryBranch.P = 0, placeholderBranch.S.parentNode.insertBefore(tryBranch.S.parentNode, placeholderBranch.S), removeAndDestroyBranch(placeholderBranch));
|
|
842
|
-
}
|
|
843
|
-
queueEffect(tryBranch, (scope) => {
|
|
844
|
-
let pendingEffects = scope.J;
|
|
845
|
-
pendingEffects && (scope.J = [], runEffects(pendingEffects, 1));
|
|
846
|
-
});
|
|
867
|
+
tryBranch === scope[branchAccessor] ? scope[nodeAccessor].parentNode && scope[nodeAccessor].replaceWith(scope[branchAccessor].S.parentNode) : dismissPlaceholder(tryBranch), queueEffect(tryBranch, runPendingEffects);
|
|
847
868
|
}
|
|
848
|
-
}),
|
|
849
|
-
|
|
850
|
-
}, -1)))));
|
|
869
|
+
}), scope[promiseAccessor] || (awaitBranch && (awaitBranch.W ||= []), awaitCounter.i++ || requestAnimationFrame(() => awaitCounter.i && runEffects(prepareEffects(() => queueRender(scope, () => {
|
|
870
|
+
awaitBranch.V || (awaitBranch.S.parentNode.insertBefore(scope[nodeAccessor], awaitBranch.S), tempDetachBranch(tryBranch));
|
|
871
|
+
}, -1))))));
|
|
851
872
|
let thisPromise = scope[promiseAccessor] = promise.then((data) => {
|
|
852
873
|
if (thisPromise === scope[promiseAccessor]) {
|
|
853
874
|
let referenceNode = scope[nodeAccessor];
|
|
854
|
-
scope[promiseAccessor] = 0,
|
|
875
|
+
scope[promiseAccessor] = 0, queueAsyncRender(scope, () => {
|
|
855
876
|
(awaitBranch = scope[branchAccessor]).V && (pendingScopes.push(awaitBranch), setupBranch(awaitBranch.V, awaitBranch), awaitBranch.V = 0, insertBranchBefore(awaitBranch, scope[nodeAccessor].parentNode, scope[nodeAccessor]), referenceNode.remove()), params?.(awaitBranch, [data]);
|
|
856
877
|
let pendingRenders = awaitBranch.W;
|
|
857
878
|
if (awaitBranch.W = 0, pendingRenders?.forEach(queuePendingRender), placeholderShown.add(pendingEffects), awaitCounter.c(), awaitCounter.m) {
|
|
858
|
-
let fnScopes = /* @__PURE__ */ new Map(), effects = awaitCounter.m();
|
|
879
|
+
let fnScopes = /* @__PURE__ */ new Map(), effects = awaitCounter.m([]);
|
|
859
880
|
for (let i = 0; i < pendingEffects.length;) {
|
|
860
881
|
let fn = pendingEffects[i++], scopes = fnScopes.get(fn);
|
|
861
882
|
scopes || fnScopes.set(fn, scopes = /* @__PURE__ */ new Set()), scopes.add(pendingEffects[i++]);
|
|
@@ -865,10 +886,10 @@ function _await_promise(nodeAccessor, params) {
|
|
|
865
886
|
fnScopes.get(fn)?.has(scope) || queueEffect(scope, fn);
|
|
866
887
|
}
|
|
867
888
|
}
|
|
868
|
-
}
|
|
889
|
+
});
|
|
869
890
|
}
|
|
870
891
|
}, (error) => {
|
|
871
|
-
thisPromise === scope[promiseAccessor] && (awaitCounter.i = scope[promiseAccessor] = 0,
|
|
892
|
+
thisPromise === scope[promiseAccessor] && (awaitCounter.i = scope[promiseAccessor] = 0, queueAsyncRender(scope, renderCatch, error));
|
|
872
893
|
});
|
|
873
894
|
};
|
|
874
895
|
}
|
|
@@ -879,6 +900,27 @@ function _await_content(nodeAccessor, template, walks, setup) {
|
|
|
879
900
|
(scope[branchAccessor] = createBranch(scope.$, renderer, scope, scope[nodeAccessor].parentNode)).V = renderer, pendingScopes.pop();
|
|
880
901
|
};
|
|
881
902
|
}
|
|
903
|
+
function addAwaitCounter(scope, tryBranch = findBranchWithKey(scope, "Q")) {
|
|
904
|
+
if (!tryBranch) return;
|
|
905
|
+
let awaitCounter = tryBranch.O;
|
|
906
|
+
return awaitCounter?.i || (awaitCounter = tryBranch.O = {
|
|
907
|
+
i: 0,
|
|
908
|
+
c() {
|
|
909
|
+
if (--awaitCounter.i) return 1;
|
|
910
|
+
dismissPlaceholder(tryBranch), queueEffect(tryBranch, runPendingEffects);
|
|
911
|
+
}
|
|
912
|
+
}), placeholderShown.add(pendingEffects), awaitCounter.i++ || requestAnimationFrame(() => awaitCounter.i && runEffects(prepareEffects(() => queueRender(tryBranch, () => {
|
|
913
|
+
insertBranchBefore(tryBranch.P = createAndSetupBranch(tryBranch.$, tryBranch.Q, tryBranch._, tryBranch.S.parentNode), tryBranch.S.parentNode, tryBranch.S), tempDetachBranch(tryBranch);
|
|
914
|
+
}, -1)))), awaitCounter;
|
|
915
|
+
}
|
|
916
|
+
function runPendingEffects(scope) {
|
|
917
|
+
let effects = scope.J;
|
|
918
|
+
effects && (scope.J = [], runEffects(effects, 1));
|
|
919
|
+
}
|
|
920
|
+
function dismissPlaceholder(tryBranch) {
|
|
921
|
+
let placeholderBranch = tryBranch.P;
|
|
922
|
+
placeholderBranch && (tryBranch.P = 0, placeholderBranch.S.parentNode.insertBefore(tryBranch.S.parentNode, placeholderBranch.S), removeAndDestroyBranch(placeholderBranch));
|
|
923
|
+
}
|
|
882
924
|
function _try(nodeAccessor, template, walks, setup) {
|
|
883
925
|
nodeAccessor = decodeAccessor(nodeAccessor);
|
|
884
926
|
let branchAccessor = "A" + nodeAccessor, renderer = _content("", template, walks, setup)();
|
|
@@ -996,6 +1038,9 @@ function run() {
|
|
|
996
1038
|
}
|
|
997
1039
|
runEffects(effects);
|
|
998
1040
|
}
|
|
1041
|
+
function queueAsyncRender(scope, signal, value) {
|
|
1042
|
+
queueRender(scope, signal, -1, value), queueMicrotask(run);
|
|
1043
|
+
}
|
|
999
1044
|
function prepareEffects(fn) {
|
|
1000
1045
|
let prevRenders = pendingRenders, prevEffects = pendingEffects, prevLookup = asyncRendersLookup, preparedEffects = pendingEffects = [];
|
|
1001
1046
|
pendingRenders = [], asyncRendersLookup = pendingRendersLookup, pendingRendersLookup = {};
|
|
@@ -1116,9 +1161,84 @@ function mount(input = {}, reference, position) {
|
|
|
1116
1161
|
}
|
|
1117
1162
|
};
|
|
1118
1163
|
}
|
|
1164
|
+
//#endregion
|
|
1165
|
+
//#region src/dom/load.ts
|
|
1166
|
+
function _load_template(id, load) {
|
|
1167
|
+
_enable_catch();
|
|
1168
|
+
let pending, lazyTemplate = _template(id, 0, 0, (branch) => {
|
|
1169
|
+
let awaitCounter = addAwaitCounter(branch);
|
|
1170
|
+
branch.X ||= /* @__PURE__ */ new Map(), (pending ||= load()).then((renderer) => {
|
|
1171
|
+
Object.assign(lazyTemplate, renderer), queueAsyncRender(branch, (branch) => insertLoaded(renderer, branch, branch.S, awaitCounter));
|
|
1172
|
+
}, loadFailed(branch, awaitCounter));
|
|
1173
|
+
}, _load_signal(() => (pending ||= load()).then((r) => ({ _: r.d }))));
|
|
1174
|
+
return lazyTemplate;
|
|
1175
|
+
}
|
|
1176
|
+
function _load_setup(nodeAccessor, childScopeAccessor, load) {
|
|
1177
|
+
nodeAccessor = decodeAccessor(nodeAccessor), childScopeAccessor = decodeAccessor(childScopeAccessor);
|
|
1178
|
+
let pending, renderer;
|
|
1179
|
+
return _enable_catch(), (owner) => {
|
|
1180
|
+
let child = owner[childScopeAccessor];
|
|
1181
|
+
if (renderer) insertLoaded(renderer, child, owner[nodeAccessor]);
|
|
1182
|
+
else {
|
|
1183
|
+
let awaitCounter = addAwaitCounter(owner);
|
|
1184
|
+
child.X ||= /* @__PURE__ */ new Map(), (pending ||= load()).then((mod) => {
|
|
1185
|
+
renderer = _content("", ...mod._)(), queueAsyncRender(child, (child) => insertLoaded(renderer, child, owner[nodeAccessor], awaitCounter));
|
|
1186
|
+
}, loadFailed(child, awaitCounter));
|
|
1187
|
+
}
|
|
1188
|
+
};
|
|
1189
|
+
}
|
|
1190
|
+
function insertLoaded(renderer, branch, marker, awaitCounter) {
|
|
1191
|
+
let parent = marker.parentNode;
|
|
1192
|
+
branch.H = 1, renderer.b(branch, parent.namespaceURI), setupBranch(renderer, branch), applyLoad(branch, () => {
|
|
1193
|
+
insertBranchBefore(branch, parent, marker), marker.remove(), pendingScopes.push(branch), awaitCounter?.c();
|
|
1194
|
+
});
|
|
1195
|
+
}
|
|
1196
|
+
function loadFailed(scope, awaitCounter) {
|
|
1197
|
+
return (error) => {
|
|
1198
|
+
awaitCounter && (awaitCounter.i = 0), queueAsyncRender(scope, renderCatch, error);
|
|
1199
|
+
};
|
|
1200
|
+
}
|
|
1201
|
+
function applyLoad(scope, insert) {
|
|
1202
|
+
let values = scope.X, remaining;
|
|
1203
|
+
if (scope.X = 0, remaining = values?.size) for (let [promise, entry] of values) promise.then((signal) => {
|
|
1204
|
+
entry.b = signal, --remaining || (scope.H = 1, pendingScopes.push(scope), queueAsyncRender(scope, (scope) => {
|
|
1205
|
+
values.forEach((e) => e.b._(scope, e.a)), insert();
|
|
1206
|
+
}));
|
|
1207
|
+
}, () => 0);
|
|
1208
|
+
else insert();
|
|
1209
|
+
}
|
|
1210
|
+
function _load_signal(load) {
|
|
1211
|
+
let pending, signal;
|
|
1212
|
+
return (scope, value) => {
|
|
1213
|
+
pending ||= load(), scope.X || !("X" in scope) && scope.H ? (scope.X ||= /* @__PURE__ */ new Map()).set(pending, { a: value }) : signal ? signal(scope, value) : pending.then((mod) => queueAsyncRender(scope, signal = mod._, value), () => 0);
|
|
1214
|
+
};
|
|
1215
|
+
}
|
|
1216
|
+
function _load_visible_trigger(selector, options) {
|
|
1217
|
+
let pending, el;
|
|
1218
|
+
return (load) => () => (pending ||= new Promise((resolve) => (el = getSelectorOrResolve(selector, resolve)) && new IntersectionObserver((entries, io) => entries.some((entry) => entry.isIntersecting) && resolve(io.disconnect()), options).observe(el))).then(load);
|
|
1219
|
+
}
|
|
1220
|
+
function _load_idle_trigger(options) {
|
|
1221
|
+
let pending;
|
|
1222
|
+
return (load) => () => (pending ||= new Promise((resolve) => (self.requestIdleCallback || resolve)(resolve, options))).then(load);
|
|
1223
|
+
}
|
|
1224
|
+
function _load_event_trigger(event, selector) {
|
|
1225
|
+
let pending;
|
|
1226
|
+
return (load) => () => (pending ||= new Promise((resolve) => getSelectorOrResolve(selector, resolve)?.addEventListener(event, resolve, { once: !0 }))).then(load);
|
|
1227
|
+
}
|
|
1228
|
+
function _load_media_trigger(query) {
|
|
1229
|
+
let pending, mql;
|
|
1230
|
+
return (load) => () => (pending ||= new Promise((resolve) => (mql = matchMedia(query)).matches ? resolve() : mql.addEventListener("change", resolve, { once: !0 }))).then(load);
|
|
1231
|
+
}
|
|
1232
|
+
function _load_race_trigger(...triggers) {
|
|
1233
|
+
let noop = () => Promise.resolve(), pending;
|
|
1234
|
+
return (load) => () => (pending ||= Promise.race(triggers.map((t) => t(noop)()))).then(load);
|
|
1235
|
+
}
|
|
1236
|
+
function getSelectorOrResolve(selector, resolve) {
|
|
1237
|
+
return document.querySelector(selector) || resolve();
|
|
1238
|
+
}
|
|
1119
1239
|
exports.$signal = $signal, exports.$signalReset = $signalReset, exports._assert_hoist = _assert_hoist, exports._assert_init = _assert_init, exports._attr = _attr, exports._attr_class = _attr_class, exports._attr_class_item = _attr_class_item, exports._attr_class_items = _attr_class_items, exports._attr_content = _attr_content, exports._attr_details_open = _attr_details_or_dialog_open, exports._attr_dialog_open = _attr_details_or_dialog_open, exports._attr_details_open_default = _attr_details_or_dialog_open_default, exports._attr_dialog_open_default = _attr_details_or_dialog_open_default, exports._attr_details_open_script = _attr_details_or_dialog_open_script, exports._attr_dialog_open_script = _attr_details_or_dialog_open_script, exports._attr_input_checked = _attr_input_checked, exports._attr_input_checkedValue = _attr_input_checkedValue, exports._attr_input_checkedValue_default = _attr_input_checkedValue_default, exports._attr_input_checkedValue_script = _attr_input_checkedValue_script, exports._attr_input_checked_default = _attr_input_checked_default, exports._attr_input_checked_script = _attr_input_checked_script, exports._attr_input_value = _attr_input_value, exports._attr_textarea_value = _attr_input_value, exports._attr_input_value_default = _attr_input_value_default, exports._attr_textarea_value_default = _attr_input_value_default, exports._attr_input_value_script = _attr_input_value_script, exports._attr_textarea_value_script = _attr_input_value_script, exports._attr_nonce = _attr_nonce, exports._attr_select_value = _attr_select_value, exports._attr_select_value_default = _attr_select_value_default, exports._attr_select_value_script = _attr_select_value_script, exports._attr_style = _attr_style, exports._attr_style_item = _attr_style_item, exports._attr_style_items = _attr_style_items, exports._attrs = _attrs, exports._attrs_content = _attrs_content, exports._attrs_partial = _attrs_partial, exports._attrs_partial_content = _attrs_partial_content, exports._attrs_script = _attrs_script, exports._await_content = _await_content, exports._await_promise = _await_promise, exports._call = _call, exports._child_setup = _child_setup, exports._closure = _closure, exports._closure_get = _closure_get, exports._const = _const, exports._content = _content, exports._content_closures = _content_closures, exports._content_resume = _content_resume, Object.defineProperty(exports, "_dynamic_tag", {
|
|
1120
1240
|
enumerable: !0,
|
|
1121
1241
|
get: function() {
|
|
1122
1242
|
return _dynamic_tag;
|
|
1123
1243
|
}
|
|
1124
|
-
}), exports._el = _el, exports._el_read = _el_read, exports._enable_catch = _enable_catch, exports._for_closure = _for_closure, exports._for_in = _for_in, exports._for_of = _for_of, exports._for_to = _for_to, exports._for_until = _for_until, exports._hoist = _hoist, exports._hoist_resume = _hoist_resume, exports._html = _html, exports._id = _id, exports._if = _if, exports._if_closure = _if_closure, exports._let = _let, exports._let_change = _let_change, exports._lifecycle = _lifecycle, exports._on = _on, exports._or = _or, exports._resume = _resume, exports._resume_dynamic_tag = _resume_dynamic_tag, exports._return = _return, exports._return_change = _return_change, exports._script = _script, exports._template = _template, exports._text = _text, exports._text_content = _text_content, exports._to_text = _to_text, exports._try = _try, exports._var = _var, exports._var_change = _var_change, exports._var_resume = _var_resume, exports.attrTag = attrTag, exports.attrTags = attrTags, exports.compat = compat, exports.forIn = forIn, exports.forOf = forOf, exports.forTo = forTo, exports.forUntil = forUntil, exports.init = init, exports.initEmbedded = initEmbedded, exports.run = run;
|
|
1244
|
+
}), exports._el = _el, exports._el_read = _el_read, exports._enable_catch = _enable_catch, exports._for_closure = _for_closure, exports._for_in = _for_in, exports._for_of = _for_of, exports._for_to = _for_to, exports._for_until = _for_until, exports._hoist = _hoist, exports._hoist_resume = _hoist_resume, exports._html = _html, exports._id = _id, exports._if = _if, exports._if_closure = _if_closure, exports._let = _let, exports._let_change = _let_change, exports._lifecycle = _lifecycle, exports._load_event_trigger = _load_event_trigger, exports._load_idle_trigger = _load_idle_trigger, exports._load_media_trigger = _load_media_trigger, exports._load_race_trigger = _load_race_trigger, exports._load_setup = _load_setup, exports._load_signal = _load_signal, exports._load_template = _load_template, exports._load_visible_trigger = _load_visible_trigger, exports._on = _on, exports._or = _or, exports._resume = _resume, exports._resume_dynamic_tag = _resume_dynamic_tag, exports._return = _return, exports._return_change = _return_change, exports._script = _script, exports._template = _template, exports._text = _text, exports._text_content = _text_content, exports._to_text = _to_text, exports._try = _try, exports._var = _var, exports._var_change = _var_change, exports._var_resume = _var_resume, exports.attrTag = attrTag, exports.attrTags = attrTags, exports.compat = compat, exports.forIn = forIn, exports.forOf = forOf, exports.forTo = forTo, exports.forUntil = forUntil, exports.init = init, exports.initEmbedded = initEmbedded, exports.ready = ready, exports.run = run;
|