{"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","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","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","$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","files","dataUrl","loading","date","lastModified","lastModifiedDate","toISOString","check","_select","defaultChecked","radios","radio","bubbles","_radios","_updateValue","filter","unchecked","_checkboxes","checkbox","selectedIndex","selectedValue","selectedText","optiontext","optionvalue","setSelectedIndex","_options","_mutationObserver","MutationObserver","_updatingOptions","observe","subtree","childList","_renderOptions","option","selected","defaultSelected","disconnect","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","send","_done","responseText","_parseHeaders","statusText","arrHeaders","getAllResponseHeaders","_parseLinkHeaders","linkHeader","link","linkUrl","URL","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","_updateData","running","src","preload","autorun","throwError","_run","runSub","_runSub","_load","_flow","_parse","_destroyed","fetch","_runFlow","$param","uncheck","isToggle","nodeName","comment","createComment","fast","initial","priority","getPropertyPriority","_value","_request","html","innerText","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.0-rc.4',\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 if (a !== b) return false;\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 ['Undefinec', 'undefined'],\r\n ['Number', 'number'],\r\n ['BigInt', 'number'],\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 != ')' && 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())) || 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 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 && 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 && !dmx.equal(oldValue, value)) {\r\n this.requestUpdate(prop, oldValue);\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 (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 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 = 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 = opts.default;\r\n }\r\n\r\n if (opts.validate && !opts.validate(value)) {\r\n value = 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 = 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 = opts.default;\r\n }\r\n } else if (typeof value !== 'number' || !isFinite(Number(value))) {\r\n value = 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 = 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 = opts.default;\r\n }\r\n\r\n if (opts.validate && !opts.validate(value)) {\r\n value = 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 },\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.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.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 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 initialData: {\r\n file: null,\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 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 initialData: {\r\n files: [],\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 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 },\r\n },\r\n\r\n methods: {\r\n select (check) {\r\n this._select(check);\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 = '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 this.$node.defaultChecked = this.props.checked;\r\n if (this.$node.checked != this.props.checked) {\r\n this.$node.checked = this.props.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 _select (check) {\r\n this.$node.checked = (check !== false);\r\n this.set('checked', this.$node.checked);\r\n this.dispatchEvent(this.$node.checked ? 'checked' : 'unchecked');\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(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\r\n if (this.$node.checked) {\r\n const radios = document.querySelectorAll(`input[type=\"radio\"][name=\"${this.$node.name}\"]`);\r\n for (const radio of radios) {\r\n if (radio !== this.$node) {\r\n radio.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 },\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\r\n this._setValue(this.props.value, true);\r\n },\r\n\r\n destroy () {\r\n this.$node.removeEventListener('change', 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 },\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 this.$node.defaultChecked = this.props.checked;\r\n if (this.$node.checked != this.props.checked) {\r\n this.$node.checked = this.props.checked;\r\n this.set('checked', this.props.checked);\r\n this.dispatchEvent(this.props.checked ? 'checked' : 'unchecked');\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 this.dispatchEvent(this.$node.checked ? 'checked' : 'unchecked');\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 },\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\r\n this._setValue(this.props.value, true);\r\n },\r\n\r\n destroy () {\r\n this.$node.removeEventListener('change', 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.checkbox = 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,\r\n default: [],\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 Array.from(this.$node.options).forEach(option => {\r\n option.selected = (option.value == value);\r\n if (defaultValue) option.defaultSelected = option.selected;\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 if (this.props.options.length) {\r\n this._options.splice(0).forEach(option => option.remove());\r\n\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 this._updateValue();\r\n }\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 },\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 option.selected = value.includes(option.value);\r\n if (defaultValue) option.defaultSelected = option.selected;\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 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 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 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 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.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 const component = this;\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 }, 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 //requestAnimationFrame(() => {\r\n //comment.parentNode.insertBefore(fragment, comment);\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 //requestAnimationFrame(() => {\r\n //comment.parentNode.insertBefore(fragment, comment);\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 this.$watch(attr.value, value => {\r\n node.classList[value ? \"add\" : \"remove\"](attr.argument);\r\n });\r\n});\r\n","dmx.Attribute(\"hide\", \"mounted\", function (node, attr) {\r\n const initial = {\r\n value: node.style.getPropertyValue('display'),\r\n priority: node.style.getPropertyPriority('display'),\r\n };\r\n\r\n this.$watch(attr.value, hide => {\r\n const value = hide ? 'none' : initial.value;\r\n const priority = hide ? 'important' : initial.priority;\r\n\r\n node.style.setProperty('display', value, priority);\r\n });\r\n});\r\n","dmx.Attribute('show', 'mounted', function(node, attr) {\r\n const initial = {\r\n value: node.style.getPropertyValue('display'),\r\n priority: node.style.getPropertyPriority('display'),\r\n };\r\n\r\n this.$watch(attr.value, show => {\r\n const value = show ? initial.value : 'none';\r\n const priority = show ? initial.priority : 'important';\r\n\r\n node.style.setProperty('display', value, priority);\r\n });\r\n});\r\n","dmx.Attribute(\"html\", \"mounted\", function (node, attr) {\r\n let _value = null;\r\n let _request = null;\r\n\r\n this.$watch(attr.value, value => {\r\n _value = value;\r\n if (!_request) {\r\n _request = requestAnimationFrame(() => {\r\n const html = _value != null ? String(_value) : \"\";\r\n node.innerHTML = html;\r\n _request = null;\r\n });\r\n }\r\n });\r\n});\r\n","dmx.Attribute(\"text\", \"mounted\", function (node, attr) {\r\n let _value = null;\r\n let _request = null;\r\n\r\n this.$watch(attr.value, value => {\r\n _value = value;\r\n if (!_request) {\r\n _request = requestAnimationFrame(() => {\r\n const text = _value != null ? String(_value) : \"\";\r\n node.innerText = text;\r\n _request = null;\r\n });\r\n }\r\n });\r\n});\r\n","dmx.Attribute(\"style\", \"mounted\", function (node, attr) {\r\n const important = attr.modifiers.important ? \"important\" : \"\";\r\n\r\n this.$watch(attr.value, 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 return JSON.parse(localStorage.getItem(key));\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});"]}