@thienvu18/designable-shared 2.0.0 → 2.0.2

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 (73) hide show
  1. package/esm/animation.d.ts +8 -2
  2. package/esm/animation.js +29 -30
  3. package/esm/array.d.ts +163 -37
  4. package/esm/array.js +104 -87
  5. package/esm/clone.d.ts +4 -4
  6. package/esm/clone.js +79 -86
  7. package/esm/compose.d.ts +3 -1
  8. package/esm/compose.js +6 -6
  9. package/esm/coordinate.d.ts +120 -76
  10. package/esm/coordinate.js +480 -411
  11. package/esm/element.d.ts +11 -6
  12. package/esm/element.js +123 -125
  13. package/esm/event.d.ts +162 -75
  14. package/esm/event.js +197 -197
  15. package/esm/globalThisPolyfill.d.ts +1 -1
  16. package/esm/globalThisPolyfill.js +14 -17
  17. package/esm/index.d.ts +17 -17
  18. package/esm/index.js +17 -17
  19. package/esm/instanceof.d.ts +1 -1
  20. package/esm/instanceof.js +9 -10
  21. package/esm/keycode.d.ts +145 -145
  22. package/esm/keycode.js +149 -149
  23. package/esm/lru.d.ts +50 -47
  24. package/esm/lru.js +236 -245
  25. package/esm/observer.d.ts +7 -7
  26. package/esm/observer.js +37 -40
  27. package/esm/request-idle.d.ts +9 -6
  28. package/esm/request-idle.js +6 -6
  29. package/esm/scroller.d.ts +24 -8
  30. package/esm/scroller.js +78 -75
  31. package/esm/subscribable.d.ts +10 -10
  32. package/esm/subscribable.js +39 -40
  33. package/esm/types.d.ts +13 -13
  34. package/esm/types.js +19 -20
  35. package/esm/uid.d.ts +1 -1
  36. package/esm/uid.js +7 -7
  37. package/lib/animation.d.ts +8 -2
  38. package/lib/animation.js +34 -35
  39. package/lib/array.d.ts +163 -37
  40. package/lib/array.js +129 -101
  41. package/lib/clone.d.ts +4 -4
  42. package/lib/clone.js +84 -91
  43. package/lib/compose.d.ts +3 -1
  44. package/lib/compose.js +10 -10
  45. package/lib/coordinate.d.ts +120 -76
  46. package/lib/coordinate.js +538 -440
  47. package/lib/element.d.ts +11 -6
  48. package/lib/element.js +139 -133
  49. package/lib/event.d.ts +162 -75
  50. package/lib/event.js +206 -202
  51. package/lib/globalThisPolyfill.d.ts +1 -1
  52. package/lib/globalThisPolyfill.js +17 -20
  53. package/lib/index.d.ts +17 -17
  54. package/lib/index.js +49 -33
  55. package/lib/instanceof.d.ts +1 -1
  56. package/lib/instanceof.js +13 -14
  57. package/lib/keycode.d.ts +145 -145
  58. package/lib/keycode.js +153 -153
  59. package/lib/lru.d.ts +50 -47
  60. package/lib/lru.js +240 -249
  61. package/lib/observer.d.ts +7 -7
  62. package/lib/observer.js +41 -44
  63. package/lib/request-idle.d.ts +9 -6
  64. package/lib/request-idle.js +14 -11
  65. package/lib/scroller.d.ts +24 -8
  66. package/lib/scroller.js +89 -81
  67. package/lib/subscribable.d.ts +10 -10
  68. package/lib/subscribable.js +43 -44
  69. package/lib/types.d.ts +13 -13
  70. package/lib/types.js +40 -28
  71. package/lib/uid.d.ts +1 -1
  72. package/lib/uid.js +11 -11
  73. package/package.json +15 -15
package/esm/lru.d.ts CHANGED
@@ -17,57 +17,60 @@
17
17
  * removed <-- <-- <-- <-- <-- <-- <-- <-- <-- <-- <-- added
18
18
  */
19
19
  export declare class LRUMap<K, V> {
20
- size: number;
21
- limit: number;
22
- oldest: any;
23
- newest: any;
24
- _keymap: Map<K, {
25
- key: K;
26
- value: V;
27
- }>;
28
- constructor(limit: number, entries?: any);
29
- private _markEntryAsUsed;
30
- assign(entries: any): void;
31
- get(key: K): V;
32
- set(key: K, value: V): this;
33
- shift(): any[];
34
- find(key: K): V;
35
- has(key: K): boolean;
36
- delete(key: any): V;
37
- clear(): void;
38
- keys(): KeyIterator;
39
- values(): ValueIterator;
40
- entries(): void;
41
- forEach(fun: (value: any, key: any, ctx: object) => void, thisObj: any): void;
42
- toJSON(): any[];
43
- toString(): string;
44
- [Symbol.iterator](): EntryIterator;
20
+ size: number
21
+ limit: number
22
+ oldest: any
23
+ newest: any
24
+ _keymap: Map<
25
+ K,
26
+ {
27
+ key: K
28
+ value: V
29
+ }
30
+ >
31
+ constructor(limit: number, entries?: any)
32
+ private _markEntryAsUsed
33
+ assign(entries: any): void
34
+ get(key: K): V
35
+ set(key: K, value: V): this
36
+ shift(): any[]
37
+ find(key: K): V
38
+ has(key: K): boolean
39
+ delete(key: any): V
40
+ clear(): void
41
+ keys(): KeyIterator
42
+ values(): ValueIterator
43
+ entries(): void
44
+ forEach(fun: (value: any, key: any, ctx: object) => void, thisObj: any): void
45
+ toJSON(): any[]
46
+ toString(): string
47
+ [Symbol.iterator](): EntryIterator
45
48
  }
46
49
  declare class EntryIterator {
47
- entry: any;
48
- constructor(oldestEntry: any);
49
- [Symbol.iterator](): this;
50
- next(): {
51
- done: boolean;
52
- value: any[];
53
- };
50
+ entry: any
51
+ constructor(oldestEntry: any)
52
+ [Symbol.iterator](): this
53
+ next(): {
54
+ done: boolean
55
+ value: any[]
56
+ }
54
57
  }
55
58
  declare class KeyIterator {
56
- entry: any;
57
- constructor(oldestEntry: any);
58
- [Symbol.iterator](): this;
59
- next(): {
60
- done: boolean;
61
- value: any;
62
- };
59
+ entry: any
60
+ constructor(oldestEntry: any)
61
+ [Symbol.iterator](): this
62
+ next(): {
63
+ done: boolean
64
+ value: any
65
+ }
63
66
  }
64
67
  declare class ValueIterator {
65
- entry: any;
66
- constructor(oldestEntry: any);
67
- [Symbol.iterator](): this;
68
- next(): {
69
- done: boolean;
70
- value: any;
71
- };
68
+ entry: any
69
+ constructor(oldestEntry: any)
70
+ [Symbol.iterator](): this
71
+ next(): {
72
+ done: boolean
73
+ value: any
74
+ }
72
75
  }
73
- export {};
76
+ export {}
package/esm/lru.js CHANGED
@@ -17,277 +17,268 @@
17
17
  * removed <-- <-- <-- <-- <-- <-- <-- <-- <-- <-- <-- added
18
18
  */
19
19
  /* eslint-disable */
20
- const NEWER = Symbol('newer');
21
- const OLDER = Symbol('older');
20
+ const NEWER = Symbol('newer')
21
+ const OLDER = Symbol('older')
22
22
  function Entry(key, value) {
23
- this.key = key;
24
- this.value = value;
25
- this[NEWER] = undefined;
26
- this[OLDER] = undefined;
23
+ this.key = key
24
+ this.value = value
25
+ this[NEWER] = undefined
26
+ this[OLDER] = undefined
27
27
  }
28
28
  export class LRUMap {
29
- constructor(limit, entries) {
30
- if (typeof limit !== 'number') {
31
- // called as (entries)
32
- entries = limit;
33
- limit = 0;
34
- }
35
- this.size = 0;
36
- this.limit = limit;
37
- this.oldest = this.newest = undefined;
38
- this._keymap = new Map();
39
- if (entries) {
40
- this.assign(entries);
41
- if (limit < 1) {
42
- this.limit = this.size;
43
- }
44
- }
29
+ constructor(limit, entries) {
30
+ if (typeof limit !== 'number') {
31
+ // called as (entries)
32
+ entries = limit
33
+ limit = 0
45
34
  }
46
- _markEntryAsUsed(entry) {
47
- if (entry === this.newest) {
48
- // Already the most recenlty used entry, so no need to update the list
49
- return;
50
- }
51
- // HEAD--------------TAIL
52
- // <.older .newer>
53
- // <--- add direction --
54
- // A B C <D> E
55
- if (entry[NEWER]) {
56
- if (entry === this.oldest) {
57
- this.oldest = entry[NEWER];
58
- }
59
- entry[NEWER][OLDER] = entry[OLDER]; // C <-- E.
60
- }
61
- if (entry[OLDER]) {
62
- entry[OLDER][NEWER] = entry[NEWER]; // C. --> E
63
- }
64
- entry[NEWER] = undefined; // D --x
65
- entry[OLDER] = this.newest; // D. --> E
66
- if (this.newest) {
67
- this.newest[NEWER] = entry; // E. <-- D
68
- }
69
- this.newest = entry;
35
+ this.size = 0
36
+ this.limit = limit
37
+ this.oldest = this.newest = undefined
38
+ this._keymap = new Map()
39
+ if (entries) {
40
+ this.assign(entries)
41
+ if (limit < 1) {
42
+ this.limit = this.size
43
+ }
70
44
  }
71
- assign(entries) {
72
- let entry;
73
- let limit = this.limit || Number.MAX_VALUE;
74
- this._keymap.clear();
75
- const it = entries[Symbol.iterator]();
76
- for (let itv = it.next(); !itv.done; itv = it.next()) {
77
- const e = new Entry(itv.value[0], itv.value[1]);
78
- this._keymap.set(e.key, e);
79
- if (!entry) {
80
- this.oldest = e;
81
- }
82
- else {
83
- entry[NEWER] = e;
84
- e[OLDER] = entry;
85
- }
86
- entry = e;
87
- if (limit-- === 0) {
88
- throw new Error('overflow');
89
- }
90
- }
91
- this.newest = entry;
92
- this.size = this._keymap.size;
45
+ }
46
+ _markEntryAsUsed(entry) {
47
+ if (entry === this.newest) {
48
+ // Already the most recenlty used entry, so no need to update the list
49
+ return
93
50
  }
94
- get(key) {
95
- // First, find our cache entry
96
- const entry = this._keymap.get(key);
97
- if (!entry) {
98
- return;
99
- } // Not cached. Sorry.
100
- // As <key> was found in the cache, register it as being requested recently
101
- this._markEntryAsUsed(entry);
102
- return entry.value;
51
+ // HEAD--------------TAIL
52
+ // <.older .newer>
53
+ // <--- add direction --
54
+ // A B C <D> E
55
+ if (entry[NEWER]) {
56
+ if (entry === this.oldest) {
57
+ this.oldest = entry[NEWER]
58
+ }
59
+ entry[NEWER][OLDER] = entry[OLDER] // C <-- E.
103
60
  }
104
- set(key, value) {
105
- let entry = this._keymap.get(key);
106
- if (entry) {
107
- // update existing
108
- entry.value = value;
109
- this._markEntryAsUsed(entry);
110
- return this;
111
- }
112
- // new entry
113
- this._keymap.set(key, (entry = new Entry(key, value)));
114
- if (this.newest) {
115
- // link previous tail to the new tail (entry)
116
- this.newest[NEWER] = entry;
117
- entry[OLDER] = this.newest;
118
- }
119
- else {
120
- // we're first in -- yay
121
- this.oldest = entry;
122
- }
123
- // add new entry to the end of the linked list -- it's now the freshest entry.
124
- this.newest = entry;
125
- ++this.size;
126
- if (this.size > this.limit) {
127
- // we hit the limit -- remove the head
128
- this.shift();
129
- }
130
- return this;
61
+ if (entry[OLDER]) {
62
+ entry[OLDER][NEWER] = entry[NEWER] // C. --> E
131
63
  }
132
- shift() {
133
- // todo: handle special case when limit == 1
134
- const entry = this.oldest;
135
- if (entry) {
136
- if (this.oldest[NEWER]) {
137
- // advance the list
138
- this.oldest = this.oldest[NEWER];
139
- this.oldest[OLDER] = undefined;
140
- }
141
- else {
142
- // the cache is exhausted
143
- this.oldest = undefined;
144
- this.newest = undefined;
145
- }
146
- // Remove last strong reference to <entry> and remove links from the purged
147
- // entry being returned:
148
- entry[NEWER] = entry[OLDER] = undefined;
149
- this._keymap.delete(entry.key);
150
- --this.size;
151
- return [entry.key, entry.value];
152
- }
64
+ entry[NEWER] = undefined // D --x
65
+ entry[OLDER] = this.newest // D. --> E
66
+ if (this.newest) {
67
+ this.newest[NEWER] = entry // E. <-- D
153
68
  }
154
- find(key) {
155
- const e = this._keymap.get(key);
156
- return e ? e.value : undefined;
69
+ this.newest = entry
70
+ }
71
+ assign(entries) {
72
+ let entry
73
+ let limit = this.limit || Number.MAX_VALUE
74
+ this._keymap.clear()
75
+ const it = entries[Symbol.iterator]()
76
+ for (let itv = it.next(); !itv.done; itv = it.next()) {
77
+ const e = new Entry(itv.value[0], itv.value[1])
78
+ this._keymap.set(e.key, e)
79
+ if (!entry) {
80
+ this.oldest = e
81
+ } else {
82
+ entry[NEWER] = e
83
+ e[OLDER] = entry
84
+ }
85
+ entry = e
86
+ if (limit-- === 0) {
87
+ throw new Error('overflow')
88
+ }
157
89
  }
158
- has(key) {
159
- return this._keymap.has(key);
90
+ this.newest = entry
91
+ this.size = this._keymap.size
92
+ }
93
+ get(key) {
94
+ // First, find our cache entry
95
+ const entry = this._keymap.get(key)
96
+ if (!entry) {
97
+ return
98
+ } // Not cached. Sorry.
99
+ // As <key> was found in the cache, register it as being requested recently
100
+ this._markEntryAsUsed(entry)
101
+ return entry.value
102
+ }
103
+ set(key, value) {
104
+ let entry = this._keymap.get(key)
105
+ if (entry) {
106
+ // update existing
107
+ entry.value = value
108
+ this._markEntryAsUsed(entry)
109
+ return this
160
110
  }
161
- delete(key) {
162
- const entry = this._keymap.get(key);
163
- if (!entry) {
164
- return;
165
- }
166
- this._keymap.delete(entry.key);
167
- if (entry[NEWER] && entry[OLDER]) {
168
- // relink the older entry with the newer entry
169
- entry[OLDER][NEWER] = entry[NEWER];
170
- entry[NEWER][OLDER] = entry[OLDER];
171
- }
172
- else if (entry[NEWER]) {
173
- // remove the link to us
174
- entry[NEWER][OLDER] = undefined;
175
- // link the newer entry to head
176
- this.oldest = entry[NEWER];
177
- }
178
- else if (entry[OLDER]) {
179
- // remove the link to us
180
- entry[OLDER][NEWER] = undefined;
181
- // link the newer entry to head
182
- this.newest = entry[OLDER];
183
- }
184
- else {
185
- // if(entry[OLDER] === undefined && entry.newer === undefined) {
186
- this.oldest = this.newest = undefined;
187
- }
188
- this.size--;
189
- return entry.value;
111
+ // new entry
112
+ this._keymap.set(key, (entry = new Entry(key, value)))
113
+ if (this.newest) {
114
+ // link previous tail to the new tail (entry)
115
+ this.newest[NEWER] = entry
116
+ entry[OLDER] = this.newest
117
+ } else {
118
+ // we're first in -- yay
119
+ this.oldest = entry
190
120
  }
191
- clear() {
192
- // Not clearing links should be safe, as we don't expose live links to user
193
- this.oldest = this.newest = undefined;
194
- this.size = 0;
195
- this._keymap.clear();
121
+ // add new entry to the end of the linked list -- it's now the freshest entry.
122
+ this.newest = entry
123
+ ++this.size
124
+ if (this.size > this.limit) {
125
+ // we hit the limit -- remove the head
126
+ this.shift()
196
127
  }
197
- keys() {
198
- return new KeyIterator(this.oldest);
128
+ return this
129
+ }
130
+ shift() {
131
+ // todo: handle special case when limit == 1
132
+ const entry = this.oldest
133
+ if (entry) {
134
+ if (this.oldest[NEWER]) {
135
+ // advance the list
136
+ this.oldest = this.oldest[NEWER]
137
+ this.oldest[OLDER] = undefined
138
+ } else {
139
+ // the cache is exhausted
140
+ this.oldest = undefined
141
+ this.newest = undefined
142
+ }
143
+ // Remove last strong reference to <entry> and remove links from the purged
144
+ // entry being returned:
145
+ entry[NEWER] = entry[OLDER] = undefined
146
+ this._keymap.delete(entry.key)
147
+ --this.size
148
+ return [entry.key, entry.value]
199
149
  }
200
- values() {
201
- return new ValueIterator(this.oldest);
150
+ }
151
+ find(key) {
152
+ const e = this._keymap.get(key)
153
+ return e ? e.value : undefined
154
+ }
155
+ has(key) {
156
+ return this._keymap.has(key)
157
+ }
158
+ delete(key) {
159
+ const entry = this._keymap.get(key)
160
+ if (!entry) {
161
+ return
202
162
  }
203
- entries() { }
204
- forEach(fun, thisObj) {
205
- if (typeof thisObj !== 'object') {
206
- thisObj = this;
207
- }
208
- let entry = this.oldest;
209
- while (entry) {
210
- fun.call(thisObj, entry.value, entry.key, this);
211
- entry = entry[NEWER];
212
- }
163
+ this._keymap.delete(entry.key)
164
+ if (entry[NEWER] && entry[OLDER]) {
165
+ // relink the older entry with the newer entry
166
+ entry[OLDER][NEWER] = entry[NEWER]
167
+ entry[NEWER][OLDER] = entry[OLDER]
168
+ } else if (entry[NEWER]) {
169
+ // remove the link to us
170
+ entry[NEWER][OLDER] = undefined
171
+ // link the newer entry to head
172
+ this.oldest = entry[NEWER]
173
+ } else if (entry[OLDER]) {
174
+ // remove the link to us
175
+ entry[OLDER][NEWER] = undefined
176
+ // link the newer entry to head
177
+ this.newest = entry[OLDER]
178
+ } else {
179
+ // if(entry[OLDER] === undefined && entry.newer === undefined) {
180
+ this.oldest = this.newest = undefined
213
181
  }
214
- toJSON() {
215
- const s = new Array(this.size);
216
- let i = 0;
217
- let entry = this.oldest;
218
- while (entry) {
219
- s[i++] = { key: entry.key, value: entry.value };
220
- entry = entry[NEWER];
221
- }
222
- return s;
182
+ this.size--
183
+ return entry.value
184
+ }
185
+ clear() {
186
+ // Not clearing links should be safe, as we don't expose live links to user
187
+ this.oldest = this.newest = undefined
188
+ this.size = 0
189
+ this._keymap.clear()
190
+ }
191
+ keys() {
192
+ return new KeyIterator(this.oldest)
193
+ }
194
+ values() {
195
+ return new ValueIterator(this.oldest)
196
+ }
197
+ entries() {}
198
+ forEach(fun, thisObj) {
199
+ if (typeof thisObj !== 'object') {
200
+ thisObj = this
223
201
  }
224
- toString() {
225
- let s = '';
226
- let entry = this.oldest;
227
- while (entry) {
228
- s += String(entry.key) + ':' + entry.value;
229
- entry = entry[NEWER];
230
- if (entry) {
231
- s += ' < ';
232
- }
233
- }
234
- return s;
202
+ let entry = this.oldest
203
+ while (entry) {
204
+ fun.call(thisObj, entry.value, entry.key, this)
205
+ entry = entry[NEWER]
235
206
  }
236
- [Symbol.iterator]() {
237
- return new EntryIterator(this.oldest);
207
+ }
208
+ toJSON() {
209
+ const s = new Array(this.size)
210
+ let i = 0
211
+ let entry = this.oldest
212
+ while (entry) {
213
+ s[i++] = { key: entry.key, value: entry.value }
214
+ entry = entry[NEWER]
238
215
  }
216
+ return s
217
+ }
218
+ toString() {
219
+ let s = ''
220
+ let entry = this.oldest
221
+ while (entry) {
222
+ s += String(entry.key) + ':' + entry.value
223
+ entry = entry[NEWER]
224
+ if (entry) {
225
+ s += ' < '
226
+ }
227
+ }
228
+ return s
229
+ }
230
+ [Symbol.iterator]() {
231
+ return new EntryIterator(this.oldest)
232
+ }
239
233
  }
240
234
  class EntryIterator {
241
- constructor(oldestEntry) {
242
- this.entry = oldestEntry;
243
- }
244
- [Symbol.iterator]() {
245
- return this;
246
- }
247
- next() {
248
- const ent = this.entry;
249
- if (ent) {
250
- this.entry = ent[NEWER];
251
- return { done: false, value: [ent.key, ent.value] };
252
- }
253
- else {
254
- return { done: true, value: undefined };
255
- }
235
+ constructor(oldestEntry) {
236
+ this.entry = oldestEntry
237
+ }
238
+ [Symbol.iterator]() {
239
+ return this
240
+ }
241
+ next() {
242
+ const ent = this.entry
243
+ if (ent) {
244
+ this.entry = ent[NEWER]
245
+ return { done: false, value: [ent.key, ent.value] }
246
+ } else {
247
+ return { done: true, value: undefined }
256
248
  }
249
+ }
257
250
  }
258
251
  class KeyIterator {
259
- constructor(oldestEntry) {
260
- this.entry = oldestEntry;
261
- }
262
- [Symbol.iterator]() {
263
- return this;
264
- }
265
- next() {
266
- const ent = this.entry;
267
- if (ent) {
268
- this.entry = ent[NEWER];
269
- return { done: false, value: ent.key };
270
- }
271
- else {
272
- return { done: true, value: undefined };
273
- }
252
+ constructor(oldestEntry) {
253
+ this.entry = oldestEntry
254
+ }
255
+ [Symbol.iterator]() {
256
+ return this
257
+ }
258
+ next() {
259
+ const ent = this.entry
260
+ if (ent) {
261
+ this.entry = ent[NEWER]
262
+ return { done: false, value: ent.key }
263
+ } else {
264
+ return { done: true, value: undefined }
274
265
  }
266
+ }
275
267
  }
276
268
  class ValueIterator {
277
- constructor(oldestEntry) {
278
- this.entry = oldestEntry;
279
- }
280
- [Symbol.iterator]() {
281
- return this;
282
- }
283
- next() {
284
- const ent = this.entry;
285
- if (ent) {
286
- this.entry = ent[NEWER];
287
- return { done: false, value: ent.value };
288
- }
289
- else {
290
- return { done: true, value: undefined };
291
- }
269
+ constructor(oldestEntry) {
270
+ this.entry = oldestEntry
271
+ }
272
+ [Symbol.iterator]() {
273
+ return this
274
+ }
275
+ next() {
276
+ const ent = this.entry
277
+ if (ent) {
278
+ this.entry = ent[NEWER]
279
+ return { done: false, value: ent.value }
280
+ } else {
281
+ return { done: true, value: undefined }
292
282
  }
283
+ }
293
284
  }
package/esm/observer.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  export declare class LayoutObserver {
2
- private resizeObserver?;
3
- private performanceObserver?;
4
- private mutationObserver?;
5
- private connected;
6
- constructor(observer?: () => void);
7
- observe: (target: HTMLElement | Element) => void;
8
- disconnect: () => void;
2
+ private resizeObserver?
3
+ private performanceObserver?
4
+ private mutationObserver?
5
+ private connected
6
+ constructor(observer?: () => void)
7
+ observe: (target: HTMLElement | Element) => void
8
+ disconnect: () => void
9
9
  }