{"version":3,"file":"ef.min.js","sources":["../node_modules/eft-parser/src/escape-parser.js","../node_modules/eft-parser/src/eft-parser.js","../node_modules/ef-core/src/lib/utils/type-of.js","../node_modules/ef-core/src/lib/utils/literals-mix.js","../node_modules/ef-core/src/lib/utils/array-helper.js","../node_modules/ef-core/src/lib/utils/debug.js","../node_modules/ef-core/src/lib/render-queue.js","../node_modules/ef-core/src/lib/utils/polyfills.js","../node_modules/ef-core/src/lib/resolver.js","../node_modules/ef-core/src/lib/subscriber-call-stack.js","../node_modules/ef-core/src/lib/utils/isnan.js","../node_modules/ef-core/src/lib/binding.js","../node_modules/ef-core/src/lib/utils/fast-instance-of.js","../node_modules/ef-core/src/lib/utils/buble-fix.js","../node_modules/ef-core/src/lib/utils/dom-helper.js","../node_modules/ef-core/src/lib/utils/event-helper.js","../node_modules/ef-core/src/lib/element-creator.js","../node_modules/ef-core/src/lib/utils/dom-arr-helper.js","../node_modules/ef-core/src/mount-options.js","../node_modules/ef-core/src/lib/creator.js","../node_modules/ef-core/src/lib/renderer.js","../node_modules/ef-core/src/lib/register-props.js","../node_modules/ef-core/src/lib/jsx-create-element.js","../node_modules/ef-core/src/ef-core.js","../src/ef.js","../src/lib/parser.js"],"sourcesContent":["// Set the escape character\nconst char = '&'\nconst doubleChar = char + char\n\n// Initlize RegExp\nconst oct = new RegExp(`\\\\${char}[0-7]{1,3}`, 'g')\nconst ucp = new RegExp(`\\\\${char}u\\\\[.*?\\\\]`, 'g')\nconst uni = new RegExp(`\\\\${char}u.{0,4}`, 'g')\nconst hex = new RegExp(`\\\\${char}x.{0,2}`, 'g')\nconst esc = new RegExp(`\\\\${char}`, 'g')\nconst b = new RegExp(`\\\\${char}b`, 'g')\nconst t = new RegExp(`\\\\${char}t`, 'g')\nconst n = new RegExp(`\\\\${char}n`, 'g')\nconst v = new RegExp(`\\\\${char}v`, 'g')\nconst f = new RegExp(`\\\\${char}f`, 'g')\nconst r = new RegExp(`\\\\${char}r`, 'g')\n\n// Escape octonary sequence\nconst O2C = () => {\n\tthrow new SyntaxError('Octal escape sequences are not allowed in EFML.')\n}\n\n// Escape unicode code point sequence\nconst UC2C = (val) => {\n\tval = val.substr(3, val.length - 4)\n\tval = parseInt(val, 16)\n\tif (!val) throw new SyntaxError('Invalid Unicode escape sequence')\n\ttry {\n\t\treturn String.fromCodePoint(val)\n\t} catch (err) {\n\t\tthrow new SyntaxError('Undefined Unicode code-point')\n\t}\n}\n\n// Escape unicode sequence\nconst U2C = (val) => {\n\tval = val.substring(2)\n\tval = parseInt(val, 16)\n\tif (!val) throw new SyntaxError('Invalid Unicode escape sequence')\n\treturn String.fromCharCode(val)\n}\n\n// Escape hexadecimal sequence\nconst X2C = (val) => {\n\tval = `00${val.substring(2)}`\n\tval = parseInt(val, 16)\n\tif (!val) throw new SyntaxError('Invalid hexadecimal escape sequence')\n\treturn String.fromCharCode(val)\n}\n\nconst efEscape = (string) => {\n\t// Split strings\n\tconst splitArr = string.split(doubleChar)\n\tconst escaped = []\n\n\t// Escape all known escape characters\n\tfor (let i of splitArr) {\n\t\tconst escapedStr = i\n\t\t\t.replace(oct, O2C)\n\t\t\t.replace(ucp, UC2C)\n\t\t\t.replace(uni, U2C)\n\t\t\t.replace(hex, X2C)\n\t\t\t.replace(b, '\\b')\n\t\t\t.replace(t, '\\t')\n\t\t\t.replace(n, '\\n')\n\t\t\t.replace(v, '\\v')\n\t\t\t.replace(f, '\\f')\n\t\t\t.replace(r, '\\r')\n\t\t\t// Remove all useless escape characters\n\t\t\t.replace(esc, '')\n\t\tescaped.push(escapedStr)\n\t}\n\t// Return escaped string\n\treturn escaped.join(char)\n}\n\nconst checkEscape = string => string[string.length - 1] === char\n\nconst splitWith = (string, char) => {\n\tconst splitArr = string.split(char)\n\tconst escapedSplit = []\n\tlet escaped = false\n\tfor (let i of splitArr) {\n\t\tif (escaped) escapedSplit[escapedSplit.length - 1] += `${char}${i}`\n\t\telse escapedSplit.push(i)\n\t\tescaped = checkEscape(i)\n\t}\n\treturn escapedSplit\n}\n\nconst splitBy = (string, char) => {\n\tconst splitArr = string.split(doubleChar)\n\tconst escaped = splitWith(splitArr.shift(), char)\n\tfor (let i of splitArr) {\n\t\tconst escapedSplit = splitWith(i, char)\n\t\tescaped[escaped.length - 1] += `${doubleChar}${escapedSplit.shift()}`\n\t\tescaped.push(...escapedSplit)\n\t}\n\treturn escaped\n}\n\nexport { efEscape, splitBy }\n","import { efEscape, splitBy } from './escape-parser.js'\n\nconst typeSymbols = '>#%@.-+'\nconst reserved = [\n\t'$ctx', '$data', '$refs', '$methods', '$mount', '$umount',\n\t'$subscribe', '$unsubscribe', '$update', '$destroy', '__DIRECTMOUNT__'\n]\nconst mustache = /\\{\\{.+?\\}\\}/g\nconst spaceIndent = /^(\\t*)( *).*/\nconst hashref = /#([^}]|}[^}])*$/\n\nconst getErrorMsg = (msg, line = -2) => `Failed to parse eft template: ${msg}. at line ${line + 1}`\n\nconst isEmpty = string => !string.replace(/\\s/, '')\n\nconst checkValidType = obj => ['number', 'boolean', 'string'].indexOf(typeof obj) > -1\n\nconst ESCAPE = (string) => {\n\tif (!string) return [string, false]\n\ttry {\n\t\tconst parsed = JSON.parse(string)\n\t\tif (['number', 'boolean'].indexOf(typeof parsed) === -1) return [efEscape(string), true]\n\t\treturn [parsed, false]\n\t} catch (e) {\n\t\treturn [efEscape(string), true]\n\t}\n}\n\nconst getOffset = (string, parsingInfo) => {\n\tif (parsingInfo.offset !== null) return\n\tparsingInfo.offset = string.match(/\\s*/)[0]\n\tif (parsingInfo.offset) parsingInfo.offsetReg = parsingInfo.offset\n}\n\nconst removeOffset = (string, parsingInfo, i) => {\n\tif (parsingInfo.offsetReg) {\n\t\tlet removed = false\n\t\tstring = string.replace(parsingInfo.offsetReg, () => {\n\t\t\tremoved = true\n\t\t\treturn ''\n\t\t})\n\t\tif (!removed) throw new SyntaxError(getErrorMsg(`Expected indent to be grater than 0 and less than ${parsingInfo.prevDepth + 1}, but got -1`, i))\n\t}\n\treturn string\n}\n\nconst getIndent = (string, parsingInfo) => {\n\tif (parsingInfo.indentReg) return\n\tconst spaces = string.match(spaceIndent)[2]\n\tif (spaces) {\n\t\tparsingInfo.indentReg = new RegExp(spaces, 'g')\n\t}\n}\n\nconst getDepth = (string, parsingInfo, i) => {\n\tlet depth = 0\n\tif (parsingInfo.indentReg) string = string.replace(/^\\s*/, str => str.replace(parsingInfo.indentReg, '\\t'))\n\tconst content = string.replace(/^\\t*/, (str) => {\n\t\tdepth = str.length\n\t\treturn ''\n\t})\n\tif ((/^\\s/).test(content)) throw new SyntaxError(getErrorMsg('Bad indent', i))\n\treturn { depth, content }\n}\n\nconst resolveDepth = (ast, depth) => {\n\tlet currentNode = ast\n\tfor (let i = 0; i < depth; i++) currentNode = currentNode[currentNode.length - 1]\n\treturn currentNode\n}\n\nconst splitDefault = (string) => {\n\tstring = string.slice(2, string.length - 2)\n\tconst [_path, ..._default] = splitBy(string, '=')\n\tconst pathArr = splitBy(_path.trim(), '.').map(efEscape)\n\tconst [defaultVal, escaped] = ESCAPE(_default.join('=').trim())\n\tif (checkValidType(defaultVal) && (escaped || (!escaped && defaultVal !== ''))) return [pathArr, defaultVal]\n\treturn [pathArr]\n}\n\nconst splitLiterals = (string) => {\n\tconst strs = string.split(mustache)\n\tif (strs.length === 1) return ESCAPE(string)[0]\n\tconst tmpl = []\n\tif (strs.length === 2 && !strs[0] && !strs[1]) tmpl.push(0)\n\telse tmpl.push(strs.map(efEscape))\n\tconst mustaches = string.match(mustache)\n\tif (mustaches) tmpl.push(...mustaches.map(splitDefault))\n\treturn tmpl\n}\n\nconst pushStr = (textArr, str) => {\n\tif (str) textArr.push(str)\n}\n\nconst parseText = (string) => {\n\tconst result = splitLiterals(string)\n\tif (checkValidType(result)) return [`${result}`]\n\tconst [strs, ...exprs] = result\n\tconst textArr = []\n\tfor (let i = 0; i < exprs.length; i++) {\n\t\tpushStr(textArr, strs[i])\n\t\ttextArr.push(exprs[i])\n\t}\n\tpushStr(textArr, strs[strs.length - 1])\n\treturn textArr\n}\n\nconst dotToSpace = val => val.replace(/\\./g, ' ')\n\nconst parseTag = (string) => {\n\tconst tagInfo = {}\n\tconst [tag, ...content] = splitBy(string.replace(hashref, (val) => {\n\t\ttagInfo.ref = val.slice(1)\n\t\treturn ''\n\t}), '.')\n\ttagInfo.tag = efEscape(tag)\n\ttagInfo.class = splitLiterals(content.join('.'))\n\tif (typeof tagInfo.class === 'string') tagInfo.class = dotToSpace(tagInfo.class).trim()\n\telse if (tagInfo.class[0]) tagInfo.class[0] = tagInfo.class[0].map(dotToSpace)\n\treturn tagInfo\n}\n\nconst parseNodeProps = (string) => {\n\tconst splited = splitBy(string, '=')\n\treturn {\n\t\tname: efEscape(splited.shift().trim()),\n\t\tvalue: splitLiterals(splited.join('=').trim())\n\t}\n}\n\nconst parseEvent = (string) => {\n\tconst splited = splitBy(string, '=')\n\treturn {\n\t\tname: splited.shift().trim(),\n\t\tvalue: splited.join('=').trim()\n\t}\n}\n\nconst setOption = (options, option) => {\n\tswitch (option) {\n\t\tcase 'stop': {\n\t\t\toptions.s = 1\n\t\t\tbreak\n\t\t}\n\t\tcase 'stopImmediate': {\n\t\t\toptions.i = 1\n\t\t\tbreak\n\t\t}\n\t\tcase 'prevent': {\n\t\t\toptions.p = 1\n\t\t\tbreak\n\t\t}\n\t\tcase 'shift': {\n\t\t\toptions.h = 1\n\t\t\tbreak\n\t\t}\n\t\tcase 'alt': {\n\t\t\toptions.a = 1\n\t\t\tbreak\n\t\t}\n\t\tcase 'ctrl': {\n\t\t\toptions.c = 1\n\t\t\tbreak\n\t\t}\n\t\tcase 'meta': {\n\t\t\toptions.t = 1\n\t\t\tbreak\n\t\t}\n\t\tcase 'capture': {\n\t\t\toptions.u = 1\n\t\t\tbreak\n\t\t}\n\t\tdefault: {\n\t\t\tconsole.warn(`Abandoned unsupported eft event option '${option}'.`)\n\t\t}\n\t}\n}\n\nconst getOption = (options, keys, option) => {\n\tconst keyCode = parseInt(option, 10)\n\tif (isNaN(keyCode)) return setOption(options, efEscape(option))\n\tkeys.push(keyCode)\n}\n\nconst getEventOptions = (name) => {\n\tconst options = {}\n\tconst keys = []\n\tconst [listener, ...ops] = splitBy(name, '.')\n\toptions.l = efEscape(listener)\n\tfor (let i of ops) getOption(options, keys, i)\n\tif (keys.length > 0) options.k = keys\n\treturn options\n}\n\nconst splitEvents = (string) => {\n\tconst [name, ...value] = splitBy(string, ':')\n\tconst content = value.join(':')\n\tconst escapedName = efEscape(name.trim())\n\tif (content) return [escapedName, splitLiterals(content)]\n\treturn [escapedName]\n}\n\nconst parseLine = ({line, ast, parsingInfo, i}) => {\n\tif (isEmpty(line)) return\n\tgetOffset(line, parsingInfo)\n\n\tconst trimmedLine = removeOffset(line, parsingInfo, i)\n\tgetIndent(trimmedLine, parsingInfo)\n\n\tlet { depth, content } = getDepth(trimmedLine, parsingInfo, i)\n\n\tif (content) {\n\t\tif (depth < 0 || depth - parsingInfo.prevDepth > 1 || (depth - parsingInfo.prevDepth === 1 && ['comment', 'tag'].indexOf(parsingInfo.prevType) === -1) || (parsingInfo.prevType !== 'comment' && depth === 0 && parsingInfo.topExists)) throw new SyntaxError(getErrorMsg(`Expected indent to be grater than 0 and less than ${parsingInfo.prevDepth + 1}, but got ${depth}`, i))\n\t\tconst type = content[0]\n\t\tcontent = content.slice(1)\n\t\tif (!content && typeSymbols.indexOf(type) >= 0) throw new SyntaxError(getErrorMsg('Empty content', i))\n\t\t// Jump back to upper level\n\t\tif (depth < parsingInfo.prevDepth || (depth === parsingInfo.prevDepth && parsingInfo.prevType === 'tag')) parsingInfo.currentNode = resolveDepth(ast, depth)\n\t\tparsingInfo.prevDepth = depth\n\n\t\tswitch (type) {\n\t\t\tcase '>': {\n\t\t\t\tconst info = parseTag(content)\n\t\t\t\tconst newNode = [{\n\t\t\t\t\tt: info.tag\n\t\t\t\t}]\n\t\t\t\tif (info.class) {\n\t\t\t\t\tnewNode[0].a = {}\n\t\t\t\t\tnewNode[0].a.class = info.class\n\t\t\t\t}\n\t\t\t\tif (info.ref) newNode[0].r = info.ref\n\t\t\t\tparsingInfo.currentNode.push(newNode)\n\t\t\t\tparsingInfo.currentNode = newNode\n\t\t\t\tparsingInfo.prevType = 'tag'\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase '#': {\n\t\t\t\tconst { name, value } = parseNodeProps(content)\n\t\t\t\tif (!parsingInfo.currentNode[0].a) parsingInfo.currentNode[0].a = {}\n\t\t\t\tparsingInfo.currentNode[0].a[name] = value\n\t\t\t\tparsingInfo.prevType = 'attr'\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase '%': {\n\t\t\t\tconst { name, value } = parseNodeProps(content)\n\t\t\t\tif (!parsingInfo.currentNode[0].p) parsingInfo.currentNode[0].p = {}\n\t\t\t\tparsingInfo.currentNode[0].p[name] = value\n\t\t\t\tparsingInfo.prevType = 'prop'\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase '@': {\n\t\t\t\tconst { name, value } = parseEvent(content)\n\t\t\t\tif (!parsingInfo.currentNode[0].e) parsingInfo.currentNode[0].e = []\n\t\t\t\tconst options = getEventOptions(name)\n\t\t\t\tconst [method, _value] = splitEvents(value)\n\t\t\t\toptions.m = method\n\t\t\t\tif (_value) options.v = _value\n\t\t\t\tparsingInfo.currentNode[0].e.push(options)\n\t\t\t\tparsingInfo.prevType = 'event'\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase '.': {\n\t\t\t\tparsingInfo.currentNode.push(...parseText(content))\n\t\t\t\tparsingInfo.prevType = 'text'\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase '|': {\n\t\t\t\tif (parsingInfo.currentNode.length > 1) content = `\\n${content}`\n\t\t\t\tparsingInfo.currentNode.push(...parseText(content))\n\t\t\t\tparsingInfo.prevType = 'multiline-text'\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase '-': {\n\t\t\t\tif (reserved.indexOf(content) !== -1) throw new SyntaxError(getErrorMsg(`Reserved name '${content}' should not be used`, i))\n\t\t\t\tparsingInfo.currentNode.push({\n\t\t\t\t\tn: content,\n\t\t\t\t\tt: 0\n\t\t\t\t})\n\t\t\t\tparsingInfo.prevType = 'node'\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase '+': {\n\t\t\t\tparsingInfo.currentNode.push({\n\t\t\t\t\tn: content,\n\t\t\t\t\tt: 1\n\t\t\t\t})\n\t\t\t\tparsingInfo.prevType = 'list'\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tparsingInfo.prevType = 'comment'\n\t\t\t}\n\t\t}\n\t}\n}\n\nconst parseEft = (template) => {\n\tif (!template) throw new TypeError(getErrorMsg('Template required, but nothing given'))\n\tconst tplType = typeof template\n\tif (tplType !== 'string') throw new TypeError(getErrorMsg(`Expected a string, but got a(n) ${tplType}`))\n\tconst lines = template.split(/\\r?\\n/)\n\tconst ast = [{t: 0}]\n\tconst parsingInfo = {\n\t\tindentReg: null,\n\t\tprevDepth: 0,\n\t\toffset: null,\n\t\toffsetReg: null,\n\t\tprevType: 'comment',\n\t\tcurrentNode: ast,\n\t\ttopExists: false,\n\t}\n\tfor (let i = 0; i < lines.length; i++) parseLine({line: lines[i], ast, parsingInfo, i})\n\n\tif (ast.length <= 1) throw new SyntaxError(getErrorMsg('Nothing to be parsed', lines.length - 1))\n\tif (ast.length === 2 && Array.isArray(ast[1]) && Object.hasOwnProperty.call(ast[1][0], 't')) return ast[1]\n\treturn ast\n}\n\nexport default parseEft\n","const typeOf = (obj) => {\n\tif (Array.isArray(obj)) return 'array'\n\treturn typeof obj\n}\n\nexport default typeOf\n","const mixStr = (strs, ...exprs) => {\n\tlet string = ''\n\tfor (let i = 0; i < exprs.length; i++) {\n\t\tif (typeof exprs[i] === 'undefined') string += strs[i]\n\t\telse string += (strs[i] + exprs[i])\n\t}\n\treturn string + strs[strs.length - 1]\n}\n\nconst getVal = ({dataNode, _key}) => {\n\tconst data = dataNode[_key]\n\tif (typeof data === 'undefined') return ''\n\treturn data\n}\n\nconst mixVal = (strs, ...exprs) => {\n\tif (!strs) return getVal(exprs[0])\n\tconst template = [strs]\n\ttemplate.push(...exprs.map(getVal))\n\treturn mixStr(...template)\n}\n\nexport { mixStr, mixVal }\n","const proto = Array.prototype\n\nconst ARR = {\n\tcopy(arr) {\n\t\treturn proto.slice.call(arr, 0)\n\t},\n\tempty(arr) {\n\t\tarr.length = 0\n\t\treturn arr\n\t},\n\tequals(left, right) {\n\t\tif (!Array.isArray(right)) return false\n\t\tif (left === right) return true\n\t\tif (left.length !== right.length) return false\n\t\tfor (let i = 0, l = left.length; i < l; i++) {\n\t\t\tif (left[i] !== right[i]) return false\n\t\t}\n\t\treturn true\n\t},\n\tpop(arr) {\n\t\treturn proto.pop.call(arr)\n\t},\n\tpush(arr, ...items) {\n\t\treturn proto.push.apply(arr, items)\n\t},\n\tremove(arr, item) {\n\t\tconst index = proto.indexOf.call(arr, item)\n\t\tif (index > -1) {\n\t\t\tproto.splice.call(arr, index, 1)\n\t\t\treturn item\n\t\t}\n\t},\n\treverse(arr) {\n\t\treturn proto.reverse.call(arr)\n\t},\n\trightUnique(arr) {\n\t\tconst newArr = []\n\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\tfor (let j = i + 1; j < arr.length; j++) if (arr[i] === arr[j]) j = i += 1\n\t\t\tnewArr.push(arr[i])\n\t\t}\n\t\treturn newArr\n\t},\n\tshift(arr) {\n\t\treturn proto.shift.call(arr)\n\t},\n\tslice(arr, index, length) {\n\t\treturn proto.slice.call(arr, index, length)\n\t},\n\tsort(arr, fn) {\n\t\treturn proto.sort.call(arr, fn)\n\t},\n\tsplice(arr, ...args) {\n\t\treturn proto.splice.apply(arr, args)\n\t},\n\tunshift(arr, ...items) {\n\t\treturn proto.unshift.apply(arr, items)\n\t}\n}\n\nif (window.Set && Array.from) ARR.unique = arr => Array.from(new Set(arr))\nelse ARR.unique = ARR.rightUnique\n\nexport default ARR\n","// Wrap console functions for `[EF]` perfix\nconst strTpl = '[EF] %s'\nconst dbg = {\n\tlog: console.log.bind(console, strTpl),\n\tinfo: console.info.bind(console, strTpl),\n\twarn: console.warn.bind(console, strTpl),\n\terror: console.error.bind(console, strTpl)\n}\n\nexport default dbg\n","import ARR from './utils/array-helper.js'\nimport dbg from './utils/debug.js'\n\nconst modificationQueue = []\nconst domQueue = []\nconst userQueue = []\nlet count = 0\n\nconst queue = handlers => modificationQueue.push(...handlers)\nconst queueDom = handler => domQueue.push(handler)\nconst onNextRender = handler => userQueue.push(handler)\n\nconst isPaused = () => count > 0\n\nconst inform = () => {\n\tcount += 1\n\treturn count\n}\n\nconst execModifications = () => {\n\tif (modificationQueue.length === 0) return\n\tconst renderQueue = ARR.unique(modificationQueue)\n\tARR.empty(modificationQueue)\n\tfor (let i of renderQueue) i()\n}\n\nconst execDomModifications = () => {\n\tif (domQueue.length === 0) return\n\tconst domRenderQueue = ARR.rightUnique(domQueue)\n\tARR.empty(domQueue)\n\tfor (let i of domRenderQueue) i()\n}\n\nconst execUserQueue = () => {\n\tif (userQueue.length === 0) return\n\tconst userFnQueue = ARR.unique(userQueue)\n\tARR.empty(userQueue)\n\tfor (let i of userFnQueue) i()\n}\n\nconst exec = (immediate) => {\n\tif (!immediate && (count -= 1) > 0) return count\n\tcount = 0\n\n\tif (modificationQueue.length > 0) execModifications()\n\n\tif (domQueue.length > 0) execDomModifications()\n\n\t// Execute user queue after DOM update\n\tif (userQueue.length > 0) setTimeout(execUserQueue, 0)\n\n\treturn count\n}\n\nconst bundle = (cb) => {\n\tinform()\n\ttry {\n\t\treturn exec(cb(inform, exec))\n\t} catch (e) {\n\t\tdbg.error('Error caught when executing bundle:\\n', e)\n\t\treturn exec()\n\t}\n}\n\nexport { queue, queueDom, onNextRender, inform, exec, bundle, isPaused }\n","// Enough for ef's usage, so no need for a full polyfill\nconst legacyAssign = (ee, er) => {\n\tfor (let i in er) ee[i] = er[i]\n\treturn ee\n}\n\nconst assign = Object.assign || legacyAssign\n\nexport {assign, legacyAssign}\n","import {inform, exec} from './render-queue.js'\nimport {assign} from './utils/polyfills.js'\n\nconst resolveAllPath = ({_path, handlers, subscribers, innerData}) => {\n\tfor (let i of _path) {\n\t\tif (!handlers[i]) handlers[i] = {}\n\t\tif (!subscribers[i]) subscribers[i] = {}\n\t\tif (!innerData[i]) innerData[i] = {}\n\t\thandlers = handlers[i]\n\t\tsubscribers = subscribers[i]\n\t\tinnerData = innerData[i]\n\t}\n\treturn {\n\t\thandlerNode: handlers,\n\t\tsubscriberNode: subscribers,\n\t\tdataNode: innerData\n\t}\n}\n\n// Workaround for the third bug of buble:\n// https://github.com/bublejs/buble/issues/106\nconst defineNode = (key, obj) => {\n\tconst node = {}\n\tObject.defineProperty(obj, key, {\n\t\tget() {\n\t\t\treturn node\n\t\t},\n\t\tset(data) {\n\t\t\tinform()\n\t\t\tassign(node, data)\n\t\t\texec()\n\t\t},\n\t\tconfigurable: false,\n\t\tenumerable: true\n\t})\n\treturn node\n}\n\nconst resolveReactivePath = (_path, obj) => {\n\tfor (let i of _path) {\n\t\tif (obj[i]) obj = obj[i]\n\t\telse obj = defineNode(i, obj)\n\t}\n\treturn obj\n}\n\nconst resolve = ({_path, _key, data, handlers, subscribers, innerData}) => {\n\tconst parentNode = resolveReactivePath(_path, data)\n\tconst {handlerNode, subscriberNode, dataNode} = resolveAllPath({_path, handlers, subscribers, innerData})\n\tif (!handlerNode[_key]) handlerNode[_key] = []\n\tif (!subscriberNode[_key]) subscriberNode[_key] = []\n\t/* eslint no-undefined: \"off\" */\n\tif (!Object.prototype.hasOwnProperty.call(dataNode, _key)) dataNode[_key] = undefined\n\treturn { parentNode, handlerNode: handlerNode[_key], subscriberNode: subscriberNode[_key], dataNode }\n}\n\nconst resolveSubscriber = (_path, subscribers) => {\n\tconst pathArr = _path.split('.')\n\tconst key = pathArr.pop()\n\tfor (let i of pathArr) {\n\t\tif (!subscribers[i]) subscribers[i] = {}\n\t\tsubscribers = subscribers[i]\n\t}\n\treturn subscribers[key]\n}\n\nexport {resolveReactivePath, resolve, resolveSubscriber}\n","import {inform, exec} from './render-queue.js'\nimport ARR from './utils/array-helper.js'\nimport dbg from './utils/debug.js'\n\nconst subscriberCallStack = []\n\nconst checkStack = subscriberNode => subscriberCallStack.indexOf(subscriberNode) >= 0\n\nconst pushStack = subscriberNode => subscriberCallStack.push(subscriberNode)\n\nconst popStack = subscriberNode => ARR.remove(subscriberCallStack, subscriberNode)\n\nconst execSubscribers = (subscriberNode, data) => {\n\t// Stop chain reaction when being called again in the context\n\t// There is no way for the caller to know it shouldn't update the node again\n\t// So this is the only method to avoid recursion\n\t// Push the current subscriberNode to stack as an identifier\n\tpushStack(subscriberNode)\n\t// Execute the subscriber function\n\tinform()\n\ttry {\n\t\tfor (const subscriber of subscriberNode) subscriber(data)\n\t} catch (e) {\n\t\tdbg.error('Error caught when executing subscribers:\\n', e)\n\t}\n\texec()\n\t// Remove the subscriberNode from the stack so it could be called again\n\tpopStack(subscriberNode)\n}\n\nexport {subscriberCallStack, checkStack, pushStack, popStack, execSubscribers}\n","/* eslint-disable no-self-compare */\nconst isnan = obj => obj !== obj\n\nexport default isnan\n","import {resolve} from './resolver.js'\nimport {inform, exec, queue} from './render-queue.js'\nimport {execSubscribers} from './subscriber-call-stack.js'\nimport ARR from './utils/array-helper.js'\nimport isnan from './utils/isnan.js'\n\nconst initDataNode = ({parentNode, dataNode, handlerNode, subscriberNode, ctx, _key}) => {\n\tObject.defineProperty(parentNode, _key, {\n\t\tget() {\n\t\t\treturn dataNode[_key]\n\t\t},\n\t\tset(value) {\n\t\t\t// Comparing NaN is like eating a cake and suddenly encounter a grain of sand\n\t\t\tif (dataNode[_key] === value || (isnan(dataNode[_key]) && isnan(value))) return\n\t\t\tdataNode[_key] = value\n\t\t\tinform()\n\t\t\tqueue(handlerNode)\n\t\t\texec()\n\t\t\tif (subscriberNode.length > 0) execSubscribers(subscriberNode, {state: ctx.state, value})\n\t\t},\n\t\tenumerable: true\n\t})\n}\n\nconst initBinding = ({bind, ctx, handlers, subscribers, innerData}) => {\n\tconst _path = ARR.copy(bind[0])\n\tconst _key = _path.pop()\n\tconst {parentNode, handlerNode, subscriberNode, dataNode} = resolve({\n\t\t_path,\n\t\t_key,\n\t\tdata: ctx.data,\n\t\thandlers,\n\t\tsubscribers,\n\t\tinnerData\n\t})\n\n\t// Initlize data binding node if not exist\n\tif (!Object.prototype.hasOwnProperty.call(parentNode, _key)) initDataNode({parentNode, dataNode, handlerNode, subscriberNode, ctx, _key})\n\t// Update default value\n\t// bind[1] is the default value for this node\n\tif (bind.length > 1) parentNode[_key] = bind[1]\n\n\treturn {dataNode, parentNode, handlerNode, subscriberNode, _key}\n}\n\nexport default initBinding\n","const isInstance = (er, ee) => er.constructor === ee\n\nexport default isInstance\n","import ARR from './array-helper.js'\n\n// https://github.com/bublejs/buble/issues/197\nconst enumerableFalse = (classObj, keys) => {\n\tfor (let i of keys) Object.defineProperty(classObj.prototype, i, {enumerable: false})\n\treturn classObj\n}\n\n// https://github.com/bublejs/buble/issues/131\nconst prepareArgs = (self, node) => {\n\tconst args = ARR.copy(self)\n\tARR.unshift(args, node)\n\treturn args\n}\n\nexport {enumerableFalse, prepareArgs}\n","import ARR from './array-helper.js'\nimport isInstance from './fast-instance-of.js'\nimport {prepareArgs} from './buble-fix.js'\n\nconst proto = Node.prototype\n\n// Will require a weakmap polyfill for IE10 and below\nconst mountingPointStore = new WeakMap()\n\nconst DOM = {}\n\nconst EFFragment = class extends Array {\n\tappendTo(node) {\n\t\tDOM.append.apply(null, prepareArgs(this, node))\n\t}\n\tinsertBeforeTo(node) {\n\t\tconst args = ARR.copy(this)\n\t\tARR.unshift(args, node)\n\t\tDOM.before.apply(null, prepareArgs(this, node))\n\t}\n\tinsertAfterTo(node) {\n\t\tconst args = ARR.copy(this)\n\t\tARR.unshift(args, node)\n\t\tDOM.after.apply(null, prepareArgs(this, node))\n\t}\n\tremove() {\n\t\tfor (let i of this) DOM.remove(i)\n\t}\n}\n\nDOM.before = (node, ...nodes) => {\n\tconst tempFragment = document.createDocumentFragment()\n\tfor (let i of nodes) {\n\t\tif (isInstance(i, EFFragment)) i.appendTo(tempFragment)\n\t\telse proto.appendChild.call(tempFragment, i)\n\t}\n\tproto.insertBefore.call(node.parentNode, tempFragment, node)\n}\n\nDOM.after = (node, ...nodes) => {\n\tconst tempFragment = document.createDocumentFragment()\n\tfor (let i of nodes) {\n\t\tif (isInstance(i, EFFragment)) i.appendTo(tempFragment)\n\t\telse proto.appendChild.call(tempFragment, i)\n\t}\n\tif (node.nextSibling) proto.insertBefore.call(node.parentNode, tempFragment, node.nextSibling)\n\telse proto.appendChild.call(node.parentNode, tempFragment)\n}\n\nconst handleMountingPoint = (mountingPoint, tempFragment) => {\n\tconst {node} = mountingPoint\n\tif (!node) return\n\tif (Array.isArray(node) && node.clear) {\n\t\tfor (let j of node) {\n\t\t\tconst {element, placeholder} = j.$ctx.nodeInfo\n\t\t\tDOM.append(tempFragment, element, placeholder)\n\t\t}\n\t} else {\n\t\tconst {element, placeholder} = node.$ctx.nodeInfo\n\t\tDOM.append(tempFragment, element, placeholder)\n\t}\n}\n\nDOM.append = (node, ...nodes) => {\n\tif (isInstance(node, EFFragment)) return node.push(...nodes)\n\tif ([1,9,11].indexOf(node.nodeType) === -1) return\n\tconst tempFragment = document.createDocumentFragment()\n\tfor (let i of nodes) {\n\t\tif (isInstance(i, EFFragment)) i.appendTo(tempFragment)\n\t\telse {\n\t\t\tproto.appendChild.call(tempFragment, i)\n\t\t\tconst mountingPoint = mountingPointStore.get(i)\n\t\t\tif (mountingPoint) handleMountingPoint(mountingPoint, tempFragment)\n\t\t}\n\t}\n\tproto.appendChild.call(node, tempFragment)\n}\n\nDOM.remove = (node) => {\n\tif (isInstance(node, EFFragment)) node.remove()\n\telse proto.removeChild.call(node.parentNode, node)\n}\n\n// addClass(node, className) {\n// \tconst classes = className.split(' ')\n// \tnode.classList.add(...classes)\n// },\n\n// removeClass(node, className) {\n// \tconst classes = className.split(' ')\n// \tnode.classList.remove(...classes)\n// },\n\n// toggleClass(node, className) {\n// \tconst classes = className.split(' ')\n// \tconst classArr = node.className.split(' ')\n// \tfor (let i of classes) {\n// \t\tconst classIndex = classArr.indexOf(i)\n// \t\tif (classIndex > -1) {\n// \t\t\tclassArr.splice(classIndex, 1)\n// \t\t} else {\n// \t\t\tclassArr.push(i)\n// \t\t}\n// \t}\n// \tnode.className = classArr.join(' ').trim()\n// },\n\n// replaceWith(node, newNode) {\n// \tconst parent = node.parentNode\n// \tif (parent) proto.replaceChild.call(parent, newNode, node)\n// },\n\n// swap(node, newNode) {\n// \tconst nodeParent = node.parentNode\n// \tconst newNodeParent = newNode.parentNode\n// \tconst nodeSibling = node.nextSibling\n// \tconst newNodeSibling = newNode.nextSibling\n// \tif (nodeParent && newNodeParent) {\n// \t\tproto.insertBefore.call(nodeParent, newNode, nodeSibling)\n// \t\tproto.insertBefore.call(newNodeParent, node, newNodeSibling)\n// \t}\n// },\n\n// prepend(node, ...nodes) {\n// \tif ([1,9,11].indexOf(node.nodeType) === -1) {\n// \t\treturn\n// \t}\n// \tconst tempFragment = document.createDocumentFragment()\n// \tnodes.reverse()\n// \tfor (let i of nodes) {\n// \t\tproto.appendChild.call(tempFragment, i)\n// \t}\n// \tif (node.firstChild) {\n// \t\tproto.insertBefore.call(node, tempFragment, node.firstChild)\n// \t} else {\n// \t\tproto.appendChild.call(node, tempFragment)\n// \t}\n// },\n\n// appendTo(node, newNode) {\n// \tproto.appendChild.call(newNode, node)\n// },\n\n// prependTo(node, newNode) {\n// \tif (newNode.firstChild) {\n// \t\tproto.insertBefore.call(newNode, node, node.firstChild)\n// \t} else {\n// \t\tproto.appendChild.call(newNode, node)\n// \t}\n// },\n\n// empty(node) {\n// \tnode.innerHTML = ''\n// },\n\nexport {DOM, EFFragment, mountingPointStore}\n","/* Get new events that works in all target browsers\n * though a little bit old-fashioned\n */\nconst getEvent = (name, props = {\n\tbubbles: false,\n\tcancelable: false\n}) => {\n\tconst event = document.createEvent('Event')\n\tevent.initEvent(name, props.bubbles, props.cancelable)\n\treturn event\n}\n\nexport default getEvent\n","import initBinding from './binding.js'\nimport {queue, inform, exec} from './render-queue.js'\nimport ARR from './utils/array-helper.js'\nimport {EFFragment} from './utils/dom-helper.js'\nimport getEvent from './utils/event-helper.js'\nimport {mixVal} from './utils/literals-mix.js'\nimport dbg from './utils/debug.js'\n\nconst checkValidType = obj => ['number', 'boolean', 'string'].indexOf(typeof obj) > -1\n\n// SVG/MathML tags w/ xlink attributes require specific namespace to work properly\nconst svgNS = 'http://www.w3.org/2000/svg'\nconst mathNS = 'http://www.w3.org/1998/Math/MathML'\nconst xlinkNS = 'http://www.w3.org/1999/xlink'\nconst createByTag = (tag, svg) => {\n\t// SVG is always the most prioritized\n\tif (svg) return document.createElementNS(svgNS, tag)\n\t// Then MathML\n\tif (tag.toLowerCase() === 'math') return document.createElementNS(mathNS, tag)\n\t// Then HTML\n\treturn document.createElement(tag)\n}\n\nconst getElement = ({tag, ref, refs, svg}) => {\n\tconst element = createByTag(tag, svg)\n\tif (ref) Object.defineProperty(refs, ref, {\n\t\tvalue: element,\n\t\tenumerable: true\n\t})\n\treturn element\n}\n\nconst regTmpl = ({val, ctx, handlers, subscribers, innerData, handler}) => {\n\tif (Array.isArray(val)) {\n\t\tconst [strs, ...exprs] = val\n\t\tconst tmpl = [strs]\n\t\tconst _handler = () => handler(mixVal(...tmpl))\n\t\ttmpl.push(...exprs.map((item) => {\n\t\t\tconst {dataNode, handlerNode, _key} = initBinding({bind: item, ctx, handlers, subscribers, innerData})\n\t\t\thandlerNode.push(_handler)\n\t\t\treturn {dataNode, _key}\n\t\t}))\n\t\treturn _handler\n\t}\n\treturn () => val\n}\n\nconst updateOthers = ({parentNode, handlerNode, _handler, _key, value}) => {\n\t// Remove handler for this element temporarily\n\tARR.remove(handlerNode, _handler)\n\tinform()\n\tparentNode[_key] = value\n\texec()\n\t// Add back the handler\n\tARR.push(handlerNode, _handler)\n}\n\nconst addValListener = ({_handler, ctx, handlers, subscribers, innerData, element, key, expr}) => {\n\tconst {parentNode, handlerNode, _key} = initBinding({bind: expr, ctx, handlers, subscribers, innerData})\n\tconst _update = () => updateOthers({parentNode, handlerNode, _handler, _key, value: element.value})\n\tif (key === 'value') {\n\t\t// Listen to input, keyup and change events in order to work in most browsers.\n\t\telement.addEventListener('input', _update, true)\n\t\telement.addEventListener('keyup', _update, true)\n\t\telement.addEventListener('change', _update, true)\n\t\t// // Remove keyup and change listener if browser supports input event correctly\n\t\t// const removeListener = () => {\n\t\t// \telement.removeEventListener('input', removeListener, true)\n\t\t// \telement.removeEventListener('keyup', _update, true)\n\t\t// \telement.removeEventListener('change', _update, true)\n\t\t// }\n\t\t// element.addEventListener('input', removeListener, true)\n\t} else {\n\t\telement.addEventListener('change', () => {\n\t\t\t// Trigger change to the element it-self\n\t\t\telement.dispatchEvent(getEvent('ef-change-event'))\n\t\t\tif (element.tagName === 'INPUT' && element.type === 'radio' && element.name !== '') {\n\t\t\t\t// Trigger change to the the same named radios\n\t\t\t\tconst radios = document.querySelectorAll(`input[name=${element.name}]`)\n\t\t\t\tif (radios) {\n\t\t\t\t\tconst selected = ARR.copy(radios)\n\t\t\t\t\tARR.remove(selected, element)\n\n\t\t\t\t\t/* Event triggering could cause unwanted render triggers\n\t\t\t\t\t * no better ways came up at the moment\n\t\t\t\t\t */\n\t\t\t\t\tfor (let i of selected) i.dispatchEvent(getEvent('ef-change-event'))\n\t\t\t\t}\n\t\t\t}\n\t\t}, true)\n\t\t// Use custom event to avoid loops and conflicts\n\t\telement.addEventListener('ef-change-event', () => updateOthers({parentNode, handlerNode, _handler, _key, value: element.checked}))\n\t}\n}\n\nconst getAttrHandler = (element, key) => {\n\tif (key === 'class') return (val) => {\n\t\tval = `${val}`.replace(/\\s+/g, ' ').trim()\n\t\t// Remove attribute when value is empty\n\t\tif (!val) return element.removeAttribute(key)\n\t\telement.setAttribute(key, val)\n\t}\n\n\t// Handle xlink namespace\n\tif (key.indexOf('xlink:') === 0) return (val) => {\n\t\t// Remove attribute when value is empty\n\t\tif (val === '') return element.removeAttributeNS(xlinkNS, key)\n\t\telement.setAttributeNS(xlinkNS, key, val)\n\t}\n\n\treturn (val) => {\n\t\t// Remove attribute when value is empty\n\t\tif (val === '') return element.removeAttribute(key)\n\t\telement.setAttribute(key, val)\n\t}\n}\n\nconst addAttr = ({element, attr, key, ctx, handlers, subscribers, innerData}) => {\n\tif (checkValidType(attr)) {\n\t\t// Handle xlink namespace\n\t\tif (key.indexOf('xlink:') === 0) return element.setAttributeNS(xlinkNS, key, attr)\n\t\treturn element.setAttribute(key, attr)\n\t}\n\n\tconst handler = getAttrHandler(element, key)\n\tqueue([regTmpl({val: attr, ctx, handlers, subscribers, innerData, handler})])\n}\n\nconst addProp = ({element, prop, key, ctx, handlers, subscribers, innerData}) => {\n\tif (checkValidType(prop)) element[key] = prop\n\telse {\n\t\tconst handler = (val) => {\n\t\t\telement[key] = val\n\t\t}\n\t\tconst _handler = regTmpl({val: prop, ctx, handlers, subscribers, innerData, handler})\n\t\tif ((key === 'value' ||\n\t\t\tkey === 'checked') &&\n\t\t\t!prop[0]) addValListener({_handler, ctx, handlers, subscribers, innerData, element, key, expr: prop[1]})\n\t\tqueue([_handler])\n\t}\n}\n\n\nconst rawHandler = val => val\n\nconst addEvent = ({element, event, ctx, handlers, subscribers, innerData}) => {\n\n\t/**\n\t * l: listener : string\n\t * m: method : string\n\t * s: stopPropagation : number/undefined\n\t * i: stopImmediatePropagation : number/undefined\n\t * p: preventDefault : number/undefined\n\t * h: shiftKey : number/undefined\n\t * a: altKey : number/undefined\n\t * c: ctrlKey : number/undefined\n\t * t: metaKey : number/undefined\n\t * u: capture : number/undefined\n\t * k: keyCodes : array/undefined\n\t * v: value : string/array/undefined\n\t */\n\tconst {l, m, s, i, p, h, a, c, t, u, k, v} = event\n\tconst _handler = regTmpl({val: v, ctx, handlers, subscribers, innerData, handler: rawHandler})\n\telement.addEventListener(l, (e) => {\n\t\tif (!!h !== !!e.shiftKey ||\n\t\t\t!!a !== !!e.altKey ||\n\t\t\t!!c !== !!e.ctrlKey ||\n\t\t\t!!t !== !!e.metaKey ||\n\t\t\t(k && k.indexOf(e.which) === -1)) return\n\t\tif (s) e.stopPropagation()\n\t\tif (i) e.stopImmediatePropagation()\n\t\tif (p) e.preventDefault()\n\t\tif (ctx.methods[m]) ctx.methods[m]({e, value: _handler(), state: ctx.state})\n\t\telse if (process.env.NODE_ENV !== 'production') dbg.warn(`Method named '${m}' not found! Value been passed is:`, _handler())\n\t}, !!u)\n}\n\nconst createElement = ({info, ctx, innerData, refs, handlers, subscribers, svg}) => {\n\n\t/**\n\t * t: tag : string | int, 0 means fragment\n\t * a: attr : object\n\t * p: prop : object\n\t * e: event : array\n\t * r: reference : string\n\t */\n\tconst {t, a, p, e, r} = info\n\tif (t === 0) return new EFFragment()\n\tconst element = getElement({tag: t, ref: r, refs, svg})\n\tfor (let i in a) addAttr({element, attr: a[i], key: i, ctx, handlers, subscribers, innerData})\n\tfor (let i in p) addProp({element, prop: p[i], key: i, ctx, handlers, subscribers, innerData})\n\tfor (let i in e) addEvent({element, event: e[i], ctx, handlers, subscribers, innerData})\n\treturn element\n}\n\nexport default createElement\n","import {DOM} from './dom-helper.js'\nimport ARR from './array-helper.js'\nimport {inform, exec} from '../render-queue.js'\n\nconst DOMARR = {\n\tempty() {\n\t\tinform()\n\t\tfor (let i of ARR.copy(this)) i.$destroy()\n\t\texec()\n\t\tARR.empty(this)\n\t},\n\tclear() {\n\t\tinform()\n\t\tfor (let i of ARR.copy(this)) i.$umount()\n\t\texec()\n\t\tARR.empty(this)\n\t},\n\tpop() {\n\t\tif (this.length === 0) return\n\t\tconst poped = ARR.pop(this)\n\t\tpoped.$umount()\n\t\treturn poped\n\t},\n\tpush({ctx, key, anchor}, ...items) {\n\t\tconst elements = []\n\t\tinform()\n\t\tfor (let i of items) ARR.push(elements, i.$mount({parent: ctx.state, key}))\n\t\tif (this.length === 0) DOM.after(anchor, ...elements)\n\t\telse DOM.after(this[this.length - 1].$ctx.nodeInfo.placeholder, ...elements)\n\t\texec()\n\t\treturn ARR.push(this, ...items)\n\t},\n\tremove(item) {\n\t\tif (this.indexOf(item) === -1) return\n\t\titem.$umount()\n\t\treturn item\n\t},\n\treverse({ctx, key, anchor}) {\n\t\tif (this.length === 0) return this\n\t\tconst tempArr = ARR.copy(this)\n\t\tconst elements = []\n\t\tinform()\n\t\tfor (let i = tempArr.length - 1; i >= 0; i--) {\n\t\t\ttempArr[i].$umount()\n\t\t\tARR.push(elements, tempArr[i].$mount({parent: ctx.state, key}))\n\t\t}\n\t\tARR.push(this, ...ARR.reverse(tempArr))\n\t\tDOM.after(anchor, ...elements)\n\t\texec()\n\t\treturn this\n\t},\n\tshift() {\n\t\tif (this.length === 0) return\n\t\tconst shifted = ARR.shift(this)\n\t\tshifted.$umount()\n\t\treturn shifted\n\t},\n\tsort({ctx, key, anchor}, fn) {\n\t\tif (this.length === 0) return this\n\t\tconst sorted = ARR.copy(ARR.sort(this, fn))\n\t\tconst elements = []\n\t\tinform()\n\t\tfor (let i of sorted) {\n\t\t\ti.$umount()\n\t\t\tARR.push(elements, i.$mount({parent: ctx.state, key}))\n\t\t}\n\t\tARR.push(this, ...sorted)\n\t\tDOM.after(anchor, ...elements)\n\t\texec()\n\t\treturn this\n\t},\n\tsplice(...args) {\n\t\tif (this.length === 0) return this\n\t\tconst spliced = ARR.splice(ARR.copy(this), ...args)\n\t\tinform()\n\t\tfor (let i of spliced) i.$umount()\n\t\texec()\n\t\treturn spliced\n\t},\n\tunshift({ctx, key, anchor}, ...items) {\n\t\tif (this.length === 0) return this.push(...items).length\n\t\tconst elements = []\n\t\tinform()\n\t\tfor (let i of items) ARR.push(elements, i.$mount({parent: ctx.state, key}))\n\t\tDOM.after(anchor, ...elements)\n\t\texec()\n\t\treturn ARR.unshift(this, ...items)\n\t}\n}\n\nconst defineArr = (arr, info) => {\n\tObject.defineProperties(arr, {\n\t\tempty: {value: DOMARR.empty},\n\t\tclear: {value: DOMARR.clear},\n\t\tpop: {value: DOMARR.pop},\n\t\tpush: {value: DOMARR.push.bind(arr, info)},\n\t\tremove: {value: DOMARR.remove},\n\t\treverse: {value: DOMARR.reverse.bind(arr, info)},\n\t\tshift: {value: DOMARR.shift},\n\t\tsort: {value: DOMARR.sort.bind(arr, info)},\n\t\tsplice: {value: DOMARR.splice},\n\t\tunshift: {value: DOMARR.unshift.bind(arr, info)}\n\t})\n\treturn arr\n}\n\nexport default defineArr\n","const mountOptions = {\n\tBEFORE: 'before',\n\tAFTER: 'after',\n\tAPPEND: 'append',\n\tREPLACE: 'replace'\n}\n\nexport default mountOptions\n","import createElement from './element-creator.js'\nimport {queue, inform, exec} from './render-queue.js'\nimport {DOM, mountingPointStore} from './utils/dom-helper.js'\nimport defineArr from './utils/dom-arr-helper.js'\nimport ARR from './utils/array-helper.js'\nimport typeOf from './utils/type-of.js'\nimport initBinding from './binding.js'\nimport mountOptions from '../mount-options.js'\n\nconst nullComponent = Object.create(null)\n\nconst checkDestroyed = (state) => {\n\tif (!state.$ctx) throw new Error('[EF] This component has been destroyed!')\n}\n\nconst bindTextNode = ({node, ctx, handlers, subscribers, innerData, element}) => {\n\t// Data binding text node\n\tconst textNode = document.createTextNode('')\n\tconst { dataNode, handlerNode, _key } = initBinding({bind: node, ctx, handlers, subscribers, innerData})\n\tconst handler = () => {\n\t\tconst value = dataNode[_key]\n\t\tif (typeof value === 'undefined') {\n\t\t\ttextNode.textContent = ''\n\t\t\treturn\n\t\t}\n\t\ttextNode.textContent = dataNode[_key]\n\t}\n\thandlerNode.push(handler)\n\tqueue([handler])\n\n\t// Append element to the component\n\tDOM.append(element, textNode)\n}\n\nconst updateMountingNode = ({ctx, key, value}) => {\n\tconst {children} = ctx\n\tconst child = children[key]\n\tconst {anchor, node} = child\n\tif (node === value) return\n\n\tinform()\n\t// Update component\n\tif (node) {\n\t\tif (value === nullComponent) value = null\n\t\telse node.$umount()\n\t}\n\t// Update stored value\n\tchild.node = value\n\tif (value) value.$mount({target: anchor, parent: ctx.state, option: mountOptions.BEFORE, key})\n\texec()\n}\n\nconst updateMountingList = ({ctx, key, value}) => {\n\tconst {children} = ctx\n\tconst {anchor, node} = children[key]\n\tif (ARR.equals(node, value)) return\n\tif (value) value = ARR.copy(value)\n\telse value = []\n\tconst fragment = document.createDocumentFragment()\n\t// Update components\n\tinform()\n\tif (node) {\n\t\tnode.clear()\n\t\tfor (let item of value) {\n\t\t\tif (item.$ctx.nodeInfo.parent) item.$umount()\n\t\t\tDOM.append(fragment, item.$mount({parent: ctx.state, key}))\n\t\t}\n\t} else for (let item of value) DOM.append(fragment, item.$mount({parent: ctx.state, key}))\n\t// Update stored value\n\tnode.length = 0\n\tARR.push(node, ...value)\n\t// Append to current component\n\tDOM.after(anchor, fragment)\n\texec()\n}\n\nconst mountingPointUpdaters = [\n\tupdateMountingNode,\n\tupdateMountingList\n]\n\nconst applyMountingPoint = (type, key, tpl) => {\n\tObject.defineProperty(tpl.prototype, key, {\n\t\tget() {\n\t\t\tif (process.env.NODE_ENV !== 'production') checkDestroyed(this)\n\t\t\treturn this.$ctx.children[key].node\n\t\t},\n\t\tset(value) {\n\t\t\tif (process.env.NODE_ENV !== 'production') checkDestroyed(this)\n\t\t\tconst ctx = this.$ctx\n\t\t\tmountingPointUpdaters[type]({ctx, key, value})\n\t\t},\n\t\tenumerable: true\n\t})\n}\n\nconst bindMountingNode = ({ctx, key, anchor}) => {\n\tconst {children, isFragment} = ctx\n\tchildren[key] = {anchor}\n\tif (isFragment) {\n\t\tDOM.append(ctx.safeZone, anchor)\n\t\tmountingPointStore.set(anchor, children[key])\n\t}\n}\n\nconst bindMountingList = ({ctx, key, anchor}) => {\n\tconst {children, isFragment} = ctx\n\tchildren[key] = {\n\t\tnode: defineArr([], {ctx, key, anchor}),\n\t\tanchor\n\t}\n\tif (isFragment) {\n\t\tDOM.append(ctx.safeZone, anchor)\n\t\tmountingPointStore.set(anchor, children[key])\n\t}\n}\n\n// Walk through the AST to perform proper actions\nconst resolveAST = ({node, nodeType, element, ctx, innerData, refs, handlers, subscribers, svg, create, EFBaseComponent}) => {\n\tswitch (nodeType) {\n\t\t// Static text node\n\t\tcase 'string': {\n\t\t\tDOM.append(element, document.createTextNode(node))\n\t\t\tbreak\n\t\t}\n\t\t// Child element or a dynamic text node\n\t\tcase 'array': {\n\t\t\t// Recursive call for child element\n\t\t\tif (typeOf(node[0]) === 'object') DOM.append(element, create({node, ctx, innerData, refs, handlers, subscribers, svg, create, EFBaseComponent}))\n\t\t\t// Dynamic text node\n\t\t\telse bindTextNode({node, ctx, handlers, subscribers, innerData, element})\n\t\t\tbreak\n\t\t}\n\t\t// Mounting points\n\t\tcase 'object': {\n\t\t\tconst anchor = document.createTextNode('')\n\t\t\t// Single node mounting point\n\t\t\tif (node.t === 0) bindMountingNode({ctx, key: node.n, anchor})\n\t\t\t// Multi node mounting point\n\t\t\telse bindMountingList({ctx, key: node.n, anchor})\n\t\t\t// Append anchor\n\t\t\tif (process.env.NODE_ENV !== 'production') DOM.append(element, document.createComment(`EF MOUNTING POINT '${node.n}' START`))\n\t\t\tDOM.append(element, anchor)\n\t\t\tif (process.env.NODE_ENV !== 'production') DOM.append(element, document.createComment(`EF MOUNTING POINT '${node.n}' END`))\n\t\t\tbreak\n\t\t}\n\t\tdefault:\n\t}\n}\n\n// Create elements based on description from AST\nconst create = ({node, ctx, innerData, refs, handlers, subscribers, svg, create, EFBaseComponent}) => {\n\tconst [info, ...childNodes] = node\n\tconst fragment = info.t === 0\n\t// Enter SVG mode\n\tif (!fragment && !svg && info.t.toLowerCase() === 'svg') svg = true\n\t// First create an element according to the description\n\tconst element = createElement({info, ctx, innerData, refs, handlers, subscribers, svg})\n\tif (fragment && process.env.NODE_ENV !== 'production') element.push(document.createComment('EF FRAGMENT START'))\n\n\t// Leave SVG mode if tag is `foreignObject`\n\tif (svg && info.t.toLowerCase() === 'foreignobject') svg = false\n\n\t// Append child nodes\n\tfor (let i of childNodes) {\n\t\tif (i instanceof EFBaseComponent) i.$mount({target: element})\n\t\telse resolveAST({node: i, nodeType: typeOf(i), element, ctx, innerData, refs, handlers, subscribers, svg, create, EFBaseComponent})\n\t}\n\tif (fragment && process.env.NODE_ENV !== 'production') element.push(document.createComment('EF FRAGMENT END'))\n\n\treturn element\n}\n\nexport {create, nullComponent, checkDestroyed, applyMountingPoint}\n","import {create, nullComponent, checkDestroyed} from './creator.js'\nimport initBinding from './binding.js'\nimport {queueDom, inform, exec} from './render-queue.js'\nimport {resolveSubscriber} from './resolver.js'\nimport {DOM, EFFragment, mountingPointStore} from './utils/dom-helper.js'\nimport ARR from './utils/array-helper.js'\nimport {assign, legacyAssign} from './utils/polyfills.js'\nimport isInstance from './utils/fast-instance-of.js'\nimport typeOf from './utils/type-of.js'\nimport {enumerableFalse} from './utils/buble-fix.js'\nimport dbg from './utils/debug.js'\nimport mountOptions from '../mount-options.js'\n\nconst unsubscribe = (pathStr, fn, subscribers) => {\n\tconst subscriberNode = resolveSubscriber(pathStr, subscribers)\n\tARR.remove(subscriberNode, fn)\n}\n\nconst EFBaseComponent = class {\n\tconstructor(ast) {\n\t\tconst children = {}\n\t\tconst refs = {}\n\t\tconst data = {}\n\t\tconst innerData = {}\n\t\tconst methods = {}\n\t\tconst handlers = {}\n\t\tconst subscribers = {}\n\t\tconst nodeInfo = {\n\t\t\tplaceholder: null,\n\t\t\treplace: [],\n\t\t\tparent: null,\n\t\t\tkey: null\n\t\t}\n\n\t\t/* Detatched components will be put in the safe zone.\n\t\t * Split safe zone to each component in order to make\n\t\t * the component memory recycleable when lost reference\n\t\t */\n\t\tconst safeZone = document.createDocumentFragment()\n\n\t\tif (process.env.NODE_ENV === 'production') nodeInfo.placeholder = document.createTextNode('')\n\t\telse nodeInfo.placeholder = document.createComment('EF COMPONENT PLACEHOLDER')\n\n\t\tconst mount = () => {\n\t\t\tif (nodeInfo.replace.length > 0) {\n\t\t\t\tfor (let i of nodeInfo.replace) DOM.remove(i)\n\t\t\t\tARR.empty(nodeInfo.replace)\n\t\t\t}\n\t\t\tDOM.before(nodeInfo.placeholder, nodeInfo.element)\n\t\t}\n\n\t\tconst ctx = {\n\t\t\tmount, refs, data, innerData, methods,\n\t\t\thandlers, subscribers, nodeInfo, safeZone,\n\t\t\tchildren, state: this, isFragment: ast[0].t === 0\n\t\t}\n\n\t\tObject.defineProperty(this, '$ctx', {\n\t\t\tvalue: ctx,\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true\n\t\t})\n\n\t\tinform()\n\n\t\tnodeInfo.element = create({node: ast, ctx, innerData, refs, handlers, subscribers, svg: false, create, EFBaseComponent})\n\t\tDOM.append(safeZone, nodeInfo.placeholder)\n\t\tqueueDom(mount)\n\t\texec()\n\t}\n\n\tget $data() {\n\t\tif (process.env.NODE_ENV !== 'production') checkDestroyed(this)\n\t\treturn this.$ctx.data\n\t}\n\n\tset $data(newData) {\n\t\tif (process.env.NODE_ENV !== 'production') checkDestroyed(this)\n\t\tinform()\n\t\tassign(this.$ctx.data, newData)\n\t\texec()\n\t}\n\n\tget $methods() {\n\t\tif (process.env.NODE_ENV !== 'production') checkDestroyed(this)\n\t\treturn this.$ctx.methods\n\t}\n\n\tset $methods(newMethods) {\n\t\tif (process.env.NODE_ENV !== 'production') checkDestroyed(this)\n\t\tthis.$ctx.methods = newMethods\n\t}\n\n\tget $refs() {\n\t\tif (process.env.NODE_ENV !== 'production') checkDestroyed(this)\n\t\treturn this.$ctx.refs\n\t}\n\n\t$mount({target, option, parent, key}) {\n\t\tif (process.env.NODE_ENV !== 'production') checkDestroyed(this)\n\t\tconst { nodeInfo, mount } = this.$ctx\n\t\tif (typeof target === 'string') target = document.querySelector(target)\n\n\t\tinform()\n\t\tif (nodeInfo.parent) {\n\t\t\tthis.$umount()\n\t\t\tif (process.env.NODE_ENV !== 'production') dbg.warn('Component detached from previous mounting point.')\n\t\t}\n\n\t\tif (!parent) parent = target\n\t\tif (!key) key = '__DIRECTMOUNT__'\n\t\tnodeInfo.parent = parent\n\t\tnodeInfo.key = key\n\t\tqueueDom(mount)\n\n\t\tif (!target) {\n\t\t\texec()\n\t\t\treturn nodeInfo.placeholder\n\t\t}\n\n\t\tswitch (option) {\n\t\t\tcase mountOptions.BEFORE: {\n\t\t\t\tDOM.before(target, nodeInfo.placeholder)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase mountOptions.AFTER: {\n\t\t\t\tDOM.after(target, nodeInfo.placeholder)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase mountOptions.REPLACE: {\n\t\t\t\tDOM.before(target, nodeInfo.placeholder)\n\t\t\t\tnodeInfo.replace.push(target)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase mountOptions.APPEND:\n\t\t\tdefault: {\n\t\t\t\t// Parent is EFFragment should only happen when using jsx\n\t\t\t\tif (isInstance(parent, EFFragment)) DOM.append(target, nodeInfo.element)\n\t\t\t\telse DOM.append(target, nodeInfo.placeholder)\n\t\t\t}\n\t\t}\n\t\treturn exec()\n\t}\n\n\t$umount() {\n\t\tif (process.env.NODE_ENV !== 'production') checkDestroyed(this)\n\t\tconst { nodeInfo, safeZone, mount } = this.$ctx\n\t\tconst { parent, key } = nodeInfo\n\t\tnodeInfo.parent = null\n\t\tnodeInfo.key = null\n\n\t\tinform()\n\t\tif (parent) {\n\t\t\tif (key !== '__DIRECTMOUNT__') {\n\t\t\t\tif (parent[key]) {\n\t\t\t\t\tif (Array.isArray(parent[key])) {\n\t\t\t\t\t\t// Remove self from parent list mounting point\n\t\t\t\t\t\tARR.remove(parent[key], this)\n\t\t\t\t\t} else parent[key] = nullComponent\n\t\t\t\t}\n\t\t\t// Else Remove elements from fragment parent\n\t\t\t} else if (isInstance(parent, EFFragment)) ARR.remove(parent.$ctx.nodeInfo.element, nodeInfo.element)\n\t\t}\n\t\tDOM.append(safeZone, nodeInfo.placeholder)\n\t\tqueueDom(mount)\n\t\treturn exec()\n\t}\n\n\t$subscribe(pathStr, subscriber) {\n\t\tif (process.env.NODE_ENV !== 'production') checkDestroyed(this)\n\t\tconst ctx = this.$ctx\n\t\tconst { handlers, subscribers, innerData } = ctx\n\t\tconst _path = pathStr.split('.')\n\t\tconst { dataNode, subscriberNode, _key } = initBinding({bind: [_path], ctx, handlers, subscribers, innerData})\n\t\tinform()\n\t\t// Execute the subscriber function immediately\n\t\ttry {\n\t\t\tsubscriber({state: this, value: dataNode[_key]})\n\t\t\t// Put the subscriber inside the subscriberNode\n\t\t\tsubscriberNode.push(subscriber)\n\t\t} catch (e) {\n\t\t\tdbg.error('Error caught when registering subscriber:\\n', e)\n\t\t}\n\t\texec()\n\t}\n\n\t$unsubscribe(pathStr, fn) {\n\t\tif (process.env.NODE_ENV !== 'production') checkDestroyed(this)\n\t\tconst { subscribers } = this.$ctx\n\t\tunsubscribe(pathStr, fn, subscribers)\n\t}\n\n\t$update(newState) {\n\t\tif (process.env.NODE_ENV !== 'production') checkDestroyed(this)\n\t\tinform()\n\t\tlegacyAssign(this, newState)\n\t\texec()\n\t}\n\n\t$destroy() {\n\t\tif (process.env.NODE_ENV !== 'production') checkDestroyed(this)\n\t\tconst { nodeInfo, isFragment, children } = this.$ctx\n\t\tinform()\n\t\tthis.$umount()\n\t\tif (isFragment) for (let i in children) mountingPointStore.delete(children[i].anchor)\n\t\t// Detatch all mounted components\n\t\tfor (let i in this) {\n\t\t\tif (typeOf(this[i]) === 'array') this[i].clear()\n\t\t\telse this[i] = null\n\t\t}\n\t\t// Remove context\n\t\tdelete this.$ctx\n\t\t// Push DOM removement operation to query\n\t\tqueueDom(() => {\n\t\t\tDOM.remove(nodeInfo.element)\n\t\t\tDOM.remove(nodeInfo.placeholder)\n\t\t})\n\t\t// Render\n\t\treturn exec()\n\t}\n}\n\nenumerableFalse(EFBaseComponent, ['$mount', '$umount', '$subscribe', '$unsubscribe', '$update', '$destroy'])\nexport default EFBaseComponent\n","const getGetter = ({base, key}, {checkTrue, get, set}) => {\n\tif (get) {\n\t\tif (!set) throw new Error('Setter must be defined when getter exists')\n\t\treturn get\n\t}\n\n\tif (checkTrue) return function() {\n\t\treturn checkTrue(base(this)[key], this)\n\t}\n\n\treturn function() {\n\t\treturn base(this)[key]\n\t}\n}\n\nconst getSetter = ({base, key}, {checkTrue, trueVal, falseVal, get, set}) => {\n\tif (set) {\n\t\tif (!get) throw new Error('Getter must be defined when setter exists')\n\t\treturn set\n\t}\n\n\tif (checkTrue) return function(val) {\n\t\tconst baseNode = base(this)\n\t\tconst _trueVal = trueVal\n\t\tconst _falseVal = falseVal\n\n\t\tif (typeof trueVal !== 'function') trueVal = () => _trueVal\n\t\tif (typeof falseVal !== 'function') falseVal = () => _falseVal\n\n\t\tif (val) baseNode[key] = trueVal(this)\n\t\telse baseNode[key] = falseVal(this)\n\t}\n\n\treturn function(val) {\n\t\tbase(this)[key] = val\n\t}\n}\n\nconst defaultRoot = state => state.$data\nconst getBase = (root) => {\n\tif (!root) return defaultRoot\n\tif (typeof root === 'function') return root\n\tif (typeof root === 'string') root = root.split('.')\n\treturn (base) => {\n\t\tfor (let key of root) base = base[key]\n\t\treturn base\n\t}\n}\n\nconst registerProps = (tpl, propMap) => {\n\tfor (let prop in propMap) {\n\n\t\t/* Options:\n\t\t * key: key on root, default to prop\n\t\t * base: a function that returns the base of the key, default returns $data\n\t\t * trueVal: value when true, only used when checkTrue is set\n\t\t * falseVal: value when false, only used when checkTrue is set\n\t\t * checkTrue: a function returns true or false based on input value\n\t\t * get: getter, will ignore all other settings except set\n\t\t * set: setter, will ignore all other settings except get\n\t\t */\n\t\tconst options = propMap[prop]\n\n\t\tconst base = getBase(options.base)\n\t\tconst key = options.key || prop\n\n\t\tconst basicProperty = {base, key}\n\n\t\tconst get = getGetter(basicProperty, options)\n\t\tconst set = getSetter(basicProperty, options)\n\n\t\tObject.defineProperty(tpl.prototype, prop, {\n\t\t\tget,\n\t\t\tset,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false\n\t\t})\n\t}\n\n\treturn tpl\n}\n\nexport default registerProps\n","import EFBaseComponent from './renderer.js'\nimport registerProps from './register-props.js'\nimport {assign} from './utils/polyfills.js'\nimport {inform, exec} from './render-queue.js'\n\nconst Fragment = class extends EFBaseComponent {\n\tconstructor(...children) {\n\t\tsuper([{t: 0}, ...children])\n\t}\n}\n\n// Make a helper component for text fragments\nconst textFragmentAst = [{t: 0},[['text']]]\nconst TextFragment = class extends EFBaseComponent {\n\tconstructor(text) {\n\t\tinform()\n\t\tsuper(textFragmentAst)\n\t\tthis.text = text\n\t\texec()\n\t}\n}\nregisterProps(TextFragment, {text: {}})\n\nconst textToFragment = (value) => {\n\tif (typeof value === 'string') return new TextFragment(value)\n\treturn value\n}\n\nconst createElement = (tag, attrs, ...children) => {\n\t// Create special component for fragment\n\tif (tag === Fragment) return new Fragment(...children)\n\n\t// Create an instance if tag is an ef class\n\tif (Object.isPrototypeOf.call(EFBaseComponent, tag)) {\n\t\tif (children.length <= 0) return new tag(attrs)\n\t\treturn new tag(assign({children: children.map(textToFragment)}, attrs || {}))\n\t}\n\n\t// Else return the generated basic component\n\t// Transform all label only attributes to ef-supported style\n\tconst transformedAttrs = assign({}, attrs)\n\tfor (let i in transformedAttrs) {\n\t\tif (transformedAttrs[i] === true) transformedAttrs[i] = ''\n\t}\n\n\treturn new EFBaseComponent([\n\t\t{\n\t\t\tt: tag,\n\t\t\ta: transformedAttrs\n\t\t},\n\t\t...children\n\t])\n}\n\nexport {createElement, Fragment, TextFragment}\n","// Import everything\nimport EFBaseComponent from './lib/renderer.js'\nimport {applyMountingPoint} from './lib/creator.js'\nimport mountOptions from './mount-options.js'\nimport {createElement, Fragment, TextFragment} from './lib/jsx-create-element.js'\nimport registerProps from './lib/register-props.js'\nimport { onNextRender, inform, exec, bundle, isPaused } from './lib/render-queue.js'\nimport dbg from './lib/utils/debug.js'\nimport typeOf from './lib/utils/type-of.js'\nimport { version } from '../package.json'\n\n// Apply mounting point properties for classes\nconst applyMountingPoints = (node, tpl) => {\n\tconst nodeType = typeOf(node)\n\tswitch (nodeType) {\n\t\tcase 'array': {\n\t\t\tconst [info, ...childNodes] = node\n\t\t\tif (typeOf(info) === 'object') for (let i of childNodes) applyMountingPoints(i, tpl)\n\t\t\tbreak\n\t\t}\n\t\tcase 'object': {\n\t\t\tif (node.t > 1) throw new TypeError(`[EF] Not a standard ef.js AST: Unknown mounting point type '${node.t}'`)\n\t\t\tapplyMountingPoint(node.t, node.n, tpl)\n\t\t\tbreak\n\t\t}\n\t\tcase 'string': {\n\t\t\tbreak\n\t\t}\n\t\tdefault: {\n\t\t\tthrow new TypeError(`[EF] Not a standard ef.js AST: Unknown node type '${nodeType}'`)\n\t\t}\n\t}\n}\n\n// Return a brand new class for the new component\nconst create = (value) => {\n\tconst ast = value\n\tconst EFComponent = class extends EFBaseComponent {\n\t\tconstructor(newState) {\n\t\t\tinform()\n\t\t\tsuper(ast)\n\t\t\tif (newState) this.$update(newState)\n\t\t\texec()\n\t\t}\n\t}\n\tapplyMountingPoints(ast, EFComponent)\n\n\t// Workaround for a bug of buble\n\t// https://github.com/bublejs/buble/issues/197\n\tObject.defineProperty(EFComponent.prototype, 'constructor', {enumerable: false})\n\treturn EFComponent\n}\n\nexport {create, TextFragment, registerProps, createElement, Fragment, onNextRender, inform, exec, bundle, isPaused, mountOptions, version}\n\nif (process.env.NODE_ENV !== 'production') dbg.info(`ef-core v${version} initialized!`)\n","// Import everything\nimport parse from './lib/parser.js'\nimport typeOf from 'ef-core/src/lib/utils/type-of.js'\nimport { mixStr } from 'ef-core/src/lib/utils/literals-mix.js'\nimport parseEft from 'eft-parser'\nimport { version } from '../package.json'\n// Import core components\nimport {\n\tcreate as createComponent,\n\tcreateElement,\n\tregisterProps,\n\tTextFragment,\n\tFragment,\n\tonNextRender,\n\tinform,\n\texec,\n\tbundle,\n\tisPaused,\n\tmountOptions\n} from 'ef-core'\n\n// Set parser\nlet parser = parseEft\n\nconst create = (value) => {\n\tconst valType = typeOf(value)\n\tif (valType === 'string') value = parse(value, parser)\n\telse if (valType !== 'array') throw new TypeError('Cannot create new component without proper template or AST!')\n\n\treturn createComponent(value)\n}\n\n// Change parser\nconst setParser = (newParser) => {\n\tparser = newParser\n}\n\nconst t = (...args) => create(mixStr(...args))\n\nexport {\n\tt,\n\tcreate,\n\tcreateElement,\n\tregisterProps,\n\tTextFragment,\n\tFragment,\n\tonNextRender,\n\tinform,\n\texec,\n\tbundle,\n\tisPaused,\n\tsetParser,\n\tparseEft,\n\tmountOptions,\n\tversion\n}\n\nif (process.env.NODE_ENV !== 'production') console.info(`[EF] ef.js v${version} initialized!`)\n","import eftParser from 'eft-parser'\n\nconst parse = (template, parser) => {\n\tif (!parser) parser = eftParser\n\treturn parser(template)\n}\n\nexport default parse\n"],"names":["const","char","doubleChar","oct","RegExp","ucp","uni","hex","esc","b","t","n","v","f","r","O2C","SyntaxError","UC2C","val","substr","length","parseInt","String","fromCodePoint","err","U2C","substring","fromCharCode","X2C","efEscape","string","escaped","split","let","escapedStr","replace","push","join","splitWith","escapedSplit","i","splitBy","splitArr","shift","reserved","mustache","spaceIndent","hashref","getErrorMsg","msg","line","checkValidType","obj","indexOf","ESCAPE","parsed","JSON","parse","e","splitDefault","slice","pathArr","_path","trim","map","_default","defaultVal","splitLiterals","strs","tmpl","mustaches","match","pushStr","textArr","str","parseText","result","exprs","dotToSpace","parseNodeProps","splited","name","value","getOption","options","keys","option","keyCode","isNaN","s","p","h","a","c","u","console","warn","setOption","parseLine","ref","parsingInfo","offset","offsetReg","trimmedLine","removed","prevDepth","removeOffset","indentReg","spaces","getIndent","content","escapedName","tagInfo","depth","test","getDepth","prevType","topExists","type","currentNode","ast","resolveDepth","info","tag","class","newNode","l","listener","ops","k","getEventOptions","m","method","_value","ref$6","ref$7","parseEft","template","TypeError","tplType","lines","Array","isArray","Object","hasOwnProperty","call","typeOf","mixStr","getVal","data","proto","prototype","ARR","copy","arr","empty","equals","left","right","pop","apply","items","remove","item","index","splice","reverse","rightUnique","newArr","j","sort","fn","args","unshift","window","Set","from","unique","strTpl","dbg","log","bind","error","modificationQueue","domQueue","userQueue","count","queue","handlers","queueDom","handler","inform","execUserQueue","userFnQueue","exec","immediate","renderQueue","execModifications","domRenderQueue","execDomModifications","setTimeout","legacyAssign","ee","er","assign","defineNode","key","node","defineProperty","get","set","configurable","enumerable","resolve","parentNode","resolveReactivePath","subscribers","innerData","handlerNode","subscriberNode","dataNode","resolveAllPath","_key","undefined","subscriberCallStack","execSubscribers","subscriber","isnan","initBinding","ctx","state","isInstance","constructor","prepareArgs","self","Node","mountingPointStore","WeakMap","DOM","EFFragment","appendTo","append","this","insertBeforeTo","before","insertAfterTo","after","tempFragment","document","createDocumentFragment","nodes","appendChild","insertBefore","nextSibling","handleMountingPoint","mountingPoint","clear","$ctx","nodeInfo","element","placeholder","nodeType","removeChild","getEvent","props","bubbles","cancelable","event","createEvent","initEvent","xlinkNS","getElement","ref$1","svg","createElementNS","toLowerCase","createElement","refs","regTmpl","_handler","updateOthers","addAttr","attr","setAttributeNS","setAttribute","removeAttribute","removeAttributeNS","addProp","_update","prop","expr","addEventListener","dispatchEvent","tagName","radios","querySelectorAll","selected","checked","rawHandler","addEvent","shiftKey","altKey","ctrlKey","metaKey","which","stopPropagation","stopImmediatePropagation","preventDefault","methods","DOMARR","$destroy","$umount","poped","elements","$mount","parent","anchor","tempArr","shifted","sorted","spliced","mountOptions","BEFORE","AFTER","APPEND","REPLACE","nullComponent","create","mountingPointUpdaters","child","target","fragment","bindMountingList","children","defineProperties","isFragment","safeZone","resolveAST","textNode","createTextNode","EFBaseComponent","textContent","childNodes","mount","prototypeAccessors","$data","newData","$methods","newMethods","$refs","querySelector","$subscribe","pathStr","$unsubscribe","resolveSubscriber","$update","newState","delete","classObj","enumerableFalse","getGetter","Error","checkTrue","base","getSetter","baseNode","_trueVal","trueVal","_falseVal","falseVal","defaultRoot","getBase","root","registerProps","tpl","propMap","basicProperty","Fragment","super","textFragmentAst","TextFragment","text","textToFragment","applyMountingPoints","parser","EFComponent","valType","eftParser","cb","attrs","isPrototypeOf","transformedAttrs","newParser"],"mappings":"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"}