govuk_publishing_components 12.19.0 → 12.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+

|
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":"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"}
|
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
|
+
};
|