rc-virtual-list
Advanced tools
Comparing version 0.0.0-alpha.15 to 0.0.0-alpha.16
@@ -1,4 +0,4 @@ | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { keys.push.apply(keys, Object.getOwnPropertySymbols(object)); } if (enumerableOnly) keys = keys.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; } | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { if (i % 2) { var source = arguments[i] != null ? arguments[i] : {}; ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(arguments[i])); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(arguments[i], key)); }); } } return target; } | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } | ||
@@ -5,0 +5,0 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } |
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { keys.push.apply(keys, Object.getOwnPropertySymbols(object)); } if (enumerableOnly) keys = keys.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; } | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { if (i % 2) { var source = arguments[i] != null ? arguments[i] : {}; ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(arguments[i])); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(arguments[i], key)); }); } } return target; } | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } | ||
@@ -256,3 +256,3 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
if (onSkipRender && (changedItemIndex < startIndex || endIndex < changedItemIndex)) { | ||
if (onSkipRender && (changedItemIndex === null || changedItemIndex < startIndex || endIndex < changedItemIndex)) { | ||
onSkipRender(); | ||
@@ -338,3 +338,3 @@ } | ||
}); | ||
} else if (prevData.length !== data.length && height) { | ||
} else if (prevData.length !== data.length && changedItemIndex !== null && height) { | ||
/** | ||
@@ -341,0 +341,0 @@ * Re-calculate the item position since `data` length changed. |
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { keys.push.apply(keys, Object.getOwnPropertySymbols(object)); } if (enumerableOnly) keys = keys.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; } | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { if (i % 2) { var source = arguments[i] != null ? arguments[i] : {}; ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(arguments[i])); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(arguments[i], key)); }); } } return target; } | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } | ||
@@ -7,0 +7,0 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } |
@@ -42,40 +42,46 @@ /** | ||
export function findListDiffIndex(originList, targetList, getKey) { | ||
if (originList.length === targetList.length) { | ||
var originLen = originList.length; | ||
var targetLen = targetList.length; // Skip if more than 1 content is diff | ||
if (Math.abs(originLen - targetLen) !== 1) { | ||
return null; | ||
} | ||
var startIndex = 0; | ||
var endIndex = Math.max(originList.length, targetList.length) - 1; | ||
var midIndex = Math.floor((startIndex + endIndex) / 2); | ||
var keyCache = new Map(); | ||
var shortList; | ||
var longList; | ||
function getCacheKey(item) { | ||
if (!keyCache.has(item)) { | ||
keyCache.set(item, item !== undefined ? getKey(item) : { | ||
__EMPTY_ITEM__: true | ||
}); | ||
if (originLen < targetLen) { | ||
shortList = originList; | ||
longList = targetList; | ||
} else { | ||
shortList = targetList; | ||
longList = originList; | ||
} | ||
var notExistKey = { | ||
__EMPTY_ITEM__: true | ||
}; | ||
function getItemKey(item) { | ||
if (item) { | ||
return getKey(item); | ||
} | ||
return keyCache.get(item); | ||
} | ||
return notExistKey; | ||
} // Loop to find diff one | ||
while (startIndex !== midIndex || midIndex !== endIndex) { | ||
var originMidKey = getCacheKey(originList[midIndex]); | ||
var targetMidKey = getCacheKey(targetList[midIndex]); | ||
if (originMidKey === targetMidKey) { | ||
startIndex = midIndex; | ||
} else { | ||
endIndex = midIndex; | ||
} // Check if there only 2 index left | ||
var diffIndex = 0; | ||
for (var i = 0; i < longList.length; i += 1) { | ||
var shortKey = getItemKey(shortList[i]); | ||
var longKey = getItemKey(longList[i]); | ||
if (startIndex === endIndex - 1) { | ||
return getCacheKey(originList[startIndex]) !== getCacheKey(targetList[startIndex]) ? startIndex : endIndex; | ||
if (shortKey !== longKey) { | ||
diffIndex = shortKey === getItemKey(longList[i + 1]) ? i : null; | ||
break; | ||
} | ||
midIndex = Math.floor((startIndex + endIndex) / 2); | ||
} | ||
return midIndex; | ||
return diffIndex; | ||
} |
@@ -16,5 +16,5 @@ "use strict"; | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { keys.push.apply(keys, Object.getOwnPropertySymbols(object)); } if (enumerableOnly) keys = keys.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; } | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { if (i % 2) { var source = arguments[i] != null ? arguments[i] : {}; ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(arguments[i])); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(arguments[i], key)); }); } } return target; } | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } | ||
@@ -21,0 +21,0 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } |
@@ -24,5 +24,5 @@ "use strict"; | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { keys.push.apply(keys, Object.getOwnPropertySymbols(object)); } if (enumerableOnly) keys = keys.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; } | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { if (i % 2) { var source = arguments[i] != null ? arguments[i] : {}; ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(arguments[i])); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(arguments[i], key)); }); } } return target; } | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } | ||
@@ -273,3 +273,3 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
if (onSkipRender && (changedItemIndex < startIndex || endIndex < changedItemIndex)) { | ||
if (onSkipRender && (changedItemIndex === null || changedItemIndex < startIndex || endIndex < changedItemIndex)) { | ||
onSkipRender(); | ||
@@ -355,3 +355,3 @@ } | ||
}); | ||
} else if (prevData.length !== data.length && height) { | ||
} else if (prevData.length !== data.length && changedItemIndex !== null && height) { | ||
/** | ||
@@ -358,0 +358,0 @@ * Re-calculate the item position since `data` length changed. |
@@ -22,5 +22,5 @@ "use strict"; | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { keys.push.apply(keys, Object.getOwnPropertySymbols(object)); } if (enumerableOnly) keys = keys.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; } | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { if (i % 2) { var source = arguments[i] != null ? arguments[i] : {}; ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(arguments[i])); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(arguments[i], key)); }); } } return target; } | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } | ||
@@ -27,0 +27,0 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } |
@@ -51,40 +51,46 @@ "use strict"; | ||
function findListDiffIndex(originList, targetList, getKey) { | ||
if (originList.length === targetList.length) { | ||
var originLen = originList.length; | ||
var targetLen = targetList.length; // Skip if more than 1 content is diff | ||
if (Math.abs(originLen - targetLen) !== 1) { | ||
return null; | ||
} | ||
var startIndex = 0; | ||
var endIndex = Math.max(originList.length, targetList.length) - 1; | ||
var midIndex = Math.floor((startIndex + endIndex) / 2); | ||
var keyCache = new Map(); | ||
var shortList; | ||
var longList; | ||
function getCacheKey(item) { | ||
if (!keyCache.has(item)) { | ||
keyCache.set(item, item !== undefined ? getKey(item) : { | ||
__EMPTY_ITEM__: true | ||
}); | ||
if (originLen < targetLen) { | ||
shortList = originList; | ||
longList = targetList; | ||
} else { | ||
shortList = targetList; | ||
longList = originList; | ||
} | ||
var notExistKey = { | ||
__EMPTY_ITEM__: true | ||
}; | ||
function getItemKey(item) { | ||
if (item) { | ||
return getKey(item); | ||
} | ||
return keyCache.get(item); | ||
} | ||
return notExistKey; | ||
} // Loop to find diff one | ||
while (startIndex !== midIndex || midIndex !== endIndex) { | ||
var originMidKey = getCacheKey(originList[midIndex]); | ||
var targetMidKey = getCacheKey(targetList[midIndex]); | ||
if (originMidKey === targetMidKey) { | ||
startIndex = midIndex; | ||
} else { | ||
endIndex = midIndex; | ||
} // Check if there only 2 index left | ||
var diffIndex = 0; | ||
for (var i = 0; i < longList.length; i += 1) { | ||
var shortKey = getItemKey(shortList[i]); | ||
var longKey = getItemKey(longList[i]); | ||
if (startIndex === endIndex - 1) { | ||
return getCacheKey(originList[startIndex]) !== getCacheKey(targetList[startIndex]) ? startIndex : endIndex; | ||
if (shortKey !== longKey) { | ||
diffIndex = shortKey === getItemKey(longList[i + 1]) ? i : null; | ||
break; | ||
} | ||
midIndex = Math.floor((startIndex + endIndex) / 2); | ||
} | ||
return midIndex; | ||
return diffIndex; | ||
} |
{ | ||
"name": "rc-virtual-list", | ||
"version": "0.0.0-alpha.15", | ||
"version": "0.0.0-alpha.16", | ||
"description": "React Virtual List Component", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
2176
101661