@awayjs/stage
Version:
Stage for AwayJS
63 lines (62 loc) • 1.93 kB
JavaScript
var State = /** @class */ (function () {
function State() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
this.values = [];
this.fixedValues = [];
this.dirty = true;
this._deltaDirty = [];
this._locked = false;
// eslint-disable-next-line prefer-rest-params
this.values = Array.prototype.slice.call(arguments);
}
State.prototype.lock = function (lock) {
this._locked = lock;
if (!lock)
return;
var v = this.values;
for (var i = 0, l = v.length; i < l; i++) {
this.fixedValues[i] = v[i];
}
this.fixedValues.length = v.length;
this.dirty = false;
};
State.prototype.set = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var ref = this._locked ? this.fixedValues : this.values;
var values = this.values;
var dirty = false;
for (var i = 0; i < args.length; i++) {
dirty = dirty || ref[i] !== args[i];
values[i] = args[i];
}
return this.dirty = dirty;
};
State.prototype.setAt = function (index, value) {
var v = this._locked ? this.fixedValues : this.values;
var dirty = v[index] !== value;
this.values[index] = value;
this.dirty = this.dirty || dirty;
return dirty;
};
State.prototype.deltaDirty = function () {
var delta = this._deltaDirty;
var v = this.values;
var f = this.fixedValues;
delta.length = v.length;
for (var i = 0; i < v.length; i++) {
delta[i] = v[i] !== f[i];
}
return delta;
};
State.prototype.reset = function () {
this.set();
};
return State;
}());
export { State };