@tko/provider.native
Advanced tools
+401
-283
@@ -1,2 +0,3 @@ | ||
| // @tko/provider.native 🥊 4.0.0-beta1.3 CommonJS | ||
| // @tko/provider.native 🥊 4.0.0 CommonJS | ||
| "use strict"; | ||
| var __defProp = Object.defineProperty; | ||
@@ -6,2 +7,6 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | ||
| var __hasOwnProp = Object.prototype.hasOwnProperty; | ||
| var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name); | ||
| var __typeError = (msg) => { | ||
| throw TypeError(msg); | ||
| }; | ||
| var __export = (target, all) => { | ||
@@ -20,16 +25,48 @@ for (var name in all) | ||
| var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
| var __await = function(promise, isYieldStar) { | ||
| this[0] = promise; | ||
| this[1] = isYieldStar; | ||
| }; | ||
| var __yieldStar = (value) => { | ||
| var obj = value[__knownSymbol("asyncIterator")], isAwait = false, method, it = {}; | ||
| if (obj == null) { | ||
| obj = value[__knownSymbol("iterator")](); | ||
| method = (k) => it[k] = (x) => obj[k](x); | ||
| } else { | ||
| obj = obj.call(value); | ||
| method = (k) => it[k] = (v) => { | ||
| if (isAwait) { | ||
| isAwait = false; | ||
| if (k === "throw") throw v; | ||
| return v; | ||
| } | ||
| isAwait = true; | ||
| return { | ||
| done: false, | ||
| value: new __await(new Promise((resolve) => { | ||
| var x = obj[k](v); | ||
| if (!(x instanceof Object)) __typeError("Object expected"); | ||
| resolve(x); | ||
| }), 1) | ||
| }; | ||
| }; | ||
| } | ||
| return it[__knownSymbol("iterator")] = () => it, method("next"), "throw" in obj ? method("throw") : it.throw = (x) => { | ||
| throw x; | ||
| }, "return" in obj && method("return"), it; | ||
| }; | ||
| // index.ts | ||
| var provider_exports = {}; | ||
| __export(provider_exports, { | ||
| var index_exports = {}; | ||
| __export(index_exports, { | ||
| NATIVE_BINDINGS: () => NATIVE_BINDINGS, | ||
| NativeProvider: () => NativeProvider | ||
| }); | ||
| module.exports = __toCommonJS(provider_exports); | ||
| module.exports = __toCommonJS(index_exports); | ||
| // ../utils/dist/array.js | ||
| var { isArray } = Array; | ||
| function arrayForEach(array, action, thisArg) { | ||
| function arrayForEach(array, action, actionOwner) { | ||
| if (arguments.length > 2) { | ||
| action = action.bind(thisArg); | ||
| action = action.bind(actionOwner); | ||
| } | ||
@@ -44,3 +81,3 @@ for (let i = 0, j = array.length; i < j; ++i) { | ||
| function arrayRemoveItem(array, itemToRemove) { | ||
| var index = arrayIndexOf(array, itemToRemove); | ||
| const index = arrayIndexOf(array, itemToRemove); | ||
| if (index > 0) { | ||
@@ -54,3 +91,3 @@ array.splice(index, 1); | ||
| if (left.length && right.length) { | ||
| var failedCompares, l, r, leftItem, rightItem; | ||
| let failedCompares, l, r, leftItem, rightItem; | ||
| for (failedCompares = l = 0; (!limitFailedCompares || failedCompares < limitFailedCompares) && (leftItem = left[l]); ++l) { | ||
@@ -83,6 +120,6 @@ for (r = 0; rightItem = right[r]; ++r) { | ||
| function compareSmallArrayToBigArray(smlArray, bigArray, statusNotInSml, statusNotInBig, options2) { | ||
| var myMin = Math.min, myMax = Math.max, editDistanceMatrix = [], smlIndex, smlIndexMax = smlArray.length, bigIndex, bigIndexMax = bigArray.length, compareRange = bigIndexMax - smlIndexMax || 1, maxDistance = smlIndexMax + bigIndexMax + 1, thisRow, lastRow, bigIndexMaxForRow, bigIndexMinForRow; | ||
| let myMin = Math.min, myMax = Math.max, editDistanceMatrix = new Array(), smlIndex, smlIndexMax = smlArray.length, bigIndex, bigIndexMax = bigArray.length, compareRange = bigIndexMax - smlIndexMax || 1, maxDistance = smlIndexMax + bigIndexMax + 1, thisRow, lastRow, bigIndexMaxForRow, bigIndexMinForRow; | ||
| for (smlIndex = 0; smlIndex <= smlIndexMax; smlIndex++) { | ||
| lastRow = thisRow; | ||
| editDistanceMatrix.push(thisRow = []); | ||
| editDistanceMatrix.push(thisRow = new Array()); | ||
| bigIndexMaxForRow = myMin(bigIndexMax, smlIndex + compareRange); | ||
@@ -98,4 +135,4 @@ bigIndexMinForRow = myMax(0, smlIndex - 1); | ||
| } else { | ||
| var northDistance = lastRow[bigIndex] || maxDistance; | ||
| var westDistance = thisRow[bigIndex - 1] || maxDistance; | ||
| const northDistance = lastRow[bigIndex] || maxDistance; | ||
| const westDistance = thisRow[bigIndex - 1] || maxDistance; | ||
| thisRow[bigIndex] = myMin(northDistance, westDistance) + 1; | ||
@@ -105,25 +142,28 @@ } | ||
| } | ||
| var editScript = [], meMinusOne, notInSml = [], notInBig = []; | ||
| let editScript = new Array(), meMinusOne, notInSml = new Array(), notInBig = new Array(); | ||
| for (smlIndex = smlIndexMax, bigIndex = bigIndexMax; smlIndex || bigIndex; ) { | ||
| meMinusOne = editDistanceMatrix[smlIndex][bigIndex] - 1; | ||
| if (bigIndex && meMinusOne === editDistanceMatrix[smlIndex][bigIndex - 1]) { | ||
| notInSml.push(editScript[editScript.length] = { | ||
| "status": statusNotInSml, | ||
| "value": bigArray[--bigIndex], | ||
| "index": bigIndex | ||
| }); | ||
| notInSml.push( | ||
| editScript[editScript.length] = { | ||
| // added | ||
| status: statusNotInSml, | ||
| value: bigArray[--bigIndex], | ||
| index: bigIndex | ||
| } | ||
| ); | ||
| } else if (smlIndex && meMinusOne === editDistanceMatrix[smlIndex - 1][bigIndex]) { | ||
| notInBig.push(editScript[editScript.length] = { | ||
| "status": statusNotInBig, | ||
| "value": smlArray[--smlIndex], | ||
| "index": smlIndex | ||
| }); | ||
| notInBig.push( | ||
| editScript[editScript.length] = { | ||
| // deleted | ||
| status: statusNotInBig, | ||
| value: smlArray[--smlIndex], | ||
| index: smlIndex | ||
| } | ||
| ); | ||
| } else { | ||
| --bigIndex; | ||
| --smlIndex; | ||
| if (!options2.sparse) { | ||
| editScript.push({ | ||
| "status": "retained", | ||
| "value": bigArray[bigIndex] | ||
| }); | ||
| if (!(options2 == null ? void 0 : options2.sparse)) { | ||
| editScript.push({ status: "retained", value: bigArray[bigIndex] }); | ||
| } | ||
@@ -137,36 +177,75 @@ } | ||
| // ../utils/dist/options.js | ||
| var options = { | ||
| deferUpdates: false, | ||
| useOnlyNativeEvents: false, | ||
| protoProperty: "__ko_proto__", | ||
| defaultBindingAttribute: "data-bind", | ||
| allowVirtualElements: true, | ||
| bindingGlobals: /* @__PURE__ */ Object.create(null), | ||
| bindingProviderInstance: null, | ||
| createChildContextWithAs: false, | ||
| jQuery: globalThis.jQuery, | ||
| Promise: globalThis.Promise, | ||
| taskScheduler: null, | ||
| debug: false, | ||
| global: globalThis, | ||
| document: globalThis.document, | ||
| filters: {}, | ||
| includeDestroyed: false, | ||
| foreachHidesDestroyed: false, | ||
| onError: function(e) { | ||
| throw e; | ||
| }, | ||
| set: function(name, value) { | ||
| options[name] = value; | ||
| }, | ||
| getBindingHandler() { | ||
| }, | ||
| cleanExternalData() { | ||
| var Options = class { | ||
| constructor() { | ||
| this.bindingStringPreparsers = []; | ||
| this.knockoutInstance = null; | ||
| this.deferUpdates = false; | ||
| this.useOnlyNativeEvents = true; | ||
| this.useTemplateTag = true; | ||
| this.protoProperty = "__ko_proto__"; | ||
| this.defaultBindingAttribute = "data-bind"; | ||
| this.allowVirtualElements = true; | ||
| this.bindingGlobals = /* @__PURE__ */ Object.create(null); | ||
| this.createChildContextWithAs = false; | ||
| this.disableJQueryUsage = false; | ||
| this.Promise = globalThis.Promise; | ||
| this.taskScheduler = null; | ||
| this.debug = false; | ||
| this.templateSizeLimit = 4096; | ||
| this.allowScriptTagsInTemplates = false; | ||
| this._sanitizeWarningLogged = false; | ||
| this.global = globalThis; | ||
| this.document = globalThis.document; | ||
| this.filters = {}; | ||
| this.includeDestroyed = false; | ||
| this.foreachHidesDestroyed = false; | ||
| } | ||
| get jQuery() { | ||
| var _a; | ||
| if (this.disableJQueryUsage) return; | ||
| return (_a = this._jQuery) != null ? _a : globalThis.jQuery; | ||
| } | ||
| /** | ||
| * Set jQuery manuall to be used by TKO. | ||
| * @param jQuery If jQuery set to undefined, TKO will not use jQuery and this.disableJQueryUsage to true. | ||
| */ | ||
| set jQuery(jQuery) { | ||
| if (!jQuery) { | ||
| this.disableJQueryUsage = true; | ||
| this._jQuery = void 0; | ||
| } else { | ||
| this._jQuery = jQuery; | ||
| this.disableJQueryUsage = false; | ||
| } | ||
| } | ||
| /** | ||
| * Sanitize HTML templates before parsing them. Default is a no-op. | ||
| * Please configure something like DOMPurify or validator.js for your environment. | ||
| * @param html HTML string to be sanitized | ||
| * @returns Sanitized HTML string | ||
| */ | ||
| sanitizeHtmlTemplate(html) { | ||
| if (!this._sanitizeWarningLogged) { | ||
| console.warn( | ||
| "WARNING -- You don't have a HTML sanitizer configured. Please configure options.sanitizeHtmlTemplate to avoid XSS vulnerabilities." | ||
| ); | ||
| this._sanitizeWarningLogged = true; | ||
| } | ||
| return html; | ||
| } | ||
| onError(e, throws = true) { | ||
| if (throws) throw e; | ||
| return e; | ||
| } | ||
| set(name, value) { | ||
| this[name] = value; | ||
| } | ||
| // Overload getBindingHandler to have a custom lookup function. | ||
| getBindingHandler(key) { | ||
| return null; | ||
| } | ||
| cleanExternalData(node, callback) { | ||
| } | ||
| }; | ||
| Object.defineProperty(options, "$", { | ||
| get: function() { | ||
| return options.jQuery; | ||
| } | ||
| }); | ||
| var options = new Options(); | ||
| var options_default = options; | ||
@@ -198,3 +277,3 @@ | ||
| function throttle(callback, timeout) { | ||
| var timeoutInstance; | ||
| let timeoutInstance; | ||
| return function(...args) { | ||
@@ -210,3 +289,3 @@ if (!timeoutInstance) { | ||
| function debounce(callback, timeout) { | ||
| var timeoutInstance; | ||
| let timeoutInstance; | ||
| return function(...args) { | ||
@@ -218,14 +297,2 @@ clearTimeout(timeoutInstance); | ||
| // ../utils/dist/ie.js | ||
| var ieVersion = options_default.document && function() { | ||
| var version = 3, div = options_default.document.createElement("div"), iElems = div.getElementsByTagName("i"); | ||
| while (div.innerHTML = "<!--[if gt IE " + ++version + "]><i></i><![endif]-->", iElems[0]) { | ||
| } | ||
| if (!version) { | ||
| const userAgent = window.navigator.userAgent; | ||
| return ua.match(/MSIE ([^ ]+)/) || ua.match(/rv:([^ )]+)/); | ||
| } | ||
| return version > 4 ? version : void 0; | ||
| }(); | ||
| // ../utils/dist/object.js | ||
@@ -237,4 +304,5 @@ function hasOwnProperty(obj, propName) { | ||
| if (source) { | ||
| for (var prop in source) { | ||
| for (const prop of Object.keys(source)) { | ||
| if (hasOwnProperty(source, prop)) { | ||
| ; | ||
| target[prop] = source[prop]; | ||
@@ -247,3 +315,3 @@ } | ||
| function objectForEach(obj, action) { | ||
| for (var prop in obj) { | ||
| for (const prop in obj) { | ||
| if (hasOwnProperty(obj, prop)) { | ||
@@ -261,4 +329,4 @@ action(prop, obj[prop]); | ||
| } | ||
| var target = {}; | ||
| for (var prop in source) { | ||
| const target = {}; | ||
| for (const prop in source) { | ||
| if (hasOwnProperty(source, prop)) { | ||
@@ -288,5 +356,2 @@ target[prop] = mapping(source[prop], prop, source); | ||
| // ../utils/dist/jquery.js | ||
| var jQueryInstance = options_default.global && options_default.global.jQuery; | ||
| // ../utils/dist/dom/info.js | ||
@@ -297,48 +362,40 @@ function tagNameLower(element) { | ||
| // ../utils/dist/dom/event.js | ||
| var knownEvents = {}; | ||
| var knownEventTypesByEventName = {}; | ||
| knownEvents["UIEvents"] = ["keyup", "keydown", "keypress"]; | ||
| knownEvents["MouseEvents"] = [ | ||
| "click", | ||
| "dblclick", | ||
| "mousedown", | ||
| "mouseup", | ||
| "mousemove", | ||
| "mouseover", | ||
| "mouseout", | ||
| "mouseenter", | ||
| "mouseleave" | ||
| ]; | ||
| objectForEach(knownEvents, function(eventType, knownEventsForType) { | ||
| if (knownEventsForType.length) { | ||
| for (let i = 0, j = knownEventsForType.length; i < j; i++) { | ||
| knownEventTypesByEventName[knownEventsForType[i]] = eventType; | ||
| } | ||
| } | ||
| }); | ||
| // ../utils/dist/dom/data.js | ||
| var datastoreTime = new Date().getTime(); | ||
| var datastoreTime = (/* @__PURE__ */ new Date()).getTime(); | ||
| var dataStoreKeyExpandoPropertyName = `__ko__${datastoreTime}`; | ||
| var dataStoreSymbol = Symbol("Knockout data"); | ||
| var dataStore; | ||
| var dataStoreSymbol = /* @__PURE__ */ Symbol("Knockout data"); | ||
| var uniqueId = 0; | ||
| var modern = { | ||
| getDataForNode(node, createIfNotFound) { | ||
| let dataForNode = node[dataStoreSymbol]; | ||
| if (!dataForNode && createIfNotFound) { | ||
| dataForNode = node[dataStoreSymbol] = {}; | ||
| } | ||
| return dataForNode; | ||
| }, | ||
| clear(node) { | ||
| if (node[dataStoreSymbol]) { | ||
| delete node[dataStoreSymbol]; | ||
| return true; | ||
| } | ||
| return false; | ||
| function isSafeKey(key) { | ||
| return key !== "__proto__" && key !== "constructor" && key !== "prototype"; | ||
| } | ||
| function getDataForNode(node, createIfNotFound) { | ||
| let dataForNode = node[dataStoreSymbol]; | ||
| if (!dataForNode && createIfNotFound) { | ||
| dataForNode = node[dataStoreSymbol] = {}; | ||
| } | ||
| }; | ||
| var IE = { | ||
| getDataforNode(node, createIfNotFound) { | ||
| let dataStoreKey = node[dataStoreKeyExpandoPropertyName]; | ||
| const hasExistingDataStore = dataStoreKey && dataStoreKey !== "null" && dataStore[dataStoreKey]; | ||
| if (!hasExistingDataStore) { | ||
| if (!createIfNotFound) { | ||
| return void 0; | ||
| } | ||
| dataStoreKey = node[dataStoreKeyExpandoPropertyName] = "ko" + uniqueId++; | ||
| dataStore[dataStoreKey] = {}; | ||
| } | ||
| return dataStore[dataStoreKey]; | ||
| }, | ||
| clear(node) { | ||
| const dataStoreKey = node[dataStoreKeyExpandoPropertyName]; | ||
| if (dataStoreKey) { | ||
| delete dataStore[dataStoreKey]; | ||
| node[dataStoreKeyExpandoPropertyName] = null; | ||
| return true; | ||
| } | ||
| return false; | ||
| } | ||
| }; | ||
| var { getDataForNode, clear } = ieVersion ? IE : modern; | ||
| return dataForNode; | ||
| } | ||
| function nextKey() { | ||
@@ -348,2 +405,3 @@ return uniqueId++ + dataStoreKeyExpandoPropertyName; | ||
| function get(node, key) { | ||
| if (!isSafeKey(key)) throw new Error("Unsafe key for DOM data: " + key); | ||
| const dataForNode = getDataForNode(node, false); | ||
@@ -353,4 +411,11 @@ return dataForNode && dataForNode[key]; | ||
| function set(node, key, value) { | ||
| var dataForNode = getDataForNode(node, value !== void 0); | ||
| dataForNode && (dataForNode[key] = value); | ||
| if (!isSafeKey(key)) throw new Error("Unsafe key for DOM data: " + key); | ||
| const dataForNode = getDataForNode( | ||
| node, | ||
| value !== void 0 | ||
| /* createIfNotFound */ | ||
| ); | ||
| if (dataForNode) { | ||
| dataForNode[key] = value; | ||
| } | ||
| } | ||
@@ -361,5 +426,5 @@ | ||
| function getDisposeCallbacksCollection(node, createIfNotFound) { | ||
| var allDisposeCallbacks = get(node, domDataKey); | ||
| let allDisposeCallbacks = get(node, domDataKey); | ||
| if (allDisposeCallbacks === void 0 && createIfNotFound) { | ||
| allDisposeCallbacks = []; | ||
| allDisposeCallbacks = new Array(); | ||
| set(node, domDataKey, allDisposeCallbacks); | ||
@@ -379,3 +444,3 @@ } | ||
| function removeDisposeCallback(node, callback) { | ||
| var callbacksCollection = getDisposeCallbacksCollection(node, false); | ||
| const callbacksCollection = getDisposeCallbacksCollection(node, false); | ||
| if (callbacksCollection) { | ||
@@ -388,5 +453,5 @@ arrayRemoveItem(callbacksCollection, callback); | ||
| } | ||
| var otherNodeCleanerFunctions = []; | ||
| var otherNodeCleanerFunctions = new Array(); | ||
| function cleanjQueryData(node) { | ||
| var jQueryCleanNodeFn = jQueryInstance ? jQueryInstance.cleanData : null; | ||
| const jQueryCleanNodeFn = options_default.jQuery ? options_default.jQuery.cleanData : null; | ||
| if (jQueryCleanNodeFn) { | ||
@@ -398,34 +463,7 @@ jQueryCleanNodeFn([node]); | ||
| // ../utils/dist/dom/event.js | ||
| var knownEvents = {}; | ||
| var knownEventTypesByEventName = {}; | ||
| var keyEventTypeName = options_default.global.navigator && /Firefox\/2/i.test(options_default.global.navigator.userAgent) ? "KeyboardEvent" : "UIEvents"; | ||
| knownEvents[keyEventTypeName] = ["keyup", "keydown", "keypress"]; | ||
| knownEvents["MouseEvents"] = [ | ||
| "click", | ||
| "dblclick", | ||
| "mousedown", | ||
| "mouseup", | ||
| "mousemove", | ||
| "mouseover", | ||
| "mouseout", | ||
| "mouseenter", | ||
| "mouseleave" | ||
| ]; | ||
| objectForEach(knownEvents, function(eventType, knownEventsForType) { | ||
| if (knownEventsForType.length) { | ||
| for (var i = 0, j = knownEventsForType.length; i < j; i++) { | ||
| knownEventTypesByEventName[knownEventsForType[i]] = eventType; | ||
| } | ||
| } | ||
| }); | ||
| // ../utils/dist/dom/virtualElements.js | ||
| var commentNodesHaveTextProperty = options_default.document && options_default.document.createComment("test").text === "<!--test-->"; | ||
| // ../utils/dist/dom/html.js | ||
| var supportsTemplateTag = options_default.document && "content" in options_default.document.createElement("template"); | ||
| var supportsTemplateTag = options_default.useTemplateTag && options_default.document && "content" in options_default.document.createElement("template"); | ||
| // ../utils/dist/dom/selectExtensions.js | ||
| var hasDomDataExpandoProperty = Symbol("Knockout selectExtensions hasDomDataProperty"); | ||
| var hasDomDataExpandoProperty = /* @__PURE__ */ Symbol("Knockout selectExtensions hasDomDataProperty"); | ||
| var selectExtensions = { | ||
@@ -435,3 +473,3 @@ optionValueDomDataKey: nextKey(), | ||
| switch (tagNameLower(element)) { | ||
| case "option": | ||
| case "option": { | ||
| if (element[hasDomDataExpandoProperty] === true) { | ||
@@ -441,4 +479,7 @@ return get(element, selectExtensions.optionValueDomDataKey); | ||
| return element.value; | ||
| case "select": | ||
| return element.selectedIndex >= 0 ? selectExtensions.readValue(element.options[element.selectedIndex]) : void 0; | ||
| } | ||
| case "select": { | ||
| const selectElement = element; | ||
| return selectElement.selectedIndex >= 0 ? selectExtensions.readValue(selectElement.options[selectElement.selectedIndex]) : void 0; | ||
| } | ||
| default: | ||
@@ -456,27 +497,32 @@ return element.value; | ||
| } | ||
| ; | ||
| element.value = value; | ||
| } else { | ||
| const el = element; | ||
| set(element, selectExtensions.optionValueDomDataKey, value); | ||
| element[hasDomDataExpandoProperty] = true; | ||
| element.value = typeof value === "number" ? value : ""; | ||
| el[hasDomDataExpandoProperty] = true; | ||
| el.value = typeof value === "number" ? value : ""; | ||
| } | ||
| break; | ||
| case "select": | ||
| if (value === "" || value === null) { | ||
| value = void 0; | ||
| } | ||
| var selection = -1; | ||
| for (let i = 0, n = element.options.length, optionValue; i < n; ++i) { | ||
| optionValue = selectExtensions.readValue(element.options[i]); | ||
| const strictEqual = optionValue === value; | ||
| const blankEqual = optionValue === "" && value === void 0; | ||
| const numericEqual = typeof value === "number" && Number(optionValue) === value; | ||
| if (strictEqual || blankEqual || numericEqual) { | ||
| selection = i; | ||
| break; | ||
| { | ||
| if (value === "" || value === null) { | ||
| value = void 0; | ||
| } | ||
| let selection = -1; | ||
| const selectElement = element; | ||
| for (let i = 0, n = selectElement.options.length, optionValue; i < n; ++i) { | ||
| optionValue = selectExtensions.readValue(selectElement.options[i]); | ||
| const strictEqual = optionValue === value; | ||
| const blankEqual = optionValue === "" && value === void 0; | ||
| const numericEqual = typeof value === "number" && Number(optionValue) === value; | ||
| if (strictEqual || blankEqual || numericEqual) { | ||
| selection = i; | ||
| break; | ||
| } | ||
| } | ||
| if (allowUnset || selection >= 0 || value === void 0 && selectElement.size > 1) { | ||
| selectElement.selectedIndex = selection; | ||
| } | ||
| } | ||
| if (allowUnset || selection >= 0 || value === void 0 && element.size > 1) { | ||
| element.selectedIndex = selection; | ||
| } | ||
| break; | ||
@@ -487,2 +533,3 @@ default: | ||
| } | ||
| ; | ||
| element.value = value; | ||
@@ -502,3 +549,3 @@ break; | ||
| }); | ||
| var taskQueue = []; | ||
| var taskQueue = new Array(); | ||
| var taskQueueLength = 0; | ||
@@ -509,4 +556,4 @@ var nextHandle = 1; | ||
| if (w && w.MutationObserver && !(w.navigator && w.navigator.standalone)) { | ||
| options_default.taskScheduler = function(callback) { | ||
| var div = w.document.createElement("div"); | ||
| options_default.taskScheduler = (function(callback) { | ||
| const div = w.document.createElement("div"); | ||
| new w.MutationObserver(callback).observe(div, { attributes: true }); | ||
@@ -516,14 +563,3 @@ return function() { | ||
| }; | ||
| }(scheduledProcess); | ||
| } else if (w && w.document && "onreadystatechange" in w.document.createElement("script")) { | ||
| options_default.taskScheduler = function(callback) { | ||
| var script = document.createElement("script"); | ||
| script.onreadystatechange = function() { | ||
| script.onreadystatechange = null; | ||
| document.documentElement.removeChild(script); | ||
| script = null; | ||
| callback(); | ||
| }; | ||
| document.documentElement.appendChild(script); | ||
| }; | ||
| })(scheduledProcess); | ||
| } else { | ||
@@ -536,4 +572,4 @@ options_default.taskScheduler = function(callback) { | ||
| if (taskQueueLength) { | ||
| var mark = taskQueueLength, countMarks = 0; | ||
| for (var task; nextIndexToProcess < taskQueueLength; ) { | ||
| let mark = taskQueueLength, countMarks = 0; | ||
| for (let task; nextIndexToProcess < taskQueueLength; ) { | ||
| if (task = taskQueue[nextIndexToProcess++]) { | ||
@@ -572,3 +608,3 @@ if (nextIndexToProcess > mark) { | ||
| function cancel(handle) { | ||
| var index = handle - (nextHandle - taskQueueLength); | ||
| const index = handle - (nextHandle - taskQueueLength); | ||
| if (index >= nextIndexToProcess && index < taskQueueLength) { | ||
@@ -579,3 +615,3 @@ taskQueue[index] = null; | ||
| function resetForTesting() { | ||
| var length = taskQueueLength - nextIndexToProcess; | ||
| const length = taskQueueLength - nextIndexToProcess; | ||
| nextIndexToProcess = taskQueueLength = taskQueue.length = 0; | ||
@@ -599,3 +635,3 @@ return length; | ||
| // ../observable/dist/subscribableSymbol.js | ||
| var SUBSCRIBABLE_SYM = Symbol("Knockout Subscribable"); | ||
| var SUBSCRIBABLE_SYM = /* @__PURE__ */ Symbol("Knockout Subscribable"); | ||
| function isSubscribable(instance) { | ||
@@ -606,3 +642,3 @@ return instance && instance[SUBSCRIBABLE_SYM] || false; | ||
| // ../observable/dist/dependencyDetection.js | ||
| var outerFrames = []; | ||
| var outerFrames = new Array(); | ||
| var currentFrame; | ||
@@ -625,3 +661,7 @@ var lastId = 0; | ||
| } | ||
| currentFrame.callback.call(currentFrame.callbackTarget, subscribable2, subscribable2._id || (subscribable2._id = getId())); | ||
| currentFrame.callback.call( | ||
| currentFrame.callbackTarget, | ||
| subscribable2, | ||
| subscribable2._id || (subscribable2._id = getId()) | ||
| ); | ||
| } | ||
@@ -641,2 +681,3 @@ } | ||
| } | ||
| return void 0; | ||
| } | ||
@@ -647,2 +688,3 @@ function getDependencies() { | ||
| } | ||
| return void 0; | ||
| } | ||
@@ -653,2 +695,3 @@ function isInitial() { | ||
| } | ||
| return void 0; | ||
| } | ||
@@ -700,2 +743,3 @@ | ||
| } | ||
| // TC39 Observable API | ||
| unsubscribe() { | ||
@@ -710,17 +754,12 @@ this.dispose(); | ||
| // ../observable/dist/extenders.js | ||
| var primitiveTypes = { | ||
| "undefined": 1, | ||
| "boolean": 1, | ||
| "number": 1, | ||
| "string": 1 | ||
| }; | ||
| var primitiveTypes = { undefined: 1, boolean: 1, number: 1, string: 1 }; | ||
| function valuesArePrimitiveAndEqual(a, b) { | ||
| var oldValueIsPrimitive = a === null || typeof a in primitiveTypes; | ||
| const oldValueIsPrimitive = a === null || typeof a in primitiveTypes; | ||
| return oldValueIsPrimitive ? a === b : false; | ||
| } | ||
| function applyExtenders(requestedExtenders) { | ||
| var target = this; | ||
| let target = this; | ||
| if (requestedExtenders) { | ||
| objectForEach(requestedExtenders, function(key, value) { | ||
| var extenderHandler = extenders[key]; | ||
| const extenderHandler = extenders[key]; | ||
| if (typeof extenderHandler === "function") { | ||
@@ -740,3 +779,5 @@ target = extenderHandler(target, value) || target; | ||
| if (option !== true) { | ||
| throw new Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled."); | ||
| throw new Error( | ||
| "The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled." | ||
| ); | ||
| } | ||
@@ -746,3 +787,3 @@ deferUpdates(target); | ||
| function rateLimit(target, options2) { | ||
| var timeout, method, limitFunction; | ||
| let timeout, method, limitFunction; | ||
| if (typeof options2 === "number") { | ||
@@ -760,17 +801,13 @@ timeout = options2; | ||
| } | ||
| var extenders = { | ||
| notify, | ||
| deferred, | ||
| rateLimit | ||
| }; | ||
| var extenders = { notify, deferred, rateLimit }; | ||
| // ../observable/dist/subscribable.js | ||
| var LATEST_VALUE = Symbol("Knockout latest value"); | ||
| var LATEST_VALUE = /* @__PURE__ */ Symbol("Knockout latest value"); | ||
| if (!Symbol.observable) { | ||
| Symbol.observable = Symbol.for("@tko/Symbol.observable"); | ||
| Symbol.observable = /* @__PURE__ */ Symbol.for("@tko/Symbol.observable"); | ||
| } | ||
| function subscribable() { | ||
| var subscribable = function subscribableFactory() { | ||
| Object.setPrototypeOf(this, ko_subscribable_fn); | ||
| ko_subscribable_fn.init(this); | ||
| } | ||
| }; | ||
| var defaultEvent = "change"; | ||
@@ -789,5 +826,3 @@ var ko_subscribable_fn = { | ||
| event = event || defaultEvent; | ||
| const observer = isTC39Callback ? callback : { | ||
| next: callbackTarget ? callback.bind(callbackTarget) : callback | ||
| }; | ||
| const observer = isTC39Callback ? callback : { next: callbackTarget ? callback.bind(callbackTarget) : callback }; | ||
| const subscriptionInstance = new Subscription(this, observer, () => { | ||
@@ -803,3 +838,3 @@ arrayRemoveItem(this._subscriptions[event], subscriptionInstance); | ||
| if (!this._subscriptions[event]) { | ||
| this._subscriptions[event] = []; | ||
| this._subscriptions[event] = new Array(); | ||
| } | ||
@@ -847,3 +882,3 @@ this._subscriptions[event].push(subscriptionInstance); | ||
| } else { | ||
| var total = 0; | ||
| let total = 0; | ||
| objectForEach(this._subscriptions, function(eventName, subscriptions) { | ||
@@ -903,2 +938,3 @@ if (eventName !== "dirty") { | ||
| if (Observable.isDifferent(Observable[LATEST_VALUE], arguments[0])) { | ||
| ; | ||
| Observable.valueWillMutate(); | ||
@@ -924,6 +960,19 @@ Observable[LATEST_VALUE] = arguments[0]; | ||
| observable.fn = { | ||
| /** | ||
| * Compares two values for equality. | ||
| * @param a The first value. | ||
| * @param b The second value. | ||
| * @returns True if the values are equal, otherwise false. | ||
| */ | ||
| equalityComparer: valuesArePrimitiveAndEqual, | ||
| /** | ||
| * Returns the current value of the observable without creating a dependency. | ||
| * @returns The current value. | ||
| */ | ||
| peek() { | ||
| return this[LATEST_VALUE]; | ||
| }, | ||
| /** | ||
| * Notifies subscribers that the value has changed. | ||
| */ | ||
| valueHasMutated() { | ||
@@ -933,8 +982,18 @@ this.notifySubscribers(this[LATEST_VALUE], "spectate"); | ||
| }, | ||
| /** | ||
| * Notifies subscribers that the value is about to change. | ||
| */ | ||
| valueWillMutate() { | ||
| this.notifySubscribers(this[LATEST_VALUE], "beforeChange"); | ||
| }, | ||
| /** | ||
| * Modifies the value of the observable using a function. | ||
| * @param fn The function to modify the value. | ||
| * @param peek Whether to use the current value without creating a dependency. | ||
| * @returns The modified observable. | ||
| */ | ||
| modify(fn, peek2 = true) { | ||
| return this(fn(peek2 ? this.peek() : this())); | ||
| this(fn(peek2 ? this.peek() : this())); | ||
| }, | ||
| // Some observables may not always be writeable, notably computeds. | ||
| isWriteable: true | ||
@@ -952,6 +1011,6 @@ }; | ||
| subscribable.fn.limit = function limit(limitFunction) { | ||
| var self = this; | ||
| var selfIsObservable = isObservable(self); | ||
| var beforeChange = "beforeChange"; | ||
| var ignoreBeforeChange, notifyNextChange, previousValue, pendingValue, didUpdate; | ||
| const self = this; | ||
| const selfIsObservable = isObservable(self); | ||
| const beforeChange = "beforeChange"; | ||
| let ignoreBeforeChange, notifyNextChange, previousValue, pendingValue, didUpdate; | ||
| if (!self._origNotifySubscribers) { | ||
@@ -961,3 +1020,3 @@ self._origNotifySubscribers = self.notifySubscribers; | ||
| } | ||
| var finish = limitFunction(function() { | ||
| const finish = limitFunction(function() { | ||
| self._notificationIsPending = false; | ||
@@ -990,3 +1049,6 @@ if (selfIsObservable && pendingValue === self) { | ||
| _notifyNextChangeIfValueIsDifferent() { | ||
| if (self.isDifferent(previousValue, self.peek(true))) { | ||
| if (self.isDifferent(previousValue, self.peek( | ||
| true | ||
| /* evaluate */ | ||
| ))) { | ||
| notifyNextChange = true; | ||
@@ -1028,4 +1090,4 @@ } | ||
| let underlyingNotifySubscribersFunction; | ||
| let underlyingBeforeSubscriptionAddFunction = target.beforeSubscriptionAdd; | ||
| let underlyingAfterSubscriptionRemoveFunction = target.afterSubscriptionRemove; | ||
| const underlyingBeforeSubscriptionAddFunction = target.beforeSubscriptionAdd; | ||
| const underlyingAfterSubscriptionRemoveFunction = target.afterSubscriptionRemove; | ||
| target.beforeSubscriptionAdd = function(event) { | ||
@@ -1067,7 +1129,7 @@ if (underlyingBeforeSubscriptionAddFunction) { | ||
| }; | ||
| var previousContents = [].concat(target.peek() === void 0 ? [] : target.peek()); | ||
| let previousContents = new Array().concat(target.peek() === void 0 ? [] : target.peek()); | ||
| cachedDiff = null; | ||
| arrayChangeSubscription = target.subscribe(function(currentContents) { | ||
| let changes; | ||
| currentContents = [].concat(currentContents || []); | ||
| currentContents = new Array().concat(currentContents || []); | ||
| if (target.hasSubscriptionsForEvent(arrayChangeEventName)) { | ||
@@ -1094,5 +1156,5 @@ changes = getChanges(previousContents, currentContents); | ||
| } | ||
| var diff = [], arrayLength = rawArray.length, argsLength = args.length, offset = 0; | ||
| let diff = new Array(), arrayLength = rawArray.length, argsLength = args.length, offset = 0; | ||
| function pushDiff(status, value, index) { | ||
| return diff[diff.length] = { "status": status, "value": value, "index": index }; | ||
| return diff[diff.length] = { status, value, index }; | ||
| } | ||
@@ -1115,12 +1177,14 @@ switch (operationName) { | ||
| case "splice": | ||
| var startIndex = Math.min(Math.max(0, args[0] < 0 ? arrayLength + args[0] : args[0]), arrayLength), endDeleteIndex = argsLength === 1 ? arrayLength : Math.min(startIndex + (args[1] || 0), arrayLength), endAddIndex = startIndex + argsLength - 2, endIndex = Math.max(endDeleteIndex, endAddIndex), additions = [], deletions = []; | ||
| for (let index = startIndex, argsIndex = 2; index < endIndex; ++index, ++argsIndex) { | ||
| if (index < endDeleteIndex) { | ||
| deletions.push(pushDiff("deleted", rawArray[index], index)); | ||
| { | ||
| const startIndex = Math.min(Math.max(0, args[0] < 0 ? arrayLength + args[0] : args[0]), arrayLength), endDeleteIndex = argsLength === 1 ? arrayLength : Math.min(startIndex + (args[1] || 0), arrayLength), endAddIndex = startIndex + argsLength - 2, endIndex = Math.max(endDeleteIndex, endAddIndex), additions = new Array(), deletions = new Array(); | ||
| for (let index = startIndex, argsIndex = 2; index < endIndex; ++index, ++argsIndex) { | ||
| if (index < endDeleteIndex) { | ||
| deletions.push(pushDiff("deleted", rawArray[index], index)); | ||
| } | ||
| if (index < endAddIndex) { | ||
| additions.push(pushDiff("added", args[argsIndex], index)); | ||
| } | ||
| } | ||
| if (index < endAddIndex) { | ||
| additions.push(pushDiff("added", args[argsIndex], index)); | ||
| } | ||
| findMovesInArrayComparison(deletions, additions); | ||
| } | ||
| findMovesInArrayComparison(deletions, additions); | ||
| break; | ||
@@ -1140,8 +1204,12 @@ default: | ||
| if (typeof initialValues !== "object" || !("length" in initialValues)) { | ||
| throw new Error("The argument passed when initializing an observable array must be an array, or null, or undefined."); | ||
| throw new Error( | ||
| "The argument passed when initializing an observable array must be an array, or null, or undefined." | ||
| ); | ||
| } | ||
| var result = observable(initialValues); | ||
| Object.setPrototypeOf(result, observableArray.fn); | ||
| const result = Object.setPrototypeOf(observable(initialValues), observableArray.fn); | ||
| trackArrayChanges(result); | ||
| overwriteLengthPropertyIfSupported(result, { get: () => result().length }); | ||
| overwriteLengthPropertyIfSupported(result, { get: () => { | ||
| var _a; | ||
| return (_a = result()) == null ? void 0 : _a.length; | ||
| } }); | ||
| return result; | ||
@@ -1151,9 +1219,9 @@ } | ||
| remove(valueOrPredicate) { | ||
| var underlyingArray = this.peek(); | ||
| var removedValues = []; | ||
| var predicate = typeof valueOrPredicate === "function" && !isObservable(valueOrPredicate) ? valueOrPredicate : function(value2) { | ||
| return value2 === valueOrPredicate; | ||
| const underlyingArray = this.peek(); | ||
| const removedValues = new Array(); | ||
| const predicate = typeof valueOrPredicate === "function" && !isObservable(valueOrPredicate) ? valueOrPredicate : function(value) { | ||
| return value === valueOrPredicate; | ||
| }; | ||
| for (var i = 0; i < underlyingArray.length; i++) { | ||
| var value = underlyingArray[i]; | ||
| for (let i = 0; i < underlyingArray.length; i++) { | ||
| const value = underlyingArray[i]; | ||
| if (predicate(value)) { | ||
@@ -1178,4 +1246,4 @@ if (removedValues.length === 0) { | ||
| if (arrayOfValues === void 0) { | ||
| var underlyingArray = this.peek(); | ||
| var allValues = underlyingArray.slice(0); | ||
| const underlyingArray = this.peek(); | ||
| const allValues = underlyingArray.slice(0); | ||
| this.valueWillMutate(); | ||
@@ -1194,9 +1262,9 @@ underlyingArray.splice(0, underlyingArray.length); | ||
| destroy(valueOrPredicate) { | ||
| var underlyingArray = this.peek(); | ||
| var predicate = typeof valueOrPredicate === "function" && !isObservable(valueOrPredicate) ? valueOrPredicate : function(value2) { | ||
| return value2 === valueOrPredicate; | ||
| const underlyingArray = this.peek(); | ||
| const predicate = typeof valueOrPredicate === "function" && !isObservable(valueOrPredicate) ? valueOrPredicate : function(value) { | ||
| return value === valueOrPredicate; | ||
| }; | ||
| this.valueWillMutate(); | ||
| for (var i = underlyingArray.length - 1; i >= 0; i--) { | ||
| var value = underlyingArray[i]; | ||
| for (let i = underlyingArray.length - 1; i >= 0; i--) { | ||
| const value = underlyingArray[i]; | ||
| if (predicate(value)) { | ||
@@ -1225,3 +1293,3 @@ value["_destroy"] = true; | ||
| replace(oldItem, newItem) { | ||
| var index = this.indexOf(oldItem); | ||
| const index = this.indexOf(oldItem); | ||
| if (index >= 0) { | ||
@@ -1240,3 +1308,3 @@ this.valueWillMutate(); | ||
| [Symbol.iterator]: function* () { | ||
| yield* this(); | ||
| yield* __yieldStar(this()); | ||
| } | ||
@@ -1247,6 +1315,6 @@ }; | ||
| observableArray.fn[methodName] = function() { | ||
| var underlyingArray = this.peek(); | ||
| const underlyingArray = this.peek(); | ||
| this.valueWillMutate(); | ||
| this.cacheDiffForKnownOperation(underlyingArray, methodName, arguments); | ||
| var methodCallResult = underlyingArray[methodName].apply(underlyingArray, arguments); | ||
| const methodCallResult = underlyingArray[methodName].apply(underlyingArray, arguments); | ||
| this.valueHasMutated(); | ||
@@ -1258,3 +1326,3 @@ return methodCallResult === underlyingArray ? this : methodCallResult; | ||
| observableArray.fn[methodName] = function() { | ||
| var underlyingArray = this(); | ||
| const underlyingArray = this(); | ||
| return underlyingArray[methodName].apply(underlyingArray, arguments); | ||
@@ -1272,3 +1340,7 @@ }; | ||
| if (value !== void 0) { | ||
| options_default.onError(new Error("Given extraneous `value` parameter (first param should be a string, but it was an object)." + nameOrObject)); | ||
| options_default.onError( | ||
| new Error( | ||
| "Given extraneous `value` parameter (first param should be a string, but it was an object)." + nameOrObject | ||
| ) | ||
| ); | ||
| } | ||
@@ -1280,2 +1352,6 @@ Object.assign(this, nameOrObject); | ||
| } | ||
| /** | ||
| * The handler may have a `.` in it, e.g. `attr.title`, in which case the | ||
| * handler is `attr`. Otherwise it's the name given | ||
| */ | ||
| get(nameOrDotted) { | ||
@@ -1288,5 +1364,5 @@ const [name] = nameOrDotted.split("."); | ||
| // ../provider/dist/Provider.js | ||
| var Provider = class { | ||
| constructor(params = {}) { | ||
| if (this.constructor === Provider) { | ||
| var Provider = class _Provider { | ||
| constructor(params) { | ||
| if (this.constructor === _Provider) { | ||
| throw new Error("Provider is an abstract base class."); | ||
@@ -1297,5 +1373,8 @@ } | ||
| } | ||
| this.bindingHandlers = params.bindingHandlers || new BindingHandlerObject(); | ||
| this.globals = params.globals || {}; | ||
| this.bindingHandlers = (params == null ? void 0 : params.bindingHandlers) || new BindingHandlerObject(); | ||
| this.globals = (params == null ? void 0 : params.globals) || {}; | ||
| } | ||
| get FOR_NODE_TYPES() { | ||
| throw new Error("Providers must override FOR_NODE_TYPES property"); | ||
| } | ||
| setGlobals(globals) { | ||
@@ -1307,10 +1386,20 @@ this.globals = globals; | ||
| } | ||
| nodeHasBindings() { | ||
| nodeHasBindings(node, context) { | ||
| return false; | ||
| } | ||
| getBindingAccessors() { | ||
| getBindingAccessors(node, context) { | ||
| return /* @__PURE__ */ Object.create(null); | ||
| } | ||
| /** | ||
| * Preprocess a given node. | ||
| * @param {Node} node | ||
| * @returns {[Node]|null} | ||
| */ | ||
| preprocessNode(node) { | ||
| return [node]; | ||
| } | ||
| postProcess() { | ||
| } | ||
| /** For legacy binding provider assignments to | ||
| * ko.bindingProvider.instance = ... */ | ||
| get instance() { | ||
@@ -1326,8 +1415,15 @@ return this._overloadInstance || this; | ||
| } | ||
| // Given a function that returns bindings, create and return a new object that contains | ||
| // binding value-accessors functions. Each accessor function calls the original function | ||
| // so that it always gets the latest value and all dependencies are captured. This is used | ||
| // by ko.applyBindingsToNode and getBindingsAndMakeAccessors. | ||
| makeAccessorsFromFunction(callback) { | ||
| return objectMap(dependencyDetection_exports.ignore(callback), (value, key) => () => callback()[key]); | ||
| } | ||
| // Returns the valueAccessor function for a binding value | ||
| makeValueAccessor(value) { | ||
| return () => value; | ||
| } | ||
| // Given a bindings function or object, create and return a new object that contains | ||
| // binding value-accessors functions. This is used by ko.applyBindingsToNode. | ||
| makeBindingAccessors(bindings, context, node) { | ||
@@ -1343,3 +1439,3 @@ if (typeof bindings === "function") { | ||
| get FOR_NODE_TYPES() { | ||
| return [1, 3, 8]; | ||
| return [Node.ELEMENT_NODE, Node.TEXT_NODE, Node.COMMENT_NODE]; | ||
| } | ||
@@ -1351,2 +1447,4 @@ constructor(providerObject, parentProvider) { | ||
| } | ||
| // This function is used if the binding provider doesn't include a getBindingAccessors function. | ||
| // It must be called with 'this' set to the provider instance. | ||
| getBindingsAndMakeAccessors(node, context) { | ||
@@ -1366,2 +1464,3 @@ const bindingsFn = this.providerObject.getBindings.bind(this.providerObject, node, context); | ||
| } | ||
| return null; | ||
| } | ||
@@ -1371,6 +1470,6 @@ }; | ||
| // src/NativeProvider.ts | ||
| var NATIVE_BINDINGS = Symbol("Knockout native bindings"); | ||
| var NATIVE_BINDINGS = /* @__PURE__ */ Symbol("Knockout native bindings"); | ||
| var NativeProvider = class extends Provider { | ||
| get FOR_NODE_TYPES() { | ||
| return [1, 3]; | ||
| return [Node.ELEMENT_NODE, Node.TEXT_NODE]; | ||
| } | ||
@@ -1380,3 +1479,3 @@ get preemptive() { | ||
| } | ||
| nodeHasBindings(node) { | ||
| nodeHasBindings(node, context) { | ||
| if (!node[NATIVE_BINDINGS]) { | ||
@@ -1387,4 +1486,8 @@ return false; | ||
| } | ||
| /** | ||
| * There can be only one preprocessor; when there are native bindings, | ||
| * prevent re-entrance (and likely XSS) from the `{{ }}` provider. | ||
| */ | ||
| preprocessNode(node) { | ||
| return node[NATIVE_BINDINGS] ? node : null; | ||
| return node[NATIVE_BINDINGS] ? [node] : null; | ||
| } | ||
@@ -1399,3 +1502,7 @@ onlyBindings([name]) { | ||
| } | ||
| getBindingAccessors(node) { | ||
| /** | ||
| * Return as valueAccessor function all the entries matching `ko-*` | ||
| * @param {Node} node | ||
| */ | ||
| getBindingAccessors(node, context) { | ||
| const bindings = Object.entries(node[NATIVE_BINDINGS] || {}).filter(this.onlyBindings); | ||
@@ -1407,2 +1514,8 @@ if (!bindings.length) { | ||
| } | ||
| /** | ||
| * Add a named-value to the given node. | ||
| * @param {Node} node | ||
| * @param {string} name | ||
| * @param {any} value | ||
| */ | ||
| static addValueToNode(node, name, value) { | ||
@@ -1412,2 +1525,7 @@ const obj = node[NATIVE_BINDINGS] || (node[NATIVE_BINDINGS] = {}); | ||
| } | ||
| /** | ||
| * | ||
| * @param {Node} node | ||
| * @return {object} the stored values | ||
| */ | ||
| static getNodeValues(node) { | ||
@@ -1414,0 +1532,0 @@ return node[NATIVE_BINDINGS]; |
+3
-5
@@ -1,5 +0,3 @@ | ||
| // @tko/provider.native 🥊 4.0.0-beta1.3 ESM | ||
| export { | ||
| default as NativeProvider, | ||
| NATIVE_BINDINGS | ||
| } from "./NativeProvider"; | ||
| // @tko/provider.native 🥊 4.0.0 ESM | ||
| "use strict"; | ||
| export { default as NativeProvider, NATIVE_BINDINGS } from "./NativeProvider"; |
| { | ||
| "version": 3, | ||
| "sources": ["../src/index.ts"], | ||
| "sourcesContent": ["export {\n default as NativeProvider, NATIVE_BINDINGS\n} from './NativeProvider'\n"], | ||
| "mappings": ";AAAA;AAAA;AAAA;AAAA;", | ||
| "sourcesContent": ["export { default as NativeProvider, NATIVE_BINDINGS } from './NativeProvider'\n"], | ||
| "mappings": ";;AAAA,SAAS,WAAW,gBAAgB,uBAAuB;", | ||
| "names": [] | ||
| } |
+3
-5
@@ -1,5 +0,3 @@ | ||
| // @tko/provider.native 🥊 4.0.0-beta1.3 MJS | ||
| export { | ||
| default as NativeProvider, | ||
| NATIVE_BINDINGS | ||
| } from "./NativeProvider"; | ||
| // @tko/provider.native 🥊 4.0.0 MJS | ||
| "use strict"; | ||
| export { default as NativeProvider, NATIVE_BINDINGS } from "./NativeProvider"; |
| { | ||
| "version": 3, | ||
| "sources": ["../src/index.ts"], | ||
| "sourcesContent": ["export {\n default as NativeProvider, NATIVE_BINDINGS\n} from './NativeProvider'\n"], | ||
| "mappings": ";AAAA;AAAA;AAAA;AAAA;", | ||
| "sourcesContent": ["export { default as NativeProvider, NATIVE_BINDINGS } from './NativeProvider'\n"], | ||
| "mappings": ";;AAAA,SAAS,WAAW,gBAAgB,uBAAuB;", | ||
| "names": [] | ||
| } |
+28
-12
@@ -1,12 +0,9 @@ | ||
| // @tko/provider.native 🥊 4.0.0-beta1.3 ESM | ||
| import { | ||
| isObservable | ||
| } from "@tko/observable"; | ||
| import { | ||
| Provider | ||
| } from "@tko/provider"; | ||
| export const NATIVE_BINDINGS = Symbol("Knockout native bindings"); | ||
| // @tko/provider.native 🥊 4.0.0 ESM | ||
| "use strict"; | ||
| import { isObservable } from "@tko/observable"; | ||
| import { Provider } from "@tko/provider"; | ||
| export const NATIVE_BINDINGS = /* @__PURE__ */ Symbol("Knockout native bindings"); | ||
| export default class NativeProvider extends Provider { | ||
| get FOR_NODE_TYPES() { | ||
| return [1, 3]; | ||
| return [Node.ELEMENT_NODE, Node.TEXT_NODE]; | ||
| } | ||
@@ -16,3 +13,3 @@ get preemptive() { | ||
| } | ||
| nodeHasBindings(node) { | ||
| nodeHasBindings(node, context) { | ||
| if (!node[NATIVE_BINDINGS]) { | ||
@@ -23,4 +20,8 @@ return false; | ||
| } | ||
| /** | ||
| * There can be only one preprocessor; when there are native bindings, | ||
| * prevent re-entrance (and likely XSS) from the `{{ }}` provider. | ||
| */ | ||
| preprocessNode(node) { | ||
| return node[NATIVE_BINDINGS] ? node : null; | ||
| return node[NATIVE_BINDINGS] ? [node] : null; | ||
| } | ||
@@ -35,3 +36,7 @@ onlyBindings([name]) { | ||
| } | ||
| getBindingAccessors(node) { | ||
| /** | ||
| * Return as valueAccessor function all the entries matching `ko-*` | ||
| * @param {Node} node | ||
| */ | ||
| getBindingAccessors(node, context) { | ||
| const bindings = Object.entries(node[NATIVE_BINDINGS] || {}).filter(this.onlyBindings); | ||
@@ -43,2 +48,8 @@ if (!bindings.length) { | ||
| } | ||
| /** | ||
| * Add a named-value to the given node. | ||
| * @param {Node} node | ||
| * @param {string} name | ||
| * @param {any} value | ||
| */ | ||
| static addValueToNode(node, name, value) { | ||
@@ -48,2 +59,7 @@ const obj = node[NATIVE_BINDINGS] || (node[NATIVE_BINDINGS] = {}); | ||
| } | ||
| /** | ||
| * | ||
| * @param {Node} node | ||
| * @return {object} the stored values | ||
| */ | ||
| static getNodeValues(node) { | ||
@@ -50,0 +66,0 @@ return node[NATIVE_BINDINGS]; |
| { | ||
| "version": 3, | ||
| "sources": ["../src/NativeProvider.ts"], | ||
| "sourcesContent": ["\nimport {\n isObservable\n} from '@tko/observable'\n\nimport {\n Provider\n} from '@tko/provider'\n\nexport const NATIVE_BINDINGS = Symbol('Knockout native bindings')\n\n/**\n * Retrieve the binding accessors that are already attached to\n * a node under the `NATIVE_BINDINGS` symbol.\n *\n * Used by the jsxToNode function.\n */\nexport default class NativeProvider extends Provider {\n get FOR_NODE_TYPES () { return [ 1, 3 ] }\n get preemptive () { return true }\n\n nodeHasBindings (node) {\n if (!node[NATIVE_BINDINGS]) { return false }\n return Object.keys(node[NATIVE_BINDINGS] || {})\n .some(key => key.startsWith('ko-'))\n }\n\n /**\n * There can be only one preprocessor; when there are native bindings,\n * prevent re-entrance (and likely XSS) from the `{{ }}` provider.\n */\n preprocessNode (node) {\n return node[NATIVE_BINDINGS] ? node : null\n }\n\n onlyBindings ([name]) {\n return name.startsWith('ko-')\n }\n\n valueAsAccessor ([name, value]) {\n const bindingName = name.replace(/^ko-/, '')\n const valueFn = isObservable(value) ? value : () => value\n return {[bindingName]: valueFn}\n }\n\n /**\n * Return as valueAccessor function all the entries matching `ko-*`\n * @param {HTMLElement} node\n */\n getBindingAccessors (node) {\n const bindings = Object.entries(node[NATIVE_BINDINGS] || {})\n .filter(this.onlyBindings)\n if (!bindings.length) { return null }\n return Object.assign({}, ...bindings.map(this.valueAsAccessor))\n }\n\n /**\n * Add a named-value to the given node.\n * @param {HTMLElement} node\n * @param {string} name\n * @param {any} value\n */\n static addValueToNode (node, name, value) {\n const obj = node[NATIVE_BINDINGS] || (node[NATIVE_BINDINGS] = {})\n obj[name] = value\n }\n\n /**\n *\n * @param {HTMLElement} node\n * @return {object} the stored values\n */\n static getNodeValues (node) {\n return node[NATIVE_BINDINGS]\n }\n}\n"], | ||
| "mappings": ";AACA;AAAA;AAAA;AAIA;AAAA;AAAA;AAIO,aAAM,kBAAkB,OAAO,0BAA0B;AAQhE,qBAAqB,uBAAuB,SAAS;AAAA,MAC/C,iBAAkB;AAAE,WAAO,CAAE,GAAG,CAAE;AAAA,EAAE;AAAA,MACpC,aAAc;AAAE,WAAO;AAAA,EAAK;AAAA,EAEhC,gBAAiB,MAAM;AACrB,QAAI,CAAC,KAAK,kBAAkB;AAAE,aAAO;AAAA,IAAM;AAC3C,WAAO,OAAO,KAAK,KAAK,oBAAoB,CAAC,CAAC,EAC3C,KAAK,SAAO,IAAI,WAAW,KAAK,CAAC;AAAA,EACtC;AAAA,EAMA,eAAgB,MAAM;AACpB,WAAO,KAAK,mBAAmB,OAAO;AAAA,EACxC;AAAA,EAEA,aAAc,CAAC,OAAO;AACpB,WAAO,KAAK,WAAW,KAAK;AAAA,EAC9B;AAAA,EAEA,gBAAiB,CAAC,MAAM,QAAQ;AAC9B,UAAM,cAAc,KAAK,QAAQ,QAAQ,EAAE;AAC3C,UAAM,UAAU,aAAa,KAAK,IAAI,QAAQ,MAAM;AACpD,WAAO,GAAE,cAAc,QAAO;AAAA,EAChC;AAAA,EAMA,oBAAqB,MAAM;AACzB,UAAM,WAAW,OAAO,QAAQ,KAAK,oBAAoB,CAAC,CAAC,EACxD,OAAO,KAAK,YAAY;AAC3B,QAAI,CAAC,SAAS,QAAQ;AAAE,aAAO;AAAA,IAAK;AACpC,WAAO,OAAO,OAAO,CAAC,GAAG,GAAG,SAAS,IAAI,KAAK,eAAe,CAAC;AAAA,EAChE;AAAA,SAQO,eAAgB,MAAM,MAAM,OAAO;AACxC,UAAM,MAAM,KAAK,oBAAqB,MAAK,mBAAmB,CAAC;AAC/D,QAAI,QAAQ;AAAA,EACd;AAAA,SAOO,cAAe,MAAM;AAC1B,WAAO,KAAK;AAAA,EACd;AACF;", | ||
| "sourcesContent": ["import { isObservable } from '@tko/observable'\n\nimport { Provider } from '@tko/provider'\n\nimport type { BindingContext } from '@tko/bind'\n\nexport const NATIVE_BINDINGS = Symbol('Knockout native bindings')\n\n/**\n * Retrieve the binding accessors that are already attached to\n * a node under the `NATIVE_BINDINGS` symbol.\n *\n * Used by the jsxToNode function.\n */\nexport default class NativeProvider extends Provider {\n override get FOR_NODE_TYPES() {\n return [Node.ELEMENT_NODE, Node.TEXT_NODE]\n }\n override get preemptive() {\n return true\n }\n\n override nodeHasBindings(node: Node, context?: BindingContext): boolean {\n if (!node[NATIVE_BINDINGS]) {\n return false\n }\n return Object.keys(node[NATIVE_BINDINGS] || {}).some(key => key.startsWith('ko-'))\n }\n\n /**\n * There can be only one preprocessor; when there are native bindings,\n * prevent re-entrance (and likely XSS) from the `{{ }}` provider.\n */\n override preprocessNode(node: Node): Node[] | null {\n return node[NATIVE_BINDINGS] ? [node] : null\n }\n\n onlyBindings([name]) {\n return name.startsWith('ko-')\n }\n\n valueAsAccessor([name, value]) {\n const bindingName = name.replace(/^ko-/, '')\n const valueFn = isObservable(value) ? value : () => value\n return { [bindingName]: valueFn }\n }\n\n /**\n * Return as valueAccessor function all the entries matching `ko-*`\n * @param {Node} node\n */\n override getBindingAccessors(node: Node, context?: BindingContext) {\n const bindings = (Object.entries(node[NATIVE_BINDINGS] || {}) as any).filter(this.onlyBindings)\n if (!bindings.length) {\n return null\n }\n return Object.assign({}, ...bindings.map(this.valueAsAccessor))\n }\n\n /**\n * Add a named-value to the given node.\n * @param {Node} node\n * @param {string} name\n * @param {any} value\n */\n static addValueToNode(node: Node, name: string, value: any) {\n const obj = node[NATIVE_BINDINGS] || (node[NATIVE_BINDINGS] = {})\n obj[name] = value\n }\n\n /**\n *\n * @param {Node} node\n * @return {object} the stored values\n */\n static getNodeValues(node: Node): any {\n return node[NATIVE_BINDINGS]\n }\n}\n"], | ||
| "mappings": ";;AAAA,SAAS,oBAAoB;AAE7B,SAAS,gBAAgB;AAIlB,aAAM,kBAAkB,uBAAO,0BAA0B;AAQhE,qBAAqB,uBAAuB,SAAS;AAAA,EACnD,IAAa,iBAAiB;AAC5B,WAAO,CAAC,KAAK,cAAc,KAAK,SAAS;AAAA,EAC3C;AAAA,EACA,IAAa,aAAa;AACxB,WAAO;AAAA,EACT;AAAA,EAES,gBAAgB,MAAY,SAAmC;AACtE,QAAI,CAAC,KAAK,eAAe,GAAG;AAC1B,aAAO;AAAA,IACT;AACA,WAAO,OAAO,KAAK,KAAK,eAAe,KAAK,CAAC,CAAC,EAAE,KAAK,SAAO,IAAI,WAAW,KAAK,CAAC;AAAA,EACnF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMS,eAAe,MAA2B;AACjD,WAAO,KAAK,eAAe,IAAI,CAAC,IAAI,IAAI;AAAA,EAC1C;AAAA,EAEA,aAAa,CAAC,IAAI,GAAG;AACnB,WAAO,KAAK,WAAW,KAAK;AAAA,EAC9B;AAAA,EAEA,gBAAgB,CAAC,MAAM,KAAK,GAAG;AAC7B,UAAM,cAAc,KAAK,QAAQ,QAAQ,EAAE;AAC3C,UAAM,UAAU,aAAa,KAAK,IAAI,QAAQ,MAAM;AACpD,WAAO,EAAE,CAAC,WAAW,GAAG,QAAQ;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMS,oBAAoB,MAAY,SAA0B;AACjE,UAAM,WAAY,OAAO,QAAQ,KAAK,eAAe,KAAK,CAAC,CAAC,EAAU,OAAO,KAAK,YAAY;AAC9F,QAAI,CAAC,SAAS,QAAQ;AACpB,aAAO;AAAA,IACT;AACA,WAAO,OAAO,OAAO,CAAC,GAAG,GAAG,SAAS,IAAI,KAAK,eAAe,CAAC;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,eAAe,MAAY,MAAc,OAAY;AAC1D,UAAM,MAAM,KAAK,eAAe,MAAM,KAAK,eAAe,IAAI,CAAC;AAC/D,QAAI,IAAI,IAAI;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,cAAc,MAAiB;AACpC,WAAO,KAAK,eAAe;AAAA,EAC7B;AACF;", | ||
| "names": [] | ||
| } |
+3
-4
| { | ||
| "version": "4.0.0-beta1.3", | ||
| "version": "4.0.0", | ||
| "name": "@tko/provider.native", | ||
@@ -12,3 +12,3 @@ "description": "Link binding handlers whose value is already attached to the node", | ||
| "dependencies": { | ||
| "@tko/provider": "^4.0.0-beta1.3", | ||
| "@tko/provider": "^4.0.0", | ||
| "tslib": "^2.2.0" | ||
@@ -43,4 +43,3 @@ }, | ||
| "url": "git+https://github.com/knockout/tko.git" | ||
| }, | ||
| "gitHead": "a8843acb8ae085915115e53a4e057b30731c635e" | ||
| } | ||
| } |
-22
| The MIT License (MIT) - http://www.opensource.org/licenses/mit-license.php | ||
| Copyright (c) Steven Sanderson, the Knockout.js team, and other contributors | ||
| http://knockoutjs.com/ | ||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| of this software and associated documentation files (the "Software"), to deal | ||
| in the Software without restriction, including without limitation the rights | ||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| copies of the Software, and to permit persons to whom the Software is | ||
| furnished to do so, subject to the following conditions: | ||
| The above copyright notice and this permission notice shall be included in | ||
| all copies or substantial portions of the Software. | ||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
| THE SOFTWARE. |
Sorry, the diff of this file is too big to display
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
143973
0.53%1499
9.74%0
-100%9
-10%Updated