{"version":3,"sources":["core/polyfills.js","core/clone.js","core/equal.js","appConnect.js","core/dom.js","core/parser.js","core/dataScope.js","core/BaseComponent.js","core/pathToRegexp.js","core/hjson.js","core/flow.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","components/group.js","components/flow.js","components/toggle.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","actions/core.js","actions/collections.js","actions/console.js"],"names":["String","prototype","startsWith","Object","defineProperty","value","search","position","pos","this","substring","length","includes","start","RegExp","TypeError","undefined","indexOf","Array","findIndex","predicate","o","len","thisArg","arguments","k","kValue","call","find","searchElement","fromIndex","x","y","n","Math","max","abs","isNaN","fill","O","relativeStart","min","end","relativeEnd","final","assign","target","varArgs","to","index","nextSource","nextKey","hasOwnProperty","window","Element","closest","s","i","matches","document","ownerDocument","querySelectorAll","el","item","parentElement","NodeList","forEach","dmx","toString","reFlags","reTypedType","eq","other","assocIndexOf","array","key","getMapData","data","type","isKeyable","map","ListCache","entries","clear","entry","set","__data__","size","delete","pop","splice","get","has","push","MapCache","hash","Hash","Map","string","result","Stack","pairs","LARGE_ARRAY_SIZE","getType","slice","isArray","isObject","cloneArrayBuffer","arrayBuffer","constructor","byteLength","Uint8Array","cloneTypedArray","typedArray","buffer","byteOffset","initType","object","Ctor","dataView","cloneDataView","regexp","source","exec","lastIndex","cloneRegExp","imageData","width","height","cloneImageData","clone","stack","initArray","subValue","add","test","isTypedArray","props","keys","iteratee","arrayEach","objValue","assignValue","mapToArray","setToArray","equalArrays","arrLength","arrValue","othValue","equal","equalDeep","objIsArr","othIsArr","objType","othType","isSameType","convert","equalByType","objProps","objLength","objCtor","othCtor","equalObjects","__components","__attributes","before","mount","mounted","__formatters","boolean","global","number","__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","history","replaceState","title","onpopstate","e","state","requestUpdate","onhashchange","App","Component","$update","style","visibility","addEventListener","location","protocol","appNode","querySelector","removeAttribute","console","warn","useHistory","pushState","extend","extended","deep","merge","obj","prop","noop","isset","val","v","parseDate","Date","struct","d","offset","toLowerCase","UTC","setHours","setMinutes","setSeconds","arr","hashCode","str","JSON","stringify","charCodeAt","randomizer","seed","repeatItems","repeat","items","$key","$index","$value","escapeRegExp","replace","validate","checkValidity","validateReset","setImmediate","nextTick","fn","context","bind","postMessage","queue","event","task","shift","setTimeout","updateRequested","debounce","delay","timeout","args","clearTimeout","apply","keyCodes","bs","tab","enter","esc","space","left","up","right","down","backspace","pause","capslock","escape","pageup","pagedown","home","arrowleft","arrowup","arrowright","arrowdown","insert","numlock","scrolllock","semicolon","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","nsp","MouseEvent","button","parseInt","KeyboardEvent","keyVal","which","stop","stopPropagation","prevent","preventDefault","$data","pageX","pageY","clientX","clientY","code","Dom7","nodeType","on","capture","jQuery","createClass","proto","parentClass","Cls","create","Config","tag","extends","BaseComponent","initialData","attributes","methods","events","parent","Attribute","name","hook","Formatters","Formatter","Adapter","Actions","actions","Action","action","$","selector","addClass","className","classList","removeClass","remove","toggleClass","toggle","hasClass","contains","attr","attrs","getAttribute","setAttribute","removeAttr","css","getComputedStyle","getPropertyValue","setProperty","each","callback","append","children","j","appendChild","appendTo","detach","parentNode","removeChild","empty","innerHTML","dom","id","getElementById","query","tagName","elem","createElement","walk","hasChildNodes","childNodes","getAttributes","attribute","specified","substr","argument","split","part","fullName","oldNode","newNode","replaceChild","cache","SUPPORTED_TYPES","Boolean","Null","Undefinec","Number","BigInt","Blob","File","FileList","ArrayBuffer","ImageBitmap","ImageData","Set","DataView","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array","OPERATORS","{","}","(",")","[","]",".",",",";",":","?","+","-","*","/","%","===","!==","==","!=","<",">","<=",">=","in","&&","||","!","&","|","^","~","<<",">>",">>>","ESCAPE","f","r","t","'","\"","`","EXPRESSIONS","**","a","b","pow","??","c","RESERVED","scope","null","true","false","_","__dmxScope__","ZERO","lexer","exp","token","ch","ch2","ch3","tokens","op","read","isDigid","is","peek","readNumber","isAlpha","readIdent","testRegexp","readRegexp","Error","readString","chars","isAlphaNum","isExpOperator","hex","match","fromCharCode","rep","exponent","next","ident","idx","ok","parse","trim","expression","expect","doParse","err","error","consume","conditional","middle","logicalOr","logicalAnd","bitwiseXor","bitwiseOr","bitwiseAnd","equality","relational","addictive","bitwiseShift","multiplicative","unary","primary","objectMember","functionCall","objectIndex","func","ctx","argsFn","indexFn","log","random","del","DataScope","$node","bindings","propBindings","listeners","dmxDomId","$parseAttributes","$initialData","render","beforeMount","$mount","$customAttributes","dmxComponent","dmxRendered","dispatchEvent","Event","destroy","$parse","found","__find","__replace","child","$destroy","$type","component","__remove","beforeUpdate","update","updated","beforeDestroy","destroyed","removeEventListener","ComponentEvent","createEvent","initEvent","bubbles","cancelable","defaultPrevented","$addChild","debug","nodeValue","$addBinding","oldValue","hasAttribute","isComponent","__WAPPLER__","$updateBindings","binding","callbacks","options","default","$propBinding","Function","$event","$originalEvent","method","$placeholder","$destroyChildren","ignoreParents","pathToRegexp","compile","tokensToFunction","tokensToRegExp","DEFAULT_DELIMITER","PATH_REGEXP","join","res","path","defaultDelimiter","delimiter","whitelist","pathEscaped","m","escaped","prev","group","modifier","optional","pattern","prefix","escapeGroup","escapeString","encode","encodeURIComponent","segment","flags","sensitive","strict","endsWith","concat","route","endToken","isEndDelimited","groups","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","Hjson","text","at","escapee","\\","isPunctuatorChar","col","line","charAt","offs","allowML","exitCh","mlString","uffff","triple","indent","skipIndent","skip","keyname","white","tryParseNumber","stopAtNext","leadingZeros","testLeading","isFinite","errorClosingHint","report","possibleErr","hint","withoutBraces","isEol","chf","tfnns","checkTrailing","rootValue","Flow","Promise","_execStep","output","run","flow","_exec","then","_each","resolve","reduce","curr","steps","promise","catch","step","disabled","valueOf","onload","ready","load","parseQuery","querystring","p","decodeURIComponent","base","content","decodeURI","pathname","novalidate","submit","direct","_submit","reset","invalid","noValidate","onsubmit","onreset","elm","elements","validity","valid","focus","HTMLFormElement","grecaptcha","updateData","validationMessage","focused","setValue","disable","changed","defaultValue","dirty","activeElement","file","onchange","files","date","lastModified","lastModifiedDate","toISOString","dataUrl","reader","FileReader","readAsDataURL","checked","check","defaultChecked","updateValue","values","filter","radio","isDefault","checkbox","selectedIndex","selectedValue","selectedText","optionText","optionValue","setSelectedIndex","renderOptions","option","selected","defaultSelected","innerText","rerender","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","executing","uploading","processing","downloading","uploadProgress","total","percent","downloadProgress","lastError","message","response","url","params","data-type","noload","ttl","credentials","abort","reload","_reset","done","unauthorized","forbidden","success","upload","ProgressEvent","download","xhr","XMLHttpRequest","onabort","onerror","ontimeout","onprogress","qs","_url","WebviewProxy","convertProxyUrl","now","created","toUpperCase","FormData","open","header","setRequestHeader","withCredentials","send","_done","responseText","arrHeaders","getAllResponseHeaders","linkHeader","link","linkUrl","qry","acc","info","rel","page","pages","first","last","countHeader","statusText","loaded","lengthComputable","ceil","sockets","eventName","socket","Socket","refresh","emit","autosubmit","post-data","clearData","dmxExtraData","dmxExtraElements","extra","element","selectedOptions","multiple","setCustomValidity","bootstrap5forms","setBootstrap5Message","bootstrap4forms","setBootstrap4Message","bootstrap3forms","setBootstrapMessage","setErrorMessage","condition","show","hide","nodes","template","_render","_destroy","datetime","interval","utc","timer","requestAnimationFrame","year","month","day","hours","minutes","seconds","pad","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","dateString","tz","count","newItem","addUniq","insertAfter","replaceAt","removeAt","reverse","sort","$param","running","src","preload","autorun","param","throwError","runSub","textContent","uri","reject","isUpdated","uncheck","nodeName","returnValue","placeholder","createComment","fast","orgValue","orgPriority","getPropertyPriority","property","important","json","subflow","comment","wait","lower","upper","floating","rnd","floor","round","confirm","else","prompt","parentScope","parentOutput","$name","$number","$oddeven","outputFields","field","if","conditions","when","cases","while","loop","switch","case","tryCatch","try","runJS","function","setGlobal","setSession","sessionStorage","setItem","getSession","getItem","removeSession","removeItem","setStorage","localStorage","getStorage","removeStorage","dataType","body","collections.addColumns","collection","overwrite","l","row","column","collections.filterColumns","columns","keep","newRow","collections.renameColumns","rename","collections.fillDown","toFill","collections.addRows","rows","collections.addRowNumbers","startAt","desc","colections.join","collection1","collection2","matchAll","l2","row2","hasMatch","collections.mormalize","console.log","console.info","console.warn","console.error","console.count","label","console.time","time","console.timeEnd","timeEnd","console.group","console.groupEnd","groupEnd","console.clear"],"mappings":"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","file":"../dmxAppConnect.js","sourcesContent":["// Some polyfills for IE\r\n\r\nif (!String.prototype.startsWith) {\r\n Object.defineProperty(String.prototype, 'startsWith', {\r\n value: function(search, position) {\r\n var pos = position > 0 ? position|0 : 0;\r\n return this.substring(pos, pos + search.length) === search;\r\n }\r\n });\r\n}\r\n\r\nif (!String.prototype.includes) {\r\n String.prototype.includes = function(search, start) {\r\n 'use strict';\r\n\r\n if (search instanceof RegExp) {\r\n throw TypeError('first argument must not be a RegExp');\r\n }\r\n if (start === undefined) { start = 0; }\r\n return this.indexOf(search, start) !== -1;\r\n };\r\n}\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.includes) {\r\n Object.defineProperty(Array.prototype, 'includes', {\r\n value: function (searchElement, fromIndex) {\r\n\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 len is 0, return false.\r\n if (len === 0) {\r\n return false;\r\n }\r\n\r\n // 4. Let n be ? ToInteger(fromIndex).\r\n // (If fromIndex is undefined, this step produces the value 0.)\r\n var n = fromIndex | 0;\r\n\r\n // 5. If n ≥ 0, then\r\n // a. Let k be n.\r\n // 6. Else n < 0,\r\n // a. Let k be len + n.\r\n // b. If k < 0, let k be 0.\r\n var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\r\n\r\n function sameValueZero(x, y) {\r\n return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));\r\n }\r\n\r\n // 7. Repeat, while k < len\r\n while (k < len) {\r\n // a. Let elementK be the result of ? Get(O, ! ToString(k)).\r\n // b. If SameValueZero(searchElement, elementK) is true, return true.\r\n // c. Increase k by 1.\r\n if (sameValueZero(o[k], searchElement)) {\r\n return true;\r\n }\r\n k++;\r\n }\r\n\r\n // 8. Return false\r\n return false;\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\r\nif (window.NodeList && !NodeList.prototype.forEach) {\r\n NodeList.prototype.forEach = Array.prototype.forEach;\r\n}","(function() {\r\n\r\n window.dmx = window.dmx || {};\r\n\r\n // unsupported types: ImageBitmap\r\n\r\n var LARGE_ARRAY_SIZE = 200;\r\n\r\n var toString = Object.prototype.toString;\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\n var reFlags = /\\w*$/;\r\n var reTypedType = /^(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)Array$/;\r\n\r\n var eq = function(value, other) {\r\n return value === other || (value !== value && other !== other);\r\n }\r\n\r\n var assocIndexOf = function(array, key) {\r\n var length = array.length;\r\n while (length--) {\r\n if (eq(array[length][0], key)) {\r\n return length;\r\n }\r\n }\r\n return -1;\r\n };\r\n\r\n var isKeyable = function(value) {\r\n var type = typeof value;\r\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\r\n ? (value !== '__proto__')\r\n : (value === null);\r\n };\r\n\r\n var getMapData = function(data, key) {\r\n return isKeyable(key)\r\n ? data[typeof key == 'string' ? 'string' : 'hash']\r\n : data.map;\r\n };\r\n\r\n var ListCache = function(entries) {\r\n var index = -1;\r\n var length = entries == null ? 0 : entries.length;\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n };\r\n\r\n ListCache.prototype = {\r\n clear: function() {\r\n this.__data__ = [];\r\n this.size = 0;\r\n },\r\n\r\n delete: function(key) {\r\n var data = this.__data__;\r\n var index = assocIndexOf(data, key);\r\n if (index < 0) {\r\n return false;\r\n }\r\n var lastIndex = data.length - 1;\r\n if (index == lastIndex) {\r\n data.pop();\r\n } else {\r\n data.splice(index, 1);\r\n }\r\n --this.size;\r\n return true;\r\n },\r\n\r\n get: function(key) {\r\n var data = this.__data__;\r\n var index = assocIndexOf(data, key);\r\n return index < 0 ? undefined : data[index][1];\r\n },\r\n\r\n has: function(key) {\r\n return assocIndexOf(this.__data__, key) > -1;\r\n },\r\n\r\n set: function(key, value) {\r\n var data = this.__data__;\r\n var idnex = assocIndexOf(data, key);\r\n if (index < 0) {\r\n ++this.size;\r\n data.push([key, value]);\r\n } else {\r\n data[index][1] = value;\r\n }\r\n return this;\r\n }\r\n };\r\n\r\n var MapCache = function(entries) {\r\n var index = -1;\r\n var length = entries == null ? 0 : entries.length;\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n };\r\n\r\n MapCache.prototype = {\r\n clear: function() {\r\n this.size = 0;\r\n this.__data__ = {\r\n 'hash': new Hash(),\r\n 'map': new Map(),\r\n 'string': new Hash()\r\n };\r\n },\r\n\r\n delete: function(key) {\r\n var result = getMapData(this.__data__, key)['delete'](key);\r\n this.size -= result ? 1 : 0;\r\n return result;\r\n },\r\n\r\n get: function(key) {\r\n return getMapData(this.__data__, key).get(key);\r\n },\r\n\r\n has: function(key) {\r\n return getMapData(this.__data__, key).has(key);\r\n },\r\n\r\n set: function(key, value) {\r\n var data = getMapData(this.__data__, key);\r\n var size = data.size;\r\n data.set(key, value);\r\n this.size += data.size == size ? 0 : 1;\r\n return this;\r\n }\r\n };\r\n\r\n var Stack = function(entries) {\r\n var data = this.__data__ = new ListCache(entries);\r\n this.size = data.size;\r\n };\r\n\r\n Stack.prototype = {\r\n clear: function() {\r\n this.__data__ = new ListCache();\r\n this.size = 0;\r\n },\r\n\r\n delete: function(key) {\r\n var data = this.__data__;\r\n var result = data['delete'](key);\r\n this.size = data.size;\r\n return result;\r\n },\r\n\r\n get: function(key) {\r\n return this.__data__.get(key);\r\n },\r\n\r\n has: function(key) {\r\n return this.__data__.has(key);\r\n },\r\n\r\n set: function(key, value) {\r\n var data = this.__data__;\r\n if (data instanceof ListCache) {\r\n var pairs = data.__data__;\r\n if (pairs.length < LARGE_ARRAY_SIZE - 1) {\r\n pairs.push([key, value]);\r\n this.size = ++data.size;\r\n return this;\r\n }\r\n data = this.__data__ = new MapCache(pairs);\r\n }\r\n data.set(key, value);\r\n this.size = data.size;\r\n return this;\r\n }\r\n };\r\n\r\n var arrayEach = function(array, iteratee) {\r\n var index = -1;\r\n var length = array.length;\r\n while (++index < length) {\r\n if (iteratee(array[index], index, array) === false) {\r\n break;\r\n }\r\n }\r\n return array;\r\n };\r\n\r\n var getType = function(value) {\r\n return toString.call(value).slice(8, -1);\r\n };\r\n\r\n var isArray = function(value) {\r\n return Array.isArray(value);\r\n };\r\n\r\n var isObject = function(value) {\r\n return value != null && typeof value == 'object'\r\n };\r\n\r\n var isTypedArray = function(value) {\r\n return isObject(value) && reTypedType.test(getType(value));\r\n };\r\n\r\n var assignValue = function(object, key, value) {\r\n var objValue = object[key];\r\n\r\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value))) {\r\n //if (value !== 0 || (1 / value) === (1 / objValue)) {\r\n object[key] = value;\r\n //}\r\n } else if (value === undefined && !(key in object)) {\r\n object[key] = value;\r\n }\r\n };\r\n\r\n var cloneArrayBuffer = function(arrayBuffer) {\r\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\r\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\r\n return result;\r\n };\r\n\r\n var cloneDataView = function(dataView) {\r\n var buffer = cloneArrayBuffer(dataView.buffer);\r\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\r\n };\r\n\r\n var cloneTypedArray = function(typedArray) {\r\n var buffer = cloneArrayBuffer(typedArray.buffer);\r\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\r\n };\r\n\r\n var cloneRegExp = function(regexp) {\r\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\r\n result.lastIndex = regexp.lastIndex;\r\n return result;\r\n };\r\n\r\n var cloneImageData = function(imageData) {\r\n var data = cloneTypedArray(imageData.data);\r\n return new imageData.constructor(data, imageData.width, imageData.height);\r\n }\r\n\r\n var initArray = function(array) {\r\n return new array.constructor(array.length);\r\n };\r\n\r\n var initType = function(object, type) {\r\n var Ctor = object.constructor;\r\n\r\n switch (type) {\r\n case 'ArrayBuffer':\r\n return cloneArrayBuffer();\r\n \r\n case 'Boolean':\r\n case 'Date':\r\n return new Ctor(+object);\r\n\r\n case 'DataView':\r\n return cloneDataView(object);\r\n\r\n case 'Float32Array':\r\n case 'Float64Array':\r\n case 'Int8Array':\r\n case 'Int16Array':\r\n case 'Int32Array':\r\n case 'Uint8Array':\r\n case 'Uint8ClampedArray':\r\n case 'Uint16Array':\r\n case 'Uint32Array':\r\n return cloneTypedArray(object);\r\n\r\n case 'Map':\r\n case 'Set':\r\n return new Ctor();\r\n\r\n case 'Number':\r\n case 'String':\r\n return new Ctor(object);\r\n\r\n case 'RegExp':\r\n return cloneRegExp(object);\r\n\r\n case 'ImageData':\r\n return cloneImageData(object);\r\n }\r\n };\r\n\r\n var clone = function(value, key, object, stack) {\r\n var result;\r\n\r\n if (!isObject(value)) {\r\n return value;\r\n }\r\n \r\n var type = getType(value);\r\n\r\n if (isArray(value)) {\r\n result = initArray(value);\r\n } else {\r\n if (type == 'Object') {\r\n result = {};\r\n } else {\r\n result = initType(value, type);\r\n }\r\n } \r\n \r\n stack = stack || new Stack();\r\n\r\n if (type == 'Map') {\r\n value.forEach(function(subValue, key) {\r\n result.set(key, clone(subValue, key, value, stack));\r\n });\r\n\r\n return result;\r\n }\r\n\r\n if (type == 'Set') {\r\n value.forEach(function(subValue) {\r\n result.add(clone(subValue, subValue, value, stack));\r\n });\r\n\r\n return result;\r\n }\r\n\r\n if (isTypedArray(value)) {\r\n return result;\r\n }\r\n\r\n var props = isArray(value) ? undefined : Object.keys(Object(value));\r\n arrayEach(props || value, function(subValue, key) {\r\n if (props) {\r\n key = subValue;\r\n subValue = value[key];\r\n }\r\n assignValue(result, key, clone(subValue, key, value, stack));\r\n });\r\n\r\n return result;\r\n };\r\n\r\n dmx.clone = clone;\r\n\r\n})();","(function() {\r\n\r\n window.dmx = window.dmx || {};\r\n\r\n // TODO: ImageData compare\r\n\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\n var reTypedType = /^(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)Array$/;\r\n\r\n var eq = function(value, other) {\r\n return value === other || (value !== value && other !== other);\r\n }\r\n\r\n var getType = function(value) {\r\n return toString.call(value).slice(8, -1);\r\n };\r\n\r\n var isObject = function(value) {\r\n return typeof value === 'object' && value !== null;\r\n };\r\n\r\n var isTypedArray = function(value) {\r\n return isObject(value) && reTypedType.test(getType(value));\r\n };\r\n\r\n var mapToArray = function(map) {\r\n var index = -1;\r\n var result = new Array(map.size);\r\n map.forEach(function(value, key) {\r\n result[++index] = [key, value];\r\n });\r\n return result;\r\n };\r\n\r\n var setToArray = function(set) {\r\n var index = -1;\r\n var result = new Array(set.size);\r\n set.forEach(function(value) {\r\n result[++index] = value;\r\n });\r\n return result;\r\n }\r\n\r\n var equalByType = function(object, other, type) {\r\n switch (type) {\r\n case 'DataView':\r\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\r\n return false;\r\n }\r\n object = object.buffer;\r\n other = other.buffer;\r\n\r\n case 'ArrayBuffer':\r\n if (object.byteLength != other.byteLength || !equal(new Uint8Array(object), new Uint8Array(other))) {\r\n return false;\r\n }\r\n return true;\r\n\r\n case 'Boolean':\r\n case 'Date':\r\n case 'Number':\r\n return eq(+object, +other);\r\n\r\n case 'RegExp':\r\n case 'String':\r\n return object == String(other);\r\n\r\n case 'Map':\r\n var convert = mapToArray;\r\n\r\n case 'Set':\r\n convert || (convert = setToArray);\r\n if (object.size != other.size) {\r\n return false;\r\n }\r\n return equalArrays(convert(object), convert(other));\r\n }\r\n };\r\n\r\n var equalArrays = function(array, other) {\r\n var arrLength = array.length;\r\n var othLength = other.length;\r\n\r\n if (arrLength != othLength) {\r\n return false;\r\n }\r\n\r\n var index = -1;\r\n\r\n while (++index < arrLength) {\r\n var arrValue = array[index];\r\n var othValue = other[index];\r\n\r\n if (!(arrValue === othValue || equal(arrValue, othValue))) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n var equalObjects = function(object, other) {\r\n var objProps = Object.keys(object);\r\n var objLength = objProps.length;\r\n var othProps = Object.keys(other);\r\n var othLength = othProps.length;\r\n\r\n if (objLength != othLength) {\r\n return false;\r\n }\r\n\r\n var key, index = objLength;\r\n \r\n while (index--) {\r\n key = objProps[index];\r\n if (!hasOwnProperty.call(other, key)) {\r\n return false;\r\n }\r\n }\r\n\r\n var result = true;\r\n\r\n while (++index < objLength) {\r\n key = objProps[index];\r\n var objValue = object[key];\r\n var othValue = other[key];\r\n\r\n if (!(objValue === othValue || equal(objValue, othValue))) {\r\n result = false;\r\n break;\r\n }\r\n }\r\n\r\n if (result) {\r\n var objCtor = object.constructor;\r\n var othCtor = other.constructor;\r\n\r\n if (objCtor != othCtor &&\r\n ('constructor' in object && 'constructor' in other) &&\r\n !(typeof objCtor === 'function' && objCtor instanceof objCtor &&\r\n typeof othCtor === 'function' && othCtor instanceof othCtor)) {\r\n result = false;\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n var equalDeep = function(object, other) {\r\n var objIsArr = Array.isArray(object);\r\n var othIsArr = Array.isArray(other);\r\n var objType = objIsArr ? 'Array' : getType(object);\r\n var othType = othIsArr ? 'Array' : getType(other);\r\n var objIsObj = objType == 'Object';\r\n var othIsObj = othType == 'Object';\r\n var isSameType = objType == othType;\r\n\r\n if (isSameType && !objIsObj) {\r\n return (objIsArr || isTypedArray(object))\r\n ? equalArrays(object, other)\r\n : equalByType(object, other, objType);\r\n }\r\n\r\n if (!isSameType) {\r\n return false;\r\n }\r\n\r\n return equalObjects(object, other);\r\n };\r\n\r\n var equal = function(value, other) {\r\n if (value === other) {\r\n return true;\r\n }\r\n if (value == null || other == null || (!isObject(value) && !isObject(other))) {\r\n return value !== value && other !== other;\r\n }\r\n return equalDeep(value, other);\r\n };\r\n\r\n dmx.equal = equal;\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 history.replaceState({ title: document.title }, '');\r\n\r\n window.onpopstate = function(e) {\r\n if (e.state && e.state.title) {\r\n document.title = e.state.title;\r\n }\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, dmx.global);\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(document.location.protocol == 'app:' ? 'deviceready' : '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.parseDate = function(obj) {\r\n if (typeof obj == 'string') {\r\n var d, struct, offset = 0, n = [1,4,5,6,7,10,11];\r\n\r\n string += '';\r\n\r\n if (string.toLowerCase() == 'now') {\r\n return new Date();\r\n }\r\n\r\n if ((struct = /^(\\d{4}|[+\\-]\\d{6})(?:-(\\d{2})(?:-(\\d{2}))?)?(?:[T ](\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?)?$/.exec(string))) {\r\n for (var i = 0, k; (k = n[i]); ++i) {\r\n struct[k] = +struct[k] || 0;\r\n }\r\n\r\n struct[2] = (+struct[2] || 1) - 1;\r\n struct[3] = +struct[3] || 1;\r\n\r\n if (struct[8] === undefined) {\r\n return new Date(struct[1], struct[2], struct[3], struct[4], struct[5], struct[6], struct[7]);\r\n } else {\r\n if (struct[8] !== 'Z' && struct[9] !== undefined) {\r\n offset = struct[10] * 60 + struct[11];\r\n if (struct[9] === '+') offset = 0 - offset;\r\n }\r\n\r\n return new Date(Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + offset, struct[6], struct[7]));\r\n }\r\n } else if ((struct = /^(\\d{2}):(\\d{2})(?::(\\d{2}))?$/.exec(string))) {\r\n var d = new Date();\r\n d.setHours(+struct[1] || 0);\r\n d.setMinutes(+struct[2] || 0);\r\n d.setSeconds(+struct[3] || 0);\r\n return d;\r\n }\r\n\r\n return new Date(string);\r\n } else if (typeof obj == 'number') {\r\n return new Date(obj * 1000);\r\n } else {\r\n return new Date('');\r\n }\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 (typeof repeat == 'object') {\r\n var i = 0;\r\n\r\n for (var key in repeat) {\r\n var item = dmx.clone(repeat[key]);\r\n items.push(Object.assign({\r\n $key: key,\r\n $index: i,\r\n $value: item\r\n }, item));\r\n i++;\r\n }\r\n } else if (typeof repeat == 'number') {\r\n for (var n = 0; n < repeat; n++) {\r\n items.push({\r\n $key: String(n),\r\n $index: n,\r\n $value: n + 1\r\n });\r\n }\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, 97],\r\n 'keyb': [66, 98],\r\n 'keyc': [67, 99],\r\n 'keyd': [68, 100],\r\n 'keye': [69, 101],\r\n 'keyf': [70, 102],\r\n 'keyg': [71, 103],\r\n 'keyh': [72, 104],\r\n 'keyi': [73, 105],\r\n 'keyj': [74, 106],\r\n 'keyk': [75, 107],\r\n 'keyl': [76, 108],\r\n 'keym': [77, 109],\r\n 'keyn': [78, 110],\r\n 'keyo': [79, 111],\r\n 'keyp': [80, 112],\r\n 'keyq': [81, 113],\r\n 'keyr': [82, 114],\r\n 'keys': [83, 115],\r\n 'keyt': [84, 116],\r\n 'keyu': [85, 117],\r\n 'keyv': [86, 118],\r\n 'keyw': [87, 119],\r\n 'keyx': [88, 120],\r\n 'keyy': [89, 121],\r\n 'keyz': [90, 122]\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).nsp && !Object.keys(modifiers).includes((event.originalEvent || event).nsp)) {\r\n return;\r\n }\r\n\r\n if ((event.originalEvent || event) instanceof MouseEvent) {\r\n if (modifiers.button != null && event.button != (parseInt(modifiers.button, 10) || 0)) return;\r\n }\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 (Array.isArray(keys[i])) {\r\n if (!keys[i].includes(event.which)) return;\r\n } else 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 (event.originalEvent) event = event.originalEvent;\r\n\r\n if (!event.$data) event.$data = {};\r\n\r\n if (event instanceof MouseEvent) {\r\n event.$data.altKey = event.altKey;\r\n event.$data.ctrlKey = event.ctrlKey;\r\n event.$data.metaKey = event.metaKey;\r\n event.$data.shiftKey = event.shiftKey;\r\n event.$data.pageX = event.pageX;\r\n event.$data.pageY = event.pageY;\r\n event.$data.x = event.x || event.clientX;\r\n event.$data.y = event.y || event.clientY;\r\n }\r\n\r\n if (event instanceof KeyboardEvent) {\r\n event.$data.altKey = event.altKey;\r\n event.$data.ctrlKey = event.ctrlKey;\r\n event.$data.metaKey = event.metaKey;\r\n event.$data.shiftKey = event.shiftKey;\r\n event.$data.location = event.location;\r\n event.$data.repeat = event.repeat;\r\n event.$data.code = event.code;\r\n event.$data.key = event.key;\r\n }\r\n\r\n if (modifiers.debounce) {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(handler.bind(this, event), parseInt(modifiers.debounce, 10) || 0);\r\n } else {\r\n return handler.call(this, event);\r\n }\r\n };\r\n\r\n modifiers = modifiers || {};\r\n\r\n if (window.Dom7 && target.nodeType === 1) {\r\n Dom7(target).on(eventType.replace(/-/g, '.'), listener, !!modifiers.capture);\r\n } else if (window.jQuery && !modifiers.capture) {\r\n jQuery(target).on(eventType.replace(/-/g, '.'), listener);\r\n } else {\r\n target.addEventListener(eventType.replace(/-/g, '.'), 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;\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 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.Actions = function(actions) {\r\n for (var name in actions) {\r\n dmx.__actions[name] = actions[name];\r\n }\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\t// support all types that is supported with structured clone\r\n\tvar SUPPORTED_TYPES = {\r\n\t\t'Boolean': 'boolean',\r\n\t\t'Null': 'null',\r\n\t\t'Undefinec': 'undefined',\r\n\t\t'Number': 'number',\r\n\t\t'BigInt': 'number',\r\n\t\t'String': 'string',\r\n\t\t'Date': 'date',\r\n\t\t'RegExp': 'regexp',\r\n\t\t'Blob': 'blob',\r\n\t\t'File': 'file',\r\n\t\t'FileList': 'filelist',\r\n\t\t'ArrayBuffer': 'arraybuffer',\r\n\t\t'ImageBitmap': 'imagebitmap',\r\n\t\t'ImageData': 'imagedata',\r\n\t\t'Array': 'array',\r\n\t\t'Object': 'object',\r\n\t\t'Map': 'map',\r\n\t\t'Set': 'set',\r\n\t\t'DataView': 'array',\r\n\t\t'Int8Array': 'array',\r\n\t\t'Uint8Array': 'array',\r\n\t\t'Uint8ClampedArray': 'array',\r\n\t\t'Int16Array': 'array',\r\n\t\t'Uint16Array': 'array',\r\n\t\t'Int32Array': 'array',\r\n\t\t'Uint32Array': 'array',\r\n\t\t'Float32Array': 'array',\r\n\t\t'Float64Array': 'array',\r\n\t\t'BigInt64Array': 'array',\r\n\t\t'BigUint64Array': 'array'\r\n\t};\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\t\t'**': function(a, b) { return Math.pow(a(), b()) }, // Use Math.pow for older browsers\r\n\t\t'??': function(a, b) { a = a(); return a == null ? b() : a }, // nullish-coalescing\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 'this': function(scope) { return function() { return scope.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\t\t'false': function() { return function() { return false; }; },\r\n\t\t'_': function() { return function() { return { __dmxScope__: true }; }; }\r\n };\r\n\r\n var ZERO = function() { return 0; };\r\n\r\n\tdmx.getType = function(obj) {\r\n\t\treturn SUPPORTED_TYPES[Object.prototype.toString.call(obj).slice(8, -1)];\r\n\t};\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 && (token == '(' || token == ',' || token == '?' || token == ':') && 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 at column ' + index + ' in expression [' + exp + ']');\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\t\tindex++;\r\n\t\t\t\t\tif (quote == '`') {\r\n\t\t\t\t\t\tstring = '{{' + string + '}}';\r\n\t\t\t\t\t}\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 in expression [' + exp + ']');\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 \"' + ch + '\" in expression [' + exp + ']');\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\t\t// TODO: Support BigInt type\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\t\t// return the actual regexp object (new structured data support)\r\n \t\t\t\treturn new RegExp(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 in expression [' + exp + ']');\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\t\t}\r\n\t\t\r\n\t\tif (!exp.trim()) return undefined;\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 in 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 + '] in 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('Expecting a \":\" in expression [' + exp + ']');\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 [' + exp + ']');\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 + ' in expression [' + exp + '] doesn\\'t exist');\r\n \t\t\t\t\treturn undefined;\r\n });\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 in expression [' + exp + ']');\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\t\tif (typeof o != 'object' || o == null) return undefined;\r\n\t\t\t\t\r\n\t\t\t\tif (o.__dmxScope__) {\r\n\t\t\t\t\treturn scope.get(i);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (dmx.getType(o) == 'map') {\r\n\t\t\t\t\treturn o.get(i);\r\n\t\t\t\t}\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\t\t\t\tvar type = dmx.getType(o);\r\n\r\n \t\t\tif (token.name == 'METHOD') {\r\n\t\t\t\t\tif (type == 'map' && typeof o.get('__' + token.value) == 'function') {\r\n\t\t\t\t\t\tconsole.log('function', token.value, o.get('__' + token.value));\r\n\t\t\t\t\t\treturn o.get('__' + token.value);\r\n\t\t\t\t\t}\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\t\tif (dmx.__formatters['any'] && dmx.__formatters['any'][token.value]) {\r\n\t\t\t\t\t\treturn dmx.__formatters['any'][token.value];\r\n\t\t\t\t\t}\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 + ' in expression [' + exp + '] 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\t}\r\n\t\t\t\t\r\n\t\t\t\tif (o && o.__dmxScope__) {\r\n\t\t\t\t\treturn scope.get(token.value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (type == 'map') {\r\n\t\t\t\t\treturn o.get(token.value);\r\n\t\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.global = {\r\n 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 return undefined;\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 (!dmx.equal(this.data[name], value)) {\r\n this.data[name] = value;\r\n dmx.requestUpdate();\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\r\ndmx.DataScope = function(data, parent) {\r\n if (typeof data != 'object') {\r\n data = { $value: data };\r\n }\r\n\r\n return {\r\n parent: parent || dmx.global,\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 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 (!dmx.equal(this.data[name], value)) {\r\n this.data[name] = value;\r\n }\r\n },\r\n del: function(name) {\r\n delete this.data[name];\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 try {\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 } catch (e) {\r\n console.error(e);\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 /*\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\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 // find component based on name inside children\r\n find: function(name) {\r\n if (this.name == name) return this;\r\n\r\n for (var i = 0; i < this.children.length; i++) {\r\n var found = this.children[i].find(name);\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 __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, nsp) {\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.nsp = nsp;\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 if (this.data[component.name] && dmx.debug) {\r\n console.warn('Duplicate name \"' + component.name + '\" found, component not added to scope.');\r\n //return;\r\n }\r\n this.set(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 (node.hasAttribute('is')) {\r\n tagName = node.getAttribute('is');\r\n }\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 (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 } else if (window.__WAPPLER__) {\r\n if (node.dmxComponent && node.dmxComponent.$parse) {\r\n node.dmxComponent.$parse();\r\n }\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 try {\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 try {\r\n this.update(props);\r\n } catch (e) {\r\n console.error(e);\r\n }\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 } catch (e) {\r\n console.error(e);\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 if (!dmx.equal(value, 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 this.$updateBindings(this.propBindings);\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 if (event.originalEvent) {\r\n event = event.originalEvent;\r\n }\r\n\r\n var returnValue = dmx.parse(attr.value, dmx.DataScope({\r\n $event: event.$data,\r\n $originalEvent: event\r\n }, self));\r\n\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\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 if (!dmx.equal(this.data[name], 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","if (!window.Hjson) {\r\n window.Hjson = {};\r\n\r\n Hjson.parse = function(source) {\r\n // only parse, stripped dsf and comment support\r\n\r\n var text;\r\n var at; // The index of the current character\r\n var ch; // The current character\r\n var escapee = {\r\n '\"': '\"',\r\n \"'\": \"'\",\r\n '\\\\': '\\\\',\r\n '/': '/',\r\n b: '\\b',\r\n f: '\\f',\r\n n: '\\n',\r\n r: '\\r',\r\n t: '\\t'\r\n };\r\n\r\n function resetAt() {\r\n at = 0;\r\n ch = ' ';\r\n }\r\n\r\n function isPunctuatorChar(c) {\r\n return c === '{' || c === '}' || c === '[' || c === ']' || c === ',' || c === ':';\r\n }\r\n\r\n // Call error when something is wrong.\r\n function error(m) {\r\n var i, col=0, line=1;\r\n for (i = at-1; i > 0 && text[i] !== '\\n'; i--, col++) {}\r\n for (; i > 0; i--) if (text[i] === '\\n') line++;\r\n throw new Error(m + \" at line \" + line + \",\" + col + \" >>>\" + text.substr(at-col, 20) + \" ...\");\r\n }\r\n\r\n function next() {\r\n // get the next character.\r\n ch = text.charAt(at);\r\n at++;\r\n return ch;\r\n }\r\n\r\n function peek(offs) {\r\n // range check is not required\r\n return text.charAt(at + offs);\r\n }\r\n\r\n function string(allowML) {\r\n // Parse a string value.\r\n // callers make sure that (ch === '\"' || ch === \"'\")\r\n var string = '';\r\n\r\n // When parsing for string values, we must look for \"/' and \\ characters.\r\n var exitCh = ch;\r\n while (next()) {\r\n if (ch === exitCh) {\r\n next();\r\n if (allowML && exitCh === \"'\" && ch === \"'\" && string.length === 0) {\r\n // ''' indicates a multiline string\r\n next();\r\n return mlString();\r\n } else return string;\r\n }\r\n if (ch === '\\\\') {\r\n next();\r\n if (ch === 'u') {\r\n var uffff = 0;\r\n for (var i = 0; i < 4; i++) {\r\n next();\r\n var c = ch.charCodeAt(0), hex;\r\n if (ch >= '0' && ch <= '9') hex = c - 48;\r\n else if (ch >= 'a' && ch <= 'f') hex = c - 97 + 0xa;\r\n else if (ch >= 'A' && ch <= 'F') hex = c - 65 + 0xa;\r\n else error(\"Bad \\\\u char \" + ch);\r\n uffff = uffff * 16 + hex;\r\n }\r\n string += String.fromCharCode(uffff);\r\n } else if (typeof escapee[ch] === 'string') {\r\n string += escapee[ch];\r\n } else break;\r\n } else if (ch === '\\n' || ch === '\\r') {\r\n error(\"Bad string containing newline\");\r\n } else {\r\n string += ch;\r\n }\r\n }\r\n error(\"Bad string\");\r\n }\r\n\r\n function mlString() {\r\n // Parse a multiline string value.\r\n var string = '', triple = 0;\r\n\r\n // we are at ''' +1 - get indent\r\n var indent = 0;\r\n for (;;) {\r\n var c=peek(-indent-5);\r\n if (!c || c === '\\n') break;\r\n indent++;\r\n }\r\n\r\n function skipIndent() {\r\n var skip = indent;\r\n while (ch && ch <= ' ' && ch !== '\\n' && skip-- > 0) next();\r\n }\r\n\r\n // skip white/to (newline)\r\n while (ch && ch <= ' ' && ch !== '\\n') next();\r\n if (ch === '\\n') { next(); skipIndent(); }\r\n\r\n // When parsing multiline string values, we must look for ' characters.\r\n for (;;) {\r\n if (!ch) {\r\n error(\"Bad multiline string\");\r\n } else if (ch === '\\'') {\r\n triple++;\r\n next();\r\n if (triple === 3) {\r\n if (string.slice(-1) === '\\n') string=string.slice(0, -1); // remove last EOL\r\n return string;\r\n } else continue;\r\n } else {\r\n while (triple > 0) {\r\n string += '\\'';\r\n triple--;\r\n }\r\n }\r\n if (ch === '\\n') {\r\n string += '\\n';\r\n next();\r\n skipIndent();\r\n } else {\r\n if (ch !== '\\r') string += ch;\r\n next();\r\n }\r\n }\r\n }\r\n\r\n function keyname() {\r\n // quotes for keys are optional in Hjson\r\n // unless they include {}[],: or whitespace.\r\n\r\n if (ch === '\"' || ch === \"'\") return string(false);\r\n\r\n var name = \"\", start = at, space = -1;\r\n for (;;) {\r\n if (ch === ':') {\r\n if (!name) error(\"Found ':' but no key name (for an empty key name use quotes)\");\r\n else if (space >=0 && space !== name.length) { at = start + space; error(\"Found whitespace in your key name (use quotes to include)\"); }\r\n return name;\r\n } else if (ch <= ' ') {\r\n if (!ch) error(\"Found EOF while looking for a key name (check your syntax)\");\r\n else if (space < 0) space = name.length;\r\n } else if (isPunctuatorChar(ch)) {\r\n error(\"Found '\" + ch + \"' where a key name was expected (check your syntax or use quotes if the key name includes {}[],: or whitespace)\");\r\n } else {\r\n name += ch;\r\n }\r\n next();\r\n }\r\n }\r\n\r\n function white() {\r\n while (ch) {\r\n // Skip whitespace.\r\n while (ch && ch <= ' ') next();\r\n // Hjson allows comments\r\n if (ch === '#' || ch === '/' && peek(0) === '/') {\r\n while (ch && ch !== '\\n') next();\r\n } else if (ch === '/' && peek(0) === '*') {\r\n next(); next();\r\n while (ch && !(ch === '*' && peek(0) === '/')) next();\r\n if (ch) { next(); next(); }\r\n } else break;\r\n }\r\n }\r\n\r\n function tfnns() {\r\n // Hjson strings can be quoteless\r\n // returns string, true, false, or null.\r\n var value = ch;\r\n if (isPunctuatorChar(ch))\r\n error(\"Found a punctuator character '\" + ch + \"' when expecting a quoteless string (check your syntax)\");\r\n\r\n for(;;) {\r\n next();\r\n // (detection of ml strings was moved to string())\r\n var isEol = ch === '\\r' || ch === '\\n' || ch === '';\r\n if (isEol ||\r\n ch === ',' || ch === '}' || ch === ']' ||\r\n ch === '#' ||\r\n ch === '/' && (peek(0) === '/' || peek(0) === '*')\r\n ) {\r\n // this tests for the case of {true|false|null|num}\r\n // followed by { ',' | '}' | ']' | '#' | '//' | '/*' }\r\n // which needs to be parsed as the specified value\r\n var chf = value[0];\r\n switch (chf) {\r\n case 'f': if (value.trim() === \"false\") return false; break;\r\n case 'n': if (value.trim() === \"null\") return null; break;\r\n case 't': if (value.trim() === \"true\") return true; break;\r\n default:\r\n if (chf === '-' || chf >= '0' && chf <= '9') {\r\n var n = tryParseNumber(value);\r\n if (n !== undefined) return n;\r\n }\r\n }\r\n if (isEol) {\r\n // remove any whitespace at the end (ignored in quoteless strings)\r\n return value.trim();\r\n }\r\n }\r\n value += ch;\r\n }\r\n }\r\n\r\n function tryParseNumber(text, stopAtNext) {\r\n // try to parse a number\r\n \r\n var number, string = '', leadingZeros = 0, testLeading = true;\r\n var at = 0;\r\n var ch;\r\n function next() {\r\n ch = text.charAt(at);\r\n at++;\r\n return ch;\r\n }\r\n \r\n next();\r\n if (ch === '-') {\r\n string = '-';\r\n next();\r\n }\r\n while (ch >= '0' && ch <= '9') {\r\n if (testLeading) {\r\n if (ch == '0') leadingZeros++;\r\n else testLeading = false;\r\n }\r\n string += ch;\r\n next();\r\n }\r\n if (testLeading) leadingZeros--; // single 0 is allowed\r\n if (ch === '.') {\r\n string += '.';\r\n while (next() && ch >= '0' && ch <= '9')\r\n string += ch;\r\n }\r\n if (ch === 'e' || ch === 'E') {\r\n string += ch;\r\n next();\r\n if (ch === '-' || ch === '+') {\r\n string += ch;\r\n next();\r\n }\r\n while (ch >= '0' && ch <= '9') {\r\n string += ch;\r\n next();\r\n }\r\n }\r\n \r\n // skip white/to (newline)\r\n while (ch && ch <= ' ') next();\r\n \r\n if (stopAtNext) {\r\n // end scan if we find a punctuator character like ,}] or a comment\r\n if (ch === ',' || ch === '}' || ch === ']' ||\r\n ch === '#' || ch === '/' && (text[at] === '/' || text[at] === '*')) ch = 0;\r\n }\r\n \r\n number = +string;\r\n if (ch || leadingZeros || !isFinite(number)) return undefined;\r\n else return number;\r\n }\r\n \r\n function errorClosingHint(value) {\r\n function search(value, ch) {\r\n var i, k, length, res;\r\n switch (typeof value) {\r\n case 'string':\r\n if (value.indexOf(ch) >= 0) res = value;\r\n break;\r\n case 'object':\r\n if (Object.prototype.toString.apply(value) === '[object Array]') {\r\n for (i = 0, length = value.length; i < length; i++) {\r\n res=search(value[i], ch) || res;\r\n }\r\n } else {\r\n for (k in value) {\r\n if (!Object.prototype.hasOwnProperty.call(value, k)) continue;\r\n res=search(value[k], ch) || res;\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n \r\n function report(ch) {\r\n var possibleErr=search(value, ch);\r\n if (possibleErr) {\r\n return \"found '\"+ch+\"' in a string value, your mistake could be with:\\n\"+\r\n \" > \"+possibleErr+\"\\n\"+\r\n \" (unquoted strings contain everything up to the next line!)\";\r\n } else return \"\";\r\n }\r\n \r\n return report('}') || report(']');\r\n }\r\n\r\n function array() {\r\n // Parse an array value.\r\n // assuming ch === '['\r\n \r\n var array = [];\r\n try {\r\n next();\r\n white();\r\n if (ch === ']') {\r\n next();\r\n return array; // empty array\r\n }\r\n \r\n while (ch) {\r\n array.push(value());\r\n white();\r\n // in Hjson the comma is optional and trailing commas are allowed\r\n // note that we do not keep comments before the , if there are any\r\n if (ch === ',') { next(); white(); }\r\n if (ch === ']') {\r\n next();\r\n return array;\r\n }\r\n white();\r\n }\r\n \r\n error(\"End of input while parsing an array (missing ']')\");\r\n } catch (e) {\r\n e.hint=e.hint||errorClosingHint(array);\r\n throw e;\r\n }\r\n }\r\n\r\n function object(withoutBraces) {\r\n // Parse an object value.\r\n \r\n var key = \"\", object = {};\r\n \r\n try {\r\n if (!withoutBraces) {\r\n // assuming ch === '{'\r\n next();\r\n }\r\n\r\n white();\r\n if (ch === '}' && !withoutBraces) {\r\n next();\r\n return object; // empty object\r\n }\r\n while (ch) {\r\n key = keyname();\r\n white();\r\n if (ch !== ':') error(\"Expected ':' instead of '\" + ch + \"'\");\r\n next();\r\n // duplicate keys overwrite the previous value\r\n object[key] = value();\r\n white();\r\n // in Hjson the comma is optional and trailing commas are allowed\r\n // note that we do not keep comments before the , if there are any\r\n if (ch === ',') { next(); white(); }\r\n if (ch === '}' && !withoutBraces) {\r\n next();\r\n return object;\r\n }\r\n white();\r\n }\r\n \r\n if (withoutBraces) return object;\r\n else error(\"End of input while parsing an object (missing '}')\");\r\n } catch (e) {\r\n e.hint=e.hint||errorClosingHint(object);\r\n throw e;\r\n }\r\n }\r\n\r\n function value() {\r\n // Parse a Hjson value. It could be an object, an array, a string, a number or a word.\r\n \r\n white();\r\n switch (ch) {\r\n case '{': return object();\r\n case '[': return array();\r\n case \"'\":\r\n case '\"': return string(true);\r\n default: return tfnns();\r\n }\r\n }\r\n\r\n function checkTrailing(v) {\r\n white();\r\n if (ch) error(\"Syntax error, found trailing characters\");\r\n return v;\r\n }\r\n\r\n function rootValue() {\r\n white();\r\n switch (ch) {\r\n case '{': return checkTrailing(object());\r\n case '[': return checkTrailing(array());\r\n default: return checkTrailing(value());\r\n }\r\n }\r\n\r\n if (typeof source!==\"string\") throw new Error(\"source is not a string\");\r\n text = source;\r\n resetAt();\r\n return rootValue();\r\n };\r\n}","dmx.Flow = dmx.createClass({\r\n\r\n constructor: function(parent) {\r\n if (!(this instanceof dmx.Flow)) {\r\n return new dmx.Flow(parent);\r\n }\r\n\r\n if (!window.Promise) {\r\n console.warn('Promises are not supported, flows can not be used');\r\n }\r\n\r\n this._execStep = this._execStep.bind(this);\r\n\r\n this.scope = new dmx.DataScope({}, parent);\r\n this.output = {};\r\n },\r\n\r\n run: function(flow) {\r\n var self = this;\r\n\r\n this.output = {};\r\n\r\n return this._exec(flow.exec || flow).then(function() {\r\n if (dmx.debug) {\r\n console.debug('finished', self.output);\r\n }\r\n return self.output;\r\n });\r\n },\r\n\r\n _each: function(arr, fn) {\r\n return Promise.resolve(arr).then(function(arr) {\r\n arr = Array.isArray(arr) ? arr : [arr];\r\n\r\n return arr.reduce(function(prev, curr, i) {\r\n return prev.then(function() {\r\n return fn(curr, i, arr.length).then(function(result) {\r\n if (result) {\r\n arr[i] = result;\r\n }\r\n });\r\n });\r\n }, Promise.resolve()).then(function() {\r\n return arr;\r\n });\r\n });\r\n },\r\n\r\n _exec: function(flow) {\r\n var self = this;\r\n\r\n if (flow.steps) {\r\n var promise = this._each(flow.steps, this._execStep);\r\n \r\n if (flow.catch) {\r\n promise.catch(function(err) {\r\n return self._each(flow.catch, self._execStep);\r\n });\r\n }\r\n \r\n return promise;\r\n }\r\n\r\n return this._each(flow, this._execStep);\r\n },\r\n\r\n _execStep: function(step) {\r\n var self = this;\r\n\r\n if (dmx.debug) {\r\n console.debug('exec step', step);\r\n }\r\n\r\n for (var name in step) {\r\n if (dmx.__actions[name]) {\r\n var action = dmx.__actions[name].bind(this);\r\n var options = step[name];\r\n\r\n if (dmx.debug) {\r\n console.debug('exec action', name, options);\r\n }\r\n\r\n if (options.disabled) {\r\n return Promise.resolve();\r\n }\r\n \r\n return Promise.resolve(action(options)).then(function(output) {\r\n if (options.name) {\r\n //self.data[options.name] = output\r\n if (dmx.debug) {\r\n console.debug('set data', options.name, output);\r\n }\r\n \r\n self.scope.set(options.name, output);\r\n\r\n if (options.output) {\r\n if (dmx.debug) {\r\n console.debug('set output', options.name, output);\r\n }\r\n self.output[options.name] = output;\r\n }\r\n }\r\n });\r\n } else {\r\n throw new Error('Action ' + name + ' was not found.');\r\n }\r\n }\r\n },\r\n\r\n parse: function(value) {\r\n if (value == null) return value;\r\n\r\n value = value.valueOf();\r\n\r\n if (typeof value == 'object') {\r\n var obj = value.slice ? [] : {};\r\n\r\n for (var key in value) {\r\n obj[key] = this.parse(value[key], this.scope);\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n if (typeof value == 'string' && value.indexOf('{{') != -1) {\r\n return dmx.parse(value, this.scope);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n});\r\n\r\ndmx.Flow.run = function(flow, data) {\r\n var instance = new dmx.Flow(data);\r\n return instance.run(flow);\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, { end: false });\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(direct) {\r\n if (direct) {\r\n this._submit();\r\n } else {\r\n this.submit();\r\n }\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 if (window.grecaptcha && this.$node.querySelector('.g-recaptcha')) {\r\n grecaptcha.reset();\r\n }\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 focused: 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.$node.addEventListener('focus', this.updateData.bind(this));\r\n this.$node.addEventListener('blur', 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 (!dmx.equal(props.value, this.props.value)) {\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 && this.$node.dirty) {\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 this.set('focused', this.$node === document.activeElement);\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 && this.$node.dirty) {\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 }\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.$node.defaultChecked = 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 this.$node.defaultChecked = 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 if (event) this.dispatchEvent('changed');\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 (!dmx.equal(this.data.value, values[0])) {\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 this.updated();\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.$node.defaultChecked = 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 this.$node.defaultChecked = 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 if (event) this.dispatchEvent('changed');\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 (!dmx.equal(props.value, this.props.value)) {\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 (!dmx.equal(this.data.value, value)) {\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 this.updated();\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 selectedValue: '',\r\n selectedText: ''\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.$node.addEventListener('focus', this.updateData.bind(this));\r\n this.$node.addEventListener('blur', this.updateData.bind(this));\r\n this.renderOptions();\r\n },\r\n\r\n update: function(props) {\r\n if (!dmx.equal(props.options, this.props.options)) {\r\n this.renderOptions();\r\n this.updateValue = true;\r\n }\r\n\r\n if (!dmx.equal(props.value, 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 var selectedIndex = this.$node.selectedIndex;\r\n this.set('selectedIndex', selectedIndex);\r\n this.set('selectedValue', this.$node.options[selectedIndex] && this.$node.options[selectedIndex].value || '');\r\n this.set('selectedText', this.$node.options[selectedIndex] && this.$node.options[selectedIndex].text || '');\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, this));\r\n node.innerText = dmx.parse(this.props.optionText, dmx.DataScope(option, this));\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: null\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 (!dmx.equal(props.options, this.props.options)) {\r\n this.renderOptions();\r\n this.updateValue = true;\r\n }\r\n\r\n if (!dmx.equal(props.value, 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 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 (!dmx.equal(this.data.value, 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('focused', this.$node === document.activeElement);\r\n this.set('validationMessage', this.$node.validationMessage);\r\n \r\n var selectedIndex = this.$node.selectedIndex;\r\n this.set('selectedIndex', selectedIndex);\r\n this.set('selectedValue', this.$node.options[selectedIndex] && this.$node.options[selectedIndex].value || '');\r\n this.set('selectedText', this.$node.options[selectedIndex] && this.$node.options[selectedIndex].text || '');\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 (!dmx.equal(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 rerender: {\r\n type: Boolean,\r\n default: false\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 (!dmx.equal(props.repeat, this.props.repeat)) {\r\n //if (JSON.stringify(props.repeat) != JSON.stringify(this.props.repeat)) {\r\n this.dispatchEvent('update');\r\n\r\n if (this.props.rerender || 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.rerender && 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 this.set('items', this.children.map(function(child) { return child.data }));\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.prevItems = [];\r\n this.childKeys = {};\r\n this.children.splice(0).forEach(function(child) {\r\n child.$destroy();\r\n });\r\n // remove any other html that was in the repeater\r\n this.$node.innerHTML = '';\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 dmx.clone(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 = dmx.clone(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 credentials: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n methods: {\r\n abort: function() {\r\n this.abort();\r\n },\r\n\r\n 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 reset: function() {\r\n this.abort();\r\n this._reset();\r\n this.set('data', null);\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 || !dmx.equal(props.params, this.props.params)) {\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 var value = options.params[key];\r\n if (typeof value == 'string' && value.startsWith('{{')) {\r\n value = dmx.parse(value, this);\r\n }\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(value);\r\n }, this).join('&');\r\n\r\n this._url = options.url + qs;\r\n\r\n if (window.WebviewProxy) { // Cordova webview proxy plugin\r\n this._url = window.WebviewProxy.convertProxyUrl(this._url);\r\n }\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 this.xhr.setRequestHeader('accept', 'application/json');\r\n if (this.props.credentials) {\r\n this.xhr.withCredentials = true;\r\n }\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\r\n extends: 'fetch',\r\n\r\n attributes: {\r\n sockets: {\r\n type: Boolean,\r\n default: false\r\n } \r\n },\r\n\r\n render: function(node) {\r\n if (this.props.sockets) {\r\n this.eventName = this.props.url.replace(/^(.*?)api\\//, '');\r\n this.socket = dmx.Socket('/api');\r\n this.socket.on(this.eventName, this.refresh.bind(this));\r\n this.update({});\r\n } else {\r\n dmx.Component('fetch').prototype.render.call(this, node);\r\n }\r\n },\r\n\r\n fetch: function(options) {\r\n if (this.props.sockets) {\r\n this.refresh(options && options.params);\r\n } else {\r\n dmx.Component('fetch').prototype.fetch.call(this, options);\r\n }\r\n },\r\n\r\n refresh: function(params) {\r\n params = dmx.extend(true, {}, this.props.params, params || {});\r\n\r\n this.dispatchEvent('start');\r\n\r\n this.set('state', {\r\n executing: true,\r\n uploading: false,\r\n processing: true,\r\n downloading: false\r\n });\r\n \r\n this.socket.emit(this.eventName, params, function(res) {\r\n this.set('status', res.status);\r\n this.set('data', res.data);\r\n this.set('state', {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false\r\n });\r\n\r\n if (res.status < 400) {\r\n this.dispatchEvent('success');\r\n } else if (res.status == 400) {\r\n this.dispatchEvent('invalid');\r\n } else if (res.status == 401) {\r\n this.dispatchEvent('unauthorized');\r\n } else if (res.status == 403) {\r\n this.dispatchEvent('forbidden');\r\n } else {\r\n this.dispatchEvent('error');\r\n }\r\n\r\n this.dispatchEvent('done');\r\n }.bind(this));\r\n }\r\n\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 credentials: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n methods: {\r\n abort: function() {\r\n this.abort();\r\n },\r\n\r\n reset: function(clearData) {\r\n this.reset();\r\n if (clearData) {\r\n this.abort();\r\n this._reset();\r\n this.set('data', null);\r\n }\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 var checkValidity = node.checkValidity;\r\n\r\n node.dmxExtraData = {};\r\n node.dmxExtraElements = [];\r\n node.checkValidity = function() {\r\n for (var i = 0; i < node.dmxExtraElements.length; i++) {\r\n if (node.dmxExtraElements[i].validate) {\r\n node.dmxExtraElements[i].validate();\r\n }\r\n }\r\n\r\n return checkValidity.call(node);\r\n };\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 var value = this.props.params[key];\r\n if (typeof value == 'string' && value.startsWith('{{')) {\r\n value = dmx.parse(value, this);\r\n }\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(value);\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.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 url = action;\r\n\r\n if (qs) {\r\n url += (url.indexOf('?') > -1 ? '&' : '?') + qs;\r\n }\r\n\r\n if (window.WebviewProxy) { // Cordova webview proxy plugin\r\n url = window.WebviewProxy.convertProxyUrl(url);\r\n }\r\n\r\n this.xhr.open(method, url);\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 this.xhr.setRequestHeader('accept', 'application/json');\r\n if (this.props.credentials) {\r\n this.xhr.withCredentials = true;\r\n }\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 (dmx.validateReset) {\r\n dmx.validateReset(this.$node);\r\n }\r\n \r\n if (window.grecaptcha && this.$node.querySelector('.g-recaptcha')) {\r\n grecaptcha.reset();\r\n }\r\n \r\n if (this.xhr.status < 400) {\r\n this.set('data', response);\r\n this.dispatchEvent('success');\r\n } else {\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 (response.form) {\r\n for (var name in response.form) {\r\n var element = this.$node.querySelector('[name=\"' + name + '\"]');\r\n if (element) {\r\n element.setCustomValidity(response.form[name]);\r\n \r\n dmx.requestUpdate();\r\n \r\n if (dmx.bootstrap5forms) {\r\n dmx.validate.setBootstrap5Message(element, response.form[name]);\r\n } else if (dmx.bootstrap4forms) {\r\n dmx.validate.setBootstrap4Message(element, response.form[name]);\r\n } else 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 events: {\r\n show: Event,\r\n hide: Event\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 dmx.requestUpdate();\r\n dmx.nextTick(function() {\r\n this.dispatchEvent('show');\r\n }, this);\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 dmx.nextTick(function() {\r\n this.dispatchEvent('hide');\r\n }, this);\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 if (!dmx.equal(props.items, 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 (!dmx.equal(this.data.items, 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.Component('group', { render: function(node) { this.$parse(); } });","dmx.Component('flow', {\r\n\r\n initialData: {\r\n $param: null,\r\n data: null,\r\n running: false,\r\n lastError: null\r\n },\r\n\r\n attributes: {\r\n src: {\r\n type: String,\r\n default: null\r\n },\r\n\r\n preload: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n autorun: {\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\r\n methods: {\r\n run: function(param, throwError) {\r\n return this.run(param, throwError);\r\n },\r\n\r\n runSub: function(param) {\r\n return this.runSub(param);\r\n }\r\n },\r\n\r\n events: {\r\n start: Event,\r\n done: Event,\r\n error: Event\r\n },\r\n\r\n $parseAttributes: function(node) {\r\n dmx.BaseComponent.prototype.$parseAttributes.call(this, node);\r\n dmx.dom.getAttributes(node).forEach(function(attr) {\r\n if (attr.name == 'param' && attr.argument) {\r\n this.$addBinding(attr.value, function(value) {\r\n this.props.params[attr.argument] = value;\r\n });\r\n }\r\n }, this);\r\n },\r\n\r\n render: function(node) {\r\n if (this.props.src) {\r\n if (this.props.preload || this.props.autorun) {\r\n this.load(this.props.src);\r\n }\r\n } else {\r\n try {\r\n this.flow = (window.Hjson ? Hjson : JSON).parse(node.textContent);\r\n if (this.props.autorun) {\r\n this.run();\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n if (dmx.debug) {\r\n console.debug(node.textContent);\r\n }\r\n }\r\n }\r\n },\r\n\r\n update: function(props) {\r\n // nothing dynamic\r\n },\r\n\r\n load: function(uri) {\r\n var self = this;\r\n\r\n return new Promise(function(resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onload = function() {\r\n try {\r\n self.flow = (window.Hjson ? Hjson : JSON).parse(xhr.responseText);\r\n if (self.props.autorun) {\r\n self.run();\r\n }\r\n resolve();\r\n } catch (e) {\r\n console.error(e);\r\n if (dmx.debug) {\r\n console.debug(xhr.responseText);\r\n }\r\n reject(e);\r\n }\r\n }\r\n xhr.onabort = reject;\r\n xhr.onerror = reject;\r\n xhr.ontimeout = reject;\r\n xhr.open('GET', uri);\r\n xhr.send();\r\n });\r\n },\r\n\r\n runSub: function(param) {\r\n var self = this;\r\n\r\n if (!this.flow) {\r\n if (this.props.src) {\r\n return this.load(this.props.src).then(function() {\r\n return dmx.Flow.run(self.flow, self);\r\n });\r\n }\r\n\r\n throw new Error('No flow');\r\n }\r\n\r\n return dmx.Flow.run(this.flow, this);\r\n },\r\n\r\n run: function(param, throwError) {\r\n var self = this;\r\n\r\n if (this.flow) {\r\n if (this.data.running) {\r\n console.info('Flow ' + this.name + ' is already running.');\r\n return;\r\n }\r\n\r\n this.set('running', true);\r\n this.set('log', {});\r\n this.set('$param', Object.assign({}, this.props.params, param));\r\n this.set('lastError', null);\r\n\r\n this.dispatchEvent('start');\r\n\r\n return dmx.Flow.run(this.flow, this).then(function(data) {\r\n self.set('running', false);\r\n self.set('data', data);\r\n self.dispatchEvent('done');\r\n if (dmx.debug) {\r\n console.debug('done', data);\r\n }\r\n return data;\r\n }).catch(function(err) {\r\n self.set('running', false);\r\n self.set('lastError', err && err.message);\r\n self.dispatchEvent('error');\r\n //if (dmx.debug) {\r\n // show error debug by default\r\n console.error(err);\r\n //}\r\n if (throwError) {\r\n throw err;\r\n }\r\n });\r\n } else if (this.props.src) {\r\n return this.load(this.props.src).then(function() {\r\n return self.run(param, throwError);\r\n });\r\n }\r\n }\r\n\r\n});\r\n","dmx.Component('toggle', {\r\n\r\n initialData: {\r\n checked: false\r\n },\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 check: function() {\r\n if (!this.data.checked) {\r\n this.set('checked', true);\r\n this.isUpdated();\r\n }\r\n },\r\n\r\n uncheck: function() {\r\n if (this.data.checked) {\r\n this.set('checked', false);\r\n this.isUpdated();\r\n }\r\n },\r\n\r\n toggle: function() {\r\n this.set('checked', !this.data.checked);\r\n this.isUpdated();\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('checked', this.props.checked);\r\n },\r\n\r\n update: function(props) {\r\n if (props.checked != this.props.checked) {\r\n this.set('checked', this.props.checked);\r\n this.isUpdated();\r\n }\r\n },\r\n\r\n isUpdated: function() {\r\n dmx.nextTick(function() {\r\n this.dispatchEvent('updated');\r\n }, this);\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 if (event.originalEvent) {\r\n event = event.originalEvent;\r\n }\r\n\r\n var returnValue = dmx.parse(attr.value, dmx.DataScope({\r\n $event: event.$data,\r\n $originalEvent: event\r\n }, self));\r\n\r\n if (typeof returnValue == 'string') {\r\n try {\r\n returnValue = (new Function('event', returnValue)).call(this, event);\r\n } catch(e) {\r\n console.warn('Error executing \"' + returnValue + '\"', e);\r\n }\r\n }\r\n\r\n return returnValue;\r\n }, attr.modifiers);\r\n});\r\n","dmx.Attribute('repeat', 'before', function(node, attr) {\r\n if (this.node != node) {\r\n var component = this;\r\n var prevCount = 0;\r\n var children = [];\r\n var template = document.createDocumentFragment();\r\n var placeholder = document.createComment('Repeat ' + attr.value);\r\n var RepeatItem = dmx.Component('repeat-item');\r\n var name = attr.argument || 'repeat';\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 component.set(name, []);\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 component.set(name, children.map(function(child) { return child.data }));\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 if (value != oldValue) {\r\n node.classList[value ? 'add' : 'remove'](className);\r\n }\r\n });\r\n});\r\n","dmx.Attribute('hide', 'mounted', function(node, attr) {\r\n var orgValue = node.style.getPropertyValue('display');\r\n var orgPriority = node.style.getPropertyPriority('display');\r\n\r\n this.$addBinding(attr.value, function(value) {\r\n if (value) {\r\n node.style.setProperty('display', 'none', 'important');\r\n } else {\r\n node.style.setProperty('display', orgValue, orgPriority);\r\n }\r\n });\r\n});\r\n","dmx.Attribute('show', 'mounted', function(node, attr) {\r\n var orgValue = node.style.getPropertyValue('display');\r\n var orgPriority = node.style.getPropertyPriority('display');\r\n\r\n this.$addBinding(attr.value, function(value) {\r\n if (!value) {\r\n node.style.setProperty('display', 'none', 'important');\r\n } else {\r\n node.style.setProperty('display', orgValue, orgPriority);\r\n }\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 } else {\r\n node.innerHTML = '';\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 } else {\r\n node.innerText = '';\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 // run(flow:Any, param:Any):Undefined\r\n run: function(flow, param) {\r\n var scope = dmx.DataScope({\r\n $param: param\r\n }, this);\r\n\r\n dmx.Flow.run(flow, scope);\r\n }\r\n\r\n});\r\n","dmx.Actions({\r\n\r\n 'subflow': function(options) {\r\n var subflow = this.parse(options.flow);\r\n var param = this.parse(options.param);\r\n \r\n return this.parse(subflow + '.runSub(' + JSON.stringify(param) + ')');\r\n },\r\n\r\n 'comment': function(options) {\r\n if (dmx.debug) {\r\n console.debug(options.message);\r\n }\r\n },\r\n\r\n 'wait': function(options) {\r\n var delay = this.parse(options.delay);\r\n\r\n if (typeof delay != 'number') {\r\n throw new Error('wait: Invalid delay');\r\n }\r\n\r\n return new Promise(function(resolve) {\r\n setTimeout(resolve, delay);\r\n });\r\n },\r\n\r\n 'now': function(options) {\r\n return (new Date()).toISOString();\r\n },\r\n\r\n 'random': function(options) {\r\n var lower = this.parse(options.lower);\r\n var upper = this.parse(options.upper);\r\n var floating = !!this.parse(options.floating);\r\n\r\n if (typeof lower != 'number' || !isFinite(lower)) {\r\n lower = 0;\r\n }\r\n\r\n if (typeof upper != 'number' || !isFinite(upper)) {\r\n upper = 1;\r\n }\r\n\r\n var rnd = lower + (Math.random() * (upper - lower));\r\n\r\n if (!floating && Math.floor(lower) == lower && Math.floor(upper) == upper) {\r\n rnd = Math.round(rnd);\r\n }\r\n\r\n return rnd;\r\n },\r\n\r\n 'confirm': function(options) {\r\n var message = this.parse(options.message);\r\n\r\n if (typeof message != 'string') {\r\n throw new Error('confirm: Invalid message');\r\n }\r\n\r\n var result = confirm(message);\r\n\r\n if (result) {\r\n if (options.then) {\r\n return this._exec(options.then).then(function() {\r\n return result;\r\n });\r\n }\r\n } else if (options.else) {\r\n return this._exec(options.else).then(function() {\r\n return result;\r\n });\r\n }\r\n\r\n return result;\r\n },\r\n\r\n 'prompt': function(options) {\r\n var message = this.parse(options.message);\r\n\r\n if (typeof message != 'string') {\r\n throw new Error('prompt: Invalid message');\r\n }\r\n\r\n return prompt(message);\r\n },\r\n\r\n 'alert': function(options) {\r\n var message = this.parse(options.message);\r\n\r\n if (typeof message != 'string') {\r\n throw new Error('alert: Invalid message');\r\n }\r\n\r\n return alert(message);\r\n },\r\n\r\n 'repeat': function(options) {\r\n var items = dmx.clone(this.parse(options.repeat));\r\n\r\n if (!items) return;\r\n\r\n if (typeof items == 'boolean') {\r\n items = items ? [0] : [];\r\n } else if (typeof items == 'string') {\r\n items = items.split(/\\s*,\\s*/);\r\n } else if (typeof items == 'number') {\r\n var arr = [];\r\n for (var i = 0; i < items; i++) {\r\n arr.push(i + 1);\r\n }\r\n items = arr;\r\n }\r\n\r\n if (typeof items != 'object') {\r\n throw new Error('repeat: data is not repeatable');\r\n }\r\n\r\n var self = this;\r\n var parentScope = this.scope;\r\n var parentOutput = this.output;\r\n return this._each(items, function(value, index) {\r\n self.scope = new dmx.DataScope(Object.assign({\r\n $value: value,\r\n $index: index,\r\n $name: index,\r\n $key: index,\r\n $number: index + 1,\r\n $oddeven: index % 2\r\n }, value), parentScope);\r\n\r\n self.output = {};\r\n\r\n if (Array.isArray(options.outputFields) && value instanceof Object) {\r\n options.outputFields.forEach(function(field) {\r\n self.output[field] = value[field];\r\n });\r\n }\r\n\r\n return self._exec(options.exec).then(function() {\r\n var output = self.output;\r\n self.scope = parentScope;\r\n self.output = parentOutput;\r\n return output\r\n });\r\n });\r\n },\r\n\r\n 'condition': function(options) {\r\n var result = !!this.parse(options.if);\r\n\r\n if (result) {\r\n if (options.then) {\r\n return this._exec(options.then).then(function() {\r\n return result;\r\n });\r\n }\r\n } else if (options.else) {\r\n return this._exec(options.else).then(function() {\r\n return result;\r\n });\r\n }\r\n\r\n return result;\r\n },\r\n\r\n 'conditions': function(options) {\r\n if (Array.isArray(options.conditions)) {\r\n for (var i = 0; i < options.conditions.length; i++) {\r\n var condition = options.conditions[i];\r\n\r\n if (this.parse(condition.when)) {\r\n return this._exec(condition.then);\r\n }\r\n }\r\n }\r\n },\r\n\r\n 'select': function(options) {\r\n var expression = this.parse(options.expression);\r\n\r\n if (Array.isArray(options.cases)) {\r\n for (var i = 0; i < options.cases.length; i++) {\r\n var item = options.cases[i];\r\n\r\n if (this.parse(item.value) == expression) {\r\n return this._exec(item.exec);\r\n }\r\n }\r\n }\r\n },\r\n\r\n 'group': function(options) {\r\n if (options.name) {\r\n var self = this;\r\n var parentOutput = this.output;\r\n this.output = {};\r\n\r\n return this._exec(options.exec).then(function() {\r\n var output = self.output;\r\n self.output = parentOutput;\r\n return output;\r\n });\r\n }\r\n \r\n return this._exec(options.exec)\r\n },\r\n\r\n 'while': function(options) {\r\n var self = this;\r\n var loop = function() {\r\n return new Promise(function(resolve) {\r\n if (!self.parse(options.condition)) return resolve();\r\n self._exec(options.exec).then(loop).then(resolve);\r\n });\r\n };\r\n\r\n return loop();\r\n },\r\n\r\n 'switch': function(options) {\r\n /*\r\n {\r\n switch: {\r\n expression: \"{{myVar}}\",\r\n cases: [\r\n { case: 1, exec: { console.log: { message: \"Case 1\" }}}\r\n { case: 2, exec: { console.log: { message: \"Case 2\" }}}\r\n { case: 3, exec: { console.log: { message: \"Case 3\" }}}\r\n ],\r\n default: { console.log: { message: \"Default Case\" }}\r\n }\r\n }\r\n */\r\n var expression = this.parse(options.expression);\r\n for (var i = 0; i < options.cases.length; i++) {\r\n if (this.parse(options.cases[i].case) === expression) {\r\n return this._exec(options.cases[i].exec);\r\n }\r\n }\r\n if (options.default) {\r\n return this._exec(options.default);\r\n }\r\n },\r\n\r\n 'tryCatch': function(options) {\r\n var self = this;\r\n return Promise.resolve(self._exec(options.try)).catch(function() {\r\n return self._exec(options.catch);\r\n });\r\n },\r\n\r\n 'run': function(options) {\r\n if (!options.action) {\r\n throw new Error('run: missing action');\r\n }\r\n\r\n return this.parse(options.action);\r\n },\r\n\r\n 'runJS': function(options) {\r\n if (!options.function) {\r\n throw new Error('runJS: missing function');\r\n }\r\n\r\n var func = this.parse(options.function);\r\n var args = this.parse(options.args);\r\n\r\n return window[func].apply(null, args);\r\n },\r\n\r\n 'assign': function(options) {\r\n return this.parse(options.value);\r\n },\r\n\r\n 'setGlobal': function(options) {\r\n var key = this.parse(options.key);\r\n var value = this.parse(options.value);\r\n\r\n if (typeof key != 'string') {\r\n throw new Error('setGlobal: key must be a string');\r\n }\r\n\r\n dmx.global.set(key, value);\r\n\r\n return value;\r\n },\r\n\r\n 'setSession': function(options) {\r\n var key = this.parse(options.key);\r\n var value = this.parse(options.value);\r\n\r\n if (typeof key != 'string') {\r\n throw new Error('setSession: key must be a string');\r\n }\r\n\r\n sessionStorage.setItem(key, JSON.stringify(value));\r\n\r\n return value;\r\n },\r\n\r\n 'getSession': function(options) {\r\n var key = this.parse(options.key);\r\n\r\n if (typeof key != 'string') {\r\n throw new Error('getSession: key must be a string');\r\n }\r\n\r\n return JSON.parse(sessionStorage.getItem(key));\r\n },\r\n\r\n 'removeSession': function(options) {\r\n var key = this.parse(options.key);\r\n\r\n if (typeof key != 'string') {\r\n throw new Error('removeSession: key must be a string');\r\n }\r\n\r\n sessionStorage.removeItem(key);\r\n\r\n return true;\r\n },\r\n\r\n 'setStorage': function(options) {\r\n var key = this.parse(options.key);\r\n var value = this.parse(options.value);\r\n\r\n if (typeof key != 'string') {\r\n throw new Error('setStorage: key must be a string');\r\n }\r\n\r\n localStorage.setItem(key, JSON.stringify(value));\r\n\r\n return value;\r\n },\r\n\r\n 'getStorage': function(options) {\r\n var key = this.parse(options.key);\r\n\r\n if (typeof key != 'string') {\r\n throw new Error('getStorage: key must be a string');\r\n }\r\n\r\n return JSON.parse(localStorage.getItem(key));\r\n },\r\n\r\n 'removeStorage': function(options) {\r\n var key = this.parse(options.key);\r\n\r\n if (typeof key != 'string') {\r\n throw new Error('removeStorage: key must be a string');\r\n }\r\n\r\n localStorage.removeItem(key);\r\n\r\n return true;\r\n },\r\n\r\n 'fetch': function(options) {\r\n var url = this.parse(options.url);\r\n var method = this.parse(options.method);\r\n var timeout = this.parse(options.timeout);\r\n var dataType = this.parse(options.dataType);\r\n var data = this.parse(options.data);\r\n var params = this.parse(options.params);\r\n var headers = this.parse(options.headers);\r\n var body = null;\r\n\r\n if (typeof url != 'string') {\r\n throw new Error('fetch: invalid url ' + url);\r\n }\r\n\r\n if (!['GET', 'POST', 'PUT', 'DELETE'].includes(method)) {\r\n //throw new Error('fetch: invalid method ' + method);\r\n method = 'GET';\r\n }\r\n\r\n if (!['auto', 'json', 'text'].includes(dataType)) {\r\n dataType = 'auto';\r\n }\r\n\r\n if (typeof timeout != 'number') {\r\n timeout = 0;\r\n }\r\n\r\n if (typeof params == 'object') {\r\n for (var param in params) {\r\n url += (url.indexOf('?') != -1 ? '&' : '?')\r\n + decodeURIComponent(param) + '=' + decodeURIComponent(params[param]);\r\n }\r\n }\r\n\r\n if (method != 'GET') {\r\n if (dataType == 'text') {\r\n if (!headers['Content-Type']) {\r\n headers['Content-Type'] = 'application/text';\r\n }\r\n body = data.toString();\r\n } else if (dataType == 'json') {\r\n if (!headers['Content-Type']) {\r\n headers['Content-Type'] = 'application/json';\r\n }\r\n data = JSON.stringify(data);\r\n } else {\r\n if (method == 'POST') {\r\n body = new FormData();\r\n\r\n if (typeof data == 'object' && !Array.isArray(data)) {\r\n for (var key in data) {\r\n var value = data[key];\r\n\r\n if (Array.isArray(value)) {\r\n if (!/\\[\\]$/.test(key)) {\r\n key += '[]';\r\n }\r\n for (var i in value) {\r\n body.append(key, value[i]);\r\n }\r\n } else {\r\n body.set(key, value);\r\n }\r\n }\r\n }\r\n } else {\r\n if (!headers['Content-Type']) {\r\n headers['Content-Type'] = 'application/text';\r\n }\r\n data = data.toString();\r\n }\r\n }\r\n }\r\n\r\n return new Promise(function(resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n\r\n xhr.onerror = reject;\r\n xhr.onabort = reject;\r\n xhr.ontimeout = reject;\r\n xhr.onload = function() {\r\n var response = xhr.responseText;\r\n var headers = (function(raw) {\r\n var arr = raw.trim().split(/[\\r\\n]+/);\r\n\r\n return arr.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.toLowerCase()] = value;\r\n\r\n return headers;\r\n }, {});\r\n })(xhr.getAllResponseHeaders());\r\n\r\n if (/^application\\/json/.test(headers['content-type'])) {\r\n response = JSON.parse(response);\r\n }\r\n\r\n resolve({\r\n status: xhr.status,\r\n headers: headers,\r\n data: response\r\n });\r\n }\r\n\r\n xhr.open(method, url);\r\n\r\n xhr.timeout = timeout * 1000;\r\n\r\n for (var header in headers) {\r\n xhr.setRequestHeader(header, headers[header]);\r\n }\r\n\r\n xhr.send(body);\r\n });\r\n }\r\n\r\n});\r\n\r\n// aliasses\r\ndmx.__actions['setValue'] = dmx.__actions['assign'];\r\ndmx.__actions['api'] = dmx.__actions['fetch'];\r\ndmx.__actions['api.send'] = dmx.__actions['fetch'];\r\ndmx.__actions['serverConnect'] = dmx.__actions['fetch'];","dmx.Actions({\r\n /**\r\n * Add new columns to the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {Object.} options.add - Object with column name as key and the value\r\n * @param {boolean} [options.overwrite=false] - Overwrite existing columns\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.addColumns': function(options) {\r\n var collection = this.parse(options.collection);\r\n var add = options.add;\r\n var overwrite = !!this.parse(options.overwrite);\r\n\r\n if (!collection.length) return [];\r\n \r\n var output = [];\r\n \r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = dmx.clone(collection[i]);\r\n\r\n for (var column in add) {\r\n var scope = new dmx.DataScope(row, this.scope);\r\n\r\n if (overwrite || row[column] == null) {\r\n row[column] = dmx.parse(add[column], scope);\r\n }\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Remove entire specified columns from the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {string[]} options.columns - The columns\r\n * @param {boolean} [options.keep=false] - Keep or remove the columns\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.filterColumns': function(options) {\r\n var collection = this.parse(options.collection);\r\n var columns = this.parse(options.columns);\r\n var keep = !!this.parse(options.keep);\r\n\r\n if (!collection.length) return [];\r\n\r\n var output = [];\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = collection[i];\r\n var newRow = {};\r\n\r\n for (var column in row) {\r\n if (columns.includes(column)) {\r\n if (keep) {\r\n newRow[column] = dmx.clone(row[column]);\r\n }\r\n } else if (!keep) {\r\n newRow[column] = dmx.clone(row[column]);\r\n }\r\n }\r\n\r\n output.push(newRow);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Rename columns in the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {Object.} options.rename - Object with old name as key and new name as value\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.renameColumns': function(options) {\r\n var collection = this.parse(options.collection);\r\n var rename = this.parse(options.rename);\r\n\r\n if (!collection.length) return [];\r\n \r\n var output = [];\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = collection[i];\r\n var newRow = {};\r\n\r\n for (var column in row) {\r\n newRow[rename[column] || column] = dmx.clone(row[column]);\r\n }\r\n\r\n output.push(newRow);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Fills empty rows with the row above's value\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {string[]} options.columns - The columns to fill\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.fillDown': function(options) {\r\n var collection = this.parse(options.collection);\r\n var columns = this.parse(options.columns);\r\n\r\n if (!collection.length) return [];\r\n\r\n var output = [];\r\n var toFill = {};\r\n\r\n for (var i = 0, l = columns.length; i < l; i++) {\r\n toFill[columns[i]] = null;\r\n }\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = dmx.clone(collection[i]);\r\n\r\n for (var column in toFill) {\r\n if (row[column] == null) {\r\n row[column] = toFill[column];\r\n } else {\r\n toFill[column] = row[column];\r\n }\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Add new rows to the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {Object[]} options.rows - The rows to add\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.addRows': function(options) {\r\n var collection = this.parse(options.collection);\r\n var rows = this.parse(options.rows);\r\n\r\n return dmx.clone(collection).concat(dmx.clone(rows));\r\n },\r\n\r\n /**\r\n * Add row numbers to the collection\r\n * @param {Object} options \r\n * @param {Object[]} options.collection - The collection\r\n * @param {string} options.column - The name for the column\r\n * @param {number} options.startAt - The row number to start with\r\n * @param {boolean} [options.desc=false] - Order descending\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.addRowNumbers': function(options) {\r\n var collection = this.parse(options.collection);\r\n var column = this.parse(options.column);\r\n var startAt = this.parse(options.startAt);\r\n var desc = !!this.parse(options.desc);\r\n\r\n var output = [];\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = dmx.clone(collection[i]);\r\n row[column] = desc ? l + startAt - i : startAt + i;\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Join two collections (Left join)\r\n * @param {Object} options\r\n * @param {Object[]} options.collection1 - Left collection\r\n * @param {Object[]} options.collection2 - Right collection\r\n * @param {Object.} options.matches - Columns to match\r\n * @param {boolean} [options.matchAll=false] - Match columns using AND instead of OR\r\n * @returns {Object[]} - New collection\r\n */\r\n 'colections.join': function(options) {\r\n var collection1 = this.parse(options.collection1);\r\n var collection2 = this.parse(options.collection2);\r\n var matches = this.parse(options.matches);\r\n var matchAll = !!this.parse(options.matchAll);\r\n\r\n var output = [];\r\n\r\n for (var i = 0, l = collection1.length; i < l; i++) {\r\n var row = dmx.clone(collection1[i]);\r\n\r\n for (var j = 0, l2 = collection2.length; j < l2; j++) {\r\n var row2 = collection2[j];\r\n var hasMatch = false;\r\n\r\n for (var match in matches) {\r\n if (row[match] == row2[matches[match]]) {\r\n hasMatch = true;\r\n if (!matchAll) break;\r\n } else if (matchAll) {\r\n hasMatch = false;\r\n break;\r\n }\r\n }\r\n\r\n if (hasMatch) {\r\n for (var column in row2) {\r\n // TODO duplicate row from collection1 when multiple matches exist in collection2\r\n // TODO check for duplicate column names\r\n row[column] = dmx.clone(row2[column]);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Normalize all rows, add missing columns with NULL value\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.mormalize': function(options) {\r\n var collection = this.parse(options.collection);\r\n\r\n var columns = [];\r\n var output = [];\r\n\r\n // first collect all columns from collection\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n for (var column in collection[i]) {\r\n if (columns.indexOf(column) == -1) {\r\n columns.push(column);\r\n }\r\n }\r\n }\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = {};\r\n\r\n for (var j = 0, l2 = columns.length; j < l2; j++) {\r\n var column = columns[j];\r\n var value = dmx.clone(collection[column]);\r\n row[column] = value != null ? value : null;\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n }\r\n\r\n});","dmx.Actions({\r\n\r\n 'console.log': function(options) {\r\n console.log(this.parse(options.message));\r\n },\r\n\r\n 'console.info': function(options) {\r\n console.info(this.parse(options.message));\r\n },\r\n\r\n 'console.warn': function(options) {\r\n console.warn(this.parse(options.message));\r\n },\r\n\r\n 'console.error': function(options) {\r\n console.error(this.parse(options.message));\r\n },\r\n\r\n 'console.count': function(options) {\r\n console.count(this.parse(options.label));\r\n },\r\n\r\n 'console.time': function(options) {\r\n console.time(this.parse(options.label));\r\n },\r\n\r\n 'console.timeEnd': function(options) {\r\n console.timeEnd(this.parse(options.label));\r\n },\r\n\r\n 'console.group': function(options) {\r\n console.group();\r\n },\r\n\r\n 'console.groupEnd': function(options) {\r\n console.groupEnd();\r\n },\r\n\r\n 'console.clear': function(options) {\r\n console.clear();\r\n }\r\n\r\n});"]}