1 line
85 KiB
Plaintext
1 line
85 KiB
Plaintext
{"version":3,"file":"omi.dev.js","sources":["../src/vnode.js","../src/options.js","../src/h.js","../src/util.js","../src/clone-element.js","../src/constants.js","../src/render-queue.js","../src/vdom/index.js","../src/dom/index.js","../src/vdom/diff.js","../src/vdom/component-recycler.js","../src/style.js","../src/vdom/component.js","../src/component.js","../src/render.js","../src/omi.js","../src/omi.js"],"sourcesContent":["/** Virtual DOM Node */\r\nexport function VNode() {}\r\n","function getGlobal() {\r\n\tif (typeof global !== 'object' || !global || global.Math !== Math || global.Array !== Array) {\r\n\t\tif (typeof self !== 'undefined') {\r\n\t\t\treturn self;\r\n\t\t} else if (typeof window !== 'undefined') {\r\n\t\t\treturn window;\r\n\t\t} else if (typeof global !== 'undefined') {\r\n\t\t\treturn global;\r\n\t\t}\r\n\t\treturn (function(){\r\n\t\t\treturn this;\r\n\t\t})();\r\n\t\t\r\n\t}\r\n\treturn global;\r\n}\r\n\r\n/** Global options\r\n *\t@public\r\n *\t@namespace options {Object}\r\n */\r\nexport default {\r\n\r\n\tscopedStyle: true,\r\n\t$store: null,\r\n\tisWeb: true,\r\n\tstaticStyleRendered: false,\r\n\tdoc: typeof document === 'object' ? document : null,\r\n\troot: getGlobal(),\r\n\t//styleCache :[{ctor:ctor,ctorName:ctorName,style:style}]\r\n\tstyleCache: []\r\n\t//componentChange(component, element) { },\r\n\t/** If `true`, `prop` changes trigger synchronous component updates.\r\n\t *\t@name syncComponentUpdates\r\n\t *\t@type Boolean\r\n\t *\t@default true\r\n\t */\r\n\t//syncComponentUpdates: true,\r\n\r\n\t/** Processes all created VNodes.\r\n\t *\t@param {VNode} vnode\tA newly-created VNode to normalize/process\r\n\t */\r\n\t//vnode(vnode) { }\r\n\r\n\t/** Hook invoked after a component is mounted. */\r\n\t//afterMount(component) { },\r\n\r\n\t/** Hook invoked after the DOM is updated with a component's latest render. */\r\n\t//afterUpdate(component) { }\r\n\r\n\t/** Hook invoked immediately before a component is unmounted. */\r\n\t// beforeUnmount(component) { }\r\n};\r\n","import { VNode } from './vnode';\r\nimport options from './options';\r\n\r\n\r\nconst stack = [];\r\n\r\nconst EMPTY_CHILDREN = [];\r\n\r\nconst map = {\r\n\t'br': 'view',\r\n\t'hr': 'view',\r\n\r\n\t'p': 'view',\r\n\t'h1': 'view',\r\n\t'h2': 'view',\r\n\t'h3': 'view',\r\n\t'h4': 'view',\r\n\t'h5': 'view',\r\n\t'h6': 'view',\r\n\t'abbr': 'view',\r\n\t'address': 'view',\r\n\t'b': 'view',\r\n\t'bdi': 'view',\r\n\t'bdo': 'view',\r\n\t'blockquote': 'view',\r\n\t'cite': 'view',\r\n\t'code': 'view',\r\n\t'del': 'view',\r\n\t'ins': 'view',\r\n\t'dfn': 'view',\r\n\t'em': 'view',\r\n\t'strong': 'view',\r\n\t'samp': 'view',\r\n\t'kbd': 'view',\r\n\t'var': 'view',\r\n\t'i': 'view',\r\n\t'mark': 'view',\r\n\t'pre': 'view',\r\n\t'q': 'view',\r\n\t'ruby': 'view',\r\n\t'rp': 'view',\r\n\t'rt': 'view',\r\n\t's': 'view',\r\n\t'small': 'view',\r\n\t'sub': 'view',\r\n\t'sup': 'view',\r\n\t'time': 'view',\r\n\t'u': 'view',\r\n\t'wbr': 'view',\r\n\r\n\t'form': 'form',\r\n\t'input': 'input',\r\n\t'textarea': 'textarea',\r\n\t'button': 'button',\r\n\t'select': 'picker',\r\n\t'option': 'view',\r\n\t'optgroup': 'view',\r\n\t'label': 'label',\r\n\t'fieldset': 'view',\r\n\t'datalist': 'picker',\r\n\t'legend': 'view',\r\n\t'output': 'view',\r\n\r\n\t'iframe': 'view',\r\n \r\n\t'img': 'image',\r\n\t'canvas': 'canvas',\r\n\t'figure': 'view',\r\n\t'figcaption': 'view',\r\n\r\n \r\n\t'audio': 'audio',\r\n\t'source': 'audio',\r\n\t'video': 'video',\r\n\t'track': 'video',\r\n \r\n\t'a': 'navigator',\r\n\t'nav': 'view',\r\n\t'link': 'navigator',\r\n\r\n\t'ul': 'view',\r\n\t'ol': 'view',\r\n\t'li': 'view',\r\n\t'dl': 'view',\r\n\t'dt': 'view',\r\n\t'dd': 'view',\r\n\t'menu': 'view',\r\n\t'command': 'view',\r\n\r\n\r\n\t'table': 'view',\r\n\t'caption': 'view',\r\n\t'th': 'view',\r\n\t'td': 'view',\r\n\t'tr': 'view',\r\n\t'thead': 'view',\r\n\t'tbody': 'view',\r\n\t'tfoot': 'view',\r\n\t'col': 'view',\r\n\t'colgroup': 'view',\r\n\r\n\r\n\t'div': 'view',\r\n\t'main': 'view',\r\n\t//'span': 'label',\r\n\t'span': 'text',\r\n\t'header': 'view',\r\n\t'footer': 'view',\r\n\t'section': 'view',\r\n\t'article': 'view',\r\n\t'aside': 'view',\r\n\t'details': 'view',\r\n\t'dialog': 'view',\r\n\t'summary': 'view',\r\n\r\n\t'progress': 'progress',\r\n\t'meter': 'progress',\r\n\t'head': 'view',\r\n\t'meta': 'view',\r\n\t'base': 'text',\r\n\t'map': 'map',\r\n\t'area': 'navigator',\r\n\r\n\t'script': 'view',\r\n\t'noscript': 'view',\r\n\t'embed': 'view',\r\n\t'object': 'view',\r\n\t'param': 'view',\r\n\r\n\t'view': 'view',\r\n\t'scroll-view': 'scroll-view',\r\n\t'swiper': 'swiper',\r\n\t'icon': 'icon',\r\n\t'text': 'text',\r\n\r\n\t\r\n\r\n\r\n\t'checkbox': 'checkbox',\r\n\t'radio': 'radio',\r\n\t'picker': 'picker',\r\n\t'picker-view': 'picker-view',\r\n\t'slider': 'slider',\r\n\t'switch': 'switch',\r\n\t'navigator': 'navigator',\r\n\t\r\n\t'image': 'image',\r\n\t'contact-button': 'contact-button',\r\n\t'block': 'block'\r\n};\r\n\r\n\r\n/**\r\n * JSX/hyperscript reviver.\r\n * @see http://jasonformat.com/wtf-is-jsx\r\n * Benchmarks: https://esbench.com/bench/57ee8f8e330ab09900a1a1a0\r\n *\r\n * Note: this is exported as both `h()` and `createElement()` for compatibility reasons.\r\n *\r\n * Creates a VNode (virtual DOM element). A tree of VNodes can be used as a lightweight representation\r\n * of the structure of a DOM tree. This structure can be realized by recursively comparing it against\r\n * the current _actual_ DOM structure, and applying only the differences.\r\n *\r\n * `h()`/`createElement()` accepts an element name, a list of attributes/props,\r\n * and optionally children to append to the element.\r\n *\r\n * @example The following DOM tree\r\n *\r\n * `<div id=\"foo\" name=\"bar\">Hello!</div>`\r\n *\r\n * can be constructed using this function as:\r\n *\r\n * `h('div', { id: 'foo', name : 'bar' }, 'Hello!');`\r\n *\r\n * @param {string} nodeName\tAn element name. Ex: `div`, `a`, `span`, etc.\r\n * @param {Object} attributes\tAny attributes/props to set on the created element.\r\n * @param rest\t\t\tAdditional arguments are taken to be children to append. Can be infinitely nested Arrays.\r\n *\r\n * @public\r\n */\r\nexport function h(nodeName, attributes) {\r\n\tlet children=EMPTY_CHILDREN, lastSimple, child, simple, i;\r\n\tfor (i=arguments.length; i-- > 2; ) {\r\n\t\tstack.push(arguments[i]);\r\n\t}\r\n\tif (attributes && attributes.children!=null) {\r\n\t\tif (!stack.length) stack.push(attributes.children);\r\n\t\tdelete attributes.children;\r\n\t}\r\n\twhile (stack.length) {\r\n\t\tif ((child = stack.pop()) && child.pop!==undefined) {\r\n\t\t\tfor (i=child.length; i--; ) stack.push(child[i]);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (typeof child==='boolean') child = null;\r\n\r\n\t\t\tif ((simple = typeof nodeName!=='function')) {\r\n\t\t\t\tif (child==null) child = '';\r\n\t\t\t\telse if (typeof child==='number') child = String(child);\r\n\t\t\t\telse if (typeof child!=='string') simple = false;\r\n\t\t\t}\r\n\r\n\t\t\tif (simple && lastSimple) {\r\n\t\t\t\tchildren[children.length-1] += child;\r\n\t\t\t}\r\n\t\t\telse if (children===EMPTY_CHILDREN) {\r\n\t\t\t\tchildren = [child];\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tchildren.push(child);\r\n\t\t\t}\r\n\r\n\t\t\tlastSimple = simple;\r\n\t\t}\r\n\t}\r\n\r\n\tlet p = new VNode();\r\n\tp.nodeName = options.isWeb?nodeName:map[nodeName];\r\n\tp.attributes = attributes == null ? undefined : attributes;\r\n\tif (children && typeof children[0] === 'string'&& !options.isWeb) {\r\n\t\tif (p.attributes) {\r\n\t\t\tp.attributes.value = children[0];\r\n\t\t} else {\r\n\t\t\tp.attributes = { value: children[0] };\r\n\t\t}\r\n\t} else {\r\n\t\tp.children = children;\r\n\t}\r\n\tp.key = attributes==null ? undefined : attributes.key;\r\n\r\n\t// if a \"vnode hook\" is defined, pass every created VNode to it\r\n\tif (options.vnode!==undefined) options.vnode(p);\r\n\r\n\treturn p;\r\n}\r\n","/**\r\n * Copy all properties from `props` onto `obj`.\r\n * @param {Object} obj\t\tObject onto which properties should be copied.\r\n * @param {Object} props\tObject from which to copy properties.\r\n * @returns obj\r\n * @private\r\n */\r\nexport function extend(obj, props) {\r\n\tfor (let i in props) obj[i] = props[i];\r\n\treturn obj;\r\n}\r\n\r\n/**\r\n * Call a function asynchronously, as soon as possible. Makes\r\n * use of HTML Promise to schedule the callback if available,\r\n * otherwise falling back to `setTimeout` (mainly for IE<11).\r\n *\r\n * @param {Function} callback\r\n */\r\n\r\nlet usePromise = typeof Promise == 'function';\r\n\r\n// for native\r\nif (typeof document !== 'object' && typeof global !== 'undefined' && global.__config__) {\r\n\tif (global.__config__.platform === 'android') {\r\n\t\tusePromise = true;\r\n\t} else {\r\n\t\tlet systemVersion = global.__config__.systemVersion && global.__config__.systemVersion.split('.')[0] || 0;\r\n\t\tif (systemVersion > 8) {\r\n\t\t\tusePromise = true;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport const defer = usePromise ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\r\n","import { extend } from './util';\r\nimport { h } from './h';\r\n\r\n/**\r\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\r\n * @param {VNode} vnode\t\tThe virtual DOM element to clone\r\n * @param {Object} props\tAttributes/props to add when cloning\r\n * @param {VNode} rest\t\tAny additional arguments will be used as replacement children.\r\n */\r\nexport function cloneElement(vnode, props) {\r\n\treturn h(\r\n\t\tvnode.nodeName,\r\n\t\textend(extend({}, vnode.attributes), props),\r\n\t\targuments.length>2 ? [].slice.call(arguments, 2) : vnode.children\r\n\t);\r\n}\r\n","// render modes\r\n\r\nexport const NO_RENDER = 0;\r\nexport const SYNC_RENDER = 1;\r\nexport const FORCE_RENDER = 2;\r\nexport const ASYNC_RENDER = 3;\r\n\r\n\r\nexport const ATTR_KEY = '__preactattr_';\r\n\r\n// DOM properties that should NOT have \"px\" added when numeric\r\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\r\n\r\n","import options from './options';\r\nimport { defer } from './util';\r\nimport { renderComponent } from './vdom/component';\r\n\r\n/** Managed queue of dirty components to be re-rendered */\r\n\r\nlet items = [];\r\n\r\nexport function enqueueRender(component) {\r\n\tif (items.push(component)==1) {\r\n\t\t(options.debounceRendering || defer)(rerender);\r\n\t}\r\n}\r\n\r\nexport function rerender() {\r\n\tlet p, list = items;\r\n\titems = [];\r\n\tlet element;\r\n\twhile ( (p = list.pop()) ) {\r\n\t\telement = p.base;\r\n\t\trenderComponent(p);\r\n\t}\r\n\tif (!list.length) {\r\n\t\tif (options.componentChange) options.componentChange(p, element);\r\n\t}\r\n}\r\n","import { extend } from '../util';\r\n\r\n\r\n/**\r\n * Check if two nodes are equivalent.\r\n *\r\n * @param {Node} node\t\t\tDOM Node to compare\r\n * @param {VNode} vnode\t\t\tVirtual DOM node to compare\r\n * @param {boolean} [hydrating=false]\tIf true, ignores component constructors when comparing.\r\n * @private\r\n */\r\nexport function isSameNodeType(node, vnode, hydrating) {\r\n\tif (typeof vnode==='string' || typeof vnode==='number') {\r\n\t\treturn node.splitText!==undefined;\r\n\t}\r\n\tif (typeof vnode.nodeName==='string') {\r\n\t\treturn !node._componentConstructor && isNamedNode(node, vnode.nodeName);\r\n\t}\r\n\treturn hydrating || node._componentConstructor===vnode.nodeName;\r\n}\r\n\r\n\r\n/**\r\n * Check if an Element has a given nodeName, case-insensitively.\r\n *\r\n * @param {Element} node\tA DOM Element to inspect the name of.\r\n * @param {String} nodeName\tUnnormalized name to compare against.\r\n */\r\nexport function isNamedNode(node, nodeName) {\r\n\treturn node.normalizedNodeName===nodeName || node.nodeName.toLowerCase()===nodeName.toLowerCase();\r\n}\r\n\r\n\r\n/**\r\n * Reconstruct Component-style `props` from a VNode.\r\n * Ensures default/fallback values from `defaultProps`:\r\n * Own-properties of `defaultProps` not present in `vnode.attributes` are added.\r\n *\r\n * @param {VNode} vnode\r\n * @returns {Object} props\r\n */\r\nexport function getNodeProps(vnode) {\r\n\tlet props = extend({}, vnode.attributes);\r\n\tprops.children = vnode.children;\r\n\r\n\tlet defaultProps = vnode.nodeName.defaultProps;\r\n\tif (defaultProps!==undefined) {\r\n\t\tfor (let i in defaultProps) {\r\n\t\t\tif (props[i]===undefined) {\r\n\t\t\t\tprops[i] = defaultProps[i];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn props;\r\n}\r\n","import { IS_NON_DIMENSIONAL } from '../constants';\r\nimport options from '../options';\r\n\r\n\r\n/** Create an element with the given nodeName.\r\n *\t@param {String} nodeName\r\n *\t@param {Boolean} [isSvg=false]\tIf `true`, creates an element within the SVG namespace.\r\n *\t@returns {Element} node\r\n */\r\nexport function createNode(nodeName, isSvg) {\r\n\tlet node = isSvg ? options.doc.createElementNS('http://www.w3.org/2000/svg', nodeName) : options.doc.createElement(nodeName);\r\n\tnode.normalizedNodeName = nodeName;\r\n\treturn node;\r\n}\r\n\r\nfunction parseCSSText(cssText) {\r\n\tlet cssTxt = cssText.replace(/\\/\\*(.|\\s)*?\\*\\//g, \" \").replace(/\\s+/g, \" \");\r\n\tlet style = {}, [a,b,rule] = cssTxt.match(/ ?(.*?) ?{([^}]*)}/)||[a,b,cssTxt];\r\n\tlet cssToJs = s => s.replace(/\\W+\\w/g, match => match.slice(-1).toUpperCase());\r\n\tlet properties = rule.split(\";\").map(o => o.split(\":\").map(x => x && x.trim()));\r\n\tfor (let [property, value] of properties) style[cssToJs(property)] = value;\r\n\treturn style;\r\n}\r\n\r\n/** Remove a child node from its parent if attached.\r\n *\t@param {Element} node\t\tThe node to remove\r\n */\r\nexport function removeNode(node) {\r\n\tlet parentNode = node.parentNode;\r\n\tif (parentNode) parentNode.removeChild(node);\r\n}\r\n\r\n\r\n/** Set a named attribute on the given Node, with special behavior for some names and event handlers.\r\n *\tIf `value` is `null`, the attribute/handler will be removed.\r\n *\t@param {Element} node\tAn element to mutate\r\n *\t@param {string} name\tThe name/key to set, such as an event or attribute name\r\n *\t@param {any} old\tThe last value that was set for this name/node pair\r\n *\t@param {any} value\tAn attribute value, such as a function to be used as an event handler\r\n *\t@param {Boolean} isSvg\tAre we currently diffing inside an svg?\r\n *\t@private\r\n */\r\nexport function setAccessor(node, name, old, value, isSvg) {\r\n\tif (name==='className') name = 'class';\r\n\r\n\r\n\tif (name==='key') {\r\n\t\t// ignore\r\n\t}\r\n\telse if (name==='ref') {\r\n\t\tif (old) old(null);\r\n\t\tif (value) value(node);\r\n\t}\r\n\telse if (name==='class' && !isSvg) {\r\n\t\tnode.className = value || '';\r\n\t}\r\n\telse if (name==='style') {\r\n\t\tif (options.isWeb) {\r\n\t\t\tif (!value || typeof value==='string' || typeof old==='string') {\r\n\t\t\t\tnode.style.cssText = value || '';\r\n\t\t\t}\r\n\t\t\tif (value && typeof value==='object') {\r\n\t\t\t\tif (typeof old!=='string') {\r\n\t\t\t\t\tfor (let i in old) if (!(i in value)) node.style[i] = '';\r\n\t\t\t\t}\r\n\t\t\t\tfor (let i in value) {\r\n\t\t\t\t\tnode.style[i] = typeof value[i]==='number' && IS_NON_DIMENSIONAL.test(i)===false ? (value[i]+'px') : value[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlet oldJson = old,\r\n\t\t\t\tcurrentJson = value;\r\n\t\t\tif (typeof old === 'string') {\r\n\t\t\t\toldJson = parseCSSText(old);\r\n\t\t\t}\r\n\t\t\tif (typeof value == 'string') {\r\n\t\t\t\tcurrentJson = parseCSSText(value);\r\n\t\t\t}\r\n\t\t\r\n\t\t\tlet result = {},\r\n\t\t\t\tchanged = false;\r\n\t\t\r\n\t\t\tif (oldJson) {\r\n\t\t\t\tfor (let key in oldJson) {\r\n\t\t\t\t\tif (typeof currentJson == 'object' && !(key in currentJson)) {\r\n\t\t\t\t\t\tresult[key] = '';\r\n\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\r\n\t\t\t\tfor (let ckey in currentJson) {\r\n\t\t\t\t\tif (currentJson[ckey] !== oldJson[ckey]) {\r\n\t\t\t\t\t\tresult[ckey] = currentJson[ckey];\r\n\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t}\r\n\t\t\r\n\t\t\t\t}\r\n\t\t\r\n\t\t\t\tif (changed) {\r\n\t\t\t\t\tnode.setStyles(result);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnode.setStyles(currentJson);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\telse if (name==='dangerouslySetInnerHTML') {\r\n\t\tif (value) node.innerHTML = value.__html || '';\r\n\t}\r\n\telse if (name[0]=='o' && name[1]=='n') {\r\n\t\tlet useCapture = name !== (name=name.replace(/Capture$/, ''));\r\n\t\tname = name.toLowerCase().substring(2);\r\n\t\tif (value) {\r\n\t\t\tif (!old) node.addEventListener(name, eventProxy, useCapture);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tnode.removeEventListener(name, eventProxy, useCapture);\r\n\t\t}\r\n\t\t(node._listeners || (node._listeners = {}))[name] = value;\r\n\t}\r\n\telse if (name!=='list' && name!=='type' && !isSvg && name in node) {\r\n\t\tsetProperty(node, name, value==null ? '' : value);\r\n\t\tif (value==null || value===false) node.removeAttribute(name);\r\n\t}\r\n\telse {\r\n\t\tlet ns = isSvg && (name !== (name = name.replace(/^xlink:?/, '')));\r\n\t\tif (value==null || value===false) {\r\n\t\t\tif (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());\r\n\t\t\telse node.removeAttribute(name);\r\n\t\t}\r\n\t\telse if (typeof value!=='function') {\r\n\t\t\tif (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);\r\n\t\t\telse node.setAttribute(name, value);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n\r\n/** Attempt to set a DOM property to the given value.\r\n *\tIE & FF throw for certain property-value combinations.\r\n */\r\nfunction setProperty(node, name, value) {\r\n\ttry {\r\n\t\tnode[name] = value;\r\n\t} catch (e) { }\r\n}\r\n\r\n\r\n/** Proxy an event to hooked event handlers\r\n *\t@private\r\n */\r\nfunction eventProxy(e) {\r\n\treturn this._listeners[e.type](options.event && options.event(e) || e);\r\n}\r\n","import { ATTR_KEY } from '../constants';\r\nimport { isSameNodeType, isNamedNode } from './index';\r\nimport { buildComponentFromVNode } from './component';\r\nimport { createNode, setAccessor } from '../dom/index';\r\nimport { unmountComponent } from './component';\r\nimport options from '../options';\r\nimport { removeNode } from '../dom/index';\r\n\r\n/** Queue of components that have been mounted and are awaiting componentDidMount */\r\nexport const mounts = [];\r\n\r\n/** Diff recursion count, used to track the end of the diff cycle. */\r\nexport let diffLevel = 0;\r\n\r\n/** Global flag indicating if the diff is currently within an SVG */\r\nlet isSvgMode = false;\r\n\r\n/** Global flag indicating if the diff is performing hydration */\r\nlet hydrating = false;\r\n\r\n/** Invoke queued componentDidMount lifecycle methods */\r\nexport function flushMounts() {\r\n\tlet c;\r\n\twhile ((c=mounts.pop())) {\r\n\t\tif (options.afterMount) options.afterMount(c);\r\n\t\tif (c.componentDidMount) c.componentDidMount();\r\n\t\tif (c.installed) c.installed();\r\n\t}\r\n}\r\n\r\n\r\n/** Apply differences in a given vnode (and it's deep children) to a real DOM Node.\r\n *\t@param {Element} [dom=null]\t\tA DOM node to mutate into the shape of the `vnode`\r\n *\t@param {VNode} vnode\t\t\tA VNode (with descendants forming a tree) representing the desired DOM structure\r\n *\t@returns {Element} dom\t\t\tThe created/mutated element\r\n *\t@private\r\n */\r\nexport function diff(dom, vnode, context, mountAll, parent, componentRoot) {\r\n\t// diffLevel having been 0 here indicates initial entry into the diff (not a subdiff)\r\n\tif (!diffLevel++) {\r\n\t\t// when first starting the diff, check if we're diffing an SVG or within an SVG\r\n\t\tisSvgMode = parent!=null && parent.ownerSVGElement!==undefined;\r\n\r\n\t\t// hydration is indicated by the existing element to be diffed not having a prop cache\r\n\t\thydrating = dom!=null && !(ATTR_KEY in dom);\r\n\t}\r\n\r\n\tlet ret = idiff(dom, vnode, context, mountAll, componentRoot);\r\n\r\n\t// append the element if its a new parent\r\n\tif (parent && ret.parentNode!==parent) parent.appendChild(ret);\r\n\r\n\t// diffLevel being reduced to 0 means we're exiting the diff\r\n\tif (!--diffLevel) {\r\n\t\thydrating = false;\r\n\t\t// invoke queued componentDidMount lifecycle methods\r\n\t\tif (!componentRoot) flushMounts();\r\n\t}\r\n\r\n\treturn ret;\r\n}\r\n\r\n\r\n/** Internals of `diff()`, separated to allow bypassing diffLevel / mount flushing. */\r\nfunction idiff(dom, vnode, context, mountAll, componentRoot) {\r\n\tlet out = dom,\r\n\t\tprevSvgMode = isSvgMode;\r\n\r\n\t// empty values (null, undefined, booleans) render as empty Text nodes\r\n\tif (vnode==null || typeof vnode==='boolean') vnode = '';\r\n\r\n\r\n\t// Fast case: Strings & Numbers create/update Text nodes.\r\n\tif (typeof vnode==='string' || typeof vnode==='number') {\r\n\r\n\t\t// update if it's already a Text node:\r\n\t\tif (dom && dom.splitText!==undefined && dom.parentNode && (!dom._component || componentRoot)) {\r\n\t\t\t/* istanbul ignore if */ /* Browser quirk that can't be covered: https://github.com/developit/preact/commit/fd4f21f5c45dfd75151bd27b4c217d8003aa5eb9 */\r\n\t\t\tif (dom.nodeValue!=vnode) {\r\n\t\t\t\tdom.nodeValue = vnode;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// it wasn't a Text node: replace it with one and recycle the old Element\r\n\t\t\tout = document.createTextNode(vnode);\r\n\t\t\tif (dom) {\r\n\t\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\r\n\t\t\t\trecollectNodeTree(dom, true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tout[ATTR_KEY] = true;\r\n\r\n\t\treturn out;\r\n\t}\r\n\r\n\r\n\t// If the VNode represents a Component, perform a component diff:\r\n\tlet vnodeName = vnode.nodeName;\r\n\tif (typeof vnodeName==='function') {\r\n\t\treturn buildComponentFromVNode(dom, vnode, context, mountAll);\r\n\t}\r\n\r\n\r\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\r\n\tisSvgMode = vnodeName==='svg' ? true : vnodeName==='foreignObject' ? false : isSvgMode;\r\n\r\n\r\n\t// If there's no existing element or it's the wrong type, create a new one:\r\n\tvnodeName = String(vnodeName);\r\n\tif (!dom || !isNamedNode(dom, vnodeName)) {\r\n\t\tout = createNode(vnodeName, isSvgMode);\r\n\r\n\t\tif (dom) {\r\n\t\t\t// move children into the replacement node\r\n\t\t\twhile (dom.firstChild) out.appendChild(dom.firstChild);\r\n\r\n\t\t\t// if the previous Element was mounted into the DOM, replace it inline\r\n\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\r\n\r\n\t\t\t// recycle the old element (skips non-Element node types)\r\n\t\t\trecollectNodeTree(dom, true);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tlet fc = out.firstChild,\r\n\t\tprops = out[ATTR_KEY],\r\n\t\tvchildren = vnode.children;\r\n\r\n\tif (props==null) {\r\n\t\tprops = out[ATTR_KEY] = {};\r\n\t\tfor (let a=out.attributes, i=a.length; i--; ) props[a[i].name] = a[i].value;\r\n\t}\r\n\r\n\t// Optimization: fast-path for elements containing a single TextNode:\r\n\tif (!hydrating && vchildren && vchildren.length===1 && typeof vchildren[0]==='string' && fc!=null && fc.splitText!==undefined && fc.nextSibling==null) {\r\n\t\tif (fc.nodeValue!=vchildren[0]) {\r\n\t\t\tfc.nodeValue = vchildren[0];\r\n\t\t}\r\n\t}\r\n\t// otherwise, if there are existing or new children, diff them:\r\n\telse if (vchildren && vchildren.length || fc!=null) {\r\n\t\tinnerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML!=null);\r\n\t}\r\n\r\n\r\n\t// Apply attributes/props from VNode to the DOM Element:\r\n\tdiffAttributes(out, vnode.attributes, props);\r\n\r\n\r\n\t// restore previous SVG mode: (in case we're exiting an SVG namespace)\r\n\tisSvgMode = prevSvgMode;\r\n\r\n\treturn out;\r\n}\r\n\r\n\r\n/** Apply child and attribute changes between a VNode and a DOM Node to the DOM.\r\n *\t@param {Element} dom\t\t\tElement whose children should be compared & mutated\r\n *\t@param {Array} vchildren\t\tArray of VNodes to compare to `dom.childNodes`\r\n *\t@param {Object} context\t\t\tImplicitly descendant context object (from most recent `getChildContext()`)\r\n *\t@param {Boolean} mountAll\r\n *\t@param {Boolean} isHydrating\tIf `true`, consumes externally created elements similar to hydration\r\n */\r\nfunction innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\r\n\tlet originalChildren = dom.childNodes,\r\n\t\tchildren = [],\r\n\t\tkeyed = {},\r\n\t\tkeyedLen = 0,\r\n\t\tmin = 0,\r\n\t\tlen = originalChildren.length,\r\n\t\tchildrenLen = 0,\r\n\t\tvlen = vchildren ? vchildren.length : 0,\r\n\t\tj, c, f, vchild, child;\r\n\r\n\t// Build up a map of keyed children and an Array of unkeyed children:\r\n\tif (len!==0) {\r\n\t\tfor (let i=0; i<len; i++) {\r\n\t\t\tlet child = originalChildren[i],\r\n\t\t\t\tprops = child[ATTR_KEY],\r\n\t\t\t\tkey = vlen && props ? child._component ? child._component.__key : props.key : null;\r\n\t\t\tif (key!=null) {\r\n\t\t\t\tkeyedLen++;\r\n\t\t\t\tkeyed[key] = child;\r\n\t\t\t}\r\n\t\t\telse if (props || (child.splitText!==undefined ? (isHydrating ? child.nodeValue.trim() : true) : isHydrating)) {\r\n\t\t\t\tchildren[childrenLen++] = child;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (vlen!==0) {\r\n\t\tfor (let i=0; i<vlen; i++) {\r\n\t\t\tvchild = vchildren[i];\r\n\t\t\tchild = null;\r\n\r\n\t\t\t// attempt to find a node based on key matching\r\n\t\t\tlet key = vchild.key;\r\n\t\t\tif (key!=null) {\r\n\t\t\t\tif (keyedLen && keyed[key]!==undefined) {\r\n\t\t\t\t\tchild = keyed[key];\r\n\t\t\t\t\tkeyed[key] = undefined;\r\n\t\t\t\t\tkeyedLen--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// attempt to pluck a node of the same type from the existing children\r\n\t\t\telse if (!child && min<childrenLen) {\r\n\t\t\t\tfor (j=min; j<childrenLen; j++) {\r\n\t\t\t\t\tif (children[j]!==undefined && isSameNodeType(c = children[j], vchild, isHydrating)) {\r\n\t\t\t\t\t\tchild = c;\r\n\t\t\t\t\t\tchildren[j] = undefined;\r\n\t\t\t\t\t\tif (j===childrenLen-1) childrenLen--;\r\n\t\t\t\t\t\tif (j===min) min++;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// morph the matched/found/created DOM child to match vchild (deep)\r\n\t\t\tchild = idiff(child, vchild, context, mountAll);\r\n\r\n\t\t\tf = originalChildren[i];\r\n\t\t\tif (child && child!==dom && child!==f) {\r\n\t\t\t\tif (f==null) {\r\n\t\t\t\t\tdom.appendChild(child);\r\n\t\t\t\t}\r\n\t\t\t\telse if (child===f.nextSibling) {\r\n\t\t\t\t\tremoveNode(f);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tdom.insertBefore(child, f);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t// remove unused keyed children:\r\n\tif (keyedLen) {\r\n\t\tfor (let i in keyed) if (keyed[i]!==undefined) recollectNodeTree(keyed[i], false);\r\n\t}\r\n\r\n\t// remove orphaned unkeyed children:\r\n\twhile (min<=childrenLen) {\r\n\t\tif ((child = children[childrenLen--])!==undefined) recollectNodeTree(child, false);\r\n\t}\r\n}\r\n\r\n\r\n\r\n/** Recursively recycle (or just unmount) a node and its descendants.\r\n *\t@param {Node} node\t\t\t\t\t\tDOM node to start unmount/removal from\r\n *\t@param {Boolean} [unmountOnly=false]\tIf `true`, only triggers unmount lifecycle, skips removal\r\n */\r\nexport function recollectNodeTree(node, unmountOnly) {\r\n\tlet component = node._component;\r\n\tif (component) {\r\n\t\t// if node is owned by a Component, unmount that component (ends up recursing back here)\r\n\t\tunmountComponent(component);\r\n\t}\r\n\telse {\r\n\t\t// If the node's VNode had a ref function, invoke it with null here.\r\n\t\t// (this is part of the React spec, and smart for unsetting references)\r\n\t\tif (node[ATTR_KEY]!=null && node[ATTR_KEY].ref) node[ATTR_KEY].ref(null);\r\n\r\n\t\tif (unmountOnly===false || node[ATTR_KEY]==null) {\r\n\t\t\tremoveNode(node);\r\n\t\t}\r\n\r\n\t\tremoveChildren(node);\r\n\t}\r\n}\r\n\r\n\r\n/** Recollect/unmount all children.\r\n *\t- we use .lastChild here because it causes less reflow than .firstChild\r\n *\t- it's also cheaper than accessing the .childNodes Live NodeList\r\n */\r\nexport function removeChildren(node) {\r\n\tnode = node.lastChild;\r\n\twhile (node) {\r\n\t\tlet next = node.previousSibling;\r\n\t\trecollectNodeTree(node, true);\r\n\t\tnode = next;\r\n\t}\r\n}\r\n\r\n\r\n/** Apply differences in attributes from a VNode to the given DOM Element.\r\n *\t@param {Element} dom\t\tElement with attributes to diff `attrs` against\r\n *\t@param {Object} attrs\t\tThe desired end-state key-value attribute pairs\r\n *\t@param {Object} old\t\t\tCurrent/previous attributes (from previous VNode or element's prop cache)\r\n */\r\nfunction diffAttributes(dom, attrs, old) {\r\n\tlet name;\r\n\r\n\t// remove attributes no longer present on the vnode by setting them to undefined\r\n\tfor (name in old) {\r\n\t\tif (!(attrs && attrs[name]!=null) && old[name]!=null) {\r\n\t\t\tsetAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);\r\n\t\t}\r\n\t}\r\n\r\n\t// add new & update changed attributes\r\n\tfor (name in attrs) {\r\n\t\tif (name!=='children' && name!=='innerHTML' && (!(name in old) || attrs[name]!==(name==='value' || name==='checked' ? dom[name] : old[name]))) {\r\n\t\t\tsetAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component } from '../component';\r\nimport options from '../options';\r\n/** Retains a pool of Components for re-use, keyed on component name.\r\n *\tNote: since component names are not unique or even necessarily available, these are primarily a form of sharding.\r\n *\t@private\r\n */\r\nconst components = {};\r\n\r\n\r\n/** Reclaim a component for later re-use by the recycler. */\r\nexport function collectComponent(component) {\r\n\tlet name = component.constructor.name;\r\n\t(components[name] || (components[name] = [])).push(component);\r\n}\r\n\r\n/** Create a component. Normalizes differences between PFC's and classful Components. */\r\nexport function createComponent(Ctor, props, context) {\r\n\tlet list = components[Ctor.name],\r\n\t\tinst;\r\n\r\n\tif (Ctor.prototype && Ctor.prototype.render) {\r\n\t\tinst = new Ctor(props, context);\r\n\t\tComponent.call(inst, props, context);\r\n\t}\r\n\telse {\r\n\t\tinst = new Component(props, context);\r\n\t\tinst.constructor = Ctor;\r\n\t\tinst.render = doRender;\r\n\t}\r\n\tinst.$store = options.$store;\r\n\tif (window && window.Omi){\r\n\t\twindow.Omi.instances.push(inst);\r\n\t}\r\n\r\n\tif (list) {\r\n\t\tfor (let i=list.length; i--; ) {\r\n\t\t\tif (list[i].constructor===Ctor) {\r\n\t\t\t\tinst.nextBase = list[i].nextBase;\r\n\t\t\t\tlist.splice(i, 1);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn inst;\r\n}\r\n\r\n\r\n/** The `.render()` method for a PFC backing instance. */\r\nfunction doRender(props, state, context) {\r\n\treturn this.constructor(props, context);\r\n}\r\n","import options from './options';\r\n\r\nlet styleId = 0;\r\n\r\nexport function getCtorName(ctor) {\r\n\r\n\tfor (let i = 0, len = options.styleCache.length; i < len; i++) {\r\n\t\tlet item = options.styleCache[i];\r\n\r\n\t\tif (item.ctor === ctor) {\r\n\t\t\treturn item.attrName;\r\n\t\t}\r\n\t}\r\n\r\n\tlet attrName = 'static_' + styleId;\r\n\toptions.styleCache.push({ ctor, attrName });\r\n\tstyleId++;\r\n\r\n\treturn attrName;\r\n}\r\n\r\n// many thanks to https://github.com/thomaspark/scoper/\r\nexport function scoper(css, prefix) {\r\n\tprefix = '['+prefix.toLowerCase()+']';\r\n\t// https://www.w3.org/TR/css-syntax-3/#lexical\r\n\tcss = css.replace(/\\/\\*[^*]*\\*+([^/][^*]*\\*+)*\\//g, '');\r\n\t// eslint-disable-next-line\r\n let re = new RegExp('([^\\r\\n,{}:]+)(:[^\\r\\n,{}]+)?(,(?=[^{}]*{)|\\s*{)', 'g')\r\n\t/**\r\n * Example:\r\n *\r\n * .classname::pesudo { color:red }\r\n *\r\n * g1 is normal selector `.classname`\r\n * g2 is pesudo class or pesudo element\r\n * g3 is the suffix\r\n */\r\n\tcss = css.replace(re, (g0, g1, g2, g3) => {\r\n\t\tif (typeof g2 === 'undefined') {\r\n\t\t\tg2 = '';\r\n\t\t}\r\n\r\n\t\t/* eslint-ignore-next-line */\r\n\t\tif (g1.match(/^\\s*(@media|\\d+%?|@-webkit-keyframes|@keyframes|to|from|@font-face)/)) {\r\n\t\t\treturn g1 + g2 + g3;\r\n\t\t}\r\n\r\n\t\tlet appendClass = g1.replace(/(\\s*)$/, '') + prefix + g2;\r\n\t\t//let prependClass = prefix + ' ' + g1.trim() + g2;\r\n\r\n\t\treturn appendClass + g3;\r\n\t\t//return appendClass + ',' + prependClass + g3;\r\n\t});\r\n\r\n\treturn css;\r\n}\r\n\r\nexport function addStyle(cssText, id) {\r\n\tid = id.toLowerCase();\r\n\tlet ele = document.getElementById(id);\r\n\tlet head = document.getElementsByTagName('head')[0];\r\n\tif (ele && ele.parentNode === head) {\r\n\t\thead.removeChild(ele);\r\n\t}\r\n\r\n\tlet someThingStyles = document.createElement('style');\r\n\thead.appendChild(someThingStyles);\r\n\tsomeThingStyles.setAttribute('type', 'text/css');\r\n\tsomeThingStyles.setAttribute('id', id);\r\n\tif (window.ActiveXObject) {\r\n\t\tsomeThingStyles.styleSheet.cssText = cssText;\r\n\t} else {\r\n\t\tsomeThingStyles.textContent = cssText;\r\n\t}\r\n}\r\n\r\nexport function addStyleWithoutId(cssText) {\r\n\tlet head = document.getElementsByTagName('head')[0];\r\n\tlet someThingStyles = document.createElement('style');\r\n\thead.appendChild(someThingStyles);\r\n\tsomeThingStyles.setAttribute('type', 'text/css');\r\n\r\n\tif (window.ActiveXObject) {\r\n\t\tsomeThingStyles.styleSheet.cssText = cssText;\r\n\t} else {\r\n\t\tsomeThingStyles.textContent = cssText;\r\n\t}\r\n}\r\n\r\n\r\nexport function addScopedAttr(vdom, style, attr, component) {\r\n\tif (options.scopedStyle) {\r\n\t\tscopeVdom(attr, vdom);\r\n\t\tstyle = scoper(style, attr);\r\n\t\tif (style !== component._preStyle) {\r\n\t\t\taddStyle(style, attr);\r\n\t\t}\r\n\t} else if (style !== component._preStyle) {\r\n\t\taddStyleWithoutId(style);\r\n\t}\r\n\tcomponent._preStyle = style;\r\n}\r\n\r\nexport function addScopedAttrStatic(vdom, style, attr) {\r\n\tif (options.scopedStyle) {\r\n\t\tscopeVdom(attr, vdom);\r\n\t\tif (!options.staticStyleRendered) {\r\n\t\t\taddStyle(scoper(style, attr), attr);\r\n\t\t}\r\n\t} else if (!options.staticStyleRendered) {\r\n\t\taddStyleWithoutId(style);\r\n\t}\r\n}\r\n\r\nexport function scopeVdom(attr,vdom){\r\n\tif (typeof vdom!== 'string'){\r\n\t\tvdom.attributes = vdom.attributes||{};\r\n\t\tvdom.attributes[attr] = '';\r\n\t\tvdom.children.forEach(child=>scopeVdom(attr,child));\r\n\t}\r\n}","import { SYNC_RENDER, NO_RENDER, FORCE_RENDER, ASYNC_RENDER, ATTR_KEY } from '../constants';\r\nimport options from '../options';\r\nimport { extend } from '../util';\r\nimport { enqueueRender } from '../render-queue';\r\nimport { getNodeProps } from './index';\r\nimport { diff, mounts, diffLevel, flushMounts, recollectNodeTree, removeChildren } from './diff';\r\nimport { createComponent, collectComponent } from './component-recycler';\r\nimport { removeNode } from '../dom/index';\r\nimport {addScopedAttr, addScopedAttrStatic, getCtorName} from '../style';\r\n\r\n/** Set a component's `props` (generally derived from JSX attributes).\r\n *\t@param {Object} props\r\n *\t@param {Object} [opts]\r\n *\t@param {boolean} [opts.renderSync=false]\tIf `true` and {@link options.syncComponentUpdates} is `true`, triggers synchronous rendering.\r\n *\t@param {boolean} [opts.render=true]\t\t\tIf `false`, no render will be triggered.\r\n */\r\nexport function setComponentProps(component, props, opts, context, mountAll) {\r\n\tif (component._disable) return;\r\n\tcomponent._disable = true;\r\n\r\n\tif ((component.__ref = props.ref)) delete props.ref;\r\n\tif ((component.__key = props.key)) delete props.key;\r\n\r\n\tif (!component.base || mountAll) {\r\n\t\tif (component.componentWillMount) component.componentWillMount();\r\n\t\tif (component.install) component.install();\r\n\t}\r\n\telse if (component.componentWillReceiveProps) {\r\n\t\tcomponent.componentWillReceiveProps(props, context);\r\n\t}\r\n\r\n\tif (context && context!==component.context) {\r\n\t\tif (!component.prevContext) component.prevContext = component.context;\r\n\t\tcomponent.context = context;\r\n\t}\r\n\r\n\tif (!component.prevProps) component.prevProps = component.props;\r\n\tcomponent.props = props;\r\n\r\n\tcomponent._disable = false;\r\n\r\n\tif (opts!==NO_RENDER) {\r\n\t\tif (opts===SYNC_RENDER || options.syncComponentUpdates!==false || !component.base) {\r\n\t\t\trenderComponent(component, SYNC_RENDER, mountAll);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tenqueueRender(component);\r\n\t\t}\r\n\t}\r\n\r\n\tif (component.__ref) component.__ref(component);\r\n}\r\n\r\n/** Render a Component, triggering necessary lifecycle events and taking High-Order Components into account.\r\n *\t@param {Component} component\r\n *\t@param {Object} [opts]\r\n *\t@param {boolean} [opts.build=false]\t\tIf `true`, component will build and store a DOM node if not already associated with one.\r\n *\t@private\r\n */\r\nexport function renderComponent(component, opts, mountAll, isChild) {\r\n\tif (component._disable) return;\r\n\r\n\tlet props = component.props,\r\n\t\tstate = component.state,\r\n\t\tcontext = component.context,\r\n\t\tpreviousProps = component.prevProps || props,\r\n\t\tpreviousState = component.prevState || state,\r\n\t\tpreviousContext = component.prevContext || context,\r\n\t\tisUpdate = component.base,\r\n\t\tnextBase = component.nextBase,\r\n\t\tinitialBase = isUpdate || nextBase,\r\n\t\tinitialChildComponent = component._component,\r\n\t\tskip = false,\r\n\t\trendered, inst, cbase;\r\n\r\n\t// if updating\r\n\tif (isUpdate) {\r\n\t\tcomponent.props = previousProps;\r\n\t\tcomponent.state = previousState;\r\n\t\tcomponent.context = previousContext;\r\n\t\tif (opts!==FORCE_RENDER\r\n\t\t\t&& component.shouldComponentUpdate\r\n\t\t\t&& component.shouldComponentUpdate(props, state, context) === false) {\r\n\t\t\tskip = true;\r\n\t\t}\r\n\t\telse if (component.componentWillUpdate) {\r\n\t\t\tcomponent.componentWillUpdate(props, state, context);\r\n\t\t}\r\n\t\telse if (component.beforeUpdate) {\r\n\t\t\tcomponent.beforeUpdate(props, state, context);\r\n\t\t}\r\n\t\tcomponent.props = props;\r\n\t\tcomponent.state = state;\r\n\t\tcomponent.context = context;\r\n\t}\r\n\r\n\tcomponent.prevProps = component.prevState = component.prevContext = component.nextBase = null;\r\n\r\n\tif (!skip) {\r\n\t\trendered = component.render(props, state, context);\r\n\t\r\n\t\t//don't rerender\r\n\t\tif (component.staticStyle){\r\n\t\t\taddScopedAttrStatic(rendered,component.staticStyle(),'_style_' + getCtorName(component.constructor));\r\n\r\n\t\t}\r\n\r\n\t\tif (component.style){\r\n\t\t\taddScopedAttr(rendered,component.style(),'_style_'+component._id,component);\r\n\t\t}\r\n\r\n\t\t// context to pass to the child, can be updated via (grand-)parent component\r\n\t\tif (component.getChildContext) {\r\n\t\t\tcontext = extend(extend({}, context), component.getChildContext());\r\n\t\t}\r\n\r\n\t\tlet childComponent = rendered && rendered.nodeName,\r\n\t\t\ttoUnmount, base;\r\n\r\n\t\tif (typeof childComponent==='function') {\r\n\t\t\t// set up high order component link\r\n\r\n\t\t\tlet childProps = getNodeProps(rendered);\r\n\t\t\tinst = initialChildComponent;\r\n\r\n\t\t\tif (inst && inst.constructor===childComponent && childProps.key==inst.__key) {\r\n\t\t\t\tsetComponentProps(inst, childProps, SYNC_RENDER, context, false);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\ttoUnmount = inst;\r\n\r\n\t\t\t\tcomponent._component = inst = createComponent(childComponent, childProps, context);\r\n\t\t\t\tinst.nextBase = inst.nextBase || nextBase;\r\n\t\t\t\tinst._parentComponent = component;\r\n\t\t\t\tsetComponentProps(inst, childProps, NO_RENDER, context, false);\r\n\t\t\t\trenderComponent(inst, SYNC_RENDER, mountAll, true);\r\n\t\t\t}\r\n\r\n\t\t\tbase = inst.base;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tcbase = initialBase;\r\n\r\n\t\t\t// destroy high order component link\r\n\t\t\ttoUnmount = initialChildComponent;\r\n\t\t\tif (toUnmount) {\r\n\t\t\t\tcbase = component._component = null;\r\n\t\t\t}\r\n\r\n\t\t\tif (initialBase || opts===SYNC_RENDER) {\r\n\t\t\t\tif (cbase) cbase._component = null;\r\n\t\t\t\tbase = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (initialBase && base!==initialBase && inst!==initialChildComponent) {\r\n\t\t\tlet baseParent = initialBase.parentNode;\r\n\t\t\tif (baseParent && base!==baseParent) {\r\n\t\t\t\tbaseParent.replaceChild(base, initialBase);\r\n\r\n\t\t\t\tif (!toUnmount) {\r\n\t\t\t\t\tinitialBase._component = null;\r\n\t\t\t\t\trecollectNodeTree(initialBase, false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (toUnmount) {\r\n\t\t\tunmountComponent(toUnmount);\r\n\t\t}\r\n\r\n\t\tcomponent.base = base;\r\n\t\tif (base && !isChild) {\r\n\t\t\tlet componentRef = component,\r\n\t\t\t\tt = component;\r\n\t\t\twhile ((t=t._parentComponent)) {\r\n\t\t\t\t(componentRef = t).base = base;\r\n\t\t\t}\r\n\t\t\tbase._component = componentRef;\r\n\t\t\tbase._componentConstructor = componentRef.constructor;\r\n\t\t}\r\n\t}\r\n\r\n\tif (!isUpdate || mountAll) {\r\n\t\tmounts.unshift(component);\r\n\t}\r\n\telse if (!skip) {\r\n\t\t// Ensure that pending componentDidMount() hooks of child components\r\n\t\t// are called before the componentDidUpdate() hook in the parent.\r\n\t\t// Note: disabled as it causes duplicate hooks, see https://github.com/developit/preact/issues/750\r\n\t\t// flushMounts();\r\n\r\n\t\tif (component.componentDidUpdate) {\r\n\t\t\tcomponent.componentDidUpdate(previousProps, previousState, previousContext);\r\n\t\t}\r\n\t\tif (component.afterUpdate) {\r\n\t\t\tcomponent.afterUpdate(previousProps, previousState, previousContext);\r\n\t\t}\r\n\t\tif (options.afterUpdate) options.afterUpdate(component);\r\n\t}\r\n\r\n\tif (component._renderCallbacks!=null) {\r\n\t\twhile (component._renderCallbacks.length) component._renderCallbacks.pop().call(component);\r\n\t}\r\n\r\n\tif (!diffLevel && !isChild) flushMounts();\r\n}\r\n\r\n\r\n\r\n/** Apply the Component referenced by a VNode to the DOM.\r\n *\t@param {Element} dom\tThe DOM node to mutate\r\n *\t@param {VNode} vnode\tA Component-referencing VNode\r\n *\t@returns {Element} dom\tThe created/mutated element\r\n *\t@private\r\n */\r\nexport function buildComponentFromVNode(dom, vnode, context, mountAll) {\r\n\tlet c = dom && dom._component,\r\n\t\toriginalComponent = c,\r\n\t\toldDom = dom,\r\n\t\tisDirectOwner = c && dom._componentConstructor===vnode.nodeName,\r\n\t\tisOwner = isDirectOwner,\r\n\t\tprops = getNodeProps(vnode);\r\n\twhile (c && !isOwner && (c=c._parentComponent)) {\r\n\t\tisOwner = c.constructor===vnode.nodeName;\r\n\t}\r\n\r\n\tif (c && isOwner && (!mountAll || c._component)) {\r\n\t\tsetComponentProps(c, props, ASYNC_RENDER, context, mountAll);\r\n\t\tdom = c.base;\r\n\t}\r\n\telse {\r\n\t\tif (originalComponent && !isDirectOwner) {\r\n\t\t\tunmountComponent(originalComponent);\r\n\t\t\tdom = oldDom = null;\r\n\t\t}\r\n\r\n\t\tc = createComponent(vnode.nodeName, props, context);\r\n\t\tif (dom && !c.nextBase) {\r\n\t\t\tc.nextBase = dom;\r\n\t\t\t// passing dom/oldDom as nextBase will recycle it if unused, so bypass recycling on L229:\r\n\t\t\toldDom = null;\r\n\t\t}\r\n\t\tsetComponentProps(c, props, SYNC_RENDER, context, mountAll);\r\n\t\tdom = c.base;\r\n\r\n\t\tif (oldDom && dom!==oldDom) {\r\n\t\t\toldDom._component = null;\r\n\t\t\trecollectNodeTree(oldDom, false);\r\n\t\t}\r\n\t}\r\n\r\n\treturn dom;\r\n}\r\n\r\n\r\n\r\n/** Remove a component from the DOM and recycle it.\r\n *\t@param {Component} component\tThe Component instance to unmount\r\n *\t@private\r\n */\r\nexport function unmountComponent(component) {\r\n\tif (options.beforeUnmount) options.beforeUnmount(component);\r\n\r\n\tlet base = component.base;\r\n\r\n\tcomponent._disable = true;\r\n\r\n\tif (component.componentWillUnmount) component.componentWillUnmount();\r\n\tif (component.uninstall) component.uninstall();\r\n\t\r\n\tcomponent.base = null;\r\n\r\n\t// recursively tear down & recollect high-order component children:\r\n\tlet inner = component._component;\r\n\tif (inner) {\r\n\t\tunmountComponent(inner);\r\n\t}\r\n\telse if (base) {\r\n\t\tif (base[ATTR_KEY] && base[ATTR_KEY].ref) base[ATTR_KEY].ref(null);\r\n\r\n\t\tcomponent.nextBase = base;\r\n\r\n\t\tremoveNode(base);\r\n\t\tcollectComponent(component);\r\n\r\n\t\tremoveChildren(base);\r\n\t}\r\n\r\n\tif (component.__ref) component.__ref(null);\r\n}\r\n","import { FORCE_RENDER } from './constants';\r\nimport { extend } from './util';\r\nimport { renderComponent } from './vdom/component';\r\nimport { enqueueRender } from './render-queue';\r\nimport options from './options';\r\n\r\nlet id = 0;\r\nfunction getId(){\r\n\treturn id++;\r\n}\r\n/** Base Component class.\r\n *\tProvides `setState()` and `forceUpdate()`, which trigger rendering.\r\n *\t@public\r\n *\r\n *\t@example\r\n *\tclass MyFoo extends Component {\r\n *\t\trender(props, state) {\r\n *\t\t\treturn <div />;\r\n *\t\t}\r\n *\t}\r\n */\r\nexport function Component(props, context) {\r\n\r\n\t/** @public\r\n\t *\t@type {object}\r\n\t */\r\n\tthis.context = context;\r\n\r\n\t/** @public\r\n\t *\t@type {object}\r\n\t */\r\n\tthis.props = props;\r\n\r\n\t/** @public\r\n\t *\t@type {object}\r\n\t */\r\n\tthis.state = this.state || {};\r\n\r\n\tthis._id = getId();\r\n\r\n\tthis._preStyle = null;\r\n\r\n\tthis.$store = null;\r\n\r\n}\r\n\r\n\r\nextend(Component.prototype, {\r\n\r\n\t/** Returns a `boolean` indicating if the component should re-render when receiving the given `props` and `state`.\r\n\t *\t@param {object} nextProps\r\n\t *\t@param {object} nextState\r\n\t *\t@param {object} nextContext\r\n\t *\t@returns {Boolean} should the component re-render\r\n\t *\t@name shouldComponentUpdate\r\n\t *\t@function\r\n\t */\r\n\r\n\r\n\t/** Update component state by copying properties from `state` to `this.state`.\r\n\t *\t@param {object} state\t\tA hash of state properties to update with new values\r\n\t *\t@param {function} callback\tA function to be called once component state is updated\r\n\t */\r\n\tsetState(state, callback) {\r\n\t\tlet s = this.state;\r\n\t\tif (!this.prevState) this.prevState = extend({}, s);\r\n\t\textend(s, typeof state==='function' ? state(s, this.props) : state);\r\n\t\tif (callback) (this._renderCallbacks = (this._renderCallbacks || [])).push(callback);\r\n\t\tenqueueRender(this);\r\n\t},\r\n\r\n\r\n\t/** Immediately perform a synchronous re-render of the component.\r\n\t *\t@param {function} callback\t\tA function to be called after component is re-rendered.\r\n\t *\t@private\r\n\t */\r\n\tforceUpdate(callback) {\r\n\t\tif (callback) (this._renderCallbacks = (this._renderCallbacks || [])).push(callback);\r\n\t\trenderComponent(this, FORCE_RENDER);\r\n\t\tif (options.componentChange) options.componentChange(this, this.base);\r\n\t},\r\n\r\n\tupdate(callback){\r\n\t\tthis.forceUpdate(callback);\r\n\t},\r\n\r\n\t/** Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\r\n\t *\tVirtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\r\n\t *\t@param {object} props\t\tProps (eg: JSX attributes) received from parent element/component\r\n\t *\t@param {object} state\t\tThe component's current state\r\n\t *\t@param {object} context\t\tContext object (if a parent component has provided context)\r\n\t *\t@returns VNode\r\n\t */\r\n\trender() {}\r\n\r\n});\r\n","import { diff } from './vdom/diff';\r\nimport { Component } from './component';\r\nimport options from './options';\r\nimport {addScopedAttr, addScopedAttrStatic, getCtorName} from './style';\r\n\r\n/** Render JSX into a `parent` Element.\r\n *\t@param {VNode} vnode\t\tA (JSX) VNode to render\r\n *\t@param {Element} parent\t\tDOM element to render into\r\n *\t@param {Element} [merge]\tAttempt to re-use an existing DOM tree rooted at `merge`\r\n *\t@public\r\n *\r\n *\t@example\r\n *\t// render a div into <body>:\r\n *\trender(<div id=\"hello\">hello!</div>, document.body);\r\n *\r\n *\t@example\r\n *\t// render a \"Thing\" component into #foo:\r\n *\tconst Thing = ({ name }) => <span>{ name }</span>;\r\n *\trender(<Thing name=\"one\" />, document.querySelector('#foo'));\r\n */\r\nexport function render(vnode, parent, merge) {\r\n\tmerge = Object.assign({\r\n\t\tstore: {}\r\n\t}, merge);\r\n\tif (typeof window === 'undefined') {\r\n\t\tif (vnode instanceof Component&&merge){\r\n\t\t\tvnode.$store = merge.store;\r\n\t\t}\r\n\t\treturn;\r\n\t}\r\n\toptions.staticStyleRendered = false;\r\n\r\n\tparent = typeof parent === 'string' ? document.querySelector(parent) : parent;\r\n\t\r\n\tif (merge.merge){\r\n\t\tmerge.merge = typeof merge.merge === 'string' ? document.querySelector(merge.merge) : merge.merge;\r\n\t}\r\n\tif (merge.empty){\r\n\t\twhile (parent.firstChild){\r\n\t\t\tparent.removeChild(parent.firstChild);\r\n\t\t}\r\n\t}\r\n\tmerge.store.ssrData = options.root.__omiSsrData;\r\n\toptions.$store = merge.store;\r\n\r\n\tif (vnode instanceof Component) {\r\n\t\tif (window && window.Omi){\r\n\t\t\twindow.Omi.instances.push(vnode);\r\n\t\t}\r\n\t\t\r\n\t\tvnode.$store = merge.store;\r\n\t\t\r\n\t\tif (vnode.componentWillMount) vnode.componentWillMount();\r\n\t\tif (vnode.install) vnode.install();\r\n\t\tconst rendered = vnode.render(vnode.props, vnode.state, vnode.context);\r\n\t\r\n\t\t//don't rerender\r\n\t\tif (vnode.staticStyle){\r\n\t\t\taddScopedAttrStatic(rendered,vnode.staticStyle(),'_style_'+getCtorName(vnode.constructor));\r\n\t\t}\r\n\r\n\t\tif (vnode.style){\r\n\t\t\taddScopedAttr(rendered,vnode.style(),'_style_'+vnode._id,vnode);\r\n\t\t}\r\n\r\n\t\tvnode.base = diff(merge.merge, rendered, {}, false, parent, false);\r\n\t\t\r\n\t\tif (vnode.componentDidMount) vnode.componentDidMount();\r\n\t\tif (vnode.installed) vnode.installed();\r\n\t\toptions.staticStyleRendered = true;\r\n\t\treturn vnode.base;\r\n\t}\r\n\r\n\tlet result = diff(merge.merge, vnode, {}, false, parent, false);\r\n\toptions.staticStyleRendered = true;\r\n\treturn result;\r\n}\r\n","import { h, h as createElement } from './h';\r\nimport { cloneElement } from './clone-element';\r\nimport { Component } from './component';\r\nimport { render } from './render';\r\nimport { rerender } from './render-queue';\r\nimport options from './options';\r\n\r\nconst instances = [];\r\n\r\noptions.root.Omi = {\r\n\th,\r\n\tcreateElement,\r\n\tcloneElement,\r\n\tComponent,\r\n\trender,\r\n\trerender,\r\n\toptions,\r\n\tinstances\r\n};\r\n\r\noptions.root.Omi.version = '3.0.6';\r\n\r\nexport default {\r\n\th,\r\n\tcreateElement,\r\n\tcloneElement,\r\n\tComponent,\r\n\trender,\r\n\trerender,\r\n\toptions,\r\n\tinstances\r\n};\r\n\r\nexport {\r\n\th,\r\n\tcreateElement,\r\n\tcloneElement,\r\n\tComponent,\r\n\trender,\r\n\trerender,\r\n\toptions,\r\n\tinstances\r\n};\r\n","\n\t\t\t\timport Omi from './omi';\n\t\t\t\tif (typeof module!='undefined') module.exports = Omi;\n\t\t\t\telse self.Omi = Omi;\n\t\t\t"],"names":["VNode","getGlobal","global","Math","Array","self","window","scopedStyle","$store","isWeb","staticStyleRendered","doc","document","root","styleCache","stack","EMPTY_CHILDREN","map","h","nodeName","attributes","children","lastSimple","child","simple","i","arguments","length","push","pop","undefined","String","p","options","value","key","vnode","extend","obj","props","usePromise","Promise","__config__","platform","systemVersion","split","defer","resolve","then","bind","setTimeout","cloneElement","slice","call","NO_RENDER","SYNC_RENDER","FORCE_RENDER","ASYNC_RENDER","ATTR_KEY","IS_NON_DIMENSIONAL","items","enqueueRender","component","debounceRendering","rerender","list","element","base","renderComponent","componentChange","isSameNodeType","node","hydrating","splitText","_componentConstructor","isNamedNode","normalizedNodeName","toLowerCase","getNodeProps","defaultProps","createNode","isSvg","createElementNS","createElement","parseCSSText","cssText","cssTxt","replace","match","a","b","rule","cssToJs","s","toUpperCase","properties","o","x","trim","property","style","removeNode","parentNode","removeChild","setAccessor","name","old","className","test","oldJson","currentJson","result","changed","ckey","setStyles","innerHTML","__html","useCapture","substring","addEventListener","eventProxy","removeEventListener","_listeners","setProperty","removeAttribute","ns","removeAttributeNS","setAttributeNS","setAttribute","e","type","event","mounts","diffLevel","isSvgMode","flushMounts","c","afterMount","componentDidMount","installed","diff","dom","context","mountAll","parent","componentRoot","ownerSVGElement","ret","idiff","appendChild","out","prevSvgMode","_component","nodeValue","createTextNode","replaceChild","recollectNodeTree","vnodeName","buildComponentFromVNode","firstChild","fc","vchildren","nextSibling","innerDiffNode","dangerouslySetInnerHTML","diffAttributes","isHydrating","originalChildren","childNodes","keyed","keyedLen","min","len","childrenLen","vlen","j","f","vchild","__key","insertBefore","unmountOnly","unmountComponent","ref","removeChildren","lastChild","next","previousSibling","attrs","components","collectComponent","constructor","createComponent","Ctor","inst","prototype","render","Component","doRender","Omi","instances","nextBase","splice","state","styleId","getCtorName","ctor","item","attrName","scoper","css","prefix","re","RegExp","g0","g1","g2","g3","appendClass","addStyle","id","ele","getElementById","head","getElementsByTagName","someThingStyles","ActiveXObject","styleSheet","textContent","addStyleWithoutId","addScopedAttr","vdom","attr","scopeVdom","_preStyle","addScopedAttrStatic","forEach","setComponentProps","opts","_disable","__ref","componentWillMount","install","componentWillReceiveProps","prevContext","prevProps","syncComponentUpdates","isChild","previousProps","previousState","prevState","previousContext","isUpdate","initialBase","initialChildComponent","skip","rendered","cbase","shouldComponentUpdate","componentWillUpdate","beforeUpdate","staticStyle","_id","getChildContext","childComponent","toUnmount","childProps","_parentComponent","baseParent","componentRef","t","unshift","componentDidUpdate","afterUpdate","_renderCallbacks","originalComponent","oldDom","isDirectOwner","isOwner","beforeUnmount","componentWillUnmount","uninstall","inner","getId","setState","callback","forceUpdate","update","merge","Object","assign","store","querySelector","empty","ssrData","__omiSsrData","version","module","exports"],"mappings":"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"} |