grainjs 1.0.2 → 1.1.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 (138) hide show
  1. package/README.md +23 -71
  2. package/dist/cjs/index.js +5 -1
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/lib/PriorityQueue.d.ts +1 -1
  5. package/dist/cjs/lib/_computed_queue.js +3 -3
  6. package/dist/cjs/lib/_computed_queue.js.map +1 -1
  7. package/dist/cjs/lib/binding.d.ts +11 -4
  8. package/dist/cjs/lib/binding.js +5 -5
  9. package/dist/cjs/lib/binding.js.map +1 -1
  10. package/dist/cjs/lib/computed.d.ts +49 -28
  11. package/dist/cjs/lib/computed.js +38 -52
  12. package/dist/cjs/lib/computed.js.map +1 -1
  13. package/dist/cjs/lib/dispose.d.ts +109 -96
  14. package/dist/cjs/lib/dispose.js +106 -80
  15. package/dist/cjs/lib/dispose.js.map +1 -1
  16. package/dist/cjs/lib/dom.d.ts +38 -18
  17. package/dist/cjs/lib/dom.js +44 -20
  18. package/dist/cjs/lib/dom.js.map +1 -1
  19. package/dist/cjs/lib/domComponent.d.ts +56 -48
  20. package/dist/cjs/lib/domComponent.js +66 -1
  21. package/dist/cjs/lib/domComponent.js.map +1 -1
  22. package/dist/cjs/lib/domComputed.d.ts +31 -21
  23. package/dist/cjs/lib/domComputed.js +14 -11
  24. package/dist/cjs/lib/domComputed.js.map +1 -1
  25. package/dist/cjs/lib/domDispose.d.ts +27 -12
  26. package/dist/cjs/lib/domDispose.js +26 -11
  27. package/dist/cjs/lib/domDispose.js.map +1 -1
  28. package/dist/cjs/lib/domForEach.d.ts +4 -3
  29. package/dist/cjs/lib/domForEach.js +10 -9
  30. package/dist/cjs/lib/domForEach.js.map +1 -1
  31. package/dist/cjs/lib/domImpl.d.ts +33 -10
  32. package/dist/cjs/lib/domImpl.js +28 -9
  33. package/dist/cjs/lib/domImpl.js.map +1 -1
  34. package/dist/cjs/lib/domMethods.d.ts +93 -47
  35. package/dist/cjs/lib/domMethods.js +88 -46
  36. package/dist/cjs/lib/domMethods.js.map +1 -1
  37. package/dist/cjs/lib/domevent.d.ts +87 -62
  38. package/dist/cjs/lib/domevent.js +84 -59
  39. package/dist/cjs/lib/domevent.js.map +1 -1
  40. package/dist/cjs/lib/emit.d.ts +62 -32
  41. package/dist/cjs/lib/emit.js +67 -53
  42. package/dist/cjs/lib/emit.js.map +1 -1
  43. package/dist/cjs/lib/kowrap.d.ts +6 -3
  44. package/dist/cjs/lib/kowrap.js +6 -3
  45. package/dist/cjs/lib/kowrap.js.map +1 -1
  46. package/dist/cjs/lib/obsArray.d.ts +91 -53
  47. package/dist/cjs/lib/obsArray.js +87 -55
  48. package/dist/cjs/lib/obsArray.js.map +1 -1
  49. package/dist/cjs/lib/observable.d.ts +25 -15
  50. package/dist/cjs/lib/observable.js +29 -18
  51. package/dist/cjs/lib/observable.js.map +1 -1
  52. package/dist/cjs/lib/pureComputed.d.ts +12 -15
  53. package/dist/cjs/lib/pureComputed.js +15 -18
  54. package/dist/cjs/lib/pureComputed.js.map +1 -1
  55. package/dist/cjs/lib/styled.d.ts +78 -61
  56. package/dist/cjs/lib/styled.js +26 -79
  57. package/dist/cjs/lib/styled.js.map +1 -1
  58. package/dist/cjs/lib/subscribe.d.ts +41 -37
  59. package/dist/cjs/lib/subscribe.js +31 -40
  60. package/dist/cjs/lib/subscribe.js.map +1 -1
  61. package/dist/cjs/lib/util.js +1 -0
  62. package/dist/cjs/lib/util.js.map +1 -1
  63. package/dist/cjs/lib/widgets/input.d.ts +3 -1
  64. package/dist/cjs/lib/widgets/input.js +6 -4
  65. package/dist/cjs/lib/widgets/input.js.map +1 -1
  66. package/dist/cjs/lib/widgets/select.d.ts +4 -2
  67. package/dist/cjs/lib/widgets/select.js +7 -5
  68. package/dist/cjs/lib/widgets/select.js.map +1 -1
  69. package/dist/esm/lib/_computed_queue.js +3 -3
  70. package/dist/esm/lib/_computed_queue.js.map +1 -1
  71. package/dist/esm/lib/binding.js +2 -2
  72. package/dist/esm/lib/binding.js.map +1 -1
  73. package/dist/esm/lib/computed.js +36 -50
  74. package/dist/esm/lib/computed.js.map +1 -1
  75. package/dist/esm/lib/dispose.js +104 -78
  76. package/dist/esm/lib/dispose.js.map +1 -1
  77. package/dist/esm/lib/dom.js +38 -18
  78. package/dist/esm/lib/dom.js.map +1 -1
  79. package/dist/esm/lib/domComponent.js +65 -0
  80. package/dist/esm/lib/domComponent.js.map +1 -1
  81. package/dist/esm/lib/domComputed.js +10 -7
  82. package/dist/esm/lib/domComputed.js.map +1 -1
  83. package/dist/esm/lib/domDispose.js +26 -11
  84. package/dist/esm/lib/domDispose.js.map +1 -1
  85. package/dist/esm/lib/domForEach.js +3 -2
  86. package/dist/esm/lib/domForEach.js.map +1 -1
  87. package/dist/esm/lib/domImpl.js +26 -7
  88. package/dist/esm/lib/domImpl.js.map +1 -1
  89. package/dist/esm/lib/domMethods.js +77 -35
  90. package/dist/esm/lib/domMethods.js.map +1 -1
  91. package/dist/esm/lib/domevent.js +84 -59
  92. package/dist/esm/lib/domevent.js.map +1 -1
  93. package/dist/esm/lib/emit.js +67 -53
  94. package/dist/esm/lib/emit.js.map +1 -1
  95. package/dist/esm/lib/kowrap.js +5 -2
  96. package/dist/esm/lib/kowrap.js.map +1 -1
  97. package/dist/esm/lib/obsArray.js +82 -50
  98. package/dist/esm/lib/obsArray.js.map +1 -1
  99. package/dist/esm/lib/observable.js +26 -15
  100. package/dist/esm/lib/observable.js.map +1 -1
  101. package/dist/esm/lib/pureComputed.js +15 -18
  102. package/dist/esm/lib/pureComputed.js.map +1 -1
  103. package/dist/esm/lib/styled.js +24 -77
  104. package/dist/esm/lib/styled.js.map +1 -1
  105. package/dist/esm/lib/subscribe.js +27 -36
  106. package/dist/esm/lib/subscribe.js.map +1 -1
  107. package/dist/esm/lib/util.js +1 -0
  108. package/dist/esm/lib/util.js.map +1 -1
  109. package/dist/esm/lib/widgets/input.js +3 -1
  110. package/dist/esm/lib/widgets/input.js.map +1 -1
  111. package/dist/esm/lib/widgets/select.js +3 -1
  112. package/dist/esm/lib/widgets/select.js.map +1 -1
  113. package/dist/grain-full.debug.js +2146 -3062
  114. package/dist/grain-full.debug.js.map +7 -0
  115. package/dist/grain-full.min.js +6 -2
  116. package/dist/grain-full.min.js.map +7 -1
  117. package/lib/binding.ts +9 -2
  118. package/lib/computed.ts +56 -56
  119. package/lib/dispose.ts +110 -85
  120. package/lib/dom.ts +39 -20
  121. package/lib/domComponent.ts +66 -57
  122. package/lib/domComputed.ts +29 -19
  123. package/lib/domDispose.ts +28 -11
  124. package/lib/domForEach.ts +7 -3
  125. package/lib/domImpl.ts +30 -7
  126. package/lib/domMethods.ts +101 -46
  127. package/lib/domevent.ts +85 -60
  128. package/lib/emit.ts +64 -50
  129. package/lib/kowrap.ts +5 -2
  130. package/lib/obsArray.ts +89 -54
  131. package/lib/observable.ts +26 -15
  132. package/lib/pureComputed.ts +16 -22
  133. package/lib/styled.ts +85 -71
  134. package/lib/subscribe.ts +41 -45
  135. package/lib/util.ts +1 -0
  136. package/lib/widgets/input.ts +3 -1
  137. package/lib/widgets/select.ts +3 -1
  138. package/package.json +38 -27
@@ -1,44 +1,4 @@
1
1
  "use strict";
2
- /**
3
- * domevent provides a way to listen to DOM events, similar to JQuery's `on()` function. Its
4
- * methods are also exposed via the dom.js module, as `dom.on()`, etc.
5
- *
6
- * It is typically used as an argument to the dom() function:
7
- *
8
- * dom('div', dom.on('click', (event, elem) => { ... }));
9
- *
10
- * When the div is disposed, the listener is automatically removed.
11
- *
12
- * The underlying interface to listen to an event is this:
13
- *
14
- * let listener = dom.onElem(elem, 'click', (event, elem) => { ... });
15
- *
16
- * The callback is called with the event and the element to which it was attached. Unlike in
17
- * JQuery, the callback's return value is ignored. Use event.stopPropagation() and
18
- * event.preventDefault() explicitly if needed.
19
- *
20
- * To stop listening:
21
- *
22
- * listener.dispose();
23
- *
24
- * Disposing the listener returned by .onElem() is the only way to stop listening to an event. You
25
- * can use autoDispose to stop listening automatically when subscribing in a Disposable object:
26
- *
27
- * this.autoDispose(domevent.onElem(document, 'mouseup', callback));
28
- *
29
- * To listen to descendants of an element matching the given selector (what JQuery calls
30
- * "delegated events", see http://api.jquery.com/on/):
31
- *
32
- * dom('div', dom.onMatch('.selector', 'click', (event, elem) => { ... }));
33
- * or
34
- * let lis = domevent.onMatchElem(elem, '.selector', 'click', (event, el) => { ... });
35
- *
36
- * In this usage, the element passed to the callback will be a DOM element matching the given
37
- * selector. If there are multiple matches, the callback is only called for the innermost one.
38
- *
39
- * If you need to remove the callback on first call, here's a useful pattern:
40
- * let lis = domevent.onElem(elem, 'mouseup', e => { lis.dispose(); other_work(); });
41
- */
42
2
  Object.defineProperty(exports, "__esModule", { value: true });
43
3
  exports.onKeyDown = exports.onKeyPress = exports.onKeyElem = exports.onMatch = exports.onMatchElem = exports.on = exports.onElem = void 0;
44
4
  function _findMatch(inner, outer, selector) {
@@ -76,43 +36,103 @@ class DomEventMatchListener extends DomEventListener {
76
36
  }
77
37
  }
78
38
  /**
79
- * Listen to a DOM event. The `on()` variant takes no `elem` argument, and may be used as an
80
- * argument to dom() function.
81
- * @param {DOMElement} elem: DOM Element to listen to.
82
- * @param {String} eventType: Event type to listen for (e.g. 'click').
83
- * @param {Function} callback: Callback to call as `callback(event, elem)`, where elem is `elem`.
84
- * @param [Boolean] options.useCapture: Add the listener in the capture phase. This should very
39
+ * Listen to a DOM event, returning the listener object.
40
+ * ```ts
41
+ * const listener = dom.onElem(elem, 'click', (event, elem) => { ... });
42
+ * ```
43
+ *
44
+ * To stop listening:
45
+ * ```ts
46
+ * listener.dispose();
47
+ * ```
48
+ *
49
+ * Disposing the listener returned by `onElem()` is the only way to stop listening to an event. You
50
+ * can use `autoDispose` to stop listening automatically when subscribing in a `Disposable` object:
51
+ * ```ts
52
+ * this.autoDispose(domevent.onElem(document, 'mouseup', callback));
53
+ * ```
54
+ *
55
+ * If you need "once" semantics, i.e. to remove the callback on first call, here's a useful pattern:
56
+ * ```ts
57
+ * const lis = domevent.onElem(elem, 'mouseup', e => { lis.dispose(); other_work(); });
58
+ * ```
59
+ *
60
+ * @param elem - DOM Element to listen to.
61
+ * @param eventType - Event type to listen for (e.g. `'click'`).
62
+ * @param callback - Callback to call as `callback(event, elem)`, where elem is `elem`.
63
+ * @param options - `useCapture: boolean`: Add the listener in the capture phase. This should very
85
64
  * rarely be useful (e.g. JQuery doesn't even offer it as an option).
86
- * @returns {Object} Listener object whose .dispose() method will remove the event listener.
65
+ * @returns Listener object whose `.dispose()` method will remove the event listener.
87
66
  */
88
67
  function onElem(elem, eventType, callback, { useCapture = false } = {}) {
89
68
  return new DomEventListener(elem, eventType, callback, useCapture);
90
69
  }
91
70
  exports.onElem = onElem;
71
+ /**
72
+ * Listen to a DOM event. It is typically used as an argument to the `dom()` function:
73
+ * ```ts
74
+ * dom('div', dom.on('click', (event, elem) => { ... }));
75
+ * ```
76
+ *
77
+ * When the div is disposed, the listener is automatically removed.
78
+ *
79
+ * The callback is called with the event and the element to which it was attached. Unlike in, say,
80
+ * JQuery, the callback's return value is ignored. Use `event.stopPropagation()` and
81
+ * `event.preventDefault()` explicitly if needed.
82
+ *
83
+ * To listen to descendants of an element matching the given selector (what JQuery calls
84
+ * "delegated events", see http://api.jquery.com/on/), see [`onMatch`](#onMatch).
85
+ *
86
+ * @param eventType - Event type to listen for (e.g. `'click'`).
87
+ * @param callback - Callback to call as `callback(event, elem)`, where `elem` is the element this
88
+ * listener is attached to.
89
+ * @param options - `useCapture?: boolean`: Add the listener in the capture phase.
90
+ */
92
91
  function on(eventType, callback, { useCapture = false } = {}) {
93
92
  // tslint:disable-next-line:no-unused-expression
94
93
  return (elem) => { new DomEventListener(elem, eventType, callback, useCapture); };
95
94
  }
96
95
  exports.on = on;
97
96
  /**
98
- * Listen to a DOM event on descendants of the given elem matching the given selector. The
99
- * `onMatch()` variant takes no `elem` argument, and may be used as an argument to dom().
100
- * @param {DOMElement} elem: DOM Element to whose descendants to listen.
101
- * @param {String} selector: CSS selector string to filter elements that trigger this event.
97
+ * Listen to a DOM event on descendants of the given elem matching the given selector.
98
+ *
99
+ * ```ts
100
+ * const let lis = domevent.onMatchElem(elem, '.selector', 'click', (event, el) => { ... });
101
+ * ```
102
+ *
103
+ * @param elem - DOM Element to whose descendants to listen.
104
+ * @param selector - CSS selector string to filter elements that trigger this event.
102
105
  * JQuery calls it "delegated events" (http://api.jquery.com/on/). The callback will only be
103
106
  * called when the event occurs for an element matching the given selector. If there are
104
107
  * multiple elements matching the selector, the callback is only called for the innermost one.
105
- * @param {String} eventType: Event type to listen for (e.g. 'click').
106
- * @param {Function} callback: Callback to call as `callback(event, elem)`, where elem is a
108
+ * @param eventType - Event type to listen for (e.g. 'click').
109
+ * @param callback - Callback to call as `callback(event, elem)`, where elem is a
107
110
  * descendent of `elem` which matches `selector`.
108
- * @param [Boolean] options.useCapture: Add the listener in the capture phase. This should very
109
- * rarely be useful (e.g. JQuery doesn't even offer it as an option).
110
- * @returns {Object} Listener object whose .dispose() method will remove the event listener.
111
+ * @param options - `useCapture?: boolean`: Add the listener in the capture phase.
112
+ * @returns Listener object whose `.dispose()` method will remove the event listener.
111
113
  */
112
114
  function onMatchElem(elem, selector, eventType, callback, { useCapture = false } = {}) {
113
115
  return new DomEventMatchListener(elem, eventType, callback, useCapture, selector);
114
116
  }
115
117
  exports.onMatchElem = onMatchElem;
118
+ /**
119
+ * Listen to a DOM event on descendants of the given element matching the given selector.
120
+ *
121
+ * This is similar to JQuery's [delegated events](https://api.jquery.com/on/#direct-and-delegated-events)
122
+ *
123
+ * ```ts
124
+ * dom('div', dom.onMatch('.selector', 'click', (event, elem) => { ... }));
125
+ * ```
126
+ *
127
+ * In this usage, the element passed to the callback will be a DOM element matching the given
128
+ * selector. If there are multiple matches, the callback is only called for the innermost one.
129
+ *
130
+ * @param selector - CSS selector string to filter elements that trigger this event.
131
+ * @param eventType - Event type to listen for (e.g. `'click'`).
132
+ * @param callback - Callback to call as `callback(event, elem)`, where `elem` is an element
133
+ * matching `selector`.
134
+ * @param options - `useCapture?: boolean`: Add the listener in the capture phase.
135
+ */
116
136
  function onMatch(selector, eventType, callback, { useCapture = false } = {}) {
117
137
  // tslint:disable-next-line:no-unused-expression
118
138
  return (elem) => { new DomEventMatchListener(elem, eventType, callback, useCapture, selector); };
@@ -122,8 +142,6 @@ exports.onMatch = onMatch;
122
142
  * Listen to key events (typically 'keydown' or 'keypress'), with specified per-key callbacks.
123
143
  * Key names are listed at https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values
124
144
  *
125
- * Methods onKeyPress() and onKeyDown() are intended to be used as arguments to dom().
126
- *
127
145
  * By default, handled events are stopped from bubbling with stopPropagation() and
128
146
  * preventDefault(). If, however, you register a key with a "$" suffix (i.e. "Enter$" instead of
129
147
  * "Enter"), then the event is allowed to bubble normally.
@@ -132,7 +150,7 @@ exports.onMatch = onMatch;
132
150
  * to allow this element to receive keyboard events.
133
151
  *
134
152
  * For example:
135
- *
153
+ * ```
136
154
  * dom('input', ...
137
155
  * dom.onKeyDown({
138
156
  * Enter: (e, elem) => console.log("Enter pressed"),
@@ -140,6 +158,7 @@ exports.onMatch = onMatch;
140
158
  * Delete$: (e, elem) => console.log("Delete pressed, will bubble"),
141
159
  * })
142
160
  * )
161
+ * ```
143
162
  */
144
163
  function onKeyElem(elem, evType, keyHandlers) {
145
164
  if (!(elem.tabIndex >= 0)) { // If tabIndex property is undefined or -1,
@@ -158,10 +177,16 @@ function onKeyElem(elem, evType, keyHandlers) {
158
177
  });
159
178
  }
160
179
  exports.onKeyElem = onKeyElem;
180
+ /**
181
+ * Add listeners to `"keypress"` events. See [`onKeyElem`](#onKeyElem) for details.
182
+ */
161
183
  function onKeyPress(keyHandlers) {
162
184
  return (elem) => { onKeyElem(elem, 'keypress', keyHandlers); };
163
185
  }
164
186
  exports.onKeyPress = onKeyPress;
187
+ /**
188
+ * Add listeners to `"keydown"` events. See [`onKeyElem`](#onKeyElem) for details.
189
+ */
165
190
  function onKeyDown(keyHandlers) {
166
191
  return (elem) => { onKeyElem(elem, 'keydown', keyHandlers); };
167
192
  }
@@ -1 +1 @@
1
- {"version":3,"file":"domevent.js","sourceRoot":"","sources":["../../../lib/domevent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domevent.js","sourceRoot":"","sources":["../../../lib/domevent.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,12 @@
1
+ export type ListenerCB<T> = (this: T, ...args: any[]) => void;
1
2
  /**
2
- * emit.js implements an Emitter class which emits events to a list of listeners. Listeners are
3
- * simply functions to call, and "emitting an event" just calls those functions.
4
- *
5
- * This is similar to Backbone events, with more focus on efficiency. Both inserting and removing
6
- * listeners is constant time.
7
- *
8
- * To create an emitter:
9
- * let emitter = new Emitter();
10
- *
11
- * To add a listener:
12
- * let listener = fooEmitter.addListener(callback);
13
- * To remove a listener:
14
- * listener.dispose();
15
- *
16
- * The only way to remove a listener is to dispose the Listener object returned by addListener().
17
- * You can often use autoDispose to do this automatically when subscribing in a constructor:
18
- * this.autoDispose(fooEmitter.addListener(this.onFoo, this));
19
- *
20
- * To emit an event, call emit() with any number of arguments:
21
- * emitter.emit("hello", "world");
3
+ * A callback that listens to _changes_ in the Emitter listeners. This is mainly used for
4
+ * internal purposes.
22
5
  */
23
- export declare type ListenerCB<T> = (this: T, ...args: any[]) => void;
24
- export declare type ChangeCB = (hasListeners: boolean) => void;
6
+ export type ChangeCB = (hasListeners: boolean) => void;
25
7
  /**
26
8
  * This is an implementation of a doubly-linked list, with just the minimal functionality we need.
9
+ * @internal
27
10
  */
28
11
  export declare class LLink {
29
12
  protected _next: LLink | null;
@@ -34,18 +17,62 @@ export declare class LLink {
34
17
  protected _removeNode(node: LLink): void;
35
18
  protected _disposeList(): void;
36
19
  }
20
+ /**
21
+ * An `Emitter` emits events to a list of listeners. Listeners are
22
+ * simply functions to call, and "emitting an event" just calls those functions.
23
+ *
24
+ * This is similar to Backbone events, with more focus on efficiency. Both inserting and removing
25
+ * listeners is constant time.
26
+ *
27
+ * To create an emitter:
28
+ * ```ts
29
+ * const emitter = new Emitter();
30
+ * ```
31
+ *
32
+ * To add a listener:
33
+ * ```ts
34
+ * const listener = fooEmitter.addListener(callback);
35
+ * ```
36
+ *
37
+ * To remove a listener:
38
+ * ```ts
39
+ * listener.dispose();
40
+ * ```
41
+ *
42
+ * The only way to remove a listener is to dispose the `Listener` object returned by `addListener()`.
43
+ * You can often use autoDispose to do this automatically when subscribing in a constructor:
44
+ * ```ts
45
+ * this.autoDispose(fooEmitter.addListener(this.onFoo, this));
46
+ * ```
47
+ *
48
+ * To emit an event, call `emit()` with any number of arguments:
49
+ * ```ts
50
+ * emitter.emit("hello", "world");
51
+ * ```
52
+ *
53
+ * @privateRemarks
54
+ *
55
+ * Note about a possible alternative implementation.
56
+ *
57
+ * We could implement the same interface using an array of listeners. Certain issues apply, in
58
+ * particular with removing listeners from inside emit(), and in ensuring that removals are
59
+ * constant time on average. Such an implementation was attempted and timed. The result is that
60
+ * compared to the linked-list implementation here, add/remove combination could be made nearly
61
+ * twice faster (on average), while emit and add/remove/emit are consistently slightly slower.
62
+ *
63
+ * The implementation here was chosen based on those timings, and as the simpler one. For example,
64
+ * on one setup (macbook, node4, 5-listener queue), add+remove take 0.1us, while add+remove+emit
65
+ * take 3.82us. (In array-based implementation with same set up, add+remove is 0.06us, while
66
+ * add+remove+emit is 4.80us.)
67
+ */
37
68
  export declare class Emitter extends LLink {
38
69
  private _changeCB;
39
70
  private _changeCBContext;
40
- /**
41
- * Constructs an Emitter object.
42
- */
43
- constructor();
44
71
  /**
45
72
  * Adds a listening callback to the list of functions to call on emit().
46
- * @param {Function} callback: Function to call.
47
- * @param {Object} optContext: Context for the function.
48
- * @returns {Listener} Listener object. Its dispose() method removes the callback from the list.
73
+ * @param callback - Function to call.
74
+ * @param optContext - Context for the function.
75
+ * @returns Listener object. Its dispose() method removes the callback from the list.
49
76
  */
50
77
  addListener<T>(callback: ListenerCB<T>, optContext?: T): Listener;
51
78
  /**
@@ -54,7 +81,7 @@ export declare class Emitter extends LLink {
54
81
  emit(...args: any[]): void;
55
82
  /**
56
83
  * Sets the single callback that would get called when a listener is added or removed.
57
- * @param {Function} changeCB(hasListeners): Function to call after a listener is added or
84
+ * @param changeCB - Function to call after a listener is added or
58
85
  * removed. It's called with a boolean indicating whether this Emitter has any listeners.
59
86
  * Pass in `null` to unset the callback. Note that it can be called multiple times in a row
60
87
  * with hasListeners `true`.
@@ -62,6 +89,7 @@ export declare class Emitter extends LLink {
62
89
  setChangeCB(changeCB: ChangeCB, optContext?: any): void;
63
90
  /**
64
91
  * Helper used by Listener class, but not intended for public usage.
92
+ * @internal
65
93
  */
66
94
  _triggerChangeCB(): void;
67
95
  /**
@@ -75,14 +103,16 @@ export declare class Emitter extends LLink {
75
103
  dispose(): void;
76
104
  }
77
105
  /**
78
- * Listener object wraps a callback added to an Emitter, allowing for O(1) removal when the
79
- * listener is disposed.
106
+ * The `Listener` object wraps a callback added to an Emitter, allowing for O(1) removal when the
107
+ * listener is disposed. It implements `IDisposable`.
80
108
  */
81
109
  export declare class Listener extends LLink {
82
110
  private emitter;
83
111
  private callback;
84
112
  private context?;
113
+ /** @internal */
85
114
  static callAll(begin: LLink, end: LLink, args: any[]): void;
86
115
  constructor(emitter: Emitter, callback: ListenerCB<any>, context?: any);
116
+ /** @internal */
87
117
  dispose(): void;
88
118
  }
@@ -1,44 +1,10 @@
1
1
  "use strict";
2
- /**
3
- * emit.js implements an Emitter class which emits events to a list of listeners. Listeners are
4
- * simply functions to call, and "emitting an event" just calls those functions.
5
- *
6
- * This is similar to Backbone events, with more focus on efficiency. Both inserting and removing
7
- * listeners is constant time.
8
- *
9
- * To create an emitter:
10
- * let emitter = new Emitter();
11
- *
12
- * To add a listener:
13
- * let listener = fooEmitter.addListener(callback);
14
- * To remove a listener:
15
- * listener.dispose();
16
- *
17
- * The only way to remove a listener is to dispose the Listener object returned by addListener().
18
- * You can often use autoDispose to do this automatically when subscribing in a constructor:
19
- * this.autoDispose(fooEmitter.addListener(this.onFoo, this));
20
- *
21
- * To emit an event, call emit() with any number of arguments:
22
- * emitter.emit("hello", "world");
23
- */
24
2
  Object.defineProperty(exports, "__esModule", { value: true });
25
3
  exports.Listener = exports.Emitter = exports.LLink = void 0;
26
- // Note about a possible alternative implementation.
27
- //
28
- // We could implement the same interface using an array of listeners. Certain issues apply, in
29
- // particular with removing listeners from inside emit(), and in ensuring that removals are
30
- // constant time on average. Such an implementation was attempted and timed. The result is that
31
- // compared to the linked-list implementation here, add/remove combination could be made nearly
32
- // twice faster (on average), while emit and add/remove/emit are consistently slightly slower.
33
- //
34
- // The implementation here was chosen based on those timings, and as the simpler one. For example,
35
- // on one setup (macbook, node4, 5-listener queue), add+remove take 0.1us, while add+remove+emit
36
- // take 3.82us. (In array-based implementation with same set up, add+remove is 0.06us, while
37
- // add+remove+emit is 4.80us.)
38
- // The private property name to hold next/prev pointers.
39
4
  function _noop() { }
40
5
  /**
41
6
  * This is an implementation of a doubly-linked list, with just the minimal functionality we need.
7
+ * @internal
42
8
  */
43
9
  class LLink {
44
10
  constructor() {
@@ -67,7 +33,7 @@ class LLink {
67
33
  node._prev = node._next = null;
68
34
  }
69
35
  _disposeList() {
70
- let node = this;
36
+ let node = this; // eslint-disable-line @typescript-eslint/no-this-alias
71
37
  let next = node._next;
72
38
  while (next !== null) {
73
39
  node._next = node._prev = null;
@@ -77,20 +43,65 @@ class LLink {
77
43
  }
78
44
  }
79
45
  exports.LLink = LLink;
46
+ /**
47
+ * An `Emitter` emits events to a list of listeners. Listeners are
48
+ * simply functions to call, and "emitting an event" just calls those functions.
49
+ *
50
+ * This is similar to Backbone events, with more focus on efficiency. Both inserting and removing
51
+ * listeners is constant time.
52
+ *
53
+ * To create an emitter:
54
+ * ```ts
55
+ * const emitter = new Emitter();
56
+ * ```
57
+ *
58
+ * To add a listener:
59
+ * ```ts
60
+ * const listener = fooEmitter.addListener(callback);
61
+ * ```
62
+ *
63
+ * To remove a listener:
64
+ * ```ts
65
+ * listener.dispose();
66
+ * ```
67
+ *
68
+ * The only way to remove a listener is to dispose the `Listener` object returned by `addListener()`.
69
+ * You can often use autoDispose to do this automatically when subscribing in a constructor:
70
+ * ```ts
71
+ * this.autoDispose(fooEmitter.addListener(this.onFoo, this));
72
+ * ```
73
+ *
74
+ * To emit an event, call `emit()` with any number of arguments:
75
+ * ```ts
76
+ * emitter.emit("hello", "world");
77
+ * ```
78
+ *
79
+ * @privateRemarks
80
+ *
81
+ * Note about a possible alternative implementation.
82
+ *
83
+ * We could implement the same interface using an array of listeners. Certain issues apply, in
84
+ * particular with removing listeners from inside emit(), and in ensuring that removals are
85
+ * constant time on average. Such an implementation was attempted and timed. The result is that
86
+ * compared to the linked-list implementation here, add/remove combination could be made nearly
87
+ * twice faster (on average), while emit and add/remove/emit are consistently slightly slower.
88
+ *
89
+ * The implementation here was chosen based on those timings, and as the simpler one. For example,
90
+ * on one setup (macbook, node4, 5-listener queue), add+remove take 0.1us, while add+remove+emit
91
+ * take 3.82us. (In array-based implementation with same set up, add+remove is 0.06us, while
92
+ * add+remove+emit is 4.80us.)
93
+ */
80
94
  class Emitter extends LLink {
81
- /**
82
- * Constructs an Emitter object.
83
- */
84
95
  constructor() {
85
- super();
96
+ super(...arguments);
86
97
  this._changeCB = _noop;
87
98
  this._changeCBContext = undefined;
88
99
  }
89
100
  /**
90
101
  * Adds a listening callback to the list of functions to call on emit().
91
- * @param {Function} callback: Function to call.
92
- * @param {Object} optContext: Context for the function.
93
- * @returns {Listener} Listener object. Its dispose() method removes the callback from the list.
102
+ * @param callback - Function to call.
103
+ * @param optContext - Context for the function.
104
+ * @returns Listener object. Its dispose() method removes the callback from the list.
94
105
  */
95
106
  addListener(callback, optContext) {
96
107
  return new Listener(this, callback, optContext);
@@ -103,7 +114,7 @@ class Emitter extends LLink {
103
114
  }
104
115
  /**
105
116
  * Sets the single callback that would get called when a listener is added or removed.
106
- * @param {Function} changeCB(hasListeners): Function to call after a listener is added or
117
+ * @param changeCB - Function to call after a listener is added or
107
118
  * removed. It's called with a boolean indicating whether this Emitter has any listeners.
108
119
  * Pass in `null` to unset the callback. Note that it can be called multiple times in a row
109
120
  * with hasListeners `true`.
@@ -114,6 +125,7 @@ class Emitter extends LLink {
114
125
  }
115
126
  /**
116
127
  * Helper used by Listener class, but not intended for public usage.
128
+ * @internal
117
129
  */
118
130
  _triggerChangeCB() {
119
131
  this._changeCB.call(this._changeCBContext, this.hasListeners());
@@ -136,10 +148,18 @@ class Emitter extends LLink {
136
148
  }
137
149
  exports.Emitter = Emitter;
138
150
  /**
139
- * Listener object wraps a callback added to an Emitter, allowing for O(1) removal when the
140
- * listener is disposed.
151
+ * The `Listener` object wraps a callback added to an Emitter, allowing for O(1) removal when the
152
+ * listener is disposed. It implements `IDisposable`.
141
153
  */
142
154
  class Listener extends LLink {
155
+ /** @internal */
156
+ static callAll(begin, end, args) {
157
+ while (begin !== end) {
158
+ const lis = begin;
159
+ lis.callback.call(lis.context, ...args);
160
+ begin = lis._next;
161
+ }
162
+ }
143
163
  constructor(emitter, callback, context) {
144
164
  super();
145
165
  this.emitter = emitter;
@@ -148,13 +168,7 @@ class Listener extends LLink {
148
168
  this._insertBefore(emitter, this);
149
169
  emitter._triggerChangeCB();
150
170
  }
151
- static callAll(begin, end, args) {
152
- while (begin !== end) {
153
- const lis = begin;
154
- lis.callback.call(lis.context, ...args);
155
- begin = lis._next;
156
- }
157
- }
171
+ /** @internal */
158
172
  dispose() {
159
173
  if (this.isDisposed()) {
160
174
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"emit.js","sourceRoot":"","sources":["../../../lib/emit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emit.js","sourceRoot":"","sources":["../../../lib/emit.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ export interface IKnockoutReadObservable<T> {
32
32
  subscribe(callback: (newValue: T) => void, target?: any, event?: "change"): any;
33
33
  getSubscriptionsCount(): number;
34
34
  }
35
- export declare type InferKoType<KObs extends IKnockoutReadObservable<any>> = KObs extends {
35
+ export type InferKoType<KObs extends IKnockoutReadObservable<any>> = KObs extends {
36
36
  peek(): infer T;
37
37
  } ? T : never;
38
38
  /**
@@ -44,18 +44,21 @@ export declare type InferKoType<KObs extends IKnockoutReadObservable<any>> = KOb
44
44
  */
45
45
  export declare function fromKo<KObs extends IKnockoutObservable<any>>(koObs: KObs): Observable<InferKoType<KObs>>;
46
46
  /**
47
- * An Observable that wraps a Knockout observable, created via fromKo(). It keeps minimal overhead
47
+ * An Observable that wraps a Knockout observable, created via `fromKo()`. It keeps minimal overhead
48
48
  * when unused by only subscribing to the wrapped observable while it itself has subscriptions.
49
49
  *
50
- * This way, when unused, the only reference is from the wrapper to the wrapped object. KoWrapObs
50
+ * This way, when unused, the only reference is from the wrapper to the wrapped object. `KoWrapObs`
51
51
  * should not be disposed; its lifetime is tied to that of the wrapped object.
52
52
  */
53
53
  export declare class KoWrapObs<T> extends Observable<T> {
54
54
  private _koObs;
55
55
  private _koSub;
56
56
  constructor(_koObs: IKnockoutObservable<T>);
57
+ /** @override */
57
58
  get(): T;
59
+ /** @override */
58
60
  set(value: T): void;
61
+ /** @override */
59
62
  dispose(): void;
60
63
  }
61
64
  export interface IKnockoutModule {
@@ -41,10 +41,10 @@ function fromKo(koObs) {
41
41
  }
42
42
  exports.fromKo = fromKo;
43
43
  /**
44
- * An Observable that wraps a Knockout observable, created via fromKo(). It keeps minimal overhead
44
+ * An Observable that wraps a Knockout observable, created via `fromKo()`. It keeps minimal overhead
45
45
  * when unused by only subscribing to the wrapped observable while it itself has subscriptions.
46
46
  *
47
- * This way, when unused, the only reference is from the wrapper to the wrapped object. KoWrapObs
47
+ * This way, when unused, the only reference is from the wrapper to the wrapped object. `KoWrapObs`
48
48
  * should not be disposed; its lifetime is tied to that of the wrapped object.
49
49
  */
50
50
  class KoWrapObs extends observable_1.Observable {
@@ -65,8 +65,11 @@ class KoWrapObs extends observable_1.Observable {
65
65
  }
66
66
  });
67
67
  }
68
+ /** @override */
68
69
  get() { return this._koObs.peek(); }
69
- set(value) { observable_1.bundleChanges(() => this._koObs(value)); }
70
+ /** @override */
71
+ set(value) { (0, observable_1.bundleChanges)(() => this._koObs(value)); }
72
+ /** @override */
70
73
  dispose() { throw new Error("KoWrapObs should not be disposed"); }
71
74
  }
72
75
  exports.KoWrapObs = KoWrapObs;
@@ -1 +1 @@
1
- {"version":3,"file":"kowrap.js","sourceRoot":"","sources":["../../../lib/kowrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kowrap.js","sourceRoot":"","sources":["../../../lib/kowrap.ts"],"names":[],"mappings":"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"}