@webqit/oohtml 1.9.21 → 1.9.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/html-imports.js +3 -2
- package/dist/html-imports.js.map +7 -1
- package/dist/html-modules.js +3 -2
- package/dist/html-modules.js.map +7 -1
- package/dist/main.js +15 -2
- package/dist/main.js.map +7 -1
- package/dist/namespaced-html.js +3 -2
- package/dist/namespaced-html.js.map +7 -1
- package/dist/state-api.js +3 -2
- package/dist/state-api.js.map +7 -1
- package/dist/subscript.js +15 -2
- package/dist/subscript.js.map +7 -1
- package/package.json +5 -7
- package/src/index.js +2 -2
- package/dist/html-imports.js.gz +0 -0
- package/dist/html-imports.js.map.gz +0 -0
- package/dist/html-modules.js.gz +0 -0
- package/dist/html-modules.js.map.gz +0 -0
- package/dist/main.js.gz +0 -0
- package/dist/main.js.map.gz +0 -0
- package/dist/namespaced-html.js.gz +0 -0
- package/dist/namespaced-html.js.map.gz +0 -0
- package/dist/state-api.js.gz +0 -0
- package/dist/state-api.js.map.gz +0 -0
- package/dist/subscript.js.gz +0 -0
- package/dist/subscript.js.map.gz +0 -0
- package/webpack.config.cjs +0 -24
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{"version":3,"file":"namespaced-html.js","mappings":"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","sources":["webpack://@webqit/oohtml/./node_modules/@webqit/util/js/getType.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/internals.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isArray.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isTypeFunction.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isFunction.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isNumber.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isNumeric.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isObject.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isString.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isTypeObject.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isUndefined.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/arr/from.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isEmpty.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isNull.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isTypeArray.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/arr/equals.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/arr/intersect.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/core/utils.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/mixin.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/core/Firebase.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/core/Fireable.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/core/Interceptor.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/obj/each.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/core/Action.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/core/Interceptors.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actors/unproxy.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actions/_exec.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actions/apply.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actions/construct.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/arr/first.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/arr/last.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/arr/any.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/arr/startsWith.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/arr/after.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/arr/indexOfSet.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/core/Event.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/core/Observer.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/core/Mutation.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/core/Observers.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actions/get.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/obj/mergeCallback.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/obj/getAllPropertyNames.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/obj/getPrototypeChain.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/arr/pushUnique.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/obj/merge.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/reactions/observe.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/connectors/link.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/connectors/build.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/reactions/unobserve.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/connectors/unlink.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actions/has.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actions/_setOrDefine.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actions/defineProperty.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actions/deleteProperty.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actions/getOwnPropertyDescriptor.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actions/getPrototypeOf.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actions/isExtensible.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actions/ownKeys.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actions/preventExtensions.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actions/set.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actions/setPrototypeOf.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/obj/copy.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/index.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actors/accessorize.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actors/unaccessorize.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/actors/proxy.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isClass.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/reactions/intercept.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/reactions/unintercept.js","webpack://@webqit/oohtml/./node_modules/@webqit/observer/src/reactions/closure.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/arr/unique.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isObject.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/src/index.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/src/vendor.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/src/dom/Reflow.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isString.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isArray.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isUndefined.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isNull.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isTypeFunction.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isTypeObject.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/arr/from.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isEmpty.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isTypeArray.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/src/dom/ready.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/src/dom/Mutations.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/src/dom/query.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isNumeric.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isNumber.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isFunction.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/obj/get.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/obj/set.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/obj/del.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/node_modules/@webqit/util/obj/has.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/src/dom/meta.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/src/dom/index.js","webpack://@webqit/oohtml/./node_modules/@webqit/browser-pie/src/dom/polyfills.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/arr/flatten.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isPlainObject.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isBoolean.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/obj/even.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/obj/compareCallback.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/obj/copyPlain.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/str/Lexer.js","webpack://@webqit/oohtml/./src/util.js","webpack://@webqit/oohtml/./src/namespaced-html/index.js","webpack://@webqit/oohtml/./src/namespaced-html/browser-entry.js"],"sourcesContent":["\n/**\n * Returns the val's type.\n *\n * @param string \tval\n *\n * @return string\n */\nexport default function(val) {\n\treturn typeof val;\n};\n","\n/**\n * Creates and/or returns an \"internals\" object for the given object.\n * \n * @param Any obj\n * @param String namespace\n * \n * @return Object\n */\nexport default function internals(obj, ...namespaces) {\n if (!globalThis.WebQitInternalsRegistry) {\n globalThis.WebQitInternalsRegistry = new Map;\n }\n var itnls = globalThis.WebQitInternalsRegistry.get(obj);\n if (!itnls) {\n itnls = new Map;\n if (namespaces[0] === false) {\n // FALSE means: Return orphan Map if not exists\n return itnls;\n }\n globalThis.WebQitInternalsRegistry.set(obj, itnls);\n }\n var _ns, _itnls;\n while ((_ns = namespaces.shift())) {\n if ((_itnls = itnls) && !(itnls = itnls.get(_ns))) {\n itnls = new Map;\n if (namespaces[0] === false) {\n // FALSE means: Return orphan Map if not exists\n return itnls;\n }\n _itnls.set(_ns, itnls);\n }\n }\n return itnls;\n}","\n/**\n * Tells if val is of type \"array\".\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn Array.isArray(val);\n};\n","\n/**\n * Tells if val is of type \"function\".\n * This holds true for both regular functions and classes.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn typeof val === 'function';\n};\n","\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"function\".\n *\n * @param object \t\tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isTypeFunction(val) || (val && {}.toString.call(val) === '[object function]');\n};\n","\n/**\n * Tells if val is of type \"number\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val instanceof Number || (typeof val === 'number');\n};\n","\n/**\n * @imports\n */\nimport _isNumber from './isNumber.js';\n/**\n * Tells if val is of type \"string\" or a numeric string.\n * This holds true for both numbers and numeric strings.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isNumber(val) || (val !== true && val !== false && val !== null && val !== '' && !isNaN(val * 1));\n};\n","\n/**\n * Tells if val is pure object.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn !Array.isArray(val) && typeof val === 'object' && val;\n};\n","\n/**\n * Tells if val is of type \"string\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val instanceof String || (typeof val === 'string' && val !== null);\n};\n","\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"object\".\n * This holds true for anything object, including built-ins.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn Array.isArray(val) || (typeof val === 'object' && val) || _isTypeFunction(val);\n};\n","\n/**\n * Tells if val is undefined or is of type \"undefined\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn arguments.length && (val === undefined || typeof val === 'undefined');\n};\n","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isTypeArray from '../js/isTypeArray.js';\nimport _isEmpty from '../js/isEmpty.js';\nimport _isObject from '../js/isObject.js';\n\n/**\n * Casts an array-like object to an array.\n *\n * @param mixed \tval\n * @param bool\t \tcastObject\n *\n * @return array\n */\nexport default function(val, castObject = true) {\n\tif (_isArray(val)) {\n\t\treturn val;\n\t};\n\tif (!castObject && _isObject(val)) {\n\t\treturn [val];\n\t};\n\tif (val !== false && val !== 0 && _isEmpty(val)) {\n\t\treturn [];\n\t};\n\tif (_isTypeArray(val)) {\n\t\treturn Array.prototype.slice.call(val);\n\t};\n\tif (_isObject(val)) {\n\t\treturn Object.values(val);\n\t};\n\treturn [val];\n};\n","\n/**\n * @imports\n */\nimport _isNull from './isNull.js';\nimport _isUndefined from './isUndefined.js';\nimport _isTypeObject from './isTypeObject.js';\n\n/**\n * Tells if val is empty in its own type.\n * This holds true for NULLs, UNDEFINED, FALSE, 0,\n * objects without keys, empty arrays.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isNull(val) || _isUndefined(val) || val === false || val === 0 \n\t\t|| (_isTypeObject(val) && !Object.keys(val).length);\n};\n","\n/**\n * Tells if val is undefined or is null.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val === null || val === '';\n};\n","\n/**\n * @imports\n */\nimport _isString from './isString.js';\nimport _isUndefined from './isUndefined.js';\n\n/**\n * Tells if val is \"array-like\".\n * This holds true for anything that has a length property.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn !_isString(val) && !_isUndefined(val.length);\n};\n","\n/**\n * Tells if two arrays are shallow equals.\n * \n * @param {Array} a \n * @param {Array} b \n * @param {Bool} dotSafe\n * \n * @returns Bool\n */\nexport default function equals(a, b, dotSafe = null) {\n\treturn dotSafe || (dotSafe !== false && a.dotSafe && b.dotSafe) \n\t\t? a.join('.') === b.join('.') \n\t\t: a.length === b.length && a.reduce((prev, value, i) => prev && value === b[i], true);\n}","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\n\n/**\n * Returns the intersection of two arrays;\n * optionally using a custom matching function.\n *\n * @param array \tarr\n * @param array\t \tarr2\n * @param function \tcallback\n *\n * @return array\n */\nexport default function(arr, arr2, callback = null) {\n\treturn !_isArray(arr2) ? [] : arr.filter(val1 => callback \n\t\t? arr2.filter(val2 => callback(val1, val2)).length \n\t\t: arr2.indexOf(val1) !== -1\n\t);\n};\n","\n/**\n * @imports\n */\nimport { _isArray } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom, _all } from '@webqit/util/arr/index.js';\n\n\n/**\n * Returns paths in 2-dimensional form.\n * \n * - key => [ [key] ]\n * - [key] => [ [key] ]\n * - [key, key2] => [ [key, key2] ]\n * - [ [key] ] => [ [key] ]\n * - [ [key1, key2] ] => [ [key1, key2] ]\n * \n * @param Array|String paths\n * \n * @return Array\n */\nexport function paths2D(paths) {\n\treturn (pathsIs2D(paths) ? paths : (_arrFrom(paths).length ? [paths] : []))\n\t\t.reduce((multiple, path) => multiple.concat([_arrFrom(path)]), [])\n\t\t.map(path => DotSafePath.resolve(path));\n}\nexport class DotSafePath extends Array {\n\tstatic resolve(path) {\n\t\t// Note the concat() below...\n\t\t// the spread operator: new DotSafePath(...path) doesn't work when path is [0].\n\t\treturn path.every(v => !(v + '').includes('.')) ? (new DotSafePath).concat(path) : path;\n\t}\n\tget dotSafe() { return true }\n}\n\n/**\n * OTHER HELPERS\n */\n\nexport function pathsIs2D(paths) {\n\treturn _arrFrom(paths).reduce((yes, path) => yes || _isArray(path), false);\n}\nexport function pathsIsDynamic(pathArray) {\n\t// Note that trying to simply match empty slots, as in: pathArray.filter(seg => !seg && seg !== 0).length\n\t// doesn't work when the empty slots are really empty slote, as in: [ 'key', <1 empty item> ]\n\treturn pathArray.filter(seg => seg || seg === 0).length !== pathArray.length;\n}\nexport function paths2DIsDynamic(paths) {\n\treturn paths.filter(pathArray => pathsIsDynamic(_arrFrom(pathArray))).length > 0;\n}\n\n","\n/**\n * @imports\n */\nimport _isArray from './isArray.js';\nimport _isFunction from './isFunction.js';\nimport _arrLast from '../arr/last.js';\nimport _mergeCallback from '../obj/mergeCallback.js';\nimport _each from '../obj/each.js';\n\n/**\n * A multi-inheritance implementstion.\n *\n * @param array\t \t...classes\n *\n * @return object\n */\nconst Implementations = new Map;\nexport default function mixin(...classes) {\n\t\n\tvar Traps = {};\n\tvar RetrnDirective = 'last';\n\tif (_isArray(arguments[0])) {\n\t\tclasses = arguments[0];\n\t\tTraps = arguments[1];\n\t\tif (arguments[2]) {\n\t\t\tRetrnDirective = arguments[2];\n\t\t}\n\t}\n\t// -----------------------\n\tvar Base = _arrLast(classes);\n\tvar supersMap = {};\n\t// -----------------------\n\t// Create the Mixin\n\t// ...with a special constructor.\n\t// -----------------------\n\tvar Mixin = class {\n\t\tconstructor(...args) {\n\t\t\tclasses.forEach((_class, i) => {\n\t\t\t\tReflect.construct(_class, args, this.constructor);\n\t\t\t});\n\t\t}\n\t};\n\t// -----------------------\n\t// Implement a special handler of the \"instanceof\" operator.\n\t// -----------------------\n\tclasses.forEach((_class, i) => {\n\t\tif (!Implementations.has(_class)) {\n\t\t\tImplementations.set(_class, []);\n\t\t\ttry {\n\t\t\t\tvar originalInstanceChecker = _class[Symbol.hasInstance];\n\t\t\t\tObject.defineProperty(_class, Symbol.hasInstance, {value: function(instance) {\n\t\t\t\t\tif (originalInstanceChecker.call(this, instance)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (Implementations.has(this)) {\n\t\t\t\t\t\treturn Implementations.get(this).reduce((yes, _mixin) => yes || (instance instanceof _mixin), false);\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}});\n\t\t\t} catch (e) {\n\t\t\t\tthrow new Error('Cannot mixin the class at index ' + i + '. Class may already have been configured for instance checks somewhere.');\n\t\t\t}\n\t\t}\n\t\tImplementations.get(_class).push(Mixin);\n\t});\n\t// ---------------------\n\t// Mixin both static and instance properties and methods\n\t// ---------------------\n\tclasses.forEach(_class => {\n\t\t// Copy const members\n\t\t_mergeCallback([Mixin, _class], (key, obj1, obj2) => ![\n\t\t\t'name', 'prototype', 'prototypes', 'length', 'caller', 'callee', 'arguments', 'constructor', 'apply', \"bind\", 'call', 'toString',/**/\n\t\t].includes(key), true/*deepProps*/);\n\t\t_mergeCallback([Mixin.prototype, _class.prototype], (key, obj1, obj2) => {\n\t\t\tif (!['prototype', 'prototypes'].includes(key)) {\n\t\t\t\tif (_isFunction(obj2[key])) {\n\t\t\t\t\tif (_isArray(supersMap[key])) {\n\t\t\t\t\t\tsupersMap[key].push(obj2[key]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsupersMap[key] = [obj2[key]];\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}, true/*deepProps*/);\n\t});\n\t// Extend (proxy) methods\n\t_each(supersMap, (name, supers) => {\n\t\tif (name === 'constructor') {\n\t\t\treturn;\n\t\t}\n\t\t// NOTE: this must not be defined as an arrow function\n\t\t// for the benefit of the \"this\".\n\t\tMixin.prototype[name] = function(...args) {\n\t\t\tif (Object.hasOwnProperty(Traps, name) && _isFunction(Traps[name])) {\n\t\t\t\t// Wrap a call to the trap...\n\t\t\t\t// So mixin supers are passed to traps\n\t\t\t\treturn Traps[name].call(this, supers, ...args);\n\t\t\t} else {\n\t\t\t\t// Call each super and return\n\t\t\t\t// the last one's return value\n\t\t\t\tvar supersReturnValues = [];\n\t\t\t\tsupers.forEach(supr => {\n\t\t\t\t\tsupersReturnValues.push(supr.call(this, ...args));\n\t\t\t\t})\n\t\t\t\treturn _arrLast(supersReturnValues);\n\t\t\t}\n\t\t};\n\t});\n\treturn Mixin;\n};","\n/**\n * @imports\n */\nimport { _isTypeObject, _isFunction, _getType, _internals } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom, _intersect, _equals as _arrEquals } from '@webqit/util/arr/index.js';\nimport { paths2D } from './utils.js'\n\n/**\n * ---------------------------\n * The Firebase class\n * ---------------------------\n */\n\nexport default class Firebase {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param object\ttarget\n\t * \n\t * @return void\n\t */\n\tconstructor(target) {\n\t\tthis.target = target;\n\t\tthis.fireables = [];\n\t\tthis.currentlyFiring = [];\n\t}\n\t\n\t/**\n\t * Adds an Fireable instance\n\t * with optional tags.\n\t *\n\t * @param Fireable\t\t\tfireable\n\t *\n\t * @return Fireable\n\t */\n\tadd(fireable) {\n\t\tthis.fireables.push(fireable);\n\t\treturn fireable;\n\t}\n\t\n\t/**\n\t * Removes fireables by instance.\n\t *\n\t * @param Fireable\t\t\tfireable\n\t *\n\t * @return void\n\t */\n\tremove(fireable) {\n\t\tthis.fireables = this.fireables.filter(_fireable => _fireable !== fireable);\n\t}\n\t\n\t/**\n\t * Removes fireables by definition.\n\t *\n\t * @param object\t\t\tdfn\n\t *\n\t * @return void\n\t */\n\tremoveMatches(dfn) {\n\t\tthis.match(dfn).forEach(fireable => {\n\t\t\tthis.fireables = this.fireables.filter(_fireable => _fireable !== fireable);\n\t\t});\n\t}\n\t\n\t/**\n\t * Finds fireables by definition.\n\t *\n\t * @param object\t\t\tdfn\n\t *\n\t * @return array\n\t */\n\tmatch(dfn) {\n\t\treturn this.fireables.filter(fireable => {\n\t\t\tvar fireableFilter = paths2D(fireable.filter);\n\t\t\tvar fireableTags = _arrFrom((fireable.params || {}).tags);\n\t\t\t// -----------------------\n\t\t\tvar dfnFilter = paths2D(dfn.filter);\n\t\t\tvar dfnTags = _arrFrom((dfn.params || {}).tags);\n\t\t\t// -----------------------\n\t\t\treturn (!dfn.originalHandler || fireable.handler === dfn.originalHandler)\n\t\t\t\t&& (!dfnFilter.length || _arrEquals(dfnFilter, fireableFilter))\n\t\t\t\t&& (!dfnTags.length || (dfnTags.length === fireableTags.length && _intersect(fireableTags, dfnTags).length === dfnTags.length));\n\t\t});\n\t}\n\t\t\n\t/**\n\t * Returns a observer-specific object embedded on an element.\n\t *\n\t * @param string\t\ttype\n\t * @param array|object\ttarget\n\t * @param bool \tcreateIfNotExists\n\t * @param string \tnamespace\n\t *\n\t * @return Firebase\n\t */\n\tstatic _getFirebase(type, target, createIfNotExists = true, namespace = this.__namespace) {\n\t\tif (!_isTypeObject(target)) {\n\t\t\tthrow new Error('Subject must be of type object; \"' + _getType(target) + '\" given!');\n\t\t}\n\t\tvar ImplementationClass = this;\n\t\tif (namespace && globalThis.WebQitObserverNamespaceRegistry.has(type + '-' + namespace)) {\n\t\t\tImplementationClass = globalThis.WebQitObserverNamespaceRegistry.get(type + '-' + namespace);\n\t\t\ttype += '-' + namespace\n\t\t}\n\t\tif (!_internals(target, 'firebases').has(type) && createIfNotExists) {\n\t\t\t_internals(target, 'firebases').set(type, new ImplementationClass(target));\n\t\t}\n\t\treturn _internals(target, 'firebases').get(type);\n\t}\n\n\t/**\n\t * Extend a Fireable Class with a namespace.\n\t *\n\t * @param string\t\tnamespace\n\t * @param class \tImplementationClass\n\t *\n\t * @return void|class\n\t */\n\tstatic _namespace(type, namespace, ImplementationClass = null) {\n\t\ttype += '-' + namespace;\n\t\tif (arguments.length === 2) {\n\t\t\treturn globalThis.WebQitObserverNamespaceRegistry.get(type);\n\t\t}\n\t\tif (!(ImplementationClass.prototype instanceof this)) {\n\t\t\tthrow new Error(`The implementation of the namespace ${this.name}.${namespace} must be a subclass of ${this.name}.`);\n\t\t}\n\t\tglobalThis.WebQitObserverNamespaceRegistry.set(type, ImplementationClass);\n\t\tImplementationClass.__namespace = namespace;\n\t}\n}\n\nif (!globalThis.WebQitObserverNamespaceRegistry) {\n\tglobalThis.WebQitObserverNamespaceRegistry = new Map();\n}\n","\n/**\n * ---------------------------\n * The Fireable class\n * ---------------------------\n */\n\nexport default class Fireable {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param object|array\t\ttarget\n\t * @param object\t\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor(target, dfn) {\n\t\tthis.target = target;\n\t\tthis.handler = dfn.handler;\n\t\tthis.filter = dfn.filter;\n\t\tthis.params = dfn.params;\n\n\t}\n\n\t/**\n\t * Sets a \"disconnected\" flag on the Fireable.\n\t *\n\t * @return void\n\t */\n\tdisconnect() {\n\t\tthis.disconnected = true;\n\t}\n}","\n/**\n * @imports\n */\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _intersect } from '@webqit/util/arr/index.js';\nimport Fireable from './Fireable.js';\n\n/**\n * ---------------------------\n * The Trap class\n * ---------------------------\n */\n\nexport default class Interceptor extends Fireable {\n\t\n\t/**\n\t * Calls the observer's handler function\n\t * on matching with the event's fields.\n\t *\n\t * @param Event\t\t\t \t\t\tevent\n\t * @param function\t\t\t\t\tnext\n\t * @param mixed\t\t\t\t\t \trecieved\n\t *\n\t * @return void\n\t */\n\tfire(event, next, recieved) {\n\t\tif (this.disconnected || (this.filter && !_intersect(_arrFrom(this.filter), [event.type]).length)) {\n\t\t\treturn next(...Array.prototype.slice.call(arguments, 2));\n\t\t}\n\t\treturn this.handler(event, recieved, next);\n\t}\n}","\n/**\n * @imports\n */\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isNumeric from '../js/isNumeric.js';\n\n/**\n * Loops thru obj flatly with a callback function.\n * Stops when callback returns a non-undefined value.\n *\n * @param array|object \t\t\tobj \t\t\tThe array or object to iterate.\n * @param function \t\t\t\tcallback \t\tThe callback function.\n *\n * @return mixed|null\t\t\tAny non-null return from callback\n */\nexport default function(obj, callback) {\n\tvar returnValue = undefined;\n\tif (_isTypeObject(obj)) {\n\t\tObject.keys(obj).forEach((k, i) => {\n\t\t\tif (returnValue !== false) {\n\t\t\t\treturnValue = callback(_isNumeric(k) ? parseFloat(k) : k, obj[k], i);\n\t\t\t}\n\t\t});\n\t}\n\treturn returnValue;\n};\n","\n/**\n * @imports\n */\nimport { _each } from '@webqit/util/obj/index.js';\n\n/**\n * ---------------------------\n * The QueryEvent class\n * ---------------------------\n */\n\nexport default class Action {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\ttarget\n\t * @param object\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor(target, dfn) {\n\t\tthis.target = target;\n\t\tif (!dfn.type) {\n\t\t\tthrow new Error('Action type must be given in definition!');\n\t\t}\n\t\t_each(dfn, (key, value) => {\n\t\t\tObject.defineProperty(this, key, {value, enumerable:true});\n\t\t});\n\t\tObject.seal(this);\n\t}\n}","\n/**\n * @imports\n */\nimport Firebase from './Firebase.js';\nimport Interceptor from './Interceptor.js';\nimport Action from './Action.js';\n\n/**\n * ---------------------------\n * The Reactive class\n * ---------------------------\n */\n\nexport default class Interceptors extends Firebase {\n\t\n\t/**\n\t * @inheritdoc\n\t */\n\tadd(dfn) {\n\t\treturn super.add(new Interceptor(this.target, dfn));\n\t}\n\n\t/**\n\t * Fires all interceptors with the given action.\n\t *\n\t * @param Action\t\t\taction\n\t * @param function\t\t\tdefaultHandler\n\t *\n\t * @return mixed\n\t */\n\tfire(action, defaultHandler = null) {\n\t\tif (!(action instanceof Action)) {\n\t\t\taction = new Action(this.target, action);\n\t\t}\n\t\tif (this.currentlyFiring.filter(a => a.type === action.type && a.name === action.name).length) {\n\t\t\treturn defaultHandler ? defaultHandler() : undefined;\n\t\t}\n\t\tthis.currentlyFiring.push(action);\n\t\tconst next = (index, ..._args) => {\n\t\t\tvar interceptor = this.fireables[index];\n\t\t\tif (interceptor) {\n\t\t\t\treturn interceptor.fire(action, (...args) => {\n\t\t\t\t\treturn next(index + 1, ...args);\n\t\t\t\t}/*next*/, ..._args);\n\t\t\t}\n\t\t\treturn defaultHandler ? defaultHandler(..._args) : _args[0];\n\t\t};\n\t\tvar value = next(0);\n\t\tthis.currentlyFiring.pop();\n\t\treturn value;\n\t}\n\n\tstatic getFirebase(target, createIfNotExists = true, namespace = null) {\n\t\treturn super._getFirebase('interceptor', ...arguments);\n\t}\n\n\tstatic namespace(namespace, ImplementationClass = null) {\n\t\treturn super._namespace('interceptor', ...arguments);\n\t}\n}","\n/**\n * @imports\n */\nimport { _internals } from '@webqit/util/js/index.js';\n\n/**\n * Returns the original object earlier proxied by proxy().\n *\n * @param Proxy|Any\t\ttarget\n *\n * @return Any\n */\nexport default function(target) {\n // Proxy targets are mapped to their own instances internally\n return _internals(target, false).get(target) || target;\n}\n","\n/**\n * @imports\n */\nimport { _isTypeObject } from '@webqit/util/js/index.js';\nimport Interceptors from '../core/Interceptors.js';\nimport _unproxy from '../actors/unproxy.js';\n\n/**\n * Runs a Reflect operation of the specified type.\n *\n * @param string\t\ttype\n * @param array|object\ttarget\n * @param object\t\tpayload\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(type, target, payload = {}, params = {}) {\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\ttarget = _unproxy(target);\n\t// ---------------------------------\n\t// Execute any \"keys\" traps, otherwise \"test\" the default way\n\tvar interceptors, defaultHandler = function(_val) {\n\t\treturn arguments.length ? _val : Reflect[type](target, ...Object.values(payload));\n\t};\n\tif (interceptors = Interceptors.getFirebase(target, false, params.namespace)) {\n\t\treturn interceptors.fire({ type, ...payload }, defaultHandler);\n\t}\n\treturn defaultHandler();\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs an \"apply\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tthisArgument\n * @param array\t\t\targumentsList\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, thisArgument, argumentsList, params = {}) {\n\treturn _exec('apply', target, { thisArgument, argumentsList }, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"construct\" operation on a target.\n *\n * @param array|object\ttarget\n * @param array\t\t\targumentsList\n * @param object\t\tnewTarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, argumentsList, newTarget = null, params = {}) {\n\treturn _exec('construct', target, arguments.length > 2 ? { argumentsList, newTarget } : { argumentsList }, params);\n}\n","\n/**\n * Returns THE FIRST ENTRY OR A NUMBER OF ENTRIES counting forward from the begining.\n *\n * @param array \tarr\n * @param int\t \tamount\n *\n * @return mixed|array\n */\nexport default function(arr, amount = 1) {\n\tvar count = 0;\n\tarr.forEach(itm => {\n\t\tcount ++;\n\t});\n\tvar firsts = arr.slice(arr.length - count, amount);\n\treturn arguments.length > 1 ? firsts : firsts[0];\n};\n","\n/**\n * @imports\n */\nimport _first from './first.js';\n\n/**\n * Returns THE LAST ENTRY OR A NUMBER OF ENTRIES counting forward to the end.\n *\n * @param array \tarr\n * @param int\t \tamount\n *\n * @return mixed|array\n */\nexport default function(arr, amount = 1) {\n\treturn arguments.length > 1\n\t\t? _first(arr.slice().reverse(), amount).reverse()\n\t\t: _first(arr.slice().reverse());\n};\n","\n/**\n * Tells if ANY items pass the test.\n *\n * @param array \tarr\n * @param function \tcallback\n *\n * @return bool\n */\nexport default function(arr, callback) {\n\treturn arr.reduce((prevTest, itm, i) => prevTest || callback(itm, i), false);\n};\n","\n/**\n * Tells if the array \"a\" starts with array \"b\".\n *\n * @param {Array} a \n * @param {Array} b \n * @param {Bool} dotSafe \n * \n * @returns Bool\n */\nexport default function startsWith(a, b, dotSafe = null) {\n\treturn dotSafe || (dotSafe !== false && a.dotSafe && b.dotSafe) \n\t\t? (a.join('.') + '.').startsWith(b.join('.') + '.') \n\t\t: b.reduce((prev, value, i) => prev && value === a[i], true);\n}","\n/**\n * @imports\n */\nimport _after from '../str/after.js';\nimport _indexOfSet from './indexOfSet.js';\n\n/**\n * Returns members of array \"a\" after the array \"b\" subset.\n *\n * @param {Array} a \n * @param {Array} b \n * @param {Int} fromInex \n * @param {Bool} last \n * \n * @returns Bool\n */\nexport default function after(a, b, fromInex = null, last = false) {\n\tvar subsetIndex = _indexOfSet(a, b, fromInex, last);\n\treturn subsetIndex === -1 ? [] : a.slice(subsetIndex + b.length);\n}","\n/**\n * Returns the index of subset array \"b\" in array \"a\".\n * \n * @param {Array} a \n * @param {Array} b \n * @param {Int} fromInex \n * @param {Bool} last\n * \n * @returns Int\n */\nexport default function indexOfSet(a, b, fromInex = null, last = false) {\n if (b.length > a.length) return -1;\n\treturn (typeof fromInex === 'number' ? (last ? a.slice(0, (fromInex + 1) + (fromInex < 0 ? a.length : 0)) : a.slice(fromInex)) : a).reduce((cursors, value, i) => {\n var [ index, cursorA, cursorB ] = cursors;\n if (!last && index > -1) {\n return [index, cursorA, cursorB];\n }\n var _cursorB = cursorB + 1;\n var _cursors = value === b[_cursorB] ? (_cursorB === 0 ? [i, 0] : [cursorA, _cursorB]) : [-1, -1];\n if (_cursors[1] === b.length - 1) {\n // Reset B cursor\n _cursors[1] = -1;\n if (_cursors[0] > -1) {\n return [_cursors[0]].concat(_cursors);\n }\n }\n return [index].concat(_cursors);\n }, [-1, -1, -1])[0] + (last || typeof fromInex !== 'number' ? 0 : (fromInex > -1 ? fromInex : a.length - fromInex));\n}","\n/**\n * @imports\n */\nimport { _isUndefined, _isObject } from '@webqit/util/js/index.js';\nimport { _each } from '@webqit/util/obj/index.js';\n\n/**\n * ---------------------------\n * The Event class\n * ---------------------------\n */\n\nexport default class Event {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\t\ttarget\n\t * @param bool\t\t\t\tcancellable\n\t *\n\t * @return void\n\t */\n\tconstructor(target, cancellable = false) {\n\t\tthis._ = {};\n\t\tthis._.target = target;\n\t\tthis._.cancellable = cancellable;\n\t\tthis._.propagationStopped = false;\n\t\tthis._.defaultPrevented = false;\n\t\tthis._.promisesInstance = null;\n\t\tthis._.promises = [];\n\t}\n\n\t/**\n\t * Gets the \"target\" object.\n\t *\n\t * @return array|object\n\t */\n\tget target() {\n\t\treturn this._.target;\n\t}\n\n\t/**\n\t * Gets the \"cancellable\" flag.\n\t *\n\t * @return bool\n\t */\n\tget cancellable() {\n\t\treturn this._.cancellable;\n\t}\n\n\t/**\n\t * -----------------------\n\t * RESPONSE HANDLERS\n\t * -----------------------\n\t */\n\n\t/**\n\t * Stops the evnt from reaching other listeners.\n\t *\n\t * @return bool\n\t */\n\tstopPropagation() {\n\t\tthis._.propagationStopped = true;\n\t}\n\t\t\n\t/**\n\t * (Readonly) tells if stopPropagation() has been called.\n\t *\n\t * @return bool\n\t */\n\tget propagationStopped() {\n\t\treturn this._.propagationStopped;\n\t}\n\t\t\n\t/**\n\t * Sets a disposition that asks event initiator not to\n\t * proceed with default action.\n\t *\n\t * @return void\n\t */\n\tpreventDefault() {\n\t\tthis._.defaultPrevented = true;\n\t}\n\t\t\n\t/**\n\t * (Readonly) tells if preventDefault() has been called.\n\t *\n\t * @return bool\n\t */\n\tget defaultPrevented() {\n\t\treturn this._.defaultPrevented;\n\t}\n\t\t\n\t/**\n\t * Sets a Promise disposition.\n\t *\n\t * @param Promise\tpromise\n\t *\n\t * @return void\n\t */\n\twaitUntil(promise) {\n\t\tif (promise instanceof Promise) {\n\t\t\tthis._.promises.push(promise);\n\t\t\tthis._.promisesInstance = null;\n\t\t}\n\t}\n\t\t\n\t/**\n\t * (Readonly) returns all promises.\n\t *\n\t * @return Promise|null\n\t */\n\tget promises() {\n\t\tif (!this._.promisesInstance && this._.promises.length) {\n\t\t\tthis._.promisesInstance = Promise.all(this._.promises);\n\t\t}\n\t\treturn this._.promisesInstance;\n\t}\n\t\t\n\t/**\n\t * Evaluates the given disposition value and\n\t * calls an appropriate disposition method.\n\t *\n\t * @params mixed \trspns\n\t *\n\t * @return void\n\t */\n\trespondWith(rspns) {\n\t\tvar proms;\n\t\tvar isEvent = _isObject(rspns) && !_isUndefined(rspns.propagationStopped) && !_isUndefined(rspns.defaultPrevented)\n\t\tif ((rspns === false) || (isEvent && rspns.propagationStopped)) {\n\t\t\tthis.stopPropagation();\n\t\t} else if ((rspns === false) || (isEvent && rspns.defaultPrevented)) {\n\t\t\tthis.preventDefault();\n\t\t} else if ((rspns instanceof Promise && (proms = rspns))\n\t\t|| (isEvent && (proms = rspns.promises))) {\n\t\t\tthis.waitUntil(proms);\n\t\t}\n\t}\n}","\n/**\n * @imports\n */\nimport {\n\t_after as _arrAfter, _startsWith as _arrStartsWith,\n\t_any, _equals as _arrEquals,\n} from '@webqit/util/arr/index.js';\nimport { _isNumeric, _isFunction, _isObject } from '@webqit/util/js/index.js';\nimport { paths2D, pathsIs2D, pathsIsDynamic, paths2DIsDynamic } from './utils.js'\nimport Fireable from './Fireable.js';\nimport Event from './Event.js';\n\n/**\n * ---------------------------\n * The Observer class\n * ---------------------------\n */\n\nexport default class Observer extends Fireable {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\t\ttarget\n\t * @param object\t\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor(target, dfn) {\n\t\tsuper(target, dfn);\n\t\t// The rest of this code is designed for a 2-dimensional array.\n\t\tthis.filters2D = paths2D(this.filter);\n\t\tthis.filtersIsOriginally2D = pathsIs2D(this.filter);\n\t\tthis.filtersIsDynamic = paths2DIsDynamic(this.filters2D);\n\t\tif (this.filtersIsDynamic && this.filters2D.length > 1) {\n\t\t\tthrow new Error('Only one \"Dynamic Filter\" must be observed at a time! \"' + this.filters2D.map(pathArray => '[' + pathArray.join(', ') + ']').join(', ') + '\" have been bound together.');\n\t\t}\n\t}\n\t\n\t/**\n\t * Calls the observer's handler function\n\t * on matching with the event's filter.\n\t *\n\t * @param array\t\t\t \tchanges\n\t *\n\t * @return void\n\t */\n\tfire(changes) {\n\t\tif (this.disconnected || (this.params.type && !_any(changes, delta => this.params.type === delta.type))) {\n\t\t\treturn;\n\t\t}\n\t\tconst diff = delta => !['set', 'def'].includes(delta.type) || (\n\t\t\t!this.params.diff || (_isFunction(this.params.diff) ? this.params.diff(delta.value, delta.oldValue) : delta.value !== delta.oldValue)\n\t\t);\n\t\tvar evt = new Event(this.target);\n\t\tif (this.filters2D.length) {\n\t\t\tvar matches = changes.filter(delta => {\n\t\t\t\t// one observerPathArray can turn out to be two if dynamic\n\t\t\t\t// OR evt.originatingFields is multiple and this.params.subtree\n\t\t\t\treturn this.filters2D.filter((observerPathArray, i) => {\n\t\t\t\t\tvar observerPathArray_Resolved = observerPathArray.slice();\n\t\t\t\t\tif (this.filtersIsDynamic) {\n\t\t\t\t\t\t// Note that if we had tried to loop thru observerPathArray_Resolved,\n\t\t\t\t\t\t// we wouldn't be able tp access slots that are truly empty, as in: [ 'key', <1 empty item> ]\n\t\t\t\t\t\tdelta.path.forEach((_seg, i) => {\n\t\t\t\t\t\t\tobserverPathArray_Resolved[i] = observerPathArray_Resolved[i] || observerPathArray_Resolved[i] === 0 \n\t\t\t\t\t\t\t\t? observerPathArray_Resolved[i]\n\t\t\t\t\t\t\t\t: _seg;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn (!this.filtersIsDynamic || !pathsIsDynamic(observerPathArray_Resolved)) && diff(delta) && ((!this.params.subtree && _arrEquals(observerPathArray_Resolved, delta.path))\n\t\t\t\t\t\t|| (this.params.suptree && _arrStartsWith(observerPathArray_Resolved, delta.path) && (!_isNumeric(this.params.suptree) || _arrAfter(observerPathArray_Resolved, delta.path).length <= this.params.suptree))\n\t\t\t\t\t\t|| (this.params.subtree && delta.path.length >= observerPathArray_Resolved.length && _arrStartsWith(delta.path, observerPathArray_Resolved) && (!_isNumeric(this.params.subtree) || _arrAfter(delta.path, observerPathArray_Resolved).length <= this.params.subtree))\n\t\t\t\t\t);\n\t\t\t\t}).length;\n\t\t\t});\n\t\t\tif (matches.length) {\n\t\t\t\tif (this.filtersIsOriginally2D || this.params.subtree) {\n\t\t\t\t\tvar changesObject = matches;\n\t\t\t\t\tif (_isObject(this.filter)) {\n\t\t\t\t\t\tchangesObject = {...this.filter};\n\t\t\t\t\t\tmatches.forEach((e, i) => {\n\t\t\t\t\t\t\tchangesObject[e.name] = e;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tevt.respondWith(this.handler(changesObject, evt));\n\t\t\t\t} else {\n\t\t\t\t\tmatches.forEach((e, i) => {\n\t\t\t\t\t\tevt.respondWith(this.handler(e, evt));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ((this.params.subtree || changes.filter(delta => _arrEquals(delta.path, [delta.name])).length === changes.length) && changes.filter(delta => diff(delta)).length) {\n\t\t\tevt.respondWith(this.handler(changes, evt));\n\t\t}\n\t\treturn evt;\n\t}\n}\n","\n/**\n * @imports\n */\nimport { _each } from '@webqit/util/obj/index.js';\nimport { DotSafePath } from './utils.js';\n\n/**\n * ---------------------------\n * The QueryEvent class\n * ---------------------------\n */\n\nexport default class Mutation {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\ttarget\n\t * @param object\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor(target, dfn) {\n\t\tthis.target = target;\n\t\tif (!dfn.originalSubject) {\n\t\t\tthis.originalSubject = target;\n\t\t}\n\t\tif (!('type' in dfn)) {\n\t\t\tthrow new Error('Mutation type must be given in definition!');\n\t\t}\n\t\tif (!('name' in dfn)) {\n\t\t\tthrow new Error('Property name must be given in definition!');\n\t\t}\n\t\t_each(dfn, (key, value) => {\n\t\t\tif (key === 'path') {\n\t\t\t\tvalue = DotSafePath.resolve(value);\n\t\t\t}\n\t\t\tObject.defineProperty(this, key, {value, enumerable:true});\n\t\t});\n\t\tif (!this.path) {\n\t\t\tObject.defineProperty(this, 'path', {value: DotSafePath.resolve([dfn.name]), enumerable:true});\n\t\t}\n\t\tObject.seal(this);\n\t}\n}","\n/**\n * @imports\n */\nimport { _from as _arrFrom, _remove, _last } from '@webqit/util/arr/index.js';\nimport Firebase from './Firebase.js';\nimport Observer from './Observer.js';\nimport Mutation from './Mutation.js';\nimport Event from './Event.js';\n\n/**\n * ---------------------------\n * The Reactive class\n * ---------------------------\n */\n\nexport default class Observers extends Firebase {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param object\ttarget\n\t * \n\t * @return void\n\t */\n\tconstructor(target) {\n\t\tsuper(target);\n\t\tthis.buffers = [];\n\t}\n\t\n\t/**\n\t * @inheritdoc\n\t */\n\tadd(dfn) {\n\t\treturn super.add(new Observer(this.target, dfn));\n\t}\n\t\n\t/**\n\t * Fires all observers with the given evt (change).\n\t *\n\t * @param array|Mutation\t\tchanges\n\t * @param bool\t\t\t\tcancellable\n\t *\n\t * @return Event\n\t */\n\tfire(changes, cancellable) {\n\t\tvar evt = new Event(this.target, cancellable);\n\t\t// We accept multiple changes\n\t\tchanges = _arrFrom(changes, false).map(delta => !(delta instanceof Mutation) ? new Mutation(this.target, delta) : delta);\n\t\tif (this.buffers.length) {\n\t\t\t_last(this.buffers)(changes);\n\t\t\treturn evt;\n\t\t}\n\t\tif (this.currentlyFiring.filter(d => changes.filter(delta => d.type === delta.type && d.name === delta.name).length).length) {\n\t\t\t//return false;\n\t\t}\n\t\t//this.currentlyFiring.push(...changes);\n\t\tthis.fireables.forEach(observer => {\n\t\t\tif (evt.propagationStopped && cancellable) {\n\t\t\t\treturn evt;\n\t\t\t}\n\t\t\tevt.respondWith(observer.fire(changes));\n\t\t});\n\t\t//changes.forEach(delta => _remove(this.currentlyFiring, delta));\n\t\treturn evt;\n\t}\n\n\tstatic getFirebase(target, createIfNotExists = true, namespace = null) {\n\t\treturn super._getFirebase('observer', ...arguments);\n\t}\n\n\tstatic namespace(namespace, ImplementationClass = null) {\n\t\treturn super._namespace('observer', ...arguments);\n\t}\n}","\n/**\n * @imports\n */\nimport {\n\t_isArray, _isNumeric, _isClass,\n\t_isFunction, _isTypeObject, _internals\n} from '@webqit/util/js/index.js';\nimport { _from as _objFrom } from '@webqit/util/obj/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport Interceptors from '../core/Interceptors.js';\nimport _unproxy from '../actors/unproxy.js';\n\n/**\n * Runs a \"get\" operation on a target.\n * Fires any such query observers that may be bound to target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeys\n * @param object\t\treceiver\n * @param object\t\tparams\n *\n * @return mixed\n */\nexport default function(target, keys, receiver = null, params = {}) {\n\ttarget = receiver || target;\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\ttarget = _unproxy(target);\n\t// ---------------------------------\n\tvar _keys = _arrFrom(keys);\n\tvar values = _keys.map(key => {\n\t\t// Execute any \"get\" traps, otherwise \"get\" the default way\n\t\tvar interceptors, defaultGet = function(_value) {\n\t\t\tif (arguments.length) {\n\t\t\t\treturn _value;\n\t\t\t}\n\t\t\tif (_internals(target, 'accessorizedProps').has(key) && _internals(target, 'accessorizedProps').get(key).touch(true)) {\n\t\t\t\treturn _internals(target, 'accessorizedProps').get(key).get();\n\t\t\t}\n\t\t\treturn receiver \n\t\t\t\t? Reflect.get(target, key, receiver) \n\t\t\t\t: Reflect.get(target, key);\n\t\t};\n\t\tif (interceptors = Interceptors.getFirebase(target, true, params.namespace)) {\n\t\t\treturn interceptors.fire({type:'get', name: key, related: _keys, receiver}, defaultGet);\n\t\t}\n\t\treturn defaultGet();\n\t});\n\t// ---------------------------------\n\treturn _isArray(keys) ? values : values[0];\n}\n","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isFunction from '../js/isFunction.js';\nimport _isObject from '../js/isObject.js';\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isNumeric from '../js/isNumeric.js';\nimport _getAllPropertyNames from './getAllPropertyNames.js';\n\n/**\n * Merges values from subsequent arrays/objects first array/object;\n * optionally recursive\n *\n * @param array ...objs\n *\n * @return void\n */\nexport default function mergeCallback(objs, callback, deepProps = false, isReplace = false, withSymbols = false) {\n\tvar depth = 0;\n\tvar obj1 = objs.shift();\n\tif (_isNumeric(obj1) || obj1 === true || obj1 === false) {\n\t\tdepth = obj1;\n\t\tobj1 = objs.shift();\n\t}\n\tif (!objs.length) {\n\t\tthrow new Error('_merge() requires two or more array/objects.');\n\t}\n\tobjs.forEach((obj2, i) => {\n\t\tif (!_isTypeObject(obj2) && !_isFunction(obj2)) {\n\t\t\treturn;\n\t\t}\n\t\t(deepProps ? _getAllPropertyNames(obj2) : Object.getOwnPropertyNames(obj2)).forEach(key => {\n\t\t\tif (!callback(key, obj1, obj2, i)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar valAtObj1 = obj1[key];\n\t\t\tvar valAtObj2 = obj2[key];\n\t\t\tif (((_isArray(valAtObj1) && _isArray(valAtObj2)) || (_isObject(valAtObj1) && _isObject(valAtObj2))) \n\t\t\t&& (depth === true || depth > 0)) {\n\t\t\t\t// RECURSE...\n\t\t\t\tobj1[key] = _isArray(valAtObj1) && _isArray(valAtObj2) ? [] : {};\n\t\t\t\tmergeCallback([_isNumeric(depth) ? depth - 1 : depth, obj1[key], valAtObj1, valAtObj2], callback, deepProps, isReplace, withSymbols);\n\t\t\t} else {\n\t\t\t\tif (_isArray(obj1) && _isArray(obj2)) {\n\t\t\t\t\tif (isReplace) {\n\t\t\t\t\t\tobj1[key] = valAtObj2;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tobj1.push(valAtObj2);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// In case we're setting a read-only property\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (withSymbols) {\n\t\t\t\t\t\t\tObject.defineProperty(obj1, key, Object.getOwnPropertyDescriptor(obj2, key));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tobj1[key] = obj2[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\treturn obj1;\n};\n","\n/**\n * @imports\n */\nimport _pushUnique from '../arr/pushUnique.js';\nimport _getPrototypeChain from './getPrototypeChain.js';\n\n/**\n * Eagerly retrieves object members all down the prototype chain.\n *\n * @param object\t \tobj\n * @param object\t \tuntil\n *\n * @return array\n */\nexport default function(obj, until) {\n\tvar keysAll = [];\n\t_getPrototypeChain(obj, until).forEach(obj => {\n\t\t_pushUnique(keysAll, ...Object.getOwnPropertyNames(obj));\n\t});\n\treturn keysAll;\n};\n","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\n\n/**\n * Returns the prototype chain.\n *\n * @param object \t\tobj\n * @param object\t \tuntil\n *\n * @return bool\n */\nexport default function(obj, until) {\n\tuntil = until || Object.prototype;\n\tuntil = until && !_isArray(until) ? [until] : until;\n\t// We get the chain of inheritance\n\tvar prototypalChain = [];\n\tvar obj = obj;\n\twhile((obj && (!until || until.indexOf(obj) < 0) && obj.name !== 'default')) {\n\t\tprototypalChain.push(obj);\n\t\tobj = obj ? Object.getPrototypeOf(obj) : null;\n\t}\n\treturn prototypalChain;\n};\n","\n/**\n * Adds an item if not already exist.\n *\n * @param array \tarr\n * @param array\t \t...itms\n *\n * @return array\n */\nexport default function(arr, ...items) {\n\titems.forEach(itm => {\n\t\tif (arr.indexOf(itm) < 0) {\n\t\t\tarr.push(itm);\n\t\t}\n\t});\n\treturn arr;\n};\n","\n/**\n * @imports\n */\nimport _mergeCallback from './mergeCallback.js';\n\n/**\n * Merges values from subsequent arrays/objects first array/object;\n * optionally recursive\n *\n * @param array ...objs\n *\n * @return void\n */\nexport default function(...objs) {\n\treturn _mergeCallback(objs, (k, obj1, obj2) => {\n\t\treturn true;\n\t}, false/*deepProps*/, false/*isReplace*/, false/*withSymbols*/);\n};\n","\n/**\n * @imports\n */\nimport { _isFunction, _isTypeObject, _getType } from '@webqit/util/js/index.js';\nimport build, { isUserObject } from '../connectors/build.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Observers from '../core/Observers.js';\n\n/**\n * Adds an observer to an target's firebase.\n *\n * @param array|object\t\t\t\ttarget\n * @param string|array|function\t\tfilter\n * @param function\t\t\t\t\thandler\n * @param object\t\t\t\t\tparams\n *\n * @return Observer\n */\nexport default function(target, filter, handler = null, params = {}) {\n\ttarget = _unproxy(target);\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Observable subjects must be of type object; \"' + _getType(target) + '\" given!');\n\t}\n\tif (_isFunction(filter)) {\n\t\tparams = arguments.length > 2 ? handler : {};\n\t\thandler = filter;\n\t\tfilter = null;\n\t}\n\tif (!_isFunction(handler)) {\n\t\tthrow new Error('Handler must be a function; \"' + _getType(handler) + '\" given!');\n\t}\n\tvar existing, observers = Observers.getFirebase(target, true, params.namespace);\n\tvar dfn = {filter, handler, params,};\n\tif (dfn.filter || dfn.params.subtree === '*' || (dfn.params.subtree && isUserObject(target))) {\n\t\tbuild(target, dfn.filter, dfn.params.subtree, params.namespace);\n\t}\n\tif (dfn.params.unique && (existing = observers.match({filter, params})).length) {\n\t\tif (dfn.params.unique !== 'replace') {\n\t\t\treturn existing[0];\n\t\t}\n\t\tobservers.remove(existing[0]);\n\t}\n\treturn observers.add(dfn);\n}\n","\n/**\n * @imports\n */\nimport { _each, _merge } from '@webqit/util/obj/index.js';\nimport { _isObject } from '@webqit/util/js/index.js';\nimport Mutation from '../core/Mutation.js';\nimport Observers from '../core/Observers.js';\nimport observe from '../reactions/observe.js';\n\n/**\n * Bubble helper\n *\n * @param array|object\ttarget\n * @param string\t\tfield\n * @param array|object\tvalue\n * @param object\t\tevent\n * @param object\t\tparams\n *\n * @return void\n */\nexport default function(target, field, value, event = null, params = {}) {\n\tif (target === value) {\n\t\treturn;\n\t}\n\tvar observers;\n\tobserve(value, (changes, eventObject) => {\n\t\tif (observers = Observers.getFirebase(target, false, params.namespace)) {\n\t\t\tvar _changes = changes.map(delta => {\n\t\t\t\t// ------------\n\t\t\t\t// Recursive events must not propagate\n\t\t\t\t// ------------\n\t\t\t\tvar d = delta;\n\t\t\t\tdo {\n\t\t\t\t\tif (d.target === target) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} while(d = d.src);\n\t\t\t\t// ------------\n\t\t\t\t// Create propagation\n\t\t\t\t// ------------\n\t\t\t\tvar dfn = {}; _each(delta, (key, value) => {\n\t\t\t\t\tif (key !== 'target' && key !== 'name' && key !== 'path' && key !== 'src') {\n\t\t\t\t\t\tdfn[key] = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdfn.name = field;\n\t\t\t\tdfn.path = [field].concat(delta.path);\n\t\t\t\tdfn.originalSubject = delta.originalSubject;\n\t\t\t\tdfn.src = delta;\n\t\t\t\treturn new Mutation(target, dfn);\n\t\t\t}).filter(c => c);\n\t\t\tif (_changes.length) {\n\t\t\t\treturn observers.fire(_changes, eventObject.cancellable);\n\t\t\t}\n\t\t}\n\t}, {subtree: true, ...params, unique: true, tags: [linkTag, field, target]});\n\tif (_isObject(event) && (observers = Observers.getFirebase(target, false, params.namespace))) {\n\t\t// The event object\n\t\tvar _event = _merge({\n\t\t\tname: field,\n\t\t\ttype: 'set',\n\t\t\tvalue,\n\t\t\trelated: [field],\n\t\t}, event);\n\t\tlet eventObject = observers.fire(_event, params.cancellable);\n\t\tif (params.eventTypeReturn) {\n\t\t\treturn eventObject;\n\t\t}\n\t}\n}\n\n/**\n * @var object\n */\nexport const linkTag = {};","\n/**\n * @imports\n */\nimport { _isTypeObject } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _before, _after } from '@webqit/util/str/index.js';\nimport { paths2D } from '../core/utils.js';\nimport Observers from '../core/Observers.js';\nimport _get from '../actions/get.js';\nimport link from './link.js';\n\n/**\n * Recursively \"connects\" an object's members to the object\n * for observer actions.\n *\n * @param array|object\ttarget\n * @param string|array\tpaths\n * @param bool\t\t\tsubtree\n * @param String\t\tnamespace\n *\n * @return void\n */\nexport default function build(target, paths = null, subtree = false, namespace = null) {\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\tvar observers = Observers.getFirebase(target, true, namespace);\n\tif (!observers || observers.build) {\n\t\treturn;\n\t}\n\tobservers.build = subtree;\n\t// ---------------------------------\n\t// For paths2D, refer to the comments at class Observer.\n\tvar _paths2D = paths2D(paths);\n\t// If any path starts with a dot, (a wild card path), all keys at this level is implied\n\tvar rootLevelKeysToObserve = !_paths2D.length || _paths2D.filter(path => /*Starts with an empty segment*/!path[0] && path[0] !== 0).length\n\t\t? Object.keys(target)\n\t\t: _paths2D.map(path => path[0]);\n\tvar subLevelKeysToObserve = _paths2D.length ? _paths2D.map(path => path.slice(1)).filter(p => p.length) : null;\n\tobservers.subBuild = subLevelKeysToObserve && subLevelKeysToObserve.length ? subLevelKeysToObserve : null;\n\trootLevelKeysToObserve.forEach(key => {\n\t\tvar value = _get(target, key, null, { namespace });\n\t\ttry {\n\t\t\tif (_isTypeObject(value)) {\n\t\t\t\tlink(target, key, value, null, params);\n\t\t\t\tif ((observers.subBuild && isUserObject(value)) \n\t\t\t\t|| (_isFunction(subtree) ? subtree(value) : (subtree && isUserObject(value)))) {\n\t\t\t\t\tbuild(value, observers.subBuild, subtree, namespace);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch(e) {/* instanceof-ing certain primitives may throw */}\n\t});\n}\n\n/**\n * Tells if an object if a User Object.\n * \n * @param Object value\n * \n * @return Bool\n */\nexport const isUserObject = value => ((value instanceof Object) || (value instanceof Array) || (value instanceof Function))\n\t&& (typeof window === 'undefined' || value !== window);\n","\n/**\n * @imports\n */\nimport { _isFunction, _isTypeObject, _getType } from '@webqit/util/js/index.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Observers from '../core/Observers.js';\n\n/**\n * Removes observers from an target's firebase.\n *\n * @param array|object\t\t\t\ttarget\n * @param string|array|function\t\tfilter\n * @param function\t\t\t\t\toriginalHandler\n * @param object\t\t\t\t\tparams\n *\n * @return void\n */\nexport default function(target, filter, originalHandler = null, params = {}) {\n\ttarget = _unproxy(target);\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Observable subjects must be of type object; \"' + _getType(target) + '\" given!');\n\t}\n\tif (_isFunction(filter)) {\n\t\tparams = arguments.length > 2 ? originalHandler : {};\n\t\toriginalHandler = filter;\n\t\tfilter = null;\n\t}\n\tif (originalHandler && !_isFunction(originalHandler)) {\n\t\tthrow new Error('Handler must be a function; \"' + _getType(originalHandler) + '\" given!');\n\t}\n\tvar observers;\n\tif (observers = Observers.getFirebase(target, false, params.namespace)) {\n\t\treturn observers.removeMatches({filter, originalHandler, params});\n\t}\n}\n","\n/**\n * @imports\n */\nimport { _merge } from '@webqit/util/obj/index.js';\nimport { _isObject } from '@webqit/util/js/index.js';\nimport Observers from '../core/Observers.js';\nimport unobserve from '../reactions/unobserve.js';\nimport { linkTag } from './link.js';\n\n/**\n * Unbubble helper\n *\n * @param array|object\ttarget\n * @param string\t\tfield\n * @param array|object\tobject\n * @param object\t\tevent\n * @param object\t\tparams\n *\n * @return void\n */\nexport default function(target, field, value, event = null, params = {}) {\n\tunobserve(value, null, null, {...params, tags:[linkTag, field, target]});\n\tvar observers;\n\tif (_isObject(event) && (observers = Observers.getFirebase(target, false, params.namespace))) {\n\t\t// The event object\n\t\tvar _event = _merge({\n\t\t\tname: field,\n\t\t\ttype: 'del',\n\t\t\toldValue: value,\n\t\t\trelated: [field],\n\t\t}, event);\n\t\tobservers.fire(_event, params.cancellable);\n\t}\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"has\" operation on a target.\n *\n * @param array|object\ttarget\n * @param string\t\tname\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, name, params = {}) {\n\treturn _exec('has', target, { name }, params);\n}\n","\n/**\n * @imports\n */\nimport {\n\t_isObject, _isTypeObject, _internals,\n\t_isNumber, _isArray, _isString\n} from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport build, { isUserObject } from '../connectors/build.js';\nimport Interceptors from '../core/Interceptors.js';\nimport Observers from '../core/Observers.js';\nimport Event from '../core/Event.js';\nimport unlink from '../connectors/unlink.js';\nimport link from '../connectors/link.js';\nimport _unproxy from '../actors/unproxy.js';\nimport _has from './has.js';\nimport _get from './get.js';\n\n/**\n * Executes a \"_setProp\" type of operation on a target.\n * Fires any observers for the specific type that may be bound to target.\n *\n * @param bool\t\t\tdefine\n * @param array|object\ttarget\n * @param object\t\tpayload\n * @param Object\t\tparams\n *\n * @return Event\n */\nexport default function(define, target, payload, params = {}) {\n\ttarget = payload.receiver || target;\n\tvar keysOrPayload = payload.keysOrPayload;\n\tvar value = payload.value;\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\tif (_isObject(keysOrPayload)) {\n\t\tparams = value || {};\n\t\tvalue = null;\n\t}\n\t// ----------\n\ttarget = _unproxy(target);\n\tvar interceptors = Interceptors.getFirebase(target, false, params.namespace),\n\t\tobservers = Observers.getFirebase(target, false, params.namespace);\n\t// ----------\n\tconst handleSet = (key, value, related, detail) => {\n\t\tvar type = 'set', descriptor;\n\t\tif (define) {\n\t\t\ttype = 'defineProperty';\n\t\t\tdescriptor = value || {};\n\t\t\tvalue = descriptor.value;\n\t\t}\n\t\t// ---------------------------------\n\t\t// The event object\n\t\tvar isUpdate = false, oldValue;\n\t\tif (_has(target, key, params)) {\n\t\t\tisUpdate = true;\n\t\t\toldValue = _get(target, key, payload.receiver, params);\n\t\t}\n\t\tvar e = {\n\t\t\tname: key,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\treceiver: payload.receiver,\n\t\t\trelated,\n\t\t\tdetail,\n\t\t\tisUpdate,\n\t\t\toldValue,\n\t\t};\n\t\t// ---------------------------------\n\t\t// The set operation\n\t\tvar defaultSet = function(_success) {\n\t\t\tif (arguments.length) {\n\t\t\t\tif (descriptor) {\n\t\t\t\t\tdescriptor = _success;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = _success;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (descriptor) {\n\t\t\t\tif (_internals(target, 'accessorizedProps', false).has(key)\n\t\t\t\t&& !_internals(target, 'accessorizedProps').get(key).restore()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tObject.defineProperty(target, key, descriptor);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (_internals(target, 'accessorizedProps', false).has(key)) {\n\t\t\t\treturn _internals(target, 'accessorizedProps').get(key).set(value);\n\t\t\t}\n\t\t\ttarget[key] = value;\n\t\t\treturn true;\n\t\t};\n\t\tif (interceptors) {\n\t\t\tvar eventObject = descriptor \n\t\t\t\t? {type: 'defineProperty', name: key, descriptor, receiver: payload.receiver, related, detail, isUpdate, oldValue} \n\t\t\t\t: {type: 'set', name: key, value, receiver: payload.receiver, related, detail, isUpdate, oldValue};\n\t\t\te.success = interceptors.fire(eventObject, defaultSet);\n\t\t} else {\n\t\t\te.success = defaultSet();\n\t\t}\n\t\t// ---------------------------------\n\t\tif (e.success && e.value !== e.oldValue) {\n\t\t\t// Unobserve outgoing value for bubbling\n\t\t\tif (_isTypeObject(e.oldValue)) {\n\t\t\t\tunlink(target, key, e.oldValue, null, params);\n\t\t\t}\n\t\t\t// Observe incoming value for bubbling\n\t\t\tif (_isTypeObject(e.value)) {\n\t\t\t\tlink(target, key, e.value, null, params);\n\t\t\t\tif (observers && (observers.subBuild || (observers.build && isUserObject(e.value)))) {\n\t\t\t\t\tbuild(e.value, observers.subBuild, observers.build, params.namespace);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn e;\n\t};\n\t// ---------------------------------\n\tvar keys, events = [];\n\tif (_isArray(keysOrPayload) || ((_isString(keysOrPayload) || _isNumber(keysOrPayload)) && (keys = _arrFrom(keysOrPayload)))) {\n\t\tevents = keys.map(key => handleSet(key, value, keys, params.detail));\n\t} else if (_isObject(keysOrPayload) && (keys = Object.keys(keysOrPayload))) {\n\t\tevents = keys.map(key => handleSet(key, keysOrPayload[key], keys, params.detail));\n\t}\n\tvar successfulEvents = events.filter(e => e.success !== false);\n\t// ---------------------------------\n\tvar evt;\n\tif (observers) {\n\t\tevt = observers.fire(successfulEvents, params.cancellable);\n\t\tevt.successCount = successfulEvents.length;\n\t} else if (params.eventTypeReturn) {\n\t\tevt = new Event(target);\n\t}\n\treturn params.eventTypeReturn ? evt : successfulEvents.length > 0;\n}\n","\n/**\n * @imports\n */\nimport _setOrDefine from './_setOrDefine.js';\n\n/**\n * Executes a \"defineProperty\" operation on a target.\n * Fires any observers that may be bound to target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeysOrPayload\n * @param mixed\t\t\tvalue\n * @param object\t\tparams\n *\n * @return bool\n */\nexport default function(target, keysOrPayload, value = null, params = {}) {\n\treturn _setOrDefine(true/*define*/, target, { keysOrPayload, value }, params);\n}\n","\n/**\n * @imports\n */\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _isTypeObject, _internals } from '@webqit/util/js/index.js';\nimport Interceptors from '../core/Interceptors.js';\nimport Observers from '../core/Observers.js';\nimport Event from '../core/Event.js';\nimport unlink from '../connectors/unlink.js';\nimport _unproxy from '../actors/unproxy.js';\nimport _has from './has.js';\nimport _get from './get.js';\n\n/**\n * Executes a \"deleteProperty\" operation on a target.\n * Fires any observers that may be bound to target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeys\n * @param object\t\tparams\n *\n * @return Event\n */\nexport default function(target, keys, params = {}) {\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\ttarget = _unproxy(target);\n\tvar _keys = _arrFrom(keys);\n\tvar events = _keys.map(key => {\n\t\t// ---------------------------------\n\t\t// The event object\n\t\tvar oldValue;\n\t\tif (_has(target, key, params)) {\n\t\t\toldValue = _get(target, key, null, params);\n\t\t}\n\t\tvar e = {\n\t\t\tname: key,\n\t\t\ttype: 'deleteProperty',\n\t\t\trelated: _keys,\n\t\t\tdetail: params.detail,\n\t\t\toldValue,\n\t\t};\n\t\t// ---------------------------------\n\t\t// Execute any \"del\" traps, otherwise \"del\" the default way\n\t\tvar interceptors, defaultDel = function(_success) {\n\t\t\tif (arguments.length) {\n\t\t\t\treturn _success;\n\t\t\t}\n\t\t\tif (_internals(target, 'accessorizedProps', false).has(key)\n\t\t\t&& !_internals(target, 'accessorizedProps').get(key).restore()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdelete target[key];\n\t\t\treturn true;\n\t\t};\n\t\tif (interceptors = Interceptors.getFirebase(target, false, params.namespace)) {\n\t\t\te.success = interceptors.fire({type: 'deleteProperty', name:key, oldValue, related: _keys}, defaultDel);\n\t\t} else {\n\t\t\te.success = defaultDel();\n\t\t}\n\t\t// ---------------------------------\n\t\t// Unobserve outgoing value for bubbling\n\t\tif (e.success && _isTypeObject(e.oldValue)) {\n\t\t\tunlink(target, key, e.oldValue, null, params);\n\t\t}\n\t\treturn e;\n\t});\n\tvar successfulEvents = events.filter(e => e.success !== false);\n\t// ---------------------------------\n\tvar observers, evt;\n\tif (observers = Observers.getFirebase(target, false, params.namespace)) {\n\t\tevt = observers.fire(successfulEvents, params.cancellable);\n\t\tevt.successCount = successfulEvents.length;\n\t} else if (params.eventTypeReturn) {\n\t\tevt = new Event(target);\n\t}\n\treturn params.eventTypeReturn ? evt : successfulEvents.length > 0;\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"getOwnPropertyDescriptor\" operation on a target.\n *\n * @param array|object\ttarget\n * @param string|number name\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, name, params = {}) {\n\treturn _exec('getOwnPropertyDescriptor', target, { name }, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"getPrototypeOf\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, params = {}) {\n\treturn _exec('getPrototypeOf', target, {}, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"isExtensible\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, params = {}) {\n\treturn _exec('isExtensible', target, {}, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"ownKeys\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, params = {}) {\n\treturn _exec('ownKeys', target, {}, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"preventExtensions\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, params = {}) {\n\treturn _exec('preventExtensions', target, {}, params);\n}\n","\n/**\n * @imports\n */\nimport _setOrDefine from './_setOrDefine.js';\n\n/**\n * Executes a \"set\" operation on a target.\n * Fires any observers that may be bound to target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeysOrPayload\n * @param mixed\t\t\tvalue\n * @param object\t\treceiver\n * @param object\t\tparams\n *\n * @return bool\n */\nexport default function(target, keysOrPayload, value = null, receiver = null, params = {}) {\n\treturn _setOrDefine(false/*define*/, target, arguments.length > 3 ? { keysOrPayload, value, receiver } : { keysOrPayload, value }, params);\n}\n","\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"setPrototypeOf\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tprototype\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, prototype, params = {}) {\n\treturn _exec('setPrototypeOf', target, { prototype }, params);\n}\n","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isFunction from '../js/isFunction.js';\nimport _isNumeric from '../js/isNumeric.js';\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _mergeCallback from './mergeCallback.js';\n\n/**\n * Copies an object.\n *\n * @param object\t \tobj\n * @param array\t\t \tfilter\n *\n * @return object\n */\nexport default function(obj, filter = [], withSymbols = true) {\n\tvar depth = 0;\n\tif (_isNumeric(arguments[0]) && _isTypeObject(arguments[1])) {\n\t\tdepth = arguments[0];\n\t\tobj = arguments[1];\n\t\tfilter = arguments[2] || [];\n\t}\n\treturn _mergeCallback([depth, {}, obj], (key, obj1, obj2) => {\n\t\treturn _isFunction(filter) ? filter(key) \n\t\t\t: (_isArray(filter) && filter.length ? filter.indexOf(key) > -1 : true);\n\t}, false/*deepProps*/, false/*isReplace*/, withSymbols);\n};\n","\n/**\n * @imports\n */\n// Actions\nimport apply from './actions/apply.js';\nimport construct from './actions/construct.js';\nimport defineProperty from './actions/defineProperty.js';\nimport deleteProperty from './actions/deleteProperty.js';\nimport get from './actions/get.js';\nimport getOwnPropertyDescriptor from './actions/getOwnPropertyDescriptor.js';\nimport getPrototypeOf from './actions/getPrototypeOf.js';\nimport has from './actions/has.js';\nimport isExtensible from './actions/isExtensible.js';\nimport ownKeys from './actions/ownKeys.js';\nimport preventExtensions from './actions/preventExtensions.js';\nimport set from './actions/set.js';\nimport setPrototypeOf from './actions/setPrototypeOf.js';\n// Actors\nimport accessorize from './actors/accessorize.js';\nimport unaccessorize from './actors/unaccessorize.js';\nimport proxy from './actors/proxy.js';\nimport unproxy from './actors/unproxy.js';\n// Reactions\nimport observe from './reactions/observe.js';\nimport unobserve from './reactions/unobserve.js';\nimport intercept from './reactions/intercept.js';\nimport unintercept from './reactions/unintercept.js';\nimport closure from './reactions/closure.js';\n// Connectors\nimport build from './connectors/build.js';\nimport link from './connectors/link.js';\nimport unlink from './connectors/unlink.js';\n// Core\nimport Observers from './core/Observers.js';\nimport Interceptors from './core/Interceptors.js';\n\n/**\n * @exports\n */\nexport default {\n\t// Actions\n\tapply,\n\tconstruct,\n\tdefineProperty,\n\tdeleteProperty,\n\tget,\n\tgetOwnPropertyDescriptor,\n\tgetPrototypeOf,\n\thas,\n\tisExtensible,\n\townKeys,\n\tpreventExtensions,\n\tset,\n\tsetPrototypeOf,\n\t// Actors\n\taccessorize,\n\tunaccessorize,\n\tproxy,\n\tunproxy,\n\t// Reactions\n\tobserve,\n\tunobserve,\n\tintercept,\n\tunintercept,\n\tclosure,\n\t// Connectors\n\tbuild,\n\tlink,\n\tunlink,\n\t// Core\n\tObservers,\n\tInterceptors,\n}","\n/**\n * @imports\n */\nimport { _isArray, _internals } from '@webqit/util/js/index.js';\nimport { _isObject } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport _get from '../actions/get.js';\nimport _set from '../actions/set.js';\n\n/**\n * Initializes \"Reflxive getter/setter\" traps on the target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeys\n * @param object\t\tparams\n *\n * @return bool|array\n */\nexport default function(target, keys = [], params = {}) {\n\tparams = _isObject(keys) ? keys : params;\n\tvar successFlags = (arguments.length === 1 ? Object.keys(target) : _arrFrom(keys)).map(key => {\n\t\tif (_internals(target, 'accessorizedProps').has(key) && _internals(target, 'accessorizedProps').get(key).touch(true)) {\n\t\t\treturn false;\n\t\t}\n\t\t// ----------\n\t\tconst getDescriptorDeep = () => {\n\t\t\tvar descriptor, proto = target;\n\t\t\twhile (!descriptor && (proto = Object.getPrototypeOf(proto))) {\n\t\t\t\tdescriptor = Object.getOwnPropertyDescriptor(proto, key);\n\t\t\t}\n\t\t\treturn descriptor;\n\t\t};\n\t\t// ----------\n\t\tvar originalOwnDescriptor = Object.getOwnPropertyDescriptor(target, key),\n\t\t\taltOriginalOwnDescriptor,\n\t\t\tactiveIsAltOriginalOwnDescriptor;\n\t\tif (!originalOwnDescriptor) {\n\t\t\t// Not an own property\n\t\t\t// and maybe not even defined at all in the prototype chain\n\t\t\taltOriginalOwnDescriptor = {\n\t\t\t\twritable: true,\n\t\t\t\tenumerable: key in target ? false/* existing but inherited*/ : true,\n\t\t\t\tconfigurable: params.configurable !== false,\n\t\t\t};\n\t\t}\n\t\t// ----------\n\t\tvar reactiveOwnDescriptor = { ...(originalOwnDescriptor || altOriginalOwnDescriptor) };\n\t\tif ('value' in reactiveOwnDescriptor) {\n\t\t\tdelete reactiveOwnDescriptor.value;\n\t\t}\n\t\tif ('writable' in reactiveOwnDescriptor) {\n\t\t\tdelete reactiveOwnDescriptor.writable;\n\t\t}\n\t\t// ----------\n\t\treactiveOwnDescriptor.get = () => {\n\t\t\tif (controlObject.ongoingGets.length) {\n\t\t\t\t// .touch(true)\n\t\t\t\treturn controlObject.get();\n\t\t\t}\n\t\t\t// _get() will return here\n\t\t\t// but to call controlObject.get();\n\t\t\tcontrolObject.ongoingGets.push(1);\n\t\t\tvar value = _get(target, key, null, params);\n\t\t\tcontrolObject.ongoingGets.pop();\n\t\t\treturn value;\n\t\t};\n\t\tvar setting;\n\t\treactiveOwnDescriptor.set = newValue => {\n\t\t\tif (controlObject.ongoingSets.length) {\n\t\t\t\treturn controlObject.set(newValue);\n\t\t\t}\n\t\t\t// _set() will return here\n\t\t\t// but to call controlObject.set();\n\t\t\tcontrolObject.ongoingSets.push(1);\n\t\t\tvar operation = _set(target, key, newValue, null, params);\n\t\t\tcontrolObject.ongoingSets.pop();\n\t\t\treturn operation;\n\t\t};\n\t\t// ----------\n\t\tvar controlObject = {\n\t\t\tongoingGets: [],\n\t\t\tongoingSets: [],\n\t\t\tget: function() {\n\t\t\t\t// ---------------------\n\t\t\t\tvar descriptor = originalOwnDescriptor;\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tif (activeIsAltOriginalOwnDescriptor) {\n\t\t\t\t\t\t// Already switched to altOriginalOwnDescriptor\n\t\t\t\t\t\tdescriptor = altOriginalOwnDescriptor;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// getDescriptorDeep() or altOriginalOwnDescriptor\n\t\t\t\t\t\tdescriptor = getDescriptorDeep() || altOriginalOwnDescriptor;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// ---------------------\n\t\t\t\treturn descriptor.get ? descriptor.get.call(target) : descriptor.value;\n\t\t\t},\n\t\t\tset: function(value) {\n\t\t\t\t// ---------------------\n\t\t\t\tvar descriptor = originalOwnDescriptor;\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tif (activeIsAltOriginalOwnDescriptor) {\n\t\t\t\t\t\t// Already switched to altOriginalOwnDescriptor\n\t\t\t\t\t\tdescriptor = altOriginalOwnDescriptor;\n\t\t\t\t\t} else if (descriptor = getDescriptorDeep()) {\n\t\t\t\t\t\tif (('value' in descriptor)) {\n\t\t\t\t\t\t\t// Deep is data property.\n\t\t\t\t\t\t\t// We should rather switch to altOriginalOwnDescriptor\n\t\t\t\t\t\t\tdescriptor = altOriginalOwnDescriptor;\n\t\t\t\t\t\t\tactiveIsAltOriginalOwnDescriptor = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Not yet switched to altOriginalOwnDescriptor\n\t\t\t\t\t\t// and no getDescriptorDeep()\n\t\t\t\t\t\tdescriptor = altOriginalOwnDescriptor;\n\t\t\t\t\t\tactiveIsAltOriginalOwnDescriptor = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// ---------------------\n\t\t\t\tif (descriptor.set || descriptor.get) {\n\t\t\t\t\tif (!descriptor.set) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t// Can sometimes return undefined\n\t\t\t\t\treturn descriptor.set.call(target, value);\n\t\t\t\t}\n\t\t\t\tdescriptor.value = value;\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\trestore: function() {\n\t\t\t\ttry {\n\t\t\t\t\tif (this.intact()) {\n\t\t\t\t\t\tif (originalOwnDescriptor || activeIsAltOriginalOwnDescriptor /* switched */) {\n\t\t\t\t\t\t\tObject.defineProperty(target, key, originalOwnDescriptor || altOriginalOwnDescriptor /* switch target */);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdelete target[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_internals(target, 'accessorizedProps').delete(key);\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t} catch(e) {}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tintact: function() {\n\t\t\t\treturn (Object.getOwnPropertyDescriptor(target, key) || {}).get === reactiveOwnDescriptor.get;\n\t\t\t},\n\t\t\ttouch: function(attemptRestore = false) {\n\t\t\t\t// If intact, or not intact but not restorable, return true - \"valid\"\n\t\t\t\treturn this.intact() || (attemptRestore ? !this.restore() : false);\n\t\t\t},\n\t\t}\n\t\t// ----------\n\t\ttry {\n\t\t\tObject.defineProperty(target, key, reactiveOwnDescriptor);\n\t\t\t_internals(target, 'accessorizedProps').set(key, controlObject);\n\t\t\treturn true;\n\t\t} catch(e) {}\n\t\treturn false;\n\t});\n\treturn _isArray(keys) ? successFlags : successFlags[0];\n}\n","\n/**\n * @imports\n */\nimport { _isArray, _isObject, _internals } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\n\n/**\n * Removes previously initialized \"Reflxive getter/setter\" traps from the target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeys\n * @param object\t\tparams\n *\n * @return bool|array\n */\nexport default function(target, keys = [], params = {}) {\n\tparams = _isObject(keys) ? keys : params;\n\tvar successFlags = (arguments.length === 1 ? Object.keys(target) : _arrFrom(keys)).map(key => {\n\t\tif (_internals(target, 'accessorizedProps', false).has(key)) {\n\t\t\treturn _internals(target, 'accessorizedProps').get(key).restore();\n\t\t}\n\t\treturn true;\n\t});\n\treturn _isArray(keys) ? successFlags : successFlags[0];\n}\n","\n/**\n * @imports\n */\nimport {\n _isClass, _isFunction, _isTypeObject,\n _getType, _internals,\n} from '@webqit/util/js/index.js';\nimport apply from '../actions/apply.js';\nimport construct from '../actions/construct.js';\nimport defineProperty from '../actions/defineProperty.js';\nimport deleteProperty from '../actions/deleteProperty.js';\nimport get from '../actions/get.js';\nimport getOwnPropertyDescriptor from '../actions/getOwnPropertyDescriptor.js';\nimport getPrototypeOf from '../actions/getPrototypeOf.js';\nimport has from '../actions/has.js';\nimport isExtensible from '../actions/isExtensible.js';\nimport ownKeys from '../actions/ownKeys.js';\nimport preventExtensions from '../actions/preventExtensions.js';\nimport set from '../actions/set.js';\nimport setPrototypeOf from '../actions/setPrototypeOf.js';\n\n/**\n * Returns an object as a proxy and binds all instance methods\n * to the proxy instead of the object itself.\n *\n * @param Object|Array\t\ttarget\n * @param Object\t\t params\n *\n * @return Proxy\n */\nexport default function(target, params = {}) {\n\tif (!_isTypeObject(target)) {\n\t\tthrow new Error('Object must be of type target; \"' + _getType(target) + '\" given!');\n }\n var proxy = new Proxy(target, {\n apply: (target, thisArgument, argumentsList) => apply(target, thisArgument, argumentsList, params),\n construct: (target, argumentsList, newTarget = null) => construct(target, argumentsList, newTarget, params),\n defineProperty: (target, propertyKey, attributes) => defineProperty(target, propertyKey, attributes, params),\n deleteProperty: (target, propertyKey) => deleteProperty(target, propertyKey, params),\n get: (target, propertyKey, receiver = null) => {\n var val = get(target, propertyKey, receiver, params);\n if (params.proxyAutoBinding !== false && _isFunction(val) && !_isClass(val)) {\n return val.bind(proxy);\n }\n return val;\n },\n getOwnPropertyDescriptor: (target, propertyKey) => getOwnPropertyDescriptor(target, propertyKey, params),\n getPrototypeOf: target => getPrototypeOf(target, params),\n has: (target, propertyKey) => has(target, propertyKey, params),\n isExtensible: target => isExtensible(target, params),\n ownKeys: target => ownKeys(target, params),\n preventExtensions: target => preventExtensions(target, params),\n set: (target, propertyKey, value, receiver = null) => set(target, propertyKey, value, receiver, params),\n setPrototypeOf: (target, prototype) => setPrototypeOf(target, prototype, params),\n });\n _internals(proxy).set(proxy, target);\n\treturn proxy;\n}\n","\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"class\".\n *\n * @param object \t\tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isTypeFunction(val) && /^class\\s?/.test(Function.prototype.toString.call(val));\n};\n","\n/**\n * @imports\n */\nimport { _isFunction, _isTypeObject, _isObject, _getType } from '@webqit/util/js/index.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Interceptors from '../core/Interceptors.js';\n\n/**\n * Adds a trap to an target's firebase.\n *\n * @param array|object\t\t\t\ttarget\n * @param object\t\t\t\t\ttrap\n * @param object\t\t\t\t\tparams\n *\n * @return Interceptor\n */\nexport default function(target, trap, params = {}) {\n\ttarget = _unproxy(target);\n\tif (!_isTypeObject(target)) {\n\t\tthrow new Error('Object must be of type target; \"' + _getType(handler) + '\" given!');\n\t}\n\tvar returnObj = {}, isOriginallyObj = true;\n\tif (!_isObject(trap)) {\n\t\t// Backwards compatibility\n\t\tif (_isFunction(trap)) {\n\t\t\ttrap = { '': trap };\n\t\t} else if (_isFunction(params)) {\n\t\t\ttrap = { [trap]: params };\n\t\t\tparams = arguments.length > 3 ? arguments[3] : {};\n\t\t}\n\t\tisOriginallyObj = false;\n\t}\n\tvar interceptors = Interceptors.getFirebase(target, true, params.namespace);\n\tObject.keys(trap).forEach(filter => {\n\t\tif (!_isFunction(trap[filter])) {\n\t\t\tthrow new Error('Callback' + (filter === null ? '' : ' for ' + filter) + ' must be a function; \"' + _getType(trap[filter]) + '\" given!');\n\t\t}\n\t\tvar dfn = { filter, handler: trap[filter], params }, existing;\n\t\tif (dfn.params.unique && (existing = interceptors.match(dfn)).length) {\n\t\t\tif (dfn.params.unique !== 'replace') {\n\t\t\t\treturn existing[0];\n\t\t\t}\n\t\t\tinterceptors.remove(existing[0]);\n\t\t}\n\t\tif (isOriginallyObj) {\n\t\t\treturnObj[filter] = interceptors.add(dfn);\n\t\t} else {\n\t\t\treturnObj = interceptors.add(dfn);\n\t\t}\n\t});\n\treturn returnObj;\n}\n","\n/**\n * @imports\n */\nimport { _isFunction, _isTypeObject, _getType } from '@webqit/util/js/index.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Interceptors from '../core/Interceptors.js';\n\n/**\n * Removes traps from an target's firebase.\n *\n * @param array|object\t\t\t\ttarget\n * @param object\t\t\t\t\ttrap\n * @param object\t\t\t\t\tparams\n *\n * @return void\n */\nexport default function(target, trap = null, params = {}) {\n\ttarget = _unproxy(target);\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Object must be of type target; \"' + _getType(target) + '\" given!');\n\t}\n\tvar interceptors = Interceptors.getFirebase(target, false, params.namespace);\n\tif (!_isObject(trap)) {\n\t\t// Backwards compatibility\n\t\tif (_isFunction(trap)) {\n\t\t\ttrap = { [null]: trap };\n\t\t} else if (_isFunction(params)) {\n\t\t\ttrap = { [trap]: params };\n\t\t\tparams = arguments.length > 3 ? arguments[3] : {};\n\t\t}\n\t\tisOriginallyObj = false;\n\t}\n\tif (interceptors = Interceptors.getFirebase(target, false, params.namespace)) {\n\t\tObject.keys(trap).forEach(filter => {\n\t\t\tif (!_isFunction(trap[filter])) {\n\t\t\t\tthrow new Error('Callback' + (filter === null ? '' : ' for ' + filter) + ' must be a function; \"' + _getType(trap[filter]) + '\" given!');\n\t\t\t}\n\t\t\tvar dfn = { filter, originalHandler: trap[filter], params };\n\t\t\treturn interceptors.removeMatches(dfn);\n\t\t});\n\t}\n}\n","\n/**\n * @imports\n */\nimport { _copy } from '@webqit/util/obj/index.js';\nimport { _unique } from '@webqit/util/arr/index.js';\nimport { _isArray, _isTypeObject } from '@webqit/util/js/index.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Observers from '../core/Observers.js';\nimport unlink from '../connectors/unlink.js';\nimport link from '../connectors/link.js';\n\n/**\n * Executes a callback function on a target in \"closure\" mode.\n * Fires any observers that may be bound to target on recorded changes.\n *\n * @param function\t\tcallback\n * @param array\t\t\t...subjects\n *\n * @return array|Event\n */\nexport default function(callback, ...subjects) {\n\tvar context = subjects.map(target => {\n\t\ttarget = _unproxy(target);\n\t\tif (!_isTypeObject(target)) {\n\t\t\tthrow new Error('Target must be of type object!');\n\t\t}\n\t\treturn {\n\t\t\ttarget,\n\t\t\tsubjectCopy: _isArray(target) ? target.slice(0) : _copy(target),\n\t\t};\n\t});\n\t// ---------------------------------\n\tvar result = callback(...subjects);\n\t// ---------------------------------\n\tconst fireDiffs = () => {\n\t\tcontext.map(cntxt => {\n\t\t\tvar initialKeys = Object.keys(cntxt.subjectCopy);\n\t\t\tvar currentKeys = Object.keys(cntxt.target);\n\t\t\tvar related = [];\n\t\t\tvar changes = _unique(initialKeys.concat(currentKeys)).map(key => {\n\t\t\t\tif (cntxt.subjectCopy[key] !== cntxt.target[key]) {\n\t\t\t\t\trelated.push(key);\n\t\t\t\t\t// ---------------------------------\n\t\t\t\t\t// The event object\n\t\t\t\t\tvar e = {\n\t\t\t\t\t\tname:key,\n\t\t\t\t\t\trelated,\n\t\t\t\t\t\tbuffered: true,\n\t\t\t\t\t};\n\t\t\t\t\tif (currentKeys.includes(key)) {\n\t\t\t\t\t\te.type = 'set';\n\t\t\t\t\t\te.value = cntxt.target[key];\n\t\t\t\t\t\tif (initialKeys.includes(key)) {\n\t\t\t\t\t\t\te.isUpdate = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.type = 'del';\n\t\t\t\t\t}\n\t\t\t\t\tif (initialKeys.includes(key)) {\n\t\t\t\t\t\te.oldValue = cntxt.subjectCopy[key];\n\t\t\t\t\t}\n\t\t\t\t\t// ---------------------------------\n\t\t\t\t\t// Unobserve outgoing value for bubbling\n\t\t\t\t\tif (_isTypeObject(cntxt.subjectCopy[key])) {\n\t\t\t\t\t\tunlink(cntxt.target, key, cntxt.subjectCopy[key]);\n\t\t\t\t\t}\n\t\t\t\t\t// Observe incoming value for bubbling\n\t\t\t\t\tif (_isTypeObject(cntxt.target[key])) {\n\t\t\t\t\t\tlink(cntxt.target, key, cntxt.target[key]);\n\t\t\t\t\t}\n\t\t\t\t\treturn e;\n\t\t\t\t}\n\t\t\t}).filter(c => c);\n\t\t\t// ---------------------------------\n\t\t\tvar observers;\n\t\t\tif (changes.length && (observers = Observers.getFirebase(cntxt.target, false))) {\n\t\t\t\treturn observers.fire(changes);\n\t\t\t}\n\t\t});\n\t};\n\tif (result instanceof Promise) {\n\t\tresult.then(fireDiffs);\n\t} else {\n\t\tfireDiffs();\n\t}\n\treturn result;\n}\n","\n/**\n * Returns a list of unique items.\n *\n * @param array\t \t\t\t\tarr\n *\t *\n * @return array\n */\nexport default function(arr) {\n\tconst distinct = (value, index, self) => {\n\t\treturn self.indexOf(value) === index;\n\t};\n\treturn arr.filter(distinct);\n};\n","\r\n/**\r\n * Tells if val is pure object.\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn !Array.isArray(val) && typeof val === 'object' && val;\r\n};\r\n","\r\n/**\r\n * @imports\r\n */\r\nimport _isObject from '@webqit/util/js/isObject.js';\r\nimport {\r\n getName as getVendorName,\r\n getPrefix as getVendorPrefix\r\n} from './vendor.js';\r\n\r\n/**\r\n * ---------------------------\r\n * Centralized ENV initializer\r\n * for actual and virtual browser environments.\r\n * ---------------------------\r\n */\r\n\r\nexport default function() {\r\n if (!(_isObject(this) && this.window) && (typeof window === 'undefined')) {\r\n throw new Error('A window context is required.');\r\n }\r\n const _window = _isObject(this) && this.window ? this.window : window;\r\n // Create global scope?\r\n if (!_window.WebQit) {\r\n _window.WebQit = {};\r\n }\r\n if (!_window.WebQit.window) {\r\n // Is this params for global or sub scope?\r\n let _vendor, _prefix;\r\n Object.defineProperty(_window.WebQit, 'window', {get: () => _window});\r\n Object.defineProperty(_window.WebQit, 'vendor', {value: {\r\n getName: () => {\r\n if (!_vendor) {\r\n _vendor = getVendorName(_window);\r\n }\r\n return _vendor;\r\n },\r\n getPrefix: () => {\r\n if (!_prefix) {\r\n _prefix = getVendorPrefix(_window);\r\n }\r\n return _prefix;\r\n }\r\n }});\r\n }\r\n return _window.WebQit;\r\n }","\r\n/**\r\n * Detects vendor type from the given window object\r\n * \r\n * @param window window\r\n *\r\n * @return string\r\n */\r\nexport function getName(window) {\r\n // Firefox 1.0+\r\n var isFirefox = typeof window.InstallTrigger !== 'undefined';\r\n if (isFirefox) {\r\n return 'firefox';\r\n }\r\n // Safari 3.0+ \"[object HTMLElementConstructor]\" \r\n var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === \"[object SafariRemoteNotification]\"; })(!window['safari'] || (typeof window.safari !== 'undefined' && window.safari.pushNotification));\r\n if (isSafari) {\r\n return 'safari';\r\n }\r\n // Chrome 1 - 79\r\n var isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);\r\n // Edge (based on chromium) detection\r\n var isEdgeChromium = isChrome && (window.navigator.userAgent.indexOf(\"Edg\") != -1);\r\n // Opera 8.0+\r\n var isOpera = (!!window.opr && !!window.opr.addons) || !!window.opera || window.navigator.userAgent.indexOf(' OPR/') >= 0;\r\n\r\n // Internet Explorer 6-11\r\n var isIE = /*@cc_on!@*/false || !!window.document.documentMode;\r\n // Edge 20+\r\n var isEdge = !isIE && !!window.StyleMedia;\r\n // Blink engine detection\r\n var isBlink = (isChrome || isOpera) && !!window.CSS;\r\n return isEdge ? 'edge' : (\r\n isIE ? 'ie' : (\r\n isOpera ? 'opera' : (\r\n isEdgeChromium ? 'ie-chromium' : (\r\n isChrome ? 'chrome' : 'unknown'\r\n )\r\n )\r\n )\r\n );\r\n};\r\n\r\n/**\r\n * Returns the vendor-specific property prefix.\r\n *\r\n * @return object\r\n */\r\nexport function getPrefix(window) {\r\n var styles = window.getComputedStyle(window.document.documentElement, '');\r\n var prefix = (Array.prototype.slice.call(styles).join('').match(/-(moz|webkit|ms)-/) || styles.Olink === '' && ['', 'o'])[1];\r\n var api = (('WebKit|Moz|Ms|O').match(new RegExp('(' + prefix + ')', 'i')) || [])[1];\r\n return {\r\n api,\r\n prefix,\r\n css: '-' + prefix + '-',\r\n };\r\n};\r\n","\r\n/**\r\n * @imports\r\n */\r\nimport _each from '@webqit/util/obj/each.js';\r\n\r\n/**\r\n * ---------------------------\r\n * Binds callbacks to requestAnimationFrame()\r\n * to create a central \"read/write\" phases for Ctxt access.\r\n * ---------------------------\r\n */\r\n\t\t\t\r\nexport default class Reflow {\r\n\r\n\t/**\r\n\t * Starts the loop.\r\n\t *\r\n\t * @return this\r\n\t */\r\n\tconstructor(window, asyncDOM = true) {\r\n\t\tthis.window = window;\r\n\t\tthis.async = asyncDOM;\r\n\t\tthis.readCallbacks = [];\r\n\t\tthis.writeCallbacks = [];\r\n\t\tthis._run();\r\n\t}\r\n\r\n\t_run() {\r\n\t\tthis.window.requestAnimationFrame(() => {\r\n\t\t\tthis.readCallbacks.forEach((callback, i) => {\r\n\t\t\t\tif (callback && !callback()) {\r\n\t\t\t\t\tthis.readCallbacks[i] = null;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.writeCallbacks.forEach((callback, i) => {\r\n\t\t\t\tif (callback && !callback()) {\r\n\t\t\t\t\tthis.writeCallbacks[i] = null;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis._run();\r\n\t\t});\r\n\t}\r\n\t\r\n\t/**\r\n\t * Binds a callback to the \"read\" phase.\r\n\t *\r\n\t * @param function \tcallback\r\n\t * @param bool\t\twithPromise\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tonread(callback, withPromise = false) {\r\n\t\tif (withPromise) {\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tif (this.async === false) {\r\n\t\t\t\t\tcallback(resolve, reject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.readCallbacks.push(() => {\r\n\t\t\t\t\t\tcallback(resolve, reject);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (this.async === false) {\r\n\t\t\tcallback();\r\n\t\t} else {\r\n\t\t\tthis.readCallbacks.push(callback);\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Binds a callback to the \"write\" phase.\r\n\t *\r\n\t * @param function \tcallback\r\n\t * @param bool\t\twithPromise\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tonwrite(callback, withPromise = false) {\r\n\t\tif (withPromise) {\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tif (this.async === false) {\r\n\t\t\t\t\tcallback(resolve, reject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.writeCallbacks.push(() => {\r\n\t\t\t\t\t\tcallback(resolve, reject);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (this.async === false) {\r\n\t\t\tcallback();\r\n\t\t} else {\r\n\t\t\tthis.writeCallbacks.push(callback);\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * A special construct for Ctxt manipulations that span\r\n\t * one or more read/write cycles.\r\n\t *\r\n\t * @param function \tread\r\n\t * @param function \twrite\r\n\t * @param mixed\t\tprevTransaction\r\n\t *\r\n\t * @return void|mixed\r\n\t */\r\n\tcycle(read, write, prevTransaction) {\r\n\t\tthis.onread(() => {\r\n\t\t\t// Record initial values\r\n\t\t\tvar readReturn = read(prevTransaction);\r\n\t\t\tif (readReturn) {\r\n\t\t\t\t// Call erite, the transation\r\n\t\t\t\tvar callWrite = (readReturn) => {\r\n\t\t\t\t\tthis.onwrite(() => {\r\n\t\t\t\t\t\tvar writeReturn = write(readReturn, prevTransaction);\r\n\t\t\t\t\t\tif (writeReturn) {\r\n\t\t\t\t\t\t\t// Repeat transaction\r\n\t\t\t\t\t\t\tvar repeatTransaction = (writeReturn) => {\r\n\t\t\t\t\t\t\t\tthis.cycle(read, write, writeReturn);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t// If \"write\" returns a promise, we wait until it is resolved\r\n\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\tif (writeReturn instanceof Promise) {\r\n\t\t\t\t\t\t\t\twriteReturn.then(repeatTransaction);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\trepeatTransaction();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// If \"read\" returns a promise, we wait until it is resolved\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tif (readReturn instanceof Promise) {\r\n\t\t\t\t\treadReturn.then(callWrite);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcallWrite();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n};","\r\n/**\r\n * Tells if val is of type \"string\".\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn val instanceof String || (typeof val === 'string' && val !== null);\r\n};\r\n","\r\n/**\r\n * Tells if val is of type \"array\".\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn Array.isArray(val);\r\n};\r\n","\r\n/**\r\n * Tells if val is undefined or is of type \"undefined\".\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn arguments.length && (val === undefined || typeof val === 'undefined');\r\n};\r\n","\r\n/**\r\n * Tells if val is undefined or is null.\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn val === null || val === '';\r\n};\r\n","\r\n/**\r\n * Tells if val is of type \"function\".\r\n * This holds true for both regular functions and classes.\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn typeof val === 'function';\r\n};\r\n","\r\n/**\r\n * @imports\r\n */\r\nimport _isTypeFunction from './isTypeFunction.js';\r\n\r\n/**\r\n * Tells if val is of type \"object\".\r\n * This holds true for anything object, including built-ins.\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn Array.isArray(val) || (typeof val === 'object' && val) || _isTypeFunction(val);\r\n};\r\n","\r\n/**\r\n * @imports\r\n */\r\nimport _isArray from '../js/isArray.js';\r\nimport _isTypeArray from '../js/isTypeArray.js';\r\nimport _isEmpty from '../js/isEmpty.js';\r\nimport _isObject from '../js/isObject.js';\r\n\r\n/**\r\n * Casts an array-like object to an array.\r\n *\r\n * @param mixed \tval\r\n * @param bool\t \tcastObject\r\n *\r\n * @return array\r\n */\r\nexport default function(val, castObject = true) {\r\n\tif (_isArray(val)) {\r\n\t\treturn val;\r\n\t};\r\n\tif (!castObject && _isObject(val)) {\r\n\t\treturn [val];\r\n\t};\r\n\tif (val !== false && val !== 0 && _isEmpty(val)) {\r\n\t\treturn [];\r\n\t};\r\n\tif (_isTypeArray(val)) {\r\n\t\treturn Array.prototype.slice.call(val);\r\n\t};\r\n\tif (_isObject(val)) {\r\n\t\treturn Object.values(val);\r\n\t};\r\n\treturn [val];\r\n};\r\n","\r\n/**\r\n * @imports\r\n */\r\nimport _isNull from './isNull.js';\r\nimport _isUndefined from './isUndefined.js';\r\nimport _isTypeObject from './isTypeObject.js';\r\n\r\n/**\r\n * Tells if val is empty in its own type.\r\n * This holds true for NULLs, UNDEFINED, FALSE, 0,\r\n * objects without keys, empty arrays.\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn _isNull(val) || _isUndefined(val) || val === false || val === 0 \r\n\t\t|| (_isTypeObject(val) && !Object.keys(val).length);\r\n};\r\n","\r\n/**\r\n * @imports\r\n */\r\nimport _isString from './isString.js';\r\nimport _isUndefined from './isUndefined.js';\r\n\r\n/**\r\n * Tells if val is \"array-like\".\r\n * This holds true for anything that has a length property.\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn !_isString(val) && !_isUndefined(val.length);\r\n};\r\n","\n/**\n * @imports\n */\nimport init from '../index.js';\n\nexport default function(callback) {\n const WebQit = init.call(this);\n if (WebQit.DOM.isDOMReady || WebQit.window.document.readyState === 'complete') {\n callback(WebQit.window);\n } else {\n if (!WebQit.window.domReadyCallbacks) {\n WebQit.window.domReadyCallbacks = [];\n WebQit.window.document.addEventListener('DOMContentLoaded', () => {\n WebQit.DOM.isDOMReady = true;\n WebQit.window.domReadyCallbacks.splice(0).forEach(cb => cb(WebQit.window));\n }, false);\n }\n WebQit.window.domReadyCallbacks.push(callback);\n }\n}\n","\r\n/**\r\n * @imports\r\n */\r\nimport _isString from '@webqit/util/js/isString.js';\r\nimport _difference from '@webqit/util/arr/difference.js';\r\nimport _arrFrom from '@webqit/util/arr/from.js';\r\nimport domReady from './ready.js';\r\n\r\n/**\r\n * ---------------------\r\n * Ctxt Mutations Utilities\r\n * ---------------------\r\n */\r\nexport default class Mutations {\r\n\r\n\t/**\r\n\t * Starts the loop.\r\n\t *\r\n\t * @return this\r\n\t */\r\n\tconstructor(window) {\r\n\t\tthis.window = window;\r\n\t}\r\n\r\n\t/**\r\n\t * ---------------------\r\n\t * PRESENCE\r\n\t * ---------------------\r\n\t */\r\n\t\t\r\n\t/**\r\n\t * Shortcut function to onPresenceChange().\r\n\t *\r\n\t * Observes when the given elements or selectors are added\r\n\t * to the given context.\r\n\t *\r\n\t * @param window\t\t\t\t\twindow\r\n\t * @param array|Element|string\t\tels\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\tparams\r\n\t *\r\n\t * @return MutationObserver\r\n\t */\r\n\tonAdded(els, callback, params = {}) {\r\n\t\tparams.on = 'added';\r\n\t\treturn this.onPresenceChange(els, (el, presence, isTransient, addedState, removedState) => {\r\n\t\t\tcallback(el, presence, isTransient, addedState, removedState);\r\n\t\t}, params);\r\n\t}\r\n\r\n\t/**\r\n\t * Shortcut function to onPresenceChange().\r\n\t *\r\n\t * Observes when the given elements or selectors are removed\r\n\t * from the given context.\r\n\t *\r\n\t * @param array|Element|string\t\tels\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\tparams\r\n\t *\r\n\t * @return MutationObserver\r\n\t */\r\n\tonRemoved(els, callback, params = {}) {\r\n\t\tparams.on = 'removed';\r\n\t\treturn this.onPresenceChange(els, (el, presence, isTransient, addedState, removedState) => {\r\n\t\t\tcallback(el, presence, isTransient, addedState, removedState);\r\n\t\t}, params);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a MutationObserver that fires if currently, and whenever,\r\n\t * the given element, or selector, is present in the Ctxt.\r\n\t *\r\n\t * @param string|Element\t\t\t\tselector\r\n\t * @param function\t\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\t\tparams\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tonPresent(selector, callback, params = {}) {\r\n\t\t// On Ctxt-ready\r\n\t\tdomReady.call(this.window, () => {\r\n\t\t\t// On Ctxt mutation\r\n\t\t\tif (this.window.MutationObserver) {\r\n\t\t\t\tthis.onAdded(selector, (els, presence) => {\r\n\t\t\t\t\tels.forEach(el => callback(el, presence));\r\n\t\t\t\t}, params);\r\n\t\t\t}\r\n\t\t\tif (_isString(selector)) {\r\n\t\t\t\t// IMPORTANT: This must come after having observed mutations above\r\n\t\t\t\t// as the callback handler may trigger more additions\r\n\t\t\t\t_arrFrom(this.window.document.querySelectorAll(selector)).forEach(el => callback(el, 1));\r\n\t\t\t} else if (selector.parentNode) {\r\n\t\t\t\tcallback(selector, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a MutationObserver that fires if currently, and whenever,\r\n\t * the given element, or selector, is absent in the Ctxt.\r\n\t *\r\n\t * @param string|Element\t\t\t\tselector\r\n\t * @param function\t\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\t\tparams\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tonAbsent(selector, callback, params = {}) {\r\n\t\t// On Ctxt-ready\r\n\t\tdomReady.call(this.window, () => {\r\n\t\t\t// On Ctxt mutation\r\n\t\t\tif (this.window.MutationObserver) {\r\n\t\t\t\tonRemoved(selector, (els, presence) => {\r\n\t\t\t\t\tels.forEach(el => callback(el, presence));\r\n\t\t\t\t}, params);\r\n\t\t\t}\r\n\t\t\tif (_isString(selector)) {\r\n\t\t\t\t// IMPORTANT: This must come after having observed mutations above\r\n\t\t\t\t// as the callback handler may trigger more removals\r\n\t\t\t\tif (_arrFrom(this.window.document.querySelectorAll(selector)).length === 0) {\r\n\t\t\t\t\tcallback(null, 0);\r\n\t\t\t\t}\r\n\t\t\t} else if (!selector.parentNode) {\r\n\t\t\t\tcallback(selector, 0);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Observes when the given elements or selectors are added or removed\r\n\t * from the given context.\r\n\t *\r\n\t * @param array|Element|string\t\tels\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\tparams\r\n\t *\r\n\t * @return MutationObserver\r\n\t */\r\n\tonPresenceChange(els, callback, params = {}) {\r\n\t\tels = _arrFrom(els, false/*castObject*/);\r\n\t\tvar search = (el, nodeListArray) => {\r\n\t\t\t// Filter out text nodes\r\n\t\t\tnodeListArray = nodeListArray.filter(node => node.matches);\r\n\t\t\tif (_isString(el)) {\r\n\t\t\t\t// Is directly mutated...\r\n\t\t\t\tvar matches = nodeListArray.filter(node => node.matches(el));\r\n\t\t\t\t// Is contextly mutated...\r\n\t\t\t\tif (params.observeIndirectMutation !== false) {\r\n\t\t\t\t\tmatches = nodeListArray\r\n\t\t\t\t\t\t.reduce((collection, node) => collection.concat(_arrFrom(node.querySelectorAll(el))), matches);\r\n\t\t\t\t\tif (matches.length) {\r\n\t\t\t\t\t\treturn matches;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// Is directly mutated...\r\n\t\t\t\tif (nodeListArray.includes(el)) {\r\n\t\t\t\t\treturn [el];\r\n\t\t\t\t}\r\n\t\t\t\t// Is contextly mutated...\r\n\t\t\t\tif (params.observeIndirectMutation !== false && nodeListArray.length) {\r\n\t\t\t\t\tvar parentNode = el;\r\n\t\t\t\t\twhile(parentNode = parentNode.parentNode) {\r\n\t\t\t\t\t\tif (nodeListArray.includes(parentNode)) {\r\n\t\t\t\t\t\t\treturn [el];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar match = (els, sourceArray) => {\r\n\t\t\t// -------------------------------\r\n\t\t\t// Search can be expensive...\r\n\t\t\t// Multiple listeners searching the same thing in the same list?\r\n\t\t\tif (!sourceArray.$$searchCache) {\r\n\t\t\t\tsourceArray.$$searchCache = new Map();\r\n\t\t\t}\r\n\t\t\t// -------------------------------\r\n\t\t\treturn els.reduce((matches, el) => {\r\n\t\t\t\t// -------------------------------\r\n\t\t\t\tvar _matches;\r\n\t\t\t\tif (sourceArray.$$searchCache.has(el)) {\r\n\t\t\t\t\t_matches = sourceArray.$$searchCache.get(el);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_matches = search(el, sourceArray, _isString(el)) || [];\r\n\t\t\t\t\tsourceArray.$$searchCache.set(el, _matches);\r\n\t\t\t\t}\r\n\t\t\t\treturn matches.concat(_matches);\r\n\t\t\t}, []);\r\n\t\t};\r\n\t\tvar addedState = new Set(), removedState = new Set();\r\n\t\tvar fire = (list, state, isTransient) => {\r\n\t\t\tif ((state && params.on === 'removed') || (!state && params.on === 'added')) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif ((list = match(els, list)).length) {\r\n\t\t\t\tif (params.maintainCallState) {\r\n\t\t\t\t\tlist.forEach(el => {\r\n\t\t\t\t\t\tif (state) {\r\n\t\t\t\t\t\t\taddedState.add(el);\r\n\t\t\t\t\t\t\tremovedState.delete(el);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\taddedState.delete(el);\r\n\t\t\t\t\t\t\tremovedState.add(el);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tcallback(list, state, isTransient, addedState, removedState);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcallback(list, state, isTransient);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar subject = params.context || this.window.document.documentElement;\r\n\t\tvar mo = this._observe(subject, (removed__addedNodes, added__removedNodes, addedNodes, removedNodes) => {\r\n\t\t\tif (!params.ignoreTransients) {\r\n\t\t\t\tfire(removed__addedNodes, 0, true);\r\n\t\t\t\tfire(removed__addedNodes.concat(added__removedNodes), 1, true);\r\n\t\t\t\tfire(added__removedNodes, 0, true);\r\n\t\t\t}\r\n\t\t\tfire(removedNodes, 0);\r\n\t\t\tfire(addedNodes, 1);\r\n\t\t});\r\n\t\treturn mo;\r\n\t}\r\n\r\n\t/**\r\n\t * ---------------------\r\n\t * MUTATIONS\r\n\t * ---------------------\r\n\t */\r\n\r\n\t/**\r\n\t * Observes changes in attributes of the given element.\r\n\t *\r\n\t * @param Element\t\t\t\t\tel\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param array\t\t\t\t\t\tfilter\r\n\t *\r\n\t * @return MutationObserver\r\n\t */\r\n\tonAttrChange(el, callback, filter = []) {\r\n\t\tvar observer = new this.window.MutationObserver(callback);\r\n\t\tvar params = {attributes:true, attributeOldValue:true};\r\n\t\tif (filter) {\r\n\t\t\tparams.attributeFilter = filter;\r\n\t\t}\r\n\t\tobserver.observe(el, params);\r\n\t\treturn observer;\r\n\t}\r\n\r\n\t/**\r\n\t * Observes changes in tree/subtree of the given element.\r\n\t *\r\n\t * @param Element\t\t\t\t\tel\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param bool\t\t\t\t\t\tsubtree\r\n\t *\r\n\t * @return MutationObserver\r\n\t */\r\n\tonTreeChange(el, callback, subtree = false) {\r\n\t\tvar observer = new this.window.MutationObserver(callback);\r\n\t\tvar params = {childList:true, subtree};\r\n\t\tobserver.observe(el, params);\r\n\t\treturn observer;\r\n\t}\r\n\r\n\t/**\r\n\t * Observes mutations on the given element.\r\n\t *\r\n\t * @param Element\t\t\t\t\tel\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\tparams\r\n\t *\r\n\t * @return MutationObserver\r\n\t */\r\n\tonMutation(el, callback, params) {\r\n\t\tvar observer = new this.window.MutationObserver(callback);\r\n\t\tobserver.observe(el, params);\r\n\t\treturn observer;\r\n\t}\r\n\r\n\t/**\r\n\t * \r\n\t * @param Element subject \r\n\t * @param Function callback \r\n\t */\r\n\t_observe(subject, callback) {\r\n\t\tif (!MutationObserversCache.has(subject)) {\r\n\t\t\tconst callbacks = new Set();\r\n\t\t\tconst observer = new this.window.MutationObserver(mutations => {\r\n\t\t\t\tif (!callbacks.size) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar addedNodes = mutations.reduce((list, mut) => list.concat(_arrFrom(mut.addedNodes)), []),\r\n\t\t\t\tremovedNodes = mutations.reduce((list, mut) => list.concat(_arrFrom(mut.removedNodes)), []),\r\n\t\t\t\tremoved__addedNodes = [],\r\n\t\t\t\tadded__removedNodes = [];\r\n\r\n\t\t\t\taddedNodes = new Set(addedNodes);\r\n\t\t\t\tremovedNodes = new Set(removedNodes);\r\n\t\t\t\taddedNodes.forEach(el => {\r\n\t\t\t\t\tif (removedNodes.has(el)) {\r\n\t\t\t\t\t\tremovedNodes.delete(el);\r\n\t\t\t\t\t\taddedNodes.delete(el);\r\n\t\t\t\t\t\tif (el.isConnected) {\r\n\t\t\t\t\t\t\tremoved__addedNodes.push(el);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tadded__removedNodes.push(el);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\taddedNodes = [...addedNodes];\r\n\t\t\t\tremovedNodes = [...removedNodes];\r\n\r\n\t\t\t\tcallbacks.forEach(callback => callback(removed__addedNodes, added__removedNodes, addedNodes, removedNodes));\r\n\t\t\t});\r\n\t\t\tobserver.observe(subject, {childList:true, subtree:true});\r\n\t\t\tMutationObserversCache.set(subject, {callbacks, observer});\r\n\t\t}\r\n\t\tconst _observer = MutationObserversCache.get(subject);\r\n\t\t_observer.callbacks.add(callback);\r\n\t\treturn {disconnect() {\r\n\t\t\t_observer.callbacks.delete(callback);\r\n\t\t}, reconnect() {\r\n\t\t\t_observer.callbacks.add(callback);\r\n\t\t}};\r\n\t}\r\n};\r\n\r\nconst MutationObserversCache = new Map();\r\n","\r\n/**\r\n * @imports\r\n */\r\nimport _isString from '@webqit/util/js/isString.js';\r\nimport _arrFrom from '@webqit/util/arr/from.js';\r\nimport init from '../index.js';\r\n\r\n/**\r\n * Creates one or a list of DOM elements\r\n * from an input of markup, selector, HTMLElement.\r\n *\r\n * @param mixed \t\t\t\tinput\r\n * @param document|Element\t context\r\n * @param bool\t\t \t\t\tall\r\n *\r\n * @return Element|Array\r\n */\r\nexport default function query(input, context = null, all = false) {\r\n\tconst WebQit = init.call(this);\r\n\tif (_isString(input)) {\r\n\t\tvar els;\r\n\t\tif (input.trim().startsWith('<')) {\r\n\t\t\t// Create a node from markup\r\n\t\t\tvar temp = WebQit.window.document.createElement('div');\r\n\t\t\ttemp.innerHTML = input;\r\n\t\t\tels = all ? _arrFrom(temp.children) : temp.firstChild;\r\n\t\t} else {\r\n\t\t\tels = all ? _arrFrom(querySelectorAll.call(this, input, context)) : querySelector.call(this, input, context);\r\n\t\t}\r\n\t\treturn els;\r\n\t}\r\n\tif (input instanceof WebQit.window.Element) {\r\n\t\treturn all ? [input] : input;\r\n\t}\r\n\treturn all ? _arrFrom(input) : input;\r\n}\r\n\r\n/**\r\n * Creates a list of DOM elements\r\n * from an input of markup, selector, HTMLElement.\r\n *\r\n * @param mixed \t\t\t\tinput\r\n * @param document|Element\t context\r\n *\r\n * @return Array\r\n */\r\nexport function queryAll(selector, context = null) {\r\n return query.call(this, selector, context, true);\r\n}\r\n\r\n/**\r\n * Queries a DOM context for elements matching\r\n * the given selector.\r\n *\r\n * @param string \t\t\t\tselector\r\n * @param document|Element\t context\r\n * @param bool\t\t \t\t\tall\r\n *\r\n * @return Element|DOMNodeList\r\n */\r\nexport function querySelector(selector, context = null, all = false) {\r\n\tconst WebQit = init.call(this);\r\n context = context || WebQit.window.document;\r\n\tvar matchedItems, method = all ? 'querySelectorAll' : 'querySelector';\r\n\ttry {\r\n\t\tmatchedItems = context[method](selector);\r\n\t} catch(e) {\r\n\t\ttry {\r\n\t\t\tmatchedItems = context[method](selector.replace(/\\:is\\(/g, ':matches('));\r\n\t\t} catch(e) {\r\n\t\t\ttry {\r\n\t\t\t\tmatchedItems = context[method](selector.replace(/\\:is\\(/g, ':-webkit-any('));\r\n\t\t\t} catch(e) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tmatchedItems = context[method](selector.replace(/\\:is\\(/g, ':-moz-any('));\r\n\t\t\t\t} catch(e) {\r\n\t\t\t\t\tthrow e;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn matchedItems;\r\n}\r\n\r\n/**\r\n * Queries a DOM context for elements matching\r\n * the given selector.\r\n *\r\n * @param string \t\t\t\tselector\r\n * @param document|Element\t context\r\n *\r\n * @return DOMNodeList\r\n */\r\nexport function querySelectorAll(selector, context = null) {\r\n return querySelector.call(this, selector, context, true);\r\n}\r\n","\r\n/**\r\n * @imports\r\n */\r\nimport _isNumber from './isNumber.js';\r\n/**\r\n * Tells if val is of type \"string\" or a numeric string.\r\n * This holds true for both numbers and numeric strings.\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn _isNumber(val) || (val !== true && val !== false && val !== null && val !== '' && !isNaN(val * 1));\r\n};\r\n","\r\n/**\r\n * Tells if val is of type \"number\".\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn val instanceof Number || (typeof val === 'number');\r\n};\r\n","\r\n/**\r\n * @imports\r\n */\r\nimport _isTypeFunction from './isTypeFunction.js';\r\n\r\n/**\r\n * Tells if val is of type \"function\".\r\n *\r\n * @param object \t\tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn _isTypeFunction(val) || (val && {}.toString.call(val) === '[object function]');\r\n};\r\n","\r\n/**\r\n * @imports\r\n */\r\nimport _isTypeObject from '../js/isTypeObject.js';\r\nimport _isUndefined from '../js/isUndefined.js';\r\nimport _isNull from '../js/isNull.js';\r\nimport _arrFrom from '../arr/from.js';\r\n\r\n/**\r\n * Retrieves the value at the given path.\r\n *\r\n * A return value of undefined is ambiguous, and can mean either that the\r\n * path does not exist, or that the path actually exists but with a value of undefined. If it is required to\r\n * know whether the path actually exists, pass an object as a third argument.\r\n * This object will have an \"exists\" key set to true/false.\r\n *\r\n * @param object \t\t\t\tctxt\r\n * @param array \t\t\t\tpath\r\n * @param object \t\t\t\ttrap\r\n * @param object \t\t\t\treciever\r\n *\r\n * @return mixed\r\n */\r\nexport default function(ctxt, path, trap = {}, reciever = {}) {\r\n\tpath = _arrFrom(path).slice();\r\n\tvar _ctxt = ctxt;\r\n\twhile(!_isUndefined(_ctxt) && !_isNull(_ctxt) && path.length) {\r\n\t\tvar _key = path.shift();\r\n\t\tif (!(trap.get ? trap.get(_ctxt, _key) : (_isTypeObject(_ctxt) ? _key in _ctxt : _ctxt[_key]))) {\r\n\t\t\treciever.exists = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t_ctxt = trap.get ? trap.get(_ctxt, _key) : _ctxt[_key];\r\n\t}\r\n\treciever.exists = true;\r\n\treturn _ctxt;\r\n};\r\n","\r\n/**\r\n * @imports\r\n */\r\nimport _isTypeObject from '../js/isTypeObject.js';\r\nimport _isFunction from '../js/isFunction.js';\r\nimport _isNumeric from '../js/isNumeric.js';\r\nimport _isArray from '../js/isArray.js';\r\nimport _arrFrom from '../arr/from.js';\r\nimport _get from './get.js';\r\n\r\n/**\r\n * Sets a value to the given path.\r\n *\r\n * @param object \t\t\t\tobj\r\n * @param array \t\t\t\tpath\r\n * @param mixed \t\t\t\tval\r\n * @param object|function \t\tbuildTree\r\n * @param object \t\t\t\ttrap\r\n *\r\n * @return bool\r\n */\r\nexport default function(obj, path, val, buildTree = {}, trap = {}) {\r\n\tconst _set = (target, key, val) => {\r\n\t\tif (trap.set) {\r\n\t\t\treturn trap.set(target, key, val);\r\n\t\t} else {\r\n\t\t\tif (_isNumeric(path[i]) && _isArray(target)) {\r\n\t\t\t\ttarget.push(val);\r\n\t\t\t} else {\r\n\t\t\t\ttarget[key] = val;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};\r\n\tpath = _arrFrom(path);\r\n\tvar target = obj;\r\n\tfor(var i = 0; i < path.length; i ++) {\r\n\t\tif (i < path.length - 1) {\r\n\t\t\tif (!target || (!_isTypeObject(target) && !_isFunction(target))) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tvar branch = _get(target, path[i], trap);\r\n\t\t\tif (!_isTypeObject(branch)) {\r\n\t\t\t\tif (trap.buildTree === false) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tbranch = _isFunction(trap.buildTree) ? trap.buildTree(i) : (_isNumeric(path[i + 1]) ? [] : {});\r\n\t\t\t\tvar branchSuccess = _set(target, path[i], branch);\r\n\t\t\t\tif (!branchSuccess) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttarget = branch;\r\n\t\t} else {\r\n\t\t\treturn _set(target, path[i], val);\r\n\t\t}\r\n\t}\r\n};\r\n","\r\n/**\r\n * @imports\r\n */\r\nimport _isTypeObject from '../js/isTypeObject.js';\r\nimport _isFunction from '../js/isFunction.js';\r\nimport _arrFrom from '../arr/from.js';\r\nimport _get from './get.js';\r\n\r\n/**\r\n * Unsets a value from the given path.\r\n *\r\n * @param object \t\t\t\tobj\r\n * @param array \t\t\t\tpath\r\n * @param bool|function \t\treduceTree\r\n * @param object \t\t\t\ttrap\r\n *\r\n * @return bool\r\n */\r\nexport default function(obj, path, reduceTree = false, trap = {}) {\r\n\tpath = _arrFrom(path);\r\n\tvar success = false;\r\n\tdo {\r\n\t\tvar lastKey = path.pop();\r\n\t\tvar lastKey = lastKey === ''/*null*/ ? 0 : lastKey;\r\n\t\tvar _obj = obj;\r\n\t\tif (path.length) {\r\n\t\t\t_obj = _get(obj, path, {}/*reciever*/, trap);\r\n\t\t}\r\n\t\tif ((_isTypeObject(_obj) || _isFunction(_obj)) && (trap.has ? trap.has(_obj, lastKey) : lastKey in _obj)) {\r\n\t\t\tif (trap.deleteProperty) {\r\n\t\t\t\tsuccess = trap.deleteProperty(_obj, lastKey);\r\n\t\t\t} else if (trap.del) {\r\n\t\t\t\tsuccess = trap.del(_obj, lastKey);\r\n\t\t\t} else {\r\n\t\t\t\tdelete _obj[lastKey];\r\n\t\t\t\tsuccess = true;\r\n\t\t\t}\r\n\t\t}\r\n\t} while (success && reduceTree && path.length && (_isTypeObject(_obj) || _isFunction(_obj)) && !(trap.keys ? trap.keys(_obj) : Object.keys(_obj)).length);\r\n\treturn success;\r\n};\r\n","\r\n/**\r\n * @imports\r\n */\r\nimport _get from './get.js';\r\n\r\n/**\r\n * Tells if the given path exists.\r\n *\r\n * @param object \t\t\t\tobj\r\n * @param array \t\t\t\tpath\r\n * @param object \t\t\t\ttrap\r\n *\r\n * @return bool\r\n */\r\nexport default function(obj, path, trap = {}) {\r\n\tvar reciever = {};\r\n\t_get(obj, path, trap, reciever);\r\n\treturn reciever.exists;\r\n};\r\n","\n/**\n * @imports\n */\nimport _isNumeric from '@webqit/util/js/isNumeric.js';\nimport _isObject from '@webqit/util/js/isObject.js';\nimport _merge from '@webqit/util/obj/merge.js';\nimport _set from '@webqit/util/obj/set.js';\nimport _get from '@webqit/util/obj/get.js';\nimport _del from '@webqit/util/obj/del.js';\nimport _has from '@webqit/util/obj/has.js';\nimport init from '../index.js';\n\n/**\n * A WebQit's meta tag props reader.\n * \n * @param String name\n * @param Bool\t readWrite\n * \n * @return Object\n */\nexport default function meta(name, readWrite = false) {\n const WebQit = init.call(this);\n var metaInstance = {};\n\n // Initialize reader\n if (!(metaInstance.el = WebQit.window.document.head.querySelector('meta[name=\"oohtml\"]')) && readWrite) {\n metaInstance.el = WebQit.window.document.createElement('meta');\n metaInstance.el.setAttribute('name', name);\n WebQit.window.document.head.append(metaInstance.el);\n }\n if (metaInstance.el) {\n metaInstance.vars = (metaInstance.el.getAttribute('content') || '').split(';').filter(v => v).reduce((_metaVars, directive) => {\n var directiveSplit = directive.split('=').map(d => d.trim());\n _set(_metaVars, directiveSplit[0].split('.'), directiveSplit[1] === 'true' \n ? true : (directiveSplit[1] === 'false' \n ? false : (_isNumeric(directiveSplit[1]) ? parseInt(directiveSplit[1]) : directiveSplit[1])\n )\n );\n return _metaVars;\n }, {});\n }\n\n // Read prop...\n metaInstance.get = function(prop) {\n return _get(this.vars, prop.split('.'));\n }\n\n // Write prop...\n metaInstance.set = function(prop, val = null, asDefaults = false) {\n var props = _isObject(prop) ? prop : {[prop]: val === true ? 'true' : val};\n asDefaults = arguments.length < 3 ? val : asDefaults;\n Object.keys(props).forEach(name => {\n if (props[name] === false) {\n _del(this.vars, name.split('.'));\n } else if (_isObject(props[name])) {\n Object.keys(props[name]).forEach(_prop => {\n var _path = (name + '.' + _prop).split('.');\n if (!asDefaults || !_has(this.vars, _path)) {\n _set(this.vars, _path, props[name][_prop]);\n }\n });\n } else {\n var _path = name.split('.');\n if (!asDefaults || !_has(this.vars, _path)) {\n _set(this.vars, _path, props[name]);\n }\n }\n });\n if (readWrite) {\n const flatten = (base, obj) => Object.keys(obj).reduce((arr, name) => {\n var path = (base ? base + '.' : '') + name;\n if (_isObject(obj[name])) {\n arr.push(...flatten(path, obj[name]));\n } else {\n arr.push(path + '=' + obj[name]);\n }\n return arr;\n }, []);\n this.el.setAttribute('content', flatten('', this.vars).join(';'));\n }\n return true;\n }\n\n // Write prop...\n metaInstance.defaults = function(prop, val = null) {\n return this.set(prop, val, true);\n };\n\n return metaInstance;\n}","\r\n/**\r\n * @imports\r\n */\r\nimport init from '../index.js';\r\nimport Reflow from './Reflow.js';\r\nimport Mutations from './Mutations.js';\r\nimport polyfill from './polyfills.js';\r\nimport query, { queryAll, querySelector, querySelectorAll } from './query.js';\r\nimport ready from './ready.js';\r\nimport meta from './meta.js';\r\n\r\n/**\r\n * ---------------------------\r\n * Ctxt-Scope initializations.\r\n * ---------------------------\r\n */\r\n\r\nexport default function() {\r\n const WebQit = init.call(this);\r\n if (WebQit.DOM) {\r\n return WebQit;\r\n }\r\n WebQit.DOM = {};\r\n polyfill(WebQit.window);\r\n WebQit.DOM.reflow = new Reflow(WebQit.window);\r\n WebQit.DOM.mutations = new Mutations(WebQit.window);\r\n WebQit.DOM.meta = meta.bind(WebQit.window);\r\n WebQit.DOM.query = query.bind(WebQit.window);\r\n WebQit.DOM.queryAll = queryAll.bind(WebQit.window);\r\n WebQit.DOM.ready = ready.bind(WebQit.window);\r\n // ------\r\n return WebQit;\r\n}\r\n\r\nexport {\r\n meta,\r\n query,\r\n queryAll,\r\n querySelector,\r\n querySelectorAll,\r\n ready,\r\n}","\r\n/**\r\n * Applies all supported polyfills\r\n */\r\nexport default function(window) {\r\n CSS_escape(window);\r\n Node_isConnected(window);\r\n Element_matches(window);\r\n}\r\n\r\n/**\r\n * Polyfills the window.CSS object.\r\n * \r\n * @return void\r\n */\r\nexport function CSS_escape(window) {\r\n if (!window.CSS) {\r\n window.CSS = {};\r\n }\r\n if (!window.CSS.escape) {\r\n /**\r\n * Polyfills the window.CSS.escape() function.\r\n * \r\n * @param string str \r\n * \r\n * @return string\r\n */\r\n window.CSS.escape = str => str.replace(/([\\:@\\~\\$\\&])/g, '\\\\$1');\r\n }\r\n}\r\n\r\n/**\r\n * Polyfills the Node.prototype.isConnected property\r\n * \r\n * @see MDN\r\n * \r\n * @return bool\r\n*/\r\nexport function Node_isConnected(window) {\r\n if (!('isConnected' in window.Node.prototype)) {\r\n Object.defineProperty(window.Node.prototype, 'isConnected', {get: function() {\r\n return !this.ownerDocument || !(\r\n this.ownerDocument.compareDocumentPosition(this)\r\n & this.DOCUMENT_POSITION_DISCONNECTED);\r\n }});\r\n }\r\n}\r\n\r\n/**\r\n * Polyfills the Element.prototype.matches() method\r\n * \r\n * @see MDN\r\n * \r\n * @return void\r\n*/\r\nexport function Element_matches(window) {\r\n if (!window.Element.prototype.matches) {\r\n window.Element.prototype.matches = \r\n window.Element.prototype.matchesSelector || \r\n window.Element.prototype.mozMatchesSelector ||\r\n window.Element.prototype.msMatchesSelector || \r\n window.Element.prototype.oMatchesSelector || \r\n window.Element.prototype.webkitMatchesSelector ||\r\n function(s) {\r\n var matches = (this.document || this.ownerDocument).querySelectorAll(s),\r\n i = matches.length;\r\n while (--i >= 0 && matches.item(i) !== this) {}\r\n return i > -1; \r\n };\r\n }\r\n}","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isObject from '../js/isObject.js';\nimport _isNumeric from '../js/isNumeric.js';\n\n/**\n * Flattens a nested array to the given depth.\n *\n * @param array \tarr\n * @param int \t \tdepth\n * @param bool \t \twithObjects\n *\n * @return array\n */\nconst _flatten = function(arr, depth = 1, withObjects = true) {\n\tif (!_isNumeric(depth) || depth <= 0) {\n\t\treturn arr;\n\t};\n\tif (!_isArray(arr) && _isObject(arr) && withObjects) {\n\t\tarr = Object.values(arr);\n\t};\n\tif (!_isArray(arr)) {\n\t\treturn arr;\n\t};\n\treturn arr.reduce((acc, val) => _isArray(val) || (_isObject(val) && withObjects) \n\t\t? acc.concat(_flatten(!_isArray(val) ? Object.values(val) : val, depth - 1, withObjects)) \n\t\t: acc.concat(val), []);\n};\n\n/**\n * @exports\n */\nexport default _flatten;","\n/**\n * @imports\n */\nimport _isObject from './isObject.js';\n\n/**\n * Tells if an object is direct instance of Object.prototype.\n * Quite useful in differentiating native objects and class instances from plain objects ({}).\n *\n * @param object \tobj\n *\n * @return bool\n */\nexport default function(obj) {\n\treturn _isObject(obj) && Object.getPrototypeOf(obj) === Object.prototype;\n};\n","\n/**\n * Tells if val is undefined or is of type \"boolean\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val === true || val === false;\n};\n","\n/**\n * @imports\n */\nimport _isNumber from '../js/isNumber.js';\nimport _isArray from '../js/isArray.js';\nimport _isObject from '../js/isObject.js';\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isFunction from '../js/isFunction.js';\nimport _isPlainObject from '../js/isPlainObject.js';\nimport _compareCallback from './compareCallback.js';\n\n/**\n * Asserts (members of) the first value against (members of) subsequent values.\n * Assertion could be TRUE, FALSE, or custom.\n *\n * @param mixed \t\t\tobj1\n * @param mixed \t\t\tobj2\n * @param bool|function\t\tassertion\n * @param int\t\t\t\tdepth\n *\n * @return bool\n */\nconst _even = function(obj1, obj2, assertion = true, depth = 1) {\n\tif (_isArray(obj1) && _isArray(obj2) && obj1.length !== obj2.length) {\n\t\treturn !assertion;\n\t}\n\tif (_isObject(obj1) && _isObject(obj2)) {\n\t\tvar obj1Keys = Object.keys(obj1);\n\t\tvar obj2Keys = Object.keys(obj2);\n\t\tif (!obj1Keys.length && !obj2Keys.length) {\n\t\t\t// Objects that won't show keys must be compared by instance\n\t\t\t// Many native objects won't. So we can't judge by keys alone.\n\t\t\treturn _isPlainObject(obj1) && _isPlainObject(obj2) \n\t\t\t\t? assertion\n\t\t\t\t: (obj1 === obj2) === assertion;\n\t\t}\n\t\tif (!_even(obj1Keys, obj2Keys)) {\n\t\t\treturn !assertion;\n\t\t}\n\t}\n\tif (depth > 0 && ((_isArray(obj1) && _isArray(obj2)) || (_isObject(obj1) && _isObject(obj2)))) {\n\t\tvar result = _compareCallback(obj1, obj2, (v1, v2) => {\n\t\t\treturn _even(v1, v2, assertion, depth - 1);\n\t\t}, false/*netComparison*/, false/*contrast*/, true/*returnOnFirstFalse*/);\n\t\treturn _isArray(result) \n\t\t\t? result.length === obj1.length && result.length === obj2.length \n\t\t\t: (_isObject(result) && _isObject(obj1) \n\t\t\t\t? Object.keys(result).length === Object.keys(obj1).length && Object.keys(result).length === Object.keys(obj2).length \n\t\t\t\t: result);\n\t}\n\treturn _isFunction(assertion) ? assertion(obj1, obj2) : (\n\t\t_isNumber(obj1) && _isNumber(obj2) && isNaN(obj1) && isNaN(obj2) \n\t\t\t? assertion \n\t\t\t: (obj1 === obj2) === assertion\n\t);\n};\n\n/**\n * @exports\n */\nexport default _even;\n","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isObject from '../js/isObject.js';\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isBoolean from '../js/isBoolean.js';\nimport _each from './each.js';\n\n/**\n * Gets the match(es) between (members of) two values;\n * assertion optionally custom.\n *\n * @param mixed \t\t\tob1\n * @param mixed \t\t\tobj2\n * @param string|function\tassertion\n * @param bool\t\t\t\tnetComparison\n * @param bool\t\t\t\tcontrast\n * @param bool\t\t\t\treturnOnFirstFalse\n *\n * @return bool|array|object\n */\nexport default function(obj1, obj2, assertion = true, netComparison = true, contrast = false, returnOnFirstFalse = false) {\n\tif (_isArray(obj1) && _isArray(obj2)) {\n\t\tvar result = [];\n\t\tvar contn = true;\n\t\tobj1.forEach(v1 => {\n\t\t\tif (!contn) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar testPass = false;\n\t\t\t_each(obj2, (k, v2) => {\n\t\t\t\tif (!testPass || (netComparison && _isTypeObject(v1))) {\n\t\t\t\t\ttestPass = assertion(v1, v2);\n\t\t\t\t\tif ((_isArray(testPass) && !testPass.length) || (_isObject(testPass) && !Object.keys(testPass).length)) {\n\t\t\t\t\t\ttestPass = false;\n\t\t\t\t\t}\n\t\t\t\t\tif (_isTypeObject(testPass) && netComparison) {\n\t\t\t\t\t\t// Further recursions should use this testPass as v1\n\t\t\t\t\t\tv1 = testPass;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (_isTypeObject(testPass)) {\n\t\t\t\tresult.push(netComparison ? testPass : v1);\n\t\t\t} else if (!_isBoolean(testPass)) {\n\t\t\t\tresult.push(testPass);\n\t\t\t} else if ((contrast && !testPass) || (!contrast && testPass)) {\n\t\t\t\tresult.push(v1);\n\t\t\t} else if (returnOnFirstFalse) {\n\t\t\t\tcontn = false;\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n\t\n\tif (_isObject(obj1) && _isObject(obj2)) {\n\t\tvar result = {};\n\t\tvar contn = true;\n\t\tObject.keys(obj1).forEach(k => {\n\t\t\tif (!contn) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar testPass = assertion(obj1[k], obj2[k]);\n\t\t\tif ((_isArray(testPass) && !testPass.length) || (_isObject(testPass) && !Object.keys(testPass).length)) {\n\t\t\t\ttestPass = false;\n\t\t\t}\n\t\t\tif (_isTypeObject(testPass)) {\n\t\t\t\tresult[k] = netComparison ? testPass : obj1[k];\n\t\t\t} else if (!_isBoolean(testPass)) {\n\t\t\t\tresult[k] = testPass;\n\t\t\t} else if ((contrast && !testPass) || (!contrast && testPass)) {\n\t\t\t\tresult[k] = obj1[k];\n\t\t\t} else if (returnOnFirstFalse) {\n\t\t\t\tcontn = false;\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n};\n","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isFunction from '../js/isFunction.js';\nimport _mergeCallback from './mergeCallback.js';\n\n/**\n * Copies only properties of an object.\n *\n * @param object\t \tobj\n * @param array\t\t \tonly\n * @param array\t\t \texcept\n *\n * @return object\n */\nexport default function(obj, filter = []) {\n\treturn _mergeCallback([{}, obj], (key, obj1, obj2) => {\n\t\tif (!_isFunction(obj2[key])) {\n\t\t\treturn _isFunction(filter) ? filter(key) \n\t\t\t\t: (_isArray(filter) && filter.length ? filter.indexOf(key) > -1 : true);\n\t\t}\n\t}, false/*deepProps*/, false/*isReplace*/, false/*withSymbols*/);\n};\n","\n/**\n * @imports\n */\nimport _isString from '../js/isString.js';\nimport _isUndefined from '../js/isUndefined.js';\nimport _isFunction from '../js/isFunction.js';\nimport _arrFrom from '../arr/from.js';\nimport _flatten from '../arr/flatten.js';\nimport _first from '../arr/first.js';\nimport _last from '../arr/last.js';\nimport _merge from '../obj/merge.js';\nimport _even from '../obj/even.js';\nimport _copyPlain from '../obj/copyPlain.js';\n\n/**\n * --------------------------\n * TOKENIZER\n * --------------------------\n */\n\nexport default class Lexer {\n\n\t/**\n\t * Factory method.\n\t *\n\t * Handles caching.\n\t *\n\t * @see constructor()\n\t */\n\tstatic lex(str, delims, options = {}) {\n\t\tif (!_isString(str = str + '')) {\n\t\t\tthrow new Error('Argument1 must be a string!');\n\t\t}\n\t\tvar copyResult = result => {\n\t\t\treturn {\n\t\t\t\tdelims: result.delims.slice(),\n\t\t\t\toptions: _copyPlain(result.options),\n\t\t\t\tnesting: result.nesting.slice(),\n\t\t\t\tmaxDepth: result.maxDepth,\n\t\t\t\tcomments: result.comments.slice(),\n\t\t\t\ttokens: result.tokens.slice(),\n\t\t\t\tmatches: result.matches.slice(),\n\t\t\t\tmatchesi: _copyPlain(result.matchesi),\n\t\t\t};\n\t\t};\n\t\t// ASK CACHE ---------------------------\n\t\tif (Lexer.$cache[str] && options.cache !== false) {\n\t\t\tfor (var i = 0; i < Lexer.$cache[str].length; i ++) {\n\t\t\t\tvar cached = Lexer.$cache[str][i];\n\t\t\t\tif (_even(cached.delims, delims)) {\n\t\t\t\t\treturn copyResult(cached);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// FRESH PARSE\t -------------------------------\n\t\tvar instance = new Lexer(str, options);\n\t\tvar result = instance.lex(delims);\n\t\t// SAVE TO CACHE -------------------------------\n\t\tif (options.cache !== false) {\n\t\t\tLexer.$cache[str] = Lexer.$cache[str] || [];\n\t\t\tLexer.$cache[str].push(result);\n\t\t}\n\t\treturn copyResult(result);\n\t\t\n\t}\n\n\t/**\n\t * Factory method for .split().\n\t *\n\t * Handles caching.\n\t *\n\t * @see constructor()\n\t */\n\tstatic split(str, delims, options) {\n\t\treturn Lexer.lex(str, delims, options).tokens;\n\t}\n\n\t/**\n\t * Factory method for .match().\n\t *\n\t * Handles caching.\n\t *\n\t * @see constructor()\n\t */\n\tstatic match(str, delims, options) {\n\t\treturn Lexer.lex(str, delims, options).matches;\n\t}\n\n\t/**\n\t * Creates a lexer instance on a string with the given options.\n\t *\n\t * @param string \tstr\n\t * @param object\toptions:\n\t * @param string \t\tblocks\t\t\t\tThe strings that begin and end a nested structure\n\t * @param number \t\tlimit\t\t\t\tMax results to return\n\t * @param string \t\tbackreference\t\tA character like (\\) that prefixes non-delim characters\n\t *\n\t * @return array\n\t */\n\tconstructor(str, options) {\n\t\tif (!_isString(str)) {\n\t\t\tthrow new Error('Lexer requires the first argument to be a string.');\n\t\t}\n\t\tthis.$str = str;\n\t\tthis.$options = options || {};\n\t\tif (!this.$options.blocks) {\n\t\t\tthis.$options.blocks = Lexer.$blocks;\n\t\t}\n\t\tif (!this.$options.quotes) {\n\t\t\tthis.$options.quotes = Lexer.$quotes;\n\t\t}\n\t\tif (!this.$options.comments) {\n\t\t\tthis.$options.comments = Lexer.$comments;\n\t\t}\n\t}\n\n\t/**\n\t * Parses the instance string on the given delimeters.\n\t *\n\t * This method supports static calling,\n\t * in which case a string is required as the first argument.\n\t *\n\t * @param string \tstr\n\t * @param object\toptions\n\t *\n\t * @return object\n\t */\n\tlex(delims, options) {\n\t\tvar runtime = {\n\t\t\tdelims: _arrFrom(delims),\n\t\t\toptions: _merge(true, {}, this.$options, options || {}),\n\t\t\tnesting: [],\n\t\t\tmaxDepth: 0,\n\t\t\tcomments: [],\n\t\t\ttokens: [],\n\t\t\tmatches: [],\n\t\t\tmatchesi: {},\n\t\t};\n\t\t// Iterate over each character, keep track of current row and column (of the returned array)\n\t\tvar cursor = 0;\n\t\twhile(typeof cursor === 'number') {\n\t\t\tcursor = this._evalCharsAt(runtime, cursor);\n\t\t}\n\t\tif (runtime.nesting.length) {\n\t\t\tthrow new Error('Error parsing the string: ' + this.$str + '. Unterminated blocks: ' + _flatten(runtime.nesting).join(', ') + '');\n\t\t}\n\t\t// RETURN NEW ----------------------------------\n\t\treturn runtime;\n\t}\n\n\t/**\n\t * Expr helper: evaluates and handles the character on the current cursor.\n\t * Advances the cursor.\n\t *\n\t * @param object \truntime\n\t * @param int\t\ti\n\t *\n\t * @return void\n\t */\n\t_evalCharsAt(runtime, i) {\n\t\tif (i >= this.$str.length) {\n\t\t\treturn;\n\t\t}\n\t\tvar charWidth = 1;\n\t\tvar commentTest = {}, quoteTest = {}, nestingTest = {};\n\t\t// Quotes inside comments must be ignored\n\t\tif (!runtime.openComment) {\n\t\t\tquoteTest = this._testQuotes(runtime, i);\n\t\t}\n\t\t// Comments inside quotes must be ignored\n\t\tif (!runtime.openQuote) {\n\t\t\tcommentTest = this._testComments(runtime, i);\n\t\t}\n\t\t// Save comments\n\t\tif (runtime.openComment || commentTest.ending) {\n\t\t\t// Save only outer comments\n\t\t\tif (!runtime.nesting.length && !nestingTest.ending) {\n\t\t\t\tvar chars = commentTest.starting || commentTest.ending || this.$str[i];\n\t\t\t\tcharWidth = chars.length;\n\t\t\t\tthis._push(runtime, chars, 'comments', commentTest.starting);\n\t\t\t} else {\n\t\t\t\tthis._push(runtime, this.$str[i]);\n\t\t\t}\n\t\t} else if (runtime.openQuote || quoteTest.ending) {\n\t\t\t// Yes add quotes\n\t\t\tthis._push(runtime, this.$str[i]);\n\t\t} else if (runtime.options.limit && runtime.matches.length === runtime.options.limit) {\n\t\t\tthis._push(runtime, this.$str[i]);\n\t\t\treturn i + 1;\n\t\t} else {\n\t\t\t// Nesting tags inside comments and quotes have been ignored\n\t\t\tnestingTest = this._testNesting(runtime, i);\n\t\t\t// ---------------------\n\t\t\t// STOP ON THIS CHARACTER...?\n\t\t\t// ---------------------\n\t\t\tvar nestingTest = this._testNesting(runtime, i);\n\t\t\t// STOP CHAR(S)? at top level?\n\t\t\tvar stopChar = this._testChars(runtime.options.stopChars || [], runtime, i);\n\t\t\tif (!runtime.nesting.length && stopChar !== false) {\n\t\t\t\truntime.options.stopChar = stopChar;\n\t\t\t\truntime.options.stopCharForward = this.$str.substr(i);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// ---------------------\n\t\t\t// Match and split now...\n\t\t\t// ---------------------\n\t\t\tif (!runtime.delims.length) {\n\t\t\t\t// BLOCK-BASED SPLITTING...\n\t\t\t\tif (runtime.nesting.length === 2 && nestingTest.starting) {\n\t\t\t\t\truntime.matches.push(null);\n\t\t\t\t\tthis._push(runtime, nestingTest.starting);\n\t\t\t\t\tcharWidth = nestingTest.starting.length;\n\t\t\t\t} else if (!runtime.nesting.length && nestingTest.ending) {\n\t\t\t\t\tthis._push(runtime, nestingTest.ending);\n\t\t\t\t\tcharWidth = nestingTest.ending.length;\n\t\t\t\t\truntime.matches.push(null);\n\t\t\t\t} else/*no-nesting flag*/ {\n\t\t\t\t\tthis._push(runtime, this.$str[i]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// ---------------------\n\t\t\t\t// DELIMS-BASED SPLITTING\n\t\t\t\t// ---------------------\n\t\t\t\tif (!runtime.nesting.length && !nestingTest.ending) {\n\t\t\t\t\t// In case the chars at index 0 is a delim,\n\t\t\t\t\t// the resulting split should first have an empty string, instead of undefined\n\t\t\t\t\tthis._push(runtime, '');\n\t\t\t\t\tvar matchedDelim = this._testChars(runtime.delims, runtime, i);\n\t\t\t\t\tif (matchedDelim !== false) {\n\t\t\t\t\t\truntime.matches.push(matchedDelim);\n\t\t\t\t\t\truntime.matchesi[i] = matchedDelim;\n\t\t\t\t\t\tcharWidth = matchedDelim.length || 1;\n\t\t\t\t\t\tif (!runtime.options.preserveDelims) {\n\t\t\t\t\t\t\t// The current character is a delimiter...\n\t\t\t\t\t\t\t// and should not get to appending to the split series down the line\n\t\t\t\t\t\t\tvar nextIndex = i + (matchedDelim.length || 1);\n\t\t\t\t\t\t\tif (nextIndex === this.$str.length) {\n\t\t\t\t\t\t\t\t// In case the chars at last index is a delim,\n\t\t\t\t\t\t\t\t// the resulting split should last have an empty string\n\t\t\t\t\t\t\t\tthis._push(runtime, '');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn nextIndex;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis._push(runtime, matchedDelim || this.$str[i]);\n\t\t\t\t} else {\n\t\t\t\t\tvar chars = nestingTest.starting || nestingTest.ending || this.$str[i];\n\t\t\t\t\tcharWidth = chars.length;\n\t\t\t\t\tthis._push(runtime, chars);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn i + charWidth;\n\t}\n\n\t/**\n\t * Expr helper: tests for a quote start/end character on the current cursor.\n\t *\n\t * @param object\truntime\n\t * @param int\t\ti\n\t *\n\t * @return object\n\t */\n\t_testQuotes(runtime, i) {\n\t\tvar result = {};\n\t\t(runtime.options.quotes || []).forEach(quote => {\n\t\t\tif (this.$str.substr(i, 1) === quote) {\n\t\t\t\tif (!runtime.openQuote) {\n\t\t\t\t\truntime.openQuote = quote;\n\t\t\t\t\tresult.starting = quote;\n\t\t\t\t} else if (quote === runtime.openQuote) {\n\t\t\t\t\truntime.openQuote = false;\n\t\t\t\t\tresult.ending = quote;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n\n\t/**\n\t * Expr helper: tests for a comment start/end character on the current cursor.\n\t *\n\t * @param object\truntime\n\t * @param int\t\ti\n\t *\n\t * @return object\n\t */\n\t_testComments(runtime, i) {\n\t\tvar result = {};\n\t\t(runtime.options.comments || []).forEach(block => {\n\t\t\tif (!runtime.openComment) {\n\t\t\t\tvar starting = _first(block);\n\t\t\t\tif (this.$str.substr(i).startsWith(starting)) {\n\t\t\t\t\truntime.openComment = block;\n\t\t\t\t\tresult.starting = starting;\n\t\t\t\t}\n\t\t\t} else if (_last(block) === _last(runtime.openComment)) {\n\t\t\t\tvar ending = _last(block);\n\t\t\t\tif (this.$str.substr(i).startsWith(ending)) {\n\t\t\t\t\truntime.openComment = false;\n\t\t\t\t\tresult.ending = ending;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n\n\t/**\n\t * Expr helper: tests for a nesting start/end character on the current cursor.\n\t *\n\t * @param object\truntime\n\t * @param int\t\ti\n\t *\n\t * @return object\n\t */\n\t_testNesting(runtime, i) {\n\t\tvar result = {};\n\t\t(runtime.options.blocks || []).forEach(block => {\n\t\t\tvar starting = _first(block);\n\t\t\tif (this.$str.substr(i).startsWith(starting)) {\n\t\t\t\truntime.nesting = runtime.nesting.concat([block]);\n\t\t\t\tresult.starting = starting;\n\t\t\t} else if (runtime.nesting.length && _last(block) === _last(_last(runtime.nesting))) {\n\t\t\t\tvar ending = _last(block);\n\t\t\t\tif (this.$str.substr(i).startsWith(ending)) {\n\t\t\t\t\truntime.nesting = runtime.nesting.slice(0, -1);\n\t\t\t\t\tresult.ending = ending;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\truntime.maxDepth = Math.max(runtime.maxDepth, runtime.nesting.length);\n\t\treturn result;\n\t}\n\n\t/**\n\t * Expr helper: tests for a delimiter or stop character on the current cursor.\n\t *\n\t * @param array\t\ttestList\n\t * @param object \truntime\n\t * @param int\t\ti\n\t *\n\t * @return mixed\n\t */\n\t_testChars(testList, runtime, i) {\n\t\tfor (var k = 0; k < testList.length; k ++) {\n\t\t\tvar test = testList[k];\n\t\t\tif (_isFunction(test)) {\n\t\t\t\tvar ret = test(this.$str.substr(0, i), this.$str.substr(i), runtime.tokens.slice());\n\t\t\t\tif (ret !== false) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (runtime.options.useRegex) {\n\t\t\t\tvar m = this.$str.substr(i).match(new RegExp('^' + test, runtime.options.useRegex !== true ? runtime.options.useRegex : ''));\n\t\t\t\tif (m) {\n\t\t\t\t\treturn m[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ((!runtime.options.ci && this.$str.substr(i, test.length) === test)\n\t\t\t|| (runtime.options.ci && this.$str.substr(i, test.length).toLowerCase() === test.toLowerCase())) {\n\t\t\t\treturn test;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\t\n\t/**\n\t * Expr helper: pushes a character or set of characters into the current split series.\n\t *\n\t * @param object \truntime\n\t * @param string\tchars\n\t * @param string\ttarget\n\t * @param bool\t\tisNewSeries\n\t *\n\t * @return void\n\t */\n\t_push(runtime, chars, target = 'tokens', isNewSeries = false) {\n\t\tvar splitSeries = runtime.matches.length;\n\t\tif (_isUndefined(runtime.tokens[splitSeries])) {\n\t\t\truntime.tokens[splitSeries] = '';\n\t\t}\n\n\t\tif (target === 'comments') {\n\t\t\tif (!runtime.tokens[splitSeries].comments) {\n\t\t\t\truntime.tokens[splitSeries] = new String(runtime.tokens[splitSeries]);\n\t\t\t\truntime.tokens[splitSeries].comments = [];\n\t\t\t}\n\t\t\tvar splitSeries2 = runtime.tokens[splitSeries].comments.length - (!runtime.tokens[splitSeries].comments.length || isNewSeries ? 0 : 1);\n\t\t\truntime.tokens[splitSeries].comments[splitSeries2] = (runtime.tokens[splitSeries].comments[splitSeries2] || '') + chars;\n\t\t} else {\n\t\t\tvar comments = runtime.tokens[splitSeries].comments;\n\t\t\truntime.tokens[splitSeries] = runtime.tokens[splitSeries] + chars;\n\t\t\t//runtime.tokens[splitSeries].comments = comments;\n\t\t}\n\t}\n\n\t/**\n\t * Splits the instance string on the given delimeters and returns the tokens.\n\t *\n\t * @param string \tstr\n\t * @param object\toptions\n\t *\n\t * @return array\n\t */\n\tsplit(str, delims, options) {\n\t\treturn this.lex(delims, options).tokens;\n\t}\n\t\n\t/**\n\t * Splits the instance string on the given delimeters and returns the matches.\n\t *\n\t * @param string \tstr\n\t * @param object\toptions:\n\t *\n\t * @return array\n\t */\n\tmatch(str, delims, options) {\n\t\treturn this.lex(delims, options).matches;\n\t}\n\t\n\t/**\n\t * Parses the instance string on the given delimeters using regex.\n\t *\n\t * @param string \tstr\n\t * @param object\toptions\n\t *\n\t * @return object\n\t */\n\tregParse(delims, options) {\n\t\treturn this.lex(delims, _merge({useRegex: true}, options || {}));\n\t}\n\t\n\t/**\n\t * Splits the instance string on the given delimeters using regex; returns the tokens.\n\t *\n\t * @param string \tstr\n\t * @param object\toptions\n\t *\n\t * @return array\n\t */\n\tregSplit(delims, options) {\n\t\treturn this.regParse(delims, options).tokens;\n\t}\n\t\n\t/**\n\t * Matches the instance string on the given delimeters using regex; returns the matches.\n\t *\n\t * @param string \tstr\n\t * @param object\toptions\n\t *\n\t * @return array\n\t */\n\tregMatch(delims, options) {\n\t\treturn this.regParse(delims, options).matches;\n\t}\n};\n\n/**\n * @var array\n */\nLexer.$blocks = [['(', ')'], ['[', ']'], ['{', '}'],];\n\n/**\n * @var array\n */\nLexer.$quotes = ['\"', \"'\", '`',];\n\n/**\n * @var array\n */\nLexer.$comments = [['/*', '*/'], ['//', \"\\n\"],];\n\n/**\n * @var object\n */\nLexer.$cache = Object.create(null);","\n/**\n * @imports\n */\nimport domInit from '@webqit/browser-pie/src/dom/index.js';\nimport { _wrapped, _unwrap, _before, _after } from '@webqit/util/str/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _internals }from '@webqit/util/js/index.js';\nimport { _merge } from '@webqit/util/obj/index.js';\nimport Lexer from '@webqit/util/str/Lexer.js';\n\n/**\n * A OOHTML's meta tag props reader.\n * \n * @param Object defaults\n * \n * @return Object\n */\nexport function config(defaults, overrides = {}) {\n const WebQit = domInit.call(this);\n if (!WebQit.OOHTML) {\n // For feature modules that will call outside of ./index.js module\n WebQit.OOHTML = {};\n }\n if (!WebQit.OOHTML.meta) {\n WebQit.OOHTML.meta = WebQit.DOM.meta('oohtml', true/* readWrite */);\n }\n WebQit.OOHTML.meta.defaults(_merge(3, defaults, overrides));\n return WebQit.OOHTML.meta;\n}\n\n/**\n * Runs a \"scope-query\" against a context.\n *\n * @param Array\t contexts\n * @param String\tquery\n * @param Function\tcollectionCallback\n * @param Function\tadvancementCallback\n *\n * @return Array\n */\nexport function scopeQuery(contexts, query, collectionCallback, advancementCallback = null) {\n var queryPath = query.split('#')[0].split('/').map(n => n.trim()).filter(n => n);\n return execScopeQuery(contexts, queryPath, collectionCallback, advancementCallback);\n}\n\n/**\n * Parses a \"scope-query\" reference expression to seperate the \"reference\" and its \"modifiers\".\n *\n * @param String\texpr\n *\n * @return Array\n */\nexport function parseScopeReferenceExpr(reference) {\n var split = Lexer.split(reference.trim(), [':']);\n reference = split.shift();\n var modifiers = split.reduce((_modifiers, _modifier) => {\n var [ name, parentheses ] = Lexer.split(_modifier.trim(), []);\n _modifiers[name] = _unwrap(parentheses, '(', ')');\n return _modifiers;\n }, {});\n return [ reference, modifiers ];\n}\n\n/**\n * Determines if a given path matches a \"scope-query\".\n *\n * @param String\tquery\n * @param String\tpath\n *\n * @return Bool\n */\nexport function queryMatchPath(query, path) {\n path = path.split('#')[0].split('/').map(n => n.trim()).filter(n => n);\n query = query.split('#')[0].split('/').map(n => n.trim()).filter(n => n);\n return !query.length ? false : query.reduce((prev, segment, i) => {\n if (!prev) return false;\n return Lexer.split(segment.trim(), ['|', '+']).reduce((_prev, _reference) => {\n var [ _reference, modifiers ] = parseScopeReferenceExpr(_reference);\n _reference = _reference.trim();\n var sementIsMatch = _reference === path[i];\n if (!sementIsMatch && (('deep' in modifiers) || ('deepest' in modifiers))) {\n var _sementIsMatch = path.slice(i + 1).reduce((prev, s, i) => {\n return prev > -1 && ('deep' in modifiers) ? prev : (s === _reference ? i : prev);\n }, -1);\n if (_sementIsMatch > -1) {\n var e = path.splice(i, _sementIsMatch + 1);\n sementIsMatch = true;\n }\n }\n return _prev || sementIsMatch;\n }, false);\n }, true);\n}\n\nconst evalAssertExpr = (segment, callback) => {\n return Lexer.split(segment.trim(), ['|', '+'], { preserveDelims: true }).reduce((_result, _reference) => {\n var operator;\n if (_reference.startsWith('|') || _reference.startsWith('+')) {\n operator = _reference.substr(0, 1);\n _reference = _reference.substr(1).trim();\n }\n if (_result.theEnd || (operator === '|' && _result.length)) {\n _result.theEnd = true;\n return _result;\n }\n return _result.concat(callback(_reference.trim()));\n }, []).filter(t => t);\n};\n\nconst evalModuleExpr = (contexts, segment, collectionCallback) => {\n const lookAhead = contexts => contexts.reduce((_list, _module) => _list.concat(...collectionCallback(_module).values()), []);\n return evalAssertExpr(segment, _reference => {\n var [ _reference, modifiers ] = parseScopeReferenceExpr(_reference);\n // ------------\n return contexts.reduce((list, context) => {\n var collection = collectionCallback(context);\n if (_reference === '*') {\n _reference = '(' + collection.keys().join('+') + ')';\n }\n var itemArray = _wrapped(_reference, '(', ')') ? evalModuleExpr([context], _unwrap(_reference, '(', ')'), collectionCallback) : _arrFrom(collection.get(_reference), false);\n // ------------\n var appliedModifiers = [], reapplyAppliedModifiers = expr => `${expr}${appliedModifiers.map(m => `:${m}(${modifiers[m]})`).join('')}`;\n Object.keys(modifiers).forEach(modifier => {\n if (modifier === 'deep' || modifier === 'deepest') {\n var nextLevel = [context];\n while ((modifier === 'deepest' || !itemArray.length) && (nextLevel = lookAhead(nextLevel)).length) {\n var _itemArray = evalModuleExpr(nextLevel, reapplyAppliedModifiers(_reference), collectionCallback);\n if (_itemArray.length) {\n itemArray = _itemArray;\n }\n }\n } else {\n if (modifier === 'having' || modifier === 'not-having') {\n itemArray = itemArray.filter(module => {\n var filterHavingsResult = evalAssertExpr(modifiers[modifier], _filterHavings => collectionCallback(module, _filterHavings));\n return modifier === 'not-having' ? !filterHavingsResult.length : filterHavingsResult.length;\n }); \n }\n appliedModifiers.push(modifier);\n }\n });\n return list.concat(itemArray);\n }, []);\n });\n};\n\nconst execScopeQuery = function(contexts, path, collectionCallback, advancementCallback = null, level = 0) {\n\n if (!path.length) {\n return [];\n }\n\n var segment = path.shift(), isStopSegmentIfCount;\n if (segment.endsWith('.')) {\n isStopSegmentIfCount = true;\n segment = segment.substr(0, segment.length - 1).trim();\n }\n // -----------\n var modules = evalModuleExpr(contexts, segment, collectionCallback);\n // -----------\n if (modules.length && isStopSegmentIfCount) {\n return modules;\n }\n // -----------\n if (path.length) {\n var submodules = execScopeQuery(modules, path.slice(), collectionCallback, advancementCallback, level + 1);\n if (submodules === -1) {\n return advancementCallback(modules, level, true);\n }\n return submodules;\n }\n\n return advancementCallback ? advancementCallback(modules, level) : modules;\n};\n","\n/**\n * @imports\n */\nimport Observer from '@webqit/observer';\nimport { _any, _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _isString, _internals } from '@webqit/util/js/index.js';\nimport domInit from '@webqit/browser-pie/src/dom/index.js';\nimport { config } from '../util.js';\n\n/**\n * ---------------------------\n * Namespaced HTML\n * ---------------------------\n */\t\t\t\t\n\n/**\n * @init\n * \n * @param Object config\n */\nexport default function init( _config = {} ) {\n\n const WebQit = domInit.call( this );\n if ( _config.onDomReady ) {\n WebQit.DOM.ready( () => {\n init.call( this, { ..._config, onDomReady: false } );\n } );\n return;\n }\n\n const window = WebQit.window;\n const document = WebQit.window.document;\n const mutations = WebQit.DOM.mutations;\n\n\tconst scopedIdInertContexts = [];\n const _meta = config.call(this, {\n\t\tattr: {\n namespace: 'namespace',\n id: 'id',\n },\n api: {\n namespace: 'namespace',\n },\n\t\teagermode: true,\n }, _config.params );\n\t\n const getNamespaceObject = function(subject) {\n if (!_internals(subject, 'oohtml').has('namespace')) {\n const namespaceObject = Object.create(null);\n _internals(subject, 'oohtml').set('namespace', namespaceObject);\n if (Observer.link) {\n Observer.link(subject, _meta.get('api.namespace'), namespaceObject);\n }\n }\n return _internals(subject, 'oohtml').get('namespace');\n\t};\n\t\n const getPublicNamespaceObject = function(subject) {\n if (!_internals(subject, 'oohtml').has('publicNamespace')) {\n const namespaceObject = getNamespaceObject(subject);\n _internals(subject, 'oohtml').set('publicNamespace', !_meta.get('eagermode') ? namespaceObject : new Proxy(namespaceObject, {\n\t\t\t\tget(target, name) {\n\t\t\t\t\tif (_isString(name) && !namespaceObject[name]) {\n\t\t\t\t\t\tvar node = _arrFrom(subject.querySelectorAll('[' + window.CSS.escape(_meta.get('attr.id')) + '=\"' + name + '\"]')).filter(node => {\n\t\t\t\t\t\t\tvar ownerRoot = node.parentNode.closest('[' + window.CSS.escape(_meta.get('attr.namespace')) + ']');\n\t\t\t\t\t\t\tif (subject === document) {\n\t\t\t\t\t\t\t\t// Only IDs without a scope actually belong to the document scope\n\t\t\t\t\t\t\t\treturn !ownerRoot;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn ownerRoot === subject;\n\t\t\t\t\t\t})[0];\n\t\t\t\t\t\tif (node) {\n\t\t\t\t\t\t\tObserver.set(namespaceObject, name, node);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn namespaceObject[name];\n\t\t\t\t}\n\t\t\t}));\n }\n return _internals(subject, 'oohtml').get('publicNamespace');\n\t};\n\n // ----------------------\n // Define the local \"namespace\" object\n // ----------------------\n\n\tif (_meta.get('api.namespace') in window.Element.prototype) {\n\t\tthrow new Error('The \"Element\" class already has a \"' + _meta.get('api.namespace') + '\" property!');\n\t}\n\tObject.defineProperty(window.Element.prototype, _meta.get('api.namespace'), {\n\t\tget: function() {\n\t\t\treturn getPublicNamespaceObject(this);\n\t\t}\n\t});\n\n // ----------------------\n // Define the global \"namespace\" object\n // ----------------------\n\n if (_meta.get('api.namespace') in document) {\n throw new Error('The \"document\" object already has a \"' + _meta.get('api.namespace') + '\" property!');\n }\n\tObject.defineProperty(document, _meta.get('api.namespace'), {\n\t\tget: function() {\n return getPublicNamespaceObject(document);\n\t\t}\n\t});\n\n\t// ----------------------\n\t// Capture scoped elements\n\t// ----------------------\n\n\tmutations.onPresent('[' + window.CSS.escape(_meta.get('attr.id')) + ']', el => {\n\t\tvar elOohtmlObj = _internals(el, 'oohtml');\n\t\tif (elOohtmlObj.get('idAlreadyBeingWatched') || _any(scopedIdInertContexts, inertContext => el.closest(inertContext))) {\n\t\t\treturn;\n\t\t}\n\t\tvar scopedId = el.getAttribute(_meta.get('attr.id')),\n\t\t\townerRoot = el.parentNode.closest('[' + window.CSS.escape(_meta.get('attr.namespace')) + ']');\n\t\tif (!ownerRoot) {\n\t\t\townerRoot = document;\n\t\t}\n\t\tvar namespaceObject = getNamespaceObject(ownerRoot);\n\t\tif (namespaceObject[scopedId] !== el) {\n\t\t\tObserver.set(namespaceObject, scopedId, el);\n\t\t}\n\t\t// new permanent watch\n\t\telOohtmlObj.set('idAlreadyBeingWatched', true);\n\t\tmutations.onPresenceChange(el, (els, presence) => {\n\t\t\tif (presence) {\n\t\t\t\t// ONLY if I am not currently the one in place\n\t\t\t\tif (namespaceObject[scopedId] !== el) {\n\t\t\t\t\tObserver.set(namespaceObject, scopedId, el);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// ONLY if I am still the one in place\n\t\t\t\tif (namespaceObject[scopedId] === el) {\n\t\t\t\t\tObserver.deleteProperty(namespaceObject, scopedId);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n};","\n/**\n * @imports\n */\nimport init from './index.js';\n\n/**\n * @init\n */\ninit.call( window );"],"names":["val","internals","obj","namespaces","globalThis","WebQitInternalsRegistry","Map","_ns","_itnls","itnls","get","set","shift","Array","isArray","toString","call","Number","isNaN","String","arguments","length","undefined","castObject","Object","keys","prototype","slice","values","equals","a","b","dotSafe","join","reduce","prev","value","i","arr","arr2","callback","filter","val1","val2","indexOf","paths2D","paths","pathsIs2D","multiple","path","concat","map","DotSafePath","resolve","static","every","v","includes","yes","pathsIsDynamic","pathArray","seg","Firebase","constructor","target","this","fireables","currentlyFiring","add","fireable","push","remove","_fireable","removeMatches","dfn","match","forEach","fireableFilter","fireableTags","params","tags","dfnFilter","dfnTags","originalHandler","handler","type","createIfNotExists","namespace","__namespace","Error","ImplementationClass","WebQitObserverNamespaceRegistry","has","name","Fireable","disconnect","disconnected","Interceptor","fire","event","next","recieved","returnValue","k","parseFloat","Action","key","defineProperty","enumerable","seal","Interceptors","super","action","defaultHandler","index","_args","interceptor","args","pop","_getFirebase","_namespace","payload","interceptors","_val","Reflect","getFirebase","thisArgument","argumentsList","_exec","newTarget","amount","count","itm","firsts","reverse","prevTest","startsWith","after","fromInex","last","subsetIndex","cursors","cursorA","cursorB","_cursorB","_cursors","Event","cancellable","_","propagationStopped","defaultPrevented","promisesInstance","promises","stopPropagation","preventDefault","waitUntil","promise","Promise","all","respondWith","rspns","proms","isEvent","Observer","filters2D","filtersIsOriginally2D","filtersIsDynamic","changes","delta","diff","oldValue","evt","matches","observerPathArray","observerPathArray_Resolved","_seg","subtree","suptree","changesObject","e","Mutation","originalSubject","Observers","buffers","d","observer","receiver","_keys","defaultGet","_value","touch","related","mergeCallback","objs","deepProps","isReplace","withSymbols","depth","obj1","obj2","until","keysAll","prototypalChain","getPrototypeOf","items","getOwnPropertyNames","valAtObj1","valAtObj2","getOwnPropertyDescriptor","existing","observers","isUserObject","build","unique","field","observe","eventObject","_changes","src","c","linkTag","_event","eventTypeReturn","_paths2D","rootLevelKeysToObserve","subLevelKeysToObserve","p","subBuild","_isFunction","Function","window","unobserve","define","keysOrPayload","handleSet","detail","descriptor","isUpdate","defaultSet","_success","restore","success","unlink","events","successfulEvents","successCount","_setOrDefine","defaultDel","apply","construct","deleteProperty","isExtensible","ownKeys","preventExtensions","setPrototypeOf","accessorize","successFlags","getDescriptorDeep","proto","altOriginalOwnDescriptor","activeIsAltOriginalOwnDescriptor","originalOwnDescriptor","writable","configurable","reactiveOwnDescriptor","controlObject","ongoingGets","newValue","ongoingSets","operation","intact","delete","attemptRestore","unaccessorize","proxy","Proxy","propertyKey","attributes","proxyAutoBinding","test","bind","unproxy","intercept","trap","returnObj","isOriginallyObj","unintercept","_isObject","closure","subjects","context","subjectCopy","result","fireDiffs","cntxt","initialKeys","currentKeys","self","buffered","then","link","_window","WebQit","_vendor","_prefix","getName","InstallTrigger","HTMLElement","safari","pushNotification","isChrome","chrome","webstore","runtime","isEdgeChromium","navigator","userAgent","isOpera","opr","addons","opera","isIE","document","documentMode","isEdge","StyleMedia","CSS","getPrefix","styles","getComputedStyle","documentElement","prefix","Olink","api","RegExp","css","Reflow","asyncDOM","async","readCallbacks","writeCallbacks","_run","requestAnimationFrame","onread","withPromise","reject","onwrite","cycle","read","write","prevTransaction","readReturn","callWrite","writeReturn","repeatTransaction","DOM","isDOMReady","readyState","domReadyCallbacks","addEventListener","splice","cb","Mutations","onAdded","els","on","onPresenceChange","el","presence","isTransient","addedState","removedState","onRemoved","onPresent","selector","MutationObserver","querySelectorAll","parentNode","onAbsent","Set","list","state","sourceArray","$$searchCache","_matches","nodeListArray","node","observeIndirectMutation","collection","search","maintainCallState","subject","_observe","removed__addedNodes","added__removedNodes","addedNodes","removedNodes","ignoreTransients","onAttrChange","attributeOldValue","attributeFilter","onTreeChange","childList","onMutation","MutationObserversCache","callbacks","mutations","size","mut","isConnected","_observer","reconnect","query","input","trim","temp","createElement","innerHTML","children","firstChild","querySelector","Element","queryAll","matchedItems","method","replace","ctxt","reciever","_ctxt","_key","exists","buildTree","_set","branch","reduceTree","lastKey","_obj","del","meta","readWrite","metaInstance","head","setAttribute","append","vars","getAttribute","split","_metaVars","directive","directiveSplit","parseInt","prop","asDefaults","props","_prop","_path","flatten","base","defaults","escape","str","CSS_escape","Node","ownerDocument","compareDocumentPosition","DOCUMENT_POSITION_DISCONNECTED","Node_isConnected","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","s","item","Element_matches","reflow","ready","_flatten","withObjects","acc","_even","assertion","obj1Keys","obj2Keys","netComparison","contrast","returnOnFirstFalse","contn","v1","testPass","v2","delims","options","copyResult","nesting","maxDepth","comments","tokens","matchesi","$cache","cache","cached","lex","$str","$options","blocks","$blocks","quotes","$quotes","$comments","cursor","_evalCharsAt","charWidth","commentTest","quoteTest","nestingTest","openComment","_testQuotes","openQuote","_testComments","ending","_push","chars","starting","limit","_testNesting","stopChar","_testChars","stopChars","stopCharForward","substr","matchedDelim","preserveDelims","nextIndex","quote","block","Math","max","testList","ret","useRegex","m","ci","toLowerCase","isNewSeries","splitSeries","splitSeries2","regParse","regSplit","regMatch","config","overrides","dom","OOHTML","create","init","_config","onDomReady","scopedIdInertContexts","_meta","attr","id","eagermode","getNamespaceObject","namespaceObject","getPublicNamespaceObject","ownerRoot","closest","elOohtmlObj","inertContext","scopedId"],"sourceRoot":""}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../node_modules/@webqit/util/js/isObject.js", "../node_modules/@webqit/util/js/getType.js", "../node_modules/@webqit/util/js/internals.js", "../node_modules/@webqit/util/js/isArray.js", "../node_modules/@webqit/util/js/isBoolean.js", "../node_modules/@webqit/util/js/isTypeFunction.js", "../node_modules/@webqit/util/js/isClass.js", "../node_modules/@webqit/util/js/isNull.js", "../node_modules/@webqit/util/js/isUndefined.js", "../node_modules/@webqit/util/js/isTypeObject.js", "../node_modules/@webqit/util/js/isEmpty.js", "../node_modules/@webqit/util/js/isFunction.js", "../node_modules/@webqit/util/js/isNumber.js", "../node_modules/@webqit/util/js/isNumeric.js", "../node_modules/@webqit/util/js/isPlainObject.js", "../node_modules/@webqit/util/js/isString.js", "../node_modules/@webqit/util/js/isTypeArray.js", "../node_modules/@webqit/util/arr/first.js", "../node_modules/@webqit/util/arr/last.js", "../node_modules/@webqit/util/arr/pushUnique.js", "../node_modules/@webqit/util/obj/getPrototypeChain.js", "../node_modules/@webqit/util/obj/getAllPropertyNames.js", "../node_modules/@webqit/util/obj/mergeCallback.js", "../node_modules/@webqit/util/obj/each.js", "../node_modules/@webqit/util/obj/merge.js", "../node_modules/@webqit/util/arr/indexOfSet.js", "../node_modules/@webqit/util/arr/after.js", "../node_modules/@webqit/util/arr/any.js", "../node_modules/@webqit/util/arr/from.js", "../node_modules/@webqit/util/arr/equals.js", "../node_modules/@webqit/util/arr/flatten.js", "../node_modules/@webqit/util/arr/intersect.js", "../node_modules/@webqit/util/arr/startsWith.js", "../node_modules/@webqit/util/arr/unique.js", "../node_modules/@webqit/observer/src/core/utils.js", "../node_modules/@webqit/observer/src/core/Firebase.js", "../node_modules/@webqit/observer/src/core/Fireable.js", "../node_modules/@webqit/observer/src/core/Interceptor.js", "../node_modules/@webqit/util/obj/compareCallback.js", "../node_modules/@webqit/util/obj/copy.js", "../node_modules/@webqit/util/obj/copyPlain.js", "../node_modules/@webqit/util/obj/even.js", "../node_modules/@webqit/observer/src/core/Action.js", "../node_modules/@webqit/observer/src/core/Interceptors.js", "../node_modules/@webqit/observer/src/actors/unproxy.js", "../node_modules/@webqit/observer/src/actions/_exec.js", "../node_modules/@webqit/observer/src/actions/apply.js", "../node_modules/@webqit/observer/src/actions/construct.js", "../node_modules/@webqit/observer/src/core/Event.js", "../node_modules/@webqit/observer/src/core/Observer.js", "../node_modules/@webqit/observer/src/core/Mutation.js", "../node_modules/@webqit/observer/src/core/Observers.js", "../node_modules/@webqit/observer/src/actions/get.js", "../node_modules/@webqit/observer/src/reactions/observe.js", "../node_modules/@webqit/observer/src/connectors/link.js", "../node_modules/@webqit/observer/src/connectors/build.js", "../node_modules/@webqit/observer/src/reactions/unobserve.js", "../node_modules/@webqit/observer/src/connectors/unlink.js", "../node_modules/@webqit/observer/src/actions/has.js", "../node_modules/@webqit/observer/src/actions/_setOrDefine.js", "../node_modules/@webqit/observer/src/actions/defineProperty.js", "../node_modules/@webqit/observer/src/actions/deleteProperty.js", "../node_modules/@webqit/observer/src/actions/getOwnPropertyDescriptor.js", "../node_modules/@webqit/observer/src/actions/getPrototypeOf.js", "../node_modules/@webqit/observer/src/actions/isExtensible.js", "../node_modules/@webqit/observer/src/actions/ownKeys.js", "../node_modules/@webqit/observer/src/actions/preventExtensions.js", "../node_modules/@webqit/observer/src/actions/set.js", "../node_modules/@webqit/observer/src/actions/setPrototypeOf.js", "../node_modules/@webqit/observer/src/actors/accessorize.js", "../node_modules/@webqit/observer/src/actors/unaccessorize.js", "../node_modules/@webqit/observer/src/actors/proxy.js", "../node_modules/@webqit/observer/src/reactions/intercept.js", "../node_modules/@webqit/observer/src/reactions/unintercept.js", "../node_modules/@webqit/observer/src/reactions/closure.js", "../node_modules/@webqit/observer/src/index.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isObject.js", "../node_modules/@webqit/browser-pie/src/vendor.js", "../node_modules/@webqit/browser-pie/src/index.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isTypeFunction.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isTypeObject.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isNumber.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isNumeric.js", "../node_modules/@webqit/browser-pie/src/dom/Reflow.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isString.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isArray.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isUndefined.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isTypeArray.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isNull.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isEmpty.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/arr/from.js", "../node_modules/@webqit/browser-pie/src/dom/ready.js", "../node_modules/@webqit/browser-pie/src/dom/Mutations.js", "../node_modules/@webqit/browser-pie/src/dom/polyfills.js", "../node_modules/@webqit/browser-pie/src/dom/query.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/js/isFunction.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/obj/get.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/obj/set.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/obj/del.js", "../node_modules/@webqit/browser-pie/node_modules/@webqit/util/obj/has.js", "../node_modules/@webqit/browser-pie/src/dom/meta.js", "../node_modules/@webqit/browser-pie/src/dom/index.js", "../node_modules/@webqit/util/str/Lexer.js", "../src/util.js", "../src/namespaced-html/index.js", "../src/namespaced-html/browser-entry.js"],
|
|
4
|
+
"sourcesContent": ["\n/**\n * Tells if val is pure object.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn !Array.isArray(val) && typeof val === 'object' && val;\n};\n", "\n/**\n * Returns the val's type.\n *\n * @param string \tval\n *\n * @return string\n */\nexport default function(val) {\n\treturn typeof val;\n};\n", "\n/**\n * Creates and/or returns an \"internals\" object for the given object.\n * \n * @param Any obj\n * @param String namespace\n * \n * @return Object\n */\nexport default function internals(obj, ...namespaces) {\n if (!globalThis.WebQitInternalsRegistry) {\n globalThis.WebQitInternalsRegistry = new Map;\n }\n var itnls = globalThis.WebQitInternalsRegistry.get(obj);\n if (!itnls) {\n itnls = new Map;\n if (namespaces[0] === false) {\n // FALSE means: Return orphan Map if not exists\n return itnls;\n }\n globalThis.WebQitInternalsRegistry.set(obj, itnls);\n }\n var _ns, _itnls;\n while ((_ns = namespaces.shift())) {\n if ((_itnls = itnls) && !(itnls = itnls.get(_ns))) {\n itnls = new Map;\n if (namespaces[0] === false) {\n // FALSE means: Return orphan Map if not exists\n return itnls;\n }\n _itnls.set(_ns, itnls);\n }\n }\n return itnls;\n}", "\n/**\n * Tells if val is of type \"array\".\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn Array.isArray(val);\n};\n", "\n/**\n * Tells if val is undefined or is of type \"boolean\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val === true || val === false;\n};\n", "\n/**\n * Tells if val is of type \"function\".\n * This holds true for both regular functions and classes.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn typeof val === 'function';\n};\n", "\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"class\".\n *\n * @param object \t\tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isTypeFunction(val) && /^class\\s?/.test(Function.prototype.toString.call(val));\n};\n", "\n/**\n * Tells if val is undefined or is null.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val === null || val === '';\n};\n", "\n/**\n * Tells if val is undefined or is of type \"undefined\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn arguments.length && (val === undefined || typeof val === 'undefined');\n};\n", "\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"object\".\n * This holds true for anything object, including built-ins.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn Array.isArray(val) || (typeof val === 'object' && val) || _isTypeFunction(val);\n};\n", "\n/**\n * @imports\n */\nimport _isNull from './isNull.js';\nimport _isUndefined from './isUndefined.js';\nimport _isTypeObject from './isTypeObject.js';\n\n/**\n * Tells if val is empty in its own type.\n * This holds true for NULLs, UNDEFINED, FALSE, 0,\n * objects without keys, empty arrays.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isNull(val) || _isUndefined(val) || val === false || val === 0 \n\t\t|| (_isTypeObject(val) && !Object.keys(val).length);\n};\n", "\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"function\".\n *\n * @param object \t\tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isTypeFunction(val) || (val && {}.toString.call(val) === '[object function]');\n};\n", "\n/**\n * Tells if val is of type \"number\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val instanceof Number || (typeof val === 'number');\n};\n", "\n/**\n * @imports\n */\nimport _isNumber from './isNumber.js';\n/**\n * Tells if val is of type \"string\" or a numeric string.\n * This holds true for both numbers and numeric strings.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isNumber(val) || (val !== true && val !== false && val !== null && val !== '' && !isNaN(val * 1));\n};\n", "\n/**\n * @imports\n */\nimport _isObject from './isObject.js';\n\n/**\n * Tells if an object is direct instance of Object.prototype.\n * Quite useful in differentiating native objects and class instances from plain objects ({}).\n *\n * @param object \tobj\n *\n * @return bool\n */\nexport default function(obj) {\n\treturn _isObject(obj) && Object.getPrototypeOf(obj) === Object.prototype;\n};\n", "\n/**\n * Tells if val is of type \"string\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val instanceof String || (typeof val === 'string' && val !== null);\n};\n", "\n/**\n * @imports\n */\nimport _isString from './isString.js';\nimport _isUndefined from './isUndefined.js';\n\n/**\n * Tells if val is \"array-like\".\n * This holds true for anything that has a length property.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn !_isString(val) && !_isUndefined(val.length);\n};\n", "\n/**\n * Returns THE FIRST ENTRY OR A NUMBER OF ENTRIES counting forward from the begining.\n *\n * @param array \tarr\n * @param int\t \tamount\n *\n * @return mixed|array\n */\nexport default function(arr, amount = 1) {\n\tvar count = 0;\n\tarr.forEach(itm => {\n\t\tcount ++;\n\t});\n\tvar firsts = arr.slice(arr.length - count, amount);\n\treturn arguments.length > 1 ? firsts : firsts[0];\n};\n", "\n/**\n * @imports\n */\nimport _first from './first.js';\n\n/**\n * Returns THE LAST ENTRY OR A NUMBER OF ENTRIES counting forward to the end.\n *\n * @param array \tarr\n * @param int\t \tamount\n *\n * @return mixed|array\n */\nexport default function(arr, amount = 1) {\n\treturn arguments.length > 1\n\t\t? _first(arr.slice().reverse(), amount).reverse()\n\t\t: _first(arr.slice().reverse());\n};\n", "\n/**\n * Adds an item if not already exist.\n *\n * @param array \tarr\n * @param array\t \t...itms\n *\n * @return array\n */\nexport default function(arr, ...items) {\n\titems.forEach(itm => {\n\t\tif (arr.indexOf(itm) < 0) {\n\t\t\tarr.push(itm);\n\t\t}\n\t});\n\treturn arr;\n};\n", "\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\n\n/**\n * Returns the prototype chain.\n *\n * @param object \t\tobj\n * @param object\t \tuntil\n *\n * @return bool\n */\nexport default function(obj, until) {\n\tuntil = until || Object.prototype;\n\tuntil = until && !_isArray(until) ? [until] : until;\n\t// We get the chain of inheritance\n\tvar prototypalChain = [];\n\tvar obj = obj;\n\twhile((obj && (!until || until.indexOf(obj) < 0) && obj.name !== 'default')) {\n\t\tprototypalChain.push(obj);\n\t\tobj = obj ? Object.getPrototypeOf(obj) : null;\n\t}\n\treturn prototypalChain;\n};\n", "\n/**\n * @imports\n */\nimport _pushUnique from '../arr/pushUnique.js';\nimport _getPrototypeChain from './getPrototypeChain.js';\n\n/**\n * Eagerly retrieves object members all down the prototype chain.\n *\n * @param object\t \tobj\n * @param object\t \tuntil\n *\n * @return array\n */\nexport default function(obj, until) {\n\tvar keysAll = [];\n\t_getPrototypeChain(obj, until).forEach(obj => {\n\t\t_pushUnique(keysAll, ...Object.getOwnPropertyNames(obj));\n\t});\n\treturn keysAll;\n};\n", "\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isFunction from '../js/isFunction.js';\nimport _isObject from '../js/isObject.js';\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isNumeric from '../js/isNumeric.js';\nimport _getAllPropertyNames from './getAllPropertyNames.js';\n\n/**\n * Merges values from subsequent arrays/objects first array/object;\n * optionally recursive\n *\n * @param array ...objs\n *\n * @return void\n */\nexport default function mergeCallback(objs, callback, deepProps = false, isReplace = false, withSymbols = false) {\n\tvar depth = 0;\n\tvar obj1 = objs.shift();\n\tif (_isNumeric(obj1) || obj1 === true || obj1 === false) {\n\t\tdepth = obj1;\n\t\tobj1 = objs.shift();\n\t}\n\tif (!objs.length) {\n\t\tthrow new Error('_merge() requires two or more array/objects.');\n\t}\n\tobjs.forEach((obj2, i) => {\n\t\tif (!_isTypeObject(obj2) && !_isFunction(obj2)) {\n\t\t\treturn;\n\t\t}\n\t\t(deepProps ? _getAllPropertyNames(obj2) : Object.getOwnPropertyNames(obj2)).forEach(key => {\n\t\t\tif (!callback(key, obj1, obj2, i)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar valAtObj1 = obj1[key];\n\t\t\tvar valAtObj2 = obj2[key];\n\t\t\tif (((_isArray(valAtObj1) && _isArray(valAtObj2)) || (_isObject(valAtObj1) && _isObject(valAtObj2))) \n\t\t\t&& (depth === true || depth > 0)) {\n\t\t\t\t// RECURSE...\n\t\t\t\tobj1[key] = _isArray(valAtObj1) && _isArray(valAtObj2) ? [] : {};\n\t\t\t\tmergeCallback([_isNumeric(depth) ? depth - 1 : depth, obj1[key], valAtObj1, valAtObj2], callback, deepProps, isReplace, withSymbols);\n\t\t\t} else {\n\t\t\t\tif (_isArray(obj1) && _isArray(obj2)) {\n\t\t\t\t\tif (isReplace) {\n\t\t\t\t\t\tobj1[key] = valAtObj2;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tobj1.push(valAtObj2);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// In case we're setting a read-only property\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (withSymbols) {\n\t\t\t\t\t\t\tObject.defineProperty(obj1, key, Object.getOwnPropertyDescriptor(obj2, key));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tobj1[key] = obj2[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\treturn obj1;\n};\n", "\n/**\n * @imports\n */\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isNumeric from '../js/isNumeric.js';\n\n/**\n * Loops thru obj flatly with a callback function.\n * Stops when callback returns a non-undefined value.\n *\n * @param array|object \t\t\tobj \t\t\tThe array or object to iterate.\n * @param function \t\t\t\tcallback \t\tThe callback function.\n *\n * @return mixed|null\t\t\tAny non-null return from callback\n */\nexport default function(obj, callback) {\n\tvar returnValue = undefined;\n\tif (_isTypeObject(obj)) {\n\t\tObject.keys(obj).forEach((k, i) => {\n\t\t\tif (returnValue !== false) {\n\t\t\t\treturnValue = callback(_isNumeric(k) ? parseFloat(k) : k, obj[k], i);\n\t\t\t}\n\t\t});\n\t}\n\treturn returnValue;\n};\n", "\n/**\n * @imports\n */\nimport _mergeCallback from './mergeCallback.js';\n\n/**\n * Merges values from subsequent arrays/objects first array/object;\n * optionally recursive\n *\n * @param array ...objs\n *\n * @return void\n */\nexport default function(...objs) {\n\treturn _mergeCallback(objs, (k, obj1, obj2) => {\n\t\treturn true;\n\t}, false/*deepProps*/, false/*isReplace*/, false/*withSymbols*/);\n};\n", "\n/**\n * Returns the index of subset array \"b\" in array \"a\".\n * \n * @param {Array} a \n * @param {Array} b \n * @param {Int} fromInex \n * @param {Bool} last\n * \n * @returns Int\n */\nexport default function indexOfSet(a, b, fromInex = null, last = false) {\n if (b.length > a.length) return -1;\n\treturn (typeof fromInex === 'number' ? (last ? a.slice(0, (fromInex + 1) + (fromInex < 0 ? a.length : 0)) : a.slice(fromInex)) : a).reduce((cursors, value, i) => {\n var [ index, cursorA, cursorB ] = cursors;\n if (!last && index > -1) {\n return [index, cursorA, cursorB];\n }\n var _cursorB = cursorB + 1;\n var _cursors = value === b[_cursorB] ? (_cursorB === 0 ? [i, 0] : [cursorA, _cursorB]) : [-1, -1];\n if (_cursors[1] === b.length - 1) {\n // Reset B cursor\n _cursors[1] = -1;\n if (_cursors[0] > -1) {\n return [_cursors[0]].concat(_cursors);\n }\n }\n return [index].concat(_cursors);\n }, [-1, -1, -1])[0] + (last || typeof fromInex !== 'number' ? 0 : (fromInex > -1 ? fromInex : a.length - fromInex));\n}", "\n/**\n * @imports\n */\nimport _after from '../str/after.js';\nimport _indexOfSet from './indexOfSet.js';\n\n/**\n * Returns members of array \"a\" after the array \"b\" subset.\n *\n * @param {Array} a \n * @param {Array} b \n * @param {Int} fromInex \n * @param {Bool} last \n * \n * @returns Bool\n */\nexport default function after(a, b, fromInex = null, last = false) {\n\tvar subsetIndex = _indexOfSet(a, b, fromInex, last);\n\treturn subsetIndex === -1 ? [] : a.slice(subsetIndex + b.length);\n}", "\n/**\n * Tells if ANY items pass the test.\n *\n * @param array \tarr\n * @param function \tcallback\n *\n * @return bool\n */\nexport default function(arr, callback) {\n\treturn arr.reduce((prevTest, itm, i) => prevTest || callback(itm, i), false);\n};\n", "\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isTypeArray from '../js/isTypeArray.js';\nimport _isEmpty from '../js/isEmpty.js';\nimport _isObject from '../js/isObject.js';\n\n/**\n * Casts an array-like object to an array.\n *\n * @param mixed \tval\n * @param bool\t \tcastObject\n *\n * @return array\n */\nexport default function(val, castObject = true) {\n\tif (_isArray(val)) {\n\t\treturn val;\n\t};\n\tif (!castObject && _isObject(val)) {\n\t\treturn [val];\n\t};\n\tif (val !== false && val !== 0 && _isEmpty(val)) {\n\t\treturn [];\n\t};\n\tif (_isTypeArray(val)) {\n\t\treturn Array.prototype.slice.call(val);\n\t};\n\tif (_isObject(val)) {\n\t\treturn Object.values(val);\n\t};\n\treturn [val];\n};\n", "\n/**\n * Tells if two arrays are shallow equals.\n * \n * @param {Array} a \n * @param {Array} b \n * @param {Bool} dotSafe\n * \n * @returns Bool\n */\nexport default function equals(a, b, dotSafe = null) {\n\treturn dotSafe || (dotSafe !== false && a.dotSafe && b.dotSafe) \n\t\t? a.join('.') === b.join('.') \n\t\t: a.length === b.length && a.reduce((prev, value, i) => prev && value === b[i], true);\n}", "\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isObject from '../js/isObject.js';\nimport _isNumeric from '../js/isNumeric.js';\n\n/**\n * Flattens a nested array to the given depth.\n *\n * @param array \tarr\n * @param int \t \tdepth\n * @param bool \t \twithObjects\n *\n * @return array\n */\nconst _flatten = function(arr, depth = 1, withObjects = true) {\n\tif (!_isNumeric(depth) || depth <= 0) {\n\t\treturn arr;\n\t};\n\tif (!_isArray(arr) && _isObject(arr) && withObjects) {\n\t\tarr = Object.values(arr);\n\t};\n\tif (!_isArray(arr)) {\n\t\treturn arr;\n\t};\n\treturn arr.reduce((acc, val) => _isArray(val) || (_isObject(val) && withObjects) \n\t\t? acc.concat(_flatten(!_isArray(val) ? Object.values(val) : val, depth - 1, withObjects)) \n\t\t: acc.concat(val), []);\n};\n\n/**\n * @exports\n */\nexport default _flatten;", "\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\n\n/**\n * Returns the intersection of two arrays;\n * optionally using a custom matching function.\n *\n * @param array \tarr\n * @param array\t \tarr2\n * @param function \tcallback\n *\n * @return array\n */\nexport default function(arr, arr2, callback = null) {\n\treturn !_isArray(arr2) ? [] : arr.filter(val1 => callback \n\t\t? arr2.filter(val2 => callback(val1, val2)).length \n\t\t: arr2.indexOf(val1) !== -1\n\t);\n};\n", "\n/**\n * Tells if the array \"a\" starts with array \"b\".\n *\n * @param {Array} a \n * @param {Array} b \n * @param {Bool} dotSafe \n * \n * @returns Bool\n */\nexport default function startsWith(a, b, dotSafe = null) {\n\treturn dotSafe || (dotSafe !== false && a.dotSafe && b.dotSafe) \n\t\t? (a.join('.') + '.').startsWith(b.join('.') + '.') \n\t\t: b.reduce((prev, value, i) => prev && value === a[i], true);\n}", "\n/**\n * Returns a list of unique items.\n *\n * @param array\t \t\t\t\tarr\n *\t *\n * @return array\n */\nexport default function(arr) {\n\tconst distinct = (value, index, self) => {\n\t\treturn self.indexOf(value) === index;\n\t};\n\treturn arr.filter(distinct);\n};\n", "\n/**\n * @imports\n */\nimport { _isArray } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom, _all } from '@webqit/util/arr/index.js';\n\n\n/**\n * Returns paths in 2-dimensional form.\n * \n * - key => [ [key] ]\n * - [key] => [ [key] ]\n * - [key, key2] => [ [key, key2] ]\n * - [ [key] ] => [ [key] ]\n * - [ [key1, key2] ] => [ [key1, key2] ]\n * \n * @param Array|String paths\n * \n * @return Array\n */\nexport function paths2D(paths) {\n\treturn (pathsIs2D(paths) ? paths : (_arrFrom(paths).length ? [paths] : []))\n\t\t.reduce((multiple, path) => multiple.concat([_arrFrom(path)]), [])\n\t\t.map(path => DotSafePath.resolve(path));\n}\nexport class DotSafePath extends Array {\n\tstatic resolve(path) {\n\t\t// Note the concat() below...\n\t\t// the spread operator: new DotSafePath(...path) doesn't work when path is [0].\n\t\treturn path.every(v => !(v + '').includes('.')) ? (new DotSafePath).concat(path) : path;\n\t}\n\tget dotSafe() { return true }\n}\n\n/**\n * OTHER HELPERS\n */\n\nexport function pathsIs2D(paths) {\n\treturn _arrFrom(paths).reduce((yes, path) => yes || _isArray(path), false);\n}\nexport function pathsIsDynamic(pathArray) {\n\t// Note that trying to simply match empty slots, as in: pathArray.filter(seg => !seg && seg !== 0).length\n\t// doesn't work when the empty slots are really empty slote, as in: [ 'key', <1 empty item> ]\n\treturn pathArray.filter(seg => seg || seg === 0).length !== pathArray.length;\n}\nexport function paths2DIsDynamic(paths) {\n\treturn paths.filter(pathArray => pathsIsDynamic(_arrFrom(pathArray))).length > 0;\n}\n\n", "\n/**\n * @imports\n */\nimport { _isTypeObject, _isFunction, _getType, _internals } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom, _intersect, _equals as _arrEquals } from '@webqit/util/arr/index.js';\nimport { paths2D } from './utils.js'\n\n/**\n * ---------------------------\n * The Firebase class\n * ---------------------------\n */\n\nexport default class Firebase {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param object\ttarget\n\t * \n\t * @return void\n\t */\n\tconstructor(target) {\n\t\tthis.target = target;\n\t\tthis.fireables = [];\n\t\tthis.currentlyFiring = [];\n\t}\n\t\n\t/**\n\t * Adds an Fireable instance\n\t * with optional tags.\n\t *\n\t * @param Fireable\t\t\tfireable\n\t *\n\t * @return Fireable\n\t */\n\tadd(fireable) {\n\t\tthis.fireables.push(fireable);\n\t\treturn fireable;\n\t}\n\t\n\t/**\n\t * Removes fireables by instance.\n\t *\n\t * @param Fireable\t\t\tfireable\n\t *\n\t * @return void\n\t */\n\tremove(fireable) {\n\t\tthis.fireables = this.fireables.filter(_fireable => _fireable !== fireable);\n\t}\n\t\n\t/**\n\t * Removes fireables by definition.\n\t *\n\t * @param object\t\t\tdfn\n\t *\n\t * @return void\n\t */\n\tremoveMatches(dfn) {\n\t\tthis.match(dfn).forEach(fireable => {\n\t\t\tthis.fireables = this.fireables.filter(_fireable => _fireable !== fireable);\n\t\t});\n\t}\n\t\n\t/**\n\t * Finds fireables by definition.\n\t *\n\t * @param object\t\t\tdfn\n\t *\n\t * @return array\n\t */\n\tmatch(dfn) {\n\t\treturn this.fireables.filter(fireable => {\n\t\t\tvar fireableFilter = paths2D(fireable.filter);\n\t\t\tvar fireableTags = _arrFrom((fireable.params || {}).tags);\n\t\t\t// -----------------------\n\t\t\tvar dfnFilter = paths2D(dfn.filter);\n\t\t\tvar dfnTags = _arrFrom((dfn.params || {}).tags);\n\t\t\t// -----------------------\n\t\t\treturn (!dfn.originalHandler || fireable.handler === dfn.originalHandler)\n\t\t\t\t&& (!dfnFilter.length || _arrEquals(dfnFilter, fireableFilter))\n\t\t\t\t&& (!dfnTags.length || (dfnTags.length === fireableTags.length && _intersect(fireableTags, dfnTags).length === dfnTags.length));\n\t\t});\n\t}\n\t\t\n\t/**\n\t * Returns a observer-specific object embedded on an element.\n\t *\n\t * @param string\t\ttype\n\t * @param array|object\ttarget\n\t * @param bool \tcreateIfNotExists\n\t * @param string \tnamespace\n\t *\n\t * @return Firebase\n\t */\n\tstatic _getFirebase(type, target, createIfNotExists = true, namespace = this.__namespace) {\n\t\tif (!_isTypeObject(target)) {\n\t\t\tthrow new Error('Subject must be of type object; \"' + _getType(target) + '\" given!');\n\t\t}\n\t\tvar ImplementationClass = this;\n\t\tif (namespace && globalThis.WebQitObserverNamespaceRegistry.has(type + '-' + namespace)) {\n\t\t\tImplementationClass = globalThis.WebQitObserverNamespaceRegistry.get(type + '-' + namespace);\n\t\t\ttype += '-' + namespace\n\t\t}\n\t\tif (!_internals(target, 'firebases').has(type) && createIfNotExists) {\n\t\t\t_internals(target, 'firebases').set(type, new ImplementationClass(target));\n\t\t}\n\t\treturn _internals(target, 'firebases').get(type);\n\t}\n\n\t/**\n\t * Extend a Fireable Class with a namespace.\n\t *\n\t * @param string\t\tnamespace\n\t * @param class \tImplementationClass\n\t *\n\t * @return void|class\n\t */\n\tstatic _namespace(type, namespace, ImplementationClass = null) {\n\t\ttype += '-' + namespace;\n\t\tif (arguments.length === 2) {\n\t\t\treturn globalThis.WebQitObserverNamespaceRegistry.get(type);\n\t\t}\n\t\tif (!(ImplementationClass.prototype instanceof this)) {\n\t\t\tthrow new Error(`The implementation of the namespace ${this.name}.${namespace} must be a subclass of ${this.name}.`);\n\t\t}\n\t\tglobalThis.WebQitObserverNamespaceRegistry.set(type, ImplementationClass);\n\t\tImplementationClass.__namespace = namespace;\n\t}\n}\n\nif (!globalThis.WebQitObserverNamespaceRegistry) {\n\tglobalThis.WebQitObserverNamespaceRegistry = new Map();\n}\n", "\n/**\n * ---------------------------\n * The Fireable class\n * ---------------------------\n */\n\nexport default class Fireable {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param object|array\t\ttarget\n\t * @param object\t\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor(target, dfn) {\n\t\tthis.target = target;\n\t\tthis.handler = dfn.handler;\n\t\tthis.filter = dfn.filter;\n\t\tthis.params = dfn.params;\n\n\t}\n\n\t/**\n\t * Sets a \"disconnected\" flag on the Fireable.\n\t *\n\t * @return void\n\t */\n\tdisconnect() {\n\t\tthis.disconnected = true;\n\t}\n}", "\n/**\n * @imports\n */\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _intersect } from '@webqit/util/arr/index.js';\nimport Fireable from './Fireable.js';\n\n/**\n * ---------------------------\n * The Trap class\n * ---------------------------\n */\n\nexport default class Interceptor extends Fireable {\n\t\n\t/**\n\t * Calls the observer's handler function\n\t * on matching with the event's fields.\n\t *\n\t * @param Event\t\t\t \t\t\tevent\n\t * @param function\t\t\t\t\tnext\n\t * @param mixed\t\t\t\t\t \trecieved\n\t *\n\t * @return void\n\t */\n\tfire(event, next, recieved) {\n\t\tif (this.disconnected || (this.filter && !_intersect(_arrFrom(this.filter), [event.type]).length)) {\n\t\t\treturn next(...Array.prototype.slice.call(arguments, 2));\n\t\t}\n\t\treturn this.handler(event, recieved, next);\n\t}\n}", "\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isObject from '../js/isObject.js';\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isBoolean from '../js/isBoolean.js';\nimport _each from './each.js';\n\n/**\n * Gets the match(es) between (members of) two values;\n * assertion optionally custom.\n *\n * @param mixed \t\t\tob1\n * @param mixed \t\t\tobj2\n * @param string|function\tassertion\n * @param bool\t\t\t\tnetComparison\n * @param bool\t\t\t\tcontrast\n * @param bool\t\t\t\treturnOnFirstFalse\n *\n * @return bool|array|object\n */\nexport default function(obj1, obj2, assertion = true, netComparison = true, contrast = false, returnOnFirstFalse = false) {\n\tif (_isArray(obj1) && _isArray(obj2)) {\n\t\tvar result = [];\n\t\tvar contn = true;\n\t\tobj1.forEach(v1 => {\n\t\t\tif (!contn) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar testPass = false;\n\t\t\t_each(obj2, (k, v2) => {\n\t\t\t\tif (!testPass || (netComparison && _isTypeObject(v1))) {\n\t\t\t\t\ttestPass = assertion(v1, v2);\n\t\t\t\t\tif ((_isArray(testPass) && !testPass.length) || (_isObject(testPass) && !Object.keys(testPass).length)) {\n\t\t\t\t\t\ttestPass = false;\n\t\t\t\t\t}\n\t\t\t\t\tif (_isTypeObject(testPass) && netComparison) {\n\t\t\t\t\t\t// Further recursions should use this testPass as v1\n\t\t\t\t\t\tv1 = testPass;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (_isTypeObject(testPass)) {\n\t\t\t\tresult.push(netComparison ? testPass : v1);\n\t\t\t} else if (!_isBoolean(testPass)) {\n\t\t\t\tresult.push(testPass);\n\t\t\t} else if ((contrast && !testPass) || (!contrast && testPass)) {\n\t\t\t\tresult.push(v1);\n\t\t\t} else if (returnOnFirstFalse) {\n\t\t\t\tcontn = false;\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n\t\n\tif (_isObject(obj1) && _isObject(obj2)) {\n\t\tvar result = {};\n\t\tvar contn = true;\n\t\tObject.keys(obj1).forEach(k => {\n\t\t\tif (!contn) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar testPass = assertion(obj1[k], obj2[k]);\n\t\t\tif ((_isArray(testPass) && !testPass.length) || (_isObject(testPass) && !Object.keys(testPass).length)) {\n\t\t\t\ttestPass = false;\n\t\t\t}\n\t\t\tif (_isTypeObject(testPass)) {\n\t\t\t\tresult[k] = netComparison ? testPass : obj1[k];\n\t\t\t} else if (!_isBoolean(testPass)) {\n\t\t\t\tresult[k] = testPass;\n\t\t\t} else if ((contrast && !testPass) || (!contrast && testPass)) {\n\t\t\t\tresult[k] = obj1[k];\n\t\t\t} else if (returnOnFirstFalse) {\n\t\t\t\tcontn = false;\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n};\n", "\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isFunction from '../js/isFunction.js';\nimport _isNumeric from '../js/isNumeric.js';\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _mergeCallback from './mergeCallback.js';\n\n/**\n * Copies an object.\n *\n * @param object\t \tobj\n * @param array\t\t \tfilter\n *\n * @return object\n */\nexport default function(obj, filter = [], withSymbols = true) {\n\tvar depth = 0;\n\tif (_isNumeric(arguments[0]) && _isTypeObject(arguments[1])) {\n\t\tdepth = arguments[0];\n\t\tobj = arguments[1];\n\t\tfilter = arguments[2] || [];\n\t}\n\treturn _mergeCallback([depth, {}, obj], (key, obj1, obj2) => {\n\t\treturn _isFunction(filter) ? filter(key) \n\t\t\t: (_isArray(filter) && filter.length ? filter.indexOf(key) > -1 : true);\n\t}, false/*deepProps*/, false/*isReplace*/, withSymbols);\n};\n", "\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isFunction from '../js/isFunction.js';\nimport _mergeCallback from './mergeCallback.js';\n\n/**\n * Copies only properties of an object.\n *\n * @param object\t \tobj\n * @param array\t\t \tonly\n * @param array\t\t \texcept\n *\n * @return object\n */\nexport default function(obj, filter = []) {\n\treturn _mergeCallback([{}, obj], (key, obj1, obj2) => {\n\t\tif (!_isFunction(obj2[key])) {\n\t\t\treturn _isFunction(filter) ? filter(key) \n\t\t\t\t: (_isArray(filter) && filter.length ? filter.indexOf(key) > -1 : true);\n\t\t}\n\t}, false/*deepProps*/, false/*isReplace*/, false/*withSymbols*/);\n};\n", "\n/**\n * @imports\n */\nimport _isNumber from '../js/isNumber.js';\nimport _isArray from '../js/isArray.js';\nimport _isObject from '../js/isObject.js';\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isFunction from '../js/isFunction.js';\nimport _isPlainObject from '../js/isPlainObject.js';\nimport _compareCallback from './compareCallback.js';\n\n/**\n * Asserts (members of) the first value against (members of) subsequent values.\n * Assertion could be TRUE, FALSE, or custom.\n *\n * @param mixed \t\t\tobj1\n * @param mixed \t\t\tobj2\n * @param bool|function\t\tassertion\n * @param int\t\t\t\tdepth\n *\n * @return bool\n */\nconst _even = function(obj1, obj2, assertion = true, depth = 1) {\n\tif (_isArray(obj1) && _isArray(obj2) && obj1.length !== obj2.length) {\n\t\treturn !assertion;\n\t}\n\tif (_isObject(obj1) && _isObject(obj2)) {\n\t\tvar obj1Keys = Object.keys(obj1);\n\t\tvar obj2Keys = Object.keys(obj2);\n\t\tif (!obj1Keys.length && !obj2Keys.length) {\n\t\t\t// Objects that won't show keys must be compared by instance\n\t\t\t// Many native objects won't. So we can't judge by keys alone.\n\t\t\treturn _isPlainObject(obj1) && _isPlainObject(obj2) \n\t\t\t\t? assertion\n\t\t\t\t: (obj1 === obj2) === assertion;\n\t\t}\n\t\tif (!_even(obj1Keys, obj2Keys)) {\n\t\t\treturn !assertion;\n\t\t}\n\t}\n\tif (depth > 0 && ((_isArray(obj1) && _isArray(obj2)) || (_isObject(obj1) && _isObject(obj2)))) {\n\t\tvar result = _compareCallback(obj1, obj2, (v1, v2) => {\n\t\t\treturn _even(v1, v2, assertion, depth - 1);\n\t\t}, false/*netComparison*/, false/*contrast*/, true/*returnOnFirstFalse*/);\n\t\treturn _isArray(result) \n\t\t\t? result.length === obj1.length && result.length === obj2.length \n\t\t\t: (_isObject(result) && _isObject(obj1) \n\t\t\t\t? Object.keys(result).length === Object.keys(obj1).length && Object.keys(result).length === Object.keys(obj2).length \n\t\t\t\t: result);\n\t}\n\treturn _isFunction(assertion) ? assertion(obj1, obj2) : (\n\t\t_isNumber(obj1) && _isNumber(obj2) && isNaN(obj1) && isNaN(obj2) \n\t\t\t? assertion \n\t\t\t: (obj1 === obj2) === assertion\n\t);\n};\n\n/**\n * @exports\n */\nexport default _even;\n", "\n/**\n * @imports\n */\nimport { _each } from '@webqit/util/obj/index.js';\n\n/**\n * ---------------------------\n * The QueryEvent class\n * ---------------------------\n */\n\nexport default class Action {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\ttarget\n\t * @param object\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor(target, dfn) {\n\t\tthis.target = target;\n\t\tif (!dfn.type) {\n\t\t\tthrow new Error('Action type must be given in definition!');\n\t\t}\n\t\t_each(dfn, (key, value) => {\n\t\t\tObject.defineProperty(this, key, {value, enumerable:true});\n\t\t});\n\t\tObject.seal(this);\n\t}\n}", "\n/**\n * @imports\n */\nimport Firebase from './Firebase.js';\nimport Interceptor from './Interceptor.js';\nimport Action from './Action.js';\n\n/**\n * ---------------------------\n * The Reactive class\n * ---------------------------\n */\n\nexport default class Interceptors extends Firebase {\n\t\n\t/**\n\t * @inheritdoc\n\t */\n\tadd(dfn) {\n\t\treturn super.add(new Interceptor(this.target, dfn));\n\t}\n\n\t/**\n\t * Fires all interceptors with the given action.\n\t *\n\t * @param Action\t\t\taction\n\t * @param function\t\t\tdefaultHandler\n\t *\n\t * @return mixed\n\t */\n\tfire(action, defaultHandler = null) {\n\t\tif (!(action instanceof Action)) {\n\t\t\taction = new Action(this.target, action);\n\t\t}\n\t\tif (this.currentlyFiring.filter(a => a.type === action.type && a.name === action.name).length) {\n\t\t\treturn defaultHandler ? defaultHandler() : undefined;\n\t\t}\n\t\tthis.currentlyFiring.push(action);\n\t\tconst next = (index, ..._args) => {\n\t\t\tvar interceptor = this.fireables[index];\n\t\t\tif (interceptor) {\n\t\t\t\treturn interceptor.fire(action, (...args) => {\n\t\t\t\t\treturn next(index + 1, ...args);\n\t\t\t\t}/*next*/, ..._args);\n\t\t\t}\n\t\t\treturn defaultHandler ? defaultHandler(..._args) : _args[0];\n\t\t};\n\t\tvar value = next(0);\n\t\tthis.currentlyFiring.pop();\n\t\treturn value;\n\t}\n\n\tstatic getFirebase(target, createIfNotExists = true, namespace = null) {\n\t\treturn super._getFirebase('interceptor', ...arguments);\n\t}\n\n\tstatic namespace(namespace, ImplementationClass = null) {\n\t\treturn super._namespace('interceptor', ...arguments);\n\t}\n}", "\n/**\n * @imports\n */\nimport { _internals } from '@webqit/util/js/index.js';\n\n/**\n * Returns the original object earlier proxied by proxy().\n *\n * @param Proxy|Any\t\ttarget\n *\n * @return Any\n */\nexport default function(target) {\n // Proxy targets are mapped to their own instances internally\n return _internals(target, false).get(target) || target;\n}\n", "\n/**\n * @imports\n */\nimport { _isTypeObject } from '@webqit/util/js/index.js';\nimport Interceptors from '../core/Interceptors.js';\nimport _unproxy from '../actors/unproxy.js';\n\n/**\n * Runs a Reflect operation of the specified type.\n *\n * @param string\t\ttype\n * @param array|object\ttarget\n * @param object\t\tpayload\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(type, target, payload = {}, params = {}) {\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\ttarget = _unproxy(target);\n\t// ---------------------------------\n\t// Execute any \"keys\" traps, otherwise \"test\" the default way\n\tvar interceptors, defaultHandler = function(_val) {\n\t\treturn arguments.length ? _val : Reflect[type](target, ...Object.values(payload));\n\t};\n\tif (interceptors = Interceptors.getFirebase(target, false, params.namespace)) {\n\t\treturn interceptors.fire({ type, ...payload }, defaultHandler);\n\t}\n\treturn defaultHandler();\n}\n", "\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs an \"apply\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tthisArgument\n * @param array\t\t\targumentsList\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, thisArgument, argumentsList, params = {}) {\n\treturn _exec('apply', target, { thisArgument, argumentsList }, params);\n}\n", "\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"construct\" operation on a target.\n *\n * @param array|object\ttarget\n * @param array\t\t\targumentsList\n * @param object\t\tnewTarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, argumentsList, newTarget = null, params = {}) {\n\treturn _exec('construct', target, arguments.length > 2 ? { argumentsList, newTarget } : { argumentsList }, params);\n}\n", "\n/**\n * @imports\n */\nimport { _isUndefined, _isObject } from '@webqit/util/js/index.js';\nimport { _each } from '@webqit/util/obj/index.js';\n\n/**\n * ---------------------------\n * The Event class\n * ---------------------------\n */\n\nexport default class Event {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\t\ttarget\n\t * @param bool\t\t\t\tcancellable\n\t *\n\t * @return void\n\t */\n\tconstructor(target, cancellable = false) {\n\t\tthis._ = {};\n\t\tthis._.target = target;\n\t\tthis._.cancellable = cancellable;\n\t\tthis._.propagationStopped = false;\n\t\tthis._.defaultPrevented = false;\n\t\tthis._.promisesInstance = null;\n\t\tthis._.promises = [];\n\t}\n\n\t/**\n\t * Gets the \"target\" object.\n\t *\n\t * @return array|object\n\t */\n\tget target() {\n\t\treturn this._.target;\n\t}\n\n\t/**\n\t * Gets the \"cancellable\" flag.\n\t *\n\t * @return bool\n\t */\n\tget cancellable() {\n\t\treturn this._.cancellable;\n\t}\n\n\t/**\n\t * -----------------------\n\t * RESPONSE HANDLERS\n\t * -----------------------\n\t */\n\n\t/**\n\t * Stops the evnt from reaching other listeners.\n\t *\n\t * @return bool\n\t */\n\tstopPropagation() {\n\t\tthis._.propagationStopped = true;\n\t}\n\t\t\n\t/**\n\t * (Readonly) tells if stopPropagation() has been called.\n\t *\n\t * @return bool\n\t */\n\tget propagationStopped() {\n\t\treturn this._.propagationStopped;\n\t}\n\t\t\n\t/**\n\t * Sets a disposition that asks event initiator not to\n\t * proceed with default action.\n\t *\n\t * @return void\n\t */\n\tpreventDefault() {\n\t\tthis._.defaultPrevented = true;\n\t}\n\t\t\n\t/**\n\t * (Readonly) tells if preventDefault() has been called.\n\t *\n\t * @return bool\n\t */\n\tget defaultPrevented() {\n\t\treturn this._.defaultPrevented;\n\t}\n\t\t\n\t/**\n\t * Sets a Promise disposition.\n\t *\n\t * @param Promise\tpromise\n\t *\n\t * @return void\n\t */\n\twaitUntil(promise) {\n\t\tif (promise instanceof Promise) {\n\t\t\tthis._.promises.push(promise);\n\t\t\tthis._.promisesInstance = null;\n\t\t}\n\t}\n\t\t\n\t/**\n\t * (Readonly) returns all promises.\n\t *\n\t * @return Promise|null\n\t */\n\tget promises() {\n\t\tif (!this._.promisesInstance && this._.promises.length) {\n\t\t\tthis._.promisesInstance = Promise.all(this._.promises);\n\t\t}\n\t\treturn this._.promisesInstance;\n\t}\n\t\t\n\t/**\n\t * Evaluates the given disposition value and\n\t * calls an appropriate disposition method.\n\t *\n\t * @params mixed \trspns\n\t *\n\t * @return void\n\t */\n\trespondWith(rspns) {\n\t\tvar proms;\n\t\tvar isEvent = _isObject(rspns) && !_isUndefined(rspns.propagationStopped) && !_isUndefined(rspns.defaultPrevented)\n\t\tif ((rspns === false) || (isEvent && rspns.propagationStopped)) {\n\t\t\tthis.stopPropagation();\n\t\t} else if ((rspns === false) || (isEvent && rspns.defaultPrevented)) {\n\t\t\tthis.preventDefault();\n\t\t} else if ((rspns instanceof Promise && (proms = rspns))\n\t\t|| (isEvent && (proms = rspns.promises))) {\n\t\t\tthis.waitUntil(proms);\n\t\t}\n\t}\n}", "\n/**\n * @imports\n */\nimport {\n\t_after as _arrAfter, _startsWith as _arrStartsWith,\n\t_any, _equals as _arrEquals,\n} from '@webqit/util/arr/index.js';\nimport { _isNumeric, _isFunction, _isObject } from '@webqit/util/js/index.js';\nimport { paths2D, pathsIs2D, pathsIsDynamic, paths2DIsDynamic } from './utils.js'\nimport Fireable from './Fireable.js';\nimport Event from './Event.js';\n\n/**\n * ---------------------------\n * The Observer class\n * ---------------------------\n */\n\nexport default class Observer extends Fireable {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\t\ttarget\n\t * @param object\t\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor(target, dfn) {\n\t\tsuper(target, dfn);\n\t\t// The rest of this code is designed for a 2-dimensional array.\n\t\tthis.filters2D = paths2D(this.filter);\n\t\tthis.filtersIsOriginally2D = pathsIs2D(this.filter);\n\t\tthis.filtersIsDynamic = paths2DIsDynamic(this.filters2D);\n\t\tif (this.filtersIsDynamic && this.filters2D.length > 1) {\n\t\t\tthrow new Error('Only one \"Dynamic Filter\" must be observed at a time! \"' + this.filters2D.map(pathArray => '[' + pathArray.join(', ') + ']').join(', ') + '\" have been bound together.');\n\t\t}\n\t}\n\t\n\t/**\n\t * Calls the observer's handler function\n\t * on matching with the event's filter.\n\t *\n\t * @param array\t\t\t \tchanges\n\t *\n\t * @return void\n\t */\n\tfire(changes) {\n\t\tif (this.disconnected || (this.params.type && !_any(changes, delta => this.params.type === delta.type))) {\n\t\t\treturn;\n\t\t}\n\t\tconst diff = delta => !['set', 'def'].includes(delta.type) || (\n\t\t\t!this.params.diff || (_isFunction(this.params.diff) ? this.params.diff(delta.value, delta.oldValue) : delta.value !== delta.oldValue)\n\t\t);\n\t\tvar evt = new Event(this.target);\n\t\tif (this.filters2D.length) {\n\t\t\tvar matches = changes.filter(delta => {\n\t\t\t\t// one observerPathArray can turn out to be two if dynamic\n\t\t\t\t// OR evt.originatingFields is multiple and this.params.subtree\n\t\t\t\treturn this.filters2D.filter((observerPathArray, i) => {\n\t\t\t\t\tvar observerPathArray_Resolved = observerPathArray.slice();\n\t\t\t\t\tif (this.filtersIsDynamic) {\n\t\t\t\t\t\t// Note that if we had tried to loop thru observerPathArray_Resolved,\n\t\t\t\t\t\t// we wouldn't be able tp access slots that are truly empty, as in: [ 'key', <1 empty item> ]\n\t\t\t\t\t\tdelta.path.forEach((_seg, i) => {\n\t\t\t\t\t\t\tobserverPathArray_Resolved[i] = observerPathArray_Resolved[i] || observerPathArray_Resolved[i] === 0 \n\t\t\t\t\t\t\t\t? observerPathArray_Resolved[i]\n\t\t\t\t\t\t\t\t: _seg;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn (!this.filtersIsDynamic || !pathsIsDynamic(observerPathArray_Resolved)) && diff(delta) && ((!this.params.subtree && _arrEquals(observerPathArray_Resolved, delta.path))\n\t\t\t\t\t\t|| (this.params.suptree && _arrStartsWith(observerPathArray_Resolved, delta.path) && (!_isNumeric(this.params.suptree) || _arrAfter(observerPathArray_Resolved, delta.path).length <= this.params.suptree))\n\t\t\t\t\t\t|| (this.params.subtree && delta.path.length >= observerPathArray_Resolved.length && _arrStartsWith(delta.path, observerPathArray_Resolved) && (!_isNumeric(this.params.subtree) || _arrAfter(delta.path, observerPathArray_Resolved).length <= this.params.subtree))\n\t\t\t\t\t);\n\t\t\t\t}).length;\n\t\t\t});\n\t\t\tif (matches.length) {\n\t\t\t\tif (this.filtersIsOriginally2D || this.params.subtree) {\n\t\t\t\t\tvar changesObject = matches;\n\t\t\t\t\tif (_isObject(this.filter)) {\n\t\t\t\t\t\tchangesObject = {...this.filter};\n\t\t\t\t\t\tmatches.forEach((e, i) => {\n\t\t\t\t\t\t\tchangesObject[e.name] = e;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tevt.respondWith(this.handler(changesObject, evt));\n\t\t\t\t} else {\n\t\t\t\t\tmatches.forEach((e, i) => {\n\t\t\t\t\t\tevt.respondWith(this.handler(e, evt));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ((this.params.subtree || changes.filter(delta => _arrEquals(delta.path, [delta.name])).length === changes.length) && changes.filter(delta => diff(delta)).length) {\n\t\t\tevt.respondWith(this.handler(changes, evt));\n\t\t}\n\t\treturn evt;\n\t}\n}\n", "\n/**\n * @imports\n */\nimport { _each } from '@webqit/util/obj/index.js';\nimport { DotSafePath } from './utils.js';\n\n/**\n * ---------------------------\n * The QueryEvent class\n * ---------------------------\n */\n\nexport default class Mutation {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param array|object\ttarget\n\t * @param object\t\tdfn\n\t *\n\t * @return void\n\t */\n\tconstructor(target, dfn) {\n\t\tthis.target = target;\n\t\tif (!dfn.originalSubject) {\n\t\t\tthis.originalSubject = target;\n\t\t}\n\t\tif (!('type' in dfn)) {\n\t\t\tthrow new Error('Mutation type must be given in definition!');\n\t\t}\n\t\tif (!('name' in dfn)) {\n\t\t\tthrow new Error('Property name must be given in definition!');\n\t\t}\n\t\t_each(dfn, (key, value) => {\n\t\t\tif (key === 'path') {\n\t\t\t\tvalue = DotSafePath.resolve(value);\n\t\t\t}\n\t\t\tObject.defineProperty(this, key, {value, enumerable:true});\n\t\t});\n\t\tif (!this.path) {\n\t\t\tObject.defineProperty(this, 'path', {value: DotSafePath.resolve([dfn.name]), enumerable:true});\n\t\t}\n\t\tObject.seal(this);\n\t}\n}", "\n/**\n * @imports\n */\nimport { _from as _arrFrom, _remove, _last } from '@webqit/util/arr/index.js';\nimport Firebase from './Firebase.js';\nimport Observer from './Observer.js';\nimport Mutation from './Mutation.js';\nimport Event from './Event.js';\n\n/**\n * ---------------------------\n * The Reactive class\n * ---------------------------\n */\n\nexport default class Observers extends Firebase {\n\t\n\t/**\n\t * Initializes the instance.\n\t *\n\t * @param object\ttarget\n\t * \n\t * @return void\n\t */\n\tconstructor(target) {\n\t\tsuper(target);\n\t\tthis.buffers = [];\n\t}\n\t\n\t/**\n\t * @inheritdoc\n\t */\n\tadd(dfn) {\n\t\treturn super.add(new Observer(this.target, dfn));\n\t}\n\t\n\t/**\n\t * Fires all observers with the given evt (change).\n\t *\n\t * @param array|Mutation\t\tchanges\n\t * @param bool\t\t\t\tcancellable\n\t *\n\t * @return Event\n\t */\n\tfire(changes, cancellable) {\n\t\tvar evt = new Event(this.target, cancellable);\n\t\t// We accept multiple changes\n\t\tchanges = _arrFrom(changes, false).map(delta => !(delta instanceof Mutation) ? new Mutation(this.target, delta) : delta);\n\t\tif (this.buffers.length) {\n\t\t\t_last(this.buffers)(changes);\n\t\t\treturn evt;\n\t\t}\n\t\tif (this.currentlyFiring.filter(d => changes.filter(delta => d.type === delta.type && d.name === delta.name).length).length) {\n\t\t\t//return false;\n\t\t}\n\t\t//this.currentlyFiring.push(...changes);\n\t\tthis.fireables.forEach(observer => {\n\t\t\tif (evt.propagationStopped && cancellable) {\n\t\t\t\treturn evt;\n\t\t\t}\n\t\t\tevt.respondWith(observer.fire(changes));\n\t\t});\n\t\t//changes.forEach(delta => _remove(this.currentlyFiring, delta));\n\t\treturn evt;\n\t}\n\n\tstatic getFirebase(target, createIfNotExists = true, namespace = null) {\n\t\treturn super._getFirebase('observer', ...arguments);\n\t}\n\n\tstatic namespace(namespace, ImplementationClass = null) {\n\t\treturn super._namespace('observer', ...arguments);\n\t}\n}", "\n/**\n * @imports\n */\nimport {\n\t_isArray, _isNumeric, _isClass,\n\t_isFunction, _isTypeObject, _internals\n} from '@webqit/util/js/index.js';\nimport { _from as _objFrom } from '@webqit/util/obj/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport Interceptors from '../core/Interceptors.js';\nimport _unproxy from '../actors/unproxy.js';\n\n/**\n * Runs a \"get\" operation on a target.\n * Fires any such query observers that may be bound to target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeys\n * @param object\t\treceiver\n * @param object\t\tparams\n *\n * @return mixed\n */\nexport default function(target, keys, receiver = null, params = {}) {\n\ttarget = receiver || target;\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\ttarget = _unproxy(target);\n\t// ---------------------------------\n\tvar _keys = _arrFrom(keys);\n\tvar values = _keys.map(key => {\n\t\t// Execute any \"get\" traps, otherwise \"get\" the default way\n\t\tvar interceptors, defaultGet = function(_value) {\n\t\t\tif (arguments.length) {\n\t\t\t\treturn _value;\n\t\t\t}\n\t\t\tif (_internals(target, 'accessorizedProps').has(key) && _internals(target, 'accessorizedProps').get(key).touch(true)) {\n\t\t\t\treturn _internals(target, 'accessorizedProps').get(key).get();\n\t\t\t}\n\t\t\treturn receiver \n\t\t\t\t? Reflect.get(target, key, receiver) \n\t\t\t\t: Reflect.get(target, key);\n\t\t};\n\t\tif (interceptors = Interceptors.getFirebase(target, true, params.namespace)) {\n\t\t\treturn interceptors.fire({type:'get', name: key, related: _keys, receiver}, defaultGet);\n\t\t}\n\t\treturn defaultGet();\n\t});\n\t// ---------------------------------\n\treturn _isArray(keys) ? values : values[0];\n}\n", "\n/**\n * @imports\n */\nimport { _isFunction, _isTypeObject, _getType } from '@webqit/util/js/index.js';\nimport build, { isUserObject } from '../connectors/build.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Observers from '../core/Observers.js';\n\n/**\n * Adds an observer to an target's firebase.\n *\n * @param array|object\t\t\t\ttarget\n * @param string|array|function\t\tfilter\n * @param function\t\t\t\t\thandler\n * @param object\t\t\t\t\tparams\n *\n * @return Observer\n */\nexport default function(target, filter, handler = null, params = {}) {\n\ttarget = _unproxy(target);\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Observable subjects must be of type object; \"' + _getType(target) + '\" given!');\n\t}\n\tif (_isFunction(filter)) {\n\t\tparams = arguments.length > 2 ? handler : {};\n\t\thandler = filter;\n\t\tfilter = null;\n\t}\n\tif (!_isFunction(handler)) {\n\t\tthrow new Error('Handler must be a function; \"' + _getType(handler) + '\" given!');\n\t}\n\tvar existing, observers = Observers.getFirebase(target, true, params.namespace);\n\tvar dfn = {filter, handler, params,};\n\tif (dfn.filter || dfn.params.subtree === '*' || (dfn.params.subtree && isUserObject(target))) {\n\t\tbuild(target, dfn.filter, dfn.params.subtree, params.namespace);\n\t}\n\tif (dfn.params.unique && (existing = observers.match({filter, params})).length) {\n\t\tif (dfn.params.unique !== 'replace') {\n\t\t\treturn existing[0];\n\t\t}\n\t\tobservers.remove(existing[0]);\n\t}\n\treturn observers.add(dfn);\n}\n", "\n/**\n * @imports\n */\nimport { _each, _merge } from '@webqit/util/obj/index.js';\nimport { _isObject } from '@webqit/util/js/index.js';\nimport Mutation from '../core/Mutation.js';\nimport Observers from '../core/Observers.js';\nimport observe from '../reactions/observe.js';\n\n/**\n * Bubble helper\n *\n * @param array|object\ttarget\n * @param string\t\tfield\n * @param array|object\tvalue\n * @param object\t\tevent\n * @param object\t\tparams\n *\n * @return void\n */\nexport default function(target, field, value, event = null, params = {}) {\n\tif (target === value) {\n\t\treturn;\n\t}\n\tvar observers;\n\tobserve(value, (changes, eventObject) => {\n\t\tif (observers = Observers.getFirebase(target, false, params.namespace)) {\n\t\t\tvar _changes = changes.map(delta => {\n\t\t\t\t// ------------\n\t\t\t\t// Recursive events must not propagate\n\t\t\t\t// ------------\n\t\t\t\tvar d = delta;\n\t\t\t\tdo {\n\t\t\t\t\tif (d.target === target) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} while(d = d.src);\n\t\t\t\t// ------------\n\t\t\t\t// Create propagation\n\t\t\t\t// ------------\n\t\t\t\tvar dfn = {}; _each(delta, (key, value) => {\n\t\t\t\t\tif (key !== 'target' && key !== 'name' && key !== 'path' && key !== 'src') {\n\t\t\t\t\t\tdfn[key] = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdfn.name = field;\n\t\t\t\tdfn.path = [field].concat(delta.path);\n\t\t\t\tdfn.originalSubject = delta.originalSubject;\n\t\t\t\tdfn.src = delta;\n\t\t\t\treturn new Mutation(target, dfn);\n\t\t\t}).filter(c => c);\n\t\t\tif (_changes.length) {\n\t\t\t\treturn observers.fire(_changes, eventObject.cancellable);\n\t\t\t}\n\t\t}\n\t}, {subtree: true, ...params, unique: true, tags: [linkTag, field, target]});\n\tif (_isObject(event) && (observers = Observers.getFirebase(target, false, params.namespace))) {\n\t\t// The event object\n\t\tvar _event = _merge({\n\t\t\tname: field,\n\t\t\ttype: 'set',\n\t\t\tvalue,\n\t\t\trelated: [field],\n\t\t}, event);\n\t\tlet eventObject = observers.fire(_event, params.cancellable);\n\t\tif (params.eventTypeReturn) {\n\t\t\treturn eventObject;\n\t\t}\n\t}\n}\n\n/**\n * @var object\n */\nexport const linkTag = {};", "\n/**\n * @imports\n */\nimport { _isTypeObject } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _before, _after } from '@webqit/util/str/index.js';\nimport { paths2D } from '../core/utils.js';\nimport Observers from '../core/Observers.js';\nimport _get from '../actions/get.js';\nimport link from './link.js';\n\n/**\n * Recursively \"connects\" an object's members to the object\n * for observer actions.\n *\n * @param array|object\ttarget\n * @param string|array\tpaths\n * @param bool\t\t\tsubtree\n * @param String\t\tnamespace\n *\n * @return void\n */\nexport default function build(target, paths = null, subtree = false, namespace = null) {\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\tvar observers = Observers.getFirebase(target, true, namespace);\n\tif (!observers || observers.build) {\n\t\treturn;\n\t}\n\tobservers.build = subtree;\n\t// ---------------------------------\n\t// For paths2D, refer to the comments at class Observer.\n\tvar _paths2D = paths2D(paths);\n\t// If any path starts with a dot, (a wild card path), all keys at this level is implied\n\tvar rootLevelKeysToObserve = !_paths2D.length || _paths2D.filter(path => /*Starts with an empty segment*/!path[0] && path[0] !== 0).length\n\t\t? Object.keys(target)\n\t\t: _paths2D.map(path => path[0]);\n\tvar subLevelKeysToObserve = _paths2D.length ? _paths2D.map(path => path.slice(1)).filter(p => p.length) : null;\n\tobservers.subBuild = subLevelKeysToObserve && subLevelKeysToObserve.length ? subLevelKeysToObserve : null;\n\trootLevelKeysToObserve.forEach(key => {\n\t\tvar value = _get(target, key, null, { namespace });\n\t\ttry {\n\t\t\tif (_isTypeObject(value)) {\n\t\t\t\tlink(target, key, value, null, params);\n\t\t\t\tif ((observers.subBuild && isUserObject(value)) \n\t\t\t\t|| (_isFunction(subtree) ? subtree(value) : (subtree && isUserObject(value)))) {\n\t\t\t\t\tbuild(value, observers.subBuild, subtree, namespace);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch(e) {/* instanceof-ing certain primitives may throw */}\n\t});\n}\n\n/**\n * Tells if an object if a User Object.\n * \n * @param Object value\n * \n * @return Bool\n */\nexport const isUserObject = value => ((value instanceof Object) || (value instanceof Array) || (value instanceof Function))\n\t&& (typeof window === 'undefined' || value !== window);\n", "\n/**\n * @imports\n */\nimport { _isFunction, _isTypeObject, _getType } from '@webqit/util/js/index.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Observers from '../core/Observers.js';\n\n/**\n * Removes observers from an target's firebase.\n *\n * @param array|object\t\t\t\ttarget\n * @param string|array|function\t\tfilter\n * @param function\t\t\t\t\toriginalHandler\n * @param object\t\t\t\t\tparams\n *\n * @return void\n */\nexport default function(target, filter, originalHandler = null, params = {}) {\n\ttarget = _unproxy(target);\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Observable subjects must be of type object; \"' + _getType(target) + '\" given!');\n\t}\n\tif (_isFunction(filter)) {\n\t\tparams = arguments.length > 2 ? originalHandler : {};\n\t\toriginalHandler = filter;\n\t\tfilter = null;\n\t}\n\tif (originalHandler && !_isFunction(originalHandler)) {\n\t\tthrow new Error('Handler must be a function; \"' + _getType(originalHandler) + '\" given!');\n\t}\n\tvar observers;\n\tif (observers = Observers.getFirebase(target, false, params.namespace)) {\n\t\treturn observers.removeMatches({filter, originalHandler, params});\n\t}\n}\n", "\n/**\n * @imports\n */\nimport { _merge } from '@webqit/util/obj/index.js';\nimport { _isObject } from '@webqit/util/js/index.js';\nimport Observers from '../core/Observers.js';\nimport unobserve from '../reactions/unobserve.js';\nimport { linkTag } from './link.js';\n\n/**\n * Unbubble helper\n *\n * @param array|object\ttarget\n * @param string\t\tfield\n * @param array|object\tobject\n * @param object\t\tevent\n * @param object\t\tparams\n *\n * @return void\n */\nexport default function(target, field, value, event = null, params = {}) {\n\tunobserve(value, null, null, {...params, tags:[linkTag, field, target]});\n\tvar observers;\n\tif (_isObject(event) && (observers = Observers.getFirebase(target, false, params.namespace))) {\n\t\t// The event object\n\t\tvar _event = _merge({\n\t\t\tname: field,\n\t\t\ttype: 'del',\n\t\t\toldValue: value,\n\t\t\trelated: [field],\n\t\t}, event);\n\t\tobservers.fire(_event, params.cancellable);\n\t}\n}\n", "\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"has\" operation on a target.\n *\n * @param array|object\ttarget\n * @param string\t\tname\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, name, params = {}) {\n\treturn _exec('has', target, { name }, params);\n}\n", "\n/**\n * @imports\n */\nimport {\n\t_isObject, _isTypeObject, _internals,\n\t_isNumber, _isArray, _isString\n} from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport build, { isUserObject } from '../connectors/build.js';\nimport Interceptors from '../core/Interceptors.js';\nimport Observers from '../core/Observers.js';\nimport Event from '../core/Event.js';\nimport unlink from '../connectors/unlink.js';\nimport link from '../connectors/link.js';\nimport _unproxy from '../actors/unproxy.js';\nimport _has from './has.js';\nimport _get from './get.js';\n\n/**\n * Executes a \"_setProp\" type of operation on a target.\n * Fires any observers for the specific type that may be bound to target.\n *\n * @param bool\t\t\tdefine\n * @param array|object\ttarget\n * @param object\t\tpayload\n * @param Object\t\tparams\n *\n * @return Event\n */\nexport default function(define, target, payload, params = {}) {\n\ttarget = payload.receiver || target;\n\tvar keysOrPayload = payload.keysOrPayload;\n\tvar value = payload.value;\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\tif (_isObject(keysOrPayload)) {\n\t\tparams = value || {};\n\t\tvalue = null;\n\t}\n\t// ----------\n\ttarget = _unproxy(target);\n\tvar interceptors = Interceptors.getFirebase(target, false, params.namespace),\n\t\tobservers = Observers.getFirebase(target, false, params.namespace);\n\t// ----------\n\tconst handleSet = (key, value, related, detail) => {\n\t\tvar type = 'set', descriptor;\n\t\tif (define) {\n\t\t\ttype = 'defineProperty';\n\t\t\tdescriptor = value || {};\n\t\t\tvalue = descriptor.value;\n\t\t}\n\t\t// ---------------------------------\n\t\t// The event object\n\t\tvar isUpdate = false, oldValue;\n\t\tif (_has(target, key, params)) {\n\t\t\tisUpdate = true;\n\t\t\toldValue = _get(target, key, payload.receiver, params);\n\t\t}\n\t\tvar e = {\n\t\t\tname: key,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\treceiver: payload.receiver,\n\t\t\trelated,\n\t\t\tdetail,\n\t\t\tisUpdate,\n\t\t\toldValue,\n\t\t};\n\t\t// ---------------------------------\n\t\t// The set operation\n\t\tvar defaultSet = function(_success) {\n\t\t\tif (arguments.length) {\n\t\t\t\tif (descriptor) {\n\t\t\t\t\tdescriptor = _success;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = _success;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (descriptor) {\n\t\t\t\tif (_internals(target, 'accessorizedProps', false).has(key)\n\t\t\t\t&& !_internals(target, 'accessorizedProps').get(key).restore()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tObject.defineProperty(target, key, descriptor);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (_internals(target, 'accessorizedProps', false).has(key)) {\n\t\t\t\treturn _internals(target, 'accessorizedProps').get(key).set(value);\n\t\t\t}\n\t\t\ttarget[key] = value;\n\t\t\treturn true;\n\t\t};\n\t\tif (interceptors) {\n\t\t\tvar eventObject = descriptor \n\t\t\t\t? {type: 'defineProperty', name: key, descriptor, receiver: payload.receiver, related, detail, isUpdate, oldValue} \n\t\t\t\t: {type: 'set', name: key, value, receiver: payload.receiver, related, detail, isUpdate, oldValue};\n\t\t\te.success = interceptors.fire(eventObject, defaultSet);\n\t\t} else {\n\t\t\te.success = defaultSet();\n\t\t}\n\t\t// ---------------------------------\n\t\tif (e.success && e.value !== e.oldValue) {\n\t\t\t// Unobserve outgoing value for bubbling\n\t\t\tif (_isTypeObject(e.oldValue)) {\n\t\t\t\tunlink(target, key, e.oldValue, null, params);\n\t\t\t}\n\t\t\t// Observe incoming value for bubbling\n\t\t\tif (_isTypeObject(e.value)) {\n\t\t\t\tlink(target, key, e.value, null, params);\n\t\t\t\tif (observers && (observers.subBuild || (observers.build && isUserObject(e.value)))) {\n\t\t\t\t\tbuild(e.value, observers.subBuild, observers.build, params.namespace);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn e;\n\t};\n\t// ---------------------------------\n\tvar keys, events = [];\n\tif (_isArray(keysOrPayload) || ((_isString(keysOrPayload) || _isNumber(keysOrPayload)) && (keys = _arrFrom(keysOrPayload)))) {\n\t\tevents = keys.map(key => handleSet(key, value, keys, params.detail));\n\t} else if (_isObject(keysOrPayload) && (keys = Object.keys(keysOrPayload))) {\n\t\tevents = keys.map(key => handleSet(key, keysOrPayload[key], keys, params.detail));\n\t}\n\tvar successfulEvents = events.filter(e => e.success !== false);\n\t// ---------------------------------\n\tvar evt;\n\tif (observers) {\n\t\tevt = observers.fire(successfulEvents, params.cancellable);\n\t\tevt.successCount = successfulEvents.length;\n\t} else if (params.eventTypeReturn) {\n\t\tevt = new Event(target);\n\t}\n\treturn params.eventTypeReturn ? evt : successfulEvents.length > 0;\n}\n", "\n/**\n * @imports\n */\nimport _setOrDefine from './_setOrDefine.js';\n\n/**\n * Executes a \"defineProperty\" operation on a target.\n * Fires any observers that may be bound to target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeysOrPayload\n * @param mixed\t\t\tvalue\n * @param object\t\tparams\n *\n * @return bool\n */\nexport default function(target, keysOrPayload, value = null, params = {}) {\n\treturn _setOrDefine(true/*define*/, target, { keysOrPayload, value }, params);\n}\n", "\n/**\n * @imports\n */\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _isTypeObject, _internals } from '@webqit/util/js/index.js';\nimport Interceptors from '../core/Interceptors.js';\nimport Observers from '../core/Observers.js';\nimport Event from '../core/Event.js';\nimport unlink from '../connectors/unlink.js';\nimport _unproxy from '../actors/unproxy.js';\nimport _has from './has.js';\nimport _get from './get.js';\n\n/**\n * Executes a \"deleteProperty\" operation on a target.\n * Fires any observers that may be bound to target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeys\n * @param object\t\tparams\n *\n * @return Event\n */\nexport default function(target, keys, params = {}) {\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Target must be of type object!');\n\t}\n\ttarget = _unproxy(target);\n\tvar _keys = _arrFrom(keys);\n\tvar events = _keys.map(key => {\n\t\t// ---------------------------------\n\t\t// The event object\n\t\tvar oldValue;\n\t\tif (_has(target, key, params)) {\n\t\t\toldValue = _get(target, key, null, params);\n\t\t}\n\t\tvar e = {\n\t\t\tname: key,\n\t\t\ttype: 'deleteProperty',\n\t\t\trelated: _keys,\n\t\t\tdetail: params.detail,\n\t\t\toldValue,\n\t\t};\n\t\t// ---------------------------------\n\t\t// Execute any \"del\" traps, otherwise \"del\" the default way\n\t\tvar interceptors, defaultDel = function(_success) {\n\t\t\tif (arguments.length) {\n\t\t\t\treturn _success;\n\t\t\t}\n\t\t\tif (_internals(target, 'accessorizedProps', false).has(key)\n\t\t\t&& !_internals(target, 'accessorizedProps').get(key).restore()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tdelete target[key];\n\t\t\treturn true;\n\t\t};\n\t\tif (interceptors = Interceptors.getFirebase(target, false, params.namespace)) {\n\t\t\te.success = interceptors.fire({type: 'deleteProperty', name:key, oldValue, related: _keys}, defaultDel);\n\t\t} else {\n\t\t\te.success = defaultDel();\n\t\t}\n\t\t// ---------------------------------\n\t\t// Unobserve outgoing value for bubbling\n\t\tif (e.success && _isTypeObject(e.oldValue)) {\n\t\t\tunlink(target, key, e.oldValue, null, params);\n\t\t}\n\t\treturn e;\n\t});\n\tvar successfulEvents = events.filter(e => e.success !== false);\n\t// ---------------------------------\n\tvar observers, evt;\n\tif (observers = Observers.getFirebase(target, false, params.namespace)) {\n\t\tevt = observers.fire(successfulEvents, params.cancellable);\n\t\tevt.successCount = successfulEvents.length;\n\t} else if (params.eventTypeReturn) {\n\t\tevt = new Event(target);\n\t}\n\treturn params.eventTypeReturn ? evt : successfulEvents.length > 0;\n}\n", "\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"getOwnPropertyDescriptor\" operation on a target.\n *\n * @param array|object\ttarget\n * @param string|number name\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, name, params = {}) {\n\treturn _exec('getOwnPropertyDescriptor', target, { name }, params);\n}\n", "\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"getPrototypeOf\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, params = {}) {\n\treturn _exec('getPrototypeOf', target, {}, params);\n}\n", "\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"isExtensible\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, params = {}) {\n\treturn _exec('isExtensible', target, {}, params);\n}\n", "\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"ownKeys\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, params = {}) {\n\treturn _exec('ownKeys', target, {}, params);\n}\n", "\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"preventExtensions\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, params = {}) {\n\treturn _exec('preventExtensions', target, {}, params);\n}\n", "\n/**\n * @imports\n */\nimport _setOrDefine from './_setOrDefine.js';\n\n/**\n * Executes a \"set\" operation on a target.\n * Fires any observers that may be bound to target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeysOrPayload\n * @param mixed\t\t\tvalue\n * @param object\t\treceiver\n * @param object\t\tparams\n *\n * @return bool\n */\nexport default function(target, keysOrPayload, value = null, receiver = null, params = {}) {\n\treturn _setOrDefine(false/*define*/, target, arguments.length > 3 ? { keysOrPayload, value, receiver } : { keysOrPayload, value }, params);\n}\n", "\n/**\n * @imports\n */\nimport _exec from './_exec.js';\n\n/**\n * Runs a \"setPrototypeOf\" operation on a target.\n *\n * @param array|object\ttarget\n * @param object\t\tprototype\n * @param object\t\tparams\n *\n * @return array\n */\nexport default function(target, prototype, params = {}) {\n\treturn _exec('setPrototypeOf', target, { prototype }, params);\n}\n", "\n/**\n * @imports\n */\nimport { _isArray, _internals } from '@webqit/util/js/index.js';\nimport { _isObject } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport _get from '../actions/get.js';\nimport _set from '../actions/set.js';\n\n/**\n * Initializes \"Reflxive getter/setter\" traps on the target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeys\n * @param object\t\tparams\n *\n * @return bool|array\n */\nexport default function(target, keys = [], params = {}) {\n\tparams = _isObject(keys) ? keys : params;\n\tvar successFlags = (arguments.length === 1 ? Object.keys(target) : _arrFrom(keys)).map(key => {\n\t\tif (_internals(target, 'accessorizedProps').has(key) && _internals(target, 'accessorizedProps').get(key).touch(true)) {\n\t\t\treturn false;\n\t\t}\n\t\t// ----------\n\t\tconst getDescriptorDeep = () => {\n\t\t\tvar descriptor, proto = target;\n\t\t\twhile (!descriptor && (proto = Object.getPrototypeOf(proto))) {\n\t\t\t\tdescriptor = Object.getOwnPropertyDescriptor(proto, key);\n\t\t\t}\n\t\t\treturn descriptor;\n\t\t};\n\t\t// ----------\n\t\tvar originalOwnDescriptor = Object.getOwnPropertyDescriptor(target, key),\n\t\t\taltOriginalOwnDescriptor,\n\t\t\tactiveIsAltOriginalOwnDescriptor;\n\t\tif (!originalOwnDescriptor) {\n\t\t\t// Not an own property\n\t\t\t// and maybe not even defined at all in the prototype chain\n\t\t\taltOriginalOwnDescriptor = {\n\t\t\t\twritable: true,\n\t\t\t\tenumerable: key in target ? false/* existing but inherited*/ : true,\n\t\t\t\tconfigurable: params.configurable !== false,\n\t\t\t};\n\t\t}\n\t\t// ----------\n\t\tvar reactiveOwnDescriptor = { ...(originalOwnDescriptor || altOriginalOwnDescriptor) };\n\t\tif ('value' in reactiveOwnDescriptor) {\n\t\t\tdelete reactiveOwnDescriptor.value;\n\t\t}\n\t\tif ('writable' in reactiveOwnDescriptor) {\n\t\t\tdelete reactiveOwnDescriptor.writable;\n\t\t}\n\t\t// ----------\n\t\treactiveOwnDescriptor.get = () => {\n\t\t\tif (controlObject.ongoingGets.length) {\n\t\t\t\t// .touch(true)\n\t\t\t\treturn controlObject.get();\n\t\t\t}\n\t\t\t// _get() will return here\n\t\t\t// but to call controlObject.get();\n\t\t\tcontrolObject.ongoingGets.push(1);\n\t\t\tvar value = _get(target, key, null, params);\n\t\t\tcontrolObject.ongoingGets.pop();\n\t\t\treturn value;\n\t\t};\n\t\tvar setting;\n\t\treactiveOwnDescriptor.set = newValue => {\n\t\t\tif (controlObject.ongoingSets.length) {\n\t\t\t\treturn controlObject.set(newValue);\n\t\t\t}\n\t\t\t// _set() will return here\n\t\t\t// but to call controlObject.set();\n\t\t\tcontrolObject.ongoingSets.push(1);\n\t\t\tvar operation = _set(target, key, newValue, null, params);\n\t\t\tcontrolObject.ongoingSets.pop();\n\t\t\treturn operation;\n\t\t};\n\t\t// ----------\n\t\tvar controlObject = {\n\t\t\tongoingGets: [],\n\t\t\tongoingSets: [],\n\t\t\tget: function() {\n\t\t\t\t// ---------------------\n\t\t\t\tvar descriptor = originalOwnDescriptor;\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tif (activeIsAltOriginalOwnDescriptor) {\n\t\t\t\t\t\t// Already switched to altOriginalOwnDescriptor\n\t\t\t\t\t\tdescriptor = altOriginalOwnDescriptor;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// getDescriptorDeep() or altOriginalOwnDescriptor\n\t\t\t\t\t\tdescriptor = getDescriptorDeep() || altOriginalOwnDescriptor;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// ---------------------\n\t\t\t\treturn descriptor.get ? descriptor.get.call(target) : descriptor.value;\n\t\t\t},\n\t\t\tset: function(value) {\n\t\t\t\t// ---------------------\n\t\t\t\tvar descriptor = originalOwnDescriptor;\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tif (activeIsAltOriginalOwnDescriptor) {\n\t\t\t\t\t\t// Already switched to altOriginalOwnDescriptor\n\t\t\t\t\t\tdescriptor = altOriginalOwnDescriptor;\n\t\t\t\t\t} else if (descriptor = getDescriptorDeep()) {\n\t\t\t\t\t\tif (('value' in descriptor)) {\n\t\t\t\t\t\t\t// Deep is data property.\n\t\t\t\t\t\t\t// We should rather switch to altOriginalOwnDescriptor\n\t\t\t\t\t\t\tdescriptor = altOriginalOwnDescriptor;\n\t\t\t\t\t\t\tactiveIsAltOriginalOwnDescriptor = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Not yet switched to altOriginalOwnDescriptor\n\t\t\t\t\t\t// and no getDescriptorDeep()\n\t\t\t\t\t\tdescriptor = altOriginalOwnDescriptor;\n\t\t\t\t\t\tactiveIsAltOriginalOwnDescriptor = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// ---------------------\n\t\t\t\tif (descriptor.set || descriptor.get) {\n\t\t\t\t\tif (!descriptor.set) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t// Can sometimes return undefined\n\t\t\t\t\treturn descriptor.set.call(target, value);\n\t\t\t\t}\n\t\t\t\tdescriptor.value = value;\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\trestore: function() {\n\t\t\t\ttry {\n\t\t\t\t\tif (this.intact()) {\n\t\t\t\t\t\tif (originalOwnDescriptor || activeIsAltOriginalOwnDescriptor /* switched */) {\n\t\t\t\t\t\t\tObject.defineProperty(target, key, originalOwnDescriptor || altOriginalOwnDescriptor /* switch target */);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdelete target[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_internals(target, 'accessorizedProps').delete(key);\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t} catch(e) {}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tintact: function() {\n\t\t\t\treturn (Object.getOwnPropertyDescriptor(target, key) || {}).get === reactiveOwnDescriptor.get;\n\t\t\t},\n\t\t\ttouch: function(attemptRestore = false) {\n\t\t\t\t// If intact, or not intact but not restorable, return true - \"valid\"\n\t\t\t\treturn this.intact() || (attemptRestore ? !this.restore() : false);\n\t\t\t},\n\t\t}\n\t\t// ----------\n\t\ttry {\n\t\t\tObject.defineProperty(target, key, reactiveOwnDescriptor);\n\t\t\t_internals(target, 'accessorizedProps').set(key, controlObject);\n\t\t\treturn true;\n\t\t} catch(e) {}\n\t\treturn false;\n\t});\n\treturn _isArray(keys) ? successFlags : successFlags[0];\n}\n", "\n/**\n * @imports\n */\nimport { _isArray, _isObject, _internals } from '@webqit/util/js/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\n\n/**\n * Removes previously initialized \"Reflxive getter/setter\" traps from the target.\n *\n * @param array|object\ttarget\n * @param string|array\tkeys\n * @param object\t\tparams\n *\n * @return bool|array\n */\nexport default function(target, keys = [], params = {}) {\n\tparams = _isObject(keys) ? keys : params;\n\tvar successFlags = (arguments.length === 1 ? Object.keys(target) : _arrFrom(keys)).map(key => {\n\t\tif (_internals(target, 'accessorizedProps', false).has(key)) {\n\t\t\treturn _internals(target, 'accessorizedProps').get(key).restore();\n\t\t}\n\t\treturn true;\n\t});\n\treturn _isArray(keys) ? successFlags : successFlags[0];\n}\n", "\n/**\n * @imports\n */\nimport {\n _isClass, _isFunction, _isTypeObject,\n _getType, _internals,\n} from '@webqit/util/js/index.js';\nimport apply from '../actions/apply.js';\nimport construct from '../actions/construct.js';\nimport defineProperty from '../actions/defineProperty.js';\nimport deleteProperty from '../actions/deleteProperty.js';\nimport get from '../actions/get.js';\nimport getOwnPropertyDescriptor from '../actions/getOwnPropertyDescriptor.js';\nimport getPrototypeOf from '../actions/getPrototypeOf.js';\nimport has from '../actions/has.js';\nimport isExtensible from '../actions/isExtensible.js';\nimport ownKeys from '../actions/ownKeys.js';\nimport preventExtensions from '../actions/preventExtensions.js';\nimport set from '../actions/set.js';\nimport setPrototypeOf from '../actions/setPrototypeOf.js';\n\n/**\n * Returns an object as a proxy and binds all instance methods\n * to the proxy instead of the object itself.\n *\n * @param Object|Array\t\ttarget\n * @param Object\t\t params\n *\n * @return Proxy\n */\nexport default function(target, params = {}) {\n\tif (!_isTypeObject(target)) {\n\t\tthrow new Error('Object must be of type target; \"' + _getType(target) + '\" given!');\n }\n var proxy = new Proxy(target, {\n apply: (target, thisArgument, argumentsList) => apply(target, thisArgument, argumentsList, params),\n construct: (target, argumentsList, newTarget = null) => construct(target, argumentsList, newTarget, params),\n defineProperty: (target, propertyKey, attributes) => defineProperty(target, propertyKey, attributes, params),\n deleteProperty: (target, propertyKey) => deleteProperty(target, propertyKey, params),\n get: (target, propertyKey, receiver = null) => {\n var val = get(target, propertyKey, receiver, params);\n if (params.proxyAutoBinding !== false && _isFunction(val) && !_isClass(val)) {\n return val.bind(proxy);\n }\n return val;\n },\n getOwnPropertyDescriptor: (target, propertyKey) => getOwnPropertyDescriptor(target, propertyKey, params),\n getPrototypeOf: target => getPrototypeOf(target, params),\n has: (target, propertyKey) => has(target, propertyKey, params),\n isExtensible: target => isExtensible(target, params),\n ownKeys: target => ownKeys(target, params),\n preventExtensions: target => preventExtensions(target, params),\n set: (target, propertyKey, value, receiver = null) => set(target, propertyKey, value, receiver, params),\n setPrototypeOf: (target, prototype) => setPrototypeOf(target, prototype, params),\n });\n _internals(proxy).set(proxy, target);\n\treturn proxy;\n}\n", "\n/**\n * @imports\n */\nimport { _isFunction, _isTypeObject, _isObject, _getType } from '@webqit/util/js/index.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Interceptors from '../core/Interceptors.js';\n\n/**\n * Adds a trap to an target's firebase.\n *\n * @param array|object\t\t\t\ttarget\n * @param object\t\t\t\t\ttrap\n * @param object\t\t\t\t\tparams\n *\n * @return Interceptor\n */\nexport default function(target, trap, params = {}) {\n\ttarget = _unproxy(target);\n\tif (!_isTypeObject(target)) {\n\t\tthrow new Error('Object must be of type target; \"' + _getType(handler) + '\" given!');\n\t}\n\tvar returnObj = {}, isOriginallyObj = true;\n\tif (!_isObject(trap)) {\n\t\t// Backwards compatibility\n\t\tif (_isFunction(trap)) {\n\t\t\ttrap = { '': trap };\n\t\t} else if (_isFunction(params)) {\n\t\t\ttrap = { [trap]: params };\n\t\t\tparams = arguments.length > 3 ? arguments[3] : {};\n\t\t}\n\t\tisOriginallyObj = false;\n\t}\n\tvar interceptors = Interceptors.getFirebase(target, true, params.namespace);\n\tObject.keys(trap).forEach(filter => {\n\t\tif (!_isFunction(trap[filter])) {\n\t\t\tthrow new Error('Callback' + (filter === null ? '' : ' for ' + filter) + ' must be a function; \"' + _getType(trap[filter]) + '\" given!');\n\t\t}\n\t\tvar dfn = { filter, handler: trap[filter], params }, existing;\n\t\tif (dfn.params.unique && (existing = interceptors.match(dfn)).length) {\n\t\t\tif (dfn.params.unique !== 'replace') {\n\t\t\t\treturn existing[0];\n\t\t\t}\n\t\t\tinterceptors.remove(existing[0]);\n\t\t}\n\t\tif (isOriginallyObj) {\n\t\t\treturnObj[filter] = interceptors.add(dfn);\n\t\t} else {\n\t\t\treturnObj = interceptors.add(dfn);\n\t\t}\n\t});\n\treturn returnObj;\n}\n", "\n/**\n * @imports\n */\nimport { _isFunction, _isTypeObject, _getType } from '@webqit/util/js/index.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Interceptors from '../core/Interceptors.js';\n\n/**\n * Removes traps from an target's firebase.\n *\n * @param array|object\t\t\t\ttarget\n * @param object\t\t\t\t\ttrap\n * @param object\t\t\t\t\tparams\n *\n * @return void\n */\nexport default function(target, trap = null, params = {}) {\n\ttarget = _unproxy(target);\n\tif (!target || !_isTypeObject(target)) {\n\t\tthrow new Error('Object must be of type target; \"' + _getType(target) + '\" given!');\n\t}\n\tvar interceptors = Interceptors.getFirebase(target, false, params.namespace);\n\tif (!_isObject(trap)) {\n\t\t// Backwards compatibility\n\t\tif (_isFunction(trap)) {\n\t\t\ttrap = { [null]: trap };\n\t\t} else if (_isFunction(params)) {\n\t\t\ttrap = { [trap]: params };\n\t\t\tparams = arguments.length > 3 ? arguments[3] : {};\n\t\t}\n\t\tisOriginallyObj = false;\n\t}\n\tif (interceptors = Interceptors.getFirebase(target, false, params.namespace)) {\n\t\tObject.keys(trap).forEach(filter => {\n\t\t\tif (!_isFunction(trap[filter])) {\n\t\t\t\tthrow new Error('Callback' + (filter === null ? '' : ' for ' + filter) + ' must be a function; \"' + _getType(trap[filter]) + '\" given!');\n\t\t\t}\n\t\t\tvar dfn = { filter, originalHandler: trap[filter], params };\n\t\t\treturn interceptors.removeMatches(dfn);\n\t\t});\n\t}\n}\n", "\n/**\n * @imports\n */\nimport { _copy } from '@webqit/util/obj/index.js';\nimport { _unique } from '@webqit/util/arr/index.js';\nimport { _isArray, _isTypeObject } from '@webqit/util/js/index.js';\nimport _unproxy from '../actors/unproxy.js';\nimport Observers from '../core/Observers.js';\nimport unlink from '../connectors/unlink.js';\nimport link from '../connectors/link.js';\n\n/**\n * Executes a callback function on a target in \"closure\" mode.\n * Fires any observers that may be bound to target on recorded changes.\n *\n * @param function\t\tcallback\n * @param array\t\t\t...subjects\n *\n * @return array|Event\n */\nexport default function(callback, ...subjects) {\n\tvar context = subjects.map(target => {\n\t\ttarget = _unproxy(target);\n\t\tif (!_isTypeObject(target)) {\n\t\t\tthrow new Error('Target must be of type object!');\n\t\t}\n\t\treturn {\n\t\t\ttarget,\n\t\t\tsubjectCopy: _isArray(target) ? target.slice(0) : _copy(target),\n\t\t};\n\t});\n\t// ---------------------------------\n\tvar result = callback(...subjects);\n\t// ---------------------------------\n\tconst fireDiffs = () => {\n\t\tcontext.map(cntxt => {\n\t\t\tvar initialKeys = Object.keys(cntxt.subjectCopy);\n\t\t\tvar currentKeys = Object.keys(cntxt.target);\n\t\t\tvar related = [];\n\t\t\tvar changes = _unique(initialKeys.concat(currentKeys)).map(key => {\n\t\t\t\tif (cntxt.subjectCopy[key] !== cntxt.target[key]) {\n\t\t\t\t\trelated.push(key);\n\t\t\t\t\t// ---------------------------------\n\t\t\t\t\t// The event object\n\t\t\t\t\tvar e = {\n\t\t\t\t\t\tname:key,\n\t\t\t\t\t\trelated,\n\t\t\t\t\t\tbuffered: true,\n\t\t\t\t\t};\n\t\t\t\t\tif (currentKeys.includes(key)) {\n\t\t\t\t\t\te.type = 'set';\n\t\t\t\t\t\te.value = cntxt.target[key];\n\t\t\t\t\t\tif (initialKeys.includes(key)) {\n\t\t\t\t\t\t\te.isUpdate = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.type = 'del';\n\t\t\t\t\t}\n\t\t\t\t\tif (initialKeys.includes(key)) {\n\t\t\t\t\t\te.oldValue = cntxt.subjectCopy[key];\n\t\t\t\t\t}\n\t\t\t\t\t// ---------------------------------\n\t\t\t\t\t// Unobserve outgoing value for bubbling\n\t\t\t\t\tif (_isTypeObject(cntxt.subjectCopy[key])) {\n\t\t\t\t\t\tunlink(cntxt.target, key, cntxt.subjectCopy[key]);\n\t\t\t\t\t}\n\t\t\t\t\t// Observe incoming value for bubbling\n\t\t\t\t\tif (_isTypeObject(cntxt.target[key])) {\n\t\t\t\t\t\tlink(cntxt.target, key, cntxt.target[key]);\n\t\t\t\t\t}\n\t\t\t\t\treturn e;\n\t\t\t\t}\n\t\t\t}).filter(c => c);\n\t\t\t// ---------------------------------\n\t\t\tvar observers;\n\t\t\tif (changes.length && (observers = Observers.getFirebase(cntxt.target, false))) {\n\t\t\t\treturn observers.fire(changes);\n\t\t\t}\n\t\t});\n\t};\n\tif (result instanceof Promise) {\n\t\tresult.then(fireDiffs);\n\t} else {\n\t\tfireDiffs();\n\t}\n\treturn result;\n}\n", "\n/**\n * @imports\n */\n// Actions\nimport apply from './actions/apply.js';\nimport construct from './actions/construct.js';\nimport defineProperty from './actions/defineProperty.js';\nimport deleteProperty from './actions/deleteProperty.js';\nimport get from './actions/get.js';\nimport getOwnPropertyDescriptor from './actions/getOwnPropertyDescriptor.js';\nimport getPrototypeOf from './actions/getPrototypeOf.js';\nimport has from './actions/has.js';\nimport isExtensible from './actions/isExtensible.js';\nimport ownKeys from './actions/ownKeys.js';\nimport preventExtensions from './actions/preventExtensions.js';\nimport set from './actions/set.js';\nimport setPrototypeOf from './actions/setPrototypeOf.js';\n// Actors\nimport accessorize from './actors/accessorize.js';\nimport unaccessorize from './actors/unaccessorize.js';\nimport proxy from './actors/proxy.js';\nimport unproxy from './actors/unproxy.js';\n// Reactions\nimport observe from './reactions/observe.js';\nimport unobserve from './reactions/unobserve.js';\nimport intercept from './reactions/intercept.js';\nimport unintercept from './reactions/unintercept.js';\nimport closure from './reactions/closure.js';\n// Connectors\nimport build from './connectors/build.js';\nimport link from './connectors/link.js';\nimport unlink from './connectors/unlink.js';\n// Core\nimport Observers from './core/Observers.js';\nimport Interceptors from './core/Interceptors.js';\n\n/**\n * @exports\n */\nexport default {\n\t// Actions\n\tapply,\n\tconstruct,\n\tdefineProperty,\n\tdeleteProperty,\n\tget,\n\tgetOwnPropertyDescriptor,\n\tgetPrototypeOf,\n\thas,\n\tisExtensible,\n\townKeys,\n\tpreventExtensions,\n\tset,\n\tsetPrototypeOf,\n\t// Actors\n\taccessorize,\n\tunaccessorize,\n\tproxy,\n\tunproxy,\n\t// Reactions\n\tobserve,\n\tunobserve,\n\tintercept,\n\tunintercept,\n\tclosure,\n\t// Connectors\n\tbuild,\n\tlink,\n\tunlink,\n\t// Core\n\tObservers,\n\tInterceptors,\n}", "\r\n/**\r\n * Tells if val is pure object.\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn !Array.isArray(val) && typeof val === 'object' && val;\r\n};\r\n", "\r\n/**\r\n * Detects vendor type from the given window object\r\n * \r\n * @param window window\r\n *\r\n * @return string\r\n */\r\nexport function getName(window) {\r\n // Firefox 1.0+\r\n var isFirefox = typeof window.InstallTrigger !== 'undefined';\r\n if (isFirefox) {\r\n return 'firefox';\r\n }\r\n // Safari 3.0+ \"[object HTMLElementConstructor]\" \r\n var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === \"[object SafariRemoteNotification]\"; })(!window['safari'] || (typeof window.safari !== 'undefined' && window.safari.pushNotification));\r\n if (isSafari) {\r\n return 'safari';\r\n }\r\n // Chrome 1 - 79\r\n var isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);\r\n // Edge (based on chromium) detection\r\n var isEdgeChromium = isChrome && (window.navigator.userAgent.indexOf(\"Edg\") != -1);\r\n // Opera 8.0+\r\n var isOpera = (!!window.opr && !!window.opr.addons) || !!window.opera || window.navigator.userAgent.indexOf(' OPR/') >= 0;\r\n\r\n // Internet Explorer 6-11\r\n var isIE = /*@cc_on!@*/false || !!window.document.documentMode;\r\n // Edge 20+\r\n var isEdge = !isIE && !!window.StyleMedia;\r\n // Blink engine detection\r\n var isBlink = (isChrome || isOpera) && !!window.CSS;\r\n return isEdge ? 'edge' : (\r\n isIE ? 'ie' : (\r\n isOpera ? 'opera' : (\r\n isEdgeChromium ? 'ie-chromium' : (\r\n isChrome ? 'chrome' : 'unknown'\r\n )\r\n )\r\n )\r\n );\r\n};\r\n\r\n/**\r\n * Returns the vendor-specific property prefix.\r\n *\r\n * @return object\r\n */\r\nexport function getPrefix(window) {\r\n var styles = window.getComputedStyle(window.document.documentElement, '');\r\n var prefix = (Array.prototype.slice.call(styles).join('').match(/-(moz|webkit|ms)-/) || styles.Olink === '' && ['', 'o'])[1];\r\n var api = (('WebKit|Moz|Ms|O').match(new RegExp('(' + prefix + ')', 'i')) || [])[1];\r\n return {\r\n api,\r\n prefix,\r\n css: '-' + prefix + '-',\r\n };\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isObject from '@webqit/util/js/isObject.js';\r\nimport {\r\n getName as getVendorName,\r\n getPrefix as getVendorPrefix\r\n} from './vendor.js';\r\n\r\n/**\r\n * ---------------------------\r\n * Centralized ENV initializer\r\n * for actual and virtual browser environments.\r\n * ---------------------------\r\n */\r\n\r\nexport default function() {\r\n if (!(_isObject(this) && this.window) && (typeof window === 'undefined')) {\r\n throw new Error('A window context is required.');\r\n }\r\n const _window = _isObject(this) && this.window ? this.window : window;\r\n // Create global scope?\r\n if (!_window.WebQit) {\r\n _window.WebQit = {};\r\n }\r\n if (!_window.WebQit.window) {\r\n // Is this params for global or sub scope?\r\n let _vendor, _prefix;\r\n Object.defineProperty(_window.WebQit, 'window', {get: () => _window});\r\n Object.defineProperty(_window.WebQit, 'vendor', {value: {\r\n getName: () => {\r\n if (!_vendor) {\r\n _vendor = getVendorName(_window);\r\n }\r\n return _vendor;\r\n },\r\n getPrefix: () => {\r\n if (!_prefix) {\r\n _prefix = getVendorPrefix(_window);\r\n }\r\n return _prefix;\r\n }\r\n }});\r\n }\r\n return _window.WebQit;\r\n }", "\r\n/**\r\n * Tells if val is of type \"function\".\r\n * This holds true for both regular functions and classes.\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn typeof val === 'function';\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isTypeFunction from './isTypeFunction.js';\r\n\r\n/**\r\n * Tells if val is of type \"object\".\r\n * This holds true for anything object, including built-ins.\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn Array.isArray(val) || (typeof val === 'object' && val) || _isTypeFunction(val);\r\n};\r\n", "\r\n/**\r\n * Tells if val is of type \"number\".\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn val instanceof Number || (typeof val === 'number');\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isNumber from './isNumber.js';\r\n/**\r\n * Tells if val is of type \"string\" or a numeric string.\r\n * This holds true for both numbers and numeric strings.\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn _isNumber(val) || (val !== true && val !== false && val !== null && val !== '' && !isNaN(val * 1));\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _each from '@webqit/util/obj/each.js';\r\n\r\n/**\r\n * ---------------------------\r\n * Binds callbacks to requestAnimationFrame()\r\n * to create a central \"read/write\" phases for Ctxt access.\r\n * ---------------------------\r\n */\r\n\t\t\t\r\nexport default class Reflow {\r\n\r\n\t/**\r\n\t * Starts the loop.\r\n\t *\r\n\t * @return this\r\n\t */\r\n\tconstructor(window, asyncDOM = true) {\r\n\t\tthis.window = window;\r\n\t\tthis.async = asyncDOM;\r\n\t\tthis.readCallbacks = [];\r\n\t\tthis.writeCallbacks = [];\r\n\t\tthis._run();\r\n\t}\r\n\r\n\t_run() {\r\n\t\tthis.window.requestAnimationFrame(() => {\r\n\t\t\tthis.readCallbacks.forEach((callback, i) => {\r\n\t\t\t\tif (callback && !callback()) {\r\n\t\t\t\t\tthis.readCallbacks[i] = null;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.writeCallbacks.forEach((callback, i) => {\r\n\t\t\t\tif (callback && !callback()) {\r\n\t\t\t\t\tthis.writeCallbacks[i] = null;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis._run();\r\n\t\t});\r\n\t}\r\n\t\r\n\t/**\r\n\t * Binds a callback to the \"read\" phase.\r\n\t *\r\n\t * @param function \tcallback\r\n\t * @param bool\t\twithPromise\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tonread(callback, withPromise = false) {\r\n\t\tif (withPromise) {\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tif (this.async === false) {\r\n\t\t\t\t\tcallback(resolve, reject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.readCallbacks.push(() => {\r\n\t\t\t\t\t\tcallback(resolve, reject);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (this.async === false) {\r\n\t\t\tcallback();\r\n\t\t} else {\r\n\t\t\tthis.readCallbacks.push(callback);\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Binds a callback to the \"write\" phase.\r\n\t *\r\n\t * @param function \tcallback\r\n\t * @param bool\t\twithPromise\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tonwrite(callback, withPromise = false) {\r\n\t\tif (withPromise) {\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tif (this.async === false) {\r\n\t\t\t\t\tcallback(resolve, reject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.writeCallbacks.push(() => {\r\n\t\t\t\t\t\tcallback(resolve, reject);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (this.async === false) {\r\n\t\t\tcallback();\r\n\t\t} else {\r\n\t\t\tthis.writeCallbacks.push(callback);\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * A special construct for Ctxt manipulations that span\r\n\t * one or more read/write cycles.\r\n\t *\r\n\t * @param function \tread\r\n\t * @param function \twrite\r\n\t * @param mixed\t\tprevTransaction\r\n\t *\r\n\t * @return void|mixed\r\n\t */\r\n\tcycle(read, write, prevTransaction) {\r\n\t\tthis.onread(() => {\r\n\t\t\t// Record initial values\r\n\t\t\tvar readReturn = read(prevTransaction);\r\n\t\t\tif (readReturn) {\r\n\t\t\t\t// Call erite, the transation\r\n\t\t\t\tvar callWrite = (readReturn) => {\r\n\t\t\t\t\tthis.onwrite(() => {\r\n\t\t\t\t\t\tvar writeReturn = write(readReturn, prevTransaction);\r\n\t\t\t\t\t\tif (writeReturn) {\r\n\t\t\t\t\t\t\t// Repeat transaction\r\n\t\t\t\t\t\t\tvar repeatTransaction = (writeReturn) => {\r\n\t\t\t\t\t\t\t\tthis.cycle(read, write, writeReturn);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\t// If \"write\" returns a promise, we wait until it is resolved\r\n\t\t\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t\t\tif (writeReturn instanceof Promise) {\r\n\t\t\t\t\t\t\t\twriteReturn.then(repeatTransaction);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\trepeatTransaction();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\t// If \"read\" returns a promise, we wait until it is resolved\r\n\t\t\t\t// ---------------------------------------\r\n\t\t\t\tif (readReturn instanceof Promise) {\r\n\t\t\t\t\treadReturn.then(callWrite);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcallWrite();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n};", "\r\n/**\r\n * Tells if val is of type \"string\".\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn val instanceof String || (typeof val === 'string' && val !== null);\r\n};\r\n", "\r\n/**\r\n * Tells if val is of type \"array\".\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn Array.isArray(val);\r\n};\r\n", "\r\n/**\r\n * Tells if val is undefined or is of type \"undefined\".\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn arguments.length && (val === undefined || typeof val === 'undefined');\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isString from './isString.js';\r\nimport _isUndefined from './isUndefined.js';\r\n\r\n/**\r\n * Tells if val is \"array-like\".\r\n * This holds true for anything that has a length property.\r\n *\r\n * @param object\t \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn !_isString(val) && !_isUndefined(val.length);\r\n};\r\n", "\r\n/**\r\n * Tells if val is undefined or is null.\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn val === null || val === '';\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isNull from './isNull.js';\r\nimport _isUndefined from './isUndefined.js';\r\nimport _isTypeObject from './isTypeObject.js';\r\n\r\n/**\r\n * Tells if val is empty in its own type.\r\n * This holds true for NULLs, UNDEFINED, FALSE, 0,\r\n * objects without keys, empty arrays.\r\n *\r\n * @param string \tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn _isNull(val) || _isUndefined(val) || val === false || val === 0 \r\n\t\t|| (_isTypeObject(val) && !Object.keys(val).length);\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isArray from '../js/isArray.js';\r\nimport _isTypeArray from '../js/isTypeArray.js';\r\nimport _isEmpty from '../js/isEmpty.js';\r\nimport _isObject from '../js/isObject.js';\r\n\r\n/**\r\n * Casts an array-like object to an array.\r\n *\r\n * @param mixed \tval\r\n * @param bool\t \tcastObject\r\n *\r\n * @return array\r\n */\r\nexport default function(val, castObject = true) {\r\n\tif (_isArray(val)) {\r\n\t\treturn val;\r\n\t};\r\n\tif (!castObject && _isObject(val)) {\r\n\t\treturn [val];\r\n\t};\r\n\tif (val !== false && val !== 0 && _isEmpty(val)) {\r\n\t\treturn [];\r\n\t};\r\n\tif (_isTypeArray(val)) {\r\n\t\treturn Array.prototype.slice.call(val);\r\n\t};\r\n\tif (_isObject(val)) {\r\n\t\treturn Object.values(val);\r\n\t};\r\n\treturn [val];\r\n};\r\n", "\n/**\n * @imports\n */\nimport init from '../index.js';\n\nexport default function(callback) {\n const WebQit = init.call(this);\n if (WebQit.DOM.isDOMReady || WebQit.window.document.readyState === 'complete') {\n callback(WebQit.window);\n } else {\n if (!WebQit.window.domReadyCallbacks) {\n WebQit.window.domReadyCallbacks = [];\n WebQit.window.document.addEventListener('DOMContentLoaded', () => {\n WebQit.DOM.isDOMReady = true;\n WebQit.window.domReadyCallbacks.splice(0).forEach(cb => cb(WebQit.window));\n }, false);\n }\n WebQit.window.domReadyCallbacks.push(callback);\n }\n}\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isString from '@webqit/util/js/isString.js';\r\nimport _difference from '@webqit/util/arr/difference.js';\r\nimport _arrFrom from '@webqit/util/arr/from.js';\r\nimport domReady from './ready.js';\r\n\r\n/**\r\n * ---------------------\r\n * Ctxt Mutations Utilities\r\n * ---------------------\r\n */\r\nexport default class Mutations {\r\n\r\n\t/**\r\n\t * Starts the loop.\r\n\t *\r\n\t * @return this\r\n\t */\r\n\tconstructor(window) {\r\n\t\tthis.window = window;\r\n\t}\r\n\r\n\t/**\r\n\t * ---------------------\r\n\t * PRESENCE\r\n\t * ---------------------\r\n\t */\r\n\t\t\r\n\t/**\r\n\t * Shortcut function to onPresenceChange().\r\n\t *\r\n\t * Observes when the given elements or selectors are added\r\n\t * to the given context.\r\n\t *\r\n\t * @param window\t\t\t\t\twindow\r\n\t * @param array|Element|string\t\tels\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\tparams\r\n\t *\r\n\t * @return MutationObserver\r\n\t */\r\n\tonAdded(els, callback, params = {}) {\r\n\t\tparams.on = 'added';\r\n\t\treturn this.onPresenceChange(els, (el, presence, isTransient, addedState, removedState) => {\r\n\t\t\tcallback(el, presence, isTransient, addedState, removedState);\r\n\t\t}, params);\r\n\t}\r\n\r\n\t/**\r\n\t * Shortcut function to onPresenceChange().\r\n\t *\r\n\t * Observes when the given elements or selectors are removed\r\n\t * from the given context.\r\n\t *\r\n\t * @param array|Element|string\t\tels\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\tparams\r\n\t *\r\n\t * @return MutationObserver\r\n\t */\r\n\tonRemoved(els, callback, params = {}) {\r\n\t\tparams.on = 'removed';\r\n\t\treturn this.onPresenceChange(els, (el, presence, isTransient, addedState, removedState) => {\r\n\t\t\tcallback(el, presence, isTransient, addedState, removedState);\r\n\t\t}, params);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a MutationObserver that fires if currently, and whenever,\r\n\t * the given element, or selector, is present in the Ctxt.\r\n\t *\r\n\t * @param string|Element\t\t\t\tselector\r\n\t * @param function\t\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\t\tparams\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tonPresent(selector, callback, params = {}) {\r\n\t\t// On Ctxt-ready\r\n\t\tdomReady.call(this.window, () => {\r\n\t\t\t// On Ctxt mutation\r\n\t\t\tif (this.window.MutationObserver) {\r\n\t\t\t\tthis.onAdded(selector, (els, presence) => {\r\n\t\t\t\t\tels.forEach(el => callback(el, presence));\r\n\t\t\t\t}, params);\r\n\t\t\t}\r\n\t\t\tif (_isString(selector)) {\r\n\t\t\t\t// IMPORTANT: This must come after having observed mutations above\r\n\t\t\t\t// as the callback handler may trigger more additions\r\n\t\t\t\t_arrFrom(this.window.document.querySelectorAll(selector)).forEach(el => callback(el, 1));\r\n\t\t\t} else if (selector.parentNode) {\r\n\t\t\t\tcallback(selector, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a MutationObserver that fires if currently, and whenever,\r\n\t * the given element, or selector, is absent in the Ctxt.\r\n\t *\r\n\t * @param string|Element\t\t\t\tselector\r\n\t * @param function\t\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\t\tparams\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tonAbsent(selector, callback, params = {}) {\r\n\t\t// On Ctxt-ready\r\n\t\tdomReady.call(this.window, () => {\r\n\t\t\t// On Ctxt mutation\r\n\t\t\tif (this.window.MutationObserver) {\r\n\t\t\t\tonRemoved(selector, (els, presence) => {\r\n\t\t\t\t\tels.forEach(el => callback(el, presence));\r\n\t\t\t\t}, params);\r\n\t\t\t}\r\n\t\t\tif (_isString(selector)) {\r\n\t\t\t\t// IMPORTANT: This must come after having observed mutations above\r\n\t\t\t\t// as the callback handler may trigger more removals\r\n\t\t\t\tif (_arrFrom(this.window.document.querySelectorAll(selector)).length === 0) {\r\n\t\t\t\t\tcallback(null, 0);\r\n\t\t\t\t}\r\n\t\t\t} else if (!selector.parentNode) {\r\n\t\t\t\tcallback(selector, 0);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Observes when the given elements or selectors are added or removed\r\n\t * from the given context.\r\n\t *\r\n\t * @param array|Element|string\t\tels\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\tparams\r\n\t *\r\n\t * @return MutationObserver\r\n\t */\r\n\tonPresenceChange(els, callback, params = {}) {\r\n\t\tels = _arrFrom(els, false/*castObject*/);\r\n\t\tvar search = (el, nodeListArray) => {\r\n\t\t\t// Filter out text nodes\r\n\t\t\tnodeListArray = nodeListArray.filter(node => node.matches);\r\n\t\t\tif (_isString(el)) {\r\n\t\t\t\t// Is directly mutated...\r\n\t\t\t\tvar matches = nodeListArray.filter(node => node.matches(el));\r\n\t\t\t\t// Is contextly mutated...\r\n\t\t\t\tif (params.observeIndirectMutation !== false) {\r\n\t\t\t\t\tmatches = nodeListArray\r\n\t\t\t\t\t\t.reduce((collection, node) => collection.concat(_arrFrom(node.querySelectorAll(el))), matches);\r\n\t\t\t\t\tif (matches.length) {\r\n\t\t\t\t\t\treturn matches;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// Is directly mutated...\r\n\t\t\t\tif (nodeListArray.includes(el)) {\r\n\t\t\t\t\treturn [el];\r\n\t\t\t\t}\r\n\t\t\t\t// Is contextly mutated...\r\n\t\t\t\tif (params.observeIndirectMutation !== false && nodeListArray.length) {\r\n\t\t\t\t\tvar parentNode = el;\r\n\t\t\t\t\twhile(parentNode = parentNode.parentNode) {\r\n\t\t\t\t\t\tif (nodeListArray.includes(parentNode)) {\r\n\t\t\t\t\t\t\treturn [el];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar match = (els, sourceArray) => {\r\n\t\t\t// -------------------------------\r\n\t\t\t// Search can be expensive...\r\n\t\t\t// Multiple listeners searching the same thing in the same list?\r\n\t\t\tif (!sourceArray.$$searchCache) {\r\n\t\t\t\tsourceArray.$$searchCache = new Map();\r\n\t\t\t}\r\n\t\t\t// -------------------------------\r\n\t\t\treturn els.reduce((matches, el) => {\r\n\t\t\t\t// -------------------------------\r\n\t\t\t\tvar _matches;\r\n\t\t\t\tif (sourceArray.$$searchCache.has(el)) {\r\n\t\t\t\t\t_matches = sourceArray.$$searchCache.get(el);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_matches = search(el, sourceArray, _isString(el)) || [];\r\n\t\t\t\t\tsourceArray.$$searchCache.set(el, _matches);\r\n\t\t\t\t}\r\n\t\t\t\treturn matches.concat(_matches);\r\n\t\t\t}, []);\r\n\t\t};\r\n\t\tvar addedState = new Set(), removedState = new Set();\r\n\t\tvar fire = (list, state, isTransient) => {\r\n\t\t\tif ((state && params.on === 'removed') || (!state && params.on === 'added')) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif ((list = match(els, list)).length) {\r\n\t\t\t\tif (params.maintainCallState) {\r\n\t\t\t\t\tlist.forEach(el => {\r\n\t\t\t\t\t\tif (state) {\r\n\t\t\t\t\t\t\taddedState.add(el);\r\n\t\t\t\t\t\t\tremovedState.delete(el);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\taddedState.delete(el);\r\n\t\t\t\t\t\t\tremovedState.add(el);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tcallback(list, state, isTransient, addedState, removedState);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcallback(list, state, isTransient);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar subject = params.context || this.window.document.documentElement;\r\n\t\tvar mo = this._observe(subject, (removed__addedNodes, added__removedNodes, addedNodes, removedNodes) => {\r\n\t\t\tif (!params.ignoreTransients) {\r\n\t\t\t\tfire(removed__addedNodes, 0, true);\r\n\t\t\t\tfire(removed__addedNodes.concat(added__removedNodes), 1, true);\r\n\t\t\t\tfire(added__removedNodes, 0, true);\r\n\t\t\t}\r\n\t\t\tfire(removedNodes, 0);\r\n\t\t\tfire(addedNodes, 1);\r\n\t\t});\r\n\t\treturn mo;\r\n\t}\r\n\r\n\t/**\r\n\t * ---------------------\r\n\t * MUTATIONS\r\n\t * ---------------------\r\n\t */\r\n\r\n\t/**\r\n\t * Observes changes in attributes of the given element.\r\n\t *\r\n\t * @param Element\t\t\t\t\tel\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param array\t\t\t\t\t\tfilter\r\n\t *\r\n\t * @return MutationObserver\r\n\t */\r\n\tonAttrChange(el, callback, filter = []) {\r\n\t\tvar observer = new this.window.MutationObserver(callback);\r\n\t\tvar params = {attributes:true, attributeOldValue:true};\r\n\t\tif (filter) {\r\n\t\t\tparams.attributeFilter = filter;\r\n\t\t}\r\n\t\tobserver.observe(el, params);\r\n\t\treturn observer;\r\n\t}\r\n\r\n\t/**\r\n\t * Observes changes in tree/subtree of the given element.\r\n\t *\r\n\t * @param Element\t\t\t\t\tel\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param bool\t\t\t\t\t\tsubtree\r\n\t *\r\n\t * @return MutationObserver\r\n\t */\r\n\tonTreeChange(el, callback, subtree = false) {\r\n\t\tvar observer = new this.window.MutationObserver(callback);\r\n\t\tvar params = {childList:true, subtree};\r\n\t\tobserver.observe(el, params);\r\n\t\treturn observer;\r\n\t}\r\n\r\n\t/**\r\n\t * Observes mutations on the given element.\r\n\t *\r\n\t * @param Element\t\t\t\t\tel\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\tparams\r\n\t *\r\n\t * @return MutationObserver\r\n\t */\r\n\tonMutation(el, callback, params) {\r\n\t\tvar observer = new this.window.MutationObserver(callback);\r\n\t\tobserver.observe(el, params);\r\n\t\treturn observer;\r\n\t}\r\n\r\n\t/**\r\n\t * \r\n\t * @param Element subject \r\n\t * @param Function callback \r\n\t */\r\n\t_observe(subject, callback) {\r\n\t\tif (!MutationObserversCache.has(subject)) {\r\n\t\t\tconst callbacks = new Set();\r\n\t\t\tconst observer = new this.window.MutationObserver(mutations => {\r\n\t\t\t\tif (!callbacks.size) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar addedNodes = mutations.reduce((list, mut) => list.concat(_arrFrom(mut.addedNodes)), []),\r\n\t\t\t\tremovedNodes = mutations.reduce((list, mut) => list.concat(_arrFrom(mut.removedNodes)), []),\r\n\t\t\t\tremoved__addedNodes = [],\r\n\t\t\t\tadded__removedNodes = [];\r\n\r\n\t\t\t\taddedNodes = new Set(addedNodes);\r\n\t\t\t\tremovedNodes = new Set(removedNodes);\r\n\t\t\t\taddedNodes.forEach(el => {\r\n\t\t\t\t\tif (removedNodes.has(el)) {\r\n\t\t\t\t\t\tremovedNodes.delete(el);\r\n\t\t\t\t\t\taddedNodes.delete(el);\r\n\t\t\t\t\t\tif (el.isConnected) {\r\n\t\t\t\t\t\t\tremoved__addedNodes.push(el);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tadded__removedNodes.push(el);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\taddedNodes = [...addedNodes];\r\n\t\t\t\tremovedNodes = [...removedNodes];\r\n\r\n\t\t\t\tcallbacks.forEach(callback => callback(removed__addedNodes, added__removedNodes, addedNodes, removedNodes));\r\n\t\t\t});\r\n\t\t\tobserver.observe(subject, {childList:true, subtree:true});\r\n\t\t\tMutationObserversCache.set(subject, {callbacks, observer});\r\n\t\t}\r\n\t\tconst _observer = MutationObserversCache.get(subject);\r\n\t\t_observer.callbacks.add(callback);\r\n\t\treturn {disconnect() {\r\n\t\t\t_observer.callbacks.delete(callback);\r\n\t\t}, reconnect() {\r\n\t\t\t_observer.callbacks.add(callback);\r\n\t\t}};\r\n\t}\r\n};\r\n\r\nconst MutationObserversCache = new Map();\r\n", "\r\n/**\r\n * Applies all supported polyfills\r\n */\r\nexport default function(window) {\r\n CSS_escape(window);\r\n Node_isConnected(window);\r\n Element_matches(window);\r\n}\r\n\r\n/**\r\n * Polyfills the window.CSS object.\r\n * \r\n * @return void\r\n */\r\nexport function CSS_escape(window) {\r\n if (!window.CSS) {\r\n window.CSS = {};\r\n }\r\n if (!window.CSS.escape) {\r\n /**\r\n * Polyfills the window.CSS.escape() function.\r\n * \r\n * @param string str \r\n * \r\n * @return string\r\n */\r\n window.CSS.escape = str => str.replace(/([\\:@\\~\\$\\&])/g, '\\\\$1');\r\n }\r\n}\r\n\r\n/**\r\n * Polyfills the Node.prototype.isConnected property\r\n * \r\n * @see MDN\r\n * \r\n * @return bool\r\n*/\r\nexport function Node_isConnected(window) {\r\n if (!('isConnected' in window.Node.prototype)) {\r\n Object.defineProperty(window.Node.prototype, 'isConnected', {get: function() {\r\n return !this.ownerDocument || !(\r\n this.ownerDocument.compareDocumentPosition(this)\r\n & this.DOCUMENT_POSITION_DISCONNECTED);\r\n }});\r\n }\r\n}\r\n\r\n/**\r\n * Polyfills the Element.prototype.matches() method\r\n * \r\n * @see MDN\r\n * \r\n * @return void\r\n*/\r\nexport function Element_matches(window) {\r\n if (!window.Element.prototype.matches) {\r\n window.Element.prototype.matches = \r\n window.Element.prototype.matchesSelector || \r\n window.Element.prototype.mozMatchesSelector ||\r\n window.Element.prototype.msMatchesSelector || \r\n window.Element.prototype.oMatchesSelector || \r\n window.Element.prototype.webkitMatchesSelector ||\r\n function(s) {\r\n var matches = (this.document || this.ownerDocument).querySelectorAll(s),\r\n i = matches.length;\r\n while (--i >= 0 && matches.item(i) !== this) {}\r\n return i > -1; \r\n };\r\n }\r\n}", "\r\n/**\r\n * @imports\r\n */\r\nimport _isString from '@webqit/util/js/isString.js';\r\nimport _arrFrom from '@webqit/util/arr/from.js';\r\nimport init from '../index.js';\r\n\r\n/**\r\n * Creates one or a list of DOM elements\r\n * from an input of markup, selector, HTMLElement.\r\n *\r\n * @param mixed \t\t\t\tinput\r\n * @param document|Element\t context\r\n * @param bool\t\t \t\t\tall\r\n *\r\n * @return Element|Array\r\n */\r\nexport default function query(input, context = null, all = false) {\r\n\tconst WebQit = init.call(this);\r\n\tif (_isString(input)) {\r\n\t\tvar els;\r\n\t\tif (input.trim().startsWith('<')) {\r\n\t\t\t// Create a node from markup\r\n\t\t\tvar temp = WebQit.window.document.createElement('div');\r\n\t\t\ttemp.innerHTML = input;\r\n\t\t\tels = all ? _arrFrom(temp.children) : temp.firstChild;\r\n\t\t} else {\r\n\t\t\tels = all ? _arrFrom(querySelectorAll.call(this, input, context)) : querySelector.call(this, input, context);\r\n\t\t}\r\n\t\treturn els;\r\n\t}\r\n\tif (input instanceof WebQit.window.Element) {\r\n\t\treturn all ? [input] : input;\r\n\t}\r\n\treturn all ? _arrFrom(input) : input;\r\n}\r\n\r\n/**\r\n * Creates a list of DOM elements\r\n * from an input of markup, selector, HTMLElement.\r\n *\r\n * @param mixed \t\t\t\tinput\r\n * @param document|Element\t context\r\n *\r\n * @return Array\r\n */\r\nexport function queryAll(selector, context = null) {\r\n return query.call(this, selector, context, true);\r\n}\r\n\r\n/**\r\n * Queries a DOM context for elements matching\r\n * the given selector.\r\n *\r\n * @param string \t\t\t\tselector\r\n * @param document|Element\t context\r\n * @param bool\t\t \t\t\tall\r\n *\r\n * @return Element|DOMNodeList\r\n */\r\nexport function querySelector(selector, context = null, all = false) {\r\n\tconst WebQit = init.call(this);\r\n context = context || WebQit.window.document;\r\n\tvar matchedItems, method = all ? 'querySelectorAll' : 'querySelector';\r\n\ttry {\r\n\t\tmatchedItems = context[method](selector);\r\n\t} catch(e) {\r\n\t\ttry {\r\n\t\t\tmatchedItems = context[method](selector.replace(/\\:is\\(/g, ':matches('));\r\n\t\t} catch(e) {\r\n\t\t\ttry {\r\n\t\t\t\tmatchedItems = context[method](selector.replace(/\\:is\\(/g, ':-webkit-any('));\r\n\t\t\t} catch(e) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tmatchedItems = context[method](selector.replace(/\\:is\\(/g, ':-moz-any('));\r\n\t\t\t\t} catch(e) {\r\n\t\t\t\t\tthrow e;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn matchedItems;\r\n}\r\n\r\n/**\r\n * Queries a DOM context for elements matching\r\n * the given selector.\r\n *\r\n * @param string \t\t\t\tselector\r\n * @param document|Element\t context\r\n *\r\n * @return DOMNodeList\r\n */\r\nexport function querySelectorAll(selector, context = null) {\r\n return querySelector.call(this, selector, context, true);\r\n}\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isTypeFunction from './isTypeFunction.js';\r\n\r\n/**\r\n * Tells if val is of type \"function\".\r\n *\r\n * @param object \t\tval\r\n *\r\n * @return bool\r\n */\r\nexport default function(val) {\r\n\treturn _isTypeFunction(val) || (val && {}.toString.call(val) === '[object function]');\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isTypeObject from '../js/isTypeObject.js';\r\nimport _isUndefined from '../js/isUndefined.js';\r\nimport _isNull from '../js/isNull.js';\r\nimport _arrFrom from '../arr/from.js';\r\n\r\n/**\r\n * Retrieves the value at the given path.\r\n *\r\n * A return value of undefined is ambiguous, and can mean either that the\r\n * path does not exist, or that the path actually exists but with a value of undefined. If it is required to\r\n * know whether the path actually exists, pass an object as a third argument.\r\n * This object will have an \"exists\" key set to true/false.\r\n *\r\n * @param object \t\t\t\tctxt\r\n * @param array \t\t\t\tpath\r\n * @param object \t\t\t\ttrap\r\n * @param object \t\t\t\treciever\r\n *\r\n * @return mixed\r\n */\r\nexport default function(ctxt, path, trap = {}, reciever = {}) {\r\n\tpath = _arrFrom(path).slice();\r\n\tvar _ctxt = ctxt;\r\n\twhile(!_isUndefined(_ctxt) && !_isNull(_ctxt) && path.length) {\r\n\t\tvar _key = path.shift();\r\n\t\tif (!(trap.get ? trap.get(_ctxt, _key) : (_isTypeObject(_ctxt) ? _key in _ctxt : _ctxt[_key]))) {\r\n\t\t\treciever.exists = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t_ctxt = trap.get ? trap.get(_ctxt, _key) : _ctxt[_key];\r\n\t}\r\n\treciever.exists = true;\r\n\treturn _ctxt;\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isTypeObject from '../js/isTypeObject.js';\r\nimport _isFunction from '../js/isFunction.js';\r\nimport _isNumeric from '../js/isNumeric.js';\r\nimport _isArray from '../js/isArray.js';\r\nimport _arrFrom from '../arr/from.js';\r\nimport _get from './get.js';\r\n\r\n/**\r\n * Sets a value to the given path.\r\n *\r\n * @param object \t\t\t\tobj\r\n * @param array \t\t\t\tpath\r\n * @param mixed \t\t\t\tval\r\n * @param object|function \t\tbuildTree\r\n * @param object \t\t\t\ttrap\r\n *\r\n * @return bool\r\n */\r\nexport default function(obj, path, val, buildTree = {}, trap = {}) {\r\n\tconst _set = (target, key, val) => {\r\n\t\tif (trap.set) {\r\n\t\t\treturn trap.set(target, key, val);\r\n\t\t} else {\r\n\t\t\tif (_isNumeric(path[i]) && _isArray(target)) {\r\n\t\t\t\ttarget.push(val);\r\n\t\t\t} else {\r\n\t\t\t\ttarget[key] = val;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};\r\n\tpath = _arrFrom(path);\r\n\tvar target = obj;\r\n\tfor(var i = 0; i < path.length; i ++) {\r\n\t\tif (i < path.length - 1) {\r\n\t\t\tif (!target || (!_isTypeObject(target) && !_isFunction(target))) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tvar branch = _get(target, path[i], trap);\r\n\t\t\tif (!_isTypeObject(branch)) {\r\n\t\t\t\tif (trap.buildTree === false) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tbranch = _isFunction(trap.buildTree) ? trap.buildTree(i) : (_isNumeric(path[i + 1]) ? [] : {});\r\n\t\t\t\tvar branchSuccess = _set(target, path[i], branch);\r\n\t\t\t\tif (!branchSuccess) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttarget = branch;\r\n\t\t} else {\r\n\t\t\treturn _set(target, path[i], val);\r\n\t\t}\r\n\t}\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _isTypeObject from '../js/isTypeObject.js';\r\nimport _isFunction from '../js/isFunction.js';\r\nimport _arrFrom from '../arr/from.js';\r\nimport _get from './get.js';\r\n\r\n/**\r\n * Unsets a value from the given path.\r\n *\r\n * @param object \t\t\t\tobj\r\n * @param array \t\t\t\tpath\r\n * @param bool|function \t\treduceTree\r\n * @param object \t\t\t\ttrap\r\n *\r\n * @return bool\r\n */\r\nexport default function(obj, path, reduceTree = false, trap = {}) {\r\n\tpath = _arrFrom(path);\r\n\tvar success = false;\r\n\tdo {\r\n\t\tvar lastKey = path.pop();\r\n\t\tvar lastKey = lastKey === ''/*null*/ ? 0 : lastKey;\r\n\t\tvar _obj = obj;\r\n\t\tif (path.length) {\r\n\t\t\t_obj = _get(obj, path, {}/*reciever*/, trap);\r\n\t\t}\r\n\t\tif ((_isTypeObject(_obj) || _isFunction(_obj)) && (trap.has ? trap.has(_obj, lastKey) : lastKey in _obj)) {\r\n\t\t\tif (trap.deleteProperty) {\r\n\t\t\t\tsuccess = trap.deleteProperty(_obj, lastKey);\r\n\t\t\t} else if (trap.del) {\r\n\t\t\t\tsuccess = trap.del(_obj, lastKey);\r\n\t\t\t} else {\r\n\t\t\t\tdelete _obj[lastKey];\r\n\t\t\t\tsuccess = true;\r\n\t\t\t}\r\n\t\t}\r\n\t} while (success && reduceTree && path.length && (_isTypeObject(_obj) || _isFunction(_obj)) && !(trap.keys ? trap.keys(_obj) : Object.keys(_obj)).length);\r\n\treturn success;\r\n};\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport _get from './get.js';\r\n\r\n/**\r\n * Tells if the given path exists.\r\n *\r\n * @param object \t\t\t\tobj\r\n * @param array \t\t\t\tpath\r\n * @param object \t\t\t\ttrap\r\n *\r\n * @return bool\r\n */\r\nexport default function(obj, path, trap = {}) {\r\n\tvar reciever = {};\r\n\t_get(obj, path, trap, reciever);\r\n\treturn reciever.exists;\r\n};\r\n", "\n/**\n * @imports\n */\nimport _isNumeric from '@webqit/util/js/isNumeric.js';\nimport _isObject from '@webqit/util/js/isObject.js';\nimport _merge from '@webqit/util/obj/merge.js';\nimport _set from '@webqit/util/obj/set.js';\nimport _get from '@webqit/util/obj/get.js';\nimport _del from '@webqit/util/obj/del.js';\nimport _has from '@webqit/util/obj/has.js';\nimport init from '../index.js';\n\n/**\n * A WebQit's meta tag props reader.\n * \n * @param String name\n * @param Bool\t readWrite\n * \n * @return Object\n */\nexport default function meta(name, readWrite = false) {\n const WebQit = init.call(this);\n var metaInstance = {};\n\n // Initialize reader\n if (!(metaInstance.el = WebQit.window.document.head.querySelector('meta[name=\"oohtml\"]')) && readWrite) {\n metaInstance.el = WebQit.window.document.createElement('meta');\n metaInstance.el.setAttribute('name', name);\n WebQit.window.document.head.append(metaInstance.el);\n }\n if (metaInstance.el) {\n metaInstance.vars = (metaInstance.el.getAttribute('content') || '').split(';').filter(v => v).reduce((_metaVars, directive) => {\n var directiveSplit = directive.split('=').map(d => d.trim());\n _set(_metaVars, directiveSplit[0].split('.'), directiveSplit[1] === 'true' \n ? true : (directiveSplit[1] === 'false' \n ? false : (_isNumeric(directiveSplit[1]) ? parseInt(directiveSplit[1]) : directiveSplit[1])\n )\n );\n return _metaVars;\n }, {});\n }\n\n // Read prop...\n metaInstance.get = function(prop) {\n return _get(this.vars, prop.split('.'));\n }\n\n // Write prop...\n metaInstance.set = function(prop, val = null, asDefaults = false) {\n var props = _isObject(prop) ? prop : {[prop]: val === true ? 'true' : val};\n asDefaults = arguments.length < 3 ? val : asDefaults;\n Object.keys(props).forEach(name => {\n if (props[name] === false) {\n _del(this.vars, name.split('.'));\n } else if (_isObject(props[name])) {\n Object.keys(props[name]).forEach(_prop => {\n var _path = (name + '.' + _prop).split('.');\n if (!asDefaults || !_has(this.vars, _path)) {\n _set(this.vars, _path, props[name][_prop]);\n }\n });\n } else {\n var _path = name.split('.');\n if (!asDefaults || !_has(this.vars, _path)) {\n _set(this.vars, _path, props[name]);\n }\n }\n });\n if (readWrite) {\n const flatten = (base, obj) => Object.keys(obj).reduce((arr, name) => {\n var path = (base ? base + '.' : '') + name;\n if (_isObject(obj[name])) {\n arr.push(...flatten(path, obj[name]));\n } else {\n arr.push(path + '=' + obj[name]);\n }\n return arr;\n }, []);\n this.el.setAttribute('content', flatten('', this.vars).join(';'));\n }\n return true;\n }\n\n // Write prop...\n metaInstance.defaults = function(prop, val = null) {\n return this.set(prop, val, true);\n };\n\n return metaInstance;\n}", "\r\n/**\r\n * @imports\r\n */\r\nimport init from '../index.js';\r\nimport Reflow from './Reflow.js';\r\nimport Mutations from './Mutations.js';\r\nimport polyfill from './polyfills.js';\r\nimport query, { queryAll, querySelector, querySelectorAll } from './query.js';\r\nimport ready from './ready.js';\r\nimport meta from './meta.js';\r\n\r\n/**\r\n * ---------------------------\r\n * Ctxt-Scope initializations.\r\n * ---------------------------\r\n */\r\n\r\nexport default function() {\r\n const WebQit = init.call(this);\r\n if (WebQit.DOM) {\r\n return WebQit;\r\n }\r\n WebQit.DOM = {};\r\n polyfill(WebQit.window);\r\n WebQit.DOM.reflow = new Reflow(WebQit.window);\r\n WebQit.DOM.mutations = new Mutations(WebQit.window);\r\n WebQit.DOM.meta = meta.bind(WebQit.window);\r\n WebQit.DOM.query = query.bind(WebQit.window);\r\n WebQit.DOM.queryAll = queryAll.bind(WebQit.window);\r\n WebQit.DOM.ready = ready.bind(WebQit.window);\r\n // ------\r\n return WebQit;\r\n}\r\n\r\nexport {\r\n meta,\r\n query,\r\n queryAll,\r\n querySelector,\r\n querySelectorAll,\r\n ready,\r\n}", "\n/**\n * @imports\n */\nimport _isString from '../js/isString.js';\nimport _isUndefined from '../js/isUndefined.js';\nimport _isFunction from '../js/isFunction.js';\nimport _arrFrom from '../arr/from.js';\nimport _flatten from '../arr/flatten.js';\nimport _first from '../arr/first.js';\nimport _last from '../arr/last.js';\nimport _merge from '../obj/merge.js';\nimport _even from '../obj/even.js';\nimport _copyPlain from '../obj/copyPlain.js';\n\n/**\n * --------------------------\n * TOKENIZER\n * --------------------------\n */\n\nexport default class Lexer {\n\n\t/**\n\t * Factory method.\n\t *\n\t * Handles caching.\n\t *\n\t * @see constructor()\n\t */\n\tstatic lex(str, delims, options = {}) {\n\t\tif (!_isString(str = str + '')) {\n\t\t\tthrow new Error('Argument1 must be a string!');\n\t\t}\n\t\tvar copyResult = result => {\n\t\t\treturn {\n\t\t\t\tdelims: result.delims.slice(),\n\t\t\t\toptions: _copyPlain(result.options),\n\t\t\t\tnesting: result.nesting.slice(),\n\t\t\t\tmaxDepth: result.maxDepth,\n\t\t\t\tcomments: result.comments.slice(),\n\t\t\t\ttokens: result.tokens.slice(),\n\t\t\t\tmatches: result.matches.slice(),\n\t\t\t\tmatchesi: _copyPlain(result.matchesi),\n\t\t\t};\n\t\t};\n\t\t// ASK CACHE ---------------------------\n\t\tif (Lexer.$cache[str] && options.cache !== false) {\n\t\t\tfor (var i = 0; i < Lexer.$cache[str].length; i ++) {\n\t\t\t\tvar cached = Lexer.$cache[str][i];\n\t\t\t\tif (_even(cached.delims, delims)) {\n\t\t\t\t\treturn copyResult(cached);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// FRESH PARSE\t -------------------------------\n\t\tvar instance = new Lexer(str, options);\n\t\tvar result = instance.lex(delims);\n\t\t// SAVE TO CACHE -------------------------------\n\t\tif (options.cache !== false) {\n\t\t\tLexer.$cache[str] = Lexer.$cache[str] || [];\n\t\t\tLexer.$cache[str].push(result);\n\t\t}\n\t\treturn copyResult(result);\n\t\t\n\t}\n\n\t/**\n\t * Factory method for .split().\n\t *\n\t * Handles caching.\n\t *\n\t * @see constructor()\n\t */\n\tstatic split(str, delims, options) {\n\t\treturn Lexer.lex(str, delims, options).tokens;\n\t}\n\n\t/**\n\t * Factory method for .match().\n\t *\n\t * Handles caching.\n\t *\n\t * @see constructor()\n\t */\n\tstatic match(str, delims, options) {\n\t\treturn Lexer.lex(str, delims, options).matches;\n\t}\n\n\t/**\n\t * Creates a lexer instance on a string with the given options.\n\t *\n\t * @param string \tstr\n\t * @param object\toptions:\n\t * @param string \t\tblocks\t\t\t\tThe strings that begin and end a nested structure\n\t * @param number \t\tlimit\t\t\t\tMax results to return\n\t * @param string \t\tbackreference\t\tA character like (\\) that prefixes non-delim characters\n\t *\n\t * @return array\n\t */\n\tconstructor(str, options) {\n\t\tif (!_isString(str)) {\n\t\t\tthrow new Error('Lexer requires the first argument to be a string.');\n\t\t}\n\t\tthis.$str = str;\n\t\tthis.$options = options || {};\n\t\tif (!this.$options.blocks) {\n\t\t\tthis.$options.blocks = Lexer.$blocks;\n\t\t}\n\t\tif (!this.$options.quotes) {\n\t\t\tthis.$options.quotes = Lexer.$quotes;\n\t\t}\n\t\tif (!this.$options.comments) {\n\t\t\tthis.$options.comments = Lexer.$comments;\n\t\t}\n\t}\n\n\t/**\n\t * Parses the instance string on the given delimeters.\n\t *\n\t * This method supports static calling,\n\t * in which case a string is required as the first argument.\n\t *\n\t * @param string \tstr\n\t * @param object\toptions\n\t *\n\t * @return object\n\t */\n\tlex(delims, options) {\n\t\tvar runtime = {\n\t\t\tdelims: _arrFrom(delims),\n\t\t\toptions: _merge(true, {}, this.$options, options || {}),\n\t\t\tnesting: [],\n\t\t\tmaxDepth: 0,\n\t\t\tcomments: [],\n\t\t\ttokens: [],\n\t\t\tmatches: [],\n\t\t\tmatchesi: {},\n\t\t};\n\t\t// Iterate over each character, keep track of current row and column (of the returned array)\n\t\tvar cursor = 0;\n\t\twhile(typeof cursor === 'number') {\n\t\t\tcursor = this._evalCharsAt(runtime, cursor);\n\t\t}\n\t\tif (runtime.nesting.length) {\n\t\t\tthrow new Error('Error parsing the string: ' + this.$str + '. Unterminated blocks: ' + _flatten(runtime.nesting).join(', ') + '');\n\t\t}\n\t\t// RETURN NEW ----------------------------------\n\t\treturn runtime;\n\t}\n\n\t/**\n\t * Expr helper: evaluates and handles the character on the current cursor.\n\t * Advances the cursor.\n\t *\n\t * @param object \truntime\n\t * @param int\t\ti\n\t *\n\t * @return void\n\t */\n\t_evalCharsAt(runtime, i) {\n\t\tif (i >= this.$str.length) {\n\t\t\treturn;\n\t\t}\n\t\tvar charWidth = 1;\n\t\tvar commentTest = {}, quoteTest = {}, nestingTest = {};\n\t\t// Quotes inside comments must be ignored\n\t\tif (!runtime.openComment) {\n\t\t\tquoteTest = this._testQuotes(runtime, i);\n\t\t}\n\t\t// Comments inside quotes must be ignored\n\t\tif (!runtime.openQuote) {\n\t\t\tcommentTest = this._testComments(runtime, i);\n\t\t}\n\t\t// Save comments\n\t\tif (runtime.openComment || commentTest.ending) {\n\t\t\t// Save only outer comments\n\t\t\tif (!runtime.nesting.length && !nestingTest.ending) {\n\t\t\t\tvar chars = commentTest.starting || commentTest.ending || this.$str[i];\n\t\t\t\tcharWidth = chars.length;\n\t\t\t\tthis._push(runtime, chars, 'comments', commentTest.starting);\n\t\t\t} else {\n\t\t\t\tthis._push(runtime, this.$str[i]);\n\t\t\t}\n\t\t} else if (runtime.openQuote || quoteTest.ending) {\n\t\t\t// Yes add quotes\n\t\t\tthis._push(runtime, this.$str[i]);\n\t\t} else if (runtime.options.limit && runtime.matches.length === runtime.options.limit) {\n\t\t\tthis._push(runtime, this.$str[i]);\n\t\t\treturn i + 1;\n\t\t} else {\n\t\t\t// Nesting tags inside comments and quotes have been ignored\n\t\t\tnestingTest = this._testNesting(runtime, i);\n\t\t\t// ---------------------\n\t\t\t// STOP ON THIS CHARACTER...?\n\t\t\t// ---------------------\n\t\t\tvar nestingTest = this._testNesting(runtime, i);\n\t\t\t// STOP CHAR(S)? at top level?\n\t\t\tvar stopChar = this._testChars(runtime.options.stopChars || [], runtime, i);\n\t\t\tif (!runtime.nesting.length && stopChar !== false) {\n\t\t\t\truntime.options.stopChar = stopChar;\n\t\t\t\truntime.options.stopCharForward = this.$str.substr(i);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// ---------------------\n\t\t\t// Match and split now...\n\t\t\t// ---------------------\n\t\t\tif (!runtime.delims.length) {\n\t\t\t\t// BLOCK-BASED SPLITTING...\n\t\t\t\tif (runtime.nesting.length === 2 && nestingTest.starting) {\n\t\t\t\t\truntime.matches.push(null);\n\t\t\t\t\tthis._push(runtime, nestingTest.starting);\n\t\t\t\t\tcharWidth = nestingTest.starting.length;\n\t\t\t\t} else if (!runtime.nesting.length && nestingTest.ending) {\n\t\t\t\t\tthis._push(runtime, nestingTest.ending);\n\t\t\t\t\tcharWidth = nestingTest.ending.length;\n\t\t\t\t\truntime.matches.push(null);\n\t\t\t\t} else/*no-nesting flag*/ {\n\t\t\t\t\tthis._push(runtime, this.$str[i]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// ---------------------\n\t\t\t\t// DELIMS-BASED SPLITTING\n\t\t\t\t// ---------------------\n\t\t\t\tif (!runtime.nesting.length && !nestingTest.ending) {\n\t\t\t\t\t// In case the chars at index 0 is a delim,\n\t\t\t\t\t// the resulting split should first have an empty string, instead of undefined\n\t\t\t\t\tthis._push(runtime, '');\n\t\t\t\t\tvar matchedDelim = this._testChars(runtime.delims, runtime, i);\n\t\t\t\t\tif (matchedDelim !== false) {\n\t\t\t\t\t\truntime.matches.push(matchedDelim);\n\t\t\t\t\t\truntime.matchesi[i] = matchedDelim;\n\t\t\t\t\t\tcharWidth = matchedDelim.length || 1;\n\t\t\t\t\t\tif (!runtime.options.preserveDelims) {\n\t\t\t\t\t\t\t// The current character is a delimiter...\n\t\t\t\t\t\t\t// and should not get to appending to the split series down the line\n\t\t\t\t\t\t\tvar nextIndex = i + (matchedDelim.length || 1);\n\t\t\t\t\t\t\tif (nextIndex === this.$str.length) {\n\t\t\t\t\t\t\t\t// In case the chars at last index is a delim,\n\t\t\t\t\t\t\t\t// the resulting split should last have an empty string\n\t\t\t\t\t\t\t\tthis._push(runtime, '');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn nextIndex;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis._push(runtime, matchedDelim || this.$str[i]);\n\t\t\t\t} else {\n\t\t\t\t\tvar chars = nestingTest.starting || nestingTest.ending || this.$str[i];\n\t\t\t\t\tcharWidth = chars.length;\n\t\t\t\t\tthis._push(runtime, chars);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn i + charWidth;\n\t}\n\n\t/**\n\t * Expr helper: tests for a quote start/end character on the current cursor.\n\t *\n\t * @param object\truntime\n\t * @param int\t\ti\n\t *\n\t * @return object\n\t */\n\t_testQuotes(runtime, i) {\n\t\tvar result = {};\n\t\t(runtime.options.quotes || []).forEach(quote => {\n\t\t\tif (this.$str.substr(i, 1) === quote) {\n\t\t\t\tif (!runtime.openQuote) {\n\t\t\t\t\truntime.openQuote = quote;\n\t\t\t\t\tresult.starting = quote;\n\t\t\t\t} else if (quote === runtime.openQuote) {\n\t\t\t\t\truntime.openQuote = false;\n\t\t\t\t\tresult.ending = quote;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n\n\t/**\n\t * Expr helper: tests for a comment start/end character on the current cursor.\n\t *\n\t * @param object\truntime\n\t * @param int\t\ti\n\t *\n\t * @return object\n\t */\n\t_testComments(runtime, i) {\n\t\tvar result = {};\n\t\t(runtime.options.comments || []).forEach(block => {\n\t\t\tif (!runtime.openComment) {\n\t\t\t\tvar starting = _first(block);\n\t\t\t\tif (this.$str.substr(i).startsWith(starting)) {\n\t\t\t\t\truntime.openComment = block;\n\t\t\t\t\tresult.starting = starting;\n\t\t\t\t}\n\t\t\t} else if (_last(block) === _last(runtime.openComment)) {\n\t\t\t\tvar ending = _last(block);\n\t\t\t\tif (this.$str.substr(i).startsWith(ending)) {\n\t\t\t\t\truntime.openComment = false;\n\t\t\t\t\tresult.ending = ending;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n\n\t/**\n\t * Expr helper: tests for a nesting start/end character on the current cursor.\n\t *\n\t * @param object\truntime\n\t * @param int\t\ti\n\t *\n\t * @return object\n\t */\n\t_testNesting(runtime, i) {\n\t\tvar result = {};\n\t\t(runtime.options.blocks || []).forEach(block => {\n\t\t\tvar starting = _first(block);\n\t\t\tif (this.$str.substr(i).startsWith(starting)) {\n\t\t\t\truntime.nesting = runtime.nesting.concat([block]);\n\t\t\t\tresult.starting = starting;\n\t\t\t} else if (runtime.nesting.length && _last(block) === _last(_last(runtime.nesting))) {\n\t\t\t\tvar ending = _last(block);\n\t\t\t\tif (this.$str.substr(i).startsWith(ending)) {\n\t\t\t\t\truntime.nesting = runtime.nesting.slice(0, -1);\n\t\t\t\t\tresult.ending = ending;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\truntime.maxDepth = Math.max(runtime.maxDepth, runtime.nesting.length);\n\t\treturn result;\n\t}\n\n\t/**\n\t * Expr helper: tests for a delimiter or stop character on the current cursor.\n\t *\n\t * @param array\t\ttestList\n\t * @param object \truntime\n\t * @param int\t\ti\n\t *\n\t * @return mixed\n\t */\n\t_testChars(testList, runtime, i) {\n\t\tfor (var k = 0; k < testList.length; k ++) {\n\t\t\tvar test = testList[k];\n\t\t\tif (_isFunction(test)) {\n\t\t\t\tvar ret = test(this.$str.substr(0, i), this.$str.substr(i), runtime.tokens.slice());\n\t\t\t\tif (ret !== false) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (runtime.options.useRegex) {\n\t\t\t\tvar m = this.$str.substr(i).match(new RegExp('^' + test, runtime.options.useRegex !== true ? runtime.options.useRegex : ''));\n\t\t\t\tif (m) {\n\t\t\t\t\treturn m[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ((!runtime.options.ci && this.$str.substr(i, test.length) === test)\n\t\t\t|| (runtime.options.ci && this.$str.substr(i, test.length).toLowerCase() === test.toLowerCase())) {\n\t\t\t\treturn test;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\t\n\t/**\n\t * Expr helper: pushes a character or set of characters into the current split series.\n\t *\n\t * @param object \truntime\n\t * @param string\tchars\n\t * @param string\ttarget\n\t * @param bool\t\tisNewSeries\n\t *\n\t * @return void\n\t */\n\t_push(runtime, chars, target = 'tokens', isNewSeries = false) {\n\t\tvar splitSeries = runtime.matches.length;\n\t\tif (_isUndefined(runtime.tokens[splitSeries])) {\n\t\t\truntime.tokens[splitSeries] = '';\n\t\t}\n\n\t\tif (target === 'comments') {\n\t\t\tif (!runtime.tokens[splitSeries].comments) {\n\t\t\t\truntime.tokens[splitSeries] = new String(runtime.tokens[splitSeries]);\n\t\t\t\truntime.tokens[splitSeries].comments = [];\n\t\t\t}\n\t\t\tvar splitSeries2 = runtime.tokens[splitSeries].comments.length - (!runtime.tokens[splitSeries].comments.length || isNewSeries ? 0 : 1);\n\t\t\truntime.tokens[splitSeries].comments[splitSeries2] = (runtime.tokens[splitSeries].comments[splitSeries2] || '') + chars;\n\t\t} else {\n\t\t\tvar comments = runtime.tokens[splitSeries].comments;\n\t\t\truntime.tokens[splitSeries] = runtime.tokens[splitSeries] + chars;\n\t\t\t//runtime.tokens[splitSeries].comments = comments;\n\t\t}\n\t}\n\n\t/**\n\t * Splits the instance string on the given delimeters and returns the tokens.\n\t *\n\t * @param string \tstr\n\t * @param object\toptions\n\t *\n\t * @return array\n\t */\n\tsplit(str, delims, options) {\n\t\treturn this.lex(delims, options).tokens;\n\t}\n\t\n\t/**\n\t * Splits the instance string on the given delimeters and returns the matches.\n\t *\n\t * @param string \tstr\n\t * @param object\toptions:\n\t *\n\t * @return array\n\t */\n\tmatch(str, delims, options) {\n\t\treturn this.lex(delims, options).matches;\n\t}\n\t\n\t/**\n\t * Parses the instance string on the given delimeters using regex.\n\t *\n\t * @param string \tstr\n\t * @param object\toptions\n\t *\n\t * @return object\n\t */\n\tregParse(delims, options) {\n\t\treturn this.lex(delims, _merge({useRegex: true}, options || {}));\n\t}\n\t\n\t/**\n\t * Splits the instance string on the given delimeters using regex; returns the tokens.\n\t *\n\t * @param string \tstr\n\t * @param object\toptions\n\t *\n\t * @return array\n\t */\n\tregSplit(delims, options) {\n\t\treturn this.regParse(delims, options).tokens;\n\t}\n\t\n\t/**\n\t * Matches the instance string on the given delimeters using regex; returns the matches.\n\t *\n\t * @param string \tstr\n\t * @param object\toptions\n\t *\n\t * @return array\n\t */\n\tregMatch(delims, options) {\n\t\treturn this.regParse(delims, options).matches;\n\t}\n};\n\n/**\n * @var array\n */\nLexer.$blocks = [['(', ')'], ['[', ']'], ['{', '}'],];\n\n/**\n * @var array\n */\nLexer.$quotes = ['\"', \"'\", '`',];\n\n/**\n * @var array\n */\nLexer.$comments = [['/*', '*/'], ['//', \"\\n\"],];\n\n/**\n * @var object\n */\nLexer.$cache = Object.create(null);", "\n/**\n * @imports\n */\nimport domInit from '@webqit/browser-pie/src/dom/index.js';\nimport { _wrapped, _unwrap, _before, _after } from '@webqit/util/str/index.js';\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _internals }from '@webqit/util/js/index.js';\nimport { _merge } from '@webqit/util/obj/index.js';\nimport Lexer from '@webqit/util/str/Lexer.js';\n\n/**\n * A OOHTML's meta tag props reader.\n * \n * @param Object defaults\n * \n * @return Object\n */\nexport function config(defaults, overrides = {}) {\n const WebQit = domInit.call(this);\n if (!WebQit.OOHTML) {\n // For feature modules that will call outside of ./index.js module\n WebQit.OOHTML = {};\n }\n if (!WebQit.OOHTML.meta) {\n WebQit.OOHTML.meta = WebQit.DOM.meta('oohtml', true/* readWrite */);\n }\n WebQit.OOHTML.meta.defaults(_merge(3, defaults, overrides));\n return WebQit.OOHTML.meta;\n}\n\n/**\n * Runs a \"scope-query\" against a context.\n *\n * @param Array\t contexts\n * @param String\tquery\n * @param Function\tcollectionCallback\n * @param Function\tadvancementCallback\n *\n * @return Array\n */\nexport function scopeQuery(contexts, query, collectionCallback, advancementCallback = null) {\n var queryPath = query.split('#')[0].split('/').map(n => n.trim()).filter(n => n);\n return execScopeQuery(contexts, queryPath, collectionCallback, advancementCallback);\n}\n\n/**\n * Parses a \"scope-query\" reference expression to seperate the \"reference\" and its \"modifiers\".\n *\n * @param String\texpr\n *\n * @return Array\n */\nexport function parseScopeReferenceExpr(reference) {\n var split = Lexer.split(reference.trim(), [':']);\n reference = split.shift();\n var modifiers = split.reduce((_modifiers, _modifier) => {\n var [ name, parentheses ] = Lexer.split(_modifier.trim(), []);\n _modifiers[name] = _unwrap(parentheses, '(', ')');\n return _modifiers;\n }, {});\n return [ reference, modifiers ];\n}\n\n/**\n * Determines if a given path matches a \"scope-query\".\n *\n * @param String\tquery\n * @param String\tpath\n *\n * @return Bool\n */\nexport function queryMatchPath(query, path) {\n path = path.split('#')[0].split('/').map(n => n.trim()).filter(n => n);\n query = query.split('#')[0].split('/').map(n => n.trim()).filter(n => n);\n return !query.length ? false : query.reduce((prev, segment, i) => {\n if (!prev) return false;\n return Lexer.split(segment.trim(), ['|', '+']).reduce((_prev, _reference) => {\n var [ _reference, modifiers ] = parseScopeReferenceExpr(_reference);\n _reference = _reference.trim();\n var sementIsMatch = _reference === path[i];\n if (!sementIsMatch && (('deep' in modifiers) || ('deepest' in modifiers))) {\n var _sementIsMatch = path.slice(i + 1).reduce((prev, s, i) => {\n return prev > -1 && ('deep' in modifiers) ? prev : (s === _reference ? i : prev);\n }, -1);\n if (_sementIsMatch > -1) {\n var e = path.splice(i, _sementIsMatch + 1);\n sementIsMatch = true;\n }\n }\n return _prev || sementIsMatch;\n }, false);\n }, true);\n}\n\nconst evalAssertExpr = (segment, callback) => {\n return Lexer.split(segment.trim(), ['|', '+'], { preserveDelims: true }).reduce((_result, _reference) => {\n var operator;\n if (_reference.startsWith('|') || _reference.startsWith('+')) {\n operator = _reference.substr(0, 1);\n _reference = _reference.substr(1).trim();\n }\n if (_result.theEnd || (operator === '|' && _result.length)) {\n _result.theEnd = true;\n return _result;\n }\n return _result.concat(callback(_reference.trim()));\n }, []).filter(t => t);\n};\n\nconst evalModuleExpr = (contexts, segment, collectionCallback) => {\n const lookAhead = contexts => contexts.reduce((_list, _module) => _list.concat(...collectionCallback(_module).values()), []);\n return evalAssertExpr(segment, _reference => {\n var [ _reference, modifiers ] = parseScopeReferenceExpr(_reference);\n // ------------\n return contexts.reduce((list, context) => {\n var collection = collectionCallback(context);\n if (_reference === '*') {\n _reference = '(' + collection.keys().join('+') + ')';\n }\n var itemArray = _wrapped(_reference, '(', ')') ? evalModuleExpr([context], _unwrap(_reference, '(', ')'), collectionCallback) : _arrFrom(collection.get(_reference), false);\n // ------------\n var appliedModifiers = [], reapplyAppliedModifiers = expr => `${expr}${appliedModifiers.map(m => `:${m}(${modifiers[m]})`).join('')}`;\n Object.keys(modifiers).forEach(modifier => {\n if (modifier === 'deep' || modifier === 'deepest') {\n var nextLevel = [context];\n while ((modifier === 'deepest' || !itemArray.length) && (nextLevel = lookAhead(nextLevel)).length) {\n var _itemArray = evalModuleExpr(nextLevel, reapplyAppliedModifiers(_reference), collectionCallback);\n if (_itemArray.length) {\n itemArray = _itemArray;\n }\n }\n } else {\n if (modifier === 'having' || modifier === 'not-having') {\n itemArray = itemArray.filter(module => {\n var filterHavingsResult = evalAssertExpr(modifiers[modifier], _filterHavings => collectionCallback(module, _filterHavings));\n return modifier === 'not-having' ? !filterHavingsResult.length : filterHavingsResult.length;\n }); \n }\n appliedModifiers.push(modifier);\n }\n });\n return list.concat(itemArray);\n }, []);\n });\n};\n\nconst execScopeQuery = function(contexts, path, collectionCallback, advancementCallback = null, level = 0) {\n\n if (!path.length) {\n return [];\n }\n\n var segment = path.shift(), isStopSegmentIfCount;\n if (segment.endsWith('.')) {\n isStopSegmentIfCount = true;\n segment = segment.substr(0, segment.length - 1).trim();\n }\n // -----------\n var modules = evalModuleExpr(contexts, segment, collectionCallback);\n // -----------\n if (modules.length && isStopSegmentIfCount) {\n return modules;\n }\n // -----------\n if (path.length) {\n var submodules = execScopeQuery(modules, path.slice(), collectionCallback, advancementCallback, level + 1);\n if (submodules === -1) {\n return advancementCallback(modules, level, true);\n }\n return submodules;\n }\n\n return advancementCallback ? advancementCallback(modules, level) : modules;\n};\n", "\n/**\n * @imports\n */\nimport Observer from '@webqit/observer';\nimport { _any, _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _isString, _internals } from '@webqit/util/js/index.js';\nimport domInit from '@webqit/browser-pie/src/dom/index.js';\nimport { config } from '../util.js';\n\n/**\n * ---------------------------\n * Namespaced HTML\n * ---------------------------\n */\t\t\t\t\n\n/**\n * @init\n * \n * @param Object config\n */\nexport default function init( _config = {} ) {\n\n const WebQit = domInit.call( this );\n if ( _config.onDomReady ) {\n WebQit.DOM.ready( () => {\n init.call( this, { ..._config, onDomReady: false } );\n } );\n return;\n }\n\n const window = WebQit.window;\n const document = WebQit.window.document;\n const mutations = WebQit.DOM.mutations;\n\n\tconst scopedIdInertContexts = [];\n const _meta = config.call(this, {\n\t\tattr: {\n namespace: 'namespace',\n id: 'id',\n },\n api: {\n namespace: 'namespace',\n },\n\t\teagermode: true,\n }, _config.params );\n\t\n const getNamespaceObject = function(subject) {\n if (!_internals(subject, 'oohtml').has('namespace')) {\n const namespaceObject = Object.create(null);\n _internals(subject, 'oohtml').set('namespace', namespaceObject);\n if (Observer.link) {\n Observer.link(subject, _meta.get('api.namespace'), namespaceObject);\n }\n }\n return _internals(subject, 'oohtml').get('namespace');\n\t};\n\t\n const getPublicNamespaceObject = function(subject) {\n if (!_internals(subject, 'oohtml').has('publicNamespace')) {\n const namespaceObject = getNamespaceObject(subject);\n _internals(subject, 'oohtml').set('publicNamespace', !_meta.get('eagermode') ? namespaceObject : new Proxy(namespaceObject, {\n\t\t\t\tget(target, name) {\n\t\t\t\t\tif (_isString(name) && !namespaceObject[name]) {\n\t\t\t\t\t\tvar node = _arrFrom(subject.querySelectorAll('[' + window.CSS.escape(_meta.get('attr.id')) + '=\"' + name + '\"]')).filter(node => {\n\t\t\t\t\t\t\tvar ownerRoot = node.parentNode.closest('[' + window.CSS.escape(_meta.get('attr.namespace')) + ']');\n\t\t\t\t\t\t\tif (subject === document) {\n\t\t\t\t\t\t\t\t// Only IDs without a scope actually belong to the document scope\n\t\t\t\t\t\t\t\treturn !ownerRoot;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn ownerRoot === subject;\n\t\t\t\t\t\t})[0];\n\t\t\t\t\t\tif (node) {\n\t\t\t\t\t\t\tObserver.set(namespaceObject, name, node);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn namespaceObject[name];\n\t\t\t\t}\n\t\t\t}));\n }\n return _internals(subject, 'oohtml').get('publicNamespace');\n\t};\n\n // ----------------------\n // Define the local \"namespace\" object\n // ----------------------\n\n\tif (_meta.get('api.namespace') in window.Element.prototype) {\n\t\tthrow new Error('The \"Element\" class already has a \"' + _meta.get('api.namespace') + '\" property!');\n\t}\n\tObject.defineProperty(window.Element.prototype, _meta.get('api.namespace'), {\n\t\tget: function() {\n\t\t\treturn getPublicNamespaceObject(this);\n\t\t}\n\t});\n\n // ----------------------\n // Define the global \"namespace\" object\n // ----------------------\n\n if (_meta.get('api.namespace') in document) {\n throw new Error('The \"document\" object already has a \"' + _meta.get('api.namespace') + '\" property!');\n }\n\tObject.defineProperty(document, _meta.get('api.namespace'), {\n\t\tget: function() {\n return getPublicNamespaceObject(document);\n\t\t}\n\t});\n\n\t// ----------------------\n\t// Capture scoped elements\n\t// ----------------------\n\n\tmutations.onPresent('[' + window.CSS.escape(_meta.get('attr.id')) + ']', el => {\n\t\tvar elOohtmlObj = _internals(el, 'oohtml');\n\t\tif (elOohtmlObj.get('idAlreadyBeingWatched') || _any(scopedIdInertContexts, inertContext => el.closest(inertContext))) {\n\t\t\treturn;\n\t\t}\n\t\tvar scopedId = el.getAttribute(_meta.get('attr.id')),\n\t\t\townerRoot = el.parentNode.closest('[' + window.CSS.escape(_meta.get('attr.namespace')) + ']');\n\t\tif (!ownerRoot) {\n\t\t\townerRoot = document;\n\t\t}\n\t\tvar namespaceObject = getNamespaceObject(ownerRoot);\n\t\tif (namespaceObject[scopedId] !== el) {\n\t\t\tObserver.set(namespaceObject, scopedId, el);\n\t\t}\n\t\t// new permanent watch\n\t\telOohtmlObj.set('idAlreadyBeingWatched', true);\n\t\tmutations.onPresenceChange(el, (els, presence) => {\n\t\t\tif (presence) {\n\t\t\t\t// ONLY if I am not currently the one in place\n\t\t\t\tif (namespaceObject[scopedId] !== el) {\n\t\t\t\t\tObserver.set(namespaceObject, scopedId, el);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// ONLY if I am still the one in place\n\t\t\t\tif (namespaceObject[scopedId] === el) {\n\t\t\t\t\tObserver.deleteProperty(namespaceObject, scopedId);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n};", "\n/**\n * @imports\n */\nimport init from './index.js';\n\n/**\n * @init\n */\ninit.call( window );"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|