UNPKG

@sitecore/sc-contenthub-webclient-sdk

Version:

Sitecore Content Hub WebClient SDK.

39 lines 1.56 kB
class DirtyValueCalculator { setOriginalValue(value) { this._originalHashValue = DirtyValueCalculator.computeHash(value); } isDirty(currentValue) { const valueHash = DirtyValueCalculator.computeHash(currentValue); if (typeof currentValue === "boolean" && this._originalHashValue === DirtyValueCalculator.NullHash && valueHash === DirtyValueCalculator.FalseValueHash) { return false; } if (typeof currentValue === "string" && this._originalHashValue === DirtyValueCalculator.NullHash && valueHash === DirtyValueCalculator.EmptyStringHash) { return false; } return valueHash !== this._originalHashValue; } static computeHash(value) { return DirtyValueCalculator.getStringHash(`${typeof value}_${JSON.stringify(value)}`); } static getStringHash(str) { let hash1 = 5381; let hash2 = 52711; let i = str.length; while (i--) { const char = str.charCodeAt(i); hash1 = (hash1 * 33) ^ char; hash2 = (hash2 * 33) ^ char; } return ((hash1 >>> 0) << 12) + (hash2 >>> 0); } } DirtyValueCalculator.NullHash = DirtyValueCalculator.computeHash(null); DirtyValueCalculator.EmptyStringHash = DirtyValueCalculator.computeHash(""); DirtyValueCalculator.FalseValueHash = DirtyValueCalculator.computeHash(false); export default DirtyValueCalculator; export { DirtyValueCalculator }; //# sourceMappingURL=dirty-value-calculator.js.map