define([], function () { var Hyperscript; (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ var split = require('browser-split') var ClassList = require('class-list') require('html-element') function context () { var cleanupFuncs = [] function h() { var args = [].slice.call(arguments), e = null function item (l) { var r function parseClass (string) { // Our minimal parser doesn’t understand escaping CSS special // characters like `#`. Don’t use them. More reading: // https://mathiasbynens.be/notes/css-escapes . var m = split(string, /([\.#]?[^\s#.]+)/) if(/^\.|#/.test(m[1])) e = document.createElement('div') forEach(m, function (v) { var s = v.substring(1,v.length) if(!v) return if(!e) e = document.createElement(v) else if (v[0] === '.') ClassList(e).add(s) else if (v[0] === '#') e.setAttribute('id', s) }) } if(l == null) ; else if('string' === typeof l) { if(!e) parseClass(l) else e.appendChild(r = document.createTextNode(l)) } else if('number' === typeof l || 'boolean' === typeof l || l instanceof Date || l instanceof RegExp ) { e.appendChild(r = document.createTextNode(l.toString())) } //there might be a better way to handle this... else if (isArray(l)) forEach(l, item) else if(isNode(l)) e.appendChild(r = l) else if(l instanceof Text) e.appendChild(r = l) else if ('object' === typeof l) { for (var k in l) { if (!l.hasOwnProperty(k)) { return; } if('function' === typeof l[k]) { if(/^on\w+/.test(k)) { (function (k, l) { // capture k, l in the closure if (e.addEventListener){ e.addEventListener(k.substring(2), l[k], false) cleanupFuncs.push(function(){ e.removeEventListener(k.substring(2), l[k], false) }) }else{ e.attachEvent(k, l[k]) cleanupFuncs.push(function(){ e.detachEvent(k, l[k]) }) } })(k, l) } else { // observable e[k] = l[k]() cleanupFuncs.push(l[k](function (v) { e[k] = v })) } } else if(k === 'style') { if('string' === typeof l[k]) { e.style.cssText = l[k] }else{ for (var s in l[k]) (function(s, v) { if('function' === typeof v) { // observable e.style.setProperty(s, v()) cleanupFuncs.push(v(function (val) { e.style.setProperty(s, val) })) } else e.style.setProperty(s, l[k][s]) })(s, l[k][s]) } } else if (k.substr(0, 5) === "data-") { e.setAttribute(k, l[k]) } else { e.setAttribute(k, l[k]); } } } else if ('function' === typeof l) { //assume it's an observable! var v = l() e.appendChild(r = isNode(v) ? v : document.createTextNode(v)) cleanupFuncs.push(l(function (v) { if(isNode(v) && r.parentElement) r.parentElement.replaceChild(v, r), r = v else r.textContent = v })) } return r } while(args.length) item(args.shift()) return e } h.cleanup = function () { for (var i = 0; i < cleanupFuncs.length; i++){ cleanupFuncs[i]() } cleanupFuncs.length = 0 } return h } var h = module.exports = context() h.context = context Hyperscript = h; function isNode (el) { return el && el.nodeName && el.nodeType } function forEach (arr, fn) { if (arr.forEach) return arr.forEach(fn) for (var i = 0; i < arr.length; i++) fn(arr[i], i) } function isArray (arr) { return Object.prototype.toString.call(arr) == '[object Array]' } },{"browser-split":2,"class-list":3,"html-element":6}],2:[function(require,module,exports){ /*! * Cross-Browser Split 1.1.1 * Copyright 2007-2012 Steven Levithan <stevenlevithan.com> * 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; })(); },{}],3:[function(require,module,exports){ // contains, add, remove, toggle var indexof = require('indexof') module.exports = ClassList function ClassList(elem) { var cl = elem.classList if (cl) { return cl } var classList = { add: add , remove: remove , contains: contains , toggle: toggle , toString: $toString , length: 0 , item: item } return classList function add(token) { var list = getTokens() if (indexof(list, token) > -1) { return } list.push(token) setTokens(list) } function remove(token) { var list = getTokens() , index = indexof(list, token) if (index === -1) { return } list.splice(index, 1) setTokens(list) } function contains(token) { return indexof(getTokens(), token) > -1 } function toggle(token) { if (contains(token)) { remove(token) return false } else { add(token) return true } } function $toString() { return elem.className } function item(index) { var tokens = getTokens() return tokens[index] || null } function getTokens() { var className = elem.className return filter(className.split(" "), isTruthy) } function setTokens(list) { var length = list.length elem.className = list.join(" ") classList.length = length for (var i = 0; i < list.length; i++) { classList[i] = list[i] } delete list[length] } } function filter (arr, fn) { var ret = [] for (var i = 0; i < arr.length; i++) { if (fn(arr[i])) ret.push(arr[i]) } return ret } function isTruthy(value) { return !!value } },{"indexof":4}],4:[function(require,module,exports){ var indexOf = [].indexOf; module.exports = function(arr, obj){ if (indexOf) return arr.indexOf(obj); for (var i = 0; i < arr.length; ++i) { if (arr[i] === obj) return i; } return -1; }; },{}],5:[function(require,module,exports){ var h = require("./index.js"); module.exports = h; /* $(function () { var newDoc = h('p', h('ul', 'bang bang bang'.split(/\s/).map(function (word) { return h('li', word); })) ); $('body').html(newDoc.outerHTML); }); */ },{"./index.js":1}],6:[function(require,module,exports){ },{}]},{},[5]); return Hyperscript; });