You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
16 KiB
JavaScript

import scrollparent from './scrollparent';
var FcRectangleSelectService = /** @class */ (function () {
function FcRectangleSelectService(modelService, selectElement, applyFunction) {
this.selectRect = {
x1: 0,
x2: 0,
y1: 0,
y2: 0
};
this.modelService = modelService;
this.selectElement = selectElement;
this.$canvasElement = $(this.modelService.canvasHtmlElement);
this.$scrollParent = $(scrollparent(this.modelService.canvasHtmlElement));
this.applyFunction = applyFunction;
}
FcRectangleSelectService.prototype.mousedown = function (e) {
if (this.modelService.isEditable() && !e.ctrlKey && !e.metaKey && e.button === 0
&& this.selectElement.hidden) {
this.selectElement.hidden = false;
var offset = this.$canvasElement.offset();
this.selectRect.x1 = Math.round(e.pageX - offset.left);
this.selectRect.y1 = Math.round(e.pageY - offset.top);
this.selectRect.x2 = this.selectRect.x1;
this.selectRect.y2 = this.selectRect.y1;
this.updateSelectRect();
}
};
FcRectangleSelectService.prototype.mousemove = function (e) {
if (this.modelService.isEditable() && !e.ctrlKey && !e.metaKey && e.button === 0
&& !this.selectElement.hidden) {
var offset = this.$canvasElement.offset();
this.selectRect.x2 = Math.round(e.pageX - offset.left);
this.selectRect.y2 = Math.round(e.pageY - offset.top);
this.updateScroll(offset);
this.updateSelectRect();
}
};
FcRectangleSelectService.prototype.updateScroll = function (offset) {
var rect = this.$scrollParent[0].getBoundingClientRect();
var bottom = rect.bottom - offset.top;
var right = rect.right - offset.left;
var top = rect.top - offset.top;
var left = rect.left - offset.left;
if (this.selectRect.y2 - top < 25) {
var topScroll = 25 - (this.selectRect.y2 - top);
var scroll_1 = this.$scrollParent.scrollTop();
this.$scrollParent.scrollTop(scroll_1 - topScroll);
}
else if (bottom - this.selectRect.y2 < 40) {
var bottomScroll = 40 - (bottom - this.selectRect.y2);
var scroll_2 = this.$scrollParent.scrollTop();
this.$scrollParent.scrollTop(scroll_2 + bottomScroll);
}
if (this.selectRect.x2 - left < 25) {
var leftScroll = 25 - (this.selectRect.x2 - left);
var scroll_3 = this.$scrollParent.scrollLeft();
this.$scrollParent.scrollLeft(scroll_3 - leftScroll);
}
else if (right - this.selectRect.x2 < 40) {
var rightScroll = 40 - (right - this.selectRect.x2);
var scroll_4 = this.$scrollParent.scrollLeft();
this.$scrollParent.scrollLeft(scroll_4 + rightScroll);
}
};
FcRectangleSelectService.prototype.mouseup = function (e) {
if (this.modelService.isEditable() && !e.ctrlKey && !e.metaKey && e.button === 0
&& !this.selectElement.hidden) {
var rectBox = this.selectElement.getBoundingClientRect();
this.selectElement.hidden = true;
this.selectObjects(rectBox);
}
};
FcRectangleSelectService.prototype.updateSelectRect = function () {
var x3 = Math.min(this.selectRect.x1, this.selectRect.x2);
var x4 = Math.max(this.selectRect.x1, this.selectRect.x2);
var y3 = Math.min(this.selectRect.y1, this.selectRect.y2);
var y4 = Math.max(this.selectRect.y1, this.selectRect.y2);
this.selectElement.style.left = x3 + 'px';
this.selectElement.style.top = y3 + 'px';
this.selectElement.style.width = x4 - x3 + 'px';
this.selectElement.style.height = y4 - y3 + 'px';
};
FcRectangleSelectService.prototype.selectObjects = function (rectBox) {
var _this = this;
this.applyFunction(function () {
_this.modelService.selectAllInRect(rectBox);
});
};
return FcRectangleSelectService;
}());
export { FcRectangleSelectService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdGFuZ2xlc2VsZWN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtZmxvd2NoYXJ0LyIsInNvdXJjZXMiOlsibGliL3JlY3RhbmdsZXNlbGVjdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sWUFBWSxNQUFNLGdCQUFnQixDQUFDO0FBUzFDO0lBZUUsa0NBQVksWUFBNEIsRUFDNUIsYUFBMEIsRUFDMUIsYUFBa0Q7UUFmN0MsZUFBVSxHQUFjO1lBQ3ZDLEVBQUUsRUFBRSxDQUFDO1lBQ0wsRUFBRSxFQUFFLENBQUM7WUFDTCxFQUFFLEVBQUUsQ0FBQztZQUNMLEVBQUUsRUFBRSxDQUFDO1NBQ04sQ0FBQztRQVdBLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDckMsQ0FBQztJQUVNLDRDQUFTLEdBQWhCLFVBQWlCLENBQWE7UUFDNUIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDO2VBQzNFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNsQyxJQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxD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cUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmNNb2RlbFNlcnZpY2UgfSBmcm9tICcuL21vZGVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmNSZWN0Qm94IH0gZnJvbSAnLi9uZ3gtZmxvd2NoYXJ0Lm1vZGVscyc7XG5pbXBvcnQgc2Nyb2xscGFyZW50IGZyb20gJy4vc2Nyb2xscGFyZW50JztcblxuaW50ZXJmYWNlIFJlY3RhbmdsZSB7XG4gIHgxOiBudW1iZXI7XG4gIHgyOiBudW1iZXI7XG4gIHkxOiBudW1iZXI7XG4gIHkyOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBGY1JlY3RhbmdsZVNlbGVjdFNlcnZpY2Uge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0UmVjdDogUmVjdGFuZ2xlID0ge1xuICAgIHgxOiAwLFxuICAgIHgyOiAwLFxuICAgIHkxOiAwLFxuICAgIHkyOiAwXG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb2RlbFNlcnZpY2U6IEZjTW9kZWxTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIHJlYWRvbmx5ICRjYW52YXNFbGVtZW50OiBKUXVlcnk8SFRNTEVsZW1lbnQ+O1xuICBwcml2YXRlIHJlYWRvbmx5ICRzY3JvbGxQYXJlbnQ6IEpRdWVyeTxIVE1MRWxlbWVudD47XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwbHlGdW5jdGlvbjogPFQ+KGZuOiAoLi4uYXJnczogYW55W10pID0+IFQpID0+IFQ7XG5cbiAgY29uc3RydWN0b3IobW9kZWxTZXJ2aWNlOiBGY01vZGVsU2VydmljZSxcbiAgICAgICAgICAgICAgc2VsZWN0RWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICAgIGFwcGx5RnVuY3Rpb246IDxUPihmbjogKC4uLmFyZ3M6IGFueVtdKSA9PiBUKSA9PiBUKSB7XG4gICAgdGhpcy5tb2RlbFNlcnZpY2UgPSBtb2RlbFNlcnZpY2U7XG4gICAgdGhpcy5zZWxlY3RFbGVtZW50ID0gc2VsZWN0RWxlbWVudDtcbiAgICB0aGlzLiRjYW52YXNFbGVtZW50ID0gJCh0aGlzLm1vZGVsU2VydmljZS5jYW52YXNIdG1sRWxlbWVudCk7XG4gICAgdGhpcy4kc2Nyb2xsUGFyZW50ID0gJChzY3JvbGxwYXJlbnQodGhpcy5tb2RlbFNlcnZpY2UuY2FudmFzSHRtbEVsZW1lbnQpKTtcbiAgICB0aGlzLmFwcGx5RnVuY3Rpb24gPSBhcHBseUZ1bmN0aW9uO1xuICB9XG5cbiAgcHVibGljIG1vdXNlZG93bihlOiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMubW9kZWxTZXJ2aWNlLmlzRWRpdGFibGUoKSAmJiAhZS5jdHJsS2V5ICYmICFlLm1ldGFLZXkgJiYgZS5idXR0b24gPT09IDBcbiAgICAgICYmIHRoaXMuc2VsZWN0RWxlbWVudC5oaWRkZW4pIHtcbiAgICAgIHRoaXMuc2VsZWN0RWxlbWVudC5oaWRkZW4gPSBmYWxzZTtcbiAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuJGNhbnZhc0VsZW1lbnQub2Zmc2V0KCk7XG4gICAgICB0aGlzLnNlbGVjdFJlY3QueDEgPSBNYXRoLnJvdW5kKGUucGFnZVggLSBvZmZzZXQubGVmdCk7XG4gICAgICB0aGlzLnNlbGVjdFJlY3QueTEgPSBNYXRoLnJvdW5kKGUucGFnZVkgLSBvZmZzZXQudG9wKTtcbiAgICAgIHRoaXMuc2VsZWN0UmVjdC54MiA9IHRoaXMuc2VsZWN0UmVjdC54MTtcbiAgICAgIHRoaXMuc2VsZWN0UmVjdC55MiA9IHRoaXMuc2VsZWN0UmVjdC55MTtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0UmVjdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBtb3VzZW1vdmUoZTogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLm1vZGVsU2VydmljZS5pc0VkaXRhYmxlKCkgJiYgIWUuY3RybEtleSAmJiAhZS5tZXRhS2V5ICYmIGUuYnV0dG9uID09PSAwXG4gICAgICAmJiAhdGhpcy5zZWxlY3RFbGVtZW50LmhpZGRlbikge1xuICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy4kY2FudmFzRWxlbWVudC5vZmZzZXQoKTtcbiAgICAgIHRoaXMuc2VsZWN0UmVjdC54MiA9IE1hdGgucm91bmQoZS5wYWdlWCAtIG9mZnNldC5sZWZ0KTtcbiAgICAgIHRoaXMuc2VsZWN0UmVjdC55MiA9IE1hdGgucm91bmQoZS5wYWdlWSAtIG9mZnNldC50b3ApO1xuICAgICAgdGhpcy51cGRhdGVTY3JvbGwob2Zmc2V0KTtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0UmVjdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2Nyb2xsKG9mZnNldDogSlF1ZXJ5LkNvb3JkaW5hdGVzKSB7XG4gICAgY29uc3QgcmVjdCA9IHRoaXMuJHNjcm9sbFBhcmVudFswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBib3R0b20gPSByZWN0LmJvdHRvbSAtIG9mZnNldC50b3A7XG4gICAgY29uc3QgcmlnaHQgPSByZWN0LnJpZ2h0IC0gb2Zmc2V0LmxlZnQ7XG4gICAgY29uc3QgdG9wID0gcmVjdC50b3AgLSBvZmZzZXQudG9wO1xuICAgIGNvbnN0IGxlZnQgPSByZWN0LmxlZnQgLSBvZmZzZXQubGVmdDtcbiAgICBpZiAodGhpcy5zZWxlY3RSZWN0LnkyIC0gdG9wIDwgMjUpIHtcbiAgICAgIGNvbnN0IHRvcFNjcm9sbCA9IDI1IC0gKHRoaXMuc2VsZWN0UmVjdC55MiAtIHRvcCk7XG4gICAgICBjb25zdCBzY3JvbGwgPSB0aGlzLiRzY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCk7XG4gICAgICB0aGlzLiRzY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKHNjcm9sbCAtIHRvcFNjcm9sbCk7XG4gICAgfSBlbHNlIGlmIChib3R0b20gLSB0aGlzLnNlbGVjdFJlY3QueTIgPCA0MCkge1xuICAgICAgY29uc3QgYm90dG9tU2Nyb2xsID0gNDAgLSAoYm90dG9tIC0gdGhpcy5zZWxlY3RSZWN0LnkyKTtcbiAgICAgIGNvbnN0IHNjcm9sbCA9IHRoaXMuJHNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKTtcbiAgICAgIHRoaXMuJHNjcm9sbFBhcmVudC5zY3JvbGxUb3Aoc2Nyb2xsICsgYm90dG9tU2Nyb2xsKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0UmVjdC54MiAtIGxlZnQgPCAyNSkge1xuICAgICAgY29uc3QgbGVmdFNjcm9sbCA9IDI1IC0gKHRoaXMuc2VsZWN0UmVjdC54MiAtIGxlZnQpO1xuICAgICAgY29uc3Qgc2Nyb2xsID0gdGhpcy4kc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKTtcbiAgICAgIHRoaXMuJHNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KHNjcm9sbCAtIGxlZnRTY3JvbGwpO1xuICAgIH0gZWxzZSBpZiAocmlnaHQgLSB0aGlzLnNlbGVjdFJlY3QueDIgPCA0MCkge1xuICAgICAgY29uc3QgcmlnaHRTY3JvbGwgPSA0MCAtIChyaWdodCAtIHRoaXMuc2VsZWN0UmVjdC54Mik7XG4gICAgICBjb25zdCBzY3JvbGwgPSB0aGlzLiRzY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpO1xuICAgICAgdGhpcy4kc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoc2Nyb2xsICsgcmlnaHRTY3JvbGwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBtb3VzZXVwKGU6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5tb2RlbFNlcnZpY2UuaXNFZGl0YWJsZSgpICYmICFlLmN0cmxLZXkgJiYgIWUubWV0YUtleSAmJiBlLmJ1dHRvbiA9PT0gMFxuICAgICAgJiYgIXRoaXMuc2VsZWN0RWxlbWVudC5oaWRkZW4pIHtcbiAgICAgIGNvbnN0IHJlY3RCb3ggPSB0aGlzLnNlbGVjdEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgYXMgRmNSZWN0Qm94O1xuICAgICAgdGhpcy5zZWxlY3RFbGVtZW50LmhpZGRlbiA9IHRydWU7XG4gICAgICB0aGlzLnNlbGVjdE9iamVjdHMocmVjdEJveCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RSZWN0KCkge1xuICAgIGNvbnN0IHgzID0gTWF0aC5taW4odGhpcy5zZWxlY3RSZWN0LngxLCB0aGlzLnNlbGVjdFJlY3QueDIpO1xuICAgIGNvbnN0IHg0ID0gTWF0aC5tYXgodGhpcy5zZWxlY3RSZWN0LngxLCB0aGlzLnNlbGVjdFJlY3QueDIpO1xuICAgIGNvbnN0IHkzID0gTWF0aC5taW4odGhpcy5zZWxlY3RSZWN0LnkxLCB0aGlzLnNlbGVjdFJlY3QueTIpO1xuICAgIGNvbnN0IHk0ID0gTWF0aC5tYXgodGhpcy5zZWxlY3RSZWN0LnkxLCB0aGlzLnNlbGVjdFJlY3QueTIpO1xuICAgIHRoaXMuc2VsZWN0RWxlbWVudC5zdHlsZS5sZWZ0ID0geDMgKyAncHgnO1xuICAgIHRoaXMuc2VsZWN0RWxlbWVudC5zdHlsZS50b3AgPSB5MyArICdweCc7XG4gICAgdGhpcy5zZWxlY3RFbGVtZW50LnN0eWxlLndpZHRoID0geDQgLSB4MyArICdweCc7XG4gICAgdGhpcy5zZWxlY3RFbGVtZW50LnN0eWxlLmhlaWdodCA9IHk0IC0geTMgKyAncHgnO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RPYmplY3RzKHJlY3RCb3g6IEZjUmVjdEJveCkge1xuICAgIHRoaXMuYXBwbHlGdW5jdGlvbigoKSA9PiB7XG4gICAgICB0aGlzLm1vZGVsU2VydmljZS5zZWxlY3RBbGxJblJlY3QocmVjdEJveCk7XG4gICAgfSk7XG4gIH1cblxufVxuXG4iXX0=