UNPKG

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
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=