@esportsplus/reactivity 0.17.2 → 0.18.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.
@@ -33,7 +33,10 @@ type Listeners = Record<string, (Listener<any> | null)[]>;
33
33
  declare class ReactiveArray<T> extends Array<T> {
34
34
  [REACTIVE_ARRAY]: boolean;
35
35
  listeners: Listeners;
36
+ trigger: import("../system.js").Signal<boolean>;
36
37
  constructor(...items: T[]);
38
+ get length(): number;
39
+ set length(n: number);
37
40
  clear(): void;
38
41
  dispatch<K extends keyof Events<T>, V>(event: K, value?: V): void;
39
42
  dispose(): void;
@@ -1,14 +1,25 @@
1
1
  import { REACTIVE_ARRAY } from '../constants.js';
2
+ import { read, set, signal } from '../system.js';
2
3
  import { isReactiveObject } from './object.js';
3
4
  class ReactiveArray extends Array {
4
5
  [REACTIVE_ARRAY] = true;
5
6
  listeners = {};
7
+ trigger = signal(false);
6
8
  constructor(...items) {
7
9
  super(...items);
8
10
  }
11
+ get length() {
12
+ read(this.trigger);
13
+ return super.length;
14
+ }
15
+ set length(n) {
16
+ super.length = n;
17
+ set(this.trigger, !this.trigger.value);
18
+ }
9
19
  clear() {
10
20
  this.dispose();
11
21
  this.dispatch('clear');
22
+ set(this.trigger, !this.trigger.value);
12
23
  }
13
24
  dispatch(event, value) {
14
25
  let listeners = this.listeners[event];
@@ -69,17 +80,20 @@ class ReactiveArray extends Array {
69
80
  item.dispose();
70
81
  }
71
82
  this.dispatch('pop', { item });
83
+ set(this.trigger, !this.trigger.value);
72
84
  }
73
85
  return item;
74
86
  }
75
87
  push(...items) {
76
88
  let length = super.push(...items);
77
89
  this.dispatch('push', { items });
90
+ set(this.trigger, !this.trigger.value);
78
91
  return length;
79
92
  }
80
93
  reverse() {
81
94
  super.reverse();
82
95
  this.dispatch('reverse');
96
+ set(this.trigger, !this.trigger.value);
83
97
  return this;
84
98
  }
85
99
  shift() {
@@ -89,12 +103,14 @@ class ReactiveArray extends Array {
89
103
  item.dispose();
90
104
  }
91
105
  this.dispatch('shift', { item });
106
+ set(this.trigger, !this.trigger.value);
92
107
  }
93
108
  return item;
94
109
  }
95
110
  sort(fn) {
96
111
  super.sort(fn);
97
112
  this.dispatch('sort');
113
+ set(this.trigger, !this.trigger.value);
98
114
  return this;
99
115
  }
100
116
  splice(start, deleteCount = this.length, ...items) {
@@ -107,12 +123,14 @@ class ReactiveArray extends Array {
107
123
  }
108
124
  }
109
125
  this.dispatch('splice', { deleteCount, items, start });
126
+ set(this.trigger, !this.trigger.value);
110
127
  }
111
128
  return removed;
112
129
  }
113
130
  unshift(...items) {
114
131
  let length = super.unshift(...items);
115
132
  this.dispatch('unshift', { items });
133
+ set(this.trigger, !this.trigger.value);
116
134
  return length;
117
135
  }
118
136
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "author": "ICJR",
3
3
  "dependencies": {
4
4
  "@esportsplus/custom-function": "^0.0.13",
5
- "@esportsplus/utilities": "^0.22.1"
5
+ "@esportsplus/utilities": "^0.22.2"
6
6
  },
7
7
  "devDependencies": {
8
8
  "@esportsplus/typescript": "^0.9.2"
@@ -12,7 +12,7 @@
12
12
  "private": false,
13
13
  "type": "module",
14
14
  "types": "build/index.d.ts",
15
- "version": "0.17.2",
15
+ "version": "0.18.0",
16
16
  "scripts": {
17
17
  "build": "tsc && tsc-alias",
18
18
  "-": "-"
@@ -1,4 +1,5 @@
1
1
  import { REACTIVE_ARRAY } from '~/constants';
2
+ import { read, set, signal } from '~/system';
2
3
  import { isReactiveObject } from './object';
3
4
 
4
5
 
@@ -40,6 +41,7 @@ type Listeners = Record<string, (Listener<any> | null)[]>;
40
41
  class ReactiveArray<T> extends Array<T> {
41
42
  [REACTIVE_ARRAY] = true;
42
43
  listeners: Listeners = {};
44
+ trigger = signal(false);
43
45
 
44
46
 
45
47
  constructor(...items: T[]) {
@@ -47,9 +49,22 @@ class ReactiveArray<T> extends Array<T> {
47
49
  }
48
50
 
49
51
 
52
+ get length() {
53
+ read(this.trigger);
54
+
55
+ return super.length;
56
+ }
57
+
58
+ set length(n: number) {
59
+ super.length = n;
60
+ set(this.trigger, !this.trigger.value);
61
+ }
62
+
63
+
50
64
  clear() {
51
65
  this.dispose();
52
66
  this.dispatch('clear');
67
+ set(this.trigger, !this.trigger.value);
53
68
  }
54
69
 
55
70
  dispatch<K extends keyof Events<T>, V>(event: K, value?: V) {
@@ -126,6 +141,7 @@ class ReactiveArray<T> extends Array<T> {
126
141
  item.dispose();
127
142
  }
128
143
  this.dispatch('pop', { item });
144
+ set(this.trigger, !this.trigger.value);
129
145
  }
130
146
 
131
147
  return item;
@@ -135,6 +151,7 @@ class ReactiveArray<T> extends Array<T> {
135
151
  let length = super.push(...items);
136
152
 
137
153
  this.dispatch('push', { items });
154
+ set(this.trigger, !this.trigger.value);
138
155
 
139
156
  return length;
140
157
  }
@@ -142,6 +159,7 @@ class ReactiveArray<T> extends Array<T> {
142
159
  reverse() {
143
160
  super.reverse();
144
161
  this.dispatch('reverse');
162
+ set(this.trigger, !this.trigger.value);
145
163
 
146
164
  return this;
147
165
  }
@@ -154,6 +172,7 @@ class ReactiveArray<T> extends Array<T> {
154
172
  item.dispose();
155
173
  }
156
174
  this.dispatch('shift', { item });
175
+ set(this.trigger, !this.trigger.value);
157
176
  }
158
177
 
159
178
  return item;
@@ -162,6 +181,7 @@ class ReactiveArray<T> extends Array<T> {
162
181
  sort(fn: (a: T, b: T) => number) {
163
182
  super.sort(fn);
164
183
  this.dispatch('sort');
184
+ set(this.trigger, !this.trigger.value);
165
185
 
166
186
  return this;
167
187
  }
@@ -179,6 +199,7 @@ class ReactiveArray<T> extends Array<T> {
179
199
  }
180
200
 
181
201
  this.dispatch('splice', { deleteCount, items, start });
202
+ set(this.trigger, !this.trigger.value);
182
203
  }
183
204
 
184
205
  return removed;
@@ -188,6 +209,7 @@ class ReactiveArray<T> extends Array<T> {
188
209
  let length = super.unshift(...items);
189
210
 
190
211
  this.dispatch('unshift', { items });
212
+ set(this.trigger, !this.trigger.value);
191
213
 
192
214
  return length;
193
215
  }