From cbc4d713f6f9222ce5fce77621006da266e7d9b7 Mon Sep 17 00:00:00 2001 From: Andre Medeiros Date: Mon, 14 Mar 2016 22:44:37 +0200 Subject: [PATCH] Build dist/ --- dist/cycle-dom.js | 4041 +++++++++++++++++++++++++++++++++++++++++ dist/cycle-dom.min.js | 2 +- 2 files changed, 4042 insertions(+), 1 deletion(-) diff --git a/dist/cycle-dom.js b/dist/cycle-dom.js index e69de29..c9b44e2 100644 --- a/dist/cycle-dom.js +++ b/dist/cycle-dom.js @@ -0,0 +1,4041 @@ +(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.CycleDOM = 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 0; +}; + +var startsWith = function startsWith(string, start) { + return string[0] === start; +}; + +var isSelector = function isSelector(param) { + return isValidString(param) && (startsWith(param, '.') || startsWith(param, '#')); +}; + +var node = function node(h) { + return function (tagName) { + return function (first) { + for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + rest[_key - 1] = arguments[_key]; + } + + if (isSelector(first)) { + return h.apply(undefined, [tagName + first].concat(rest)); + } else { + return h.apply(undefined, [tagName, first].concat(rest)); + } + }; + }; +}; + +var TAG_NAMES = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'meta', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'p', 'param', 'pre', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'u', 'ul', 'video']; + +exports['default'] = function (h) { + var createTag = node(h); + var exported = { TAG_NAMES: TAG_NAMES, isSelector: isSelector, createTag: createTag }; + TAG_NAMES.forEach(function (n) { + exported[n] = createTag(n); + }); + return exported; +}; + +module.exports = exports['default']; + +},{}],3:[function(require,module,exports){ +'use strict'; + +var proto = Element.prototype; +var vendor = proto.matches + || proto.matchesSelector + || proto.webkitMatchesSelector + || proto.mozMatchesSelector + || proto.msMatchesSelector + || proto.oMatchesSelector; + +module.exports = match; + +/** + * Match `el` to `selector`. + * + * @param {Element} el + * @param {String} selector + * @return {Boolean} + * @api public + */ + +function match(el, selector) { + if (vendor) return vendor.call(el, selector); + var nodes = el.parentNode.querySelectorAll(selector); + for (var i = 0; i < nodes.length; i++) { + if (nodes[i] == el) return true; + } + return false; +} +},{}],4:[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 = new 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') { + var doc = domParser.parseFromString(el, 'text/html'); + + // most tags default to body + if (doc.body.firstChild) { + el = doc.body.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++) { + 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 style attribute, we default to properties.style + if (name === 'style') { + var style = {}; + attr.value.split(';').forEach(function (s) { + var pos = s.indexOf(':'); + if (pos < 0) { + return; + } + style[s.substr(0, pos).trim()] = s.substr(pos + 1).trim(); + }); + value = style; + // special cases for data attribute, we default to properties.attributes.data + } else if (name.indexOf('data-') === 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] || '' + }; +} + +},{"./namespace-map":5,"./property-map":6,"virtual-dom/vnode/vnode":45,"virtual-dom/vnode/vtext":47}],5:[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; + +},{}],6:[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; + +},{}],7:[function(require,module,exports){ +var escape = require('escape-html'); +var propConfig = require('./property-config'); +var types = propConfig.attributeTypes; +var properties = propConfig.properties; +var attributeNames = propConfig.attributeNames; + +var prefixAttribute = memoizeString(function (name) { + return escape(name) + '="'; +}); + +module.exports = createAttribute; + +/** + * Create attribute string. + * + * @param {String} name The name of the property or attribute + * @param {*} value The value + * @param {Boolean} [isAttribute] Denotes whether `name` is an attribute. + * @return {?String} Attribute string || null if not a valid property or custom attribute. + */ + +function createAttribute(name, value, isAttribute) { + if (properties.hasOwnProperty(name)) { + if (shouldSkip(name, value)) return ''; + name = (attributeNames[name] || name).toLowerCase(); + var attrType = properties[name]; + // for BOOLEAN `value` only has to be truthy + // for OVERLOADED_BOOLEAN `value` has to be === true + if ((attrType === types.BOOLEAN) || + (attrType === types.OVERLOADED_BOOLEAN && value === true)) { + return escape(name); + } + return prefixAttribute(name) + escape(value) + '"'; + } else if (isAttribute) { + if (value == null) return ''; + return prefixAttribute(name) + escape(value) + '"'; + } + // return null if `name` is neither a valid property nor an attribute + return null; +} + +/** + * Should skip false boolean attributes. + */ + +function shouldSkip(name, value) { + var attrType = properties[name]; + return value == null || + (attrType === types.BOOLEAN && !value) || + (attrType === types.OVERLOADED_BOOLEAN && value === false); +} + +/** + * Memoizes the return value of a function that accepts one string argument. + * + * @param {function} callback + * @return {function} + */ + +function memoizeString(callback) { + var cache = {}; + return function(string) { + if (cache.hasOwnProperty(string)) { + return cache[string]; + } else { + return cache[string] = callback.call(this, string); + } + }; +} +},{"./property-config":17,"escape-html":9}],8:[function(require,module,exports){ +var escape = require('escape-html'); +var extend = require('xtend'); +var isVNode = require('virtual-dom/vnode/is-vnode'); +var isVText = require('virtual-dom/vnode/is-vtext'); +var isThunk = require('virtual-dom/vnode/is-thunk'); +var isWidget = require('virtual-dom/vnode/is-widget'); +var softHook = require('virtual-dom/virtual-hyperscript/hooks/soft-set-hook'); +var attrHook = require('virtual-dom/virtual-hyperscript/hooks/attribute-hook'); +var paramCase = require('param-case'); +var createAttribute = require('./create-attribute'); +var voidElements = require('./void-elements'); + +module.exports = toHTML; + +function toHTML(node, parent) { + if (!node) return ''; + + if (isThunk(node)) { + node = node.render(); + } + + if (isWidget(node) && node.render) { + node = node.render(); + } + + if (isVNode(node)) { + return openTag(node) + tagContent(node) + closeTag(node); + } else if (isVText(node)) { + if (parent && parent.tagName.toLowerCase() === 'script') return String(node.text); + return escape(String(node.text)); + } + + return ''; +} + +function openTag(node) { + var props = node.properties; + var ret = '<' + node.tagName.toLowerCase(); + + for (var name in props) { + var value = props[name]; + if (value == null) continue; + + if (name == 'attributes') { + value = extend({}, value); + for (var attrProp in value) { + ret += ' ' + createAttribute(attrProp, value[attrProp], true); + } + continue; + } + + if (name == 'style') { + var css = ''; + value = extend({}, value); + for (var styleProp in value) { + css += paramCase(styleProp) + ': ' + value[styleProp] + '; '; + } + value = css.trim(); + } + + if (value instanceof softHook || value instanceof attrHook) { + ret += ' ' + createAttribute(name, value.value, true); + continue; + } + + var attr = createAttribute(name, value); + if (attr) ret += ' ' + attr; + } + + return ret + '>'; +} + +function tagContent(node) { + var innerHTML = node.properties.innerHTML; + if (innerHTML != null) return innerHTML; + else { + var ret = ''; + if (node.children && node.children.length) { + for (var i = 0, l = node.children.length; i'; +} +},{"./create-attribute":7,"./void-elements":18,"escape-html":9,"param-case":15,"virtual-dom/virtual-hyperscript/hooks/attribute-hook":33,"virtual-dom/virtual-hyperscript/hooks/soft-set-hook":35,"virtual-dom/vnode/is-thunk":39,"virtual-dom/vnode/is-vnode":41,"virtual-dom/vnode/is-vtext":42,"virtual-dom/vnode/is-widget":43,"xtend":16}],9:[function(require,module,exports){ +/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */ + +'use strict'; + +/** + * Module variables. + * @private + */ + +var matchHtmlRegExp = /["'&<>]/; + +/** + * Module exports. + * @public + */ + +module.exports = escapeHtml; + +/** + * Escape special characters in the given string of html. + * + * @param {string} string The string to escape for inserting into HTML + * @return {string} + * @public + */ + +function escapeHtml(string) { + var str = '' + string; + var match = matchHtmlRegExp.exec(str); + + if (!match) { + return str; + } + + var escape; + var html = ''; + var index = 0; + var lastIndex = 0; + + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: // " + escape = '"'; + break; + case 38: // & + escape = '&'; + break; + case 39: // ' + escape = '''; + break; + case 60: // < + escape = '<'; + break; + case 62: // > + escape = '>'; + break; + default: + continue; + } + + if (lastIndex !== index) { + html += str.substring(lastIndex, index); + } + + lastIndex = index + 1; + html += escape; + } + + return lastIndex !== index + ? html + str.substring(lastIndex, index) + : html; +} + +},{}],10:[function(require,module,exports){ +/** + * Special language-specific overrides. + * + * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt + * + * @type {Object} + */ +var LANGUAGES = { + tr: { + regexp: /\u0130|\u0049|\u0049\u0307/g, + map: { + '\u0130': '\u0069', + '\u0049': '\u0131', + '\u0049\u0307': '\u0069' + } + }, + az: { + regexp: /[\u0130]/g, + map: { + '\u0130': '\u0069', + '\u0049': '\u0131', + '\u0049\u0307': '\u0069' + } + }, + lt: { + regexp: /[\u0049\u004A\u012E\u00CC\u00CD\u0128]/g, + map: { + '\u0049': '\u0069\u0307', + '\u004A': '\u006A\u0307', + '\u012E': '\u012F\u0307', + '\u00CC': '\u0069\u0307\u0300', + '\u00CD': '\u0069\u0307\u0301', + '\u0128': '\u0069\u0307\u0303' + } + } +} + +/** + * Lowercase a string. + * + * @param {String} str + * @return {String} + */ +module.exports = function (str, locale) { + var lang = LANGUAGES[locale] + + str = str == null ? '' : String(str) + + if (lang) { + str = str.replace(lang.regexp, function (m) { return lang.map[m] }) + } + + return str.toLowerCase() +} + +},{}],11:[function(require,module,exports){ +var lowerCase = require('lower-case') + +var NON_WORD_REGEXP = require('./vendor/non-word-regexp') +var CAMEL_CASE_REGEXP = require('./vendor/camel-case-regexp') +var TRAILING_DIGIT_REGEXP = require('./vendor/trailing-digit-regexp') + +/** + * Sentence case a string. + * + * @param {String} str + * @param {String} locale + * @param {String} replacement + * @return {String} + */ +module.exports = function (str, locale, replacement) { + if (str == null) { + return '' + } + + replacement = replacement || ' ' + + function replace (match, index, string) { + if (index === 0 || index === (string.length - match.length)) { + return '' + } + + return replacement + } + + str = String(str) + // Support camel case ("camelCase" -> "camel Case"). + .replace(CAMEL_CASE_REGEXP, '$1 $2') + // Support digit groups ("test2012" -> "test 2012"). + .replace(TRAILING_DIGIT_REGEXP, '$1 $2') + // Remove all non-word characters and replace with a single space. + .replace(NON_WORD_REGEXP, replace) + + // Lower case the entire string. + return lowerCase(str, locale) +} + +},{"./vendor/camel-case-regexp":12,"./vendor/non-word-regexp":13,"./vendor/trailing-digit-regexp":14,"lower-case":10}],12:[function(require,module,exports){ +module.exports = /([\u0061-\u007A\u00B5\u00DF-\u00F6\u00F8-\u00FF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0561-\u0587\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7FA\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A])([\u0041-\u005A\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA\uFF21-\uFF3A\u0030-\u0039\u00B2\u00B3\u00B9\u00BC-\u00BE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19])/g + +},{}],13:[function(require,module,exports){ +module.exports = /[^\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\u0030-\u0039\u00B2\u00B3\u00B9\u00BC-\u00BE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]+/g + +},{}],14:[function(require,module,exports){ +module.exports = /([\u0030-\u0039\u00B2\u00B3\u00B9\u00BC-\u00BE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19])([^\u0030-\u0039\u00B2\u00B3\u00B9\u00BC-\u00BE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19])/g + +},{}],15:[function(require,module,exports){ +var sentenceCase = require('sentence-case') + +/** + * Param case a string. + * + * @param {String} string + * @param {String} [locale] + * @return {String} + */ +module.exports = function (string, locale) { + return sentenceCase(string, locale, '-') +} + +},{"sentence-case":11}],16:[function(require,module,exports){ +module.exports = extend + +var hasOwnProperty = Object.prototype.hasOwnProperty; + +function extend() { + var target = {} + + for (var i = 0; i < arguments.length; i++) { + var source = arguments[i] + + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + target[key] = source[key] + } + } + } + + return target +} + +},{}],17:[function(require,module,exports){ +/** + * Attribute types. + */ + +var types = { + BOOLEAN: 1, + OVERLOADED_BOOLEAN: 2 +}; + +/** + * Properties. + * + * Taken from https://github.com/facebook/react/blob/847357e42e5267b04dd6e297219eaa125ab2f9f4/src/browser/ui/dom/HTMLDOMPropertyConfig.js + * + */ + +var properties = { + /** + * Standard Properties + */ + accept: true, + acceptCharset: true, + accessKey: true, + action: true, + allowFullScreen: types.BOOLEAN, + allowTransparency: true, + alt: true, + async: types.BOOLEAN, + autocomplete: true, + autofocus: types.BOOLEAN, + autoplay: types.BOOLEAN, + cellPadding: true, + cellSpacing: true, + charset: true, + checked: types.BOOLEAN, + classID: true, + className: true, + cols: true, + colSpan: true, + content: true, + contentEditable: true, + contextMenu: true, + controls: types.BOOLEAN, + coords: true, + crossOrigin: true, + data: true, // For `` acts as `src`. + dateTime: true, + defer: types.BOOLEAN, + dir: true, + disabled: types.BOOLEAN, + download: types.OVERLOADED_BOOLEAN, + draggable: true, + enctype: true, + form: true, + formAction: true, + formEncType: true, + formMethod: true, + formNoValidate: types.BOOLEAN, + formTarget: true, + frameBorder: true, + headers: true, + height: true, + hidden: types.BOOLEAN, + href: true, + hreflang: true, + htmlFor: true, + httpEquiv: true, + icon: true, + id: true, + label: true, + lang: true, + list: true, + loop: types.BOOLEAN, + manifest: true, + marginHeight: true, + marginWidth: true, + max: true, + maxLength: true, + media: true, + mediaGroup: true, + method: true, + min: true, + multiple: types.BOOLEAN, + muted: types.BOOLEAN, + name: true, + noValidate: types.BOOLEAN, + open: true, + pattern: true, + placeholder: true, + poster: true, + preload: true, + radiogroup: true, + readOnly: types.BOOLEAN, + rel: true, + required: types.BOOLEAN, + role: true, + rows: true, + rowSpan: true, + sandbox: true, + scope: true, + scrolling: true, + seamless: types.BOOLEAN, + selected: types.BOOLEAN, + shape: true, + size: true, + sizes: true, + span: true, + spellcheck: true, + src: true, + srcdoc: true, + srcset: true, + start: true, + step: true, + style: true, + tabIndex: true, + target: true, + title: true, + type: true, + useMap: true, + value: true, + width: true, + wmode: true, + + /** + * Non-standard Properties + */ + // autoCapitalize and autoCorrect are supported in Mobile Safari for + // keyboard hints. + autocapitalize: true, + autocorrect: true, + // itemProp, itemScope, itemType are for Microdata support. See + // http://schema.org/docs/gs.html + itemProp: true, + itemScope: types.BOOLEAN, + itemType: true, + // property is supported for OpenGraph in meta tags. + property: true +}; + +/** + * Properties to attributes mapping. + * + * The ones not here are simply converted to lower case. + */ + +var attributeNames = { + acceptCharset: 'accept-charset', + className: 'class', + htmlFor: 'for', + httpEquiv: 'http-equiv' +}; + +/** + * Exports. + */ + +module.exports = { + attributeTypes: types, + properties: properties, + attributeNames: attributeNames +}; +},{}],18:[function(require,module,exports){ + +/** + * Void elements. + * + * https://github.com/facebook/react/blob/v0.12.0/src/browser/ui/ReactDOMComponent.js#L99 + */ + +module.exports = { + 'area': true, + 'base': true, + 'br': true, + 'col': true, + 'embed': true, + 'hr': true, + 'img': true, + 'input': true, + 'keygen': true, + 'link': true, + 'meta': true, + 'param': true, + 'source': true, + 'track': true, + 'wbr': true +}; +},{}],19:[function(require,module,exports){ +var diff = require("./vtree/diff.js") + +module.exports = diff + +},{"./vtree/diff.js":49}],20:[function(require,module,exports){ +/*! + * Cross-Browser Split 1.1.1 + * Copyright 2007-2012 Steven Levithan + * Available under the MIT License + * ECMAScript compliant, uniform cross-browser split method + */ + +/** + * Splits a string into an array of strings using a regex or string separator. Matches of the + * separator are not included in the result array. However, if `separator` is a regex that contains + * capturing groups, backreferences are spliced into the result each time `separator` is matched. + * Fixes browser bugs compared to the native `String.prototype.split` and can be used reliably + * cross-browser. + * @param {String} str String to split. + * @param {RegExp|String} separator Regex or string to use for separating the string. + * @param {Number} [limit] Maximum number of items to include in the result array. + * @returns {Array} Array of substrings. + * @example + * + * // Basic use + * split('a b c d', ' '); + * // -> ['a', 'b', 'c', 'd'] + * + * // With limit + * split('a b c d', ' ', 2); + * // -> ['a', 'b'] + * + * // Backreferences in result array + * split('..word1 word2..', /([a-z]+)(\d+)/i); + * // -> ['..', 'word', '1', ' ', 'word', '2', '..'] + */ +module.exports = (function split(undef) { + + var nativeSplit = String.prototype.split, + compliantExecNpcg = /()??/.exec("")[1] === undef, + // NPCG: nonparticipating capturing group + self; + + self = function(str, separator, limit) { + // If `separator` is not a regex, use `nativeSplit` + if (Object.prototype.toString.call(separator) !== "[object RegExp]") { + return nativeSplit.call(str, separator, limit); + } + var output = [], + flags = (separator.ignoreCase ? "i" : "") + (separator.multiline ? "m" : "") + (separator.extended ? "x" : "") + // Proposed for ES6 + (separator.sticky ? "y" : ""), + // Firefox 3+ + lastLastIndex = 0, + // Make `global` and avoid `lastIndex` issues by working with a copy + separator = new RegExp(separator.source, flags + "g"), + separator2, match, lastIndex, lastLength; + str += ""; // Type-convert + if (!compliantExecNpcg) { + // Doesn't need flags gy, but they don't hurt + separator2 = new RegExp("^" + separator.source + "$(?!\\s)", flags); + } + /* Values for `limit`, per the spec: + * If undefined: 4294967295 // Math.pow(2, 32) - 1 + * If 0, Infinity, or NaN: 0 + * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296; + * If negative number: 4294967296 - Math.floor(Math.abs(limit)) + * If other: Type-convert, then use the above rules + */ + limit = limit === undef ? -1 >>> 0 : // Math.pow(2, 32) - 1 + limit >>> 0; // ToUint32(limit) + while (match = separator.exec(str)) { + // `separator.lastIndex` is not reliable cross-browser + lastIndex = match.index + match[0].length; + if (lastIndex > lastLastIndex) { + output.push(str.slice(lastLastIndex, match.index)); + // Fix browsers whose `exec` methods don't consistently return `undefined` for + // nonparticipating capturing groups + if (!compliantExecNpcg && match.length > 1) { + match[0].replace(separator2, function() { + for (var i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undef) { + match[i] = undef; + } + } + }); + } + if (match.length > 1 && match.index < str.length) { + Array.prototype.push.apply(output, match.slice(1)); + } + lastLength = match[0].length; + lastLastIndex = lastIndex; + if (output.length >= limit) { + break; + } + } + if (separator.lastIndex === match.index) { + separator.lastIndex++; // Avoid an infinite loop + } + } + if (lastLastIndex === str.length) { + if (lastLength || !separator.test("")) { + output.push(""); + } + } else { + output.push(str.slice(lastLastIndex)); + } + return output.length > limit ? output.slice(0, limit) : output; + }; + + return self; +})(); + +},{}],21:[function(require,module,exports){ +'use strict'; + +var OneVersionConstraint = require('individual/one-version'); + +var MY_VERSION = '7'; +OneVersionConstraint('ev-store', MY_VERSION); + +var hashKey = '__EV_STORE_KEY@' + MY_VERSION; + +module.exports = EvStore; + +function EvStore(elem) { + var hash = elem[hashKey]; + + if (!hash) { + hash = elem[hashKey] = {}; + } + + return hash; +} + +},{"individual/one-version":23}],22:[function(require,module,exports){ +(function (global){ +'use strict'; + +/*global window, global*/ + +var root = typeof window !== 'undefined' ? + window : typeof global !== 'undefined' ? + global : {}; + +module.exports = Individual; + +function Individual(key, value) { + if (key in root) { + return root[key]; + } + + root[key] = value; + + return value; +} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],23:[function(require,module,exports){ +'use strict'; + +var Individual = require('./index.js'); + +module.exports = OneVersion; + +function OneVersion(moduleName, version, defaultValue) { + var key = '__INDIVIDUAL_ONE_VERSION_' + moduleName; + var enforceKey = key + '_ENFORCE_SINGLETON'; + + var versionValue = Individual(enforceKey, version); + + if (versionValue !== version) { + throw new Error('Can only have one copy of ' + + moduleName + '.\n' + + 'You already have version ' + versionValue + + ' installed.\n' + + 'This means you cannot install version ' + version); + } + + return Individual(key, defaultValue); +} + +},{"./index.js":22}],24:[function(require,module,exports){ +(function (global){ +var topLevel = typeof global !== 'undefined' ? global : + typeof window !== 'undefined' ? window : {} +var minDoc = require('min-document'); + +if (typeof document !== 'undefined') { + module.exports = document; +} else { + var doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4']; + + if (!doccy) { + doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc; + } + + module.exports = doccy; +} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"min-document":1}],25:[function(require,module,exports){ +"use strict"; + +module.exports = function isObject(x) { + return typeof x === "object" && x !== null; +}; + +},{}],26:[function(require,module,exports){ +var patch = require("./vdom/patch.js") + +module.exports = patch + +},{"./vdom/patch.js":31}],27:[function(require,module,exports){ +var isObject = require("is-object") +var isHook = require("../vnode/is-vhook.js") + +module.exports = applyProperties + +function applyProperties(node, props, previous) { + for (var propName in props) { + var propValue = props[propName] + + if (propValue === undefined) { + removeProperty(node, propName, propValue, previous); + } else if (isHook(propValue)) { + removeProperty(node, propName, propValue, previous) + if (propValue.hook) { + propValue.hook(node, + propName, + previous ? previous[propName] : undefined) + } + } else { + if (isObject(propValue)) { + patchObject(node, props, previous, propName, propValue); + } else { + node[propName] = propValue + } + } + } +} + +function removeProperty(node, propName, propValue, previous) { + if (previous) { + var previousValue = previous[propName] + + if (!isHook(previousValue)) { + if (propName === "attributes") { + for (var attrName in previousValue) { + node.removeAttribute(attrName) + } + } else if (propName === "style") { + for (var i in previousValue) { + node.style[i] = "" + } + } else if (typeof previousValue === "string") { + node[propName] = "" + } else { + node[propName] = null + } + } else if (previousValue.unhook) { + previousValue.unhook(node, propName, propValue) + } + } +} + +function patchObject(node, props, previous, propName, propValue) { + var previousValue = previous ? previous[propName] : undefined + + // Set attributes + if (propName === "attributes") { + for (var attrName in propValue) { + var attrValue = propValue[attrName] + + if (attrValue === undefined) { + node.removeAttribute(attrName) + } else { + node.setAttribute(attrName, attrValue) + } + } + + return + } + + if(previousValue && isObject(previousValue) && + getPrototype(previousValue) !== getPrototype(propValue)) { + node[propName] = propValue + return + } + + if (!isObject(node[propName])) { + node[propName] = {} + } + + var replacer = propName === "style" ? "" : undefined + + for (var k in propValue) { + var value = propValue[k] + node[propName][k] = (value === undefined) ? replacer : value + } +} + +function getPrototype(value) { + if (Object.getPrototypeOf) { + return Object.getPrototypeOf(value) + } else if (value.__proto__) { + return value.__proto__ + } else if (value.constructor) { + return value.constructor.prototype + } +} + +},{"../vnode/is-vhook.js":40,"is-object":25}],28:[function(require,module,exports){ +var document = require("global/document") + +var applyProperties = require("./apply-properties") + +var isVNode = require("../vnode/is-vnode.js") +var isVText = require("../vnode/is-vtext.js") +var isWidget = require("../vnode/is-widget.js") +var handleThunk = require("../vnode/handle-thunk.js") + +module.exports = createElement + +function createElement(vnode, opts) { + var doc = opts ? opts.document || document : document + var warn = opts ? opts.warn : null + + vnode = handleThunk(vnode).a + + if (isWidget(vnode)) { + return vnode.init() + } else if (isVText(vnode)) { + return doc.createTextNode(vnode.text) + } else if (!isVNode(vnode)) { + if (warn) { + warn("Item is not a valid virtual dom node", vnode) + } + return null + } + + var node = (vnode.namespace === null) ? + doc.createElement(vnode.tagName) : + doc.createElementNS(vnode.namespace, vnode.tagName) + + var props = vnode.properties + applyProperties(node, props) + + var children = vnode.children + + for (var i = 0; i < children.length; i++) { + var childNode = createElement(children[i], opts) + if (childNode) { + node.appendChild(childNode) + } + } + + return node +} + +},{"../vnode/handle-thunk.js":38,"../vnode/is-vnode.js":41,"../vnode/is-vtext.js":42,"../vnode/is-widget.js":43,"./apply-properties":27,"global/document":24}],29:[function(require,module,exports){ +// Maps a virtual DOM tree onto a real DOM tree in an efficient manner. +// We don't want to read all of the DOM nodes in the tree so we use +// the in-order tree indexing to eliminate recursion down certain branches. +// We only recurse into a DOM node if we know that it contains a child of +// interest. + +var noChild = {} + +module.exports = domIndex + +function domIndex(rootNode, tree, indices, nodes) { + if (!indices || indices.length === 0) { + return {} + } else { + indices.sort(ascending) + return recurse(rootNode, tree, indices, nodes, 0) + } +} + +function recurse(rootNode, tree, indices, nodes, rootIndex) { + nodes = nodes || {} + + + if (rootNode) { + if (indexInRange(indices, rootIndex, rootIndex)) { + nodes[rootIndex] = rootNode + } + + var vChildren = tree.children + + if (vChildren) { + + var childNodes = rootNode.childNodes + + for (var i = 0; i < tree.children.length; i++) { + rootIndex += 1 + + var vChild = vChildren[i] || noChild + var nextIndex = rootIndex + (vChild.count || 0) + + // skip recursion down the tree if there are no nodes down here + if (indexInRange(indices, rootIndex, nextIndex)) { + recurse(childNodes[i], vChild, indices, nodes, rootIndex) + } + + rootIndex = nextIndex + } + } + } + + return nodes +} + +// Binary search for an index in the interval [left, right] +function indexInRange(indices, left, right) { + if (indices.length === 0) { + return false + } + + var minIndex = 0 + var maxIndex = indices.length - 1 + var currentIndex + var currentItem + + while (minIndex <= maxIndex) { + currentIndex = ((maxIndex + minIndex) / 2) >> 0 + currentItem = indices[currentIndex] + + if (minIndex === maxIndex) { + return currentItem >= left && currentItem <= right + } else if (currentItem < left) { + minIndex = currentIndex + 1 + } else if (currentItem > right) { + maxIndex = currentIndex - 1 + } else { + return true + } + } + + return false; +} + +function ascending(a, b) { + return a > b ? 1 : -1 +} + +},{}],30:[function(require,module,exports){ +var applyProperties = require("./apply-properties") + +var isWidget = require("../vnode/is-widget.js") +var VPatch = require("../vnode/vpatch.js") + +var updateWidget = require("./update-widget") + +module.exports = applyPatch + +function applyPatch(vpatch, domNode, renderOptions) { + var type = vpatch.type + var vNode = vpatch.vNode + var patch = vpatch.patch + + switch (type) { + case VPatch.REMOVE: + return removeNode(domNode, vNode) + case VPatch.INSERT: + return insertNode(domNode, patch, renderOptions) + case VPatch.VTEXT: + return stringPatch(domNode, vNode, patch, renderOptions) + case VPatch.WIDGET: + return widgetPatch(domNode, vNode, patch, renderOptions) + case VPatch.VNODE: + return vNodePatch(domNode, vNode, patch, renderOptions) + case VPatch.ORDER: + reorderChildren(domNode, patch) + return domNode + case VPatch.PROPS: + applyProperties(domNode, patch, vNode.properties) + return domNode + case VPatch.THUNK: + return replaceRoot(domNode, + renderOptions.patch(domNode, patch, renderOptions)) + default: + return domNode + } +} + +function removeNode(domNode, vNode) { + var parentNode = domNode.parentNode + + if (parentNode) { + parentNode.removeChild(domNode) + } + + destroyWidget(domNode, vNode); + + return null +} + +function insertNode(parentNode, vNode, renderOptions) { + var newNode = renderOptions.render(vNode, renderOptions) + + if (parentNode) { + parentNode.appendChild(newNode) + } + + return parentNode +} + +function stringPatch(domNode, leftVNode, vText, renderOptions) { + var newNode + + if (domNode.nodeType === 3) { + domNode.replaceData(0, domNode.length, vText.text) + newNode = domNode + } else { + var parentNode = domNode.parentNode + newNode = renderOptions.render(vText, renderOptions) + + if (parentNode && newNode !== domNode) { + parentNode.replaceChild(newNode, domNode) + } + } + + return newNode +} + +function widgetPatch(domNode, leftVNode, widget, renderOptions) { + var updating = updateWidget(leftVNode, widget) + var newNode + + if (updating) { + newNode = widget.update(leftVNode, domNode) || domNode + } else { + newNode = renderOptions.render(widget, renderOptions) + } + + var parentNode = domNode.parentNode + + if (parentNode && newNode !== domNode) { + parentNode.replaceChild(newNode, domNode) + } + + if (!updating) { + destroyWidget(domNode, leftVNode) + } + + return newNode +} + +function vNodePatch(domNode, leftVNode, vNode, renderOptions) { + var parentNode = domNode.parentNode + var newNode = renderOptions.render(vNode, renderOptions) + + if (parentNode && newNode !== domNode) { + parentNode.replaceChild(newNode, domNode) + } + + return newNode +} + +function destroyWidget(domNode, w) { + if (typeof w.destroy === "function" && isWidget(w)) { + w.destroy(domNode) + } +} + +function reorderChildren(domNode, moves) { + var childNodes = domNode.childNodes + var keyMap = {} + var node + var remove + var insert + + for (var i = 0; i < moves.removes.length; i++) { + remove = moves.removes[i] + node = childNodes[remove.from] + if (remove.key) { + keyMap[remove.key] = node + } + domNode.removeChild(node) + } + + var length = childNodes.length + for (var j = 0; j < moves.inserts.length; j++) { + insert = moves.inserts[j] + node = keyMap[insert.key] + // this is the weirdest bug i've ever seen in webkit + domNode.insertBefore(node, insert.to >= length++ ? null : childNodes[insert.to]) + } +} + +function replaceRoot(oldRoot, newRoot) { + if (oldRoot && newRoot && oldRoot !== newRoot && oldRoot.parentNode) { + oldRoot.parentNode.replaceChild(newRoot, oldRoot) + } + + return newRoot; +} + +},{"../vnode/is-widget.js":43,"../vnode/vpatch.js":46,"./apply-properties":27,"./update-widget":32}],31:[function(require,module,exports){ +var document = require("global/document") +var isArray = require("x-is-array") + +var render = require("./create-element") +var domIndex = require("./dom-index") +var patchOp = require("./patch-op") +module.exports = patch + +function patch(rootNode, patches, renderOptions) { + renderOptions = renderOptions || {} + renderOptions.patch = renderOptions.patch && renderOptions.patch !== patch + ? renderOptions.patch + : patchRecursive + renderOptions.render = renderOptions.render || render + + return renderOptions.patch(rootNode, patches, renderOptions) +} + +function patchRecursive(rootNode, patches, renderOptions) { + var indices = patchIndices(patches) + + if (indices.length === 0) { + return rootNode + } + + var index = domIndex(rootNode, patches.a, indices) + var ownerDocument = rootNode.ownerDocument + + if (!renderOptions.document && ownerDocument !== document) { + renderOptions.document = ownerDocument + } + + for (var i = 0; i < indices.length; i++) { + var nodeIndex = indices[i] + rootNode = applyPatch(rootNode, + index[nodeIndex], + patches[nodeIndex], + renderOptions) + } + + return rootNode +} + +function applyPatch(rootNode, domNode, patchList, renderOptions) { + if (!domNode) { + return rootNode + } + + var newNode + + if (isArray(patchList)) { + for (var i = 0; i < patchList.length; i++) { + newNode = patchOp(patchList[i], domNode, renderOptions) + + if (domNode === rootNode) { + rootNode = newNode + } + } + } else { + newNode = patchOp(patchList, domNode, renderOptions) + + if (domNode === rootNode) { + rootNode = newNode + } + } + + return rootNode +} + +function patchIndices(patches) { + var indices = [] + + for (var key in patches) { + if (key !== "a") { + indices.push(Number(key)) + } + } + + return indices +} + +},{"./create-element":28,"./dom-index":29,"./patch-op":30,"global/document":24,"x-is-array":50}],32:[function(require,module,exports){ +var isWidget = require("../vnode/is-widget.js") + +module.exports = updateWidget + +function updateWidget(a, b) { + if (isWidget(a) && isWidget(b)) { + if ("name" in a && "name" in b) { + return a.id === b.id + } else { + return a.init === b.init + } + } + + return false +} + +},{"../vnode/is-widget.js":43}],33:[function(require,module,exports){ +'use strict'; + +module.exports = AttributeHook; + +function AttributeHook(namespace, value) { + if (!(this instanceof AttributeHook)) { + return new AttributeHook(namespace, value); + } + + this.namespace = namespace; + this.value = value; +} + +AttributeHook.prototype.hook = function (node, prop, prev) { + if (prev && prev.type === 'AttributeHook' && + prev.value === this.value && + prev.namespace === this.namespace) { + return; + } + + node.setAttributeNS(this.namespace, prop, this.value); +}; + +AttributeHook.prototype.unhook = function (node, prop, next) { + if (next && next.type === 'AttributeHook' && + next.namespace === this.namespace) { + return; + } + + var colonPosition = prop.indexOf(':'); + var localName = colonPosition > -1 ? prop.substr(colonPosition + 1) : prop; + node.removeAttributeNS(this.namespace, localName); +}; + +AttributeHook.prototype.type = 'AttributeHook'; + +},{}],34:[function(require,module,exports){ +'use strict'; + +var EvStore = require('ev-store'); + +module.exports = EvHook; + +function EvHook(value) { + if (!(this instanceof EvHook)) { + return new EvHook(value); + } + + this.value = value; +} + +EvHook.prototype.hook = function (node, propertyName) { + var es = EvStore(node); + var propName = propertyName.substr(3); + + es[propName] = this.value; +}; + +EvHook.prototype.unhook = function(node, propertyName) { + var es = EvStore(node); + var propName = propertyName.substr(3); + + es[propName] = undefined; +}; + +},{"ev-store":21}],35:[function(require,module,exports){ +'use strict'; + +module.exports = SoftSetHook; + +function SoftSetHook(value) { + if (!(this instanceof SoftSetHook)) { + return new SoftSetHook(value); + } + + this.value = value; +} + +SoftSetHook.prototype.hook = function (node, propertyName) { + if (node[propertyName] !== this.value) { + node[propertyName] = this.value; + } +}; + +},{}],36:[function(require,module,exports){ +'use strict'; + +var split = require('browser-split'); + +var classIdSplit = /([\.#]?[a-zA-Z0-9\u007F-\uFFFF_:-]+)/; +var notClassId = /^\.|#/; + +module.exports = parseTag; + +function parseTag(tag, props) { + if (!tag) { + return 'DIV'; + } + + var noId = !(props.hasOwnProperty('id')); + + var tagParts = split(tag, classIdSplit); + var tagName = null; + + if (notClassId.test(tagParts[1])) { + tagName = 'DIV'; + } + + var classes, part, type, i; + + for (i = 0; i < tagParts.length; i++) { + part = tagParts[i]; + + if (!part) { + continue; + } + + type = part.charAt(0); + + if (!tagName) { + tagName = part; + } else if (type === '.') { + classes = classes || []; + classes.push(part.substring(1, part.length)); + } else if (type === '#' && noId) { + props.id = part.substring(1, part.length); + } + } + + if (classes) { + if (props.className) { + classes.push(props.className); + } + + props.className = classes.join(' '); + } + + return props.namespace ? tagName : tagName.toUpperCase(); +} + +},{"browser-split":20}],37:[function(require,module,exports){ +'use strict'; + +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'; + +// http://www.w3.org/TR/SVGTiny12/attributeTable.html +// http://www.w3.org/TR/SVG/attindex.html +var SVG_PROPERTIES = { + '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 = SVGAttributeNamespace; + +function SVGAttributeNamespace(value) { + if (SVG_PROPERTIES.hasOwnProperty(value)) { + return SVG_PROPERTIES[value]; + } +} + +},{}],38:[function(require,module,exports){ +var isVNode = require("./is-vnode") +var isVText = require("./is-vtext") +var isWidget = require("./is-widget") +var isThunk = require("./is-thunk") + +module.exports = handleThunk + +function handleThunk(a, b) { + var renderedA = a + var renderedB = b + + if (isThunk(b)) { + renderedB = renderThunk(b, a) + } + + if (isThunk(a)) { + renderedA = renderThunk(a, null) + } + + return { + a: renderedA, + b: renderedB + } +} + +function renderThunk(thunk, previous) { + var renderedThunk = thunk.vnode + + if (!renderedThunk) { + renderedThunk = thunk.vnode = thunk.render(previous) + } + + if (!(isVNode(renderedThunk) || + isVText(renderedThunk) || + isWidget(renderedThunk))) { + throw new Error("thunk did not return a valid node"); + } + + return renderedThunk +} + +},{"./is-thunk":39,"./is-vnode":41,"./is-vtext":42,"./is-widget":43}],39:[function(require,module,exports){ +module.exports = isThunk + +function isThunk(t) { + return t && t.type === "Thunk" +} + +},{}],40:[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")) +} + +},{}],41:[function(require,module,exports){ +var version = require("./version") + +module.exports = isVirtualNode + +function isVirtualNode(x) { + return x && x.type === "VirtualNode" && x.version === version +} + +},{"./version":44}],42:[function(require,module,exports){ +var version = require("./version") + +module.exports = isVirtualText + +function isVirtualText(x) { + return x && x.type === "VirtualText" && x.version === version +} + +},{"./version":44}],43:[function(require,module,exports){ +module.exports = isWidget + +function isWidget(w) { + return w && w.type === "Widget" +} + +},{}],44:[function(require,module,exports){ +module.exports = "2" + +},{}],45:[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":39,"./is-vhook":40,"./is-vnode":41,"./is-widget":43,"./version":44}],46:[function(require,module,exports){ +var version = require("./version") + +VirtualPatch.NONE = 0 +VirtualPatch.VTEXT = 1 +VirtualPatch.VNODE = 2 +VirtualPatch.WIDGET = 3 +VirtualPatch.PROPS = 4 +VirtualPatch.ORDER = 5 +VirtualPatch.INSERT = 6 +VirtualPatch.REMOVE = 7 +VirtualPatch.THUNK = 8 + +module.exports = VirtualPatch + +function VirtualPatch(type, vNode, patch) { + this.type = Number(type) + this.vNode = vNode + this.patch = patch +} + +VirtualPatch.prototype.version = version +VirtualPatch.prototype.type = "VirtualPatch" + +},{"./version":44}],47:[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":44}],48:[function(require,module,exports){ +var isObject = require("is-object") +var isHook = require("../vnode/is-vhook") + +module.exports = diffProps + +function diffProps(a, b) { + var diff + + for (var aKey in a) { + if (!(aKey in b)) { + diff = diff || {} + diff[aKey] = undefined + } + + var aValue = a[aKey] + var bValue = b[aKey] + + if (aValue === bValue) { + continue + } else if (isObject(aValue) && isObject(bValue)) { + if (getPrototype(bValue) !== getPrototype(aValue)) { + diff = diff || {} + diff[aKey] = bValue + } else if (isHook(bValue)) { + diff = diff || {} + diff[aKey] = bValue + } else { + var objectDiff = diffProps(aValue, bValue) + if (objectDiff) { + diff = diff || {} + diff[aKey] = objectDiff + } + } + } else { + diff = diff || {} + diff[aKey] = bValue + } + } + + for (var bKey in b) { + if (!(bKey in a)) { + diff = diff || {} + diff[bKey] = b[bKey] + } + } + + return diff +} + +function getPrototype(value) { + if (Object.getPrototypeOf) { + return Object.getPrototypeOf(value) + } else if (value.__proto__) { + return value.__proto__ + } else if (value.constructor) { + return value.constructor.prototype + } +} + +},{"../vnode/is-vhook":40,"is-object":25}],49:[function(require,module,exports){ +var isArray = require("x-is-array") + +var VPatch = require("../vnode/vpatch") +var isVNode = require("../vnode/is-vnode") +var isVText = require("../vnode/is-vtext") +var isWidget = require("../vnode/is-widget") +var isThunk = require("../vnode/is-thunk") +var handleThunk = require("../vnode/handle-thunk") + +var diffProps = require("./diff-props") + +module.exports = diff + +function diff(a, b) { + var patch = { a: a } + walk(a, b, patch, 0) + return patch +} + +function walk(a, b, patch, index) { + if (a === b) { + return + } + + var apply = patch[index] + var applyClear = false + + if (isThunk(a) || isThunk(b)) { + thunks(a, b, patch, index) + } else if (b == null) { + + // If a is a widget we will add a remove patch for it + // Otherwise any child widgets/hooks must be destroyed. + // This prevents adding two remove patches for a widget. + if (!isWidget(a)) { + clearState(a, patch, index) + apply = patch[index] + } + + apply = appendPatch(apply, new VPatch(VPatch.REMOVE, a, b)) + } else if (isVNode(b)) { + if (isVNode(a)) { + if (a.tagName === b.tagName && + a.namespace === b.namespace && + a.key === b.key) { + var propsPatch = diffProps(a.properties, b.properties) + if (propsPatch) { + apply = appendPatch(apply, + new VPatch(VPatch.PROPS, a, propsPatch)) + } + apply = diffChildren(a, b, patch, apply, index) + } else { + apply = appendPatch(apply, new VPatch(VPatch.VNODE, a, b)) + applyClear = true + } + } else { + apply = appendPatch(apply, new VPatch(VPatch.VNODE, a, b)) + applyClear = true + } + } else if (isVText(b)) { + if (!isVText(a)) { + apply = appendPatch(apply, new VPatch(VPatch.VTEXT, a, b)) + applyClear = true + } else if (a.text !== b.text) { + apply = appendPatch(apply, new VPatch(VPatch.VTEXT, a, b)) + } + } else if (isWidget(b)) { + if (!isWidget(a)) { + applyClear = true + } + + apply = appendPatch(apply, new VPatch(VPatch.WIDGET, a, b)) + } + + if (apply) { + patch[index] = apply + } + + if (applyClear) { + clearState(a, patch, index) + } +} + +function diffChildren(a, b, patch, apply, index) { + var aChildren = a.children + var orderedSet = reorder(aChildren, b.children) + var bChildren = orderedSet.children + + var aLen = aChildren.length + var bLen = bChildren.length + var len = aLen > bLen ? aLen : bLen + + for (var i = 0; i < len; i++) { + var leftNode = aChildren[i] + var rightNode = bChildren[i] + index += 1 + + if (!leftNode) { + if (rightNode) { + // Excess nodes in b need to be added + apply = appendPatch(apply, + new VPatch(VPatch.INSERT, null, rightNode)) + } + } else { + walk(leftNode, rightNode, patch, index) + } + + if (isVNode(leftNode) && leftNode.count) { + index += leftNode.count + } + } + + if (orderedSet.moves) { + // Reorder nodes last + apply = appendPatch(apply, new VPatch( + VPatch.ORDER, + a, + orderedSet.moves + )) + } + + return apply +} + +function clearState(vNode, patch, index) { + // TODO: Make this a single walk, not two + unhook(vNode, patch, index) + destroyWidgets(vNode, patch, index) +} + +// Patch records for all destroyed widgets must be added because we need +// a DOM node reference for the destroy function +function destroyWidgets(vNode, patch, index) { + if (isWidget(vNode)) { + if (typeof vNode.destroy === "function") { + patch[index] = appendPatch( + patch[index], + new VPatch(VPatch.REMOVE, vNode, null) + ) + } + } else if (isVNode(vNode) && (vNode.hasWidgets || vNode.hasThunks)) { + var children = vNode.children + var len = children.length + for (var i = 0; i < len; i++) { + var child = children[i] + index += 1 + + destroyWidgets(child, patch, index) + + if (isVNode(child) && child.count) { + index += child.count + } + } + } else if (isThunk(vNode)) { + thunks(vNode, null, patch, index) + } +} + +// Create a sub-patch for thunks +function thunks(a, b, patch, index) { + var nodes = handleThunk(a, b) + var thunkPatch = diff(nodes.a, nodes.b) + if (hasPatches(thunkPatch)) { + patch[index] = new VPatch(VPatch.THUNK, null, thunkPatch) + } +} + +function hasPatches(patch) { + for (var index in patch) { + if (index !== "a") { + return true + } + } + + return false +} + +// Execute hooks when two nodes are identical +function unhook(vNode, patch, index) { + if (isVNode(vNode)) { + if (vNode.hooks) { + patch[index] = appendPatch( + patch[index], + new VPatch( + VPatch.PROPS, + vNode, + undefinedKeys(vNode.hooks) + ) + ) + } + + if (vNode.descendantHooks || vNode.hasThunks) { + var children = vNode.children + var len = children.length + for (var i = 0; i < len; i++) { + var child = children[i] + index += 1 + + unhook(child, patch, index) + + if (isVNode(child) && child.count) { + index += child.count + } + } + } + } else if (isThunk(vNode)) { + thunks(vNode, null, patch, index) + } +} + +function undefinedKeys(obj) { + var result = {} + + for (var key in obj) { + result[key] = undefined + } + + return result +} + +// List diff, naive left to right reordering +function reorder(aChildren, bChildren) { + // O(M) time, O(M) memory + var bChildIndex = keyIndex(bChildren) + var bKeys = bChildIndex.keys + var bFree = bChildIndex.free + + if (bFree.length === bChildren.length) { + return { + children: bChildren, + moves: null + } + } + + // O(N) time, O(N) memory + var aChildIndex = keyIndex(aChildren) + var aKeys = aChildIndex.keys + var aFree = aChildIndex.free + + if (aFree.length === aChildren.length) { + return { + children: bChildren, + moves: null + } + } + + // O(MAX(N, M)) memory + var newChildren = [] + + var freeIndex = 0 + var freeCount = bFree.length + var deletedItems = 0 + + // Iterate through a and match a node in b + // O(N) time, + for (var i = 0 ; i < aChildren.length; i++) { + var aItem = aChildren[i] + var itemIndex + + if (aItem.key) { + if (bKeys.hasOwnProperty(aItem.key)) { + // Match up the old keys + itemIndex = bKeys[aItem.key] + newChildren.push(bChildren[itemIndex]) + + } else { + // Remove old keyed items + itemIndex = i - deletedItems++ + newChildren.push(null) + } + } else { + // Match the item in a with the next free item in b + if (freeIndex < freeCount) { + itemIndex = bFree[freeIndex++] + newChildren.push(bChildren[itemIndex]) + } else { + // There are no free items in b to match with + // the free items in a, so the extra free nodes + // are deleted. + itemIndex = i - deletedItems++ + newChildren.push(null) + } + } + } + + var lastFreeIndex = freeIndex >= bFree.length ? + bChildren.length : + bFree[freeIndex] + + // Iterate through b and append any new keys + // O(M) time + for (var j = 0; j < bChildren.length; j++) { + var newItem = bChildren[j] + + if (newItem.key) { + if (!aKeys.hasOwnProperty(newItem.key)) { + // Add any new keyed items + // We are adding new items to the end and then sorting them + // in place. In future we should insert new items in place. + newChildren.push(newItem) + } + } else if (j >= lastFreeIndex) { + // Add any leftover non-keyed items + newChildren.push(newItem) + } + } + + var simulate = newChildren.slice() + var simulateIndex = 0 + var removes = [] + var inserts = [] + var simulateItem + + for (var k = 0; k < bChildren.length;) { + var wantedItem = bChildren[k] + simulateItem = simulate[simulateIndex] + + // remove items + while (simulateItem === null && simulate.length) { + removes.push(remove(simulate, simulateIndex, null)) + simulateItem = simulate[simulateIndex] + } + + if (!simulateItem || simulateItem.key !== wantedItem.key) { + // if we need a key in this position... + if (wantedItem.key) { + if (simulateItem && simulateItem.key) { + // if an insert doesn't put this key in place, it needs to move + if (bKeys[simulateItem.key] !== k + 1) { + removes.push(remove(simulate, simulateIndex, simulateItem.key)) + simulateItem = simulate[simulateIndex] + // if the remove didn't put the wanted item in place, we need to insert it + if (!simulateItem || simulateItem.key !== wantedItem.key) { + inserts.push({key: wantedItem.key, to: k}) + } + // items are matching, so skip ahead + else { + simulateIndex++ + } + } + else { + inserts.push({key: wantedItem.key, to: k}) + } + } + else { + inserts.push({key: wantedItem.key, to: k}) + } + k++ + } + // a key in simulate has no matching wanted key, remove it + else if (simulateItem && simulateItem.key) { + removes.push(remove(simulate, simulateIndex, simulateItem.key)) + } + } + else { + simulateIndex++ + k++ + } + } + + // remove all the remaining nodes from simulate + while(simulateIndex < simulate.length) { + simulateItem = simulate[simulateIndex] + removes.push(remove(simulate, simulateIndex, simulateItem && simulateItem.key)) + } + + // If the only moves we have are deletes then we can just + // let the delete patch remove these items. + if (removes.length === deletedItems && !inserts.length) { + return { + children: newChildren, + moves: null + } + } + + return { + children: newChildren, + moves: { + removes: removes, + inserts: inserts + } + } +} + +function remove(arr, index, key) { + arr.splice(index, 1) + + return { + from: index, + key: key + } +} + +function keyIndex(children) { + var keys = {} + var free = [] + var length = children.length + + for (var i = 0; i < length; i++) { + var child = children[i] + + if (child.key) { + keys[child.key] = i + } else { + free.push(i) + } + } + + return { + keys: keys, // A hash of key name to index + free: free // An array of unkeyed item indices + } +} + +function appendPatch(apply, patch) { + if (apply) { + if (isArray(apply)) { + apply.push(patch) + } else { + apply = [apply, patch] + } + + return apply + } else { + return patch + } +} + +},{"../vnode/handle-thunk":38,"../vnode/is-thunk":39,"../vnode/is-vnode":41,"../vnode/is-vtext":42,"../vnode/is-widget":43,"../vnode/vpatch":46,"./diff-props":48,"x-is-array":50}],50:[function(require,module,exports){ +var nativeIsArray = Array.isArray +var toString = Object.prototype.toString + +module.exports = nativeIsArray || isArray + +function isArray(obj) { + return toString.call(obj) === "[object Array]" +} + +},{}],51:[function(require,module,exports){ +"use strict"; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var svg = require("./virtual-hyperscript-svg"); + +var _require = require("./render-dom"); + +var makeDOMDriver = _require.makeDOMDriver; + +var _require2 = require("./render-html"); + +var makeHTMLDriver = _require2.makeHTMLDriver; + +var mockDOMSource = require("./mock-dom-source"); +var h = require("./virtual-hyperscript"); +var hh = require("hyperscript-helpers")(h); + +var CycleDOM = _extends({ + /** + * A factory for the DOM driver function. Takes a `container` to define the + * target on the existing DOM which this driver will operate on. The output + * ("source") of this driver is a collection of Observables queried with: + * `DOMSource.select(selector).events(eventType)` returns an Observable of + * events of `eventType` happening on the element determined by `selector`. + * Just `DOMSource.select(selector).observable` returns an Observable of the + * DOM element matched by the given selector. Also, + * `DOMSource.select(':root').observable` returns an Observable of DOM element + * corresponding to the root (or container) of the app on the DOM. The + * `events()` function also allows you to specify the `useCapture` parameter + * of the event listener. That is, the full function signature is + * `events(eventType, useCapture)` where `useCapture` is by default `false`. + * + * @param {(String|HTMLElement)} container the DOM selector for the element + * (or the element itself) to contain the rendering of the VTrees. + * @return {Function} the DOM driver function. The function expects an + * Observable of VTree as input, and outputs the source object for this + * driver, containing functions `select()` and `dispose()` that can be used + * for debugging and testing. + * @param {Object} options an options object containing additional + * configurations. The options object is optional. These are the parameters + * that may be specified: + * - `onError`: a callback function to handle errors. By default it is + * `console.error`. + * @function makeDOMDriver + */ + makeDOMDriver: makeDOMDriver, + + /** + * A factory for the HTML driver function. + * + * @return {Function} the HTML driver function. The function expects an + * Observable of Virtual DOM elements as input, and outputs an Observable of + * strings as the HTML renderization of the virtual DOM elements. + * @function makeHTMLDriver + */ + makeHTMLDriver: makeHTMLDriver, + + /** + * A shortcut to [virtual-hyperscript]( + * https://github.com/Matt-Esch/virtual-dom/tree/master/virtual-hyperscript). + * This is a helper for creating VTrees in Views. + * @name h + */ + h: h + +}, hh, { + + /** + * An adapter around virtual-hyperscript `h()` to allow JSX to be used easily + * with Babel. Place the [Babel configuration comment]( + * http://babeljs.io/docs/advanced/transformers/other/react/) `@jsx hJSX` at + * the top of the ES6 file, make sure you import `hJSX` with + * `import {hJSX} from '@cycle/dom'`, and then you can use JSX to create + * VTrees. + * + * Note that to pass in custom attributes, e.g. data-*, you must use the + * attributes key like ``. + * + * @name hJSX + */ + hJSX: function hJSX(tag, attrs) { + for (var _len = arguments.length, children = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + children[_key - 2] = arguments[_key]; + } + + return h(tag, attrs, children); + }, + + /** + * A shortcut to the svg hyperscript function. + * @name svg + */ + svg: svg, + + /** + * A testing utility which aids in creating a queryable collection of + * Observables. Call mockDOMSource giving it an object specifying selectors, + * eventTypes and their Observables, and get as output an object following the + * same format as the DOM Driver's source. Example: + * + * ```js + * const domSource = mockDOMSource({ + * '.foo': { + * 'click': Rx.Observable.of({target: {}}), + * 'mouseover': Rx.Observable.of({target: {}}), + * }, + * '.bar': { + * 'scroll': Rx.Observable.of({target: {}}), + * observable: Rx.Observable.of({tagName: 'div'}), + * } + * }); + * + * // Usage + * const click$ = domSource.select('.foo').events('click'); + * const element$ = domSource.select('.bar').observable; + * ``` + * + * @param {Object} mockedSelectors an object where keys are selector strings + * and values are objects. Those nested objects have eventType strings as keys + * and values are Observables you created. + * @return {Object} fake DOM source object, containing a function `select()` + * which can be used just like the DOM Driver's source. Call + * `select(selector).events(eventType)` on the source object to get the + * Observable you defined in the input of `mockDOMSource`. + * @function mockDOMSource + */ + mockDOMSource: mockDOMSource +}); + +module.exports = CycleDOM; +/** + * Shortcuts to + * [hyperscript-helpers](https://github.com/ohanhi/hyperscript-helpers). + * This is a helper for writing virtual-hyperscript. Create virtual DOM + * elements with `div('.wrapper', [ h1('Header') ])` instead of + * `h('div.wrapper', [ h('h1', 'Header') ])`. + * @name hyperscript-helpers + */ + +},{"./mock-dom-source":53,"./render-dom":54,"./render-html":55,"./virtual-hyperscript":58,"./virtual-hyperscript-svg":57,"hyperscript-helpers":2}],52:[function(require,module,exports){ +(function (global){ +"use strict"; + +var Rx = (typeof window !== "undefined" ? window['Rx'] : typeof global !== "undefined" ? global['Rx'] : null); + +var disposableCreate = Rx.Disposable.create; +var CompositeDisposable = Rx.CompositeDisposable; +var AnonymousObservable = Rx.AnonymousObservable; + +function createListener(_ref) { + var element = _ref.element; + var eventName = _ref.eventName; + var handler = _ref.handler; + var useCapture = _ref.useCapture; + + if (element.addEventListener) { + element.addEventListener(eventName, handler, useCapture); + return disposableCreate(function removeEventListener() { + element.removeEventListener(eventName, handler, useCapture); + }); + } + throw new Error("No listener found"); +} + +function createEventListener(_ref2) { + var element = _ref2.element; + var eventName = _ref2.eventName; + var handler = _ref2.handler; + var useCapture = _ref2.useCapture; + + var disposables = new CompositeDisposable(); + + if (Array.isArray(element)) { + for (var i = 0, len = element.length; i < len; i++) { + disposables.add(createEventListener({ + element: element[i], + eventName: eventName, + handler: handler, + useCapture: useCapture + })); + } + } else if (element) { + disposables.add(createListener({ element: element, eventName: eventName, handler: handler, useCapture: useCapture })); + } + return disposables; +} + +function fromEvent(element, eventName) { + var useCapture = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2]; + + return new AnonymousObservable(function subscribe(observer) { + return createEventListener({ + element: element, + eventName: eventName, + handler: function handler() { + observer.onNext(arguments[0]); + }, + useCapture: useCapture + }); + }).share(); +} + +module.exports = fromEvent; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],53:[function(require,module,exports){ +(function (global){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +var _rx = (typeof window !== "undefined" ? window['Rx'] : typeof global !== "undefined" ? global['Rx'] : null); + +var _rx2 = _interopRequireDefault(_rx); + +var emptyStream = _rx2['default'].Observable.empty(); + +function getEventsStreamForSelector(mockedEventTypes) { + return function getEventsStream(eventType) { + for (var key in mockedEventTypes) { + if (mockedEventTypes.hasOwnProperty(key) && key === eventType) { + return mockedEventTypes[key]; + } + } + return emptyStream; + }; +} + +function makeMockSelector(mockedSelectors) { + return function select(selector) { + for (var key in mockedSelectors) { + if (mockedSelectors.hasOwnProperty(key) && key === selector) { + var observable = emptyStream; + if (mockedSelectors[key].hasOwnProperty('observable')) { + observable = mockedSelectors[key].observable; + } + return { + observable: observable, + select: makeMockSelector(mockedSelectors[key]), + events: getEventsStreamForSelector(mockedSelectors[key]) + }; + } + } + return { + observable: emptyStream, + events: function events() { + return emptyStream; + } + }; + }; +} + +function mockDOMSource() { + var mockedSelectors = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + + return { + observable: emptyStream, + select: makeMockSelector(mockedSelectors), + events: function events() { + return emptyStream; + } + }; +} + +exports['default'] = mockDOMSource; +module.exports = exports['default']; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],54:[function(require,module,exports){ +(function (global){ +"use strict"; + +var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; })(); + +var Rx = (typeof window !== "undefined" ? window['Rx'] : typeof global !== "undefined" ? global['Rx'] : null); +var fromEvent = require("./fromevent"); +var VDOM = { + h: require("./virtual-hyperscript"), + diff: require("virtual-dom/diff"), + patch: require("virtual-dom/patch"), + parse: typeof window !== "undefined" ? require("vdom-parser") : function () {} +}; + +var _require = require("./transposition"); + +var transposeVTree = _require.transposeVTree; + +var matchesSelector = undefined; +// Try-catch to prevent unnecessary import of DOM-specifics in Node.js env: +try { + matchesSelector = require("matches-selector"); +} catch (err) { + matchesSelector = function () {}; +} + +function isElement(obj) { + return typeof HTMLElement === "object" ? obj instanceof HTMLElement || obj instanceof DocumentFragment : //DOM2 + obj && typeof obj === "object" && obj !== null && (obj.nodeType === 1 || obj.nodeType === 11) && typeof obj.nodeName === "string"; +} + +function wrapTopLevelVTree(vtree, rootElem) { + var _vtree$properties$id = vtree.properties.id; + var vtreeId = _vtree$properties$id === undefined ? "" : _vtree$properties$id; + var _vtree$properties$className = vtree.properties.className; + var vtreeClass = _vtree$properties$className === undefined ? "" : _vtree$properties$className; + + var sameId = vtreeId === rootElem.id; + var sameClass = vtreeClass === rootElem.className; + var sameTagName = vtree.tagName.toUpperCase() === rootElem.tagName; + if (sameId && sameClass && sameTagName) { + return vtree; + } + var attrs = {}; + if (rootElem.id) { + attrs.id = rootElem.id; + } + if (rootElem.className) { + attrs.className = rootElem.className; + } + return VDOM.h(rootElem.tagName, attrs, [vtree]); +} + +function makeDiffAndPatchToElement$(rootElem) { + return function diffAndPatchToElement$(_ref) { + var _ref2 = _slicedToArray(_ref, 2); + + var oldVTree = _ref2[0]; + var newVTree = _ref2[1]; + + if (typeof newVTree === "undefined") { + return Rx.Observable.empty(); + } + + var prevVTree = wrapTopLevelVTree(oldVTree, rootElem); + var nextVTree = wrapTopLevelVTree(newVTree, rootElem); + /* eslint-disable */ + rootElem = VDOM.patch(rootElem, VDOM.diff(prevVTree, nextVTree)); + /* eslint-enable */ + return Rx.Observable.just(rootElem); + }; +} + +function renderRawRootElem$(vtree$, domContainer) { + var diffAndPatchToElement$ = makeDiffAndPatchToElement$(domContainer); + return vtree$.flatMapLatest(transposeVTree).startWith(VDOM.parse(domContainer)).pairwise().flatMap(diffAndPatchToElement$); +} + +function isolateSource(source, scope) { + return source.select(".cycle-scope-" + scope); +} + +function isolateSink(sink, scope) { + return sink.map(function (vtree) { + var _vtree$properties$className2 = vtree.properties.className; + var vtreeClass = _vtree$properties$className2 === undefined ? "" : _vtree$properties$className2; + + if (vtreeClass.indexOf("cycle-scope-" + scope) === -1) { + var c = (vtreeClass + " cycle-scope-" + scope).trim(); + vtree.properties.className = c; + } + if (vtree.properties.attributes) { + // for svg root elements + var vtreeAttrClass = vtree.properties.attributes["class"] || ""; + if (vtreeAttrClass.indexOf("cycle-scope-" + scope) === -1) { + var cattr = (vtreeAttrClass + " cycle-scope-" + scope).trim(); + vtree.properties.attributes["class"] = cattr; + } + } + return vtree; + }); +} + +function makeIsStrictlyInRootScope(namespace) { + var classIsForeign = function classIsForeign(c) { + var matched = c.match(/cycle-scope-(\S+)/); + return matched && namespace.indexOf("." + c) === -1; + }; + var classIsDomestic = function classIsDomestic(c) { + var matched = c.match(/cycle-scope-(\S+)/); + return matched && namespace.indexOf("." + c) !== -1; + }; + return function isStrictlyInRootScope(leaf) { + for (var el = leaf; el; el = el.parentElement) { + var split = String.prototype.split; + var classList = el.classList || split.call(el.className, " "); + if (Array.prototype.some.call(classList, classIsDomestic)) { + return true; + } + if (Array.prototype.some.call(classList, classIsForeign)) { + return false; + } + } + return true; + }; +} + +var eventTypesThatDontBubble = ["load", "unload", "focus", "blur", "mouseenter", "mouseleave", "submit", "change", "reset", "timeupdate", "playing", "waiting", "seeking", "seeked", "ended", "loadedmetadata", "loadeddata", "canplay", "canplaythrough", "durationchange", "play", "pause", "ratechange", "volumechange", "suspend", "emptied", "stalled"]; + +function maybeMutateEventPropagationAttributes(event) { + if (!event.hasOwnProperty("propagationHasBeenStopped")) { + (function () { + event.propagationHasBeenStopped = false; + var oldStopPropagation = event.stopPropagation; + event.stopPropagation = function stopPropagation() { + oldStopPropagation.call(this); + this.propagationHasBeenStopped = true; + }; + })(); + } +} + +function mutateEventCurrentTarget(event, currentTargetElement) { + try { + Object.defineProperty(event, "currentTarget", { + value: currentTargetElement, + configurable: true + }); + } catch (err) { + void err; // noop + } + event.ownerTarget = currentTargetElement; +} + +function makeSimulateBubbling(namespace, rootEl) { + var isStrictlyInRootScope = makeIsStrictlyInRootScope(namespace); + var descendantSel = namespace.join(" "); + var topSel = namespace.join(""); + var roof = rootEl.parentElement; + + return function simulateBubbling(ev) { + maybeMutateEventPropagationAttributes(ev); + if (ev.propagationHasBeenStopped) { + return false; + } + for (var el = ev.target; el && el !== roof; el = el.parentElement) { + if (!isStrictlyInRootScope(el)) { + continue; + } + if (matchesSelector(el, descendantSel) || matchesSelector(el, topSel)) { + mutateEventCurrentTarget(ev, el); + return true; + } + } + return false; + }; +} + +function makeEventsSelector(rootEl$, namespace) { + return function events(eventName) { + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + + if (typeof eventName !== "string") { + throw new Error("DOM driver's events() expects argument to be a " + "string representing the event type to listen for."); + } + var useCapture = false; + if (eventTypesThatDontBubble.indexOf(eventName) !== -1) { + useCapture = true; + } + if (typeof options.useCapture === "boolean") { + useCapture = options.useCapture; + } + + return rootEl$.first().flatMapLatest(function (rootEl) { + if (!namespace || namespace.length === 0) { + return fromEvent(rootEl, eventName, useCapture); + } + var simulateBubbling = makeSimulateBubbling(namespace, rootEl); + return fromEvent(rootEl, eventName, useCapture).filter(simulateBubbling); + }).share(); + }; +} + +function makeElementSelector(rootEl$) { + return function select(selector) { + if (typeof selector !== "string") { + throw new Error("DOM driver's select() expects the argument to be a " + "string as a CSS selector"); + } + + var namespace = this.namespace; + var trimmedSelector = selector.trim(); + var childNamespace = trimmedSelector === ":root" ? namespace : namespace.concat(trimmedSelector); + var element$ = rootEl$.map(function (rootEl) { + if (childNamespace.join("") === "") { + return rootEl; + } + var nodeList = rootEl.querySelectorAll(childNamespace.join(" ")); + if (nodeList.length === 0) { + nodeList = rootEl.querySelectorAll(childNamespace.join("")); + } + var array = Array.prototype.slice.call(nodeList); + return array.filter(makeIsStrictlyInRootScope(childNamespace)); + }); + return { + observable: element$, + namespace: childNamespace, + select: makeElementSelector(rootEl$), + events: makeEventsSelector(rootEl$, childNamespace), + isolateSource: isolateSource, + isolateSink: isolateSink + }; + }; +} + +function validateDOMSink(vtree$) { + if (!vtree$ || typeof vtree$.subscribe !== "function") { + throw new Error("The DOM driver function expects as input an " + "Observable of virtual DOM elements"); + } +} + +function defaultOnErrorFn(msg) { + if (console && console.error) { + console.error(msg); + } else { + console.log(msg); + } +} + +function makeDOMDriver(container, options) { + // Find and prepare the container + var domContainer = typeof container === "string" ? document.querySelector(container) : container; + // Check pre-conditions + if (typeof container === "string" && domContainer === null) { + throw new Error("Cannot render into unknown element `" + container + "`"); + } else if (!isElement(domContainer)) { + throw new Error("Given container is not a DOM element neither a selector " + "string."); + } + + var _ref3 = options || {}; + + var _ref3$onError = _ref3.onError; + var onError = _ref3$onError === undefined ? defaultOnErrorFn : _ref3$onError; + + if (typeof onError !== "function") { + throw new Error("You provided an `onError` to makeDOMDriver but it was " + "not a function. It should be a callback function to handle errors."); + } + + return function domDriver(vtree$) { + validateDOMSink(vtree$); + var rootElem$ = renderRawRootElem$(vtree$, domContainer).startWith(domContainer).doOnError(onError).replay(null, 1); + var disposable = rootElem$.connect(); + return { + observable: rootElem$, + namespace: [], + select: makeElementSelector(rootElem$), + events: makeEventsSelector(rootElem$, []), + dispose: function dispose() { + return disposable.dispose(); + }, + isolateSource: isolateSource, + isolateSink: isolateSink + }; + }; +} + +module.exports = { + isElement: isElement, + wrapTopLevelVTree: wrapTopLevelVTree, + makeDiffAndPatchToElement$: makeDiffAndPatchToElement$, + renderRawRootElem$: renderRawRootElem$, + validateDOMSink: validateDOMSink, + + makeDOMDriver: makeDOMDriver +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./fromevent":52,"./transposition":56,"./virtual-hyperscript":58,"matches-selector":3,"vdom-parser":4,"virtual-dom/diff":19,"virtual-dom/patch":26}],55:[function(require,module,exports){ +(function (global){ +"use strict"; + +var Rx = (typeof window !== "undefined" ? window['Rx'] : typeof global !== "undefined" ? global['Rx'] : null); +var toHTML = require("vdom-to-html"); + +var _require = require("./transposition"); + +var transposeVTree = _require.transposeVTree; + +function makeBogusSelect() { + return function select() { + return { + observable: Rx.Observable.empty(), + events: function events() { + return Rx.Observable.empty(); + } + }; + }; +} + +function makeHTMLDriver() { + return function htmlDriver(vtree$) { + var output$ = vtree$.flatMapLatest(transposeVTree).last().map(toHTML); + output$.select = makeBogusSelect(); + return output$; + }; +} + +module.exports = { + makeBogusSelect: makeBogusSelect, + + makeHTMLDriver: makeHTMLDriver +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./transposition":56,"vdom-to-html":8}],56:[function(require,module,exports){ +(function (global){ +"use strict"; + +var Rx = (typeof window !== "undefined" ? window['Rx'] : typeof global !== "undefined" ? global['Rx'] : null); +var VirtualNode = require("virtual-dom/vnode/vnode"); + +/** + * Converts a tree of VirtualNode|Observable into + * Observable. + */ +function transposeVTree(vtree) { + if (typeof vtree.subscribe === "function") { + return vtree.flatMapLatest(transposeVTree); + } else if (vtree.type === "VirtualText") { + return Rx.Observable.just(vtree); + } else if (vtree.type === "VirtualNode" && Array.isArray(vtree.children) && vtree.children.length > 0) { + return Rx.Observable.combineLatest(vtree.children.map(transposeVTree), function () { + for (var _len = arguments.length, arr = Array(_len), _key = 0; _key < _len; _key++) { + arr[_key] = arguments[_key]; + } + + return new VirtualNode(vtree.tagName, vtree.properties, arr, vtree.key, vtree.namespace); + }); + } else if (vtree.type === "VirtualNode" || vtree.type === "Widget" || vtree.type === "Thunk") { + return Rx.Observable.just(vtree); + } else { + throw new Error("Unhandled case in transposeVTree()"); + } +} + +module.exports = { + transposeVTree: transposeVTree +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"virtual-dom/vnode/vnode":45}],57:[function(require,module,exports){ +/*eslint-disable */ +'use strict'; + +var isArray = require('x-is-array'); + +// START Cycle.js-specific code >>>>>>>> +var h = require('./virtual-hyperscript'); +// END Cycle.js-specific code <<<<<<<<<< + +var SVGAttributeNamespace = require('virtual-dom/virtual-hyperscript/svg-attribute-namespace'); +var attributeHook = require('virtual-dom/virtual-hyperscript/hooks/attribute-hook'); + +var SVG_NAMESPACE = 'http://www.w3.org/2000/svg'; + +module.exports = svg; + +function svg(tagName, properties, children) { + if (!children && isChildren(properties)) { + children = properties; + properties = {}; + } + + properties = properties || {}; + + // set namespace for svg + properties.namespace = SVG_NAMESPACE; + + var attributes = properties.attributes || (properties.attributes = {}); + + for (var key in properties) { + if (!properties.hasOwnProperty(key)) { + continue; + } + + var namespace = SVGAttributeNamespace(key); + + if (namespace === undefined) { + // not a svg attribute + continue; + } + + var value = properties[key]; + + if (typeof value !== 'string' && typeof value !== 'number' && typeof value !== 'boolean') { + continue; + } + + if (namespace !== null) { + // namespaced attribute + properties[key] = attributeHook(namespace, value); + continue; + } + + attributes[key] = value; + properties[key] = undefined; + } + + return h(tagName, properties, children); +} + +// START Cycle.js-specific code >>>>>>>> +function isObservable(x) { + return x && typeof x.subscribe === 'function'; +} + +function isChildren(x) { + return typeof x === 'string' || isArray(x) || isObservable(x); +} +// END Cycle.js-specific code <<<<<<<<<< + +},{"./virtual-hyperscript":58,"virtual-dom/virtual-hyperscript/hooks/attribute-hook":33,"virtual-dom/virtual-hyperscript/svg-attribute-namespace":37,"x-is-array":50}],58:[function(require,module,exports){ +/* eslint-disable */ +'use strict'; + +var isArray = require('x-is-array'); + +var VNode = require('virtual-dom/vnode/vnode.js'); +var VText = require('virtual-dom/vnode/vtext.js'); +var isVNode = require('virtual-dom/vnode/is-vnode'); +var isVText = require('virtual-dom/vnode/is-vtext'); +var isWidget = require('virtual-dom/vnode/is-widget'); +var isHook = require('virtual-dom/vnode/is-vhook'); +var isVThunk = require('virtual-dom/vnode/is-thunk'); + +var parseTag = require('virtual-dom/virtual-hyperscript/parse-tag.js'); +var softSetHook = require('virtual-dom/virtual-hyperscript/hooks/soft-set-hook.js'); +var evHook = require('virtual-dom/virtual-hyperscript/hooks/ev-hook.js'); + +module.exports = h; + +function h(tagName, properties, children) { + var childNodes = []; + var tag, props, key, namespace; + + if (!children && isChildren(properties)) { + children = properties; + props = {}; + } + + props = props || properties || {}; + tag = parseTag(tagName, props); + + // support keys + if (props.hasOwnProperty('key')) { + key = props.key; + props.key = undefined; + } + + // support namespace + if (props.hasOwnProperty('namespace')) { + namespace = props.namespace; + props.namespace = undefined; + } + + // fix cursor bug + if (tag === 'INPUT' && !namespace && props.hasOwnProperty('value') && props.value !== undefined && !isHook(props.value)) { + props.value = softSetHook(props.value); + } + + transformProperties(props); + + if (children !== undefined && children !== null) { + addChild(children, childNodes, tag, props); + } + + return new VNode(tag, props, childNodes, key, namespace); +} + +function addChild(c, childNodes, tag, props) { + if (typeof c === 'string') { + childNodes.push(new VText(c)); + } else if (typeof c === 'number') { + childNodes.push(new VText(String(c))); + } else if (isChild(c)) { + childNodes.push(c); + } else if (isArray(c)) { + for (var i = 0; i < c.length; i++) { + addChild(c[i], childNodes, tag, props); + } + } else if (c === null || c === undefined) { + return; + } else { + throw UnexpectedVirtualElement({ + foreignObject: c, + parentVnode: { + tagName: tag, + properties: props + } + }); + } +} + +function transformProperties(props) { + for (var propName in props) { + if (props.hasOwnProperty(propName)) { + var value = props[propName]; + + if (isHook(value)) { + continue; + } + + if (propName.substr(0, 3) === 'ev-') { + // add ev-foo support + props[propName] = evHook(value); + } + } + } +} + +// START Cycle.js-specific code >>>>>>>> +function isObservable(x) { + return x && typeof x.subscribe === 'function'; +} + +function isChild(x) { + return isVNode(x) || isVText(x) || isObservable(x) || isWidget(x) || isVThunk(x); +} +// END Cycle.js-specific code <<<<<<<<<< + +function isChildren(x) { + return typeof x === 'string' || isArray(x) || isChild(x); +} + +function UnexpectedVirtualElement(data) { + var err = new Error(); + + err.type = 'virtual-hyperscript.unexpected.virtual-element'; + err.message = 'Unexpected virtual child passed to h().\n' + 'Expected a VNode / Vthunk / VWidget / string but:\n' + 'got:\n' + errorString(data.foreignObject) + '.\n' + 'The parent vnode is:\n' + errorString(data.parentVnode); + '\n' + 'Suggested fix: change your `h(..., [ ... ])` callsite.'; + err.foreignObject = data.foreignObject; + err.parentVnode = data.parentVnode; + + return err; +} + +function errorString(obj) { + try { + return JSON.stringify(obj, null, ' '); + } catch (e) { + return String(obj); + } +} +/* eslint-enable */ + +},{"virtual-dom/virtual-hyperscript/hooks/ev-hook.js":34,"virtual-dom/virtual-hyperscript/hooks/soft-set-hook.js":35,"virtual-dom/virtual-hyperscript/parse-tag.js":36,"virtual-dom/vnode/is-thunk":39,"virtual-dom/vnode/is-vhook":40,"virtual-dom/vnode/is-vnode":41,"virtual-dom/vnode/is-vtext":42,"virtual-dom/vnode/is-widget":43,"virtual-dom/vnode/vnode.js":45,"virtual-dom/vnode/vtext.js":47,"x-is-array":50}]},{},[51])(51) +}); \ No newline at end of file diff --git a/dist/cycle-dom.min.js b/dist/cycle-dom.min.js index 2140846..6cd561d 100644 --- a/dist/cycle-dom.min.js +++ b/dist/cycle-dom.min.js @@ -1,3 +1,3 @@ (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.CycleDOM=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;o0};var startsWith=function startsWith(string,start){return string[0]===start};var isSelector=function isSelector(param){return isValidString(param)&&(startsWith(param,".")||startsWith(param,"#"))};var node=function node(h){return function(tagName){return function(first){for(var _len=arguments.length,rest=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){rest[_key-1]=arguments[_key]}if(isSelector(first)){return h.apply(undefined,[tagName+first].concat(rest))}else{return h.apply(undefined,[tagName,first].concat(rest))}}}};var TAG_NAMES=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","dd","del","dfn","dir","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","meta","nav","noscript","object","ol","optgroup","option","p","param","pre","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","sup","table","tbody","td","textarea","tfoot","th","thead","title","tr","u","ul","video"];exports["default"]=function(h){var createTag=node(h);var exported={TAG_NAMES:TAG_NAMES,isSelector:isSelector,createTag:createTag};TAG_NAMES.forEach(function(n){exported[n]=createTag(n)});return exported};module.exports=exports["default"]},{}],3:[function(require,module,exports){"use strict";var proto=Element.prototype;var vendor=proto.matches||proto.matchesSelector||proto.webkitMatchesSelector||proto.mozMatchesSelector||proto.msMatchesSelector||proto.oMatchesSelector;module.exports=match;function match(el,selector){if(vendor)return vendor.call(el,selector);var nodes=el.parentNode.querySelectorAll(selector);for(var i=0;i"}function tagContent(node){var innerHTML=node.properties.innerHTML;if(innerHTML!=null)return innerHTML;else{var ret="";if(node.children&&node.children.length){for(var i=0,l=node.children.length;i"}},{"./create-attribute":7,"./void-elements":18,"escape-html":9,"param-case":15,"virtual-dom/virtual-hyperscript/hooks/attribute-hook":33,"virtual-dom/virtual-hyperscript/hooks/soft-set-hook":35,"virtual-dom/vnode/is-thunk":39,"virtual-dom/vnode/is-vnode":41,"virtual-dom/vnode/is-vtext":42,"virtual-dom/vnode/is-widget":43,xtend:16}],9:[function(require,module,exports){"use strict";var matchHtmlRegExp=/["'&<>]/;module.exports=escapeHtml;function escapeHtml(string){var str=""+string;var match=matchHtmlRegExp.exec(str);if(!match){return str}var escape;var html="";var index=0;var lastIndex=0;for(index=match.index;index>>0:limit>>>0;while(match=separator.exec(str)){lastIndex=match.index+match[0].length;if(lastIndex>lastLastIndex){output.push(str.slice(lastLastIndex,match.index));if(!compliantExecNpcg&&match.length>1){match[0].replace(separator2,function(){for(var i=1;i1&&match.index=limit){break}}if(separator.lastIndex===match.index){separator.lastIndex++}}if(lastLastIndex===str.length){if(lastLength||!separator.test("")){output.push("")}}else{output.push(str.slice(lastLastIndex))}return output.length>limit?output.slice(0,limit):output};return self}()},{}],21:[function(require,module,exports){"use strict";var OneVersionConstraint=require("individual/one-version");var MY_VERSION="7";OneVersionConstraint("ev-store",MY_VERSION);var hashKey="__EV_STORE_KEY@"+MY_VERSION;module.exports=EvStore;function EvStore(elem){var hash=elem[hashKey];if(!hash){hash=elem[hashKey]={}}return hash}},{"individual/one-version":23}],22:[function(require,module,exports){(function(global){"use strict";var root=typeof window!=="undefined"?window:typeof global!=="undefined"?global:{};module.exports=Individual;function Individual(key,value){if(key in root){return root[key]}root[key]=value;return value}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],23:[function(require,module,exports){"use strict";var Individual=require("./index.js");module.exports=OneVersion;function OneVersion(moduleName,version,defaultValue){var key="__INDIVIDUAL_ONE_VERSION_"+moduleName;var enforceKey=key+"_ENFORCE_SINGLETON";var versionValue=Individual(enforceKey,version);if(versionValue!==version){throw new Error("Can only have one copy of "+moduleName+".\n"+"You already have version "+versionValue+" installed.\n"+"This means you cannot install version "+version)}return Individual(key,defaultValue)}},{"./index.js":22}],24:[function(require,module,exports){(function(global){var topLevel=typeof global!=="undefined"?global:typeof window!=="undefined"?window:{};var minDoc=require("min-document");if(typeof document!=="undefined"){module.exports=document}else{var doccy=topLevel["__GLOBAL_DOCUMENT_CACHE@4"];if(!doccy){doccy=topLevel["__GLOBAL_DOCUMENT_CACHE@4"]=minDoc}module.exports=doccy}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"min-document":1}],25:[function(require,module,exports){"use strict";module.exports=function isObject(x){return typeof x==="object"&&x!==null}},{}],26:[function(require,module,exports){var patch=require("./vdom/patch.js");module.exports=patch},{"./vdom/patch.js":31}],27:[function(require,module,exports){var isObject=require("is-object");var isHook=require("../vnode/is-vhook.js");module.exports=applyProperties;function applyProperties(node,props,previous){for(var propName in props){var propValue=props[propName];if(propValue===undefined){removeProperty(node,propName,propValue,previous)}else if(isHook(propValue)){removeProperty(node,propName,propValue,previous);if(propValue.hook){propValue.hook(node,propName,previous?previous[propName]:undefined)}}else{if(isObject(propValue)){patchObject(node,props,previous,propName,propValue)}else{node[propName]=propValue}}}}function removeProperty(node,propName,propValue,previous){if(previous){var previousValue=previous[propName];if(!isHook(previousValue)){if(propName==="attributes"){for(var attrName in previousValue){node.removeAttribute(attrName)}}else if(propName==="style"){for(var i in previousValue){node.style[i]=""}}else if(typeof previousValue==="string"){node[propName]=""}else{node[propName]=null}}else if(previousValue.unhook){previousValue.unhook(node,propName,propValue)}}}function patchObject(node,props,previous,propName,propValue){var previousValue=previous?previous[propName]:undefined;if(propName==="attributes"){for(var attrName in propValue){var attrValue=propValue[attrName];if(attrValue===undefined){node.removeAttribute(attrName)}else{node.setAttribute(attrName,attrValue)}}return}if(previousValue&&isObject(previousValue)&&getPrototype(previousValue)!==getPrototype(propValue)){node[propName]=propValue;return}if(!isObject(node[propName])){node[propName]={}}var replacer=propName==="style"?"":undefined;for(var k in propValue){var value=propValue[k];node[propName][k]=value===undefined?replacer:value}}function getPrototype(value){if(Object.getPrototypeOf){return Object.getPrototypeOf(value)}else if(value.__proto__){return value.__proto__}else if(value.constructor){return value.constructor.prototype}}},{"../vnode/is-vhook.js":40,"is-object":25}],28:[function(require,module,exports){var document=require("global/document");var applyProperties=require("./apply-properties");var isVNode=require("../vnode/is-vnode.js");var isVText=require("../vnode/is-vtext.js");var isWidget=require("../vnode/is-widget.js");var handleThunk=require("../vnode/handle-thunk.js");module.exports=createElement;function createElement(vnode,opts){var doc=opts?opts.document||document:document;var warn=opts?opts.warn:null;vnode=handleThunk(vnode).a;if(isWidget(vnode)){return vnode.init()}else if(isVText(vnode)){return doc.createTextNode(vnode.text)}else if(!isVNode(vnode)){if(warn){warn("Item is not a valid virtual dom node",vnode)}return null}var node=vnode.namespace===null?doc.createElement(vnode.tagName):doc.createElementNS(vnode.namespace,vnode.tagName);var props=vnode.properties;applyProperties(node,props);var children=vnode.children;for(var i=0;i>0;currentItem=indices[currentIndex];if(minIndex===maxIndex){return currentItem>=left&¤tItem<=right}else if(currentItemright){maxIndex=currentIndex-1}else{return true}}return false}function ascending(a,b){return a>b?1:-1}},{}],30:[function(require,module,exports){var applyProperties=require("./apply-properties");var isWidget=require("../vnode/is-widget.js");var VPatch=require("../vnode/vpatch.js");var updateWidget=require("./update-widget");module.exports=applyPatch;function applyPatch(vpatch,domNode,renderOptions){var type=vpatch.type;var vNode=vpatch.vNode;var patch=vpatch.patch;switch(type){case VPatch.REMOVE:return removeNode(domNode,vNode);case VPatch.INSERT:return insertNode(domNode,patch,renderOptions);case VPatch.VTEXT:return stringPatch(domNode,vNode,patch,renderOptions);case VPatch.WIDGET:return widgetPatch(domNode,vNode,patch,renderOptions);case VPatch.VNODE:return vNodePatch(domNode,vNode,patch,renderOptions);case VPatch.ORDER:reorderChildren(domNode,patch);return domNode;case VPatch.PROPS:applyProperties(domNode,patch,vNode.properties);return domNode;case VPatch.THUNK:return replaceRoot(domNode,renderOptions.patch(domNode,patch,renderOptions));default:return domNode}}function removeNode(domNode,vNode){var parentNode=domNode.parentNode;if(parentNode){parentNode.removeChild(domNode)}destroyWidget(domNode,vNode);return null}function insertNode(parentNode,vNode,renderOptions){var newNode=renderOptions.render(vNode,renderOptions);if(parentNode){parentNode.appendChild(newNode)}return parentNode}function stringPatch(domNode,leftVNode,vText,renderOptions){var newNode;if(domNode.nodeType===3){domNode.replaceData(0,domNode.length,vText.text);newNode=domNode}else{var parentNode=domNode.parentNode;newNode=renderOptions.render(vText,renderOptions);if(parentNode&&newNode!==domNode){parentNode.replaceChild(newNode,domNode)}}return newNode}function widgetPatch(domNode,leftVNode,widget,renderOptions){var updating=updateWidget(leftVNode,widget);var newNode;if(updating){newNode=widget.update(leftVNode,domNode)||domNode}else{newNode=renderOptions.render(widget,renderOptions)}var parentNode=domNode.parentNode;if(parentNode&&newNode!==domNode){parentNode.replaceChild(newNode,domNode)}if(!updating){destroyWidget(domNode,leftVNode)}return newNode}function vNodePatch(domNode,leftVNode,vNode,renderOptions){var parentNode=domNode.parentNode;var newNode=renderOptions.render(vNode,renderOptions);if(parentNode&&newNode!==domNode){parentNode.replaceChild(newNode,domNode)}return newNode}function destroyWidget(domNode,w){if(typeof w.destroy==="function"&&isWidget(w)){w.destroy(domNode)}}function reorderChildren(domNode,moves){var childNodes=domNode.childNodes;var keyMap={};var node;var remove;var insert;for(var i=0;i=length++?null:childNodes[insert.to])}}function replaceRoot(oldRoot,newRoot){if(oldRoot&&newRoot&&oldRoot!==newRoot&&oldRoot.parentNode){oldRoot.parentNode.replaceChild(newRoot,oldRoot)}return newRoot}},{"../vnode/is-widget.js":43,"../vnode/vpatch.js":46,"./apply-properties":27,"./update-widget":32}],31:[function(require,module,exports){var document=require("global/document");var isArray=require("x-is-array");var render=require("./create-element");var domIndex=require("./dom-index");var patchOp=require("./patch-op");module.exports=patch;function patch(rootNode,patches,renderOptions){renderOptions=renderOptions||{};renderOptions.patch=renderOptions.patch&&renderOptions.patch!==patch?renderOptions.patch:patchRecursive;renderOptions.render=renderOptions.render||render;return renderOptions.patch(rootNode,patches,renderOptions)}function patchRecursive(rootNode,patches,renderOptions){var indices=patchIndices(patches);if(indices.length===0){return rootNode}var index=domIndex(rootNode,patches.a,indices);var ownerDocument=rootNode.ownerDocument;if(!renderOptions.document&&ownerDocument!==document){renderOptions.document=ownerDocument}for(var i=0;i-1?prop.substr(colonPosition+1):prop;node.removeAttributeNS(this.namespace,localName)};AttributeHook.prototype.type="AttributeHook"},{}],34:[function(require,module,exports){"use strict";var EvStore=require("ev-store");module.exports=EvHook;function EvHook(value){if(!(this instanceof EvHook)){return new EvHook(value)}this.value=value}EvHook.prototype.hook=function(node,propertyName){var es=EvStore(node);var propName=propertyName.substr(3);es[propName]=this.value};EvHook.prototype.unhook=function(node,propertyName){var es=EvStore(node);var propName=propertyName.substr(3);es[propName]=undefined}},{"ev-store":21}],35:[function(require,module,exports){"use strict";module.exports=SoftSetHook;function SoftSetHook(value){if(!(this instanceof SoftSetHook)){return new SoftSetHook(value)}this.value=value}SoftSetHook.prototype.hook=function(node,propertyName){if(node[propertyName]!==this.value){node[propertyName]=this.value}}},{}],36:[function(require,module,exports){"use strict";var split=require("browser-split");var classIdSplit=/([\.#]?[a-zA-Z0-9\u007F-\uFFFF_:-]+)/;var notClassId=/^\.|#/;module.exports=parseTag;function parseTag(tag,props){if(!tag){return"DIV"}var noId=!props.hasOwnProperty("id");var tagParts=split(tag,classIdSplit);var tagName=null;if(notClassId.test(tagParts[1])){tagName="DIV"}var classes,part,type,i;for(i=0;ibLen?aLen:bLen;for(var i=0;i=bFree.length?bChildren.length:bFree[freeIndex];for(var j=0;j=lastFreeIndex){newChildren.push(newItem)}}var simulate=newChildren.slice();var simulateIndex=0;var removes=[];var inserts=[];var simulateItem;for(var k=0;k2?_len-2:0),_key=2;_key<_len;_key++){children[_key-2]=arguments[_key]}return h(tag,attrs,children)},svg:svg,mockDOMSource:mockDOMSource});module.exports=CycleDOM},{"./mock-dom-source":53,"./render-dom":54,"./render-html":55,"./virtual-hyperscript":58,"./virtual-hyperscript-svg":57,"hyperscript-helpers":2}],52:[function(require,module,exports){(function(global){"use strict";var Rx=typeof window!=="undefined"?window["Rx"]:typeof global!=="undefined"?global["Rx"]:null;var disposableCreate=Rx.Disposable.create;var CompositeDisposable=Rx.CompositeDisposable;var AnonymousObservable=Rx.AnonymousObservable;function createListener(_ref){var element=_ref.element;var eventName=_ref.eventName;var handler=_ref.handler;var useCapture=_ref.useCapture;if(element.addEventListener){element.addEventListener(eventName,handler,useCapture);return disposableCreate(function removeEventListener(){element.removeEventListener(eventName,handler,useCapture)})}throw new Error("No listener found")}function createEventListener(_ref2){var element=_ref2.element;var eventName=_ref2.eventName;var handler=_ref2.handler;var useCapture=_ref2.useCapture;var disposables=new CompositeDisposable;if(Array.isArray(element)){for(var i=0,len=element.length;i0){return Rx.Observable.combineLatest(vtree.children.map(transposeVTree),function(){for(var _len=arguments.length,arr=Array(_len),_key=0;_key<_len;_key++){arr[_key]=arguments[_key]}return new VirtualNode(vtree.tagName,vtree.properties,arr,vtree.key,vtree.namespace)})}else if(vtree.type==="VirtualNode"||vtree.type==="Widget"||vtree.type==="Thunk"){return Rx.Observable.just(vtree)}else{throw new Error("Unhandled case in transposeVTree()")}}module.exports={transposeVTree:transposeVTree}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"virtual-dom/vnode/vnode":45}],57:[function(require,module,exports){"use strict";var isArray=require("x-is-array");var h=require("./virtual-hyperscript");var SVGAttributeNamespace=require("virtual-dom/virtual-hyperscript/svg-attribute-namespace");var attributeHook=require("virtual-dom/virtual-hyperscript/hooks/attribute-hook");var SVG_NAMESPACE="http://www.w3.org/2000/svg";module.exports=svg;function svg(tagName,properties,children){if(!children&&isChildren(properties)){children=properties;properties={}}properties=properties||{};properties.namespace=SVG_NAMESPACE;var attributes=properties.attributes||(properties.attributes={});for(var key in properties){if(!properties.hasOwnProperty(key)){continue}var namespace=SVGAttributeNamespace(key);if(namespace===undefined){continue}var value=properties[key];if(typeof value!=="string"&&typeof value!=="number"&&typeof value!=="boolean"){continue}if(namespace!==null){properties[key]=attributeHook(namespace,value);continue}attributes[key]=value;properties[key]=undefined}return h(tagName,properties,children)}function isObservable(x){return x&&typeof x.subscribe==="function"}function isChildren(x){return typeof x==="string"||isArray(x)||isObservable(x)}},{"./virtual-hyperscript":58,"virtual-dom/virtual-hyperscript/hooks/attribute-hook":33,"virtual-dom/virtual-hyperscript/svg-attribute-namespace":37,"x-is-array":50}],58:[function(require,module,exports){"use strict";var isArray=require("x-is-array");var VNode=require("virtual-dom/vnode/vnode.js");var VText=require("virtual-dom/vnode/vtext.js");var isVNode=require("virtual-dom/vnode/is-vnode");var isVText=require("virtual-dom/vnode/is-vtext");var isWidget=require("virtual-dom/vnode/is-widget");var isHook=require("virtual-dom/vnode/is-vhook");var isVThunk=require("virtual-dom/vnode/is-thunk");var parseTag=require("virtual-dom/virtual-hyperscript/parse-tag.js");var softSetHook=require("virtual-dom/virtual-hyperscript/hooks/soft-set-hook.js");var evHook=require("virtual-dom/virtual-hyperscript/hooks/ev-hook.js");module.exports=h;function h(tagName,properties,children){var childNodes=[];var tag,props,key,namespace;if(!children&&isChildren(properties)){children=properties;props={}}props=props||properties||{};tag=parseTag(tagName,props);if(props.hasOwnProperty("key")){key=props.key;props.key=undefined}if(props.hasOwnProperty("namespace")){namespace=props.namespace;props.namespace=undefined}if(tag==="INPUT"&&!namespace&&props.hasOwnProperty("value")&&props.value!==undefined&&!isHook(props.value)){props.value=softSetHook(props.value)}transformProperties(props);if(children!==undefined&&children!==null){addChild(children,childNodes,tag,props)}return new VNode(tag,props,childNodes,key,namespace)}function addChild(c,childNodes,tag,props){if(typeof c==="string"){childNodes.push(new VText(c))}else if(typeof c==="number"){childNodes.push(new VText(String(c)))}else if(isChild(c)){childNodes.push(c)}else if(isArray(c)){for(var i=0;ibLen?aLen:bLen;for(var i=0;i=bFree.length?bChildren.length:bFree[freeIndex];for(var j=0;j=lastFreeIndex){newChildren.push(newItem)}}var simulate=newChildren.slice();var simulateIndex=0;var removes=[];var inserts=[];var simulateItem;for(var k=0;k2?_len-2:0),_key=2;_key<_len;_key++){children[_key-2]=arguments[_key]}return h(tag,attrs,children)},svg:svg,mockDOMSource:mockDOMSource});module.exports=CycleDOM},{"./mock-dom-source":53,"./render-dom":54,"./render-html":55,"./virtual-hyperscript":58,"./virtual-hyperscript-svg":57,"hyperscript-helpers":2}],52:[function(require,module,exports){(function(global){"use strict";var Rx=typeof window!=="undefined"?window["Rx"]:typeof global!=="undefined"?global["Rx"]:null;var disposableCreate=Rx.Disposable.create;var CompositeDisposable=Rx.CompositeDisposable;var AnonymousObservable=Rx.AnonymousObservable;function createListener(_ref){var element=_ref.element;var eventName=_ref.eventName;var handler=_ref.handler;var useCapture=_ref.useCapture;if(element.addEventListener){element.addEventListener(eventName,handler,useCapture);return disposableCreate(function removeEventListener(){element.removeEventListener(eventName,handler,useCapture)})}throw new Error("No listener found")}function createEventListener(_ref2){var element=_ref2.element;var eventName=_ref2.eventName;var handler=_ref2.handler;var useCapture=_ref2.useCapture;var disposables=new CompositeDisposable;if(Array.isArray(element)){for(var i=0,len=element.length;i0){return Rx.Observable.combineLatest(vtree.children.map(transposeVTree),function(){for(var _len=arguments.length,arr=Array(_len),_key=0;_key<_len;_key++){arr[_key]=arguments[_key]}return new VirtualNode(vtree.tagName,vtree.properties,arr,vtree.key,vtree.namespace)})}else if(vtree.type==="VirtualNode"||vtree.type==="Widget"||vtree.type==="Thunk"){return Rx.Observable.just(vtree)}else{throw new Error("Unhandled case in transposeVTree()")}}module.exports={transposeVTree:transposeVTree}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"virtual-dom/vnode/vnode":45}],57:[function(require,module,exports){"use strict";var isArray=require("x-is-array");var h=require("./virtual-hyperscript");var SVGAttributeNamespace=require("virtual-dom/virtual-hyperscript/svg-attribute-namespace");var attributeHook=require("virtual-dom/virtual-hyperscript/hooks/attribute-hook");var SVG_NAMESPACE="http://www.w3.org/2000/svg";module.exports=svg;function svg(tagName,properties,children){if(!children&&isChildren(properties)){children=properties;properties={}}properties=properties||{};properties.namespace=SVG_NAMESPACE;var attributes=properties.attributes||(properties.attributes={});for(var key in properties){if(!properties.hasOwnProperty(key)){continue}var namespace=SVGAttributeNamespace(key);if(namespace===undefined){continue}var value=properties[key];if(typeof value!=="string"&&typeof value!=="number"&&typeof value!=="boolean"){continue}if(namespace!==null){properties[key]=attributeHook(namespace,value);continue}attributes[key]=value;properties[key]=undefined}return h(tagName,properties,children)}function isObservable(x){return x&&typeof x.subscribe==="function"}function isChildren(x){return typeof x==="string"||isArray(x)||isObservable(x)}},{"./virtual-hyperscript":58,"virtual-dom/virtual-hyperscript/hooks/attribute-hook":33,"virtual-dom/virtual-hyperscript/svg-attribute-namespace":37,"x-is-array":50}],58:[function(require,module,exports){"use strict";var isArray=require("x-is-array");var VNode=require("virtual-dom/vnode/vnode.js");var VText=require("virtual-dom/vnode/vtext.js");var isVNode=require("virtual-dom/vnode/is-vnode");var isVText=require("virtual-dom/vnode/is-vtext");var isWidget=require("virtual-dom/vnode/is-widget");var isHook=require("virtual-dom/vnode/is-vhook");var isVThunk=require("virtual-dom/vnode/is-thunk");var parseTag=require("virtual-dom/virtual-hyperscript/parse-tag.js");var softSetHook=require("virtual-dom/virtual-hyperscript/hooks/soft-set-hook.js");var evHook=require("virtual-dom/virtual-hyperscript/hooks/ev-hook.js");module.exports=h;function h(tagName,properties,children){var childNodes=[];var tag,props,key,namespace;if(!children&&isChildren(properties)){children=properties;props={}}props=props||properties||{};tag=parseTag(tagName,props);if(props.hasOwnProperty("key")){key=props.key;props.key=undefined}if(props.hasOwnProperty("namespace")){namespace=props.namespace;props.namespace=undefined}if(tag==="INPUT"&&!namespace&&props.hasOwnProperty("value")&&props.value!==undefined&&!isHook(props.value)){props.value=softSetHook(props.value)}transformProperties(props);if(children!==undefined&&children!==null){addChild(children,childNodes,tag,props)}return new VNode(tag,props,childNodes,key,namespace)}function addChild(c,childNodes,tag,props){if(typeof c==="string"){childNodes.push(new VText(c))}else if(typeof c==="number"){childNodes.push(new VText(String(c)))}else if(isChild(c)){childNodes.push(c)}else if(isArray(c)){for(var i=0;i