@tko/binding.core 4.0.0-beta1.3 → 4.0.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.
Files changed (50) hide show
  1. package/dist/attr.js +10 -14
  2. package/dist/attr.js.map +2 -2
  3. package/dist/checked.js +19 -28
  4. package/dist/checked.js.map +3 -3
  5. package/dist/click.js +4 -5
  6. package/dist/click.js.map +2 -2
  7. package/dist/css.js +6 -12
  8. package/dist/css.js.map +2 -2
  9. package/dist/descendantsComplete.js +3 -4
  10. package/dist/descendantsComplete.js.map +2 -2
  11. package/dist/enableDisable.js +6 -7
  12. package/dist/enableDisable.js.map +2 -2
  13. package/dist/event.js +7 -8
  14. package/dist/event.js.map +3 -3
  15. package/dist/hasfocus.js +23 -22
  16. package/dist/hasfocus.js.map +2 -2
  17. package/dist/html.js +8 -8
  18. package/dist/html.js.map +2 -2
  19. package/dist/index.cjs +1037 -863
  20. package/dist/index.cjs.map +4 -4
  21. package/dist/index.js +6 -5
  22. package/dist/index.js.map +2 -2
  23. package/dist/index.mjs +6 -5
  24. package/dist/index.mjs.map +2 -2
  25. package/dist/let.js +6 -7
  26. package/dist/let.js.map +2 -2
  27. package/dist/options.js +39 -26
  28. package/dist/options.js.map +2 -2
  29. package/dist/selectedOptions.js +8 -9
  30. package/dist/selectedOptions.js.map +2 -2
  31. package/dist/style.js +8 -13
  32. package/dist/style.js.map +2 -2
  33. package/dist/submit.js +7 -8
  34. package/dist/submit.js.map +2 -2
  35. package/dist/text.js +4 -5
  36. package/dist/text.js.map +2 -2
  37. package/dist/textInput.js +24 -59
  38. package/dist/textInput.js.map +2 -2
  39. package/dist/uniqueName.js +5 -7
  40. package/dist/uniqueName.js.map +2 -2
  41. package/dist/using.js +6 -7
  42. package/dist/using.js.map +2 -2
  43. package/dist/value.js +17 -23
  44. package/dist/value.js.map +2 -2
  45. package/dist/visible.js +7 -8
  46. package/dist/visible.js.map +2 -2
  47. package/package.json +6 -7
  48. package/LICENSE +0 -22
  49. package/dist/test-helper.js +0 -14
  50. package/dist/test-helper.js.map +0 -7
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
- // @tko/binding.core 🥊 4.0.0-beta1.3 ESM
1
+ // @tko/binding.core 🥊 4.0.0 ESM
2
+ "use strict";
2
3
  import { attr } from "./attr";
3
4
  import { checked, checkedValue } from "./checked";
4
5
  import { click } from "./click";
@@ -19,22 +20,22 @@ import { uniqueName } from "./uniqueName";
19
20
  import { value } from "./value";
20
21
  import { visible, hidden } from "./visible";
21
22
  import { using } from "./using";
22
- export var bindings = {
23
+ export const bindings = {
23
24
  attr,
24
25
  checked,
25
26
  checkedValue,
26
27
  click,
27
28
  css,
28
- "class": css,
29
+ class: css,
29
30
  descendantsComplete,
30
31
  enable,
31
- "event": eventHandler,
32
+ event: eventHandler,
32
33
  disable,
33
34
  hasfocus,
34
35
  hasFocus: hasfocus,
35
36
  hidden,
36
37
  html,
37
- "let": $let,
38
+ let: $let,
38
39
  on: onHandler,
39
40
  options,
40
41
  selectedOptions,
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["\nimport {attr} from './attr'\nimport {checked, checkedValue} from './checked'\nimport {click} from './click'\nimport {css} from './css'\nimport descendantsComplete from './descendantsComplete'\nimport {enable, disable} from './enableDisable'\nimport {eventHandler, onHandler} from './event'\nimport {hasfocus} from './hasfocus'\nimport {html} from './html'\nimport $let from './let'\nimport {options} from './options'\nimport {selectedOptions} from './selectedOptions'\nimport {style} from './style'\nimport {submit} from './submit'\nimport {text} from './text'\nimport {textInput} from './textInput'\nimport {uniqueName} from './uniqueName'\nimport {value} from './value'\nimport {visible, hidden} from './visible'\nimport {using} from './using'\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"],
5
- "mappings": ";AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,WAAI,WAAW;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,IAAI;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
4
+ "sourcesContent": ["import { attr } from './attr'\nimport { checked, checkedValue } from './checked'\nimport { click } from './click'\nimport { css } from './css'\nimport descendantsComplete from './descendantsComplete'\nimport { enable, disable } from './enableDisable'\nimport { eventHandler, onHandler } from './event'\nimport { hasfocus } from './hasfocus'\nimport { html } from './html'\nimport $let from './let'\nimport { options } from './options'\nimport { selectedOptions } from './selectedOptions'\nimport { style } from './style'\nimport { submit } from './submit'\nimport { text } from './text'\nimport { textInput } from './textInput'\nimport { uniqueName } from './uniqueName'\nimport { value } from './value'\nimport { visible, hidden } from './visible'\nimport { using } from './using'\n\nexport const 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"],
5
+ "mappings": ";;AAAA,SAAS,YAAY;AACrB,SAAS,SAAS,oBAAoB;AACtC,SAAS,aAAa;AACtB,SAAS,WAAW;AACpB,OAAO,yBAAyB;AAChC,SAAS,QAAQ,eAAe;AAChC,SAAS,cAAc,iBAAiB;AACxC,SAAS,gBAAgB;AACzB,SAAS,YAAY;AACrB,OAAO,UAAU;AACjB,SAAS,eAAe;AACxB,SAAS,uBAAuB;AAChC,SAAS,aAAa;AACtB,SAAS,cAAc;AACvB,SAAS,YAAY;AACrB,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,aAAa;AACtB,SAAS,SAAS,cAAc;AAChC,SAAS,aAAa;AAEf,aAAM,WAAW;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,KAAK;AAAA,EACL,IAAI;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
6
6
  "names": []
7
7
  }
package/dist/index.mjs CHANGED
@@ -1,4 +1,5 @@
1
- // @tko/binding.core 🥊 4.0.0-beta1.3 MJS
1
+ // @tko/binding.core 🥊 4.0.0 MJS
2
+ "use strict";
2
3
  import { attr } from "./attr";
3
4
  import { checked, checkedValue } from "./checked";
4
5
  import { click } from "./click";
@@ -19,22 +20,22 @@ import { uniqueName } from "./uniqueName";
19
20
  import { value } from "./value";
20
21
  import { visible, hidden } from "./visible";
21
22
  import { using } from "./using";
22
- export var bindings = {
23
+ export const bindings = {
23
24
  attr,
24
25
  checked,
25
26
  checkedValue,
26
27
  click,
27
28
  css,
28
- "class": css,
29
+ class: css,
29
30
  descendantsComplete,
30
31
  enable,
31
- "event": eventHandler,
32
+ event: eventHandler,
32
33
  disable,
33
34
  hasfocus,
34
35
  hasFocus: hasfocus,
35
36
  hidden,
36
37
  html,
37
- "let": $let,
38
+ let: $let,
38
39
  on: onHandler,
39
40
  options,
40
41
  selectedOptions,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["\nimport {attr} from './attr'\nimport {checked, checkedValue} from './checked'\nimport {click} from './click'\nimport {css} from './css'\nimport descendantsComplete from './descendantsComplete'\nimport {enable, disable} from './enableDisable'\nimport {eventHandler, onHandler} from './event'\nimport {hasfocus} from './hasfocus'\nimport {html} from './html'\nimport $let from './let'\nimport {options} from './options'\nimport {selectedOptions} from './selectedOptions'\nimport {style} from './style'\nimport {submit} from './submit'\nimport {text} from './text'\nimport {textInput} from './textInput'\nimport {uniqueName} from './uniqueName'\nimport {value} from './value'\nimport {visible, hidden} from './visible'\nimport {using} from './using'\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"],
5
- "mappings": ";AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,WAAI,WAAW;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,IAAI;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
4
+ "sourcesContent": ["import { attr } from './attr'\nimport { checked, checkedValue } from './checked'\nimport { click } from './click'\nimport { css } from './css'\nimport descendantsComplete from './descendantsComplete'\nimport { enable, disable } from './enableDisable'\nimport { eventHandler, onHandler } from './event'\nimport { hasfocus } from './hasfocus'\nimport { html } from './html'\nimport $let from './let'\nimport { options } from './options'\nimport { selectedOptions } from './selectedOptions'\nimport { style } from './style'\nimport { submit } from './submit'\nimport { text } from './text'\nimport { textInput } from './textInput'\nimport { uniqueName } from './uniqueName'\nimport { value } from './value'\nimport { visible, hidden } from './visible'\nimport { using } from './using'\n\nexport const 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"],
5
+ "mappings": ";;AAAA,SAAS,YAAY;AACrB,SAAS,SAAS,oBAAoB;AACtC,SAAS,aAAa;AACtB,SAAS,WAAW;AACpB,OAAO,yBAAyB;AAChC,SAAS,QAAQ,eAAe;AAChC,SAAS,cAAc,iBAAiB;AACxC,SAAS,gBAAgB;AACzB,SAAS,YAAY;AACrB,OAAO,UAAU;AACjB,SAAS,eAAe;AACxB,SAAS,uBAAuB;AAChC,SAAS,aAAa;AACtB,SAAS,cAAc;AACvB,SAAS,YAAY;AACrB,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,aAAa;AACtB,SAAS,SAAS,cAAc;AAChC,SAAS,aAAa;AAEf,aAAM,WAAW;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,KAAK;AAAA,EACL,IAAI;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
6
6
  "names": []
7
7
  }
package/dist/let.js CHANGED
@@ -1,12 +1,11 @@
1
- // @tko/binding.core 🥊 4.0.0-beta1.3 ESM
2
- import {
3
- applyBindingsToDescendants
4
- } from "@tko/bind";
1
+ // @tko/binding.core 🥊 4.0.0 ESM
2
+ "use strict";
3
+ import { applyBindingsToDescendants } from "@tko/bind";
5
4
  export default {
6
- init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
7
- var innerContext = bindingContext["extend"](valueAccessor);
5
+ init: function(element, valueAccessor, _allBindings, _viewModel, bindingContext) {
6
+ const innerContext = bindingContext["extend"](valueAccessor);
8
7
  applyBindingsToDescendants(innerContext, element);
9
- return { "controlsDescendantBindings": true };
8
+ return { controlsDescendantBindings: true };
10
9
  },
11
10
  allowVirtualElements: true
12
11
  };
package/dist/let.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/let.ts"],
4
- "sourcesContent": ["\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"],
5
- "mappings": ";AACA;AAAA;AAAA;AAIA,eAAe;AAAA,EACb,MAAM,SAAU,SAAS,eAAe,aAAa,WAAW,gBAAgB;AAE9E,QAAI,eAAe,eAAe,UAAU,aAAa;AACzD,+BAA2B,cAAc,OAAO;AAEhD,WAAO,EAAE,8BAA8B,KAAK;AAAA,EAC9C;AAAA,EACA,sBAAsB;AACxB;",
4
+ "sourcesContent": ["import { applyBindingsToDescendants } from '@tko/bind'\n\nimport type { BindingContext } from '@tko/bind'\n\nexport default {\n init: function (element, valueAccessor, _allBindings, _viewModel, bindingContext: BindingContext) {\n // Make a modified binding context, with extra properties, and apply it to descendant elements\n const innerContext = bindingContext['extend'](valueAccessor)\n applyBindingsToDescendants(innerContext, element)\n\n return { controlsDescendantBindings: true }\n },\n allowVirtualElements: true\n}\n"],
5
+ "mappings": ";;AAAA,SAAS,kCAAkC;AAI3C,eAAe;AAAA,EACb,MAAM,SAAU,SAAS,eAAe,cAAc,YAAY,gBAAgC;AAEhG,UAAM,eAAe,eAAe,QAAQ,EAAE,aAAa;AAC3D,+BAA2B,cAAc,OAAO;AAEhD,WAAO,EAAE,4BAA4B,KAAK;AAAA,EAC5C;AAAA,EACA,sBAAsB;AACxB;",
6
6
  "names": []
7
7
  }
package/dist/options.js CHANGED
@@ -1,4 +1,5 @@
1
- // @tko/binding.core 🥊 4.0.0-beta1.3 ESM
1
+ // @tko/binding.core 🥊 4.0.0 ESM
2
+ "use strict";
2
3
  import {
3
4
  tagNameLower,
4
5
  arrayFilter,
@@ -7,18 +8,12 @@ import {
7
8
  arrayIndexOf,
8
9
  setOptionNodeSelectionState,
9
10
  triggerEvent,
10
- ensureSelectElementIsRenderedCorrectly,
11
11
  selectExtensions
12
12
  } from "@tko/utils";
13
- import {
14
- unwrap,
15
- dependencyDetection
16
- } from "@tko/observable";
17
- import {
18
- setDomNodeChildrenFromArrayMapping
19
- } from "@tko/bind";
20
- var captionPlaceholder = {};
21
- export var options = {
13
+ import { unwrap, dependencyDetection } from "@tko/observable";
14
+ import { setDomNodeChildrenFromArrayMapping } from "@tko/bind";
15
+ const captionPlaceholder = {};
16
+ export const options = {
22
17
  init: function(element) {
23
18
  if (tagNameLower(element) !== "select") {
24
19
  throw new Error("options binding applies only to SELECT elements");
@@ -26,7 +21,7 @@ export var options = {
26
21
  while (element.length > 0) {
27
22
  element.remove(0);
28
23
  }
29
- return { "controlsDescendantBindings": true };
24
+ return { controlsDescendantBindings: true };
30
25
  },
31
26
  update: function(element, valueAccessor, allBindings) {
32
27
  function selectedOptions() {
@@ -34,7 +29,7 @@ export var options = {
34
29
  return node.selected;
35
30
  });
36
31
  }
37
- var selectWasPreviouslyEmpty = element.length == 0, multiple = element.multiple, previousScrollTop = !selectWasPreviouslyEmpty && multiple ? element.scrollTop : null, unwrappedArray = unwrap(valueAccessor()), valueAllowUnset = allBindings.get("valueAllowUnset") && allBindings["has"]("value"), includeDestroyed = allBindings.get("optionsIncludeDestroyed"), arrayToDomNodeChildrenOptions = {}, captionValue, filteredArray, previousSelectedValues = [];
32
+ let selectWasPreviouslyEmpty = element.length == 0, multiple = element.multiple, previousScrollTop = !selectWasPreviouslyEmpty && multiple ? element.scrollTop : null, unwrappedArray = unwrap(valueAccessor()), valueAllowUnset = allBindings.get("valueAllowUnset") && allBindings["has"]("value"), includeDestroyed = allBindings.get("optionsIncludeDestroyed"), arrayToDomNodeChildrenOptions = {}, captionValue, filteredArray, previousSelectedValues = new Array();
38
33
  if (!valueAllowUnset) {
39
34
  if (multiple) {
40
35
  previousSelectedValues = arrayMap(selectedOptions(), selectExtensions.readValue);
@@ -58,7 +53,7 @@ export var options = {
58
53
  } else {
59
54
  }
60
55
  function applyToObject(object, predicate, defaultValue) {
61
- var predicateType = typeof predicate;
56
+ const predicateType = typeof predicate;
62
57
  if (predicateType === "function") {
63
58
  return predicate(object);
64
59
  } else if (predicateType == "string") {
@@ -67,20 +62,20 @@ export var options = {
67
62
  return defaultValue;
68
63
  }
69
64
  }
70
- var itemUpdate = false;
65
+ let itemUpdate = false;
71
66
  function optionForArrayItem(arrayEntry, index, oldOptions) {
72
67
  if (oldOptions.length) {
73
68
  previousSelectedValues = !valueAllowUnset && oldOptions[0].selected ? [selectExtensions.readValue(oldOptions[0])] : [];
74
69
  itemUpdate = true;
75
70
  }
76
- var option = element.ownerDocument.createElement("option");
71
+ const option = element.ownerDocument.createElement("option");
77
72
  if (arrayEntry === captionPlaceholder) {
78
73
  setTextContent(option, allBindings.get("optionsCaption"));
79
74
  selectExtensions.writeValue(option, void 0);
80
75
  } else {
81
- var optionValue = applyToObject(arrayEntry, allBindings.get("optionsValue"), arrayEntry);
76
+ const optionValue = applyToObject(arrayEntry, allBindings.get("optionsValue"), arrayEntry);
82
77
  selectExtensions.writeValue(option, unwrap(optionValue));
83
- var optionText = applyToObject(arrayEntry, allBindings.get("optionsText"), optionValue);
78
+ const optionText = applyToObject(arrayEntry, allBindings.get("optionsText"), optionValue);
84
79
  setTextContent(option, optionText);
85
80
  }
86
81
  return [option];
@@ -90,28 +85,47 @@ export var options = {
90
85
  };
91
86
  function setSelectionCallback(arrayEntry, newOptions) {
92
87
  if (itemUpdate && valueAllowUnset) {
93
- selectExtensions.writeValue(element, unwrap(allBindings.get("value")), true);
88
+ selectExtensions.writeValue(
89
+ element,
90
+ unwrap(allBindings.get("value")),
91
+ true
92
+ /* allowUnset */
93
+ );
94
94
  } else if (previousSelectedValues.length) {
95
- var isSelected = arrayIndexOf(previousSelectedValues, selectExtensions.readValue(newOptions[0])) >= 0;
95
+ const isSelected = arrayIndexOf(previousSelectedValues, selectExtensions.readValue(newOptions[0])) >= 0;
96
96
  setOptionNodeSelectionState(newOptions[0], isSelected);
97
97
  if (itemUpdate && !isSelected) {
98
98
  dependencyDetection.ignore(triggerEvent, null, [element, "change"]);
99
99
  }
100
100
  }
101
101
  }
102
- var callback = setSelectionCallback;
102
+ let callback = setSelectionCallback;
103
103
  if (allBindings["has"]("optionsAfterRender") && typeof allBindings.get("optionsAfterRender") === "function") {
104
104
  callback = function(arrayEntry, newOptions) {
105
105
  setSelectionCallback(arrayEntry, newOptions);
106
- dependencyDetection.ignore(allBindings.get("optionsAfterRender"), null, [newOptions[0], arrayEntry !== captionPlaceholder ? arrayEntry : void 0]);
106
+ dependencyDetection.ignore(allBindings.get("optionsAfterRender"), null, [
107
+ newOptions[0],
108
+ arrayEntry !== captionPlaceholder ? arrayEntry : void 0
109
+ ]);
107
110
  };
108
111
  }
109
- setDomNodeChildrenFromArrayMapping(element, filteredArray, optionForArrayItem, arrayToDomNodeChildrenOptions, callback);
112
+ setDomNodeChildrenFromArrayMapping(
113
+ element,
114
+ filteredArray,
115
+ optionForArrayItem,
116
+ arrayToDomNodeChildrenOptions,
117
+ callback
118
+ );
110
119
  dependencyDetection.ignore(function() {
111
120
  if (valueAllowUnset) {
112
- selectExtensions.writeValue(element, unwrap(allBindings.get("value")), true);
121
+ selectExtensions.writeValue(
122
+ element,
123
+ unwrap(allBindings.get("value")),
124
+ true
125
+ /* allowUnset */
126
+ );
113
127
  } else {
114
- var selectionChanged;
128
+ let selectionChanged;
115
129
  if (multiple) {
116
130
  selectionChanged = previousSelectedValues.length && selectedOptions().length < previousSelectedValues.length;
117
131
  } else {
@@ -122,7 +136,6 @@ export var options = {
122
136
  }
123
137
  }
124
138
  });
125
- ensureSelectElementIsRenderedCorrectly(element);
126
139
  if (previousScrollTop && Math.abs(previousScrollTop - element.scrollTop) > 20) {
127
140
  element.scrollTop = previousScrollTop;
128
141
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/options.ts"],
4
- "sourcesContent": ["\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"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n tagNameLower,\n arrayFilter,\n arrayMap,\n setTextContent,\n arrayIndexOf,\n setOptionNodeSelectionState,\n triggerEvent,\n selectExtensions\n} from '@tko/utils'\n\nimport { unwrap, dependencyDetection } from '@tko/observable'\nimport { setDomNodeChildrenFromArrayMapping } from '@tko/bind'\nimport type { AllBindings } from '@tko/bind'\nconst captionPlaceholder = {}\n\nexport const options = {\n init: function (element) {\n if (tagNameLower(element) !== 'select') {\n throw new Error('options binding applies only to SELECT elements')\n }\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: AllBindings) {\n function selectedOptions() {\n return arrayFilter(element.options, function (node) {\n return node.selected\n })\n }\n\n let 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 = new Array()\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 {\n unwrappedArray = [unwrappedArray]\n }\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 const predicateType = typeof predicate\n if (predicateType === 'function') // Given a function; run it against the data value\n {\n return predicate(object)\n } else if (predicateType == 'string') // Given a string; treat it as a property name on the data value\n {\n return object[predicate]\n } else // Given no optionsText arg; use the data value itself\n {\n return defaultValue\n }\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 let itemUpdate = false\n function optionForArrayItem(arrayEntry, index, oldOptions) {\n if (oldOptions.length) {\n previousSelectedValues =\n !valueAllowUnset && oldOptions[0].selected ? [selectExtensions.readValue(oldOptions[0])] : []\n itemUpdate = true\n }\n const 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 const optionValue = applyToObject(arrayEntry, allBindings.get('optionsValue'), arrayEntry)\n selectExtensions.writeValue(option, unwrap(optionValue))\n\n // Apply some text to the option element\n const 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'] = 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 const 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 let 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, [\n newOptions[0],\n arrayEntry !== captionPlaceholder ? arrayEntry : undefined\n ])\n }\n }\n\n setDomNodeChildrenFromArrayMapping(\n element,\n filteredArray,\n optionForArrayItem,\n arrayToDomNodeChildrenOptions,\n callback\n )\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 let 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 =\n 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 if (previousScrollTop && Math.abs(previousScrollTop - element.scrollTop) > 20) {\n element.scrollTop = previousScrollTop\n }\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,5 @@
1
- // @tko/binding.core 🥊 4.0.0-beta1.3 ESM
1
+ // @tko/binding.core 🥊 4.0.0 ESM
2
+ "use strict";
2
3
  import {
3
4
  arrayForEach,
4
5
  setOptionNodeSelectionState,
@@ -7,14 +8,12 @@ import {
7
8
  tagNameLower,
8
9
  selectExtensions
9
10
  } from "@tko/utils";
10
- import {
11
- unwrap
12
- } from "@tko/observable";
13
- export var selectedOptions = {
11
+ import { unwrap } from "@tko/observable";
12
+ export const selectedOptions = {
14
13
  after: ["options", "foreach"],
15
- init: function(element, valueAccessor, allBindings) {
14
+ init: function(element, valueAccessor, _allBindings) {
16
15
  registerEventHandler(element, "change", function() {
17
- var value = valueAccessor(), valueToWrite = [];
16
+ const value = valueAccessor(), valueToWrite = new Array();
18
17
  arrayForEach(element.getElementsByTagName("option"), function(node) {
19
18
  if (node.selected) {
20
19
  valueToWrite.push(selectExtensions.readValue(node));
@@ -27,10 +26,10 @@ export var selectedOptions = {
27
26
  if (tagNameLower(element) != "select") {
28
27
  throw new Error("values binding applies only to SELECT elements");
29
28
  }
30
- var newValue = unwrap(valueAccessor()), previousScrollTop = element.scrollTop;
29
+ const newValue = unwrap(valueAccessor()), previousScrollTop = element.scrollTop;
31
30
  if (newValue && typeof newValue.length === "number") {
32
31
  arrayForEach(element.getElementsByTagName("option"), function(node) {
33
- var isSelected = arrayIndexOf(newValue, selectExtensions.readValue(node)) >= 0;
32
+ const isSelected = arrayIndexOf(newValue, selectExtensions.readValue(node)) >= 0;
34
33
  if (node.selected != isSelected) {
35
34
  setOptionNodeSelectionState(node, isSelected);
36
35
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/selectedOptions.ts"],
4
- "sourcesContent": ["\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"],
5
- "mappings": ";AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAIO,WAAI,kBAAkB;AAAA,EAC3B,OAAO,CAAC,WAAW,SAAS;AAAA,EAE5B,MAAM,SAAU,SAAS,eAAe,aAAa;AACnD,yBAAqB,SAAS,UAAU,WAAY;AAClD,UAAI,QAAQ,cAAc,GAAG,eAAe,CAAC;AAC7C,mBAAa,QAAQ,qBAAqB,QAAQ,GAAG,SAAU,MAAM;AACnE,YAAI,KAAK,UAAU;AAAE,uBAAa,KAAK,iBAAiB,UAAU,IAAI,CAAC;AAAA,QAAE;AAAA,MAC3E,CAAC;AACD,oBAAc,YAAY;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EAEA,QAAQ,SAAU,SAAS,eAAe;AACxC,QAAI,aAAa,OAAO,KAAK,UAAU;AAAE,YAAM,IAAI,MAAM,gDAAgD;AAAA,IAAE;AAE3G,QAAI,WAAW,OAAO,cAAc,CAAC,GACnC,oBAAoB,QAAQ;AAE9B,QAAI,YAAY,OAAO,SAAS,WAAW,UAAU;AACnD,mBAAa,QAAQ,qBAAqB,QAAQ,GAAG,SAAU,MAAM;AACnE,YAAI,aAAa,aAAa,UAAU,iBAAiB,UAAU,IAAI,CAAC,KAAK;AAC7E,YAAI,KAAK,YAAY,YAAY;AAC/B,sCAA4B,MAAM,UAAU;AAAA,QAC9C;AAAA,MACF,CAAC;AAAA,IACH;AAEA,YAAQ,YAAY;AAAA,EACtB;AACF;",
4
+ "sourcesContent": ["import {\n arrayForEach,\n setOptionNodeSelectionState,\n arrayIndexOf,\n registerEventHandler,\n tagNameLower,\n selectExtensions\n} from '@tko/utils'\n\nimport { unwrap } from '@tko/observable'\n\nimport type { AllBindings } from '@tko/bind'\n\nexport const selectedOptions = {\n after: ['options', 'foreach'],\n\n init: function (element, valueAccessor, _allBindings: AllBindings) {\n registerEventHandler(element, 'change', function () {\n const value = valueAccessor(),\n valueToWrite = new Array()\n arrayForEach(element.getElementsByTagName('option'), function (node) {\n if (node.selected) {\n valueToWrite.push(selectExtensions.readValue(node))\n }\n })\n valueAccessor(valueToWrite)\n })\n },\n\n update: function (element, valueAccessor) {\n if (tagNameLower(element) != 'select') {\n throw new Error('values binding applies only to SELECT elements')\n }\n\n const newValue = unwrap(valueAccessor()),\n previousScrollTop = element.scrollTop\n\n if (newValue && typeof newValue.length === 'number') {\n arrayForEach(element.getElementsByTagName('option'), function (node) {\n const isSelected = arrayIndexOf(newValue, selectExtensions.readValue(node)) >= 0\n if (node.selected != isSelected) {\n // 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"],
5
+ "mappings": ";;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,cAAc;AAIhB,aAAM,kBAAkB;AAAA,EAC7B,OAAO,CAAC,WAAW,SAAS;AAAA,EAE5B,MAAM,SAAU,SAAS,eAAe,cAA2B;AACjE,yBAAqB,SAAS,UAAU,WAAY;AAClD,YAAM,QAAQ,cAAc,GAC1B,eAAe,IAAI,MAAM;AAC3B,mBAAa,QAAQ,qBAAqB,QAAQ,GAAG,SAAU,MAAM;AACnE,YAAI,KAAK,UAAU;AACjB,uBAAa,KAAK,iBAAiB,UAAU,IAAI,CAAC;AAAA,QACpD;AAAA,MACF,CAAC;AACD,oBAAc,YAAY;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EAEA,QAAQ,SAAU,SAAS,eAAe;AACxC,QAAI,aAAa,OAAO,KAAK,UAAU;AACrC,YAAM,IAAI,MAAM,gDAAgD;AAAA,IAClE;AAEA,UAAM,WAAW,OAAO,cAAc,CAAC,GACrC,oBAAoB,QAAQ;AAE9B,QAAI,YAAY,OAAO,SAAS,WAAW,UAAU;AACnD,mBAAa,QAAQ,qBAAqB,QAAQ,GAAG,SAAU,MAAM;AACnE,cAAM,aAAa,aAAa,UAAU,iBAAiB,UAAU,IAAI,CAAC,KAAK;AAC/E,YAAI,KAAK,YAAY,YAAY;AAE/B,sCAA4B,MAAM,UAAU;AAAA,QAC9C;AAAA,MACF,CAAC;AAAA,IACH;AAEA,YAAQ,YAAY;AAAA,EACtB;AACF;",
6
6
  "names": []
7
7
  }
package/dist/style.js CHANGED
@@ -1,22 +1,17 @@
1
- // @tko/binding.core 🥊 4.0.0-beta1.3 ESM
2
- import {
3
- objectForEach,
4
- options
5
- } from "@tko/utils";
6
- import {
7
- unwrap
8
- } from "@tko/observable";
9
- const { jQueryInstance } = options;
10
- export var style = {
1
+ // @tko/binding.core 🥊 4.0.0 ESM
2
+ "use strict";
3
+ import { objectForEach, options } from "@tko/utils";
4
+ import { unwrap } from "@tko/observable";
5
+ export const style = {
11
6
  update: function(element, valueAccessor) {
12
- var value = unwrap(valueAccessor() || {});
7
+ const value = unwrap(valueAccessor() || {});
13
8
  objectForEach(value, function(styleName, styleValue) {
14
9
  styleValue = unwrap(styleValue);
15
10
  if (styleValue === null || styleValue === void 0 || styleValue === false) {
16
11
  styleValue = "";
17
12
  }
18
- if (jQueryInstance) {
19
- jQueryInstance(element).css(styleName, styleValue);
13
+ if (options.jQuery) {
14
+ jQuery(element).css(styleName, styleValue);
20
15
  } else {
21
16
  styleName = styleName.replace(/-(\w)/g, (all, letter) => letter.toUpperCase());
22
17
  const previousStyle = element.style[styleName];
package/dist/style.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/style.ts"],
4
- "sourcesContent": ["\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"],
5
- "mappings": ";AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAIA,MAAM,EAAC,mBAAkB;AAElB,WAAI,QAAQ;AAAA,EACjB,QAAQ,SAAU,SAAS,eAAe;AACxC,QAAI,QAAQ,OAAO,cAAc,KAAK,CAAC,CAAC;AACxC,kBAAc,OAAO,SAAU,WAAW,YAAY;AACpD,mBAAa,OAAO,UAAU;AAE9B,UAAI,eAAe,QAAQ,eAAe,UAAa,eAAe,OAAO;AAE3E,qBAAa;AAAA,MACf;AAEA,UAAI,gBAAgB;AAClB,uBAAe,OAAO,EAAE,IAAI,WAAW,UAAU;AAAA,MACnD,OAAO;AACL,oBAAY,UAAU,QAAQ,UAAU,CAAC,KAAK,WAAW,OAAO,YAAY,CAAC;AAC7E,cAAM,gBAAgB,QAAQ,MAAM;AACpC,gBAAQ,MAAM,aAAa;AAC3B,YAAI,eAAe,iBAAiB,QAAQ,MAAM,eAAe,iBAAiB,CAAC,MAAM,UAAU,GAAG;AACpG,kBAAQ,MAAM,aAAa,aAAa;AAAA,QAC1C;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
4
+ "sourcesContent": ["import { objectForEach, options } from '@tko/utils'\n\nimport { unwrap } from '@tko/observable'\n\nexport const style = {\n update: function (element, valueAccessor) {\n const 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 (options.jQuery) {\n jQuery(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"],
5
+ "mappings": ";;AAAA,SAAS,eAAe,eAAe;AAEvC,SAAS,cAAc;AAEhB,aAAM,QAAQ;AAAA,EACnB,QAAQ,SAAU,SAAS,eAAe;AACxC,UAAM,QAAQ,OAAO,cAAc,KAAK,CAAC,CAAC;AAC1C,kBAAc,OAAO,SAAU,WAAW,YAAY;AACpD,mBAAa,OAAO,UAAU;AAE9B,UAAI,eAAe,QAAQ,eAAe,UAAa,eAAe,OAAO;AAE3E,qBAAa;AAAA,MACf;AAEA,UAAI,QAAQ,QAAQ;AAClB,eAAO,OAAO,EAAE,IAAI,WAAW,UAAU;AAAA,MAC3C,OAAO;AACL,oBAAY,UAAU,QAAQ,UAAU,CAAC,KAAK,WAAW,OAAO,YAAY,CAAC;AAC7E,cAAM,gBAAgB,QAAQ,MAAM,SAAS;AAC7C,gBAAQ,MAAM,SAAS,IAAI;AAC3B,YAAI,eAAe,iBAAiB,QAAQ,MAAM,SAAS,MAAM,iBAAiB,CAAC,MAAM,UAAU,GAAG;AACpG,kBAAQ,MAAM,SAAS,IAAI,aAAa;AAAA,QAC1C;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
6
6
  "names": []
7
7
  }
package/dist/submit.js CHANGED
@@ -1,15 +1,14 @@
1
- // @tko/binding.core 🥊 4.0.0-beta1.3 ESM
2
- import {
3
- registerEventHandler
4
- } from "@tko/utils";
5
- export var submit = {
6
- init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
1
+ // @tko/binding.core 🥊 4.0.0 ESM
2
+ "use strict";
3
+ import { registerEventHandler } from "@tko/utils";
4
+ export const submit = {
5
+ init: function(element, valueAccessor, _allBindings, _viewModel, bindingContext) {
7
6
  if (typeof valueAccessor() !== "function") {
8
7
  throw new Error("The value for a submit binding must be a function");
9
8
  }
10
9
  registerEventHandler(element, "submit", function(event) {
11
- var handlerReturnValue;
12
- var value = valueAccessor();
10
+ let handlerReturnValue;
11
+ const value = valueAccessor();
13
12
  try {
14
13
  handlerReturnValue = value.call(bindingContext["$data"], element);
15
14
  } finally {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/submit.ts"],
4
- "sourcesContent": ["\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"],
5
- "mappings": ";AACA;AAAA;AAAA;AAIO,WAAI,SAAS;AAAA,EAClB,MAAM,SAAU,SAAS,eAAe,aAAa,WAAW,gBAAgB;AAC9E,QAAI,OAAO,cAAc,MAAM,YAAY;AAAE,YAAM,IAAI,MAAM,mDAAmD;AAAA,IAAE;AAClH,yBAAqB,SAAS,UAAU,SAAU,OAAO;AACvD,UAAI;AACJ,UAAI,QAAQ,cAAc;AAC1B,UAAI;AAAE,6BAAqB,MAAM,KAAK,eAAe,UAAU,OAAO;AAAA,MAAE,UAAE;AACxE,YAAI,uBAAuB,MAAM;AAC/B,cAAI,MAAM,gBAAgB;AAAE,kBAAM,eAAe;AAAA,UAAE,OAAO;AAAE,kBAAM,cAAc;AAAA,UAAM;AAAA,QACxF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
4
+ "sourcesContent": ["import { registerEventHandler } from '@tko/utils'\n\nimport type { BindingContext } from '@tko/bind'\n\nexport const submit = {\n init: function (element, valueAccessor, _allBindings, _viewModel, bindingContext: BindingContext) {\n if (typeof valueAccessor() !== 'function') {\n throw new Error('The value for a submit binding must be a function')\n }\n registerEventHandler(element, 'submit', function (event) {\n let handlerReturnValue\n const value = valueAccessor()\n try {\n handlerReturnValue = value.call(bindingContext['$data'], element)\n } finally {\n if (handlerReturnValue !== true) {\n // Normally we want to prevent default action. Developer can override this be explicitly returning true.\n if (event.preventDefault) {\n event.preventDefault()\n } else {\n event.returnValue = false\n }\n }\n }\n })\n }\n}\n"],
5
+ "mappings": ";;AAAA,SAAS,4BAA4B;AAI9B,aAAM,SAAS;AAAA,EACpB,MAAM,SAAU,SAAS,eAAe,cAAc,YAAY,gBAAgC;AAChG,QAAI,OAAO,cAAc,MAAM,YAAY;AACzC,YAAM,IAAI,MAAM,mDAAmD;AAAA,IACrE;AACA,yBAAqB,SAAS,UAAU,SAAU,OAAO;AACvD,UAAI;AACJ,YAAM,QAAQ,cAAc;AAC5B,UAAI;AACF,6BAAqB,MAAM,KAAK,eAAe,OAAO,GAAG,OAAO;AAAA,MAClE,UAAE;AACA,YAAI,uBAAuB,MAAM;AAE/B,cAAI,MAAM,gBAAgB;AACxB,kBAAM,eAAe;AAAA,UACvB,OAAO;AACL,kBAAM,cAAc;AAAA,UACtB;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
6
6
  "names": []
7
7
  }
package/dist/text.js CHANGED
@@ -1,8 +1,7 @@
1
- // @tko/binding.core 🥊 4.0.0-beta1.3 ESM
2
- import {
3
- setTextContent
4
- } from "@tko/utils";
5
- export var text = {
1
+ // @tko/binding.core 🥊 4.0.0 ESM
2
+ "use strict";
3
+ import { setTextContent } from "@tko/utils";
4
+ export const text = {
6
5
  init: function() {
7
6
  return { controlsDescendantBindings: true };
8
7
  },
package/dist/text.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/text.ts"],
4
- "sourcesContent": ["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"],
5
- "mappings": ";AAAA;AAAA;AAAA;AAIO,WAAI,OAAO;AAAA,EAChB,MAAM,WAAY;AAGhB,WAAO,EAAE,4BAA4B,KAAK;AAAA,EAC5C;AAAA,EACA,QAAQ,SAAU,SAAS,eAAe;AACxC,mBAAe,SAAS,cAAc,CAAC;AAAA,EACzC;AAAA,EACA,sBAAsB;AACxB;",
4
+ "sourcesContent": ["import { setTextContent } from '@tko/utils'\n\nexport const 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"],
5
+ "mappings": ";;AAAA,SAAS,sBAAsB;AAExB,aAAM,OAAO;AAAA,EAClB,MAAM,WAAY;AAGhB,WAAO,EAAE,4BAA4B,KAAK;AAAA,EAC5C;AAAA,EACA,QAAQ,SAAU,SAAS,eAAe;AACxC,mBAAe,SAAS,cAAc,CAAC;AAAA,EACzC;AAAA,EACA,sBAAsB;AACxB;",
6
6
  "names": []
7
7
  }