govuk_publishing_components 17.20.0 → 17.21.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/govuk_publishing_components/components/_select.scss +8 -0
  3. data/app/views/govuk_publishing_components/components/_subscription-links.html.erb +15 -5
  4. data/app/views/govuk_publishing_components/components/docs/subscription-links.yml +13 -2
  5. data/lib/govuk_publishing_components/version.rb +1 -1
  6. data/node_modules/accessible-autocomplete/package.json +1 -1
  7. data/node_modules/graceful-fs/package.json +13 -13
  8. data/node_modules/graceful-fs/polyfills.js +17 -11
  9. data/node_modules/hosted-git-info/CHANGELOG.md +40 -0
  10. data/node_modules/hosted-git-info/git-host-info.js +5 -3
  11. data/node_modules/hosted-git-info/git-host.js +35 -10
  12. data/node_modules/hosted-git-info/index.js +17 -15
  13. data/node_modules/hosted-git-info/package.json +40 -30
  14. data/node_modules/lru-cache/LICENSE +15 -0
  15. data/node_modules/lru-cache/README.md +166 -0
  16. data/node_modules/lru-cache/index.js +334 -0
  17. data/node_modules/lru-cache/package.json +108 -0
  18. data/node_modules/pkg-conf/package.json +1 -1
  19. data/node_modules/preact/debug.js +630 -2
  20. data/node_modules/preact/debug.js.map +1 -1
  21. data/node_modules/preact/debug/dist/debug.js +2 -0
  22. data/node_modules/preact/debug/dist/debug.js.map +1 -0
  23. data/node_modules/preact/debug/dist/debug.mjs +681 -0
  24. data/node_modules/preact/debug/dist/debug.mjs.map +1 -0
  25. data/node_modules/preact/debug/dist/debug.module.js +2 -0
  26. data/node_modules/preact/debug/dist/debug.module.js.map +1 -0
  27. data/node_modules/preact/debug/dist/debug.umd.js +2 -0
  28. data/node_modules/preact/debug/dist/debug.umd.js.map +1 -0
  29. data/node_modules/preact/debug/index.js +2 -1
  30. data/node_modules/preact/dist/preact.d.ts +808 -3
  31. data/node_modules/preact/dist/preact.dev.js +727 -727
  32. data/node_modules/preact/dist/preact.dev.js.map +1 -1
  33. data/node_modules/preact/dist/preact.js +1 -1
  34. data/node_modules/preact/dist/preact.js.flow +3 -3
  35. data/node_modules/preact/dist/preact.js.map +1 -1
  36. data/node_modules/preact/dist/preact.min.js +1 -1
  37. data/node_modules/preact/dist/preact.min.js.map +1 -1
  38. data/node_modules/preact/dist/preact.mjs +724 -724
  39. data/node_modules/preact/dist/preact.mjs.map +1 -1
  40. data/node_modules/preact/dist/preact.umd.js +751 -0
  41. data/node_modules/preact/dist/preact.umd.js.map +1 -0
  42. data/node_modules/preact/package.json +43 -26
  43. data/node_modules/preact/src/preact.d.ts +808 -3
  44. data/node_modules/preact/src/preact.js.flow +3 -3
  45. data/node_modules/preact/src/util.js +1 -1
  46. data/node_modules/yallist/LICENSE +15 -0
  47. data/node_modules/yallist/README.md +204 -0
  48. data/node_modules/yallist/iterator.js +8 -0
  49. data/node_modules/yallist/package.json +97 -0
  50. data/node_modules/yallist/yallist.js +376 -0
  51. metadata +21 -2
@@ -1,727 +1,727 @@
1
- (function () {
2
- 'use strict';
3
-
4
- var VNode = function VNode() {};
5
-
6
- var options = {};
7
-
8
- var stack = [];
9
-
10
- var EMPTY_CHILDREN = [];
11
-
12
- function h(nodeName, attributes) {
13
- var children = EMPTY_CHILDREN,
14
- lastSimple,
15
- child,
16
- simple,
17
- i;
18
- for (i = arguments.length; i-- > 2;) {
19
- stack.push(arguments[i]);
20
- }
21
- if (attributes && attributes.children != null) {
22
- if (!stack.length) stack.push(attributes.children);
23
- delete attributes.children;
24
- }
25
- while (stack.length) {
26
- if ((child = stack.pop()) && child.pop !== undefined) {
27
- for (i = child.length; i--;) {
28
- stack.push(child[i]);
29
- }
30
- } else {
31
- if (typeof child === 'boolean') child = null;
32
-
33
- if (simple = typeof nodeName !== 'function') {
34
- if (child == null) child = '';else if (typeof child === 'number') child = String(child);else if (typeof child !== 'string') simple = false;
35
- }
36
-
37
- if (simple && lastSimple) {
38
- children[children.length - 1] += child;
39
- } else if (children === EMPTY_CHILDREN) {
40
- children = [child];
41
- } else {
42
- children.push(child);
43
- }
44
-
45
- lastSimple = simple;
46
- }
47
- }
48
-
49
- var p = new VNode();
50
- p.nodeName = nodeName;
51
- p.children = children;
52
- p.attributes = attributes == null ? undefined : attributes;
53
- p.key = attributes == null ? undefined : attributes.key;
54
-
55
- if (options.vnode !== undefined) options.vnode(p);
56
-
57
- return p;
58
- }
59
-
60
- function extend(obj, props) {
61
- for (var i in props) {
62
- obj[i] = props[i];
63
- }return obj;
64
- }
65
-
66
- function applyRef(ref, value) {
67
- if (ref != null) {
68
- if (typeof ref == 'function') ref(value);else ref.current = value;
69
- }
70
- }
71
-
72
- var defer = typeof Promise == 'function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;
73
-
74
- function cloneElement(vnode, props) {
75
- return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);
76
- }
77
-
78
- var IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;
79
-
80
- var items = [];
81
-
82
- function enqueueRender(component) {
83
- if (!component._dirty && (component._dirty = true) && items.push(component) == 1) {
84
- (options.debounceRendering || defer)(rerender);
85
- }
86
- }
87
-
88
- function rerender() {
89
- var p;
90
- while (p = items.pop()) {
91
- if (p._dirty) renderComponent(p);
92
- }
93
- }
94
-
95
- function isSameNodeType(node, vnode, hydrating) {
96
- if (typeof vnode === 'string' || typeof vnode === 'number') {
97
- return node.splitText !== undefined;
98
- }
99
- if (typeof vnode.nodeName === 'string') {
100
- return !node._componentConstructor && isNamedNode(node, vnode.nodeName);
101
- }
102
- return hydrating || node._componentConstructor === vnode.nodeName;
103
- }
104
-
105
- function isNamedNode(node, nodeName) {
106
- return node.normalizedNodeName === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();
107
- }
108
-
109
- function getNodeProps(vnode) {
110
- var props = extend({}, vnode.attributes);
111
- props.children = vnode.children;
112
-
113
- var defaultProps = vnode.nodeName.defaultProps;
114
- if (defaultProps !== undefined) {
115
- for (var i in defaultProps) {
116
- if (props[i] === undefined) {
117
- props[i] = defaultProps[i];
118
- }
119
- }
120
- }
121
-
122
- return props;
123
- }
124
-
125
- function createNode(nodeName, isSvg) {
126
- var node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);
127
- node.normalizedNodeName = nodeName;
128
- return node;
129
- }
130
-
131
- function removeNode(node) {
132
- var parentNode = node.parentNode;
133
- if (parentNode) parentNode.removeChild(node);
134
- }
135
-
136
- function setAccessor(node, name, old, value, isSvg) {
137
- if (name === 'className') name = 'class';
138
-
139
- if (name === 'key') {} else if (name === 'ref') {
140
- applyRef(old, null);
141
- applyRef(value, node);
142
- } else if (name === 'class' && !isSvg) {
143
- node.className = value || '';
144
- } else if (name === 'style') {
145
- if (!value || typeof value === 'string' || typeof old === 'string') {
146
- node.style.cssText = value || '';
147
- }
148
- if (value && typeof value === 'object') {
149
- if (typeof old !== 'string') {
150
- for (var i in old) {
151
- if (!(i in value)) node.style[i] = '';
152
- }
153
- }
154
- for (var i in value) {
155
- node.style[i] = typeof value[i] === 'number' && IS_NON_DIMENSIONAL.test(i) === false ? value[i] + 'px' : value[i];
156
- }
157
- }
158
- } else if (name === 'dangerouslySetInnerHTML') {
159
- if (value) node.innerHTML = value.__html || '';
160
- } else if (name[0] == 'o' && name[1] == 'n') {
161
- var useCapture = name !== (name = name.replace(/Capture$/, ''));
162
- name = name.toLowerCase().substring(2);
163
- if (value) {
164
- if (!old) node.addEventListener(name, eventProxy, useCapture);
165
- } else {
166
- node.removeEventListener(name, eventProxy, useCapture);
167
- }
168
- (node._listeners || (node._listeners = {}))[name] = value;
169
- } else if (name !== 'list' && name !== 'type' && !isSvg && name in node) {
170
- try {
171
- node[name] = value == null ? '' : value;
172
- } catch (e) {}
173
- if ((value == null || value === false) && name != 'spellcheck') node.removeAttribute(name);
174
- } else {
175
- var ns = isSvg && name !== (name = name.replace(/^xlink:?/, ''));
176
-
177
- if (value == null || value === false) {
178
- if (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());else node.removeAttribute(name);
179
- } else if (typeof value !== 'function') {
180
- if (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);else node.setAttribute(name, value);
181
- }
182
- }
183
- }
184
-
185
- function eventProxy(e) {
186
- return this._listeners[e.type](options.event && options.event(e) || e);
187
- }
188
-
189
- var mounts = [];
190
-
191
- var diffLevel = 0;
192
-
193
- var isSvgMode = false;
194
-
195
- var hydrating = false;
196
-
197
- function flushMounts() {
198
- var c;
199
- while (c = mounts.shift()) {
200
- if (options.afterMount) options.afterMount(c);
201
- if (c.componentDidMount) c.componentDidMount();
202
- }
203
- }
204
-
205
- function diff(dom, vnode, context, mountAll, parent, componentRoot) {
206
- if (!diffLevel++) {
207
- isSvgMode = parent != null && parent.ownerSVGElement !== undefined;
208
-
209
- hydrating = dom != null && !('__preactattr_' in dom);
210
- }
211
-
212
- var ret = idiff(dom, vnode, context, mountAll, componentRoot);
213
-
214
- if (parent && ret.parentNode !== parent) parent.appendChild(ret);
215
-
216
- if (! --diffLevel) {
217
- hydrating = false;
218
-
219
- if (!componentRoot) flushMounts();
220
- }
221
-
222
- return ret;
223
- }
224
-
225
- function idiff(dom, vnode, context, mountAll, componentRoot) {
226
- var out = dom,
227
- prevSvgMode = isSvgMode;
228
-
229
- if (vnode == null || typeof vnode === 'boolean') vnode = '';
230
-
231
- if (typeof vnode === 'string' || typeof vnode === 'number') {
232
- if (dom && dom.splitText !== undefined && dom.parentNode && (!dom._component || componentRoot)) {
233
- if (dom.nodeValue != vnode) {
234
- dom.nodeValue = vnode;
235
- }
236
- } else {
237
- out = document.createTextNode(vnode);
238
- if (dom) {
239
- if (dom.parentNode) dom.parentNode.replaceChild(out, dom);
240
- recollectNodeTree(dom, true);
241
- }
242
- }
243
-
244
- out['__preactattr_'] = true;
245
-
246
- return out;
247
- }
248
-
249
- var vnodeName = vnode.nodeName;
250
- if (typeof vnodeName === 'function') {
251
- return buildComponentFromVNode(dom, vnode, context, mountAll);
252
- }
253
-
254
- isSvgMode = vnodeName === 'svg' ? true : vnodeName === 'foreignObject' ? false : isSvgMode;
255
-
256
- vnodeName = String(vnodeName);
257
- if (!dom || !isNamedNode(dom, vnodeName)) {
258
- out = createNode(vnodeName, isSvgMode);
259
-
260
- if (dom) {
261
- while (dom.firstChild) {
262
- out.appendChild(dom.firstChild);
263
- }
264
- if (dom.parentNode) dom.parentNode.replaceChild(out, dom);
265
-
266
- recollectNodeTree(dom, true);
267
- }
268
- }
269
-
270
- var fc = out.firstChild,
271
- props = out['__preactattr_'],
272
- vchildren = vnode.children;
273
-
274
- if (props == null) {
275
- props = out['__preactattr_'] = {};
276
- for (var a = out.attributes, i = a.length; i--;) {
277
- props[a[i].name] = a[i].value;
278
- }
279
- }
280
-
281
- if (!hydrating && vchildren && vchildren.length === 1 && typeof vchildren[0] === 'string' && fc != null && fc.splitText !== undefined && fc.nextSibling == null) {
282
- if (fc.nodeValue != vchildren[0]) {
283
- fc.nodeValue = vchildren[0];
284
- }
285
- } else if (vchildren && vchildren.length || fc != null) {
286
- innerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML != null);
287
- }
288
-
289
- diffAttributes(out, vnode.attributes, props);
290
-
291
- isSvgMode = prevSvgMode;
292
-
293
- return out;
294
- }
295
-
296
- function innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {
297
- var originalChildren = dom.childNodes,
298
- children = [],
299
- keyed = {},
300
- keyedLen = 0,
301
- min = 0,
302
- len = originalChildren.length,
303
- childrenLen = 0,
304
- vlen = vchildren ? vchildren.length : 0,
305
- j,
306
- c,
307
- f,
308
- vchild,
309
- child;
310
-
311
- if (len !== 0) {
312
- for (var i = 0; i < len; i++) {
313
- var _child = originalChildren[i],
314
- props = _child['__preactattr_'],
315
- key = vlen && props ? _child._component ? _child._component.__key : props.key : null;
316
- if (key != null) {
317
- keyedLen++;
318
- keyed[key] = _child;
319
- } else if (props || (_child.splitText !== undefined ? isHydrating ? _child.nodeValue.trim() : true : isHydrating)) {
320
- children[childrenLen++] = _child;
321
- }
322
- }
323
- }
324
-
325
- if (vlen !== 0) {
326
- for (var i = 0; i < vlen; i++) {
327
- vchild = vchildren[i];
328
- child = null;
329
-
330
- var key = vchild.key;
331
- if (key != null) {
332
- if (keyedLen && keyed[key] !== undefined) {
333
- child = keyed[key];
334
- keyed[key] = undefined;
335
- keyedLen--;
336
- }
337
- } else if (min < childrenLen) {
338
- for (j = min; j < childrenLen; j++) {
339
- if (children[j] !== undefined && isSameNodeType(c = children[j], vchild, isHydrating)) {
340
- child = c;
341
- children[j] = undefined;
342
- if (j === childrenLen - 1) childrenLen--;
343
- if (j === min) min++;
344
- break;
345
- }
346
- }
347
- }
348
-
349
- child = idiff(child, vchild, context, mountAll);
350
-
351
- f = originalChildren[i];
352
- if (child && child !== dom && child !== f) {
353
- if (f == null) {
354
- dom.appendChild(child);
355
- } else if (child === f.nextSibling) {
356
- removeNode(f);
357
- } else {
358
- dom.insertBefore(child, f);
359
- }
360
- }
361
- }
362
- }
363
-
364
- if (keyedLen) {
365
- for (var i in keyed) {
366
- if (keyed[i] !== undefined) recollectNodeTree(keyed[i], false);
367
- }
368
- }
369
-
370
- while (min <= childrenLen) {
371
- if ((child = children[childrenLen--]) !== undefined) recollectNodeTree(child, false);
372
- }
373
- }
374
-
375
- function recollectNodeTree(node, unmountOnly) {
376
- var component = node._component;
377
- if (component) {
378
- unmountComponent(component);
379
- } else {
380
- if (node['__preactattr_'] != null) applyRef(node['__preactattr_'].ref, null);
381
-
382
- if (unmountOnly === false || node['__preactattr_'] == null) {
383
- removeNode(node);
384
- }
385
-
386
- removeChildren(node);
387
- }
388
- }
389
-
390
- function removeChildren(node) {
391
- node = node.lastChild;
392
- while (node) {
393
- var next = node.previousSibling;
394
- recollectNodeTree(node, true);
395
- node = next;
396
- }
397
- }
398
-
399
- function diffAttributes(dom, attrs, old) {
400
- var name;
401
-
402
- for (name in old) {
403
- if (!(attrs && attrs[name] != null) && old[name] != null) {
404
- setAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);
405
- }
406
- }
407
-
408
- for (name in attrs) {
409
- if (name !== 'children' && name !== 'innerHTML' && (!(name in old) || attrs[name] !== (name === 'value' || name === 'checked' ? dom[name] : old[name]))) {
410
- setAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);
411
- }
412
- }
413
- }
414
-
415
- var recyclerComponents = [];
416
-
417
- function createComponent(Ctor, props, context) {
418
- var inst,
419
- i = recyclerComponents.length;
420
-
421
- if (Ctor.prototype && Ctor.prototype.render) {
422
- inst = new Ctor(props, context);
423
- Component.call(inst, props, context);
424
- } else {
425
- inst = new Component(props, context);
426
- inst.constructor = Ctor;
427
- inst.render = doRender;
428
- }
429
-
430
- while (i--) {
431
- if (recyclerComponents[i].constructor === Ctor) {
432
- inst.nextBase = recyclerComponents[i].nextBase;
433
- recyclerComponents.splice(i, 1);
434
- return inst;
435
- }
436
- }
437
-
438
- return inst;
439
- }
440
-
441
- function doRender(props, state, context) {
442
- return this.constructor(props, context);
443
- }
444
-
445
- function setComponentProps(component, props, renderMode, context, mountAll) {
446
- if (component._disable) return;
447
- component._disable = true;
448
-
449
- component.__ref = props.ref;
450
- component.__key = props.key;
451
- delete props.ref;
452
- delete props.key;
453
-
454
- if (typeof component.constructor.getDerivedStateFromProps === 'undefined') {
455
- if (!component.base || mountAll) {
456
- if (component.componentWillMount) component.componentWillMount();
457
- } else if (component.componentWillReceiveProps) {
458
- component.componentWillReceiveProps(props, context);
459
- }
460
- }
461
-
462
- if (context && context !== component.context) {
463
- if (!component.prevContext) component.prevContext = component.context;
464
- component.context = context;
465
- }
466
-
467
- if (!component.prevProps) component.prevProps = component.props;
468
- component.props = props;
469
-
470
- component._disable = false;
471
-
472
- if (renderMode !== 0) {
473
- if (renderMode === 1 || options.syncComponentUpdates !== false || !component.base) {
474
- renderComponent(component, 1, mountAll);
475
- } else {
476
- enqueueRender(component);
477
- }
478
- }
479
-
480
- applyRef(component.__ref, component);
481
- }
482
-
483
- function renderComponent(component, renderMode, mountAll, isChild) {
484
- if (component._disable) return;
485
-
486
- var props = component.props,
487
- state = component.state,
488
- context = component.context,
489
- previousProps = component.prevProps || props,
490
- previousState = component.prevState || state,
491
- previousContext = component.prevContext || context,
492
- isUpdate = component.base,
493
- nextBase = component.nextBase,
494
- initialBase = isUpdate || nextBase,
495
- initialChildComponent = component._component,
496
- skip = false,
497
- snapshot = previousContext,
498
- rendered,
499
- inst,
500
- cbase;
501
-
502
- if (component.constructor.getDerivedStateFromProps) {
503
- state = extend(extend({}, state), component.constructor.getDerivedStateFromProps(props, state));
504
- component.state = state;
505
- }
506
-
507
- if (isUpdate) {
508
- component.props = previousProps;
509
- component.state = previousState;
510
- component.context = previousContext;
511
- if (renderMode !== 2 && component.shouldComponentUpdate && component.shouldComponentUpdate(props, state, context) === false) {
512
- skip = true;
513
- } else if (component.componentWillUpdate) {
514
- component.componentWillUpdate(props, state, context);
515
- }
516
- component.props = props;
517
- component.state = state;
518
- component.context = context;
519
- }
520
-
521
- component.prevProps = component.prevState = component.prevContext = component.nextBase = null;
522
- component._dirty = false;
523
-
524
- if (!skip) {
525
- rendered = component.render(props, state, context);
526
-
527
- if (component.getChildContext) {
528
- context = extend(extend({}, context), component.getChildContext());
529
- }
530
-
531
- if (isUpdate && component.getSnapshotBeforeUpdate) {
532
- snapshot = component.getSnapshotBeforeUpdate(previousProps, previousState);
533
- }
534
-
535
- var childComponent = rendered && rendered.nodeName,
536
- toUnmount,
537
- base;
538
-
539
- if (typeof childComponent === 'function') {
540
-
541
- var childProps = getNodeProps(rendered);
542
- inst = initialChildComponent;
543
-
544
- if (inst && inst.constructor === childComponent && childProps.key == inst.__key) {
545
- setComponentProps(inst, childProps, 1, context, false);
546
- } else {
547
- toUnmount = inst;
548
-
549
- component._component = inst = createComponent(childComponent, childProps, context);
550
- inst.nextBase = inst.nextBase || nextBase;
551
- inst._parentComponent = component;
552
- setComponentProps(inst, childProps, 0, context, false);
553
- renderComponent(inst, 1, mountAll, true);
554
- }
555
-
556
- base = inst.base;
557
- } else {
558
- cbase = initialBase;
559
-
560
- toUnmount = initialChildComponent;
561
- if (toUnmount) {
562
- cbase = component._component = null;
563
- }
564
-
565
- if (initialBase || renderMode === 1) {
566
- if (cbase) cbase._component = null;
567
- base = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, true);
568
- }
569
- }
570
-
571
- if (initialBase && base !== initialBase && inst !== initialChildComponent) {
572
- var baseParent = initialBase.parentNode;
573
- if (baseParent && base !== baseParent) {
574
- baseParent.replaceChild(base, initialBase);
575
-
576
- if (!toUnmount) {
577
- initialBase._component = null;
578
- recollectNodeTree(initialBase, false);
579
- }
580
- }
581
- }
582
-
583
- if (toUnmount) {
584
- unmountComponent(toUnmount);
585
- }
586
-
587
- component.base = base;
588
- if (base && !isChild) {
589
- var componentRef = component,
590
- t = component;
591
- while (t = t._parentComponent) {
592
- (componentRef = t).base = base;
593
- }
594
- base._component = componentRef;
595
- base._componentConstructor = componentRef.constructor;
596
- }
597
- }
598
-
599
- if (!isUpdate || mountAll) {
600
- mounts.push(component);
601
- } else if (!skip) {
602
-
603
- if (component.componentDidUpdate) {
604
- component.componentDidUpdate(previousProps, previousState, snapshot);
605
- }
606
- if (options.afterUpdate) options.afterUpdate(component);
607
- }
608
-
609
- while (component._renderCallbacks.length) {
610
- component._renderCallbacks.pop().call(component);
611
- }if (!diffLevel && !isChild) flushMounts();
612
- }
613
-
614
- function buildComponentFromVNode(dom, vnode, context, mountAll) {
615
- var c = dom && dom._component,
616
- originalComponent = c,
617
- oldDom = dom,
618
- isDirectOwner = c && dom._componentConstructor === vnode.nodeName,
619
- isOwner = isDirectOwner,
620
- props = getNodeProps(vnode);
621
- while (c && !isOwner && (c = c._parentComponent)) {
622
- isOwner = c.constructor === vnode.nodeName;
623
- }
624
-
625
- if (c && isOwner && (!mountAll || c._component)) {
626
- setComponentProps(c, props, 3, context, mountAll);
627
- dom = c.base;
628
- } else {
629
- if (originalComponent && !isDirectOwner) {
630
- unmountComponent(originalComponent);
631
- dom = oldDom = null;
632
- }
633
-
634
- c = createComponent(vnode.nodeName, props, context);
635
- if (dom && !c.nextBase) {
636
- c.nextBase = dom;
637
-
638
- oldDom = null;
639
- }
640
- setComponentProps(c, props, 1, context, mountAll);
641
- dom = c.base;
642
-
643
- if (oldDom && dom !== oldDom) {
644
- oldDom._component = null;
645
- recollectNodeTree(oldDom, false);
646
- }
647
- }
648
-
649
- return dom;
650
- }
651
-
652
- function unmountComponent(component) {
653
- if (options.beforeUnmount) options.beforeUnmount(component);
654
-
655
- var base = component.base;
656
-
657
- component._disable = true;
658
-
659
- if (component.componentWillUnmount) component.componentWillUnmount();
660
-
661
- component.base = null;
662
-
663
- var inner = component._component;
664
- if (inner) {
665
- unmountComponent(inner);
666
- } else if (base) {
667
- if (base['__preactattr_'] != null) applyRef(base['__preactattr_'].ref, null);
668
-
669
- component.nextBase = base;
670
-
671
- removeNode(base);
672
- recyclerComponents.push(component);
673
-
674
- removeChildren(base);
675
- }
676
-
677
- applyRef(component.__ref, null);
678
- }
679
-
680
- function Component(props, context) {
681
- this._dirty = true;
682
-
683
- this.context = context;
684
-
685
- this.props = props;
686
-
687
- this.state = this.state || {};
688
-
689
- this._renderCallbacks = [];
690
- }
691
-
692
- extend(Component.prototype, {
693
- setState: function setState(state, callback) {
694
- if (!this.prevState) this.prevState = this.state;
695
- this.state = extend(extend({}, this.state), typeof state === 'function' ? state(this.state, this.props) : state);
696
- if (callback) this._renderCallbacks.push(callback);
697
- enqueueRender(this);
698
- },
699
- forceUpdate: function forceUpdate(callback) {
700
- if (callback) this._renderCallbacks.push(callback);
701
- renderComponent(this, 2);
702
- },
703
- render: function render() {}
704
- });
705
-
706
- function render(vnode, parent, merge) {
707
- return diff(merge, vnode, {}, false, parent, false);
708
- }
709
-
710
- function createRef() {
711
- return {};
712
- }
713
-
714
- var preact = {
715
- h: h,
716
- createElement: h,
717
- cloneElement: cloneElement,
718
- createRef: createRef,
719
- Component: Component,
720
- render: render,
721
- rerender: rerender,
722
- options: options
723
- };
724
-
725
- if (typeof module != 'undefined') module.exports = preact;else self.preact = preact;
726
- }());
727
- //# sourceMappingURL=preact.dev.js.map
1
+ (function () {
2
+ 'use strict';
3
+
4
+ var VNode = function VNode() {};
5
+
6
+ var options = {};
7
+
8
+ var stack = [];
9
+
10
+ var EMPTY_CHILDREN = [];
11
+
12
+ function h(nodeName, attributes) {
13
+ var children = EMPTY_CHILDREN,
14
+ lastSimple,
15
+ child,
16
+ simple,
17
+ i;
18
+ for (i = arguments.length; i-- > 2;) {
19
+ stack.push(arguments[i]);
20
+ }
21
+ if (attributes && attributes.children != null) {
22
+ if (!stack.length) stack.push(attributes.children);
23
+ delete attributes.children;
24
+ }
25
+ while (stack.length) {
26
+ if ((child = stack.pop()) && child.pop !== undefined) {
27
+ for (i = child.length; i--;) {
28
+ stack.push(child[i]);
29
+ }
30
+ } else {
31
+ if (typeof child === 'boolean') child = null;
32
+
33
+ if (simple = typeof nodeName !== 'function') {
34
+ if (child == null) child = '';else if (typeof child === 'number') child = String(child);else if (typeof child !== 'string') simple = false;
35
+ }
36
+
37
+ if (simple && lastSimple) {
38
+ children[children.length - 1] += child;
39
+ } else if (children === EMPTY_CHILDREN) {
40
+ children = [child];
41
+ } else {
42
+ children.push(child);
43
+ }
44
+
45
+ lastSimple = simple;
46
+ }
47
+ }
48
+
49
+ var p = new VNode();
50
+ p.nodeName = nodeName;
51
+ p.children = children;
52
+ p.attributes = attributes == null ? undefined : attributes;
53
+ p.key = attributes == null ? undefined : attributes.key;
54
+
55
+ if (options.vnode !== undefined) options.vnode(p);
56
+
57
+ return p;
58
+ }
59
+
60
+ function extend(obj, props) {
61
+ for (var i in props) {
62
+ obj[i] = props[i];
63
+ }return obj;
64
+ }
65
+
66
+ function applyRef(ref, value) {
67
+ if (ref) {
68
+ if (typeof ref == 'function') ref(value);else ref.current = value;
69
+ }
70
+ }
71
+
72
+ var defer = typeof Promise == 'function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;
73
+
74
+ function cloneElement(vnode, props) {
75
+ return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);
76
+ }
77
+
78
+ var IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;
79
+
80
+ var items = [];
81
+
82
+ function enqueueRender(component) {
83
+ if (!component._dirty && (component._dirty = true) && items.push(component) == 1) {
84
+ (options.debounceRendering || defer)(rerender);
85
+ }
86
+ }
87
+
88
+ function rerender() {
89
+ var p;
90
+ while (p = items.pop()) {
91
+ if (p._dirty) renderComponent(p);
92
+ }
93
+ }
94
+
95
+ function isSameNodeType(node, vnode, hydrating) {
96
+ if (typeof vnode === 'string' || typeof vnode === 'number') {
97
+ return node.splitText !== undefined;
98
+ }
99
+ if (typeof vnode.nodeName === 'string') {
100
+ return !node._componentConstructor && isNamedNode(node, vnode.nodeName);
101
+ }
102
+ return hydrating || node._componentConstructor === vnode.nodeName;
103
+ }
104
+
105
+ function isNamedNode(node, nodeName) {
106
+ return node.normalizedNodeName === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();
107
+ }
108
+
109
+ function getNodeProps(vnode) {
110
+ var props = extend({}, vnode.attributes);
111
+ props.children = vnode.children;
112
+
113
+ var defaultProps = vnode.nodeName.defaultProps;
114
+ if (defaultProps !== undefined) {
115
+ for (var i in defaultProps) {
116
+ if (props[i] === undefined) {
117
+ props[i] = defaultProps[i];
118
+ }
119
+ }
120
+ }
121
+
122
+ return props;
123
+ }
124
+
125
+ function createNode(nodeName, isSvg) {
126
+ var node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);
127
+ node.normalizedNodeName = nodeName;
128
+ return node;
129
+ }
130
+
131
+ function removeNode(node) {
132
+ var parentNode = node.parentNode;
133
+ if (parentNode) parentNode.removeChild(node);
134
+ }
135
+
136
+ function setAccessor(node, name, old, value, isSvg) {
137
+ if (name === 'className') name = 'class';
138
+
139
+ if (name === 'key') {} else if (name === 'ref') {
140
+ applyRef(old, null);
141
+ applyRef(value, node);
142
+ } else if (name === 'class' && !isSvg) {
143
+ node.className = value || '';
144
+ } else if (name === 'style') {
145
+ if (!value || typeof value === 'string' || typeof old === 'string') {
146
+ node.style.cssText = value || '';
147
+ }
148
+ if (value && typeof value === 'object') {
149
+ if (typeof old !== 'string') {
150
+ for (var i in old) {
151
+ if (!(i in value)) node.style[i] = '';
152
+ }
153
+ }
154
+ for (var i in value) {
155
+ node.style[i] = typeof value[i] === 'number' && IS_NON_DIMENSIONAL.test(i) === false ? value[i] + 'px' : value[i];
156
+ }
157
+ }
158
+ } else if (name === 'dangerouslySetInnerHTML') {
159
+ if (value) node.innerHTML = value.__html || '';
160
+ } else if (name[0] == 'o' && name[1] == 'n') {
161
+ var useCapture = name !== (name = name.replace(/Capture$/, ''));
162
+ name = name.toLowerCase().substring(2);
163
+ if (value) {
164
+ if (!old) node.addEventListener(name, eventProxy, useCapture);
165
+ } else {
166
+ node.removeEventListener(name, eventProxy, useCapture);
167
+ }
168
+ (node._listeners || (node._listeners = {}))[name] = value;
169
+ } else if (name !== 'list' && name !== 'type' && !isSvg && name in node) {
170
+ try {
171
+ node[name] = value == null ? '' : value;
172
+ } catch (e) {}
173
+ if ((value == null || value === false) && name != 'spellcheck') node.removeAttribute(name);
174
+ } else {
175
+ var ns = isSvg && name !== (name = name.replace(/^xlink:?/, ''));
176
+
177
+ if (value == null || value === false) {
178
+ if (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());else node.removeAttribute(name);
179
+ } else if (typeof value !== 'function') {
180
+ if (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);else node.setAttribute(name, value);
181
+ }
182
+ }
183
+ }
184
+
185
+ function eventProxy(e) {
186
+ return this._listeners[e.type](options.event && options.event(e) || e);
187
+ }
188
+
189
+ var mounts = [];
190
+
191
+ var diffLevel = 0;
192
+
193
+ var isSvgMode = false;
194
+
195
+ var hydrating = false;
196
+
197
+ function flushMounts() {
198
+ var c;
199
+ while (c = mounts.shift()) {
200
+ if (options.afterMount) options.afterMount(c);
201
+ if (c.componentDidMount) c.componentDidMount();
202
+ }
203
+ }
204
+
205
+ function diff(dom, vnode, context, mountAll, parent, componentRoot) {
206
+ if (!diffLevel++) {
207
+ isSvgMode = parent != null && parent.ownerSVGElement !== undefined;
208
+
209
+ hydrating = dom != null && !('__preactattr_' in dom);
210
+ }
211
+
212
+ var ret = idiff(dom, vnode, context, mountAll, componentRoot);
213
+
214
+ if (parent && ret.parentNode !== parent) parent.appendChild(ret);
215
+
216
+ if (! --diffLevel) {
217
+ hydrating = false;
218
+
219
+ if (!componentRoot) flushMounts();
220
+ }
221
+
222
+ return ret;
223
+ }
224
+
225
+ function idiff(dom, vnode, context, mountAll, componentRoot) {
226
+ var out = dom,
227
+ prevSvgMode = isSvgMode;
228
+
229
+ if (vnode == null || typeof vnode === 'boolean') vnode = '';
230
+
231
+ if (typeof vnode === 'string' || typeof vnode === 'number') {
232
+ if (dom && dom.splitText !== undefined && dom.parentNode && (!dom._component || componentRoot)) {
233
+ if (dom.nodeValue != vnode) {
234
+ dom.nodeValue = vnode;
235
+ }
236
+ } else {
237
+ out = document.createTextNode(vnode);
238
+ if (dom) {
239
+ if (dom.parentNode) dom.parentNode.replaceChild(out, dom);
240
+ recollectNodeTree(dom, true);
241
+ }
242
+ }
243
+
244
+ out['__preactattr_'] = true;
245
+
246
+ return out;
247
+ }
248
+
249
+ var vnodeName = vnode.nodeName;
250
+ if (typeof vnodeName === 'function') {
251
+ return buildComponentFromVNode(dom, vnode, context, mountAll);
252
+ }
253
+
254
+ isSvgMode = vnodeName === 'svg' ? true : vnodeName === 'foreignObject' ? false : isSvgMode;
255
+
256
+ vnodeName = String(vnodeName);
257
+ if (!dom || !isNamedNode(dom, vnodeName)) {
258
+ out = createNode(vnodeName, isSvgMode);
259
+
260
+ if (dom) {
261
+ while (dom.firstChild) {
262
+ out.appendChild(dom.firstChild);
263
+ }
264
+ if (dom.parentNode) dom.parentNode.replaceChild(out, dom);
265
+
266
+ recollectNodeTree(dom, true);
267
+ }
268
+ }
269
+
270
+ var fc = out.firstChild,
271
+ props = out['__preactattr_'],
272
+ vchildren = vnode.children;
273
+
274
+ if (props == null) {
275
+ props = out['__preactattr_'] = {};
276
+ for (var a = out.attributes, i = a.length; i--;) {
277
+ props[a[i].name] = a[i].value;
278
+ }
279
+ }
280
+
281
+ if (!hydrating && vchildren && vchildren.length === 1 && typeof vchildren[0] === 'string' && fc != null && fc.splitText !== undefined && fc.nextSibling == null) {
282
+ if (fc.nodeValue != vchildren[0]) {
283
+ fc.nodeValue = vchildren[0];
284
+ }
285
+ } else if (vchildren && vchildren.length || fc != null) {
286
+ innerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML != null);
287
+ }
288
+
289
+ diffAttributes(out, vnode.attributes, props);
290
+
291
+ isSvgMode = prevSvgMode;
292
+
293
+ return out;
294
+ }
295
+
296
+ function innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {
297
+ var originalChildren = dom.childNodes,
298
+ children = [],
299
+ keyed = {},
300
+ keyedLen = 0,
301
+ min = 0,
302
+ len = originalChildren.length,
303
+ childrenLen = 0,
304
+ vlen = vchildren ? vchildren.length : 0,
305
+ j,
306
+ c,
307
+ f,
308
+ vchild,
309
+ child;
310
+
311
+ if (len !== 0) {
312
+ for (var i = 0; i < len; i++) {
313
+ var _child = originalChildren[i],
314
+ props = _child['__preactattr_'],
315
+ key = vlen && props ? _child._component ? _child._component.__key : props.key : null;
316
+ if (key != null) {
317
+ keyedLen++;
318
+ keyed[key] = _child;
319
+ } else if (props || (_child.splitText !== undefined ? isHydrating ? _child.nodeValue.trim() : true : isHydrating)) {
320
+ children[childrenLen++] = _child;
321
+ }
322
+ }
323
+ }
324
+
325
+ if (vlen !== 0) {
326
+ for (var i = 0; i < vlen; i++) {
327
+ vchild = vchildren[i];
328
+ child = null;
329
+
330
+ var key = vchild.key;
331
+ if (key != null) {
332
+ if (keyedLen && keyed[key] !== undefined) {
333
+ child = keyed[key];
334
+ keyed[key] = undefined;
335
+ keyedLen--;
336
+ }
337
+ } else if (min < childrenLen) {
338
+ for (j = min; j < childrenLen; j++) {
339
+ if (children[j] !== undefined && isSameNodeType(c = children[j], vchild, isHydrating)) {
340
+ child = c;
341
+ children[j] = undefined;
342
+ if (j === childrenLen - 1) childrenLen--;
343
+ if (j === min) min++;
344
+ break;
345
+ }
346
+ }
347
+ }
348
+
349
+ child = idiff(child, vchild, context, mountAll);
350
+
351
+ f = originalChildren[i];
352
+ if (child && child !== dom && child !== f) {
353
+ if (f == null) {
354
+ dom.appendChild(child);
355
+ } else if (child === f.nextSibling) {
356
+ removeNode(f);
357
+ } else {
358
+ dom.insertBefore(child, f);
359
+ }
360
+ }
361
+ }
362
+ }
363
+
364
+ if (keyedLen) {
365
+ for (var i in keyed) {
366
+ if (keyed[i] !== undefined) recollectNodeTree(keyed[i], false);
367
+ }
368
+ }
369
+
370
+ while (min <= childrenLen) {
371
+ if ((child = children[childrenLen--]) !== undefined) recollectNodeTree(child, false);
372
+ }
373
+ }
374
+
375
+ function recollectNodeTree(node, unmountOnly) {
376
+ var component = node._component;
377
+ if (component) {
378
+ unmountComponent(component);
379
+ } else {
380
+ if (node['__preactattr_'] != null) applyRef(node['__preactattr_'].ref, null);
381
+
382
+ if (unmountOnly === false || node['__preactattr_'] == null) {
383
+ removeNode(node);
384
+ }
385
+
386
+ removeChildren(node);
387
+ }
388
+ }
389
+
390
+ function removeChildren(node) {
391
+ node = node.lastChild;
392
+ while (node) {
393
+ var next = node.previousSibling;
394
+ recollectNodeTree(node, true);
395
+ node = next;
396
+ }
397
+ }
398
+
399
+ function diffAttributes(dom, attrs, old) {
400
+ var name;
401
+
402
+ for (name in old) {
403
+ if (!(attrs && attrs[name] != null) && old[name] != null) {
404
+ setAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);
405
+ }
406
+ }
407
+
408
+ for (name in attrs) {
409
+ if (name !== 'children' && name !== 'innerHTML' && (!(name in old) || attrs[name] !== (name === 'value' || name === 'checked' ? dom[name] : old[name]))) {
410
+ setAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);
411
+ }
412
+ }
413
+ }
414
+
415
+ var recyclerComponents = [];
416
+
417
+ function createComponent(Ctor, props, context) {
418
+ var inst,
419
+ i = recyclerComponents.length;
420
+
421
+ if (Ctor.prototype && Ctor.prototype.render) {
422
+ inst = new Ctor(props, context);
423
+ Component.call(inst, props, context);
424
+ } else {
425
+ inst = new Component(props, context);
426
+ inst.constructor = Ctor;
427
+ inst.render = doRender;
428
+ }
429
+
430
+ while (i--) {
431
+ if (recyclerComponents[i].constructor === Ctor) {
432
+ inst.nextBase = recyclerComponents[i].nextBase;
433
+ recyclerComponents.splice(i, 1);
434
+ return inst;
435
+ }
436
+ }
437
+
438
+ return inst;
439
+ }
440
+
441
+ function doRender(props, state, context) {
442
+ return this.constructor(props, context);
443
+ }
444
+
445
+ function setComponentProps(component, props, renderMode, context, mountAll) {
446
+ if (component._disable) return;
447
+ component._disable = true;
448
+
449
+ component.__ref = props.ref;
450
+ component.__key = props.key;
451
+ delete props.ref;
452
+ delete props.key;
453
+
454
+ if (typeof component.constructor.getDerivedStateFromProps === 'undefined') {
455
+ if (!component.base || mountAll) {
456
+ if (component.componentWillMount) component.componentWillMount();
457
+ } else if (component.componentWillReceiveProps) {
458
+ component.componentWillReceiveProps(props, context);
459
+ }
460
+ }
461
+
462
+ if (context && context !== component.context) {
463
+ if (!component.prevContext) component.prevContext = component.context;
464
+ component.context = context;
465
+ }
466
+
467
+ if (!component.prevProps) component.prevProps = component.props;
468
+ component.props = props;
469
+
470
+ component._disable = false;
471
+
472
+ if (renderMode !== 0) {
473
+ if (renderMode === 1 || options.syncComponentUpdates !== false || !component.base) {
474
+ renderComponent(component, 1, mountAll);
475
+ } else {
476
+ enqueueRender(component);
477
+ }
478
+ }
479
+
480
+ applyRef(component.__ref, component);
481
+ }
482
+
483
+ function renderComponent(component, renderMode, mountAll, isChild) {
484
+ if (component._disable) return;
485
+
486
+ var props = component.props,
487
+ state = component.state,
488
+ context = component.context,
489
+ previousProps = component.prevProps || props,
490
+ previousState = component.prevState || state,
491
+ previousContext = component.prevContext || context,
492
+ isUpdate = component.base,
493
+ nextBase = component.nextBase,
494
+ initialBase = isUpdate || nextBase,
495
+ initialChildComponent = component._component,
496
+ skip = false,
497
+ snapshot = previousContext,
498
+ rendered,
499
+ inst,
500
+ cbase;
501
+
502
+ if (component.constructor.getDerivedStateFromProps) {
503
+ state = extend(extend({}, state), component.constructor.getDerivedStateFromProps(props, state));
504
+ component.state = state;
505
+ }
506
+
507
+ if (isUpdate) {
508
+ component.props = previousProps;
509
+ component.state = previousState;
510
+ component.context = previousContext;
511
+ if (renderMode !== 2 && component.shouldComponentUpdate && component.shouldComponentUpdate(props, state, context) === false) {
512
+ skip = true;
513
+ } else if (component.componentWillUpdate) {
514
+ component.componentWillUpdate(props, state, context);
515
+ }
516
+ component.props = props;
517
+ component.state = state;
518
+ component.context = context;
519
+ }
520
+
521
+ component.prevProps = component.prevState = component.prevContext = component.nextBase = null;
522
+ component._dirty = false;
523
+
524
+ if (!skip) {
525
+ rendered = component.render(props, state, context);
526
+
527
+ if (component.getChildContext) {
528
+ context = extend(extend({}, context), component.getChildContext());
529
+ }
530
+
531
+ if (isUpdate && component.getSnapshotBeforeUpdate) {
532
+ snapshot = component.getSnapshotBeforeUpdate(previousProps, previousState);
533
+ }
534
+
535
+ var childComponent = rendered && rendered.nodeName,
536
+ toUnmount,
537
+ base;
538
+
539
+ if (typeof childComponent === 'function') {
540
+
541
+ var childProps = getNodeProps(rendered);
542
+ inst = initialChildComponent;
543
+
544
+ if (inst && inst.constructor === childComponent && childProps.key == inst.__key) {
545
+ setComponentProps(inst, childProps, 1, context, false);
546
+ } else {
547
+ toUnmount = inst;
548
+
549
+ component._component = inst = createComponent(childComponent, childProps, context);
550
+ inst.nextBase = inst.nextBase || nextBase;
551
+ inst._parentComponent = component;
552
+ setComponentProps(inst, childProps, 0, context, false);
553
+ renderComponent(inst, 1, mountAll, true);
554
+ }
555
+
556
+ base = inst.base;
557
+ } else {
558
+ cbase = initialBase;
559
+
560
+ toUnmount = initialChildComponent;
561
+ if (toUnmount) {
562
+ cbase = component._component = null;
563
+ }
564
+
565
+ if (initialBase || renderMode === 1) {
566
+ if (cbase) cbase._component = null;
567
+ base = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, true);
568
+ }
569
+ }
570
+
571
+ if (initialBase && base !== initialBase && inst !== initialChildComponent) {
572
+ var baseParent = initialBase.parentNode;
573
+ if (baseParent && base !== baseParent) {
574
+ baseParent.replaceChild(base, initialBase);
575
+
576
+ if (!toUnmount) {
577
+ initialBase._component = null;
578
+ recollectNodeTree(initialBase, false);
579
+ }
580
+ }
581
+ }
582
+
583
+ if (toUnmount) {
584
+ unmountComponent(toUnmount);
585
+ }
586
+
587
+ component.base = base;
588
+ if (base && !isChild) {
589
+ var componentRef = component,
590
+ t = component;
591
+ while (t = t._parentComponent) {
592
+ (componentRef = t).base = base;
593
+ }
594
+ base._component = componentRef;
595
+ base._componentConstructor = componentRef.constructor;
596
+ }
597
+ }
598
+
599
+ if (!isUpdate || mountAll) {
600
+ mounts.push(component);
601
+ } else if (!skip) {
602
+
603
+ if (component.componentDidUpdate) {
604
+ component.componentDidUpdate(previousProps, previousState, snapshot);
605
+ }
606
+ if (options.afterUpdate) options.afterUpdate(component);
607
+ }
608
+
609
+ while (component._renderCallbacks.length) {
610
+ component._renderCallbacks.pop().call(component);
611
+ }if (!diffLevel && !isChild) flushMounts();
612
+ }
613
+
614
+ function buildComponentFromVNode(dom, vnode, context, mountAll) {
615
+ var c = dom && dom._component,
616
+ originalComponent = c,
617
+ oldDom = dom,
618
+ isDirectOwner = c && dom._componentConstructor === vnode.nodeName,
619
+ isOwner = isDirectOwner,
620
+ props = getNodeProps(vnode);
621
+ while (c && !isOwner && (c = c._parentComponent)) {
622
+ isOwner = c.constructor === vnode.nodeName;
623
+ }
624
+
625
+ if (c && isOwner && (!mountAll || c._component)) {
626
+ setComponentProps(c, props, 3, context, mountAll);
627
+ dom = c.base;
628
+ } else {
629
+ if (originalComponent && !isDirectOwner) {
630
+ unmountComponent(originalComponent);
631
+ dom = oldDom = null;
632
+ }
633
+
634
+ c = createComponent(vnode.nodeName, props, context);
635
+ if (dom && !c.nextBase) {
636
+ c.nextBase = dom;
637
+
638
+ oldDom = null;
639
+ }
640
+ setComponentProps(c, props, 1, context, mountAll);
641
+ dom = c.base;
642
+
643
+ if (oldDom && dom !== oldDom) {
644
+ oldDom._component = null;
645
+ recollectNodeTree(oldDom, false);
646
+ }
647
+ }
648
+
649
+ return dom;
650
+ }
651
+
652
+ function unmountComponent(component) {
653
+ if (options.beforeUnmount) options.beforeUnmount(component);
654
+
655
+ var base = component.base;
656
+
657
+ component._disable = true;
658
+
659
+ if (component.componentWillUnmount) component.componentWillUnmount();
660
+
661
+ component.base = null;
662
+
663
+ var inner = component._component;
664
+ if (inner) {
665
+ unmountComponent(inner);
666
+ } else if (base) {
667
+ if (base['__preactattr_'] != null) applyRef(base['__preactattr_'].ref, null);
668
+
669
+ component.nextBase = base;
670
+
671
+ removeNode(base);
672
+ recyclerComponents.push(component);
673
+
674
+ removeChildren(base);
675
+ }
676
+
677
+ applyRef(component.__ref, null);
678
+ }
679
+
680
+ function Component(props, context) {
681
+ this._dirty = true;
682
+
683
+ this.context = context;
684
+
685
+ this.props = props;
686
+
687
+ this.state = this.state || {};
688
+
689
+ this._renderCallbacks = [];
690
+ }
691
+
692
+ extend(Component.prototype, {
693
+ setState: function setState(state, callback) {
694
+ if (!this.prevState) this.prevState = this.state;
695
+ this.state = extend(extend({}, this.state), typeof state === 'function' ? state(this.state, this.props) : state);
696
+ if (callback) this._renderCallbacks.push(callback);
697
+ enqueueRender(this);
698
+ },
699
+ forceUpdate: function forceUpdate(callback) {
700
+ if (callback) this._renderCallbacks.push(callback);
701
+ renderComponent(this, 2);
702
+ },
703
+ render: function render() {}
704
+ });
705
+
706
+ function render(vnode, parent, merge) {
707
+ return diff(merge, vnode, {}, false, parent, false);
708
+ }
709
+
710
+ function createRef() {
711
+ return {};
712
+ }
713
+
714
+ var preact = {
715
+ h: h,
716
+ createElement: h,
717
+ cloneElement: cloneElement,
718
+ createRef: createRef,
719
+ Component: Component,
720
+ render: render,
721
+ rerender: rerender,
722
+ options: options
723
+ };
724
+
725
+ if (typeof module != 'undefined') module.exports = preact;else self.preact = preact;
726
+ }());
727
+ //# sourceMappingURL=preact.dev.js.map