{"version":3,"sources":["core/polyfills.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","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","__components","__attributes","before","mount","mounted","__formatters","boolean","global","string","number","object","array","__adapters","__actions","config","mapping","form","button, input[type=button], input[type=submit], input[type=reset]","input[type=radio]","input[type=checkbox]","input[type=file][multiple]","input[type=file]","input","textarea","select[multiple]","select",".checkbox-group",".radio-group","reIgnoreElement","rePrefixed","reExpression","reExpressionReplace","reToggleAttribute","reDashAlpha","reUppercase","appConnect","node","cb","app","alert","documentElement","history","replaceState","title","onpopstate","e","state","requestUpdate","onhashchange","App","Component","$update","style","visibility","addEventListener","appNode","querySelector","removeAttribute","console","warn","useHistory","pushState","extend","extended","deep","toString","merge","obj","prop","noop","isset","val","v","equal","a","b","isArray","key","clone","refs","Map","has","c","get","set","filter","push","arr","slice","hashCode","str","JSON","stringify","hash","charCodeAt","randomizer","seed","repeatItems","repeat","items","$key","$index","$value","escapeRegExp","replace","validate","checkValidity","validateReset","setImmediate","nextTick","fn","context","bind","postMessage","queue","event","source","data","task","shift","setTimeout","updateRequested","debounce","delay","timeout","args","clearTimeout","apply","keyCodes","bs","tab","enter","esc","space","left","up","right","down","delete","backspace","pause","capslock","escape","pageup","pagedown","home","arrowleft","arrowup","arrowright","arrowdown","insert","numlock","scrolllock","semicolon","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","keys","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","location","code","Dom7","nodeType","on","capture","jQuery","createClass","proto","parentClass","Cls","constructor","create","Config","tag","extends","BaseComponent","initialData","attributes","methods","events","parent","type","Attribute","name","hook","Formatters","Formatter","Adapter","Actions","actions","Action","action","$","selector","addClass","className","classList","add","removeClass","remove","toggleClass","toggle","hasClass","contains","attr","attrs","getAttribute","setAttribute","removeAttr","props","css","getComputedStyle","getPropertyValue","setProperty","each","callback","append","children","j","appendChild","appendTo","detach","parentNode","removeChild","empty","innerHTML","dom","id","getElementById","query","tagName","elem","createElement","walk","hasChildNodes","childNodes","getAttributes","attribute","specified","test","substr","argument","split","part","fullName","oldNode","newNode","replaceChild","cache","OPERATORS","{","}","(",")","[","]",".",",",";",":","?","+","-","*","/","%","===","!==","==","!=","<",">","<=",">=","in","&&","||","!","&","|","^","~","<<",">>",">>>","ESCAPE","f","r","t","'","\"","`","EXPRESSIONS","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","regexp","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","re","functionCall","objectIndex","func","ctx","argsFn","indexFn","toLowerCase","random","del","DataScope","$node","bindings","propBindings","listeners","dmxDomId","$parseAttributes","$initialData","render","beforeMount","$mount","$customAttributes","dmxComponent","dmxRendered","dispatchEvent","Event","destroy","toUpperCase","$parse","found","__find","__replace","child","$destroy","$type","component","splice","__remove","beforeUpdate","update","updated","beforeDestroy","destroyed","removeEventListener","stack","ComponentEvent","createEvent","initEvent","bubbles","cancelable","defaultPrevented","$addChild","debug","nodeValue","$addBinding","oldValue","map","hasAttribute","isComponent","__WAPPLER__","$updateBindings","binding","callbacks","options","default","Boolean","Number","$propBinding","Function","$event","$originalEvent","method","$placeholder","$destroyChildren","ignoreParents","pathToRegexp","compile","tokensToFunction","tokensToRegExp","DEFAULT_DELIMITER","PATH_REGEXP","join","res","path","defaultDelimiter","delimiter","whitelist","pathEscaped","exec","m","escaped","offset","prev","group","modifier","optional","pattern","prefix","escapeGroup","escapeString","encode","encodeURIComponent","segment","flags","sensitive","strict","endsWith","concat","route","endToken","isEndDelimited","groups","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","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","Date","lastModifiedDate","toISOString","size","dataUrl","reader","FileReader","result","readAsDataURL","innerText","checked","check","defaultChecked","updateValue","values","radio","isDefault","checkbox","selectedIndex","optionText","optionValue","setSelectedIndex","renderOptions","option","selected","defaultSelected","prevItems","childKeys","$template","createDocumentFragment","firstChild","_clear","RepeatItem","nextPos","_clone","aStart","bStart","aEnd","bEnd","outer","_moveChild","_insertChild","_removeChild","aLength","bLength","aNullable","sources","moved","synced","keyIndex","seq","_lis","fragment","cloneNode","$nodes","u","il","insertBefore","fetch","status","links","paging","headers","executing","uploading","processing","downloading","uploadProgress","total","percent","downloadProgress","lastError","message","response","url","params","data-type","noload","ttl","abort","reload","_reset","done","unauthorized","forbidden","success","upload","ProgressEvent","download","xhr","XMLHttpRequest","onabort","onerror","ontimeout","onprogress","qs","_url","now","created","FormData","open","header","setRequestHeader","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","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","d","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","nodeName","returnValue","placeholder","createComment","fast","orgValue","orgPriority","getPropertyPriority","property","important","json","log","subflow","comment","wait","lower","upper","floating","rnd","floor","round","confirm","else","prompt","parentScope","if","while","loop","switch","cases","case","tryCatch","try","runJS","function","setGlobal","setSession","sessionStorage","setItem","getSession","getItem","removeSession","removeItem","setStorage","localStorage","getStorage","removeStorage","dataType","body","collection.addColumns","collection","overwrite","l","row","column","collection.filterColumns","columns","keep","newRow","collection.renameColumns","rename","collection.fillDown","toFill","collection.addRows","rows","collection.addRowNumbers","startAt","desc","colection.join","collection1","collection2","matchAll","l2","row2","hasMatch","collection.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","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}","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('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.equal = function(a, b) {\r\n if (a === b) return true;\r\n if (a == null || b == null) return false;\r\n if (typeof a !== typeof b) return false;\r\n if (typeof a == 'number' && isNaN(a) && typeof b == 'number' && isNaN(b)) return true;\r\n \r\n if (Array.isArray(a)) {\r\n if (a.length !== b.length) return false;\r\n if (a.length === 0) return true;\r\n for (var i in a) {\r\n if (!dmx.equal(a[i], b[i])) return false;\r\n }\r\n return true;\r\n } else if (typeof a == 'object') {\r\n for (var key in a) {\r\n if (!dmx.equal(a[key], b[key])) return false;\r\n }\r\n\r\n for (var key in b) {\r\n if (!dmx.equal(a[key], b[key])) return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nif ('Map' in window) {\r\n dmx.clone = function(o, refs) {\r\n if (!o) return o;\r\n\r\n if (!refs) refs = new Map();\r\n\r\n if (typeof o == 'object') {\r\n if (refs.has(o)) {\r\n var c = refs.get(o);\r\n if (c > 10) return 'circular reference';\r\n refs.set(o, c + 1);\r\n } else {\r\n refs.set(o, 1);\r\n }\r\n\r\n var clone = Array.isArray(o) ? [] : {};\r\n \r\n for (var key in o) {\r\n if (o.hasOwnProperty(key)) {\r\n clone[key] = dmx.clone(o[key], refs);\r\n }\r\n }\r\n \r\n return clone;\r\n }\r\n\r\n return o;\r\n };\r\n} else {\r\n dmx.clone = function(o, refs) {\r\n if (!o) return o;\r\n\r\n if (!refs) refs = [];\r\n\r\n if (typeof o == 'object') {\r\n if (refs.filter(function(i) { return o === i }).length > 10) return 'circular reference';\r\n\r\n refs.push(o);\r\n\r\n var clone = Array.isArray(o) ? [] : {};\r\n \r\n for (var key in o) {\r\n if (o.hasOwnProperty(key)) {\r\n clone[key] = dmx.clone(o[key], refs);\r\n }\r\n }\r\n \r\n return clone;\r\n }\r\n\r\n return o;\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,\r\n 'keyb': 66,\r\n 'keyc': 67,\r\n 'keyd': 68,\r\n 'keye': 69,\r\n 'keyf': 70,\r\n 'keyg': 71,\r\n 'keyh': 72,\r\n 'keyi': 73,\r\n 'keyj': 74,\r\n 'keyk': 75,\r\n 'keyl': 76,\r\n 'keym': 77,\r\n 'keyn': 78,\r\n 'keyo': 79,\r\n 'keyp': 80,\r\n 'keyq': 81,\r\n 'keyr': 82,\r\n 'keys': 83,\r\n 'keyt': 84,\r\n 'keyu': 85,\r\n 'keyv': 86,\r\n 'keyw': 87,\r\n 'keyx': 88,\r\n 'keyy': 89,\r\n 'keyz': 90\r\n};\r\n\r\ndmx.eventListener = function(target, eventType, handler, modifiers) {\r\n var timeout, listener = function(event) {\r\n if (modifiers.self && event.target !== event.currentTarget) return;\r\n if (modifiers.ctrl && !event.ctrlKey) return;\r\n if (modifiers.alt && !event.altKey) return;\r\n if (modifiers.shift && !event.shiftKey) return;\r\n if (modifiers.meta && !event.metaKey) return;\r\n\r\n if ((event.originalEvent || event).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 (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, 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, 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 var OPERATORS = {\r\n '{': 'L_CURLY',\r\n '}': 'R_CURLY',\r\n '(': 'L_PAREN',\r\n ')': 'R_PAREN',\r\n '[': 'L_BRACKET',\r\n ']': 'R_BRACKET',\r\n '.': 'PERIOD',\r\n ',': 'COMMA',\r\n ';': 'SEMI', // Multiple statements are not supported\r\n ':': 'COLON',\r\n '?': 'QUESTION',\r\n // Arithmetic operators\r\n '+': 'ADDICTIVE',\r\n '-': 'ADDICTIVE',\r\n '*': 'MULTIPLICATIVE',\r\n '/': 'MULTIPLICATIVE',\r\n '%': 'MULTIPLICATIVE',\r\n // Comparison operators\r\n '===': 'EQUALITY',\r\n '!==': 'EQUALITY',\r\n '==': 'EQUALITY',\r\n '!=': 'EQUALITY',\r\n '<': 'RELATIONAL',\r\n '>': 'RELATIONAL',\r\n '<=': 'RELATIONAL',\r\n '>=': 'RELATIONAL',\r\n 'in': 'RELATIONAL',\r\n // Logical operators\r\n '&&': 'LOGICAL_AND',\r\n '||': 'LOGICAL_OR',\r\n '!': 'LOGICAL_NOT',\r\n // Bitwise operators\r\n '&': 'BITWISE_AND',\r\n '|': 'BITWISE_OR',\r\n '^': 'BITWISE_XOR',\r\n '~': 'BITWISE_NOT',\r\n '<<': 'BITWISE_SHIFT',\r\n '>>': 'BITWISE_SHIFT',\r\n '>>>': 'BITWISE_SHIFT'\r\n };\r\n\r\n var ESCAPE = {\r\n 'n': '\\n',\r\n 'f': '\\f',\r\n 'r': '\\r',\r\n 't': '\\t',\r\n 'v': '\\v',\r\n \"'\": \"'\",\r\n '\"': '\"',\r\n '`': '`'\r\n };\r\n\r\n var EXPRESSIONS = {\r\n 'in': function(a, b) { return a() in b(); },\r\n '?': function(a, b, c) { return a() ? b() : c(); },\r\n '+': function(a, b) { a = a(); b = b(); return a == null ? b : b == null ? a : a + b; },\r\n '-': function(a, b) { return a() - b(); },\r\n '*': function(a, b) { return a() * b(); },\r\n '/': function(a, b) { return a() / b(); },\r\n '%': function(a, b) { return a() % b(); },\r\n '===': function(a, b) { return a() === b(); },\r\n '!==': function(a, b) { return a() !== b(); },\r\n '==': function(a, b) { return a() == b(); },\r\n '!=': function(a, b) { return a() != b(); },\r\n '<': function(a, b) { return a() < b(); },\r\n '>': function(a, b) { return a() > b(); },\r\n '<=': function(a, b) { return a() <= b(); },\r\n '>=': function(a, b) { return a() >= b(); },\r\n '&&': function(a, b) { return a() && b(); },\r\n '||': function(a, b) { return a() || b(); },\r\n '&': function(a, b) { return a() & b(); },\r\n '|': function(a, b) { return a() | b(); },\r\n '^': function(a, b) { return a() ^ b(); },\r\n '<<': function(a, b) { return a() << b(); },\r\n '>>': function(a, b) { return a() >> b(); },\r\n '>>>': function(a, b) { return a() >>> b(); },\r\n '~': function(a) { return ~a(); },\r\n '!': function(a) { return !a(); }\r\n };\r\n\r\n var RESERVED = {\r\n //'JSON': function() { return function() { return JSON; }},\r\n //'Math': function() { return function() { return Math; }},\r\n 'this': function(scope) { return function() { return scope.data; }; },\r\n //'global': function(scope) { return function() { return scope.global.data; }},\r\n 'undefined': function() { return function() { return undefined; }; },\r\n 'null': function() { return function() { return null; }; },\r\n 'true': function() { return function() { return true; }; },\r\n\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 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\treturn +number;\r\n \t}\r\n\r\n \tfunction readIdent() {\r\n \t\tvar ident = '';\r\n\r\n \t\twhile (index < exp.length) {\r\n \t\t\tch = read();\r\n\r\n \t\t\tif (isAlphaNum(ch)) {\r\n \t\t\t\tident += ch;\r\n \t\t\t}\r\n \t\t\telse {\r\n \t\t\t\tbreak;\r\n \t\t\t}\r\n\r\n \t\t\tindex++;\r\n \t\t}\r\n\r\n \t\treturn ident;\r\n \t}\r\n\r\n \tfunction readRegexp() {\r\n \t\tvar regexp = '', modifiers = '', escape = false;\r\n\r\n \t\tindex++;\r\n\r\n \t\twhile (index < exp.length) {\r\n \t\t\tch = read();\r\n\r\n \t\t\t// was previous an escape character\r\n \t\t\tif (escape) {\r\n \t\t\t\tescape = false;\r\n \t\t\t}\r\n \t\t\telse if (ch == '\\\\') {\r\n \t\t\t\t// escape character\r\n \t\t\t\tescape = true;\r\n \t\t\t}\r\n \t\t\telse if (ch == '/') {\r\n \t\t\t\t// end of regexp\r\n \t\t\t\tindex++;\r\n\r\n \t\t\t\twhile ('ign'.indexOf(ch = read()) != -1) {\r\n \t\t\t\t\tmodifiers += ch;\r\n \t\t\t\t\tindex++;\r\n \t\t\t\t}\r\n\r\n \t\t\t\treturn regexp + '%%%' + modifiers;\r\n \t\t\t}\r\n\r\n \t\t\tregexp += ch;\r\n \t\t\tindex++;\r\n \t\t}\r\n\r\n \t\tthrow Error('Unterminated regexp 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 if (token.name == 'REGEXP') {\r\n \t\t\t\tvalue = function() {\r\n \t\t\t\t\tvar re = token.value.split('%%%');\r\n \t\t\t\t\treturn new RegExp(re[0], re[1]);\r\n \t\t\t\t};\r\n \t\t\t} else {\r\n \t\t\t\tvalue = function() { return token.value; };\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\twhile ((next = expect('L_PAREN') || expect('L_BRACKET') || expect('PERIOD'))) {\r\n \t\t\tif (next.value == '(') {\r\n \t\t\t\tvalue = functionCall(value, context);\r\n \t\t\t} else if (next.value == '[') {\r\n \t\t\t\tcontext = value;\r\n \t\t\t\tvalue = objectIndex(value);\r\n \t\t\t} else if (next.value == '.') {\r\n \t\t\t\tcontext = value;\r\n \t\t\t\tvalue = objectMember(value);\r\n \t\t\t} else {\r\n \t\t\t\tthrow Error('Parse Error 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\treturn o[i];\r\n \t\t};\r\n \t}\r\n\r\n \tfunction objectMember(object) {\r\n \t\tvar token = expect();\r\n\r\n \t\treturn function() {\r\n \t\t\tvar o = object();\r\n\r\n \t\t\t//if (typeof o == 'undefined') return undefined;\r\n\r\n \t\t\tif (token.name == 'METHOD') {\r\n //if (o == null) return o;\r\n var type = typeof o;\r\n //if (Array.isArray(o)) type = 'array';\r\n if (type == 'object') {\r\n type = Object.prototype.toString.call(o).slice(8, -1).toLowerCase();\r\n }\r\n\r\n if (type == 'object' && typeof o['__' + token.value] == 'function') {\r\n return o['__' + token.value];\r\n }\r\n\r\n if (dmx.__formatters[type] && dmx.__formatters[type][token.value]) {\r\n return dmx.__formatters[type][token.value];\r\n }\r\n\r\n \t\t\t\treturn function() {\r\n \t\t\t\t\tif (o != null && console.warn) console.warn('Formatter ' + token.value + ' 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\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 this.$parseAttributes(node);\r\n this.$initialData();\r\n this.render(node);\r\n if (this.beforeMount(node) !== false) {\r\n this.$mount(node);\r\n if (this.$node) {\r\n //this.$customAttributes('mount', this.$node);\r\n this.$customAttributes('mounted', this.$node);\r\n if (this.dmxDomId) {\r\n // Restore dmxDomId for Wappler\r\n this.$node.setAttribute('dmxDomId', this.dmxDomId);\r\n }\r\n this.$node.dmxComponent = this;\r\n this.$node.dmxRendered = true;\r\n }\r\n this.dispatchEvent('mount');\r\n this.mounted();\r\n }\r\n },\r\n\r\n tag: null,\r\n initialData: {},\r\n attributes: {},\r\n methods: {},\r\n events: {\r\n mount: Event,\r\n destroy: Event\r\n },\r\n\r\n render: function(node) {\r\n if (this.tag) {\r\n if (this.tag.toUpperCase() !== this.$node.tagName) {\r\n this.$node = document.createElement(this.tag);\r\n // copy attributes\r\n for (var i = 0; i < node.attributes.length; i++) {\r\n var attr = node.attributes[i];\r\n\r\n if (attr.specified) {\r\n this.$node.setAttribute(attr.name, attr.value);\r\n }\r\n }\r\n this.$node.innerHTML = node.innerHTML;\r\n }\r\n } else {\r\n this.$node = null;\r\n }\r\n\r\n //this.$placeholder = document.createComment(' ' + this.type + '[' + this.name + '] ');\r\n //dmx.dom.replace(node, this.$placeholder);\r\n\r\n if (this.$node) {\r\n this.$parse();\r\n }\r\n },\r\n\r\n // 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 if (this.beforeUpdate() !== false) {\r\n var props = dmx.clone(this.props); //Object.assign({}, this.props);\r\n\r\n this.$updateBindings(this.propBindings);\r\n this.$updateBindings(this.bindings);\r\n\r\n this.update(props);\r\n\r\n this.children.forEach(function(child) {\r\n child.$update();\r\n });\r\n\r\n this.updated();\r\n }\r\n },\r\n\r\n $updateBindings: function(bindings) {\r\n Object.keys(bindings).forEach(function(expression) {\r\n var binding = bindings[expression];\r\n var value = dmx.parse(expression, this);\r\n\r\n //if (JSON.stringify(value) !== JSON.stringify(binding.value)) {\r\n 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);\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) {\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 if (node.tagName === 'INPUT') {\r\n this.$node.innerText = this.props.value;\r\n }\r\n }\r\n\r\n});\r\n","dmx.Component('radio', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n checked: false\r\n },\r\n\r\n tag: 'input',\r\n\r\n attributes: {\r\n checked: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n methods: {\r\n select: function(check) {\r\n this.select(check);\r\n }\r\n },\r\n\r\n render: function(node) {\r\n dmx.Component('form-element').prototype.render.call(this, node);\r\n this.$node.addEventListener('click', this.updateData.bind(this));\r\n this.$node.type = 'radio';\r\n this.$node.checked = this.props.checked;\r\n this.$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 }\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 }\r\n\r\n});\r\n","dmx.Component('select', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n selectedIndex: -1\r\n },\r\n\r\n tag: 'select',\r\n\r\n attributes: {\r\n options: {\r\n type: Array,\r\n default: []\r\n },\r\n optionText: {\r\n type: String,\r\n default: '$value'\r\n },\r\n optionValue: {\r\n type: String,\r\n default: '$value'\r\n }\r\n },\r\n\r\n methods: {\r\n setSelectedIndex: function(index) {\r\n this.$node.selectedIndex = index;\r\n this.updateData();\r\n }\r\n },\r\n\r\n render: function(node) {\r\n this.options = [];\r\n if (!this.props.value) {\r\n this.props.value = this.$node.value;\r\n } else {\r\n this.updateValue = true;\r\n }\r\n dmx.BaseComponent.prototype.render.call(this, node);\r\n this.$node.disabled = this.props.disabled;\r\n this.$node.addEventListener('change', this.updateData.bind(this));\r\n this.$node.addEventListener('invalid', this.updateData.bind(this));\r\n this.$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 (JSON.stringify(props.options) !== JSON.stringify(this.props.options)) {\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 (JSON.stringify(props.value) !== JSON.stringify(this.props.value)) {\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 this.set('selectedIndex', this.$node.selectedIndex);\r\n },\r\n\r\n setValue: function(value, isDefault) {\r\n dmx.array(this.$node.options).forEach(function(option) {\r\n option.selected = (option.value === value);\r\n if (isDefault) option.defaultSelected = option.selected;\r\n });\r\n },\r\n\r\n renderOptions: function() {\r\n this.options.splice(0).forEach(function(node) {\r\n dmx.dom.remove(node);\r\n });\r\n\r\n if (Array.isArray(this.props.options)) {\r\n this.props.options.forEach(function(option) {\r\n if (typeof option != 'object') option = { $value: option };\r\n var node = document.createElement('option');\r\n node.value = dmx.parse(this.props.optionValue, dmx.DataScope(option, 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 //if (JSON.stringify(props.options) !== JSON.stringify(this.props.options)) {\r\n this.renderOptions();\r\n this.updateValue = true;\r\n }\r\n\r\n if (!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 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 //if (JSON.stringify(value) !== JSON.stringify(this.data.value)) {\r\n dmx.nextTick(function() {\r\n this.dispatchEvent('updated');\r\n if (event) this.dispatchEvent('changed');\r\n }, this);\r\n }\r\n\r\n this.set('value', value);\r\n this.set('disabled', this.$node.disabled);\r\n this.set('invalid', !this.$node.validity.valid);\r\n this.set('focused', this.$node === document.activeElement);\r\n this.set('validationMessage', this.$node.validationMessage);\r\n this.set('selectedIndex', this.$node.selectedIndex);\r\n },\r\n\r\n setValue: function(value, isDefault) {\r\n if (!Array.isArray(value)) value = [value];\r\n value = value.map(function(v) { return v.toString(); });\r\n dmx.array(this.$node.options).forEach(function(option) {\r\n option.selected = value.indexOf(option.value) > -1;\r\n if (isDefault) option.defaultSelected = option.selected;\r\n });\r\n }\r\n\r\n});\r\n","dmx.Component('value', {\r\n\r\n initialData: {\r\n value: null\r\n },\r\n\r\n attributes: {\r\n value: {\r\n default: null\r\n }\r\n },\r\n\r\n methods: {\r\n setValue: function(value) {\r\n if (this.data.value !== value) {\r\n this.set('value', value);\r\n dmx.nextTick(function() {\r\n this.dispatchEvent('updated');\r\n }, this);\r\n }\r\n }\r\n },\r\n\r\n events: {\r\n updated: Event\r\n },\r\n\r\n render: function() {\r\n this.set('value', this.props.value);\r\n },\r\n\r\n update: function(props) {\r\n if (!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\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 (props.key !== this.props.key) {\r\n this._clear();\r\n }\r\n\r\n var RepeatItem = dmx.Component('repeat-item');\r\n var repeat = this.props.repeat;\r\n var items = dmx.repeatItems(repeat);\r\n\r\n if (items.length) {\r\n if (this.props.key && items[0].hasOwnProperty(this.props.key) && this.prevItems.length) {\r\n // keyed repeater (https://github.com/localvoid/kivi/blob/master/lib/vnode.ts#L1320-L1513)\r\n var key = this.props.key;\r\n var a = this.prevItems;\r\n var b = this._clone(items);\r\n var aStart = 0;\r\n var bStart = 0;\r\n var aEnd = a.length - 1;\r\n var bEnd = b.length - 1;\r\n var i, j, nextPos;\r\n\r\n outer: while (true) {\r\n // remove same keys from start\r\n while (a[aStart][key] === b[bStart][key]) {\r\n this.childKeys[b[bStart][key]].set(b[bStart]);\r\n aStart++;\r\n bStart++;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break outer;\r\n }\r\n }\r\n\r\n // remove same keys at end\r\n while (a[aEnd][key] === b[bEnd][key]) {\r\n this.childKeys[b[bEnd][key]].set(b[bEnd]);\r\n aEnd--;\r\n bEnd--;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break outer;\r\n }\r\n }\r\n\r\n // move from right to left\r\n if (a[aEnd][key] === b[bStart][key]) {\r\n this.childKeys[b[bStart][key]].set(b[bStart]);\r\n this._moveChild(b[bStart][key], a[aStart][key]);\r\n aEnd--;\r\n bStart++;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break;\r\n }\r\n continue;\r\n }\r\n\r\n // move from left to right\r\n if (a[aStart][key] === b[bEnd][key]) {\r\n nextPos = bEnd + 1;\r\n this.childKeys[b[bEnd][key]].set(b[bEnd]);\r\n this._moveChild(b[bEnd][key], b[nextPos] && b[nextPos][key]);\r\n aStart++;\r\n bEnd--;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break;\r\n }\r\n continue;\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (aStart > aEnd) {\r\n // insert rest from b\r\n nextPos = bEnd + 1;\r\n while (bStart <= bEnd) {\r\n this._insertChild(b[bStart++], b[nextPos] && b[nextPos][key]);\r\n }\r\n } else if (bStart > bEnd) {\r\n // remove rest from a\r\n while (aStart <= aEnd) {\r\n this._removeChild(a[aStart++][key]);\r\n }\r\n } else {\r\n var aLength = aEnd - aStart + 1;\r\n var bLength = bEnd - bStart + 1;\r\n var aNullable = a;\r\n var sources = new Array(bLength).fill(-1);\r\n\r\n var moved = false;\r\n var pos = 0;\r\n var synced = 0;\r\n\r\n if ((bLength <= 4) || ((aLength * bLength) <= 16)) {\r\n for (i = aStart; i <= aEnd; i++) {\r\n if (synced < bLength) {\r\n for (j = bStart; j <= bEnd; j++) {\r\n if (a[i][key] === b[j][key]) {\r\n sources[j - bStart] = i;\r\n\r\n if (pos > j) {\r\n moved = true;\r\n } else {\r\n pos = j;\r\n }\r\n\r\n this.childKeys[b[j][key]].set(b[j]);\r\n\r\n synced++;\r\n aNullable[i] = null;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n var keyIndex = {};\r\n\r\n for (i = bStart; i <= bEnd; i++) {\r\n keyIndex[b[i][key]] = i;\r\n }\r\n\r\n for (i = aStart; i <= aEnd; i++) {\r\n if (synced < bLength) {\r\n j = keyIndex[a[i][key]];\r\n\r\n if (j !== undefined) {\r\n sources[j - bStart] = i;\r\n\r\n if (pos > j) {\r\n moved = true;\r\n } else {\r\n pos = j;\r\n }\r\n\r\n this.childKeys[b[j][key]].set(b[j]);\r\n\r\n synced++;\r\n aNullable[i] = null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (aLength === a.length && synced === 0) {\r\n this._clear();\r\n while (bStart < bLength) {\r\n this._insertChild(b[bStart++], null);\r\n }\r\n } else {\r\n i = aLength - synced;\r\n while (i > 0) {\r\n if (aNullable[aStart] !== null) {\r\n this._removeChild(a[aStart][key]);\r\n i--;\r\n }\r\n aStart++;\r\n }\r\n\r\n if (moved) {\r\n var seq = this._lis(sources);\r\n j = seq.length - 1;\r\n for (i = bLength - 1; i >= 0; i--) {\r\n if (sources[i] === -1) {\r\n pos = i + bStart;\r\n nextPos = pos + 1;\r\n this._insertChild(b[pos], b[nextPos] && b[nextPos][key]);\r\n } else {\r\n if (j < 0 || i !== seq[j]) {\r\n pos = i + bStart;\r\n nextPos = pos + 1;\r\n this._moveChild(b[pos][key], b[nextPos] && b[nextPos][key]);\r\n } else {\r\n j--;\r\n }\r\n }\r\n }\r\n } else if (synced !== bLength) {\r\n for (i = bLength - 1; i >= 0; i--) {\r\n if (sources[i] === -1) {\r\n pos = i + bStart;\r\n nextPos = pos + 1;\r\n this._insertChild(b[pos], b[nextPos] && b[nextPos][key]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (this.children.length > items.length) {\r\n // remove some children\r\n this.children.splice(items.length).forEach(function(child) {\r\n child.$destroy();\r\n });\r\n }\r\n\r\n if (this.children.length) {\r\n // update existing children\r\n this.children.forEach(function(child, i) {\r\n child.set(items[i]);\r\n });\r\n }\r\n\r\n if (items.length > this.children.length) {\r\n // add new children\r\n var fragment = document.createDocumentFragment();\r\n\r\n for (var i = this.children.length; i < items.length; i++) {\r\n var child = new RepeatItem(this.$template.cloneNode(true), this, items[i]);\r\n child.$nodes.forEach(function(node) {\r\n fragment.appendChild(node);\r\n child.$parse(node);\r\n });\r\n this.children.push(child);\r\n }\r\n\r\n this.$node.appendChild(fragment);\r\n }\r\n }\r\n } else {\r\n this._clear();\r\n }\r\n\r\n if (this.props.key) {\r\n this.prevItems = this._clone(items);\r\n this.children.forEach(function(child) {\r\n this.childKeys[child.data[this.props.key]] = child;\r\n }, this);\r\n }\r\n\r\n //this.set('items', items);\r\n 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.$node.innerHTML = '';\r\n this.childKeys = {};\r\n this.children.splice(0).forEach(function(child) {\r\n child.$destroy();\r\n });\r\n },\r\n\r\n _insertChild: function(data, before) {\r\n var RepeatItem = dmx.Component('repeat-item');\r\n var child = new RepeatItem(this.$template.cloneNode(true), this, data);\r\n\r\n child.$nodes.forEach(function(node) {\r\n if (!before) {\r\n this.$node.appendChild(node);\r\n } else {\r\n if (this.childKeys[before]) {\r\n this.$node.insertBefore(node, this.childKeys[before].$nodes[0]);\r\n } else {\r\n console.warn('(insert) can not insert node before key ' + before + '!');\r\n }\r\n }\r\n\r\n child.$parse(node);\r\n }, this);\r\n\r\n this.childKeys[data[this.props.key]] = child;\r\n this.children.push(child);\r\n },\r\n\r\n _moveChild: function(key, before) {\r\n var child = this.childKeys[key];\r\n\r\n if (child) {\r\n if (this.childKeys[before]) {\r\n child.$nodes.forEach(function(node) {\r\n this.$node.insertBefore(node, this.childKeys[before].$nodes[0]);\r\n }, this);\r\n } else {\r\n child.$nodes.forEach(function(node) {\r\n this.$node.appendChild(node);\r\n }, this);\r\n }\r\n } else {\r\n console.warn('(move) child with key ' + key + ' not found!');\r\n }\r\n },\r\n\r\n _removeChild: function(key) {\r\n var child = this.childKeys[key];\r\n if (child) {\r\n child.$destroy();\r\n this.children.splice(this.children.indexOf(child), 1);\r\n delete this.childKeys[key];\r\n } else {\r\n console.warn('(remove) child with key ' + key + ' not found!');\r\n }\r\n },\r\n\r\n _clone: function(o) {\r\n return 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\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 return encodeURIComponent(key) + '=' + encodeURIComponent(options.params[key]);\r\n }, this).join('&');\r\n\r\n this._url = options.url + qs;\r\n\r\n if (this.props.cache) {\r\n var cache = dmx.parse(this.props.cache + '.data[\"' + this._url + '\"]', this);\r\n if (cache) {\r\n if (Date.now() - cache.created >= options.ttl * 1000) {\r\n dmx.parse(this.props.cache + '.remove(\"' + this._url + '\")', this);\r\n } else {\r\n this.set('headers', cache.headers || {});\r\n this.set('paging', cache.paging || {});\r\n this.set('links', cache.links || {});\r\n this.set('data', cache.data);\r\n this.dispatchEvent('success');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n }\r\n }\r\n\r\n this.set('state', {\r\n executing: true,\r\n uploading: false,\r\n processing: false,\r\n downloading: false\r\n });\r\n\r\n var data = null;\r\n\r\n if (this.props.method.toUpperCase() != 'GET') {\r\n if (this.props['data-type'] == 'text') {\r\n if (!options.headers['Content-Type']) {\r\n options.headers['Content-Type'] = 'application/text';\r\n }\r\n data = this.props.data.toString();\r\n } else if (this.props['data-type'] == 'json') {\r\n if (!options.headers['Content-Type']) {\r\n options.headers['Content-Type'] = 'application/json';\r\n }\r\n data = JSON.stringify(this.props.data);\r\n } else {\r\n if (this.props.method.toUpperCase() == 'POST') {\r\n data = new FormData();\r\n\r\n Object.keys(this.props.data).forEach(function(key) {\r\n var value = this.props.data[key];\r\n\r\n if (Array.isArray(value)) {\r\n if (!/\\[\\]$/.test(key)) {\r\n key += '[]';\r\n }\r\n value.forEach(function(val) {\r\n data.append(key, val);\r\n }, this);\r\n } else {\r\n data.set(key, value);\r\n }\r\n }, this);\r\n } else {\r\n if (!options.headers['Content-Type']) {\r\n options.headers['Content-Type'] = 'application/text';\r\n }\r\n data = this.props.data.toString();\r\n }\r\n }\r\n }\r\n\r\n this.xhr.open(this.props.method.toUpperCase(), this._url);\r\n this.xhr.timeout = options.timeout * 1000;\r\n Object.keys(options.headers).forEach(function(header) {\r\n this.xhr.setRequestHeader(header, options.headers[header]);\r\n }, this);\r\n this.xhr.setRequestHeader('accept', 'application/json');\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\r\n methods: {\r\n abort: function() {\r\n this.abort();\r\n }\r\n },\r\n\r\n events: {\r\n start: Event, // when starting an ajax call\r\n done: Event, // when ajax call completed (success and error)\r\n error: Event, // server error or javascript error (json parse or network transport) or timeout error\r\n unauthorized: Event, // 401 status from server\r\n forbidden: Event, // 403 status from server\r\n abort: Event, // ajax call was aborted\r\n success: Event, // successful ajax call,\r\n upload: ProgressEvent, // on upload progress\r\n download: ProgressEvent // on download progress\r\n },\r\n\r\n $parseAttributes: function(node) {\r\n dmx.BaseComponent.prototype.$parseAttributes.call(this, node);\r\n dmx.dom.getAttributes(node).forEach(function(attr) {\r\n if (attr.name == 'param' && attr.argument) {\r\n this.$addBinding(attr.value, function(value) {\r\n this.props.params[attr.argument] = value;\r\n });\r\n }\r\n if (attr.name == 'header' && attr.argument) {\r\n this.$addBinding(attr.value, function(value) {\r\n this.props.headers[attr.argument] = value;\r\n });\r\n }\r\n }, this);\r\n },\r\n\r\n render: function(node) {\r\n this.xhr = new XMLHttpRequest();\r\n this.xhr.addEventListener('load', this.onload.bind(this));\r\n this.xhr.addEventListener('abort', this.onabort.bind(this));\r\n this.xhr.addEventListener('error', this.onerror.bind(this));\r\n this.xhr.addEventListener('timeout', this.ontimeout.bind(this));\r\n this.xhr.addEventListener('progress', this.onprogress('download').bind(this));\r\n if (this.xhr.upload) this.xhr.upload.addEventListener('progress', this.onprogress('upload').bind(this));\r\n\r\n 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 return encodeURIComponent(key) + '=' + encodeURIComponent(this.props.params[key]);\r\n }, this).join('&');\r\n\r\n if (method == 'GET') {\r\n qs += dmx.array(this.$node.elements).filter(function(element) {\r\n return (!(extra && extra[element.name])) && !element.disabled && ((element.type !== 'radio' && element.type !== 'checkbox') || element.checked);\r\n }).map(function(element) {\r\n return encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value);\r\n }).join('&');\r\n\r\n if (extra) {\r\n Object.keys(extra).forEach(function(key) {\r\n if (Array.isArray(extra[key])) {\r\n extra[key].forEach(function(value) {\r\n qs += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(value);\r\n });\r\n } else {\r\n qs += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(extra[key]);\r\n }\r\n });\r\n }\r\n } else {\r\n if (this.props['post-data'] == 'json') {\r\n data = {};\r\n\r\n dmx.array(this.$node.elements).forEach(function(element) {\r\n if (element.name && !element.disabled) {\r\n if (element.type.toLowerCase == 'radio') {\r\n var checked = document.querySelector('input[name=\"' + element.name + '\"]:checked');\r\n\r\n if (checked) {\r\n data[element.name] = checked.value;\r\n }\r\n } else if (element.type == 'checkbox') {\r\n var group = document.querySelectorAll('input[name=\"' + element.name + '\"]');\r\n\r\n if (group.length) {\r\n if (group.length == 1) {\r\n data[element.name] = group[0].checked;\r\n } else {\r\n data[element.name] = dmx.array(group).filter(function(checkbox) {\r\n return checkbox.checked;\r\n }).map(function(checkbox) {\r\n return checkbox.value;\r\n });\r\n }\r\n }\r\n } else if (element.type == 'select-multiple') {\r\n data[element.name] = dmx.array(element.selectedOptions).map(function(option) {\r\n return option.value;\r\n });\r\n } else if (element.type == 'file') {\r\n if (element.files.length) {\r\n if (element.multiple) {\r\n data[element.name] = element.files.map(function(file) {\r\n return file.name;\r\n });\r\n } else {\r\n data[element.name] = element.files[0].name;\r\n }\r\n }\r\n } else {\r\n data[element.name] = element.value;\r\n }\r\n }\r\n });\r\n\r\n if (extra) {\r\n Object.assign(data, extra);\r\n }\r\n\r\n if (this.$node.dmxExtraData) {\r\n Object.assign(data, this.$node.dmxExtraData);\r\n }\r\n\r\n this.props.headers['Content-Type'] = 'application/json';\r\n data = JSON.stringify(data);\r\n } else {\r\n data = new FormData(this.$node);\r\n\r\n if (extra) {\r\n Object.keys(extra).forEach(function(key) {\r\n if (Array.isArray(extra[key])) {\r\n if (!/\\[\\]$/.test(key)) {\r\n key += '[]';\r\n }\r\n value.forEach(function(val) {\r\n data.append(key, val);\r\n }, this);\r\n } else {\r\n data.set(key, extra[key]);\r\n }\r\n }, this);\r\n }\r\n\r\n if (this.$node.dmxExtraData) {\r\n Object.keys(this.$node.dmxExtraData).forEach(function(key) {\r\n var value = this.$node.dmxExtraData[key];\r\n\r\n if (Array.isArray(value)) {\r\n if (!/\\[\\]$/.test(key)) {\r\n key += '[]';\r\n }\r\n value.forEach(function(val) {\r\n data.append(key, val);\r\n }, this);\r\n } else {\r\n data.set(key, value);\r\n }\r\n }, this);\r\n }\r\n }\r\n }\r\n\r\n this._reset();\r\n this.dispatchEvent('start');\r\n\r\n this.set('state', {\r\n executing: true,\r\n uploading: false,\r\n processing: false,\r\n downloading: false\r\n });\r\n\r\n this.xhr.open(method, action + (qs ? (action.indexOf('?') > -1 ? '&' : '?') + qs : ''));\r\n this.xhr.timeout = this.props.timeout * 1000;\r\n Object.keys(this.props.headers).forEach(function(header) {\r\n this.xhr.setRequestHeader(header, this.props.headers[header]);\r\n }, this);\r\n this.xhr.setRequestHeader('accept', 'application/json');\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 = document.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\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 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', 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 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.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 = 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 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 $key: index\r\n }, value), parentScope);\r\n\r\n return self._exec(options.exec).then(function() {\r\n self.scope = parentScope;\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 '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['api'] = 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 'collection.addColumns': function(options) {\r\n var collection = this.parse(options.collection);\r\n var add = this.parse(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 if (overwrite || row[column] == null) {\r\n row[column] = add[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 * 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 'collection.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 'collection.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 'collection.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 'collection.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 'collection.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 'colection.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 'collection.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});"]}