{"version":3,"sources":["core/polyfills.js","appConnect.js","core/dom.js","core/parser.js","core/dataScope.js","core/BaseComponent.js","components/app.js","components/form.js","components/formElement.js","components/textarea.js","components/input.js","components/inputFile.js","components/inputFileMultiple.js","components/inputNumber.js","components/button.js","components/radio.js","components/radioGroup.js","components/checkbox.js","components/checkboxGroup.js","components/select.js","components/selectMultiple.js","components/value.js","components/repeat.js","components/repeatItem.js","components/fetch.js","components/serverconnect.js","components/serverconnectForm.js","components/if.js","components/datetime.js","attributes/bind.js","attributes/on.js","attributes/repeat.js","attributes/class.js","attributes/hide.js","attributes/show.js","attributes/html.js","attributes/text.js","attributes/style.js","formatters/global.js"],"names":["Array","prototype","findIndex","Object","defineProperty","value","predicate","this","TypeError","o","len","length","thisArg","arguments","k","kValue","call","find","fill","O","start","relativeStart","Math","max","min","end","relativeEnd","undefined","final","assign","target","varArgs","to","index","nextSource","nextKey","hasOwnProperty","window","Element","closest","s","i","matches","document","ownerDocument","querySelectorAll","el","item","parentElement","dmx","__components","__attributes","before","mount","mounted","__formatters","boolean","global","string","number","object","array","__adapters","__actions","config","mapping","form","button, input[type=button], input[type=submit], input[type=reset]","input[type=radio]","input[type=checkbox]","input[type=file][multiple]","input[type=file]","input[type=number]","input","textarea","select[multiple]","select",".checkbox-group",".radio-group","reIgnoreElement","rePrefixed","reExpression","reExpressionReplace","reToggleAttribute","reDashAlpha","reUppercase","appConnect","node","cb","app","alert","documentElement","onpopstate","requestUpdate","onhashchange","App","Component","$update","addEventListener","appNode","querySelector","removeAttribute","useHistory","history","pushState","extend","extended","deep","toString","merge","obj","prop","noop","isset","val","v","clone","JSON","parse","stringify","arr","slice","hashCode","str","hash","charCodeAt","abs","randomizer","seed","escapeRegExp","replace","validate","checkValidity","setImmediate","nextTick","fn","context","bind","postMessage","queue","event","source","data","task","shift","push","setTimeout","updateRequested","debounce","delay","timeout","args","clearTimeout","apply","keyCodes","bs","tab","enter","esc","space","left","up","right","down","delete","eventListener","eventType","handler","modifiers","self","currentTarget","ctrl","ctrlKey","alt","altKey","shiftKey","meta","metaKey","stop","stopPropagation","prevent","preventDefault","KeyboardEvent","keys","forEach","key","keyVal","parseInt","which","capture","createClass","proto","parentClass","Cls","constructor","create","Config","tag","extends","BaseComponent","initialData","attributes","methods","events","parent","type","Attribute","name","hook","Formatters","Formatter","Adapter","Action","action","$","selector","nodeType","addClass","className","classList","add","removeClass","remove","toggleClass","toggle","hasClass","contains","attr","attrs","getAttribute","setAttribute","removeAttr","props","css","getComputedStyle","getPropertyValue","style","setProperty","each","callback","append","children","j","appendChild","appendTo","detach","parentNode","removeChild","empty","innerHTML","dom","get","id","getElementById","query","tagName","elem","createElement","walk","hasChildNodes","childNodes","getAttributes","attribute","specified","test","substr","argument","split","part","pos","indexOf","fullName","isArray","oldNode","newNode","replaceChild","cache","OPERATORS","{","}","(",")","[","]",".",",",":","?","+","-","*","/","%","===","!==","==","!=","<",">","<=",">=","in","&&","||","!","&","|","^","~","<<",">>",">>>","ESCAPE","n","f","r","t","'","\"","`","EXPRESSIONS","a","b","c","RESERVED","scope","null","true","false","ZERO","lexer","exp","read","peek","is","chars","ch","isQuote","isDigid","isAlpha","isAlphaNum","isWhitespace","isExpOperator","readString","quote","escape","hex","match","Error","String","fromCharCode","rep","readNumber","exponent","next","readIdent","ident","readRegexp","regexp","testRegexp","idx","ok","e","token","ch2","ch3","tokens","op","expect","consume","doParse","expression","conditional","middle","logicalOr","logicalAnd","bitwiseOr","bitwiseXor","bitwiseAnd","equality","relational","bitwiseShift","addictive","multiplicative","unary","primary","objectMember","warn","console","re","RegExp","functionCall","objectIndex","func","ctx","argsFn","fnPtr","indexFn","toLowerCase","substring","DataScope","random","$node","bindings","propBindings","listeners","$parseAttributes","$initialData","render","beforeMount","$mount","$customAttributes","dispatchEvent","Event","destroy","toUpperCase","$placeholder","createComment","dmxComponent","$parse","beforeUpdate","update","updated","beforeDestroy","destroyed","removeEventListener","stack","splice","ComponentEvent","err","createEvent","initEvent","bubbles","cancelable","defaultPrevented","$addChild","component","nodeValue","$addBinding","oldValue","map","hasAttribute","isComponent","$updateBindings","child","binding","callbacks","options","default","Boolean","Number","$propBinding","Function","returnValue","$event","$type","method","$destroy","$destroyChildren","del","ignoreParents","set","ready","load","parseQuery","onload","location","search","reduce","p","decodeURIComponent","novalidate","submit","reset","invalid","noValidate","onsubmit","_submit","updateData","disabled","validationMessage","setValue","focus","disable","defaultValue","dirty","validity","valid","file","onchange","files","date","lastModified","Date","lastModifiedDate","toISOString","size","dataUrl","reader","FileReader","result","readAsDataURL","innerText","checked","check","updateValue","values","filter","radio","isDefault","defaultChecked","checkbox","selectedIndex","optionText","optionValue","setSelectedIndex","renderOptions","option","selected","defaultSelected","$value","items","repeat","prevItems","childKeys","$template","createDocumentFragment","firstChild","_clear","RepeatItem","$key","$index","nextPos","_clone","aStart","bStart","aEnd","bEnd","outer","_moveChild","_insertChild","_removeChild","aLength","bLength","aNullable","sources","moved","synced","keyIndex","seq","_lis","fragment","cloneNode","$nodes","u","il","insertBefore","fetch","state","executing","uploading","processing","downloading","uploadProgress","position","total","percent","downloadProgress","lastError","status","message","response","url","params","noload","ttl","abort","reload","done","error","unauthorized","forbidden","success","upload","ProgressEvent","download","xhr","XMLHttpRequest","onabort","onerror","ontimeout","onprogress","_reset","qs","encodeURIComponent","join","_url","now","created","open","send","_done","responseText","statusText","loaded","lengthComputable","ceil","autosubmit","dmxExtraData","extra","elements","element","FormData","setCustomValidity","bootstrap3forms","setBootstrapMessage","setErrorMessage","condition","nodes","template","_render","_destroy","datetime","interval","utc","timer","requestAnimationFrame","year","month","day","hours","minutes","seconds","pad","d","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","dateString","tz","placeholder","orgDisplay","display","property","important","json","log"],"mappings":"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","file":"../dmxAppConnect.js","sourcesContent":["// Some polyfills for IE\r\n\r\nif (!Array.prototype.findIndex) {\r\n Object.defineProperty(Array.prototype, 'findIndex', {\r\n value: function(predicate) {\r\n // 1. Let O be ? ToObject(this value).\r\n if (this == null) {\r\n throw new TypeError('\"this\" is null or not defined');\r\n }\r\n\r\n var o = Object(this);\r\n\r\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\r\n var len = o.length >>> 0;\r\n\r\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\r\n if (typeof predicate !== 'function') {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n\r\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\r\n var thisArg = arguments[1];\r\n\r\n // 5. Let k be 0.\r\n var k = 0;\r\n\r\n // 6. Repeat, while k < len\r\n while (k < len) {\r\n // a. Let Pk be ! ToString(k).\r\n // b. Let kValue be ? Get(O, Pk).\r\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\r\n // d. If testResult is true, return k.\r\n var kValue = o[k];\r\n if (predicate.call(thisArg, kValue, k, o)) {\r\n return k;\r\n }\r\n // e. Increase k by 1.\r\n k++;\r\n }\r\n\r\n // 7. Return -1.\r\n return -1;\r\n }\r\n });\r\n}\r\n\r\nif (!Array.prototype.find) {\r\n Object.defineProperty(Array.prototype, 'find', {\r\n value: function(predicate) {\r\n // 1. Let O be ? ToObject(this value).\r\n if (this == null) {\r\n throw new TypeError('\"this\" is null or not defined');\r\n }\r\n\r\n var o = Object(this);\r\n\r\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\r\n var len = o.length >>> 0;\r\n\r\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\r\n if (typeof predicate !== 'function') {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n\r\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\r\n var thisArg = arguments[1];\r\n\r\n // 5. Let k be 0.\r\n var k = 0;\r\n\r\n // 6. Repeat, while k < len\r\n while (k < len) {\r\n // a. Let Pk be ! ToString(k).\r\n // b. Let kValue be ? Get(O, Pk).\r\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\r\n // d. If testResult is true, return kValue.\r\n var kValue = o[k];\r\n if (predicate.call(thisArg, kValue, k, o)) {\r\n return kValue;\r\n }\r\n // e. Increase k by 1.\r\n k++;\r\n }\r\n\r\n // 7. Return undefined.\r\n return undefined;\r\n }\r\n });\r\n}\r\n\r\nif (!Array.prototype.fill) {\r\n Object.defineProperty(Array.prototype, 'fill', {\r\n value: function(value) {\r\n\r\n // Steps 1-2.\r\n if (this == null) {\r\n throw new TypeError('this is null or not defined');\r\n }\r\n\r\n var O = Object(this);\r\n\r\n // Steps 3-5.\r\n var len = O.length >>> 0;\r\n\r\n // Steps 6-7.\r\n var start = arguments[1];\r\n var relativeStart = start >> 0;\r\n\r\n // Step 8.\r\n var k = relativeStart < 0 ?\r\n Math.max(len + relativeStart, 0) :\r\n Math.min(relativeStart, len);\r\n\r\n // Steps 9-10.\r\n var end = arguments[2];\r\n var relativeEnd = end === undefined ?\r\n len : end >> 0;\r\n\r\n // Step 11.\r\n var final = relativeEnd < 0 ?\r\n Math.max(len + relativeEnd, 0) :\r\n Math.min(relativeEnd, len);\r\n\r\n // Step 12.\r\n while (k < final) {\r\n O[k] = value;\r\n k++;\r\n }\r\n\r\n // Step 13.\r\n return O;\r\n }\r\n });\r\n}\r\n\r\nif (typeof Object.assign != 'function') {\r\n Object.assign = function(target, varArgs) { // .length of function is 2\r\n 'use strict';\r\n if (target == null) { // TypeError if undefined or null\r\n throw new TypeError('Cannot convert undefined or null to object');\r\n }\r\n\r\n var to = Object(target);\r\n\r\n for (var index = 1; index < arguments.length; index++) {\r\n var nextSource = arguments[index];\r\n\r\n if (nextSource != null) { // Skip over if undefined or null\r\n for (var nextKey in nextSource) {\r\n // Avoid bugs when hasOwnProperty is shadowed\r\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n }\r\n }\r\n }\r\n return to;\r\n };\r\n}\r\n\r\nif (window.Element && !Element.prototype.closest) {\r\n Element.prototype.closest =\r\n function(s) {\r\n var matches = (this.document || this.ownerDocument).querySelectorAll(s),\r\n i,\r\n el = this;\r\n do {\r\n i = matches.length;\r\n while (--i >= 0 && matches.item(i) !== el) {};\r\n } while ((i < 0) && (el = el.parentElement));\r\n return el;\r\n };\r\n}\r\n","window.dmx = window.dmx || {};\r\n\r\ndmx.__components = {};\r\ndmx.__attributes = {\r\n before: {},\r\n mount: {},\r\n mounted: {}\r\n};\r\ndmx.__formatters = {\r\n boolean: {},\r\n global: {},\r\n string: {},\r\n number: {},\r\n object: {},\r\n array: {}\r\n};\r\ndmx.__adapters = {};\r\ndmx.__actions = {};\r\n\r\n// default options\r\ndmx.config = {\r\n mapping: {\r\n 'form': 'form',\r\n 'button, input[type=button], input[type=submit], input[type=reset]': 'button',\r\n 'input[type=radio]': 'radio',\r\n 'input[type=checkbox]': 'checkbox',\r\n 'input[type=file][multiple]': 'input-file-multiple',\r\n 'input[type=file]': 'input-file',\r\n 'input[type=number]': 'input-number',\r\n 'input': 'input',\r\n 'textarea': 'textarea',\r\n 'select[multiple]': 'select-multiple',\r\n 'select': 'select',\r\n '.checkbox-group': 'checkbox-group',\r\n '.radio-group': 'radio-group'\r\n }\r\n};\r\n\r\ndmx.reIgnoreElement = /^(script|style)$/i;\r\ndmx.rePrefixed = /^dmx-/i;\r\ndmx.reExpression = /\\{\\{(.+?)\\}\\}/;\r\ndmx.reExpressionReplace = /\\{\\{(.+?)\\}\\}/g;\r\ndmx.reToggleAttribute = /^(checked|selected|disabled|required|hidden|async|autofocus|autoplay|default|defer|multiple|muted|novalidate|open|readonly|reversed|scoped)$/i;\r\ndmx.reDashAlpha = /-([a-z])/g;\r\ndmx.reUppercase = /[A-Z]/g;\r\n\r\ndmx.appConnect = function(node, cb) {\r\n if (dmx.app) {\r\n return alert('App already running!');\r\n }\r\n\r\n node = node || document.documentElement;\r\n\r\n window.onpopstate = function() {\r\n dmx.requestUpdate();\r\n };\r\n\r\n window.onhashchange = function() {\r\n dmx.requestUpdate();\r\n };\r\n\r\n var App = dmx.Component('app');\r\n\r\n dmx.app = new App(node); //BaseComponent(node);\r\n dmx.app.$update();\r\n if (cb) cb();\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n var appNode = document.querySelector(':root[dmx-app], [dmx-app], :root[is=\"dmx-app\"], [is=\"dmx-app\"]');\r\n if (appNode) {\r\n dmx.appConnect(appNode, function() {\r\n appNode.removeAttribute('dmx-app');\r\n });\r\n }\r\n});\r\n\r\ndmx.useHistory = window.history && window.history.pushState;\r\n\r\ndmx.extend = function () {\r\n // Variables\r\n var extended = {};\r\n var deep = false;\r\n var i = 0;\r\n var length = arguments.length;\r\n\r\n // Check if a deep merge\r\n if ( Object.prototype.toString.call( arguments[0] ) === '[object Boolean]' ) {\r\n deep = arguments[0];\r\n i++;\r\n }\r\n\r\n // Merge the object into the extended object\r\n var merge = function (obj) {\r\n for ( var prop in obj ) {\r\n if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) {\r\n // If deep merge and property is an object, merge properties\r\n if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) {\r\n extended[prop] = dmx.extend( true, extended[prop], obj[prop] );\r\n } else {\r\n if (obj[prop] != null) {\r\n extended[prop] = obj[prop];\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n // Loop through each object and conduct a merge\r\n for ( ; i < length; i++ ) {\r\n var obj = arguments[i];\r\n merge(obj);\r\n }\r\n\r\n return extended;\r\n};\r\n\r\ndmx.noop = function() {};\r\n\r\ndmx.isset = function(val) {\r\n return v !== undefined;\r\n};\r\n\r\ndmx.clone = function(o) {\r\n return o && JSON.parse(JSON.stringify(o));\r\n};\r\n\r\ndmx.array = function(arr) {\r\n if (arr == null) return [];\r\n return Array.prototype.slice.call(arr);\r\n};\r\n\r\ndmx.hashCode = function(o) {\r\n if (o == null) return 0;\r\n var str = JSON.stringify(o);\r\n var i, hash = 0;\r\n for (i = 0; i < str.length; i++) {\r\n hash = ((hash << 5) - hash) + str.charCodeAt(i);\r\n hash = hash & hash;\r\n }\r\n return Math.abs(hash);\r\n};\r\n\r\ndmx.randomizer = function(seed) {\r\n seed = +seed || 0;\r\n return function() {\r\n seed = (seed * 9301 + 49297) % 233280;\r\n return seed / 233280;\r\n };\r\n};\r\n\r\ndmx.escapeRegExp = function(val) {\r\n // https://github.com/benjamingr/RegExp.escape\r\n return val.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n};\r\n\r\ndmx.validate = function(node) {\r\n return node.checkValidity();\r\n};\r\n\r\nif (window.setImmediate) {\r\n dmx.nextTick = function(fn, context) {\r\n return window.setImmediate(fn.bind(context));\r\n };\r\n} else if (window.postMessage) {\r\n (function() {\r\n var queue = [];\r\n\r\n window.addEventListener('message', function(event) {\r\n if (event.source === window && event.data === 'dmxNextTick' && queue.length) {\r\n var task = queue.shift();\r\n task.fn.call(task.context);\r\n }\r\n });\r\n\r\n dmx.nextTick = function(fn, context) {\r\n queue.push({ fn: fn, context: context });\r\n window.postMessage('dmxNextTick', '*');\r\n };\r\n })();\r\n} else {\r\n dmx.nextTick = function(fn, context) {\r\n window.setTimeout(fn.bind(context), 0);\r\n };\r\n}\r\n\r\ndmx.requestUpdate = function() {\r\n var updateRequested = false;\r\n\r\n return function() {\r\n if (!updateRequested) {\r\n updateRequested = true;\r\n\r\n dmx.nextTick(function() {\r\n updateRequested = false;\r\n if (dmx.app) {\r\n dmx.app.$update();\r\n }\r\n });\r\n }\r\n };\r\n}();\r\n\r\ndmx.debounce = function(fn, delay) {\r\n var timeout;\r\n\r\n return function() {\r\n var args = Array.prototype.slice.call(arguments);\r\n clearTimeout(timeout);\r\n timeout = setTimeout(function() {\r\n fn.apply(null, args);\r\n }, delay || 0);\r\n };\r\n};\r\n\r\ndmx.keyCodes = {\r\n bs: 8,\r\n tab: 9,\r\n enter: 13,\r\n esc: 27,\r\n space: 32,\r\n left: 37,\r\n up: 38,\r\n right: 39,\r\n down: 40,\r\n 'delete': 46\r\n};\r\n\r\ndmx.eventListener = function(target, eventType, handler, modifiers) {\r\n var timeout;\r\n\r\n modifiers = modifiers || {};\r\n\r\n target.addEventListener(eventType, function(event) {\r\n if (modifiers.self && event.target !== event.currentTarget) return;\r\n if (modifiers.ctrl && !event.ctrlKey) return;\r\n if (modifiers.alt && !event.altKey) return;\r\n if (modifiers.shift && !event.shiftKey) return;\r\n if (modifiers.meta && !event.metaKey) return;\r\n\r\n if (modifiers.stop) event.stopPropagation();\r\n if (modifiers.prevent) event.preventDefault();\r\n\r\n if (event instanceof KeyboardEvent) {\r\n var keys = [];\r\n\r\n Object.keys(modifiers).forEach(function(key) {\r\n var keyVal = parseInt(key, 10);\r\n\r\n if (keyVal) {\r\n keys.push(keyVal);\r\n } else if (dmx.keyCodes[key]) {\r\n keys.push(dmx.keyCodes[key]);\r\n }\r\n });\r\n\r\n for (var i = 0; i < keys.length; i++) {\r\n if (event.which !== keys[i]) return;\r\n }\r\n }\r\n\r\n if (modifiers.debounce) {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(handler.bind(this, event), parseInt(modifiers.debounce, 10) || 0);\r\n } else {\r\n return handler.call(this, event);\r\n }\r\n }, !!modifiers.capture);\r\n};\r\n\r\ndmx.createClass = function(proto, parentClass) {\r\n var Cls = function() {\r\n if (proto.constructor) {\r\n proto.constructor.apply(this, arguments);\r\n }\r\n };\r\n\r\n if (parentClass && parentClass.prototype) {\r\n Cls.prototype = Object.create(parentClass.prototype);\r\n }\r\n\r\n Object.assign(Cls.prototype, proto);\r\n\r\n Cls.prototype.constructor = Cls;\r\n\r\n return Cls;\r\n};\r\n\r\ndmx.Config = function(config) {\r\n Object.assign(dmx.config, config);\r\n};\r\n\r\ndmx.Component = function(tag, proto) {\r\n if (proto) {\r\n var parentClass = dmx.Component(proto.extends) || dmx.BaseComponent; //dmx.__components[proto.extends ? proto.extends : 'base'];\r\n\r\n //if (proto.extends !== tag) {\r\n //parentClass = dmx.Components(extends);\r\n\r\n proto.initialData = Object.assign({}, parentClass.prototype.initialData, proto.initialData);\r\n proto.attributes = Object.assign({}, parentClass.prototype.attributes, proto.attributes);\r\n proto.methods = Object.assign({}, parentClass.prototype.methods, proto.methods);\r\n proto.events = Object.assign({}, parentClass.prototype.events, proto.events);\r\n\r\n if (!proto.hasOwnProperty('constructor')) {\r\n proto.constructor = function(node, parent) {\r\n parentClass.call(this, node, parent);\r\n };\r\n }\r\n //}\r\n\r\n proto.type = tag;\r\n\r\n var Component = dmx.createClass(proto, parentClass);\r\n Component.extends = proto.extends;\r\n\r\n dmx.__components[tag] = Component;\r\n }\r\n\r\n return dmx.__components[tag];\r\n};\r\n\r\ndmx.Attribute = function(name, hook, fn) {\r\n if (!dmx.__attributes[hook]) {\r\n dmx.__attributes[hook] = {};\r\n }\r\n dmx.__attributes[hook][name] = fn;\r\n};\r\n\r\ndmx.Formatters = function(type, o) {\r\n if (!dmx.__formatters[type]) {\r\n dmx.__formatters[type] = {};\r\n }\r\n for (var name in o) {\r\n dmx.__formatters[type][name] = o[name];\r\n }\r\n};\r\n\r\ndmx.Formatter = function(type, name, fn) {\r\n if (!dmx.__formatters[type]) {\r\n dmx.__formatters[type] = {};\r\n }\r\n dmx.__formatters[type][name] = fn;\r\n};\r\n\r\ndmx.Adapter = function(type, name, fn) {\r\n if (!dmx.__adapters[type]) {\r\n dmx.__adapters[type] = {};\r\n }\r\n\r\n if (fn) {\r\n dmx.__adapters[type][name] = fn;\r\n }\r\n\r\n return dmx.__adapters[type][name];\r\n};\r\n\r\ndmx.Action = function(name, action) {\r\n dmx.__actions[name] = action;\r\n};\r\n","(function() {\r\n\r\n var $ = function(selector) {\r\n if (!(this instanceof $)) {\r\n return new $(selector);\r\n }\r\n if (selector instanceof $) {\r\n return selector;\r\n }\r\n if (!selector) return this;\r\n var len = selector.length;\r\n if (selector.nodeType) {\r\n this[0] = selector;\r\n this.length = 1;\r\n } else if (typeof selector == 'string') {\r\n return $(document.querySelectorAll(selector));\r\n } else if (len) {\r\n for (var i = 0; i < len; i++) {\r\n if (selector[i] && selector[i].nodeType) {\r\n this[this.length] = selector[i];\r\n this.length++;\r\n }\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n $.prototype = {\r\n constructor: $,\r\n length: 0,\r\n\r\n addClass: function(className) {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].classList.add(className);\r\n }\r\n return this;\r\n },\r\n\r\n removeClass: function(className) {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].classList.remove(className);\r\n }\r\n return this;\r\n },\r\n\r\n toggleClass: function(className) {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].classList.toggle(className);\r\n }\r\n return this;\r\n },\r\n\r\n hasClass: function(className) {\r\n if (!this[0]) return false;\r\n return this[0].classList.contains(className);\r\n },\r\n\r\n attr: function(attrs, value) {\r\n if (arguments.length === 1 && typeof attrs === 'string') {\r\n return this[0] && this[0].getAttribute(attrs);\r\n } else {\r\n for (var i = 0; i < this.length; i++) {\r\n if (arguments.length === 2) {\r\n this[i].setAttribute(attrs, value);\r\n } else {\r\n for (var attr in attrs) {\r\n this[i].setAttribute(attr, attrs[attr]);\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n removeAttr: function(attr) {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].removeAttribute(attr);\r\n }\r\n return this;\r\n },\r\n\r\n prop: function(props, value) {\r\n if (arguments.length === 1 && typeof props === 'string') {\r\n return this[0] && this[0][props];\r\n } else {\r\n for (var i = 0; i < this.length; i++) {\r\n if (arguments.length === 2) {\r\n this[i][props] = value;\r\n } else {\r\n for (var prop in props) {\r\n this[i][prop] = props[prop];\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n css: function(props, value) {\r\n if (arguments.length === 1 && typeof props === 'string') {\r\n return this[0] && window.getComputedStyle(this[0], null).getPropertyValue(props);\r\n } else {\r\n for (var i = 0; i < this.length; i++) {\r\n if (arguments.length === 2) {\r\n this[i].style.setProperty(props, value);\r\n } else {\r\n for (var prop in props) {\r\n this[i].style.setProperty(prop, props[prop]);\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n each: function(callback, context) {\r\n if (!callback) return this;\r\n for (var i = 0; i < this.length; i++) {\r\n if (callback.call(context || this[i], i, this[i]) === false) {\r\n return this;\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n append: function() {\r\n for (var i = 0; i < arguments.length; i++) {\r\n var children = $(arguments[i]);\r\n\r\n for (var j = 0; j < children.length; j++) {\r\n this[0].appendChild(children[j]);\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n appendTo: function(parent) {\r\n $(parent).append(this);\r\n return this;\r\n },\r\n\r\n detach: function() {\r\n for (var i = 0; i < this.length; i++) {\r\n if (this[i].parentNode) {\r\n this[i].parentNode.removeChild(this[i]);\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n empty: function() {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].innerHTML = '';\r\n }\r\n return this;\r\n }\r\n };\r\n\r\n dmx.dom = {\r\n\r\n get: function(id) {\r\n return $(document.getElementById(id));\r\n },\r\n\r\n select: function(query) {\r\n return $(query);\r\n },\r\n\r\n create: function(tagName) {\r\n var elem = document.createElement(tagName);\r\n return $(elem);\r\n },\r\n\r\n contains: function(node) {\r\n return document.documentElement.contains(node);\r\n },\r\n\r\n walk: function(node, fn, context) {\r\n if (node) {\r\n if (fn.call(context, node) === false) {\r\n // stop going deeper when callback returns false\r\n return;\r\n } else if (node.hasChildNodes()) {\r\n Array.prototype.slice.call(node.childNodes, 0).forEach(function(node) {\r\n dmx.dom.walk(node, fn, context);\r\n });\r\n }\r\n }\r\n },\r\n\r\n getAttributes: function(node) {\r\n var attributes = [];\r\n\r\n if (node.nodeType == 1) {\r\n for (var i = 0; i < node.attributes.length; i++) {\r\n var attribute = node.attributes[i];\r\n\r\n if (attribute && attribute.specified && dmx.rePrefixed.test(attribute.name)) {\r\n var name = attribute.name.substr(4);\r\n var argument = null;\r\n var modifiers = {};\r\n\r\n name.split('.').forEach(function(part, i) {\r\n if (i === 0) {\r\n name = part;\r\n } else {\r\n var pos = part.indexOf(':');\r\n if (pos > 0) {\r\n modifiers[part.substr(0, pos)] = part.substr(pos + 1);\r\n } else {\r\n modifiers[part] = true;\r\n }\r\n }\r\n });\r\n\r\n var pos = name.indexOf(':');\r\n if (pos > 0) {\r\n argument = name.substr(pos + 1);\r\n name = name.substr(0, pos);\r\n }\r\n\r\n attributes.push({\r\n name: name,\r\n fullName: attribute.name,\r\n value: attribute.value,\r\n argument: argument,\r\n modifiers: modifiers\r\n });\r\n }\r\n }\r\n }\r\n\r\n return attributes;\r\n },\r\n\r\n remove: function(node) {\r\n if (Array.isArray(node)) {\r\n node.forEach(function(node) {\r\n dmx.dom.remove(node);\r\n });\r\n } else {\r\n if (node.parentNode) {\r\n node.parentNode.removeChild(node);\r\n }\r\n }\r\n },\r\n\r\n replace: function(oldNode, newNode) {\r\n if (oldNode.parentNode) {\r\n oldNode.parentNode.replaceChild(newNode, oldNode);\r\n }\r\n }\r\n\r\n };\r\n\r\n})();\r\n","(function() {\r\n\r\n var cache = {};\r\n\r\n var OPERATORS = {\r\n '{': 'L_CURLY',\r\n '}': 'R_CURLY',\r\n '(': 'L_PAREN',\r\n ')': 'R_PAREN',\r\n '[': 'L_BRACKET',\r\n ']': 'R_BRACKET',\r\n '.': 'PERIOD',\r\n ',': 'COMMA',\r\n //';': 'SEMI', // Multiple statements are not supported\r\n ':': 'COLON',\r\n '?': 'QUESTION',\r\n // Arithmetic operators\r\n '+': 'ADDICTIVE',\r\n '-': 'ADDICTIVE',\r\n '*': 'MULTIPLICATIVE',\r\n '/': 'MULTIPLICATIVE',\r\n '%': 'MULTIPLICATIVE',\r\n // Comparison operators\r\n '===': 'EQUALITY',\r\n '!==': 'EQUALITY',\r\n '==': 'EQUALITY',\r\n '!=': 'EQUALITY',\r\n '<': 'RELATIONAL',\r\n '>': 'RELATIONAL',\r\n '<=': 'RELATIONAL',\r\n '>=': 'RELATIONAL',\r\n 'in': 'RELATIONAL',\r\n // Logical operators\r\n '&&': 'LOGICAL_AND',\r\n '||': 'LOGICAL_OR',\r\n '!': 'LOGICAL_NOT',\r\n // Bitwise operators\r\n '&': 'BITWISE_AND',\r\n '|': 'BITWISE_OR',\r\n '^': 'BITWISE_XOR',\r\n '~': 'BITWISE_NOT',\r\n '<<': 'BITWISE_SHIFT',\r\n '>>': 'BITWISE_SHIFT',\r\n '>>>': 'BITWISE_SHIFT'\r\n };\r\n\r\n var ESCAPE = {\r\n 'n': '\\n',\r\n 'f': '\\f',\r\n 'r': '\\r',\r\n 't': '\\t',\r\n 'v': '\\v',\r\n \"'\": \"'\",\r\n '\"': '\"',\r\n '`': '`'\r\n };\r\n\r\n var EXPRESSIONS = {\r\n 'in': function(a, b) { return a() in b(); },\r\n '?': function(a, b, c) { return a() ? b() : c(); },\r\n '+': function(a, b) { a = a(); b = b(); return a == null ? b : b == null ? a : a + b; },\r\n '-': function(a, b) { return a() - b(); },\r\n '*': function(a, b) { return a() * b(); },\r\n '/': function(a, b) { return a() / b(); },\r\n '%': function(a, b) { return a() % b(); },\r\n '===': function(a, b) { return a() === b(); },\r\n '!==': function(a, b) { return a() !== b(); },\r\n '==': function(a, b) { return a() == b(); },\r\n '!=': function(a, b) { return a() != b(); },\r\n '<': function(a, b) { return a() < b(); },\r\n '>': function(a, b) { return a() > b(); },\r\n '<=': function(a, b) { return a() <= b(); },\r\n '>=': function(a, b) { return a() >= b(); },\r\n '&&': function(a, b) { return a() && b(); },\r\n '||': function(a, b) { return a() || b(); },\r\n '&': function(a, b) { return a() & b(); },\r\n '|': function(a, b) { return a() | b(); },\r\n '^': function(a, b) { return a() ^ b(); },\r\n '<<': function(a, b) { return a() << b(); },\r\n '>>': function(a, b) { return a() >> b(); },\r\n '>>>': function(a, b) { return a() >>> b(); },\r\n '~': function(a) { return ~a(); },\r\n '!': function(a) { return !a(); }\r\n };\r\n\r\n var RESERVED = {\r\n //'JSON': function() { return function() { return JSON; }},\r\n //'Math': function() { return function() { return Math; }},\r\n 'this': function(scope) { return function() { return scope.data; }; },\r\n //'global': function(scope) { return function() { return scope.global.data; }},\r\n 'undefined': function() { return function() { return undefined; }; },\r\n 'null': function() { return function() { return null; }; },\r\n 'true': function() { return function() { return true; }; },\r\n 'false': function() { return function() { return false; }; }\r\n };\r\n\r\n var ZERO = function() { return 0; };\r\n\r\n dmx.lexer = function(exp) {\r\n if (cache[exp]) {\r\n return cache[exp];\r\n }\r\n\r\n var tokens = [], token, name, start, index = 0, op = true, ch, ch2, ch3;\r\n\r\n while (index < exp.length) {\r\n start = index;\r\n\r\n ch = read();\r\n\r\n \t\tif (isQuote(ch) && op) {\r\n \t\t\tname = 'STRING';\r\n \t\t\ttoken = readString(ch);\r\n \t\t\top = false;\r\n \t\t}\r\n \t\telse if ((isDigid(ch) || (is('.') && peek() && isDigid(peek()))) && op) {\r\n \t\t\tname = 'NUMBER';\r\n \t\t\ttoken = readNumber();\r\n \t\t\top = false;\r\n \t\t}\r\n \t\telse if (isAlpha(ch) && op) {\r\n \t\t\tname = 'IDENT';\r\n \t\t\ttoken = readIdent();\r\n \t\t\tif (is('(')) {\r\n \t\t\t\tname = 'METHOD';\r\n \t\t\t}\r\n \t\t\top = false;\r\n \t\t}\r\n \t\telse if (is('/') && op && testRegexp()) {\r\n \t\t\tname = 'REGEXP';\r\n \t\t\ttoken = readRegexp();\r\n \t\t\top = false;\r\n \t\t}\r\n \t\telse if ( isWhitespace(ch) ) {\r\n \t\t\t// WHITESPACE (SKIP)\r\n \t\t\tindex++;\r\n \t\t\tcontinue;\r\n \t\t}\r\n \t\telse if ((ch3 = read(3)) && OPERATORS[ch3]) {\r\n \t\t\tname = OPERATORS[ch3];\r\n \t\t\ttoken = ch3;\r\n \t\t\top = true;\r\n \t\t\tindex += 3;\r\n \t\t}\r\n \t\telse if ((ch2 = read(2)) && OPERATORS[ch2]) {\r\n \t\t\tname = OPERATORS[ch2];\r\n \t\t\ttoken = ch2;\r\n \t\t\top = true;\r\n \t\t\tindex += 2;\r\n \t\t}\r\n \t\telse if (OPERATORS[ch]) {\r\n \t\t\tname = OPERATORS[ch];\r\n \t\t\ttoken = ch;\r\n \t\t\top = true;\r\n \t\t\tindex++;\r\n \t\t}\r\n \t\telse {\r\n \t\t\t// ERROR\r\n \t\t\tthrow Error(\"Lexer Error: Unexpected token '\" + ch + \"' at column \" + index + \" in expression [\" + exp + \"]\");\r\n \t\t}\r\n\r\n \t\ttokens.push({\r\n \t\t\tname : name,\r\n \t\t\tindex: start,\r\n \t\t\tvalue: token\r\n \t\t});\r\n }\r\n\r\n cache[exp] = tokens;\r\n\r\n return tokens;\r\n\r\n function read(n) {\r\n \t\treturn (n > 1) ? exp.substr(index, n) : exp[index];\r\n \t}\r\n\r\n \tfunction peek(n) {\r\n \t\tn = n || 1;\r\n \t\treturn index + n < exp.length ? exp[index + n] : false;\r\n \t}\r\n\r\n \tfunction is(chars) {\r\n \t\treturn chars.indexOf(ch) != -1;\r\n \t}\r\n\r\n \tfunction isQuote(ch) {\r\n \t\treturn ch == '\"' || ch == \"'\" || ch == '`';\r\n \t}\r\n\r\n \tfunction isDigid(ch) {\r\n \t\treturn ch >= '0' && ch <= '9';\r\n \t}\r\n\r\n \tfunction isAlpha(ch) {\r\n \t\treturn (ch >= 'a' && ch <= 'z') ||\r\n \t\t (ch >= 'A' && ch <= 'Z') ||\r\n \t\t ch == '_' || ch == '$';\r\n \t}\r\n\r\n \tfunction isAlphaNum(ch) {\r\n \t\treturn isAlpha(ch) || isDigid(ch);\r\n \t}\r\n\r\n \tfunction isWhitespace(ch) {\r\n \t\treturn ch == ' ' || ch == '\\r' || ch == '\\t' || ch == '\\n' || ch == '\\v' || ch == '\\u00A0';\r\n \t}\r\n\r\n \tfunction isExpOperator(ch) {\r\n \t\treturn ch == '-' || ch == '+' || isDigid(ch);\r\n \t}\r\n\r\n \tfunction readString(quote) {\r\n \t\tvar string = '', escape = false;\r\n\r\n \t\tindex++;\r\n\r\n \t\twhile (index < exp.length) {\r\n \t\t\tch = read();\r\n\r\n \t\t\t// was previous an escape character\r\n \t\t\tif ( escape ) {\r\n \t\t\t\t// unicode escape\r\n \t\t\t\tif (ch == 'u') {\r\n \t\t\t\t\tindex++;\r\n \t\t\t\t\tvar hex = read(4);\r\n \t\t\t\t\tif (hex.match(/[\\da-f]{4}/i)) {\r\n \t\t\t\t\t\tthrow Error('Invalid unicode escape');\r\n \t\t\t\t\t}\r\n \t\t\t\t\tstring += String.fromCharCode(parseInt(hex, 16));\r\n \t\t\t\t\tindex += 3;\r\n \t\t\t\t}\r\n \t\t\t\telse {\r\n \t\t\t\t\tvar rep = ESCAPE[ch];\r\n \t\t\t\t\tstring += rep ? rep : ch;\r\n \t\t\t\t}\r\n\r\n \t\t\t\tescape = false;\r\n \t\t\t}\r\n \t\t\telse if (ch == '\\\\') {\r\n \t\t\t\t// escape character\r\n \t\t\t\tescape = true;\r\n \t\t\t}\r\n \t\t\telse if (ch == quote) {\r\n \t\t\t\t// end of string\r\n \t\t\t\tindex++;\r\n \t\t\t\treturn string;\r\n \t\t\t}\r\n \t\t\telse {\r\n \t\t\t\tstring += ch;\r\n \t\t\t}\r\n\r\n \t\t\tindex++;\r\n \t\t}\r\n\r\n \t\tthrow Error('Unterminated quote');\r\n \t}\r\n\r\n \tfunction readNumber() {\r\n \t\tvar number = '', exponent = false;\r\n\r\n \t\twhile (index < exp.length) {\r\n \t\t\tch = read();\r\n\r\n \t\t\tif (is('.') && peek() && isDigid(peek()) || isDigid(ch)) {\r\n \t\t\t\tnumber += ch;\r\n \t\t\t}\r\n \t\t\telse {\r\n \t\t\t\tvar next = peek();\r\n\r\n \t\t\t\tif (is('eE') && isExpOperator(next)) {\r\n \t\t\t\t\tnumber += 'e';\r\n \t\t\t\t\texponent = true;\r\n \t\t\t\t}\r\n \t\t\t\telse if (isExpOperator(ch) && next && isDigid(next) && exponent) {\r\n \t\t\t\t\tnumber += ch;\r\n \t\t\t\t\texponent = false;\r\n \t\t\t\t}\r\n \t\t\t\telse if (isExpOperator(ch) && (!next || !isDigid(next)) && exponent) {\r\n \t\t\t\t\tthrow Error('Invalid exponent');\r\n \t\t\t\t}\r\n \t\t\t\telse {\r\n \t\t\t\t\tbreak;\r\n \t\t\t\t}\r\n \t\t\t}\r\n\r\n \t\t\tindex++;\r\n \t\t}\r\n\r\n \t\treturn +number;\r\n \t}\r\n\r\n \tfunction readIdent() {\r\n \t\tvar ident = '';\r\n\r\n \t\twhile (index < exp.length) {\r\n \t\t\tch = read();\r\n\r\n \t\t\tif (isAlphaNum(ch)) {\r\n \t\t\t\tident += ch;\r\n \t\t\t}\r\n \t\t\telse {\r\n \t\t\t\tbreak;\r\n \t\t\t}\r\n\r\n \t\t\tindex++;\r\n \t\t}\r\n\r\n \t\treturn ident;\r\n \t}\r\n\r\n \tfunction readRegexp() {\r\n \t\tvar regexp = '', modifiers = '', escape = false;\r\n\r\n \t\tindex++;\r\n\r\n \t\twhile (index < exp.length) {\r\n \t\t\tch = read();\r\n\r\n \t\t\t// was previous an escape character\r\n \t\t\tif (escape) {\r\n \t\t\t\tescape = false;\r\n \t\t\t}\r\n \t\t\telse if (ch == '\\\\') {\r\n \t\t\t\t// escape character\r\n \t\t\t\tescape = true;\r\n \t\t\t}\r\n \t\t\telse if (ch == '/') {\r\n \t\t\t\t// end of regexp\r\n \t\t\t\tindex++;\r\n\r\n \t\t\t\twhile ('ign'.indexOf(ch = read()) != -1) {\r\n \t\t\t\t\tmodifiers += ch;\r\n \t\t\t\t\tindex++;\r\n \t\t\t\t}\r\n\r\n \t\t\t\treturn regexp + '%%%' + modifiers;\r\n \t\t\t}\r\n\r\n \t\t\tregexp += ch;\r\n \t\t\tindex++;\r\n \t\t}\r\n\r\n \t\tthrow Error('Unterminated regexp');\r\n \t}\r\n\r\n \tfunction testRegexp() {\r\n \t\tvar idx = index, ok = true;\r\n\r\n \t\ttry {\r\n \t\t\treadRegexp();\r\n \t\t} catch (e) {\r\n \t\t\tok = false;\r\n \t\t}\r\n\r\n \t\t// reset our index and ch\r\n \t\tindex = idx;\r\n \t\tch = '/';\r\n\r\n \t\treturn ok;\r\n \t}\r\n };\r\n\r\n dmx.parse = function(exp, scope) {\r\n scope = scope || dmx.app;\r\n\r\n // check templates\r\n if (dmx.reExpression.test(exp)) {\r\n if (exp.substr(0, 2) == '{{' && exp.substr(-2) == '}}' && exp.indexOf('{{', 2) == -1) {\r\n return dmx.parse(exp.substring(2, exp.length - 2), scope);\r\n }\r\n\r\n return exp.replace(dmx.reExpressionReplace, function(token, exp) {\r\n var value = dmx.parse(exp, scope);\r\n return value == null ? '' : value;\r\n });\r\n }\r\n\r\n var tokens = dmx.lexer(exp).slice(0), context;\r\n\r\n return doParse();\r\n\r\n function read() {\r\n \t\tif (tokens.length === 0) {\r\n \t\t\tthrow Error('Unexpected end of expression: ' + exp);\r\n \t\t}\r\n\r\n \t\treturn tokens[0];\r\n \t}\r\n\r\n \tfunction peek(e) {\r\n \t\tif (tokens.length > 0) {\r\n \t\t\tvar token = tokens[0];\r\n\r\n \t\t\tif (!e || token.name == e) {\r\n \t\t\t\treturn token;\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn false;\r\n \t}\r\n\r\n \tfunction expect(e) {\r\n \t\tvar token = peek(e);\r\n\r\n \t\tif (token) {\r\n \t\t\ttokens.shift();\r\n \t\t\treturn token;\r\n \t\t}\r\n\r\n \t\treturn false;\r\n \t}\r\n\r\n \tfunction consume(e) {\r\n \t\tif (!expect(e)) {\r\n \t\t\tthrow Error('Unexpected token, expecting [' + e + ']. expression: ' + exp);\r\n \t\t}\r\n \t}\r\n\r\n \tfunction fn(exp) {\r\n \t\tvar args = Array.prototype.slice.call(arguments, 1);\r\n\r\n \t\treturn function() {\r\n \t\t\tif (EXPRESSIONS.hasOwnProperty(exp)) {\r\n \t\t\t\treturn EXPRESSIONS[exp].apply(scope, args);\r\n \t\t\t} else {\r\n \t\t\t\treturn exp;\r\n \t\t\t}\r\n \t\t};\r\n \t}\r\n\r\n \tfunction doParse() {\r\n \t\tvar a = [];\r\n\r\n \t\twhile (true) {\r\n \t\t\tif (tokens.length > 0 && !(peek('R_PAREN') || peek('R_BRACKET'))) {\r\n \t\t\t\ta.push(expression());\r\n \t\t\t}\r\n\r\n \t\t\treturn (a.length == 1 ?\r\n \t\t\t\ta[0] : b)();\r\n \t\t}\r\n\r\n \t\tfunction b() {\r\n \t\t\tvar value;\r\n\r\n \t\t\tfor (var i = 0; i < a.length; i++) {\r\n \t\t\t\tvar e = a[i];\r\n \t\t\t\tif (e) { value = e(); }\r\n \t\t\t}\r\n\r\n \t\t\treturn value;\r\n \t\t}\r\n \t}\r\n\r\n \tfunction expression() {\r\n \t\treturn conditional();\r\n \t}\r\n\r\n \tfunction conditional() {\r\n \t\tvar left = logicalOr(), middle, token;\r\n\r\n \t\tif ((token = expect('QUESTION'))) {\r\n \t\t\tmiddle = conditional();\r\n\r\n \t\t\tif ((token = expect('COLON'))) {\r\n \t\t\t\treturn fn('?', left, middle, conditional());\r\n \t\t\t} else {\r\n \t\t\t\tthrow Error('Parse Error');\r\n \t\t\t}\r\n \t\t} else {\r\n \t\t\treturn left;\r\n \t\t}\r\n \t}\r\n\r\n \tfunction logicalOr() {\r\n \t\tvar left = logicalAnd(), token;\r\n\r\n \t\twhile (true) {\r\n \t\t\tif ((token = expect('LOGICAL_OR'))) {\r\n \t\t\t\tleft = fn(token.value, left, logicalAnd());\r\n \t\t\t} else {\r\n \t\t\t\treturn left;\r\n \t\t\t}\r\n \t\t}\r\n \t}\r\n\r\n \tfunction logicalAnd() {\r\n \t\tvar left = bitwiseOr(), token;\r\n\r\n \t\tif ((token = expect('LOGICAL_AND'))) {\r\n \t\t\tleft = fn(token.value, left, logicalAnd());\r\n \t\t}\r\n\r\n \t\treturn left;\r\n \t}\r\n\r\n \tfunction bitwiseOr() {\r\n \t\tvar left = bitwiseXor(), token;\r\n\r\n \t\tif ((token = expect('BITWISE_OR'))) {\r\n \t\t\tleft = fn(token.value, left, bitwiseXor());\r\n \t\t}\r\n\r\n \t\treturn left;\r\n \t}\r\n\r\n \tfunction bitwiseXor() {\r\n \t\tvar left = bitwiseAnd(), token;\r\n\r\n \t\tif ((token = expect('BITWISE_XOR'))) {\r\n \t\t\tleft = fn(token.value, left, bitwiseAnd());\r\n \t\t}\r\n\r\n \t\treturn left;\r\n \t}\r\n\r\n \tfunction bitwiseAnd() {\r\n \t\tvar left = equality(), token;\r\n\r\n \t\tif ((token = expect('BITWISE_AND'))) {\r\n \t\t\tleft = fn(token.value, left, bitwiseAnd());\r\n \t\t}\r\n\r\n \t\treturn left;\r\n \t}\r\n\r\n \tfunction equality() {\r\n \t\tvar left = relational(), token;\r\n\r\n \t\tif ((token = expect('EQUALITY'))) {\r\n \t\t\tleft = fn(token.value, left, equality());\r\n \t\t}\r\n\r\n \t\treturn left;\r\n \t}\r\n\r\n \tfunction relational() {\r\n \t\tvar left = bitwiseShift(), token;\r\n\r\n \t\tif ((token = expect('RELATIONAL'))) {\r\n \t\t\tleft = fn(token.value, left, relational());\r\n \t\t}\r\n\r\n \t\treturn left;\r\n \t}\r\n\r\n \t// bitwise shift here\r\n\r\n \tfunction bitwiseShift() {\r\n \t\tvar left = addictive(), token;\r\n\r\n \t\twhile ((token = expect('BITWISE_SHIFT'))) {\r\n \t\t\tleft = fn(token.value, left, addictive());\r\n \t\t}\r\n\r\n \t\treturn left;\r\n \t}\r\n\r\n \tfunction addictive() {\r\n \t\tvar left = multiplicative(), token;\r\n\r\n \t\twhile ((token = expect('ADDICTIVE'))) {\r\n \t\t\tleft = fn(token.value, left, multiplicative());\r\n \t\t}\r\n\r\n \t\treturn left;\r\n \t}\r\n\r\n \tfunction multiplicative() {\r\n \t\tvar left = unary(), token;\r\n\r\n \t\twhile ((token = expect('MULTIPLICATIVE'))) {\r\n \t\t\tleft = fn(token.value, left, unary());\r\n \t\t}\r\n\r\n \t\treturn left;\r\n \t}\r\n\r\n \tfunction unary() {\r\n \t\tvar token;\r\n\r\n \t\tif ((token = expect('ADDICTIVE'))) {\r\n \t\t\tif (token.value == '+') {\r\n \t\t\t\treturn primary();\r\n \t\t\t} else {\r\n \t\t\t\treturn fn(token.value, ZERO, unary());\r\n \t\t\t}\r\n \t\t} else if ((token = expect('LOGICAL_NOT'))) {\r\n \t\t\treturn fn(token.value, unary());\r\n \t\t} else {\r\n \t\t\treturn primary();\r\n \t\t}\r\n \t}\r\n\r\n \tfunction primary() {\r\n \t\tvar value, next;\r\n\r\n \t\tif (expect('L_PAREN')) {\r\n \t\t\tvalue = expression();\r\n \t\t\tconsume('R_PAREN');\r\n } else if (expect('L_CURLY')) {\r\n var obj = {};\r\n\r\n if (read().name != 'R_CURLY') {\r\n do {\r\n var key = expect().value;\r\n consume('COLON');\r\n obj[key] = expression()();\r\n } while (expect('COMMA'))\r\n }\r\n\r\n value = fn(obj);\r\n\r\n \t\t\tconsume('R_CURLY');\r\n \t\t} else if (expect('L_BRACKET')) {\r\n var arr = [];\r\n\r\n \t\tif (read().name != 'R_BRACKET') {\r\n \t\t\tdo {\r\n \t\t\t\tarr.push(expression()());\r\n \t\t\t} while (expect('COMMA'));\r\n \t\t}\r\n\r\n value = fn(arr);\r\n\r\n \t\tconsume('R_BRACKET');\r\n \t\t} else if (expect('PERIOD')) {\r\n \t\t\tvalue = peek() ? objectMember(fn(scope.data)) : fn(scope.data);\r\n \t\t} else {\r\n \t\t\tvar token = expect();\r\n\r\n \t\t\tif (token === false) {\r\n \t\t\t\tthrow Error('Not a primary expression');\r\n \t\t\t}\r\n\r\n \t\t\tif (token.name == 'IDENT') {\r\n \t\t\t\tvalue = RESERVED.hasOwnProperty(token.value) ?\r\n \t\t\t\t\tRESERVED[token.value](scope) :\r\n \t\t\t\t\tfunction() { return scope.get(token.value); };\r\n \t\t\t} else if (token.name == 'METHOD') {\r\n value = fn(dmx.__formatters.global[token.value] || function() {\r\n \t\t\t\t\tif (window.warn) console.warn('Formatter ' + token.value + ' doesn\\'t exist');\r\n \t\t\t\t\treturn undefined;\r\n });\r\n \t\t\t} else if (token.name == 'REGEXP') {\r\n \t\t\t\tvalue = function() {\r\n \t\t\t\t\tvar re = token.value.split('%%%');\r\n \t\t\t\t\treturn new RegExp(re[0], re[1]);\r\n \t\t\t\t};\r\n \t\t\t} else {\r\n \t\t\t\tvalue = function() { return token.value; };\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\twhile ((next = expect('L_PAREN') || expect('L_BRACKET') || expect('PERIOD'))) {\r\n \t\t\tif (next.value == '(') {\r\n \t\t\t\tvalue = functionCall(value, context);\r\n \t\t\t} else if (next.value == '[') {\r\n \t\t\t\tcontext = value;\r\n \t\t\t\tvalue = objectIndex(value);\r\n \t\t\t} else if (next.value == '.') {\r\n \t\t\t\tcontext = value;\r\n \t\t\t\tvalue = objectMember(value);\r\n \t\t\t} else {\r\n \t\t\t\tthrow Error('Parse Error');\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tcontext = null;\r\n\r\n \t\treturn value;\r\n \t}\r\n\r\n \tfunction functionCall(func, ctx) {\r\n \t\tvar argsFn = [];\r\n\r\n \t\tif (read().name != 'R_PAREN') {\r\n \t\t\tdo {\r\n \t\t\t\targsFn.push(expression());\r\n \t\t\t} while (expect('COMMA'));\r\n \t\t}\r\n\r\n \t\tconsume('R_PAREN');\r\n\r\n \t\treturn function() {\r\n \t\t\tvar args = []; //[ctx()];\r\n\r\n if (ctx) {\r\n args.push(ctx());\r\n }\r\n\r\n \t\t\tfor (var i = 0; i < argsFn.length; i++) {\r\n \t\t\t\targs.push(argsFn[i]());\r\n \t\t\t}\r\n\r\n \t\t\tvar fnPtr = func() || dmx.noop;\r\n\r\n \t\t\treturn fnPtr.apply(scope, args);\r\n \t\t};\r\n \t}\r\n\r\n \tfunction objectIndex(object) {\r\n \t\tvar indexFn = expression();\r\n\r\n \t\tconsume('R_BRACKET');\r\n\r\n \t\treturn function() {\r\n \t\t\tvar o = object(),\r\n \t\t\t\ti = indexFn();\r\n\r\n \t\t\tif (typeof o != 'object' || o == null) return undefined;\r\n\r\n \t\t\treturn o[i];\r\n \t\t};\r\n \t}\r\n\r\n \tfunction objectMember(object) {\r\n \t\tvar token = expect();\r\n\r\n \t\treturn function() {\r\n \t\t\tvar o = object();\r\n\r\n \t\t\t//if (typeof o == 'undefined') return undefined;\r\n\r\n \t\t\tif (token.name == 'METHOD') {\r\n //if (o == null) return o;\r\n var type = typeof o;\r\n //if (Array.isArray(o)) type = 'array';\r\n if (type == 'object') {\r\n type = Object.prototype.toString.call(o).slice(8, -1).toLowerCase();\r\n }\r\n \t\t\t\treturn type == 'object' && typeof o['__' + token.value] == 'function'\r\n \t\t\t\t\t? o['__' + token.value]\r\n \t\t\t\t\t: dmx.__formatters[type] && dmx.__formatters[type][token.value] || function() {\r\n \t\t\t\t\tif (o != null && console.warn) console.warn('Formatter ' + token.value + ' doesn\\'t exist for type ' + type);\r\n \t\t\t\t\treturn undefined;\r\n \t\t\t\t};\r\n \t\t\t}\r\n\r\n \t\t\treturn o && o.hasOwnProperty(token.value) ? o[token.value] : undefined;\r\n \t\t};\r\n \t}\r\n };\r\n\r\n})();\r\n","dmx.DataScope = function(data, parent) {\r\n return {\r\n parent: parent || dmx.app,\r\n data: data,\r\n seed: Math.random(),\r\n get: function(name) {\r\n if (this.data.hasOwnProperty(name)) {\r\n return this.data[name];\r\n }\r\n\r\n if (this.parent) {\r\n if (name == 'parent') {\r\n return this.parent.data;\r\n }\r\n\r\n return this.parent.get(name);\r\n }\r\n\r\n return undefined;\r\n }\r\n };\r\n};\r\n","dmx.BaseComponent = dmx.createClass({\r\n\r\n constructor: function(node, parent) {\r\n this.$node = node;\r\n this.parent = parent;\r\n this.bindings = {};\r\n this.propBindings = {};\r\n this.children = [];\r\n this.listeners = {};\r\n this.props = {};\r\n this.data = {};\r\n this.seed = Math.random();\r\n\r\n this.name = node.getAttribute('id') || node.getAttribute('name') || this.type.toLowerCase().replace(/^dmx-/, '');\r\n this.name = this.name.replace(/[^\\w]/, '');\r\n\r\n this.$parseAttributes(node);\r\n this.$initialData();\r\n this.render(node);\r\n if (this.beforeMount(node) !== false) {\r\n this.$mount(node);\r\n if (this.$node) {\r\n //this.$customAttributes('mount', this.$node);\r\n this.$customAttributes('mounted', this.$node);\r\n }\r\n this.dispatchEvent('mount');\r\n this.mounted();\r\n }\r\n },\r\n\r\n tag: null,\r\n initialData: {},\r\n attributes: {},\r\n methods: {},\r\n events: {\r\n mount: Event,\r\n destroy: Event\r\n },\r\n\r\n render: function(node) {\r\n if (this.tag) {\r\n if (this.tag.toUpperCase() !== this.$node.tagName) {\r\n this.$node = document.createElement(this.tag);\r\n // copy attributes\r\n for (var i = 0; i < node.attributes.length; i++) {\r\n var attr = node.attributes[i];\r\n\r\n if (attr.specified) {\r\n this.$node.setAttribute(attr.name, attr.value);\r\n }\r\n }\r\n this.$node.innerHTML = node.innerHTML;\r\n }\r\n } else {\r\n this.$node = null;\r\n }\r\n\r\n this.$placeholder = document.createComment(' ' + this.type + '[' + this.name + '] ');\r\n dmx.dom.replace(node, this.$placeholder);\r\n\r\n if (this.$node) {\r\n this.$node.dmxComponent = this;\r\n this.$parse();\r\n }\r\n },\r\n\r\n beforeMount: dmx.noop,\r\n mounted: dmx.noop,\r\n\r\n beforeUpdate: dmx.noop,\r\n update: dmx.noop,\r\n updated: dmx.noop,\r\n\r\n beforeDestroy: dmx.noop,\r\n destroyed: dmx.noop,\r\n\r\n addEventListener: function(type, callback) {\r\n if (!(type in this.listeners)) {\r\n this.listeners[type] = [];\r\n }\r\n this.listeners[type].push(callback)\r\n },\r\n\r\n removeEventListener: function(type, callback) {\r\n if (!(type in this.listeners)) return;\r\n\r\n var stack = this.listeners[type];\r\n for (var i = 0; i < stack.length; i++) {\r\n if (stack[i] === callback) {\r\n stack.splice(i, 1);\r\n return this.removeEventListener(type, callback);\r\n }\r\n }\r\n },\r\n\r\n dispatchEvent: function(event, props) {\r\n if (typeof event == 'string') {\r\n try {\r\n var ComponentEvent = this.events[event];\r\n event = new ComponentEvent(event, props);\r\n } catch (err) {\r\n var eventType = event;\r\n event = document.createEvent('Event');\r\n event.initEvent(eventType, props && props.bubbles, props && props.cancelable);\r\n if (!(event instanceof Event)) {\r\n console.warn('Unknown event ' + event, this.events);\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if (!(event.type in this.listeners)) return true;\r\n\r\n var stack = this.listeners[event.type];\r\n event.target = this;\r\n for (var i = 0; i < stack.length; i++) {\r\n if (stack[i].call(this, event) === false) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n return !event.defaultPrevented;\r\n },\r\n\r\n $addChild: function(name, node) {\r\n var Component = dmx.__components[name];\r\n var component = new Component(node, this);\r\n this.children.push(component);\r\n if (component.name) {\r\n this.add(component.name, component.data);\r\n }\r\n },\r\n\r\n $customAttributes: function(hook, node) {\r\n dmx.dom.getAttributes(node).forEach(function(attr) {\r\n if (dmx.__attributes[hook][attr.name]) {\r\n node.removeAttribute(attr.fullName);\r\n dmx.__attributes[hook][attr.name].call(this, node, attr);\r\n }\r\n }, this);\r\n },\r\n\r\n $parse: function(node) {\r\n node = node || this.$node;\r\n\r\n if (!node) return;\r\n\r\n if (node.nodeType === 3) {\r\n if (dmx.reExpression.test(node.nodeValue)) {\r\n this.$addBinding(node.nodeValue, function(value, oldValue) {\r\n node.nodeValue = value;\r\n });\r\n }\r\n }\r\n\r\n if (node.nodeType !== 1) return;\r\n\r\n if (dmx.config.mapping) {\r\n Object.keys(dmx.config.mapping).forEach(function(map) {\r\n dmx.array(node.querySelectorAll(map)).forEach(function(node) {\r\n if (!node.hasAttribute('is')) {\r\n node.setAttribute('is', 'dmx-' + dmx.config.mapping[map]);\r\n }\r\n });\r\n });\r\n }\r\n\r\n dmx.dom.walk(node, function(node) {\r\n if (node == this.$node) {\r\n // skip current node\r\n return;\r\n }\r\n\r\n // Element Node\r\n if (node.nodeType === 1) {\r\n var tagName = node.tagName.toLowerCase();\r\n var attributes = dmx.dom.getAttributes(node);\r\n\r\n if (dmx.reIgnoreElement.test(tagName)) {\r\n // ignore element\r\n return false;\r\n }\r\n\r\n this.$customAttributes('before', node);\r\n var idx = attributes.findIndex(function(attr) { return attr.name === 'repeat'; });\r\n if (idx !== -1) return false;\r\n\r\n if (node.hasAttribute('is')) {\r\n tagName = node.getAttribute('is');\r\n }\r\n\r\n if (dmx.rePrefixed.test(tagName)) {\r\n tagName = tagName.replace(/^dmx-/i, '');\r\n\r\n if (tagName in dmx.__components) {\r\n node.isComponent = true;\r\n this.$addChild(tagName, node);\r\n return false;\r\n } else {\r\n console.warn('Unknown component found! ' + tagName);\r\n return;\r\n }\r\n }\r\n\r\n //this.$customAttributes('mount', node);\r\n this.$customAttributes('mounted', node);\r\n }\r\n\r\n // Text Node\r\n if (node.nodeType === 3) {\r\n if (dmx.reExpression.test(node.nodeValue)) {\r\n this.$addBinding(node.nodeValue, function(value, oldValue) {\r\n node.nodeValue = value;\r\n });\r\n }\r\n }\r\n }, this);\r\n },\r\n\r\n $update: function() {\r\n if (this.beforeUpdate() !== false) {\r\n var props = dmx.clone(this.props); //Object.assign({}, this.props);\r\n\r\n this.$updateBindings(this.propBindings);\r\n this.$updateBindings(this.bindings);\r\n\r\n this.update(props);\r\n\r\n this.children.forEach(function(child) {\r\n child.$update();\r\n });\r\n\r\n this.updated();\r\n }\r\n },\r\n\r\n $updateBindings: function(bindings) {\r\n Object.keys(bindings).forEach(function(expression) {\r\n var binding = bindings[expression];\r\n var value = dmx.parse(expression, this);\r\n\r\n if (JSON.stringify(value) !== JSON.stringify(binding.value)) {\r\n binding.callbacks.forEach(function(cb) {\r\n cb.call(this, value, binding.value);\r\n }, this);\r\n binding.value = dmx.clone(value);\r\n }\r\n }, this);\r\n },\r\n\r\n $parseAttributes: function(node) {\r\n var self = this;\r\n\r\n if (this.attributes) {\r\n Object.keys(this.attributes).forEach(function(prop) {\r\n var options = self.attributes[prop];\r\n var value = options.default;\r\n\r\n if (node.hasAttribute(prop)) {\r\n if (options.type == Boolean) {\r\n value = true;\r\n } else {\r\n value = node.getAttribute(prop);\r\n\r\n if (options.type == Number) {\r\n value = Number(value);\r\n }\r\n\r\n if (options.type == String) {\r\n value = String(value);\r\n }\r\n\r\n if (options.validate && !options.validate(value)) {\r\n value = options.default;\r\n }\r\n }\r\n\r\n node.removeAttribute(prop);\r\n }\r\n\r\n if (node.hasAttribute('dmx-bind:' + prop)) {\r\n //self.$addBinding(node.getAttribute('dmx-bind:' + prop), self.$propBinding(prop).bind(self));\r\n var expression = node.getAttribute('dmx-bind:' + prop);\r\n var cb = self.$propBinding(prop).bind(self);\r\n self.propBindings[expression] = self.propBindings[expression] || { value: null, callbacks: [] };\r\n self.propBindings[expression].callbacks.push(cb);\r\n cb.call(self, self.propBindings[expression].value);\r\n node.removeAttribute('dmx-bind:' + prop);\r\n }\r\n\r\n self.props[prop] = dmx.clone(value);\r\n });\r\n }\r\n\r\n if (this.events) {\r\n Object.keys(this.events).forEach(function(event) {\r\n if (node.hasAttribute('on' + event)) {\r\n self.addEventListener(event, Function('event', node.getAttribute('on' + event)));\r\n node.removeAttribute('on' + event);\r\n }\r\n });\r\n }\r\n\r\n dmx.dom.getAttributes(node).forEach(function(attr) {\r\n if (attr.name == 'on' && this.events[attr.argument]) {\r\n dmx.eventListener(self, attr.argument, function(event) {\r\n var returnValue = dmx.parse(attr.value, dmx.DataScope({\r\n $event: event\r\n }, self));\r\n\r\n if (typeof returnValue == 'string') {\r\n try {\r\n returnValue = (new Function('event', returnValue)).call(this, event);\r\n } catch(e) {\r\n console.warn('Error executing \"' + returnValue + '\"', e);\r\n }\r\n }\r\n\r\n return returnValue;\r\n }, attr.modifiers);\r\n\r\n node.removeAttribute(attr.fullName);\r\n }\r\n }, this);\r\n },\r\n\r\n $propBinding: function(prop) {\r\n var options = this.attributes[prop];\r\n var self = this;\r\n\r\n return function(value) {\r\n if (value === undefined) {\r\n value = options.default;\r\n }\r\n\r\n if (options.type == Boolean) {\r\n value = !!value;\r\n }\r\n\r\n if (options.type == Number) {\r\n value = Number(value);\r\n }\r\n\r\n if (options.type == String) {\r\n value = String(value);\r\n }\r\n\r\n if (options.validate && !options.validate(value)) {\r\n value = options.default;\r\n }\r\n\r\n self.props[prop] = dmx.clone(value);\r\n };\r\n },\r\n\r\n $initialData: function() {\r\n Object.assign(\r\n this.data,\r\n { $type: this.type },\r\n typeof this.initialData == 'function' ? this.initialData() : this.initialData\r\n );\r\n\r\n Object.keys(this.methods).forEach(function(method) {\r\n var self = this;\r\n this.data['__' + method] = function() {\r\n return self.methods[method].apply(self, Array.prototype.slice.call(arguments, 1));\r\n };\r\n }, this);\r\n },\r\n\r\n $mount: function(node) {\r\n if (this.$placeholder && this.$node) {\r\n dmx.dom.replace(this.$placeholder, this.$node);\r\n }\r\n },\r\n\r\n $addBinding: function(expression, cb) {\r\n this.bindings[expression] = this.bindings[expression] || { value: null, callbacks: [] };\r\n this.bindings[expression].callbacks.push(cb);\r\n cb.call(this, this.bindings[expression].value);\r\n },\r\n\r\n $destroy: function() {\r\n this.dispatchEvent('destroy');\r\n this.beforeDestroy();\r\n this.$destroyChildren();\r\n if (this.parent) {\r\n this.parent.del(this.name);\r\n }\r\n if (this.$node) {\r\n dmx.dom.remove(this.$node);\r\n }\r\n this.destroyed();\r\n },\r\n\r\n $destroyChildren: function() {\r\n this.children.forEach(function(child) {\r\n child.$destroy();\r\n });\r\n\r\n this.children = [];\r\n },\r\n\r\n get: function(name, ignoreParents) {\r\n if (this.data.hasOwnProperty(name)) {\r\n return this.data[name];\r\n }\r\n\r\n if (this.parent && ignoreParents !== true) {\r\n if (name == 'parent') {\r\n return this.parent.data;\r\n }\r\n\r\n return this.parent.get(name);\r\n }\r\n\r\n return null;\r\n },\r\n\r\n add: function(name, value) {\r\n if (this.data[name]) {\r\n if (Array.isArray(this.data[name])) {\r\n this.data[name].push(value);\r\n } else {\r\n this.data[name] = [this.data[name], value];\r\n }\r\n } else {\r\n this.set(name, value);\r\n }\r\n dmx.requestUpdate();\r\n },\r\n\r\n set: function(name, value) {\r\n if (typeof name == 'object') {\r\n for (var prop in name) {\r\n this.set(prop, name[prop]);\r\n }\r\n return;\r\n }\r\n\r\n if (JSON.stringify(this.data[name]) !== JSON.stringify(value)) {\r\n this.data[name] = value;\r\n dmx.requestUpdate();\r\n }\r\n },\r\n\r\n del: function(name) {\r\n delete this.data[name];\r\n dmx.requestUpdate();\r\n }\r\n});\r\n","dmx.Component('app', {\r\n\r\n initialData: {\r\n query: {}\r\n },\r\n\r\n attributes: {},\r\n\r\n methods: {},\r\n\r\n event: {\r\n ready: Event,\r\n load: Event\r\n },\r\n\r\n render: function(node) {\r\n this.parseQuery();\r\n this.$parse();\r\n window.addEventListener('load', this.onload.bind(this));\r\n dmx.nextTick(function() {\r\n this.dispatchEvent('ready');\r\n }, this);\r\n },\r\n\r\n update: function() {\r\n this.parseQuery();\r\n },\r\n\r\n onload: function() {\r\n this.dispatchEvent('load');\r\n },\r\n\r\n parseQuery: function() {\r\n var query = '';\r\n\r\n if (window.location.search) {\r\n query = window.location.search.substr(1);\r\n } else if (window.location.hash.indexOf('?')) {\r\n query = window.location.hash.substr(window.location.hash.indexOf('?') + 1);\r\n if (query.indexOf('#')) {\r\n query = query.substr(0, query.indexOf('#'));\r\n }\r\n }\r\n\r\n this.set('query', query.split('&').reduce(function(query, part) {\r\n var p = part.split('=');\r\n if (p[0]) {\r\n query[decodeURIComponent(p[0])] = decodeURIComponent(p[1] || '');\r\n }\r\n return query;\r\n }, {}));\r\n }\r\n\r\n});\r\n","dmx.Component('form', {\r\n\r\n tag: 'form',\r\n\r\n attributes: {\r\n novalidate: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n methods: {\r\n submit: function() {\r\n this.submit();\r\n },\r\n\r\n reset: function() {\r\n this.reset();\r\n },\r\n\r\n validate: function() {\r\n this.validate();\r\n }\r\n },\r\n\r\n events: {\r\n invalid: Event, // when form validation failed\r\n submit: Event // on form submit (can cancel submit)\r\n },\r\n\r\n render: function(node) {\r\n dmx.BaseComponent.prototype.render.call(this, node);\r\n this.$node.noValidate = true;\r\n this.$node.addEventListener('submit', this.onsubmit.bind(this));\r\n this.$node.addEventListener('reset', dmx.requestUpdate);\r\n },\r\n\r\n submit: function(data) {\r\n if (this.props.novalidate || this.validate()) {\r\n if (this.dispatchEvent('submit', { cancelable: true })) {\r\n this._submit();\r\n }\r\n } else {\r\n dmx.requestUpdate();\r\n this.dispatchEvent('invalid');\r\n }\r\n },\r\n\r\n _submit: function() {\r\n this.$node.submit();\r\n },\r\n\r\n reset: function() {\r\n this.$node.reset();\r\n },\r\n\r\n validate: function() {\r\n return dmx.validate(this.$node);\r\n },\r\n\r\n onsubmit: function(event) {\r\n event.preventDefault();\r\n this.submit();\r\n }\r\n\r\n});\r\n","dmx.Component('form-element', {\r\n\r\n constructor: function(node, parent) {\r\n this.updateData = dmx.debounce(this.updateData.bind(this));\r\n dmx.BaseComponent.call(this, node, parent);\r\n },\r\n\r\n initialData: {\r\n value: '',\r\n disabled: false,\r\n validationMessage: '',\r\n invalid: false\r\n },\r\n\r\n attributes: {\r\n value: {\r\n type: String,\r\n default: ''\r\n },\r\n\r\n disabled: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n methods: {\r\n setValue: function(value) {\r\n this.setValue(value);\r\n },\r\n\r\n focus: function() {\r\n this.focus();\r\n },\r\n\r\n disable: function(disable) {\r\n this.disable(disable);\r\n },\r\n\r\n validate: function() {\r\n this.validate();\r\n }\r\n },\r\n\r\n events: {\r\n updated: Event\r\n },\r\n\r\n render: function(node) {\r\n dmx.BaseComponent.prototype.render.call(this, node);\r\n this.$node.value = this.props.value;\r\n this.$node.disabled = this.props.disabled;\r\n this.$node.defaultValue = this.props.value;\r\n this.$node.addEventListener('input', this.updateData.bind(this));\r\n this.$node.addEventListener('change', this.updateData.bind(this));\r\n this.$node.addEventListener('invalid', this.updateData.bind(this));\r\n this.set('value', this.props.value);\r\n this.set('disabled', this.props.disabled);\r\n },\r\n\r\n update: function(props) {\r\n if (JSON.stringify(props.value) !== JSON.stringify(this.props.value)) {\r\n this.$node.defaultValue = this.props.value;\r\n this.setValue(this.props.value);\r\n }\r\n\r\n if (props.disabled != this.props.disabled) {\r\n this.$node.disabled = this.props.disabled;\r\n }\r\n\r\n this.updateData();\r\n },\r\n\r\n updateData: function(event) {\r\n if (event) {\r\n dmx.validate(this.$node);\r\n }\r\n\r\n if (this.$node.value !== this.data.value) {\r\n dmx.nextTick(function() {\r\n this.dispatchEvent('updated');\r\n }, this);\r\n }\r\n\r\n this.set('value', this.$node.value);\r\n this.set('disabled', this.$node.disabled);\r\n\r\n if (this.$node.dirty) {\r\n this.set('invalid', !this.$node.validity.valid);\r\n this.set('validationMessage', this.$node.validationMessage);\r\n }\r\n },\r\n\r\n setValue: function(value) {\r\n this.$node.value = value;\r\n this.updateData();\r\n },\r\n\r\n focus: function() {\r\n this.$node.focus();\r\n },\r\n\r\n disable: function(disable) {\r\n this.$node.disabled = (disable === true);\r\n this.updateData();\r\n },\r\n\r\n validate: function() {\r\n dmx.validate(this.$node);\r\n this.updateData();\r\n }\r\n\r\n});\r\n","dmx.Component('textarea', {\r\n\r\n extends: 'form-element',\r\n\r\n tag: 'textarea',\r\n\r\n render: function(node) {\r\n if (!this.props.value) {\r\n var value = this.$node.value;\r\n if (value.indexOf('{{') !== -1) {\r\n this.props.value = dmx.parse(value, this);\r\n } else {\r\n this.props.value = value;\r\n }\r\n }\n dmx.Component('form-element').prototype.render.call(this, node);\r\n }\r\n\r\n});\r\n","dmx.Component('input', {\r\n extends: 'form-element',\r\n tag: 'input'\r\n});\r\n","dmx.Component('input-file', {\r\n\r\n extends: 'input',\r\n\r\n initialData:{\r\n file: null\r\n },\r\n\r\n render: function(node) {\r\n dmx.Component('form-element').prototype.render.call(this, node);\r\n this.$node.addEventListener('change', this.onchange.bind(this));\r\n },\r\n\r\n onchange: function() {\r\n var data = null;\r\n\r\n if (this.$node.files.length) {\r\n var file = this.$node.files[0];\r\n\r\n data = {\r\n date: (file.lastModified ? new Date(file.lastModified) : file.lastModifiedDate).toISOString(),\r\n name: file.name,\r\n size: file.size,\r\n type: file.type,\r\n dataUrl: null\r\n };\r\n\r\n if (file.type.indexOf('image/') !== -1 && !file.reader) {\r\n file.reader = new FileReader();\r\n\r\n file.reader.onload = function(event) {\r\n data.dataUrl = event.target.result;\r\n dmx.requestUpdate();\r\n };\r\n\r\n file.reader.readAsDataURL(file);\r\n }\r\n }\r\n\r\n this.set('file', data);\r\n },\r\n\r\n setValue: function() {\r\n console.warn('Can not set value of a file input!');\r\n }\r\n\r\n});\r\n","dmx.Component('input-file-multiple', {\r\n\r\n extends: 'input',\r\n\r\n initialData: {\r\n files: []\r\n },\r\n\r\n render: function(node) {\r\n dmx.Component('form-element').prototype.render.call(this, node);\r\n this.$node.addEventListener('change', this.onchange.bind(this));\r\n },\r\n\r\n onchange: function() {\r\n var self = this;\r\n var files = Array.prototype.slice.call(this.$node.files).map(function(file) {\r\n var data = {\r\n date: (file.lastModified ? new Date(file.lastModified) : file.lastModifiedDate).toISOString(),\r\n name: file.name,\r\n size: file.size,\r\n type: file.type,\r\n dataUrl: null\r\n };\r\n\r\n if (file.type.indexOf('image/') !== -1 && !file.reader) {\r\n file.reader = new FileReader();\r\n\r\n file.reader.onload = function(event) {\r\n data.dataUrl = event.target.result;\r\n dmx.requestUpdate();\r\n };\r\n\r\n file.reader.readAsDataURL(file);\r\n }\r\n\r\n return data;\r\n });\r\n\r\n this.set('files', files);\r\n },\r\n\r\n setValue: function() {\r\n console.warn('Can not set value of a file input!');\r\n }\r\n\r\n});\r\n","dmx.Component('input-number', {\r\n\r\n extends: 'input',\r\n\r\n render: function(node) {\r\n dmx.Component('form-element').prototype.render.call(this, node);\r\n this.set('value', +this.props.value);\r\n },\r\n\r\n updateData: function(event) {\r\n if (event) {\r\n dmx.validate(this.$node);\r\n }\r\n\r\n if (this.$node.value !== this.data.value) {\r\n dmx.nextTick(function() {\r\n this.dispatchEvent('updated');\r\n }, this);\r\n }\r\n this.set('value', this.$node.value ? +this.$node.value : null);\r\n this.set('disabled', this.$node.disabled);\r\n\r\n if (this.$node.dirty) {\r\n this.set('invalid', !this.$node.validity.valid);\r\n this.set('validationMessage', this.$node.validationMessage);\r\n }\r\n }\r\n\r\n});\r\n","dmx.Component('button', {\r\n\r\n extends: 'form-element',\r\n\r\n tag: 'button',\r\n\r\n attributes: {\r\n type: {\r\n type: String,\r\n default: 'button', // button, reset, submit\r\n validate: function(val) {\r\n return /^(button|submit|reset)$/i.test(val);\r\n }\r\n }\r\n },\r\n\r\n render: function(node) {\r\n dmx.Component('form-element').prototype.render.call(this, node);\r\n this.$node.type = this.props.type;\r\n if (node.tagName === 'INPUT') {\r\n this.$node.innerText = this.props.value;\r\n }\r\n }\r\n\r\n});\r\n","dmx.Component('radio', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n checked: false\r\n },\r\n\r\n tag: 'input',\r\n\r\n attributes: {\r\n checked: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n methods: {\r\n select: function(check) {\r\n this.select(check);\r\n }\r\n },\r\n\r\n render: function(node) {\r\n dmx.Component('form-element').prototype.render.call(this, node);\r\n this.$node.addEventListener('click', this.updateData.bind(this));\r\n this.$node.type = 'radio';\r\n this.$node.checked = this.props.checked;\r\n this.set('checked', this.props.checked);\r\n },\r\n\r\n update: function(props) {\r\n dmx.Component('form-element').prototype.update.call(this, props);\r\n\r\n if (props.checked !== this.props.checked) {\r\n this.$node.checked = this.props.checked;\r\n }\r\n\r\n this.updateData();\r\n },\r\n\r\n updateData: function(event) {\r\n dmx.Component('form-element').prototype.updateData.call(this, event);\r\n this.set('checked', this.$node.checked);\r\n },\r\n\r\n select: function(check) {\r\n this.$node.checked = (check !== false);\r\n }\r\n\r\n});\r\n","dmx.Component('radio-group', {\r\n\r\n initialData: {\r\n value: ''\r\n },\r\n\r\n tag: 'div',\r\n\r\n attributes: {\r\n value: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n\r\n methods: {\r\n setValue: function(value) {\r\n this.setValue(value);\r\n }\r\n },\r\n\r\n render: function(node) {\r\n dmx.BaseComponent.prototype.render.call(this, node);\r\n this.setValue(this.props.value);\r\n },\r\n\r\n update: function(props) {\r\n dmx.BaseComponent.prototype.update.call(this, props);\r\n\r\n if (props.value != this.props.value) {\r\n this.updateValue = true;\r\n }\r\n },\r\n\r\n updated: function() {\r\n if (this.updateValue) {\r\n this.updateValue = false;\r\n this.setValue(this.props.value, true);\r\n }\r\n\r\n var values = Array.prototype.slice.call(this.$node.querySelectorAll('input[type=radio]')).filter(function(radio) {\r\n return !radio.disabled && radio.checked;\r\n }).map(function(radio) {\r\n return radio.value || 1;\r\n });\r\n\r\n this.set('value', values[0]);\r\n },\r\n\r\n setValue: function(value, isDefault) {\r\n Array.prototype.slice.call(this.$node.querySelectorAll('input[type=radio]')).forEach(function(radio) {\r\n radio.checked = radio.value == value;\r\n if (isDefault) radio.defaultChecked = radio.checked;\r\n });\r\n }\r\n\r\n});\r\n","dmx.Component('checkbox', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n checked: false\r\n },\r\n\r\n tag: 'input',\r\n\r\n attributes: {\r\n checked: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n methods: {\r\n select: function(check) {\r\n this.select(check);\r\n }\r\n },\r\n\r\n render: function(node) {\r\n dmx.Component('form-element').prototype.render.call(this, node);\r\n this.$node.addEventListener('click', this.updateData.bind(this));\r\n this.$node.type = 'checkbox';\r\n this.$node.checked = this.props.checked;\r\n this.set('checked', this.props.checked);\r\n },\r\n\r\n update: function(props) {\r\n dmx.Component('form-element').prototype.update.call(this, props);\r\n\r\n if (props.checked !== this.props.checked) {\r\n this.$node.checked = this.props.checked;\r\n }\r\n\r\n this.updateData();\r\n },\r\n\r\n updateData: function(event) {\r\n dmx.Component('form-element').prototype.updateData.call(this, event);\r\n this.set('checked', this.$node.checked);\r\n },\r\n\r\n select: function(check) {\r\n this.$node.checked = (check !== false);\r\n }\r\n\r\n});\r\n","dmx.Component('checkbox-group', {\r\n\r\n initialData: {\r\n value: []\r\n },\r\n\r\n tag: 'div',\r\n\r\n attributes: {\r\n value: {\r\n type: Array,\r\n default: []\r\n }\r\n },\r\n\r\n methods: {\r\n setValue: function(value) {\r\n this.setValue(value);\r\n }\r\n },\r\n\r\n render: function(node) {\r\n dmx.BaseComponent.prototype.render.call(this, node);\r\n this.setValue(this.props.value);\r\n },\r\n\r\n update: function(props) {\r\n dmx.BaseComponent.prototype.update.call(this, props);\r\n\r\n if (JSON.stringify(props.value) != JSON.stringify(this.props.value)) {\r\n this.updateValue = true;\r\n }\r\n },\r\n\r\n updated: function() {\r\n if (this.updateValue) {\r\n this.updateValue = false;\r\n this.setValue(this.props.value);\r\n }\r\n\r\n var value = Array.prototype.slice.call(this.$node.querySelectorAll('input[type=checkbox]')).filter(function(checkbox) {\r\n return !checkbox.disabled && checkbox.checked;\r\n }).map(function(checkbox) {\r\n return checkbox.value || 1;\r\n });\r\n\r\n this.set('value', value);\r\n },\r\n\r\n setValue: function(value, isDefault) {\r\n if (!Array.isArray(value)) value = [value];\r\n Array.prototype.slice.call(this.$node.querySelectorAll('input[type=checkbox]')).forEach(function(checkbox) {\r\n checkbox.checked = value.indexOf(checkbox.value) > -1;\r\n if (isDefault) checkbox.defaultChecked = checkbox.checked;\r\n });\r\n }\r\n\r\n});\r\n","dmx.Component('select', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n selectedIndex: -1\r\n },\r\n\r\n tag: 'select',\r\n\r\n attributes: {\r\n options: {\r\n type: Array,\r\n default: []\r\n },\r\n optionText: {\r\n type: String,\r\n default: '$value'\r\n },\r\n optionValue: {\r\n type: String,\r\n default: '$value'\r\n }\r\n },\r\n\r\n methods: {\r\n setSelectedIndex: function(index) {\r\n this.$node.selectedIndex = index;\r\n this.updateData();\r\n }\r\n },\r\n\r\n render: function(node) {\r\n this.options = [];\r\n if (!this.props.value) {\r\n this.props.value = this.$node.value;\r\n } else {\r\n this.updateValue = true;\r\n }\r\n dmx.BaseComponent.prototype.render.call(this, node);\r\n this.$node.disabled = this.props.disabled;\r\n this.$node.addEventListener('change', this.updateData.bind(this));\r\n this.$node.addEventListener('invalid', this.updateData.bind(this));\r\n this.renderOptions();\r\n },\r\n\r\n update: function(props) {\r\n if (JSON.stringify(props.options) !== JSON.stringify(this.props.options)) {\r\n this.renderOptions();\r\n this.updateValue = true;\r\n }\r\n\r\n if (JSON.stringify(props.value) !== JSON.stringify(this.props.value)) {\r\n this.updateValue = true;\r\n }\r\n\r\n if (props.disabled != this.props.disabled) {\r\n this.$node.disabled = this.props.disabled;\r\n }\r\n\r\n this.updateData();\r\n },\r\n\r\n updated: function() {\r\n if (this.updateValue) {\r\n this.updateValue = false;\r\n this.setValue(this.props.value, true);\r\n this.updateData();\r\n }\r\n },\r\n\r\n updateData: function(event) {\r\n dmx.Component('form-element').prototype.updateData.call(this, event);\r\n this.set('selectedIndex', this.$node.selectedIndex);\r\n },\r\n\r\n setValue: function(value, isDefault) {\r\n dmx.array(this.$node.options).forEach(function(option) {\r\n option.selected = (option.value === value);\r\n if (isDefault) option.defaultSelected = option.selected;\r\n });\r\n },\r\n\r\n renderOptions: function() {\r\n this.options.splice(0).forEach(function(node) {\r\n dmx.dom.remove(node);\r\n });\r\n\r\n if (Array.isArray(this.props.options)) {\r\n this.props.options.forEach(function(option) {\r\n if (typeof option != 'object') option = { $value: option };\r\n var node = document.createElement('option');\r\n node.value = dmx.parse(this.props.optionValue, dmx.DataScope(option));\r\n node.innerText = dmx.parse(this.props.optionText, dmx.DataScope(option));\r\n this.options.push(this.$node.appendChild(node));\r\n }, this);\r\n }\r\n }\r\n\r\n});\r\n","dmx.Component('select-multiple', {\r\n\r\n extends: 'select',\r\n\r\n initialData: {\r\n value: []\r\n },\r\n\r\n methods: {\r\n setSelectedIndex: function(index) {\r\n this.$node.selectedIndex = index;\r\n this.updateData();\r\n }\r\n },\r\n\r\n update: function(props) {\r\n if (JSON.stringify(props.options) !== JSON.stringify(this.props.options)) {\r\n this.renderOptions();\r\n this.updateValue = true;\r\n }\r\n\r\n if (JSON.stringify(props.value) !== JSON.stringify(this.props.value)) {\r\n this.updateValue = true;\r\n }\r\n\r\n this.updateData();\r\n },\r\n\r\n updateData: function() {\r\n var value = Array.prototype.slice.call(this.$node.options).filter(function(option) {\r\n return option.selected;\r\n }).map(function(option) {\r\n return option.value;\r\n });\r\n\r\n if (JSON.stringify(value) !== JSON.stringify(this.data.value)) {\r\n dmx.nextTick(function() {\r\n this.dispatchEvent('updated');\r\n }, this);\r\n }\r\n\r\n this.set('value', value);\r\n this.set('disabled', this.$node.disabled);\r\n this.set('invalid', !this.$node.validity.valid);\r\n this.set('validationMessage', this.$node.validationMessage);\r\n this.set('selectedIndex', this.$node.selectedIndex);\r\n },\r\n\r\n setValue: function(value, isDefault) {\r\n if (!Array.isArray(value)) value = [value];\r\n dmx.array(this.$node.options).forEach(function(option) {\r\n option.selected = value.indexOf(option.value) > -1;\r\n if (isDefault) option.defaultSelected = option.selected;\r\n });\r\n }\r\n\r\n});\r\n","dmx.Component('value', {\r\n\r\n initialData: {\r\n value: null\r\n },\r\n\r\n attributes: {\r\n value: {\r\n default: null\r\n }\r\n },\r\n\r\n methods: {\r\n setValue: function(value) {\r\n this.set('value', value);\r\n }\r\n },\r\n\r\n render: function() {\r\n this.set('value', this.props.value);\r\n },\r\n\r\n update: function(props) {\r\n if (props.value !== this.props.value) {\r\n this.set('value', this.props.value);\r\n }\r\n }\r\n\r\n});\r\n","dmx.Component('repeat', {\r\n\r\n initialData: {\r\n items: []\r\n },\r\n\r\n attributes: {\r\n repeat: {\r\n type: [Array, Object, Number],\r\n default: []\r\n },\r\n\r\n key: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n\r\n events: {\r\n update: Event,\r\n updated: Event\r\n },\r\n\r\n render: function(node) {\r\n this.prevItems = [];\r\n this.childKeys = {};\r\n this.$template = document.createDocumentFragment();\r\n while (this.$node.hasChildNodes()) {\r\n this.$template.appendChild(this.$node.firstChild);\r\n }\r\n // call update for first inital data\r\n this.update({ repeat: [] });\r\n },\r\n\r\n update: function(props) {\r\n if (JSON.stringify(props.repeat) != JSON.stringify(this.props.repeat)) {\r\n this.dispatchEvent('update');\r\n\r\n if (props.key !== this.props.key) {\r\n this._clear();\r\n }\r\n\r\n var RepeatItem = dmx.Component('repeat-item');\r\n var repeat = this.props.repeat;\r\n var items = [];\r\n\r\n if (repeat) {\r\n if (Array.isArray(repeat)) {\r\n items = repeat.map(function(item) {\r\n return (typeof item == 'object') ? dmx.clone(item) : { $value: item };\r\n });\r\n } else {\r\n switch (typeof repeat) {\r\n case 'number':\r\n for (var n = 0; n < repeat; n++) {\r\n items.push({ $value: n + 1 });\r\n }\r\n break;\r\n\r\n case 'object':\r\n Object.keys(repeat).forEach(function(key) {\r\n items.push({ $key: key, $value: repeat[key] });\r\n });\r\n break;\r\n }\r\n }\r\n\r\n items = items.map(function(item, index) {\r\n item.$index = index;\r\n return item;\r\n });\r\n }\r\n\r\n if (items.length) {\r\n if (this.props.key && items[0].hasOwnProperty(this.props.key) && this.prevItems.length) {\r\n // keyed repeater (https://github.com/localvoid/kivi/blob/master/lib/vnode.ts#L1320-L1513)\r\n var key = this.props.key;\r\n var a = this.prevItems;\r\n var b = this._clone(items);\r\n var aStart = 0;\r\n var bStart = 0;\r\n var aEnd = a.length - 1;\r\n var bEnd = b.length - 1;\r\n var i, j, nextPos;\r\n\r\n outer: while (true) {\r\n // remove same keys from start\r\n while (a[aStart][key] === b[bStart][key]) {\r\n this.childKeys[b[bStart][key]].set(b[bStart]);\r\n aStart++;\r\n bStart++;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break outer;\r\n }\r\n }\r\n\r\n // remove same keys at end\r\n while (a[aEnd][key] === b[bEnd][key]) {\r\n this.childKeys[b[bEnd][key]].set(b[bEnd]);\r\n aEnd--;\r\n bEnd--;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break outer;\r\n }\r\n }\r\n\r\n // move from right to left\r\n if (a[aEnd][key] === b[bStart][key]) {\r\n this.childKeys[b[bStart][key]].set(b[bStart]);\r\n this._moveChild(b[bStart][key], a[aStart][key]);\r\n aEnd--;\r\n bStart++;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break;\r\n }\r\n continue;\r\n }\r\n\r\n // move from left to right\r\n if (a[aStart][key] === b[bEnd][key]) {\r\n nextPos = bEnd + 1;\r\n this.childKeys[b[bEnd][key]].set(b[bEnd]);\r\n this._moveChild(b[bEnd][key], b[nextPos] && b[nextPos][key]);\r\n aStart++;\r\n bEnd--;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break;\r\n }\r\n continue;\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (aStart > aEnd) {\r\n // insert rest from b\r\n nextPos = bEnd + 1;\r\n while (bStart <= bEnd) {\r\n this._insertChild(b[bStart++], b[nextPos] && b[nextPos][key]);\r\n }\r\n } else if (bStart > bEnd) {\r\n // remove rest from a\r\n while (aStart <= aEnd) {\r\n this._removeChild(a[aStart++][key]);\r\n }\r\n } else {\r\n var aLength = aEnd - aStart + 1;\r\n var bLength = bEnd - bStart + 1;\r\n var aNullable = a;\r\n var sources = new Array(bLength).fill(-1);\r\n\r\n var moved = false;\r\n var pos = 0;\r\n var synced = 0;\r\n\r\n if ((bLength <= 4) || ((aLength * bLength) <= 16)) {\r\n for (i = aStart; i <= aEnd; i++) {\r\n if (synced < bLength) {\r\n for (j = bStart; j <= bEnd; j++) {\r\n if (a[i][key] === b[j][key]) {\r\n sources[j - bStart] = i;\r\n\r\n if (pos > j) {\r\n moved = true;\r\n } else {\r\n pos = j;\r\n }\r\n\r\n this.childKeys[b[j][key]].set(b[j]);\r\n\r\n synced++;\r\n aNullable[i] = null;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n var keyIndex = {};\r\n\r\n for (i = bStart; i <= bEnd; i++) {\r\n keyIndex[b[i][key]] = i;\r\n }\r\n\r\n for (i = aStart; i <= aEnd; i++) {\r\n if (synced < bLength) {\r\n j = keyIndex[a[i][key]];\r\n\r\n if (j !== undefined) {\r\n sources[j - bStart] = i;\r\n\r\n if (pos > j) {\r\n moved = true;\r\n } else {\r\n pos = j;\r\n }\r\n\r\n this.childKeys[b[j][key]].set(b[j]);\r\n\r\n synced++;\r\n aNullable[i] = null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (aLength === a.length && synced === 0) {\r\n this._clear();\r\n while (bStart < bLength) {\r\n this._insertChild(b[bStart++], null);\r\n }\r\n } else {\r\n i = aLength - synced;\r\n while (i > 0) {\r\n if (aNullable[aStart] !== null) {\r\n this._removeChild(a[aStart][key]);\r\n i--;\r\n }\r\n aStart++;\r\n }\r\n\r\n if (moved) {\r\n var seq = this._lis(sources);\r\n j = seq.length - 1;\r\n for (i = bLength - 1; i >= 0; i--) {\r\n if (sources[i] === -1) {\r\n pos = i + bStart;\r\n nextPos = pos + 1;\r\n this._insertChild(b[pos], b[nextPos] && b[nextPos][key]);\r\n } else {\r\n if (j < 0 || i !== seq[j]) {\r\n pos = i + bStart;\r\n nextPos = pos + 1;\r\n this._moveChild(b[pos][key], b[nextPos] && b[nextPos][key]);\r\n } else {\r\n j--;\r\n }\r\n }\r\n }\r\n } else if (synced !== bLength) {\r\n for (i = bLength - 1; i >= 0; i--) {\r\n if (sources[i] === -1) {\r\n pos = i + bStart;\r\n nextPos = pos + 1;\r\n this._insertChild(b[pos], b[nextPos] && b[nextPos][key]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (this.children.length > items.length) {\r\n // remove some children\r\n this.children.splice(items.length).forEach(function(child) {\r\n child.$destroy();\r\n });\r\n }\r\n\r\n if (this.children.length) {\r\n // update existing children\r\n this.children.forEach(function(child, i) {\r\n child.set(items[i]);\r\n });\r\n }\r\n\r\n if (items.length > this.children.length) {\r\n // add new children\r\n var fragment = document.createDocumentFragment();\r\n\r\n for (var i = this.children.length; i < items.length; i++) {\r\n var child = new RepeatItem(this.$template.cloneNode(true), this, items[i]);\r\n child.$nodes.forEach(function(node) {\r\n fragment.appendChild(node);\r\n child.$parse(node);\r\n });\r\n this.children.push(child);\r\n }\r\n\r\n this.$node.appendChild(fragment);\r\n }\r\n }\r\n } else {\r\n this._clear();\r\n }\r\n\r\n if (this.props.key) {\r\n this.prevItems = this._clone(items);\r\n this.children.forEach(function(child) {\r\n this.childKeys[child.data[this.props.key]] = child;\r\n }, this);\r\n }\r\n\r\n this.set('items', items);\r\n\r\n dmx.nextTick(function() {\r\n this.dispatchEvent('updated');\r\n }, this);\r\n }\r\n },\r\n\r\n _lis: function(a) {\r\n var p = a.slice(0);\r\n var result = [];\r\n result.push(0);\r\n var u, v;\r\n\r\n for (var i = 0, il = a.length; i < il; i++) {\r\n if (a[i] === -1) {\r\n continue;\r\n }\r\n\r\n var j = result[result.length - 1];\r\n if (a[j] < a[i]) {\r\n p[i] = j;\r\n result.push(i);\r\n continue;\r\n }\r\n\r\n u = 0;\r\n v = result.length - 1;\r\n\r\n while (u < v) {\r\n var c = ((u + v) / 2) | 0;\r\n if (a[result[c]] < a[i]) {\r\n u = c + 1;\r\n } else {\r\n v = c;\r\n }\r\n }\r\n\r\n if (a[i] < a[result[u]]) {\r\n if (u > 0) {\r\n p[i] = result[u - 1];\r\n }\r\n result[u] = i;\r\n }\r\n }\r\n\r\n u = result.length;\r\n v = result[u - 1];\r\n\r\n while (u-- > 0) {\r\n result[u] = v;\r\n v = p[v];\r\n }\r\n\r\n return result;\r\n },\r\n\r\n _clear: function() {\r\n //this.$node.innerHTML = '';\r\n this.childKeys = {};\r\n this.children.splice(0).forEach(function(child) {\r\n child.$destroy();\r\n });\r\n },\r\n\r\n _insertChild: function(data, before) {\r\n var RepeatItem = dmx.Component('repeat-item');\r\n var child = new RepeatItem(this.$template.cloneNode(true), this, data);\r\n\r\n child.$nodes.forEach(function(node) {\r\n if (!before) {\r\n this.$node.appendChild(node);\r\n } else {\r\n if (this.childKeys[before]) {\r\n this.$node.insertBefore(node, this.childKeys[before].$nodes[0]);\r\n } else {\r\n console.warn('(insert) can not insert node before key ' + before + '!');\r\n }\r\n }\r\n\r\n child.$parse(node);\r\n }, this);\r\n\r\n this.childKeys[data[this.props.key]] = child;\r\n this.children.push(child);\r\n },\r\n\r\n _moveChild: function(key, before) {\r\n var child = this.childKeys[key];\r\n\r\n if (child) {\r\n if (this.childKeys[before]) {\r\n child.$nodes.forEach(function(node) {\r\n this.$node.insertBefore(node, this.childKeys[before].$nodes[0]);\r\n }, this);\r\n } else {\r\n child.$nodes.forEach(function(node) {\r\n this.$node.appendChild(node);\r\n }, this);\r\n }\r\n } else {\r\n console.warn('(move) child with key ' + key + ' not found!');\r\n }\r\n },\r\n\r\n _removeChild: function(key) {\r\n var child = this.childKeys[key];\r\n if (child) {\r\n child.$destroy();\r\n this.children.splice(this.children.indexOf(child), 1);\r\n delete this.childKeys[key];\r\n } else {\r\n console.warn('(remove) child with key ' + key + ' not found!');\r\n }\r\n },\r\n\r\n _clone: function(o) {\r\n return JSON.parse(JSON.stringify(o));\r\n }\r\n\r\n});\r\n","dmx.Component('repeat-item', {\r\n\r\n constructor: function(fragment, parent, data, name) {\r\n this.parent = parent;\r\n this.bindings = {};\r\n this.propBindings = {};\r\n this.children = [];\r\n this.listeners = [];\r\n this.props = {};\r\n this.data = data || {};\r\n this.seed = parent.seed;\r\n this.name = name || 'repeat';\r\n this.$nodes = [];\r\n for (var i = 0; i < fragment.childNodes.length; i++) {\r\n this.$nodes.push(fragment.childNodes[i]);\r\n }\r\n },\r\n\r\n $destroy: function() {\r\n this.dispatchEvent('destroy');\r\n for (var i = 0; i < this.$nodes.length; i++) {\r\n var event = document.createEvent('Event');\r\n event.initEvent('remove', false, true);\r\n if (this.$nodes[i].dispatchEvent(event)) {\r\n dmx.dom.remove(this.$nodes[i]);\r\n }\r\n }\r\n }\r\n\r\n});\r\n","dmx.Component('fetch', {\r\n\r\n constructor: function(node, parent) {\r\n this.fetch = dmx.debounce(this.fetch.bind(this));\r\n dmx.BaseComponent.call(this, node, parent);\r\n },\r\n\r\n initialData: {\r\n data: null,\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false\r\n },\r\n uploadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0\r\n },\r\n lastError: {\r\n status: 0,\r\n message: '',\r\n response: null\r\n }\r\n },\r\n\r\n attributes: {\r\n timeout: {\r\n type: Number,\r\n default: 0 // timeout in seconds\r\n },\r\n\r\n url: {\r\n type: String,\r\n default: ''\r\n },\r\n\r\n params: {\r\n type: Object,\r\n default: {}\r\n },\r\n\r\n noload: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n cache: {\r\n type: String,\r\n default: ''\r\n },\r\n\r\n ttl: {\r\n type: Number,\r\n default: 86400 // cache ttl in seconds (default 1 day)\r\n }\r\n },\r\n\r\n methods: {\r\n abort: function() {\r\n this.abort();\r\n },\r\n\r\n load: function(params, reload) {\r\n var options = {};\r\n if (params) options.params = params;\r\n if (reload) options.ttl = 0;\r\n this.fetch(options);\r\n }\r\n },\r\n\r\n events: {\r\n start: Event, // when starting an ajax call\r\n done: Event, // when ajax call completed (success and error)\r\n error: Event, // server error or javascript error (json parse or network transport) or timeout error\r\n unauthorized: Event, // 401 status from server\r\n forbidden: Event, // 403 status from server\r\n abort: Event, // ajax call was aborted\r\n success: Event, // successful ajax call,\r\n upload: ProgressEvent, // on upload progress\r\n download: ProgressEvent // on download progress\r\n },\r\n\r\n $parseAttributes: function(node) {\r\n dmx.BaseComponent.prototype.$parseAttributes.call(this, node);\r\n dmx.dom.getAttributes(node).forEach(function(attr) {\r\n if (attr.name == 'param' && attr.argument) {\r\n this.$addBinding(attr.value, function(value) {\r\n this.props.params[attr.argument] = value;\r\n });\r\n }\r\n }, this);\r\n },\r\n\r\n render: function(node) {\r\n this.xhr = new XMLHttpRequest();\r\n this.xhr.addEventListener('load', this.onload.bind(this));\r\n this.xhr.addEventListener('abort', this.onabort.bind(this));\r\n this.xhr.addEventListener('error', this.onerror.bind(this));\r\n this.xhr.addEventListener('timeout', this.ontimeout.bind(this));\r\n this.xhr.addEventListener('progress', this.onprogress('download').bind(this));\r\n if (this.xhr.upload) this.xhr.upload.addEventListener('progress', this.onprogress('upload').bind(this));\r\n\r\n dmx.BaseComponent.prototype.render.call(this, node);\r\n\r\n this.update({});\r\n },\r\n\r\n update: function(props) {\r\n // if auto load and url is set\r\n if (!this.props.noload && this.props.url) {\r\n // if url or params are changed\r\n if (props.url !== this.props.url || JSON.stringify(props.params) !== JSON.stringify(this.props.params)) {\r\n this.fetch();\r\n }\r\n }\r\n },\r\n\r\n abort: function() {\r\n this.xhr.abort();\r\n },\r\n\r\n fetch: function(options) {\r\n this.xhr.abort();\r\n\r\n options = dmx.extend(true, this.props, options || {});\r\n\r\n this._reset();\r\n this.dispatchEvent('start');\r\n\r\n var qs = (options.url.indexOf('?') > -1 ? '&' : '?') + Object.keys(options.params).filter(function(key) {\r\n return options.params[key] != null;\r\n }, this).map(function(key) {\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(options.params[key]);\r\n }, this).join('&');\r\n\r\n this._url = options.url + qs;\r\n\r\n if (this.props.cache) {\r\n var cache = dmx.parse(this.props.cache + '.data[\"' + this._url + '\"]', this);\r\n if (cache) {\r\n if (Date.now() - cache.created >= options.ttl * 1000) {\r\n dmx.parse(this.props.cache + '.remove(\"' + this._url + '\")', this);\r\n } else {\r\n this.set('data', cache.data);\r\n this.dispatchEvent('success');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n }\r\n }\r\n\r\n this.set('state', {\r\n executing: true,\r\n uploading: false,\r\n processing: false,\r\n downloading: false\r\n });\r\n\r\n this.xhr.open('GET', this._url);\r\n this.xhr.timeout = options.timeout * 1000;\r\n try { this.xhr.send(); }\r\n catch (err) { this._done(err); }\r\n },\r\n\r\n _reset: function() {\r\n this.set({\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false\r\n },\r\n uploadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0\r\n }\r\n });\r\n },\r\n\r\n _done: function(err) {\r\n this._reset();\r\n\r\n if (err) {\r\n this.set('lastError', {\r\n status: 0,\r\n message: err.message,\r\n response: null\r\n });\r\n\r\n this.dispatchEvent('error');\r\n } else {\r\n var response = this.xhr.responseText;\r\n\r\n try {\r\n response = JSON.parse(response);\r\n } catch(err) {\r\n this.set('lastError', {\r\n status: 0,\r\n message: 'Response was not valid JSON',\r\n response: response\r\n });\r\n\r\n this.dispatchEvent('error');\r\n return;\r\n }\r\n\r\n if (this.xhr.status < 400) {\r\n this.set('data', response);\r\n this.dispatchEvent('success');\r\n\r\n if (this.props.cache) {\r\n dmx.parse(this.props.cache + '.set(\"' + this._url + '\", { data: data, created: ' + Date.now() + ' })', this);\r\n }\r\n } else if (this.xhr.status == 400) {\r\n // validation error\r\n this.dispatchEvent('invalid');\r\n // TODO: do something with the response?\r\n } else if (this.xhr.status == 401) {\r\n // unauthorized\r\n this.dispatchEvent('unauthorized');\r\n } else if (this.xhr.status == 403) {\r\n // forbidden for current user\r\n this.dispatchEvent('forbidden');\r\n } else {\r\n // some other server error\r\n this.set('lastError', {\r\n status: this.xhr.status,\r\n message: this.xhr.statusText,\r\n response: response\r\n });\r\n\r\n this.dispatchEvent('error');\r\n }\r\n }\r\n\r\n this.dispatchEvent('done');\r\n },\r\n\r\n onload: function(event) {\r\n this._done();\r\n },\r\n\r\n onabort: function(event) {\r\n this._reset();\r\n this.dispatchEvent('abort');\r\n this.dispatchEvent('done');\r\n },\r\n\r\n onerror: function(event) {\r\n this._done({ message: 'Failed to execute' });\r\n },\r\n\r\n ontimeout: function(event) {\r\n this._done({ message: 'Execution timeout' });\r\n },\r\n\r\n onprogress: function(type) {\r\n return function(event) {\r\n event.loaded = event.loaded || event.position;\r\n\r\n var percent = event.lengthComputable ? Math.ceil(event.loaded / event.total * 100) : 0;\r\n\r\n this.set('state', {\r\n executing: true,\r\n uploading: type == 'upload' && percent < 100,\r\n processing: type == 'upload' && percent == 100,\r\n downloading: type == 'download'\r\n });\r\n\r\n this.set(type + 'Progress', {\r\n position: event.loaded,\r\n total: event.total,\r\n percent: percent\r\n });\r\n\r\n this.dispatchEvent(type, {\r\n lengthComputable: event.lengthComputable,\r\n loaded: event.loaded,\r\n total: event.total\r\n });\r\n };\r\n }\r\n\r\n});\r\n","dmx.Component('serverconnect', {\r\n extends: 'fetch'\r\n});\r\n","dmx.Component('serverconnect-form', {\r\n\r\n extends: 'form',\r\n\r\n initialData: {\r\n data: null,\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false\r\n },\r\n uploadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0\r\n },\r\n lastError: {\r\n status: 0,\r\n message: '',\r\n response: null\r\n }\r\n },\r\n\r\n attributes: {\r\n timeout: {\r\n type: Number,\r\n default: 0 // timeout in seconds\r\n },\r\n\r\n autosubmit: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n methods: {\r\n abort: function() {\r\n this.abort();\r\n }\r\n },\r\n\r\n events: {\r\n start: Event, // when starting an ajax call\r\n done: Event, // when ajax call completed (success and error)\r\n error: Event, // server error or javascript error (json parse or network transport) or timeout error\r\n unauthorized: Event, // 401 status from server\r\n forbidden: Event, // 403 status from server\r\n abort: Event, // ajax call was aborted\r\n success: Event, // successful ajax call,\r\n upload: ProgressEvent, // on upload progress\r\n download: ProgressEvent // on download progress\r\n },\r\n\r\n render: function(node) {\r\n this.xhr = new XMLHttpRequest();\r\n this.xhr.addEventListener('load', this.onload.bind(this));\r\n this.xhr.addEventListener('abort', this.onabort.bind(this));\r\n this.xhr.addEventListener('error', this.onerror.bind(this));\r\n this.xhr.addEventListener('timeout', this.ontimeout.bind(this));\r\n this.xhr.addEventListener('progress', this.onprogress('download').bind(this));\r\n if (this.xhr.upload) this.xhr.upload.addEventListener('progress', this.onprogress('upload').bind(this));\r\n\r\n node.dmxExtraData = {};\r\n\r\n dmx.Component('form').prototype.render.call(this, node);\r\n\r\n if (this.props.autosubmit) {\r\n dmx.nextTick(function() {\r\n this.submit();\r\n }, this);\r\n }\r\n },\r\n\r\n abort: function() {\r\n this.xhr.abort();\r\n },\r\n\r\n _submit: function(extra) {\r\n this.xhr.abort();\r\n\r\n var method = this.$node.method.toUpperCase();\r\n var action = this.$node.action;\r\n var data = null, qs = '';\r\n\r\n if (method == 'GET') {\r\n qs = (action.indexOf('?') > -1 ? '&' : '?');\r\n qs += dmx.array(this.$node.elements).filter(function(element) {\r\n return (!(extra && extra[element.name])) && !element.disabled && ((element.type !== 'RADIO' && element.type !== 'CHECKBOX') || element.checked);\r\n }).map(function(element) {\r\n return escape(element.name) + '=' + escape(element.value);\r\n }).join('&');\r\n if (extra) {\r\n Object.keys(extra).forEach(function(key) {\r\n if (Array.isArray(extra[key])) {\r\n extra[key].forEach(function(value) {\r\n qs += '&' + escape(key) + '=' + value;\r\n });\r\n } else {\r\n qs += '&' + escape(key) + '=' + extra[key];\r\n }\r\n });\r\n }\r\n } else {\r\n data = new FormData(this.$node);\r\n if (extra) {\r\n Object.keys(extra).forEach(function(key) {\r\n data.set(key, extra[key]);\r\n }, this);\r\n }\r\n if (this.$node.dmxExtraData) {\r\n Object.keys(this.$node.dmxExtraData).forEach(function(key) {\r\n var value = this.$node.dmxExtraData[key];\r\n\r\n if (Array.isArray(value)) {\r\n if (!/\\[\\]$/.test(key)) {\r\n key += '[]';\r\n }\r\n value.forEach(function(val) {\r\n data.append(key, val);\r\n }, this);\r\n } else {\r\n data.set(key, value);\r\n }\r\n }, this);\r\n }\r\n }\r\n\r\n this._reset();\r\n this.dispatchEvent('start');\r\n\r\n this.xhr.open(method, action + qs);\r\n this.xhr.timeout = this.props.timeout * 1000;\r\n try { this.xhr.send(data); }\r\n catch (err) { this._done(err); }\r\n },\r\n\r\n _reset: function() {\r\n this.set({\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false\r\n },\r\n uploadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0\r\n }\r\n });\r\n },\r\n\r\n _done: function(err) {\r\n this._reset();\r\n\r\n if (err) {\r\n this.set('lastError', {\r\n status: 0,\r\n message: err.message,\r\n response: null\r\n });\r\n\r\n this.dispatchEvent('error');\r\n } else {\r\n var response = this.xhr.responseText;\r\n\r\n try {\r\n response = JSON.parse(response);\r\n } catch(err) {\r\n this.set('lastError', {\r\n status: 0,\r\n message: 'Response was not valid JSON',\r\n response: response\r\n });\r\n\r\n this.dispatchEvent('error');\r\n return;\r\n }\r\n\r\n if (this.xhr.status < 400) {\r\n this.set('data', response);\r\n this.dispatchEvent('success');\r\n } else if (this.xhr.status == 400) {\r\n // validation error\r\n this.dispatchEvent('invalid');\r\n\r\n if (this.$node.action.indexOf('dmxConnect/') > -1 && response.form) {\r\n for (var name in response.form) {\r\n var element = document.querySelector('[name=\"' + name + '\"]');\r\n if (element) {\r\n element.setCustomValidity(response.form[name]);\r\n dmx.requestUpdate();\r\n if (dmx.bootstrap3forms) {\r\n dmx.validate.setBootstrapMessage(element, response.form[name]);\r\n } else {\r\n dmx.validate.setErrorMessage(element, response.form[name]);\r\n }\r\n }\r\n }\r\n } else {\r\n console.warn('400 error, no form errors in response.', response);\r\n }\r\n } else if (this.xhr.status == 401) {\r\n // unauthorized\r\n this.dispatchEvent('unauthorized');\r\n } else if (this.xhr.status == 403) {\r\n // forbidden for current user\r\n this.dispatchEvent('forbidden');\r\n } else {\r\n // some other server error\r\n this.set('lastError', {\r\n status: this.xhr.status,\r\n message: this.xhr.statusText,\r\n response: response\r\n });\r\n\r\n this.dispatchEvent('error');\r\n }\r\n }\r\n\r\n this.dispatchEvent('done');\r\n },\r\n\r\n onload: function(event) {\r\n this._done();\r\n },\r\n\r\n onabort: function(event) {\r\n this._reset();\r\n this.dispatchEvent('abort');\r\n this.dispatchEvent('done');\r\n },\r\n\r\n onerror: function(event) {\r\n this._done({ message: 'Failed to execute' });\r\n },\r\n\r\n ontimeout: function(event) {\r\n this._done({ message: 'Execution timeout' });\r\n },\r\n\r\n onprogress: function(type) {\r\n return function(event) {\r\n event.loaded = event.loaded || event.position;\r\n\r\n var percent = event.lengthComputable ? Math.ceil(event.loaded / event.total * 100) : 0;\r\n\r\n this.set('state', {\r\n executing: true,\r\n uploading: type == 'upload' && percent < 100,\r\n processing: type == 'upload' && percent == 100,\r\n downloading: type == 'download'\r\n });\r\n\r\n this.set(type + 'Progress', {\r\n position: event.loaded,\r\n total: event.total,\r\n percent: percent\r\n });\r\n\r\n this.dispatchEvent(type, {\r\n lengthComputable: event.lengthComputable,\r\n loaded: event.loaded,\r\n total: event.total\r\n });\r\n };\r\n }\r\n\r\n});\r\n","dmx.Component('if', {\r\n\r\n attributes: {\r\n condition: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n render: function(node) {\r\n this.nodes = [];\r\n this.template = document.createDocumentFragment();\r\n while (this.$node.firstChild) {\r\n this.template.appendChild(this.$node.firstChild);\r\n }\r\n this.update({});\r\n },\r\n\r\n update: function(props) {\r\n if (this.props.condition != props.condition) {\r\n if (this.props.condition) {\r\n this._render();\r\n } else {\r\n this._destroy();\r\n }\r\n }\r\n },\r\n\r\n _render: function() {\r\n var template = this.template.cloneNode(true);\r\n this.nodes = Array.prototype.slice.call(template.childNodes);\r\n this.$node.appendChild(template);\r\n this.$parse();\r\n },\r\n\r\n _destroy: function() {\r\n this.bindings = {};\r\n this.nodes.splice(0).forEach(function(node) {\r\n if (node.dispatchEvent(new Event('remove', { cancelable: true }))) {\r\n dmx.dom.remove(node);\r\n }\r\n });\r\n this.children.splice(0).forEach(function(child) {\r\n child.$destroy();\r\n });\r\n }\r\n\r\n});\r\n","dmx.Component('datetime', {\r\n\r\n initialData: function() {\r\n return {\r\n datetime: this.datetime()\r\n };\r\n },\r\n\r\n attributes: {\r\n interval: {\r\n type: String,\r\n default: 'seconds' // seconds, minutes, hours, days\r\n },\r\n\r\n utc: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n render: function() {\r\n this.timer();\r\n },\r\n\r\n timer: function() {\r\n this.set('datetime', this.datetime());\r\n requestAnimationFrame(this.timer.bind(this));\r\n },\r\n\r\n datetime: function() {\r\n var date = new Date(), year, month, day, hours, minutes, seconds;\r\n var pad = function(n, d) { return ('0000' + n).substr(-d); };\r\n\r\n if (this.props.utc) {\r\n year = date.getUTCFullYear();\r\n month = date.getUTCMonth() + 1;\r\n day = date.getUTCDate();\r\n hours = date.getUTCHours();\r\n minutes = date.getUTCMinutes();\r\n seconds = date.getUTCSeconds();\r\n } else {\r\n year = date.getFullYear();\r\n month = date.getMonth() + 1;\r\n day = date.getDate();\r\n hours = date.getHours();\r\n minutes = date.getMinutes();\r\n seconds = date.getSeconds();\r\n }\r\n\r\n var dateString = pad(year, 4) + '-' + pad(month, 2) + '-' + pad(day, 2);\r\n var tz = this.props.utc ? 'Z' : '';\r\n\r\n switch (this.props.interval) {\r\n case 'days': return dateString + 'T00:00:00' + tz;\r\n case 'hours': return dateString + 'T' + pad(hours, 2) + ':00:00' + tz;\r\n case 'minutes': return dateString + 'T' + pad(hours, 2) + ':' + pad(minutes, 2) + ':00' + tz;\r\n }\r\n\r\n return dateString + 'T' + pad(hours, 2) + ':' + pad(minutes, 2) + ':' + pad(seconds, 2) + tz;\r\n }\r\n\r\n});\r\n","dmx.Attribute('bind', 'mounted', function(node, attr) {\r\n var name = attr.argument;\r\n var toggle = dmx.reToggleAttribute.test(name);\r\n\r\n this.$addBinding(attr.value, function(value) {\r\n if (toggle) {\r\n node[name] = !!value;\r\n } else {\r\n if (name === 'style' && typeof value === 'object') {\r\n for (var prop in value) {\r\n node.style[prop] = value[prop];\r\n }\r\n return;\r\n }\r\n\r\n node.setAttribute(name, value);\r\n }\r\n });\r\n});\r\n","dmx.Attribute('on', 'mounted', function(node, attr) {\r\n var self = this;\r\n\r\n dmx.eventListener(node, attr.argument, function(event) {\r\n var returnValue = dmx.parse(attr.value, dmx.DataScope({\r\n $event: event\r\n }, self));\r\n\r\n if (typeof returnValue == 'string') {\r\n try {\r\n returnValue = (new Function('event', returnValue)).call(this, event);\r\n } catch(e) {\r\n console.warn('Error executing \"' + returnValue + '\"', e);\r\n }\r\n }\r\n\r\n return returnValue;\r\n }, attr.modifiers);\r\n});\r\n","dmx.Attribute('repeat', 'before', function(node, attr) {\r\n if (this.node != node) {\r\n var component = this;\r\n var prevCount = 0;\r\n var children = [];\r\n var template = document.createDocumentFragment();\r\n var placeholder = document.createComment('Repeat ' + attr.value);\r\n var RepeatItem = dmx.Component('repeat-item');\r\n\r\n node.parentNode.replaceChild(placeholder, node);\r\n node.removeAttribute('dmx-repeat');\r\n\r\n template.appendChild(node);\r\n\r\n this.add(attr.argument || 'repeat', []);\r\n\r\n this.$addBinding(attr.value, function(repeat) {\r\n var RepeatItem = dmx.Component('repeat-item');\r\n var items = [];\r\n\r\n if (repeat) {\r\n if (Array.isArray(repeat)) {\r\n items = repeat.map(function(item) {\r\n return (typeof item == 'object') ? dmx.clone(item) : { $value: item };\r\n });\r\n } else {\r\n switch (typeof repeat) {\r\n case 'number':\r\n for (var n = 0; n < repeat; n++) {\r\n items.push({ $value: n + 1 });\r\n }\r\n break;\r\n\r\n case 'object':\r\n Object.keys(repeat).forEach(function(key) {\r\n items.push({ $key: key, $value: repeat[key] });\r\n });\r\n break;\r\n }\r\n }\r\n\r\n items = items.map(function(item, index) {\r\n item.$index = index;\r\n return item;\r\n });\r\n }\r\n\r\n if (children.length > items.length) {\r\n // remove some children\r\n children.splice(items.length).forEach(function(child) {\r\n component.children.splice(component.children.indexOf(child), 1);\r\n child.$destroy();\r\n });\r\n }\r\n\r\n if (children.length) {\r\n // update existing children\r\n children.forEach(function(child, i) {\r\n child.set(items[i]);\r\n });\r\n }\r\n\r\n if (items.length > children.length) {\r\n // add new children\r\n var fragment = document.createDocumentFragment();\r\n\r\n for (var i = children.length; i < items.length; i++) {\r\n var child = new RepeatItem(template.cloneNode(true), component, items[i]);\r\n child.$nodes.forEach(function(node) {\r\n fragment.appendChild(node);\r\n child.$parse(node);\r\n });\r\n children.push(child);\r\n component.children.push(child);\r\n }\r\n\r\n placeholder.parentNode.insertBefore(fragment, placeholder);\r\n }\r\n });\r\n }\r\n});\r\n","dmx.Attribute('class', 'mounted', function(node, attr) {\r\n var className = attr.argument;\r\n\r\n this.$addBinding(attr.value, function(value, oldValue) {\r\n node.classList[value ? 'add' : 'remove'](className);\r\n });\r\n});\r\n","dmx.Attribute('hide', 'mounted', function(node, attr) {\r\n var orgDisplay = node.style.display;\r\n\r\n this.$addBinding(attr.value, function(value) {\r\n node.style.display = !value ? orgDisplay : 'none';\r\n })\r\n});\r\n","dmx.Attribute('show', 'mounted', function(node, attr) {\r\n var orgDisplay = node.style.display;\r\n\r\n this.$addBinding(attr.value, function(value) {\r\n node.style.display = value ? orgDisplay : 'none';\r\n })\r\n});\r\n","dmx.Attribute('html', 'mounted', function(node, attr) {\r\n this.$addBinding(attr.value, function(value) {\r\n if (value != null) {\r\n node.innerHTML = value;\r\n }\r\n });\r\n});\r\n","dmx.Attribute('text', 'mounted', function(node, attr) {\r\n this.$addBinding(attr.value, function(value) {\r\n if (value != null) {\r\n node.innerText = value;\r\n }\r\n });\r\n});\r\n","dmx.Attribute('style', 'mounted', function(node, attr) {\r\n var property = attr.argument;\r\n var important = attr.modifiers.important ? 'important' : '';\r\n\r\n this.$addBinding(attr.value, function(value) {\r\n if (value != null) {\r\n node.style.setProperty(property, value, important);\r\n }\r\n });\r\n});\r\n","dmx.Formatters('global', {\r\n\r\n // json(obj:Any):String\r\n json: function(obj) {\r\n return JSON.stringify(obj);\r\n },\r\n\r\n // log(obj:Any):Any\r\n log: function(obj) {\r\n console.log(obj);\r\n return obj;\r\n }\r\n\r\n});\r\n"]}