@@ -219,20 +219,49 @@ export function cloneCandidate(candidate: Candidate): Candidate {
219
219
switch ( candidate . kind ) {
220
220
case 'arbitrary' :
221
221
return {
222
- ...candidate ,
222
+ kind : candidate . kind ,
223
+ property : candidate . property ,
224
+ value : candidate . value ,
225
+ modifier : candidate . modifier
226
+ ? { kind : candidate . modifier . kind , value : candidate . modifier . value }
227
+ : null ,
223
228
variants : candidate . variants . map ( cloneVariant ) ,
224
- modifier : candidate . modifier ? { ...candidate . modifier } : null ,
229
+ important : candidate . important ,
230
+ raw : candidate . raw ,
225
231
}
226
232
227
233
case 'static' :
228
- return { ...candidate , variants : candidate . variants . map ( cloneVariant ) }
234
+ return {
235
+ kind : candidate . kind ,
236
+ root : candidate . root ,
237
+ variants : candidate . variants . map ( cloneVariant ) ,
238
+ important : candidate . important ,
239
+ raw : candidate . raw ,
240
+ }
229
241
230
242
case 'functional' :
231
243
return {
232
- ...candidate ,
244
+ kind : candidate . kind ,
245
+ root : candidate . root ,
246
+ value : candidate . value
247
+ ? candidate . value . kind === 'arbitrary'
248
+ ? {
249
+ kind : candidate . value . kind ,
250
+ dataType : candidate . value . dataType ,
251
+ value : candidate . value . value ,
252
+ }
253
+ : {
254
+ kind : candidate . value . kind ,
255
+ value : candidate . value . value ,
256
+ fraction : candidate . value . fraction ,
257
+ }
258
+ : null ,
259
+ modifier : candidate . modifier
260
+ ? { kind : candidate . modifier . kind , value : candidate . modifier . value }
261
+ : null ,
233
262
variants : candidate . variants . map ( cloneVariant ) ,
234
- value : candidate . value ? { ... candidate . value } : null ,
235
- modifier : candidate . modifier ? { ... candidate . modifier } : null ,
263
+ important : candidate . important ,
264
+ raw : candidate . raw ,
236
265
}
237
266
238
267
default :
@@ -244,23 +273,29 @@ export function cloneCandidate(candidate: Candidate): Candidate {
244
273
export function cloneVariant ( variant : Variant ) : Variant {
245
274
switch ( variant . kind ) {
246
275
case 'arbitrary' :
247
- return { ... variant }
276
+ return { kind : variant . kind , selector : variant . selector , relative : variant . relative }
248
277
249
278
case 'static' :
250
- return { ... variant }
279
+ return { kind : variant . kind , root : variant . root }
251
280
252
281
case 'functional' :
253
282
return {
254
- ...variant ,
255
- value : variant . value ? { ...variant . value } : null ,
256
- modifier : variant . modifier ? { ...variant . modifier } : null ,
283
+ kind : variant . kind ,
284
+ root : variant . root ,
285
+ value : variant . value ? { kind : variant . value . kind , value : variant . value . value } : null ,
286
+ modifier : variant . modifier
287
+ ? { kind : variant . modifier . kind , value : variant . modifier . value }
288
+ : null ,
257
289
}
258
290
259
291
case 'compound' :
260
292
return {
261
- ...variant ,
293
+ kind : variant . kind ,
294
+ root : variant . root ,
262
295
variant : cloneVariant ( variant . variant ) ,
263
- modifier : variant . modifier ? { ...variant . modifier } : null ,
296
+ modifier : variant . modifier
297
+ ? { kind : variant . modifier . kind , value : variant . modifier . value }
298
+ : null ,
264
299
}
265
300
266
301
default :
0 commit comments