@tko/binding.core 4.0.0-alpha9.0 → 4.0.0-beta1.0
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/attr.js +36 -0
- package/dist/attr.js.map +7 -0
- package/dist/checked.js +94 -0
- package/dist/checked.js.map +7 -0
- package/dist/click.js +5 -0
- package/dist/click.js.map +7 -0
- package/dist/css.js +28 -0
- package/dist/css.js.map +7 -0
- package/dist/descendantsComplete.js +14 -0
- package/dist/descendantsComplete.js.map +7 -0
- package/dist/enableDisable.js +21 -0
- package/dist/enableDisable.js.map +7 -0
- package/dist/event.js +75 -0
- package/dist/event.js.map +7 -0
- package/dist/hasfocus.js +48 -0
- package/dist/hasfocus.js.map +7 -0
- package/dist/html.js +15 -0
- package/dist/html.js.map +7 -0
- package/dist/index.cjs +3956 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +7 -0
- package/dist/index.mjs +50 -0
- package/dist/index.mjs.map +7 -0
- package/dist/let.js +12 -0
- package/dist/let.js.map +7 -0
- package/dist/options.js +130 -0
- package/dist/options.js.map +7 -0
- package/dist/selectedOptions.js +41 -0
- package/dist/selectedOptions.js.map +7 -0
- package/dist/style.js +30 -0
- package/dist/style.js.map +7 -0
- package/dist/submit.js +26 -0
- package/dist/submit.js.map +7 -0
- package/dist/test-helper.js +14 -0
- package/dist/test-helper.js.map +7 -0
- package/dist/text.js +13 -0
- package/dist/text.js.map +7 -0
- package/dist/textInput.js +151 -0
- package/dist/textInput.js.map +7 -0
- package/dist/uniqueName.js +13 -0
- package/dist/uniqueName.js.map +7 -0
- package/dist/using.js +12 -0
- package/dist/using.js.map +7 -0
- package/dist/value.js +103 -0
- package/dist/value.js.map +7 -0
- package/dist/visible.js +20 -0
- package/dist/visible.js.map +7 -0
- package/package.json +18 -28
- package/dist/binding.core.es6.js +0 -1044
- package/dist/binding.core.es6.js.map +0 -1
- package/dist/binding.core.js +0 -1146
- package/dist/binding.core.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"binding.core.es6.js","sources":["../src/attr.js","../src/checked.js","../src/event.js","../src/click.js","../src/css.js","../src/descendantsComplete.js","../src/enableDisable.js","../src/hasfocus.js","../src/html.js","../src/let.js","../src/options.js","../src/selectedOptions.js","../src/style.js","../src/submit.js","../src/text.js","../src/textInput.js","../src/uniqueName.js","../src/value.js","../src/visible.js","../src/using.js","../src/index.js"],"sourcesContent":["\nimport {\n setElementName, objectForEach\n} from '@tko/utils'\n\nimport {\n unwrap\n} from '@tko/observable'\n\nexport var attr = {\n update: function (element, valueAccessor, allBindings) {\n var value = unwrap(valueAccessor()) || {}\n objectForEach(value, function (attrName, attrValue) {\n attrValue = unwrap(attrValue)\n\n // Find the namespace of this attribute, if any.\n var prefixLen = attrName.indexOf(':')\n var namespace = prefixLen > 0 && element.lookupNamespaceURI(attrName.substr(0, prefixLen))\n\n // To cover cases like \"attr: { checked:someProp }\", we want to remove the attribute entirely\n // when someProp is a \"no value\"-like value (strictly null, false, or undefined)\n // (because the absence of the \"checked\" attr is how to mark an element as not checked, etc.)\n const toRemove = attrValue === false || attrValue === null || attrValue === undefined\n\n if (toRemove) {\n if (namespace) {\n element.removeAttributeNS(namespace, attrName)\n } else {\n element.removeAttribute(attrName)\n }\n } else {\n attrValue = attrValue.toString()\n if (namespace) {\n element.setAttributeNS(namespace, attrName, attrValue)\n } else {\n element.setAttribute(attrName, attrValue)\n }\n }\n\n // Treat \"name\" specially - although you can think of it as an attribute, it also needs\n // special handling on older versions of IE (https://github.com/SteveSanderson/knockout/pull/333)\n // Deliberately being case-sensitive here because XHTML would regard \"Name\" as a different thing\n // entirely, and there's no strong reason to allow for such casing in HTML.\n if (attrName === 'name') {\n setElementName(element, toRemove ? '' : attrValue)\n }\n })\n }\n}\n","\nimport {\n registerEventHandler, arrayIndexOf, addOrRemoveItem\n} from '@tko/utils'\n\nimport {\n unwrap, dependencyDetection, isWriteableObservable\n} from '@tko/observable'\n\nimport {\n computed, pureComputed\n} from '@tko/computed'\n\nexport var checked = {\n after: ['value', 'attr'],\n init: function (element, valueAccessor, allBindings) {\n var checkedValue = pureComputed(function () {\n // Treat \"value\" like \"checkedValue\" when it is included with \"checked\" binding\n if (allBindings.has('checkedValue')) {\n return unwrap(allBindings.get('checkedValue'))\n } else if (useElementValue) {\n if (allBindings.has('value')) {\n return unwrap(allBindings.get('value'))\n } else {\n return element.value\n }\n }\n })\n\n function updateModel () {\n // This updates the model value from the view value.\n // It runs in response to DOM events (click) and changes in checkedValue.\n var isChecked = element.checked,\n elemValue = checkedValue()\n\n // When we're first setting up this computed, don't change any model state.\n if (dependencyDetection.isInitial()) {\n return\n }\n\n // We can ignore unchecked radio buttons, because some other radio\n // button will be checked, and that one can take care of updating state.\n // button will be checked, and that one can take care of updating state\n if (!isChecked && (isRadio || dependencyDetection.getDependenciesCount())) {\n return\n }\n\n var modelValue = dependencyDetection.ignore(valueAccessor)\n if (valueIsArray) {\n var writableValue = rawValueIsNonArrayObservable ? modelValue.peek() : modelValue,\n saveOldValue = oldElemValue\n oldElemValue = elemValue\n\n if (saveOldValue !== elemValue) {\n // When we're responding to the checkedValue changing, and the element is\n // currently checked, replace the old elem value with the new elem value\n // in the model array.\n if (isChecked) {\n addOrRemoveItem(writableValue, elemValue, true)\n addOrRemoveItem(writableValue, saveOldValue, false)\n }\n\n oldElemValue = elemValue\n } else {\n // When we're responding to the user having checked/unchecked a checkbox,\n // add/remove the element value to the model array.\n addOrRemoveItem(writableValue, elemValue, isChecked)\n }\n if (rawValueIsNonArrayObservable && isWriteableObservable(modelValue)) {\n modelValue(writableValue)\n }\n } else {\n if (isCheckbox) {\n if (elemValue === undefined) {\n elemValue = isChecked\n } else if (!isChecked) {\n elemValue = undefined\n }\n }\n valueAccessor(elemValue, {onlyIfChanged: true})\n }\n };\n\n function updateView () {\n // This updates the view value from the model value.\n // It runs in response to changes in the bound (checked) value.\n var modelValue = modelValue = unwrap(valueAccessor())\n var elemValue = checkedValue()\n\n if (valueIsArray) {\n // When a checkbox is bound to an array, being checked represents its value being present in that array\n element.checked = arrayIndexOf(modelValue, elemValue) >= 0\n oldElemValue = elemValue\n } else if (isCheckbox && elemValue === undefined) {\n // When a checkbox is bound to any other value (not an array) and \"checkedValue\" is not defined,\n // being checked represents the value being trueish\n element.checked = !!modelValue\n } else {\n // Otherwise, being checked means that the checkbox or radio button's value corresponds to the model value\n element.checked = (checkedValue() === modelValue)\n }\n };\n\n var isCheckbox = element.type == 'checkbox',\n isRadio = element.type == 'radio'\n\n // Only bind to check boxes and radio buttons\n if (!isCheckbox && !isRadio) {\n return\n }\n\n var rawValue = valueAccessor(),\n valueIsArray = isCheckbox && (unwrap(rawValue) instanceof Array),\n rawValueIsNonArrayObservable = !(valueIsArray && rawValue.push && rawValue.splice),\n useElementValue = isRadio || valueIsArray,\n oldElemValue = valueIsArray ? checkedValue() : undefined\n\n // Set up two computeds to update the binding:\n\n // The first responds to changes in the checkedValue value and to element clicks\n computed(updateModel, null, { disposeWhenNodeIsRemoved: element })\n registerEventHandler(element, 'click', updateModel)\n\n // The second responds to changes in the model value (the one associated with the checked binding)\n computed(updateView, null, { disposeWhenNodeIsRemoved: element })\n\n rawValue = undefined\n }\n}\n\nexport var checkedValue = {\n update: function (element, valueAccessor) {\n element.value = unwrap(valueAccessor())\n }\n}\n","\nimport {\n objectForEach, registerEventHandler, makeArray,\n throttle as throttleFn, debounce as debounceFn\n} from '@tko/utils'\n\n// For certain common events (currently just 'click'), allow a simplified data-binding syntax\n// e.g. click:handler instead of the usual full-length event:{click:handler}\nexport function makeEventHandlerShortcut (eventName) {\n return {\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\n var newValueAccessor = function () {\n var result = {}\n result[eventName] = valueAccessor()\n return result\n }\n eventHandler.init.call(this, element, newValueAccessor, allBindings, viewModel, bindingContext)\n }\n }\n}\n\nfunction makeDescriptor (handlerOrObject) {\n return typeof handlerOrObject === 'function' ? { handler: handlerOrObject } : handlerOrObject || {}\n}\n\nexport const eventHandler = {\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\n var eventsToHandle = valueAccessor() || {}\n objectForEach(eventsToHandle, function (eventName, descriptor) {\n const {passive, capture, once, debounce, throttle} = makeDescriptor(descriptor)\n const eventOptions = (capture || passive || once) && {capture, passive, once}\n\n let eventHandlerFn = (event, ...more) => {\n var handlerReturnValue\n const {handler, passive, bubble} = makeDescriptor(valueAccessor()[eventName])\n\n try {\n // Take all the event args, and prefix with the viewmodel\n if (handler) {\n const possiblyUpdatedViewModel = bindingContext.$data\n const argsForHandler = [possiblyUpdatedViewModel, event, ...more]\n handlerReturnValue = handler.apply(possiblyUpdatedViewModel, argsForHandler)\n }\n } finally {\n if (handlerReturnValue !== true) {\n // Normally we want to prevent default action. Developer can override this be explicitly returning true.\n // preventDefault will throw an error if the event is passive.\n if (event.preventDefault) {\n if (!passive) { event.preventDefault() }\n } else {\n event.returnValue = false\n }\n }\n }\n\n const bubbleMark = allBindings.get(eventName + 'Bubble') !== false\n if (bubble === false || !bubbleMark) {\n event.cancelBubble = true\n if (event.stopPropagation) { event.stopPropagation() }\n }\n }\n\n if (debounce) { eventHandlerFn = debounceFn(eventHandlerFn, debounce) }\n if (throttle) { eventHandlerFn = throttleFn(eventHandlerFn, throttle) }\n\n registerEventHandler(element, eventName, eventHandlerFn, eventOptions || false)\n })\n }\n}\n\nexport const onHandler = {\n init: eventHandler.init,\n preprocess: function (value, key, addBinding) {\n addBinding(key.replace('on.', ''), '=>' + value)\n }\n}\n","\nimport {\n makeEventHandlerShortcut\n} from './event.js'\n\n// 'click' is just a shorthand for the usual full-length event:{click:handler}\nexport var click = makeEventHandlerShortcut('click')\n","\nimport {\n createSymbolOrString, toggleDomNodeCssClass, objectForEach, stringTrim\n} from '@tko/utils'\n\nimport {\n unwrap\n} from '@tko/observable'\n\nexport var css = {\n aliases: ['class'],\n update: function (element, valueAccessor) {\n var value = unwrap(valueAccessor())\n if (value !== null && typeof value === 'object') {\n objectForEach(value, function (className, shouldHaveClass) {\n shouldHaveClass = unwrap(shouldHaveClass)\n toggleDomNodeCssClass(element, className, shouldHaveClass)\n })\n } else {\n value = stringTrim(String(value || '')) // Make sure we don't try to store or set a non-string value\n toggleDomNodeCssClass(element, element[css.classesWrittenByBindingKey], false)\n element[css.classesWrittenByBindingKey] = value\n toggleDomNodeCssClass(element, value, true)\n }\n },\n classesWrittenByBindingKey: createSymbolOrString('__ko__cssValue')\n}\n","/**\n * A simple callback binding.\n */\nimport {\n BindingHandler\n} from '@tko/bind'\n\nexport default class DescendantsCompleteHandler extends BindingHandler {\n onDescendantsComplete () {\n if (typeof this.value === 'function') {\n this.value(this.$element)\n }\n }\n\n static get allowVirtualElements () { return true }\n}\n","\nimport {\n unwrap\n} from '@tko/observable'\n\nexport var enable = {\n update: function (element, valueAccessor) {\n var value = unwrap(valueAccessor())\n if (value && element.disabled) {\n element.removeAttribute('disabled')\n } else if ((!value) && (!element.disabled)) {\n element.disabled = true\n }\n }\n}\n\nexport var disable = {\n update: function (element, valueAccessor) {\n enable.update(element, function () { return !unwrap(valueAccessor()) })\n }\n}\n","\nimport {\n createSymbolOrString, triggerEvent, registerEventHandler\n} from '@tko/utils'\n\nimport {\n unwrap, dependencyDetection\n} from '@tko/observable'\n\nvar hasfocusUpdatingProperty = createSymbolOrString('__ko_hasfocusUpdating')\nvar hasfocusLastValue = createSymbolOrString('__ko_hasfocusLastValue')\n\nexport var hasfocus = {\n init: function (element, valueAccessor /*, allBindings */) {\n var handleElementFocusChange = function (isFocused) {\n // Where possible, ignore which event was raised and determine focus state using activeElement,\n // as this avoids phantom focus/blur events raised when changing tabs in modern browsers.\n // However, not all KO-targeted browsers (Firefox 2) support activeElement. For those browsers,\n // prevent a loss of focus when changing tabs/windows by setting a flag that prevents hasfocus\n // from calling 'blur()' on the element when it loses focus.\n // Discussion at https://github.com/SteveSanderson/knockout/pull/352\n element[hasfocusUpdatingProperty] = true\n var ownerDoc = element.ownerDocument\n if ('activeElement' in ownerDoc) {\n var active\n try {\n active = ownerDoc.activeElement\n } catch (e) {\n // IE9 throws if you access activeElement during page load (see issue #703)\n active = ownerDoc.body\n }\n isFocused = (active === element)\n }\n // var modelValue = valueAccessor();\n valueAccessor(isFocused, {onlyIfChanged: true})\n\n // cache the latest value, so we can avoid unnecessarily calling focus/blur in the update function\n element[hasfocusLastValue] = isFocused\n element[hasfocusUpdatingProperty] = false\n }\n var handleElementFocusIn = handleElementFocusChange.bind(null, true)\n var handleElementFocusOut = handleElementFocusChange.bind(null, false)\n\n registerEventHandler(element, 'focus', handleElementFocusIn)\n registerEventHandler(element, 'focusin', handleElementFocusIn) // For IE\n registerEventHandler(element, 'blur', handleElementFocusOut)\n registerEventHandler(element, 'focusout', handleElementFocusOut) // For IE\n },\n update: function (element, valueAccessor) {\n var value = !!unwrap(valueAccessor())\n\n if (!element[hasfocusUpdatingProperty] && element[hasfocusLastValue] !== value) {\n value ? element.focus() : element.blur()\n\n // In IE, the blur method doesn't always cause the element to lose focus (for example, if the window is not in focus).\n // Setting focus to the body element does seem to be reliable in IE, but should only be used if we know that the current\n // element was focused already.\n if (!value && element[hasfocusLastValue]) {\n element.ownerDocument.body.focus()\n }\n\n // For IE, which doesn't reliably fire \"focus\" or \"blur\" events synchronously\n dependencyDetection.ignore(triggerEvent, null, [element, value ? 'focusin' : 'focusout'])\n }\n }\n}\n","import {\n setHtml, parseHtmlFragment, virtualElements\n} from '@tko/utils'\n\nimport {\n unwrap\n} from '@tko/observable'\n\nexport var html = {\n init: function () {\n // Prevent binding on the dynamically-injected HTML (as developers are unlikely to expect that, and it has security implications)\n return {\n 'controlsDescendantBindings': true\n }\n },\n //\n // Modify internal, per ko.punches and :\n // http://stackoverflow.com/a/15348139\n update: function (element, valueAccessor) {\n setHtml(element, valueAccessor())\n },\n allowVirtualElements: true\n}\n","\nimport {\n applyBindingsToDescendants\n} from '@tko/bind'\n\nexport default {\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\n // Make a modified binding context, with extra properties, and apply it to descendant elements\n var innerContext = bindingContext['extend'](valueAccessor)\n applyBindingsToDescendants(innerContext, element)\n\n return { 'controlsDescendantBindings': true }\n },\n allowVirtualElements: true\n}\n","\nimport {\n tagNameLower, arrayFilter, arrayMap, setTextContent, arrayIndexOf,\n setOptionNodeSelectionState, triggerEvent, domData,\n ensureSelectElementIsRenderedCorrectly, selectExtensions\n} from '@tko/utils'\n\nimport {\n unwrap, dependencyDetection\n} from '@tko/observable'\n\nimport {\n setDomNodeChildrenFromArrayMapping\n} from '@tko/bind'\n\nvar captionPlaceholder = {}\n\nexport var options = {\n init: function (element) {\n if (tagNameLower(element) !== 'select') { throw new Error('options binding applies only to SELECT elements') }\n\n // Remove all existing <option>s.\n while (element.length > 0) {\n element.remove(0)\n }\n\n // Ensures that the binding processor doesn't try to bind the options\n return { 'controlsDescendantBindings': true }\n },\n update: function (element, valueAccessor, allBindings) {\n function selectedOptions () {\n return arrayFilter(element.options, function (node) { return node.selected })\n }\n\n var selectWasPreviouslyEmpty = element.length == 0,\n multiple = element.multiple,\n previousScrollTop = (!selectWasPreviouslyEmpty && multiple) ? element.scrollTop : null,\n unwrappedArray = unwrap(valueAccessor()),\n valueAllowUnset = allBindings.get('valueAllowUnset') && allBindings['has']('value'),\n includeDestroyed = allBindings.get('optionsIncludeDestroyed'),\n arrayToDomNodeChildrenOptions = {},\n captionValue,\n filteredArray,\n previousSelectedValues = []\n\n if (!valueAllowUnset) {\n if (multiple) {\n previousSelectedValues = arrayMap(selectedOptions(), selectExtensions.readValue)\n } else if (element.selectedIndex >= 0) {\n previousSelectedValues.push(selectExtensions.readValue(element.options[element.selectedIndex]))\n }\n }\n\n if (unwrappedArray) {\n if (typeof unwrappedArray.length === 'undefined') // Coerce single value into array\n { unwrappedArray = [unwrappedArray] }\n\n // Filter out any entries marked as destroyed\n filteredArray = arrayFilter(unwrappedArray, function (item) {\n return includeDestroyed || item === undefined || item === null || !unwrap(item['_destroy'])\n })\n\n // If caption is included, add it to the array\n if (allBindings['has']('optionsCaption')) {\n captionValue = unwrap(allBindings.get('optionsCaption'))\n // If caption value is null or undefined, don't show a caption\n if (captionValue !== null && captionValue !== undefined) {\n filteredArray.unshift(captionPlaceholder)\n }\n }\n } else {\n // If a falsy value is provided (e.g. null), we'll simply empty the select element\n }\n\n function applyToObject (object, predicate, defaultValue) {\n var predicateType = typeof predicate\n if (predicateType == 'function') // Given a function; run it against the data value\n { return predicate(object) } else if (predicateType == 'string') // Given a string; treat it as a property name on the data value\n { return object[predicate] } else // Given no optionsText arg; use the data value itself\n { return defaultValue }\n }\n\n // The following functions can run at two different times:\n // The first is when the whole array is being updated directly from this binding handler.\n // The second is when an observable value for a specific array entry is updated.\n // oldOptions will be empty in the first case, but will be filled with the previously generated option in the second.\n var itemUpdate = false\n function optionForArrayItem (arrayEntry, index, oldOptions) {\n if (oldOptions.length) {\n previousSelectedValues = !valueAllowUnset && oldOptions[0].selected ? [ selectExtensions.readValue(oldOptions[0]) ] : []\n itemUpdate = true\n }\n var option = element.ownerDocument.createElement('option')\n if (arrayEntry === captionPlaceholder) {\n setTextContent(option, allBindings.get('optionsCaption'))\n selectExtensions.writeValue(option, undefined)\n } else {\n // Apply a value to the option element\n var optionValue = applyToObject(arrayEntry, allBindings.get('optionsValue'), arrayEntry)\n selectExtensions.writeValue(option, unwrap(optionValue))\n\n // Apply some text to the option element\n var optionText = applyToObject(arrayEntry, allBindings.get('optionsText'), optionValue)\n setTextContent(option, optionText)\n }\n return [option]\n }\n\n // By using a beforeRemove callback, we delay the removal until after new items are added. This fixes a selection\n // problem in IE<=8 and Firefox. See https://github.com/knockout/knockout/issues/1208\n arrayToDomNodeChildrenOptions['beforeRemove'] =\n function (option) {\n element.removeChild(option)\n }\n\n function setSelectionCallback (arrayEntry, newOptions) {\n if (itemUpdate && valueAllowUnset) {\n // The model value is authoritative, so make sure its value is the one selected\n // There is no need to use dependencyDetection.ignore since setDomNodeChildrenFromArrayMapping does so already.\n selectExtensions.writeValue(element, unwrap(allBindings.get('value')), true /* allowUnset */)\n } else if (previousSelectedValues.length) {\n // IE6 doesn't like us to assign selection to OPTION nodes before they're added to the document.\n // That's why we first added them without selection. Now it's time to set the selection.\n var isSelected = arrayIndexOf(previousSelectedValues, selectExtensions.readValue(newOptions[0])) >= 0\n setOptionNodeSelectionState(newOptions[0], isSelected)\n\n // If this option was changed from being selected during a single-item update, notify the change\n if (itemUpdate && !isSelected) {\n dependencyDetection.ignore(triggerEvent, null, [element, 'change'])\n }\n }\n }\n\n var callback = setSelectionCallback\n if (allBindings['has']('optionsAfterRender') && typeof allBindings.get('optionsAfterRender') === 'function') {\n callback = function (arrayEntry, newOptions) {\n setSelectionCallback(arrayEntry, newOptions)\n dependencyDetection.ignore(allBindings.get('optionsAfterRender'), null, [newOptions[0], arrayEntry !== captionPlaceholder ? arrayEntry : undefined])\n }\n }\n\n setDomNodeChildrenFromArrayMapping(element, filteredArray, optionForArrayItem, arrayToDomNodeChildrenOptions, callback)\n\n dependencyDetection.ignore(function () {\n if (valueAllowUnset) {\n // The model value is authoritative, so make sure its value is the one selected\n selectExtensions.writeValue(element, unwrap(allBindings.get('value')), true /* allowUnset */)\n } else {\n // Determine if the selection has changed as a result of updating the options list\n var selectionChanged\n if (multiple) {\n // For a multiple-select box, compare the new selection count to the previous one\n // But if nothing was selected before, the selection can't have changed\n selectionChanged = previousSelectedValues.length && selectedOptions().length < previousSelectedValues.length\n } else {\n // For a single-select box, compare the current value to the previous value\n // But if nothing was selected before or nothing is selected now, just look for a change in selection\n selectionChanged = (previousSelectedValues.length && element.selectedIndex >= 0)\n ? (selectExtensions.readValue(element.options[element.selectedIndex]) !== previousSelectedValues[0])\n : (previousSelectedValues.length || element.selectedIndex >= 0)\n }\n\n // Ensure consistency between model value and selected option.\n // If the dropdown was changed so that selection is no longer the same,\n // notify the value or selectedOptions binding.\n if (selectionChanged) {\n triggerEvent(element, 'change')\n }\n }\n })\n\n // Workaround for IE bug\n ensureSelectElementIsRenderedCorrectly(element)\n\n if (previousScrollTop && Math.abs(previousScrollTop - element.scrollTop) > 20) { element.scrollTop = previousScrollTop }\n }\n}\n","\nimport {\n arrayForEach, setOptionNodeSelectionState, arrayIndexOf,\n registerEventHandler, tagNameLower, selectExtensions\n} from '@tko/utils'\n\nimport {\n unwrap\n} from '@tko/observable'\n\nexport var selectedOptions = {\n after: ['options', 'foreach'],\n\n init: function (element, valueAccessor, allBindings) {\n registerEventHandler(element, 'change', function () {\n var value = valueAccessor(), valueToWrite = []\n arrayForEach(element.getElementsByTagName('option'), function (node) {\n if (node.selected) { valueToWrite.push(selectExtensions.readValue(node)) }\n })\n valueAccessor(valueToWrite)\n })\n },\n\n update: function (element, valueAccessor) {\n if (tagNameLower(element) != 'select') { throw new Error('values binding applies only to SELECT elements') }\n\n var newValue = unwrap(valueAccessor()),\n previousScrollTop = element.scrollTop\n\n if (newValue && typeof newValue.length === 'number') {\n arrayForEach(element.getElementsByTagName('option'), function (node) {\n var isSelected = arrayIndexOf(newValue, selectExtensions.readValue(node)) >= 0\n if (node.selected != isSelected) { // This check prevents flashing of the select element in IE\n setOptionNodeSelectionState(node, isSelected)\n }\n })\n }\n\n element.scrollTop = previousScrollTop\n }\n}\n","\nimport {\n objectForEach, options\n} from '@tko/utils'\n\nimport {\n unwrap\n} from '@tko/observable'\n\nconst {jQueryInstance} = options\n\nexport var style = {\n update: function (element, valueAccessor) {\n var value = unwrap(valueAccessor() || {})\n objectForEach(value, function (styleName, styleValue) {\n styleValue = unwrap(styleValue)\n\n if (styleValue === null || styleValue === undefined || styleValue === false) {\n // Empty string removes the value, whereas null/undefined have no effect\n styleValue = ''\n }\n\n if (jQueryInstance) {\n jQueryInstance(element).css(styleName, styleValue)\n } else {\n styleName = styleName.replace(/-(\\w)/g, (all, letter) => letter.toUpperCase())\n const previousStyle = element.style[styleName]\n element.style[styleName] = styleValue\n if (styleValue !== previousStyle && element.style[styleName] === previousStyle && !isNaN(styleValue)) {\n element.style[styleName] = styleValue + 'px'\n }\n }\n })\n }\n}\n","\nimport {\n registerEventHandler\n} from '@tko/utils'\n\nexport var submit = {\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\n if (typeof valueAccessor() !== 'function') { throw new Error('The value for a submit binding must be a function') }\n registerEventHandler(element, 'submit', function (event) {\n var handlerReturnValue\n var value = valueAccessor()\n try { handlerReturnValue = value.call(bindingContext['$data'], element) } finally {\n if (handlerReturnValue !== true) { // Normally we want to prevent default action. Developer can override this be explicitly returning true.\n if (event.preventDefault) { event.preventDefault() } else { event.returnValue = false }\n }\n }\n })\n }\n}\n","import {\n setTextContent\n} from '@tko/utils'\n\nexport var text = {\n init: function () {\n // Prevent binding on the dynamically-injected text node (as developers are unlikely to expect that, and it has security implications).\n // It should also make things faster, as we no longer have to consider whether the text node might be bindable.\n return { controlsDescendantBindings: true }\n },\n update: function (element, valueAccessor) {\n setTextContent(element, valueAccessor())\n },\n allowVirtualElements: true\n}\n","\nimport {\n domData, registerEventHandler, ieVersion, safeSetTimeout, options,\n arrayForEach, tagNameLower\n} from '@tko/utils'\n\nimport {\n unwrap\n} from '@tko/observable'\n\nimport {\n computed\n} from '@tko/computed'\n\nimport {\n BindingHandler\n} from '@tko/bind'\n\nvar parseVersion, operaVersion, safariVersion, firefoxVersion\n\n\n/**\n * TextInput binding handler for modern browsers (legacy below).\n * @extends BindingHandler\n */\nclass TextInput extends BindingHandler {\n get aliases () { return 'textinput' }\n\n constructor (...args) {\n super(...args)\n this.previousElementValue = this.$element.value\n\n if (options.debug && this.constructor._forceUpdateOn) {\n // Provide a way for tests to specify exactly which events are bound\n arrayForEach(this.constructor._forceUpdateOn, (eventName) => {\n if (eventName.slice(0, 5) === 'after') {\n this.addEventListener(eventName.slice(5), 'deferUpdateModel')\n } else {\n this.addEventListener(eventName, 'updateModel')\n }\n })\n }\n\n for (const eventName of this.eventsIndicatingSyncValueChange()) {\n this.addEventListener(eventName, 'updateModel')\n }\n for (const eventName of this.eventsIndicatingDeferValueChange()) {\n this.addEventListener(eventName, 'deferUpdateModel')\n }\n this.computed('updateView')\n }\n\n eventsIndicatingSyncValueChange () {\n // input: Default, modern handler\n // change: Catch programmatic updates of the value that fire this event.\n // blur: To deal with browsers that don't notify any kind of event for some changes (IE, Safari, etc.)\n return ['input', 'change', 'blur']\n }\n\n eventsIndicatingDeferValueChange () {\n return []\n }\n\n updateModel (event) {\n const element = this.$element\n clearTimeout(this.timeoutHandle)\n this.elementValueBeforeEvent = this.timeoutHandle = undefined\n const elementValue = element.value\n if (this.previousElementValue !== elementValue) {\n // Provide a way for tests to know exactly which event was processed\n if (options.debug && event) {\n element._ko_textInputProcessedEvent = event.type\n }\n this.previousElementValue = elementValue\n this.value = elementValue\n }\n }\n\n deferUpdateModel (event) {\n const element = this.$element\n if (!this.timeoutHandle) {\n // The elementValueBeforeEvent variable is set *only* during the brief gap between an\n // event firing and the updateModel function running. This allows us to ignore model\n // updates that are from the previous state of the element, usually due to techniques\n // such as rateLimit. Such updates, if not ignored, can cause keystrokes to be lost.\n this.elementValueBeforeEvent = element.value\n const handler = options.debug ? this.updateModel.bind(this, { type: event.type }) : this.updateModel\n this.timeoutHandle = safeSetTimeout(handler, 4)\n }\n }\n\n updateView () {\n let modelValue = unwrap(this.value)\n if (modelValue === null || modelValue === undefined) {\n modelValue = ''\n }\n if (this.elementValueBeforeEvent !== undefined\n && modelValue === this.elementValueBeforeEvent) {\n setTimeout(this.updateView.bind(this), 4)\n } else if (this.$element.value !== modelValue) {\n // Update the element only if the element and model are different. On some browsers, updating the value\n // will move the cursor to the end of the input, which would be bad while the user is typing.\n this.previousElementValue = modelValue // Make sure we ignore events (propertychange) that result from updating the value\n this.$element.value = modelValue\n this.previousElementValue = this.$element.value // In case the browser changes the value (see #2281)\n }\n }\n}\n\n/**\n * Legacy Input Classes, below\n */\nclass TextInputIE extends TextInput {\n constructor (...args) {\n super(...args)\n\n if (ieVersion < 11) {\n // Internet Explorer <= 8 doesn't support the 'input' event, but does include 'propertychange' that fires whenever\n // any property of an element changes. Unlike 'input', it also fires if a property is changed from JavaScript code,\n // but that's an acceptable compromise for this binding. IE 9 and 10 support 'input', but since they don't always\n // fire it when using autocomplete, we'll use 'propertychange' for them also.\n this.addEventListener('propertychange', event =>\n event.propertyName === 'value' && this.updateModel(event)\n )\n }\n\n if (ieVersion >= 8 && ieVersion < 10) {\n this.watchForSelectionChangeEvent()\n this.addEventListener('dragend', 'deferUpdateModel')\n }\n }\n\n eventsIndicatingSyncValueChange () {\n // keypress: All versions (including 11) of Internet Explorer have a bug that they don't generate an input or propertychange event when ESC is pressed\n return [...super.eventsIndicatingValueChange(), 'keypress']\n }\n\n // IE 8 and 9 have bugs that prevent the normal events from firing when the value changes.\n // But it does fire the 'selectionchange' event on many of those, presumably because the\n // cursor is moving and that counts as the selection changing. The 'selectionchange' event is\n // fired at the document level only and doesn't directly indicate which element changed. We\n // set up just one event handler for the document and use 'activeElement' to determine which\n // element was changed.\n selectionChangeHandler (event) {\n const target = this.activeElement\n const handler = target && domData.get(target, selectionChangeHandlerName)\n if (handler) { handler(event) }\n }\n\n watchForSelectionChangeEvent (element, ieUpdateModel) {\n const ownerDoc = element.ownerDocument;\n if (!domData.get(ownerDoc, selectionChangeRegisteredName)) {\n domData.set(ownerDoc, selectionChangeRegisteredName, true)\n registerEventHandler(ownerDoc, 'selectionchange', this.selectionChangeHandler.bind(ownerDoc))\n }\n domData.set(element, selectionChangeHandlerName, handler)\n }\n}\n\n\n// IE 8 and 9 have bugs that prevent the normal events from firing when the value changes.\n// But it does fire the 'selectionchange' event on many of those, presumably because the\n// cursor is moving and that counts as the selection changing. The 'selectionchange' event is\n// fired at the document level only and doesn't directly indicate which element changed. We\n// set up just one event handler for the document and use 'activeElement' to determine which\n// element was changed.\nclass TextInputIE9 extends TextInputIE {\n updateModel (...args) {\n // IE9 will mess up the DOM if you handle events synchronously which results in DOM changes (such as other bindings);\n // so we'll make sure all updates are asynchronous\n this.deferUpdateModel(...args)\n }\n}\n\n\nclass TextInputIE8 extends TextInputIE {\n eventsIndicatingValueChange () {\n // IE 8 has a bug where it fails to fire 'propertychange' on the first update following a value change from\n // JavaScript code. It also doesn't fire if you clear the entire value. To fix this, we bind to the following\n // events too.\n // keypress: All versions (including 11) of Internet Explorer have a bug that they don't generate an input or propertychange event when ESC is pressed\n // keyup: A single keystoke\n // keydown: First character when a key is held down\n return [...super.eventsIndicatingValueChange(), 'keyup', 'keydown']\n }\n}\n\n\n// Safari <5 doesn't fire the 'input' event for <textarea> elements (it does fire 'textInput'\n// but only when typing). So we'll just catch as much as we can with keydown, cut, and paste.\nclass TextInputLegacySafari extends TextInput {\n eventsIndicatingDeferValueChange () {\n return ['keydown', 'paste', 'cut']\n }\n}\n\n\nclass TextInputLegacyOpera extends TextInput {\n eventsIndicatingDeferValueChange () {\n // Opera 10 doesn't always fire the 'input' event for cut, paste, undo & drop operations.\n // We can try to catch some of those using 'keydown'.\n return ['keydown']\n }\n}\n\n\nclass TextInputLegacyFirefox extends TextInput {\n eventsIndicatingValueChange () {\n return [\n ...super.eventsIndicatingSyncValueChange(),\n // Firefox <= 3.6 doesn't fire the 'input' event when text is filled in through autocomplete\n 'DOMAutoComplete',\n // Firefox <=3.5 doesn't fire the 'input' event when text is dropped into the input.\n 'dragdrop', // < 3.5\n 'drop' // 3.5\n ]\n }\n}\n\n\nconst w = options.global // window / global\nif (w.navigator) {\n const parseVersion = (matches) => matches && parseFloat(matches[1])\n const userAgent = w.navigator.userAgent\n const isChrome = userAgent.match(/Chrome\\/([^ ]+)/)\n // Detect various browser versions because some old versions don't fully support the 'input' event\n operaVersion = w.opera && w.opera.version && parseInt(w.opera.version())\n safariVersion = parseVersion(userAgent.match(/Version\\/([^ ]+) Safari/))\n firefoxVersion = parseVersion(userAgent.match(/Firefox\\/([^ ]*)/))\n}\n\n\nexport const textInput =\n ieVersion === 8 ? TextInputIE8\n : ieVersion === 9 ? TextInputIE9\n : ieVersion ? TextInputIE\n : safariVersion && safariVersion < 5 ? TextInputLegacySafari\n : operaVersion < 11 ? TextInputLegacyOpera\n : firefoxVersion && firefoxVersion < 4 ? TextInputLegacyFirefox\n : TextInput\n","\nimport {\n setElementName\n} from '@tko/utils'\n\nexport var uniqueName = {\n init: function (element, valueAccessor) {\n if (valueAccessor()) {\n var name = 'ko_unique_' + (++uniqueName.currentIndex)\n setElementName(element, name)\n }\n },\n currentIndex: 0\n}\n","\nimport {\n ieVersion, stringStartsWith, safeSetTimeout, tagNameLower, arrayForEach,\n selectExtensions\n} from '@tko/utils'\n\nimport {\n unwrap, dependencyDetection\n} from '@tko/observable'\n\nimport {\n applyBindingAccessorsToNode, BindingHandler\n} from '@tko/bind'\n\nexport class value extends BindingHandler {\n static get after () { return ['options', 'foreach', 'template'] }\n\n constructor (...args) {\n super(...args)\n\n // If the value binding is placed on a radio/checkbox, then just pass through to checkedValue and quit\n if (this.isCheckboxOrRadio) {\n applyBindingAccessorsToNode(this.$element,\n { checkedValue: this.valueAccessor })\n return\n }\n\n this.propertyChangedFired = false\n this.elementValueBeforeEvent = null\n\n if (this.ieAutoCompleteHackNeeded) {\n this.addEventListener('propertyChange', () => this.propertyChangedFired = true)\n this.addEventListener('focus', () => this.propertyChangedFired = false)\n this.addEventListener('blur', () => this.propertyChangeFired &&\n this.valueUpdateHandler())\n }\n\n arrayForEach(this.eventsToCatch, eventName => this.registerEvent(eventName))\n\n if (this.isInput && this.$element.type === 'file') {\n this.updateFromModel = this.updateFromModelForFile\n } else {\n this.updateFromModel = this.updateFromModelForValue\n }\n\n this.computed('updateFromModel')\n }\n\n get eventsToCatch () {\n const requestedEventsToCatch = this.allBindings.get('valueUpdate')\n const requestedEventsArray = typeof requestedEventsToCatch === 'string' ?\n [requestedEventsToCatch] : requestedEventsToCatch || []\n return [...new Set(['change', ...requestedEventsArray])]\n }\n\n get isInput () {\n return tagNameLower(this.$element) === 'input'\n }\n\n get isCheckboxOrRadio () {\n const e = this.$element\n return this.isInput && (e.type == 'checkbox' || e.type == 'radio')\n }\n\n // Workaround for https://github.com/SteveSanderson/knockout/issues/122\n // IE doesn't fire \"change\" events on textboxes if the user selects a value from its autocomplete list\n get ieAutoCompleteHackNeeded () {\n return ieVersion && isInputElement &&\n this.$element.type == 'text' && this.$element.autocomplete != 'off' &&\n (!this.$element.form || this.$element.form.autocomplete != 'off')\n }\n\n valueUpdateHandler () {\n this.elementValueBeforeEvent = null\n this.propertyChangedFired = false\n this.value = selectExtensions.readValue(this.$element)\n }\n\n registerEvent (eventName) {\n // The syntax \"after<eventname>\" means \"run the handler asynchronously after the event\"\n // This is useful, for example, to catch \"keydown\" events after the browser has updated the control\n // (otherwise, selectExtensions.readValue(this) will receive the control's value *before* the key event)\n var handler = this.valueUpdateHandler.bind(this)\n if (stringStartsWith(eventName, 'after')) {\n handler = () => {\n // The elementValueBeforeEvent variable is non-null *only* during the brief gap between\n // a keyX event firing and the valueUpdateHandler running, which is scheduled to happen\n // at the earliest asynchronous opportunity. We store this temporary information so that\n // if, between keyX and valueUpdateHandler, the underlying model value changes separately,\n // we can overwrite that model value change with the value the user just typed. Otherwise,\n // techniques like rateLimit can trigger model changes at critical moments that will\n // override the user's inputs, causing keystrokes to be lost.\n this.elementValueBeforeEvent = selectExtensions.readValue(this.$element)\n safeSetTimeout(this.valueUpdateHandler.bind(this), 0)\n }\n eventName = eventName.substring(5 /* 'after'.length */)\n }\n this.addEventListener(eventName, handler)\n }\n\n updateFromModelForFile () {\n // For file input elements, can only write the empty string\n var newValue = unwrap(this.value)\n if (newValue === null || newValue === undefined || newValue === '') {\n this.$element.value = ''\n } else {\n dependencyDetection.ignore(this.valueUpdateHandler, this) // reset the model to match the element\n }\n }\n\n updateFromModelForValue () {\n const element = this.$element\n var newValue = unwrap(this.value)\n var elementValue = selectExtensions.readValue(element)\n\n if (this.elementValueBeforeEvent !== null && newValue === this.elementValueBeforeEvent) {\n safeSetTimeout(this.updateFromModel.bind(this), 0)\n return\n }\n\n if (newValue === elementValue && elementValue !== undefined) { return }\n\n if (tagNameLower(element) === 'select') {\n const allowUnset = this.allBindings.get('valueAllowUnset')\n selectExtensions.writeValue(element, newValue, allowUnset)\n\n if (!allowUnset && newValue !== selectExtensions.readValue(element)) {\n // If you try to set a model value that can't be represented in an already-populated dropdown, reject that change,\n // because you're not allowed to have a model value that disagrees with a visible UI selection.\n dependencyDetection.ignore(this.valueUpdateHandler, this)\n }\n } else {\n selectExtensions.writeValue(element, newValue)\n }\n }\n}\n","import {\n unwrap\n} from '@tko/observable'\n\nexport var visible = {\n update: function (element, valueAccessor) {\n var value = unwrap(valueAccessor())\n var isCurrentlyVisible = !(element.style.display === 'none')\n if (value && !isCurrentlyVisible) {\n element.style.display = ''\n } else if (!value && isCurrentlyVisible) {\n element.style.display = 'none'\n }\n }\n}\n\nexport var hidden = {\n update: function (element, valueAccessor) {\n visible.update.call(this, element, () => !unwrap(valueAccessor()))\n }\n}\n","import {\n applyBindingsToDescendants\n} from '@tko/bind'\n\nexport var using = {\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\n var innerContext = bindingContext.createChildContext(valueAccessor)\n applyBindingsToDescendants(innerContext, element)\n return { controlsDescendantBindings: true }\n },\n allowVirtualElements: true\n}\n","\nimport {attr} from './attr.js'\nimport {checked, checkedValue} from './checked.js'\nimport {click} from './click.js'\nimport {css} from './css.js'\nimport descendantsComplete from './descendantsComplete'\nimport {enable, disable} from './enableDisable.js'\nimport {eventHandler, onHandler} from './event.js'\nimport {hasfocus} from './hasfocus.js'\nimport {html} from './html.js'\nimport $let from './let.js'\nimport {options} from './options.js'\nimport {selectedOptions} from './selectedOptions.js'\nimport {style} from './style.js'\nimport {submit} from './submit.js'\nimport {text} from './text.js'\nimport {textInput} from './textInput.js'\nimport {uniqueName} from './uniqueName.js'\nimport {value} from './value.js'\nimport {visible, hidden} from './visible.js'\nimport {using} from './using.js'\n\nexport var bindings = {\n attr,\n checked,\n checkedValue,\n click,\n css,\n 'class': css,\n descendantsComplete,\n enable,\n 'event': eventHandler,\n disable,\n hasfocus,\n hasFocus: hasfocus,\n hidden,\n html,\n 'let': $let,\n on: onHandler,\n options,\n selectedOptions,\n style,\n submit,\n text,\n textInput,\n textinput: textInput,\n uniqueName,\n using,\n value,\n visible\n}\n"],"names":["debounce","throttle","debounceFn","throttleFn","options","descendantsComplete"],"mappings":"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"}
|