{"version":3,"sources":["core/polyfills.js","appConnect.js","core/dom.js","core/parser.js","core/dataScope.js","core/BaseComponent.js","core/pathToRegexp.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","components/apiAction.js","components/apiForm.js","components/array.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","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","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","visibility","addEventListener","appNode","querySelector","removeAttribute","console","warn","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","repeatItems","repeat","items","isArray","map","$value","n","push","keys","forEach","key","$key","$index","escapeRegExp","replace","validate","checkValidity","validateReset","setImmediate","nextTick","fn","context","bind","postMessage","queue","event","source","data","task","shift","setTimeout","updateRequested","debounce","delay","timeout","args","clearTimeout","apply","keyCodes","bs","tab","enter","esc","space","left","up","right","down","delete","backspace","pause","capslock","escape","pageup","pagedown","home","arrowleft","arrowup","arrowright","arrowdown","insert","numlock","scrolllock","semicolon","equal","comma","minus","period","slash","backquote","bracketleft","backslash","bracketright","quote","numpad0","numpad1","numpad2","numpad3","numpad4","numpad5","numpad6","numpad7","numpad8","numpad9","numpadmultiply","numpadadd","numpadsubstract","numpaddivide","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","digit0","digit1","digit2","digit3","digit4","digit5","digit6","digit7","digit8","digit9","keya","keyb","keyc","keyd","keye","keyf","keyg","keyh","keyi","keyj","keyk","keyl","keym","keyn","keyo","keyp","keyq","keyr","keyt","keyu","keyv","keyw","keyx","keyy","keyz","eventListener","eventType","handler","modifiers","listener","self","currentTarget","ctrl","ctrlKey","alt","altKey","shiftKey","meta","metaKey","originalEvent","KeyboardEvent","keyVal","parseInt","which","stop","stopPropagation","prevent","preventDefault","jQuery","capture","on","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","oldNode","newNode","replaceChild","cache","OPERATORS","{","}","(",")","[","]",".",",",";",":","?","+","-","*","/","%","===","!==","==","!=","<",">","<=",">=","in","&&","||","!","&","|","^","~","<<",">>",">>>","ESCAPE","f","r","t","'","\"","`","EXPRESSIONS","a","b","c","RESERVED","scope","null","true","false","ZERO","lexer","exp","token","start","ch","ch2","ch3","tokens","op","read","isDigid","is","peek","readNumber","isAlpha","readIdent","testRegexp","readRegexp","Error","readString","chars","isAlphaNum","isExpOperator","hex","match","String","fromCharCode","rep","exponent","next","ident","regexp","idx","ok","e","substring","expression","expect","doParse","err","error","consume","conditional","middle","logicalOr","logicalAnd","bitwiseXor","bitwiseOr","bitwiseAnd","equality","relational","addictive","bitwiseShift","multiplicative","unary","primary","objectMember","re","RegExp","functionCall","objectIndex","func","ctx","argsFn","indexFn","toLowerCase","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","createEvent","initEvent","bubbles","cancelable","defaultPrevented","$addChild","nodeValue","$addBinding","oldValue","hasAttribute","isComponent","$updateBindings","binding","callbacks","options","default","Boolean","Number","$propBinding","Function","returnValue","$event","method","$destroyChildren","del","ignoreParents","set","pathToRegexp","compile","tokensToFunction","tokensToRegExp","DEFAULT_DELIMITER","PATH_REGEXP","join","res","path","defaultDelimiter","delimiter","whitelist","pathEscaped","exec","m","escaped","offset","prev","group","modifier","optional","pattern","prefix","escapeGroup","escapeString","encode","encodeURIComponent","segment","flags","sensitive","strict","endsWith","concat","route","endToken","isEndDelimited","groups","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","onload","ready","load","parseQuery","querystring","location","search","reduce","p","decodeURIComponent","base","content","decodeURI","pathname","novalidate","submit","reset","invalid","noValidate","onsubmit","onreset","_submit","elm","elements","validity","valid","focus","HTMLFormElement","updateData","disabled","validationMessage","setValue","disable","changed","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","prevItems","childKeys","$template","createDocumentFragment","firstChild","_clear","RepeatItem","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","status","links","paging","headers","state","executing","uploading","processing","downloading","uploadProgress","position","total","percent","downloadProgress","lastError","message","response","url","params","data-type","noload","ttl","abort","reload","done","unauthorized","forbidden","success","upload","ProgressEvent","download","xhr","XMLHttpRequest","onabort","onerror","ontimeout","onprogress","_reset","qs","_url","now","created","FormData","open","header","setRequestHeader","send","_done","responseText","arrHeaders","getAllResponseHeaders","trim","line","linkHeader","link","linkUrl","qry","acc","x","info","rel","page","pages","has","first","last","countHeader","statusText","loaded","lengthComputable","ceil","autosubmit","post-data","dmxExtraData","extra","element","selectedOptions","multiple","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","count","newItem","addUniq","insertAfter","replaceAt","removeAt","reverse","sort","nodeName","placeholder","fast","orgDisplay","display","property","important","json","log"],"mappings":"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","file":"../dmxAppConnect.js","sourcesContent":["// Some polyfills for IE\r\n\r\nif (!Array.prototype.findIndex) {\r\n Object.defineProperty(Array.prototype, 'findIndex', {\r\n value: function(predicate) {\r\n // 1. Let O be ? ToObject(this value).\r\n if (this == null) {\r\n throw new TypeError('\"this\" is null or not defined');\r\n }\r\n\r\n var o = Object(this);\r\n\r\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\r\n var len = o.length >>> 0;\r\n\r\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\r\n if (typeof predicate !== 'function') {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n\r\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\r\n var thisArg = arguments[1];\r\n\r\n // 5. Let k be 0.\r\n var k = 0;\r\n\r\n // 6. Repeat, while k < len\r\n while (k < len) {\r\n // a. Let Pk be ! ToString(k).\r\n // b. Let kValue be ? Get(O, Pk).\r\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\r\n // d. If testResult is true, return k.\r\n var kValue = o[k];\r\n if (predicate.call(thisArg, kValue, k, o)) {\r\n return k;\r\n }\r\n // e. Increase k by 1.\r\n k++;\r\n }\r\n\r\n // 7. Return -1.\r\n return -1;\r\n }\r\n });\r\n}\r\n\r\nif (!Array.prototype.find) {\r\n Object.defineProperty(Array.prototype, 'find', {\r\n value: function(predicate) {\r\n // 1. Let O be ? ToObject(this value).\r\n if (this == null) {\r\n throw new TypeError('\"this\" is null or not defined');\r\n }\r\n\r\n var o = Object(this);\r\n\r\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\r\n var len = o.length >>> 0;\r\n\r\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\r\n if (typeof predicate !== 'function') {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n\r\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\r\n var thisArg = arguments[1];\r\n\r\n // 5. Let k be 0.\r\n var k = 0;\r\n\r\n // 6. Repeat, while k < len\r\n while (k < len) {\r\n // a. Let Pk be ! ToString(k).\r\n // b. Let kValue be ? Get(O, Pk).\r\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\r\n // d. If testResult is true, return kValue.\r\n var kValue = o[k];\r\n if (predicate.call(thisArg, kValue, k, o)) {\r\n return kValue;\r\n }\r\n // e. Increase k by 1.\r\n k++;\r\n }\r\n\r\n // 7. Return undefined.\r\n return undefined;\r\n }\r\n });\r\n}\r\n\r\nif (!Array.prototype.fill) {\r\n Object.defineProperty(Array.prototype, 'fill', {\r\n value: function(value) {\r\n\r\n // Steps 1-2.\r\n if (this == null) {\r\n throw new TypeError('this is null or not defined');\r\n }\r\n\r\n var O = Object(this);\r\n\r\n // Steps 3-5.\r\n var len = O.length >>> 0;\r\n\r\n // Steps 6-7.\r\n var start = arguments[1];\r\n var relativeStart = start >> 0;\r\n\r\n // Step 8.\r\n var k = relativeStart < 0 ?\r\n Math.max(len + relativeStart, 0) :\r\n Math.min(relativeStart, len);\r\n\r\n // Steps 9-10.\r\n var end = arguments[2];\r\n var relativeEnd = end === undefined ?\r\n len : end >> 0;\r\n\r\n // Step 11.\r\n var final = relativeEnd < 0 ?\r\n Math.max(len + relativeEnd, 0) :\r\n Math.min(relativeEnd, len);\r\n\r\n // Step 12.\r\n while (k < final) {\r\n O[k] = value;\r\n k++;\r\n }\r\n\r\n // Step 13.\r\n return O;\r\n }\r\n });\r\n}\r\n\r\nif (typeof Object.assign != 'function') {\r\n Object.assign = function(target, varArgs) { // .length of function is 2\r\n 'use strict';\r\n if (target == null) { // TypeError if undefined or null\r\n throw new TypeError('Cannot convert undefined or null to object');\r\n }\r\n\r\n var to = Object(target);\r\n\r\n for (var index = 1; index < arguments.length; index++) {\r\n var nextSource = arguments[index];\r\n\r\n if (nextSource != null) { // Skip over if undefined or null\r\n for (var nextKey in nextSource) {\r\n // Avoid bugs when hasOwnProperty is shadowed\r\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n }\r\n }\r\n }\r\n return to;\r\n };\r\n}\r\n\r\nif (window.Element && !Element.prototype.closest) {\r\n Element.prototype.closest =\r\n function(s) {\r\n var matches = (this.document || this.ownerDocument).querySelectorAll(s),\r\n i,\r\n el = this;\r\n do {\r\n i = matches.length;\r\n while (--i >= 0 && matches.item(i) !== el) {};\r\n } while ((i < 0) && (el = el.parentElement));\r\n return el;\r\n };\r\n}\r\n","window.dmx = window.dmx || {};\r\n\r\ndmx.__components = {};\r\ndmx.__attributes = {\r\n before: {},\r\n mount: {},\r\n mounted: {}\r\n};\r\ndmx.__formatters = {\r\n boolean: {},\r\n global: {},\r\n string: {},\r\n number: {},\r\n object: {},\r\n array: {}\r\n};\r\ndmx.__adapters = {};\r\ndmx.__actions = {};\r\n\r\n// default options\r\ndmx.config = {\r\n mapping: {\r\n 'form': 'form',\r\n 'button, input[type=button], input[type=submit], input[type=reset]': 'button',\r\n 'input[type=radio]': 'radio',\r\n 'input[type=checkbox]': 'checkbox',\r\n 'input[type=file][multiple]': 'input-file-multiple',\r\n 'input[type=file]': 'input-file',\r\n //'input[type=number]': 'input-number',\r\n 'input': 'input',\r\n 'textarea': 'textarea',\r\n 'select[multiple]': 'select-multiple',\r\n 'select': 'select',\r\n '.checkbox-group': 'checkbox-group',\r\n '.radio-group': 'radio-group'\r\n }\r\n};\r\n\r\ndmx.reIgnoreElement = /^(script|style)$/i;\r\ndmx.rePrefixed = /^dmx-/i;\r\ndmx.reExpression = /\\{\\{(.+?)\\}\\}/;\r\ndmx.reExpressionReplace = /\\{\\{(.+?)\\}\\}/g;\r\ndmx.reToggleAttribute = /^(checked|selected|disabled|required|hidden|async|autofocus|autoplay|default|defer|multiple|muted|novalidate|open|readonly|reversed|scoped)$/i;\r\ndmx.reDashAlpha = /-([a-z])/g;\r\ndmx.reUppercase = /[A-Z]/g;\r\n\r\ndmx.appConnect = function(node, cb) {\r\n if (dmx.app) {\r\n return alert('App already running!');\r\n }\r\n\r\n node = node || document.documentElement;\r\n\r\n window.onpopstate = function() {\r\n dmx.requestUpdate();\r\n };\r\n\r\n window.onhashchange = function() {\r\n dmx.requestUpdate();\r\n };\r\n\r\n var App = dmx.Component('app');\r\n\r\n dmx.app = new App(node); //BaseComponent(node);\r\n dmx.app.$update();\r\n if (cb) cb();\r\n};\r\n\r\ndocument.documentElement.style.visibility = 'hidden';\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.visibility = '';\r\n appNode.removeAttribute('dmx-app');\r\n });\r\n } else {\r\n document.documentElement.style.visibility = '';\r\n console.warn('No APP root found!');\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.repeatItems = function(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 if (typeof repeat == 'number') {\r\n for (var n = 0; n < repeat; n++) {\r\n items.push({ $value: n + 1 });\r\n }\r\n } else if (typeof repeat == 'object') {\r\n Object.keys(repeat).forEach(function(key) {\r\n var item = (typeof repeat[key] == 'object') ? dmx.clone(repeat[key]) : { $value: repeat[key] };\r\n item.$key = key;\r\n items.push(item);\r\n });\r\n }\r\n\r\n items = items.map(function(item, index) {\r\n if (!item.$key) item.$key = index;\r\n if (!item.$value) item.$value = dmx.clone(item);\r\n item.$index = index;\r\n return item;\r\n })\r\n }\r\n\r\n return items;\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\ndmx.validateReset = function(node) {\r\n // reset validation?\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 'backspace': 8,\r\n 'pause': 19,\r\n 'capslock': 20,\r\n 'escape': 27,\r\n 'pageup': 33,\r\n 'pagedown': 34,\r\n 'end': 35,\r\n 'home': 36,\r\n 'arrowleft': 37,\r\n 'arrowup': 38,\r\n 'arrowright': 39,\r\n 'arrowdown': 40,\r\n 'insert': 45,\r\n 'numlock': 144,\r\n 'scrolllock': 145,\r\n 'semicolon': 186,\r\n 'equal': 187,\r\n 'comma': 188,\r\n 'minus': 189,\r\n 'period': 190,\r\n 'slash': 191,\r\n 'backquote': 192,\r\n 'bracketleft': 219,\r\n 'backslash': 220,\r\n 'bracketright': 221,\r\n 'quote': 222,\r\n\r\n 'numpad0': 96,\r\n 'numpad1': 97,\r\n 'numpad2': 98,\r\n 'numpad3': 99,\r\n 'numpad4': 100,\r\n 'numpad5': 101,\r\n 'numpad6': 102,\r\n 'numpad7': 103,\r\n 'numpad8': 104,\r\n 'numpad9': 105,\r\n 'numpadmultiply': 106,\r\n 'numpadadd': 107,\r\n 'numpadsubstract': 109,\r\n 'numpaddivide': 111,\r\n\r\n 'f1': 112,\r\n 'f2': 113,\r\n 'f3': 114,\r\n 'f4': 115,\r\n 'f5': 116,\r\n 'f6': 117,\r\n 'f7': 118,\r\n 'f8': 119,\r\n 'f9': 120,\r\n 'f10': 121,\r\n 'f11': 122,\r\n 'f12': 123,\r\n\r\n 'digit0': 48,\r\n 'digit1': 49,\r\n 'digit2': 50,\r\n 'digit3': 51,\r\n 'digit4': 52,\r\n 'digit5': 53,\r\n 'digit6': 54,\r\n 'digit7': 55,\r\n 'digit8': 56,\r\n 'digit9': 57,\r\n\r\n 'keya': 65,\r\n 'keyb': 66,\r\n 'keyc': 67,\r\n 'keyd': 68,\r\n 'keye': 69,\r\n 'keyf': 70,\r\n 'keyg': 71,\r\n 'keyh': 72,\r\n 'keyi': 73,\r\n 'keyj': 74,\r\n 'keyk': 75,\r\n 'keyl': 76,\r\n 'keym': 77,\r\n 'keyn': 78,\r\n 'keyo': 79,\r\n 'keyp': 80,\r\n 'keyq': 81,\r\n 'keyr': 82,\r\n 'keys': 83,\r\n 'keyt': 84,\r\n 'keyu': 85,\r\n 'keyv': 86,\r\n 'keyw': 87,\r\n 'keyx': 88,\r\n 'keyy': 89,\r\n 'keyz': 90\r\n};\r\n\r\ndmx.eventListener = function(target, eventType, handler, modifiers) {\r\n var timeout, listener = 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 ((event.originalEvent || 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.stop) event.stopPropagation();\r\n if (modifiers.prevent) event.preventDefault();\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 };\r\n\r\n modifiers = modifiers || {};\r\n\r\n if (window.jQuery && !modifiers.capture) {\r\n jQuery(target).on(eventType.replace(/-/g, '.'), listener);\r\n } else {\r\n target.addEventListener(eventType, listener, !!modifiers.capture);\r\n }\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 value;\r\n\r\n try {\r\n var tokens = dmx.lexer(exp).slice(0), context;\r\n value = doParse();\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n\r\n return value;\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]/g, '');\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, data) {\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('CustomEvent');\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 var preventDefault = event.preventDefault;\r\n event.preventDefault = function() {\r\n preventDefault.call(this);\r\n try {\r\n Object.defineProperty(this, 'defaultPrevented', {\r\n get: function () {\r\n return true;\r\n }\r\n });\r\n } catch(e) {\r\n this.defaultPrevented = true;\r\n }\r\n return event;\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 event.data = data;\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 dmx.eventListener(self, 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","(function() {\r\n\r\n/**\r\n * Expose `pathToRegexp`.\r\n */\r\ndmx.pathToRegexp = pathToRegexp\r\ndmx.pathToRegexp.parse = parse\r\ndmx.pathToRegexp.compile = compile\r\ndmx.pathToRegexp.tokensToFunction = tokensToFunction\r\ndmx.pathToRegexp.tokensToRegExp = tokensToRegExp\r\n\r\n/**\r\n * Default configs.\r\n */\r\nvar DEFAULT_DELIMITER = '/'\r\n\r\n/**\r\n * The main path matching regexp utility.\r\n *\r\n * @type {RegExp}\r\n */\r\nvar PATH_REGEXP = new RegExp([\r\n // Match escaped characters that would otherwise appear in future matches.\r\n // This allows the user to escape special characters that won't transform.\r\n '(\\\\\\\\.)',\r\n // Match Express-style parameters and un-named parameters with a prefix\r\n // and optional suffixes. Matches appear as:\r\n //\r\n // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\r\n // \"(\\\\d+)\" => [undefined, undefined, \"\\d+\", undefined]\r\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\r\n].join('|'), 'g')\r\n\r\n/**\r\n * Parse a string for the raw tokens.\r\n *\r\n * @param {string} str\r\n * @param {Object=} options\r\n * @return {!Array}\r\n */\r\nfunction parse (str, options) {\r\n var tokens = []\r\n var key = 0\r\n var index = 0\r\n var path = ''\r\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\r\n var whitelist = (options && options.whitelist) || undefined\r\n var pathEscaped = false\r\n var res\r\n\r\n while ((res = PATH_REGEXP.exec(str)) !== null) {\r\n var m = res[0]\r\n var escaped = res[1]\r\n var offset = res.index\r\n path += str.slice(index, offset)\r\n index = offset + m.length\r\n\r\n // Ignore already escaped sequences.\r\n if (escaped) {\r\n path += escaped[1]\r\n pathEscaped = true\r\n continue\r\n }\r\n\r\n var prev = ''\r\n var name = res[2]\r\n var capture = res[3]\r\n var group = res[4]\r\n var modifier = res[5]\r\n\r\n if (!pathEscaped && path.length) {\r\n var k = path.length - 1\r\n var c = path[k]\r\n var matches = whitelist ? whitelist.indexOf(c) > -1 : true\r\n\r\n if (matches) {\r\n prev = c\r\n path = path.slice(0, k)\r\n }\r\n }\r\n\r\n // Push the current path onto the tokens.\r\n if (path) {\r\n tokens.push(path)\r\n path = ''\r\n pathEscaped = false\r\n }\r\n\r\n var repeat = modifier === '+' || modifier === '*'\r\n var optional = modifier === '?' || modifier === '*'\r\n var pattern = capture || group\r\n var delimiter = prev || defaultDelimiter\r\n\r\n tokens.push({\r\n name: name || key++,\r\n prefix: prev,\r\n delimiter: delimiter,\r\n optional: optional,\r\n repeat: repeat,\r\n pattern: pattern\r\n ? escapeGroup(pattern)\r\n : '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']+?'\r\n })\r\n }\r\n\r\n // Push any remaining characters.\r\n if (path || index < str.length) {\r\n tokens.push(path + str.substr(index))\r\n }\r\n\r\n return tokens\r\n}\r\n\r\n/**\r\n * Compile a string to a template function for the path.\r\n *\r\n * @param {string} str\r\n * @param {Object=} options\r\n * @return {!function(Object=, Object=)}\r\n */\r\nfunction compile (str, options) {\r\n return tokensToFunction(parse(str, options))\r\n}\r\n\r\n/**\r\n * Expose a method for transforming tokens into the path function.\r\n */\r\nfunction tokensToFunction (tokens) {\r\n // Compile all the tokens into regexps.\r\n var matches = new Array(tokens.length)\r\n\r\n // Compile all the patterns before compilation.\r\n for (var i = 0; i < tokens.length; i++) {\r\n if (typeof tokens[i] === 'object') {\r\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\r\n }\r\n }\r\n\r\n return function (data, options) {\r\n var path = ''\r\n var encode = (options && options.encode) || encodeURIComponent\r\n\r\n for (var i = 0; i < tokens.length; i++) {\r\n var token = tokens[i]\r\n\r\n if (typeof token === 'string') {\r\n path += token\r\n continue\r\n }\r\n\r\n var value = data ? data[token.name] : undefined\r\n var segment\r\n\r\n if (Array.isArray(value)) {\r\n if (!token.repeat) {\r\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\r\n }\r\n\r\n if (value.length === 0) {\r\n if (token.optional) continue\r\n\r\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\r\n }\r\n\r\n for (var j = 0; j < value.length; j++) {\r\n segment = encode(value[j], token)\r\n\r\n if (!matches[i].test(segment)) {\r\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\r\n }\r\n\r\n path += (j === 0 ? token.prefix : token.delimiter) + segment\r\n }\r\n\r\n continue\r\n }\r\n\r\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\r\n segment = encode(String(value), token)\r\n\r\n if (!matches[i].test(segment)) {\r\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\r\n }\r\n\r\n path += token.prefix + segment\r\n continue\r\n }\r\n\r\n if (token.optional) continue\r\n\r\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\r\n }\r\n\r\n return path\r\n }\r\n}\r\n\r\n/**\r\n * Escape a regular expression string.\r\n *\r\n * @param {string} str\r\n * @return {string}\r\n */\r\nfunction escapeString (str) {\r\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\r\n}\r\n\r\n/**\r\n * Escape the capturing group by escaping special characters and meaning.\r\n *\r\n * @param {string} group\r\n * @return {string}\r\n */\r\nfunction escapeGroup (group) {\r\n return group.replace(/([=!:$/()])/g, '\\\\$1')\r\n}\r\n\r\n/**\r\n * Get the flags for a regexp from the options.\r\n *\r\n * @param {Object} options\r\n * @return {string}\r\n */\r\nfunction flags (options) {\r\n return options && options.sensitive ? '' : 'i'\r\n}\r\n\r\n/**\r\n * Pull out keys from a regexp.\r\n *\r\n * @param {!RegExp} path\r\n * @param {Array=} keys\r\n * @return {!RegExp}\r\n */\r\nfunction regexpToRegexp (path, keys) {\r\n if (!keys) return path\r\n\r\n // Use a negative lookahead to match only capturing groups.\r\n var groups = path.source.match(/\\((?!\\?)/g)\r\n\r\n if (groups) {\r\n for (var i = 0; i < groups.length; i++) {\r\n keys.push({\r\n name: i,\r\n prefix: null,\r\n delimiter: null,\r\n optional: false,\r\n repeat: false,\r\n pattern: null\r\n })\r\n }\r\n }\r\n\r\n return path\r\n}\r\n\r\n/**\r\n * Transform an array into a regexp.\r\n *\r\n * @param {!Array} path\r\n * @param {Array=} keys\r\n * @param {Object=} options\r\n * @return {!RegExp}\r\n */\r\nfunction arrayToRegexp (path, keys, options) {\r\n var parts = []\r\n\r\n for (var i = 0; i < path.length; i++) {\r\n parts.push(pathToRegexp(path[i], keys, options).source)\r\n }\r\n\r\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\r\n}\r\n\r\n/**\r\n * Create a path regexp from string input.\r\n *\r\n * @param {string} path\r\n * @param {Array=} keys\r\n * @param {Object=} options\r\n * @return {!RegExp}\r\n */\r\nfunction stringToRegexp (path, keys, options) {\r\n return tokensToRegExp(parse(path, options), keys, options)\r\n}\r\n\r\n/**\r\n * Expose a function for taking tokens and returning a RegExp.\r\n *\r\n * @param {!Array} tokens\r\n * @param {Array=} keys\r\n * @param {Object=} options\r\n * @return {!RegExp}\r\n */\r\nfunction tokensToRegExp (tokens, keys, options) {\r\n options = options || {}\r\n\r\n var strict = options.strict\r\n var start = options.start !== false\r\n var end = options.end !== false\r\n var delimiter = options.delimiter || DEFAULT_DELIMITER\r\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\r\n var route = start ? '^' : ''\r\n\r\n // Iterate over the tokens and create our regexp string.\r\n for (var i = 0; i < tokens.length; i++) {\r\n var token = tokens[i]\r\n\r\n if (typeof token === 'string') {\r\n route += escapeString(token)\r\n } else {\r\n var capture = token.repeat\r\n ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\r\n : token.pattern\r\n\r\n if (keys) keys.push(token)\r\n\r\n if (token.optional) {\r\n if (!token.prefix) {\r\n route += '(' + capture + ')?'\r\n } else {\r\n route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\r\n }\r\n } else {\r\n route += escapeString(token.prefix) + '(' + capture + ')'\r\n }\r\n }\r\n }\r\n\r\n if (end) {\r\n if (!strict) route += '(?:' + escapeString(delimiter) + ')?'\r\n\r\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')'\r\n } else {\r\n var endToken = tokens[tokens.length - 1]\r\n var isEndDelimited = typeof endToken === 'string'\r\n ? endToken[endToken.length - 1] === delimiter\r\n : endToken === undefined\r\n\r\n if (!strict) route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'\r\n if (!isEndDelimited) route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'\r\n }\r\n\r\n return new RegExp(route, flags(options))\r\n}\r\n\r\n/**\r\n * Normalize the given path string, returning a regular expression.\r\n *\r\n * An empty array can be passed in for the keys, which will hold the\r\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\r\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\r\n *\r\n * @param {(string|RegExp|Array)} path\r\n * @param {Array=} keys\r\n * @param {Object=} options\r\n * @return {!RegExp}\r\n */\r\nfunction pathToRegexp (path, keys, options) {\r\n if (path instanceof RegExp) {\r\n return regexpToRegexp(path, keys)\r\n }\r\n\r\n if (Array.isArray(path)) {\r\n return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\r\n }\r\n\r\n return stringToRegexp(/** @type {string} */ (path), keys, options)\r\n}\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 events: {\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 querystring = '';\r\n\r\n if (window.location.search) {\r\n querystring = window.location.search.substr(1);\r\n } else if (window.location.hash.indexOf('?')) {\r\n querystring = window.location.hash.substr(window.location.hash.indexOf('?') + 1);\r\n if (querystring.indexOf('#') > 0) {\r\n querystring = querystring.substr(0, querystring.indexOf('#'));\r\n }\r\n }\r\n\r\n var query = querystring.split('&').reduce(function(query, part) {\r\n var p = part.replace(/\\+/g, ' ').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 var base = document.querySelector('meta[name=\"ac:base\"]');\r\n var route = document.querySelector('meta[name=\"ac:route\"]');\r\n if (route && route.content) {\r\n var keys = [];\r\n var path = route.content;\r\n\r\n if (base && base.content) {\r\n path = base.content.replace(/\\/$/, '') + path;\r\n }\r\n\r\n var re = dmx.pathToRegexp(path, keys);\r\n var match = re.exec(decodeURI(window.location.pathname));\r\n\r\n if (match) {\r\n keys.forEach(function(key, index) {\r\n query[key.name] = match[index + 1];\r\n });\r\n }\r\n }\r\n\r\n this.set('query', query);\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', this.onreset.bind(this));\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 HTMLFormElement.prototype.submit.call(this.$node);\r\n },\r\n\r\n reset: function() {\r\n //this.$node.reset();\r\n HTMLFormElement.prototype.reset.call(this.$node);\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 onreset: function(event) {\r\n dmx.validateReset(this.$node);\r\n dmx.requestUpdate();\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 changed: 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 if (event) this.dispatchEvent('changed');\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 if (event) this.dispatchEvent('changed');\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 attributes: {\r\n value: {\r\n type: Array,\r\n default: []\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 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(event) {\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 if (event) this.dispatchEvent('changed');\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 value = value.map(function(v) { return v.toString(); });\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 if (this.data.value !== 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\r\n events: {\r\n updated: Event\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 dmx.nextTick(function() {\r\n this.dispatchEvent('updated');\r\n }, this);\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 = dmx.repeatItems(repeat);\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 status: 0,\r\n data: null,\r\n links: {},\r\n paging: {},\r\n headers: {},\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 method: {\r\n type: String,\r\n default: 'GET' // HTTP request method to use, such as \"GET\", \"POST\", \"PUT\", \"DELETE\"\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 headers: {\r\n type: Object,\r\n default: {}\r\n },\r\n\r\n data: {\r\n type: Object,\r\n default: {}\r\n },\r\n\r\n 'data-type': {\r\n type: String,\r\n default: 'auto' // auto, json, text\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 invalid: Event, // 400 status from server\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 if (attr.name == 'header' && attr.argument) {\r\n this.$addBinding(attr.value, function(value) {\r\n this.props.headers[attr.argument] = value;\r\n });\r\n }\r\n if (attr.name == 'data' && attr.argument) {\r\n this.$addBinding(attr.value, function(value) {\r\n this.props.data[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 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('headers', cache.headers || {});\r\n this.set('paging', cache.paging || {});\r\n this.set('links', cache.links || {});\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 var data = null;\r\n\r\n if (this.props.method.toUpperCase() != 'GET') {\r\n if (this.props['data-type'] == 'text') {\r\n if (!options.headers['Content-Type']) {\r\n options.headers['Content-Type'] = 'application/text';\r\n }\r\n data = this.props.data.toString();\r\n } else if (this.props['data-type'] == 'json') {\r\n if (!options.headers['Content-Type']) {\r\n options.headers['Content-Type'] = 'application/json';\r\n }\r\n data = JSON.stringify(this.props.data);\r\n } else {\r\n if (this.props.method.toUpperCase() == 'POST') {\r\n data = new FormData();\r\n\r\n Object.keys(this.props.data).forEach(function(key) {\r\n var value = this.props.data[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 } else {\r\n if (!options.headers['Content-Type']) {\r\n options.headers['Content-Type'] = 'application/text';\r\n }\r\n data = this.props.data.toString();\r\n }\r\n }\r\n }\r\n\r\n this.xhr.open(this.props.method.toUpperCase(), this._url);\r\n this.xhr.timeout = options.timeout * 1000;\r\n Object.keys(options.headers).forEach(function(header) {\r\n this.xhr.setRequestHeader(header, options.headers[header]);\r\n }, this);\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 status: 0,\r\n links: {},\r\n headers: {},\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\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 if (this.xhr.status < 400) {\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\r\n try {\r\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders#Example\r\n var strHeaders = this.xhr.getAllResponseHeaders();\r\n var arrHeaders = strHeaders.trim().split(/[\\r\\n]+/);\r\n\r\n this.set('headers', arrHeaders.reduce(function(headers, line) {\r\n var parts = line.split(': ');\r\n var header = parts.shift();\r\n var value = parts.join(': ');\r\n\r\n headers[header] = value;\r\n\r\n return headers;\r\n }, {}));\r\n } catch(err) {\r\n console.warn('Error parsing response headers', err);\r\n }\r\n\r\n try {\r\n //var linkHeader = this.xhr.getResponseHeader('Link');\r\n var linkHeader = Object.keys(this.data.headers).find(function(header) {\r\n return header.toLowerCase() == 'link';\r\n });\r\n\r\n if (linkHeader) {\r\n this.set('links', this.data.headers[linkHeader].split(/,\\s*]*)>(.*)/);\r\n var linkUrl = m[1];\r\n var parts = m[2].split(';');\r\n var query = linkUrl.substr(linkUrl.indexOf('?') + 1);\r\n if (query.indexOf('#') > 0) query = query.substr(0, query.indexOf('#'));\r\n var qry = query.split('&').reduce(function(acc, x) {\r\n var p = x.split('=');\r\n\r\n if (p[0]) {\r\n acc[decodeURIComponent(p[0])] = decodeURIComponent(p[1] || '');\r\n }\r\n\r\n return acc;\r\n }, {});\r\n\r\n parts.shift();\r\n\r\n var info = parts.reduce(function(acc, p) {\r\n var m = p.match(/\\s*(.+)\\s*=\\s*\"?([^\"]+)\"?/);\r\n if (m) acc[m[1]] = m[2];\r\n return acc;\r\n }, {});\r\n\r\n info = Object.assign({}, qry, info);\r\n info.url = linkUrl;\r\n\r\n return info;\r\n } catch (err) {\r\n console.warn('Error parsing link header part', err);\r\n return null;\r\n }\r\n }).filter(function(x) {\r\n return x && x.rel;\r\n }).reduce(function(acc, x) {\r\n x.rel.split(/\\s+/).forEach(function(rel) {\r\n acc[rel] = Object.assign(x, { rel: rel });\r\n });\r\n\r\n return acc;\r\n }, {}));\r\n }\r\n } catch (err) {\r\n console.warn('Error parsing link header', err);\r\n }\r\n\r\n try {\r\n var paging = {\r\n page: 1,\r\n pages: 1,\r\n items: 0,\r\n has: {\r\n first: false,\r\n prev: false,\r\n next: false,\r\n last: false\r\n }\r\n };\r\n\r\n if (this.data.links.prev || this.data.links.next) {\r\n if (this.data.links.last && this.data.links.last.page) {\r\n paging.pages = +this.data.links.last.page;\r\n } else if (this.data.links.prev && this.data.prev.page) {\r\n paging.pages = +this.data.links.prev.page + 1;\r\n }\r\n\r\n var countHeader = Object.keys(this.data.headers).find(function(header) {\r\n header = header.toLowerCase();\r\n return header == 'x-total' || header == 'x-count' || header == 'x-total-count';\r\n });\r\n\r\n if (countHeader) {\r\n paging.items = +this.data.headers[countHeader];\r\n }\r\n\r\n if (this.data.links.prev && this.data.links.prev.page) {\r\n paging.page = +this.data.links.prev.page + 1;\r\n } else if (this.data.links.next && this.data.links.next.page) {\r\n paging.page = +this.data.links.next.page - 1;\r\n }\r\n\r\n paging.has = {\r\n first: !!this.data.links.first,\r\n prev: !!this.data.links.prev,\r\n next: !!this.data.links.next,\r\n last: !!this.data.links.last\r\n }\r\n }\r\n\r\n this.set('paging', paging);\r\n } catch (err) {\r\n console.warn('Error parsing paging', err);\r\n }\r\n\r\n this.set('status', this.xhr.status);\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 + '\", { headers: headers, paging: paging, links: links, data: data, created: ' + Date.now() + ' })', this);\r\n }\r\n } else {\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 if (this.xhr.status == 400) {\r\n this.dispatchEvent('invalid');\r\n } else if (this.xhr.status == 401) {\r\n this.dispatchEvent('unauthorized');\r\n } else if (this.xhr.status == 403) {\r\n this.dispatchEvent('forbidden');\r\n } else {\r\n this.dispatchEvent('error');\r\n }\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 status: 0,\r\n data: null,\r\n headers: {},\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 params: {\r\n type: Object,\r\n default: {}\r\n },\r\n\r\n headers: {\r\n type: Object,\r\n default: {}\r\n },\r\n\r\n 'post-data': { // only for method post, not for get\r\n type: String,\r\n default: 'form' // form, json (default uses form data)\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 $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 if (attr.name == 'header' && attr.argument) {\r\n this.$addBinding(attr.value, function(value) {\r\n this.props.headers[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 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;\r\n\r\n var qs = Object.keys(this.props.params).filter(function(key) {\r\n return this.props.params[key] != null;\r\n }, this).map(function(key) {\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(this.props.params[key]);\r\n }, this).join('&');\r\n\r\n if (method == 'GET') {\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 encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value);\r\n }).join('&');\r\n\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 += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(value);\r\n });\r\n } else {\r\n qs += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(extra[key]);\r\n }\r\n });\r\n }\r\n } else {\r\n if (this.props['post-data'] == 'json') {\r\n data = {};\r\n\r\n dmx.array(this.$node.elements).forEach(function(element) {\r\n if (element.name && !element.disabled) {\r\n if (element.type.toLowerCase == 'radio') {\r\n var checked = document.querySelector('input[name=\"' + element.name + '\"]:checked');\r\n\r\n if (checked) {\r\n data[element.name] = checked.value;\r\n }\r\n } else if (element.type == 'checkbox') {\r\n var group = document.querySelectorAll('input[name=\"' + element.name + '\"]');\r\n\r\n if (group.length) {\r\n if (group.length == 1) {\r\n data[element.name] = group[0].checked;\r\n } else {\r\n data[element.name] = dmx.array(group).filter(function(checkbox) {\r\n return checkbox.checked;\r\n }).map(function(checkbox) {\r\n return checkbox.value;\r\n });\r\n }\r\n }\r\n } else if (element.type == 'select-multiple') {\r\n data[element.name] = dmx.array(element.selectedOptions).map(function(option) {\r\n return option.value;\r\n });\r\n } else if (element.type == 'file') {\r\n if (element.files.length) {\r\n if (element.multiple) {\r\n data[element.name] = element.files.map(function(file) {\r\n return file.name;\r\n });\r\n } else {\r\n data[element.name] = element.files[0].name;\r\n }\r\n }\r\n } else {\r\n data[element.name] = element.value;\r\n }\r\n }\r\n });\r\n\r\n if (extra) {\r\n Object.assign(data, extra);\r\n }\r\n\r\n if (this.$node.dmxExtraData) {\r\n Object.assign(data, this.$node.dmxExtraData);\r\n }\r\n\r\n this.props.headers['Content-Type'] = 'application/json';\r\n data = JSON.stringify(data);\r\n } else {\r\n data = new FormData(this.$node);\r\n\r\n if (extra) {\r\n Object.keys(extra).forEach(function(key) {\r\n if (Array.isArray(extra[key])) {\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, extra[key]);\r\n }\r\n }, this);\r\n }\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\r\n this._reset();\r\n this.dispatchEvent('start');\r\n\r\n this.xhr.open(method, action + (qs ? (action.indexOf('?') > -1 ? '&' : '?') + qs : ''));\r\n this.xhr.timeout = this.props.timeout * 1000;\r\n Object.keys(this.props.headers).forEach(function(header) {\r\n this.xhr.setRequestHeader(header, this.props.headers[header]);\r\n }, this);\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 status: 0,\r\n headers: {},\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\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 if (this.xhr.status < 400) {\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\r\n try {\r\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders#Example\r\n var strHeaders = this.xhr.getAllResponseHeaders();\r\n var arrHeaders = strHeaders.trim().split(/[\\r\\n]+/);\r\n\r\n this.set('headers', arrHeaders.reduce(function(headers, line) {\r\n var parts = line.split(': ');\r\n var header = parts.shift();\r\n var value = parts.join(': ');\r\n\r\n headers[header] = value;\r\n\r\n return headers;\r\n }, {}));\r\n } catch(err) {\r\n console.warn('Error parsing response headers', err);\r\n }\r\n\r\n this.set('status', this.xhr.status);\r\n\r\n if (this.xhr.status < 400) {\r\n this.set('data', response);\r\n this.dispatchEvent('success');\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 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 this.dispatchEvent('unauthorized');\r\n } else if (this.xhr.status == 403) {\r\n this.dispatchEvent('forbidden');\r\n } else {\r\n this.dispatchEvent('error');\r\n }\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 var event = document.createEvent('Event');\r\n event.initEvent('remove', false, true);\r\n if (node.dispatchEvent(event)) {\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.Component('api-action', {\r\n extends: 'fetch'\r\n});\r\n","dmx.Component('api-form', {\r\n extends: 'serverconnect-form'\r\n});\r\n","dmx.Component('array', {\r\n\r\n initialData: {\r\n items: [],\r\n count: 0\r\n },\r\n\r\n attributes: {\r\n items: {\r\n type: Array,\r\n default: []\r\n }\r\n },\r\n\r\n events: {\r\n updated: Event\r\n },\r\n\r\n methods: {\r\n add: function(newItem) {\r\n this.splice(this.count(), 0, newItem);\r\n },\r\n\r\n addUniq: function(newItem) {\r\n // Only add when not exists\r\n if (this.indexOf(newItem) == -1) {\r\n this.splice(this.count(), 0, newItem);\r\n }\r\n },\r\n\r\n insert: function(index, newItem) {\r\n this.splice(index, 0, newItem);\r\n },\r\n\r\n insertBefore: function(item, newItem) {\r\n var index = this.indexOf(item);\r\n if (index != -1) {\r\n this.splice(index, 0, newItem);\r\n }\r\n },\r\n\r\n insertAfter: function(item, newItem) {\r\n var index = this.indexOf(item);\r\n if (index != -1) {\r\n this.splice(index + 1, 0, newItem);\r\n }\r\n },\r\n\r\n replace: function(item, newItem) {\r\n var index = this.indexOf(item);\r\n if (index != -1) {\r\n this.splice(index, 1, newItem);\r\n }\r\n },\r\n\r\n replaceAt: function(index, newItem) {\r\n this.splice(index, 1, newItem);\r\n },\r\n\r\n remove: function(item) {\r\n var index = this.indexOf(item);\r\n if (index != -1) {\r\n this.splice(index, 1);\r\n }\r\n },\r\n\r\n removeAt: function(index) {\r\n this.splice(index, 1);\r\n },\r\n\r\n reverse: function() {\r\n this.reverse();\r\n },\r\n\r\n sort: function() {\r\n this.sort();\r\n },\r\n\r\n empty: function() {\r\n this.updateData([]);\r\n }\r\n },\r\n\r\n render: function() {\r\n var arr = dmx.array(this.props.items);\r\n this.set('items', arr);\r\n this.set('count', arr.length);\r\n },\r\n\r\n update: function(props) {\r\n if (JSON.stringify(props.items) != JSON.stringify(this.props.items)) {\r\n this.updateData(dmx.array(this.props.items));\r\n }\r\n },\r\n\r\n count: function() {\r\n return this.data.items.length;\r\n },\r\n\r\n indexOf: function(item) {\r\n return this.data.items.indexOf(item);\r\n },\r\n\r\n splice: function(index, remove, item) {\r\n var arr = dmx.clone(this.data.items);\r\n\r\n if (item !== undefined) {\r\n arr.splice(index, remove, item);\r\n } else {\r\n arr.splice(index, remove);\r\n }\r\n\r\n this.updateData(arr);\r\n },\r\n\r\n reverse: function() {\r\n var arr = dmx.clone(this.data.items);\r\n arr.reverse();\r\n this.updateData(arr);\r\n },\r\n\r\n sort: function() {\r\n var arr = dmx.clone(this.data.items);\r\n arr.sort();\r\n this.updateData(arr);\r\n },\r\n\r\n updateData: function(arr) {\r\n if (JSON.stringify(this.data.items) != JSON.stringify(arr)) {\r\n this.set('items', arr);\r\n this.set('count', arr.length);\r\n dmx.nextTick(function() {\r\n this.dispatchEvent('updated');\r\n }, this);\r\n }\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 if (!!value) {\r\n node.setAttribute(name, '');\r\n } else {\r\n node.removeAttribute(name);\r\n }\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(Object.assign({\r\n $event: event\r\n }, event.data), 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 = dmx.repeatItems(repeat);\r\n\r\n if (!attr.modifiers.fast) {\r\n var fragment = document.createDocumentFragment();\r\n\r\n children.forEach(function(child) {\r\n component.children.splice(component.children.indexOf(child), 1);\r\n child.$destroy();\r\n });\r\n\r\n children = [];\r\n\r\n for (var i = 0; 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 } else {\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});\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"]}