UNPKG

ornamentum

Version:
66 lines 5.91 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; /** * Element drag and drop service. */ export class DragAndDropService { /** * Register drag and drop event. * @param {?} event Mouse event reference. * @param {?} __1 * @return {?} */ drag(event, { move, up }) { /** @type {?} */ const startX = event.pageX; /** @type {?} */ const startY = event.pageY; /** @type {?} */ let x = startX; /** @type {?} */ let y = startY; /** @type {?} */ let moved = false; /** @type {?} */ const mouseMoveHandler = (/** * @param {?} mouseMoveEvent * @return {?} */ (mouseMoveEvent) => { /** @type {?} */ const dx = mouseMoveEvent.pageX - x; /** @type {?} */ const dy = mouseMoveEvent.pageY - y; x = mouseMoveEvent.pageX; y = mouseMoveEvent.pageY; if (dx || dy) { moved = true; } move(mouseMoveEvent, dx, dy, x, y); mouseMoveEvent.preventDefault(); // to avoid text selection }); /** @type {?} */ const mouseUpHandler = (/** * @param {?} mouseUpEvent * @return {?} */ (mouseUpEvent) => { x = mouseUpEvent.pageX; y = mouseUpEvent.pageY; document.removeEventListener('mousemove', mouseMoveHandler); document.removeEventListener('mouseup', mouseUpHandler); if (up) { up(mouseUpEvent, x, y, moved); } }); document.addEventListener('mousemove', mouseMoveHandler); document.addEventListener('mouseup', mouseUpHandler); } } DragAndDropService.decorators = [ { type: Injectable } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1hbmQtZHJvcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vb3JuYW1lbnR1bS8iLCJzb3VyY2VzIjpbInV0aWxpdHkvc2VydmljZXMvZHJhZy1hbmQtZHJvcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBUzNDLE1BQU0sT0FBTyxrQkFBa0I7Ozs7Ozs7SUFPdEIsSUFBSSxDQUFDLEtBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUF5Qzs7Y0FDMUUsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLOztjQUNwQixNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUs7O1lBQ3RCLENBQUMsR0FBRyxNQUFNOztZQUNWLENBQUMsR0FBRyxNQUFNOztZQUNWLEtBQUssR0FBRyxLQUFLOztjQUVYLGdCQUFnQjs7OztRQUFHLENBQUMsY0FBMEIsRUFBUSxFQUFFOztrQkFDdEQsRUFBRSxHQUFHLGNBQWMsQ0FBQyxLQUFLLEdBQUcsQ0FBQzs7a0JBQzdCLEVBQUUsR0FBRyxjQUFjLENBQUMsS0FBSyxHQUFHLENBQUM7WUFDbkMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUM7WUFDekIsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUM7WUFDekIsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNaLEtBQUssR0FBRyxJQUFJLENBQUM7YUFDZDtZQUVELElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFbkMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsMEJBQTBCO1FBQzdELENBQUMsQ0FBQTs7Y0FFSyxjQUFjOzs7O1FBQUcsQ0FBQyxZQUF3QixFQUFRLEVBQUU7WUFDeEQsQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDdkIsQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFFdkIsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzVELFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFFeEQsSUFBSSxFQUFFLEVBQUU7Z0JBQ04sRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQy9CO1FBQ0gsQ0FBQyxDQUFBO1FBRUQsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7O1lBM0NGLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIE1vdmVIYW5kbGVyID0gKGV2ZW50OiBNb3VzZUV2ZW50LCBkeDogbnVtYmVyLCBkeTogbnVtYmVyLCB4OiBudW1iZXIsIHk6IG51bWJlcikgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIFVwSGFuZGxlciA9IChldmVudDogTW91c2VFdmVudCwgeDogbnVtYmVyLCB5OiBudW1iZXIsIG1vdmVkOiBib29sZWFuKSA9PiB2b2lkO1xuXG4vKipcbiAqIEVsZW1lbnQgZHJhZyBhbmQgZHJvcCBzZXJ2aWNlLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRHJhZ0FuZERyb3BTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGRyYWcgYW5kIGRyb3AgZXZlbnQuXG4gICAqIEBwYXJhbSBldmVudCBNb3VzZSBldmVudCByZWZlcmVuY2UuXG4gICAqIEBwYXJhbSBtb3ZlIE1vdXNlIG1vdmUgZXZlbnQgaGFuZGxlci5cbiAgICogQHBhcmFtIHVwIE1vdXNlIHVwIEV2ZW50IGhhbmRsZXIuXG4gICAqL1xuICBwdWJsaWMgZHJhZyhldmVudDogTW91c2VFdmVudCwgeyBtb3ZlLCB1cCB9OiB7IG1vdmU6IE1vdmVIYW5kbGVyOyB1cD86IFVwSGFuZGxlciB9KTogdm9pZCB7XG4gICAgY29uc3Qgc3RhcnRYID0gZXZlbnQucGFnZVg7XG4gICAgY29uc3Qgc3RhcnRZID0gZXZlbnQucGFnZVk7XG4gICAgbGV0IHggPSBzdGFydFg7XG4gICAgbGV0IHkgPSBzdGFydFk7XG4gICAgbGV0IG1vdmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBtb3VzZU1vdmVIYW5kbGVyID0gKG1vdXNlTW92ZUV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBjb25zdCBkeCA9IG1vdXNlTW92ZUV2ZW50LnBhZ2VYIC0geDtcbiAgICAgIGNvbnN0IGR5ID0gbW91c2VNb3ZlRXZlbnQucGFnZVkgLSB5O1xuICAgICAgeCA9IG1vdXNlTW92ZUV2ZW50LnBhZ2VYO1xuICAgICAgeSA9IG1vdXNlTW92ZUV2ZW50LnBhZ2VZO1xuICAgICAgaWYgKGR4IHx8IGR5KSB7XG4gICAgICAgIG1vdmVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgbW92ZShtb3VzZU1vdmVFdmVudCwgZHgsIGR5LCB4LCB5KTtcblxuICAgICAgbW91c2VNb3ZlRXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gdG8gYXZvaWQgdGV4dCBzZWxlY3Rpb25cbiAgICB9O1xuXG4gICAgY29uc3QgbW91c2VVcEhhbmRsZXIgPSAobW91c2VVcEV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgICB4ID0gbW91c2VVcEV2ZW50LnBhZ2VYO1xuICAgICAgeSA9IG1vdXNlVXBFdmVudC5wYWdlWTtcblxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlSGFuZGxlcik7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcEhhbmRsZXIpO1xuXG4gICAgICBpZiAodXApIHtcbiAgICAgICAgdXAobW91c2VVcEV2ZW50LCB4LCB5LCBtb3ZlZCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBtb3VzZVVwSGFuZGxlcik7XG4gIH1cbn1cbiJdfQ==