@@ -1184,7 +1184,7 @@ function normalizeAttributesForComparison(element) {
1184
1184
} ) ;
1185
1185
}
1186
1186
1187
- function executeMorphdom ( rootFromElement , rootToElement , modifiedElements , getElementValue , childComponents , findChildComponent , getKeyFromElement ) {
1187
+ function executeMorphdom ( rootFromElement , rootToElement , modifiedFieldElements , getElementValue , childComponents , findChildComponent , getKeyFromElement ) {
1188
1188
const childComponentMap = new Map ( ) ;
1189
1189
childComponents . forEach ( ( childComponent ) => {
1190
1190
childComponentMap . set ( childComponent . element , childComponent ) ;
@@ -1215,7 +1215,7 @@ function executeMorphdom(rootFromElement, rootToElement, modifiedElements, getEl
1215
1215
if ( childComponent ) {
1216
1216
return childComponent . updateFromNewElement ( toEl ) ;
1217
1217
}
1218
- if ( modifiedElements . includes ( fromEl ) ) {
1218
+ if ( modifiedFieldElements . includes ( fromEl ) ) {
1219
1219
setValueOnElement ( toEl , getElementValue ( fromEl ) ) ;
1220
1220
}
1221
1221
if ( fromEl . isEqualNode ( toEl ) ) {
@@ -1238,35 +1238,6 @@ function executeMorphdom(rootFromElement, rootToElement, modifiedElements, getEl
1238
1238
} ) ;
1239
1239
}
1240
1240
1241
- /******************************************************************************
1242
- Copyright (c) Microsoft Corporation.
1243
-
1244
- Permission to use, copy, modify, and/or distribute this software for any
1245
- purpose with or without fee is hereby granted.
1246
-
1247
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
1248
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
1249
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
1250
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
1251
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
1252
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1253
- PERFORMANCE OF THIS SOFTWARE.
1254
- ***************************************************************************** */
1255
-
1256
- function __classPrivateFieldGet ( receiver , state , kind , f ) {
1257
- if ( kind === "a" && ! f ) throw new TypeError ( "Private accessor was defined without a getter" ) ;
1258
- if ( typeof state === "function" ? receiver !== state || ! f : ! state . has ( receiver ) ) throw new TypeError ( "Cannot read private member from an object whose class did not declare it" ) ;
1259
- return kind === "m" ? f : kind === "a" ? f . call ( receiver ) : f ? f . value : state . get ( receiver ) ;
1260
- }
1261
-
1262
- function __classPrivateFieldSet ( receiver , state , value , kind , f ) {
1263
- if ( kind === "m" ) throw new TypeError ( "Private method is not writable" ) ;
1264
- if ( kind === "a" && ! f ) throw new TypeError ( "Private accessor was defined without a setter" ) ;
1265
- if ( typeof state === "function" ? receiver !== state || ! f : ! state . has ( receiver ) ) throw new TypeError ( "Cannot write private member to an object whose class did not declare it" ) ;
1266
- return ( kind === "a" ? f . call ( receiver , value ) : f ? f . value = value : state . set ( receiver , value ) ) , value ;
1267
- }
1268
-
1269
- var _UnsyncedInputContainer_mappedFields , _UnsyncedInputContainer_unmappedFields ;
1270
1241
class UnsyncedInputsTracker {
1271
1242
constructor ( component , modelElementResolver ) {
1272
1243
this . elementEventListeners = [
@@ -1307,36 +1278,51 @@ class UnsyncedInputsTracker {
1307
1278
this . unsyncedInputs . add ( element , modelName ) ;
1308
1279
}
1309
1280
getUnsyncedInputs ( ) {
1310
- return this . unsyncedInputs . all ( ) ;
1281
+ return this . unsyncedInputs . allUnsyncedInputs ( ) ;
1282
+ }
1283
+ getUnsyncedModels ( ) {
1284
+ return Array . from ( this . unsyncedInputs . getUnsyncedModelNames ( ) ) ;
1311
1285
}
1312
- getModifiedModels ( ) {
1313
- return Array . from ( this . unsyncedInputs . getModifiedModels ( ) ) ;
1286
+ resetUnsyncedFields ( ) {
1287
+ this . unsyncedInputs . resetUnsyncedFields ( ) ;
1314
1288
}
1315
1289
}
1316
1290
class UnsyncedInputContainer {
1317
1291
constructor ( ) {
1318
- _UnsyncedInputContainer_mappedFields . set ( this , void 0 ) ;
1319
- _UnsyncedInputContainer_unmappedFields . set ( this , [ ] ) ;
1320
- __classPrivateFieldSet ( this , _UnsyncedInputContainer_mappedFields , new Map ( ) , "f" ) ;
1292
+ this . unsyncedNonModelFields = [ ] ;
1293
+ this . unsyncedModelNames = [ ] ;
1294
+ this . unsyncedModelFields = new Map ( ) ;
1321
1295
}
1322
1296
add ( element , modelName = null ) {
1323
1297
if ( modelName ) {
1324
- __classPrivateFieldGet ( this , _UnsyncedInputContainer_mappedFields , "f" ) . set ( modelName , element ) ;
1298
+ this . unsyncedModelFields . set ( modelName , element ) ;
1299
+ if ( ! this . unsyncedModelNames . includes ( modelName ) ) {
1300
+ this . unsyncedModelNames . push ( modelName ) ;
1301
+ }
1325
1302
return ;
1326
1303
}
1327
- __classPrivateFieldGet ( this , _UnsyncedInputContainer_unmappedFields , "f" ) . push ( element ) ;
1304
+ this . unsyncedNonModelFields . push ( element ) ;
1328
1305
}
1329
- all ( ) {
1330
- return [ ...__classPrivateFieldGet ( this , _UnsyncedInputContainer_unmappedFields , "f" ) , ...__classPrivateFieldGet ( this , _UnsyncedInputContainer_mappedFields , "f" ) . values ( ) ] ;
1306
+ resetUnsyncedFields ( ) {
1307
+ this . unsyncedModelFields . forEach ( ( value , key ) => {
1308
+ if ( ! this . unsyncedModelNames . includes ( key ) ) {
1309
+ this . unsyncedModelFields . delete ( key ) ;
1310
+ }
1311
+ } ) ;
1312
+ }
1313
+ allUnsyncedInputs ( ) {
1314
+ return [ ...this . unsyncedNonModelFields , ...this . unsyncedModelFields . values ( ) ] ;
1331
1315
}
1332
1316
markModelAsSynced ( modelName ) {
1333
- __classPrivateFieldGet ( this , _UnsyncedInputContainer_mappedFields , "f" ) . delete ( modelName ) ;
1317
+ const index = this . unsyncedModelNames . indexOf ( modelName ) ;
1318
+ if ( index !== - 1 ) {
1319
+ this . unsyncedModelNames . splice ( index , 1 ) ;
1320
+ }
1334
1321
}
1335
- getModifiedModels ( ) {
1336
- return Array . from ( __classPrivateFieldGet ( this , _UnsyncedInputContainer_mappedFields , "f" ) . keys ( ) ) ;
1322
+ getUnsyncedModelNames ( ) {
1323
+ return this . unsyncedModelNames ;
1337
1324
}
1338
1325
}
1339
- _UnsyncedInputContainer_mappedFields = new WeakMap ( ) , _UnsyncedInputContainer_unmappedFields = new WeakMap ( ) ;
1340
1326
1341
1327
class HookManager {
1342
1328
constructor ( ) {
@@ -1452,7 +1438,7 @@ class Component {
1452
1438
return promise ;
1453
1439
}
1454
1440
getUnsyncedModels ( ) {
1455
- return this . unsyncedInputsTracker . getModifiedModels ( ) ;
1441
+ return this . unsyncedInputsTracker . getUnsyncedModels ( ) ;
1456
1442
}
1457
1443
addChild ( child , modelBindings = [ ] ) {
1458
1444
if ( ! child . id ) {
@@ -1521,6 +1507,7 @@ class Component {
1521
1507
performRequest ( ) {
1522
1508
const thisPromiseResolve = this . nextRequestPromiseResolve ;
1523
1509
this . resetPromise ( ) ;
1510
+ this . unsyncedInputsTracker . resetUnsyncedFields ( ) ;
1524
1511
this . backendRequest = this . backend . makeRequest ( this . valueStore . all ( ) , this . pendingActions , this . valueStore . updatedModels , this . getChildrenFingerprints ( ) ) ;
1525
1512
this . hooks . triggerHook ( 'loading.state:started' , this . element , this . backendRequest ) ;
1526
1513
this . pendingActions = [ ] ;
0 commit comments