mirror of
https://github.com/rxliuli/apps.apple.com.git
synced 2025-11-10 01:00:33 +00:00
init commit
This commit is contained in:
58
node_modules/@jet/environment/util/rewindable-value.js
generated
vendored
Normal file
58
node_modules/@jet/environment/util/rewindable-value.js
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.RewindableValue = void 0;
|
||||
const clone_1 = require("./clone");
|
||||
/* eslint-disable no-underscore-dangle */
|
||||
/**
|
||||
* A lightweight wrapper around a primitive value which allows its state
|
||||
* to saved and later restored.
|
||||
*/
|
||||
class RewindableValue {
|
||||
/**
|
||||
* Create a rewindable value.
|
||||
*
|
||||
* @param initialValue - The initial value for the new instance.
|
||||
*/
|
||||
constructor(initialValue) {
|
||||
this._values = [initialValue];
|
||||
}
|
||||
/**
|
||||
* Returns the current value of this instance.
|
||||
*/
|
||||
get() {
|
||||
return this._values[this._values.length - 1];
|
||||
}
|
||||
/**
|
||||
* Replace the current value of this instance.
|
||||
*
|
||||
* @param newValue - The value to assign this instance.
|
||||
*/
|
||||
set(newValue) {
|
||||
this._values[this._values.length - 1] = newValue;
|
||||
}
|
||||
/**
|
||||
* Save the current state of this value.
|
||||
*
|
||||
* Calls to this method should be balanced by calls to `restore`.
|
||||
*/
|
||||
save() {
|
||||
this._values.push(this._values[this._values.length - 1]);
|
||||
}
|
||||
/**
|
||||
* Restore a previously saved value.
|
||||
*/
|
||||
restore() {
|
||||
if (this._values.length === 1) {
|
||||
throw new RangeError("Calls to restore must balance previous calls to save");
|
||||
}
|
||||
this._values.pop();
|
||||
}
|
||||
// section Cloneable
|
||||
clone() {
|
||||
const copy = (0, clone_1.shallowCloneOf)(this);
|
||||
copy._values = this._values.slice();
|
||||
return copy;
|
||||
}
|
||||
}
|
||||
exports.RewindableValue = RewindableValue;
|
||||
//# sourceMappingURL=rewindable-value.js.map
|
||||
Reference in New Issue
Block a user