UNPKG

63.6 kBSource Map (JSON)View Raw
1{"version":3,"file":null,"sources":["src/vnode.js","src/options.js","src/h.js","src/util.js","src/clone-element.js","src/constants.js","src/linked-state.js","src/render-queue.js","src/vdom/functional-component.js","src/vdom/index.js","src/dom/index.js","src/dom/recycler.js","src/vdom/diff.js","src/vdom/component-recycler.js","src/vdom/component.js","src/component.js","src/render.js"],"sourcesContent":["/** Virtual DOM Node */\nexport function VNode(nodeName, attributes, children) {\n\t/** @type {string|function} */\n\tthis.nodeName = nodeName;\n\n\t/** @type {object<string>|undefined} */\n\tthis.attributes = attributes;\n\n\t/** @type {array<VNode>|undefined} */\n\tthis.children = children;\n\n\t/** Reference to the given key. */\n\tthis.key = attributes && attributes.key;\n}\n","/** Global options\n *\t@public\n *\t@namespace options {Object}\n */\nexport default {\n\n\t/** If `true`, `prop` changes trigger synchronous component updates.\n\t *\t@name syncComponentUpdates\n\t *\t@type Boolean\n\t *\t@default true\n\t */\n\t//syncComponentUpdates: true,\n\n\t/** Processes all created VNodes.\n\t *\t@param {VNode} vnode\tA newly-created VNode to normalize/process\n\t */\n\t//vnode(vnode) { }\n\n\t/** Hook invoked after a component is mounted. */\n\t// afterMount(component) { }\n\n\t/** Hook invoked after the DOM is updated with a component's latest render. */\n\t// afterUpdate(component) { }\n\n\t/** Hook invoked immediately before a component is unmounted. */\n\t// beforeUnmount(component) { }\n};\n","import { VNode } from './vnode';\nimport options from './options';\n\n\nconst stack = [];\n\n\n/** JSX/hyperscript reviver\n*\tBenchmarks: https://esbench.com/bench/57ee8f8e330ab09900a1a1a0\n *\t@see http://jasonformat.com/wtf-is-jsx\n *\t@public\n * @example\n * /** @jsx h *\\/\n * import { render, h } from 'preact';\n * render(<span>foo</span>, document.body);\n */\nexport function h(nodeName, attributes) {\n\tlet children = [],\n\t\tlastSimple, child, simple, i;\n\tfor (i=arguments.length; i-- > 2; ) {\n\t\tstack.push(arguments[i]);\n\t}\n\tif (attributes && attributes.children) {\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()) instanceof Array) {\n\t\t\tfor (i=child.length; i--; ) stack.push(child[i]);\n\t\t}\n\t\telse if (child!=null && child!==false) {\n\t\t\tif (typeof child=='number' || child===true) child = String(child);\n\t\t\tsimple = typeof child=='string';\n\t\t\tif (simple && lastSimple) {\n\t\t\t\tchildren[children.length-1] += child;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tchildren.push(child);\n\t\t\t\tlastSimple = simple;\n\t\t\t}\n\t\t}\n\t}\n\n\tlet p = new VNode(nodeName, attributes || undefined, children);\n\n\t// if a \"vnode hook\" is defined, pass every created VNode to it\n\tif (options.vnode) options.vnode(p);\n\n\treturn p;\n}\n","/** Copy own-properties from `props` onto `obj`.\n *\t@returns obj\n *\t@private\n */\nexport function extend(obj, props) {\n\tif (props) {\n\t\tfor (let i in props) obj[i] = props[i];\n\t}\n\treturn obj;\n}\n\n\n/** Fast clone. Note: does not filter out non-own properties.\n *\t@see https://esbench.com/bench/56baa34f45df6895002e03b6\n */\nexport function clone(obj) {\n\treturn extend({}, obj);\n}\n\n\n/** Get a deep property value from the given object, expressed in dot-notation.\n *\t@private\n */\nexport function delve(obj, key) {\n\tfor (let p=key.split('.'), i=0; i<p.length && obj; i++) {\n\t\tobj = obj[p[i]];\n\t}\n\treturn obj;\n}\n\n\n/** @private is the given object a Function? */\nexport function isFunction(obj) {\n\treturn 'function'===typeof obj;\n}\n\n\n/** @private is the given object a String? */\nexport function isString(obj) {\n\treturn 'string'===typeof obj;\n}\n\n\n/** Convert a hashmap of CSS classes to a space-delimited className string\n *\t@private\n */\nexport function hashToClassName(c) {\n\tlet str = '';\n\tfor (let prop in c) {\n\t\tif (c[prop]) {\n\t\t\tif (str) str += ' ';\n\t\t\tstr += prop;\n\t\t}\n\t}\n\treturn str;\n}\n\n\n/** Just a memoized String#toLowerCase */\nlet lcCache = {};\nexport const toLowerCase = s => lcCache[s] || (lcCache[s] = s.toLowerCase());\n\n\n/** Call a function asynchronously, as soon as possible.\n *\t@param {Function} callback\n */\nlet resolved = typeof Promise!=='undefined' && Promise.resolve();\nexport const defer = resolved ? (f => { resolved.then(f); }) : setTimeout;\n","import { clone, extend } from './util';\nimport { h } from './h';\n\nexport function cloneElement(vnode, props) {\n\treturn h(\n\t\tvnode.nodeName,\n\t\textend(clone(vnode.attributes), props),\n\t\targuments.length>2 ? [].slice.call(arguments, 2) : vnode.children\n\t);\n}\n","// render modes\n\nexport const NO_RENDER = 0;\nexport const SYNC_RENDER = 1;\nexport const FORCE_RENDER = 2;\nexport const ASYNC_RENDER = 3;\n\nexport const EMPTY = {};\n\nexport const ATTR_KEY = typeof Symbol!=='undefined' ? Symbol.for('preactattr') : '__preactattr_';\n\n// DOM properties that should NOT have \"px\" added when numeric\nexport const NON_DIMENSION_PROPS = {\n\tboxFlex:1, boxFlexGroup:1, columnCount:1, fillOpacity:1, flex:1, flexGrow:1,\n\tflexPositive:1, flexShrink:1, flexNegative:1, fontWeight:1, lineClamp:1, lineHeight:1,\n\topacity:1, order:1, orphans:1, strokeOpacity:1, widows:1, zIndex:1, zoom:1\n};\n\n// DOM event types that do not bubble and should be attached via useCapture\nexport const NON_BUBBLING_EVENTS = { blur:1, error:1, focus:1, load:1, resize:1, scroll:1 };\n","import { isString, delve } from './util';\n\n/** Create an Event handler function that sets a given state property.\n *\t@param {Component} component\tThe component whose state should be updated\n *\t@param {string} key\t\t\t\tA dot-notated key path to update in the component's state\n *\t@param {string} eventPath\t\tA dot-notated key path to the value that should be retrieved from the Event or component\n *\t@returns {function} linkedStateHandler\n *\t@private\n */\nexport function createLinkedState(component, key, eventPath) {\n\tlet path = key.split('.');\n\treturn function(e) {\n\t\tlet t = e && e.target || this,\n\t\t\tstate = {},\n\t\t\tobj = state,\n\t\t\tv = isString(eventPath) ? delve(e, eventPath) : t.nodeName ? (t.type.match(/^che|rad/) ? t.checked : t.value) : e,\n\t\t\ti = 0;\n\t\tfor ( ; i<path.length-1; i++) {\n\t\t\tobj = obj[path[i]] || (obj[path[i]] = !i && component.state[path[i]] || {});\n\t\t}\n\t\tobj[path[i]] = v;\n\t\tcomponent.setState(state);\n\t};\n}\n","import options from './options';\nimport { defer } from './util';\nimport { renderComponent } from './vdom/component';\n\n/** Managed queue of dirty components to be re-rendered */\n\n// items/itemsOffline swap on each rerender() call (just a simple pool technique)\nlet items = [];\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\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 { EMPTY } from '../constants';\nimport { getNodeProps } from './index';\nimport { isFunction } from '../util';\n\n\n/** Check if a VNode is a reference to a stateless functional component.\n *\tA function component is represented as a VNode whose `nodeName` property is a reference to a function.\n *\tIf that function is not a Component (ie, has no `.render()` method on a prototype), it is considered a stateless functional component.\n *\t@param {VNode} vnode\tA VNode\n *\t@private\n */\nexport function isFunctionalComponent(vnode) {\n\tlet nodeName = vnode && vnode.nodeName;\n\treturn nodeName && isFunction(nodeName) && !(nodeName.prototype && nodeName.prototype.render);\n}\n\n\n\n/** Construct a resultant VNode from a VNode referencing a stateless functional component.\n *\t@param {VNode} vnode\tA VNode with a `nodeName` property that is a reference to a function.\n *\t@private\n */\nexport function buildFunctionalComponent(vnode, context) {\n\treturn vnode.nodeName(getNodeProps(vnode), context || EMPTY);\n}\n","import { clone, isString, isFunction, toLowerCase } from '../util';\nimport { isFunctionalComponent } from './functional-component';\n\n\n/** Check if two nodes are equivalent.\n *\t@param {Element} node\n *\t@param {VNode} vnode\n *\t@private\n */\nexport function isSameNodeType(node, vnode) {\n\tif (isString(vnode)) {\n\t\treturn node instanceof Text;\n\t}\n\tif (isString(vnode.nodeName)) {\n\t\treturn !node._componentConstructor && isNamedNode(node, vnode.nodeName);\n\t}\n\tif (isFunction(vnode.nodeName)) {\n\t\treturn node._componentConstructor===vnode.nodeName || isFunctionalComponent(vnode);\n\t}\n}\n\n\nexport function isNamedNode(node, nodeName) {\n\treturn node.normalizedNodeName===nodeName || toLowerCase(node.nodeName)===toLowerCase(nodeName);\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 {VNode} vnode\n * @returns {Object} props\n */\nexport function getNodeProps(vnode) {\n\tlet props = clone(vnode.attributes);\n\tprops.children = vnode.children;\n\n\tlet defaultProps = vnode.nodeName.defaultProps;\n\tif (defaultProps) {\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 { NON_DIMENSION_PROPS, NON_BUBBLING_EVENTS } from '../constants';\nimport options from '../options';\nimport { toLowerCase, isString, isFunction, hashToClassName } from '../util';\n\n\n\n\n/** Removes a given DOM Node from its parent. */\nexport function removeNode(node) {\n\tlet p = node.parentNode;\n\tif (p) p.removeChild(node);\n}\n\n\n/** Set a named attribute on the given Node, with special behavior for some names and event handlers.\n *\tIf `value` is `null`, the attribute/handler will be removed.\n *\t@param {Element} node\tAn element to mutate\n *\t@param {string} name\tThe name/key to set, such as an event or attribute name\n *\t@param {any} value\t\tAn attribute value, such as a function to be used as an event handler\n *\t@param {any} previousValue\tThe last value that was set for this name/node pair\n *\t@private\n */\nexport function setAccessor(node, name, old, value, isSvg) {\n\n\tif (name==='className') name = 'class';\n\n\tif (name==='class' && value && typeof value==='object') {\n\t\tvalue = hashToClassName(value);\n\t}\n\n\tif (name==='key') {\n\t\t// ignore\n\t}\n\telse if (name==='class' && !isSvg) {\n\t\tnode.className = value || '';\n\t}\n\telse if (name==='style') {\n\t\tif (!value || isString(value) || isString(old)) {\n\t\t\tnode.style.cssText = value || '';\n\t\t}\n\t\tif (value && typeof value==='object') {\n\t\t\tif (!isString(old)) {\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' && !NON_DIMENSION_PROPS[i] ? (value[i]+'px') : value[i];\n\t\t\t}\n\t\t}\n\t}\n\telse if (name==='dangerouslySetInnerHTML') {\n\t\tnode.innerHTML = value && value.__html || '';\n\t}\n\telse if (name[0]=='o' && name[1]=='n') {\n\t\tlet l = node._listeners || (node._listeners = {});\n\t\tname = toLowerCase(name.substring(2));\n\t\t// @TODO: this might be worth it later, un-breaks focus/blur bubbling in IE9:\n\t\t// if (node.attachEvent) name = name=='focus'?'focusin':name=='blur'?'focusout':name;\n\t\tif (value) {\n\t\t\tif (!l[name]) node.addEventListener(name, eventProxy, !!NON_BUBBLING_EVENTS[name]);\n\t\t}\n\t\telse if (l[name]) {\n\t\t\tnode.removeEventListener(name, eventProxy, !!NON_BUBBLING_EVENTS[name]);\n\t\t}\n\t\tl[name] = value;\n\t}\n\telse if (name!=='list' && name!=='type' && !isSvg && name in node) {\n\t\tsetProperty(node, name, value==null ? '' : value);\n\t\tif (value==null || value===false) node.removeAttribute(name);\n\t}\n\telse {\n\t\tlet ns = isSvg && name.match(/^xlink\\:?(.+)/);\n\t\tif (value==null || value===false) {\n\t\t\tif (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', toLowerCase(ns[1]));\n\t\t\telse node.removeAttribute(name);\n\t\t}\n\t\telse if (typeof value!=='object' && !isFunction(value)) {\n\t\t\tif (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', toLowerCase(ns[1]), value);\n\t\t\telse node.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n\n/** Attempt to set a DOM property to the given value.\n *\tIE & FF throw for certain property-value combinations.\n */\nfunction setProperty(node, name, value) {\n\ttry {\n\t\tnode[name] = value;\n\t} catch (e) { }\n}\n\n\n/** Proxy an event to hooked event handlers\n *\t@private\n */\nfunction eventProxy(e) {\n\treturn this._listeners[e.type](options.event && options.event(e) || e);\n}\n","import { toLowerCase } from '../util';\nimport { removeNode } from './index';\n\n/** DOM node pool, keyed on nodeName. */\n\nconst nodes = {};\n\nexport function collectNode(node) {\n\tremoveNode(node);\n\n\tif (node instanceof Element) {\n\t\tnode._component = node._componentConstructor = null;\n\n\t\tlet name = node.normalizedNodeName || toLowerCase(node.nodeName);\n\t\t(nodes[name] || (nodes[name] = [])).push(node);\n\t}\n}\n\n\nexport function createNode(nodeName, isSvg) {\n\tlet name = toLowerCase(nodeName),\n\t\tnode = nodes[name] && nodes[name].pop() || (isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName));\n\tnode.normalizedNodeName = name;\n\treturn node;\n}\n","import { ATTR_KEY } from '../constants';\nimport { isString, isFunction } from '../util';\nimport { isSameNodeType, isNamedNode } from './index';\nimport { isFunctionalComponent, buildFunctionalComponent } from './functional-component';\nimport { buildComponentFromVNode } from './component';\nimport { setAccessor } from '../dom/index';\nimport { createNode, collectNode } from '../dom/recycler';\nimport { unmountComponent } from './component';\nimport options from '../options';\n\n\n/** Diff recursion count, used to track the end of the diff cycle. */\nexport const mounts = [];\n\n/** Diff recursion count, used to track the end of the diff cycle. */\nexport let diffLevel = 0;\n\nlet isSvgMode = false;\n\nlet hydrating = false;\n\n\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/** Apply differences in a given vnode (and it's deep children) to a real DOM Node.\n *\t@param {Element} [dom=null]\t\tA DOM node to mutate into the shape of the `vnode`\n *\t@param {VNode} vnode\t\t\tA VNode (with descendants forming a tree) representing the desired DOM structure\n *\t@returns {Element} dom\t\t\tThe created/mutated element\n *\t@private\n */\nexport function diff(dom, vnode, context, mountAll, parent, componentRoot) {\n\tif (!diffLevel++) {\n\t\tisSvgMode = parent instanceof SVGElement;\n\t\thydrating = dom && !(ATTR_KEY in dom);\n\t}\n\tlet ret = idiff(dom, vnode, context, mountAll);\n\tif (parent && ret.parentNode!==parent) parent.appendChild(ret);\n\tif (!--diffLevel) {\n\t\thydrating = false;\n\t\tif (!componentRoot) flushMounts();\n\t}\n\treturn ret;\n}\n\n\nfunction idiff(dom, vnode, context, mountAll) {\n\tlet originalAttributes = vnode && vnode.attributes;\n\n\twhile (isFunctionalComponent(vnode)) {\n\t\tvnode = buildFunctionalComponent(vnode, context);\n\t}\n\n\tif (vnode==null) vnode = '';\n\n\tif (isString(vnode)) {\n\n\t\tif (dom && dom instanceof Text) {\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\tif (dom) recollectNodeTree(dom);\n\t\t\tdom = document.createTextNode(vnode);\n\t\t}\n\t\tdom[ATTR_KEY] = true;\n\t\treturn dom;\n\n\t}\n\n\tif (isFunction(vnode.nodeName)) {\n\t\treturn buildComponentFromVNode(dom, vnode, context, mountAll);\n\t}\n\n\tlet out = dom,\n\t\tnodeName = String(vnode.nodeName),\n\t\tprevSvgMode = isSvgMode,\n\t\tvchildren = vnode.children;\n\n\n\tisSvgMode = nodeName==='svg' ? true : nodeName==='foreignObject' ? false : isSvgMode;\n\n\tif (!dom) {\n\t\tout = createNode(nodeName, isSvgMode);\n\t}\n\telse if (!isNamedNode(dom, nodeName)) {\n\t\tout = createNode(nodeName, isSvgMode);\n\t\t// move children into the replacement node\n\t\twhile (dom.firstChild) out.appendChild(dom.firstChild);\n\t\t// reclaim element nodes\n\t\trecollectNodeTree(dom);\n\t}\n\n\n\tlet fc = out.firstChild,\n\t\tprops = out[ATTR_KEY];\n\tif (!props) {\n\t\tout[ATTR_KEY] = props = {};\n\t\tfor (let a=out.attributes, i=a.length; i--; ) props[a[i].name] = a[i].value;\n\t}\n\n\tdiffAttributes(out, vnode.attributes, props);\n\n\n\t// fast-path for elements containing a single TextNode:\n\tif (!hydrating && vchildren && vchildren.length===1 && typeof vchildren[0]==='string' && fc instanceof Text && !fc.nextSibling) {\n\t\tif (fc.nodeValue!=vchildren[0]) {\n\t\t\tfc.nodeValue = vchildren[0];\n\t\t}\n\t}\n\telse if (vchildren && vchildren.length || fc) {\n\t\tinnerDiffNode(out, vchildren, context, mountAll);\n\t}\n\n\tif (originalAttributes && typeof originalAttributes.ref==='function') {\n\t\t(props.ref = originalAttributes.ref)(out);\n\t}\n\n\tisSvgMode = prevSvgMode;\n\n\treturn out;\n}\n\n\n/** Apply child and attribute changes between a VNode and a DOM Node to the DOM. */\nfunction innerDiffNode(dom, vchildren, context, mountAll) {\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,\n\t\tj, c, vchild, child;\n\n\tif (len) {\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 ? ((c = child._component) ? c.__key : props ? props.key : null) : 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 (hydrating || props) {\n\t\t\t\tchildren[childrenLen++] = child;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (vlen) {\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// if (isFunctionalComponent(vchild)) {\n\t\t\t// \tvchild = buildFunctionalComponent(vchild);\n\t\t\t// }\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 && key in keyed) {\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 (!child && min<childrenLen) {\n\t\t\t\tfor (j=min; j<childrenLen; j++) {\n\t\t\t\t\tc = children[j];\n\t\t\t\t\tif (c && isSameNodeType(c, vchild)) {\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\tif (!child && min<childrenLen && isFunction(vchild.nodeName) && mountAll) {\n\t\t\t\t\tchild = children[min];\n\t\t\t\t\tchildren[min++] = undefined;\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\tif (child && child!==dom && child!==originalChildren[i]) {\n\t\t\t\tdom.insertBefore(child, originalChildren[i] || null);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tif (keyedLen) {\n\t\tfor (let i in keyed) if (keyed[i]) recollectNodeTree(keyed[i]);\n\t}\n\n\t// remove orphaned children\n\tif (min<childrenLen) {\n\t\tremoveOrphanedChildren(children);\n\t}\n}\n\n\n/** Reclaim children that were unreferenced in the desired VTree */\nexport function removeOrphanedChildren(children, unmountOnly) {\n\tfor (let i=children.length; i--; ) {\n\t\tif (children[i]) {\n\t\t\trecollectNodeTree(children[i], unmountOnly);\n\t\t}\n\t}\n}\n\n\n/** Reclaim an entire tree of nodes, starting at the root. */\nexport function recollectNodeTree(node, unmountOnly) {\n\t// @TODO: Need to make a call on whether Preact should remove nodes not created by itself.\n\t// Currently it *does* remove them. Discussion: https://github.com/developit/preact/issues/39\n\t//if (!node[ATTR_KEY]) return;\n\n\tlet component = node._component;\n\tif (component) {\n\t\tunmountComponent(component, !unmountOnly);\n\t}\n\telse {\n\t\tif (node[ATTR_KEY] && node[ATTR_KEY].ref) node[ATTR_KEY].ref(null);\n\n\t\tif (!unmountOnly) {\n\t\t\tcollectNode(node);\n\t\t}\n\n\t\tif (node.childNodes && node.childNodes.length) {\n\t\t\tremoveOrphanedChildren(node.childNodes, unmountOnly);\n\t\t}\n\t}\n}\n\n\n/** Apply differences in attributes from a VNode to the given DOM Node. */\nfunction diffAttributes(dom, attrs, old) {\n\tfor (let name in old) {\n\t\tif (!(attrs && name in attrs) && old[name]!=null) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);\n\t\t}\n\t}\n\n\t// new & updated\n\tif (attrs) {\n\t\tfor (let name in attrs) {\n\t\t\tif (name!=='children' && name!=='innerHTML' && (!(name in old) || attrs[name]!==(name==='value' || name==='checked' ? dom[name] : old[name]))) {\n\t\t\t\tsetAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n\t\t\t}\n\t\t}\n\t}\n}\n","import { Component } from '../component';\n\n/** Retains a pool of Components for re-use, keyed on component name.\n *\tNote: since component names are not unique or even necessarily available, these are primarily a form of sharding.\n *\t@private\n */\nconst components = {};\n\n\nexport function collectComponent(component) {\n\tlet name = component.constructor.name,\n\t\tlist = components[name];\n\tif (list) list.push(component);\n\telse components[name] = [component];\n}\n\n\nexport function createComponent(Ctor, props, context) {\n\tlet inst = new Ctor(props, context),\n\t\tlist = components[Ctor.name];\n\tComponent.call(inst, props, context);\n\tif (list) {\n\t\tfor (let i=list.length; i--; ) {\n\t\t\tif (list[i].constructor===Ctor) {\n\t\t\t\tinst.nextBase = list[i].nextBase;\n\t\t\t\tlist.splice(i, 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn inst;\n}\n","import { SYNC_RENDER, NO_RENDER, FORCE_RENDER, ASYNC_RENDER, ATTR_KEY } from '../constants';\nimport options from '../options';\nimport { isFunction, clone, extend } from '../util';\nimport { enqueueRender } from '../render-queue';\nimport { getNodeProps } from './index';\nimport { diff, mounts, diffLevel, flushMounts, removeOrphanedChildren, recollectNodeTree } from './diff';\nimport { isFunctionalComponent, buildFunctionalComponent } from './functional-component';\nimport { createComponent, collectComponent } from './component-recycler';\nimport { removeNode } from '../dom/index';\n\n\n\n/** Set a component's `props` (generally derived from JSX attributes).\n *\t@param {Object} props\n *\t@param {Object} [opts]\n *\t@param {boolean} [opts.renderSync=false]\tIf `true` and {@link options.syncComponentUpdates} is `true`, triggers synchronous rendering.\n *\t@param {boolean} [opts.render=true]\t\t\tIf `false`, no render will be triggered.\n */\nexport function setComponentProps(component, props, opts, context, mountAll) {\n\tif (component._disable) return;\n\tcomponent._disable = true;\n\n\tif ((component.__ref = props.ref)) delete props.ref;\n\tif ((component.__key = props.key)) delete props.key;\n\n\tif (!component.base || mountAll) {\n\t\tif (component.componentWillMount) component.componentWillMount();\n\t}\n\telse if (component.componentWillReceiveProps) {\n\t\tcomponent.componentWillReceiveProps(props, context);\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 (opts!==NO_RENDER) {\n\t\tif (opts===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/** Render a Component, triggering necessary lifecycle events and taking High-Order Components into account.\n *\t@param {Component} component\n *\t@param {Object} [opts]\n *\t@param {boolean} [opts.build=false]\t\tIf `true`, component will build and store a DOM node if not already associated with one.\n *\t@private\n */\nexport function renderComponent(component, opts, mountAll, isChild) {\n\tif (component._disable) return;\n\n\tlet skip, rendered,\n\t\tprops = 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\tinst, cbase;\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 (opts!==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\tif (component.render) rendered = 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(clone(context), component.getChildContext());\n\t\t}\n\n\t\twhile (isFunctionalComponent(rendered)) {\n\t\t\trendered = buildFunctionalComponent(rendered, context);\n\t\t}\n\n\t\tlet childComponent = rendered && rendered.nodeName,\n\t\t\ttoUnmount, base;\n\n\t\tif (isFunction(childComponent)) {\n\t\t\t// set up high order component link\n\n\n\t\t\tinst = initialChildComponent;\n\t\t\tlet childProps = getNodeProps(rendered);\n\n\t\t\tif (inst && inst.constructor===childComponent) {\n\t\t\t\tsetComponentProps(inst, childProps, SYNC_RENDER, context);\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttoUnmount = inst;\n\n\t\t\t\tinst = createComponent(childComponent, childProps, context);\n\t\t\t\tinst.nextBase = inst.nextBase || nextBase;\n\t\t\t\tinst._parentComponent = component;\n\t\t\t\tcomponent._component = inst;\n\t\t\t\tsetComponentProps(inst, childProps, NO_RENDER, context);\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 || opts===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);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (toUnmount) {\n\t\t\tunmountComponent(toUnmount, base!==initialBase);\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\tif (component.componentDidUpdate) {\n\t\t\tcomponent.componentDidUpdate(previousProps, previousState, previousContext);\n\t\t}\n\t\tif (options.afterUpdate) options.afterUpdate(component);\n\t}\n\n\tlet cb = component._renderCallbacks, fn;\n\tif (cb) while ( (fn = cb.pop()) ) fn.call(component);\n\n\tif (!diffLevel && !isChild) flushMounts();\n}\n\n\n\n/** Apply the Component referenced by a VNode to the DOM.\n *\t@param {Element} dom\tThe DOM node to mutate\n *\t@param {VNode} vnode\tA Component-referencing VNode\n *\t@returns {Element} dom\tThe created/mutated element\n *\t@private\n */\nexport function buildComponentFromVNode(dom, vnode, context, mountAll) {\n\tlet c = dom && dom._component,\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 (c && !isDirectOwner) {\n\t\t\tunmountComponent(c, true);\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 L241:\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);\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n\n\n/** Remove a component from the DOM and recycle it.\n *\t@param {Element} dom\t\t\tA DOM node from which to unmount the given Component\n *\t@param {Component} component\tThe Component instance to unmount\n *\t@private\n */\nexport function unmountComponent(component, remove) {\n\tif (options.beforeUnmount) options.beforeUnmount(component);\n\n\t// console.log(`${remove?'Removing':'Unmounting'} component: ${component.constructor.name}`);\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, remove);\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\tif (remove) {\n\t\t\tremoveNode(base);\n\t\t\tcollectComponent(component);\n\t\t}\n\t\tremoveOrphanedChildren(base.childNodes, !remove);\n\t\t// removeOrphanedChildren(base.childNodes, true);\n\t}\n\n\tif (component.__ref) component.__ref(null);\n\tif (component.componentDidUnmount) component.componentDidUnmount();\n}\n","import { FORCE_RENDER } from './constants';\nimport { extend, clone, isFunction } from './util';\nimport { createLinkedState } from './linked-state';\nimport { renderComponent } from './vdom/component';\nimport { enqueueRender } from './render-queue';\n\n/** Base Component class, for he ES6 Class method of creating Components\n *\t@public\n *\n *\t@example\n *\tclass MyFoo extends Component {\n *\t\trender(props, state) {\n *\t\t\treturn <div />;\n *\t\t}\n *\t}\n */\nexport function Component(props, context) {\n\t/** @private */\n\tthis._dirty = true;\n\t// /** @public */\n\t// this._disableRendering = false;\n\t// /** @public */\n\t// this.prevState = this.prevProps = this.prevContext = this.base = this.nextBase = this._parentComponent = this._component = this.__ref = this.__key = this._linkedStates = this._renderCallbacks = null;\n\t/** @public */\n\tthis.context = context;\n\t/** @type {object} */\n\tthis.props = props;\n\t/** @type {object} */\n\tif (!this.state) this.state = {};\n}\n\n\nextend(Component.prototype, {\n\n\t/** Returns a `boolean` value indicating if the component should re-render when receiving the given `props` and `state`.\n\t *\t@param {object} nextProps\n\t *\t@param {object} nextState\n\t *\t@param {object} nextContext\n\t *\t@returns {Boolean} should the component re-render\n\t *\t@name shouldComponentUpdate\n\t *\t@function\n\t */\n\t// shouldComponentUpdate() {\n\t// \treturn true;\n\t// },\n\n\n\t/** Returns a function that sets a state property when called.\n\t *\tCalling linkState() repeatedly with the same arguments returns a cached link function.\n\t *\n\t *\tProvides some built-in special cases:\n\t *\t\t- Checkboxes and radio buttons link their boolean `checked` value\n\t *\t\t- Inputs automatically link their `value` property\n\t *\t\t- Event paths fall back to any associated Component if not found on an element\n\t *\t\t- If linked value is a function, will invoke it and use the result\n\t *\n\t *\t@param {string} key\t\t\t\tThe path to set - can be a dot-notated deep key\n\t *\t@param {string} [eventPath]\t\tIf set, attempts to find the new state value at a given dot-notated path within the object passed to the linkedState setter.\n\t *\t@returns {function} linkStateSetter(e)\n\t *\n\t *\t@example Update a \"text\" state value when an input changes:\n\t *\t\t<input onChange={ this.linkState('text') } />\n\t *\n\t *\t@example Set a deep state value on click\n\t *\t\t<button onClick={ this.linkState('touch.coords', 'touches.0') }>Tap</button\n\t */\n\tlinkState(key, eventPath) {\n\t\tlet c = this._linkedStates || (this._linkedStates = {});\n\t\treturn c[key+eventPath] || (c[key+eventPath] = createLinkedState(this, key, eventPath));\n\t},\n\n\n\t/** Update component state by copying properties from `state` to `this.state`.\n\t *\t@param {object} state\t\tA hash of state properties to update with new values\n\t */\n\tsetState(state, callback) {\n\t\tlet s = this.state;\n\t\tif (!this.prevState) this.prevState = clone(s);\n\t\textend(s, isFunction(state) ? state(s, this.props) : state);\n\t\tif (callback) (this._renderCallbacks = (this._renderCallbacks || [])).push(callback);\n\t\tenqueueRender(this);\n\t},\n\n\n\t/** Immediately perform a synchronous re-render of the component.\n\t *\t@private\n\t */\n\tforceUpdate() {\n\t\trenderComponent(this, FORCE_RENDER);\n\t},\n\n\n\t/** Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n\t *\tVirtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n\t *\t@param {object} props\t\tProps (eg: JSX attributes) received from parent element/component\n\t *\t@param {object} state\t\tThe component's current state\n\t *\t@param {object} context\t\tContext object (if a parent component has provided context)\n\t *\t@returns VNode\n\t */\n\trender() {}\n\n});\n","import { diff } from './vdom/diff';\n\n/** Render JSX into a `parent` Element.\n *\t@param {VNode} vnode\t\tA (JSX) VNode to render\n *\t@param {Element} parent\t\tDOM element to render into\n *\t@param {Element} [merge]\tAttempt to re-use an existing DOM tree rooted at `merge`\n *\t@public\n *\n *\t@example\n *\t// render a div into <body>:\n *\trender(<div id=\"hello\">hello!</div>, document.body);\n *\n *\t@example\n *\t// render a \"Thing\" component into #foo:\n *\tconst Thing = ({ name }) => <span>{ name }</span>;\n *\trender(<Thing name=\"one\" />, document.querySelector('#foo'));\n */\nexport function render(vnode, parent, merge) {\n\treturn diff(merge, vnode, {}, false, parent);\n}\n"],"names":[],"mappings":"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"}
\No newline at end of file