govuk_publishing_components 12.19.0 → 12.20.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,6 +10,17 @@ export function extend(obj, props) {
10
10
  return obj;
11
11
  }
12
12
 
13
+ /** Invoke or update a ref, depending on whether it is a function or object ref.
14
+ * @param {object|function} [ref=null]
15
+ * @param {any} [value]
16
+ */
17
+ export function applyRef(ref, value) {
18
+ if (ref!=null) {
19
+ if (typeof ref=='function') ref(value);
20
+ else ref.current = value;
21
+ }
22
+ }
23
+
13
24
  /**
14
25
  * Call a function asynchronously, as soon as possible. Makes
15
26
  * use of HTML Promise to schedule the callback if available,
@@ -1,6 +1,6 @@
1
1
  import { SYNC_RENDER, NO_RENDER, FORCE_RENDER, ASYNC_RENDER, ATTR_KEY } from '../constants';
2
2
  import options from '../options';
3
- import { extend } from '../util';
3
+ import { extend, applyRef } from '../util';
4
4
  import { enqueueRender } from '../render-queue';
5
5
  import { getNodeProps } from './index';
6
6
  import { diff, mounts, diffLevel, flushMounts, recollectNodeTree, removeChildren } from './diff';
@@ -52,7 +52,7 @@ export function setComponentProps(component, props, renderMode, context, mountAl
52
52
  }
53
53
  }
54
54
 
55
- if (component.__ref) component.__ref(component);
55
+ applyRef(component.__ref, component);
56
56
  }
57
57
 
58
58
 
@@ -189,7 +189,7 @@ export function renderComponent(component, renderMode, mountAll, isChild) {
189
189
  }
190
190
 
191
191
  if (!isUpdate || mountAll) {
192
- mounts.unshift(component);
192
+ mounts.push(component);
193
193
  }
194
194
  else if (!skip) {
195
195
  // Ensure that pending componentDidMount() hooks of child components
@@ -282,7 +282,7 @@ export function unmountComponent(component) {
282
282
  unmountComponent(inner);
283
283
  }
284
284
  else if (base) {
285
- if (base[ATTR_KEY] && base[ATTR_KEY].ref) base[ATTR_KEY].ref(null);
285
+ if (base[ATTR_KEY]!=null) applyRef(base[ATTR_KEY].ref, null);
286
286
 
287
287
  component.nextBase = base;
288
288
 
@@ -292,5 +292,5 @@ export function unmountComponent(component) {
292
292
  removeChildren(base);
293
293
  }
294
294
 
295
- if (component.__ref) component.__ref(null);
295
+ applyRef(component.__ref, null);
296
296
  }
@@ -4,6 +4,7 @@ import { buildComponentFromVNode } from './component';
4
4
  import { createNode, setAccessor } from '../dom/index';
5
5
  import { unmountComponent } from './component';
6
6
  import options from '../options';
7
+ import { applyRef } from '../util';
7
8
  import { removeNode } from '../dom/index';
8
9
 
9
10
  /**
@@ -24,7 +25,7 @@ let hydrating = false;
24
25
  /** Invoke queued componentDidMount lifecycle methods */
25
26
  export function flushMounts() {
26
27
  let c;
27
- while ((c=mounts.pop())) {
28
+ while ((c = mounts.shift())) {
28
29
  if (options.afterMount) options.afterMount(c);
29
30
  if (c.componentDidMount) c.componentDidMount();
30
31
  }
@@ -284,7 +285,7 @@ export function recollectNodeTree(node, unmountOnly) {
284
285
  else {
285
286
  // If the node's VNode had a ref function, invoke it with null here.
286
287
  // (this is part of the React spec, and smart for unsetting references)
287
- if (node[ATTR_KEY]!=null && node[ATTR_KEY].ref) node[ATTR_KEY].ref(null);
288
+ if (node[ATTR_KEY]!=null) applyRef(node[ATTR_KEY].ref, null);
288
289
 
289
290
  if (unmountOnly===false || node[ATTR_KEY]==null) {
290
291
  removeNode(node);
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_publishing_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.19.0
4
+ version: 12.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-06 00:00:00.000000000 Z
11
+ date: 2018-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govspeak