@@ -62,9 +62,16 @@ export default class Spread {
62
62
63
63
const changes = block . getUniqueName ( `${ node . var } _spread_changes` ) ;
64
64
65
+ const namedAttributes = block . getUniqueName ( `${ node . var } _attributes` ) ;
66
+ block . builders . init . addBlock ( deindent `
67
+ var ${ namedAttributes } = [${ node . attributes . map ( attr => `'${ attr . name } '` ) . join ( ', ' ) } ];
68
+ ` )
69
+
65
70
block . builders . hydrate . addBlock ( deindent `
66
71
var ${ changes } = ${ init } ;
67
72
for (var key in ${ changes } ) {
73
+ if (${ namedAttributes } .indexOf(key) !== -1) continue;
74
+
68
75
@setAttribute(${ node . var } , key, ${ changes } [key]);
69
76
${ activeKeys } [key] = true;
70
77
}
@@ -90,9 +97,12 @@ export default class Spread {
90
97
91
98
var ${ changes } = ${ shouldCache ? last : value } ;
92
99
for (var key in ${ changes } ) {
100
+ if (${ namedAttributes } .indexOf(key) !== -1) continue;
101
+
102
+ @setAttribute(${ node . var } , key, ${ changes } [key]);
103
+
93
104
${ activeKeys } [key] = true;
94
105
delete ${ oldKeys } [key];
95
- @setAttribute(${ node . var } , key, ${ changes } [key]);
96
106
}
97
107
98
108
for (var key in ${ oldKeys } ) {
@@ -135,6 +145,11 @@ export default class Spread {
135
145
136
146
const changes = block . getUniqueName ( `${ node . var } _spread_changes` ) ;
137
147
148
+ const namedAttributes = block . getUniqueName ( `${ node . var } _attributes` ) ;
149
+ block . builders . init . addBlock ( deindent `
150
+ var ${ namedAttributes } = [${ node . attributes . map ( attr => `'${ attr . name } '` ) . join ( ', ' ) } ];
151
+ ` )
152
+
138
153
if ( dependencies . length || hasChangeableIndex ) {
139
154
const changedCheck = (
140
155
( block . hasOutroMethod ? `#outroing || ` : '' ) +
@@ -156,9 +171,12 @@ export default class Spread {
156
171
157
172
var ${ changes } = ${ shouldCache ? last : value } ;
158
173
for (var key in ${ changes } ) {
174
+ if (${ namedAttributes } .indexOf(key) !== -1) continue;
175
+
176
+ ${ node . var } _changes[key] = ${ changes } [key];
177
+
159
178
${ activeKeys } [key] = true;
160
179
delete ${ oldKeys } [key];
161
- ${ node . var } _changes[key] = ${ changes } [key];
162
180
}
163
181
164
182
for (var key in ${ oldKeys } ) {
0 commit comments