UNPKG

@amarajs/plugin-dom

Version:

Provides virtual DOM for AmaraJS web applications.

829 lines (754 loc) 24 kB
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.vdomParser = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ /** * index.js * * A client-side DOM to vdom parser based on DOMParser API */ 'use strict'; var VNode = require('virtual-dom/vnode/vnode'); var VText = require('virtual-dom/vnode/vtext'); var domParser; var propertyMap = require('./property-map'); var namespaceMap = require('./namespace-map'); var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml'; module.exports = parser; /** * DOM/html string to vdom parser * * @param Mixed el DOM element or html string * @param String attr Attribute name that contains vdom key * @return Object VNode or VText */ function parser(el, attr) { // empty input fallback to empty text node if (!el) { return createNode(document.createTextNode('')); } if (typeof el === 'string') { if ( !('DOMParser' in window) ) { throw new Error('DOMParser is not available, so parsing string to DOM node is not possible.'); } domParser = domParser || new DOMParser(); var doc = domParser.parseFromString(el, 'text/html'); // most tags default to body if (doc.body.firstChild) { el = doc.getElementsByTagName('body')[0].firstChild; // some tags, like script and style, default to head } else if (doc.head.firstChild && (doc.head.firstChild.tagName !== 'TITLE' || doc.title)) { el = doc.head.firstChild; // special case for html comment, cdata, doctype } else if (doc.firstChild && doc.firstChild.tagName !== 'HTML') { el = doc.firstChild; // other element, such as whitespace, or html/body/head tag, fallback to empty text node } else { el = document.createTextNode(''); } } if (typeof el !== 'object' || !el || !el.nodeType) { throw new Error('invalid dom node', el); } return createNode(el, attr); } /** * Create vdom from dom node * * @param Object el DOM element * @param String attr Attribute name that contains vdom key * @return Object VNode or VText */ function createNode(el, attr) { // html comment is not currently supported by virtual-dom if (el.nodeType === 3) { return createVirtualTextNode(el); // cdata or doctype is not currently supported by virtual-dom } else if (el.nodeType === 1 || el.nodeType === 9) { return createVirtualDomNode(el, attr); } // default to empty text node return new VText(''); } /** * Create vtext from dom node * * @param Object el Text node * @return Object VText */ function createVirtualTextNode(el) { return new VText(el.nodeValue); } /** * Create vnode from dom node * * @param Object el DOM element * @param String attr Attribute name that contains vdom key * @return Object VNode */ function createVirtualDomNode(el, attr) { var ns = el.namespaceURI !== HTML_NAMESPACE ? el.namespaceURI : null; var key = attr && el.getAttribute(attr) ? el.getAttribute(attr) : null; return new VNode( el.tagName , createProperties(el) , createChildren(el, attr) , key , ns ); } /** * Recursively create vdom * * @param Object el Parent element * @param String attr Attribute name that contains vdom key * @return Array Child vnode or vtext */ function createChildren(el, attr) { var children = []; for (var i = 0; i < el.childNodes.length; i++) { children.push(createNode(el.childNodes[i], attr)); }; return children; } /** * Create properties from dom node * * @param Object el DOM element * @return Object Node properties and attributes */ function createProperties(el) { var properties = {}; if (!el.hasAttributes()) { return properties; } var ns; if (el.namespaceURI && el.namespaceURI !== HTML_NAMESPACE) { ns = el.namespaceURI; } var attr; for (var i = 0; i < el.attributes.length; i++) { // use built in css style parsing if(el.attributes[i].name == 'style'){ attr = createStyleProperty(el); } else if (ns) { attr = createPropertyNS(el.attributes[i]); } else { attr = createProperty(el.attributes[i]); } // special case, namespaced attribute, use properties.foobar if (attr.ns) { properties[attr.name] = { namespace: attr.ns , value: attr.value }; // special case, use properties.attributes.foobar } else if (attr.isAttr) { // init attributes object only when necessary if (!properties.attributes) { properties.attributes = {} } properties.attributes[attr.name] = attr.value; // default case, use properties.foobar } else { properties[attr.name] = attr.value; } }; return properties; } /** * Create property from dom attribute * * @param Object attr DOM attribute * @return Object Normalized attribute */ function createProperty(attr) { var name, value, isAttr; // using a map to find the correct case of property name if (propertyMap[attr.name]) { name = propertyMap[attr.name]; } else { name = attr.name; } // special cases for data attribute, we default to properties.attributes.data if (name.indexOf('data-') === 0 || name.indexOf('aria-') === 0) { value = attr.value; isAttr = true; } else { value = attr.value; } return { name: name , value: value , isAttr: isAttr || false }; } /** * Create namespaced property from dom attribute * * @param Object attr DOM attribute * @return Object Normalized attribute */ function createPropertyNS(attr) { var name, value; return { name: attr.name , value: attr.value , ns: namespaceMap[attr.name] || '' }; } /** * Create style property from dom node * * @param Object el DOM node * @return Object Normalized attribute */ function createStyleProperty(el) { var style = el.style; var output = {}; for (var i = 0; i < style.length; ++i) { var item = style.item(i); output[item] = String(style[item]); // hack to workaround browser inconsistency with url() if (output[item].indexOf('url') > -1) { output[item] = output[item].replace(/\"/g, '') } } return { name: 'style', value: output }; } },{"./namespace-map":2,"./property-map":10,"virtual-dom/vnode/vnode":8,"virtual-dom/vnode/vtext":9}],2:[function(require,module,exports){ /** * namespace-map.js * * Necessary to map svg attributes back to their namespace */ 'use strict'; // extracted from https://github.com/Matt-Esch/virtual-dom/blob/master/virtual-hyperscript/svg-attribute-namespace.js var DEFAULT_NAMESPACE = null; var EV_NAMESPACE = 'http://www.w3.org/2001/xml-events'; var XLINK_NAMESPACE = 'http://www.w3.org/1999/xlink'; var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'; var namespaces = { 'about': DEFAULT_NAMESPACE , 'accent-height': DEFAULT_NAMESPACE , 'accumulate': DEFAULT_NAMESPACE , 'additive': DEFAULT_NAMESPACE , 'alignment-baseline': DEFAULT_NAMESPACE , 'alphabetic': DEFAULT_NAMESPACE , 'amplitude': DEFAULT_NAMESPACE , 'arabic-form': DEFAULT_NAMESPACE , 'ascent': DEFAULT_NAMESPACE , 'attributeName': DEFAULT_NAMESPACE , 'attributeType': DEFAULT_NAMESPACE , 'azimuth': DEFAULT_NAMESPACE , 'bandwidth': DEFAULT_NAMESPACE , 'baseFrequency': DEFAULT_NAMESPACE , 'baseProfile': DEFAULT_NAMESPACE , 'baseline-shift': DEFAULT_NAMESPACE , 'bbox': DEFAULT_NAMESPACE , 'begin': DEFAULT_NAMESPACE , 'bias': DEFAULT_NAMESPACE , 'by': DEFAULT_NAMESPACE , 'calcMode': DEFAULT_NAMESPACE , 'cap-height': DEFAULT_NAMESPACE , 'class': DEFAULT_NAMESPACE , 'clip': DEFAULT_NAMESPACE , 'clip-path': DEFAULT_NAMESPACE , 'clip-rule': DEFAULT_NAMESPACE , 'clipPathUnits': DEFAULT_NAMESPACE , 'color': DEFAULT_NAMESPACE , 'color-interpolation': DEFAULT_NAMESPACE , 'color-interpolation-filters': DEFAULT_NAMESPACE , 'color-profile': DEFAULT_NAMESPACE , 'color-rendering': DEFAULT_NAMESPACE , 'content': DEFAULT_NAMESPACE , 'contentScriptType': DEFAULT_NAMESPACE , 'contentStyleType': DEFAULT_NAMESPACE , 'cursor': DEFAULT_NAMESPACE , 'cx': DEFAULT_NAMESPACE , 'cy': DEFAULT_NAMESPACE , 'd': DEFAULT_NAMESPACE , 'datatype': DEFAULT_NAMESPACE , 'defaultAction': DEFAULT_NAMESPACE , 'descent': DEFAULT_NAMESPACE , 'diffuseConstant': DEFAULT_NAMESPACE , 'direction': DEFAULT_NAMESPACE , 'display': DEFAULT_NAMESPACE , 'divisor': DEFAULT_NAMESPACE , 'dominant-baseline': DEFAULT_NAMESPACE , 'dur': DEFAULT_NAMESPACE , 'dx': DEFAULT_NAMESPACE , 'dy': DEFAULT_NAMESPACE , 'edgeMode': DEFAULT_NAMESPACE , 'editable': DEFAULT_NAMESPACE , 'elevation': DEFAULT_NAMESPACE , 'enable-background': DEFAULT_NAMESPACE , 'end': DEFAULT_NAMESPACE , 'ev:event': EV_NAMESPACE , 'event': DEFAULT_NAMESPACE , 'exponent': DEFAULT_NAMESPACE , 'externalResourcesRequired': DEFAULT_NAMESPACE , 'fill': DEFAULT_NAMESPACE , 'fill-opacity': DEFAULT_NAMESPACE , 'fill-rule': DEFAULT_NAMESPACE , 'filter': DEFAULT_NAMESPACE , 'filterRes': DEFAULT_NAMESPACE , 'filterUnits': DEFAULT_NAMESPACE , 'flood-color': DEFAULT_NAMESPACE , 'flood-opacity': DEFAULT_NAMESPACE , 'focusHighlight': DEFAULT_NAMESPACE , 'focusable': DEFAULT_NAMESPACE , 'font-family': DEFAULT_NAMESPACE , 'font-size': DEFAULT_NAMESPACE , 'font-size-adjust': DEFAULT_NAMESPACE , 'font-stretch': DEFAULT_NAMESPACE , 'font-style': DEFAULT_NAMESPACE , 'font-variant': DEFAULT_NAMESPACE , 'font-weight': DEFAULT_NAMESPACE , 'format': DEFAULT_NAMESPACE , 'from': DEFAULT_NAMESPACE , 'fx': DEFAULT_NAMESPACE , 'fy': DEFAULT_NAMESPACE , 'g1': DEFAULT_NAMESPACE , 'g2': DEFAULT_NAMESPACE , 'glyph-name': DEFAULT_NAMESPACE , 'glyph-orientation-horizontal': DEFAULT_NAMESPACE , 'glyph-orientation-vertical': DEFAULT_NAMESPACE , 'glyphRef': DEFAULT_NAMESPACE , 'gradientTransform': DEFAULT_NAMESPACE , 'gradientUnits': DEFAULT_NAMESPACE , 'handler': DEFAULT_NAMESPACE , 'hanging': DEFAULT_NAMESPACE , 'height': DEFAULT_NAMESPACE , 'horiz-adv-x': DEFAULT_NAMESPACE , 'horiz-origin-x': DEFAULT_NAMESPACE , 'horiz-origin-y': DEFAULT_NAMESPACE , 'id': DEFAULT_NAMESPACE , 'ideographic': DEFAULT_NAMESPACE , 'image-rendering': DEFAULT_NAMESPACE , 'in': DEFAULT_NAMESPACE , 'in2': DEFAULT_NAMESPACE , 'initialVisibility': DEFAULT_NAMESPACE , 'intercept': DEFAULT_NAMESPACE , 'k': DEFAULT_NAMESPACE , 'k1': DEFAULT_NAMESPACE , 'k2': DEFAULT_NAMESPACE , 'k3': DEFAULT_NAMESPACE , 'k4': DEFAULT_NAMESPACE , 'kernelMatrix': DEFAULT_NAMESPACE , 'kernelUnitLength': DEFAULT_NAMESPACE , 'kerning': DEFAULT_NAMESPACE , 'keyPoints': DEFAULT_NAMESPACE , 'keySplines': DEFAULT_NAMESPACE , 'keyTimes': DEFAULT_NAMESPACE , 'lang': DEFAULT_NAMESPACE , 'lengthAdjust': DEFAULT_NAMESPACE , 'letter-spacing': DEFAULT_NAMESPACE , 'lighting-color': DEFAULT_NAMESPACE , 'limitingConeAngle': DEFAULT_NAMESPACE , 'local': DEFAULT_NAMESPACE , 'marker-end': DEFAULT_NAMESPACE , 'marker-mid': DEFAULT_NAMESPACE , 'marker-start': DEFAULT_NAMESPACE , 'markerHeight': DEFAULT_NAMESPACE , 'markerUnits': DEFAULT_NAMESPACE , 'markerWidth': DEFAULT_NAMESPACE , 'mask': DEFAULT_NAMESPACE , 'maskContentUnits': DEFAULT_NAMESPACE , 'maskUnits': DEFAULT_NAMESPACE , 'mathematical': DEFAULT_NAMESPACE , 'max': DEFAULT_NAMESPACE , 'media': DEFAULT_NAMESPACE , 'mediaCharacterEncoding': DEFAULT_NAMESPACE , 'mediaContentEncodings': DEFAULT_NAMESPACE , 'mediaSize': DEFAULT_NAMESPACE , 'mediaTime': DEFAULT_NAMESPACE , 'method': DEFAULT_NAMESPACE , 'min': DEFAULT_NAMESPACE , 'mode': DEFAULT_NAMESPACE , 'name': DEFAULT_NAMESPACE , 'nav-down': DEFAULT_NAMESPACE , 'nav-down-left': DEFAULT_NAMESPACE , 'nav-down-right': DEFAULT_NAMESPACE , 'nav-left': DEFAULT_NAMESPACE , 'nav-next': DEFAULT_NAMESPACE , 'nav-prev': DEFAULT_NAMESPACE , 'nav-right': DEFAULT_NAMESPACE , 'nav-up': DEFAULT_NAMESPACE , 'nav-up-left': DEFAULT_NAMESPACE , 'nav-up-right': DEFAULT_NAMESPACE , 'numOctaves': DEFAULT_NAMESPACE , 'observer': DEFAULT_NAMESPACE , 'offset': DEFAULT_NAMESPACE , 'opacity': DEFAULT_NAMESPACE , 'operator': DEFAULT_NAMESPACE , 'order': DEFAULT_NAMESPACE , 'orient': DEFAULT_NAMESPACE , 'orientation': DEFAULT_NAMESPACE , 'origin': DEFAULT_NAMESPACE , 'overflow': DEFAULT_NAMESPACE , 'overlay': DEFAULT_NAMESPACE , 'overline-position': DEFAULT_NAMESPACE , 'overline-thickness': DEFAULT_NAMESPACE , 'panose-1': DEFAULT_NAMESPACE , 'path': DEFAULT_NAMESPACE , 'pathLength': DEFAULT_NAMESPACE , 'patternContentUnits': DEFAULT_NAMESPACE , 'patternTransform': DEFAULT_NAMESPACE , 'patternUnits': DEFAULT_NAMESPACE , 'phase': DEFAULT_NAMESPACE , 'playbackOrder': DEFAULT_NAMESPACE , 'pointer-events': DEFAULT_NAMESPACE , 'points': DEFAULT_NAMESPACE , 'pointsAtX': DEFAULT_NAMESPACE , 'pointsAtY': DEFAULT_NAMESPACE , 'pointsAtZ': DEFAULT_NAMESPACE , 'preserveAlpha': DEFAULT_NAMESPACE , 'preserveAspectRatio': DEFAULT_NAMESPACE , 'primitiveUnits': DEFAULT_NAMESPACE , 'propagate': DEFAULT_NAMESPACE , 'property': DEFAULT_NAMESPACE , 'r': DEFAULT_NAMESPACE , 'radius': DEFAULT_NAMESPACE , 'refX': DEFAULT_NAMESPACE , 'refY': DEFAULT_NAMESPACE , 'rel': DEFAULT_NAMESPACE , 'rendering-intent': DEFAULT_NAMESPACE , 'repeatCount': DEFAULT_NAMESPACE , 'repeatDur': DEFAULT_NAMESPACE , 'requiredExtensions': DEFAULT_NAMESPACE , 'requiredFeatures': DEFAULT_NAMESPACE , 'requiredFonts': DEFAULT_NAMESPACE , 'requiredFormats': DEFAULT_NAMESPACE , 'resource': DEFAULT_NAMESPACE , 'restart': DEFAULT_NAMESPACE , 'result': DEFAULT_NAMESPACE , 'rev': DEFAULT_NAMESPACE , 'role': DEFAULT_NAMESPACE , 'rotate': DEFAULT_NAMESPACE , 'rx': DEFAULT_NAMESPACE , 'ry': DEFAULT_NAMESPACE , 'scale': DEFAULT_NAMESPACE , 'seed': DEFAULT_NAMESPACE , 'shape-rendering': DEFAULT_NAMESPACE , 'slope': DEFAULT_NAMESPACE , 'snapshotTime': DEFAULT_NAMESPACE , 'spacing': DEFAULT_NAMESPACE , 'specularConstant': DEFAULT_NAMESPACE , 'specularExponent': DEFAULT_NAMESPACE , 'spreadMethod': DEFAULT_NAMESPACE , 'startOffset': DEFAULT_NAMESPACE , 'stdDeviation': DEFAULT_NAMESPACE , 'stemh': DEFAULT_NAMESPACE , 'stemv': DEFAULT_NAMESPACE , 'stitchTiles': DEFAULT_NAMESPACE , 'stop-color': DEFAULT_NAMESPACE , 'stop-opacity': DEFAULT_NAMESPACE , 'strikethrough-position': DEFAULT_NAMESPACE , 'strikethrough-thickness': DEFAULT_NAMESPACE , 'string': DEFAULT_NAMESPACE , 'stroke': DEFAULT_NAMESPACE , 'stroke-dasharray': DEFAULT_NAMESPACE , 'stroke-dashoffset': DEFAULT_NAMESPACE , 'stroke-linecap': DEFAULT_NAMESPACE , 'stroke-linejoin': DEFAULT_NAMESPACE , 'stroke-miterlimit': DEFAULT_NAMESPACE , 'stroke-opacity': DEFAULT_NAMESPACE , 'stroke-width': DEFAULT_NAMESPACE , 'surfaceScale': DEFAULT_NAMESPACE , 'syncBehavior': DEFAULT_NAMESPACE , 'syncBehaviorDefault': DEFAULT_NAMESPACE , 'syncMaster': DEFAULT_NAMESPACE , 'syncTolerance': DEFAULT_NAMESPACE , 'syncToleranceDefault': DEFAULT_NAMESPACE , 'systemLanguage': DEFAULT_NAMESPACE , 'tableValues': DEFAULT_NAMESPACE , 'target': DEFAULT_NAMESPACE , 'targetX': DEFAULT_NAMESPACE , 'targetY': DEFAULT_NAMESPACE , 'text-anchor': DEFAULT_NAMESPACE , 'text-decoration': DEFAULT_NAMESPACE , 'text-rendering': DEFAULT_NAMESPACE , 'textLength': DEFAULT_NAMESPACE , 'timelineBegin': DEFAULT_NAMESPACE , 'title': DEFAULT_NAMESPACE , 'to': DEFAULT_NAMESPACE , 'transform': DEFAULT_NAMESPACE , 'transformBehavior': DEFAULT_NAMESPACE , 'type': DEFAULT_NAMESPACE , 'typeof': DEFAULT_NAMESPACE , 'u1': DEFAULT_NAMESPACE , 'u2': DEFAULT_NAMESPACE , 'underline-position': DEFAULT_NAMESPACE , 'underline-thickness': DEFAULT_NAMESPACE , 'unicode': DEFAULT_NAMESPACE , 'unicode-bidi': DEFAULT_NAMESPACE , 'unicode-range': DEFAULT_NAMESPACE , 'units-per-em': DEFAULT_NAMESPACE , 'v-alphabetic': DEFAULT_NAMESPACE , 'v-hanging': DEFAULT_NAMESPACE , 'v-ideographic': DEFAULT_NAMESPACE , 'v-mathematical': DEFAULT_NAMESPACE , 'values': DEFAULT_NAMESPACE , 'version': DEFAULT_NAMESPACE , 'vert-adv-y': DEFAULT_NAMESPACE , 'vert-origin-x': DEFAULT_NAMESPACE , 'vert-origin-y': DEFAULT_NAMESPACE , 'viewBox': DEFAULT_NAMESPACE , 'viewTarget': DEFAULT_NAMESPACE , 'visibility': DEFAULT_NAMESPACE , 'width': DEFAULT_NAMESPACE , 'widths': DEFAULT_NAMESPACE , 'word-spacing': DEFAULT_NAMESPACE , 'writing-mode': DEFAULT_NAMESPACE , 'x': DEFAULT_NAMESPACE , 'x-height': DEFAULT_NAMESPACE , 'x1': DEFAULT_NAMESPACE , 'x2': DEFAULT_NAMESPACE , 'xChannelSelector': DEFAULT_NAMESPACE , 'xlink:actuate': XLINK_NAMESPACE , 'xlink:arcrole': XLINK_NAMESPACE , 'xlink:href': XLINK_NAMESPACE , 'xlink:role': XLINK_NAMESPACE , 'xlink:show': XLINK_NAMESPACE , 'xlink:title': XLINK_NAMESPACE , 'xlink:type': XLINK_NAMESPACE , 'xml:base': XML_NAMESPACE , 'xml:id': XML_NAMESPACE , 'xml:lang': XML_NAMESPACE , 'xml:space': XML_NAMESPACE , 'y': DEFAULT_NAMESPACE , 'y1': DEFAULT_NAMESPACE , 'y2': DEFAULT_NAMESPACE , 'yChannelSelector': DEFAULT_NAMESPACE , 'z': DEFAULT_NAMESPACE , 'zoomAndPan': DEFAULT_NAMESPACE }; module.exports = namespaces; },{}],3:[function(require,module,exports){ module.exports = isThunk function isThunk(t) { return t && t.type === "Thunk" } },{}],4:[function(require,module,exports){ module.exports = isHook function isHook(hook) { return hook && (typeof hook.hook === "function" && !hook.hasOwnProperty("hook") || typeof hook.unhook === "function" && !hook.hasOwnProperty("unhook")) } },{}],5:[function(require,module,exports){ var version = require("./version") module.exports = isVirtualNode function isVirtualNode(x) { return x && x.type === "VirtualNode" && x.version === version } },{"./version":7}],6:[function(require,module,exports){ module.exports = isWidget function isWidget(w) { return w && w.type === "Widget" } },{}],7:[function(require,module,exports){ module.exports = "2" },{}],8:[function(require,module,exports){ var version = require("./version") var isVNode = require("./is-vnode") var isWidget = require("./is-widget") var isThunk = require("./is-thunk") var isVHook = require("./is-vhook") module.exports = VirtualNode var noProperties = {} var noChildren = [] function VirtualNode(tagName, properties, children, key, namespace) { this.tagName = tagName this.properties = properties || noProperties this.children = children || noChildren this.key = key != null ? String(key) : undefined this.namespace = (typeof namespace === "string") ? namespace : null var count = (children && children.length) || 0 var descendants = 0 var hasWidgets = false var hasThunks = false var descendantHooks = false var hooks for (var propName in properties) { if (properties.hasOwnProperty(propName)) { var property = properties[propName] if (isVHook(property) && property.unhook) { if (!hooks) { hooks = {} } hooks[propName] = property } } } for (var i = 0; i < count; i++) { var child = children[i] if (isVNode(child)) { descendants += child.count || 0 if (!hasWidgets && child.hasWidgets) { hasWidgets = true } if (!hasThunks && child.hasThunks) { hasThunks = true } if (!descendantHooks && (child.hooks || child.descendantHooks)) { descendantHooks = true } } else if (!hasWidgets && isWidget(child)) { if (typeof child.destroy === "function") { hasWidgets = true } } else if (!hasThunks && isThunk(child)) { hasThunks = true; } } this.count = count + descendants this.hasWidgets = hasWidgets this.hasThunks = hasThunks this.hooks = hooks this.descendantHooks = descendantHooks } VirtualNode.prototype.version = version VirtualNode.prototype.type = "VirtualNode" },{"./is-thunk":3,"./is-vhook":4,"./is-vnode":5,"./is-widget":6,"./version":7}],9:[function(require,module,exports){ var version = require("./version") module.exports = VirtualText function VirtualText(text) { this.text = String(text) } VirtualText.prototype.version = version VirtualText.prototype.type = "VirtualText" },{"./version":7}],10:[function(require,module,exports){ /** * property-map.js * * Necessary to map dom attributes back to vdom properties */ 'use strict'; // invert of https://www.npmjs.com/package/html-attributes var properties = { 'abbr': 'abbr' , 'accept': 'accept' , 'accept-charset': 'acceptCharset' , 'accesskey': 'accessKey' , 'action': 'action' , 'allowfullscreen': 'allowFullScreen' , 'allowtransparency': 'allowTransparency' , 'alt': 'alt' , 'async': 'async' , 'autocomplete': 'autoComplete' , 'autofocus': 'autoFocus' , 'autoplay': 'autoPlay' , 'cellpadding': 'cellPadding' , 'cellspacing': 'cellSpacing' , 'challenge': 'challenge' , 'charset': 'charset' , 'checked': 'checked' , 'cite': 'cite' , 'class': 'className' , 'cols': 'cols' , 'colspan': 'colSpan' , 'command': 'command' , 'content': 'content' , 'contenteditable': 'contentEditable' , 'contextmenu': 'contextMenu' , 'controls': 'controls' , 'coords': 'coords' , 'crossorigin': 'crossOrigin' , 'data': 'data' , 'datetime': 'dateTime' , 'default': 'default' , 'defer': 'defer' , 'dir': 'dir' , 'disabled': 'disabled' , 'download': 'download' , 'draggable': 'draggable' , 'dropzone': 'dropzone' , 'enctype': 'encType' , 'for': 'htmlFor' , 'form': 'form' , 'formaction': 'formAction' , 'formenctype': 'formEncType' , 'formmethod': 'formMethod' , 'formnovalidate': 'formNoValidate' , 'formtarget': 'formTarget' , 'frameBorder': 'frameBorder' , 'headers': 'headers' , 'height': 'height' , 'hidden': 'hidden' , 'high': 'high' , 'href': 'href' , 'hreflang': 'hrefLang' , 'http-equiv': 'httpEquiv' , 'icon': 'icon' , 'id': 'id' , 'inputmode': 'inputMode' , 'ismap': 'isMap' , 'itemid': 'itemId' , 'itemprop': 'itemProp' , 'itemref': 'itemRef' , 'itemscope': 'itemScope' , 'itemtype': 'itemType' , 'kind': 'kind' , 'label': 'label' , 'lang': 'lang' , 'list': 'list' , 'loop': 'loop' , 'manifest': 'manifest' , 'max': 'max' , 'maxlength': 'maxLength' , 'media': 'media' , 'mediagroup': 'mediaGroup' , 'method': 'method' , 'min': 'min' , 'minlength': 'minLength' , 'multiple': 'multiple' , 'muted': 'muted' , 'name': 'name' , 'novalidate': 'noValidate' , 'open': 'open' , 'optimum': 'optimum' , 'pattern': 'pattern' , 'ping': 'ping' , 'placeholder': 'placeholder' , 'poster': 'poster' , 'preload': 'preload' , 'radiogroup': 'radioGroup' , 'readonly': 'readOnly' , 'rel': 'rel' , 'required': 'required' , 'role': 'role' , 'rows': 'rows' , 'rowspan': 'rowSpan' , 'sandbox': 'sandbox' , 'scope': 'scope' , 'scoped': 'scoped' , 'scrolling': 'scrolling' , 'seamless': 'seamless' , 'selected': 'selected' , 'shape': 'shape' , 'size': 'size' , 'sizes': 'sizes' , 'sortable': 'sortable' , 'span': 'span' , 'spellcheck': 'spellCheck' , 'src': 'src' , 'srcdoc': 'srcDoc' , 'srcset': 'srcSet' , 'start': 'start' , 'step': 'step' , 'style': 'style' , 'tabindex': 'tabIndex' , 'target': 'target' , 'title': 'title' , 'translate': 'translate' , 'type': 'type' , 'typemustmatch': 'typeMustMatch' , 'usemap': 'useMap' , 'value': 'value' , 'width': 'width' , 'wmode': 'wmode' , 'wrap': 'wrap' }; module.exports = properties; },{}]},{},[1])(1) });