@sitecore/sc-contenthub-webclient-sdk
Version:
Sitecore Content Hub WebClient SDK.
39 lines • 1.56 kB
JavaScript
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