aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/preact/src/dom/recycler.js
diff options
context:
space:
mode:
authortg(x) <*@tg-x.net>2016-10-05 00:02:10 +0200
committertg(x) <*@tg-x.net>2016-10-05 00:02:10 +0200
commitec62d29c90958aa8d41474ed2fe5a179d6fafed7 (patch)
tree367cc55bc6772cf194ed6c4778cd344d581d3d7c /thirdparty/preact/src/dom/recycler.js
parentfda241d74d5c1c39203b64da676c684d4dc9d800 (diff)
parentd3ccf4103900b8d990b1970d135695b938d94eae (diff)
Merge branch 'master' of taler.net:/var/git/wallet-webex
Diffstat (limited to 'thirdparty/preact/src/dom/recycler.js')
-rw-r--r--thirdparty/preact/src/dom/recycler.js25
1 files changed, 25 insertions, 0 deletions
diff --git a/thirdparty/preact/src/dom/recycler.js b/thirdparty/preact/src/dom/recycler.js
new file mode 100644
index 000000000..22085a916
--- /dev/null
+++ b/thirdparty/preact/src/dom/recycler.js
@@ -0,0 +1,25 @@
+import { toLowerCase } from '../util';
+import { removeNode } from './index';
+
+/** DOM node pool, keyed on nodeName. */
+
+const nodes = {};
+
+export function collectNode(node) {
+ removeNode(node);
+
+ if (node instanceof Element) {
+ node._component = node._componentConstructor = null;
+
+ let name = node.normalizedNodeName || toLowerCase(node.nodeName);
+ (nodes[name] || (nodes[name] = [])).push(node);
+ }
+}
+
+
+export function createNode(nodeName, isSvg) {
+ let name = toLowerCase(nodeName),
+ node = nodes[name] && nodes[name].pop() || (isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName));
+ node.normalizedNodeName = name;
+ return node;
+}