{"version":3,"sources":["init.js","core/polyfills.js","core/clone.js","core/equal.js","core/api.js","core/events.js","core/fileUtils.js","appConnect.js","cordova.js","core/signal.js","core/signalProxy.js","core/scope.js","core/dom.js","core/parser.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/button.js","components/radio.js","components/radioGroup.js","components/checkbox.js","components/checkboxGroup.js","components/select.js","components/selectMultiple.js","components/value.js","components/repeat.js","components/repeatItem.js","components/fetch.js","components/serverconnect.js","components/serverconnectForm.js","components/if.js","components/datetime.js","components/apiAction.js","components/apiForm.js","components/array.js","components/group.js","components/flow.js","components/toggle.js","components/formData.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":["window","dmx","version","versions","config","mapping","form","input","textarea","select","noop","isset","v","undefined","array","a","Array","from","reIgnoreElement","rePrefixed","reExpression","reExpressionReplace","reToggleAttribute","reDashAlpha","reUppercase","__components","Object","create","__attributes","before","mounted","__formatters","boolean","global","string","number","object","any","__adapters","__actions","__startup","Set","Element","prototype","closest","s","i","matches","this","document","ownerDocument","querySelectorAll","el","length","item","parentElement","NodeList","forEach","queueMicrotask","callback","Promise","resolve","then","catch","e","setTimeout","Node","defineProperty","get","contains","toggleAttribute","name","force","hasAttribute","removeAttribute","setAttribute","toString","hasOwnProperty","reFlags","reTypedType","eq","value","other","assocIndexOf","key","getMapData","data","type","map","Hash","entries","index","clear","entry","set","__data__","size","delete","result","has","HASH_UNDEFINED","ListCache","pop","splice","push","MapCache","hash","Map","Stack","pairs","LARGE_ARRAY_SIZE","getType","call","slice","isArray","isObject","cloneArrayBuffer","arrayBuffer","constructor","byteLength","Uint8Array","cloneTypedArray","typedArray","buffer","byteOffset","initType","imageData","regexp","dataView","Ctor","source","exec","lastIndex","width","height","clone","stack","stacked","subValue","add","test","isTypedArray","props","keys","iteratee","arrayEach","objValue","assignValue","equalArrays","arrLength","arrValue","othValue","equal","equalDeep","objIsArr","othIsArr","objType","othType","isSameType","String","equalByType","objProps","objLength","objCtor","othCtor","equalObjects","createClass","proto","parent","Cls","apply","arguments","assign","ready","fn","readyState","addEventListener","once","Config","Component","parentComponent","extends","BaseComponent","initialData","attributes","methods","events","node","Attribute","hook","Formatter","Formatters","formatters","Adapter","Action","action","Actions","actions","Startup","promise","debounce","delay","handle","cb","clearTimeout","cancelAnimationFrame","requestAnimationFrame","throttle","args","db","keyCodes","bs","tab","enter","esc","space","left","up","right","down","backspace","pause","capslock","escape","pageup","pagedown","end","home","arrowleft","arrowup","arrowright","arrowdown","insert","numlock","scrolllock","semicolon","comma","minus","period","slash","backquote","bracketleft","backslash","bracketright","quote","numpad0","numpad1","numpad2","numpad3","numpad4","numpad5","numpad6","numpad7","numpad8","numpad9","numpadmultiply","numpadadd","numpadsubstract","numpaddivide","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","digit0","digit1","digit2","digit3","digit4","digit5","digit6","digit7","digit8","digit9","keya","keyb","keyc","keyd","keye","keyf","keyg","keyh","keyi","keyj","keyk","keyl","keym","keyn","keyo","keyp","keyq","keyr","keyt","keyu","keyv","keyw","keyx","keyy","keyz","eventListener","target","eventType","handler","modifiers","timeout","listener","event","self","currentTarget","ctrl","ctrlKey","alt","altKey","shift","shiftKey","meta","metaKey","originalEvent","nsp","includes","MouseEvent","button","parseInt","button0","button1","button2","button3","button4","KeyboardEvent","keyVal","which","stop","stopPropagation","prevent","preventDefault","$data","pageX","pageY","x","clientX","y","clientY","WheelEvent","deltaX","deltaY","deltaZ","deltaMode","PointerEvent","pointerId","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","TouchEvent","touchMap","touch","identifier","screenX","screenY","touches","changedTouches","targetTouches","rotation","scale","location","repeat","code","Dom7","nodeType","replace","capture","jQuery","passive","fileUtils","fileReader","file","readAs","reject","reader","FileReader","onload","onerror","error","blobToArrayBuffer","blob","blobToBinaryString","blobToDataURL","blobToBase64String","dataURL","substring","indexOf","arrayBufferToBlob","Blob","binaryStringToBlob","binary","bytes","c","charCodeAt","dataURLToBlob","parseDataURL","base64StringToBlob","base64String","atob","match","mediaType","base64","split","parseMediaType","subtype","suffix","parameters","reduce","obj","param","_wr","orig","history","rv","Event","toLowerCase","dispatchEvent","pushState","replaceState","onpopstate","state","title","documentElement","style","visibility","all","app","Error","root","querySelector","App","err","console","extend","extended","deep","merge","prop","parseDate","struct","offset","n","Date","k","UTC","d","setUTCHours","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","setHours","setMinutes","setSeconds","setMilliseconds","hashCode","o","str","JSON","stringify","Math","abs","randomizer","seed","repeatItems","items","l","$key","$index","$value","escapeRegExp","val","validate","tagName","elements","dirty","checkValidity","validateReset","queue","task","context","nextTick","postMessage","requestUpdate","warn","protocol","is","batches","batch","prev","Signal","_","toJSON","valueOf","computedSignal","Computed","f","super","$","r","Reactive","peek","defaults","async","equals","outerEffect","computed","options","empty","dispose","FX","run","Effect","m","sync","effect","unique","isNew","skip","effects","signal","signalProxy","signals","b","Proxy","receiver","Reflect","startsWith","ok","deleteProperty","Scope","random","del","DataScope","selector","len","addClass","className","classList","removeClass","remove","toggleClass","toggle","hasClass","attr","attrs","getAttribute","removeAttr","css","getComputedStyle","getPropertyValue","setProperty","each","append","children","j","appendChild","appendTo","detach","parentNode","removeChild","innerHTML","dom","id","getElementById","query","elem","createElement","walk","hasChildNodes","child","childNodes","getAttributes","attribute","specified","substr","argument","part","pos","fullName","oldNode","newNode","replaceChild","_CACHE","_OPERATORS","_ESCAPE_CHARS","_EXPRESSIONS","pow","_RESERVED","scope","__dmxScope__","_SUPPORTED_TYPES","lexer","expression","token","start","ch","ch2","ch3","tokens","op","read","isQuote","readString","isDigid","readNumber","isAlpha","readIdent","testRegexp","readRegexp","isWhitespace","chars","isAlphaNum","isExpOperator","hex","fromCharCode","exponent","next","BigInt","Decimal","RegExp","parse","trim","endsWith","parseExpression","expect","doParse","consume","exp","parseLogicalAnd","parseLogicalOr","parseConditional","parseBitwiseOr","parseBitwiseXor","parseBitwiseAnd","parseEquality","parseRelational","parseBitwiseShift","parseMultiplicative","parseAddictive","parseUnary","parsePrimary","arr","parseMember","parseCall","parseIndex","func","argsFn","indexFn","method","bind","$node","listeners","updatedProps","updateRequested","isInitialized","isDestroyed","oldValue","alwaysUpdate","$initialData","$parseAttributes","init","render","$customAttributes","dmxComponent","dmxRendered","tag","destroy","$parse","find","found","beforeUpdate","update","updated","beforeDestroy","destroyed","removeEventListener","CustomEvent","defaultPrevented","$createChild","component","$addChild","debug","$removeChild","toUpperCase","$parseTextNode","nodeValue","parts","fragment","createDocumentFragment","textNode","createTextNode","$watch","findIndex","isComponent","__WAPPLER__","$update","idents","opts","attrName","default","Boolean","Number","isFinite","enum","Function","$event","$originalEvent","performUpdate","$type","$addBinding","$destroy","$destroyChildren","ignoreParents","pathToRegexp","compile","tokensToFunction","tokensToRegExp","DEFAULT_DELIMITER","PATH_REGEXP","join","res","path","defaultDelimiter","delimiter","whitelist","pathEscaped","escaped","group","modifier","optional","pattern","prefix","escapeGroup","escapeString","encode","encodeURIComponent","segment","TypeError","flags","sensitive","strict","concat","route","endToken","isEndDelimited","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","Hjson","text","at","escapee","t","isPunctuatorChar","col","line","charAt","offs","allowML","exitCh","mlString","uffff","triple","indent","skipIndent","keyname","white","tryParseNumber","stopAtNext","leadingZeros","testLeading","errorClosingHint","search","report","possibleErr","hint","withoutBraces","isEol","chf","tfnns","checkTrailing","rootValue","Flow","_execStep","output","flow","_exec","_each","curr","steps","step","timerName","now","time","disabled","timeEnd","load","dispatchLoad","_parseQuery","querystring","p","decodeURIComponent","base","content","decodeURI","pathname","novalidate","submit","direct","_submit","reset","_reset","_validate","invalid","_submitHandler","_resetHandler","noValidate","grecaptcha","_formSubmit","cancelable","_focusFirstInvalid","_formReset","HTMLFormElement","elm","validity","valid","focus","_parseJsonForm","element","parseSteps","setValue","checked","selectedOptions","opt","org","re","reNumeric","p1","last","nextType","current","focused","validationMessage","_setValue","_focus","disable","_disable","changed","_inputHandler","_changeHandler","_invalidHandler","_focusHandler","_blurHandler","defaultValue","_form","activeElement","imageMaxWidth","imageMaxHeight","imageType","imageQuality","_imageTypes","png","jpeg","webp","_imageExtensions","_updateData","files","_resizeImage","blobUrl","URL","createObjectURL","img","Image","src","revokeObjectURL","ratio","needResize","newName","newType","canvas","ctx","getContext","drawImage","toBlob","container","DataTransfer","newFile","File","dataUrl","loading","date","lastModified","lastModifiedDate","toISOString","_resizeImages","check","_select","unchecked","defaultChecked","bubbles","_mutationObserver","MutationObserver","mutationList","mutation","addedNodes","ELEMENT_NODE","checkbox","_updateValue","observe","subtree","childList","disconnect","_radios","radio","filter","_checkboxes","selectedIndex","selectedValue","selectedText","optiontext","optionvalue","setSelectedIndex","_options","_updatingOptions","_renderOptions","option","selected","defaultSelected","textContent","rerender","prevItems","childKeys","$template","firstChild","_rerender","_clear","RepeatItem","nextPos","_clone","aStart","bStart","aEnd","bEnd","outer","_moveChild","_insertChild","_removeChild","aLength","bLength","aNullable","sources","fill","moved","synced","keyIndex","seq","_lis","toParse","cloneNode","$nodes","u","il","insertBefore","status","links","paging","headers","executing","uploading","processing","downloading","uploadProgress","position","percent","total","downloadProgress","lastError","message","response","url","params","dataType","noload","cache","ttl","credentials","abort","_abort","reload","_fetch","_resetData","done","unauthorized","forbidden","success","upload","ProgressEvent","download","_statusEvents","_loadHandler","_abortHandler","_errorHandler","_timeoutHandler","_downloadProgressHandler","_progressHandler","_uploadProgressHandler","_xhr","XMLHttpRequest","clearData","qs","_url","WebviewProxy","convertProxyUrl","created","FormData","open","setRequestHeader","header","withCredentials","serverconnect","csrf_token","send","_done","responseText","_parseHeaders","statusText","arrHeaders","getAllResponseHeaders","_parseLinkHeaders","linkHeader","link","linkUrl","acc","info","rel","_parsePaging","page","pages","first","countHeader","loaded","lengthComputable","ceil","sockets","Socket","_refresh","_event","_socket","on","off","connected","emit","autosubmit","postData","_extendNode","dmxExtraData","dmxExtraElements","_send","setMessage","condition","show","hide","_shown","_template","_show","_hide","template","datetime","interval","utc","_tick","_timeout","_animationFrame","_datetime","pad","year","getUTCFullYear","getFullYear","month","getUTCMonth","getMonth","day","getUTCDate","getDate","hours","getUTCHours","getHours","minutes","getUTCMinutes","getMinutes","seconds","getUTCSeconds","getSeconds","dateString","tz","count","newItem","_splice","_count","addUniq","_indexOf","insertAfter","replaceAt","removeAt","reverse","_reverse","sort","_sort","running","preload","autorun","throwError","_run","runSub","_runSub","_load","_flow","_parse","_destroyed","fetch","_runFlow","$param","uncheck","_formdataHandler","formData","_appendData","isToggle","nodeName","dmxOn","comment","createComment","fast","dmxClass","dmxHide","initial","display","priority","getPropertyPriority","dmxShow","dmxHtml","html","dmxText","innerText","dmxStyle","important","json","log","subflow","wait","lower","upper","floating","rnd","floor","round","confirm","else","prompt","alert","parentScope","parentOutput","$name","$number","$oddeven","outputFields","field","if","conditions","when","cases","while","loop","switch","case","tryCatch","try","runJS","function","setGlobal","setSession","sessionStorage","setItem","getSession","getItem","removeSession","removeItem","setStorage","localStorage","getStorage","removeStorage","body","xhr","onabort","ontimeout","collection","overwrite","row","column","columns","keep","newRow","rename","toFill","rows","startAt","desc","collection1","collection2","matchAll","l2","row2","hasMatch","label","groupEnd"],"mappings":"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","file":"dmxAppConnect.js","sourcesContent":["window.dmx = {\r\n // Versions\r\n version: '2.0.10',\r\n versions: {},\r\n\r\n // Configuration Options\r\n 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': '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\n noop: () => {},\r\n isset: (v) => v !== undefined,\r\n array: (a) => a != null ? Array.from(a) : [],\r\n\r\n // Global Regexp\r\n reIgnoreElement: /^(script|style)$/i,\r\n rePrefixed: /^dmx-/i,\r\n reExpression: /\\{\\{(.+?)\\}\\}/,\r\n reExpressionReplace: /\\{\\{(.+?)\\}\\}/g,\r\n reToggleAttribute: /^(checked|selected|disabled|required|hidden|async|autofocus|autoplay|default|defer|multiple|muted|novalidate|open|readonly|reversed|scoped)$/i,\r\n reDashAlpha: /-([a-z])/g,\r\n reUppercase: /[A-Z]/g,\r\n \r\n // Internal collections for registering components etc.\r\n __components: Object.create(null),\r\n __attributes: {\r\n before: Object.create(null),\r\n mounted: Object.create(null),\r\n },\r\n __formatters: {\r\n boolean: Object.create(null),\r\n global: Object.create(null),\r\n string: Object.create(null),\r\n number: Object.create(null),\r\n object: Object.create(null),\r\n array: Object.create(null),\r\n any: Object.create(null),\r\n },\r\n __adapters: Object.create(null),\r\n __actions: Object.create(null),\r\n __startup: new Set(),\r\n};\r\n","// Polyfills for older browsers\r\n// IE is not supported\r\n\r\n// https://caniuse.com/element-closest\r\nif (window.Element && !('closest' in Element.prototype)) {\r\n Element.prototype.closest = function (s) {\r\n let 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\n// https://caniuse.com/mdn-api_nodelist_foreach\r\nif (window.NodeList && !('forEach' in NodeList.prototype)) {\r\n NodeList.prototype.forEach = Array.prototype.forEach;\r\n}\r\n\r\n// https://caniuse.com/mdn-api_queuemicrotask\r\nif (typeof window.queueMicrotask !== 'function') {\r\n window.queueMicrotask = function (callback) {\r\n Promise.resolve().then(callback).catch(e => setTimeout(() => { throw e }));\r\n }\r\n}\r\n\r\n// https://caniuse.com/mdn-api_node_isconnected\r\nif (window.Node && !('isConnected' in Node.prototype)) {\r\n Object.defineProperty(Node.prototype, 'isConnected', {\r\n get: function () { return document.contains(this) }\r\n });\r\n}\r\n\r\n// https://caniuse.com/mdn-api_element_toggleattribute\r\nif (window.Element && !('toggleAttribute' in Element.prototype)) {\r\n Element.prototype.toggleAttribute = function (name, force) {\r\n if (this.hasAttribute(name)) {\r\n if (force !== true) this.removeAttribute(name);\r\n } else {\r\n if (force !== false) this.setAttribute(name, '');\r\n }\r\n }\r\n}","(function() {\r\n\r\n // unsupported types: ImageBitmap\r\n\r\n var LARGE_ARRAY_SIZE = 200;\r\n\r\n var toString = Object.prototype.toString;\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\n var reFlags = /\\w*$/;\r\n var reTypedType = /^(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)Array$/;\r\n\r\n var eq = function(value, other) {\r\n return value === other || (value !== value && other !== other);\r\n }\r\n\r\n var assocIndexOf = function(array, key) {\r\n var length = array.length;\r\n while (length--) {\r\n if (eq(array[length][0], key)) {\r\n return length;\r\n }\r\n }\r\n return -1;\r\n };\r\n\r\n var isKeyable = function(value) {\r\n var type = typeof value;\r\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\r\n ? (value !== '__proto__')\r\n : (value === null);\r\n };\r\n\r\n var getMapData = function(data, key) {\r\n return isKeyable(key)\r\n ? data[typeof key == 'string' ? 'string' : 'hash']\r\n : data.map;\r\n };\r\n\r\n var Hash = function(entries) {\r\n var index = -1,\r\n length = entries == null ? 0 : entries.length;\r\n\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n }\r\n\r\n Hash.prototype = {\r\n clear: function() {\r\n this.__data__ = Object.create(null);\r\n this.size = 0;\r\n },\r\n\r\n delete: function(key) {\r\n var result = this.has(key) && delete this.__data__[key];\r\n this.size -= result ? 1 : 0;\r\n return result;\r\n },\r\n\r\n get: function(key) {\r\n var result = this.__data__[key];\r\n return result === HASH_UNDEFINED ? undefined : result;\r\n },\r\n\r\n has: function(key) {\r\n return this.__data__[key] !== undefined;\r\n },\r\n\r\n set: function(key, value) {\r\n this.size += this.has(key) ? 0 : 1;\r\n this.__data__[key] = value === undefined ? HASH_UNDEFINED : value;\r\n return this;\r\n }\r\n }\r\n\r\n var ListCache = function(entries) {\r\n var index = -1;\r\n var length = entries == null ? 0 : entries.length;\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n };\r\n\r\n ListCache.prototype = {\r\n clear: function() {\r\n this.__data__ = [];\r\n this.size = 0;\r\n },\r\n\r\n delete: function(key) {\r\n var data = this.__data__;\r\n var index = assocIndexOf(data, key);\r\n if (index < 0) {\r\n return false;\r\n }\r\n var lastIndex = data.length - 1;\r\n if (index == lastIndex) {\r\n data.pop();\r\n } else {\r\n data.splice(index, 1);\r\n }\r\n --this.size;\r\n return true;\r\n },\r\n\r\n get: function(key) {\r\n var data = this.__data__;\r\n var index = assocIndexOf(data, key);\r\n return index < 0 ? undefined : data[index][1];\r\n },\r\n\r\n has: function(key) {\r\n return assocIndexOf(this.__data__, key) > -1;\r\n },\r\n\r\n set: function(key, value) {\r\n var data = this.__data__;\r\n var index = assocIndexOf(data, key);\r\n if (index < 0) {\r\n ++this.size;\r\n data.push([key, value]);\r\n } else {\r\n data[index][1] = value;\r\n }\r\n return this;\r\n }\r\n };\r\n\r\n var MapCache = function(entries) {\r\n var index = -1;\r\n var length = entries == null ? 0 : entries.length;\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n };\r\n\r\n MapCache.prototype = {\r\n clear: function() {\r\n this.size = 0;\r\n this.__data__ = {\r\n 'hash': new Hash(),\r\n 'map': new Map(),\r\n 'string': new Hash()\r\n };\r\n },\r\n\r\n delete: function(key) {\r\n var result = getMapData(this.__data__, key)['delete'](key);\r\n this.size -= result ? 1 : 0;\r\n return result;\r\n },\r\n\r\n get: function(key) {\r\n return getMapData(this.__data__, key).get(key);\r\n },\r\n\r\n has: function(key) {\r\n return getMapData(this.__data__, key).has(key);\r\n },\r\n\r\n set: function(key, value) {\r\n var data = getMapData(this.__data__, key);\r\n var size = data.size;\r\n data.set(key, value);\r\n this.size += data.size == size ? 0 : 1;\r\n return this;\r\n }\r\n };\r\n\r\n var Stack = function(entries) {\r\n var data = this.__data__ = new ListCache(entries);\r\n this.size = data.size;\r\n };\r\n\r\n Stack.prototype = {\r\n clear: function() {\r\n this.__data__ = new ListCache();\r\n this.size = 0;\r\n },\r\n\r\n delete: function(key) {\r\n var data = this.__data__;\r\n var result = data['delete'](key);\r\n this.size = data.size;\r\n return result;\r\n },\r\n\r\n get: function(key) {\r\n return this.__data__.get(key);\r\n },\r\n\r\n has: function(key) {\r\n return this.__data__.has(key);\r\n },\r\n\r\n set: function(key, value) {\r\n var data = this.__data__;\r\n if (data instanceof ListCache) {\r\n var pairs = data.__data__;\r\n if (pairs.length < LARGE_ARRAY_SIZE - 1) {\r\n pairs.push([key, value]);\r\n this.size = ++data.size;\r\n return this;\r\n }\r\n data = this.__data__ = new MapCache(pairs);\r\n }\r\n data.set(key, value);\r\n this.size = data.size;\r\n return this;\r\n }\r\n };\r\n\r\n var arrayEach = function(array, iteratee) {\r\n var index = -1;\r\n var length = array.length;\r\n while (++index < length) {\r\n if (iteratee(array[index], index, array) === false) {\r\n break;\r\n }\r\n }\r\n return array;\r\n };\r\n\r\n var getType = function(value) {\r\n return toString.call(value).slice(8, -1);\r\n };\r\n\r\n var isArray = function(value) {\r\n return Array.isArray(value);\r\n };\r\n\r\n var isObject = function(value) {\r\n return value != null && typeof value == 'object'\r\n };\r\n\r\n var isTypedArray = function(value) {\r\n return isObject(value) && reTypedType.test(getType(value));\r\n };\r\n\r\n var assignValue = function(object, key, value) {\r\n // Prototype polution protection\r\n if (key == '__proto__') return;\r\n\r\n var objValue = object[key];\r\n\r\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value))) {\r\n //if (value !== 0 || (1 / value) === (1 / objValue)) {\r\n object[key] = value;\r\n //}\r\n } else if (value === undefined && !(key in object)) {\r\n object[key] = value;\r\n }\r\n };\r\n\r\n var cloneArrayBuffer = function(arrayBuffer) {\r\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\r\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\r\n return result;\r\n };\r\n\r\n var cloneDataView = function(dataView) {\r\n var buffer = cloneArrayBuffer(dataView.buffer);\r\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\r\n };\r\n\r\n var cloneTypedArray = function(typedArray) {\r\n var buffer = cloneArrayBuffer(typedArray.buffer);\r\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\r\n };\r\n\r\n var cloneRegExp = function(regexp) {\r\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\r\n result.lastIndex = regexp.lastIndex;\r\n return result;\r\n };\r\n\r\n var cloneImageData = function(imageData) {\r\n var data = cloneTypedArray(imageData.data);\r\n return new imageData.constructor(data, imageData.width, imageData.height);\r\n }\r\n\r\n var initArray = function(array) {\r\n return new array.constructor(array.length);\r\n };\r\n\r\n var initType = function(object, type) {\r\n var Ctor = object.constructor;\r\n\r\n switch (type) {\r\n case 'ArrayBuffer':\r\n return cloneArrayBuffer();\r\n \r\n case 'Boolean':\r\n case 'Date':\r\n return new Ctor(+object);\r\n\r\n case 'DataView':\r\n return cloneDataView(object);\r\n\r\n case 'Float32Array':\r\n case 'Float64Array':\r\n case 'Int8Array':\r\n case 'Int16Array':\r\n case 'Int32Array':\r\n case 'Uint8Array':\r\n case 'Uint8ClampedArray':\r\n case 'Uint16Array':\r\n case 'Uint32Array':\r\n return cloneTypedArray(object);\r\n\r\n case 'Map':\r\n case 'Set':\r\n return new Ctor();\r\n\r\n case 'Number':\r\n case 'String':\r\n return new Ctor(object);\r\n\r\n case 'RegExp':\r\n return cloneRegExp(object);\r\n\r\n case 'ImageData':\r\n return cloneImageData(object);\r\n }\r\n };\r\n\r\n var clone = function(value, key, object, stack) {\r\n var result;\r\n\r\n if (!isObject(value)) {\r\n return value;\r\n }\r\n \r\n var type = getType(value);\r\n\r\n if (isArray(value)) {\r\n result = initArray(value);\r\n } else {\r\n if (type == 'Object') {\r\n result = {};\r\n } else {\r\n result = initType(value, type);\r\n }\r\n } \r\n \r\n stack = stack || new Stack();\r\n\r\n var stacked = stack.get(value);\r\n if (stacked) {\r\n return stacked;\r\n }\r\n stack.set(value, result);\r\n\r\n if (type == 'Map') {\r\n value.forEach(function(subValue, key) {\r\n result.set(key, clone(subValue, key, value, stack));\r\n });\r\n\r\n return result;\r\n }\r\n\r\n if (type == 'Set') {\r\n value.forEach(function(subValue) {\r\n result.add(clone(subValue, subValue, value, stack));\r\n });\r\n\r\n return result;\r\n }\r\n\r\n if (isTypedArray(value)) {\r\n return result;\r\n }\r\n\r\n var props = isArray(value) ? undefined : Object.keys(Object(value));\r\n arrayEach(props || value, function(subValue, key) {\r\n if (props) {\r\n key = subValue;\r\n subValue = value[key];\r\n }\r\n assignValue(result, key, clone(subValue, key, value, stack));\r\n });\r\n\r\n return result;\r\n };\r\n\r\n dmx.clone = clone;\r\n\r\n})();","(function() {\r\n\r\n // TODO: ImageData compare\r\n\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\n var reTypedType = /^(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)Array$/;\r\n\r\n var eq = function(value, other) {\r\n return value === other || (value !== value && other !== other);\r\n }\r\n\r\n var getType = function(value) {\r\n return toString.call(value).slice(8, -1);\r\n };\r\n\r\n var isObject = function(value) {\r\n return typeof value === 'object' && value !== null;\r\n };\r\n\r\n var isTypedArray = function(value) {\r\n return isObject(value) && reTypedType.test(getType(value));\r\n };\r\n\r\n var mapToArray = function(map) {\r\n var index = -1;\r\n var result = new Array(map.size);\r\n map.forEach(function(value, key) {\r\n result[++index] = [key, value];\r\n });\r\n return result;\r\n };\r\n\r\n var setToArray = function(set) {\r\n var index = -1;\r\n var result = new Array(set.size);\r\n set.forEach(function(value) {\r\n result[++index] = value;\r\n });\r\n return result;\r\n }\r\n\r\n var equalByType = function(object, other, type) {\r\n switch (type) {\r\n case 'DataView':\r\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\r\n return false;\r\n }\r\n object = object.buffer;\r\n other = other.buffer;\r\n\r\n case 'ArrayBuffer':\r\n if (object.byteLength != other.byteLength || !equal(new Uint8Array(object), new Uint8Array(other))) {\r\n return false;\r\n }\r\n return true;\r\n\r\n case 'Boolean':\r\n case 'Date':\r\n case 'Number':\r\n return eq(+object, +other);\r\n\r\n case 'RegExp':\r\n case 'String':\r\n return object == String(other);\r\n\r\n case 'Map':\r\n case 'Set':\r\n if (object.size != other.size) return false;\r\n return equalArrays(Array.from(object), Array.from(other));\r\n }\r\n };\r\n\r\n var equalArrays = function(array, other) {\r\n var arrLength = array.length;\r\n var othLength = other.length;\r\n\r\n if (arrLength != othLength) {\r\n return false;\r\n }\r\n\r\n var index = -1;\r\n\r\n while (++index < arrLength) {\r\n var arrValue = array[index];\r\n var othValue = other[index];\r\n\r\n if (!(arrValue === othValue || equal(arrValue, othValue))) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n var equalObjects = function(object, other) {\r\n var objProps = Object.keys(object);\r\n var objLength = objProps.length;\r\n var othProps = Object.keys(other);\r\n var othLength = othProps.length;\r\n\r\n if (objLength != othLength) {\r\n return false;\r\n }\r\n\r\n var key, index = objLength;\r\n \r\n while (index--) {\r\n key = objProps[index];\r\n if (!hasOwnProperty.call(other, key)) {\r\n return false;\r\n }\r\n }\r\n\r\n var result = true;\r\n\r\n while (++index < objLength) {\r\n key = objProps[index];\r\n var objValue = object[key];\r\n var othValue = other[key];\r\n\r\n if (!(objValue === othValue || equal(objValue, othValue))) {\r\n result = false;\r\n break;\r\n }\r\n }\r\n\r\n if (result) {\r\n var objCtor = object.constructor;\r\n var othCtor = other.constructor;\r\n\r\n if (objCtor != othCtor &&\r\n ('constructor' in object && 'constructor' in other) &&\r\n !(typeof objCtor === 'function' && objCtor instanceof objCtor &&\r\n typeof othCtor === 'function' && othCtor instanceof othCtor)) {\r\n result = false;\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n var equalDeep = function(object, other) {\r\n var objIsArr = Array.isArray(object);\r\n var othIsArr = Array.isArray(other);\r\n var objType = objIsArr ? 'Array' : getType(object);\r\n var othType = othIsArr ? 'Array' : getType(other);\r\n var objIsObj = objType == 'Object';\r\n var othIsObj = othType == 'Object';\r\n var isSameType = objType == othType;\r\n\r\n if (isSameType && !objIsObj) {\r\n return (objIsArr || isTypedArray(object))\r\n ? equalArrays(object, other)\r\n : equalByType(object, other, objType);\r\n }\r\n\r\n if (!isSameType) {\r\n return false;\r\n }\r\n\r\n return equalObjects(object, other);\r\n };\r\n\r\n var equal = function(value, other) {\r\n if (value === other) {\r\n return true;\r\n }\r\n if (value == null || other == null || (!isObject(value) && !isObject(other))) {\r\n return value !== value && other !== other;\r\n }\r\n return equalDeep(value, other);\r\n };\r\n\r\n dmx.equal = equal;\r\n\r\n})();","// Create Class\r\ndmx.createClass = (proto, parent) => {\r\n const Cls = function () {\r\n if (proto.constructor) {\r\n proto.constructor.apply(this, arguments);\r\n }\r\n };\r\n\r\n if (parent && parent.prototype) {\r\n Cls.prototype = Object.create(parent.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.ready = (fn) => {\r\n if (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', () => { fn() }, { once: true });\r\n } else {\r\n fn();\r\n }\r\n};\r\n\r\n// Config\r\ndmx.Config = (config) => {\r\n Object.assign(dmx.config, config)\r\n};\r\n\r\n// Create/get component\r\ndmx.Component = (name, proto) => {\r\n if (proto) {\r\n const parentComponent = proto.extends ? dmx.Component(proto.extends) : dmx.BaseComponent;\r\n \r\n if (typeof proto.initialData != 'function') {\r\n proto.initialData = Object.assign({}, parentComponent.prototype.initialData, proto.initialData);\r\n }\r\n proto.attributes = Object.assign({}, parentComponent.prototype.attributes, proto.attributes);\r\n proto.methods = Object.assign({}, parentComponent.prototype.methods, proto.methods);\r\n proto.events = Object.assign({}, parentComponent.prototype.events, proto.events);\r\n\r\n if (!proto.hasOwnProperty('constructor')) {\r\n proto.constructor = function(node, parent) {\r\n parentComponent.call(this, node, parent);\r\n }\r\n }\r\n\r\n proto.type = name;\r\n\r\n const Component = dmx.createClass(proto, parentComponent);\r\n Component.extends = proto.extends;\r\n\r\n dmx.__components[name] = Component;\r\n }\r\n\r\n return dmx.__components[name];\r\n};\r\n\r\n// Create attribute\r\ndmx.Attribute = (name, hook, fn) => {\r\n dmx.__attributes[hook][name] = fn;\r\n};\r\n\r\n// Create/get formatter(s)\r\ndmx.Formatter = (type, name, fn) => {\r\n dmx.__formatters[type][name] = fn;\r\n}\r\ndmx.Formatters = (type, formatters) => {\r\n for (const name in formatters) {\r\n dmx.Formatter(type, name, formatters[name]);\r\n }\r\n};\r\n\r\n// Create/get adapter\r\ndmx.Adapter = (type, name, fn) => {\r\n if (fn) dmx.__adapters[type][name] = fn;\r\n return dmx.__adapters[type][name];\r\n};\r\n\r\n// Create action(s)\r\ndmx.Action = (name, action) => {\r\n dmx.__actions[name] = action;\r\n};\r\ndmx.Actions = (actions) => {\r\n for (const name in actions) {\r\n dmx.Action(name, actions[name]);\r\n }\r\n};\r\n\r\n// Startup\r\ndmx.Startup = (promise) => {\r\n dmx.__startup.add(promise)\r\n};","dmx.debounce = (fn, delay) => {\r\n let handle;\r\n\r\n return function () {\r\n const cb = () => {\r\n fn.apply(this, arguments);\r\n };\r\n\r\n if (delay) {\r\n clearTimeout(handle);\r\n handle = setTimeout(cb, delay);\r\n } else {\r\n cancelAnimationFrame(handle);\r\n handle = requestAnimationFrame(cb);\r\n }\r\n };\r\n};\r\n\r\ndmx.throttle = (fn, delay) => {\r\n let throttle = false, args;\r\n\r\n return function () {\r\n args = Array.from(arguments);\r\n\r\n if (!throttle) {\r\n const cb = () => {\r\n throttle = false;\r\n if (args) fn.apply(this, args);\r\n };\r\n\r\n fn.apply(this, args);\r\n\r\n args = undefined;\r\n throttle = true;\r\n\r\n if (delay) {\r\n setTimeout(db, delay);\r\n } else {\r\n requestAnimationFrame(cb);\r\n }\r\n }\r\n };\r\n};\r\n\r\ndmx.keyCodes = {\r\n 'bs': 8,\r\n 'tab': 9,\r\n 'enter': 13,\r\n 'esc': 27,\r\n 'space': 32,\r\n 'left': 37,\r\n 'up': 38,\r\n 'right': 39,\r\n 'down': 40,\r\n 'delete': 46,\r\n\r\n 'backspace': 8,\r\n 'pause': 19,\r\n 'capslock': 20,\r\n 'escape': 27,\r\n 'pageup': 33,\r\n 'pagedown': 34,\r\n 'end': 35,\r\n 'home': 36,\r\n 'arrowleft': 37,\r\n 'arrowup': 38,\r\n 'arrowright': 39,\r\n 'arrowdown': 40,\r\n 'insert': 45,\r\n 'numlock': 144,\r\n 'scrolllock': 145,\r\n 'semicolon': 186,\r\n 'equal': 187,\r\n 'comma': 188,\r\n 'minus': 189,\r\n 'period': 190,\r\n 'slash': 191,\r\n 'backquote': 192,\r\n 'bracketleft': 219,\r\n 'backslash': 220,\r\n 'bracketright': 221,\r\n 'quote': 222,\r\n\r\n 'numpad0': 96,\r\n 'numpad1': 97,\r\n 'numpad2': 98,\r\n 'numpad3': 99,\r\n 'numpad4': 100,\r\n 'numpad5': 101,\r\n 'numpad6': 102,\r\n 'numpad7': 103,\r\n 'numpad8': 104,\r\n 'numpad9': 105,\r\n 'numpadmultiply': 106,\r\n 'numpadadd': 107,\r\n 'numpadsubstract': 109,\r\n 'numpaddivide': 111,\r\n\r\n 'f1': 112,\r\n 'f2': 113,\r\n 'f3': 114,\r\n 'f4': 115,\r\n 'f5': 116,\r\n 'f6': 117,\r\n 'f7': 118,\r\n 'f8': 119,\r\n 'f9': 120,\r\n 'f10': 121,\r\n 'f11': 122,\r\n 'f12': 123,\r\n\r\n 'digit0': 48,\r\n 'digit1': 49,\r\n 'digit2': 50,\r\n 'digit3': 51,\r\n 'digit4': 52,\r\n 'digit5': 53,\r\n 'digit6': 54,\r\n 'digit7': 55,\r\n 'digit8': 56,\r\n 'digit9': 57,\r\n\r\n 'keya': [65, 97],\r\n 'keyb': [66, 98],\r\n 'keyc': [67, 99],\r\n 'keyd': [68, 100],\r\n 'keye': [69, 101],\r\n 'keyf': [70, 102],\r\n 'keyg': [71, 103],\r\n 'keyh': [72, 104],\r\n 'keyi': [73, 105],\r\n 'keyj': [74, 106],\r\n 'keyk': [75, 107],\r\n 'keyl': [76, 108],\r\n 'keym': [77, 109],\r\n 'keyn': [78, 110],\r\n 'keyo': [79, 111],\r\n 'keyp': [80, 112],\r\n 'keyq': [81, 113],\r\n 'keyr': [82, 114],\r\n 'keys': [83, 115],\r\n 'keyt': [84, 116],\r\n 'keyu': [85, 117],\r\n 'keyv': [86, 118],\r\n 'keyw': [87, 119],\r\n 'keyx': [88, 120],\r\n 'keyy': [89, 121],\r\n 'keyz': [90, 122]\r\n};\r\n\r\ndmx.eventListener = function(target, eventType, handler, modifiers) {\r\n let timeout, throttle;\r\n \r\n const 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 if (modifiers.button0 && event.button != 0) return;\r\n if (modifiers.button1 && event.button != 1) return;\r\n if (modifiers.button2 && event.button != 2) return;\r\n if (modifiers.button3 && event.button != 3) return;\r\n if (modifiers.button4 && event.button != 4) return;\r\n }\r\n\r\n if ((event.originalEvent || event) instanceof KeyboardEvent) {\r\n var keys = [];\r\n\r\n Object.keys(modifiers).forEach(function(key) {\r\n var keyVal = parseInt(key, 10);\r\n\r\n if (keyVal) {\r\n keys.push(keyVal);\r\n } else if (dmx.keyCodes[key]) {\r\n keys.push(dmx.keyCodes[key]);\r\n }\r\n });\r\n\r\n for (var i = 0; i < keys.length; i++) {\r\n if (Array.isArray(keys[i])) {\r\n if (!keys[i].includes(event.which)) return;\r\n } else if (event.which !== keys[i]) return;\r\n }\r\n }\r\n\r\n if (modifiers.stop) event.stopPropagation();\r\n if (modifiers.prevent) event.preventDefault();\r\n \r\n if (event.originalEvent) event = event.originalEvent;\r\n\r\n if (!event.$data) event.$data = {};\r\n\r\n if (event instanceof MouseEvent) {\r\n event.$data.altKey = event.altKey;\r\n event.$data.ctrlKey = event.ctrlKey;\r\n event.$data.metaKey = event.metaKey;\r\n event.$data.shiftKey = event.shiftKey;\r\n event.$data.pageX = event.pageX;\r\n event.$data.pageY = event.pageY;\r\n event.$data.x = event.x || event.clientX;\r\n event.$data.y = event.y || event.clientY;\r\n event.$data.button = event.button;\r\n }\r\n\r\n if (event instanceof WheelEvent) {\r\n event.$data.deltaX = event.deltaX;\r\n event.$data.deltaY = event.deltaY;\r\n event.$data.deltaZ = event.deltaZ;\r\n event.$data.deltaMode = event.deltaMode;\r\n }\r\n\r\n if (window.PointerEvent && event instanceof PointerEvent) {\r\n event.$data.pointerId = event.pointerId;\r\n event.$data.width = event.width;\r\n event.$data.height = event.height;\r\n event.$data.pressure = event.pressure;\r\n event.$data.tangentialPressure = event.tangentialPressure;\r\n event.$data.tiltX = event.tiltX;\r\n event.$data.tiltY = event.tiltY;\r\n event.$data.twist = event.twist;\r\n event.$data.pointerType = event.pointerType;\r\n event.$data.isPrimary = event.isPrimary;\r\n }\r\n\r\n if (window.TouchEvent && event instanceof TouchEvent) {\r\n const touchMap = touch => ({\r\n identifier: touch.identifier,\r\n screenX: touch.screenX,\r\n screenY: touch.screenY,\r\n clientX: touch.clientX,\r\n clientY: touch.clientY,\r\n pageX: touch.pageX,\r\n pageY: touch.pageY\r\n });\r\n\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.touches = Array.from(event.touches).map(touchMap);\r\n event.$data.changedTouches = Array.from(event.changedTouches).map(touchMap);\r\n event.$data.targetTouches = Array.from(event.targetTouches).map(touchMap);\r\n event.$data.rotation = event.rotation;\r\n event.$data.scale = event.scale;\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(() => {\r\n handler.apply(this, arguments);\r\n }, parseInt(modifiers.debounce, 10) || 0);\r\n } else if (modifiers.throttle) {\r\n if (!throttle) {\r\n throttle = true;\r\n handler.apply(this, arguments);\r\n setTimeout(() => {\r\n throttle = false\r\n }, parseInt(modifiers.throttle, 10) || 0);\r\n }\r\n } else {\r\n return handler.apply(this, arguments);\r\n }\r\n };\r\n\r\n modifiers = modifiers || {};\r\n\r\n if (window.Dom7 && target.nodeType === 1) {\r\n Dom7(target)[modifiers.once ? 'once' : 'on'](eventType.replace(/-/g, '.'), listener, !!modifiers.capture);\r\n } else if (window.jQuery && !modifiers.capture) {\r\n jQuery(target)[modifiers.once ? 'one' : 'on'](eventType.replace(/-/g, '.'), listener);\r\n } else {\r\n target.addEventListener(eventType.replace(/-/g, '.'), listener, {\r\n capture: !!modifiers.capture,\r\n once: !!modifiers.once,\r\n passive: !!modifiers.passive\r\n });\r\n }\r\n};\r\n","dmx.fileUtils = {\r\n\r\n fileReader (file, readAs) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = () => reject(reader.error);\r\n reader[readAs](file);\r\n });\r\n },\r\n\r\n blobToArrayBuffer: function(blob) {\r\n return dmx.fileUtils.fileReader(blob, 'readAsArrayBuffer');\r\n },\r\n \r\n blobToBinaryString: function(blob) {\r\n return dmx.fileUtils.fileReader(blob, 'readAsBinaryString');\r\n },\r\n\r\n blobToDataURL: function(blob) {\r\n return dmx.fileUtils.fileReader(blob, 'readAsDataURL');\r\n },\r\n \r\n blobToBase64String: function(blob) {\r\n return dmx.fileUtils.fileReader(blob, 'readAsDataURL').then(dataURL =>\r\n dataURL.substring(dataURL.indexOf(',') + 1)\r\n );\r\n },\r\n\r\n arrayBufferToBlob: function(arrayBuffer, type) {\r\n return Promise.resolve(new Blob([arrayBuffer], { type }));\r\n },\r\n\r\n binaryStringToBlob: function(binary, type) {\r\n const bytes = Uint8Array.from(binary, c => c.charCodeAt(0));\r\n return Promise.resolve(new Blob([bytes], { type }));\r\n }, \r\n \r\n dataURLToBlob: function(dataURL) {\r\n const { data, type } = dmx.fileUtils.parseDataURL(dataURL);\r\n return dmx.fileUtils.base64StringToBlob(data, type);\r\n },\r\n\r\n base64StringToBlob: function(base64String, type) {\r\n const binary = window.atob(base64String);\r\n return dmx.fileUtils.binaryStringToBlob(binary, type);\r\n },\r\n\r\n parseDataURL: function(dataURL) {\r\n const match = dataURL.match(/^data:(.*?)(;base64)?,(.*)$/);\r\n return {\r\n mediaType: match[1],\r\n base64: !!match[2],\r\n data: match[3],\r\n type: match[1].split(';')[0],\r\n };\r\n },\r\n\r\n parseMediaType: function(mediaType) {\r\n const match = mediaType.match(/^([^/]+)\\/([^+;]+)(?:\\+([^;]+))?(?:;(.*))?$/);\r\n return {\r\n type: match[1],\r\n subtype: match[2],\r\n suffix: match[3],\r\n parameters: match[4] ? match[4].split(';').reduce((obj, param) => {\r\n const [key, value] = param.split('=');\r\n obj[key] = value;\r\n return obj;\r\n }, {}) : {},\r\n };\r\n },\r\n\r\n};\r\n\r\n\r\n","// Trigger event on pushState and replaceState\r\n// https://stackoverflow.com/questions/5129386/how-to-detect-when-history-pushstate-and-history-replacestate-are-used/25673911#25673911\r\n{\r\n const _wr = function(type) {\r\n const orig = history[type];\r\n\r\n return function() {\r\n const rv = orig.apply(this, arguments);\r\n const e = new Event(type.toLowerCase());\r\n e.arguments = arguments;\r\n window.dispatchEvent(e);\r\n return rv;\r\n };\r\n };\r\n\r\n history.pushState = _wr('pushState');\r\n history.replaceState = _wr('replaceState');\r\n}\r\n\r\nwindow.onpopstate = function(e) {\r\n if (e.state && e.state.title) {\r\n document.title = e.state.title;\r\n }\r\n};\r\n\r\ndocument.documentElement.style.visibility = 'hidden';\r\n\r\ndmx.ready(() => {\r\n // First execute all startup scripts that are registered\r\n const startup = Promise.all(dmx.__startup);\r\n\r\n // Now we can start App Connect\r\n startup.then(() => {\r\n if (dmx.app) {\r\n throw Error('App already running!');\r\n }\r\n\r\n history.replaceState({ title: document.title }, '');\r\n\r\n const root = document.querySelector(':root[dmx-app], [dmx-app], :root[is=\"dmx-app\"], [is=\"dmx-app\"]');\r\n\r\n if (!root) {\r\n throw Error('App root not found!');\r\n }\r\n\r\n const App = dmx.Component('app');\r\n\r\n dmx.app = new App(root, dmx.global);\r\n\r\n document.documentElement.style.visibility = '';\r\n }).catch((err) => {\r\n // Something went wrong, log error and show page\r\n console.error(err);\r\n document.documentElement.style.visibility = '';\r\n })\r\n});\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 // Prototype polution protection\r\n if (prop == '__proto__') continue;\r\n\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.parseDate = function(obj) {\r\n if (typeof obj == 'string') {\r\n var d, struct, offset = 0, n = [1,4,5,6,7,10,11];\r\n\r\n if (obj.toLowerCase() == 'now') {\r\n return new Date();\r\n }\r\n\r\n if ((struct = /^(\\d{4}|[+\\-]\\d{6})(?:-(\\d{2})(?:-(\\d{2}))?)?(?:[T ](\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?)?$/.exec(obj))) {\r\n for (var i = 0, k; (k = n[i]); ++i) {\r\n struct[k] = +struct[k] || 0;\r\n }\r\n\r\n struct[2] = (+struct[2] || 1) - 1;\r\n struct[3] = +struct[3] || 1;\r\n\r\n if (struct[8] === undefined) {\r\n return new Date(struct[1], struct[2], struct[3], struct[4], struct[5], struct[6], struct[7]);\r\n } else {\r\n if (struct[8] !== 'Z' && struct[9] !== undefined) {\r\n offset = struct[10] * 60 + struct[11];\r\n if (struct[9] === '+') offset = 0 - offset;\r\n }\r\n\r\n return new Date(Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + offset, struct[6], struct[7]));\r\n }\r\n } else if ((struct = /^(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?$/.exec(obj))) {\r\n var d = new Date();\r\n if (struct[5] === 'Z') {\r\n d.setUTCHours(+struct[1] || 0);\r\n d.setUTCMinutes(+struct[2] || 0);\r\n d.setUTCSeconds(+struct[3] || 0);\r\n d.setUTCMilliseconds(+struct[4] || 0);\r\n } else {\r\n d.setHours(+struct[1] || 0);\r\n d.setMinutes(+struct[2] || 0);\r\n d.setSeconds(+struct[3] || 0);\r\n d.setMilliseconds(+struct[4] || 0);\r\n }\r\n return d;\r\n }\r\n\r\n return new Date(obj);\r\n } else if (typeof obj == 'number') {\r\n return new Date(obj * 1000);\r\n } else {\r\n return new Date('');\r\n }\r\n};\r\n\r\ndmx.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 const items = [];\r\n\r\n if (repeat) {\r\n if (typeof repeat == 'object') {\r\n if (Array.isArray(repeat)) {\r\n for (let i = 0, l = repeat.length; i < l; i++) {\r\n const item = dmx.clone(repeat[i]);\r\n items.push(Object.assign({}, item, {\r\n $key: i,\r\n $index: i,\r\n $value: item\r\n }));\r\n }\r\n } else {\r\n let i = 0;\r\n for (const key in repeat) {\r\n if (repeat.hasOwnProperty(key)) {\r\n const item = dmx.clone(repeat[key]);\r\n items.push(Object.assign({}, item, {\r\n $key: key,\r\n $index: i,\r\n $value: item\r\n }));\r\n i++;\r\n }\r\n }\r\n }\r\n } else if (typeof repeat == 'number') {\r\n for (let 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 if (node.tagName == 'FORM') {\r\n Array.from(node.elements).forEach(node => node.dirty = true);\r\n }\r\n\r\n return node.checkValidity();\r\n};\r\n\r\ndmx.validateReset = function(node) {\r\n // reset validation?\r\n};\r\n\r\n(() => {\r\n const queue = [];\r\n\r\n window.addEventListener('message', event => {\r\n if (event.source === window && event.data === 'dmxNextTick' && queue.length) {\r\n event.stopPropagation();\r\n while (queue.length) {\r\n const task = queue.shift();\r\n task.fn.call(task.context);\r\n };\r\n }\r\n }, true);\r\n\r\n dmx.nextTick = (fn, context) => {\r\n queue.push({ fn, context });\r\n window.postMessage('dmxNextTick', '*');\r\n }\r\n})();\r\n\r\ndmx.requestUpdate = function() {\r\n console.warn('dmx.requestUpdate is deprecated.');\r\n};\r\n","// cordova init\r\n\r\nif (document.location.protocol == 'app:') { // cordova detection by checking protocol\r\n dmx.Startup(new Promise(resolve => document.addEventListener('deviceready', resolve)));\r\n}","(() => {\r\n /*! (c) Andrea Giammarchi */\r\n \r\n const {is} = Object;\r\n \r\n let batches;\r\n \r\n /**\r\n * Execute a callback that will not side-effect until its top-most batch is\r\n * completed.\r\n * @param {() => void} callback a function that batches changes to be notified\r\n * through signals.\r\n */\r\n const batch = callback => {\r\n const prev = batches;\r\n batches = prev || [];\r\n try {\r\n callback();\r\n if (!prev)\r\n for (const {value} of batches);\r\n }\r\n finally { batches = prev }\r\n };\r\n dmx.batch = batch;\r\n \r\n /**\r\n * A signal with a value property also exposed via toJSON, toString and valueOf.\r\n * When created via computed, the `value` property is **readonly**.\r\n * @template T\r\n */\r\n class Signal {\r\n constructor(value) {\r\n this._ = value;\r\n }\r\n \r\n /** @returns {T} */\r\n toJSON() { return this.value }\r\n \r\n /** @returns {string} */\r\n toString() { return String(this.value) }\r\n \r\n /** @returns {T} */\r\n valueOf() { return this.value }\r\n }\r\n dmx.Signal = Signal\r\n \r\n let computedSignal;\r\n /**\r\n * @template T\r\n * @extends {Signal}\r\n */\r\n class Computed extends Signal {\r\n /**\r\n * @private\r\n * @type{Reactive}\r\n */\r\n s\r\n /**\r\n * @param {(v: T) => T} _ \r\n * @param {T} v \r\n * @param {{ equals?: Equals }} o\r\n * @param {boolean} f \r\n */\r\n constructor(_, v, o, f) {\r\n super(_);\r\n this.f = f; // is effect?\r\n this.$ = true; // should update (\"value for money\")\r\n this.r = new Set; // related signals\r\n this.s = new Reactive(v, o); // signal\r\n }\r\n peek() { return this.s.peek() }\r\n get value() {\r\n if (this.$) {\r\n const prev = computedSignal;\r\n computedSignal = this;\r\n try { this.s.value = this._(this.s._) }\r\n finally {\r\n this.$ = false;\r\n computedSignal = prev;\r\n }\r\n }\r\n return this.s.value;\r\n }\r\n }\r\n \r\n const defaults = {async: false, equals: true};\r\n \r\n /**\r\n * Returns a read-only Signal that is invoked only when any of the internally\r\n * used signals, as in within the callback, is unknown or updated.\r\n * @type {(fn: (v: T) => R, value?: V, options?: { equals?: Equals }) => ComputedSignal}\r\n */\r\n const computed = (fn, value, options = defaults) =>\r\n new Computed(fn, value, options, false);\r\n dmx.computed = computed;\r\n \r\n let outerEffect;\r\n const empty = [];\r\n const noop = () => {};\r\n const dispose = ({s}) => {\r\n if (typeof s._ === 'function')\r\n s._ = s._();\r\n };\r\n \r\n class FX extends Computed {\r\n constructor(_, v, o) {\r\n super(_, v, o, true);\r\n this.e = empty;\r\n }\r\n run() {\r\n this.$ = true;\r\n this.value;\r\n return this;\r\n }\r\n stop() {\r\n this._ = noop;\r\n for (const s of this.r) {\r\n // remove computed from related signals\r\n s.c.delete(this);\r\n }\r\n this.r.clear();\r\n this.s.c.clear();\r\n }\r\n }\r\n dmx.FX = FX\r\n \r\n class Effect extends FX {\r\n constructor(_, v, o) {\r\n super(_, v, o);\r\n this.i = 0; // index\r\n this.a = !!o.async; // async\r\n this.m = true; // microtask\r\n this.e = []; // effects\r\n // \"I am effects\" ^_^;;\r\n }\r\n get value() {\r\n this.a ? this.async() : this.sync();\r\n }\r\n async() {\r\n if (this.m) {\r\n this.m = false;\r\n queueMicrotask(() => {\r\n this.m = true;\r\n this.sync();\r\n });\r\n }\r\n }\r\n sync() {\r\n const prev = outerEffect;\r\n (outerEffect = this).i = 0;\r\n dispose(this);\r\n super.value;\r\n outerEffect = prev;\r\n }\r\n stop() {\r\n super.stop();\r\n dispose(this);\r\n for (const effect of this.e.splice(0))\r\n effect.stop();\r\n }\r\n }\r\n dmx.Effect = Effect\r\n \r\n /**\r\n * Invokes a function when any of its internal signals or computed values change.\r\n * \r\n * Returns a dispose callback.\r\n * @template T\r\n * @type {(fn: (v: T) => T, value?: T, options?: { async?: boolean }) => () => void}\r\n */\r\n const effect = (callback, value, options = defaults) => {\r\n let unique;\r\n if (outerEffect) {\r\n const {i, e} = outerEffect;\r\n const isNew = i === e.length;\r\n // bottleneck:\r\n // there's literally no way to optimize this path *unless* the callback is\r\n // already a known one. however, latter case is not really common code so\r\n // the question is: should I optimize this more than this? 'cause I don't\r\n // think the amount of code needed to understand if a callback is *likely*\r\n // the same as before makes any sense + correctness would be trashed.\r\n if (isNew || e[i]._ !== callback) {\r\n if (!isNew) e[i].stop();\r\n e[i] = new Effect(callback, value, options).run();\r\n }\r\n unique = e[i];\r\n outerEffect.i++;\r\n }\r\n else\r\n unique = new Effect(callback, value, options).run();\r\n return () => { unique.stop() };\r\n };\r\n dmx.effect = effect;\r\n \r\n const skip = () => false;\r\n /**\r\n * @template T\r\n * @extends {Signal}\r\n */\r\n class Reactive extends Signal {\r\n constructor(_, {equals}) {\r\n super(_)\r\n this.c = new Set; // computeds\r\n this.s = equals === true ? is : (equals || skip); // (don't) skip updates\r\n }\r\n /**\r\n * Allows to get signal.value without subscribing to updates in an effect\r\n * @returns {T}\r\n */\r\n peek() { return this._ }\r\n /** @returns {T} */\r\n get value() {\r\n if (computedSignal) {\r\n this.c.add(computedSignal);\r\n computedSignal.r.add(this);\r\n }\r\n return this._;\r\n }\r\n set value(_) {\r\n const prev = this._;\r\n if (!this.s((this._ = _), prev)) {\r\n if (this.c.size) {\r\n const effects = [];\r\n const stack = [this];\r\n for (const signal of stack) {\r\n for (const computed of signal.c) {\r\n if (!computed.$ && computed.r.has(signal)) {\r\n computed.r.clear();\r\n computed.$ = true;\r\n if (computed.f) {\r\n effects.push(computed);\r\n const stack = [computed];\r\n for (const c of stack) {\r\n for (const effect of c.e) {\r\n effect.r.clear();\r\n effect.$ = true;\r\n stack.push(effect);\r\n }\r\n }\r\n }\r\n else\r\n stack.push(computed.s);\r\n }\r\n }\r\n }\r\n for (const effect of effects)\r\n batches ? batches.push(effect) : effect.value;\r\n }\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Returns a writable Signal that side-effects whenever its value gets updated.\r\n * @template T\r\n * @type {(initialValue: T, options?: { equals?: Equals }) => ReactiveSignal}\r\n */\r\n const signal = (value, options = defaults) => new Reactive(value, options);\r\n dmx.signal = signal;\r\n \r\n /**\r\n * @template [T=any]\r\n * @typedef {boolean | ((prev: T, next: T) => boolean)} Equals\r\n */\r\n \r\n /**\r\n * @public\r\n * @template T\r\n * @typedef {Omit, '_'|'s'|'c'>} ReactiveSignal\r\n */\r\n \r\n /**\r\n * @public\r\n * @template T\r\n * @typedef {Omit, '$'|'s'|'f'|'r'|'_'>} ComputedSignal\r\n */\r\n })();","dmx.signalProxy = function (o = {}) {\r\n const signals = new Map();\r\n const equals = (a, b) => {\r\n return dmx.equal(a, b);\r\n };\r\n\r\n return new Proxy(o, {\r\n has (target, prop) {\r\n // when checking for a prop, always return true\r\n return true;\r\n },\r\n\r\n get (target, prop, receiver) {\r\n const value = Reflect.get(target, prop, receiver);\r\n\r\n if (typeof value == 'function' || typeof prop != 'string' || prop.startsWith('_')) {\r\n // ignore private props\r\n return value;\r\n }\r\n\r\n if (!signals.has(prop)) {\r\n signals.set(prop, dmx.signal(value, { equals }));\r\n }\r\n\r\n return signals.get(prop).value;\r\n },\r\n\r\n set (target, prop, value, receiver) {\r\n const ok = Reflect.set(target, prop, value, receiver);\r\n\r\n if (ok) {\r\n if (signals.has(prop)) {\r\n signals.get(prop).value = value;\r\n }\r\n }\r\n\r\n return ok;\r\n },\r\n\r\n deleteProperty (target, prop) {\r\n const ok = Reflect.deleteProperty(target, prop);\r\n\r\n if (ok && signals.has(prop)) {\r\n signals.get(prop).value = undefined;\r\n }\r\n\r\n return ok;\r\n }\r\n });\r\n};","(() => {\r\n\r\n class Scope {\r\n\r\n constructor (initialData = {}, parent = null) {\r\n if (typeof initialData !== 'object') {\r\n initialData = { $value: initialData };\r\n }\r\n\r\n this.data = dmx.signalProxy();\r\n Object.assign(this.data, initialData);\r\n this.parent = parent;\r\n this.seed = Math.random();\r\n }\r\n\r\n get (name) {\r\n if (this.data[name] !== undefined) {\r\n return this.data[name];\r\n }\r\n\r\n if (this.parent) {\r\n if (name == 'parent') {\r\n return this.parent.data;\r\n }\r\n\r\n return this.parent.get(name);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n set (name, value) {\r\n if (typeof name === 'object') {\r\n dmx.batch(() => {\r\n for (var prop in name) {\r\n if (name.hasOwnProperty(prop)) {\r\n this.set(prop, name[prop]);\r\n }\r\n }\r\n });\r\n } else {\r\n this.data[name] = value;\r\n }\r\n }\r\n\r\n del (name) {\r\n delete this.data[name];\r\n }\r\n\r\n }\r\n\r\n dmx.global = new Scope();\r\n dmx.DataScope = function (data, parent) {\r\n return new Scope(data, parent || dmx.global);\r\n };\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 if (attrs.hasOwnProperty(attr)) {\r\n this[i].setAttribute(attr, attrs[attr]);\r\n }\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 if (props.hasOwnProperty(prop)) {\r\n this[i][prop] = props[prop];\r\n }\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 if (props.hasOwnProperty(prop)) {\r\n this[i].style.setProperty(prop, props[prop]);\r\n }\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 for (const child of Array.from(node.childNodes)) {\r\n dmx.dom.walk(child, 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 node.remove()\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","dmx._CACHE = new Map();\r\n\r\ndmx._OPERATORS = new Map([\r\n ['{', 'L_CURLY'],\r\n ['}', 'R_CURLY'],\r\n ['[', 'L_BRACKET'],\r\n [']', 'R_BRACKET'],\r\n ['(', 'L_PAREN'],\r\n [')', 'R_PAREN'],\r\n ['.', 'PERIOD'],\r\n [',', 'COMMA'],\r\n [';', 'SEMI'], // not used\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\ndmx._ESCAPE_CHARS = new Map([\r\n ['n', '\\n'],\r\n ['r', '\\r'],\r\n ['t', '\\t'],\r\n ['b', '\\b'],\r\n ['f', '\\f'],\r\n ['v', '\\v'],\r\n ['0', '\\0'],\r\n [\"'\", \"'\"],\r\n ['`', '`'],\r\n ['\"', '\"'],\r\n]);\r\n\r\ndmx._EXPRESSIONS = new Map([\r\n ['**', (a, b) => Math.pow(a(), b())],\r\n ['??', (a, b) => (a = a(), a == null ? b() : a)],\r\n ['in', (a, b) => a() in b()],\r\n ['?', (a, b, c) => (a() ? b() : c())],\r\n ['+', (a, b) => (a = a(), b = b(), a == null ? b : b == null ? a : a + b)],\r\n ['-', (a, b) => a() - b()],\r\n ['*', (a, b) => a() * b()],\t\r\n ['/', (a, b) => a() / b()],\r\n ['%', (a, b) => a() % b()],\r\n ['===', (a, b) => a() === b()],\r\n ['!==', (a, b) => a() !== b()],\r\n ['==', (a, b) => a() == b()],\r\n ['!=', (a, b) => a() != b()],\r\n ['<', (a, b) => a() < b()],\r\n ['>', (a, b) => a() > b()],\r\n ['<=', (a, b) => a() <= b()],\r\n ['>=', (a, b) => a() >= b()],\r\n ['&&', (a, b) => a() && b()],\r\n ['||', (a, b) => a() || b()],\r\n ['&', (a, b) => a() & b()],\r\n ['|', (a, b) => a() | b()],\r\n ['^', (a, b) => a() ^ b()],\r\n ['<<', (a, b) => a() << b()],\r\n ['>>', (a, b) => a() >> b()],\r\n ['>>>', (a, b) => a() >>> b()],\r\n ['~', (a) => ~a()],\r\n ['!', (a) => !a()],\r\n]);\r\n\r\ndmx._RESERVED = new Map([\r\n ['this', (scope) => () => scope.data],\r\n ['true', () => () => true],\r\n ['false', () => () => false],\r\n ['null', () => () => null],\r\n ['undefined', () => () => undefined],\r\n ['_', () => () => ({ __dmxScope__: true })],\r\n]);\r\n\r\ndmx._SUPPORTED_TYPES = new Map([\r\n ['Boolean', 'boolean'],\r\n ['Null', 'null'],\r\n ['Undefined', 'undefined'],\r\n ['Number', 'number'],\r\n ['BigInt', 'number'],\r\n ['Decimal', 'number'], // requires Decimal.js\r\n ['String', 'string'],\r\n ['Date', 'date'],\r\n ['RegExp', 'regexp'],\r\n ['Blob', 'blob'],\r\n ['File', 'file'],\r\n ['FileList', 'filelist'],\r\n ['ArrayBuffer', 'arraybuffer'],\r\n ['ImageBitmap', 'imagebitmap'],\r\n ['ImageData', 'imagedata'],\r\n ['Array', 'array'],\r\n ['Object', 'object'],\r\n ['Map', 'map'],\r\n ['Set', 'set'],\r\n ['DataView', 'array'],\r\n ['Int8Array', 'array'],\r\n ['Uint8Array', 'array'],\r\n ['Uint8ClampedArray', 'array'],\r\n ['Int16Array', 'array'],\r\n ['Uint16Array', 'array'],\r\n ['Int32Array', 'array'],\r\n ['Uint32Array', 'array'],\r\n ['Float32Array', 'array'],\r\n ['Float64Array', 'array'],\r\n ['BigInt64Array', 'array'],\r\n ['BigUint64Array', 'array'],\r\n]);\r\n\r\ndmx.getType = function (obj) {\r\n return dmx._SUPPORTED_TYPES.get(Object.prototype.toString.call(obj).slice(8, -1));\r\n};\r\n\r\ndmx.lexer = function (expression) {\r\n if (dmx._CACHE.has(expression)) {\r\n return dmx._CACHE.get(expression);\r\n }\r\n\r\n let tokens = [], token, name, start, index = 0, op = true, ch, ch2, ch3;\r\n\r\n while (index < expression.length) {\r\n start = index;\r\n\r\n ch = read();\r\n\r\n if (isQuote(ch)) {\r\n name = 'STRING';\r\n token = readString(ch);\r\n op = false;\r\n } else if ((isDigid(ch) || (is('.') && peek() && isDigid(peek()))) && op) {\r\n name = 'NUMBER';\r\n token = readNumber();\r\n op = false;\r\n } else if (isAlpha(ch) && op) {\r\n name = 'IDENT';\r\n token = readIdent();\r\n if (is('(')) {\r\n name = 'METHOD';\r\n }\r\n op = false;\r\n } else if (is('/') && op && (token == '(' || token == ',' || token == '?' || token == ':') && testRegexp()) {\r\n name = 'REGEXP';\r\n token = readRegexp();\r\n op = false;\r\n } else if (isWhitespace(ch)) {\r\n index++;\r\n continue;\r\n } else if ((ch3 = read(3)) && dmx._OPERATORS.has(ch3)) {\r\n name = dmx._OPERATORS.get(ch3);\r\n token = ch3;\r\n op = true;\r\n index += 3;\r\n } else if ((ch2 = read(2)) && dmx._OPERATORS.has(ch2)) {\r\n name = dmx._OPERATORS.get(ch2);\r\n token = ch2;\r\n op = true;\r\n index += 2;\r\n } else if (dmx._OPERATORS.has(ch)) {\r\n name = dmx._OPERATORS.get(ch);\r\n token = ch;\r\n op = true;\r\n index++;\r\n } else {\r\n throw new Error(`Unexpected token \"${ch}\" at index ${index} in expression: ${expression}`);\r\n }\r\n\r\n tokens.push({ name, index: start, value: token });\r\n }\r\n\r\n dmx._CACHE.set(expression, tokens);\r\n\r\n return tokens;\r\n\r\n function read (n) {\r\n return n > 1 ? expression.slice(index, index + n) : expression[index];\r\n }\r\n\r\n function peek (n = 1) {\r\n return index + n < expression.length ? expression[index + n] : false;\r\n }\r\n\r\n function is (chars) {\r\n return chars.includes(ch);\r\n }\r\n\r\n function isQuote (ch) {\r\n return ch == '\"' || ch == \"'\" || ch == '`';\r\n }\r\n\r\n function isDigid (ch) {\r\n return ch >= '0' && ch <= '9';\r\n }\r\n\r\n function isAlpha (ch) {\r\n return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch === '_' || ch === '$';\r\n }\r\n\r\n function isAlphaNum (ch) {\r\n return isAlpha(ch) || isDigid(ch);\r\n }\r\n\r\n function isWhitespace (ch) {\r\n return ch == ' ' || ch == '\\r' || ch == '\\t' || ch == '\\n' || ch == '\\v' || ch == '\\u00A0';\r\n }\r\n\r\n function isExpOperator (ch) {\r\n return ch == '-' || ch == '+' || isDigid(ch);\r\n }\r\n\r\n function readString (quote) {\r\n let escape = false, result = '';\r\n\r\n index++;\r\n\r\n while (index < expression.length) {\r\n ch = read();\r\n\r\n if (escape) {\r\n if (ch == 'u') {\r\n index++;\r\n const hex = read(4);\r\n if (!hex.match(/[\\da-f]{4}/i)) {\r\n throw new Error(`Invalid unicode escape [\\\\u${hex}] at index ${index} in expression: ${expression}`);\r\n }\r\n result += String.fromCharCode(parseInt(hex, 16));\r\n index += 4;\r\n } else {\r\n result += dmx._ESCAPE_CHARS.has(ch) ? dmx._ESCAPE_CHARS.get(ch) : ch;\r\n }\r\n\r\n escape = false;\r\n } else if (ch == '\\\\') {\r\n escape = true;\r\n } else if (ch == quote) {\r\n index++;\r\n if (quote == '`') {\r\n result = '{{' + result + '}}';\r\n }\r\n return result;\r\n } else {\r\n result += ch;\r\n }\r\n\r\n index++;\r\n }\r\n\r\n throw new Error(`Unterminated string in expression: ${expression}`);\r\n }\r\n\r\n function readNumber () {\r\n let result = '', exponent = false;\r\n\r\n while (index < expression.length) {\r\n ch = read();\r\n\r\n if (is('_') && peek() && isDigid(peek())) {\r\n index++;\r\n continue;\r\n }\r\n\r\n if ((is('.') && peek() && isDigid(peek())) || isDigid(ch)) {\r\n result += ch;\r\n } else {\r\n const next = peek();\r\n\r\n if (is('eE') && isExpOperator(next)) {\r\n result += 'e';\r\n exponent = true;\r\n } else if (isExpOperator(ch) && next && isDigid(next) && exponent) {\r\n result += ch;\r\n exponent = false;\r\n } else if (isExpOperator(ch) && (!next || !isDigid(next)) && exponent) {\r\n throw new Error(`Invalid exponent in expression: ${expression}`);\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n index++;\r\n }\r\n\r\n if (read() == 'n') {\r\n index++;\r\n return BigInt(result);\r\n }\r\n\r\n if (read() == 'm') {\r\n index++;\r\n if (window.Decimal) {\r\n return new Decimal(result);\r\n } else {\r\n console.warn('Decimal number in expression but library not found');\r\n }\r\n }\r\n\r\n return +result;\r\n }\r\n\r\n function readIdent () {\r\n let result = '';\r\n\r\n while (index < expression.length) {\r\n ch = read();\r\n\r\n if (isAlphaNum(ch)) {\r\n result += ch;\r\n } else {\r\n break;\r\n }\r\n\r\n index++;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function readRegexp () {\r\n let result = '', modifiers = '', escape = false;\r\n\r\n index++;\r\n\r\n while (index < expression.length) {\r\n ch = read();\r\n\r\n if (escape) {\r\n escape = false;\r\n } else if (ch == '\\\\') {\r\n escape = true;\r\n } else if (ch == '/') {\r\n index++;\r\n\r\n while ('ign'.includes(ch = read())) {\r\n modifiers += ch;\r\n index++;\r\n }\r\n\r\n return new RegExp(result, modifiers);\r\n }\r\n\r\n result += ch;\r\n index++;\r\n }\r\n\r\n throw new Error(`Unterminated regexp in expression: ${expression}`);\r\n }\r\n\r\n function testRegexp () {\r\n let i = index, ok = true;\r\n\r\n try {\r\n readRegexp();\r\n } catch (e) {\r\n ok = false;\r\n }\r\n\r\n index = i;\r\n ch = '/';\r\n\r\n return ok;\r\n }\r\n};\r\n\r\ndmx.parse = function (expression, scope = dmx.app) {\r\n expression = expression.trim();\r\n\r\n if (expression.includes('{{')) {\r\n if (expression.startsWith('{{') && expression.endsWith('}}') && !expression.slice(2).includes('{{')) {\r\n expression = expression.slice(2, -2);\r\n } else {\r\n return expression.replace(/{{(.+?)}}/g, (_, expression) => {\r\n const result = dmx.parse(expression, scope);\r\n return result == null ? '' : result;\r\n });\r\n }\r\n }\r\n\r\n if (!expression) return undefined;\r\n\r\n let tokens, context, result;\r\n\r\n try {\r\n tokens = Array.from(dmx.lexer(expression));\r\n result = doParse();\r\n } catch (e) {\r\n console.error('Error parsing expression:', expression, e);\r\n }\r\n\r\n return result;\r\n\r\n function read () {\r\n if (tokens.length === 0) {\r\n throw new Error(`Unexpected end of expression: ${expression}`);\r\n }\r\n\r\n return tokens[0];\r\n }\r\n\r\n function peek (e) {\r\n if (tokens.length > 0) {\r\n const token = tokens[0];\r\n\r\n if (!e || token.name == e) {\r\n return token;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function expect (e) {\r\n const token = peek(e);\r\n\r\n if (token) {\r\n tokens.shift();\r\n return token;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function consume (e) {\r\n if (!expect(e)) {\r\n throw new Error(`Expected ${e} at index ${tokens[0].index} in expression: ${expression}`);\r\n }\r\n }\r\n\r\n function fn (exp) {\r\n const args = Array.prototype.slice.call(arguments, 1);\r\n\r\n return () => {\r\n if (dmx._EXPRESSIONS.has(exp)) {\r\n return dmx._EXPRESSIONS.get(exp).apply(scope, args);\r\n }\r\n\r\n return exp;\r\n };\r\n }\r\n\r\n function doParse () {\r\n const a = [];\r\n\r\n while (true) {\r\n if (tokens.length > 0 && !(peek('R_PAREN') || peek('R_BRACKET') || peek('R_CURLY') || peek('COMMA') || peek('SEMI'))) {\r\n a.push(parseExpression());\r\n }\r\n\r\n if (!(expect('COMMA') || expect('SEMI'))) {\r\n return (a.length == 1 ? a[0] : b)();\r\n }\r\n }\r\n\r\n function b () {\r\n let result;\r\n\r\n for (let i = 0; i < a.length; i++) {\r\n const e = a[i];\r\n if (e) result = e();\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n\r\n function parseExpression () {\r\n return parseConditional();\r\n }\r\n\r\n function parseConditional () {\r\n const a = parseLogicalOr();\r\n\r\n if (expect('QUESTION')) {\r\n const b = parseExpression();\r\n consume('COLON');\r\n const c = parseExpression();\r\n\r\n return fn('?', a, b, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseLogicalOr () {\r\n let a = parseLogicalAnd();\r\n\r\n while (expect('LOGICAL_OR')) {\r\n const b = parseLogicalAnd();\r\n a = fn('||', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseLogicalAnd () {\r\n let a = parseBitwiseOr();\r\n\r\n while (expect('LOGICAL_AND')) {\r\n const b = parseBitwiseOr();\r\n a = fn('&&', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseBitwiseOr () {\r\n let a = parseBitwiseXor();\r\n\r\n while (expect('BITWISE_OR')) {\r\n const b = parseBitwiseXor();\r\n a = fn('|', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseBitwiseXor () {\r\n let a = parseBitwiseAnd();\r\n\r\n while (expect('BITWISE_XOR')) {\r\n const b = parseBitwiseAnd();\r\n a = fn('^', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseBitwiseAnd () {\r\n let a = parseEquality();\r\n\r\n while (expect('BITWISE_AND')) {\r\n const b = parseEquality();\r\n a = fn('&', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseEquality () {\r\n let a = parseRelational(), b;\r\n\r\n if ((b = expect('EQUALITY'))) {\r\n const c = parseEquality();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseRelational () {\r\n let a = parseBitwiseShift(), b;\r\n\r\n if ((b = expect('RELATIONAL'))) {\r\n const c = parseRelational();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseBitwiseShift () {\r\n let a = parseAddictive(), b;\r\n\r\n if ((b = expect('BITWISE_SHIFT'))) {\r\n const c = parseBitwiseShift();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseAddictive () {\r\n let a = parseMultiplicative(), b;\r\n\r\n while ((b = expect('ADDICTIVE'))) {\r\n const c = parseMultiplicative();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseMultiplicative () {\r\n let a = parseUnary(), b;\r\n\r\n while ((b = expect('MULTIPLICATIVE'))) {\r\n const c = parseUnary();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseUnary () {\r\n let a;\r\n\r\n if ((a = expect('ADDICTIVE'))) {\r\n if (a.value == '+') {\r\n return parsePrimary();\r\n } else {\r\n return fn(a.value, () => 0, parsePrimary());\r\n }\r\n } else if ((a = expect('LOGICAL_NOT'))) {\r\n return fn(a.value, parseUnary());\r\n } else if ((a = expect('BITWISE_NOT'))) {\r\n return fn(a.value, parseUnary());\r\n } else {\r\n return parsePrimary();\r\n }\r\n }\r\n\r\n function parsePrimary () {\r\n let result, next;\r\n\r\n if (expect('L_PAREN')) {\r\n result = parseExpression();\r\n consume('R_PAREN');\r\n } else if (expect('L_CURLY')) {\r\n const obj = {};\r\n\r\n if (read().name != 'R_CURLY') {\r\n do {\r\n const key = expect().value;\r\n consume('COLON');\r\n obj[key] = parseExpression()();\r\n } while (expect('COMMA'));\r\n }\r\n\r\n result = fn(obj);\r\n\r\n consume('R_CURLY');\r\n } else if (expect('L_BRACKET')) {\r\n const arr = [];\r\n\r\n if (read().name != 'R_BRACKET') {\r\n do {\r\n arr.push(parseExpression()());\r\n } while (expect('COMMA'));\r\n }\r\n\r\n result = fn(arr);\r\n\r\n consume('R_BRACKET');\r\n } else if (expect('PERIOD')) {\r\n result = peek() ? parseMember(fn(scope.data)) : fn(scope.data);\r\n } else {\r\n const token = expect();\r\n\r\n if (token === false) {\r\n throw new Error(`Unexpected end of expression: ${expression}`);\r\n }\r\n\r\n if (token.name == 'IDENT') {\r\n result = dmx._RESERVED.has(token.value) ? dmx._RESERVED.get(token.value)(scope) : () => scope.get(token.value);\r\n } else if (token.name == 'METHOD') {\r\n result = fn(dmx.__formatters.global[token.value] || (() => {\r\n console.warn(`Method \"${token.value}\" not found in expression: ${expression}`);\r\n return undefined;\r\n })\r\n );\r\n } else {\r\n result = () => token.value;\r\n }\r\n }\r\n\r\n while ((next = expect('L_PAREN') || expect('L_BRACKET') || expect('PERIOD'))) {\r\n if (next.value == '(') {\r\n result = parseCall(result, context);\r\n } else if (next.value == '[') {\r\n context = result;\r\n result = parseIndex(result, context);\r\n } else if (next.value == '.') {\r\n context = result;\r\n result = parseMember(result, context);\r\n } else {\r\n throw new Error(`Unexpected token \"${next.value}\" at index ${next.index} in expression: ${expression}`);\r\n }\r\n }\r\n\r\n context = null;\r\n\r\n return result;\r\n }\r\n\r\n function parseCall (func, context) {\r\n const argsFn = [];\r\n\r\n if (read().name != 'R_PAREN') {\r\n do {\r\n argsFn.push(parseExpression());\r\n } while (expect('COMMA'));\r\n }\r\n\r\n consume('R_PAREN');\r\n\r\n return () => {\r\n let args = [];\r\n\r\n if (context) {\r\n args.push(context());\r\n }\r\n\r\n for (let f of argsFn) {\r\n args.push(f());\r\n }\r\n\r\n try {\r\n return (func() || dmx.noop).apply(scope, args);\r\n } catch (e) {\r\n console.warn(`Error calling method ${func().name} in expression: ${expression}`, e);\r\n return undefined;\r\n }\r\n };\r\n }\r\n\r\n function parseIndex (object) {\r\n const indexFn = parseExpression();\r\n\r\n consume('R_BRACKET');\r\n\r\n return () => {\r\n const obj = object();\r\n const index = indexFn();\r\n\r\n if (typeof obj != 'object' || obj == null) {\r\n return undefined;\r\n }\r\n\r\n if (obj.__dmxScope__) {\r\n return scope.get(index);\r\n }\r\n\r\n if (dmx.getType(obj) == 'map') {\r\n return obj.get(index);\r\n }\r\n\r\n return obj[index];\r\n };\r\n }\r\n\r\n function parseMember (object) {\r\n const token = expect();\r\n\r\n return () => {\r\n const obj = object();\r\n const type = dmx.getType(obj);\r\n\r\n if (token.name == 'METHOD') {\r\n const method = '__' + token.value;\r\n\r\n if (type == 'map' && typeof obj.get(method) == 'function') {\r\n return obj.get(method).bind(obj);\r\n }\r\n\r\n if (type == 'object' && typeof obj[method] == 'function') {\r\n return obj[method];\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 if (dmx.__formatters['any'] && dmx.__formatters['any'][token.value]) {\r\n return dmx.__formatters['any'][token.value];\r\n }\r\n\r\n return () => {\r\n if (obj != null) {\r\n console.warn(`Method \"${token.value}\" not found in expression: ${expression}`);\r\n }\r\n return undefined;\r\n };\r\n }\r\n\r\n if (obj && obj.__dmxScope__) {\r\n return scope.get(token.value);\r\n }\r\n\r\n if (type == 'map') {\r\n return obj.get(token.value);\r\n }\r\n\r\n return obj && typeof obj == 'object' && token.value in obj ? obj[token.value] : undefined;\r\n };\r\n }\r\n};","dmx.BaseComponent = dmx.createClass({\r\n constructor: function (node, parent) {\r\n this.$node = node;\r\n this.parent = parent;\r\n this.children = [];\r\n this.listeners = {};\r\n\r\n this.updatedProps = new Map();\r\n this.updateRequested = false;\r\n\r\n this.isInitialized = false;\r\n this.isDestroyed = false;\r\n\r\n this.props = new Proxy(\r\n {},\r\n {\r\n set: (target, prop, value, receiver) => {\r\n const oldValue = Reflect.get(target, prop, receiver);\r\n const ok = Reflect.set(target, prop, value, receiver);\r\n\r\n if (ok && this.isInitialized) {\r\n if ((this.attributes[prop] && this.attributes[prop].alwaysUpdate) || !dmx.equal(oldValue, value)) {\r\n this.requestUpdate(prop, oldValue);\r\n }\r\n }\r\n\r\n return ok;\r\n },\r\n }\r\n );\r\n\r\n this.data = dmx.signalProxy();\r\n this.seed = Math.random();\r\n\r\n this.name =\r\n node.getAttribute('id') ||\r\n node.getAttribute('name') ||\r\n (this.type && this.type.toLowerCase().replace(/^dmx-/, '')) ||\r\n '';\r\n this.name = this.name.replace(/[^\\w]/g, '');\r\n\r\n try {\r\n this.$initialData();\r\n this.$parseAttributes(node);\r\n this.init(node);\r\n if (this.render !== false) {\r\n this.render(node);\r\n }\r\n if (this.$node) {\r\n this.$customAttributes('mounted', this.$node);\r\n this.$node.dmxComponent = this;\r\n this.$node.dmxRendered = true;\r\n }\r\n this.isInitialized = true;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n tag: null,\r\n initialData: {},\r\n attributes: {},\r\n methods: {},\r\n events: {\r\n destroy: Event,\r\n },\r\n\r\n render: function (node) {\r\n if (this.$node) {\r\n this.$parse();\r\n }\r\n },\r\n\r\n parse: function (expression) {\r\n return dmx.parse(expression, this);\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 init: 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 destroy: 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] = new Set();\r\n }\r\n this.listeners[type].add(callback);\r\n },\r\n\r\n removeEventListener: function (type, callback) {\r\n if (!(type in this.listeners)) return;\r\n this.listeners[type].delete(callback);\r\n },\r\n\r\n dispatchEvent: function (event, props, data, nsp) {\r\n if (this.isDestroyed) return;\r\n\r\n if (typeof event == 'string') {\r\n var ComponentEvent = this.events[event] || CustomEvent;\r\n event = new ComponentEvent(event, props);\r\n }\r\n\r\n if (!(event.type in this.listeners)) return true;\r\n\r\n event.nsp = nsp;\r\n event.target = this;\r\n event.$data = data || {};\r\n for (let listener of this.listeners[event.type]) {\r\n if (listener.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 $createChild: function (name, node) {\r\n var Component = dmx.__components[name];\r\n var component = new Component(node, this);\r\n this.$addChild(component, component.name);\r\n },\r\n\r\n $addChild: function (child, name) {\r\n this.children.push(child);\r\n if (name) {\r\n if (this.data[name] && dmx.debug) {\r\n console.warn('Duplicate name \"' + name + '\" found, component not added to scope.');\r\n //return;\r\n }\r\n this.set(name, child.data);\r\n }\r\n },\r\n\r\n $removeChild: function (child) {\r\n // remove from children collection\r\n if (this.children.includes(child)) {\r\n this.children.splice(this.children.indexOf(child), 1);\r\n }\r\n // remove from data\r\n if (child.name && this.data[child.name]) {\r\n this.del(child.name);\r\n }\r\n },\r\n\r\n $customAttributes: function (hook, node, attributes) {\r\n const toCamelCase = (s) => s.replace(/-./g, (x) => x[1].toUpperCase());\r\n if (!attributes) attributes = dmx.dom.getAttributes(node);\r\n\r\n attributes.forEach((attr) => {\r\n if (node == this.$node) {\r\n if (attr.name == 'bind' && this.attributes[toCamelCase(attr.argument)]) {\r\n return;\r\n }\r\n\r\n if (attr.name == 'on' && this.events[attr.argument]) {\r\n return;\r\n }\r\n }\r\n\r\n if (dmx.__attributes[hook][attr.name]) {\r\n dmx.__attributes[hook][attr.name].call(this, node, attr);\r\n }\r\n });\r\n },\r\n\r\n $parseTextNode(node) {\r\n if (node.nodeType !== 3) return;\r\n\r\n if (dmx.reExpression.test(node.nodeValue)) {\r\n const parts = node.nodeValue\r\n .replace(dmx.reExpressionReplace, (_, expression) => {\r\n return `##split##${expression}##split##`;\r\n })\r\n .split('##split##');\r\n\r\n const fragment = document.createDocumentFragment();\r\n parts.forEach((part, i) => {\r\n const textNode = document.createTextNode(part);\r\n fragment.appendChild(textNode);\r\n\r\n if (i % 2) {\r\n this.$watch(part, (value) => {\r\n textNode.nodeValue = value;\r\n });\r\n }\r\n });\r\n\r\n node.parentNode.replaceChild(fragment, node);\r\n }\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 return this.$parseTextNode(node);\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((map) => {\r\n dmx.array(node.querySelectorAll(map)).forEach((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(\r\n node,\r\n 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, attributes);\r\n var idx = attributes.findIndex((attr) => 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.$createChild(tagName, node);\r\n } else if (window.__WAPPLER__) {\r\n // This breaks some components in design view\r\n // causes flows to trigger constantly\r\n // components ofter have there own parsing and this breaks it\r\n if (node.dmxComponent && node.dmxComponent.$parse) {\r\n // for now ignode specific for flows with script tag\r\n if (!dmx.reIgnoreElement.test(node.tagName)) {\r\n node.dmxComponent.$parse();\r\n }\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('mounted', node, attributes);\r\n }\r\n\r\n // Text Node\r\n if (node.nodeType === 3) {\r\n this.$parseTextNode(node);\r\n }\r\n },\r\n this\r\n );\r\n },\r\n\r\n $update: function (idents) {\r\n console.warn('Component.$update is deprecated.');\r\n },\r\n\r\n $parseAttributes: function (node) {\r\n const toKebabCase = (s) => s.replace(/[A-Z]/g, (c) => '-' + c.toLowerCase());\r\n\r\n for (const name in this.attributes) {\r\n const opts = this.attributes[name];\r\n const attrName = toKebabCase(name);\r\n\r\n let value = dmx.clone(opts.default);\r\n\r\n // static\r\n if (node.hasAttribute(attrName)) {\r\n if (opts.type === Boolean) {\r\n value = node.getAttribute(attrName) !== 'false';\r\n } else {\r\n value = node.getAttribute(attrName);\r\n\r\n if (opts.type === Number) {\r\n // Only set number is a valid number is given\r\n if (value && isFinite(Number(value))) {\r\n value = Number(value);\r\n }\r\n }\r\n\r\n if (opts.type === Object || opts.type === Array) {\r\n try {\r\n value = JSON.parse(value);\r\n } catch (err) {\r\n console.warn('Invalid attribute value, expected a JSON string got ' + value);\r\n }\r\n }\r\n\r\n if (opts.enum && !opts.enum.includes(value)) {\r\n value = dmx.clone(opts.default);\r\n }\r\n\r\n if (opts.validate && !opts.validate(value)) {\r\n value = dmx.clone(opts.default);\r\n }\r\n }\r\n\r\n this.props[name] = value;\r\n //opts.default = value;\r\n }\r\n\r\n // dynamic\r\n if (node.hasAttribute('dmx-bind:' + attrName)) {\r\n const expression = node.getAttribute('dmx-bind:' + attrName);\r\n\r\n this.$watch(expression, (value) => {\r\n if (value === undefined) {\r\n value = dmx.clone(opts.default);\r\n } else if (opts.type === Boolean) {\r\n value = !!value;\r\n } else {\r\n if (value != null) {\r\n if (opts.type === Number) {\r\n if (typeof value === 'string') {\r\n if (value && isFinite(Number(value))) {\r\n value = Number(value);\r\n } else {\r\n value = dmx.clone(opts.default);\r\n }\r\n } else if (typeof value !== 'number' || !isFinite(Number(value))) {\r\n value = dmx.clone(opts.default);\r\n }\r\n }\r\n\r\n if (opts.type === String) {\r\n value = String(value);\r\n }\r\n\r\n if (opts.type === Object && typeof value !== 'object') {\r\n value = dmx.clone(opts.default);\r\n }\r\n\r\n if (opts.type === Array) {\r\n value = Array.from(value);\r\n }\r\n }\r\n\r\n if (opts.enum && !opts.enum.includes(value)) {\r\n value = dmx.clone(opts.default);\r\n }\r\n\r\n if (opts.validate && !opts.validate(value)) {\r\n value = dmx.clone(opts.default);\r\n }\r\n }\r\n\r\n this.props[name] = value;\r\n // DEPRECATED: for old components (remove)\r\n // this.props[attrName] = value;\r\n });\r\n } else {\r\n this.props[name] = value;\r\n // DEPRECATED: for old components (remove)\r\n //this.props[attrName] = value;\r\n }\r\n }\r\n\r\n for (const event in this.events) {\r\n if (node.hasAttribute('on' + event)) {\r\n dmx.eventListener(this, event, Function('event', node.getAttribute('on' + event)), {});\r\n }\r\n }\r\n\r\n dmx.dom.getAttributes(node).forEach((attr) => {\r\n if (attr.name == 'on' && this.events[attr.argument]) {\r\n dmx.eventListener(\r\n this,\r\n attr.argument,\r\n (event) => {\r\n if (event.originalEvent) {\r\n event = event.originalEvent;\r\n }\r\n\r\n var returnValue = dmx.parse(\r\n attr.value,\r\n dmx.DataScope(\r\n {\r\n $event: event.$data,\r\n $originalEvent: event,\r\n },\r\n this\r\n )\r\n );\r\n\r\n return returnValue;\r\n },\r\n attr.modifiers\r\n );\r\n }\r\n });\r\n },\r\n\r\n requestUpdate: function (prop, oldValue) {\r\n //console.log(`request Update ${this.name} (${prop}: ${oldValue} => ${this.prop})`);\r\n if (!this.performUpdate) return;\r\n\r\n if (!this.updatedProps.has(prop)) {\r\n this.updatedProps.set(prop, oldValue);\r\n }\r\n\r\n if (!this.updateRequested) {\r\n //console.log('queue Microtask', this.name, this.updateRequested);\r\n //queueMicrotask(() => {\r\n dmx.nextTick(() => {\r\n //console.log('exec Microtask', this.name, this.updateRequested);\r\n if (this.isDestroyed) return;\r\n this.updateRequested = false;\r\n this.performUpdate(this.updatedProps);\r\n this.updatedProps.clear();\r\n });\r\n }\r\n\r\n this.updateRequested = true;\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 // alias for $watch\r\n $addBinding: function (expression, cb) {\r\n this.$watch(expression, cb);\r\n },\r\n\r\n $watch: function (expression, cb) {\r\n if (!this.effects) this.effects = [];\r\n let init = true;\r\n\r\n this.effects.push(\r\n dmx.effect(() => {\r\n if (init) {\r\n cb.call(this, this.parse(expression));\r\n init = false;\r\n } else {\r\n const value = this.parse(expression);\r\n queueMicrotask(() => cb.call(this, value));\r\n }\r\n })\r\n );\r\n },\r\n\r\n $destroy: function () {\r\n this.dispatchEvent('destroy');\r\n this.beforeDestroy();\r\n this.destroy();\r\n this.isDestroyed = true;\r\n if (this.parent && this.parent.$removeChild) {\r\n this.parent.$removeChild(this);\r\n }\r\n if (this.$node) {\r\n //dmx.dom.remove(this.$node);\r\n }\r\n if (this.effects) {\r\n this.effects.forEach((effect) => {\r\n effect();\r\n });\r\n this.effects = null;\r\n }\r\n this.$destroyChildren();\r\n if (this.$node) {\r\n this.$node.dmxComponent = null;\r\n this.$node = null;\r\n }\r\n this.parent = null;\r\n this.data = {};\r\n this.destroyed();\r\n },\r\n\r\n $destroyChildren: function () {\r\n this.children.forEach((child) => {\r\n child.$destroy();\r\n });\r\n this.children = [];\r\n },\r\n\r\n get: function (name, ignoreParents) {\r\n if (this.data[name] !== undefined) {\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 undefined;\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 },\r\n\r\n set: function (name, value) {\r\n if (typeof name == 'object') {\r\n dmx.batch(() => {\r\n for (var prop in name) {\r\n if (name.hasOwnProperty(prop)) {\r\n this.set(prop, name[prop]);\r\n }\r\n }\r\n });\r\n } else {\r\n this.data[name] = value;\r\n }\r\n },\r\n\r\n del: function (name) {\r\n delete this.data[name];\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 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 this.output = {};\r\n\r\n return this._exec(flow.exec || flow).then(() => {\r\n if (dmx.debug) {\r\n console.debug('finished', this.output);\r\n }\r\n return this.output;\r\n });\r\n },\r\n\r\n _each: function (arr, fn) {\r\n return Promise.resolve(arr).then((arr) => {\r\n arr = Array.isArray(arr) ? arr : [arr];\r\n\r\n return arr\r\n .reduce((prev, curr, i) => {\r\n return prev.then(() => {\r\n return fn(curr, i, arr.length).then((result) => {\r\n if (result) {\r\n arr[i] = result;\r\n }\r\n });\r\n });\r\n }, Promise.resolve())\r\n .then(() => {\r\n return arr;\r\n });\r\n });\r\n },\r\n\r\n _exec: function (flow) {\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((err) => {\r\n return this._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 for (let name in step) {\r\n if (step.hasOwnProperty(name) && dmx.__actions[name]) {\r\n const action = dmx.__actions[name].bind(this);\r\n const options = step[name];\r\n const timerName = name + Date.now();\r\n\r\n if (dmx.debug) {\r\n console.debug('exec action', name, options);\r\n console.time(timerName);\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((output) => {\r\n if (dmx.debug) {\r\n console.debug('finished exec action', name, options);\r\n console.timeEnd(timerName);\r\n }\r\n\r\n if (options.name) {\r\n if (dmx.debug) {\r\n console.debug('set data', options.name, output);\r\n }\r\n\r\n this.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 this.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 if (value.hasOwnProperty(key)) {\r\n obj[key] = this.parse(value[key], this.scope);\r\n }\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\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 initialData: {\r\n query: {},\r\n },\r\n\r\n events: {\r\n ready: Event,\r\n load: Event,\r\n },\r\n\r\n init () {\r\n this.dispatchLoad = this.dispatchEvent.bind(this, \"load\");\r\n this._parseQuery = this._parseQuery.bind(this);\r\n\r\n // is this remove needed?\r\n window.addEventListener(\"load\", this.dispatchLoad, { once: true });\r\n window.addEventListener(\"load\", this._parseQuery);\r\n window.addEventListener(\"popstate\", this._parseQuery);\r\n window.addEventListener(\"pushstate\", this._parseQuery);\r\n window.addEventListener(\"replacestate\", this._parseQuery);\r\n\r\n this._parseQuery();\r\n\r\n queueMicrotask(() => this.dispatchEvent(\"ready\"));\r\n },\r\n\r\n destroy () {\r\n window.removeEventListener(\"load\", this.dispatchLoad);\r\n window.removeEventListener(\"load\", this._parseQuery);\r\n window.removeEventListener(\"popstate\", this._parseQuery);\r\n window.removeEventListener(\"pushstate\", this._parseQuery);\r\n window.removeEventListener(\"replacestate\", this._parseQuery);\r\n },\r\n\r\n _parseQuery () {\r\n let querystring = \"\";\r\n\r\n if (window.location.search) {\r\n querystring = window.location.search.slice(1);\r\n } else if (window.location.hash.indexOf(\"?\")) {\r\n querystring = window.location.hash.slice(\r\n window.location.hash.indexOf(\"?\") + 1\r\n );\r\n if (querystring.indexOf(\"#\") > 0) {\r\n querystring = querystring.slice(0, querystring.indexOf(\"#\"));\r\n }\r\n }\r\n\r\n let 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 let base = document.querySelector('meta[name=\"ac:base\"]');\r\n let route = document.querySelector('meta[name=\"ac:route\"]');\r\n if (route && route.content) {\r\n let keys = [];\r\n let path = route.content;\r\n\r\n if (base && base.content) {\r\n path = base.content.replace(/\\/$/, \"\") + path;\r\n }\r\n\r\n let re = dmx.pathToRegexp(path, keys, { end: false });\r\n let 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 attributes: {\r\n novalidate: {\r\n type: Boolean,\r\n default: false\r\n },\r\n },\r\n\r\n methods: {\r\n submit (direct) {\r\n this._submit(direct);\r\n },\r\n\r\n reset () {\r\n this._reset();\r\n },\r\n\r\n validate () {\r\n this._validate();\r\n },\r\n },\r\n\r\n events: {\r\n invalid: Event,\r\n submit: Event,\r\n },\r\n\r\n init (node) {\r\n this._submitHandler = this._submitHandler.bind(this);\r\n this._resetHandler = this._resetHandler.bind(this);\r\n\r\n node.noValidate = true;\r\n node.addEventListener('submit', this._submitHandler);\r\n node.addEventListener('reset', this._resetHandler);\r\n },\r\n\r\n destroy () {\r\n this.$node.removeEventListener('submit', this._submitHandler);\r\n this.$node.removeEventListener('reset', this._resetHandler);\r\n },\r\n\r\n _submitHandler (event) {\r\n event.preventDefault();\r\n this._submit();\r\n },\r\n\r\n _resetHandler (event) {\r\n // remove this when validation is rewritten\r\n if (dmx.validateReset) dmx.validateReset(this.$node);\r\n if (window.grecaptcha && this.$node.querySelector('.g-recaptcha')) {\r\n grecaptcha.reset();\r\n }\r\n },\r\n\r\n _submit (direct) {\r\n if (direct) {\r\n return this._formSubmit();\r\n }\r\n\r\n if (this.props.novalidate || this._validate()) {\r\n if (this.dispatchEvent('submit', { cancelable: true })) {\r\n this._formSubmit();\r\n }\r\n } else {\r\n this.dispatchEvent('invalid');\r\n this._focusFirstInvalid();\r\n }\r\n },\r\n\r\n _reset () {\r\n this._formReset();\r\n },\r\n\r\n _validate () {\r\n if (dmx.validate) return dmx.validate(this.$node);\r\n Array.from(this.$node.elements).forEach(node => node.dirty = true);\r\n return this.$node.checkValidity();\r\n },\r\n\r\n _formSubmit () {\r\n HTMLFormElement.prototype.submit.call(this.$node);\r\n },\r\n\r\n _formReset () {\r\n HTMLFormElement.prototype.reset.call(this.$node);\r\n },\r\n\r\n _focusFirstInvalid () {\r\n const elm = Array.from(this.$node.elements).find(elm => !elm.validity.valid);\r\n if (elm) elm.focus();\r\n },\r\n\r\n _parseJsonForm () {\r\n const result = {};\r\n\r\n for (const element of this.$node.elements) {\r\n if (element.name && !element.disabled) {\r\n const steps = parseSteps(element.name.replace(/\\[\\]$/, \"\"));\r\n let context = result;\r\n\r\n for (const step of steps) {\r\n const type = element.type;\r\n\r\n if (type == \"number\") {\r\n if (element.value) {\r\n context = setValue(\r\n context,\r\n step,\r\n context[step.key],\r\n +element.value\r\n );\r\n }\r\n } else if (type == \"radio\" || type == \"checkbox\") {\r\n if (element.getAttribute(\"value\")) {\r\n if (element.checked) {\r\n context = setValue(\r\n context,\r\n step,\r\n context[step.key],\r\n element.value\r\n );\r\n }\r\n } else {\r\n context = setValue(\r\n context,\r\n step,\r\n context[step.key],\r\n element.checked\r\n );\r\n }\r\n } else if (type == \"select-multiple\") {\r\n context = setValue(\r\n context,\r\n step,\r\n context[step.key],\r\n Array.from(element.selectedOptions).map((opt) => opt.value)\r\n );\r\n } else {\r\n context = setValue(context, step, context[step.key], element.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n\r\n function parseSteps(name) {\r\n const steps = [],\r\n org = name;\r\n const re = /^\\[([^\\]]*)\\]/;\r\n const reNumeric = /^\\d+$/;\r\n\r\n name = name.replace(/^([^\\[]+)/, (m, p1) => {\r\n steps.push({ type: \"object\", key: p1 });\r\n return \"\";\r\n });\r\n\r\n if (!name) {\r\n steps[0].last = true;\r\n return steps;\r\n }\r\n\r\n while (name) {\r\n if (re.test(name)) {\r\n name = name.replace(re, (m, p1) => {\r\n if (!p1) {\r\n steps[steps.length - 1].append = true;\r\n } else if (reNumeric.test(p1)) {\r\n steps.push({ type: \"array\", key: +p1 });\r\n } else {\r\n steps.push({ type: \"object\", key: p1 });\r\n }\r\n\r\n return \"\";\r\n });\r\n\r\n continue;\r\n }\r\n\r\n return { type: \"object\", key: org, last: true };\r\n }\r\n\r\n for (let i = 0, n = steps.length; i < n; i++) {\r\n const step = steps[i];\r\n\r\n if (i + 1 < n) step.nextType = steps[i + 1].type;\r\n else step.last = true;\r\n }\r\n\r\n return steps;\r\n }\r\n\r\n function setValue(context, step, current, value) {\r\n if (step.last) {\r\n if (current === undefined) {\r\n context[step.key] = step.append ? [value] : value;\r\n } else if (Array.isArray(current)) {\r\n context[step.key].push(value);\r\n } else if (typeof current == \"object\") {\r\n return setValue(\r\n current,\r\n { type: \"object\", key: \"\", last: true },\r\n current[\"\"],\r\n value\r\n );\r\n } else {\r\n context[step.key] = [current, value];\r\n }\r\n\r\n return context;\r\n }\r\n\r\n if (current === undefined) {\r\n return (context[step.key] = step.nextType == \"array\" ? [] : {});\r\n } else if (Array.isArray(current)) {\r\n if (step.nextType == \"array\") return current;\r\n const obj = {};\r\n for (let i = 0, n = current.length; i < n; i++) {\r\n if (current[i] !== undefined) obj[i] = current[i];\r\n }\r\n return (context[step.key] = obj);\r\n } else if (typeof current == \"object\") {\r\n return context[step.key];\r\n }\r\n\r\n return (context[step.key] = { \"\": current });\r\n }\r\n },\r\n\r\n});\r\n","dmx.Component('form-element', {\r\n\r\n initialData: {\r\n disabled: false,\r\n focused: false,\r\n invalid: false,\r\n validationMessage: '',\r\n value: '',\r\n },\r\n\r\n attributes: {\r\n value: {\r\n type: String,\r\n default: '',\r\n alwaysUpdate: true,\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 (value) {\r\n this._setValue(value);\r\n },\r\n\r\n focus () {\r\n this._focus();\r\n },\r\n\r\n disable (disable) {\r\n this._disable(disable);\r\n },\r\n\r\n validate () {\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 init (node) {\r\n this._inputHandler = this._inputHandler.bind(this);\r\n this._changeHandler = this._changeHandler.bind(this);\r\n this._invalidHandler = this._invalidHandler.bind(this);\r\n this._resetHandler = this._resetHandler.bind(this);\r\n this._focusHandler = this._focusHandler.bind(this);\r\n this._blurHandler = this._blurHandler.bind(this);\r\n\r\n node.value = this.props.value || '';\r\n node.defaultValue = node.value ;\r\n \r\n node.addEventListener('input', this._inputHandler);\r\n node.addEventListener('change', this._changeHandler);\r\n node.addEventListener('invalid', this._invalidHandler);\r\n node.addEventListener('focus', this._focusHandler);\r\n node.addEventListener('blur', this._blurHandler);\r\n \r\n if (node.form) {\r\n this._form = node.form;\r\n this._form.addEventListener('reset', this._resetHandler);\r\n }\r\n\r\n if (this.props.disabled) {\r\n this._disable(this.props.disabled);\r\n }\r\n \r\n this.set('value', this.props.value);\r\n if (this.$node === document.activeElement) {\r\n this.set('focused', true);\r\n }\r\n },\r\n\r\n destroy () {\r\n this.$node.removeEventListener('input', this._inputHandler);\r\n this.$node.removeEventListener('change', this._changeHandler);\r\n this.$node.removeEventListener('invalid', this._invalidHandler);\r\n this.$node.removeEventListener('focus', this._focusHandler);\r\n this.$node.removeEventListener('blur', this._blurHandler);\r\n if (this._form) {\r\n this._form.removeEventListener('reset', this._resetHandler);\r\n this._form = null;\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n\r\n if (updatedProps.has('disabled')) {\r\n this._disable(this.props.disabled);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n this.$node.value = value || '';\r\n if (defaultValue) this.$node.defaultValue = value || '';\r\n this.set('value', value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _focus () {\r\n this.$node.focus();\r\n },\r\n\r\n _disable (disable) {\r\n this.$node.disabled = disable;\r\n this.set('disabled', this.$node.disabled);\r\n },\r\n\r\n _validate () {\r\n dmx.validate(this.$node);\r\n\r\n if (this.$node.dirty) {\r\n this.set({\r\n invalid: !this.$node.validity.valid,\r\n validationMessage: this.$node.validationMessage,\r\n });\r\n }\r\n },\r\n\r\n _inputHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n dmx.nextTick(() => {\r\n if (!this.$node) return;\r\n if (this.data.value !== this.$node.value) {\r\n this.set('value', this.$node.value);\r\n if (event) this.dispatchEvent('changed');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n });\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n dmx.nextTick(() => {\r\n if (!this.$node) return;\r\n if (this.data.value !== this.$node.value) {\r\n this.set('value', this.$node.value);\r\n if (event) this.dispatchEvent('changed');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n });\r\n },\r\n\r\n _invalidHandler (event) {\r\n this.set({\r\n invalid: !this.$node.validity.valid,\r\n validationMessage: this.$node.validationMessage,\r\n });\r\n },\r\n\r\n _resetHandler (event) {\r\n if (!this.$node) return;\r\n this.$node.dirty = false;\r\n this.set({\r\n invalid: false,\r\n validationMessage: '',\r\n });\r\n this._changeHandler();\r\n },\r\n\r\n _focusHandler (event) {\r\n this.set('focused', true);\r\n },\r\n\r\n _blurHandler (event) {\r\n this.set('focused', false);\r\n },\r\n\r\n});\r\n","dmx.Component('textarea', {\r\n\r\n extends: 'form-element',\r\n\r\n init (node) {\r\n if (!this.props.value) {\r\n const value = this.$node.value;\r\n this.props.value = value.includes('{{') ? this.parse(value) : value;\r\n }\r\n\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n },\r\n\r\n});\r\n","dmx.Component('input', { extends: 'form-element' });\r\n","dmx.Component('input-file', {\r\n\r\n extends: 'form-element',\r\n\r\n attributes: {\r\n imageMaxWidth: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n imageMaxHeight: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n imageType: {\r\n type: String,\r\n default: null, // defaults to original image format\r\n enum: ['png', 'jpeg', 'webp'],\r\n },\r\n\r\n imageQuality: {\r\n type: Number,\r\n default: null,\r\n },\r\n },\r\n\r\n initialData: {\r\n file: null,\r\n },\r\n\r\n _imageTypes: {\r\n png: 'image/png', \r\n jpeg: 'image/jpeg',\r\n webp: 'image/webp',\r\n },\r\n\r\n _imageExtensions: {\r\n png: 'png',\r\n jpeg: 'jpg',\r\n webp: 'webp',\r\n },\r\n\r\n _setValue (value) {\r\n console.warn('Can not set value of a file input!');\r\n },\r\n\r\n _changeHandler (event) {\r\n dmx.Component('form-element').prototype._changeHandler.call(this, event);\r\n\r\n this._updateData();\r\n \r\n if (this.$node.files.length && (this.props.imageMaxWidth || this.props.imageMaxHeight || this.props.imageType)) {\r\n this._resizeImage();\r\n }\r\n },\r\n\r\n _resizeImage () {\r\n const file = this.$node.files[0];\r\n\r\n if (file && file.type.startsWith('image/')) {\r\n const blobUrl = URL.createObjectURL(file);\r\n const img = new Image();\r\n img.src = blobUrl;\r\n img.onerror = () => URL.revokeObjectURL(blobUrl);\r\n img.onload = () => {\r\n URL.revokeObjectURL(blobUrl);\r\n\r\n const { imageMaxWidth, imageMaxHeight, imageType, imageQuality } = this.props;\r\n\r\n let width = img.width;\r\n let height = img.height;\r\n let ratio = width / height;\r\n let needResize = false;\r\n \r\n if (imageMaxWidth && width > imageMaxWidth) {\r\n width = imageMaxWidth;\r\n height = ~~(width / ratio);\r\n needResize = true;\r\n }\r\n\r\n if (imageMaxHeight && height > imageMaxHeight) {\r\n height = imageMaxHeight;\r\n width = ~~(height * ratio);\r\n needResize = true;\r\n }\r\n\r\n const newName = imageType ? file.name.replace(/\\.\\w+$/, '.' + this._imageExtensions[imageType]) : file.name;\r\n const newType = imageType ? this._imageTypes[imageType] : file.type;\r\n\r\n if (newType !== file.type || needResize) {\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n \r\n canvas.width = width;\r\n canvas.height = height;\r\n \r\n ctx.drawImage(img, 0, 0, width, height);\r\n \r\n canvas.toBlob(blob => {\r\n const container = new DataTransfer();\r\n const newFile = new File([blob], newName, { type: newType });\r\n container.items.add(newFile);\r\n this.$node.files = container.files;\r\n this._updateData();\r\n }, newType, imageQuality ? imageQuality / 100 : undefined);\r\n }\r\n };\r\n }\r\n },\r\n\r\n _updateData () {\r\n let data = null;\r\n \r\n if (this.$node.files.length) {\r\n const self = this;\r\n const file = this.$node.files[0];\r\n let dataUrl = null;\r\n let loading = false;\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 get dataUrl () {\r\n if (!dataUrl && !loading) {\r\n loading = true;\r\n dmx.fileUtils.blobToDataURL(file).then(dataUrl => {\r\n self.set('file', Object.assign({}, data, { dataUrl }));\r\n }).catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n return dataUrl;\r\n },\r\n };\r\n }\r\n\r\n this.set('file', data);\r\n }\r\n\r\n});\r\n","dmx.Component('input-file-multiple', {\r\n\r\n extends: 'form-element',\r\n\r\n attributes: {\r\n imageMaxWidth: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n imageMaxHeight: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n imageType: {\r\n type: String,\r\n default: null, // defaults to original image format\r\n enum: ['png', 'jpeg', 'webp'],\r\n },\r\n\r\n imageQuality: {\r\n type: Number,\r\n default: null,\r\n },\r\n },\r\n\r\n initialData: {\r\n files: [],\r\n },\r\n\r\n _imageTypes: {\r\n png: 'image/png', \r\n jpeg: 'image/jpeg',\r\n webp: 'image/webp',\r\n },\r\n\r\n _imageExtensions: {\r\n png: 'png',\r\n jpeg: 'jpg',\r\n webp: 'webp',\r\n },\r\n\r\n _setValue (value) {\r\n console.warn('Can not set value of a file input!');\r\n },\r\n\r\n _changeHandler (event) {\r\n dmx.Component('form-element').prototype._changeHandler.call(this, event);\r\n\r\n this._updateData();\r\n\r\n if (this.$node.files.length && (this.props.imageMaxWidth || this.props.imageMaxHeight || this.props.imageType)) {\r\n this._resizeImages();\r\n }\r\n },\r\n\r\n _resizeImages () {\r\n const files = Array.from(this.$node.files);\r\n\r\n Promise.all(files.map(file => {\r\n return new Promise(resolve => {\r\n if (!file.type.startsWith('image/')) {\r\n resolve(file);\r\n return;\r\n }\r\n\r\n const blobUrl = URL.createObjectURL(file);\r\n const img = new Image();\r\n img.src = blobUrl;\r\n img.onerror = () => URL.revokeObjectURL(blobUrl);\r\n img.onload = () => {\r\n URL.revokeObjectURL(blobUrl);\r\n\r\n const { imageMaxWidth, imageMaxHeight, imageType, imageQuality } = this.props;\r\n\r\n let width = img.width;\r\n let height = img.height;\r\n let ratio = width / height;\r\n let needResize = false;\r\n\r\n if (imageMaxWidth && width > imageMaxWidth) {\r\n width = imageMaxWidth;\r\n height = ~~(width / ratio);\r\n needResize = true;\r\n }\r\n\r\n if (imageMaxHeight && height > imageMaxHeight) {\r\n height = imageMaxHeight;\r\n width = ~~(height * ratio);\r\n needResize = true;\r\n }\r\n\r\n const newName = imageType ? file.name.replace(/\\.\\w+$/, '.' + this._imageExtensions[imageType]) : file.name;\r\n const newType = imageType ? this._imageTypes[imageType] : file.type;\r\n\r\n if (newType !== file.type || needResize) {\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n\r\n canvas.width = width;\r\n canvas.height = height;\r\n\r\n ctx.drawImage(img, 0, 0, width, height);\r\n\r\n canvas.toBlob(blob => {\r\n const newFile = new File([blob], newName, { type: newType });\r\n resolve(newFile);\r\n }, newType, imageQuality ? imageQuality / 100 : undefined);\r\n } else {\r\n resolve(file);\r\n }\r\n };\r\n });\r\n })).then(files => {\r\n const container = new DataTransfer();\r\n for (let file of files) {\r\n container.items.add(file);\r\n }\r\n this.$node.files = container.files;\r\n this._updateData();\r\n });\r\n },\r\n\r\n _updateData () {\r\n let files = [];\r\n \r\n if (this.$node.files.length) {\r\n const self = this;\r\n\r\n files = Array.from(this.$node.files).map((file, index) => {\r\n let dataUrl = null;\r\n let loading = false;\r\n \r\n const 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 get dataUrl () {\r\n if (!dataUrl && !loading) {\r\n loading = true;\r\n dmx.fileUtils.blobToDataURL(file).then(dataUrl => {\r\n files = dmx.clone(files);\r\n files[index].dataUrl = dataUrl;\r\n self.set('files', files);\r\n }).catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n return dataUrl;\r\n },\r\n };\r\n\r\n return data;\r\n });\r\n }\r\n\r\n this.set('files', files);\r\n },\r\n\r\n});\r\n","dmx.Component('button', {\r\n\r\n extends: 'form-element',\r\n\r\n attributes: {\r\n type: {\r\n type: String,\r\n default: 'button',\r\n enum: ['button', 'reset', 'submit'],\r\n },\r\n },\r\n\r\n init (node) {\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n \r\n node.type = this.props.type;\r\n },\r\n\r\n});\r\n","dmx.Component('radio', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n checked: false,\r\n },\r\n\r\n attributes: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n select (check) {\r\n this._select(check);\r\n },\r\n },\r\n\r\n events: {\r\n checked: Event,\r\n unchecked: Event,\r\n },\r\n\r\n init (node) {\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n\r\n node.type = 'radio';\r\n node.checked = this.props.checked;\r\n node.defaultChecked = this.props.checked;\r\n\r\n if (this.props.checked) {\r\n this.set('checked', true);\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n dmx.Component('form-element').prototype.performUpdate.call(this, updatedProps);\r\n\r\n if (updatedProps.has('checked')) {\r\n if (this.$node.checked != this.props.checked) {\r\n this.$node.defaultChecked = this.props.checked;\r\n this.$node.checked = this.props.checked;\r\n this.set('checked', this.props.checked);\r\n this.$node.dispatchEvent(new Event('radio', { bubbles: true }));\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n }\r\n },\r\n\r\n _select (check) {\r\n this.$node.checked = (check !== false);\r\n this.set('checked', this.$node.checked);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n this.set('checked', this.$node.checked);\r\n this.dispatchEvent('changed');\r\n this.dispatchEvent(this.$node.checked ? 'checked' : 'unchecked');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n\r\n // trigger change on other radios with the same name and current form\r\n if (this.$node.checked && this.$node.form) {\r\n for (const elem of this.$node.form.elements) {\r\n if (elem == this.$node) continue;\r\n if (elem.type == 'radio' && elem.name == this.$node.name) {\r\n elem.dispatchEvent(new Event('change', { bubbles: true }));\r\n }\r\n }\r\n }\r\n },\r\n\r\n});\r\n","dmx.Component('radio-group', {\r\n\r\n initialData: {\r\n value: null,\r\n },\r\n\r\n attributes: {\r\n value: {\r\n type: String,\r\n default: null,\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n setValue (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 init (node) {\r\n this._changeHandler = this._changeHandler.bind(this);\r\n\r\n node.addEventListener('change', this._changeHandler);\r\n node.addEventListener('radio', this._changeHandler);\r\n\r\n this._setValue(this.props.value, true);\r\n\r\n this._mutationObserver = new MutationObserver((mutationList) => {\r\n let value = this.props.value;\r\n if (value == null) value = '';\r\n value = value.toString();\r\n\r\n for (let mutation of mutationList) {\r\n for (let node of mutation.addedNodes) {\r\n if (node.nodeType !== Node.ELEMENT_NODE) continue;\r\n\r\n requestAnimationFrame(() => {\r\n if (node.tagName === 'INPUT' && node.type === 'radio') {\r\n node.checked = node.value == value;\r\n node.defaultChecked = node.checked;\r\n } else {\r\n node.querySelectorAll('input[type=radio]').forEach(checkbox => {\r\n checkbox.checked = node.value == value;\r\n checkbox.defaultChecked = checkbox.checked;\r\n });\r\n }\r\n\r\n requestAnimationFrame(() => {\r\n this._updateValue();\r\n });\r\n });\r\n }\r\n }\r\n });\r\n this._mutationObserver.observe(node, { subtree: true, childList: true });\r\n },\r\n\r\n destroy () {\r\n this._mutationObserver.disconnect();\r\n this.$node.removeEventListener('change', this._changeHandler);\r\n this.$node.removeEventListener('radio', this._changeHandler);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (value == null) value = '';\r\n value = value.toString();\r\n \r\n this._radios().forEach(radio => {\r\n radio.checked = radio.value == value;\r\n if (defaultValue) radio.defaultChecked = radio.checked;\r\n });\r\n\r\n this._updateValue();\r\n },\r\n\r\n _updateValue () {\r\n const value = this._radios().filter(radio => !radio.disabled && radio.checked).map(radio => radio.value);\r\n\r\n if (!dmx.equal(this.data.value, value[0])) {\r\n this.set('value', value[0] || null);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n _radios () {\r\n return Array.from(this.$node.querySelectorAll('input[type=radio]'));\r\n },\r\n\r\n _changeHandler (event) {\r\n this._updateValue();\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 attributes: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n select (check) {\r\n this._select(check);\r\n },\r\n },\r\n\r\n events: {\r\n checked: Event,\r\n unchecked: Event,\r\n },\r\n\r\n init (node) {\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n\r\n node.type = 'checkbox';\r\n node.checked = this.props.checked;\r\n node.defaultChecked = this.props.checked;\r\n\r\n if (this.props.checked) {\r\n this.set('checked', true);\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n dmx.Component('form-element').prototype.performUpdate.call(this, updatedProps);\r\n\r\n if (updatedProps.has('checked')) {\r\n if (this.$node.checked != this.props.checked) {\r\n this.$node.defaultChecked = this.props.checked;\r\n this.$node.checked = this.props.checked;\r\n this.set('checked', this.props.checked);\r\n this.$node.dispatchEvent(new Event('checkbox', { bubbles: true }));\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n }\r\n },\r\n\r\n _select (check) {\r\n this.$node.checked = (check !== false);\r\n this.set('checked', this.$node.checked);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n this.set('checked', this.$node.checked);\r\n this.dispatchEvent('changed');\r\n this.dispatchEvent(this.$node.checked ? 'checked' : 'unchecked');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\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 attributes: {\r\n value: {\r\n type: Array,\r\n default: [],\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n setValue (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 init (node) {\r\n this._changeHandler = this._changeHandler.bind(this);\r\n\r\n node.addEventListener('change', this._changeHandler);\r\n node.addEventListener('checkbox', this._changeHandler);\r\n\r\n this._setValue(this.props.value, true);\r\n\r\n this._mutationObserver = new MutationObserver((mutationList) => {\r\n let value = this.props.value;\r\n if (value == null) value = [];\r\n if (!Array.isArray(value)) value = [value];\r\n value = value.map(v => v.toString());\r\n\r\n for (let mutation of mutationList) {\r\n for (let node of mutation.addedNodes) {\r\n if (node.nodeType !== Node.ELEMENT_NODE) continue;\r\n\r\n requestAnimationFrame(() => {\r\n if (node.tagName === 'INPUT' && node.type === 'checkbox') {\r\n node.checked = value.includes(node.value);\r\n node.defaultChecked = node.checked;\r\n } else {\r\n node.querySelectorAll('input[type=checkbox]').forEach(checkbox => {\r\n checkbox.checked = value.includes(checkbox.value);\r\n checkbox.defaultChecked = checkbox.checked;\r\n });\r\n }\r\n\r\n requestAnimationFrame(() => {\r\n this._updateValue();\r\n });\r\n });\r\n }\r\n }\r\n });\r\n this._mutationObserver.observe(node, { subtree: true, childList: true });\r\n },\r\n\r\n destroy () {\r\n this._mutationObserver.disconnect();\r\n this.$node.removeEventListener('change', this._changeHandler);\r\n this.$node.removeEventListener('checkbox', this._changeHandler);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (value == null) value = [];\r\n if (!Array.isArray(value)) value = [value];\r\n value = value.map(v => v.toString());\r\n\r\n this._checkboxes().forEach(checkbox => {\r\n checkbox.checked = value.includes(checkbox.value);\r\n if (defaultValue) checkbox.defaultChecked = checkbox.checked;\r\n });\r\n\r\n this._updateValue();\r\n },\r\n\r\n _updateValue () {\r\n const value = this._checkboxes().filter(checkbox => !checkbox.disabled && checkbox.checked).map(checkbox => checkbox.value);\r\n\r\n if (!dmx.equal(this.data.value, value)) {\r\n this.set('value', value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n _checkboxes () {\r\n return Array.from(this.$node.querySelectorAll('input[type=checkbox]'));\r\n },\r\n\r\n _changeHandler (event) {\r\n this._updateValue();\r\n },\r\n\r\n});\r\n","dmx.Component('select', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n selectedIndex: -1,\r\n selectedValue: '',\r\n selectedText: '',\r\n },\r\n\r\n attributes: {\r\n options: {\r\n type: [Array, Object, Number],\r\n default: null,\r\n },\r\n\r\n optiontext: {\r\n type: String,\r\n default: '$value',\r\n },\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 (index) {\r\n this.$node.selectedIndex = index;\r\n this._updateValue();\r\n },\r\n },\r\n\r\n init (node) {\r\n this._options = [];\r\n\r\n if (!this.props.value) {\r\n this.props.value = this.$node.value;\r\n this._updateValue();\r\n }\r\n\r\n this._mutationObserver = new MutationObserver(() => {\r\n if (!this._updatingOptions) {\r\n this._updateValue();\r\n }\r\n });\r\n this._mutationObserver.observe(this.$node, { subtree: true, childList: true, attributes: true });\r\n\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n },\r\n\r\n render (node) {\r\n this.$parse();\r\n this._renderOptions();\r\n let value = this.props.value;\r\n if (value == null) value = '';\r\n Array.from(this.$node.options).forEach(option => {\r\n option.toggleAttribute('selected', (option.value == value));\r\n option.selected = (option.value == value);\r\n option.defaultSelected = option.selected;\r\n });\r\n this._updateValue();\r\n },\r\n\r\n destroy () {\r\n this._mutationObserver.disconnect();\r\n dmx.Component('form-element').prototype.destroy.call(this);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n dmx.Component('form-element').prototype.performUpdate.call(this, updatedProps);\r\n\r\n if (updatedProps.has('options') || updatedProps.has('optiontext') || updatedProps.has('optionvalue')) {\r\n this._renderOptions();\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (value == null) value = '';\r\n value = value.toString();\r\n\r\n \r\n if (defaultValue) {\r\n Array.from(this.$node.options).forEach(option => {\r\n option.toggleAttribute('selected', option.value == value);\r\n });\r\n } else {\r\n const selectedIndex = Array.from(this.$node.options).findIndex(option => option.value == value);\r\n this.$node.selectedIndex = selectedIndex;\r\n }\r\n\r\n this._updateValue();\r\n },\r\n\r\n _updateValue () {\r\n const selectedIndex = this.$node.selectedIndex;\r\n const selected = this.$node.options[selectedIndex] || { value: '', text: '' };\r\n\r\n this.set({\r\n selectedIndex: selectedIndex,\r\n selectedValue: selected.value,\r\n selectedText: selected.text,\r\n value: selected.value,\r\n });\r\n },\r\n\r\n _renderOptions () {\r\n this._options.forEach(option => option.remove());\r\n this._options = [];\r\n\r\n if (this.props.options) {\r\n this._updatingOptions = true;\r\n dmx.repeatItems(this.props.options).forEach(option => {\r\n const node = document.createElement('option');\r\n node.value = dmx.parse(this.props.optionvalue, dmx.DataScope(option, this));\r\n node.textContent = dmx.parse(this.props.optiontext, dmx.DataScope(option, this));\r\n if (node.value == this.props.value) node.selected = true;\r\n this.$node.append(node);\r\n this._options.push(node);\r\n });\r\n this._updatingOptions = false;\r\n }\r\n\r\n this._updateValue();\r\n },\r\n\r\n _inputHandler (event) {\r\n // do nothing\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n dmx.nextTick(() => {\r\n if (this.data.selectedIndex !== this.$node.selectedIndex) {\r\n this._updateValue();\r\n this.dispatchEvent('changed');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\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 alwaysUpdate: true,\r\n },\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n dmx.Component('select').prototype.performUpdate.call(this, updatedProps);\r\n\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (value == null) value = '';\r\n if (!Array.isArray(value)) value = [value];\r\n value = value.map(v => v.toString());\r\n\r\n Array.from(this.$node.options).forEach(option => {\r\n const selected = value.includes(option.value);\r\n if (defaultValue) {\r\n option.toggleAttribute('selected', selected);\r\n } else {\r\n option.selected = selected;\r\n }\r\n });\r\n\r\n this._updateValue();\r\n },\r\n\r\n _updateValue () {\r\n const value = Array.from(this.$node.options).filter(option => option.selected).map(option => option.value);\r\n\r\n dmx.batch(() => {\r\n dmx.Component('select').prototype._updateValue.call(this);\r\n this.set('value', value);\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 (value) {\r\n if (this.data.value !== value) {\r\n this.set('value', value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this.set('value', this.props.value);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('value')) {\r\n this.set('value', this.props.value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\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: null,\r\n },\r\n\r\n key: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n rerender: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n events: {\r\n update: Event,\r\n updated: Event,\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this.prevItems = [];\r\n this.childKeys = new Map();\r\n this.$template = document.createDocumentFragment();\r\n while (this.$node.hasChildNodes()) {\r\n this.$template.appendChild(this.$node.firstChild);\r\n }\r\n if (this.props.repeat) {\r\n this.performUpdate(new Map([['repeat', undefined]]));\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has(\"key\")) this._rerender = true;\r\n if (!updatedProps.has(\"repeat\")) return;\r\n\r\n this.dispatchEvent(\"update\");\r\n\r\n if (this.props.rerender || this._rerender) {\r\n this._rerender = false;\r\n this._clear();\r\n }\r\n\r\n var RepeatItem = dmx.Component(\"repeat-item\");\r\n var repeat = dmx.clone(this.props.repeat);\r\n var items = dmx.repeatItems(repeat);\r\n\r\n if (items.length) {\r\n if (\r\n !this.props.rerender &&\r\n this.props.key &&\r\n items[0].hasOwnProperty(this.props.key) &&\r\n this.prevItems.length\r\n ) {\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.get(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.get(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.get(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.get(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.get(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.get(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((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((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 const fragment = document.createDocumentFragment();\r\n const toParse = new Set();\r\n\r\n for (var i = this.children.length; i < items.length; i++) {\r\n var child = new RepeatItem(\r\n this.$template.cloneNode(true),\r\n this,\r\n items[i]\r\n );\r\n child.$nodes.forEach((node) => {\r\n fragment.appendChild(node);\r\n //this.$node.appendChild(node);\r\n //child.$parse(node);\r\n toParse.add(child);\r\n });\r\n this.children.push(child);\r\n }\r\n\r\n this.$node.appendChild(fragment);\r\n\r\n for (const child of toParse) {\r\n child.$nodes.forEach((node) => {\r\n child.$parse(node);\r\n });\r\n }\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 for (let child of this.children) {\r\n this.childKeys.set(child.data[this.props.key], child);\r\n }\r\n }\r\n\r\n //this.set('items', items);\r\n this.set(\r\n \"items\",\r\n this.children.map((child) => child.data)\r\n );\r\n\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _lis (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 () {\r\n this.prevItems = [];\r\n this.childKeys.clear();\r\n this.$node.innerHTML = '';\r\n this.children.splice(0).forEach((child) => {\r\n child.$destroy();\r\n });\r\n },\r\n\r\n _insertChild (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((node) => {\r\n if (!before) {\r\n this.$node.appendChild(node);\r\n } else {\r\n if (this.childKeys.has(before)) {\r\n this.$node.insertBefore(node, this.childKeys.get(before).$nodes[0]);\r\n } else {\r\n console.warn(\r\n \"(insert) can not insert node before key \" + before + \"!\"\r\n );\r\n }\r\n }\r\n\r\n child.$parse(node);\r\n });\r\n\r\n this.childKeys.set(data[this.props.key], child);\r\n this.children.push(child);\r\n },\r\n\r\n _moveChild (key, before) {\r\n var child = this.childKeys.get(key);\r\n\r\n if (child) {\r\n if (this.childKeys.has(before)) {\r\n child.$nodes.forEach((node) => {\r\n this.$node.insertBefore(node, this.childKeys.get(before).$nodes[0]);\r\n });\r\n } else {\r\n child.$nodes.forEach((node) => {\r\n this.$node.appendChild(node);\r\n });\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 (key) {\r\n var child = this.childKeys.get(key);\r\n if (child) {\r\n child.$destroy();\r\n this.children.splice(this.children.indexOf(child), 1);\r\n this.childKeys.delete(key);\r\n } else {\r\n console.warn(\"(remove) child with key \" + key + \" not found!\");\r\n }\r\n },\r\n\r\n _clone (o) {\r\n return dmx.clone(o);\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.children = [];\r\n this.listeners = {};\r\n this.props = {};\r\n\r\n this.updatedProps = new Map();\r\n this.updateRequested = false;\r\n\r\n this.isInitialized = true;\r\n this.isDestroyed = false;\r\n\r\n this.data = dmx.signalProxy(data);\r\n this.seed = parent.seed;\r\n\r\n this.name = name || \"repeatItem\";\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 () {\r\n for (const node of this.$nodes) {\r\n if (this.parent && this.parent.props && this.parent.props.key) {\r\n const event = new Event('remove', { cancelable: true });\r\n \r\n if (node.dispatchEvent(event)) {\r\n dmx.dom.remove(node);\r\n }\r\n } else {\r\n node.remove();\r\n }\r\n }\r\n },\r\n});\r\n","dmx.Component('fetch', {\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 percent: 0,\r\n total: 0,\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n percent: 0,\r\n total: 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,\r\n },\r\n\r\n method: {\r\n type: String,\r\n default: 'GET',\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 dataType: {\r\n type: String,\r\n default: 'auto',\r\n enum: ['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 // cache ttl in seconds (default 1 day)\r\n type: Number,\r\n default: 86400,\r\n },\r\n\r\n credentials: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n abort () {\r\n this._abort();\r\n },\r\n\r\n load (params, reload) {\r\n const 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 () {\r\n this._abort();\r\n this._resetData(true);\r\n },\r\n },\r\n\r\n events: {\r\n start: Event,\r\n done: Event,\r\n error: Event,\r\n invalid: Event,\r\n unauthorized: Event,\r\n forbidden: Event,\r\n abort: Event,\r\n success: Event,\r\n upload: ProgressEvent,\r\n download: ProgressEvent,\r\n },\r\n\r\n _statusEvents: {\r\n 200: 'success',\r\n 400: 'invalid',\r\n 401: 'unauthorized',\r\n 403: 'forbidden',\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this._fetch = dmx.debounce(this._fetch.bind(this));\r\n\r\n this._loadHandler = this._loadHandler.bind(this);\r\n this._abortHandler = this._abortHandler.bind(this);\r\n this._errorHandler = this._errorHandler.bind(this);\r\n this._timeoutHandler = this._timeoutHandler.bind(this);\r\n this._downloadProgressHandler = this._progressHandler.bind(this, 'download');\r\n this._uploadProgressHandler = this._progressHandler.bind(this, 'upload');\r\n\r\n this._xhr = new XMLHttpRequest();\r\n this._xhr.addEventListener('load', this._loadHandler);\r\n this._xhr.addEventListener('abort', this._abortHandler);\r\n this._xhr.addEventListener('error', this._errorHandler);\r\n this._xhr.addEventListener('timeout', this._timeoutHandler);\r\n this._xhr.addEventListener('progress', this._downloadProgressHandler);\r\n this._xhr.upload.addEventListener('progress', this._uploadProgressHandler);\r\n\r\n if (!this.props.noload && this.props.url) {\r\n this._fetch();\r\n }\r\n },\r\n\r\n destroy () {\r\n this._xhr.removeEventListener('load', this._loadHandler);\r\n this._xhr.removeEventListener('abort', this._abortHandler);\r\n this._xhr.removeEventListener('error', this._errorHandler);\r\n this._xhr.removeEventListener('timeout', this._timeoutHandler);\r\n this._xhr.removeEventListener('progress', this._downloadProgressHandler);\r\n this._xhr.upload.removeEventListener('progress', this._uploadProgressHandler);\r\n this._xhr.abort();\r\n this._xhr = null;\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (!this.props.noload && this.props.url) {\r\n // if url or params are changed\r\n if (updatedProps.has('url') || updatedProps.has('params')) {\r\n this._fetch();\r\n }\r\n }\r\n },\r\n\r\n // TODO: deprecate this, use JSON or expression instead\r\n $parseAttributes (node) {\r\n dmx.BaseComponent.prototype.$parseAttributes.call(this, node);\r\n\r\n dmx.dom.getAttributes(node).forEach(({ name, argument, value }) => {\r\n if (argument && value && ['param', 'header'].includes(name)) {\r\n this.$watch(value, value => {\r\n this.props[name + 's'] = Object.assign({}, this.props[name + 's'], { [argument]: value });\r\n });\r\n }\r\n\r\n if (argument && value && name == 'data') {\r\n this.$watch(value, value => {\r\n this.props.data = Object.assign({}, this.props.data, { [argument]: value });\r\n });\r\n }\r\n });\r\n },\r\n\r\n _abort () {\r\n if (this._xhr) {\r\n this._xhr.abort();\r\n }\r\n },\r\n\r\n _resetData (clearData) {\r\n const data = {\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 if (clearData) {\r\n data.data = null;\r\n }\r\n\r\n this.set(data);\r\n },\r\n\r\n _fetch (options) {\r\n this._abort();\r\n\r\n options = dmx.extend(true, this.props, options || {});\r\n \r\n let qs = Object.keys(options.params)\r\n .filter(key => options.params[key] != null)\r\n .map(key => {\r\n let value = options.params[key];\r\n if (typeof value === 'string' && value.startsWith('{{')) {\r\n value = this.parse(value);\r\n }\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(value);\r\n })\r\n .join('&');\r\n\r\n this._resetData();\r\n this.dispatchEvent('start');\r\n \r\n this._url = options.url;\r\n\r\n if (qs) {\r\n this._url += (this._url.includes('?') ? '&' : '?') + qs;\r\n }\r\n\r\n if (window.WebviewProxy) {\r\n // Cordova webview proxy plugin\r\n this._url = window.WebviewProxy.convertProxyUrl(this._url);\r\n }\r\n\r\n if (this.props.cache) {\r\n const cache = this.parse(`${this.props.cache}.data[\"${this._url}\"]`);\r\n if (cache) {\r\n if (Date.now() - cache.created >= options.ttl * 1000) {\r\n this.parse(`${this.props.cache}.remove(\"${this._url}\")`);\r\n } else {\r\n this.set({\r\n headers: cache.headers || {},\r\n paging: cache.paging || {},\r\n links: cache.links || {},\r\n data: cache.data,\r\n });\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 let data = null;\r\n let method = this.props.method.toUpperCase();\r\n\r\n if (method !== 'GET') {\r\n if (this.props.dataType === 'text') {\r\n data = this.props.data.toString();\r\n } else if (this.props.dataType === 'json') {\r\n data = JSON.stringify(this.props.data);\r\n } else {\r\n if (method === 'POST') {\r\n data = new FormData();\r\n\r\n Object.keys(this.props.data).forEach(key => {\r\n let value = this.props.data[key];\r\n\r\n if (Array.isArray(value)) {\r\n if (!/\\[\\]$/.text(value)) key += '[]';\r\n value.forEach(val => data.append(key, val));\r\n } else {\r\n data.set(key, value);\r\n }\r\n });\r\n } else {\r\n data = this.props.data.toString();\r\n }\r\n }\r\n }\r\n\r\n this._xhr.open(method, this._url);\r\n this._xhr.timeout = options.timeout * 1000;\r\n if (this.props.dataType === 'json' || this.props.dataType === 'text') {\r\n this._xhr.setRequestHeader('Content-Type', 'application/' + this.props.dataType);\r\n }\r\n for (const header in this.props.headers) {\r\n this._xhr.setRequestHeader(header, this.props.headers[header]);\r\n }\r\n this._xhr.setRequestHeader('accept', 'application/json');\r\n if (this.props.credentials) {\r\n this._xhr.withCredentials = true;\r\n }\r\n\r\n if (this.serverconnect && method !== 'GET') {\r\n const csrf_token = document.querySelector('meta[name=\"csrf-token\"]');\r\n if (csrf_token) {\r\n this._xhr.setRequestHeader('X-CSRF-Token', csrf_token.content);\r\n }\r\n }\r\n\r\n try {\r\n this._xhr.send(data);\r\n } catch (err) {\r\n this._done(err);\r\n }\r\n },\r\n\r\n _done (err) {\r\n this._resetData();\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 this.dispatchEvent('done');\r\n return;\r\n }\r\n\r\n let 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 this.dispatchEvent('done');\r\n return;\r\n }\r\n }\r\n\r\n this._parseHeaders();\r\n\r\n if (this._xhr.status < 400) {\r\n this.set({\r\n status: this._xhr.status,\r\n data: response,\r\n });\r\n\r\n this.dispatchEvent('success');\r\n this.dispatchEvent('done');\r\n\r\n if (this.props.cache) {\r\n this.parse(`${this.props.cache}.set(\"${this._url}\", { headers: headers, paging: paging, links: links, data: data, created: ${Date.now()} })`)\r\n }\r\n return;\r\n }\r\n\r\n this.set({\r\n status: this._xhr.status,\r\n lastError: {\r\n status: this._xhr.status,\r\n message: this._xhr.statusText,\r\n response: response,\r\n }\r\n });\r\n\r\n this.dispatchEvent(this._statusEvents[this._xhr.status] || 'error');\r\n this.dispatchEvent('done');\r\n },\r\n\r\n _parseHeaders() {\r\n try {\r\n const strHeaders = this._xhr.getAllResponseHeaders();\r\n const arrHeaders = strHeaders.trim().split(/[\\r\\n]+/);\r\n\r\n this.set('headers', arrHeaders.reduce((headers, line) => {\r\n const parts = line.split(': ');\r\n const name = parts.shift();\r\n const value = parts.join(': ');\r\n\r\n headers[name] = value;\r\n\r\n return headers;\r\n }, {}));\r\n } catch (err) {\r\n console.warn('Error parsing response headers', err);\r\n return;\r\n }\r\n\r\n this._parseLinkHeaders();\r\n },\r\n\r\n _parseLinkHeaders () {\r\n try {\r\n const linkHeader = Object.keys(this.data.headers).find(header => header.toLowerCase() === 'link');\r\n\r\n if (linkHeader) {\r\n this.set('links', this.data.headers[linkHeader].split(/,\\s* {\r\n try {\r\n const match = link.match(/]*)>(.*)/);\r\n const linkUrl = new URL(match[1]);\r\n const parts = match[2].split(';');\r\n const qs = linkUrl.search.slice(1).split('&').reduce((acc, x) => {\r\n const p = x.split('=');\r\n if (p[0]) acc[decodeURIComponent[p[0]]] = decodeURIComponent(p[1] || '');\r\n return acc;\r\n }, {});\r\n \r\n let info = parts.slice(1).reduce((acc, part) => {\r\n const match = part.match(/\\s*(.+)\\s*=\\s*\"?([^\"]+)\"?/);\r\n if (match) acc[match[1]] = match[2];\r\n return acc;\r\n }, {});\r\n\r\n info = Object.assign({}, qs, info);\r\n info.url = linkUrl.toString();\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(x => x && x.rel).reduce((acc, x) => {\r\n x.rel.split(/\\s+/).forEach(rel => acc[rel] = Object.assign(x, { rel }));\r\n return acc;\r\n }, {});\r\n }\r\n } catch (err) {\r\n console.warn('Error parsing link header', err);\r\n return;\r\n }\r\n\r\n this._parsePaging();\r\n },\r\n\r\n _parsePaging () {\r\n try {\r\n const 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 const { first, prev, next, last } = this.data.links;\r\n\r\n if (prev || next) {\r\n if (last && last.page) {\r\n paging.pages = +last.page;\r\n } else if (prev && prev.page) {\r\n paging.pages = +prev.page + 1;\r\n }\r\n\r\n const countHeader = Object.keys(this.data.headers).find(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 (prev && prev.page) {\r\n paging.page = +prev.page + 1;\r\n } else if (next && next.page) {\r\n paging.page = +next.page - 1;\r\n }\r\n\r\n paging.has = {\r\n first: !!first,\r\n prev: !!prev,\r\n next: !!next,\r\n last: !!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\r\n _loadHandler (event) {\r\n this._done();\r\n },\r\n\r\n _abortHandler (event) {\r\n this._resetData();\r\n this.dispatchEvent('abort');\r\n this.dispatchEvent('done');\r\n },\r\n\r\n _errorHandler (event) {\r\n this._done(Error('Failed to execute'));\r\n },\r\n\r\n _timeoutHandler (event) {\r\n this._done(Error('Execution timeout'));\r\n },\r\n\r\n _progressHandler (type, event) {\r\n event.loaded = event.loaded || event.position;\r\n\r\n const percent = event.lengthComputable ? Math.ceil(event.loaded * 100 / event.total) : 0;\r\n\r\n this.set({\r\n 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 [type + 'Progress']: {\r\n position: event.loaded,\r\n total: event.total,\r\n percent: percent,\r\n },\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","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 init (node) {\r\n this.serverconnect = true;\r\n \r\n if (this.props.sockets && dmx.Socket) {\r\n this._refresh = this._refresh.bind(this);\r\n this._event = this.props.url.replace(/^(.*?)api\\//, '')\r\n this._socket = dmx.Socket('/api');\r\n this._socket.on(this._event, this._refresh);\r\n }\r\n\r\n dmx.Component('fetch').prototype.init.call(this, node);\r\n },\r\n\r\n destroy () {\r\n if (this._socket) {\r\n this._socket.off(this._event, this._refresh);\r\n }\r\n\r\n dmx.Component('fetch').prototype.destroy.call(this);\r\n },\r\n\r\n _fetch (options) {\r\n if (this._socket && this._socket.connected) {\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 (params) {\r\n params = dmx.extend(true, {}, this.props.params, params || {});\r\n\r\n this.dispatchEvent('start');\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._event, params, response => {\r\n this.set({\r\n status: response.status,\r\n data: response.data,\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n },\r\n });\r\n\r\n this.dispatchEvent(this._statusEvents[response.status] || 'error');\r\n this.dispatchEvent('done');\r\n });\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,\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 postData: {\r\n type: String,\r\n default: 'form',\r\n },\r\n\r\n credentials: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n abort () {\r\n this._abort();\r\n },\r\n\r\n reset (clearData) {\r\n this._reset();\r\n\r\n if (clearData) {\r\n this._abort();\r\n this._resetData(true);\r\n }\r\n }\r\n },\r\n\r\n events: {\r\n start: Event, // when starting an ajax call\r\n done: Event, // when ajax call completed (success and error)\r\n error: Event, // server error or javascript error (json parse or network transport) or timeout error\r\n unauthorized: Event, // 401 status from server\r\n forbidden: Event, // 403 status from server\r\n abort: Event, // ajax call was aborted\r\n success: Event, // successful ajax call,\r\n upload: ProgressEvent, // on upload progress\r\n download: ProgressEvent, // on download progress\r\n },\r\n\r\n init (node) {\r\n dmx.Component('form').prototype.init.call(this, node);\r\n\r\n this._loadHandler = this._loadHandler.bind(this);\r\n this._abortHandler = this._abortHandler.bind(this);\r\n this._errorHandler = this._errorHandler.bind(this);\r\n this._timeoutHandler = this._timeoutHandler.bind(this);\r\n this._downloadProgressHandler = this._progressHandler.bind(this, 'download');\r\n this._uploadProgressHandler = this._progressHandler.bind(this, 'upload');\r\n\r\n this._xhr = new XMLHttpRequest();\r\n this._xhr.addEventListener('load', this._loadHandler);\r\n this._xhr.addEventListener('abort', this._abortHandler);\r\n this._xhr.addEventListener('error', this._errorHandler);\r\n this._xhr.addEventListener('timeout', this._timeoutHandler);\r\n this._xhr.addEventListener('progress', this._downloadProgressHandler);\r\n this._xhr.upload.addEventListener('progress', this._uploadProgressHandler);\r\n\r\n this._extendNode(node);\r\n\r\n if (this.props.autosubmit) {\r\n dmx.nextTick(() => this._submit());\r\n }\r\n },\r\n\r\n destroy () {\r\n dmx.Component('form').prototype.destroy.call(this);\r\n\r\n this._xhr.removeEventListener('load', this._loadHandler);\r\n this._xhr.removeEventListener('abort', this._abortHandler);\r\n this._xhr.removeEventListener('error', this._errorHandler);\r\n this._xhr.removeEventListener('timeout', this._timeoutHandler);\r\n this._xhr.removeEventListener('progress', this._downloadProgressHandler);\r\n this._xhr.upload.removeEventListener('progress', this._uploadProgressHandler);\r\n this._xhr = null;\r\n },\r\n\r\n // TODO: deprecate this, use JSON or expression instead\r\n $parseAttributes (node) {\r\n dmx.BaseComponent.prototype.$parseAttributes.call(this, node);\r\n\r\n dmx.dom.getAttributes(node).forEach(({ name, argument, value }) => {\r\n if (argument && value && ['param', 'header'].includes(name)) {\r\n this.$watch(value, value => {\r\n this.props[name + 's'] = Object.assign({}, this.props[name + 's'], { [argument]: value });\r\n });\r\n }\r\n });\r\n },\r\n\r\n _extendNode (node) {\r\n node.dmxExtraData = {};\r\n node.dmxExtraElements = [];\r\n },\r\n\r\n _abort () {\r\n this._xhr.abort();\r\n },\r\n\r\n _resetData (clearData) {\r\n const data = {\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 if (clearData) {\r\n data.data = null;\r\n }\r\n\r\n this.set(data);\r\n },\r\n\r\n _formSubmit () {\r\n this._send();\r\n },\r\n\r\n _send () {\r\n // abort any previous request\r\n this._abort();\r\n \r\n const method = this.$node.method.toUpperCase();\r\n const action = this.$node.action;\r\n \r\n let data = null;\r\n \r\n let qs = Object.keys(this.props.params)\r\n .filter(key => this.props.params[key] != null)\r\n .map(key => {\r\n let value = this.props.params[key];\r\n if (typeof value === 'string' && value.startsWith('{{')) {\r\n value = this.parse(value);\r\n }\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(value);\r\n })\r\n .join('&');\r\n\r\n if (method === 'GET') {\r\n if (qs.length) qs += '&';\r\n\r\n qs += Array.from(this.$node.elements)\r\n .filter(element => !element.disabled && ((element.type !== 'radio' && element.type !== 'checkbox') || element.checked))\r\n .map(element => encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value))\r\n .join('&');\r\n } else if (this.props.postData === 'json') {\r\n data = this._parseJsonForm();\r\n\r\n if (this.$node.dmxExtraData) {\r\n Object.assign(data, this.$node.dmxExtraData);\r\n }\r\n\r\n data = JSON.stringify(data);\r\n } else {\r\n data = new FormData(this.$node);\r\n\r\n if (this.$node.dmxExtraData) {\r\n for (let key in this.$node.dmxExtraData) {\r\n let value = this.$node.dmxExtraData[key];\r\n\r\n if (Array.isArray(value)) {\r\n if (!/\\[\\]$/.test(key)) key += '[]';\r\n value.forEach(value => data.append(key, value));\r\n } else {\r\n data.set(key, value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n this._resetData();\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 let url = action;\r\n\r\n if (qs) {\r\n url += (url.includes('?') ? '&' : '?') + qs;\r\n }\r\n\r\n if (window.WebviewProxy) {\r\n // Cordova webview proxy plugin\r\n url = window.WebviewProxy.convertProxyUrl(url);\r\n }\r\n\r\n this._xhr.open(method, url);\r\n this._xhr.timeout = this.props.timeout * 1000;\r\n if (this.props.postData === 'json') {\r\n this._xhr.setRequestHeader('Content-Type', 'application/json');\r\n }\r\n for (const header in this.props.headers) {\r\n this._xhr.setRequestHeader(header, this.props.headers[header]);\r\n }\r\n this._xhr.setRequestHeader('accept', 'application/json');\r\n if (this.props.credentials) {\r\n this._xhr.withCredentials = true;\r\n }\r\n\r\n const csrf_token = document.querySelector('meta[name=\"csrf-token\"]');\r\n if (csrf_token) {\r\n this._xhr.setRequestHeader('X-CSRF-Token', csrf_token.content);\r\n }\r\n\r\n try {\r\n this._xhr.send(data);\r\n } catch (err) {\r\n this._done(err);\r\n }\r\n },\r\n\r\n _done (err) {\r\n this._resetData();\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 this.dispatchEvent('done');\r\n return;\r\n }\r\n\r\n let 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 this.dispatchEvent('done');\r\n return;\r\n }\r\n }\r\n\r\n try {\r\n const strHeaders = this._xhr.getAllResponseHeaders();\r\n const arrHeaders = strHeaders.trim().split(/[\\r\\n]+/);\r\n\r\n this.set('headers', arrHeaders.reduce((headers, line) => {\r\n const parts = line.split(': ');\r\n const name = parts.shift();\r\n const value = parts.join(': ');\r\n\r\n headers[name] = 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 // reset form validation\r\n if (dmx.validateReset) dmx.validateReset(this.$node);\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({\r\n status: this._xhr.status,\r\n data: response,\r\n });\r\n\r\n this.dispatchEvent('success');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n\r\n this.set({\r\n status: this._xhr.status,\r\n lastError: {\r\n status: this._xhr.status,\r\n message: this._xhr.statusText,\r\n response: response,\r\n }\r\n });\r\n\r\n if (this._xhr.status === 400) {\r\n this.dispatchEvent('invalid');\r\n\r\n // server-side validation error\r\n if (response.form && dmx.validate.setMessage) {\r\n for (const name in response.form) {\r\n const element = this.$node.querySelector(`[name=\"${name}\"]`);\r\n if (element) {\r\n const message = response.form[name];\r\n dmx.validate.setMessage(element, message);\r\n }\r\n }\r\n } else if (dmx.debug) {\r\n // console warning for debug purpose\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 this.dispatchEvent('done');\r\n },\r\n\r\n _loadHandler (event) {\r\n this._done();\r\n },\r\n\r\n _abortHandler (event) {\r\n this._resetData();\r\n this.dispatchEvent('abort');\r\n this.dispatchEvent('done');\r\n },\r\n\r\n _errorHandler (event) {\r\n this._done(Error('Failed to execute'));\r\n },\r\n\r\n _timeoutHandler (event) {\r\n this._done(Error('Execution timeout'));\r\n },\r\n\r\n _progressHandler (type, event) {\r\n event.loaded = event.loaded || event.position;\r\n\r\n const percent = event.lengthComputable ? Math.ceil(event.loaded * 100 / event.total) : 0;\r\n\r\n this.set({\r\n 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 [type + 'Progress']: {\r\n position: event.loaded,\r\n total: event.total,\r\n percent: percent,\r\n },\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","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 init (node) {\r\n this._shown = false;\r\n this._template = document.createDocumentFragment();\r\n\r\n while (node.firstChild) {\r\n this._template.appendChild(node.firstChild);\r\n }\r\n },\r\n\r\n render (node) {\r\n if (this.props.condition) {\r\n this._show();\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n this.props.condition ? this._show() : this._hide();\r\n },\r\n\r\n destroy () {\r\n this._template = null;\r\n },\r\n\r\n _show () {\r\n if (this._shown) return;\r\n\r\n const template = this._template.cloneNode(true);\r\n this.$node.appendChild(template);\r\n this.$parse();\r\n this.dispatchEvent('show');\r\n this._shown = true;\r\n },\r\n\r\n _hide () {\r\n if (!this._shown) return;\r\n\r\n Array.from(this.$node.childNodes).forEach(node => {\r\n const event = new Event('remove', { cancelable: true });\r\n if (node.dispatchEvent(event)) node.remove();\r\n });\r\n this.$destroyChildren();\r\n this.dispatchEvent('hide');\r\n this._shown = false;\r\n }\r\n});\r\n","dmx.Component('datetime', {\r\n\r\n initialData: {\r\n datetime: null,\r\n },\r\n\r\n attributes: {\r\n interval: {\r\n type: String,\r\n default: 'seconds',\r\n enum: ['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 init () {\r\n this._tick = this._tick.bind(this);\r\n this._tick();\r\n },\r\n\r\n destroy () {\r\n if (this._timeout) clearTimeout(this._timeout);\r\n if (this._animationFrame) cancelAnimationFrame(this._animationFrame);\r\n },\r\n\r\n _tick () {\r\n this.set('datetime', this._datetime());\r\n\r\n switch (this.props.interval) {\r\n case 'seconds': return this._timeout = setTimeout(this._tick, 1000);\r\n case 'minutes': return this._timeout = setTimeout(this._tick, 60000);\r\n case 'hours': return this._timeout = setTimeout(this._tick, 3600000);\r\n case 'days': return this._timeout = setTimeout(this._tick, 86400000);\r\n default: return this._animationFrame = requestAnimationFrame(this._tick);\r\n }\r\n },\r\n\r\n _datetime () {\r\n const now = new Date();\r\n const pad = (n, d) => ('0000' + n).slice(-d);\r\n const utc = this.props.utc;\r\n \r\n const year = utc ? now.getUTCFullYear() : now.getFullYear();\r\n const month = (utc ? now.getUTCMonth() : now.getMonth()) + 1;\r\n const day = utc ? now.getUTCDate() : now.getDate();\r\n const hours = utc ? now.getUTCHours() : now.getHours();\r\n const minutes = utc ? now.getUTCMinutes() : now.getMinutes();\r\n const seconds = utc ? now.getUTCSeconds() : now.getSeconds();\r\n\r\n const dateString = pad(year, 4) + '-' + pad(month, 2) + '-' + pad(day, 2);\r\n const tz = 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', { extends: 'fetch' });\r\n","dmx.Component('api-form', { extends: 'serverconnect-form' });\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 (newItem) {\r\n this._splice(this._count(), 0, newItem);\r\n },\r\n\r\n addUniq (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 (index, newItem) {\r\n this._splice(index, 0, newItem);\r\n },\r\n\r\n insertBefore (item, newItem) {\r\n const 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 (item, newItem) {\r\n const 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 (item, newItem) {\r\n const 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 (index, newItem) {\r\n this._splice(index, 1, newItem);\r\n },\r\n\r\n remove (item) {\r\n const index = this._indexOf(item);\r\n if (index != -1) {\r\n this._splice(index, 1);\r\n }\r\n },\r\n\r\n removeAt (index) {\r\n this._splice(index, 1);\r\n },\r\n\r\n reverse () {\r\n this._reverse();\r\n },\r\n\r\n sort () {\r\n this._sort();\r\n },\r\n\r\n empty () {\r\n this._updateData([]);\r\n },\r\n },\r\n\r\n render: false,\r\n\r\n init () {\r\n const arr = dmx.array(this.props.items);\r\n\r\n this.set({\r\n items: arr,\r\n count: arr.length,\r\n });\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has(\"items\")) {\r\n this._updateData(dmx.array(this.props.items));\r\n }\r\n },\r\n\r\n _count () {\r\n return this.data.items.length;\r\n },\r\n\r\n _indexOf (item) {\r\n return this.data.items.indexOf(item);\r\n },\r\n\r\n _splice (index, remove, item) {\r\n const 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 () {\r\n const arr = dmx.clone(this.data.items);\r\n arr.reverse();\r\n this._updateData(arr);\r\n },\r\n\r\n _sort () {\r\n const arr = dmx.clone(this.data.items);\r\n arr.sort();\r\n this._updateData(arr);\r\n },\r\n\r\n _updateData (arr) {\r\n if (!dmx.equal(this.data.items, arr)) {\r\n this.set({\r\n items: arr,\r\n count: arr.length,\r\n });\r\n\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n});\r\n","dmx.Component('group', {});\r\n","dmx.Component('flow', {\r\n\r\n initialData: {\r\n data: null,\r\n running: false,\r\n lastError: null,\r\n },\r\n\r\n attributes: {\r\n src: {\r\n type: String,\r\n default: null,\r\n },\r\n\r\n preload: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n autorun: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n params: {\r\n type: Object,\r\n default: {},\r\n },\r\n },\r\n\r\n methods: {\r\n run (param, throwError) {\r\n return this._run(param, throwError);\r\n },\r\n\r\n runSub (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: false,\r\n\r\n init (node) {\r\n if (this.props.src) {\r\n if (this.props.preload || this.props.autorun) {\r\n this._load(this.props.src, this.props.autorun).catch(console.error);\r\n }\r\n } else {\r\n try {\r\n this._flow = this._parse(node.textContent);\r\n if (this.props.autorun) this._run();\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n },\r\n\r\n destroy () {\r\n this._destroyed = true;\r\n },\r\n\r\n // TODO: deprecate this, use JSON or expression instead\r\n $parseAttributes (node) {\r\n dmx.BaseComponent.prototype.$parseAttributes.call(this, node);\r\n\r\n dmx.dom.getAttributes(node).forEach(({ name, argument, value }) => {\r\n if (argument && value && name == 'param') {\r\n this.$watch(value, value => {\r\n this.props.params = Object.assign({}, this.props.params, { [argument]: value });\r\n });\r\n }\r\n });\r\n },\r\n\r\n _load (url, run) {\r\n return fetch(url).then(response => {\r\n if (!response.ok || response.status >= 400) {\r\n throw Error(`Could not load flow ${this.name}, status ${response.status} ${response.statusText}`);\r\n }\r\n \r\n return response.text()\r\n }).then(text => {\r\n this._flow = this._parse(text);\r\n if (run) this._run();\r\n });\r\n },\r\n\r\n _parse (str) {\r\n return (window.Hjson ? Hjson : JSON).parse(str);\r\n },\r\n\r\n _runSub (param) {\r\n if (!this._flow) {\r\n if (this.props.src) {\r\n return this._load(this.props.src).then(() => {\r\n this._runFlow(param);\r\n });\r\n }\r\n\r\n throw Error('No flow');\r\n }\r\n\r\n return this._runFlow(param);\r\n },\r\n\r\n _run (param, throwError) {\r\n if (!this._flow) {\r\n if (this.props.src) {\r\n return this._load(this.props.src).then(() => {\r\n this._run(param, throwError);\r\n }).catch(console.error);\r\n }\r\n\r\n console.warn(`Flow ${this.name} is missing.`);\r\n return;\r\n }\r\n\r\n if (this.data.running) {\r\n console.info(`Can't run flow ${this.name} when a previous run didn't finish.`);\r\n return;\r\n }\r\n\r\n this.set({\r\n running: true,\r\n lastError: null,\r\n });\r\n\r\n this.dispatchEvent('start');\r\n\r\n if (dmx.debug) {\r\n console.debug(`Running flow ${this.name} with params`, param);\r\n console.time(`Flow ${this.name}`);\r\n }\r\n return this._runFlow(param).then(data => {\r\n if (dmx.debug) {\r\n console.debug(`Flow ${this.name} finished`, data);\r\n console.timeEnd(`Flow ${this.name}`);\r\n }\r\n this.set({\r\n running: false,\r\n data: data\r\n });\r\n\r\n this.dispatchEvent('done');\r\n\r\n return data;\r\n }).catch(err => {\r\n this.set({\r\n running: false,\r\n lastError: err && err.message,\r\n });\r\n\r\n this.dispatchEvent('error');\r\n\r\n if (throwError) {\r\n throw err;\r\n }\r\n })\r\n },\r\n\r\n _runFlow (param) {\r\n return dmx.Flow.run(this._flow, dmx.DataScope({\r\n $param: Object.assign({}, this.props.params, param),\r\n }, this));\r\n },\r\n\r\n});\r\n","dmx.Component('toggle', {\r\n\r\n initialData: {\r\n checked: false,\r\n },\r\n\r\n attributes: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n check () {\r\n this.props.checked = true;\r\n },\r\n\r\n uncheck () {\r\n this.props.checked = false;\r\n },\r\n\r\n toggle () {\r\n this.props.checked = !this.data.checked;\r\n }\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this.set('checked', this.props.checked);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('checked')) {\r\n this.set('checked', this.props.checked);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n});\r\n","dmx.Component('form-data', {\r\n\r\n attributes: {\r\n name: {\r\n type: String,\r\n default: 'data',\r\n },\r\n\r\n data: {\r\n type: [Array, Object], // can be anything\r\n default: null,\r\n },\r\n },\r\n\r\n init (node) {\r\n this._formdataHandler = this._formdataHandler.bind(this);\r\n this._form = node.closest('form');\r\n \r\n if (this._form) {\r\n this._form.addEventListener('formdata', this._formdataHandler);\r\n }\r\n },\r\n\r\n destroy () {\r\n if (this._form) {\r\n this._form.removeEventListener('formdata', this._formdataHandler);\r\n }\r\n },\r\n\r\n _formdataHandler (event) {\r\n const formData = event.formData;\r\n const data = this.props.data;\r\n\r\n this._appendData(formData, data, this.props.name);\r\n },\r\n\r\n _appendData (formData, data, prefix = '') {\r\n if (Array.isArray(data)) {\r\n data.forEach((value, index) => {\r\n this._appendData(formData, value, `${prefix}[${index}]`);\r\n });\r\n } else if (typeof data === 'object') {\r\n for (const key in data) {\r\n this._appendData(formData, data[key], `${prefix}[${key}]`);\r\n }\r\n } else {\r\n formData.append(prefix, data);\r\n }\r\n },\r\n\r\n});","dmx.Attribute(\"bind\", \"mounted\", function (node, attr) {\r\n const name = attr.argument;\r\n const isToggle = dmx.reToggleAttribute.test(name);\r\n\r\n this.$watch(attr.value, value => {\r\n if (isToggle) {\r\n node.toggleAttribute(name, !!value);\r\n } else {\r\n if (name === \"style\" && typeof value === \"object\") {\r\n return Object.assign(node.style, value);\r\n }\r\n\r\n if (value == null) {\r\n return node.removeAttribute(name);\r\n }\r\n\r\n node.setAttribute(name, value);\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 if (!node.dmxOn) {\r\n node.dmxOn = {\r\n component: this,\r\n };\r\n }\r\n\r\n node.dmxOn[attr.argument] = true;\r\n\r\n dmx.eventListener(node, attr.argument, function (event) {\r\n // jQuery event\r\n if (event.originalEvent) event = event.originalEvent;\r\n\r\n const retValue = dmx.parse(attr.value, dmx.DataScope({\r\n $event: event.$data,\r\n $originalEvent: event,\r\n }, node.dmxOn.component));\r\n\r\n return retValue;\r\n }, attr.modifiers);\r\n});\r\n","dmx.Attribute('repeat', 'before', function (node, attr) {\r\n const comment = document.createComment('Repeat Attribute');\r\n const template = document.createDocumentFragment();\r\n const RepeatItem = dmx.Component('repeat-item');\r\n\r\n node.parentNode.replaceChild(comment, node);\r\n node.removeAttribute(attr.fullName);\r\n\r\n template.append(node);\r\n\r\n let children = [];\r\n\r\n this.$watch(attr.value, repeat => {\r\n const items = dmx.repeatItems(repeat);\r\n\r\n if (items.length > 10000) {\r\n console.warn('More than 10000 repeat items, we limit the result!');\r\n //items.splice(10000, items.length);\r\n items.length = 10000;\r\n }\r\n\r\n if (attr.modifiers.fast) {\r\n if (children.length > items.length) {\r\n // destroy children\r\n children.splice(items.length).forEach(child => child.$destroy());\r\n }\r\n\r\n if (children.length) {\r\n // update existing children\r\n children.forEach((child, i) => child.set(items[i]));\r\n }\r\n\r\n if (items.length > children.length) {\r\n // add new children\r\n const fragment = document.createDocumentFragment();\r\n const toParse = new Set();\r\n\r\n items.slice(children.length).forEach(item => {\r\n const child = new RepeatItem(template.cloneNode(true), this, item);\r\n \r\n fragment.appendChild(child.$nodes[0]);\r\n //comment.parentNode.insertBefore(child.$nodes[0], comment);\r\n //child.$parse(child.$nodes[0]);\r\n toParse.add(child);\r\n\r\n children.push(child);\r\n this.$addChild(child);\r\n });\r\n\r\n comment.parentNode.insertBefore(fragment, comment);\r\n\r\n for (const child of toParse) {\r\n child.$parse(child.$nodes[0]);\r\n }\r\n\r\n if (attr.argument) {\r\n this.set(attr.argument, items);\r\n }\r\n }\r\n } else {\r\n const fragment = document.createDocumentFragment();\r\n const toParse = new Set();\r\n\r\n children.splice(0).forEach(child => child.$destroy());\r\n\r\n for (const item of items) {\r\n const child = new RepeatItem(template.cloneNode(true), this, item);\r\n \r\n fragment.append(child.$nodes[0]);\r\n //comment.parentNode.insertBefore(child.$nodes[0], comment);\r\n //child.$parse(child.$nodes[0]);\r\n toParse.add(child);\r\n\r\n children.push(child);\r\n this.$addChild(child);\r\n }\r\n\r\n comment.parentNode.insertBefore(fragment, comment);\r\n\r\n for (const child of toParse) {\r\n child.$parse(child.$nodes[0]);\r\n }\r\n\r\n if (attr.argument) {\r\n this.set(attr.argument, items);\r\n }\r\n }\r\n });\r\n});\r\n","dmx.Attribute(\"class\", \"mounted\", function (node, attr) {\r\n if (!node.dmxClass) {\r\n node.dmxClass = {\r\n component: this,\r\n };\r\n }\r\n\r\n this.$watch(attr.value, toggle => {\r\n node.dmxClass[attr.argument] = toggle;\r\n node.classList[toggle ? \"add\" : \"remove\"](attr.argument);\r\n });\r\n});\r\n","dmx.Attribute(\"hide\", \"mounted\", function (node, attr) {\r\n if (node.dmxHide) return;\r\n\r\n node.dmxHide = {\r\n component: this,\r\n initial: {\r\n display: node.style.getPropertyValue(\"display\"),\r\n priority: node.style.getPropertyPriority(\"display\"),\r\n },\r\n hide: null,\r\n };\r\n\r\n this.$watch(attr.value, hide => {\r\n node.dmxHide.hide = hide;\r\n\r\n const { initial } = node.dmxHide;\r\n const display = hide ? 'none' : initial.display;\r\n const priority = hide ? 'important' : initial.priority;\r\n\r\n node.style.setProperty('display', display, priority);\r\n });\r\n});\r\n","dmx.Attribute('show', 'mounted', function(node, attr) {\r\n if (node.dmxShow) return;\r\n\r\n node.dmxShow = {\r\n component: this,\r\n initial: {\r\n display: node.style.getPropertyValue('display'),\r\n priority: node.style.getPropertyPriority('display'),\r\n },\r\n show: null,\r\n };\r\n \r\n this.$watch(attr.value, show => {\r\n node.dmxShow.show = show;\r\n \r\n const { initial } = node.dmxShow;\r\n const display = show ? initial.display : 'none';\r\n const priority = show ? initial.priority : 'important';\r\n\r\n node.style.setProperty('display', display, priority);\r\n });\r\n});\r\n","dmx.Attribute(\"html\", \"mounted\", function (node, attr) {\r\n if (node.dmxHtml) return;\r\n\r\n node.dmxHtml = {\r\n component: this,\r\n };\r\n\r\n this.$watch(attr.value, html => {\r\n node.innerHTML = html != null ? String(html) : \"\";\r\n });\r\n});\r\n","dmx.Attribute(\"text\", \"mounted\", function (node, attr) {\r\n if (node.dmxText) return;\r\n\r\n node.dmxText = {\r\n component: this,\r\n };\r\n\r\n this.$watch(attr.value, text => {\r\n node.innerText = text != null ? String(text) : \"\";\r\n });\r\n});\r\n","dmx.Attribute(\"style\", \"mounted\", function (node, attr) {\r\n if (!node.dmxStyle) {\r\n node.dmxStyle = {\r\n component: this,\r\n };\r\n }\r\n\r\n const important = attr.modifiers.important ? \"important\" : \"\";\r\n\r\n this.$watch(attr.value, value => {\r\n node.dmxStyle[attr.argument] = value;\r\n if (value != null) {\r\n node.style.setProperty(attr.argument, 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 (options) {\r\n const subflow = this.parse(options.flow);\r\n const param = this.parse(options.param);\r\n\r\n return this.parse(subflow + \".runSub(\" + JSON.stringify(param) + \")\");\r\n },\r\n\r\n comment (options) {\r\n if (dmx.debug) {\r\n console.debug(options.message);\r\n }\r\n },\r\n\r\n wait (options) {\r\n const 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((resolve) => {\r\n setTimeout(resolve, delay);\r\n });\r\n },\r\n\r\n now (options) {\r\n return new Date().toISOString();\r\n },\r\n\r\n random (options) {\r\n let lower = this.parse(options.lower);\r\n let upper = this.parse(options.upper);\r\n let 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 let 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 (options) {\r\n const 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 const result = confirm(message);\r\n\r\n if (result) {\r\n if (options.then) {\r\n return this._exec(options.then).then(() => result);\r\n }\r\n } else if (options.else) {\r\n return this._exec(options.else).then(() => result);\r\n }\r\n\r\n return result;\r\n },\r\n\r\n prompt (options) {\r\n const 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 (options) {\r\n const 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 (options) {\r\n let items = dmx.clone(this.parse(options.repeat));\r\n\r\n if (!items) return;\r\n\r\n if (typeof items == \"boolean\") {\r\n items = items ? [0] : [];\r\n } else if (typeof items == \"string\") {\r\n items = items.split(/\\s*,\\s*/);\r\n } else if (typeof items == \"number\") {\r\n var arr = [];\r\n for (var i = 0; i < items; i++) {\r\n arr.push(i + 1);\r\n }\r\n items = arr;\r\n }\r\n\r\n if (typeof items != \"object\") {\r\n throw new Error(\"repeat: data is not repeatable\");\r\n }\r\n\r\n const parentScope = this.scope;\r\n const parentOutput = this.output;\r\n return this._each(items, (value, index) => {\r\n this.scope = new dmx.DataScope(\r\n Object.assign(\r\n {\r\n $value: value,\r\n $index: index,\r\n $name: index,\r\n $key: index,\r\n $number: index + 1,\r\n $oddeven: index % 2,\r\n },\r\n value\r\n ),\r\n parentScope\r\n );\r\n\r\n this.output = {};\r\n\r\n if (Array.isArray(options.outputFields) && value instanceof Object) {\r\n options.outputFields.forEach((field) => {\r\n this.output[field] = value[field];\r\n });\r\n }\r\n\r\n return this._exec(options.exec).then(() => {\r\n var output = this.output;\r\n this.scope = parentScope;\r\n this.output = parentOutput;\r\n return output;\r\n });\r\n });\r\n },\r\n\r\n condition (options) {\r\n const result = !!this.parse(options.if);\r\n\r\n if (result) {\r\n if (options.then) {\r\n return this._exec(options.then).then(() => result);\r\n }\r\n } else if (options.else) {\r\n return this._exec(options.else).then(() => result);\r\n }\r\n\r\n return result;\r\n },\r\n\r\n conditions (options) {\r\n if (Array.isArray(options.conditions)) {\r\n for (let i = 0; i < options.conditions.length; i++) {\r\n const condition = options.conditions[i];\r\n\r\n if (this.parse(condition.when)) {\r\n return this._exec(condition.then);\r\n }\r\n }\r\n }\r\n },\r\n\r\n select (options) {\r\n const expression = this.parse(options.expression);\r\n\r\n if (Array.isArray(options.cases)) {\r\n for (let i = 0; i < options.cases.length; i++) {\r\n const item = options.cases[i];\r\n\r\n if (this.parse(item.value) == expression) {\r\n return this._exec(item.exec);\r\n }\r\n }\r\n }\r\n },\r\n\r\n group (options) {\r\n if (options.name) {\r\n const parentOutput = this.output;\r\n this.output = {};\r\n\r\n return this._exec(options.exec).then(() => {\r\n var output = this.output;\r\n self.output = parentOutput;\r\n return output;\r\n });\r\n }\r\n\r\n return this._exec(options.exec);\r\n },\r\n\r\n while (options) {\r\n const loop = () => {\r\n return new Promise((resolve) => {\r\n if (!this.parse(options.condition)) return resolve();\r\n this._exec(options.exec).then(loop).then(resolve);\r\n });\r\n };\r\n\r\n return loop();\r\n },\r\n\r\n switch (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 const expression = this.parse(options.expression);\r\n for (let 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 (options) {\r\n return Promise.resolve(this._exec(options.try)).catch(() => {\r\n return this._exec(options.catch);\r\n });\r\n },\r\n\r\n run (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 (options) {\r\n if (!options.function) {\r\n throw new Error(\"runJS: missing function\");\r\n }\r\n\r\n const func = this.parse(options.function);\r\n const args = this.parse(options.args);\r\n\r\n return window[func].apply(null, args);\r\n },\r\n\r\n assign (options) {\r\n return this.parse(options.value);\r\n },\r\n\r\n setGlobal (options) {\r\n const key = this.parse(options.key);\r\n const 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 (options) {\r\n const key = this.parse(options.key);\r\n const 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 (options) {\r\n const 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 (options) {\r\n const 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 (options) {\r\n const key = this.parse(options.key);\r\n const 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 (options) {\r\n const 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 const value = localStorage.getItem(key);\r\n\r\n if (value == null) {\r\n return null;\r\n }\r\n\r\n return JSON.parse(value);\r\n },\r\n\r\n removeStorage (options) {\r\n const 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 (options) {\r\n let url = this.parse(options.url);\r\n let method = this.parse(options.method);\r\n let timeout = this.parse(options.timeout);\r\n let dataType = this.parse(options.dataType);\r\n let data = this.parse(options.data);\r\n let params = this.parse(options.params);\r\n let headers = this.parse(options.headers);\r\n let credentials = this.parse(options.credentials);\r\n let 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 (!headers) {\r\n headers = {};\r\n }\r\n\r\n if (typeof params == \"object\") {\r\n for (var param in params) {\r\n if (params.hasOwnProperty(param) && params[param] != null) {\r\n url +=\r\n (url.indexOf(\"?\") != -1 ? \"&\" : \"?\") +\r\n decodeURIComponent(param) +\r\n \"=\" +\r\n decodeURIComponent(params[param]);\r\n }\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 body = 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 if (data.hasOwnProperty(key)) {\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 if (value.hasOwnProperty(i)) {\r\n body.append(key, value[i]);\r\n }\r\n }\r\n } else {\r\n body.set(key, value);\r\n }\r\n }\r\n }\r\n }\r\n } else if (data) {\r\n if (!headers[\"Content-Type\"]) {\r\n headers[\"Content-Type\"] = \"application/text\";\r\n }\r\n body = data.toString();\r\n }\r\n }\r\n }\r\n\r\n return new Promise((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 if (headers.hasOwnProperty(header)) {\r\n xhr.setRequestHeader(header, headers[header]);\r\n }\r\n }\r\n\r\n if (credentials) {\r\n xhr.withCredentials = true;\r\n }\r\n\r\n xhr.send(body);\r\n });\r\n },\r\n});\r\n\r\n// aliasses\r\ndmx.__actions[\"setValue\"] = dmx.__actions[\"assign\"];\r\ndmx.__actions[\"api\"] = dmx.__actions[\"fetch\"];\r\ndmx.__actions[\"api.send\"] = dmx.__actions[\"fetch\"];\r\ndmx.__actions[\"serverConnect\"] = dmx.__actions[\"fetch\"];\r\n","dmx.Actions({\r\n /**\r\n * Add new columns to the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {Object.} options.add - Object with column name as key and the value\r\n * @param {boolean} [options.overwrite=false] - Overwrite existing columns\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.addColumns': function(options) {\r\n var collection = this.parse(options.collection);\r\n var add = options.add;\r\n var overwrite = !!this.parse(options.overwrite);\r\n\r\n if (!collection.length) return [];\r\n \r\n var output = [];\r\n \r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = dmx.clone(collection[i]);\r\n\r\n for (var column in add) {\r\n if (add.hasOwnProperty(column)) {\r\n var scope = new dmx.DataScope(row, this.scope);\r\n\r\n if (overwrite || row[column] == null) {\r\n row[column] = dmx.parse(add[column], scope);\r\n }\r\n }\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Remove entire specified columns from the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {string[]} options.columns - The columns\r\n * @param {boolean} [options.keep=false] - Keep or remove the columns\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.filterColumns': function(options) {\r\n var collection = this.parse(options.collection);\r\n var columns = this.parse(options.columns);\r\n var keep = !!this.parse(options.keep);\r\n\r\n if (!collection.length) return [];\r\n\r\n var output = [];\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = collection[i];\r\n var newRow = {};\r\n\r\n for (var column in row) {\r\n if (row.hasOwnProperty(column)) {\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\r\n output.push(newRow);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Rename columns in the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {Object.} options.rename - Object with old name as key and new name as value\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.renameColumns': function(options) {\r\n var collection = this.parse(options.collection);\r\n var rename = this.parse(options.rename);\r\n\r\n if (!collection.length) return [];\r\n \r\n var output = [];\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = collection[i];\r\n var newRow = {};\r\n\r\n for (var column in row) {\r\n if (row.hasOwnProperty(column)) {\r\n newRow[rename[column] || 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 * Fills empty rows with the row above's value\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {string[]} options.columns - The columns to fill\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.fillDown': function(options) {\r\n var collection = this.parse(options.collection);\r\n var columns = this.parse(options.columns);\r\n\r\n if (!collection.length) return [];\r\n\r\n var output = [];\r\n var toFill = {};\r\n\r\n for (var i = 0, l = columns.length; i < l; i++) {\r\n toFill[columns[i]] = null;\r\n }\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = dmx.clone(collection[i]);\r\n\r\n for (var column in toFill) {\r\n if (toFill.hasOwnProperty(column)) {\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\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Add new rows to the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {Object[]} options.rows - The rows to add\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.addRows': function(options) {\r\n var collection = this.parse(options.collection);\r\n var rows = this.parse(options.rows);\r\n\r\n return dmx.clone(collection).concat(dmx.clone(rows));\r\n },\r\n\r\n /**\r\n * Add row numbers to the collection\r\n * @param {Object} options \r\n * @param {Object[]} options.collection - The collection\r\n * @param {string} options.column - The name for the column\r\n * @param {number} options.startAt - The row number to start with\r\n * @param {boolean} [options.desc=false] - Order descending\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.addRowNumbers': function(options) {\r\n var collection = this.parse(options.collection);\r\n var column = this.parse(options.column);\r\n var startAt = this.parse(options.startAt);\r\n var desc = !!this.parse(options.desc);\r\n\r\n var output = [];\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = dmx.clone(collection[i]);\r\n row[column] = desc ? l + startAt - i : startAt + i;\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Join two collections (Left join)\r\n * @param {Object} options\r\n * @param {Object[]} options.collection1 - Left collection\r\n * @param {Object[]} options.collection2 - Right collection\r\n * @param {Object.} options.matches - Columns to match\r\n * @param {boolean} [options.matchAll=false] - Match columns using AND instead of OR\r\n * @returns {Object[]} - New collection\r\n */\r\n 'colections.join': function(options) {\r\n var collection1 = this.parse(options.collection1);\r\n var collection2 = this.parse(options.collection2);\r\n var matches = this.parse(options.matches);\r\n var matchAll = !!this.parse(options.matchAll);\r\n\r\n var output = [];\r\n\r\n for (var i = 0, l = collection1.length; i < l; i++) {\r\n var row = dmx.clone(collection1[i]);\r\n\r\n for (var j = 0, l2 = collection2.length; j < l2; j++) {\r\n var row2 = collection2[j];\r\n var hasMatch = false;\r\n\r\n for (var match in matches) {\r\n if (matches.hasOwnProperty(match)) {\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\r\n if (hasMatch) {\r\n for (var column in row2) {\r\n if (row2.hasOwnProperty(column)) {\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 }\r\n break;\r\n }\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Normalize all rows, add missing columns with NULL value\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.mormalize': function(options) {\r\n var collection = this.parse(options.collection);\r\n\r\n var columns = [];\r\n var output = [];\r\n\r\n // first collect all columns from collection\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n for (var column in collection[i]) {\r\n if (collection[i].hasOwnProperty(column)) {\r\n if (columns.indexOf(column) == -1) {\r\n columns.push(column);\r\n }\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});"]}