@@ -79,56 +79,59 @@ export class ReactiveSet extends Set {
79
79
set ( this . #version, this . #version. v + 1 ) ;
80
80
}
81
81
82
- /**
83
- * @param {T } value
84
- */
82
+ /** @param {T } value */
85
83
has ( value ) {
86
84
let possible_source = this . #sources. get ( value ) ;
85
+
87
86
if ( possible_source === undefined ) {
88
87
get ( this . #version) ;
89
88
return false ;
90
89
}
90
+
91
91
return get ( possible_source ) ;
92
92
}
93
93
94
- /**
95
- * @param {T } value
96
- */
94
+ /** @param {T } value */
97
95
add ( value ) {
98
96
const sources = this . #sources;
99
- let possible_source = sources . get ( value ) ;
100
- if ( possible_source === undefined ) {
101
- possible_source = source ( true ) ;
102
- sources . set ( value , possible_source ) ;
103
- this . #increment_version( ) ;
104
- super . add ( value ) ;
97
+
98
+ if ( ! sources . has ( value ) ) {
99
+ sources . set ( value , source ( true ) ) ;
105
100
set ( this . #size, sources . size ) ;
101
+ this . #increment_version( ) ;
106
102
}
107
- return this ;
103
+
104
+ return super . add ( value ) ;
108
105
}
109
106
110
- /**
111
- * @param {T } value
112
- */
107
+ /** @param {T } value */
113
108
delete ( value ) {
114
109
const sources = this . #sources;
115
- let possible_source = sources . get ( value ) ;
116
- if ( possible_source !== undefined ) {
110
+
111
+ let source = sources . get ( value ) ;
112
+ if ( source !== undefined ) {
117
113
sources . delete ( value ) ;
118
- this . #increment_version( ) ;
119
114
set ( this . #size, sources . size ) ;
115
+ set ( source , false ) ;
116
+ this . #increment_version( ) ;
120
117
}
118
+
121
119
return super . delete ( value ) ;
122
120
}
123
121
124
122
clear ( ) {
125
123
const sources = this . #sources;
126
- super . clear ( ) ;
127
- sources . clear ( ) ;
128
- if ( this . #size. v !== sources . size ) {
129
- this . #increment_version( ) ;
124
+
125
+ if ( sources . size !== 0 ) {
130
126
set ( this . #size, 0 ) ;
127
+ for ( const source of sources . values ( ) ) {
128
+ set ( source , false ) ;
129
+ }
130
+ this . #increment_version( ) ;
131
131
}
132
+
133
+ sources . clear ( ) ;
134
+ super . clear ( ) ;
132
135
}
133
136
134
137
keys ( ) {
0 commit comments