{"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","style","display","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","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","dmxDomId","$parseAttributes","$initialData","render","beforeMount","$mount","$customAttributes","dmxComponent","dmxRendered","dispatchEvent","Event","destroy","toUpperCase","$placeholder","createComment","$parse","__find","found","__replace","child","$destroy","$type","component","splice","__remove","beforeUpdate","update","updated","beforeDestroy","destroyed","removeEventListener","stack","ComponentEvent","err","createEvent","initEvent","bubbles","cancelable","defaultPrevented","$addChild","nodeValue","$addBinding","oldValue","map","hasAttribute","isComponent","$updateBindings","binding","callbacks","options","default","Boolean","Number","$propBinding","Function","returnValue","$event","method","$destroyChildren","del","ignoreParents","set","onload","ready","load","parseQuery","location","search","reduce","p","decodeURIComponent","novalidate","submit","reset","invalid","noValidate","onsubmit","_submit","elm","elements","validity","valid","focus","updateData","disabled","validationMessage","setValue","disable","defaultValue","dirty","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","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","nodeName","placeholder","orgDisplay","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.documentElement.style.display = 'none';\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 document.documentElement.style.display = '';\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') || peek('R_CURLY') || peek('COMMA') || peek('SEMI'))) {\r\n \t\t\t\ta.push(expression());\r\n \t\t\t}\r\n\r\n if (!(expect('COMMA') || expect('SEMI'))) {\r\n \t\t\t return (a.length == 1 ? a[0] : b)();\r\n }\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\r\n if (type == 'object' && typeof o['__' + token.value] == 'function') {\r\n return o['__' + token.value];\r\n }\r\n\r\n if (dmx.__formatters[type] && dmx.__formatters[type][token.value]) {\r\n return dmx.__formatters[type][token.value];\r\n }\r\n\r\n \t\t\t\treturn 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 this.dmxDomId = node.getAttribute('dmxDomId');\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 if (this.dmxDomId) {\r\n // Restore dmxDomId for Wappler\r\n this.$node.setAttribute('dmxDomId', this.dmxDomId);\r\n }\r\n this.$node.dmxComponent = this;\r\n this.$node.dmxRendered = true;\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.$parse();\r\n }\r\n },\r\n\r\n // internal method for Wappler\r\n __find: function(dmxDomId) {\r\n if (this.dmxDomId == dmxDomId) return this;\r\n\r\n for (var i = 0; i < this.children.length; i++) {\r\n var found = this.children[i].__find(dmxDomId);\r\n if (found) return found;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n // internal method for Wappler\r\n __replace: function(dmxDomId) {\r\n var child = this.__find(dmxDomId);\r\n\r\n if (child) {\r\n child.$destroy();\r\n\r\n var node = document.querySelector('[dmxDomId=\"' + dmxDomId + '\"]');\r\n if (node) {\r\n var index = child.parent.children.indexOf(child);\r\n var Component = dmx.__components[child.data.$type];\r\n\r\n if (index > -1 && Component) {\r\n var component = new Component(node, child.parent);\r\n child.parent.children.splice(index, 1, component);\r\n if (component.name) {\r\n child.parent.add(component.name, component.data);\r\n }\r\n }\r\n }\r\n\r\n dmx.requestUpdate();\r\n }\r\n },\r\n\r\n // internal method for Wappler\r\n __remove: function(dmxDomId) {\r\n var child = this.__find(dmxDomId);\r\n\r\n if (child) {\r\n child.$destroy();\r\n\r\n var index = child.parent.children.indexOf(this);\r\n if (index > -1) {\r\n child.parent.children.splice(index, 1);\r\n }\r\n\r\n dmx.requestUpdate();\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 if (!node.dmxRendered) {\r\n this.$addChild(tagName, node);\r\n }\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 (value != null) {\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\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 constructor: function(node, parent) {\r\n this.onload = this.onload.bind(this);\r\n dmx.BaseComponent.call(this, node, parent);\r\n },\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.removeEventListener('load', this.onload);\r\n window.addEventListener('load', this.onload);\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 var elm = dmx.array(this.$node.elements).find(function(elm) {\r\n if (!elm.validity.valid) return true;\r\n });\r\n if (elm) {\r\n elm.focus();\r\n }\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 if (this.data.checked != this.$node.checked) {\r\n dmx.nextTick(function() {\r\n this.dispatchEvent('updated');\r\n }, this);\r\n }\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 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.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 dmx.nextTick(function() {\r\n this.dispatchEvent('updated');\r\n }, this);\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 if (JSON.stringify(this.data.value) != JSON.stringify(values[0])) {\r\n this.set('value', values[0]);\r\n dmx.nextTick(function() {\r\n this.dispatchEvent('updated');\r\n }, this);\r\n }\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 if (this.data.checked != this.$node.checked) {\r\n dmx.nextTick(function() {\r\n this.dispatchEvent('updated');\r\n }, this);\r\n }\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 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.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 if (JSON.stringify(this.data.value) != JSON.stringify(value)) {\r\n this.set('value', value);\r\n dmx.nextTick(function() {\r\n this.dispatchEvent('updated');\r\n }, this);\r\n }\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 if (value != null) {\r\n node.setAttribute(name, value);\r\n } else {\r\n node.removeAttribute(name);\r\n }\r\n\r\n if (name === 'src') {\r\n if (node.nodeName === 'VIDEO' || node.nodeName === 'AUDIO') {\r\n node.load();\r\n } else if (node.nodeName === 'SOURCE' && node.parentNode) {\r\n node.parentNode.load();\r\n }\r\n }\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"]}