@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
package/dist/html-imports.js.map
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{"version":3,"file":"html-imports.js","mappings":"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","sources":["webpack://@webqit/oohtml/./node_modules/@webqit/util/arr/any.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isArray.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isString.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isUndefined.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isTypeFunction.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isTypeObject.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/isObject.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/unique.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/js/internals.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/util/js/mixin.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/str/unwrap.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/str/beforeLast.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/str/before.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/str/after.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/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/util/arr/flatten.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/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/each.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/./node_modules/@webqit/util/str/wrapped.js","webpack://@webqit/oohtml/./src/html-imports/index.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/arr/remove.js","webpack://@webqit/oohtml/./node_modules/@webqit/util/arr/difference.js","webpack://@webqit/oohtml/./src/html-imports/browser-entry.js"],"sourcesContent":["\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 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 \"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 * 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 * 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 \"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 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 * @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 * 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 * 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}","\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","\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};","\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 _after from './after.js';\nimport _beforeLast from './beforeLast.js';\n\n/**\n * Returns the string without the given opening and closing tags.\n *\n * @param string subject\n * @param string openingTag\n * @param string closingTag\n *\n * @return string\n */\nexport default function(subject, openingTag, closingTag) {\n\treturn _beforeLast(_after(subject, openingTag), closingTag);\n};\n","\n/**\n * @imports\n */\nimport _before from './before.js';\n\n/**\n * Return the part of a string before last occurence of a given value.\n *\n * @param string subject\n * @param string search\n *\n * @return string\n */\nexport default function(subject, search) {\n\treturn _before(subject, search, true);\n};\n","\n/**\n * Return the part of a string before a given value.\n *\n * @param string subject\n * @param string search\n * @param bool\t beforeLast\n *\n * @return string\n */\nexport default function(subject, search, beforeLast = false) {\n\tif (search == '') {\n\t\treturn subject;\n\t}\n\tvar pos = beforeLast ? subject.lastIndexOf(search) : subject.indexOf(search);\n\tif (pos === -1) {\n\t\treturn subject;\n\t}\n\treturn subject.substr(0, pos);\n};\n","\n/**\n * Return the remainder of a string after a given value.\n *\n * @param string subject\n * @param string search\n * @param bool\t afterLast\n *\n * @return string\n */\nexport default function(subject, search, afterLast = false) {\n\tif (search == '') {\n\t\treturn subject;\n\t}\n\tvar pos = afterLast ? subject.lastIndexOf(search) : subject.indexOf(search);\n\tif (pos === -1) {\n\t\treturn '';\n\t}\n\treturn subject.substr(pos + search.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 _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 _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 * 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 * @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 _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 _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 * Tells if the string is warapped with the given opening and closing tags.\n *\n * @param string subject\n * @param string openingTag\n * @param string closingTag\n *\n * @return bool\n */\nexport default function(subject, openingTag, closingTag) {\n\treturn subject.startsWith(openingTag) && subject.endsWith(closingTag);\n};\n","\n/**\n * @imports\n */\nimport { _any, _remove, _unique, _difference, _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _internals } from '@webqit/util/js/index.js';\nimport { _each } from '@webqit/util/obj/index.js';\nimport domInit from '@webqit/browser-pie/src/dom/index.js';\nimport { config, scopeQuery,\n parseScopeReferenceExpr, queryMatchPath\n} from '../util.js';\n\n/**\n * ---------------------------\n * HTML Partials\n * ---------------------------\n */\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 const importInertContexts = [];\n const _meta = config.call(this, {\n element: {\n import: 'import',\n },\n attr: {\n importid: 'name',\n exportsearch: 'exportsearch',\n },\n }, _config.params );\n\n _defaultNoInherits.push(_meta.get('attr.importid'), _meta.get('attr.moduleref'));\n const modulerefSelector = '[' + window.CSS.escape(_meta.get('attr.moduleref')) + ']';\n const exportgroupSelector = '[' + window.CSS.escape(_meta.get('attr.exportgroup')) + ']';\n\n // ----------------------\n // Capture slot elements\n // ----------------------\n\n let prev;\n const Import = class/* extends window.HTMLElement*/ {\n\n /*\n static create(el) {\n return el;\n }\n constructor(importEl) {\n super();\n this.el = this;\n }\n */\n\n static create(el) {\n return _internals(this.el, 'oohtml').get('instance') || new Import(el);\n }\n constructor(importEl) {\n this.el = importEl;\n _internals(this.el, 'oohtml').set('instance', this);\n const [ importID, modifiers ] = parseScopeReferenceExpr(importEl.getAttribute(_meta.get('attr.importid')) || 'default');\n _internals(this.el, 'oohtml').set('importID', importID);\n _internals(this.el, 'oohtml').set('importModifiers', modifiers);\n }\n \n /**\n * Called by the Slots hydrator.\n *\n * @param Comment anchorNode\n * @param array slottedElements\n * @param Element compositionBlock\n *\n * @return void\n */\n hydrate(anchorNode, slottedElements, compositionBlock) {\n _internals(this.el, 'oohtml').set('anchorNode', anchorNode);\n _internals(this.el, 'oohtml').set('slottedElements', slottedElements);\n _internals(this.el, 'oohtml').set('compositionBlock', compositionBlock);\n this._bindSlotted(slottedElements);\n this._connectToCompositionBlock();\n }\n \n /**\n * This triggers self-resolution\n *\n * @return void\n */\n connectedCallback() {\n if (!_internals(this.el, 'oohtml').has('anchorNode')) {\n _internals(this.el, 'oohtml').set('anchorNode', _meta.get('isomorphic')\n ? document.createComment(this.el.outerHTML)\n : document.createTextNode(''));\n _internals(this.el, 'oohtml').set('compositionBlock', !this.el.hasAttribute(_meta.get('attr.moduleref'))\n ? this.el.parentNode.closest(modulerefSelector) : (\n this.el.getAttribute(_meta.get('attr.moduleref')).trim().startsWith('~') ? this.el.parentNode.closest(exportgroupSelector) : null\n ));\n this._connectToCompositionBlock();\n }\n WebQit.DOM.ready.call(WebQit, () => {\n this.resolve('connected');\n });\n }\n \n /**\n * Connects the instance to the compositionBlock.\n */\n _connectToCompositionBlock() {\n if (this.compositionBlock) {\n // Now after the update slot ID\n _internals(this.compositionBlock, 'oohtml', 'imports').set(this.importID, this.el);\n }\n }\n\n /**\n * Bind a slotted element.\n *\n * @param array exports\n *\n * @return void\n */\n _bindSlotted(exports) {\n exports.forEach(_export => {\n _export.importReference = this.el;\n });\n _internals(this.el, 'oohtml').set('slottedObserver', mutations.onRemoved(exports, (removed, state, isTransient, addedState, removedState) => {\n if (removedState && removedState.size === exports.length) {\n _internals(this.el, 'oohtml').get('slottedObserver').disconnect();\n }\n removed.forEach(remd => {\n // Let's ensure this wasn't slotted againe\n if (!remd.parentNode) {\n _remove(this.slottedElements, remd);\n }\n // if the slotted hasnt been slotted somewhere\n if (remd.importReference === this.el) {\n delete remd.importReference;\n }\n });\n // If this was the last of the s,ottable in the same family of IDs,\n // we should restore the original slot\n if (!this.slottedElements.length) {\n // Must be assigned bu now\n // for it to be removed in the first place\n if (this.anchorNode.isConnected) {\n this.anchorNode.replaceWith(this.el);\n }\n }\n }, {maintainCallState: true, ignoreTransients: true}));\n }\n\n /**\n * Resolves the slot\n */\n resolve(reason = null) {\n if (_any(importInertContexts, inertContext => this.el.closest(inertContext))) {\n return;\n }\n var getExports = (contexts, moduleref, exportsearch) => {\n var importId = this.importID,\n modifiers = this.importModifiers,\n [ searchA, searchB ] = (('search' in modifiers) || exportsearch !== null) ? ('search' in modifiers ? modifiers.search : exportsearch).split('-').filter(a => a).map(a => parseInt(a || 0)).concat([0, 1000]) : [0, 0];\n const aggrExports = modules => modules.reduce((_exports, _module) => _exports.concat(_internals(_module, 'oohtml', 'exports').get(importId) || []), []);\n return scopeQuery(contexts, moduleref, function(host, prop) {\n var collection = _internals(host, 'oohtml', 'templates');\n if (arguments.length === 1) return collection;\n if (prop.startsWith(':')) return _internals(host, 'oohtml', 'exports').get(prop.substr(1));\n return collection.get(prop);\n }, function(_modules, level, isRewinding) {\n var exportsAggr = aggrExports(_modules);\n if (!exportsAggr.length && level > searchA && searchB) {\n searchB --;\n return -1;\n }\n return exportsAggr;\n });\n };\n // -----------------\n // Global import or scoped slot?\n var templateSource, exports;\n if (this.el.hasAttribute(_meta.get('attr.moduleref'))) {\n // Did we previously had a compositionBlock?\n // Let's remove ourself\n if (this.compositionBlock && _internals(this.compositionBlock, 'oohtml', 'imports').get(this.importID) === this.el) {\n _internals(this.compositionBlock, 'oohtml', 'imports').delete(this.importID);\n }\n templateSource = this.el;\n } else {\n if (!this.compositionBlock) {\n console.warn('Scoped slots must be found within template contexts. [' + this.importID + ']', this.el);\n return;\n }\n templateSource = this.compositionBlock;\n }\n var moduleref = templateSource.getAttribute(_meta.get('attr.moduleref')).trim();\n var exportsearch = this.el.getAttribute(_meta.get('attr.exportsearch'));\n if (templateSource && (exports = getExports([moduleref.startsWith('~') ? this.compositionBlock : document], moduleref, exportsearch)).length) {\n if (_difference(exports, _internals(this.el, 'oohtml').get('originalSlottedElements') || []).length) {\n _internals(this.el, 'oohtml').set('originalSlottedElements', exports);\n this.fill(exports);\n }\n } else {\n _internals(this.el, 'oohtml').set('originalSlottedElements', null);\n this.empty();\n }\n }\n\n /**\n * Fill slot with exports.\n *\n * @param array|Element exports\n *\n * @return void\n */\n fill(exports) {\n exports = _arrFrom(exports, false/* castObject */).map(_export => _export.cloneNode(true));\n // ---------------------\n // Discard previous slotted elements\n // But this intentional removal should not trigger slot restoration\n this.empty(true/* silently */);\n if (this.el.isConnected) {\n this.el.replaceWith(this.anchorNode);\n }\n // ---------------------\n // Slot-in the corresponding exports from template\n exports.forEach(_export => {\n // ---------------------\n // Implement the slot?\n _internals(_export, 'oohtml', 'templates').set('~', this.el);\n // Inherit attributes from the slot element before replacement\n mergeAttributes(_export, this.el);\n // ---------------------\n if (!_export.getAttribute(_meta.get('attr.exportgroup'))) {\n _export.setAttribute(_meta.get('attr.exportgroup'), this.importID);\n }\n // Place slottable\n this.anchorNode.before(_export);\n });\n this._bindSlotted(exports);\n // ---------------------\n // Updatate records\n this.slottedElements.push(...exports);\n }\n\n /**\n * Empty slot.\n *\n * @param bool sliently\n *\n * @return void\n */\n empty(silently = false) {\n if (this.slottedElements) {\n var slottedElements = this.slottedElements;\n if (silently && _internals(this.el, 'oohtml').has('slottedObserver')) {\n _internals(this.el, 'oohtml').get('slottedObserver').disconnect();\n slottedElements = this.slottedElements.splice(0);\n }\n slottedElements.forEach(slottedElement => slottedElement.remove());\n }\n }\n\n /**\n * Returns the slot's name.\n *\n * @return string\n */\n get importID() {\n return _internals(this.el, 'oohtml').get('importID');\n }\n\n /**\n * Returns the slot's import Modifiers.\n *\n * @return string\n */\n get importModifiers() {\n return _internals(this.el, 'oohtml').get('importModifiers');\n }\n\n /**\n * Returns the slot's anchorNode.\n *\n * @return array\n */\n get anchorNode() {\n return _internals(this.el, 'oohtml').get('anchorNode');\n }\n\n /**\n * Returns the slot's compositionBlock, if any.\n *\n * @return array\n */\n get compositionBlock() {\n return _internals(this.el, 'oohtml').get('compositionBlock');\n }\n\n /**\n * Returns the slot's slotted elements.\n *\n * @return array\n */\n get slottedElements() {\n if (!_internals(this.el, 'oohtml').has('slottedElements')) {\n _internals(this.el, 'oohtml').set('slottedElements', []);\n }\n return _internals(this.el, 'oohtml').get('slottedElements');\n }\n\n /**\n * Returns the slot's implementable exports\n *\n * @return array\n */\n get exports() {\n return _internals(this.el, 'oohtml').get('exports');\n }\n \n /**\n * The attributes we want to observe.\n *\n * @return array\n */\n static get observedAttributes() {\n return [_meta.get('attr.importid')];\n }\n };\n\n // ----------------------\n // Capture import elements\n // ----------------------\n\n mutations.onPresent(_meta.get('element.import'), el => {\n var importElInstance = Import.create(el);\n importElInstance.connectedCallback();\n });\n /**\n window.customElements.define(_meta.get('element.import'), Import);\n */\n\n // ----------------------\n // Progressive resolution\n // ----------------------\n \n const resolveSlots = (el, exportName, reason = null) => {\n const shouldResolve = (importElInstance, importName) => {\n return !exportName || importName === exportName || (\n exportName === true && ((importElInstance.importModifiers && ('search' in importElInstance.importModifiers)) || importElInstance.el.getAttribute(_meta.get('attr.exportsearch')))\n );\n };\n if (el.matches(_meta.get('element.import'))) {\n var importElInstance = Import.create(el);\n if (shouldResolve(importElInstance, importElInstance.importID)) {\n importElInstance.resolve(reason);\n }\n } else {\n _internals(el, 'oohtml', 'imports').forEach((importEl, name) => {\n var importElInstance = Import.create(importEl);\n if (shouldResolve(importElInstance, name)) {\n importElInstance.resolve(`Resolution scope: ${reason}`);\n }\n });\n }\n };\n \n mutations.onPresent(modulerefSelector, el => {\n if (_any(importInertContexts, inertContext => el.closest(inertContext))) {\n return;\n }\n // Imports resolve by themselves\n // But...\n // We resolve them again when reference to template changes\n mutations.onAttrChange(el, mr => {\n if (mr[0].target.getAttribute(mr[0].attributeName) !== mr[0].oldValue) {\n resolveSlots(el, null, `Attr-Change: ${mr[0].attributeName}`);\n }\n }, [_meta.get('attr.moduleref'), _meta.get('attr.importid')]);\n });\n\n document.addEventListener('templatemutation', e => {\n // Resolve slots when the referenced template changes\n if (!e.detail.path) {\n return;\n }\n _arrFrom(document.querySelectorAll('[' + window.CSS.escape(_meta.get('attr.moduleref')) + ']')).forEach(el => {\n if (queryMatchPath(el.getAttribute(_meta.get('attr.moduleref')), e.detail.path)) {\n resolveSlots(el, true/* resolve imports with search() */, `'templatemutation' event: ${e.detail.path}, search()`);\n e.detail.addedExports.concat(e.detail.removedExports).forEach(exportGroup => {\n resolveSlots(el, exportGroup.name, `'templatemutation' event: ${e.detail.path}, ${exportGroup.name}`);\n });\n }\n });\n });\n\n // ----------------------\n // Restore slots from snapshots\n // ----------------------\n\n const hydrateSlots = () => {\n _arrFrom(document.querySelectorAll(exportgroupSelector)).forEach(_export => {\n // Scan\n if (_internals(_export.parentNode, 'oohtml').get('importsCan')) return;\n // hydrateSlots() might be running AFTER certain <slots> have resolved\n // and _export might be a just-resolved node\n if (_export.importReference) return;\n var slottedElements = [];\n _export.parentNode.childNodes.forEach(node => {\n var nodeValue;\n if (node.nodeType === 1/** ELEMENT_NODE */ && node.matches(exportgroupSelector)) {\n slottedElements.push(node);\n } else if (node.nodeType === 8/** COMMENT_NODE */ && (nodeValue = node.nodeValue.trim())\n && nodeValue.startsWith('<' + _meta.get('element.import'))\n && nodeValue.endsWith('</' + _meta.get('element.import') + '>')) {\n var importEl, reviver = document.createElement('div');\n reviver.innerHTML = nodeValue;\n if ((importEl = reviver.firstChild).matches(_meta.get('element.import'))) {\n // Belongs to a composition block?\n var compositionBlock = !importEl.hasAttribute(_meta.get('attr.moduleref'))\n ? node.parentNode.closest(modulerefSelector) : (\n importEl.getAttribute(_meta.get('attr.moduleref')).trim().startsWith('~') ? node.parentNode.closest(exportgroupSelector) : null\n )\n var importElInstance = Import.create(importEl);\n importElInstance.hydrate(node, slottedElements, compositionBlock);\n // Empty basket\n slottedElements = [];\n }\n }\n });\n // Scanning is once for every parent\n _internals(_export.parentNode, 'oohtml').set('importsCan', true);\n });\n };\n\n // ----------------------\n // Hydrate\n // ----------------------\n\n WebQit.DOM.ready.call(WebQit, () => {\n if (_meta.get('isomorphic')) {\n hydrateSlots();\n }\n });\n\n};\n\n/**\n * Imports exports from from sourceEl into el.\n *\n * @param Element\t\t\t\t exportEl\n * @param Element\t\t\t\t superExportEl\n * @param array \t\t\t\t noinherit\n *\n * @return Element\n */\nexport function mergePartials(exportEl, superExportEl, noinherit = []) {\n if (!superExportEl.exportsSlottables) {\n return exportEl;\n }\n _each(superExportEl.exportsSlottables, (slotId, slottable) => {\n if (exportEl.exportsSlottables && exportEl.exportsSlottables[slotId]) {\n // Simply inherit attributes from the search slottable\n // The export may however define a no-inherit directive for all its slottables\n var _noinherit = noinherit.concat((exportEl.getAttribute('noinherit') || '').split(' ').map(val => val.trim()));\n this.mergeAttributes(exportEl.exportsSlottables[slotId], slottable, _noinherit, false/*prioritize*/);\n } else {\n // Copy new slottables\n exportEl.append(slottable.clone(true));\n }\n });\n return exportEl;\n};\n\n/**\n * Imports attributes from sourceEl into el.\n *\n * @param Element\t\t\t\t el\n * @param Element\t\t\t\t sourceEl\n * @param array\t\t\t\t\t\tnoinherit\n * @param bool\t\t\t\t\t\tprioritize\n *\n * @return Element\n */\nexport function mergeAttributes(el, sourceEl, noinherit = [], prioritize = true) {\n // ----------------------------\n // Norecompose directive\n // ----------------------------\n noinherit = noinherit.concat(_defaultNoInherits);\n if (el.hasAttribute('noinherit')) {\n noinherit = noinherit.concat((el.getAttribute('noinherit') || '*').split(' ').map(val => val.trim()));\n }\n // ----------------------------\n // Merge list attributes...\n // ----------------------------\n var defaultListAttrs = _defaultListAttrs.concat(['role', 'class']);\n _unique(defaultListAttrs).forEach(type => {\n var b_attr, a_attr;\n if (!noinherit.includes(type) && !noinherit.includes('*') && (b_attr = sourceEl.getAttribute(type))) {\n if (a_attr = el.getAttribute(type)) {\n var jointList = !prioritize ? [b_attr, a_attr] : [a_attr, b_attr];\n } else {\n var jointList = [b_attr];\n }\n el.setAttribute(type, _unique(jointList.join(' ').split(' ').map(r => r.trim())).join(' '));\n noinherit.push(type);\n }\n });\n // ----------------------------\n // Merge key/val attributes...\n // ----------------------------\n _unique(_defaultKeyValAttrs.concat('style')).forEach(type => {\n var b_attr, a_attr;\n if (!noinherit.includes(type) && !noinherit.includes('*') && (b_attr = sourceEl.getAttribute(type))) {\n if (a_attr = el.getAttribute(type)) {\n var jointDefs = !prioritize ? [b_attr, a_attr] : [a_attr, b_attr];\n if (!jointDefs[0].trim().endsWith(';')) {\n jointDefs[0] = jointDefs[0] + ';';\n }\n } else {\n var jointDefs = [b_attr];\n }\n el.setAttribute(type, jointDefs.join(' '));\n noinherit.push(type);\n }\n });\n // ----------------------------\n // Port all other attributes...\n // ----------------------------\n if (!noinherit.includes('*')) {\n for (var i = 0; i < sourceEl.attributes.length; i ++) {\n var attr = sourceEl.attributes[i];\n if (!noinherit.includes(attr.name) \n && (!el.hasAttribute(attr.name) || prioritize)) {\n el.setAttribute(attr.name, attr.value);\n }\n }\n }\n return el;\n};\n\nconst _defaultNoInherits = ['nocompose'], \n _defaultKeyValAttrs = [],\n _defaultListAttrs = [];\n","\n/**\n * Removes instances of reference up to <limit> times.\n *\n * @param array \tarr\n * @param mixed\t \titm\n * @param int|bool \tlimit\n *\n * @return array\n */\nexport default function(arr, itm, limit = false) {\n\tvar i = arr.indexOf(itm);\n\twhile (i > -1 && (limit || limit === false)) {\n\t\tarr.splice(i, 1);\n\t\tif (limit > 0) {\n\t\t\tlimit --;\n\t\t};\n\t\ti = arr.indexOf(itm);\n\t};\n\treturn arr;\n};\n","\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\n\n/**\n * Returns the difference 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 init from './index.js';\n\n/**\n * @init\n */\ninit.call( window );"],"names":["arr","callback","reduce","prevTest","itm","i","val","Array","isArray","String","arguments","length","undefined","castObject","Object","keys","prototype","slice","call","values","filter","value","index","self","indexOf","internals","obj","namespaces","globalThis","WebQitInternalsRegistry","Map","_ns","_itnls","itnls","get","set","shift","this","window","Error","_window","WebQit","_vendor","_prefix","defineProperty","getName","InstallTrigger","test","HTMLElement","safari","pushNotification","toString","isChrome","chrome","webstore","runtime","isEdgeChromium","navigator","userAgent","isOpera","opr","addons","opera","isIE","document","documentMode","isEdge","StyleMedia","CSS","getPrefix","styles","getComputedStyle","documentElement","prefix","join","match","Olink","api","RegExp","css","Reflow","constructor","asyncDOM","async","readCallbacks","writeCallbacks","_run","requestAnimationFrame","forEach","onread","withPromise","Promise","resolve","reject","push","onwrite","cycle","read","write","prevTransaction","readReturn","callWrite","writeReturn","repeatTransaction","then","DOM","isDOMReady","readyState","domReadyCallbacks","addEventListener","splice","cb","Mutations","onAdded","els","params","on","onPresenceChange","el","presence","isTransient","addedState","removedState","onRemoved","onPresent","selector","MutationObserver","querySelectorAll","parentNode","onAbsent","Set","fire","list","state","sourceArray","$$searchCache","matches","_matches","has","nodeListArray","node","observeIndirectMutation","collection","concat","includes","search","maintainCallState","add","delete","subject","context","_observe","removed__addedNodes","added__removedNodes","addedNodes","removedNodes","ignoreTransients","onAttrChange","observer","attributes","attributeOldValue","attributeFilter","observe","onTreeChange","subtree","childList","onMutation","MutationObserversCache","callbacks","mutations","size","mut","isConnected","_observer","disconnect","reconnect","query","input","all","trim","startsWith","temp","createElement","innerHTML","children","firstChild","querySelector","Element","queryAll","matchedItems","method","e","replace","Number","isNaN","ctxt","path","trap","reciever","_ctxt","_key","exists","buildTree","_set","target","key","branch","reduceTree","success","lastKey","pop","_obj","deleteProperty","del","meta","name","readWrite","metaInstance","head","setAttribute","append","vars","getAttribute","split","v","_metaVars","directive","directiveSplit","map","d","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","bind","ready","openingTag","closingTag","beforeLast","pos","lastIndexOf","substr","afterLast","mergeCallback","objs","deepProps","isReplace","withSymbols","depth","obj1","obj2","until","keysAll","prototypalChain","getPrototypeOf","items","getOwnPropertyNames","valAtObj1","valAtObj2","getOwnPropertyDescriptor","k","_flatten","withObjects","acc","amount","count","firsts","reverse","_even","assertion","obj1Keys","obj2Keys","result","netComparison","contrast","returnOnFirstFalse","contn","v1","returnValue","testPass","v2","parseFloat","Lexer","static","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","matchedDelim","preserveDelims","nextIndex","quote","block","Math","max","testList","ret","useRegex","m","ci","toLowerCase","isNewSeries","splitSeries","splitSeries2","regParse","regSplit","regMatch","config","overrides","dom","OOHTML","parseScopeReferenceExpr","reference","_modifiers","_modifier","parentheses","create","evalAssertExpr","segment","_result","_reference","operator","theEnd","t","evalModuleExpr","contexts","collectionCallback","lookAhead","_list","_module","modifiers","itemArray","endsWith","appliedModifiers","modifier","nextLevel","_itemArray","module","filterHavingsResult","_filterHavings","execScopeQuery","advancementCallback","level","isStopSegmentIfCount","modules","submodules","_defaultNoInherits","_defaultKeyValAttrs","_defaultListAttrs","init","_config","onDomReady","importInertContexts","_meta","element","import","attr","importid","exportsearch","modulerefSelector","exportgroupSelector","Import","importEl","importID","hydrate","anchorNode","slottedElements","compositionBlock","_bindSlotted","_connectToCompositionBlock","connectedCallback","createComment","outerHTML","createTextNode","hasAttribute","closest","exports","_export","importReference","removed","remd","replaceWith","reason","inertContext","templateSource","console","warn","moduleref","importId","importModifiers","searchA","searchB","a","queryPath","n","scopeQuery","host","_modules","isRewinding","exportsAggr","_exports","getExports","arr2","val1","val2","fill","empty","cloneNode","sourceEl","noinherit","prioritize","type","b_attr","a_attr","jointList","r","jointDefs","mergeAttributes","before","silently","slottedElement","remove","observedAttributes","resolveSlots","exportName","shouldResolve","importElInstance","importName","mr","attributeName","oldValue","detail","prev","_prev","sementIsMatch","_sementIsMatch","queryMatchPath","addedExports","removedExports","exportGroup","childNodes","nodeValue","nodeType","reviver"],"sourceRoot":""}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../node_modules/@webqit/util/str/after.js", "../node_modules/@webqit/util/arr/any.js", "../node_modules/@webqit/util/str/before.js", "../node_modules/@webqit/util/js/isUndefined.js", "../node_modules/@webqit/util/js/isTypeFunction.js", "../node_modules/@webqit/util/js/isFunction.js", "../node_modules/@webqit/util/arr/pushUnique.js", "../node_modules/@webqit/util/js/isArray.js", "../node_modules/@webqit/util/js/isString.js", "../node_modules/@webqit/util/js/isTypeArray.js", "../node_modules/@webqit/util/js/isNull.js", "../node_modules/@webqit/util/js/isTypeObject.js", "../node_modules/@webqit/util/js/isEmpty.js", "../node_modules/@webqit/util/js/isObject.js", "../node_modules/@webqit/util/arr/from.js", "../node_modules/@webqit/util/arr/difference.js", "../node_modules/@webqit/util/arr/remove.js", "../node_modules/@webqit/util/arr/first.js", "../node_modules/@webqit/util/js/isNumber.js", "../node_modules/@webqit/util/js/isNumeric.js", "../node_modules/@webqit/util/arr/flatten.js", "../node_modules/@webqit/util/js/isBoolean.js", "../node_modules/@webqit/util/arr/last.js", "../node_modules/@webqit/util/obj/each.js", "../node_modules/@webqit/util/arr/unique.js", "../node_modules/@webqit/util/js/internals.js", "../node_modules/@webqit/util/js/isPlainObject.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/merge.js", "../node_modules/@webqit/util/obj/compareCallback.js", "../node_modules/@webqit/util/obj/copyPlain.js", "../node_modules/@webqit/util/obj/even.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/beforeLast.js", "../node_modules/@webqit/util/str/unwrap.js", "../node_modules/@webqit/util/str/wrapped.js", "../node_modules/@webqit/util/str/Lexer.js", "../src/util.js", "../src/html-imports/index.js", "../src/html-imports/browser-entry.js"],
|
|
4
|
+
"sourcesContent": ["\n/**\n * Return the remainder of a string after a given value.\n *\n * @param string subject\n * @param string search\n * @param bool\t afterLast\n *\n * @return string\n */\nexport default function(subject, search, afterLast = false) {\n\tif (search == '') {\n\t\treturn subject;\n\t}\n\tvar pos = afterLast ? subject.lastIndexOf(search) : subject.indexOf(search);\n\tif (pos === -1) {\n\t\treturn '';\n\t}\n\treturn subject.substr(pos + search.length);\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 * Return the part of a string before a given value.\n *\n * @param string subject\n * @param string search\n * @param bool\t beforeLast\n *\n * @return string\n */\nexport default function(subject, search, beforeLast = false) {\n\tif (search == '') {\n\t\treturn subject;\n\t}\n\tvar pos = beforeLast ? subject.lastIndexOf(search) : subject.indexOf(search);\n\tif (pos === -1) {\n\t\treturn subject;\n\t}\n\treturn subject.substr(0, pos);\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 * 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 * 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 * 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 \"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 * 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 _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 * 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 * @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 _isArray from '../js/isArray.js';\n\n/**\n * Returns the difference 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 * Removes instances of reference up to <limit> times.\n *\n * @param array \tarr\n * @param mixed\t \titm\n * @param int|bool \tlimit\n *\n * @return array\n */\nexport default function(arr, itm, limit = false) {\n\tvar i = arr.indexOf(itm);\n\twhile (i > -1 && (limit || limit === false)) {\n\t\tarr.splice(i, 1);\n\t\tif (limit > 0) {\n\t\t\tlimit --;\n\t\t};\n\t\ti = arr.indexOf(itm);\n\t};\n\treturn arr;\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 * 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 _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 * 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 _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 * @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 * 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 * 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 * @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 * @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 _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 _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 _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", "\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 _before from './before.js';\n\n/**\n * Return the part of a string before last occurence of a given value.\n *\n * @param string subject\n * @param string search\n *\n * @return string\n */\nexport default function(subject, search) {\n\treturn _before(subject, search, true);\n};\n", "\n/**\n * @imports\n */\nimport _after from './after.js';\nimport _beforeLast from './beforeLast.js';\n\n/**\n * Returns the string without the given opening and closing tags.\n *\n * @param string subject\n * @param string openingTag\n * @param string closingTag\n *\n * @return string\n */\nexport default function(subject, openingTag, closingTag) {\n\treturn _beforeLast(_after(subject, openingTag), closingTag);\n};\n", "\n/**\n * Tells if the string is warapped with the given opening and closing tags.\n *\n * @param string subject\n * @param string openingTag\n * @param string closingTag\n *\n * @return bool\n */\nexport default function(subject, openingTag, closingTag) {\n\treturn subject.startsWith(openingTag) && subject.endsWith(closingTag);\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 { _any, _remove, _unique, _difference, _from as _arrFrom } from '@webqit/util/arr/index.js';\nimport { _internals } from '@webqit/util/js/index.js';\nimport { _each } from '@webqit/util/obj/index.js';\nimport domInit from '@webqit/browser-pie/src/dom/index.js';\nimport { config, scopeQuery,\n parseScopeReferenceExpr, queryMatchPath\n} from '../util.js';\n\n/**\n * ---------------------------\n * HTML Partials\n * ---------------------------\n */\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 const importInertContexts = [];\n const _meta = config.call(this, {\n element: {\n import: 'import',\n },\n attr: {\n importid: 'name',\n exportsearch: 'exportsearch',\n },\n }, _config.params );\n\n _defaultNoInherits.push(_meta.get('attr.importid'), _meta.get('attr.moduleref'));\n const modulerefSelector = '[' + window.CSS.escape(_meta.get('attr.moduleref')) + ']';\n const exportgroupSelector = '[' + window.CSS.escape(_meta.get('attr.exportgroup')) + ']';\n\n // ----------------------\n // Capture slot elements\n // ----------------------\n\n let prev;\n const Import = class/* extends window.HTMLElement*/ {\n\n /*\n static create(el) {\n return el;\n }\n constructor(importEl) {\n super();\n this.el = this;\n }\n */\n\n static create(el) {\n return _internals(this.el, 'oohtml').get('instance') || new Import(el);\n }\n constructor(importEl) {\n this.el = importEl;\n _internals(this.el, 'oohtml').set('instance', this);\n const [ importID, modifiers ] = parseScopeReferenceExpr(importEl.getAttribute(_meta.get('attr.importid')) || 'default');\n _internals(this.el, 'oohtml').set('importID', importID);\n _internals(this.el, 'oohtml').set('importModifiers', modifiers);\n }\n \n /**\n * Called by the Slots hydrator.\n *\n * @param Comment anchorNode\n * @param array slottedElements\n * @param Element compositionBlock\n *\n * @return void\n */\n hydrate(anchorNode, slottedElements, compositionBlock) {\n _internals(this.el, 'oohtml').set('anchorNode', anchorNode);\n _internals(this.el, 'oohtml').set('slottedElements', slottedElements);\n _internals(this.el, 'oohtml').set('compositionBlock', compositionBlock);\n this._bindSlotted(slottedElements);\n this._connectToCompositionBlock();\n }\n \n /**\n * This triggers self-resolution\n *\n * @return void\n */\n connectedCallback() {\n if (!_internals(this.el, 'oohtml').has('anchorNode')) {\n _internals(this.el, 'oohtml').set('anchorNode', _meta.get('isomorphic')\n ? document.createComment(this.el.outerHTML)\n : document.createTextNode(''));\n _internals(this.el, 'oohtml').set('compositionBlock', !this.el.hasAttribute(_meta.get('attr.moduleref'))\n ? this.el.parentNode.closest(modulerefSelector) : (\n this.el.getAttribute(_meta.get('attr.moduleref')).trim().startsWith('~') ? this.el.parentNode.closest(exportgroupSelector) : null\n ));\n this._connectToCompositionBlock();\n }\n WebQit.DOM.ready.call(WebQit, () => {\n this.resolve('connected');\n });\n }\n \n /**\n * Connects the instance to the compositionBlock.\n */\n _connectToCompositionBlock() {\n if (this.compositionBlock) {\n // Now after the update slot ID\n _internals(this.compositionBlock, 'oohtml', 'imports').set(this.importID, this.el);\n }\n }\n\n /**\n * Bind a slotted element.\n *\n * @param array exports\n *\n * @return void\n */\n _bindSlotted(exports) {\n exports.forEach(_export => {\n _export.importReference = this.el;\n });\n _internals(this.el, 'oohtml').set('slottedObserver', mutations.onRemoved(exports, (removed, state, isTransient, addedState, removedState) => {\n if (removedState && removedState.size === exports.length) {\n _internals(this.el, 'oohtml').get('slottedObserver').disconnect();\n }\n removed.forEach(remd => {\n // Let's ensure this wasn't slotted againe\n if (!remd.parentNode) {\n _remove(this.slottedElements, remd);\n }\n // if the slotted hasnt been slotted somewhere\n if (remd.importReference === this.el) {\n delete remd.importReference;\n }\n });\n // If this was the last of the s,ottable in the same family of IDs,\n // we should restore the original slot\n if (!this.slottedElements.length) {\n // Must be assigned bu now\n // for it to be removed in the first place\n if (this.anchorNode.isConnected) {\n this.anchorNode.replaceWith(this.el);\n }\n }\n }, {maintainCallState: true, ignoreTransients: true}));\n }\n\n /**\n * Resolves the slot\n */\n resolve(reason = null) {\n if (_any(importInertContexts, inertContext => this.el.closest(inertContext))) {\n return;\n }\n var getExports = (contexts, moduleref, exportsearch) => {\n var importId = this.importID,\n modifiers = this.importModifiers,\n [ searchA, searchB ] = (('search' in modifiers) || exportsearch !== null) ? ('search' in modifiers ? modifiers.search : exportsearch).split('-').filter(a => a).map(a => parseInt(a || 0)).concat([0, 1000]) : [0, 0];\n const aggrExports = modules => modules.reduce((_exports, _module) => _exports.concat(_internals(_module, 'oohtml', 'exports').get(importId) || []), []);\n return scopeQuery(contexts, moduleref, function(host, prop) {\n var collection = _internals(host, 'oohtml', 'templates');\n if (arguments.length === 1) return collection;\n if (prop.startsWith(':')) return _internals(host, 'oohtml', 'exports').get(prop.substr(1));\n return collection.get(prop);\n }, function(_modules, level, isRewinding) {\n var exportsAggr = aggrExports(_modules);\n if (!exportsAggr.length && level > searchA && searchB) {\n searchB --;\n return -1;\n }\n return exportsAggr;\n });\n };\n // -----------------\n // Global import or scoped slot?\n var templateSource, exports;\n if (this.el.hasAttribute(_meta.get('attr.moduleref'))) {\n // Did we previously had a compositionBlock?\n // Let's remove ourself\n if (this.compositionBlock && _internals(this.compositionBlock, 'oohtml', 'imports').get(this.importID) === this.el) {\n _internals(this.compositionBlock, 'oohtml', 'imports').delete(this.importID);\n }\n templateSource = this.el;\n } else {\n if (!this.compositionBlock) {\n console.warn('Scoped slots must be found within template contexts. [' + this.importID + ']', this.el);\n return;\n }\n templateSource = this.compositionBlock;\n }\n var moduleref = templateSource.getAttribute(_meta.get('attr.moduleref')).trim();\n var exportsearch = this.el.getAttribute(_meta.get('attr.exportsearch'));\n if (templateSource && (exports = getExports([moduleref.startsWith('~') ? this.compositionBlock : document], moduleref, exportsearch)).length) {\n if (_difference(exports, _internals(this.el, 'oohtml').get('originalSlottedElements') || []).length) {\n _internals(this.el, 'oohtml').set('originalSlottedElements', exports);\n this.fill(exports);\n }\n } else {\n _internals(this.el, 'oohtml').set('originalSlottedElements', null);\n this.empty();\n }\n }\n\n /**\n * Fill slot with exports.\n *\n * @param array|Element exports\n *\n * @return void\n */\n fill(exports) {\n exports = _arrFrom(exports, false/* castObject */).map(_export => _export.cloneNode(true));\n // ---------------------\n // Discard previous slotted elements\n // But this intentional removal should not trigger slot restoration\n this.empty(true/* silently */);\n if (this.el.isConnected) {\n this.el.replaceWith(this.anchorNode);\n }\n // ---------------------\n // Slot-in the corresponding exports from template\n exports.forEach(_export => {\n // ---------------------\n // Implement the slot?\n _internals(_export, 'oohtml', 'templates').set('~', this.el);\n // Inherit attributes from the slot element before replacement\n mergeAttributes(_export, this.el);\n // ---------------------\n if (!_export.getAttribute(_meta.get('attr.exportgroup'))) {\n _export.setAttribute(_meta.get('attr.exportgroup'), this.importID);\n }\n // Place slottable\n this.anchorNode.before(_export);\n });\n this._bindSlotted(exports);\n // ---------------------\n // Updatate records\n this.slottedElements.push(...exports);\n }\n\n /**\n * Empty slot.\n *\n * @param bool sliently\n *\n * @return void\n */\n empty(silently = false) {\n if (this.slottedElements) {\n var slottedElements = this.slottedElements;\n if (silently && _internals(this.el, 'oohtml').has('slottedObserver')) {\n _internals(this.el, 'oohtml').get('slottedObserver').disconnect();\n slottedElements = this.slottedElements.splice(0);\n }\n slottedElements.forEach(slottedElement => slottedElement.remove());\n }\n }\n\n /**\n * Returns the slot's name.\n *\n * @return string\n */\n get importID() {\n return _internals(this.el, 'oohtml').get('importID');\n }\n\n /**\n * Returns the slot's import Modifiers.\n *\n * @return string\n */\n get importModifiers() {\n return _internals(this.el, 'oohtml').get('importModifiers');\n }\n\n /**\n * Returns the slot's anchorNode.\n *\n * @return array\n */\n get anchorNode() {\n return _internals(this.el, 'oohtml').get('anchorNode');\n }\n\n /**\n * Returns the slot's compositionBlock, if any.\n *\n * @return array\n */\n get compositionBlock() {\n return _internals(this.el, 'oohtml').get('compositionBlock');\n }\n\n /**\n * Returns the slot's slotted elements.\n *\n * @return array\n */\n get slottedElements() {\n if (!_internals(this.el, 'oohtml').has('slottedElements')) {\n _internals(this.el, 'oohtml').set('slottedElements', []);\n }\n return _internals(this.el, 'oohtml').get('slottedElements');\n }\n\n /**\n * Returns the slot's implementable exports\n *\n * @return array\n */\n get exports() {\n return _internals(this.el, 'oohtml').get('exports');\n }\n \n /**\n * The attributes we want to observe.\n *\n * @return array\n */\n static get observedAttributes() {\n return [_meta.get('attr.importid')];\n }\n };\n\n // ----------------------\n // Capture import elements\n // ----------------------\n\n mutations.onPresent(_meta.get('element.import'), el => {\n var importElInstance = Import.create(el);\n importElInstance.connectedCallback();\n });\n /**\n window.customElements.define(_meta.get('element.import'), Import);\n */\n\n // ----------------------\n // Progressive resolution\n // ----------------------\n \n const resolveSlots = (el, exportName, reason = null) => {\n const shouldResolve = (importElInstance, importName) => {\n return !exportName || importName === exportName || (\n exportName === true && ((importElInstance.importModifiers && ('search' in importElInstance.importModifiers)) || importElInstance.el.getAttribute(_meta.get('attr.exportsearch')))\n );\n };\n if (el.matches(_meta.get('element.import'))) {\n var importElInstance = Import.create(el);\n if (shouldResolve(importElInstance, importElInstance.importID)) {\n importElInstance.resolve(reason);\n }\n } else {\n _internals(el, 'oohtml', 'imports').forEach((importEl, name) => {\n var importElInstance = Import.create(importEl);\n if (shouldResolve(importElInstance, name)) {\n importElInstance.resolve(`Resolution scope: ${reason}`);\n }\n });\n }\n };\n \n mutations.onPresent(modulerefSelector, el => {\n if (_any(importInertContexts, inertContext => el.closest(inertContext))) {\n return;\n }\n // Imports resolve by themselves\n // But...\n // We resolve them again when reference to template changes\n mutations.onAttrChange(el, mr => {\n if (mr[0].target.getAttribute(mr[0].attributeName) !== mr[0].oldValue) {\n resolveSlots(el, null, `Attr-Change: ${mr[0].attributeName}`);\n }\n }, [_meta.get('attr.moduleref'), _meta.get('attr.importid')]);\n });\n\n document.addEventListener('templatemutation', e => {\n // Resolve slots when the referenced template changes\n if (!e.detail.path) {\n return;\n }\n _arrFrom(document.querySelectorAll('[' + window.CSS.escape(_meta.get('attr.moduleref')) + ']')).forEach(el => {\n if (queryMatchPath(el.getAttribute(_meta.get('attr.moduleref')), e.detail.path)) {\n resolveSlots(el, true/* resolve imports with search() */, `'templatemutation' event: ${e.detail.path}, search()`);\n e.detail.addedExports.concat(e.detail.removedExports).forEach(exportGroup => {\n resolveSlots(el, exportGroup.name, `'templatemutation' event: ${e.detail.path}, ${exportGroup.name}`);\n });\n }\n });\n });\n\n // ----------------------\n // Restore slots from snapshots\n // ----------------------\n\n const hydrateSlots = () => {\n _arrFrom(document.querySelectorAll(exportgroupSelector)).forEach(_export => {\n // Scan\n if (_internals(_export.parentNode, 'oohtml').get('importsCan')) return;\n // hydrateSlots() might be running AFTER certain <slots> have resolved\n // and _export might be a just-resolved node\n if (_export.importReference) return;\n var slottedElements = [];\n _export.parentNode.childNodes.forEach(node => {\n var nodeValue;\n if (node.nodeType === 1/** ELEMENT_NODE */ && node.matches(exportgroupSelector)) {\n slottedElements.push(node);\n } else if (node.nodeType === 8/** COMMENT_NODE */ && (nodeValue = node.nodeValue.trim())\n && nodeValue.startsWith('<' + _meta.get('element.import'))\n && nodeValue.endsWith('</' + _meta.get('element.import') + '>')) {\n var importEl, reviver = document.createElement('div');\n reviver.innerHTML = nodeValue;\n if ((importEl = reviver.firstChild).matches(_meta.get('element.import'))) {\n // Belongs to a composition block?\n var compositionBlock = !importEl.hasAttribute(_meta.get('attr.moduleref'))\n ? node.parentNode.closest(modulerefSelector) : (\n importEl.getAttribute(_meta.get('attr.moduleref')).trim().startsWith('~') ? node.parentNode.closest(exportgroupSelector) : null\n )\n var importElInstance = Import.create(importEl);\n importElInstance.hydrate(node, slottedElements, compositionBlock);\n // Empty basket\n slottedElements = [];\n }\n }\n });\n // Scanning is once for every parent\n _internals(_export.parentNode, 'oohtml').set('importsCan', true);\n });\n };\n\n // ----------------------\n // Hydrate\n // ----------------------\n\n WebQit.DOM.ready.call(WebQit, () => {\n if (_meta.get('isomorphic')) {\n hydrateSlots();\n }\n });\n\n};\n\n/**\n * Imports exports from from sourceEl into el.\n *\n * @param Element\t\t\t\t exportEl\n * @param Element\t\t\t\t superExportEl\n * @param array \t\t\t\t noinherit\n *\n * @return Element\n */\nexport function mergePartials(exportEl, superExportEl, noinherit = []) {\n if (!superExportEl.exportsSlottables) {\n return exportEl;\n }\n _each(superExportEl.exportsSlottables, (slotId, slottable) => {\n if (exportEl.exportsSlottables && exportEl.exportsSlottables[slotId]) {\n // Simply inherit attributes from the search slottable\n // The export may however define a no-inherit directive for all its slottables\n var _noinherit = noinherit.concat((exportEl.getAttribute('noinherit') || '').split(' ').map(val => val.trim()));\n this.mergeAttributes(exportEl.exportsSlottables[slotId], slottable, _noinherit, false/*prioritize*/);\n } else {\n // Copy new slottables\n exportEl.append(slottable.clone(true));\n }\n });\n return exportEl;\n};\n\n/**\n * Imports attributes from sourceEl into el.\n *\n * @param Element\t\t\t\t el\n * @param Element\t\t\t\t sourceEl\n * @param array\t\t\t\t\t\tnoinherit\n * @param bool\t\t\t\t\t\tprioritize\n *\n * @return Element\n */\nexport function mergeAttributes(el, sourceEl, noinherit = [], prioritize = true) {\n // ----------------------------\n // Norecompose directive\n // ----------------------------\n noinherit = noinherit.concat(_defaultNoInherits);\n if (el.hasAttribute('noinherit')) {\n noinherit = noinherit.concat((el.getAttribute('noinherit') || '*').split(' ').map(val => val.trim()));\n }\n // ----------------------------\n // Merge list attributes...\n // ----------------------------\n var defaultListAttrs = _defaultListAttrs.concat(['role', 'class']);\n _unique(defaultListAttrs).forEach(type => {\n var b_attr, a_attr;\n if (!noinherit.includes(type) && !noinherit.includes('*') && (b_attr = sourceEl.getAttribute(type))) {\n if (a_attr = el.getAttribute(type)) {\n var jointList = !prioritize ? [b_attr, a_attr] : [a_attr, b_attr];\n } else {\n var jointList = [b_attr];\n }\n el.setAttribute(type, _unique(jointList.join(' ').split(' ').map(r => r.trim())).join(' '));\n noinherit.push(type);\n }\n });\n // ----------------------------\n // Merge key/val attributes...\n // ----------------------------\n _unique(_defaultKeyValAttrs.concat('style')).forEach(type => {\n var b_attr, a_attr;\n if (!noinherit.includes(type) && !noinherit.includes('*') && (b_attr = sourceEl.getAttribute(type))) {\n if (a_attr = el.getAttribute(type)) {\n var jointDefs = !prioritize ? [b_attr, a_attr] : [a_attr, b_attr];\n if (!jointDefs[0].trim().endsWith(';')) {\n jointDefs[0] = jointDefs[0] + ';';\n }\n } else {\n var jointDefs = [b_attr];\n }\n el.setAttribute(type, jointDefs.join(' '));\n noinherit.push(type);\n }\n });\n // ----------------------------\n // Port all other attributes...\n // ----------------------------\n if (!noinherit.includes('*')) {\n for (var i = 0; i < sourceEl.attributes.length; i ++) {\n var attr = sourceEl.attributes[i];\n if (!noinherit.includes(attr.name) \n && (!el.hasAttribute(attr.name) || prioritize)) {\n el.setAttribute(attr.name, attr.value);\n }\n }\n }\n return el;\n};\n\nconst _defaultNoInherits = ['nocompose'], \n _defaultKeyValAttrs = [],\n _defaultListAttrs = [];\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
|
+
}
|