gd-canvas
Version:
This set of libraries was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.0 and no dependencies accept gd-tree (it has jquery and jstree) and gd-graph (it has jquery and chart.js).
125 lines • 15.9 kB
JavaScript
var Action = /** @class */ (function () {
function Action(name, obj) {
this.name = name;
this.obj = obj;
this.Name = name;
this.Obj = obj;
this.init_x = obj.X;
this.init_y = obj.Y;
this.init_w = obj.W;
this.init_h = obj.H;
this.init_angle = obj.Angle;
}
Action.prototype.record = function (x, y, w, h, a) {
switch (this.Name) {
case 'move':
this.x = x - this.init_x;
this.y = y - this.init_y;
break;
case 'resize':
this.w = w - this.init_w;
this.h = h - this.init_h;
break;
case 'rotate':
this.a = a - this.init_angle;
break;
}
};
Action.prototype.undo = function () {
switch (this.Name) {
case 'move':
this.Obj.MoveOffset(-this.x, -this.y);
break;
case 'resize':
this.Obj.Resize1(-this.w, -this.h);
break;
case 'rotate':
this.Obj.Rotate1(-this.a);
break;
}
};
Action.prototype.redo = function () {
switch (this.Name) {
case 'move':
this.Obj.MoveOffset(this.x, this.y);
break;
case 'resize':
this.Obj.Resize1(this.w, this.h);
break;
case 'rotate':
this.Obj.Rotate1(this.a);
break;
}
};
return Action;
}());
export { Action };
var Transaction = /** @class */ (function () {
function Transaction() {
this.isRecording = false;
this.actions = new Array();
}
Transaction.prototype.addAction = function (name, obj) {
var action = new Action(name, obj);
this.actions.push(action);
return action;
};
Transaction.prototype.recordAction = function (x, y, w, h, a) {
for (var i = 0; i < this.actions.length; ++i) {
this.actions[i].record(x, y, w, h, a);
}
};
Transaction.prototype.undo = function () {
for (var i = 0; i < this.actions.length; ++i) {
this.actions[i].undo();
}
};
Transaction.prototype.redo = function () {
for (var i = 0; i < this.actions.length; ++i) {
this.actions[i].redo();
}
};
return Transaction;
}());
export { Transaction };
var UndoRedoManager = /** @class */ (function () {
function UndoRedoManager() {
this.transactions = new Array();
this.current = -1;
}
UndoRedoManager.prototype.TransactionStart = function () {
var transaction = new Transaction();
this.transactions.push(transaction);
this.current = this.transactions.length - 1;
return transaction;
};
UndoRedoManager.prototype.TransactionEnd = function () {
this.transactions[this.current].isRecording = false;
};
UndoRedoManager.prototype.IsUndoEmpty = function () {
return this.current === -1;
};
UndoRedoManager.prototype.IsRedoEmpty = function () {
return this.current === this.transactions.length - 1;
};
UndoRedoManager.prototype.CreateAction = function (name, obj) {
this.transactions[this.current].addAction(name, obj);
};
UndoRedoManager.prototype.RecordAction = function (x, y, w, h, a) {
this.transactions[this.current].isRecording = true;
this.transactions[this.current].recordAction(x, y, w, h, a);
};
UndoRedoManager.prototype.undo = function () {
if (this.current >= 0) {
this.transactions[this.current--].undo();
}
};
UndoRedoManager.prototype.redo = function () {
if (this.current < this.transactions.length - 1) {
this.transactions[++this.current].redo();
}
};
return UndoRedoManager;
}());
export { UndoRedoManager };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2QtY2FudmFzLnVuZG9SZWRvLmpzIiwic291cmNlUm9vdCI6Im5nOi8vZ2QtY2FudmFzLyIsInNvdXJjZXMiOlsibGliL2dkLWNhbnZhcy51bmRvUmVkby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQTtJQWdCSSxnQkFBcUIsSUFBYSxFQUFVLEdBQVM7UUFBaEMsU0FBSSxHQUFKLElBQUksQ0FBUztRQUFVLFFBQUcsR0FBSCxHQUFHLENBQU07UUFFakQsSUFBSSxDQUFDLElBQUksR0FBUyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsR0FBVSxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQU8sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRUQsdUJBQU0sR0FBTixVQUFRLENBQVUsRUFBRSxDQUFVLEVBQUUsQ0FBVSxFQUFFLENBQVUsRUFBRSxDQUFVO1FBRTlELFFBQVEsSUFBSSxDQUFDLElBQUksRUFDakI7WUFDSSxLQUFLLE1BQU07Z0JBQ1AsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDekIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDN0IsTUFBTTtZQUNOLEtBQUssUUFBUTtnQkFDVCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUN6QixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFD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SUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFFLENBQUM7SUFDbkUsQ0FBQztJQUVNLDhCQUFJLEdBQVg7UUFFSSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUNyQjtZQUNJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBRU0sOEJBQUksR0FBWDtRQUVJLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQy9DO1lBQ0ksSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUM1QztJQUNMLENBQUM7SUFDTCxzQkFBQztBQUFELENBQUMsQUF4REQsSUF3REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgSVRyYW5zYWN0aW9uXHJcbntcclxuICAgIGFkZEFjdGlvbiggbmFtZSA6IHN0cmluZywgb2JqIDogYW55ICkgOiBJQWN0aW9uO1xyXG59XHJcbmludGVyZmFjZSBJQWN0aW9uXHJcbntcclxuICAgIHJlY29yZCggeCA6IG51bWJlciwgeSA6IG51bWJlciwgdyA6IG51bWJlciwgaCA6IG51bWJlciwgYSA6IG51bWJlciApOiB2b2lkO1xyXG4gICAgdW5kbygpICA6IHZvaWQ7XHJcbiAgICByZWRvKCkgIDogdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFjdGlvbiBpbXBsZW1lbnRzIElBY3Rpb25cclxue1xyXG4gICAgcHJpdmF0ZSBpbml0X3ggICAgICA6IG51bWJlcjtcclxuICAgIHByaXZhdGUgaW5pdF95ICAgICAgOiBudW1iZXI7XHJcbiAgICBwcml2YXRlIGluaXRfdyAgICAgIDogbnVtYmVyO1xyXG4gICAgcHJpdmF0ZSBpbml0X2ggICAgICA6IG51bWJlcjtcclxuICAgIHByaXZhdGUgaW5pdF9hbmdsZSAgOiBudW1iZXI7XHJcblxyXG4gICAgcHJpdmF0ZSB4ICAgICAgICAgICA6IG51bWJlcjtcclxuICAgIHByaXZhdGUgeSAgICAgICAgICAgOiBudW1iZXI7XHJcbiAgICBwcml2YXRlIHcgICAgICAgICAgIDogbnVtYmVyO1xyXG4gICAgcHJpdmF0ZSBoICAgICAgICAgICA6IG51bWJlcjtcclxuICAgIHByaXZhdGUgYSAgICAgICAgICAgOiBudW1iZXI7XHJcbiAgICBwcml2YXRlIE9iaiAgICAgICAgIDogYW55O1xyXG4gICAgcHJpdmF0ZSBOYW1lICAgICAgICA6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvciggcHJpdmF0ZSBuYW1lIDogc3RyaW5nLCBwcml2YXRlIG9iaiA6IGFueSApXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5OYW1lICAgICAgID0gbmFtZTtcclxuICAgICAgICB0aGlzLk9iaiAgICAgICAgPSBvYmo7XHJcbiAgICAgICAgdGhpcy5pbml0X3ggICAgID0gb2JqLlg7XHJcbiAgICAgICAgdGhpcy5pbml0X3kgICAgID0gb2JqLlk7XHJcbiAgICAgICAgdGhpcy5pbml0X3cgICAgID0gb2JqLlc7XHJcbiAgICAgICAgdGhpcy5pbml0X2ggICAgID0gb2JqLkg7XHJcbiAgICAgICAgdGhpcy5pbml0X2FuZ2xlID0gb2JqLkFuZ2xlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlY29yZCggeCA6IG51bWJlciwgeSA6IG51bWJlciwgdyA6IG51bWJlciwgaCA6IG51bWJlciwgYSA6IG51bWJlciApXHJcbiAgICB7XHJcbiAgICAgICAgc3dpdGNoKCB0aGlzLk5hbWUgKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY2FzZSAnbW92ZScgOlxyXG4gICAgICAgICAgICAgICAgdGhpcy54ID0geCAtIHRoaXMuaW5pdF94O1xyXG4gICAgICAgICAgICAgICAgdGhpcy55ID0geSAtIHRoaXMuaW5pdF95O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAncmVzaXplJyA6XHJcbiAgICAgICAgICAgICAgICB0aGlzLncgPSB3IC0gdGhpcy5pbml0X3c7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmggPSBoIC0gdGhpcy5pbml0X2g7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdyb3RhdGUnIDpcclxuICAgICAgICAgICAgICAgIHRoaXMuYSA9IGEgLSB0aGlzLmluaXRfYW5nbGU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1bmRvKClcclxuICAgIHtcclxuICAgICAgICBzd2l0Y2goIHRoaXMuTmFtZSApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjYXNlICdtb3ZlJyAgIDogdGhpcy5PYmouTW92ZU9mZnNldCggLXRoaXMueCwgLXRoaXMueSApOyBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAncmVzaXplJyA6IHRoaXMuT2JqLlJlc2l6ZTEgICAoIC10aGlzLncsIC10aGlzLmggKTsgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3JvdGF0ZScgOiB0aGlzLk9iai5Sb3RhdGUxICAgKCAtdGhpcy5hICAgICAgICAgICk7IGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZWRvKClcclxuICAgIHtcclxuICAgICAgICBzd2l0Y2goIHRoaXMuTmFtZSApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjYXNlICdtb3ZlJyAgIDogdGhpcy5PYmouTW92ZU9mZnNldCggdGhpcy54LCB0aGlzLnkgKTsgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3Jlc2l6ZScgOiB0aGlzLk9iai5SZXNpemUxICAgKCB0aGlzLncsIHRoaXMuaCApOyBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAncm90YXRlJyA6IHRoaXMuT2JqLlJvdGF0ZTEgICAoIHRoaXMuYSAgICAgICAgICk7IGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGltcGxlbWVudHMgSVRyYW5zYWN0aW9uXHJcbntcclxuICAgIHB1YmxpYyAgaXNSZWNvcmRpbmcgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgYWN0aW9ucyAgICAgPSBuZXcgQXJyYXkoKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gICAgcHVibGljIGFkZEFjdGlvbiggbmFtZSA6IHN0cmluZywgb2JqIDogYW55ICkgOiBJQWN0aW9uXHJcbiAgICB7XHJcbiAgICAgICAgY29uc3QgYWN0aW9uID0gbmV3IEFjdGlvbiggbmFtZSwgb2JqICk7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25zLnB1c2goIGFjdGlvbiApO1xyXG4gICAgICAgIHJldHVybiBhY3Rpb247XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlY29yZEFjdGlvbiggeCA6IG51bWJlciwgeSA6IG51bWJlciwgdyA6IG51bWJlciwgaCA6IG51bWJlciwgYSA6IG51bWJlciApXHJcbiAgICB7XHJcbiAgICAgICAgZm9yKCBsZXQgaSA9IDA7IGkgPCB0aGlzLmFjdGlvbnMubGVuZ3RoOyArK2kgKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5hY3Rpb25zW2ldLnJlY29yZCggeCwgeSwgdywgaCwgYSApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdW5kbygpXHJcbiAgICB7XHJcbiAgICAgICAgZm9yKCBsZXQgaSA9IDA7IGkgPCB0aGlzLmFjdGlvbnMubGVuZ3RoOyArK2kgKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5hY3Rpb25zW2ldLnVuZG8oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZG8oKVxyXG4gICAge1xyXG4gICAgICAgIGZvciggbGV0IGkgPSAwOyBpIDwgdGhpcy5hY3Rpb25zLmxlbmd0aDsgKytpIClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uc1tpXS5yZWRvKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVW5kb1JlZG9NYW5hZ2VyXHJcbntcclxuICAgIHB1YmxpYyB0cmFuc2FjdGlvbnMgPSBuZXcgQXJyYXkoKTtcclxuICAgIHB1YmxpYyBjdXJyZW50ID0gLTE7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICAgIFRyYW5zYWN0aW9uU3RhcnQoKSA6IElUcmFuc2FjdGlvblxyXG4gICAge1xyXG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uICA9IG5ldyBUcmFuc2FjdGlvbigpO1xyXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25zLnB1c2goIHRyYW5zYWN0aW9uICk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy50cmFuc2FjdGlvbnMubGVuZ3RoIC0gMTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIFRyYW5zYWN0aW9uRW5kKClcclxuICAgIHtcclxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uc1t0aGlzLmN1cnJlbnRdLmlzUmVjb3JkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIElzVW5kb0VtcHR5KCkgOiBib29sZWFuXHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudCA9PT0gLTE7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgSXNSZWRvRW1wdHkoKSA6IGJvb2xlYW5cclxuICAgIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50ID09PSB0aGlzLnRyYW5zYWN0aW9ucy5sZW5ndGgtMTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgQ3JlYXRlQWN0aW9uKCBuYW1lIDogc3RyaW5nLCAgb2JqIDogYW55IClcclxuICAgIHtcclxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uc1t0aGlzLmN1cnJlbnRdLmFkZEFjdGlvbiggbmFtZSwgb2JqICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIFJlY29yZEFjdGlvbiggeCA6IG51bWJlciwgIHkgOiBudW1iZXIsIHcgOiBudW1iZXIsIGggOiBudW1iZXIsIGEgOiBudW1iZXIgKVxyXG4gICAge1xyXG4gICAgICAgICB0aGlzLnRyYW5zYWN0aW9uc1t0aGlzLmN1cnJlbnRdLmlzUmVjb3JkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgdGhpcy50cmFuc2FjdGlvbnNbdGhpcy5jdXJyZW50XS5yZWNvcmRBY3Rpb24oIHgsIHksIHcsIGgsIGEgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdW5kbygpXHJcbiAgICB7XHJcbiAgICAgICAgaWYoIHRoaXMuY3VycmVudCA+PSAwIClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25zW3RoaXMuY3VycmVudC0tXS51bmRvKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWRvKClcclxuICAgIHtcclxuICAgICAgICBpZiggdGhpcy5jdXJyZW50IDwgdGhpcy50cmFuc2FjdGlvbnMubGVuZ3RoIC0gMSApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uc1srK3RoaXMuY3VycmVudF0ucmVkbygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=