govuk_publishing_components 12.19.0 → 12.20.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/views/govuk_publishing_components/components/_error_alert.html.erb +2 -1
- data/app/views/govuk_publishing_components/components/_error_summary.html.erb +10 -9
- data/app/views/govuk_publishing_components/components/docs/error_alert.yml +6 -0
- data/app/views/govuk_publishing_components/components/docs/error_summary.yml +8 -0
- data/lib/govuk_publishing_components/version.rb +1 -1
- data/node_modules/preact/README.md +14 -2
- data/node_modules/preact/dist/preact.d.ts +26 -10
- data/node_modules/preact/dist/preact.dev.js +21 -12
- data/node_modules/preact/dist/preact.dev.js.map +1 -1
- data/node_modules/preact/dist/preact.js +17 -11
- data/node_modules/preact/dist/preact.js.flow +14 -2
- data/node_modules/preact/dist/preact.js.map +1 -1
- data/node_modules/preact/dist/preact.min.js +1 -1
- data/node_modules/preact/dist/preact.min.js.map +1 -1
- data/node_modules/preact/dist/preact.mjs +22 -13
- data/node_modules/preact/dist/preact.mjs.map +1 -1
- data/node_modules/preact/package.json +31 -40
- data/node_modules/preact/src/dom/index.js +3 -2
- data/node_modules/preact/src/preact.d.ts +26 -10
- data/node_modules/preact/src/preact.js +6 -0
- data/node_modules/preact/src/preact.js.flow +14 -2
- data/node_modules/preact/src/render-queue.js +2 -3
- data/node_modules/preact/src/util.js +11 -0
- data/node_modules/preact/src/vdom/component.js +5 -5
- data/node_modules/preact/src/vdom/diff.js +3 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c05f837046ce0eb8bf88112196573cb3f6544730383a490092288461186e0234
|
4
|
+
data.tar.gz: 1d661175ec5a8b7a5767e469fdb0ed829fbb1221e5c81dd4b149185adf6ac2e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '03228cae2a8df77b43367af87028b1997c02053dbe65fe8fe3db6756c9d55dfa9d239282d6ee73571722ccd487187f4db5b1535482d4663a76caf3689ad3a529'
|
7
|
+
data.tar.gz: 5c67eff894869af5ebade7dcd9cd0eb5403fd0e5a1c8e8f968f10748cf50102cee3093a467f67891d66561e0dac3a0a8694fc5aec0354169a8a24115d12c5833
|
@@ -1,6 +1,7 @@
|
|
1
1
|
<% description ||= nil %>
|
2
|
+
<% data_attributes ||= {} %>
|
2
3
|
|
3
|
-
<%= tag.div class: "gem-c-error-alert", data: { module: "initial-focus" }, role: "alert", tabindex: "-1" do %>
|
4
|
+
<%= tag.div class: "gem-c-error-alert", data: { module: "initial-focus" }.merge(data_attributes), role: "alert", tabindex: "-1" do %>
|
4
5
|
<% if description.present? %>
|
5
6
|
<%= tag.h2 message, class: "gem-c-error-summary__title" %>
|
6
7
|
<%= tag.div description, class: "gem-c-error-summary__body" %>
|
@@ -2,20 +2,21 @@
|
|
2
2
|
id ||= "error-summary-#{SecureRandom.hex(4)}"
|
3
3
|
title ||= false
|
4
4
|
description ||= false
|
5
|
+
data_attributes ||= {}
|
5
6
|
items ||= []
|
6
7
|
title_id ||= "error-summary-title-#{SecureRandom.hex(4)}"
|
7
8
|
if items.empty? && !title
|
8
9
|
raise ArgumentError, "The error_summary component needs at least one item or a title in order to render."
|
9
10
|
end
|
10
11
|
%>
|
11
|
-
|
12
|
-
class
|
13
|
-
data
|
14
|
-
aria
|
15
|
-
role
|
16
|
-
tabindex
|
17
|
-
id
|
18
|
-
|
12
|
+
<%= tag.div(
|
13
|
+
class: "gem-c-error-summary",
|
14
|
+
data: { module: "error-summary" }.merge(data_attributes),
|
15
|
+
aria: { labelledby: title_id },
|
16
|
+
role: "alert",
|
17
|
+
tabindex: -1,
|
18
|
+
id: id,
|
19
|
+
) do %>
|
19
20
|
<% if title %>
|
20
21
|
<h2 class="gem-c-error-summary__title" id="<%= title_id %>">
|
21
22
|
<%= title %>
|
@@ -42,4 +43,4 @@
|
|
42
43
|
</ul>
|
43
44
|
<% end %>
|
44
45
|
</div>
|
45
|
-
|
46
|
+
<% end %>
|
@@ -21,3 +21,9 @@ examples:
|
|
21
21
|
orci. Proin semper porttitor ipsum, vel maximus justo rutrum vel.
|
22
22
|
Morbi volutpat facilisis libero. Donec posuere eget odio non egestas.
|
23
23
|
Nullam sed neque quis turpis.
|
24
|
+
with_data_attributes:
|
25
|
+
data:
|
26
|
+
message: Message to alert the user to a unsuccessful action goes here
|
27
|
+
description: A further description
|
28
|
+
data_attributes:
|
29
|
+
tracking: GTM-123AB
|
@@ -24,3 +24,11 @@ examples:
|
|
24
24
|
- text: Descriptive link to the question with an error 2
|
25
25
|
href: '#example-error-2'
|
26
26
|
- text: Description of error without link
|
27
|
+
with_data_attributes:
|
28
|
+
data:
|
29
|
+
title: Message to alert the user to a problem goes here
|
30
|
+
description: Optional description of the errors and how to correct them
|
31
|
+
data_attributes:
|
32
|
+
tracking: GTM-123AB
|
33
|
+
items:
|
34
|
+
- text: Descriptive link to the question with an error 1
|
@@ -1,6 +1,8 @@
|
|
1
1
|
<p align="center">
|
2
2
|
<a href="https://preactjs.com" target="_blank">
|
3
|
-
|
3
|
+
|
4
|
+
![Preact](https://raw.githubusercontent.com/developit/preact/8b0bcc927995c188eca83cba30fbc83491cc0b2f/logo.svg?sanitize=true "Preact")
|
5
|
+
|
4
6
|
</a>
|
5
7
|
</p>
|
6
8
|
<p align="center">Fast <b>3kB</b> alternative to React with the same modern API.</p>
|
@@ -66,6 +68,7 @@ Preact supports modern browsers and IE9+:
|
|
66
68
|
- [**Preact Hacker News**](https://hn.kristoferbaxter.com) _([GitHub Project](https://github.com/kristoferbaxter/preact-hn))_
|
67
69
|
- [**Play.cash**](https://play.cash) :notes: _([GitHub Project](https://github.com/feross/play.cash))_
|
68
70
|
- [**BitMidi**](https://bitmidi.com/) 🎹 Wayback machine for free MIDI files _([GitHub Project](https://github.com/feross/bitmidi.com))_
|
71
|
+
- [**Ultimate Guitar**](https://www.ultimate-guitar.com) 🎸speed boosted by Preact.
|
69
72
|
- [**ESBench**](http://esbench.com) is built using Preact.
|
70
73
|
- [**BigWebQuiz**](https://bigwebquiz.com) _([GitHub Project](https://github.com/jakearchibald/big-web-quiz))_
|
71
74
|
- [**Nectarine.rocks**](http://nectarine.rocks) _([GitHub Project](https://github.com/developit/nectarine))_ :peach:
|
@@ -73,7 +76,6 @@ Preact supports modern browsers and IE9+:
|
|
73
76
|
- [**OSS.Ninja**](https://oss.ninja) _([GitHub Project](https://github.com/developit/oss.ninja))_
|
74
77
|
- [**GuriVR**](https://gurivr.com) _([GitHub Project](https://github.com/opennewslabs/guri-vr))_
|
75
78
|
- [**Color Picker**](https://colors.now.sh) _([GitHub Project](https://github.com/lukeed/colors-app))_ :art:
|
76
|
-
- [**Rainbow Explorer**](https://use-the-platform.com/rainbow-explorer/) _([GitHub Project](https://github.com/vaneenige/rainbow-explorer/))_ :rainbow:
|
77
79
|
- [**Offline Gallery**](https://use-the-platform.com/offline-gallery/) _([GitHub Project](https://github.com/vaneenige/offline-gallery/))_ :balloon:
|
78
80
|
- [**Periodic Weather**](https://use-the-platform.com/periodic-weather/) _([GitHub Project](https://github.com/vaneenige/periodic-weather/))_ :sunny:
|
79
81
|
- [**Rugby News Board**](http://nbrugby.com) _[(GitHub Project)](https://github.com/rugby-board/rugby-board-node)_
|
@@ -207,6 +209,16 @@ import preact from 'preact';
|
|
207
209
|
> ]
|
208
210
|
> }
|
209
211
|
> ```
|
212
|
+
>
|
213
|
+
> **For Babel 7:**
|
214
|
+
>
|
215
|
+
> ```json
|
216
|
+
> {
|
217
|
+
> "plugins": [
|
218
|
+
> ["@babel/plugin-transform-react-jsx", { "pragma":"h" }]
|
219
|
+
> ]
|
220
|
+
> }
|
221
|
+
> ```
|
210
222
|
> **For using Preact along with TypeScript add to `tsconfig.json`:**
|
211
223
|
>
|
212
224
|
> ```json
|
@@ -4,8 +4,8 @@ export as namespace preact;
|
|
4
4
|
declare namespace preact {
|
5
5
|
type Key = string | number;
|
6
6
|
type Ref<T> = (instance: T) => void;
|
7
|
-
type ComponentChild = VNode<any> | string | number | null;
|
8
|
-
type ComponentChildren = ComponentChild[] | ComponentChild
|
7
|
+
type ComponentChild = VNode<any> | object | string | number | boolean | null;
|
8
|
+
type ComponentChildren = ComponentChild[] | ComponentChild;
|
9
9
|
|
10
10
|
/**
|
11
11
|
* @deprecated
|
@@ -22,7 +22,7 @@ declare namespace preact {
|
|
22
22
|
type PreactHTMLAttributes = ClassAttributes<any>;
|
23
23
|
|
24
24
|
interface Attributes {
|
25
|
-
key?:
|
25
|
+
key?: Key;
|
26
26
|
jsx?: boolean;
|
27
27
|
}
|
28
28
|
|
@@ -69,7 +69,7 @@ declare namespace preact {
|
|
69
69
|
}
|
70
70
|
|
71
71
|
// Type alias for a component considered generally, whether stateless or stateful.
|
72
|
-
type AnyComponent<P = {}, S = {}> = FunctionalComponent<P> |
|
72
|
+
type AnyComponent<P = {}, S = {}> = FunctionalComponent<P> | ComponentConstructor<P, S>;
|
73
73
|
|
74
74
|
interface Component<P = {}, S = {}> {
|
75
75
|
componentWillMount?(): void;
|
@@ -101,20 +101,20 @@ declare namespace preact {
|
|
101
101
|
abstract render(props?: RenderableProps<P>, state?: Readonly<S>, context?: any): ComponentChild;
|
102
102
|
}
|
103
103
|
|
104
|
-
function h<P>(
|
105
|
-
node: ComponentFactory<P>,
|
106
|
-
params: Attributes & P | null,
|
107
|
-
...children: ComponentChildren[]
|
108
|
-
): VNode<any>;
|
109
104
|
function h(
|
110
105
|
node: string,
|
111
106
|
params: JSX.HTMLAttributes & JSX.SVGAttributes & Record<string, any> | null,
|
112
107
|
...children: ComponentChildren[]
|
113
108
|
): VNode<any>;
|
109
|
+
function h<P>(
|
110
|
+
node: ComponentFactory<P>,
|
111
|
+
params: Attributes & P | null,
|
112
|
+
...children: ComponentChildren[]
|
113
|
+
): VNode<any>;
|
114
114
|
|
115
115
|
function render(node: ComponentChild, parent: Element | Document | ShadowRoot | DocumentFragment, mergeWith?: Element): Element;
|
116
116
|
function rerender(): void;
|
117
|
-
function cloneElement(element: JSX.Element, props: any): JSX.Element;
|
117
|
+
function cloneElement(element: JSX.Element, props: any, ...children: ComponentChildren[]): JSX.Element;
|
118
118
|
|
119
119
|
var options: {
|
120
120
|
syncComponentUpdates?: boolean;
|
@@ -124,6 +124,15 @@ declare namespace preact {
|
|
124
124
|
};
|
125
125
|
}
|
126
126
|
|
127
|
+
type Defaultize<Props, Defaults> =
|
128
|
+
// Distribute over unions
|
129
|
+
Props extends any
|
130
|
+
? // Make any properties included in Default optional
|
131
|
+
& Partial<Pick<Props, Extract<keyof Props, keyof Defaults>>>
|
132
|
+
// Include the remaining properties from Props
|
133
|
+
& Pick<Props, Exclude<keyof Props, keyof Defaults>>
|
134
|
+
: never;
|
135
|
+
|
127
136
|
declare global {
|
128
137
|
namespace JSX {
|
129
138
|
interface Element extends preact.VNode<any> {
|
@@ -140,6 +149,11 @@ declare global {
|
|
140
149
|
children: any;
|
141
150
|
}
|
142
151
|
|
152
|
+
type LibraryManagedAttributes<Component, Props> =
|
153
|
+
Component extends { defaultProps: infer Defaults }
|
154
|
+
? Defaultize<Props, Defaults>
|
155
|
+
: Props;
|
156
|
+
|
143
157
|
interface SVGAttributes extends HTMLAttributes {
|
144
158
|
accentHeight?: number | string;
|
145
159
|
accumulate?: "none" | "sum";
|
@@ -407,6 +421,7 @@ declare global {
|
|
407
421
|
interface DOMAttributes extends preact.PreactDOMAttributes {
|
408
422
|
// Image Events
|
409
423
|
onLoad?: GenericEventHandler;
|
424
|
+
onError?: GenericEventHandler;
|
410
425
|
onLoadCapture?: GenericEventHandler;
|
411
426
|
|
412
427
|
// Clipboard Events
|
@@ -440,6 +455,7 @@ declare global {
|
|
440
455
|
onSearchCapture?: GenericEventHandler;
|
441
456
|
onSubmit?: GenericEventHandler;
|
442
457
|
onSubmitCapture?: GenericEventHandler;
|
458
|
+
onInvalid?: GenericEventHandler;
|
443
459
|
|
444
460
|
// Keyboard Events
|
445
461
|
onKeyDown?: KeyboardEventHandler;
|
@@ -63,6 +63,12 @@
|
|
63
63
|
}return obj;
|
64
64
|
}
|
65
65
|
|
66
|
+
function applyRef(ref, value) {
|
67
|
+
if (ref != null) {
|
68
|
+
if (typeof ref == 'function') ref(value);else ref.current = value;
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
66
72
|
var defer = typeof Promise == 'function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;
|
67
73
|
|
68
74
|
function cloneElement(vnode, props) {
|
@@ -80,10 +86,8 @@
|
|
80
86
|
}
|
81
87
|
|
82
88
|
function rerender() {
|
83
|
-
var p
|
84
|
-
|
85
|
-
items = [];
|
86
|
-
while (p = list.pop()) {
|
89
|
+
var p;
|
90
|
+
while (p = items.pop()) {
|
87
91
|
if (p._dirty) renderComponent(p);
|
88
92
|
}
|
89
93
|
}
|
@@ -133,8 +137,8 @@
|
|
133
137
|
if (name === 'className') name = 'class';
|
134
138
|
|
135
139
|
if (name === 'key') {} else if (name === 'ref') {
|
136
|
-
|
137
|
-
|
140
|
+
applyRef(old, null);
|
141
|
+
applyRef(value, node);
|
138
142
|
} else if (name === 'class' && !isSvg) {
|
139
143
|
node.className = value || '';
|
140
144
|
} else if (name === 'style') {
|
@@ -192,7 +196,7 @@
|
|
192
196
|
|
193
197
|
function flushMounts() {
|
194
198
|
var c;
|
195
|
-
while (c = mounts.
|
199
|
+
while (c = mounts.shift()) {
|
196
200
|
if (options.afterMount) options.afterMount(c);
|
197
201
|
if (c.componentDidMount) c.componentDidMount();
|
198
202
|
}
|
@@ -373,7 +377,7 @@
|
|
373
377
|
if (component) {
|
374
378
|
unmountComponent(component);
|
375
379
|
} else {
|
376
|
-
if (node['__preactattr_'] != null
|
380
|
+
if (node['__preactattr_'] != null) applyRef(node['__preactattr_'].ref, null);
|
377
381
|
|
378
382
|
if (unmountOnly === false || node['__preactattr_'] == null) {
|
379
383
|
removeNode(node);
|
@@ -473,7 +477,7 @@
|
|
473
477
|
}
|
474
478
|
}
|
475
479
|
|
476
|
-
|
480
|
+
applyRef(component.__ref, component);
|
477
481
|
}
|
478
482
|
|
479
483
|
function renderComponent(component, renderMode, mountAll, isChild) {
|
@@ -593,7 +597,7 @@
|
|
593
597
|
}
|
594
598
|
|
595
599
|
if (!isUpdate || mountAll) {
|
596
|
-
mounts.
|
600
|
+
mounts.push(component);
|
597
601
|
} else if (!skip) {
|
598
602
|
|
599
603
|
if (component.componentDidUpdate) {
|
@@ -660,7 +664,7 @@
|
|
660
664
|
if (inner) {
|
661
665
|
unmountComponent(inner);
|
662
666
|
} else if (base) {
|
663
|
-
if (base['__preactattr_']
|
667
|
+
if (base['__preactattr_'] != null) applyRef(base['__preactattr_'].ref, null);
|
664
668
|
|
665
669
|
component.nextBase = base;
|
666
670
|
|
@@ -670,7 +674,7 @@
|
|
670
674
|
removeChildren(base);
|
671
675
|
}
|
672
676
|
|
673
|
-
|
677
|
+
applyRef(component.__ref, null);
|
674
678
|
}
|
675
679
|
|
676
680
|
function Component(props, context) {
|
@@ -703,10 +707,15 @@
|
|
703
707
|
return diff(merge, vnode, {}, false, parent, false);
|
704
708
|
}
|
705
709
|
|
710
|
+
function createRef() {
|
711
|
+
return {};
|
712
|
+
}
|
713
|
+
|
706
714
|
var preact = {
|
707
715
|
h: h,
|
708
716
|
createElement: h,
|
709
717
|
cloneElement: cloneElement,
|
718
|
+
createRef: createRef,
|
710
719
|
Component: Component,
|
711
720
|
render: render,
|
712
721
|
rerender: rerender,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"preact.dev.js","sources":["../src/vnode.js","../src/options.js","../src/h.js","../src/util.js","../src/clone-element.js","../src/constants.js","../src/render-queue.js","../src/vdom/index.js","../src/dom/index.js","../src/vdom/diff.js","../src/vdom/component-recycler.js","../src/vdom/component.js","../src/component.js","../src/render.js","../src/preact.js","../src/preact.js"],"sourcesContent":["/**\n * Virtual DOM Node\n * @typedef VNode\n * @property {string | function} nodeName The string of the DOM node to create or Component constructor to render\n * @property {Array<VNode | string>} children The children of node\n * @property {string | number | undefined} key The key used to identify this VNode in a list\n * @property {object} attributes The properties of this VNode\n */\nexport const VNode = function VNode() {};\n","/**\n * @typedef {import('./component').Component} Component\n * @typedef {import('./vnode').VNode} VNode\n */\n\n/**\n * Global options\n * @public\n * @typedef Options\n * @property {boolean} [syncComponentUpdates] If `true`, `prop` changes trigger synchronous component updates. Defaults to true.\n * @property {(vnode: VNode) => void} [vnode] Processes all created VNodes.\n * @property {(component: Component) => void} [afterMount] Hook invoked after a component is mounted.\n * @property {(component: Component) => void} [afterUpdate] Hook invoked after the DOM is updated with a component's latest render.\n * @property {(component: Component) => void} [beforeUnmount] Hook invoked immediately before a component is unmounted.\n * @property {(rerender: function) => void} [debounceRendering] Hook invoked whenever a rerender is requested. Can be used to debounce rerenders.\n * @property {(event: Event) => Event | void} [event] Hook invoked before any Preact event listeners. The return value (if any) replaces the native browser event given to event listeners\n */\n\n/** @type {Options} */\nconst options = {};\n\nexport default options;\n","import { VNode } from './vnode';\nimport options from './options';\n\n\nconst stack = [];\n\nconst EMPTY_CHILDREN = [];\n\n/**\n * JSX/hyperscript reviver.\n * @see http://jasonformat.com/wtf-is-jsx\n * Benchmarks: https://esbench.com/bench/57ee8f8e330ab09900a1a1a0\n *\n * Note: this is exported as both `h()` and `createElement()` for compatibility\n * reasons.\n *\n * Creates a VNode (virtual DOM element). A tree of VNodes can be used as a\n * lightweight representation of the structure of a DOM tree. This structure can\n * be realized by recursively comparing it against the current _actual_ DOM\n * structure, and applying only the differences.\n *\n * `h()`/`createElement()` accepts an element name, a list of attributes/props,\n * and optionally children to append to the element.\n *\n * @example The following DOM tree\n *\n * `<div id=\"foo\" name=\"bar\">Hello!</div>`\n *\n * can be constructed using this function as:\n *\n * `h('div', { id: 'foo', name : 'bar' }, 'Hello!');`\n *\n * @param {string | function} nodeName An element name. Ex: `div`, `a`, `span`, etc.\n * @param {object | null} attributes Any attributes/props to set on the created element.\n * @param {VNode[]} [rest] Additional arguments are taken to be children to\n * append. Can be infinitely nested Arrays.\n *\n * @public\n */\nexport function h(nodeName, attributes) {\n\tlet children=EMPTY_CHILDREN, lastSimple, child, simple, i;\n\tfor (i=arguments.length; i-- > 2; ) {\n\t\tstack.push(arguments[i]);\n\t}\n\tif (attributes && attributes.children!=null) {\n\t\tif (!stack.length) stack.push(attributes.children);\n\t\tdelete attributes.children;\n\t}\n\twhile (stack.length) {\n\t\tif ((child = stack.pop()) && child.pop!==undefined) {\n\t\t\tfor (i=child.length; i--; ) stack.push(child[i]);\n\t\t}\n\t\telse {\n\t\t\tif (typeof child==='boolean') child = null;\n\n\t\t\tif ((simple = typeof nodeName!=='function')) {\n\t\t\t\tif (child==null) child = '';\n\t\t\t\telse if (typeof child==='number') child = String(child);\n\t\t\t\telse if (typeof child!=='string') simple = false;\n\t\t\t}\n\n\t\t\tif (simple && lastSimple) {\n\t\t\t\tchildren[children.length-1] += child;\n\t\t\t}\n\t\t\telse if (children===EMPTY_CHILDREN) {\n\t\t\t\tchildren = [child];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tchildren.push(child);\n\t\t\t}\n\n\t\t\tlastSimple = simple;\n\t\t}\n\t}\n\n\tlet p = new VNode();\n\tp.nodeName = nodeName;\n\tp.children = children;\n\tp.attributes = attributes==null ? undefined : attributes;\n\tp.key = attributes==null ? undefined : attributes.key;\n\n\t// if a \"vnode hook\" is defined, pass every created VNode to it\n\tif (options.vnode!==undefined) options.vnode(p);\n\n\treturn p;\n}\n","/**\n * Copy all properties from `props` onto `obj`.\n * @param {object} obj Object onto which properties should be copied.\n * @param {object} props Object from which to copy properties.\n * @returns {object}\n * @private\n */\nexport function extend(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn obj;\n}\n\n/**\n * Call a function asynchronously, as soon as possible. Makes\n * use of HTML Promise to schedule the callback if available,\n * otherwise falling back to `setTimeout` (mainly for IE<11).\n * @type {(callback: function) => void}\n */\nexport const defer = typeof Promise=='function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n","import { extend } from './util';\nimport { h } from './h';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its\n * children.\n * @param {import('./vnode').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./vnode').VNode>} [rest] Any additional arguments will be used as replacement\n * children.\n */\nexport function cloneElement(vnode, props) {\n\treturn h(\n\t\tvnode.nodeName,\n\t\textend(extend({}, vnode.attributes), props),\n\t\targuments.length>2 ? [].slice.call(arguments, 2) : vnode.children\n\t);\n}\n","// render modes\n\n/** Do not re-render a component */\nexport const NO_RENDER = 0;\n/** Synchronously re-render a component and its children */\nexport const SYNC_RENDER = 1;\n/** Synchronously re-render a component, even if its lifecycle methods attempt to prevent it. */\nexport const FORCE_RENDER = 2;\n/** Queue asynchronous re-render of a component and it's children */\nexport const ASYNC_RENDER = 3;\n\n\nexport const ATTR_KEY = '__preactattr_';\n\n/** DOM properties that should NOT have \"px\" added when numeric */\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\n","import options from './options';\nimport { defer } from './util';\nimport { renderComponent } from './vdom/component';\n\n/**\n * Managed queue of dirty components to be re-rendered\n * @type {Array<import('./component').Component>}\n */\nlet items = [];\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./component').Component} component The component to rerender\n */\nexport function enqueueRender(component) {\n\tif (!component._dirty && (component._dirty = true) && items.push(component)==1) {\n\t\t(options.debounceRendering || defer)(rerender);\n\t}\n}\n\n/** Rerender all enqueued dirty components */\nexport function rerender() {\n\tlet p, list = items;\n\titems = [];\n\twhile ( (p = list.pop()) ) {\n\t\tif (p._dirty) renderComponent(p);\n\t}\n}\n","import { extend } from '../util';\n\n\n/**\n * Check if two nodes are equivalent.\n * @param {import('../dom').PreactElement} node DOM Node to compare\n * @param {import('../vnode').VNode} vnode Virtual DOM node to compare\n * @param {boolean} [hydrating=false] If true, ignores component constructors\n * when comparing.\n * @private\n */\nexport function isSameNodeType(node, vnode, hydrating) {\n\tif (typeof vnode==='string' || typeof vnode==='number') {\n\t\treturn node.splitText!==undefined;\n\t}\n\tif (typeof vnode.nodeName==='string') {\n\t\treturn !node._componentConstructor && isNamedNode(node, vnode.nodeName);\n\t}\n\treturn hydrating || node._componentConstructor===vnode.nodeName;\n}\n\n\n/**\n * Check if an Element has a given nodeName, case-insensitively.\n * @param {import('../dom').PreactElement} node A DOM Element to inspect the name of.\n * @param {string} nodeName Unnormalized name to compare against.\n */\nexport function isNamedNode(node, nodeName) {\n\treturn node.normalizedNodeName===nodeName || node.nodeName.toLowerCase()===nodeName.toLowerCase();\n}\n\n\n/**\n * Reconstruct Component-style `props` from a VNode.\n * Ensures default/fallback values from `defaultProps`:\n * Own-properties of `defaultProps` not present in `vnode.attributes` are added.\n * @param {import('../vnode').VNode} vnode The VNode to get props for\n * @returns {object} The props to use for this VNode\n */\nexport function getNodeProps(vnode) {\n\tlet props = extend({}, vnode.attributes);\n\tprops.children = vnode.children;\n\n\tlet defaultProps = vnode.nodeName.defaultProps;\n\tif (defaultProps!==undefined) {\n\t\tfor (let i in defaultProps) {\n\t\t\tif (props[i]===undefined) {\n\t\t\t\tprops[i] = defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn props;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * A DOM event listener\n * @typedef {(e: Event) => void} EventListner\n */\n\n/**\n * A mapping of event types to event listeners\n * @typedef {Object.<string, EventListener>} EventListenerMap\n */\n\n/**\n * Properties Preact adds to elements it creates\n * @typedef PreactElementExtensions\n * @property {string} [normalizedNodeName] A normalized node name to use in diffing\n * @property {EventListenerMap} [_listeners] A map of event listeners added by components to this DOM node\n * @property {import('../component').Component} [_component] The component that rendered this DOM node\n * @property {function} [_componentConstructor] The constructor of the component that rendered this DOM node\n */\n\n/**\n * A DOM element that has been extended with Preact properties\n * @typedef {Element & ElementCSSInlineStyle & PreactElementExtensions} PreactElement\n */\n\n/**\n * Create an element with the given nodeName.\n * @param {string} nodeName The DOM node to create\n * @param {boolean} [isSvg=false] If `true`, creates an element within the SVG\n * namespace.\n * @returns {PreactElement} The created DOM node\n */\nexport function createNode(nodeName, isSvg) {\n\t/** @type {PreactElement} */\n\tlet node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n\tnode.normalizedNodeName = nodeName;\n\treturn node;\n}\n\n\n/**\n * Remove a child node from its parent if attached.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\n\n/**\n * Set a named attribute on the given Node, with special behavior for some names\n * and event handlers. If `value` is `null`, the attribute/handler will be\n * removed.\n * @param {PreactElement} node An element to mutate\n * @param {string} name The name/key to set, such as an event or attribute name\n * @param {*} old The last value that was set for this name/node pair\n * @param {*} value An attribute value, such as a function to be used as an\n * event handler\n * @param {boolean} isSvg Are we currently diffing inside an svg?\n * @private\n */\nexport function setAccessor(node, name, old, value, isSvg) {\n\tif (name==='className') name = 'class';\n\n\n\tif (name==='key') {\n\t\t// ignore\n\t}\n\telse if (name==='ref') {\n\t\tif (old) old(null);\n\t\tif (value) value(node);\n\t}\n\telse if (name==='class' && !isSvg) {\n\t\tnode.className = value || '';\n\t}\n\telse if (name==='style') {\n\t\tif (!value || typeof value==='string' || typeof old==='string') {\n\t\t\tnode.style.cssText = value || '';\n\t\t}\n\t\tif (value && typeof value==='object') {\n\t\t\tif (typeof old!=='string') {\n\t\t\t\tfor (let i in old) if (!(i in value)) node.style[i] = '';\n\t\t\t}\n\t\t\tfor (let i in value) {\n\t\t\t\tnode.style[i] = typeof value[i]==='number' && IS_NON_DIMENSIONAL.test(i)===false ? (value[i]+'px') : value[i];\n\t\t\t}\n\t\t}\n\t}\n\telse if (name==='dangerouslySetInnerHTML') {\n\t\tif (value) node.innerHTML = value.__html || '';\n\t}\n\telse if (name[0]=='o' && name[1]=='n') {\n\t\tlet useCapture = name !== (name=name.replace(/Capture$/, ''));\n\t\tname = name.toLowerCase().substring(2);\n\t\tif (value) {\n\t\t\tif (!old) node.addEventListener(name, eventProxy, useCapture);\n\t\t}\n\t\telse {\n\t\t\tnode.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t\t(node._listeners || (node._listeners = {}))[name] = value;\n\t}\n\telse if (name!=='list' && name!=='type' && !isSvg && name in node) {\n\t\t// Attempt to set a DOM property to the given value.\n\t\t// IE & FF throw for certain property-value combinations.\n\t\ttry {\n\t\t\tnode[name] = value==null ? '' : value;\n\t\t} catch (e) { }\n\t\tif ((value==null || value===false) && name!='spellcheck') node.removeAttribute(name);\n\t}\n\telse {\n\t\tlet ns = isSvg && (name !== (name = name.replace(/^xlink:?/, '')));\n\t\t// spellcheck is treated differently than all other boolean values and\n\t\t// should not be removed when the value is `false`. See:\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-spellcheck\n\t\tif (value==null || value===false) {\n\t\t\tif (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());\n\t\t\telse node.removeAttribute(name);\n\t\t}\n\t\telse if (typeof value!=='function') {\n\t\t\tif (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);\n\t\t\telse node.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\treturn this._listeners[e.type](options.event && options.event(e) || e);\n}\n","import { ATTR_KEY } from '../constants';\nimport { isSameNodeType, isNamedNode } from './index';\nimport { buildComponentFromVNode } from './component';\nimport { createNode, setAccessor } from '../dom/index';\nimport { unmountComponent } from './component';\nimport options from '../options';\nimport { removeNode } from '../dom/index';\n\n/**\n * Queue of components that have been mounted and are awaiting componentDidMount\n * @type {Array<import('../component').Component>}\n */\nexport const mounts = [];\n\n/** Diff recursion count, used to track the end of the diff cycle. */\nexport let diffLevel = 0;\n\n/** Global flag indicating if the diff is currently within an SVG */\nlet isSvgMode = false;\n\n/** Global flag indicating if the diff is performing hydration */\nlet hydrating = false;\n\n/** Invoke queued componentDidMount lifecycle methods */\nexport function flushMounts() {\n\tlet c;\n\twhile ((c=mounts.pop())) {\n\t\tif (options.afterMount) options.afterMount(c);\n\t\tif (c.componentDidMount) c.componentDidMount();\n\t}\n}\n\n\n/**\n * Apply differences in a given vnode (and it's deep children) to a real DOM Node.\n * @param {import('../dom').PreactElement} dom A DOM node to mutate into the shape of a `vnode`\n * @param {import('../vnode').VNode} vnode A VNode (with descendants forming a tree) representing\n * the desired DOM structure\n * @param {object} context The current context\n * @param {boolean} mountAll Whether or not to immediately mount all components\n * @param {Element} parent ?\n * @param {boolean} componentRoot ?\n * @returns {import('../dom').PreactElement} The created/mutated element\n * @private\n */\nexport function diff(dom, vnode, context, mountAll, parent, componentRoot) {\n\t// diffLevel having been 0 here indicates initial entry into the diff (not a subdiff)\n\tif (!diffLevel++) {\n\t\t// when first starting the diff, check if we're diffing an SVG or within an SVG\n\t\tisSvgMode = parent!=null && parent.ownerSVGElement!==undefined;\n\n\t\t// hydration is indicated by the existing element to be diffed not having a prop cache\n\t\thydrating = dom!=null && !(ATTR_KEY in dom);\n\t}\n\n\tlet ret = idiff(dom, vnode, context, mountAll, componentRoot);\n\n\t// append the element if its a new parent\n\tif (parent && ret.parentNode!==parent) parent.appendChild(ret);\n\n\t// diffLevel being reduced to 0 means we're exiting the diff\n\tif (!--diffLevel) {\n\t\thydrating = false;\n\t\t// invoke queued componentDidMount lifecycle methods\n\t\tif (!componentRoot) flushMounts();\n\t}\n\n\treturn ret;\n}\n\n\n/**\n * Internals of `diff()`, separated to allow bypassing diffLevel / mount flushing.\n * @param {import('../dom').PreactElement} dom A DOM node to mutate into the shape of a `vnode`\n * @param {import('../vnode').VNode} vnode A VNode (with descendants forming a tree) representing the desired DOM structure\n * @param {object} context The current context\n * @param {boolean} mountAll Whether or not to immediately mount all components\n * @param {boolean} [componentRoot] ?\n * @private\n */\nfunction idiff(dom, vnode, context, mountAll, componentRoot) {\n\tlet out = dom,\n\t\tprevSvgMode = isSvgMode;\n\n\t// empty values (null, undefined, booleans) render as empty Text nodes\n\tif (vnode==null || typeof vnode==='boolean') vnode = '';\n\n\n\t// Fast case: Strings & Numbers create/update Text nodes.\n\tif (typeof vnode==='string' || typeof vnode==='number') {\n\n\t\t// update if it's already a Text node:\n\t\tif (dom && dom.splitText!==undefined && dom.parentNode && (!dom._component || componentRoot)) {\n\t\t\t/* istanbul ignore if */ /* Browser quirk that can't be covered: https://github.com/developit/preact/commit/fd4f21f5c45dfd75151bd27b4c217d8003aa5eb9 */\n\t\t\tif (dom.nodeValue!=vnode) {\n\t\t\t\tdom.nodeValue = vnode;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// it wasn't a Text node: replace it with one and recycle the old Element\n\t\t\tout = document.createTextNode(vnode);\n\t\t\tif (dom) {\n\t\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\t\t\t\trecollectNodeTree(dom, true);\n\t\t\t}\n\t\t}\n\n\t\tout[ATTR_KEY] = true;\n\n\t\treturn out;\n\t}\n\n\n\t// If the VNode represents a Component, perform a component diff:\n\tlet vnodeName = vnode.nodeName;\n\tif (typeof vnodeName==='function') {\n\t\treturn buildComponentFromVNode(dom, vnode, context, mountAll);\n\t}\n\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvgMode = vnodeName==='svg' ? true : vnodeName==='foreignObject' ? false : isSvgMode;\n\n\n\t// If there's no existing element or it's the wrong type, create a new one:\n\tvnodeName = String(vnodeName);\n\tif (!dom || !isNamedNode(dom, vnodeName)) {\n\t\tout = createNode(vnodeName, isSvgMode);\n\n\t\tif (dom) {\n\t\t\t// move children into the replacement node\n\t\t\twhile (dom.firstChild) out.appendChild(dom.firstChild);\n\n\t\t\t// if the previous Element was mounted into the DOM, replace it inline\n\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\n\t\t\t// recycle the old element (skips non-Element node types)\n\t\t\trecollectNodeTree(dom, true);\n\t\t}\n\t}\n\n\n\tlet fc = out.firstChild,\n\t\tprops = out[ATTR_KEY],\n\t\tvchildren = vnode.children;\n\n\tif (props==null) {\n\t\tprops = out[ATTR_KEY] = {};\n\t\tfor (let a=out.attributes, i=a.length; i--; ) props[a[i].name] = a[i].value;\n\t}\n\n\t// Optimization: fast-path for elements containing a single TextNode:\n\tif (!hydrating && vchildren && vchildren.length===1 && typeof vchildren[0]==='string' && fc!=null && fc.splitText!==undefined && fc.nextSibling==null) {\n\t\tif (fc.nodeValue!=vchildren[0]) {\n\t\t\tfc.nodeValue = vchildren[0];\n\t\t}\n\t}\n\t// otherwise, if there are existing or new children, diff them:\n\telse if (vchildren && vchildren.length || fc!=null) {\n\t\tinnerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML!=null);\n\t}\n\n\n\t// Apply attributes/props from VNode to the DOM Element:\n\tdiffAttributes(out, vnode.attributes, props);\n\n\n\t// restore previous SVG mode: (in case we're exiting an SVG namespace)\n\tisSvgMode = prevSvgMode;\n\n\treturn out;\n}\n\n\n/**\n * Apply child and attribute changes between a VNode and a DOM Node to the DOM.\n * @param {import('../dom').PreactElement} dom Element whose children should be compared & mutated\n * @param {Array<import('../vnode').VNode>} vchildren Array of VNodes to compare to `dom.childNodes`\n * @param {object} context Implicitly descendant context object (from most\n * recent `getChildContext()`)\n * @param {boolean} mountAll Whether or not to immediately mount all components\n * @param {boolean} isHydrating if `true`, consumes externally created elements\n * similar to hydration\n */\nfunction innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n\tlet originalChildren = dom.childNodes,\n\t\tchildren = [],\n\t\tkeyed = {},\n\t\tkeyedLen = 0,\n\t\tmin = 0,\n\t\tlen = originalChildren.length,\n\t\tchildrenLen = 0,\n\t\tvlen = vchildren ? vchildren.length : 0,\n\t\tj, c, f, vchild, child;\n\n\t// Build up a map of keyed children and an Array of unkeyed children:\n\tif (len!==0) {\n\t\tfor (let i=0; i<len; i++) {\n\t\t\tlet child = originalChildren[i],\n\t\t\t\tprops = child[ATTR_KEY],\n\t\t\t\tkey = vlen && props ? child._component ? child._component.__key : props.key : null;\n\t\t\tif (key!=null) {\n\t\t\t\tkeyedLen++;\n\t\t\t\tkeyed[key] = child;\n\t\t\t}\n\t\t\telse if (props || (child.splitText!==undefined ? (isHydrating ? child.nodeValue.trim() : true) : isHydrating)) {\n\t\t\t\tchildren[childrenLen++] = child;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (vlen!==0) {\n\t\tfor (let i=0; i<vlen; i++) {\n\t\t\tvchild = vchildren[i];\n\t\t\tchild = null;\n\n\t\t\t// attempt to find a node based on key matching\n\t\t\tlet key = vchild.key;\n\t\t\tif (key!=null) {\n\t\t\t\tif (keyedLen && keyed[key]!==undefined) {\n\t\t\t\t\tchild = keyed[key];\n\t\t\t\t\tkeyed[key] = undefined;\n\t\t\t\t\tkeyedLen--;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// attempt to pluck a node of the same type from the existing children\n\t\t\telse if (min<childrenLen) {\n\t\t\t\tfor (j=min; j<childrenLen; j++) {\n\t\t\t\t\tif (children[j]!==undefined && isSameNodeType(c = children[j], vchild, isHydrating)) {\n\t\t\t\t\t\tchild = c;\n\t\t\t\t\t\tchildren[j] = undefined;\n\t\t\t\t\t\tif (j===childrenLen-1) childrenLen--;\n\t\t\t\t\t\tif (j===min) min++;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// morph the matched/found/created DOM child to match vchild (deep)\n\t\t\tchild = idiff(child, vchild, context, mountAll);\n\n\t\t\tf = originalChildren[i];\n\t\t\tif (child && child!==dom && child!==f) {\n\t\t\t\tif (f==null) {\n\t\t\t\t\tdom.appendChild(child);\n\t\t\t\t}\n\t\t\t\telse if (child===f.nextSibling) {\n\t\t\t\t\tremoveNode(f);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdom.insertBefore(child, f);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\t// remove unused keyed children:\n\tif (keyedLen) {\n\t\tfor (let i in keyed) if (keyed[i]!==undefined) recollectNodeTree(keyed[i], false);\n\t}\n\n\t// remove orphaned unkeyed children:\n\twhile (min<=childrenLen) {\n\t\tif ((child = children[childrenLen--])!==undefined) recollectNodeTree(child, false);\n\t}\n}\n\n\n\n/**\n * Recursively recycle (or just unmount) a node and its descendants.\n * @param {import('../dom').PreactElement} node DOM node to start\n * unmount/removal from\n * @param {boolean} [unmountOnly=false] If `true`, only triggers unmount\n * lifecycle, skips removal\n */\nexport function recollectNodeTree(node, unmountOnly) {\n\tlet component = node._component;\n\tif (component) {\n\t\t// if node is owned by a Component, unmount that component (ends up recursing back here)\n\t\tunmountComponent(component);\n\t}\n\telse {\n\t\t// If the node's VNode had a ref function, invoke it with null here.\n\t\t// (this is part of the React spec, and smart for unsetting references)\n\t\tif (node[ATTR_KEY]!=null && node[ATTR_KEY].ref) node[ATTR_KEY].ref(null);\n\n\t\tif (unmountOnly===false || node[ATTR_KEY]==null) {\n\t\t\tremoveNode(node);\n\t\t}\n\n\t\tremoveChildren(node);\n\t}\n}\n\n\n/**\n * Recollect/unmount all children.\n *\t- we use .lastChild here because it causes less reflow than .firstChild\n *\t- it's also cheaper than accessing the .childNodes Live NodeList\n */\nexport function removeChildren(node) {\n\tnode = node.lastChild;\n\twhile (node) {\n\t\tlet next = node.previousSibling;\n\t\trecollectNodeTree(node, true);\n\t\tnode = next;\n\t}\n}\n\n\n/**\n * Apply differences in attributes from a VNode to the given DOM Element.\n * @param {import('../dom').PreactElement} dom Element with attributes to diff `attrs` against\n * @param {object} attrs The desired end-state key-value attribute pairs\n * @param {object} old Current/previous attributes (from previous VNode or\n * element's prop cache)\n */\nfunction diffAttributes(dom, attrs, old) {\n\tlet name;\n\n\t// remove attributes no longer present on the vnode by setting them to undefined\n\tfor (name in old) {\n\t\tif (!(attrs && attrs[name]!=null) && old[name]!=null) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);\n\t\t}\n\t}\n\n\t// add new & update changed attributes\n\tfor (name in attrs) {\n\t\tif (name!=='children' && name!=='innerHTML' && (!(name in old) || attrs[name]!==(name==='value' || name==='checked' ? dom[name] : old[name]))) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n\t\t}\n\t}\n}\n","import { Component } from '../component';\n\n/**\n * Retains a pool of Components for re-use.\n * @type {Component[]}\n * @private\n */\nexport const recyclerComponents = [];\n\n\n/**\n * Create a component. Normalizes differences between PFC's and classful\n * Components.\n * @param {function} Ctor The constructor of the component to create\n * @param {object} props The initial props of the component\n * @param {object} context The initial context of the component\n * @returns {import('../component').Component}\n */\nexport function createComponent(Ctor, props, context) {\n\tlet inst, i = recyclerComponents.length;\n\n\tif (Ctor.prototype && Ctor.prototype.render) {\n\t\tinst = new Ctor(props, context);\n\t\tComponent.call(inst, props, context);\n\t}\n\telse {\n\t\tinst = new Component(props, context);\n\t\tinst.constructor = Ctor;\n\t\tinst.render = doRender;\n\t}\n\n\n\twhile (i--) {\n\t\tif (recyclerComponents[i].constructor===Ctor) {\n\t\t\tinst.nextBase = recyclerComponents[i].nextBase;\n\t\t\trecyclerComponents.splice(i, 1);\n\t\t\treturn inst;\n\t\t}\n\t}\n\n\treturn inst;\n}\n\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { SYNC_RENDER, NO_RENDER, FORCE_RENDER, ASYNC_RENDER, ATTR_KEY } from '../constants';\nimport options from '../options';\nimport { extend } from '../util';\nimport { enqueueRender } from '../render-queue';\nimport { getNodeProps } from './index';\nimport { diff, mounts, diffLevel, flushMounts, recollectNodeTree, removeChildren } from './diff';\nimport { createComponent, recyclerComponents } from './component-recycler';\nimport { removeNode } from '../dom/index';\n\n/**\n * Set a component's `props` and possibly re-render the component\n * @param {import('../component').Component} component The Component to set props on\n * @param {object} props The new props\n * @param {number} renderMode Render options - specifies how to re-render the component\n * @param {object} context The new context\n * @param {boolean} mountAll Whether or not to immediately mount all components\n */\nexport function setComponentProps(component, props, renderMode, context, mountAll) {\n\tif (component._disable) return;\n\tcomponent._disable = true;\n\n\tcomponent.__ref = props.ref;\n\tcomponent.__key = props.key;\n\tdelete props.ref;\n\tdelete props.key;\n\n\tif (typeof component.constructor.getDerivedStateFromProps === 'undefined') {\n\t\tif (!component.base || mountAll) {\n\t\t\tif (component.componentWillMount) component.componentWillMount();\n\t\t}\n\t\telse if (component.componentWillReceiveProps) {\n\t\t\tcomponent.componentWillReceiveProps(props, context);\n\t\t}\n\t}\n\n\tif (context && context!==component.context) {\n\t\tif (!component.prevContext) component.prevContext = component.context;\n\t\tcomponent.context = context;\n\t}\n\n\tif (!component.prevProps) component.prevProps = component.props;\n\tcomponent.props = props;\n\n\tcomponent._disable = false;\n\n\tif (renderMode!==NO_RENDER) {\n\t\tif (renderMode===SYNC_RENDER || options.syncComponentUpdates!==false || !component.base) {\n\t\t\trenderComponent(component, SYNC_RENDER, mountAll);\n\t\t}\n\t\telse {\n\t\t\tenqueueRender(component);\n\t\t}\n\t}\n\n\tif (component.__ref) component.__ref(component);\n}\n\n\n\n/**\n * Render a Component, triggering necessary lifecycle events and taking\n * High-Order Components into account.\n * @param {import('../component').Component} component The component to render\n * @param {number} [renderMode] render mode, see constants.js for available options.\n * @param {boolean} [mountAll] Whether or not to immediately mount all components\n * @param {boolean} [isChild] ?\n * @private\n */\nexport function renderComponent(component, renderMode, mountAll, isChild) {\n\tif (component._disable) return;\n\n\tlet props = component.props,\n\t\tstate = component.state,\n\t\tcontext = component.context,\n\t\tpreviousProps = component.prevProps || props,\n\t\tpreviousState = component.prevState || state,\n\t\tpreviousContext = component.prevContext || context,\n\t\tisUpdate = component.base,\n\t\tnextBase = component.nextBase,\n\t\tinitialBase = isUpdate || nextBase,\n\t\tinitialChildComponent = component._component,\n\t\tskip = false,\n\t\tsnapshot = previousContext,\n\t\trendered, inst, cbase;\n\n\tif (component.constructor.getDerivedStateFromProps) {\n\t\tstate = extend(extend({}, state), component.constructor.getDerivedStateFromProps(props, state));\n\t\tcomponent.state = state;\n\t}\n\n\t// if updating\n\tif (isUpdate) {\n\t\tcomponent.props = previousProps;\n\t\tcomponent.state = previousState;\n\t\tcomponent.context = previousContext;\n\t\tif (renderMode!==FORCE_RENDER\n\t\t\t&& component.shouldComponentUpdate\n\t\t\t&& component.shouldComponentUpdate(props, state, context) === false) {\n\t\t\tskip = true;\n\t\t}\n\t\telse if (component.componentWillUpdate) {\n\t\t\tcomponent.componentWillUpdate(props, state, context);\n\t\t}\n\t\tcomponent.props = props;\n\t\tcomponent.state = state;\n\t\tcomponent.context = context;\n\t}\n\n\tcomponent.prevProps = component.prevState = component.prevContext = component.nextBase = null;\n\tcomponent._dirty = false;\n\n\tif (!skip) {\n\t\trendered = component.render(props, state, context);\n\n\t\t// context to pass to the child, can be updated via (grand-)parent component\n\t\tif (component.getChildContext) {\n\t\t\tcontext = extend(extend({}, context), component.getChildContext());\n\t\t}\n\n\t\tif (isUpdate && component.getSnapshotBeforeUpdate) {\n\t\t\tsnapshot = component.getSnapshotBeforeUpdate(previousProps, previousState);\n\t\t}\n\n\t\tlet childComponent = rendered && rendered.nodeName,\n\t\t\ttoUnmount, base;\n\n\t\tif (typeof childComponent==='function') {\n\t\t\t// set up high order component link\n\n\t\t\tlet childProps = getNodeProps(rendered);\n\t\t\tinst = initialChildComponent;\n\n\t\t\tif (inst && inst.constructor===childComponent && childProps.key==inst.__key) {\n\t\t\t\tsetComponentProps(inst, childProps, SYNC_RENDER, context, false);\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttoUnmount = inst;\n\n\t\t\t\tcomponent._component = inst = createComponent(childComponent, childProps, context);\n\t\t\t\tinst.nextBase = inst.nextBase || nextBase;\n\t\t\t\tinst._parentComponent = component;\n\t\t\t\tsetComponentProps(inst, childProps, NO_RENDER, context, false);\n\t\t\t\trenderComponent(inst, SYNC_RENDER, mountAll, true);\n\t\t\t}\n\n\t\t\tbase = inst.base;\n\t\t}\n\t\telse {\n\t\t\tcbase = initialBase;\n\n\t\t\t// destroy high order component link\n\t\t\ttoUnmount = initialChildComponent;\n\t\t\tif (toUnmount) {\n\t\t\t\tcbase = component._component = null;\n\t\t\t}\n\n\t\t\tif (initialBase || renderMode===SYNC_RENDER) {\n\t\t\t\tif (cbase) cbase._component = null;\n\t\t\t\tbase = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, true);\n\t\t\t}\n\t\t}\n\n\t\tif (initialBase && base!==initialBase && inst!==initialChildComponent) {\n\t\t\tlet baseParent = initialBase.parentNode;\n\t\t\tif (baseParent && base!==baseParent) {\n\t\t\t\tbaseParent.replaceChild(base, initialBase);\n\n\t\t\t\tif (!toUnmount) {\n\t\t\t\t\tinitialBase._component = null;\n\t\t\t\t\trecollectNodeTree(initialBase, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (toUnmount) {\n\t\t\tunmountComponent(toUnmount);\n\t\t}\n\n\t\tcomponent.base = base;\n\t\tif (base && !isChild) {\n\t\t\tlet componentRef = component,\n\t\t\t\tt = component;\n\t\t\twhile ((t=t._parentComponent)) {\n\t\t\t\t(componentRef = t).base = base;\n\t\t\t}\n\t\t\tbase._component = componentRef;\n\t\t\tbase._componentConstructor = componentRef.constructor;\n\t\t}\n\t}\n\n\tif (!isUpdate || mountAll) {\n\t\tmounts.unshift(component);\n\t}\n\telse if (!skip) {\n\t\t// Ensure that pending componentDidMount() hooks of child components\n\t\t// are called before the componentDidUpdate() hook in the parent.\n\t\t// Note: disabled as it causes duplicate hooks, see https://github.com/developit/preact/issues/750\n\t\t// flushMounts();\n\n\t\tif (component.componentDidUpdate) {\n\t\t\tcomponent.componentDidUpdate(previousProps, previousState, snapshot);\n\t\t}\n\t\tif (options.afterUpdate) options.afterUpdate(component);\n\t}\n\n\twhile (component._renderCallbacks.length) component._renderCallbacks.pop().call(component);\n\n\tif (!diffLevel && !isChild) flushMounts();\n}\n\n\n\n/**\n * Apply the Component referenced by a VNode to the DOM.\n * @param {import('../dom').PreactElement} dom The DOM node to mutate\n * @param {import('../vnode').VNode} vnode A Component-referencing VNode\n * @param {object} context The current context\n * @param {boolean} mountAll Whether or not to immediately mount all components\n * @returns {import('../dom').PreactElement} The created/mutated element\n * @private\n */\nexport function buildComponentFromVNode(dom, vnode, context, mountAll) {\n\tlet c = dom && dom._component,\n\t\toriginalComponent = c,\n\t\toldDom = dom,\n\t\tisDirectOwner = c && dom._componentConstructor===vnode.nodeName,\n\t\tisOwner = isDirectOwner,\n\t\tprops = getNodeProps(vnode);\n\twhile (c && !isOwner && (c=c._parentComponent)) {\n\t\tisOwner = c.constructor===vnode.nodeName;\n\t}\n\n\tif (c && isOwner && (!mountAll || c._component)) {\n\t\tsetComponentProps(c, props, ASYNC_RENDER, context, mountAll);\n\t\tdom = c.base;\n\t}\n\telse {\n\t\tif (originalComponent && !isDirectOwner) {\n\t\t\tunmountComponent(originalComponent);\n\t\t\tdom = oldDom = null;\n\t\t}\n\n\t\tc = createComponent(vnode.nodeName, props, context);\n\t\tif (dom && !c.nextBase) {\n\t\t\tc.nextBase = dom;\n\t\t\t// passing dom/oldDom as nextBase will recycle it if unused, so bypass recycling on L229:\n\t\t\toldDom = null;\n\t\t}\n\t\tsetComponentProps(c, props, SYNC_RENDER, context, mountAll);\n\t\tdom = c.base;\n\n\t\tif (oldDom && dom!==oldDom) {\n\t\t\toldDom._component = null;\n\t\t\trecollectNodeTree(oldDom, false);\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n\n\n/**\n * Remove a component from the DOM and recycle it.\n * @param {import('../component').Component} component The Component instance to unmount\n * @private\n */\nexport function unmountComponent(component) {\n\tif (options.beforeUnmount) options.beforeUnmount(component);\n\n\tlet base = component.base;\n\n\tcomponent._disable = true;\n\n\tif (component.componentWillUnmount) component.componentWillUnmount();\n\n\tcomponent.base = null;\n\n\t// recursively tear down & recollect high-order component children:\n\tlet inner = component._component;\n\tif (inner) {\n\t\tunmountComponent(inner);\n\t}\n\telse if (base) {\n\t\tif (base[ATTR_KEY] && base[ATTR_KEY].ref) base[ATTR_KEY].ref(null);\n\n\t\tcomponent.nextBase = base;\n\n\t\tremoveNode(base);\n\t\trecyclerComponents.push(component);\n\n\t\tremoveChildren(base);\n\t}\n\n\tif (component.__ref) component.__ref(null);\n}\n","import { FORCE_RENDER } from './constants';\nimport { extend } from './util';\nimport { renderComponent } from './vdom/component';\nimport { enqueueRender } from './render-queue';\n/**\n * Base Component class.\n * Provides `setState()` and `forceUpdate()`, which trigger rendering.\n * @typedef {object} Component\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components' getChildContext\n * @public\n *\n * @example\n * class MyFoo extends Component {\n * render(props, state) {\n * return <div />;\n * }\n * }\n */\nexport function Component(props, context) {\n\tthis._dirty = true;\n\n\t/**\n\t * @public\n\t * @type {object}\n\t */\n\tthis.context = context;\n\n\t/**\n\t * @public\n\t * @type {object}\n\t */\n\tthis.props = props;\n\n\t/**\n\t * @public\n\t * @type {object}\n\t */\n\tthis.state = this.state || {};\n\n\tthis._renderCallbacks = [];\n}\n\n\nextend(Component.prototype, {\n\n\t/**\n\t * Update component state and schedule a re-render.\n\t * @param {object} state A dict of state properties to be shallowly merged\n\t * \tinto the current state, or a function that will produce such a dict. The\n\t * \tfunction is called with the current state and props.\n\t * @param {() => void} callback A function to be called once component state is\n\t * \tupdated\n\t */\n\tsetState(state, callback) {\n\t\tif (!this.prevState) this.prevState = this.state;\n\t\tthis.state = extend(\n\t\t\textend({}, this.state),\n\t\t\ttypeof state === 'function' ? state(this.state, this.props) : state\n\t\t);\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t},\n\n\n\t/**\n\t * Immediately perform a synchronous re-render of the component.\n\t * @param {() => void} callback A function to be called after component is\n\t * \tre-rendered.\n\t * @private\n\t */\n\tforceUpdate(callback) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\trenderComponent(this, FORCE_RENDER);\n\t},\n\n\n\t/**\n\t * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n\t * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n\t * @param {object} props Props (eg: JSX attributes) received from parent\n\t * \telement/component\n\t * @param {object} state The component's current state\n\t * @param {object} context Context object, as returned by the nearest\n\t * ancestor's `getChildContext()`\n\t * @returns {import('./vnode').VNode | void}\n\t */\n\trender() {}\n\n});\n","import { diff } from './vdom/diff';\n\n/**\n * Render JSX into a `parent` Element.\n * @param {import('./vnode').VNode} vnode A (JSX) VNode to render\n * @param {import('./dom').PreactElement} parent DOM element to render into\n * @param {import('./dom').PreactElement} [merge] Attempt to re-use an existing DOM tree rooted at\n * `merge`\n * @public\n *\n * @example\n * // render a div into <body>:\n * render(<div id=\"hello\">hello!</div>, document.body);\n *\n * @example\n * // render a \"Thing\" component into #foo:\n * const Thing = ({ name }) => <span>{ name }</span>;\n * render(<Thing name=\"one\" />, document.querySelector('#foo'));\n */\nexport function render(vnode, parent, merge) {\n\treturn diff(merge, vnode, {}, false, parent, false);\n}\n","import { h, h as createElement } from './h';\nimport { cloneElement } from './clone-element';\nimport { Component } from './component';\nimport { render } from './render';\nimport { rerender } from './render-queue';\nimport options from './options';\n\nexport default {\n\th,\n\tcreateElement,\n\tcloneElement,\n\tComponent,\n\trender,\n\trerender,\n\toptions\n};\n\nexport {\n\th,\n\tcreateElement,\n\tcloneElement,\n\tComponent,\n\trender,\n\trerender,\n\toptions\n};\n","\n\t\t\t\timport preact from './preact';\n\t\t\t\tif (typeof module!='undefined') module.exports = preact;\n\t\t\t\telse self.preact = preact;\n\t\t\t"],"names":["VNode","options","stack","EMPTY_CHILDREN","h","nodeName","attributes","children","lastSimple","child","simple","i","arguments","length","push","pop","undefined","String","p","key","vnode","extend","obj","props","defer","Promise","resolve","then","bind","setTimeout","cloneElement","slice","call","NO_RENDER","SYNC_RENDER","FORCE_RENDER","ASYNC_RENDER","ATTR_KEY","IS_NON_DIMENSIONAL","items","enqueueRender","component","_dirty","debounceRendering","rerender","list","renderComponent","isSameNodeType","node","hydrating","splitText","_componentConstructor","isNamedNode","normalizedNodeName","toLowerCase","getNodeProps","defaultProps","createNode","isSvg","document","createElementNS","createElement","removeNode","parentNode","removeChild","setAccessor","name","old","value","className","style","cssText","test","innerHTML","__html","useCapture","replace","substring","addEventListener","eventProxy","removeEventListener","_listeners","e","removeAttribute","ns","removeAttributeNS","setAttributeNS","setAttribute","type","event","mounts","diffLevel","isSvgMode","flushMounts","c","afterMount","componentDidMount","diff","dom","context","mountAll","parent","componentRoot","ownerSVGElement","ret","idiff","appendChild","out","prevSvgMode","_component","nodeValue","createTextNode","replaceChild","recollectNodeTree","vnodeName","buildComponentFromVNode","firstChild","fc","vchildren","a","nextSibling","innerDiffNode","dangerouslySetInnerHTML","diffAttributes","isHydrating","originalChildren","childNodes","keyed","keyedLen","min","len","childrenLen","vlen","j","f","vchild","__key","trim","insertBefore","unmountOnly","unmountComponent","ref","removeChildren","lastChild","next","previousSibling","attrs","recyclerComponents","createComponent","Ctor","inst","prototype","render","Component","constructor","doRender","nextBase","splice","state","setComponentProps","renderMode","_disable","__ref","getDerivedStateFromProps","base","componentWillMount","componentWillReceiveProps","prevContext","prevProps","syncComponentUpdates","isChild","previousProps","previousState","prevState","previousContext","isUpdate","initialBase","initialChildComponent","skip","snapshot","rendered","cbase","shouldComponentUpdate","componentWillUpdate","getChildContext","getSnapshotBeforeUpdate","childComponent","toUnmount","childProps","_parentComponent","baseParent","componentRef","t","unshift","componentDidUpdate","afterUpdate","_renderCallbacks","originalComponent","oldDom","isDirectOwner","isOwner","beforeUnmount","componentWillUnmount","inner","setState","callback","forceUpdate","merge","module","exports","preact","self"],"mappings":";;;CAQO,IAAMA,QAAQ,SAASA,KAAT,GAAiB,EAA/B;;CCWP,IAAMC,UAAU,EAAhB;;CCfA,IAAMC,QAAQ,EAAd;;CAEA,IAAMC,iBAAiB,EAAvB;;AAiCA,CAAO,SAASC,CAAT,CAAWC,QAAX,EAAqBC,UAArB,EAAiC;CACvC,KAAIC,WAASJ,cAAb;CAAA,KAA6BK,mBAA7B;CAAA,KAAyCC,cAAzC;CAAA,KAAgDC,eAAhD;CAAA,KAAwDC,UAAxD;CACA,MAAKA,IAAEC,UAAUC,MAAjB,EAAyBF,MAAM,CAA/B,GAAoC;CACnCT,QAAMY,IAAN,CAAWF,UAAUD,CAAV,CAAX;CACA;CACD,KAAIL,cAAcA,WAAWC,QAAX,IAAqB,IAAvC,EAA6C;CAC5C,MAAI,CAACL,MAAMW,MAAX,EAAmBX,MAAMY,IAAN,CAAWR,WAAWC,QAAtB;CACnB,SAAOD,WAAWC,QAAlB;CACA;CACD,QAAOL,MAAMW,MAAb,EAAqB;CACpB,MAAI,CAACJ,QAAQP,MAAMa,GAAN,EAAT,KAAyBN,MAAMM,GAAN,KAAYC,SAAzC,EAAoD;CACnD,QAAKL,IAAEF,MAAMI,MAAb,EAAqBF,GAArB;CAA4BT,UAAMY,IAAN,CAAWL,MAAME,CAAN,CAAX;CAA5B;CACA,GAFD,MAGK;CACJ,OAAI,OAAOF,KAAP,KAAe,SAAnB,EAA8BA,QAAQ,IAAR;;CAE9B,OAAKC,SAAS,OAAOL,QAAP,KAAkB,UAAhC,EAA6C;CAC5C,QAAII,SAAO,IAAX,EAAiBA,QAAQ,EAAR,CAAjB,KACK,IAAI,OAAOA,KAAP,KAAe,QAAnB,EAA6BA,QAAQQ,OAAOR,KAAP,CAAR,CAA7B,KACA,IAAI,OAAOA,KAAP,KAAe,QAAnB,EAA6BC,SAAS,KAAT;CAClC;;CAED,OAAIA,UAAUF,UAAd,EAA0B;CACzBD,aAASA,SAASM,MAAT,GAAgB,CAAzB,KAA+BJ,KAA/B;CACA,IAFD,MAGK,IAAIF,aAAWJ,cAAf,EAA+B;CACnCI,eAAW,CAACE,KAAD,CAAX;CACA,IAFI,MAGA;CACJF,aAASO,IAAT,CAAcL,KAAd;CACA;;CAEDD,gBAAaE,MAAb;CACA;CACD;;CAED,KAAIQ,IAAI,IAAIlB,KAAJ,EAAR;CACAkB,GAAEb,QAAF,GAAaA,QAAb;CACAa,GAAEX,QAAF,GAAaA,QAAb;CACAW,GAAEZ,UAAF,GAAeA,cAAY,IAAZ,GAAmBU,SAAnB,GAA+BV,UAA9C;CACAY,GAAEC,GAAF,GAAQb,cAAY,IAAZ,GAAmBU,SAAnB,GAA+BV,WAAWa,GAAlD;;CAGA,KAAIlB,QAAQmB,KAAR,KAAgBJ,SAApB,EAA+Bf,QAAQmB,KAAR,CAAcF,CAAd;;CAE/B,QAAOA,CAAP;CACA;;CC9EM,SAASG,MAAT,CAAgBC,GAAhB,EAAqBC,KAArB,EAA4B;CAClC,OAAK,IAAIZ,CAAT,IAAcY,KAAd;CAAqBD,QAAIX,CAAJ,IAASY,MAAMZ,CAAN,CAAT;CAArB,GACA,OAAOW,GAAP;CACA;;AAQD,CAAO,IAAME,QAAQ,OAAOC,OAAP,IAAgB,UAAhB,GAA6BA,QAAQC,OAAR,GAAkBC,IAAlB,CAAuBC,IAAvB,CAA4BH,QAAQC,OAAR,EAA5B,CAA7B,GAA8EG,UAA5F;;CCPA,SAASC,YAAT,CAAsBV,KAAtB,EAA6BG,KAA7B,EAAoC;CAC1C,SAAOnB,EACNgB,MAAMf,QADA,EAENgB,OAAOA,OAAO,EAAP,EAAWD,MAAMd,UAAjB,CAAP,EAAqCiB,KAArC,CAFM,EAGNX,UAAUC,MAAV,GAAiB,CAAjB,GAAqB,GAAGkB,KAAH,CAASC,IAAT,CAAcpB,SAAd,EAAyB,CAAzB,CAArB,GAAmDQ,MAAMb,QAHnD,CAAP;CAKA;;CCdM,IAAM0B,YAAY,CAAlB;;AAEP,CAAO,IAAMC,cAAc,CAApB;;AAEP,CAAO,IAAMC,eAAe,CAArB;;AAEP,CAAO,IAAMC,eAAe,CAArB;;AAGP,CAAO,IAAMC,WAAW,eAAjB;;AAGP,CAAO,IAAMC,qBAAqB,wDAA3B;;CCPP,IAAIC,QAAQ,EAAZ;;AAMA,CAAO,SAASC,aAAT,CAAuBC,SAAvB,EAAkC;CACxC,KAAI,CAACA,UAAUC,MAAX,KAAsBD,UAAUC,MAAV,GAAmB,IAAzC,KAAkDH,MAAMzB,IAAN,CAAW2B,SAAX,KAAuB,CAA7E,EAAgF;CAC/E,GAACxC,QAAQ0C,iBAAR,IAA6BnB,KAA9B,EAAqCoB,QAArC;CACA;CACD;;AAGD,CAAO,SAASA,QAAT,GAAoB;CAC1B,KAAI1B,UAAJ;CAAA,KAAO2B,OAAON,KAAd;CACAA,SAAQ,EAAR;CACA,QAASrB,IAAI2B,KAAK9B,GAAL,EAAb,EAA2B;CAC1B,MAAIG,EAAEwB,MAAN,EAAcI,gBAAgB5B,CAAhB;CACd;CACD;;CChBM,SAAS6B,cAAT,CAAwBC,IAAxB,EAA8B5B,KAA9B,EAAqC6B,SAArC,EAAgD;CACtD,KAAI,OAAO7B,KAAP,KAAe,QAAf,IAA2B,OAAOA,KAAP,KAAe,QAA9C,EAAwD;CACvD,SAAO4B,KAAKE,SAAL,KAAiBlC,SAAxB;CACA;CACD,KAAI,OAAOI,MAAMf,QAAb,KAAwB,QAA5B,EAAsC;CACrC,SAAO,CAAC2C,KAAKG,qBAAN,IAA+BC,YAAYJ,IAAZ,EAAkB5B,MAAMf,QAAxB,CAAtC;CACA;CACD,QAAO4C,aAAaD,KAAKG,qBAAL,KAA6B/B,MAAMf,QAAvD;CACA;;AAQD,CAAO,SAAS+C,WAAT,CAAqBJ,IAArB,EAA2B3C,QAA3B,EAAqC;CAC3C,QAAO2C,KAAKK,kBAAL,KAA0BhD,QAA1B,IAAsC2C,KAAK3C,QAAL,CAAciD,WAAd,OAA8BjD,SAASiD,WAAT,EAA3E;CACA;;AAUD,CAAO,SAASC,YAAT,CAAsBnC,KAAtB,EAA6B;CACnC,KAAIG,QAAQF,OAAO,EAAP,EAAWD,MAAMd,UAAjB,CAAZ;CACAiB,OAAMhB,QAAN,GAAiBa,MAAMb,QAAvB;;CAEA,KAAIiD,eAAepC,MAAMf,QAAN,CAAemD,YAAlC;CACA,KAAIA,iBAAexC,SAAnB,EAA8B;CAC7B,OAAK,IAAIL,CAAT,IAAc6C,YAAd,EAA4B;CAC3B,OAAIjC,MAAMZ,CAAN,MAAWK,SAAf,EAA0B;CACzBO,UAAMZ,CAAN,IAAW6C,aAAa7C,CAAb,CAAX;CACA;CACD;CACD;;CAED,QAAOY,KAAP;CACA;;CCnBM,SAASkC,UAAT,CAAoBpD,QAApB,EAA8BqD,KAA9B,EAAqC;CAE3C,KAAIV,OAAOU,QAAQC,SAASC,eAAT,CAAyB,4BAAzB,EAAuDvD,QAAvD,CAAR,GAA2EsD,SAASE,aAAT,CAAuBxD,QAAvB,CAAtF;CACA2C,MAAKK,kBAAL,GAA0BhD,QAA1B;CACA,QAAO2C,IAAP;CACA;;AAOD,CAAO,SAASc,UAAT,CAAoBd,IAApB,EAA0B;CAChC,KAAIe,aAAaf,KAAKe,UAAtB;CACA,KAAIA,UAAJ,EAAgBA,WAAWC,WAAX,CAAuBhB,IAAvB;CAChB;;AAeD,CAAO,SAASiB,WAAT,CAAqBjB,IAArB,EAA2BkB,IAA3B,EAAiCC,GAAjC,EAAsCC,KAAtC,EAA6CV,KAA7C,EAAoD;CAC1D,KAAIQ,SAAO,WAAX,EAAwBA,OAAO,OAAP;;CAGxB,KAAIA,SAAO,KAAX,EAAkB,EAAlB,MAGK,IAAIA,SAAO,KAAX,EAAkB;CACtB,MAAIC,GAAJ,EAASA,IAAI,IAAJ;CACT,MAAIC,KAAJ,EAAWA,MAAMpB,IAAN;CACX,EAHI,MAIA,IAAIkB,SAAO,OAAP,IAAkB,CAACR,KAAvB,EAA8B;CAClCV,OAAKqB,SAAL,GAAiBD,SAAS,EAA1B;CACA,EAFI,MAGA,IAAIF,SAAO,OAAX,EAAoB;CACxB,MAAI,CAACE,KAAD,IAAU,OAAOA,KAAP,KAAe,QAAzB,IAAqC,OAAOD,GAAP,KAAa,QAAtD,EAAgE;CAC/DnB,QAAKsB,KAAL,CAAWC,OAAX,GAAqBH,SAAS,EAA9B;CACA;CACD,MAAIA,SAAS,OAAOA,KAAP,KAAe,QAA5B,EAAsC;CACrC,OAAI,OAAOD,GAAP,KAAa,QAAjB,EAA2B;CAC1B,SAAK,IAAIxD,CAAT,IAAcwD,GAAd;CAAmB,SAAI,EAAExD,KAAKyD,KAAP,CAAJ,EAAmBpB,KAAKsB,KAAL,CAAW3D,CAAX,IAAgB,EAAhB;CAAtC;CACA;CACD,QAAK,IAAIA,EAAT,IAAcyD,KAAd,EAAqB;CACpBpB,SAAKsB,KAAL,CAAW3D,EAAX,IAAgB,OAAOyD,MAAMzD,EAAN,CAAP,KAAkB,QAAlB,IAA8B2B,mBAAmBkC,IAAnB,CAAwB7D,EAAxB,MAA6B,KAA3D,GAAoEyD,MAAMzD,EAAN,IAAS,IAA7E,GAAqFyD,MAAMzD,EAAN,CAArG;CACA;CACD;CACD,EAZI,MAaA,IAAIuD,SAAO,yBAAX,EAAsC;CAC1C,MAAIE,KAAJ,EAAWpB,KAAKyB,SAAL,GAAiBL,MAAMM,MAAN,IAAgB,EAAjC;CACX,EAFI,MAGA,IAAIR,KAAK,CAAL,KAAS,GAAT,IAAgBA,KAAK,CAAL,KAAS,GAA7B,EAAkC;CACtC,MAAIS,aAAaT,UAAUA,OAAKA,KAAKU,OAAL,CAAa,UAAb,EAAyB,EAAzB,CAAf,CAAjB;CACAV,SAAOA,KAAKZ,WAAL,GAAmBuB,SAAnB,CAA6B,CAA7B,CAAP;CACA,MAAIT,KAAJ,EAAW;CACV,OAAI,CAACD,GAAL,EAAUnB,KAAK8B,gBAAL,CAAsBZ,IAAtB,EAA4Ba,UAA5B,EAAwCJ,UAAxC;CACV,GAFD,MAGK;CACJ3B,QAAKgC,mBAAL,CAAyBd,IAAzB,EAA+Ba,UAA/B,EAA2CJ,UAA3C;CACA;CACD,GAAC3B,KAAKiC,UAAL,KAAoBjC,KAAKiC,UAAL,GAAkB,EAAtC,CAAD,EAA4Cf,IAA5C,IAAoDE,KAApD;CACA,EAVI,MAWA,IAAIF,SAAO,MAAP,IAAiBA,SAAO,MAAxB,IAAkC,CAACR,KAAnC,IAA4CQ,QAAQlB,IAAxD,EAA8D;CAGlE,MAAI;CACHA,QAAKkB,IAAL,IAAaE,SAAO,IAAP,GAAc,EAAd,GAAmBA,KAAhC;CACA,GAFD,CAEE,OAAOc,CAAP,EAAU;CACZ,MAAI,CAACd,SAAO,IAAP,IAAeA,UAAQ,KAAxB,KAAkCF,QAAM,YAA5C,EAA0DlB,KAAKmC,eAAL,CAAqBjB,IAArB;CAC1D,EAPI,MAQA;CACJ,MAAIkB,KAAK1B,SAAUQ,UAAUA,OAAOA,KAAKU,OAAL,CAAa,UAAb,EAAyB,EAAzB,CAAjB,CAAnB;;CAIA,MAAIR,SAAO,IAAP,IAAeA,UAAQ,KAA3B,EAAkC;CACjC,OAAIgB,EAAJ,EAAQpC,KAAKqC,iBAAL,CAAuB,8BAAvB,EAAuDnB,KAAKZ,WAAL,EAAvD,EAAR,KACKN,KAAKmC,eAAL,CAAqBjB,IAArB;CACL,GAHD,MAIK,IAAI,OAAOE,KAAP,KAAe,UAAnB,EAA+B;CACnC,OAAIgB,EAAJ,EAAQpC,KAAKsC,cAAL,CAAoB,8BAApB,EAAoDpB,KAAKZ,WAAL,EAApD,EAAwEc,KAAxE,EAAR,KACKpB,KAAKuC,YAAL,CAAkBrB,IAAlB,EAAwBE,KAAxB;CACL;CACD;CACD;;CAQD,SAASW,UAAT,CAAoBG,CAApB,EAAuB;CACtB,QAAO,KAAKD,UAAL,CAAgBC,EAAEM,IAAlB,EAAwBvF,QAAQwF,KAAR,IAAiBxF,QAAQwF,KAAR,CAAcP,CAAd,CAAjB,IAAqCA,CAA7D,CAAP;CACA;;CC7HM,IAAMQ,SAAS,EAAf;;AAGP,CAAO,IAAIC,YAAY,CAAhB;;CAGP,IAAIC,YAAY,KAAhB;;CAGA,IAAI3C,YAAY,KAAhB;;AAGA,CAAO,SAAS4C,WAAT,GAAuB;CAC7B,KAAIC,UAAJ;CACA,QAAQA,IAAEJ,OAAO3E,GAAP,EAAV,EAAyB;CACxB,MAAId,QAAQ8F,UAAZ,EAAwB9F,QAAQ8F,UAAR,CAAmBD,CAAnB;CACxB,MAAIA,EAAEE,iBAAN,EAAyBF,EAAEE,iBAAF;CACzB;CACD;;AAeD,CAAO,SAASC,IAAT,CAAcC,GAAd,EAAmB9E,KAAnB,EAA0B+E,OAA1B,EAAmCC,QAAnC,EAA6CC,MAA7C,EAAqDC,aAArD,EAAoE;CAE1E,KAAI,CAACX,WAAL,EAAkB;CAEjBC,cAAYS,UAAQ,IAAR,IAAgBA,OAAOE,eAAP,KAAyBvF,SAArD;;CAGAiC,cAAYiD,OAAK,IAAL,IAAa,EAAE7D,YAAY6D,GAAd,CAAzB;CACA;;CAED,KAAIM,MAAMC,MAAMP,GAAN,EAAW9E,KAAX,EAAkB+E,OAAlB,EAA2BC,QAA3B,EAAqCE,aAArC,CAAV;;CAGA,KAAID,UAAUG,IAAIzC,UAAJ,KAAiBsC,MAA/B,EAAuCA,OAAOK,WAAP,CAAmBF,GAAnB;;CAGvC,KAAI,IAAGb,SAAP,EAAkB;CACjB1C,cAAY,KAAZ;;CAEA,MAAI,CAACqD,aAAL,EAAoBT;CACpB;;CAED,QAAOW,GAAP;CACA;;CAYD,SAASC,KAAT,CAAeP,GAAf,EAAoB9E,KAApB,EAA2B+E,OAA3B,EAAoCC,QAApC,EAA8CE,aAA9C,EAA6D;CAC5D,KAAIK,MAAMT,GAAV;CAAA,KACCU,cAAchB,SADf;;CAIA,KAAIxE,SAAO,IAAP,IAAe,OAAOA,KAAP,KAAe,SAAlC,EAA6CA,QAAQ,EAAR;;CAI7C,KAAI,OAAOA,KAAP,KAAe,QAAf,IAA2B,OAAOA,KAAP,KAAe,QAA9C,EAAwD;CAGvD,MAAI8E,OAAOA,IAAIhD,SAAJ,KAAgBlC,SAAvB,IAAoCkF,IAAInC,UAAxC,KAAuD,CAACmC,IAAIW,UAAL,IAAmBP,aAA1E,CAAJ,EAA8F;CAE7F,OAAIJ,IAAIY,SAAJ,IAAe1F,KAAnB,EAA0B;CACzB8E,QAAIY,SAAJ,GAAgB1F,KAAhB;CACA;CACD,GALD,MAMK;CAEJuF,SAAMhD,SAASoD,cAAT,CAAwB3F,KAAxB,CAAN;CACA,OAAI8E,GAAJ,EAAS;CACR,QAAIA,IAAInC,UAAR,EAAoBmC,IAAInC,UAAJ,CAAeiD,YAAf,CAA4BL,GAA5B,EAAiCT,GAAjC;CACpBe,sBAAkBf,GAAlB,EAAuB,IAAvB;CACA;CACD;;CAEDS,MAAItE,QAAJ,IAAgB,IAAhB;;CAEA,SAAOsE,GAAP;CACA;;CAID,KAAIO,YAAY9F,MAAMf,QAAtB;CACA,KAAI,OAAO6G,SAAP,KAAmB,UAAvB,EAAmC;CAClC,SAAOC,wBAAwBjB,GAAxB,EAA6B9E,KAA7B,EAAoC+E,OAApC,EAA6CC,QAA7C,CAAP;CACA;;CAIDR,aAAYsB,cAAY,KAAZ,GAAoB,IAApB,GAA2BA,cAAY,eAAZ,GAA8B,KAA9B,GAAsCtB,SAA7E;;CAIAsB,aAAYjG,OAAOiG,SAAP,CAAZ;CACA,KAAI,CAAChB,GAAD,IAAQ,CAAC9C,YAAY8C,GAAZ,EAAiBgB,SAAjB,CAAb,EAA0C;CACzCP,QAAMlD,WAAWyD,SAAX,EAAsBtB,SAAtB,CAAN;;CAEA,MAAIM,GAAJ,EAAS;CAER,UAAOA,IAAIkB,UAAX;CAAuBT,QAAID,WAAJ,CAAgBR,IAAIkB,UAApB;CAAvB;CAGA,OAAIlB,IAAInC,UAAR,EAAoBmC,IAAInC,UAAJ,CAAeiD,YAAf,CAA4BL,GAA5B,EAAiCT,GAAjC;;CAGpBe,qBAAkBf,GAAlB,EAAuB,IAAvB;CACA;CACD;;CAGD,KAAImB,KAAKV,IAAIS,UAAb;CAAA,KACC7F,QAAQoF,IAAItE,QAAJ,CADT;CAAA,KAECiF,YAAYlG,MAAMb,QAFnB;;CAIA,KAAIgB,SAAO,IAAX,EAAiB;CAChBA,UAAQoF,IAAItE,QAAJ,IAAgB,EAAxB;CACA,OAAK,IAAIkF,IAAEZ,IAAIrG,UAAV,EAAsBK,IAAE4G,EAAE1G,MAA/B,EAAuCF,GAAvC;CAA8CY,SAAMgG,EAAE5G,CAAF,EAAKuD,IAAX,IAAmBqD,EAAE5G,CAAF,EAAKyD,KAAxB;CAA9C;CACA;;CAGD,KAAI,CAACnB,SAAD,IAAcqE,SAAd,IAA2BA,UAAUzG,MAAV,KAAmB,CAA9C,IAAmD,OAAOyG,UAAU,CAAV,CAAP,KAAsB,QAAzE,IAAqFD,MAAI,IAAzF,IAAiGA,GAAGnE,SAAH,KAAelC,SAAhH,IAA6HqG,GAAGG,WAAH,IAAgB,IAAjJ,EAAuJ;CACtJ,MAAIH,GAAGP,SAAH,IAAcQ,UAAU,CAAV,CAAlB,EAAgC;CAC/BD,MAAGP,SAAH,GAAeQ,UAAU,CAAV,CAAf;CACA;CACD,EAJD,MAMK,IAAIA,aAAaA,UAAUzG,MAAvB,IAAiCwG,MAAI,IAAzC,EAA+C;CACnDI,iBAAcd,GAAd,EAAmBW,SAAnB,EAA8BnB,OAA9B,EAAuCC,QAAvC,EAAiDnD,aAAa1B,MAAMmG,uBAAN,IAA+B,IAA7F;CACA;;CAIDC,gBAAehB,GAAf,EAAoBvF,MAAMd,UAA1B,EAAsCiB,KAAtC;;CAIAqE,aAAYgB,WAAZ;;CAEA,QAAOD,GAAP;CACA;;CAaD,SAASc,aAAT,CAAuBvB,GAAvB,EAA4BoB,SAA5B,EAAuCnB,OAAvC,EAAgDC,QAAhD,EAA0DwB,WAA1D,EAAuE;CACtE,KAAIC,mBAAmB3B,IAAI4B,UAA3B;CAAA,KACCvH,WAAW,EADZ;CAAA,KAECwH,QAAQ,EAFT;CAAA,KAGCC,WAAW,CAHZ;CAAA,KAICC,MAAM,CAJP;CAAA,KAKCC,MAAML,iBAAiBhH,MALxB;CAAA,KAMCsH,cAAc,CANf;CAAA,KAOCC,OAAOd,YAAYA,UAAUzG,MAAtB,GAA+B,CAPvC;CAAA,KAQCwH,UARD;CAAA,KAQIvC,UARJ;CAAA,KAQOwC,UARP;CAAA,KAQUC,eARV;CAAA,KAQkB9H,cARlB;;CAWA,KAAIyH,QAAM,CAAV,EAAa;CACZ,OAAK,IAAIvH,IAAE,CAAX,EAAcA,IAAEuH,GAAhB,EAAqBvH,GAArB,EAA0B;CACzB,OAAIF,SAAQoH,iBAAiBlH,CAAjB,CAAZ;CAAA,OACCY,QAAQd,OAAM4B,QAAN,CADT;CAAA,OAEClB,MAAMiH,QAAQ7G,KAAR,GAAgBd,OAAMoG,UAAN,GAAmBpG,OAAMoG,UAAN,CAAiB2B,KAApC,GAA4CjH,MAAMJ,GAAlE,GAAwE,IAF/E;CAGA,OAAIA,OAAK,IAAT,EAAe;CACd6G;CACAD,UAAM5G,GAAN,IAAaV,MAAb;CACA,IAHD,MAIK,IAAIc,UAAUd,OAAMyC,SAAN,KAAkBlC,SAAlB,GAA+B4G,cAAcnH,OAAMqG,SAAN,CAAgB2B,IAAhB,EAAd,GAAuC,IAAtE,GAA8Eb,WAAxF,CAAJ,EAA0G;CAC9GrH,aAAS4H,aAAT,IAA0B1H,MAA1B;CACA;CACD;CACD;;CAED,KAAI2H,SAAO,CAAX,EAAc;CACb,OAAK,IAAIzH,KAAE,CAAX,EAAcA,KAAEyH,IAAhB,EAAsBzH,IAAtB,EAA2B;CAC1B4H,YAASjB,UAAU3G,EAAV,CAAT;CACAF,WAAQ,IAAR;;CAGA,OAAIU,OAAMoH,OAAOpH,GAAjB;CACA,OAAIA,QAAK,IAAT,EAAe;CACd,QAAI6G,YAAYD,MAAM5G,IAAN,MAAaH,SAA7B,EAAwC;CACvCP,aAAQsH,MAAM5G,IAAN,CAAR;CACA4G,WAAM5G,IAAN,IAAaH,SAAb;CACAgH;CACA;CACD,IAND,MAQK,IAAIC,MAAIE,WAAR,EAAqB;CACzB,UAAKE,IAAEJ,GAAP,EAAYI,IAAEF,WAAd,EAA2BE,GAA3B,EAAgC;CAC/B,UAAI9H,SAAS8H,CAAT,MAAcrH,SAAd,IAA2B+B,eAAe+C,IAAIvF,SAAS8H,CAAT,CAAnB,EAAgCE,MAAhC,EAAwCX,WAAxC,CAA/B,EAAqF;CACpFnH,eAAQqF,CAAR;CACAvF,gBAAS8H,CAAT,IAAcrH,SAAd;CACA,WAAIqH,MAAIF,cAAY,CAApB,EAAuBA;CACvB,WAAIE,MAAIJ,GAAR,EAAaA;CACb;CACA;CACD;CACD;;CAGDxH,WAAQgG,MAAMhG,KAAN,EAAa8H,MAAb,EAAqBpC,OAArB,EAA8BC,QAA9B,CAAR;;CAEAkC,OAAIT,iBAAiBlH,EAAjB,CAAJ;CACA,OAAIF,SAASA,UAAQyF,GAAjB,IAAwBzF,UAAQ6H,CAApC,EAAuC;CACtC,QAAIA,KAAG,IAAP,EAAa;CACZpC,SAAIQ,WAAJ,CAAgBjG,KAAhB;CACA,KAFD,MAGK,IAAIA,UAAQ6H,EAAEd,WAAd,EAA2B;CAC/B1D,gBAAWwE,CAAX;CACA,KAFI,MAGA;CACJpC,SAAIwC,YAAJ,CAAiBjI,KAAjB,EAAwB6H,CAAxB;CACA;CACD;CACD;CACD;;CAID,KAAIN,QAAJ,EAAc;CACb,OAAK,IAAIrH,GAAT,IAAcoH,KAAd;CAAqB,OAAIA,MAAMpH,GAAN,MAAWK,SAAf,EAA0BiG,kBAAkBc,MAAMpH,GAAN,CAAlB,EAA4B,KAA5B;CAA/C;CACA;;CAGD,QAAOsH,OAAKE,WAAZ,EAAyB;CACxB,MAAI,CAAC1H,QAAQF,SAAS4H,aAAT,CAAT,MAAoCnH,SAAxC,EAAmDiG,kBAAkBxG,KAAlB,EAAyB,KAAzB;CACnD;CACD;;AAWD,CAAO,SAASwG,iBAAT,CAA2BjE,IAA3B,EAAiC2F,WAAjC,EAA8C;CACpD,KAAIlG,YAAYO,KAAK6D,UAArB;CACA,KAAIpE,SAAJ,EAAe;CAEdmG,mBAAiBnG,SAAjB;CACA,EAHD,MAIK;CAGJ,MAAIO,KAAKX,QAAL,KAAgB,IAAhB,IAAwBW,KAAKX,QAAL,EAAewG,GAA3C,EAAgD7F,KAAKX,QAAL,EAAewG,GAAf,CAAmB,IAAnB;;CAEhD,MAAIF,gBAAc,KAAd,IAAuB3F,KAAKX,QAAL,KAAgB,IAA3C,EAAiD;CAChDyB,cAAWd,IAAX;CACA;;CAED8F,iBAAe9F,IAAf;CACA;CACD;;AAQD,CAAO,SAAS8F,cAAT,CAAwB9F,IAAxB,EAA8B;CACpCA,QAAOA,KAAK+F,SAAZ;CACA,QAAO/F,IAAP,EAAa;CACZ,MAAIgG,OAAOhG,KAAKiG,eAAhB;CACAhC,oBAAkBjE,IAAlB,EAAwB,IAAxB;CACAA,SAAOgG,IAAP;CACA;CACD;;CAUD,SAASrB,cAAT,CAAwBzB,GAAxB,EAA6BgD,KAA7B,EAAoC/E,GAApC,EAAyC;CACxC,KAAID,aAAJ;;CAGA,MAAKA,IAAL,IAAaC,GAAb,EAAkB;CACjB,MAAI,EAAE+E,SAASA,MAAMhF,IAAN,KAAa,IAAxB,KAAiCC,IAAID,IAAJ,KAAW,IAAhD,EAAsD;CACrDD,eAAYiC,GAAZ,EAAiBhC,IAAjB,EAAuBC,IAAID,IAAJ,CAAvB,EAAkCC,IAAID,IAAJ,IAAYlD,SAA9C,EAAyD4E,SAAzD;CACA;CACD;;CAGD,MAAK1B,IAAL,IAAagF,KAAb,EAAoB;CACnB,MAAIhF,SAAO,UAAP,IAAqBA,SAAO,WAA5B,KAA4C,EAAEA,QAAQC,GAAV,KAAkB+E,MAAMhF,IAAN,OAAeA,SAAO,OAAP,IAAkBA,SAAO,SAAzB,GAAqCgC,IAAIhC,IAAJ,CAArC,GAAiDC,IAAID,IAAJ,CAAhE,CAA9D,CAAJ,EAA+I;CAC9ID,eAAYiC,GAAZ,EAAiBhC,IAAjB,EAAuBC,IAAID,IAAJ,CAAvB,EAAkCC,IAAID,IAAJ,IAAYgF,MAAMhF,IAAN,CAA9C,EAA2D0B,SAA3D;CACA;CACD;CACD;;CCxUM,IAAMuD,qBAAqB,EAA3B;;AAWP,CAAO,SAASC,eAAT,CAAyBC,IAAzB,EAA+B9H,KAA/B,EAAsC4E,OAAtC,EAA+C;CACrD,KAAImD,aAAJ;CAAA,KAAU3I,IAAIwI,mBAAmBtI,MAAjC;;CAEA,KAAIwI,KAAKE,SAAL,IAAkBF,KAAKE,SAAL,CAAeC,MAArC,EAA6C;CAC5CF,SAAO,IAAID,IAAJ,CAAS9H,KAAT,EAAgB4E,OAAhB,CAAP;CACAsD,YAAUzH,IAAV,CAAesH,IAAf,EAAqB/H,KAArB,EAA4B4E,OAA5B;CACA,EAHD,MAIK;CACJmD,SAAO,IAAIG,SAAJ,CAAclI,KAAd,EAAqB4E,OAArB,CAAP;CACAmD,OAAKI,WAAL,GAAmBL,IAAnB;CACAC,OAAKE,MAAL,GAAcG,QAAd;CACA;;CAGD,QAAOhJ,GAAP,EAAY;CACX,MAAIwI,mBAAmBxI,CAAnB,EAAsB+I,WAAtB,KAAoCL,IAAxC,EAA8C;CAC7CC,QAAKM,QAAL,GAAgBT,mBAAmBxI,CAAnB,EAAsBiJ,QAAtC;CACAT,sBAAmBU,MAAnB,CAA0BlJ,CAA1B,EAA6B,CAA7B;CACA,UAAO2I,IAAP;CACA;CACD;;CAED,QAAOA,IAAP;CACA;;CAID,SAASK,QAAT,CAAkBpI,KAAlB,EAAyBuI,KAAzB,EAAgC3D,OAAhC,EAAyC;CACxC,QAAO,KAAKuD,WAAL,CAAiBnI,KAAjB,EAAwB4E,OAAxB,CAAP;CACA;;CC9BM,SAAS4D,iBAAT,CAA2BtH,SAA3B,EAAsClB,KAAtC,EAA6CyI,UAA7C,EAAyD7D,OAAzD,EAAkEC,QAAlE,EAA4E;CAClF,KAAI3D,UAAUwH,QAAd,EAAwB;CACxBxH,WAAUwH,QAAV,GAAqB,IAArB;;CAEAxH,WAAUyH,KAAV,GAAkB3I,MAAMsH,GAAxB;CACApG,WAAU+F,KAAV,GAAkBjH,MAAMJ,GAAxB;CACA,QAAOI,MAAMsH,GAAb;CACA,QAAOtH,MAAMJ,GAAb;;CAEA,KAAI,OAAOsB,UAAUiH,WAAV,CAAsBS,wBAA7B,KAA0D,WAA9D,EAA2E;CAC1E,MAAI,CAAC1H,UAAU2H,IAAX,IAAmBhE,QAAvB,EAAiC;CAChC,OAAI3D,UAAU4H,kBAAd,EAAkC5H,UAAU4H,kBAAV;CAClC,GAFD,MAGK,IAAI5H,UAAU6H,yBAAd,EAAyC;CAC7C7H,aAAU6H,yBAAV,CAAoC/I,KAApC,EAA2C4E,OAA3C;CACA;CACD;;CAED,KAAIA,WAAWA,YAAU1D,UAAU0D,OAAnC,EAA4C;CAC3C,MAAI,CAAC1D,UAAU8H,WAAf,EAA4B9H,UAAU8H,WAAV,GAAwB9H,UAAU0D,OAAlC;CAC5B1D,YAAU0D,OAAV,GAAoBA,OAApB;CACA;;CAED,KAAI,CAAC1D,UAAU+H,SAAf,EAA0B/H,UAAU+H,SAAV,GAAsB/H,UAAUlB,KAAhC;CAC1BkB,WAAUlB,KAAV,GAAkBA,KAAlB;;CAEAkB,WAAUwH,QAAV,GAAqB,KAArB;;CAEA,KAAID,eAAa/H,SAAjB,EAA4B;CAC3B,MAAI+H,eAAa9H,WAAb,IAA4BjC,QAAQwK,oBAAR,KAA+B,KAA3D,IAAoE,CAAChI,UAAU2H,IAAnF,EAAyF;CACxFtH,mBAAgBL,SAAhB,EAA2BP,WAA3B,EAAwCkE,QAAxC;CACA,GAFD,MAGK;CACJ5D,iBAAcC,SAAd;CACA;CACD;;CAED,KAAIA,UAAUyH,KAAd,EAAqBzH,UAAUyH,KAAV,CAAgBzH,SAAhB;CACrB;;AAaD,CAAO,SAASK,eAAT,CAAyBL,SAAzB,EAAoCuH,UAApC,EAAgD5D,QAAhD,EAA0DsE,OAA1D,EAAmE;CACzE,KAAIjI,UAAUwH,QAAd,EAAwB;;CAExB,KAAI1I,QAAQkB,UAAUlB,KAAtB;CAAA,KACCuI,QAAQrH,UAAUqH,KADnB;CAAA,KAEC3D,UAAU1D,UAAU0D,OAFrB;CAAA,KAGCwE,gBAAgBlI,UAAU+H,SAAV,IAAuBjJ,KAHxC;CAAA,KAICqJ,gBAAgBnI,UAAUoI,SAAV,IAAuBf,KAJxC;CAAA,KAKCgB,kBAAkBrI,UAAU8H,WAAV,IAAyBpE,OAL5C;CAAA,KAMC4E,WAAWtI,UAAU2H,IANtB;CAAA,KAOCR,WAAWnH,UAAUmH,QAPtB;CAAA,KAQCoB,cAAcD,YAAYnB,QAR3B;CAAA,KASCqB,wBAAwBxI,UAAUoE,UATnC;CAAA,KAUCqE,OAAO,KAVR;CAAA,KAWCC,WAAWL,eAXZ;CAAA,KAYCM,iBAZD;CAAA,KAYW9B,aAZX;CAAA,KAYiB+B,cAZjB;;CAcA,KAAI5I,UAAUiH,WAAV,CAAsBS,wBAA1B,EAAoD;CACnDL,UAAQzI,OAAOA,OAAO,EAAP,EAAWyI,KAAX,CAAP,EAA0BrH,UAAUiH,WAAV,CAAsBS,wBAAtB,CAA+C5I,KAA/C,EAAsDuI,KAAtD,CAA1B,CAAR;CACArH,YAAUqH,KAAV,GAAkBA,KAAlB;CACA;;CAGD,KAAIiB,QAAJ,EAAc;CACbtI,YAAUlB,KAAV,GAAkBoJ,aAAlB;CACAlI,YAAUqH,KAAV,GAAkBc,aAAlB;CACAnI,YAAU0D,OAAV,GAAoB2E,eAApB;CACA,MAAId,eAAa7H,YAAb,IACAM,UAAU6I,qBADV,IAEA7I,UAAU6I,qBAAV,CAAgC/J,KAAhC,EAAuCuI,KAAvC,EAA8C3D,OAA9C,MAA2D,KAF/D,EAEsE;CACrE+E,UAAO,IAAP;CACA,GAJD,MAKK,IAAIzI,UAAU8I,mBAAd,EAAmC;CACvC9I,aAAU8I,mBAAV,CAA8BhK,KAA9B,EAAqCuI,KAArC,EAA4C3D,OAA5C;CACA;CACD1D,YAAUlB,KAAV,GAAkBA,KAAlB;CACAkB,YAAUqH,KAAV,GAAkBA,KAAlB;CACArH,YAAU0D,OAAV,GAAoBA,OAApB;CACA;;CAED1D,WAAU+H,SAAV,GAAsB/H,UAAUoI,SAAV,GAAsBpI,UAAU8H,WAAV,GAAwB9H,UAAUmH,QAAV,GAAqB,IAAzF;CACAnH,WAAUC,MAAV,GAAmB,KAAnB;;CAEA,KAAI,CAACwI,IAAL,EAAW;CACVE,aAAW3I,UAAU+G,MAAV,CAAiBjI,KAAjB,EAAwBuI,KAAxB,EAA+B3D,OAA/B,CAAX;;CAGA,MAAI1D,UAAU+I,eAAd,EAA+B;CAC9BrF,aAAU9E,OAAOA,OAAO,EAAP,EAAW8E,OAAX,CAAP,EAA4B1D,UAAU+I,eAAV,EAA5B,CAAV;CACA;;CAED,MAAIT,YAAYtI,UAAUgJ,uBAA1B,EAAmD;CAClDN,cAAW1I,UAAUgJ,uBAAV,CAAkCd,aAAlC,EAAiDC,aAAjD,CAAX;CACA;;CAED,MAAIc,iBAAiBN,YAAYA,SAAS/K,QAA1C;CAAA,MACCsL,kBADD;CAAA,MACYvB,aADZ;;CAGA,MAAI,OAAOsB,cAAP,KAAwB,UAA5B,EAAwC;;CAGvC,OAAIE,aAAarI,aAAa6H,QAAb,CAAjB;CACA9B,UAAO2B,qBAAP;;CAEA,OAAI3B,QAAQA,KAAKI,WAAL,KAAmBgC,cAA3B,IAA6CE,WAAWzK,GAAX,IAAgBmI,KAAKd,KAAtE,EAA6E;CAC5EuB,sBAAkBT,IAAlB,EAAwBsC,UAAxB,EAAoC1J,WAApC,EAAiDiE,OAAjD,EAA0D,KAA1D;CACA,IAFD,MAGK;CACJwF,gBAAYrC,IAAZ;;CAEA7G,cAAUoE,UAAV,GAAuByC,OAAOF,gBAAgBsC,cAAhB,EAAgCE,UAAhC,EAA4CzF,OAA5C,CAA9B;CACAmD,SAAKM,QAAL,GAAgBN,KAAKM,QAAL,IAAiBA,QAAjC;CACAN,SAAKuC,gBAAL,GAAwBpJ,SAAxB;CACAsH,sBAAkBT,IAAlB,EAAwBsC,UAAxB,EAAoC3J,SAApC,EAA+CkE,OAA/C,EAAwD,KAAxD;CACArD,oBAAgBwG,IAAhB,EAAsBpH,WAAtB,EAAmCkE,QAAnC,EAA6C,IAA7C;CACA;;CAEDgE,UAAOd,KAAKc,IAAZ;CACA,GApBD,MAqBK;CACJiB,WAAQL,WAAR;;CAGAW,eAAYV,qBAAZ;CACA,OAAIU,SAAJ,EAAe;CACdN,YAAQ5I,UAAUoE,UAAV,GAAuB,IAA/B;CACA;;CAED,OAAImE,eAAehB,eAAa9H,WAAhC,EAA6C;CAC5C,QAAImJ,KAAJ,EAAWA,MAAMxE,UAAN,GAAmB,IAAnB;CACXuD,WAAOnE,KAAKoF,KAAL,EAAYD,QAAZ,EAAsBjF,OAAtB,EAA+BC,YAAY,CAAC2E,QAA5C,EAAsDC,eAAeA,YAAYjH,UAAjF,EAA6F,IAA7F,CAAP;CACA;CACD;;CAED,MAAIiH,eAAeZ,SAAOY,WAAtB,IAAqC1B,SAAO2B,qBAAhD,EAAuE;CACtE,OAAIa,aAAad,YAAYjH,UAA7B;CACA,OAAI+H,cAAc1B,SAAO0B,UAAzB,EAAqC;CACpCA,eAAW9E,YAAX,CAAwBoD,IAAxB,EAA8BY,WAA9B;;CAEA,QAAI,CAACW,SAAL,EAAgB;CACfX,iBAAYnE,UAAZ,GAAyB,IAAzB;CACAI,uBAAkB+D,WAAlB,EAA+B,KAA/B;CACA;CACD;CACD;;CAED,MAAIW,SAAJ,EAAe;CACd/C,oBAAiB+C,SAAjB;CACA;;CAEDlJ,YAAU2H,IAAV,GAAiBA,IAAjB;CACA,MAAIA,QAAQ,CAACM,OAAb,EAAsB;CACrB,OAAIqB,eAAetJ,SAAnB;CAAA,OACCuJ,IAAIvJ,SADL;CAEA,UAAQuJ,IAAEA,EAAEH,gBAAZ,EAA+B;CAC9B,KAACE,eAAeC,CAAhB,EAAmB5B,IAAnB,GAA0BA,IAA1B;CACA;CACDA,QAAKvD,UAAL,GAAkBkF,YAAlB;CACA3B,QAAKjH,qBAAL,GAA6B4I,aAAarC,WAA1C;CACA;CACD;;CAED,KAAI,CAACqB,QAAD,IAAa3E,QAAjB,EAA2B;CAC1BV,SAAOuG,OAAP,CAAexJ,SAAf;CACA,EAFD,MAGK,IAAI,CAACyI,IAAL,EAAW;;CAMf,MAAIzI,UAAUyJ,kBAAd,EAAkC;CACjCzJ,aAAUyJ,kBAAV,CAA6BvB,aAA7B,EAA4CC,aAA5C,EAA2DO,QAA3D;CACA;CACD,MAAIlL,QAAQkM,WAAZ,EAAyBlM,QAAQkM,WAAR,CAAoB1J,SAApB;CACzB;;CAED,QAAOA,UAAU2J,gBAAV,CAA2BvL,MAAlC;CAA0C4B,YAAU2J,gBAAV,CAA2BrL,GAA3B,GAAiCiB,IAAjC,CAAsCS,SAAtC;CAA1C,EAEA,IAAI,CAACkD,SAAD,IAAc,CAAC+E,OAAnB,EAA4B7E;CAC5B;;AAaD,CAAO,SAASsB,uBAAT,CAAiCjB,GAAjC,EAAsC9E,KAAtC,EAA6C+E,OAA7C,EAAsDC,QAAtD,EAAgE;CACtE,KAAIN,IAAII,OAAOA,IAAIW,UAAnB;CAAA,KACCwF,oBAAoBvG,CADrB;CAAA,KAECwG,SAASpG,GAFV;CAAA,KAGCqG,gBAAgBzG,KAAKI,IAAI/C,qBAAJ,KAA4B/B,MAAMf,QAHxD;CAAA,KAICmM,UAAUD,aAJX;CAAA,KAKChL,QAAQgC,aAAanC,KAAb,CALT;CAMA,QAAO0E,KAAK,CAAC0G,OAAN,KAAkB1G,IAAEA,EAAE+F,gBAAtB,CAAP,EAAgD;CAC/CW,YAAU1G,EAAE4D,WAAF,KAAgBtI,MAAMf,QAAhC;CACA;;CAED,KAAIyF,KAAK0G,OAAL,KAAiB,CAACpG,QAAD,IAAaN,EAAEe,UAAhC,CAAJ,EAAiD;CAChDkD,oBAAkBjE,CAAlB,EAAqBvE,KAArB,EAA4Ba,YAA5B,EAA0C+D,OAA1C,EAAmDC,QAAnD;CACAF,QAAMJ,EAAEsE,IAAR;CACA,EAHD,MAIK;CACJ,MAAIiC,qBAAqB,CAACE,aAA1B,EAAyC;CACxC3D,oBAAiByD,iBAAjB;CACAnG,SAAMoG,SAAS,IAAf;CACA;;CAEDxG,MAAIsD,gBAAgBhI,MAAMf,QAAtB,EAAgCkB,KAAhC,EAAuC4E,OAAvC,CAAJ;CACA,MAAID,OAAO,CAACJ,EAAE8D,QAAd,EAAwB;CACvB9D,KAAE8D,QAAF,GAAa1D,GAAb;;CAEAoG,YAAS,IAAT;CACA;CACDvC,oBAAkBjE,CAAlB,EAAqBvE,KAArB,EAA4BW,WAA5B,EAAyCiE,OAAzC,EAAkDC,QAAlD;CACAF,QAAMJ,EAAEsE,IAAR;;CAEA,MAAIkC,UAAUpG,QAAMoG,MAApB,EAA4B;CAC3BA,UAAOzF,UAAP,GAAoB,IAApB;CACAI,qBAAkBqF,MAAlB,EAA0B,KAA1B;CACA;CACD;;CAED,QAAOpG,GAAP;CACA;;AASD,CAAO,SAAS0C,gBAAT,CAA0BnG,SAA1B,EAAqC;CAC3C,KAAIxC,QAAQwM,aAAZ,EAA2BxM,QAAQwM,aAAR,CAAsBhK,SAAtB;;CAE3B,KAAI2H,OAAO3H,UAAU2H,IAArB;;CAEA3H,WAAUwH,QAAV,GAAqB,IAArB;;CAEA,KAAIxH,UAAUiK,oBAAd,EAAoCjK,UAAUiK,oBAAV;;CAEpCjK,WAAU2H,IAAV,GAAiB,IAAjB;;CAGA,KAAIuC,QAAQlK,UAAUoE,UAAtB;CACA,KAAI8F,KAAJ,EAAW;CACV/D,mBAAiB+D,KAAjB;CACA,EAFD,MAGK,IAAIvC,IAAJ,EAAU;CACd,MAAIA,KAAK/H,QAAL,KAAkB+H,KAAK/H,QAAL,EAAewG,GAArC,EAA0CuB,KAAK/H,QAAL,EAAewG,GAAf,CAAmB,IAAnB;;CAE1CpG,YAAUmH,QAAV,GAAqBQ,IAArB;;CAEAtG,aAAWsG,IAAX;CACAjB,qBAAmBrI,IAAnB,CAAwB2B,SAAxB;;CAEAqG,iBAAesB,IAAf;CACA;;CAED,KAAI3H,UAAUyH,KAAd,EAAqBzH,UAAUyH,KAAV,CAAgB,IAAhB;CACrB;;CCpRM,SAAST,SAAT,CAAmBlI,KAAnB,EAA0B4E,OAA1B,EAAmC;CACzC,MAAKzD,MAAL,GAAc,IAAd;;CAMA,MAAKyD,OAAL,GAAeA,OAAf;;CAMA,MAAK5E,KAAL,GAAaA,KAAb;;CAMA,MAAKuI,KAAL,GAAa,KAAKA,KAAL,IAAc,EAA3B;;CAEA,MAAKsC,gBAAL,GAAwB,EAAxB;CACA;;CAGD/K,OAAOoI,UAAUF,SAAjB,EAA4B;CAU3BqD,SAV2B,oBAUlB9C,KAVkB,EAUX+C,QAVW,EAUD;CACzB,MAAI,CAAC,KAAKhC,SAAV,EAAqB,KAAKA,SAAL,GAAiB,KAAKf,KAAtB;CACrB,OAAKA,KAAL,GAAazI,OACZA,OAAO,EAAP,EAAW,KAAKyI,KAAhB,CADY,EAEZ,OAAOA,KAAP,KAAiB,UAAjB,GAA8BA,MAAM,KAAKA,KAAX,EAAkB,KAAKvI,KAAvB,CAA9B,GAA8DuI,KAFlD,CAAb;CAIA,MAAI+C,QAAJ,EAAc,KAAKT,gBAAL,CAAsBtL,IAAtB,CAA2B+L,QAA3B;CACdrK,gBAAc,IAAd;CACA,EAlB0B;CA2B3BsK,YA3B2B,uBA2BfD,QA3Be,EA2BL;CACrB,MAAIA,QAAJ,EAAc,KAAKT,gBAAL,CAAsBtL,IAAtB,CAA2B+L,QAA3B;CACd/J,kBAAgB,IAAhB,EAAsBX,YAAtB;CACA,EA9B0B;CA2C3BqH,OA3C2B,oBA2ClB;CA3CkB,CAA5B;;CCzBO,SAASA,MAAT,CAAgBpI,KAAhB,EAAuBiF,MAAvB,EAA+B0G,KAA/B,EAAsC;CAC5C,SAAO9G,KAAK8G,KAAL,EAAY3L,KAAZ,EAAmB,EAAnB,EAAuB,KAAvB,EAA8BiF,MAA9B,EAAsC,KAAtC,CAAP;CACA;;ACdD,cAAe;CACdjG,KADc;CAEdyD,iBAFc;CAGd/B,2BAHc;CAId2H,qBAJc;CAKdD,eALc;CAMd5G,mBANc;CAOd3C;CAPc,CAAf;;CCLI,IAAI,OAAO+M,MAAP,IAAe,WAAnB,EAAgCA,OAAOC,OAAP,GAAiBC,MAAjB,CAAhC,KACKC,KAAKD,MAAL,GAAcA,MAAd;;;;"}
|
1
|
+
{"version":3,"file":"preact.dev.js","sources":["../src/vnode.js","../src/options.js","../src/h.js","../src/util.js","../src/clone-element.js","../src/constants.js","../src/render-queue.js","../src/vdom/index.js","../src/dom/index.js","../src/vdom/diff.js","../src/vdom/component-recycler.js","../src/vdom/component.js","../src/component.js","../src/render.js","../src/preact.js","../src/preact.js"],"sourcesContent":["/**\n * Virtual DOM Node\n * @typedef VNode\n * @property {string | function} nodeName The string of the DOM node to create or Component constructor to render\n * @property {Array<VNode | string>} children The children of node\n * @property {string | number | undefined} key The key used to identify this VNode in a list\n * @property {object} attributes The properties of this VNode\n */\nexport const VNode = function VNode() {};\n","/**\n * @typedef {import('./component').Component} Component\n * @typedef {import('./vnode').VNode} VNode\n */\n\n/**\n * Global options\n * @public\n * @typedef Options\n * @property {boolean} [syncComponentUpdates] If `true`, `prop` changes trigger synchronous component updates. Defaults to true.\n * @property {(vnode: VNode) => void} [vnode] Processes all created VNodes.\n * @property {(component: Component) => void} [afterMount] Hook invoked after a component is mounted.\n * @property {(component: Component) => void} [afterUpdate] Hook invoked after the DOM is updated with a component's latest render.\n * @property {(component: Component) => void} [beforeUnmount] Hook invoked immediately before a component is unmounted.\n * @property {(rerender: function) => void} [debounceRendering] Hook invoked whenever a rerender is requested. Can be used to debounce rerenders.\n * @property {(event: Event) => Event | void} [event] Hook invoked before any Preact event listeners. The return value (if any) replaces the native browser event given to event listeners\n */\n\n/** @type {Options} */\nconst options = {};\n\nexport default options;\n","import { VNode } from './vnode';\nimport options from './options';\n\n\nconst stack = [];\n\nconst EMPTY_CHILDREN = [];\n\n/**\n * JSX/hyperscript reviver.\n * @see http://jasonformat.com/wtf-is-jsx\n * Benchmarks: https://esbench.com/bench/57ee8f8e330ab09900a1a1a0\n *\n * Note: this is exported as both `h()` and `createElement()` for compatibility\n * reasons.\n *\n * Creates a VNode (virtual DOM element). A tree of VNodes can be used as a\n * lightweight representation of the structure of a DOM tree. This structure can\n * be realized by recursively comparing it against the current _actual_ DOM\n * structure, and applying only the differences.\n *\n * `h()`/`createElement()` accepts an element name, a list of attributes/props,\n * and optionally children to append to the element.\n *\n * @example The following DOM tree\n *\n * `<div id=\"foo\" name=\"bar\">Hello!</div>`\n *\n * can be constructed using this function as:\n *\n * `h('div', { id: 'foo', name : 'bar' }, 'Hello!');`\n *\n * @param {string | function} nodeName An element name. Ex: `div`, `a`, `span`, etc.\n * @param {object | null} attributes Any attributes/props to set on the created element.\n * @param {VNode[]} [rest] Additional arguments are taken to be children to\n * append. Can be infinitely nested Arrays.\n *\n * @public\n */\nexport function h(nodeName, attributes) {\n\tlet children=EMPTY_CHILDREN, lastSimple, child, simple, i;\n\tfor (i=arguments.length; i-- > 2; ) {\n\t\tstack.push(arguments[i]);\n\t}\n\tif (attributes && attributes.children!=null) {\n\t\tif (!stack.length) stack.push(attributes.children);\n\t\tdelete attributes.children;\n\t}\n\twhile (stack.length) {\n\t\tif ((child = stack.pop()) && child.pop!==undefined) {\n\t\t\tfor (i=child.length; i--; ) stack.push(child[i]);\n\t\t}\n\t\telse {\n\t\t\tif (typeof child==='boolean') child = null;\n\n\t\t\tif ((simple = typeof nodeName!=='function')) {\n\t\t\t\tif (child==null) child = '';\n\t\t\t\telse if (typeof child==='number') child = String(child);\n\t\t\t\telse if (typeof child!=='string') simple = false;\n\t\t\t}\n\n\t\t\tif (simple && lastSimple) {\n\t\t\t\tchildren[children.length-1] += child;\n\t\t\t}\n\t\t\telse if (children===EMPTY_CHILDREN) {\n\t\t\t\tchildren = [child];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tchildren.push(child);\n\t\t\t}\n\n\t\t\tlastSimple = simple;\n\t\t}\n\t}\n\n\tlet p = new VNode();\n\tp.nodeName = nodeName;\n\tp.children = children;\n\tp.attributes = attributes==null ? undefined : attributes;\n\tp.key = attributes==null ? undefined : attributes.key;\n\n\t// if a \"vnode hook\" is defined, pass every created VNode to it\n\tif (options.vnode!==undefined) options.vnode(p);\n\n\treturn p;\n}\n","/**\n * Copy all properties from `props` onto `obj`.\n * @param {object} obj Object onto which properties should be copied.\n * @param {object} props Object from which to copy properties.\n * @returns {object}\n * @private\n */\nexport function extend(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn obj;\n}\n\n/** Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} [ref=null]\n * @param {any} [value]\n */\nexport function applyRef(ref, value) {\n\tif (ref!=null) {\n\t\tif (typeof ref=='function') ref(value);\n\t\telse ref.current = value;\n\t}\n}\n\n/**\n * Call a function asynchronously, as soon as possible. Makes\n * use of HTML Promise to schedule the callback if available,\n * otherwise falling back to `setTimeout` (mainly for IE<11).\n * @type {(callback: function) => void}\n */\nexport const defer = typeof Promise=='function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n","import { extend } from './util';\nimport { h } from './h';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its\n * children.\n * @param {import('./vnode').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./vnode').VNode>} [rest] Any additional arguments will be used as replacement\n * children.\n */\nexport function cloneElement(vnode, props) {\n\treturn h(\n\t\tvnode.nodeName,\n\t\textend(extend({}, vnode.attributes), props),\n\t\targuments.length>2 ? [].slice.call(arguments, 2) : vnode.children\n\t);\n}\n","// render modes\n\n/** Do not re-render a component */\nexport const NO_RENDER = 0;\n/** Synchronously re-render a component and its children */\nexport const SYNC_RENDER = 1;\n/** Synchronously re-render a component, even if its lifecycle methods attempt to prevent it. */\nexport const FORCE_RENDER = 2;\n/** Queue asynchronous re-render of a component and it's children */\nexport const ASYNC_RENDER = 3;\n\n\nexport const ATTR_KEY = '__preactattr_';\n\n/** DOM properties that should NOT have \"px\" added when numeric */\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\n","import options from './options';\nimport { defer } from './util';\nimport { renderComponent } from './vdom/component';\n\n/**\n * Managed queue of dirty components to be re-rendered\n * @type {Array<import('./component').Component>}\n */\nlet items = [];\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./component').Component} component The component to rerender\n */\nexport function enqueueRender(component) {\n\tif (!component._dirty && (component._dirty = true) && items.push(component)==1) {\n\t\t(options.debounceRendering || defer)(rerender);\n\t}\n}\n\n/** Rerender all enqueued dirty components */\nexport function rerender() {\n\tlet p;\n\twhile ( (p = items.pop()) ) {\n\t\tif (p._dirty) renderComponent(p);\n\t}\n}\n","import { extend } from '../util';\n\n\n/**\n * Check if two nodes are equivalent.\n * @param {import('../dom').PreactElement} node DOM Node to compare\n * @param {import('../vnode').VNode} vnode Virtual DOM node to compare\n * @param {boolean} [hydrating=false] If true, ignores component constructors\n * when comparing.\n * @private\n */\nexport function isSameNodeType(node, vnode, hydrating) {\n\tif (typeof vnode==='string' || typeof vnode==='number') {\n\t\treturn node.splitText!==undefined;\n\t}\n\tif (typeof vnode.nodeName==='string') {\n\t\treturn !node._componentConstructor && isNamedNode(node, vnode.nodeName);\n\t}\n\treturn hydrating || node._componentConstructor===vnode.nodeName;\n}\n\n\n/**\n * Check if an Element has a given nodeName, case-insensitively.\n * @param {import('../dom').PreactElement} node A DOM Element to inspect the name of.\n * @param {string} nodeName Unnormalized name to compare against.\n */\nexport function isNamedNode(node, nodeName) {\n\treturn node.normalizedNodeName===nodeName || node.nodeName.toLowerCase()===nodeName.toLowerCase();\n}\n\n\n/**\n * Reconstruct Component-style `props` from a VNode.\n * Ensures default/fallback values from `defaultProps`:\n * Own-properties of `defaultProps` not present in `vnode.attributes` are added.\n * @param {import('../vnode').VNode} vnode The VNode to get props for\n * @returns {object} The props to use for this VNode\n */\nexport function getNodeProps(vnode) {\n\tlet props = extend({}, vnode.attributes);\n\tprops.children = vnode.children;\n\n\tlet defaultProps = vnode.nodeName.defaultProps;\n\tif (defaultProps!==undefined) {\n\t\tfor (let i in defaultProps) {\n\t\t\tif (props[i]===undefined) {\n\t\t\t\tprops[i] = defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn props;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport { applyRef } from '../util';\nimport options from '../options';\n\n/**\n * A DOM event listener\n * @typedef {(e: Event) => void} EventListner\n */\n\n/**\n * A mapping of event types to event listeners\n * @typedef {Object.<string, EventListener>} EventListenerMap\n */\n\n/**\n * Properties Preact adds to elements it creates\n * @typedef PreactElementExtensions\n * @property {string} [normalizedNodeName] A normalized node name to use in diffing\n * @property {EventListenerMap} [_listeners] A map of event listeners added by components to this DOM node\n * @property {import('../component').Component} [_component] The component that rendered this DOM node\n * @property {function} [_componentConstructor] The constructor of the component that rendered this DOM node\n */\n\n/**\n * A DOM element that has been extended with Preact properties\n * @typedef {Element & ElementCSSInlineStyle & PreactElementExtensions} PreactElement\n */\n\n/**\n * Create an element with the given nodeName.\n * @param {string} nodeName The DOM node to create\n * @param {boolean} [isSvg=false] If `true`, creates an element within the SVG\n * namespace.\n * @returns {PreactElement} The created DOM node\n */\nexport function createNode(nodeName, isSvg) {\n\t/** @type {PreactElement} */\n\tlet node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n\tnode.normalizedNodeName = nodeName;\n\treturn node;\n}\n\n\n/**\n * Remove a child node from its parent if attached.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\n\n/**\n * Set a named attribute on the given Node, with special behavior for some names\n * and event handlers. If `value` is `null`, the attribute/handler will be\n * removed.\n * @param {PreactElement} node An element to mutate\n * @param {string} name The name/key to set, such as an event or attribute name\n * @param {*} old The last value that was set for this name/node pair\n * @param {*} value An attribute value, such as a function to be used as an\n * event handler\n * @param {boolean} isSvg Are we currently diffing inside an svg?\n * @private\n */\nexport function setAccessor(node, name, old, value, isSvg) {\n\tif (name==='className') name = 'class';\n\n\n\tif (name==='key') {\n\t\t// ignore\n\t}\n\telse if (name==='ref') {\n\t\tapplyRef(old, null);\n\t\tapplyRef(value, node);\n\t}\n\telse if (name==='class' && !isSvg) {\n\t\tnode.className = value || '';\n\t}\n\telse if (name==='style') {\n\t\tif (!value || typeof value==='string' || typeof old==='string') {\n\t\t\tnode.style.cssText = value || '';\n\t\t}\n\t\tif (value && typeof value==='object') {\n\t\t\tif (typeof old!=='string') {\n\t\t\t\tfor (let i in old) if (!(i in value)) node.style[i] = '';\n\t\t\t}\n\t\t\tfor (let i in value) {\n\t\t\t\tnode.style[i] = typeof value[i]==='number' && IS_NON_DIMENSIONAL.test(i)===false ? (value[i]+'px') : value[i];\n\t\t\t}\n\t\t}\n\t}\n\telse if (name==='dangerouslySetInnerHTML') {\n\t\tif (value) node.innerHTML = value.__html || '';\n\t}\n\telse if (name[0]=='o' && name[1]=='n') {\n\t\tlet useCapture = name !== (name=name.replace(/Capture$/, ''));\n\t\tname = name.toLowerCase().substring(2);\n\t\tif (value) {\n\t\t\tif (!old) node.addEventListener(name, eventProxy, useCapture);\n\t\t}\n\t\telse {\n\t\t\tnode.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t\t(node._listeners || (node._listeners = {}))[name] = value;\n\t}\n\telse if (name!=='list' && name!=='type' && !isSvg && name in node) {\n\t\t// Attempt to set a DOM property to the given value.\n\t\t// IE & FF throw for certain property-value combinations.\n\t\ttry {\n\t\t\tnode[name] = value==null ? '' : value;\n\t\t} catch (e) { }\n\t\tif ((value==null || value===false) && name!='spellcheck') node.removeAttribute(name);\n\t}\n\telse {\n\t\tlet ns = isSvg && (name !== (name = name.replace(/^xlink:?/, '')));\n\t\t// spellcheck is treated differently than all other boolean values and\n\t\t// should not be removed when the value is `false`. See:\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-spellcheck\n\t\tif (value==null || value===false) {\n\t\t\tif (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());\n\t\t\telse node.removeAttribute(name);\n\t\t}\n\t\telse if (typeof value!=='function') {\n\t\t\tif (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);\n\t\t\telse node.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\treturn this._listeners[e.type](options.event && options.event(e) || e);\n}\n","import { ATTR_KEY } from '../constants';\nimport { isSameNodeType, isNamedNode } from './index';\nimport { buildComponentFromVNode } from './component';\nimport { createNode, setAccessor } from '../dom/index';\nimport { unmountComponent } from './component';\nimport options from '../options';\nimport { applyRef } from '../util';\nimport { removeNode } from '../dom/index';\n\n/**\n * Queue of components that have been mounted and are awaiting componentDidMount\n * @type {Array<import('../component').Component>}\n */\nexport const mounts = [];\n\n/** Diff recursion count, used to track the end of the diff cycle. */\nexport let diffLevel = 0;\n\n/** Global flag indicating if the diff is currently within an SVG */\nlet isSvgMode = false;\n\n/** Global flag indicating if the diff is performing hydration */\nlet hydrating = false;\n\n/** Invoke queued componentDidMount lifecycle methods */\nexport function flushMounts() {\n\tlet c;\n\twhile ((c = mounts.shift())) {\n\t\tif (options.afterMount) options.afterMount(c);\n\t\tif (c.componentDidMount) c.componentDidMount();\n\t}\n}\n\n\n/**\n * Apply differences in a given vnode (and it's deep children) to a real DOM Node.\n * @param {import('../dom').PreactElement} dom A DOM node to mutate into the shape of a `vnode`\n * @param {import('../vnode').VNode} vnode A VNode (with descendants forming a tree) representing\n * the desired DOM structure\n * @param {object} context The current context\n * @param {boolean} mountAll Whether or not to immediately mount all components\n * @param {Element} parent ?\n * @param {boolean} componentRoot ?\n * @returns {import('../dom').PreactElement} The created/mutated element\n * @private\n */\nexport function diff(dom, vnode, context, mountAll, parent, componentRoot) {\n\t// diffLevel having been 0 here indicates initial entry into the diff (not a subdiff)\n\tif (!diffLevel++) {\n\t\t// when first starting the diff, check if we're diffing an SVG or within an SVG\n\t\tisSvgMode = parent!=null && parent.ownerSVGElement!==undefined;\n\n\t\t// hydration is indicated by the existing element to be diffed not having a prop cache\n\t\thydrating = dom!=null && !(ATTR_KEY in dom);\n\t}\n\n\tlet ret = idiff(dom, vnode, context, mountAll, componentRoot);\n\n\t// append the element if its a new parent\n\tif (parent && ret.parentNode!==parent) parent.appendChild(ret);\n\n\t// diffLevel being reduced to 0 means we're exiting the diff\n\tif (!--diffLevel) {\n\t\thydrating = false;\n\t\t// invoke queued componentDidMount lifecycle methods\n\t\tif (!componentRoot) flushMounts();\n\t}\n\n\treturn ret;\n}\n\n\n/**\n * Internals of `diff()`, separated to allow bypassing diffLevel / mount flushing.\n * @param {import('../dom').PreactElement} dom A DOM node to mutate into the shape of a `vnode`\n * @param {import('../vnode').VNode} vnode A VNode (with descendants forming a tree) representing the desired DOM structure\n * @param {object} context The current context\n * @param {boolean} mountAll Whether or not to immediately mount all components\n * @param {boolean} [componentRoot] ?\n * @private\n */\nfunction idiff(dom, vnode, context, mountAll, componentRoot) {\n\tlet out = dom,\n\t\tprevSvgMode = isSvgMode;\n\n\t// empty values (null, undefined, booleans) render as empty Text nodes\n\tif (vnode==null || typeof vnode==='boolean') vnode = '';\n\n\n\t// Fast case: Strings & Numbers create/update Text nodes.\n\tif (typeof vnode==='string' || typeof vnode==='number') {\n\n\t\t// update if it's already a Text node:\n\t\tif (dom && dom.splitText!==undefined && dom.parentNode && (!dom._component || componentRoot)) {\n\t\t\t/* istanbul ignore if */ /* Browser quirk that can't be covered: https://github.com/developit/preact/commit/fd4f21f5c45dfd75151bd27b4c217d8003aa5eb9 */\n\t\t\tif (dom.nodeValue!=vnode) {\n\t\t\t\tdom.nodeValue = vnode;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// it wasn't a Text node: replace it with one and recycle the old Element\n\t\t\tout = document.createTextNode(vnode);\n\t\t\tif (dom) {\n\t\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\t\t\t\trecollectNodeTree(dom, true);\n\t\t\t}\n\t\t}\n\n\t\tout[ATTR_KEY] = true;\n\n\t\treturn out;\n\t}\n\n\n\t// If the VNode represents a Component, perform a component diff:\n\tlet vnodeName = vnode.nodeName;\n\tif (typeof vnodeName==='function') {\n\t\treturn buildComponentFromVNode(dom, vnode, context, mountAll);\n\t}\n\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvgMode = vnodeName==='svg' ? true : vnodeName==='foreignObject' ? false : isSvgMode;\n\n\n\t// If there's no existing element or it's the wrong type, create a new one:\n\tvnodeName = String(vnodeName);\n\tif (!dom || !isNamedNode(dom, vnodeName)) {\n\t\tout = createNode(vnodeName, isSvgMode);\n\n\t\tif (dom) {\n\t\t\t// move children into the replacement node\n\t\t\twhile (dom.firstChild) out.appendChild(dom.firstChild);\n\n\t\t\t// if the previous Element was mounted into the DOM, replace it inline\n\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\n\t\t\t// recycle the old element (skips non-Element node types)\n\t\t\trecollectNodeTree(dom, true);\n\t\t}\n\t}\n\n\n\tlet fc = out.firstChild,\n\t\tprops = out[ATTR_KEY],\n\t\tvchildren = vnode.children;\n\n\tif (props==null) {\n\t\tprops = out[ATTR_KEY] = {};\n\t\tfor (let a=out.attributes, i=a.length; i--; ) props[a[i].name] = a[i].value;\n\t}\n\n\t// Optimization: fast-path for elements containing a single TextNode:\n\tif (!hydrating && vchildren && vchildren.length===1 && typeof vchildren[0]==='string' && fc!=null && fc.splitText!==undefined && fc.nextSibling==null) {\n\t\tif (fc.nodeValue!=vchildren[0]) {\n\t\t\tfc.nodeValue = vchildren[0];\n\t\t}\n\t}\n\t// otherwise, if there are existing or new children, diff them:\n\telse if (vchildren && vchildren.length || fc!=null) {\n\t\tinnerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML!=null);\n\t}\n\n\n\t// Apply attributes/props from VNode to the DOM Element:\n\tdiffAttributes(out, vnode.attributes, props);\n\n\n\t// restore previous SVG mode: (in case we're exiting an SVG namespace)\n\tisSvgMode = prevSvgMode;\n\n\treturn out;\n}\n\n\n/**\n * Apply child and attribute changes between a VNode and a DOM Node to the DOM.\n * @param {import('../dom').PreactElement} dom Element whose children should be compared & mutated\n * @param {Array<import('../vnode').VNode>} vchildren Array of VNodes to compare to `dom.childNodes`\n * @param {object} context Implicitly descendant context object (from most\n * recent `getChildContext()`)\n * @param {boolean} mountAll Whether or not to immediately mount all components\n * @param {boolean} isHydrating if `true`, consumes externally created elements\n * similar to hydration\n */\nfunction innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n\tlet originalChildren = dom.childNodes,\n\t\tchildren = [],\n\t\tkeyed = {},\n\t\tkeyedLen = 0,\n\t\tmin = 0,\n\t\tlen = originalChildren.length,\n\t\tchildrenLen = 0,\n\t\tvlen = vchildren ? vchildren.length : 0,\n\t\tj, c, f, vchild, child;\n\n\t// Build up a map of keyed children and an Array of unkeyed children:\n\tif (len!==0) {\n\t\tfor (let i=0; i<len; i++) {\n\t\t\tlet child = originalChildren[i],\n\t\t\t\tprops = child[ATTR_KEY],\n\t\t\t\tkey = vlen && props ? child._component ? child._component.__key : props.key : null;\n\t\t\tif (key!=null) {\n\t\t\t\tkeyedLen++;\n\t\t\t\tkeyed[key] = child;\n\t\t\t}\n\t\t\telse if (props || (child.splitText!==undefined ? (isHydrating ? child.nodeValue.trim() : true) : isHydrating)) {\n\t\t\t\tchildren[childrenLen++] = child;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (vlen!==0) {\n\t\tfor (let i=0; i<vlen; i++) {\n\t\t\tvchild = vchildren[i];\n\t\t\tchild = null;\n\n\t\t\t// attempt to find a node based on key matching\n\t\t\tlet key = vchild.key;\n\t\t\tif (key!=null) {\n\t\t\t\tif (keyedLen && keyed[key]!==undefined) {\n\t\t\t\t\tchild = keyed[key];\n\t\t\t\t\tkeyed[key] = undefined;\n\t\t\t\t\tkeyedLen--;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// attempt to pluck a node of the same type from the existing children\n\t\t\telse if (min<childrenLen) {\n\t\t\t\tfor (j=min; j<childrenLen; j++) {\n\t\t\t\t\tif (children[j]!==undefined && isSameNodeType(c = children[j], vchild, isHydrating)) {\n\t\t\t\t\t\tchild = c;\n\t\t\t\t\t\tchildren[j] = undefined;\n\t\t\t\t\t\tif (j===childrenLen-1) childrenLen--;\n\t\t\t\t\t\tif (j===min) min++;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// morph the matched/found/created DOM child to match vchild (deep)\n\t\t\tchild = idiff(child, vchild, context, mountAll);\n\n\t\t\tf = originalChildren[i];\n\t\t\tif (child && child!==dom && child!==f) {\n\t\t\t\tif (f==null) {\n\t\t\t\t\tdom.appendChild(child);\n\t\t\t\t}\n\t\t\t\telse if (child===f.nextSibling) {\n\t\t\t\t\tremoveNode(f);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdom.insertBefore(child, f);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\t// remove unused keyed children:\n\tif (keyedLen) {\n\t\tfor (let i in keyed) if (keyed[i]!==undefined) recollectNodeTree(keyed[i], false);\n\t}\n\n\t// remove orphaned unkeyed children:\n\twhile (min<=childrenLen) {\n\t\tif ((child = children[childrenLen--])!==undefined) recollectNodeTree(child, false);\n\t}\n}\n\n\n\n/**\n * Recursively recycle (or just unmount) a node and its descendants.\n * @param {import('../dom').PreactElement} node DOM node to start\n * unmount/removal from\n * @param {boolean} [unmountOnly=false] If `true`, only triggers unmount\n * lifecycle, skips removal\n */\nexport function recollectNodeTree(node, unmountOnly) {\n\tlet component = node._component;\n\tif (component) {\n\t\t// if node is owned by a Component, unmount that component (ends up recursing back here)\n\t\tunmountComponent(component);\n\t}\n\telse {\n\t\t// If the node's VNode had a ref function, invoke it with null here.\n\t\t// (this is part of the React spec, and smart for unsetting references)\n\t\tif (node[ATTR_KEY]!=null) applyRef(node[ATTR_KEY].ref, null);\n\n\t\tif (unmountOnly===false || node[ATTR_KEY]==null) {\n\t\t\tremoveNode(node);\n\t\t}\n\n\t\tremoveChildren(node);\n\t}\n}\n\n\n/**\n * Recollect/unmount all children.\n *\t- we use .lastChild here because it causes less reflow than .firstChild\n *\t- it's also cheaper than accessing the .childNodes Live NodeList\n */\nexport function removeChildren(node) {\n\tnode = node.lastChild;\n\twhile (node) {\n\t\tlet next = node.previousSibling;\n\t\trecollectNodeTree(node, true);\n\t\tnode = next;\n\t}\n}\n\n\n/**\n * Apply differences in attributes from a VNode to the given DOM Element.\n * @param {import('../dom').PreactElement} dom Element with attributes to diff `attrs` against\n * @param {object} attrs The desired end-state key-value attribute pairs\n * @param {object} old Current/previous attributes (from previous VNode or\n * element's prop cache)\n */\nfunction diffAttributes(dom, attrs, old) {\n\tlet name;\n\n\t// remove attributes no longer present on the vnode by setting them to undefined\n\tfor (name in old) {\n\t\tif (!(attrs && attrs[name]!=null) && old[name]!=null) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);\n\t\t}\n\t}\n\n\t// add new & update changed attributes\n\tfor (name in attrs) {\n\t\tif (name!=='children' && name!=='innerHTML' && (!(name in old) || attrs[name]!==(name==='value' || name==='checked' ? dom[name] : old[name]))) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n\t\t}\n\t}\n}\n","import { Component } from '../component';\n\n/**\n * Retains a pool of Components for re-use.\n * @type {Component[]}\n * @private\n */\nexport const recyclerComponents = [];\n\n\n/**\n * Create a component. Normalizes differences between PFC's and classful\n * Components.\n * @param {function} Ctor The constructor of the component to create\n * @param {object} props The initial props of the component\n * @param {object} context The initial context of the component\n * @returns {import('../component').Component}\n */\nexport function createComponent(Ctor, props, context) {\n\tlet inst, i = recyclerComponents.length;\n\n\tif (Ctor.prototype && Ctor.prototype.render) {\n\t\tinst = new Ctor(props, context);\n\t\tComponent.call(inst, props, context);\n\t}\n\telse {\n\t\tinst = new Component(props, context);\n\t\tinst.constructor = Ctor;\n\t\tinst.render = doRender;\n\t}\n\n\n\twhile (i--) {\n\t\tif (recyclerComponents[i].constructor===Ctor) {\n\t\t\tinst.nextBase = recyclerComponents[i].nextBase;\n\t\t\trecyclerComponents.splice(i, 1);\n\t\t\treturn inst;\n\t\t}\n\t}\n\n\treturn inst;\n}\n\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { SYNC_RENDER, NO_RENDER, FORCE_RENDER, ASYNC_RENDER, ATTR_KEY } from '../constants';\nimport options from '../options';\nimport { extend, applyRef } from '../util';\nimport { enqueueRender } from '../render-queue';\nimport { getNodeProps } from './index';\nimport { diff, mounts, diffLevel, flushMounts, recollectNodeTree, removeChildren } from './diff';\nimport { createComponent, recyclerComponents } from './component-recycler';\nimport { removeNode } from '../dom/index';\n\n/**\n * Set a component's `props` and possibly re-render the component\n * @param {import('../component').Component} component The Component to set props on\n * @param {object} props The new props\n * @param {number} renderMode Render options - specifies how to re-render the component\n * @param {object} context The new context\n * @param {boolean} mountAll Whether or not to immediately mount all components\n */\nexport function setComponentProps(component, props, renderMode, context, mountAll) {\n\tif (component._disable) return;\n\tcomponent._disable = true;\n\n\tcomponent.__ref = props.ref;\n\tcomponent.__key = props.key;\n\tdelete props.ref;\n\tdelete props.key;\n\n\tif (typeof component.constructor.getDerivedStateFromProps === 'undefined') {\n\t\tif (!component.base || mountAll) {\n\t\t\tif (component.componentWillMount) component.componentWillMount();\n\t\t}\n\t\telse if (component.componentWillReceiveProps) {\n\t\t\tcomponent.componentWillReceiveProps(props, context);\n\t\t}\n\t}\n\n\tif (context && context!==component.context) {\n\t\tif (!component.prevContext) component.prevContext = component.context;\n\t\tcomponent.context = context;\n\t}\n\n\tif (!component.prevProps) component.prevProps = component.props;\n\tcomponent.props = props;\n\n\tcomponent._disable = false;\n\n\tif (renderMode!==NO_RENDER) {\n\t\tif (renderMode===SYNC_RENDER || options.syncComponentUpdates!==false || !component.base) {\n\t\t\trenderComponent(component, SYNC_RENDER, mountAll);\n\t\t}\n\t\telse {\n\t\t\tenqueueRender(component);\n\t\t}\n\t}\n\n\tapplyRef(component.__ref, component);\n}\n\n\n\n/**\n * Render a Component, triggering necessary lifecycle events and taking\n * High-Order Components into account.\n * @param {import('../component').Component} component The component to render\n * @param {number} [renderMode] render mode, see constants.js for available options.\n * @param {boolean} [mountAll] Whether or not to immediately mount all components\n * @param {boolean} [isChild] ?\n * @private\n */\nexport function renderComponent(component, renderMode, mountAll, isChild) {\n\tif (component._disable) return;\n\n\tlet props = component.props,\n\t\tstate = component.state,\n\t\tcontext = component.context,\n\t\tpreviousProps = component.prevProps || props,\n\t\tpreviousState = component.prevState || state,\n\t\tpreviousContext = component.prevContext || context,\n\t\tisUpdate = component.base,\n\t\tnextBase = component.nextBase,\n\t\tinitialBase = isUpdate || nextBase,\n\t\tinitialChildComponent = component._component,\n\t\tskip = false,\n\t\tsnapshot = previousContext,\n\t\trendered, inst, cbase;\n\n\tif (component.constructor.getDerivedStateFromProps) {\n\t\tstate = extend(extend({}, state), component.constructor.getDerivedStateFromProps(props, state));\n\t\tcomponent.state = state;\n\t}\n\n\t// if updating\n\tif (isUpdate) {\n\t\tcomponent.props = previousProps;\n\t\tcomponent.state = previousState;\n\t\tcomponent.context = previousContext;\n\t\tif (renderMode!==FORCE_RENDER\n\t\t\t&& component.shouldComponentUpdate\n\t\t\t&& component.shouldComponentUpdate(props, state, context) === false) {\n\t\t\tskip = true;\n\t\t}\n\t\telse if (component.componentWillUpdate) {\n\t\t\tcomponent.componentWillUpdate(props, state, context);\n\t\t}\n\t\tcomponent.props = props;\n\t\tcomponent.state = state;\n\t\tcomponent.context = context;\n\t}\n\n\tcomponent.prevProps = component.prevState = component.prevContext = component.nextBase = null;\n\tcomponent._dirty = false;\n\n\tif (!skip) {\n\t\trendered = component.render(props, state, context);\n\n\t\t// context to pass to the child, can be updated via (grand-)parent component\n\t\tif (component.getChildContext) {\n\t\t\tcontext = extend(extend({}, context), component.getChildContext());\n\t\t}\n\n\t\tif (isUpdate && component.getSnapshotBeforeUpdate) {\n\t\t\tsnapshot = component.getSnapshotBeforeUpdate(previousProps, previousState);\n\t\t}\n\n\t\tlet childComponent = rendered && rendered.nodeName,\n\t\t\ttoUnmount, base;\n\n\t\tif (typeof childComponent==='function') {\n\t\t\t// set up high order component link\n\n\t\t\tlet childProps = getNodeProps(rendered);\n\t\t\tinst = initialChildComponent;\n\n\t\t\tif (inst && inst.constructor===childComponent && childProps.key==inst.__key) {\n\t\t\t\tsetComponentProps(inst, childProps, SYNC_RENDER, context, false);\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttoUnmount = inst;\n\n\t\t\t\tcomponent._component = inst = createComponent(childComponent, childProps, context);\n\t\t\t\tinst.nextBase = inst.nextBase || nextBase;\n\t\t\t\tinst._parentComponent = component;\n\t\t\t\tsetComponentProps(inst, childProps, NO_RENDER, context, false);\n\t\t\t\trenderComponent(inst, SYNC_RENDER, mountAll, true);\n\t\t\t}\n\n\t\t\tbase = inst.base;\n\t\t}\n\t\telse {\n\t\t\tcbase = initialBase;\n\n\t\t\t// destroy high order component link\n\t\t\ttoUnmount = initialChildComponent;\n\t\t\tif (toUnmount) {\n\t\t\t\tcbase = component._component = null;\n\t\t\t}\n\n\t\t\tif (initialBase || renderMode===SYNC_RENDER) {\n\t\t\t\tif (cbase) cbase._component = null;\n\t\t\t\tbase = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, true);\n\t\t\t}\n\t\t}\n\n\t\tif (initialBase && base!==initialBase && inst!==initialChildComponent) {\n\t\t\tlet baseParent = initialBase.parentNode;\n\t\t\tif (baseParent && base!==baseParent) {\n\t\t\t\tbaseParent.replaceChild(base, initialBase);\n\n\t\t\t\tif (!toUnmount) {\n\t\t\t\t\tinitialBase._component = null;\n\t\t\t\t\trecollectNodeTree(initialBase, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (toUnmount) {\n\t\t\tunmountComponent(toUnmount);\n\t\t}\n\n\t\tcomponent.base = base;\n\t\tif (base && !isChild) {\n\t\t\tlet componentRef = component,\n\t\t\t\tt = component;\n\t\t\twhile ((t=t._parentComponent)) {\n\t\t\t\t(componentRef = t).base = base;\n\t\t\t}\n\t\t\tbase._component = componentRef;\n\t\t\tbase._componentConstructor = componentRef.constructor;\n\t\t}\n\t}\n\n\tif (!isUpdate || mountAll) {\n\t\tmounts.push(component);\n\t}\n\telse if (!skip) {\n\t\t// Ensure that pending componentDidMount() hooks of child components\n\t\t// are called before the componentDidUpdate() hook in the parent.\n\t\t// Note: disabled as it causes duplicate hooks, see https://github.com/developit/preact/issues/750\n\t\t// flushMounts();\n\n\t\tif (component.componentDidUpdate) {\n\t\t\tcomponent.componentDidUpdate(previousProps, previousState, snapshot);\n\t\t}\n\t\tif (options.afterUpdate) options.afterUpdate(component);\n\t}\n\n\twhile (component._renderCallbacks.length) component._renderCallbacks.pop().call(component);\n\n\tif (!diffLevel && !isChild) flushMounts();\n}\n\n\n\n/**\n * Apply the Component referenced by a VNode to the DOM.\n * @param {import('../dom').PreactElement} dom The DOM node to mutate\n * @param {import('../vnode').VNode} vnode A Component-referencing VNode\n * @param {object} context The current context\n * @param {boolean} mountAll Whether or not to immediately mount all components\n * @returns {import('../dom').PreactElement} The created/mutated element\n * @private\n */\nexport function buildComponentFromVNode(dom, vnode, context, mountAll) {\n\tlet c = dom && dom._component,\n\t\toriginalComponent = c,\n\t\toldDom = dom,\n\t\tisDirectOwner = c && dom._componentConstructor===vnode.nodeName,\n\t\tisOwner = isDirectOwner,\n\t\tprops = getNodeProps(vnode);\n\twhile (c && !isOwner && (c=c._parentComponent)) {\n\t\tisOwner = c.constructor===vnode.nodeName;\n\t}\n\n\tif (c && isOwner && (!mountAll || c._component)) {\n\t\tsetComponentProps(c, props, ASYNC_RENDER, context, mountAll);\n\t\tdom = c.base;\n\t}\n\telse {\n\t\tif (originalComponent && !isDirectOwner) {\n\t\t\tunmountComponent(originalComponent);\n\t\t\tdom = oldDom = null;\n\t\t}\n\n\t\tc = createComponent(vnode.nodeName, props, context);\n\t\tif (dom && !c.nextBase) {\n\t\t\tc.nextBase = dom;\n\t\t\t// passing dom/oldDom as nextBase will recycle it if unused, so bypass recycling on L229:\n\t\t\toldDom = null;\n\t\t}\n\t\tsetComponentProps(c, props, SYNC_RENDER, context, mountAll);\n\t\tdom = c.base;\n\n\t\tif (oldDom && dom!==oldDom) {\n\t\t\toldDom._component = null;\n\t\t\trecollectNodeTree(oldDom, false);\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n\n\n/**\n * Remove a component from the DOM and recycle it.\n * @param {import('../component').Component} component The Component instance to unmount\n * @private\n */\nexport function unmountComponent(component) {\n\tif (options.beforeUnmount) options.beforeUnmount(component);\n\n\tlet base = component.base;\n\n\tcomponent._disable = true;\n\n\tif (component.componentWillUnmount) component.componentWillUnmount();\n\n\tcomponent.base = null;\n\n\t// recursively tear down & recollect high-order component children:\n\tlet inner = component._component;\n\tif (inner) {\n\t\tunmountComponent(inner);\n\t}\n\telse if (base) {\n\t\tif (base[ATTR_KEY]!=null) applyRef(base[ATTR_KEY].ref, null);\n\n\t\tcomponent.nextBase = base;\n\n\t\tremoveNode(base);\n\t\trecyclerComponents.push(component);\n\n\t\tremoveChildren(base);\n\t}\n\n\tapplyRef(component.__ref, null);\n}\n","import { FORCE_RENDER } from './constants';\nimport { extend } from './util';\nimport { renderComponent } from './vdom/component';\nimport { enqueueRender } from './render-queue';\n/**\n * Base Component class.\n * Provides `setState()` and `forceUpdate()`, which trigger rendering.\n * @typedef {object} Component\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components' getChildContext\n * @public\n *\n * @example\n * class MyFoo extends Component {\n * render(props, state) {\n * return <div />;\n * }\n * }\n */\nexport function Component(props, context) {\n\tthis._dirty = true;\n\n\t/**\n\t * @public\n\t * @type {object}\n\t */\n\tthis.context = context;\n\n\t/**\n\t * @public\n\t * @type {object}\n\t */\n\tthis.props = props;\n\n\t/**\n\t * @public\n\t * @type {object}\n\t */\n\tthis.state = this.state || {};\n\n\tthis._renderCallbacks = [];\n}\n\n\nextend(Component.prototype, {\n\n\t/**\n\t * Update component state and schedule a re-render.\n\t * @param {object} state A dict of state properties to be shallowly merged\n\t * \tinto the current state, or a function that will produce such a dict. The\n\t * \tfunction is called with the current state and props.\n\t * @param {() => void} callback A function to be called once component state is\n\t * \tupdated\n\t */\n\tsetState(state, callback) {\n\t\tif (!this.prevState) this.prevState = this.state;\n\t\tthis.state = extend(\n\t\t\textend({}, this.state),\n\t\t\ttypeof state === 'function' ? state(this.state, this.props) : state\n\t\t);\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t},\n\n\n\t/**\n\t * Immediately perform a synchronous re-render of the component.\n\t * @param {() => void} callback A function to be called after component is\n\t * \tre-rendered.\n\t * @private\n\t */\n\tforceUpdate(callback) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\trenderComponent(this, FORCE_RENDER);\n\t},\n\n\n\t/**\n\t * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n\t * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n\t * @param {object} props Props (eg: JSX attributes) received from parent\n\t * \telement/component\n\t * @param {object} state The component's current state\n\t * @param {object} context Context object, as returned by the nearest\n\t * ancestor's `getChildContext()`\n\t * @returns {import('./vnode').VNode | void}\n\t */\n\trender() {}\n\n});\n","import { diff } from './vdom/diff';\n\n/**\n * Render JSX into a `parent` Element.\n * @param {import('./vnode').VNode} vnode A (JSX) VNode to render\n * @param {import('./dom').PreactElement} parent DOM element to render into\n * @param {import('./dom').PreactElement} [merge] Attempt to re-use an existing DOM tree rooted at\n * `merge`\n * @public\n *\n * @example\n * // render a div into <body>:\n * render(<div id=\"hello\">hello!</div>, document.body);\n *\n * @example\n * // render a \"Thing\" component into #foo:\n * const Thing = ({ name }) => <span>{ name }</span>;\n * render(<Thing name=\"one\" />, document.querySelector('#foo'));\n */\nexport function render(vnode, parent, merge) {\n\treturn diff(merge, vnode, {}, false, parent, false);\n}\n","import { h, h as createElement } from './h';\nimport { cloneElement } from './clone-element';\nimport { Component } from './component';\nimport { render } from './render';\nimport { rerender } from './render-queue';\nimport options from './options';\n\nfunction createRef() {\n\treturn {};\n}\n\nexport default {\n\th,\n\tcreateElement,\n\tcloneElement,\n\tcreateRef,\n\tComponent,\n\trender,\n\trerender,\n\toptions\n};\n\nexport {\n\th,\n\tcreateElement,\n\tcloneElement,\n\tcreateRef,\n\tComponent,\n\trender,\n\trerender,\n\toptions\n};\n","\n\t\t\t\timport preact from './preact';\n\t\t\t\tif (typeof module!='undefined') module.exports = preact;\n\t\t\t\telse self.preact = preact;\n\t\t\t"],"names":["VNode","options","stack","EMPTY_CHILDREN","h","nodeName","attributes","children","lastSimple","child","simple","i","arguments","length","push","pop","undefined","String","p","key","vnode","extend","obj","props","applyRef","ref","value","current","defer","Promise","resolve","then","bind","setTimeout","cloneElement","slice","call","NO_RENDER","SYNC_RENDER","FORCE_RENDER","ASYNC_RENDER","ATTR_KEY","IS_NON_DIMENSIONAL","items","enqueueRender","component","_dirty","debounceRendering","rerender","renderComponent","isSameNodeType","node","hydrating","splitText","_componentConstructor","isNamedNode","normalizedNodeName","toLowerCase","getNodeProps","defaultProps","createNode","isSvg","document","createElementNS","createElement","removeNode","parentNode","removeChild","setAccessor","name","old","className","style","cssText","test","innerHTML","__html","useCapture","replace","substring","addEventListener","eventProxy","removeEventListener","_listeners","e","removeAttribute","ns","removeAttributeNS","setAttributeNS","setAttribute","type","event","mounts","diffLevel","isSvgMode","flushMounts","c","shift","afterMount","componentDidMount","diff","dom","context","mountAll","parent","componentRoot","ownerSVGElement","ret","idiff","appendChild","out","prevSvgMode","_component","nodeValue","createTextNode","replaceChild","recollectNodeTree","vnodeName","buildComponentFromVNode","firstChild","fc","vchildren","a","nextSibling","innerDiffNode","dangerouslySetInnerHTML","diffAttributes","isHydrating","originalChildren","childNodes","keyed","keyedLen","min","len","childrenLen","vlen","j","f","vchild","__key","trim","insertBefore","unmountOnly","unmountComponent","removeChildren","lastChild","next","previousSibling","attrs","recyclerComponents","createComponent","Ctor","inst","prototype","render","Component","constructor","doRender","nextBase","splice","state","setComponentProps","renderMode","_disable","__ref","getDerivedStateFromProps","base","componentWillMount","componentWillReceiveProps","prevContext","prevProps","syncComponentUpdates","isChild","previousProps","previousState","prevState","previousContext","isUpdate","initialBase","initialChildComponent","skip","snapshot","rendered","cbase","shouldComponentUpdate","componentWillUpdate","getChildContext","getSnapshotBeforeUpdate","childComponent","toUnmount","childProps","_parentComponent","baseParent","componentRef","t","componentDidUpdate","afterUpdate","_renderCallbacks","originalComponent","oldDom","isDirectOwner","isOwner","beforeUnmount","componentWillUnmount","inner","setState","callback","forceUpdate","merge","createRef","module","exports","preact","self"],"mappings":"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"}
|
@@ -25,6 +25,9 @@
|
|
25
25
|
for (var i in props) obj[i] = props[i];
|
26
26
|
return obj;
|
27
27
|
}
|
28
|
+
function applyRef(ref, value) {
|
29
|
+
if (null != ref) if ('function' == typeof ref) ref(value); else ref.current = value;
|
30
|
+
}
|
28
31
|
function cloneElement(vnode, props) {
|
29
32
|
return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);
|
30
33
|
}
|
@@ -32,9 +35,8 @@
|
|
32
35
|
if (!component.__d && (component.__d = !0) && 1 == items.push(component)) (options.debounceRendering || defer)(rerender);
|
33
36
|
}
|
34
37
|
function rerender() {
|
35
|
-
var p
|
36
|
-
|
37
|
-
while (p = list.pop()) if (p.__d) renderComponent(p);
|
38
|
+
var p;
|
39
|
+
while (p = items.pop()) if (p.__d) renderComponent(p);
|
38
40
|
}
|
39
41
|
function isSameNodeType(node, vnode, hydrating) {
|
40
42
|
if ('string' == typeof vnode || 'number' == typeof vnode) return void 0 !== node.splitText;
|
@@ -62,8 +64,8 @@
|
|
62
64
|
function setAccessor(node, name, old, value, isSvg) {
|
63
65
|
if ('className' === name) name = 'class';
|
64
66
|
if ('key' === name) ; else if ('ref' === name) {
|
65
|
-
|
66
|
-
|
67
|
+
applyRef(old, null);
|
68
|
+
applyRef(value, node);
|
67
69
|
} else if ('class' === name && !isSvg) node.className = value || ''; else if ('style' === name) {
|
68
70
|
if (!value || 'string' == typeof value || 'string' == typeof old) node.style.cssText = value || '';
|
69
71
|
if (value && 'object' == typeof value) {
|
@@ -94,7 +96,7 @@
|
|
94
96
|
}
|
95
97
|
function flushMounts() {
|
96
98
|
var c;
|
97
|
-
while (c = mounts.
|
99
|
+
while (c = mounts.shift()) {
|
98
100
|
if (options.afterMount) options.afterMount(c);
|
99
101
|
if (c.componentDidMount) c.componentDidMount();
|
100
102
|
}
|
@@ -188,7 +190,7 @@
|
|
188
190
|
function recollectNodeTree(node, unmountOnly) {
|
189
191
|
var component = node._component;
|
190
192
|
if (component) unmountComponent(component); else {
|
191
|
-
if (null != node.__preactattr_
|
193
|
+
if (null != node.__preactattr_) applyRef(node.__preactattr_.ref, null);
|
192
194
|
if (!1 === unmountOnly || null == node.__preactattr_) removeNode(node);
|
193
195
|
removeChildren(node);
|
194
196
|
}
|
@@ -244,7 +246,7 @@
|
|
244
246
|
component.props = props;
|
245
247
|
component.__x = !1;
|
246
248
|
if (0 !== renderMode) if (1 === renderMode || !1 !== options.syncComponentUpdates || !component.base) renderComponent(component, 1, mountAll); else enqueueRender(component);
|
247
|
-
|
249
|
+
applyRef(component.__r, component);
|
248
250
|
}
|
249
251
|
}
|
250
252
|
function renderComponent(component, renderMode, mountAll, isChild) {
|
@@ -310,7 +312,7 @@
|
|
310
312
|
base._componentConstructor = componentRef.constructor;
|
311
313
|
}
|
312
314
|
}
|
313
|
-
if (!isUpdate || mountAll) mounts.
|
315
|
+
if (!isUpdate || mountAll) mounts.push(component); else if (!skip) {
|
314
316
|
if (component.componentDidUpdate) component.componentDidUpdate(previousProps, previousState, snapshot);
|
315
317
|
if (options.afterUpdate) options.afterUpdate(component);
|
316
318
|
}
|
@@ -351,13 +353,13 @@
|
|
351
353
|
component.base = null;
|
352
354
|
var inner = component._component;
|
353
355
|
if (inner) unmountComponent(inner); else if (base) {
|
354
|
-
if (
|
356
|
+
if (null != base.__preactattr_) applyRef(base.__preactattr_.ref, null);
|
355
357
|
component.__b = base;
|
356
358
|
removeNode(base);
|
357
359
|
recyclerComponents.push(component);
|
358
360
|
removeChildren(base);
|
359
361
|
}
|
360
|
-
|
362
|
+
applyRef(component.__r, null);
|
361
363
|
}
|
362
364
|
function Component(props, context) {
|
363
365
|
this.__d = !0;
|
@@ -369,6 +371,9 @@
|
|
369
371
|
function render(vnode, parent, merge) {
|
370
372
|
return diff(merge, vnode, {}, !1, parent, !1);
|
371
373
|
}
|
374
|
+
function createRef() {
|
375
|
+
return {};
|
376
|
+
}
|
372
377
|
var VNode = function() {};
|
373
378
|
var options = {};
|
374
379
|
var stack = [];
|
@@ -398,6 +403,7 @@
|
|
398
403
|
h: h,
|
399
404
|
createElement: h,
|
400
405
|
cloneElement: cloneElement,
|
406
|
+
createRef: createRef,
|
401
407
|
Component: Component,
|
402
408
|
render: render,
|
403
409
|
rerender: rerender,
|
@@ -2,12 +2,24 @@
|
|
2
2
|
|
3
3
|
import { createElement, cloneElement, Component, type Node } from 'react';
|
4
4
|
|
5
|
-
declare var h: createElement;
|
5
|
+
declare var h: typeof createElement;
|
6
6
|
|
7
7
|
declare function render(vnode: Node, parent: Element, toReplace?: Element): Element;
|
8
8
|
|
9
9
|
export { h, createElement, cloneElement, Component, render };
|
10
10
|
export default { h, createElement, cloneElement, Component, render };
|
11
11
|
|
12
|
+
declare type VNode<P> = {
|
13
|
+
nodeName: string | Function,
|
14
|
+
children: Array<VNode<P> | string>,
|
15
|
+
key?: string | number | void,
|
16
|
+
attributes: P,
|
17
|
+
};
|
18
|
+
|
12
19
|
declare export function rerender(): void;
|
13
|
-
declare export var options:
|
20
|
+
declare export var options: {
|
21
|
+
syncComponentUpdates?: boolean,
|
22
|
+
vnode?: (vnode: VNode<any>) => void,
|
23
|
+
debounceRendering?: (rerender: () => void) => void,
|
24
|
+
event?: (event: Event) => Event | void,
|
25
|
+
};
|