@openelement/core 0.41.0-alpha.2 → 0.41.0-alpha.4
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/package.json +3 -3
- package/src/client-runtime.d.ts +17 -0
- package/src/client-runtime.js +156 -0
- package/src/event-marker.js +3 -1
- package/src/hydrate.d.ts +2 -0
- package/src/hydrate.js +3 -1
- package/src/hydration-scope.js +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openelement/core",
|
|
3
|
-
"version": "0.41.0-alpha.
|
|
3
|
+
"version": "0.41.0-alpha.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
"deno"
|
|
119
119
|
],
|
|
120
120
|
"dependencies": {
|
|
121
|
-
"@openelement/protocol": "^0.41.0-alpha.
|
|
122
|
-
"@openelement/signal": "^0.41.0-alpha.
|
|
121
|
+
"@openelement/protocol": "^0.41.0-alpha.4",
|
|
122
|
+
"@openelement/signal": "^0.41.0-alpha.4"
|
|
123
123
|
}
|
|
124
124
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ClientRuntimeOptions {
|
|
2
|
+
/** Optional CustomElementRegistry. If not provided, uses globalThis.customElements. */ registry?: CustomElementRegistry;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Hydrate all openElement components in a root element.
|
|
6
|
+
*
|
|
7
|
+
* Scans for `<template shadowrootmode="open">` declarative shadow roots,
|
|
8
|
+
* upgrades custom elements, and hydrates data-signal markers.
|
|
9
|
+
*
|
|
10
|
+
* Returns a dispose function that cleans up all effects and event listeners.
|
|
11
|
+
*/ export declare function hydrateOpenElement(root: ParentNode, options?: ClientRuntimeOptions): () => void;
|
|
12
|
+
/**
|
|
13
|
+
* Dispose all hydrated openElement components in a root element.
|
|
14
|
+
*
|
|
15
|
+
* Walks the tree looking for host elements that were hydrated by
|
|
16
|
+
* `hydrateOpenElement` and calls their cleanup functions.
|
|
17
|
+
*/ export declare function disposeOpenElement(root: ParentNode): void;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @openelement/core/hydrate - Client runtime for third-party frameworks.
|
|
3
|
+
*
|
|
4
|
+
* Lightweight entry point that scans DSD templates, upgrades custom elements,
|
|
5
|
+
* and hydrates signal markers without importing @openelement/element.
|
|
6
|
+
*
|
|
7
|
+
* ADR-0109 alpha.4: client-runtime for Fresh, React, etc.
|
|
8
|
+
*/ import { HydrationScope } from './hydration-scope.js';
|
|
9
|
+
const hostDisposers = new WeakMap();
|
|
10
|
+
/**
|
|
11
|
+
* Walk a subtree collecting all <template shadowrootmode="open"> elements.
|
|
12
|
+
* In Chromium, DSD templates are parsed and their content moved into the
|
|
13
|
+
* host's shadowRoot automatically, leaving an empty template element behind.
|
|
14
|
+
*/ function collectDsdTemplates(root) {
|
|
15
|
+
const results = [];
|
|
16
|
+
// Use a TreeWalker when available; fall back to manual traversal.
|
|
17
|
+
if (typeof document !== 'undefined' && document.createTreeWalker) {
|
|
18
|
+
const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {
|
|
19
|
+
acceptNode (node) {
|
|
20
|
+
const el = node;
|
|
21
|
+
if (el.tagName === 'TEMPLATE' && el.getAttribute('shadowrootmode') === 'open') {
|
|
22
|
+
return NodeFilter.FILTER_ACCEPT;
|
|
23
|
+
}
|
|
24
|
+
return NodeFilter.FILTER_SKIP;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
let n;
|
|
28
|
+
while(n = walker.nextNode()){
|
|
29
|
+
results.push(n);
|
|
30
|
+
}
|
|
31
|
+
} else {
|
|
32
|
+
// Fallback for environments without a real TreeWalker (e.g. test doubles).
|
|
33
|
+
// ponytail: walk childNodes instead of children since test doubles may not
|
|
34
|
+
// implement ParentNode.children. Only process ELEMENT_NODE children.
|
|
35
|
+
const walk = (node)=>{
|
|
36
|
+
const container = node;
|
|
37
|
+
const nodes = Array.from(container.children ?? container.childNodes ?? []);
|
|
38
|
+
for (const child of nodes.filter((c)=>c.nodeType === 1)){
|
|
39
|
+
const el = child;
|
|
40
|
+
if (el.tagName === 'TEMPLATE' && el.getAttribute('shadowrootmode') === 'open') {
|
|
41
|
+
results.push(el);
|
|
42
|
+
}
|
|
43
|
+
const childContainer = child;
|
|
44
|
+
if (childContainer.childNodes) {
|
|
45
|
+
walk(child);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
walk(root);
|
|
50
|
+
}
|
|
51
|
+
return results;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create a shadow root from a DSD template's content.
|
|
55
|
+
*
|
|
56
|
+
* In a real browser, DSD parsing already moved the template's content into
|
|
57
|
+
* the host's shadowRoot. This handles the case where that hasn't happened
|
|
58
|
+
* (e.g. programmatic hydration via innerHTML or test doubles).
|
|
59
|
+
*/ function createShadowRootFromTemplate(host, template) {
|
|
60
|
+
// If the host already has a shadow root (DSD was parsed by the browser),
|
|
61
|
+
// return it directly.
|
|
62
|
+
const existing = host.shadowRoot;
|
|
63
|
+
if (existing && existing.childNodes.length > 0) return existing;
|
|
64
|
+
// Otherwise, create from template content.
|
|
65
|
+
const shadow = host.attachShadow({
|
|
66
|
+
mode: 'open'
|
|
67
|
+
});
|
|
68
|
+
if (template.content) {
|
|
69
|
+
shadow.append(...Array.from(template.content.childNodes));
|
|
70
|
+
} else {
|
|
71
|
+
// ponytail: template.content may not exist in test doubles; fall back to
|
|
72
|
+
// moving childNodes directly. Real User-Agents always have template.content.
|
|
73
|
+
while(template.firstChild){
|
|
74
|
+
shadow.appendChild(template.firstChild);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return shadow;
|
|
78
|
+
}
|
|
79
|
+
function templateHost(template) {
|
|
80
|
+
if (template.parentElement) return template.parentElement;
|
|
81
|
+
const parent = template.parentNode;
|
|
82
|
+
return parent?.nodeType === 1 ? parent : null;
|
|
83
|
+
}
|
|
84
|
+
function getSignalRegistry(host) {
|
|
85
|
+
return host.signalRegistry;
|
|
86
|
+
}
|
|
87
|
+
function disposeScope(scope) {
|
|
88
|
+
try {
|
|
89
|
+
scope.dispose();
|
|
90
|
+
} catch {
|
|
91
|
+
/* ignore dispose errors */ }
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Hydrate all openElement components in a root element.
|
|
95
|
+
*
|
|
96
|
+
* Scans for `<template shadowrootmode="open">` declarative shadow roots,
|
|
97
|
+
* upgrades custom elements, and hydrates data-signal markers.
|
|
98
|
+
*
|
|
99
|
+
* Returns a dispose function that cleans up all effects and event listeners.
|
|
100
|
+
*/ export function hydrateOpenElement(root, options) {
|
|
101
|
+
const registry = options?.registry ?? globalThis.customElements;
|
|
102
|
+
const templates = collectDsdTemplates(root);
|
|
103
|
+
const scopes = [];
|
|
104
|
+
const hydratedHosts = [];
|
|
105
|
+
for (const template of templates){
|
|
106
|
+
const host = templateHost(template);
|
|
107
|
+
if (!host || !registry) continue;
|
|
108
|
+
const tagName = host.tagName.toLowerCase();
|
|
109
|
+
const ctor = registry.get(tagName);
|
|
110
|
+
if (!ctor) continue; // Skip non-custom-element hosts.
|
|
111
|
+
const shadowRoot = createShadowRootFromTemplate(host, template);
|
|
112
|
+
// Read signal registry from the upgraded element instance.
|
|
113
|
+
// OpenElement sets signalRegistry in its constructor.
|
|
114
|
+
const hostReg = getSignalRegistry(host);
|
|
115
|
+
const scope = new HydrationScope({
|
|
116
|
+
signalRegistry: hostReg
|
|
117
|
+
});
|
|
118
|
+
scope.hydrate(shadowRoot, hostReg);
|
|
119
|
+
scopes.push(scope);
|
|
120
|
+
hydratedHosts.push(host);
|
|
121
|
+
// Store disposer on the host so disposeOpenElement can find it.
|
|
122
|
+
hostDisposers.set(host, ()=>disposeScope(scope));
|
|
123
|
+
}
|
|
124
|
+
return ()=>{
|
|
125
|
+
for (const scope of scopes){
|
|
126
|
+
disposeScope(scope);
|
|
127
|
+
}
|
|
128
|
+
for (const host of hydratedHosts){
|
|
129
|
+
hostDisposers.delete(host);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Dispose all hydrated openElement components in a root element.
|
|
135
|
+
*
|
|
136
|
+
* Walks the tree looking for host elements that were hydrated by
|
|
137
|
+
* `hydrateOpenElement` and calls their cleanup functions.
|
|
138
|
+
*/ export function disposeOpenElement(root) {
|
|
139
|
+
// ponytail: O(n) walk so callers can dispose an arbitrary container.
|
|
140
|
+
const walk = (node)=>{
|
|
141
|
+
if (node.nodeType !== 1) return;
|
|
142
|
+
const el = node;
|
|
143
|
+
const disposer = hostDisposers.get(el);
|
|
144
|
+
if (disposer) {
|
|
145
|
+
disposer();
|
|
146
|
+
hostDisposers.delete(el);
|
|
147
|
+
}
|
|
148
|
+
// Walk children (supports both real DOM children and test double childNodes).
|
|
149
|
+
const container = el;
|
|
150
|
+
for (const child of Array.from(container.children ?? container.childNodes ?? [])){
|
|
151
|
+
walk(child);
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
walk(root);
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9jb3JlL3NyYy9jbGllbnQtcnVudGltZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBvcGVuZWxlbWVudC9jb3JlL2h5ZHJhdGUgLSBDbGllbnQgcnVudGltZSBmb3IgdGhpcmQtcGFydHkgZnJhbWV3b3Jrcy5cbiAqXG4gKiBMaWdodHdlaWdodCBlbnRyeSBwb2ludCB0aGF0IHNjYW5zIERTRCB0ZW1wbGF0ZXMsIHVwZ3JhZGVzIGN1c3RvbSBlbGVtZW50cyxcbiAqIGFuZCBoeWRyYXRlcyBzaWduYWwgbWFya2VycyB3aXRob3V0IGltcG9ydGluZyBAb3BlbmVsZW1lbnQvZWxlbWVudC5cbiAqXG4gKiBBRFItMDEwOSBhbHBoYS40OiBjbGllbnQtcnVudGltZSBmb3IgRnJlc2gsIFJlYWN0LCBldGMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBTaWduYWwgfSBmcm9tICdAb3BlbmVsZW1lbnQvcHJvdG9jb2wvc2lnbmFsJztcbmltcG9ydCB7IEh5ZHJhdGlvblNjb3BlIH0gZnJvbSAnLi9oeWRyYXRpb24tc2NvcGUuanMnO1xuXG5jb25zdCBob3N0RGlzcG9zZXJzID0gbmV3IFdlYWtNYXA8RWxlbWVudCwgKCkgPT4gdm9pZD4oKTtcblxuaW50ZXJmYWNlIENoaWxkQ29udGFpbmVyIHtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBJdGVyYWJsZTxOb2RlPjtcbiAgcmVhZG9ubHkgY2hpbGROb2Rlcz86IEl0ZXJhYmxlPE5vZGU+O1xufVxuXG5pbnRlcmZhY2UgU2lnbmFsUmVnaXN0cnlIb3N0IHtcbiAgc2lnbmFsUmVnaXN0cnk/OiBNYXA8c3RyaW5nLCBTaWduYWw8dW5rbm93bj4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsaWVudFJ1bnRpbWVPcHRpb25zIHtcbiAgLyoqIE9wdGlvbmFsIEN1c3RvbUVsZW1lbnRSZWdpc3RyeS4gSWYgbm90IHByb3ZpZGVkLCB1c2VzIGdsb2JhbFRoaXMuY3VzdG9tRWxlbWVudHMuICovXG4gIHJlZ2lzdHJ5PzogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5O1xufVxuXG4vKipcbiAqIFdhbGsgYSBzdWJ0cmVlIGNvbGxlY3RpbmcgYWxsIDx0ZW1wbGF0ZSBzaGFkb3dyb290bW9kZT1cIm9wZW5cIj4gZWxlbWVudHMuXG4gKiBJbiBDaHJvbWl1bSwgRFNEIHRlbXBsYXRlcyBhcmUgcGFyc2VkIGFuZCB0aGVpciBjb250ZW50IG1vdmVkIGludG8gdGhlXG4gKiBob3N0J3Mgc2hhZG93Um9vdCBhdXRvbWF0aWNhbGx5LCBsZWF2aW5nIGFuIGVtcHR5IHRlbXBsYXRlIGVsZW1lbnQgYmVoaW5kLlxuICovXG5mdW5jdGlvbiBjb2xsZWN0RHNkVGVtcGxhdGVzKHJvb3Q6IFBhcmVudE5vZGUpOiBIVE1MVGVtcGxhdGVFbGVtZW50W10ge1xuICBjb25zdCByZXN1bHRzOiBIVE1MVGVtcGxhdGVFbGVtZW50W10gPSBbXTtcbiAgLy8gVXNlIGEgVHJlZVdhbGtlciB3aGVuIGF2YWlsYWJsZTsgZmFsbCBiYWNrIHRvIG1hbnVhbCB0cmF2ZXJzYWwuXG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIpIHtcbiAgICBjb25zdCB3YWxrZXIgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKFxuICAgICAgcm9vdCxcbiAgICAgIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULFxuICAgICAge1xuICAgICAgICBhY2NlcHROb2RlKG5vZGU6IE5vZGUpOiBudW1iZXIge1xuICAgICAgICAgIGNvbnN0IGVsID0gbm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGVsLnRhZ05hbWUgPT09ICdURU1QTEFURScgJiZcbiAgICAgICAgICAgIGVsLmdldEF0dHJpYnV0ZSgnc2hhZG93cm9vdG1vZGUnKSA9PT0gJ29wZW4nXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfU0tJUDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBsZXQgbjogTm9kZSB8IG51bGw7XG4gICAgd2hpbGUgKChuID0gd2Fsa2VyLm5leHROb2RlKCkpKSB7XG4gICAgICByZXN1bHRzLnB1c2gobiBhcyBIVE1MVGVtcGxhdGVFbGVtZW50KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2sgZm9yIGVudmlyb25tZW50cyB3aXRob3V0IGEgcmVhbCBUcmVlV2Fsa2VyIChlLmcuIHRlc3QgZG91YmxlcykuXG4gICAgLy8gcG9ueXRhaWw6IHdhbGsgY2hpbGROb2RlcyBpbnN0ZWFkIG9mIGNoaWxkcmVuIHNpbmNlIHRlc3QgZG91YmxlcyBtYXkgbm90XG4gICAgLy8gaW1wbGVtZW50IFBhcmVudE5vZGUuY2hpbGRyZW4uIE9ubHkgcHJvY2VzcyBFTEVNRU5UX05PREUgY2hpbGRyZW4uXG4gICAgY29uc3Qgd2FsayA9IChub2RlOiBQYXJlbnROb2RlKSA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXIgPSBub2RlIGFzIENoaWxkQ29udGFpbmVyO1xuICAgICAgY29uc3Qgbm9kZXMgPSBBcnJheS5mcm9tKGNvbnRhaW5lci5jaGlsZHJlbiA/PyBjb250YWluZXIuY2hpbGROb2RlcyA/PyBbXSk7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGVzLmZpbHRlcigoYzogTm9kZSkgPT4gYy5ub2RlVHlwZSA9PT0gMSkpIHtcbiAgICAgICAgY29uc3QgZWwgPSBjaGlsZCBhcyBFbGVtZW50O1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZWwudGFnTmFtZSA9PT0gJ1RFTVBMQVRFJyAmJlxuICAgICAgICAgIGVsLmdldEF0dHJpYnV0ZSgnc2hhZG93cm9vdG1vZGUnKSA9PT0gJ29wZW4nXG4gICAgICAgICkge1xuICAgICAgICAgIHJlc3VsdHMucHVzaChlbCBhcyBIVE1MVGVtcGxhdGVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGlsZENvbnRhaW5lciA9IGNoaWxkIGFzIENoaWxkQ29udGFpbmVyO1xuICAgICAgICBpZiAoY2hpbGRDb250YWluZXIuY2hpbGROb2Rlcykge1xuICAgICAgICAgIHdhbGsoY2hpbGQgYXMgUGFyZW50Tm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHdhbGsocm9vdCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgc2hhZG93IHJvb3QgZnJvbSBhIERTRCB0ZW1wbGF0ZSdzIGNvbnRlbnQuXG4gKlxuICogSW4gYSByZWFsIGJyb3dzZXIsIERTRCBwYXJzaW5nIGFscmVhZHkgbW92ZWQgdGhlIHRlbXBsYXRlJ3MgY29udGVudCBpbnRvXG4gKiB0aGUgaG9zdCdzIHNoYWRvd1Jvb3QuIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSB0aGF0IGhhc24ndCBoYXBwZW5lZFxuICogKGUuZy4gcHJvZ3JhbW1hdGljIGh5ZHJhdGlvbiB2aWEgaW5uZXJIVE1MIG9yIHRlc3QgZG91YmxlcykuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVNoYWRvd1Jvb3RGcm9tVGVtcGxhdGUoXG4gIGhvc3Q6IEVsZW1lbnQsXG4gIHRlbXBsYXRlOiBIVE1MVGVtcGxhdGVFbGVtZW50LFxuKTogU2hhZG93Um9vdCB7XG4gIC8vIElmIHRoZSBob3N0IGFscmVhZHkgaGFzIGEgc2hhZG93IHJvb3QgKERTRCB3YXMgcGFyc2VkIGJ5IHRoZSBicm93c2VyKSxcbiAgLy8gcmV0dXJuIGl0IGRpcmVjdGx5LlxuICBjb25zdCBleGlzdGluZyA9IChob3N0IGFzIEhUTUxFbGVtZW50KS5zaGFkb3dSb290O1xuICBpZiAoZXhpc3RpbmcgJiYgZXhpc3RpbmcuY2hpbGROb2Rlcy5sZW5ndGggPiAwKSByZXR1cm4gZXhpc3Rpbmc7XG5cbiAgLy8gT3RoZXJ3aXNlLCBjcmVhdGUgZnJvbSB0ZW1wbGF0ZSBjb250ZW50LlxuICBjb25zdCBzaGFkb3cgPSBob3N0LmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgaWYgKHRlbXBsYXRlLmNvbnRlbnQpIHtcbiAgICBzaGFkb3cuYXBwZW5kKC4uLkFycmF5LmZyb20odGVtcGxhdGUuY29udGVudC5jaGlsZE5vZGVzKSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gcG9ueXRhaWw6IHRlbXBsYXRlLmNvbnRlbnQgbWF5IG5vdCBleGlzdCBpbiB0ZXN0IGRvdWJsZXM7IGZhbGwgYmFjayB0b1xuICAgIC8vIG1vdmluZyBjaGlsZE5vZGVzIGRpcmVjdGx5LiBSZWFsIFVzZXItQWdlbnRzIGFsd2F5cyBoYXZlIHRlbXBsYXRlLmNvbnRlbnQuXG4gICAgd2hpbGUgKHRlbXBsYXRlLmZpcnN0Q2hpbGQpIHtcbiAgICAgIHNoYWRvdy5hcHBlbmRDaGlsZCh0ZW1wbGF0ZS5maXJzdENoaWxkKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNoYWRvdztcbn1cblxuZnVuY3Rpb24gdGVtcGxhdGVIb3N0KHRlbXBsYXRlOiBIVE1MVGVtcGxhdGVFbGVtZW50KTogRWxlbWVudCB8IG51bGwge1xuICBpZiAodGVtcGxhdGUucGFyZW50RWxlbWVudCkgcmV0dXJuIHRlbXBsYXRlLnBhcmVudEVsZW1lbnQ7XG4gIGNvbnN0IHBhcmVudCA9IHRlbXBsYXRlLnBhcmVudE5vZGU7XG4gIHJldHVybiBwYXJlbnQ/Lm5vZGVUeXBlID09PSAxID8gcGFyZW50IGFzIEVsZW1lbnQgOiBudWxsO1xufVxuXG5mdW5jdGlvbiBnZXRTaWduYWxSZWdpc3RyeShob3N0OiBFbGVtZW50KTogTWFwPHN0cmluZywgU2lnbmFsPHVua25vd24+PiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiAoaG9zdCBhcyBTaWduYWxSZWdpc3RyeUhvc3QpLnNpZ25hbFJlZ2lzdHJ5O1xufVxuXG5mdW5jdGlvbiBkaXNwb3NlU2NvcGUoc2NvcGU6IEh5ZHJhdGlvblNjb3BlKTogdm9pZCB7XG4gIHRyeSB7XG4gICAgc2NvcGUuZGlzcG9zZSgpO1xuICB9IGNhdGNoIHtcbiAgICAvKiBpZ25vcmUgZGlzcG9zZSBlcnJvcnMgKi9cbiAgfVxufVxuXG4vKipcbiAqIEh5ZHJhdGUgYWxsIG9wZW5FbGVtZW50IGNvbXBvbmVudHMgaW4gYSByb290IGVsZW1lbnQuXG4gKlxuICogU2NhbnMgZm9yIGA8dGVtcGxhdGUgc2hhZG93cm9vdG1vZGU9XCJvcGVuXCI+YCBkZWNsYXJhdGl2ZSBzaGFkb3cgcm9vdHMsXG4gKiB1cGdyYWRlcyBjdXN0b20gZWxlbWVudHMsIGFuZCBoeWRyYXRlcyBkYXRhLXNpZ25hbCBtYXJrZXJzLlxuICpcbiAqIFJldHVybnMgYSBkaXNwb3NlIGZ1bmN0aW9uIHRoYXQgY2xlYW5zIHVwIGFsbCBlZmZlY3RzIGFuZCBldmVudCBsaXN0ZW5lcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoeWRyYXRlT3BlbkVsZW1lbnQoXG4gIHJvb3Q6IFBhcmVudE5vZGUsXG4gIG9wdGlvbnM/OiBDbGllbnRSdW50aW1lT3B0aW9ucyxcbik6ICgpID0+IHZvaWQge1xuICBjb25zdCByZWdpc3RyeTogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5IHwgdW5kZWZpbmVkID0gb3B0aW9ucz8ucmVnaXN0cnkgPz9cbiAgICBnbG9iYWxUaGlzLmN1c3RvbUVsZW1lbnRzO1xuICBjb25zdCB0ZW1wbGF0ZXMgPSBjb2xsZWN0RHNkVGVtcGxhdGVzKHJvb3QpO1xuICBjb25zdCBzY29wZXM6IEh5ZHJhdGlvblNjb3BlW10gPSBbXTtcbiAgY29uc3QgaHlkcmF0ZWRIb3N0czogRWxlbWVudFtdID0gW107XG5cbiAgZm9yIChjb25zdCB0ZW1wbGF0ZSBvZiB0ZW1wbGF0ZXMpIHtcbiAgICBjb25zdCBob3N0ID0gdGVtcGxhdGVIb3N0KHRlbXBsYXRlKTtcbiAgICBpZiAoIWhvc3QgfHwgIXJlZ2lzdHJ5KSBjb250aW51ZTtcblxuICAgIGNvbnN0IHRhZ05hbWUgPSBob3N0LnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBjdG9yID0gcmVnaXN0cnkuZ2V0KHRhZ05hbWUpO1xuICAgIGlmICghY3RvcikgY29udGludWU7IC8vIFNraXAgbm9uLWN1c3RvbS1lbGVtZW50IGhvc3RzLlxuXG4gICAgY29uc3Qgc2hhZG93Um9vdCA9IGNyZWF0ZVNoYWRvd1Jvb3RGcm9tVGVtcGxhdGUoaG9zdCwgdGVtcGxhdGUpO1xuXG4gICAgLy8gUmVhZCBzaWduYWwgcmVnaXN0cnkgZnJvbSB0aGUgdXBncmFkZWQgZWxlbWVudCBpbnN0YW5jZS5cbiAgICAvLyBPcGVuRWxlbWVudCBzZXRzIHNpZ25hbFJlZ2lzdHJ5IGluIGl0cyBjb25zdHJ1Y3Rvci5cbiAgICBjb25zdCBob3N0UmVnID0gZ2V0U2lnbmFsUmVnaXN0cnkoaG9zdCk7XG5cbiAgICBjb25zdCBzY29wZSA9IG5ldyBIeWRyYXRpb25TY29wZSh7IHNpZ25hbFJlZ2lzdHJ5OiBob3N0UmVnIH0pO1xuICAgIHNjb3BlLmh5ZHJhdGUoc2hhZG93Um9vdCwgaG9zdFJlZyk7XG4gICAgc2NvcGVzLnB1c2goc2NvcGUpO1xuICAgIGh5ZHJhdGVkSG9zdHMucHVzaChob3N0KTtcblxuICAgIC8vIFN0b3JlIGRpc3Bvc2VyIG9uIHRoZSBob3N0IHNvIGRpc3Bvc2VPcGVuRWxlbWVudCBjYW4gZmluZCBpdC5cbiAgICBob3N0RGlzcG9zZXJzLnNldChob3N0LCAoKSA9PiBkaXNwb3NlU2NvcGUoc2NvcGUpKTtcbiAgfVxuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgZm9yIChjb25zdCBzY29wZSBvZiBzY29wZXMpIHtcbiAgICAgIGRpc3Bvc2VTY29wZShzY29wZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgaG9zdCBvZiBoeWRyYXRlZEhvc3RzKSB7XG4gICAgICBob3N0RGlzcG9zZXJzLmRlbGV0ZShob3N0KTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogRGlzcG9zZSBhbGwgaHlkcmF0ZWQgb3BlbkVsZW1lbnQgY29tcG9uZW50cyBpbiBhIHJvb3QgZWxlbWVudC5cbiAqXG4gKiBXYWxrcyB0aGUgdHJlZSBsb29raW5nIGZvciBob3N0IGVsZW1lbnRzIHRoYXQgd2VyZSBoeWRyYXRlZCBieVxuICogYGh5ZHJhdGVPcGVuRWxlbWVudGAgYW5kIGNhbGxzIHRoZWlyIGNsZWFudXAgZnVuY3Rpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlzcG9zZU9wZW5FbGVtZW50KHJvb3Q6IFBhcmVudE5vZGUpOiB2b2lkIHtcbiAgLy8gcG9ueXRhaWw6IE8obikgd2FsayBzbyBjYWxsZXJzIGNhbiBkaXNwb3NlIGFuIGFyYml0cmFyeSBjb250YWluZXIuXG4gIGNvbnN0IHdhbGsgPSAobm9kZTogTm9kZSkgPT4ge1xuICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSAxKSByZXR1cm47XG4gICAgY29uc3QgZWwgPSBub2RlIGFzIEVsZW1lbnQ7XG4gICAgY29uc3QgZGlzcG9zZXIgPSBob3N0RGlzcG9zZXJzLmdldChlbCk7XG4gICAgaWYgKGRpc3Bvc2VyKSB7XG4gICAgICBkaXNwb3NlcigpO1xuICAgICAgaG9zdERpc3Bvc2Vycy5kZWxldGUoZWwpO1xuICAgIH1cbiAgICAvLyBXYWxrIGNoaWxkcmVuIChzdXBwb3J0cyBib3RoIHJlYWwgRE9NIGNoaWxkcmVuIGFuZCB0ZXN0IGRvdWJsZSBjaGlsZE5vZGVzKS5cbiAgICBjb25zdCBjb250YWluZXIgPSBlbCBhcyBDaGlsZENvbnRhaW5lcjtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIEFycmF5LmZyb20oY29udGFpbmVyLmNoaWxkcmVuID8/IGNvbnRhaW5lci5jaGlsZE5vZGVzID8/IFtdKSkge1xuICAgICAgd2FsayhjaGlsZCBhcyBOb2RlKTtcbiAgICB9XG4gIH07XG5cbiAgd2Fsayhyb290IGFzIE5vZGUpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0NBT0MsR0FHRCxTQUFTLGNBQWMsUUFBUSx1QkFBdUI7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
|
package/src/event-marker.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* @module @openelement/core/event-marker
|
|
11
11
|
*/ import { DATA_EID } from '@openelement/protocol/hydration-markers';
|
|
12
12
|
const EVENT_PROP_RE = /^on[A-Z]/;
|
|
13
|
+
const DASHED_EVENT_PROP_RE = /^on-[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
|
|
13
14
|
const EVENT_TYPE_ALIASES = {
|
|
14
15
|
Dblclick: 'dblclick',
|
|
15
16
|
DoubleClick: 'dblclick',
|
|
@@ -38,6 +39,7 @@ export function eventMarkerId(index) {
|
|
|
38
39
|
return `e${index}`;
|
|
39
40
|
}
|
|
40
41
|
export function eventTypeFromProp(prop) {
|
|
42
|
+
if (DASHED_EVENT_PROP_RE.test(prop)) return prop.slice(3);
|
|
41
43
|
if (!EVENT_PROP_RE.test(prop)) return null;
|
|
42
44
|
const eventName = prop.slice(2);
|
|
43
45
|
return EVENT_TYPE_ALIASES[eventName] ?? eventName.toLowerCase();
|
|
@@ -51,4 +53,4 @@ export function serializeEventMarkers(props, context) {
|
|
|
51
53
|
}
|
|
52
54
|
return '';
|
|
53
55
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9jb3JlL3NyYy9ldmVudC1tYXJrZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAb3BlbmVsZW1lbnQvY29yZSAtIERldGVybWluaXN0aWMgZXZlbnQgbWFya2VyIGdlbmVyYXRpb24gZm9yIFNTUiBvdXRwdXQuXG4gKlxuICogUHVyZSwgc2lkZS1lZmZlY3QtZnJlZSBoZWxwZXIgdXNlZCBieSB0aGUgU1NSIHJlbmRlcmVyIHRvIGVtaXQgYGRhdGEtZWlkYFxuICogbWFya2Vycy4gVGhpcyBtb2R1bGUgaW50ZW50aW9uYWxseSBkb2VzIE5PVCBkZXBlbmQgb24gdGhlIERPTSBiaW5kaW5nIGxheWVyXG4gKiBzbyB0aGF0IHN0YXRpYy1vbmx5IGJ1bmRsZXMgY2FuIHVzZSBpdCB3aXRob3V0IHB1bGxpbmcgaW4gaHlkcmF0aW9uIGNvZGUuXG4gKlxuICogSHlkcmF0aW9uLXRpbWUgYmluZGluZyBsb2dpYyBsaXZlcyBpbiBgZXZlbnQtaHlkcmF0aW9uLnRzYC5cbiAqXG4gKiBAbW9kdWxlIEBvcGVuZWxlbWVudC9jb3JlL2V2ZW50LW1hcmtlclxuICovXG5cbmltcG9ydCB7IERBVEFfRUlEIH0gZnJvbSAnQG9wZW5lbGVtZW50L3Byb3RvY29sL2h5ZHJhdGlvbi1tYXJrZXJzJztcblxuY29uc3QgRVZFTlRfUFJPUF9SRSA9IC9eb25bQS1aXS87XG5jb25zdCBEQVNIRURfRVZFTlRfUFJPUF9SRSA9IC9eb24tW2Etel1bYS16MC05XSooPzotW2EtejAtOV0rKSokLztcbmNvbnN0IEVWRU5UX1RZUEVfQUxJQVNFUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgRGJsY2xpY2s6ICdkYmxjbGljaycsXG4gIERvdWJsZUNsaWNrOiAnZGJsY2xpY2snLFxuICBGb2N1c0luOiAnZm9jdXNpbicsXG4gIEZvY3VzT3V0OiAnZm9jdXNvdXQnLFxuICBNb3VzZUVudGVyOiAnbW91c2VlbnRlcicsXG4gIE1vdXNlTGVhdmU6ICdtb3VzZWxlYXZlJyxcbiAgUG9pbnRlckNhbmNlbDogJ3BvaW50ZXJjYW5jZWwnLFxuICBQb2ludGVyRG93bjogJ3BvaW50ZXJkb3duJyxcbiAgUG9pbnRlckVudGVyOiAncG9pbnRlcmVudGVyJyxcbiAgUG9pbnRlckxlYXZlOiAncG9pbnRlcmxlYXZlJyxcbiAgUG9pbnRlck1vdmU6ICdwb2ludGVybW92ZScsXG4gIFBvaW50ZXJPdXQ6ICdwb2ludGVyb3V0JyxcbiAgUG9pbnRlck92ZXI6ICdwb2ludGVyb3ZlcicsXG4gIFBvaW50ZXJVcDogJ3BvaW50ZXJ1cCcsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50TWFya2VyQ29udGV4dCB7XG4gIG5leHRJZCgpOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFdmVudE1hcmtlckNvbnRleHQoKTogRXZlbnRNYXJrZXJDb250ZXh0IHtcbiAgbGV0IGNvdW50ID0gMDtcbiAgcmV0dXJuIHtcbiAgICBuZXh0SWQoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBldmVudE1hcmtlcklkKGNvdW50KyspO1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmVudE1hcmtlcklkKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYGUke2luZGV4fWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmVudFR5cGVGcm9tUHJvcChwcm9wOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKERBU0hFRF9FVkVOVF9QUk9QX1JFLnRlc3QocHJvcCkpIHJldHVybiBwcm9wLnNsaWNlKDMpO1xuICBpZiAoIUVWRU5UX1BST1BfUkUudGVzdChwcm9wKSkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IGV2ZW50TmFtZSA9IHByb3Auc2xpY2UoMik7XG4gIHJldHVybiBFVkVOVF9UWVBFX0FMSUFTRVNbZXZlbnROYW1lXSA/PyBldmVudE5hbWUudG9Mb3dlckNhc2UoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUV2ZW50TWFya2VycyhcbiAgcHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkLFxuICBjb250ZXh0OiBFdmVudE1hcmtlckNvbnRleHQsXG4pOiBzdHJpbmcge1xuICBpZiAoIXByb3BzKSByZXR1cm4gJyc7XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BzKSkge1xuICAgIGlmIChldmVudFR5cGVGcm9tUHJvcChrZXkpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGAgJHtEQVRBX0VJRH09XCIke2NvbnRleHQubmV4dElkKCl9XCJgO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Q0FVQyxHQUVELFNBQVMsUUFBUSxRQUFRLDBDQUEwQztBQUVuRSxNQUFNLGdCQUFnQjtBQUN0QixNQUFNLHVCQUF1QjtBQUM3QixNQUFNLHFCQUE2QztFQUNqRCxVQUFVO0VBQ1YsYUFBYTtFQUNiLFNBQVM7RUFDVCxVQUFVO0VBQ1YsWUFBWTtFQUNaLFlBQVk7RUFDWixlQUFlO0VBQ2YsYUFBYTtFQUNiLGNBQWM7RUFDZCxjQUFjO0VBQ2QsYUFBYTtFQUNiLFlBQVk7RUFDWixhQUFhO0VBQ2IsV0FBVztBQUNiO0FBTUEsT0FBTyxTQUFTO0VBQ2QsSUFBSSxRQUFRO0VBQ1osT0FBTztJQUNMO01BQ0UsT0FBTyxjQUFjO0lBQ3ZCO0VBQ0Y7QUFDRjtBQUVBLE9BQU8sU0FBUyxjQUFjLEtBQWE7RUFDekMsT0FBTyxDQUFDLENBQUMsRUFBRSxPQUFPO0FBQ3BCO0FBRUEsT0FBTyxTQUFTLGtCQUFrQixJQUFZO0VBQzVDLElBQUkscUJBQXFCLElBQUksQ0FBQyxPQUFPLE9BQU8sS0FBSyxLQUFLLENBQUM7RUFDdkQsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLE9BQU8sT0FBTztFQUN0QyxNQUFNLFlBQVksS0FBSyxLQUFLLENBQUM7RUFDN0IsT0FBTyxrQkFBa0IsQ0FBQyxVQUFVLElBQUksVUFBVSxXQUFXO0FBQy9EO0FBRUEsT0FBTyxTQUFTLHNCQUNkLEtBQTBDLEVBQzFDLE9BQTJCO0VBRTNCLElBQUksQ0FBQyxPQUFPLE9BQU87RUFDbkIsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLElBQUksT0FBTyxPQUFPLENBQUMsT0FBUTtJQUNoRCxJQUFJLGtCQUFrQixRQUFRLE9BQU8sVUFBVSxZQUFZO01BQ3pELE9BQU8sQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsUUFBUSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzdDO0VBQ0Y7RUFDQSxPQUFPO0FBQ1QifQ==
|
package/src/hydrate.d.ts
CHANGED
|
@@ -15,3 +15,5 @@ export { collectEventBindings, eventRecordsToDescriptors, hydrateEventMarkers }
|
|
|
15
15
|
export type { EventBinding, EventBindingRecord } from "./event-hydration.js";
|
|
16
16
|
export { createDsdRenderRoot, hydrateDsdEvents } from "./dsd-hydration.js";
|
|
17
17
|
export type { Constructor, DsdHydration } from "./dsd-hydration.js";
|
|
18
|
+
export { disposeOpenElement, hydrateOpenElement } from "./client-runtime.js";
|
|
19
|
+
export type { ClientRuntimeOptions } from "./client-runtime.js";
|
package/src/hydrate.js
CHANGED
|
@@ -14,4 +14,6 @@ export { applyBindingDescriptor, commitBindings, registerBindingKind } from './b
|
|
|
14
14
|
export { collectEventBindings, eventRecordsToDescriptors, hydrateEventMarkers } from './event-hydration.js';
|
|
15
15
|
// DSD hydration contract
|
|
16
16
|
export { createDsdRenderRoot, hydrateDsdEvents } from './dsd-hydration.js';
|
|
17
|
-
|
|
17
|
+
// Client runtime for third-party frameworks
|
|
18
|
+
export { disposeOpenElement, hydrateOpenElement } from './client-runtime.js';
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9jb3JlL3NyYy9oeWRyYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG9wZW5lbGVtZW50L2NvcmUvaHlkcmF0ZSAtIERTRCBpbnRlcmFjdGl2ZSBydW50aW1lIHN1cmZhY2UuXG4gKlxuICogSW5jbHVkZXMgdGhlIHN0YXRpYyByZW5kZXJpbmcgc3VyZmFjZSBwbHVzIG1hcmtlci1iYXNlZCBldmVudCBoeWRyYXRpb25cbiAqIGFuZCBEU0Qgc2hhZG93LXJvb3QgaHlkcmF0aW9uIGhlbHBlcnMuIFVzZWQgYnkgRFNEIGludGVyYWN0aXZlIGlzbGFuZHMuXG4gKlxuICogQURSLTAxMDkgUGhhc2UgMTogc3BsaXQgQG9wZW5lbGVtZW50L2NvcmUgaW50byBzdGF0aWMsIGh5ZHJhdGUsIGFuZCBjc3IuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9zdGF0aWMuanMnO1xuXG4vLyBIeWRyYXRpb24gc2NvcGVcbmV4cG9ydCB7IEh5ZHJhdGlvblNjb3BlIH0gZnJvbSAnLi9oeWRyYXRpb24tc2NvcGUuanMnO1xuZXhwb3J0IHR5cGUgeyBIeWRyYXRpb25TY29wZURlYnVnLCBIeWRyYXRpb25TY29wZU9wdGlvbnMgfSBmcm9tICcuL2h5ZHJhdGlvbi1zY29wZS5qcyc7XG5cbi8vIEJpbmRpbmcgbGF5ZXJcbmV4cG9ydCB0eXBlIHtcbiAgQmluZGluZ0Rlc2NyaXB0b3IsXG4gIEJpbmRpbmdEaXNwb3NlLFxuICBCaW5kaW5nTGlmZWN5Y2xlLFxuICBCaW5kaW5nUmVuZGVyZXIsXG59IGZyb20gJy4vYmluZGluZy1kZXNjcmlwdG9yLmpzJztcbmV4cG9ydCB7XG4gIGJpbmRBdHRyLFxuICBiaW5kQ2xhc3MsXG4gIGJpbmRDb25kaXRpb25hbCxcbiAgYmluZEV2ZW50LFxuICBiaW5kSHRtbCxcbiAgYmluZExpc3QsXG4gIGJpbmRSZWYsXG4gIGJpbmRSZW5kZXIsXG4gIGJpbmRTdGF0aWNBdHRyLFxuICBiaW5kU3RhdGljQm9vbGVhbixcbiAgYmluZFN0YXRpY1Byb3AsXG4gIGJpbmRTdGF0aWNTdHlsZSxcbiAgYmluZFRleHQsXG59IGZyb20gJy4vYmluZGluZy1kZXNjcmlwdG9yLmpzJztcbmV4cG9ydCB7XG4gIGFwcGx5QmluZGluZ0Rlc2NyaXB0b3IsXG4gIGNvbW1pdEJpbmRpbmdzLFxuICByZWdpc3RlckJpbmRpbmdLaW5kLFxufSBmcm9tICcuL2JpbmRpbmctYWN0aXZhdGlvbi5qcyc7XG5cbi8vIE1hcmtlci1iYXNlZCBldmVudCBoeWRyYXRpb24gKERPTS1zcGVjaWZpYyBwYXJ0cyBub3QgaW4gc3RhdGljLnRzKVxuZXhwb3J0IHtcbiAgY29sbGVjdEV2ZW50QmluZGluZ3MsXG4gIGV2ZW50UmVjb3Jkc1RvRGVzY3JpcHRvcnMsXG4gIGh5ZHJhdGVFdmVudE1hcmtlcnMsXG59IGZyb20gJy4vZXZlbnQtaHlkcmF0aW9uLmpzJztcbmV4cG9ydCB0eXBlIHsgRXZlbnRCaW5kaW5nLCBFdmVudEJpbmRpbmdSZWNvcmQgfSBmcm9tICcuL2V2ZW50LWh5ZHJhdGlvbi5qcyc7XG5cbi8vIERTRCBoeWRyYXRpb24gY29udHJhY3RcbmV4cG9ydCB7IGNyZWF0ZURzZFJlbmRlclJvb3QsIGh5ZHJhdGVEc2RFdmVudHMgfSBmcm9tICcuL2RzZC1oeWRyYXRpb24uanMnO1xuZXhwb3J0IHR5cGUgeyBDb25zdHJ1Y3RvciwgRHNkSHlkcmF0aW9uIH0gZnJvbSAnLi9kc2QtaHlkcmF0aW9uLmpzJztcblxuLy8gQ2xpZW50IHJ1bnRpbWUgZm9yIHRoaXJkLXBhcnR5IGZyYW1ld29ya3NcbmV4cG9ydCB7IGRpc3Bvc2VPcGVuRWxlbWVudCwgaHlkcmF0ZU9wZW5FbGVtZW50IH0gZnJvbSAnLi9jbGllbnQtcnVudGltZS5qcyc7XG5leHBvcnQgdHlwZSB7IENsaWVudFJ1bnRpbWVPcHRpb25zIH0gZnJvbSAnLi9jbGllbnQtcnVudGltZS5qcyc7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Q0FPQyxHQUVELGNBQWMsY0FBYztBQUU1QixrQkFBa0I7QUFDbEIsU0FBUyxjQUFjLFFBQVEsdUJBQXVCO0FBVXRELFNBQ0UsUUFBUSxFQUNSLFNBQVMsRUFDVCxlQUFlLEVBQ2YsU0FBUyxFQUNULFFBQVEsRUFDUixRQUFRLEVBQ1IsT0FBTyxFQUNQLFVBQVUsRUFDVixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxlQUFlLEVBQ2YsUUFBUSxRQUNILDBCQUEwQjtBQUNqQyxTQUNFLHNCQUFzQixFQUN0QixjQUFjLEVBQ2QsbUJBQW1CLFFBQ2QsMEJBQTBCO0FBRWpDLHFFQUFxRTtBQUNyRSxTQUNFLG9CQUFvQixFQUNwQix5QkFBeUIsRUFDekIsbUJBQW1CLFFBQ2QsdUJBQXVCO0FBRzlCLHlCQUF5QjtBQUN6QixTQUFTLG1CQUFtQixFQUFFLGdCQUFnQixRQUFRLHFCQUFxQjtBQUczRSw0Q0FBNEM7QUFDNUMsU0FBUyxrQkFBa0IsRUFBRSxrQkFBa0IsUUFBUSxzQkFBc0IifQ==
|
package/src/hydration-scope.js
CHANGED
|
@@ -104,7 +104,7 @@ import { DATA_SIGNAL, DATA_SIGNAL_ATTR, DATA_SIGNAL_CLASS, DATA_SIGNAL_RENDER, p
|
|
|
104
104
|
hydrateEventMarkers(shadowRoot, eventBindings, this.#eventCleanups, shadowRoot.host ?? undefined);
|
|
105
105
|
}
|
|
106
106
|
// Chromium DSD layout fix: force reflow without DOM rebuild.
|
|
107
|
-
requestAnimationFrame(()=>{
|
|
107
|
+
globalThis.requestAnimationFrame?.(()=>{
|
|
108
108
|
void shadowRoot.host?.offsetHeight;
|
|
109
109
|
});
|
|
110
110
|
}
|
|
@@ -157,4 +157,4 @@ import { DATA_SIGNAL, DATA_SIGNAL_ATTR, DATA_SIGNAL_CLASS, DATA_SIGNAL_RENDER, p
|
|
|
157
157
|
return undefined;
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9jb3JlL3NyYy9oeWRyYXRpb24tc2NvcGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAb3BlbmVsZW1lbnQvY29yZS9oeWRyYXRlIC0gSHlkcmF0aW9uU2NvcGUgdmFsdWUgb2JqZWN0LlxuICpcbiAqIFN0YW5kYWxvbmUgY29udGFpbmVyIGZvciB0aGUgbGlmZWN5Y2xlIHN0YXRlIG9mIGEgaHlkcmF0ZWQgc2hhZG93IHJvb3QuXG4gKiBPd25zIGVmZmVjdCBkaXNwb3NlcnMsIGV2ZW50IGNsZWFudXBzLCBhbmQgdGhlIGNhY2hlZCBWTm9kZSB1c2VkIGZvclxuICogZGVjbGFyYXRpdmUgZXZlbnQgbWFya2VyIGJpbmRpbmcuIERlc2lnbmVkIHRvIGJlIHVzYWJsZSB3aXRob3V0IGFuXG4gKiBPcGVuRWxlbWVudCBpbnN0YW5jZSBzbyB0aGlyZC1wYXJ0eSBmcmFtZXdvcmsgcnVudGltZXMgY2FuIGh5ZHJhdGUgdGhlXG4gKiBzYW1lIERTRCBzaGFkb3cgcm9vdCBsYXRlci5cbiAqXG4gKiBAbW9kdWxlIEBvcGVuZWxlbWVudC9jb3JlL2h5ZHJhdGVcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFNpZ25hbCB9IGZyb20gJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9zaWduYWwnO1xuaW1wb3J0IHsgYXBwbHlCaW5kaW5nRGVzY3JpcHRvciB9IGZyb20gJy4vYmluZGluZy1hY3RpdmF0aW9uLmpzJztcbmltcG9ydCB7IGNvbGxlY3RFdmVudEJpbmRpbmdzLCBoeWRyYXRlRXZlbnRNYXJrZXJzIH0gZnJvbSAnLi9ldmVudC1oeWRyYXRpb24uanMnO1xuaW1wb3J0IHsgcmVuZGVyVG9Eb20gfSBmcm9tICcuL2pzeC1yZW5kZXItZG9tLmpzJztcbmltcG9ydCB7IGlzVk5vZGUgfSBmcm9tICcuL3Zub2RlLmpzJztcbmltcG9ydCB7IGJpbmRBdHRyLCBiaW5kQ2xhc3MsIGJpbmRSZW5kZXIsIGJpbmRUZXh0IH0gZnJvbSAnLi9iaW5kaW5nLWRlc2NyaXB0b3IuanMnO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nRGVzY3JpcHRvciwgQmluZGluZ0xpZmVjeWNsZSwgQmluZGluZ1JlbmRlcmVyIH0gZnJvbSAnLi9iaW5kaW5nLWRlc2NyaXB0b3IuanMnO1xuaW1wb3J0IHtcbiAgREFUQV9TSUdOQUwsXG4gIERBVEFfU0lHTkFMX0FUVFIsXG4gIERBVEFfU0lHTkFMX0NMQVNTLFxuICBEQVRBX1NJR05BTF9SRU5ERVIsXG4gIHBhcnNlU2lnbmFsQXR0clNwZWMsXG59IGZyb20gJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9oeWRyYXRpb24tbWFya2Vycyc7XG5cbi8qKiBPcHRpb25zIGZvciBjcmVhdGluZyBhIEh5ZHJhdGlvblNjb3BlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBIeWRyYXRpb25TY29wZU9wdGlvbnMge1xuICAvKiogU2lnbmFsIHJlZ2lzdHJ5IHVzZWQgdG8gcmVzb2x2ZSBkYXRhLXNpZ25hbCBtYXJrZXJzLiAqL1xuICBzaWduYWxSZWdpc3RyeT86IE1hcDxzdHJpbmcsIFNpZ25hbDx1bmtub3duPj47XG4gIC8qKiBSZW5kZXJlciB1c2VkIGZvciBzaWduYWwtcmVuZGVyIGFuZCBldmVudC1tYXJrZXIgVk5vZGUgcmVuZGVyaW5nLiAqL1xuICByZW5kZXJlcj86IEJpbmRpbmdSZW5kZXJlcjtcbiAgLyoqIFJlbmRlciBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIHRoZSBWTm9kZSB1c2VkIGZvciBldmVudC1tYXJrZXIgaHlkcmF0aW9uLiAqL1xuICByZW5kZXI/OiAoKSA9PiB1bmtub3duO1xufVxuXG4vKiogUmVhZC1vbmx5IG9ic2VydmFibGVzIGV4cG9zZWQgZm9yIGRlYnVnZ2luZy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHlkcmF0aW9uU2NvcGVEZWJ1ZyB7XG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICBlZmZlY3RDb3VudDogbnVtYmVyO1xuICBldmVudENsZWFudXBDb3VudDogbnVtYmVyO1xufVxuXG4vKiogQ29sbGVjdCBiaW5kaW5nIGRlc2NyaXB0b3JzIGZyb20gZGF0YS1zaWduYWwgbWFya2VycyBpbiBhIHNoYWRvdyByb290LiAqL1xuZnVuY3Rpb24gY29sbGVjdEh5ZHJhdGlvbkJpbmRpbmdzKFxuICBzaGFkb3dSb290OiBTaGFkb3dSb290LFxuICBzaWduYWxSZWdpc3RyeTogTWFwPHN0cmluZywgU2lnbmFsPHVua25vd24+PixcbiAgbGlmZWN5Y2xlOiBCaW5kaW5nTGlmZWN5Y2xlLFxuKTogQmluZGluZ0Rlc2NyaXB0b3JbXSB7XG4gIGNvbnN0IGRlc2NyaXB0b3JzOiBCaW5kaW5nRGVzY3JpcHRvcltdID0gW107XG5cbiAgZm9yIChjb25zdCBlbCBvZiBzaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoYFske0RBVEFfU0lHTkFMfV1gKSkge1xuICAgIGNvbnN0IG5hbWUgPSBlbC5nZXRBdHRyaWJ1dGUoREFUQV9TSUdOQUwpO1xuICAgIGlmICghbmFtZSkgY29udGludWU7XG4gICAgY29uc3Qgc2lnID0gc2lnbmFsUmVnaXN0cnkuZ2V0KG5hbWUpO1xuICAgIGlmICghc2lnKSBjb250aW51ZTtcblxuICAgIGNvbnN0IGhhc0NsYXNzID0gZWwuaGFzQXR0cmlidXRlKERBVEFfU0lHTkFMX0NMQVNTKTtcbiAgICBjb25zdCBoYXNBdHRyID0gZWwuaGFzQXR0cmlidXRlKERBVEFfU0lHTkFMX0FUVFIpO1xuXG4gICAgaWYgKGhhc0NsYXNzKSB7XG4gICAgICBjb25zdCBjbGFzc05hbWUgPSBlbC5nZXRBdHRyaWJ1dGUoREFUQV9TSUdOQUxfQ0xBU1MpO1xuICAgICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgICBkZXNjcmlwdG9ycy5wdXNoKGJpbmRDbGFzcyhlbCwgY2xhc3NOYW1lLCBzaWcpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaGFzQXR0cikge1xuICAgICAgY29uc3QgYXR0clNwZWMgPSBlbC5nZXRBdHRyaWJ1dGUoREFUQV9TSUdOQUxfQVRUUik7XG4gICAgICBpZiAoYXR0clNwZWMpIHtcbiAgICAgICAgY29uc3QgYXR0ck5hbWVzID0gcGFyc2VTaWduYWxBdHRyU3BlYyhhdHRyU3BlYyk7XG4gICAgICAgIGlmIChhdHRyTmFtZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goYmluZEF0dHIoZWwsIGF0dHJOYW1lcywgc2lnKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWhhc0NsYXNzICYmICFoYXNBdHRyKSB7XG4gICAgICBkZXNjcmlwdG9ycy5wdXNoKGJpbmRUZXh0KGVsLCBzaWcpKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IGVsIG9mIHNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbChgWyR7REFUQV9TSUdOQUxfUkVOREVSfV1gKSkge1xuICAgIGNvbnN0IG5hbWUgPSBlbC5nZXRBdHRyaWJ1dGUoREFUQV9TSUdOQUxfUkVOREVSKTtcbiAgICBpZiAoIW5hbWUpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHNpZyA9IHNpZ25hbFJlZ2lzdHJ5LmdldChuYW1lKTtcbiAgICBpZiAoIXNpZykgY29udGludWU7XG5cbiAgICBkZXNjcmlwdG9ycy5wdXNoKGJpbmRSZW5kZXIoZWwsIHNpZywgbGlmZWN5Y2xlKSk7XG4gIH1cblxuICByZXR1cm4gZGVzY3JpcHRvcnM7XG59XG5cbi8qKlxuICogTGlmZWN5Y2xlIHNjb3BlIGZvciBhIGh5ZHJhdGVkIHNoYWRvdyByb290LlxuICpcbiAqIEtlZXBzIGVmZmVjdCBkaXNwb3NlcnMsIGV2ZW50IGxpc3RlbmVyIGNsZWFudXBzLCBhbmQgdGhlIGNhY2hlZCBWTm9kZSBpbiBvbmVcbiAqIHBsYWNlIHNvIHRoZXkgY2FuIGJlIGRpc3Bvc2VkIGFzIGEgdW5pdC4gVGhlIHNjb3BlIGRvZXMgbm90IGRlcGVuZCBvblxuICogT3BlbkVsZW1lbnQ7IGNhbGxlcnMgcHJvdmlkZSB0aGUgc2lnbmFsIHJlZ2lzdHJ5IGFuZCBvcHRpb25hbCByZW5kZXIgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBIeWRyYXRpb25TY29wZSB7XG4gICNlZmZlY3REaXNwb3NlcnM6IFNldDwoKSA9PiB2b2lkPiA9IG5ldyBTZXQoKTtcbiAgI2V2ZW50Q2xlYW51cHM6IEFycmF5PCgpID0+IHZvaWQ+ID0gW107XG4gICNzaWduYWxSZWdpc3RyeTogTWFwPHN0cmluZywgU2lnbmFsPHVua25vd24+PjtcbiAgI3JlbmRlcmVyOiBCaW5kaW5nUmVuZGVyZXI7XG4gICNyZW5kZXI/OiAoKSA9PiB1bmtub3duO1xuICAjY2FjaGVkVk5vZGU6IHVua25vd24gPSB1bmRlZmluZWQ7XG4gICNjYWNoZVZhbGlkID0gZmFsc2U7XG4gICNhY3RpdmUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEh5ZHJhdGlvblNjb3BlT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy4jc2lnbmFsUmVnaXN0cnkgPSBvcHRpb25zLnNpZ25hbFJlZ2lzdHJ5ID8/IG5ldyBNYXAoKTtcbiAgICB0aGlzLiNyZW5kZXJlciA9IG9wdGlvbnMucmVuZGVyZXIgPz8ge1xuICAgICAgcmVuZGVyOiAobm9kZSwgbGlmZWN5Y2xlKSA9PiByZW5kZXJUb0RvbShub2RlLCBsaWZlY3ljbGUpLFxuICAgIH07XG4gICAgdGhpcy4jcmVuZGVyID0gb3B0aW9ucy5yZW5kZXI7XG4gIH1cblxuICAvKiogQ3JlYXRlIGEgQmluZGluZ0xpZmVjeWNsZSBiYWNrZWQgYnkgdGhpcyBzY29wZSdzIGVmZmVjdCBkaXNwb3NlcnMuICovXG4gIGNyZWF0ZUxpZmVjeWNsZSgpOiBCaW5kaW5nTGlmZWN5Y2xlIHtcbiAgICByZXR1cm4geyBkaXNwb3NlcnM6IHRoaXMuI2VmZmVjdERpc3Bvc2VycyB9O1xuICB9XG5cbiAgLyoqIFNldCB0aGUgY2FjaGVkIFZOb2RlIGZvciBldmVudC1tYXJrZXIgaHlkcmF0aW9uLiAqL1xuICBzZXRDYWNoZWRWTm9kZSh2bm9kZTogdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMuI2NhY2hlZFZOb2RlID0gdm5vZGU7XG4gICAgdGhpcy4jY2FjaGVWYWxpZCA9IHRydWU7XG4gIH1cblxuICAvKiogUmVzb2x2ZSBkYXRhLXNpZ25hbCBtYXJrZXJzIGluIGEgc2hhZG93IHJvb3QgYW5kIGFjdGl2YXRlIGJpbmRpbmdzLiAqL1xuICBoeWRyYXRlKHNoYWRvd1Jvb3Q6IFNoYWRvd1Jvb3QsIHNpZ25hbFJlZ2lzdHJ5PzogTWFwPHN0cmluZywgU2lnbmFsPHVua25vd24+Pik6IHZvaWQge1xuICAgIGlmICghdGhpcy4jYWN0aXZlKSByZXR1cm47XG5cbiAgICBjb25zdCByZWdpc3RyeSA9IHNpZ25hbFJlZ2lzdHJ5ID8/IHRoaXMuI3NpZ25hbFJlZ2lzdHJ5O1xuICAgIGNvbnN0IGxpZmVjeWNsZTogQmluZGluZ0xpZmVjeWNsZSA9IHsgZGlzcG9zZXJzOiB0aGlzLiNlZmZlY3REaXNwb3NlcnMgfTtcbiAgICBjb25zdCBkZXNjcmlwdG9ycyA9IGNvbGxlY3RIeWRyYXRpb25CaW5kaW5ncyhzaGFkb3dSb290LCByZWdpc3RyeSwgbGlmZWN5Y2xlKTtcblxuICAgIGZvciAoY29uc3QgZGVzYyBvZiBkZXNjcmlwdG9ycykge1xuICAgICAgaWYgKGRlc2Mua2luZCA9PT0gJ3NpZ25hbC1yZW5kZXInKSB7XG4gICAgICAgIC8vIFByZXNlcnZlIHRoZSBvcmlnaW5hbCBEU0QgaHlkcmF0aW9uIGNvbnRyYWN0OiByZXBsYWNlIGFueSBTU1IgY29udGVudFxuICAgICAgICAvLyB3aXRoIHRoZSBjbGllbnQtcmVuZGVyZWQgVk5vZGUgdHJlZSBvbiBmaXJzdCBhY3RpdmF0aW9uLlxuICAgICAgICB3aGlsZSAoZGVzYy5lbC5maXJzdENoaWxkKSBkZXNjLmVsLnJlbW92ZUNoaWxkKGRlc2MuZWwuZmlyc3RDaGlsZCk7XG4gICAgICB9XG4gICAgICBhcHBseUJpbmRpbmdEZXNjcmlwdG9yKGRlc2MsIGxpZmVjeWNsZSwgdGhpcy4jcmVuZGVyZXIpO1xuICAgIH1cblxuICAgIC8vIEJpbmQgZGVjbGFyYXRpdmUgZXZlbnQgbWFya2VycyBmcm9tIHRoZSBjYWNoZWQgb3IgZnJlc2hseS1yZW5kZXJlZCBWTm9kZS5cbiAgICBjb25zdCB2bm9kZSA9IHRoaXMuI3Jlc29sdmVWTm9kZSgpO1xuICAgIGlmIChpc1ZOb2RlKHZub2RlKSkge1xuICAgICAgY29uc3QgZXZlbnRCaW5kaW5ncyA9IGNvbGxlY3RFdmVudEJpbmRpbmdzKHZub2RlKTtcbiAgICAgIGh5ZHJhdGVFdmVudE1hcmtlcnMoXG4gICAgICAgIHNoYWRvd1Jvb3QsXG4gICAgICAgIGV2ZW50QmluZGluZ3MsXG4gICAgICAgIHRoaXMuI2V2ZW50Q2xlYW51cHMsXG4gICAgICAgIHNoYWRvd1Jvb3QuaG9zdCA/PyB1bmRlZmluZWQsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENocm9taXVtIERTRCBsYXlvdXQgZml4OiBmb3JjZSByZWZsb3cgd2l0aG91dCBET00gcmVidWlsZC5cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdm9pZCAoc2hhZG93Um9vdC5ob3N0IGFzIEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkKT8ub2Zmc2V0SGVpZ2h0O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIERpc3Bvc2UgYWxsIGVmZmVjdHMgYW5kIGV2ZW50IGxpc3RlbmVycyB0cmFja2VkIGJ5IHRoaXMgc2NvcGUuICovXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLiNhY3RpdmUpIHJldHVybjtcbiAgICB0aGlzLiNhY3RpdmUgPSBmYWxzZTtcblxuICAgIHRoaXMuI2NsZWFyQmluZGluZ3MoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBlZmZlY3RzIGFuZCBldmVudCBsaXN0ZW5lcnMgd2l0aG91dCBkZWFjdGl2YXRpbmcgdGhlIHNjb3BlLlxuICAgKlxuICAgKiBVc2VkIGJlZm9yZSByZS1yZW5kZXJpbmcgb3IgcmUtaHlkcmF0aW5nIGFuIGV4aXN0aW5nIHNoYWRvdyByb290IHNvIHRoZVxuICAgKiBzY29wZSBjYW4gYWNjZXB0IGEgZnJlc2ggc2V0IG9mIGJpbmRpbmdzLiBEb2VzIG5vdCBnYXRlIG9uICNhY3RpdmUgc29cbiAgICogdGhhdCBhIGRpc2Nvbm5lY3RlZC10aGVuLXJlY29ubmVjdGVkIGVsZW1lbnQgY2FuIGJlIHJlLWh5ZHJhdGVkLlxuICAgKi9cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy4jY2xlYXJCaW5kaW5ncygpO1xuICAgIHRoaXMuI2FjdGl2ZSA9IHRydWU7XG4gIH1cblxuICAjY2xlYXJCaW5kaW5ncygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGQgb2YgdGhpcy4jZWZmZWN0RGlzcG9zZXJzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBkKCk7XG4gICAgICB9IGNhdGNoIHsgLyogaWdub3JlIGRpc3Bvc2UgZXJyb3JzICovIH1cbiAgICB9XG4gICAgdGhpcy4jZWZmZWN0RGlzcG9zZXJzLmNsZWFyKCk7XG5cbiAgICBmb3IgKGNvbnN0IGYgb2YgdGhpcy4jZXZlbnRDbGVhbnVwcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZigpO1xuICAgICAgfSBjYXRjaCB7IC8qIGlnbm9yZSBjbGVhbnVwIGVycm9ycyAqLyB9XG4gICAgfVxuICAgIHRoaXMuI2V2ZW50Q2xlYW51cHMgPSBbXTtcblxuICAgIHRoaXMuI2NhY2hlZFZOb2RlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuI2NhY2hlVmFsaWQgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKiBEZWJ1ZyBvYnNlcnZhYmxlcyBmb3IgdGVzdGluZyBhbmQgZGV2dG9vbHMuICovXG4gIGdldCBkZWJ1ZygpOiBIeWRyYXRpb25TY29wZURlYnVnIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNBY3RpdmU6IHRoaXMuI2FjdGl2ZSxcbiAgICAgIGVmZmVjdENvdW50OiB0aGlzLiNlZmZlY3REaXNwb3NlcnMuc2l6ZSxcbiAgICAgIGV2ZW50Q2xlYW51cENvdW50OiB0aGlzLiNldmVudENsZWFudXBzLmxlbmd0aCxcbiAgICB9O1xuICB9XG5cbiAgI3Jlc29sdmVWTm9kZSgpOiB1bmtub3duIHtcbiAgICBpZiAodGhpcy4jY2FjaGVWYWxpZCkgcmV0dXJuIHRoaXMuI2NhY2hlZFZOb2RlO1xuICAgIGlmICh0aGlzLiNyZW5kZXIpIHtcbiAgICAgIGNvbnN0IHZub2RlID0gdGhpcy4jcmVuZGVyKCk7XG4gICAgICB0aGlzLiNjYWNoZWRWTm9kZSA9IHZub2RlO1xuICAgICAgdGhpcy4jY2FjaGVWYWxpZCA9IHRydWU7XG4gICAgICByZXR1cm4gdm5vZGU7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztDQVVDLEdBR0QsU0FBUyxzQkFBc0IsUUFBUSwwQkFBMEI7QUFDakUsU0FBUyxvQkFBb0IsRUFBRSxtQkFBbUIsUUFBUSx1QkFBdUI7QUFDakYsU0FBUyxXQUFXLFFBQVEsc0JBQXNCO0FBQ2xELFNBQVMsT0FBTyxRQUFRLGFBQWE7QUFDckMsU0FBUyxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLFFBQVEsMEJBQTBCO0FBRXBGLFNBQ0UsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLG1CQUFtQixRQUNkLDBDQUEwQztBQW1CakQsMkVBQTJFLEdBQzNFLFNBQVMseUJBQ1AsVUFBc0IsRUFDdEIsY0FBNEMsRUFDNUMsU0FBMkI7RUFFM0IsTUFBTSxjQUFtQyxFQUFFO0VBRTNDLEtBQUssTUFBTSxNQUFNLFdBQVcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRztJQUNoRSxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUM7SUFDN0IsSUFBSSxDQUFDLE1BQU07SUFDWCxNQUFNLE1BQU0sZUFBZSxHQUFHLENBQUM7SUFDL0IsSUFBSSxDQUFDLEtBQUs7SUFFVixNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUM7SUFD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
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9vcGVuZWxlbWVudC9vcGVuZWxlbWVudC9wYWNrYWdlcy9jb3JlL3NyYy9oeWRyYXRpb24tc2NvcGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAb3BlbmVsZW1lbnQvY29yZS9oeWRyYXRlIC0gSHlkcmF0aW9uU2NvcGUgdmFsdWUgb2JqZWN0LlxuICpcbiAqIFN0YW5kYWxvbmUgY29udGFpbmVyIGZvciB0aGUgbGlmZWN5Y2xlIHN0YXRlIG9mIGEgaHlkcmF0ZWQgc2hhZG93IHJvb3QuXG4gKiBPd25zIGVmZmVjdCBkaXNwb3NlcnMsIGV2ZW50IGNsZWFudXBzLCBhbmQgdGhlIGNhY2hlZCBWTm9kZSB1c2VkIGZvclxuICogZGVjbGFyYXRpdmUgZXZlbnQgbWFya2VyIGJpbmRpbmcuIERlc2lnbmVkIHRvIGJlIHVzYWJsZSB3aXRob3V0IGFuXG4gKiBPcGVuRWxlbWVudCBpbnN0YW5jZSBzbyB0aGlyZC1wYXJ0eSBmcmFtZXdvcmsgcnVudGltZXMgY2FuIGh5ZHJhdGUgdGhlXG4gKiBzYW1lIERTRCBzaGFkb3cgcm9vdCBsYXRlci5cbiAqXG4gKiBAbW9kdWxlIEBvcGVuZWxlbWVudC9jb3JlL2h5ZHJhdGVcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFNpZ25hbCB9IGZyb20gJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9zaWduYWwnO1xuaW1wb3J0IHsgYXBwbHlCaW5kaW5nRGVzY3JpcHRvciB9IGZyb20gJy4vYmluZGluZy1hY3RpdmF0aW9uLmpzJztcbmltcG9ydCB7IGNvbGxlY3RFdmVudEJpbmRpbmdzLCBoeWRyYXRlRXZlbnRNYXJrZXJzIH0gZnJvbSAnLi9ldmVudC1oeWRyYXRpb24uanMnO1xuaW1wb3J0IHsgcmVuZGVyVG9Eb20gfSBmcm9tICcuL2pzeC1yZW5kZXItZG9tLmpzJztcbmltcG9ydCB7IGlzVk5vZGUgfSBmcm9tICcuL3Zub2RlLmpzJztcbmltcG9ydCB7IGJpbmRBdHRyLCBiaW5kQ2xhc3MsIGJpbmRSZW5kZXIsIGJpbmRUZXh0IH0gZnJvbSAnLi9iaW5kaW5nLWRlc2NyaXB0b3IuanMnO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nRGVzY3JpcHRvciwgQmluZGluZ0xpZmVjeWNsZSwgQmluZGluZ1JlbmRlcmVyIH0gZnJvbSAnLi9iaW5kaW5nLWRlc2NyaXB0b3IuanMnO1xuaW1wb3J0IHtcbiAgREFUQV9TSUdOQUwsXG4gIERBVEFfU0lHTkFMX0FUVFIsXG4gIERBVEFfU0lHTkFMX0NMQVNTLFxuICBEQVRBX1NJR05BTF9SRU5ERVIsXG4gIHBhcnNlU2lnbmFsQXR0clNwZWMsXG59IGZyb20gJ0BvcGVuZWxlbWVudC9wcm90b2NvbC9oeWRyYXRpb24tbWFya2Vycyc7XG5cbi8qKiBPcHRpb25zIGZvciBjcmVhdGluZyBhIEh5ZHJhdGlvblNjb3BlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBIeWRyYXRpb25TY29wZU9wdGlvbnMge1xuICAvKiogU2lnbmFsIHJlZ2lzdHJ5IHVzZWQgdG8gcmVzb2x2ZSBkYXRhLXNpZ25hbCBtYXJrZXJzLiAqL1xuICBzaWduYWxSZWdpc3RyeT86IE1hcDxzdHJpbmcsIFNpZ25hbDx1bmtub3duPj47XG4gIC8qKiBSZW5kZXJlciB1c2VkIGZvciBzaWduYWwtcmVuZGVyIGFuZCBldmVudC1tYXJrZXIgVk5vZGUgcmVuZGVyaW5nLiAqL1xuICByZW5kZXJlcj86IEJpbmRpbmdSZW5kZXJlcjtcbiAgLyoqIFJlbmRlciBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIHRoZSBWTm9kZSB1c2VkIGZvciBldmVudC1tYXJrZXIgaHlkcmF0aW9uLiAqL1xuICByZW5kZXI/OiAoKSA9PiB1bmtub3duO1xufVxuXG4vKiogUmVhZC1vbmx5IG9ic2VydmFibGVzIGV4cG9zZWQgZm9yIGRlYnVnZ2luZy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHlkcmF0aW9uU2NvcGVEZWJ1ZyB7XG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICBlZmZlY3RDb3VudDogbnVtYmVyO1xuICBldmVudENsZWFudXBDb3VudDogbnVtYmVyO1xufVxuXG4vKiogQ29sbGVjdCBiaW5kaW5nIGRlc2NyaXB0b3JzIGZyb20gZGF0YS1zaWduYWwgbWFya2VycyBpbiBhIHNoYWRvdyByb290LiAqL1xuZnVuY3Rpb24gY29sbGVjdEh5ZHJhdGlvbkJpbmRpbmdzKFxuICBzaGFkb3dSb290OiBTaGFkb3dSb290LFxuICBzaWduYWxSZWdpc3RyeTogTWFwPHN0cmluZywgU2lnbmFsPHVua25vd24+PixcbiAgbGlmZWN5Y2xlOiBCaW5kaW5nTGlmZWN5Y2xlLFxuKTogQmluZGluZ0Rlc2NyaXB0b3JbXSB7XG4gIGNvbnN0IGRlc2NyaXB0b3JzOiBCaW5kaW5nRGVzY3JpcHRvcltdID0gW107XG5cbiAgZm9yIChjb25zdCBlbCBvZiBzaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoYFske0RBVEFfU0lHTkFMfV1gKSkge1xuICAgIGNvbnN0IG5hbWUgPSBlbC5nZXRBdHRyaWJ1dGUoREFUQV9TSUdOQUwpO1xuICAgIGlmICghbmFtZSkgY29udGludWU7XG4gICAgY29uc3Qgc2lnID0gc2lnbmFsUmVnaXN0cnkuZ2V0KG5hbWUpO1xuICAgIGlmICghc2lnKSBjb250aW51ZTtcblxuICAgIGNvbnN0IGhhc0NsYXNzID0gZWwuaGFzQXR0cmlidXRlKERBVEFfU0lHTkFMX0NMQVNTKTtcbiAgICBjb25zdCBoYXNBdHRyID0gZWwuaGFzQXR0cmlidXRlKERBVEFfU0lHTkFMX0FUVFIpO1xuXG4gICAgaWYgKGhhc0NsYXNzKSB7XG4gICAgICBjb25zdCBjbGFzc05hbWUgPSBlbC5nZXRBdHRyaWJ1dGUoREFUQV9TSUdOQUxfQ0xBU1MpO1xuICAgICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgICBkZXNjcmlwdG9ycy5wdXNoKGJpbmRDbGFzcyhlbCwgY2xhc3NOYW1lLCBzaWcpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaGFzQXR0cikge1xuICAgICAgY29uc3QgYXR0clNwZWMgPSBlbC5nZXRBdHRyaWJ1dGUoREFUQV9TSUdOQUxfQVRUUik7XG4gICAgICBpZiAoYXR0clNwZWMpIHtcbiAgICAgICAgY29uc3QgYXR0ck5hbWVzID0gcGFyc2VTaWduYWxBdHRyU3BlYyhhdHRyU3BlYyk7XG4gICAgICAgIGlmIChhdHRyTmFtZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goYmluZEF0dHIoZWwsIGF0dHJOYW1lcywgc2lnKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWhhc0NsYXNzICYmICFoYXNBdHRyKSB7XG4gICAgICBkZXNjcmlwdG9ycy5wdXNoKGJpbmRUZXh0KGVsLCBzaWcpKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IGVsIG9mIHNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbChgWyR7REFUQV9TSUdOQUxfUkVOREVSfV1gKSkge1xuICAgIGNvbnN0IG5hbWUgPSBlbC5nZXRBdHRyaWJ1dGUoREFUQV9TSUdOQUxfUkVOREVSKTtcbiAgICBpZiAoIW5hbWUpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHNpZyA9IHNpZ25hbFJlZ2lzdHJ5LmdldChuYW1lKTtcbiAgICBpZiAoIXNpZykgY29udGludWU7XG5cbiAgICBkZXNjcmlwdG9ycy5wdXNoKGJpbmRSZW5kZXIoZWwsIHNpZywgbGlmZWN5Y2xlKSk7XG4gIH1cblxuICByZXR1cm4gZGVzY3JpcHRvcnM7XG59XG5cbi8qKlxuICogTGlmZWN5Y2xlIHNjb3BlIGZvciBhIGh5ZHJhdGVkIHNoYWRvdyByb290LlxuICpcbiAqIEtlZXBzIGVmZmVjdCBkaXNwb3NlcnMsIGV2ZW50IGxpc3RlbmVyIGNsZWFudXBzLCBhbmQgdGhlIGNhY2hlZCBWTm9kZSBpbiBvbmVcbiAqIHBsYWNlIHNvIHRoZXkgY2FuIGJlIGRpc3Bvc2VkIGFzIGEgdW5pdC4gVGhlIHNjb3BlIGRvZXMgbm90IGRlcGVuZCBvblxuICogT3BlbkVsZW1lbnQ7IGNhbGxlcnMgcHJvdmlkZSB0aGUgc2lnbmFsIHJlZ2lzdHJ5IGFuZCBvcHRpb25hbCByZW5kZXIgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBIeWRyYXRpb25TY29wZSB7XG4gICNlZmZlY3REaXNwb3NlcnM6IFNldDwoKSA9PiB2b2lkPiA9IG5ldyBTZXQoKTtcbiAgI2V2ZW50Q2xlYW51cHM6IEFycmF5PCgpID0+IHZvaWQ+ID0gW107XG4gICNzaWduYWxSZWdpc3RyeTogTWFwPHN0cmluZywgU2lnbmFsPHVua25vd24+PjtcbiAgI3JlbmRlcmVyOiBCaW5kaW5nUmVuZGVyZXI7XG4gICNyZW5kZXI/OiAoKSA9PiB1bmtub3duO1xuICAjY2FjaGVkVk5vZGU6IHVua25vd24gPSB1bmRlZmluZWQ7XG4gICNjYWNoZVZhbGlkID0gZmFsc2U7XG4gICNhY3RpdmUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEh5ZHJhdGlvblNjb3BlT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy4jc2lnbmFsUmVnaXN0cnkgPSBvcHRpb25zLnNpZ25hbFJlZ2lzdHJ5ID8/IG5ldyBNYXAoKTtcbiAgICB0aGlzLiNyZW5kZXJlciA9IG9wdGlvbnMucmVuZGVyZXIgPz8ge1xuICAgICAgcmVuZGVyOiAobm9kZSwgbGlmZWN5Y2xlKSA9PiByZW5kZXJUb0RvbShub2RlLCBsaWZlY3ljbGUpLFxuICAgIH07XG4gICAgdGhpcy4jcmVuZGVyID0gb3B0aW9ucy5yZW5kZXI7XG4gIH1cblxuICAvKiogQ3JlYXRlIGEgQmluZGluZ0xpZmVjeWNsZSBiYWNrZWQgYnkgdGhpcyBzY29wZSdzIGVmZmVjdCBkaXNwb3NlcnMuICovXG4gIGNyZWF0ZUxpZmVjeWNsZSgpOiBCaW5kaW5nTGlmZWN5Y2xlIHtcbiAgICByZXR1cm4geyBkaXNwb3NlcnM6IHRoaXMuI2VmZmVjdERpc3Bvc2VycyB9O1xuICB9XG5cbiAgLyoqIFNldCB0aGUgY2FjaGVkIFZOb2RlIGZvciBldmVudC1tYXJrZXIgaHlkcmF0aW9uLiAqL1xuICBzZXRDYWNoZWRWTm9kZSh2bm9kZTogdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMuI2NhY2hlZFZOb2RlID0gdm5vZGU7XG4gICAgdGhpcy4jY2FjaGVWYWxpZCA9IHRydWU7XG4gIH1cblxuICAvKiogUmVzb2x2ZSBkYXRhLXNpZ25hbCBtYXJrZXJzIGluIGEgc2hhZG93IHJvb3QgYW5kIGFjdGl2YXRlIGJpbmRpbmdzLiAqL1xuICBoeWRyYXRlKFxuICAgIHNoYWRvd1Jvb3Q6IFNoYWRvd1Jvb3QsXG4gICAgc2lnbmFsUmVnaXN0cnk/OiBNYXA8c3RyaW5nLCBTaWduYWw8dW5rbm93bj4+LFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI2FjdGl2ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgcmVnaXN0cnkgPSBzaWduYWxSZWdpc3RyeSA/PyB0aGlzLiNzaWduYWxSZWdpc3RyeTtcbiAgICBjb25zdCBsaWZlY3ljbGU6IEJpbmRpbmdMaWZlY3ljbGUgPSB7IGRpc3Bvc2VyczogdGhpcy4jZWZmZWN0RGlzcG9zZXJzIH07XG4gICAgY29uc3QgZGVzY3JpcHRvcnMgPSBjb2xsZWN0SHlkcmF0aW9uQmluZGluZ3MoXG4gICAgICBzaGFkb3dSb290LFxuICAgICAgcmVnaXN0cnksXG4gICAgICBsaWZlY3ljbGUsXG4gICAgKTtcblxuICAgIGZvciAoY29uc3QgZGVzYyBvZiBkZXNjcmlwdG9ycykge1xuICAgICAgaWYgKGRlc2Mua2luZCA9PT0gJ3NpZ25hbC1yZW5kZXInKSB7XG4gICAgICAgIC8vIFByZXNlcnZlIHRoZSBvcmlnaW5hbCBEU0QgaHlkcmF0aW9uIGNvbnRyYWN0OiByZXBsYWNlIGFueSBTU1IgY29udGVudFxuICAgICAgICAvLyB3aXRoIHRoZSBjbGllbnQtcmVuZGVyZWQgVk5vZGUgdHJlZSBvbiBmaXJzdCBhY3RpdmF0aW9uLlxuICAgICAgICB3aGlsZSAoZGVzYy5lbC5maXJzdENoaWxkKSBkZXNjLmVsLnJlbW92ZUNoaWxkKGRlc2MuZWwuZmlyc3RDaGlsZCk7XG4gICAgICB9XG4gICAgICBhcHBseUJpbmRpbmdEZXNjcmlwdG9yKGRlc2MsIGxpZmVjeWNsZSwgdGhpcy4jcmVuZGVyZXIpO1xuICAgIH1cblxuICAgIC8vIEJpbmQgZGVjbGFyYXRpdmUgZXZlbnQgbWFya2VycyBmcm9tIHRoZSBjYWNoZWQgb3IgZnJlc2hseS1yZW5kZXJlZCBWTm9kZS5cbiAgICBjb25zdCB2bm9kZSA9IHRoaXMuI3Jlc29sdmVWTm9kZSgpO1xuICAgIGlmIChpc1ZOb2RlKHZub2RlKSkge1xuICAgICAgY29uc3QgZXZlbnRCaW5kaW5ncyA9IGNvbGxlY3RFdmVudEJpbmRpbmdzKHZub2RlKTtcbiAgICAgIGh5ZHJhdGVFdmVudE1hcmtlcnMoXG4gICAgICAgIHNoYWRvd1Jvb3QsXG4gICAgICAgIGV2ZW50QmluZGluZ3MsXG4gICAgICAgIHRoaXMuI2V2ZW50Q2xlYW51cHMsXG4gICAgICAgIHNoYWRvd1Jvb3QuaG9zdCA/PyB1bmRlZmluZWQsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENocm9taXVtIERTRCBsYXlvdXQgZml4OiBmb3JjZSByZWZsb3cgd2l0aG91dCBET00gcmVidWlsZC5cbiAgICBnbG9iYWxUaGlzLnJlcXVlc3RBbmltYXRpb25GcmFtZT8uKCgpID0+IHtcbiAgICAgIHZvaWQgKHNoYWRvd1Jvb3QuaG9zdCBhcyBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCk/Lm9mZnNldEhlaWdodDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBEaXNwb3NlIGFsbCBlZmZlY3RzIGFuZCBldmVudCBsaXN0ZW5lcnMgdHJhY2tlZCBieSB0aGlzIHNjb3BlLiAqL1xuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy4jYWN0aXZlKSByZXR1cm47XG4gICAgdGhpcy4jYWN0aXZlID0gZmFsc2U7XG5cbiAgICB0aGlzLiNjbGVhckJpbmRpbmdzKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgZWZmZWN0cyBhbmQgZXZlbnQgbGlzdGVuZXJzIHdpdGhvdXQgZGVhY3RpdmF0aW5nIHRoZSBzY29wZS5cbiAgICpcbiAgICogVXNlZCBiZWZvcmUgcmUtcmVuZGVyaW5nIG9yIHJlLWh5ZHJhdGluZyBhbiBleGlzdGluZyBzaGFkb3cgcm9vdCBzbyB0aGVcbiAgICogc2NvcGUgY2FuIGFjY2VwdCBhIGZyZXNoIHNldCBvZiBiaW5kaW5ncy4gRG9lcyBub3QgZ2F0ZSBvbiAjYWN0aXZlIHNvXG4gICAqIHRoYXQgYSBkaXNjb25uZWN0ZWQtdGhlbi1yZWNvbm5lY3RlZCBlbGVtZW50IGNhbiBiZSByZS1oeWRyYXRlZC5cbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuI2NsZWFyQmluZGluZ3MoKTtcbiAgICB0aGlzLiNhY3RpdmUgPSB0cnVlO1xuICB9XG5cbiAgI2NsZWFyQmluZGluZ3MoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBkIG9mIHRoaXMuI2VmZmVjdERpc3Bvc2Vycykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZCgpO1xuICAgICAgfSBjYXRjaCB7IC8qIGlnbm9yZSBkaXNwb3NlIGVycm9ycyAqLyB9XG4gICAgfVxuICAgIHRoaXMuI2VmZmVjdERpc3Bvc2Vycy5jbGVhcigpO1xuXG4gICAgZm9yIChjb25zdCBmIG9mIHRoaXMuI2V2ZW50Q2xlYW51cHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGYoKTtcbiAgICAgIH0gY2F0Y2ggeyAvKiBpZ25vcmUgY2xlYW51cCBlcnJvcnMgKi8gfVxuICAgIH1cbiAgICB0aGlzLiNldmVudENsZWFudXBzID0gW107XG5cbiAgICB0aGlzLiNjYWNoZWRWTm9kZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLiNjYWNoZVZhbGlkID0gZmFsc2U7XG4gIH1cblxuICAvKiogRGVidWcgb2JzZXJ2YWJsZXMgZm9yIHRlc3RpbmcgYW5kIGRldnRvb2xzLiAqL1xuICBnZXQgZGVidWcoKTogSHlkcmF0aW9uU2NvcGVEZWJ1ZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzQWN0aXZlOiB0aGlzLiNhY3RpdmUsXG4gICAgICBlZmZlY3RDb3VudDogdGhpcy4jZWZmZWN0RGlzcG9zZXJzLnNpemUsXG4gICAgICBldmVudENsZWFudXBDb3VudDogdGhpcy4jZXZlbnRDbGVhbnVwcy5sZW5ndGgsXG4gICAgfTtcbiAgfVxuXG4gICNyZXNvbHZlVk5vZGUoKTogdW5rbm93biB7XG4gICAgaWYgKHRoaXMuI2NhY2hlVmFsaWQpIHJldHVybiB0aGlzLiNjYWNoZWRWTm9kZTtcbiAgICBpZiAodGhpcy4jcmVuZGVyKSB7XG4gICAgICBjb25zdCB2bm9kZSA9IHRoaXMuI3JlbmRlcigpO1xuICAgICAgdGhpcy4jY2FjaGVkVk5vZGUgPSB2bm9kZTtcbiAgICAgIHRoaXMuI2NhY2hlVmFsaWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIHZub2RlO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Q0FVQyxHQUdELFNBQVMsc0JBQXNCLFFBQVEsMEJBQTBCO0FBQ2pFLFNBQVMsb0JBQW9CLEVBQUUsbUJBQW1CLFFBQVEsdUJBQXVCO0FBQ2pGLFNBQVMsV0FBVyxRQUFRLHNCQUFzQjtBQUNsRCxTQUFTLE9BQU8sUUFBUSxhQUFhO0FBQ3JDLFNBQVMsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxRQUFRLDBCQUEwQjtBQUVwRixTQUNFLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixtQkFBbUIsUUFDZCwwQ0FBMEM7QUFtQmpELDJFQUEyRSxHQUMzRSxTQUFTLHlCQUNQLFVBQXNCLEVBQ3RCLGNBQTRDLEVBQzVDLFNBQTJCO0VBRTNCLE1BQU0sY0FBbUMsRUFBRTtFQUUzQyxLQUFLLE1BQU0sTUFBTSxXQUFXLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUc7SUFDaEUsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDO0lBQzdCLElBQUksQ0FBQyxNQUFNO0lBQ1gsTUFBTSxNQUFNLGVBQWUsR0FBRyxD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
|