diff options
author | Florian Dold <florian.dold@gmail.com> | 2016-10-04 11:50:26 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2016-10-04 11:50:26 +0200 |
commit | 133a8c672c26609e9d56d4e184b779ca26971a8c (patch) | |
tree | f3aa4779a75279c95553cd68dd2a3bbe5e5b9dde /thirdparty/preact/src/dom/recycler.js | |
parent | 0697c987c5314232056a86fa128b518c866d2f12 (diff) | |
parent | 30b577138dda685f65a8529be1866afa6e321845 (diff) |
Merge commit '30b577138dda685f65a8529be1866afa6e321845' as 'thirdparty/preact'
Diffstat (limited to 'thirdparty/preact/src/dom/recycler.js')
-rw-r--r-- | thirdparty/preact/src/dom/recycler.js | 25 |
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; +} |