mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 04:57:52 +00:00
1 line
107 KiB
JSON
1 line
107 KiB
JSON
{"ast":null,"code":"import { isPlatformBrowser } from '@angular/common';\nimport { Directive, Renderer2, ElementRef, Output, Input, EventEmitter, NgZone, Inject, PLATFORM_ID, Optional, NgModule } from '@angular/core';\nimport { Subject, Observable, merge, EMPTY, fromEvent } from 'rxjs';\nimport { map, mergeMap, takeUntil, filter, pairwise, take, share, auditTime, switchMap, startWith, tap } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @hidden\n * @type {?}\n */\nimport * as ɵngcc0 from '@angular/core';\nconst IS_TOUCH_DEVICE = (() => {\n // In case we're in Node.js environment.\n if (typeof window === 'undefined') {\n return false;\n } else {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;\n }\n})();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} value1\n * @param {?} value2\n * @param {?=} precision\n * @return {?}\n */\nfunction isNumberCloseTo(value1, value2, precision = 3) {\n /** @type {?} */\n const diff = Math.abs(value1 - value2);\n return diff < precision;\n}\n/**\n * @param {?} startingRect\n * @param {?} edges\n * @param {?} clientX\n * @param {?} clientY\n * @return {?}\n */\nfunction getNewBoundingRectangle(startingRect, edges, clientX, clientY) {\n /** @type {?} */\n const newBoundingRect = {\n top: startingRect.top,\n bottom: startingRect.bottom,\n left: startingRect.left,\n right: startingRect.right\n };\n if (edges.top) {\n newBoundingRect.top += clientY;\n }\n if (edges.bottom) {\n newBoundingRect.bottom += clientY;\n }\n if (edges.left) {\n newBoundingRect.left += clientX;\n }\n if (edges.right) {\n newBoundingRect.right += clientX;\n }\n newBoundingRect.height = newBoundingRect.bottom - newBoundingRect.top;\n newBoundingRect.width = newBoundingRect.right - newBoundingRect.left;\n return newBoundingRect;\n}\n/**\n * @param {?} element\n * @param {?} ghostElementPositioning\n * @return {?}\n */\nfunction getElementRect(element, ghostElementPositioning) {\n /** @type {?} */\n let translateX = 0;\n /** @type {?} */\n let translateY = 0;\n /** @type {?} */\n const style = element.nativeElement.style;\n /** @type {?} */\n const transformProperties = ['transform', '-ms-transform', '-moz-transform', '-o-transform'];\n /** @type {?} */\n const transform = transformProperties.map(property => style[property]).find(value => !!value);\n if (transform && transform.includes('translate')) {\n translateX = transform.replace(/.*translate3?d?\\((-?[0-9]*)px, (-?[0-9]*)px.*/, '$1');\n translateY = transform.replace(/.*translate3?d?\\((-?[0-9]*)px, (-?[0-9]*)px.*/, '$2');\n }\n if (ghostElementPositioning === 'absolute') {\n return {\n height: element.nativeElement.offsetHeight,\n width: element.nativeElement.offsetWidth,\n top: element.nativeElement.offsetTop - translateY,\n bottom: element.nativeElement.offsetHeight + element.nativeElement.offsetTop - translateY,\n left: element.nativeElement.offsetLeft - translateX,\n right: element.nativeElement.offsetWidth + element.nativeElement.offsetLeft - translateX\n };\n } else {\n /** @type {?} */\n const boundingRect = element.nativeElement.getBoundingClientRect();\n return {\n height: boundingRect.height,\n width: boundingRect.width,\n top: boundingRect.top - translateY,\n bottom: boundingRect.bottom - translateY,\n left: boundingRect.left - translateX,\n right: boundingRect.right - translateX,\n scrollTop: element.nativeElement.scrollTop,\n scrollLeft: element.nativeElement.scrollLeft\n };\n }\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction isWithinBoundingY({\n clientY,\n rect\n}) {\n return clientY >= rect.top && clientY <= rect.bottom;\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction isWithinBoundingX({\n clientX,\n rect\n}) {\n return clientX >= rect.left && clientX <= rect.right;\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction getResizeEdges({\n clientX,\n clientY,\n elm,\n allowedEdges,\n cursorPrecision\n}) {\n /** @type {?} */\n const elmPosition = elm.nativeElement.getBoundingClientRect();\n /** @type {?} */\n const edges = {};\n if (allowedEdges.left && isNumberCloseTo(clientX, elmPosition.left, cursorPrecision) && isWithinBoundingY({\n clientY,\n rect: elmPosition\n })) {\n edges.left = true;\n }\n if (allowedEdges.right && isNumberCloseTo(clientX, elmPosition.right, cursorPrecision) && isWithinBoundingY({\n clientY,\n rect: elmPosition\n })) {\n edges.right = true;\n }\n if (allowedEdges.top && isNumberCloseTo(clientY, elmPosition.top, cursorPrecision) && isWithinBoundingX({\n clientX,\n rect: elmPosition\n })) {\n edges.top = true;\n }\n if (allowedEdges.bottom && isNumberCloseTo(clientY, elmPosition.bottom, cursorPrecision) && isWithinBoundingX({\n clientX,\n rect: elmPosition\n })) {\n edges.bottom = true;\n }\n return edges;\n}\n/** @type {?} */\nconst DEFAULT_RESIZE_CURSORS = Object.freeze({\n topLeft: 'nw-resize',\n topRight: 'ne-resize',\n bottomLeft: 'sw-resize',\n bottomRight: 'se-resize',\n leftOrRight: 'col-resize',\n topOrBottom: 'row-resize'\n});\n/**\n * @param {?} edges\n * @param {?} cursors\n * @return {?}\n */\nfunction getResizeCursor(edges, cursors) {\n if (edges.left && edges.top) {\n return cursors.topLeft;\n } else if (edges.right && edges.top) {\n return cursors.topRight;\n } else if (edges.left && edges.bottom) {\n return cursors.bottomLeft;\n } else if (edges.right && edges.bottom) {\n return cursors.bottomRight;\n } else if (edges.left || edges.right) {\n return cursors.leftOrRight;\n } else if (edges.top || edges.bottom) {\n return cursors.topOrBottom;\n } else {\n return '';\n }\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction getEdgesDiff({\n edges,\n initialRectangle,\n newRectangle\n}) {\n /** @type {?} */\n const edgesDiff = {};\n Object.keys(edges).forEach(edge => {\n edgesDiff[edge] = (newRectangle[edge] || 0) - (initialRectangle[edge] || 0);\n });\n return edgesDiff;\n}\n/** @type {?} */\nconst RESIZE_ACTIVE_CLASS = 'resize-active';\n/** @type {?} */\nconst RESIZE_LEFT_HOVER_CLASS = 'resize-left-hover';\n/** @type {?} */\nconst RESIZE_RIGHT_HOVER_CLASS = 'resize-right-hover';\n/** @type {?} */\nconst RESIZE_TOP_HOVER_CLASS = 'resize-top-hover';\n/** @type {?} */\nconst RESIZE_BOTTOM_HOVER_CLASS = 'resize-bottom-hover';\n/** @type {?} */\nconst RESIZE_GHOST_ELEMENT_CLASS = 'resize-ghost-element';\n/** @type {?} */\nconst MOUSE_MOVE_THROTTLE_MS = 50;\n/**\n * Place this on an element to make it resizable. For example:\n *\n * ```html\n * <div\n * mwlResizable\n * [resizeEdges]=\"{bottom: true, right: true, top: true, left: true}\"\n * [enableGhostResize]=\"true\">\n * </div>\n * ```\n * Or in case they are sibling elements:\n * ```html\n * <div mwlResizable #resizableElement=\"mwlResizable\"></div>\n * <div mwlResizeHandle [resizableContainer]=\"resizableElement\" [resizeEdges]=\"{bottom: true, right: true}\"></div>\n * ```\n */\nclass ResizableDirective {\n /**\n * @hidden\n * @param {?} platformId\n * @param {?} renderer\n * @param {?} elm\n * @param {?} zone\n */\n constructor(platformId, renderer, elm, zone) {\n this.platformId = platformId;\n this.renderer = renderer;\n this.elm = elm;\n this.zone = zone;\n /**\n * The edges that an element can be resized from. Pass an object like `{top: true, bottom: false}`. By default no edges can be resized.\n * @deprecated use a resize handle instead that positions itself to the side of the element you would like to resize\n */\n this.resizeEdges = {};\n /**\n * Set to `true` to enable a temporary resizing effect of the element in between the `resizeStart` and `resizeEnd` events.\n */\n this.enableGhostResize = false;\n /**\n * A snap grid that resize events will be locked to.\n *\n * e.g. to only allow the element to be resized every 10px set it to `{left: 10, right: 10}`\n */\n this.resizeSnapGrid = {};\n /**\n * The mouse cursors that will be set on the resize edges\n */\n this.resizeCursors = DEFAULT_RESIZE_CURSORS;\n /**\n * Mouse over thickness to active cursor.\n * @deprecated invalid when you migrate to use resize handles instead of setting resizeEdges on the element\n */\n this.resizeCursorPrecision = 3;\n /**\n * Define the positioning of the ghost element (can be fixed or absolute)\n */\n this.ghostElementPositioning = 'fixed';\n /**\n * Allow elements to be resized to negative dimensions\n */\n this.allowNegativeResizes = false;\n /**\n * The mouse move throttle in milliseconds, default: 50 ms\n */\n this.mouseMoveThrottleMS = MOUSE_MOVE_THROTTLE_MS;\n /**\n * Called when the mouse is pressed and a resize event is about to begin. `$event` is a `ResizeEvent` object.\n */\n this.resizeStart = new EventEmitter();\n /**\n * Called as the mouse is dragged after a resize event has begun. `$event` is a `ResizeEvent` object.\n */\n this.resizing = new EventEmitter();\n /**\n * Called after the mouse is released after a resize event. `$event` is a `ResizeEvent` object.\n */\n this.resizeEnd = new EventEmitter();\n /**\n * @hidden\n */\n this.mouseup = new Subject();\n /**\n * @hidden\n */\n this.mousedown = new Subject();\n /**\n * @hidden\n */\n this.mousemove = new Subject();\n this.destroy$ = new Subject();\n this.resizeEdges$ = new Subject();\n this.pointerEventListeners = PointerEventListeners.getInstance(renderer, zone);\n }\n /**\n * @hidden\n * @return {?}\n */\n ngOnInit() {\n /** @type {?} */\n const mousedown$ = merge(this.pointerEventListeners.pointerDown, this.mousedown);\n /** @type {?} */\n const mousemove$ = merge(this.pointerEventListeners.pointerMove, this.mousemove).pipe(tap(({\n event\n }) => {\n if (currentResize) {\n try {\n event.preventDefault();\n } catch (e) {\n // just adding try-catch not to see errors in console if there is a passive listener for same event somewhere\n // browser does nothing except of writing errors to console\n }\n }\n }), share());\n /** @type {?} */\n const mouseup$ = merge(this.pointerEventListeners.pointerUp, this.mouseup);\n /** @type {?} */\n let currentResize;\n /** @type {?} */\n const removeGhostElement = () => {\n if (currentResize && currentResize.clonedNode) {\n this.elm.nativeElement.parentElement.removeChild(currentResize.clonedNode);\n this.renderer.setStyle(this.elm.nativeElement, 'visibility', 'inherit');\n }\n };\n /** @type {?} */\n const getResizeCursors = () => {\n return Object.assign({}, DEFAULT_RESIZE_CURSORS, this.resizeCursors);\n };\n this.resizeEdges$.pipe(startWith(this.resizeEdges), map(() => {\n return this.resizeEdges && Object.keys(this.resizeEdges).some(edge => !!this.resizeEdges[edge]);\n }), switchMap(legacyResizeEdgesEnabled => legacyResizeEdgesEnabled ? mousemove$ : EMPTY), auditTime(this.mouseMoveThrottleMS), takeUntil(this.destroy$)).subscribe(({\n clientX,\n clientY\n }) => {\n /** @type {?} */\n const resizeEdges = getResizeEdges({\n clientX,\n clientY,\n elm: this.elm,\n allowedEdges: this.resizeEdges,\n cursorPrecision: this.resizeCursorPrecision\n });\n /** @type {?} */\n const resizeCursors = getResizeCursors();\n if (!currentResize) {\n /** @type {?} */\n const cursor = getResizeCursor(resizeEdges, resizeCursors);\n this.renderer.setStyle(this.elm.nativeElement, 'cursor', cursor);\n }\n this.setElementClass(this.elm, RESIZE_LEFT_HOVER_CLASS, resizeEdges.left === true);\n this.setElementClass(this.elm, RESIZE_RIGHT_HOVER_CLASS, resizeEdges.right === true);\n this.setElementClass(this.elm, RESIZE_TOP_HOVER_CLASS, resizeEdges.top === true);\n this.setElementClass(this.elm, RESIZE_BOTTOM_HOVER_CLASS, resizeEdges.bottom === true);\n });\n /** @type {?} */\n const mousedrag = mousedown$.pipe(mergeMap(startCoords => {\n /**\n * @param {?} moveCoords\n * @return {?}\n */\n function getDiff(moveCoords) {\n return {\n clientX: moveCoords.clientX - startCoords.clientX,\n clientY: moveCoords.clientY - startCoords.clientY\n };\n }\n /** @type {?} */\n const getSnapGrid = () => {\n /** @type {?} */\n const snapGrid = {\n x: 1,\n y: 1\n };\n if (currentResize) {\n if (this.resizeSnapGrid.left && currentResize.edges.left) {\n snapGrid.x = +this.resizeSnapGrid.left;\n } else if (this.resizeSnapGrid.right && currentResize.edges.right) {\n snapGrid.x = +this.resizeSnapGrid.right;\n }\n if (this.resizeSnapGrid.top && currentResize.edges.top) {\n snapGrid.y = +this.resizeSnapGrid.top;\n } else if (this.resizeSnapGrid.bottom && currentResize.edges.bottom) {\n snapGrid.y = +this.resizeSnapGrid.bottom;\n }\n }\n return snapGrid;\n };\n /**\n * @param {?} coords\n * @param {?} snapGrid\n * @return {?}\n */\n function getGrid(coords, snapGrid) {\n return {\n x: Math.ceil(coords.clientX / snapGrid.x),\n y: Math.ceil(coords.clientY / snapGrid.y)\n };\n }\n return (/** @type {?} */merge(mousemove$.pipe(take(1)).pipe(map(coords => [, coords])), mousemove$.pipe(pairwise())).pipe(map(([previousCoords, newCoords]) => {\n return [previousCoords ? getDiff(previousCoords) : previousCoords, getDiff(newCoords)];\n })).pipe(filter(([previousCoords, newCoords]) => {\n if (!previousCoords) {\n return true;\n }\n /** @type {?} */\n const snapGrid = getSnapGrid();\n /** @type {?} */\n const previousGrid = getGrid(previousCoords, snapGrid);\n /** @type {?} */\n const newGrid = getGrid(newCoords, snapGrid);\n return previousGrid.x !== newGrid.x || previousGrid.y !== newGrid.y;\n })).pipe(map(([, newCoords]) => {\n /** @type {?} */\n const snapGrid = getSnapGrid();\n return {\n clientX: Math.round(newCoords.clientX / snapGrid.x) * snapGrid.x,\n clientY: Math.round(newCoords.clientY / snapGrid.y) * snapGrid.y\n };\n })).pipe(takeUntil(merge(mouseup$, mousedown$)))\n );\n })).pipe(filter(() => !!currentResize));\n mousedrag.pipe(map(({\n clientX,\n clientY\n }) => {\n return getNewBoundingRectangle( /** @type {?} */currentResize.startingRect, /** @type {?} */currentResize.edges, clientX, clientY);\n })).pipe(filter(newBoundingRect => {\n return this.allowNegativeResizes || !!(newBoundingRect.height && newBoundingRect.width && newBoundingRect.height > 0 && newBoundingRect.width > 0);\n })).pipe(filter(newBoundingRect => {\n return this.validateResize ? this.validateResize({\n rectangle: newBoundingRect,\n edges: getEdgesDiff({\n edges: /** @type {?} */currentResize.edges,\n initialRectangle: /** @type {?} */currentResize.startingRect,\n newRectangle: newBoundingRect\n })\n }) : true;\n }), takeUntil(this.destroy$)).subscribe(newBoundingRect => {\n if (currentResize && currentResize.clonedNode) {\n this.renderer.setStyle(currentResize.clonedNode, 'height', `${newBoundingRect.height}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'width', `${newBoundingRect.width}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'top', `${newBoundingRect.top}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'left', `${newBoundingRect.left}px`);\n }\n if (this.resizing.observers.length > 0) {\n this.zone.run(() => {\n this.resizing.emit({\n edges: getEdgesDiff({\n edges: /** @type {?} */currentResize.edges,\n initialRectangle: /** @type {?} */currentResize.startingRect,\n newRectangle: newBoundingRect\n }),\n rectangle: newBoundingRect\n });\n });\n }\n /** @type {?} */currentResize.currentRect = newBoundingRect;\n });\n mousedown$.pipe(map(({\n clientX,\n clientY,\n edges\n }) => {\n return edges || getResizeEdges({\n clientX,\n clientY,\n elm: this.elm,\n allowedEdges: this.resizeEdges,\n cursorPrecision: this.resizeCursorPrecision\n });\n })).pipe(filter(edges => {\n return Object.keys(edges).length > 0;\n }), takeUntil(this.destroy$)).subscribe(edges => {\n if (currentResize) {\n removeGhostElement();\n }\n /** @type {?} */\n const startingRect = getElementRect(this.elm, this.ghostElementPositioning);\n currentResize = {\n edges,\n startingRect,\n currentRect: startingRect\n };\n /** @type {?} */\n const resizeCursors = getResizeCursors();\n /** @type {?} */\n const cursor = getResizeCursor(currentResize.edges, resizeCursors);\n this.renderer.setStyle(document.body, 'cursor', cursor);\n this.setElementClass(this.elm, RESIZE_ACTIVE_CLASS, true);\n if (this.enableGhostResize) {\n currentResize.clonedNode = this.elm.nativeElement.cloneNode(true);\n this.elm.nativeElement.parentElement.appendChild(currentResize.clonedNode);\n this.renderer.setStyle(this.elm.nativeElement, 'visibility', 'hidden');\n this.renderer.setStyle(currentResize.clonedNode, 'position', this.ghostElementPositioning);\n this.renderer.setStyle(currentResize.clonedNode, 'left', `${currentResize.startingRect.left}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'top', `${currentResize.startingRect.top}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'height', `${currentResize.startingRect.height}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'width', `${currentResize.startingRect.width}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'cursor', getResizeCursor(currentResize.edges, resizeCursors));\n this.renderer.addClass(currentResize.clonedNode, RESIZE_GHOST_ELEMENT_CLASS);\n /** @type {?} */currentResize.clonedNode.scrollTop = /** @type {?} */currentResize.startingRect.scrollTop;\n /** @type {?} */currentResize.clonedNode.scrollLeft = /** @type {?} */currentResize.startingRect.scrollLeft;\n }\n if (this.resizeStart.observers.length > 0) {\n this.zone.run(() => {\n this.resizeStart.emit({\n edges: getEdgesDiff({\n edges,\n initialRectangle: startingRect,\n newRectangle: startingRect\n }),\n rectangle: getNewBoundingRectangle(startingRect, {}, 0, 0)\n });\n });\n }\n });\n mouseup$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (currentResize) {\n this.renderer.removeClass(this.elm.nativeElement, RESIZE_ACTIVE_CLASS);\n this.renderer.setStyle(document.body, 'cursor', '');\n this.renderer.setStyle(this.elm.nativeElement, 'cursor', '');\n if (this.resizeEnd.observers.length > 0) {\n this.zone.run(() => {\n this.resizeEnd.emit({\n edges: getEdgesDiff({\n edges: /** @type {?} */currentResize.edges,\n initialRectangle: /** @type {?} */currentResize.startingRect,\n newRectangle: /** @type {?} */currentResize.currentRect\n }),\n rectangle: /** @type {?} */currentResize.currentRect\n });\n });\n }\n removeGhostElement();\n currentResize = null;\n }\n });\n }\n /**\n * @hidden\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.resizeEdges) {\n this.resizeEdges$.next(this.resizeEdges);\n }\n }\n /**\n * @hidden\n * @return {?}\n */\n ngOnDestroy() {\n // browser check for angular universal, because it doesn't know what document is\n if (isPlatformBrowser(this.platformId)) {\n this.renderer.setStyle(document.body, 'cursor', '');\n }\n this.mousedown.complete();\n this.mouseup.complete();\n this.mousemove.complete();\n this.resizeEdges$.complete();\n this.destroy$.next();\n }\n /**\n * @private\n * @param {?} elm\n * @param {?} name\n * @param {?} add\n * @return {?}\n */\n setElementClass(elm, name, add) {\n if (add) {\n this.renderer.addClass(elm.nativeElement, name);\n } else {\n this.renderer.removeClass(elm.nativeElement, name);\n }\n }\n}\nResizableDirective.ɵfac = function ResizableDirective_Factory(t) {\n return new (t || ResizableDirective)(ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone));\n};\nResizableDirective.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n type: ResizableDirective,\n selectors: [[\"\", \"mwlResizable\", \"\"]],\n inputs: {\n resizeEdges: \"resizeEdges\",\n enableGhostResize: \"enableGhostResize\",\n resizeSnapGrid: \"resizeSnapGrid\",\n resizeCursors: \"resizeCursors\",\n resizeCursorPrecision: \"resizeCursorPrecision\",\n ghostElementPositioning: \"ghostElementPositioning\",\n allowNegativeResizes: \"allowNegativeResizes\",\n mouseMoveThrottleMS: \"mouseMoveThrottleMS\",\n validateResize: \"validateResize\"\n },\n outputs: {\n resizeStart: \"resizeStart\",\n resizing: \"resizing\",\n resizeEnd: \"resizeEnd\"\n },\n exportAs: [\"mwlResizable\"],\n features: [ɵngcc0.ɵɵNgOnChangesFeature]\n});\n/** @nocollapse */\nResizableDirective.ctorParameters = () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }]\n}, {\n type: Renderer2\n}, {\n type: ElementRef\n}, {\n type: NgZone\n}];\nResizableDirective.propDecorators = {\n validateResize: [{\n type: Input\n }],\n resizeEdges: [{\n type: Input\n }],\n enableGhostResize: [{\n type: Input\n }],\n resizeSnapGrid: [{\n type: Input\n }],\n resizeCursors: [{\n type: Input\n }],\n resizeCursorPrecision: [{\n type: Input\n }],\n ghostElementPositioning: [{\n type: Input\n }],\n allowNegativeResizes: [{\n type: Input\n }],\n mouseMoveThrottleMS: [{\n type: Input\n }],\n resizeStart: [{\n type: Output\n }],\n resizing: [{\n type: Output\n }],\n resizeEnd: [{\n type: Output\n }]\n};\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizableDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlResizable]',\n exportAs: 'mwlResizable'\n }]\n }], function () {\n return [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }]\n }, {\n type: ɵngcc0.Renderer2\n }, {\n type: ɵngcc0.ElementRef\n }, {\n type: ɵngcc0.NgZone\n }];\n }, {\n resizeEdges: [{\n type: Input\n }],\n enableGhostResize: [{\n type: Input\n }],\n resizeSnapGrid: [{\n type: Input\n }],\n resizeCursors: [{\n type: Input\n }],\n resizeCursorPrecision: [{\n type: Input\n }],\n ghostElementPositioning: [{\n type: Input\n }],\n allowNegativeResizes: [{\n type: Input\n }],\n mouseMoveThrottleMS: [{\n type: Input\n }],\n resizeStart: [{\n type: Output\n }],\n resizing: [{\n type: Output\n }],\n resizeEnd: [{\n type: Output\n }],\n validateResize: [{\n type: Input\n }]\n });\n})();\nclass PointerEventListeners {\n // tslint:disable-line\n /**\n * @param {?} renderer\n * @param {?} zone\n * @return {?}\n */\n static getInstance(renderer, zone) {\n if (!PointerEventListeners.instance) {\n PointerEventListeners.instance = new PointerEventListeners(renderer, zone);\n }\n return PointerEventListeners.instance;\n }\n /**\n * @param {?} renderer\n * @param {?} zone\n */\n constructor(renderer, zone) {\n this.pointerDown = new Observable(observer => {\n /** @type {?} */\n let unsubscribeMouseDown;\n /** @type {?} */\n let unsubscribeTouchStart;\n zone.runOutsideAngular(() => {\n unsubscribeMouseDown = renderer.listen('document', 'mousedown', event => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchStart = renderer.listen('document', 'touchstart', event => {\n observer.next({\n clientX: event.touches[0].clientX,\n clientY: event.touches[0].clientY,\n event\n });\n });\n }\n });\n return () => {\n unsubscribeMouseDown();\n if (IS_TOUCH_DEVICE) {\n /** @type {?} */unsubscribeTouchStart();\n }\n };\n }).pipe(share());\n this.pointerMove = new Observable(observer => {\n /** @type {?} */\n let unsubscribeMouseMove;\n /** @type {?} */\n let unsubscribeTouchMove;\n zone.runOutsideAngular(() => {\n unsubscribeMouseMove = renderer.listen('document', 'mousemove', event => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchMove = renderer.listen('document', 'touchmove', event => {\n observer.next({\n clientX: event.targetTouches[0].clientX,\n clientY: event.targetTouches[0].clientY,\n event\n });\n });\n }\n });\n return () => {\n unsubscribeMouseMove();\n if (IS_TOUCH_DEVICE) {\n /** @type {?} */unsubscribeTouchMove();\n }\n };\n }).pipe(share());\n this.pointerUp = new Observable(observer => {\n /** @type {?} */\n let unsubscribeMouseUp;\n /** @type {?} */\n let unsubscribeTouchEnd;\n /** @type {?} */\n let unsubscribeTouchCancel;\n zone.runOutsideAngular(() => {\n unsubscribeMouseUp = renderer.listen('document', 'mouseup', event => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchEnd = renderer.listen('document', 'touchend', event => {\n observer.next({\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n event\n });\n });\n unsubscribeTouchCancel = renderer.listen('document', 'touchcancel', event => {\n observer.next({\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n event\n });\n });\n }\n });\n return () => {\n unsubscribeMouseUp();\n if (IS_TOUCH_DEVICE) {\n /** @type {?} */unsubscribeTouchEnd();\n /** @type {?} */unsubscribeTouchCancel();\n }\n };\n }).pipe(share());\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * An element placed inside a `mwlResizable` directive to be used as a drag and resize handle\n *\n * For example\n *\n * ```html\n * <div mwlResizable>\n * <div mwlResizeHandle [resizeEdges]=\"{bottom: true, right: true}\"></div>\n * </div>\n * ```\n * Or in case they are sibling elements:\n * ```html\n * <div mwlResizable #resizableElement=\"mwlResizable\"></div>\n * <div mwlResizeHandle [resizableContainer]=\"resizableElement\" [resizeEdges]=\"{bottom: true, right: true}\"></div>\n * ```\n */\nclass ResizeHandleDirective {\n /**\n * @param {?} renderer\n * @param {?} element\n * @param {?} zone\n * @param {?} resizableDirective\n */\n constructor(renderer, element, zone, resizableDirective) {\n this.renderer = renderer;\n this.element = element;\n this.zone = zone;\n this.resizableDirective = resizableDirective;\n /**\n * The `Edges` object that contains the edges of the parent element that dragging the handle will trigger a resize on\n */\n this.resizeEdges = {};\n this.eventListeners = {};\n this.destroy$ = new Subject();\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.zone.runOutsideAngular(() => {\n this.listenOnTheHost('mousedown').subscribe(event => {\n this.onMousedown(event, event.clientX, event.clientY);\n });\n this.listenOnTheHost('mouseup').subscribe(event => {\n this.onMouseup(event.clientX, event.clientY);\n });\n if (IS_TOUCH_DEVICE) {\n this.listenOnTheHost('touchstart').subscribe(event => {\n this.onMousedown(event, event.touches[0].clientX, event.touches[0].clientY);\n });\n merge(this.listenOnTheHost('touchend'), this.listenOnTheHost('touchcancel')).subscribe(event => {\n this.onMouseup(event.changedTouches[0].clientX, event.changedTouches[0].clientY);\n });\n }\n });\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.destroy$.next();\n this.unsubscribeEventListeners();\n }\n /**\n * @hidden\n * @param {?} event\n * @param {?} clientX\n * @param {?} clientY\n * @return {?}\n */\n onMousedown(event, clientX, clientY) {\n event.preventDefault();\n if (!this.eventListeners.touchmove) {\n this.eventListeners.touchmove = this.renderer.listen(this.element.nativeElement, 'touchmove', touchMoveEvent => {\n this.onMousemove(touchMoveEvent, touchMoveEvent.targetTouches[0].clientX, touchMoveEvent.targetTouches[0].clientY);\n });\n }\n if (!this.eventListeners.mousemove) {\n this.eventListeners.mousemove = this.renderer.listen(this.element.nativeElement, 'mousemove', mouseMoveEvent => {\n this.onMousemove(mouseMoveEvent, mouseMoveEvent.clientX, mouseMoveEvent.clientY);\n });\n }\n this.resizable.mousedown.next({\n clientX,\n clientY,\n edges: this.resizeEdges\n });\n }\n /**\n * @hidden\n * @param {?} clientX\n * @param {?} clientY\n * @return {?}\n */\n onMouseup(clientX, clientY) {\n this.unsubscribeEventListeners();\n this.resizable.mouseup.next({\n clientX,\n clientY,\n edges: this.resizeEdges\n });\n }\n // directive might be passed from DI or as an input\n /**\n * @private\n * @return {?}\n */\n get resizable() {\n return this.resizableDirective || this.resizableContainer;\n }\n /**\n * @private\n * @param {?} event\n * @param {?} clientX\n * @param {?} clientY\n * @return {?}\n */\n onMousemove(event, clientX, clientY) {\n this.resizable.mousemove.next({\n clientX,\n clientY,\n edges: this.resizeEdges,\n event\n });\n }\n /**\n * @private\n * @return {?}\n */\n unsubscribeEventListeners() {\n Object.keys(this.eventListeners).forEach(type => {\n /** @type {?} */this.eventListeners[type]();\n delete this.eventListeners[type];\n });\n }\n /**\n * @private\n * @template T\n * @param {?} eventName\n * @return {?}\n */\n listenOnTheHost(eventName) {\n return fromEvent(this.element.nativeElement, eventName).pipe(takeUntil(this.destroy$));\n }\n}\nResizeHandleDirective.ɵfac = function ResizeHandleDirective_Factory(t) {\n return new (t || ResizeHandleDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ResizableDirective, 8));\n};\nResizeHandleDirective.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n type: ResizeHandleDirective,\n selectors: [[\"\", \"mwlResizeHandle\", \"\"]],\n inputs: {\n resizeEdges: \"resizeEdges\",\n resizableContainer: \"resizableContainer\"\n }\n});\n/** @nocollapse */\nResizeHandleDirective.ctorParameters = () => [{\n type: Renderer2\n}, {\n type: ElementRef\n}, {\n type: NgZone\n}, {\n type: ResizableDirective,\n decorators: [{\n type: Optional\n }]\n}];\nResizeHandleDirective.propDecorators = {\n resizeEdges: [{\n type: Input\n }],\n resizableContainer: [{\n type: Input\n }]\n};\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizeHandleDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlResizeHandle]'\n }]\n }], function () {\n return [{\n type: ɵngcc0.Renderer2\n }, {\n type: ɵngcc0.ElementRef\n }, {\n type: ɵngcc0.NgZone\n }, {\n type: ResizableDirective,\n decorators: [{\n type: Optional\n }]\n }];\n }, {\n resizeEdges: [{\n type: Input\n }],\n resizableContainer: [{\n type: Input\n }]\n });\n})();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass ResizableModule {}\nResizableModule.ɵfac = function ResizableModule_Factory(t) {\n return new (t || ResizableModule)();\n};\nResizableModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n type: ResizableModule\n});\nResizableModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({});\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizableModule, [{\n type: NgModule,\n args: [{\n declarations: [ResizableDirective, ResizeHandleDirective],\n exports: [ResizableDirective, ResizeHandleDirective]\n }]\n }], null, null);\n})();\n(function () {\n (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ResizableModule, {\n declarations: [ResizableDirective, ResizeHandleDirective],\n exports: [ResizableDirective, ResizeHandleDirective]\n });\n})();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { ResizableDirective, ResizeHandleDirective, ResizableModule };","map":{"version":3,"names":["isPlatformBrowser","Directive","Renderer2","ElementRef","Output","Input","EventEmitter","NgZone","Inject","PLATFORM_ID","Optional","NgModule","Subject","Observable","merge","EMPTY","fromEvent","map","mergeMap","takeUntil","filter","pairwise","take","share","auditTime","switchMap","startWith","tap","ɵngcc0","IS_TOUCH_DEVICE","window","navigator","maxTouchPoints","msMaxTouchPoints","isNumberCloseTo","value1","value2","precision","diff","Math","abs","getNewBoundingRectangle","startingRect","edges","clientX","clientY","newBoundingRect","top","bottom","left","right","height","width","getElementRect","element","ghostElementPositioning","translateX","translateY","style","nativeElement","transformProperties","transform","property","find","value","includes","replace","offsetHeight","offsetWidth","offsetTop","offsetLeft","boundingRect","getBoundingClientRect","scrollTop","scrollLeft","isWithinBoundingY","rect","isWithinBoundingX","getResizeEdges","elm","allowedEdges","cursorPrecision","elmPosition","DEFAULT_RESIZE_CURSORS","Object","freeze","topLeft","topRight","bottomLeft","bottomRight","leftOrRight","topOrBottom","getResizeCursor","cursors","getEdgesDiff","initialRectangle","newRectangle","edgesDiff","keys","forEach","edge","RESIZE_ACTIVE_CLASS","RESIZE_LEFT_HOVER_CLASS","RESIZE_RIGHT_HOVER_CLASS","RESIZE_TOP_HOVER_CLASS","RESIZE_BOTTOM_HOVER_CLASS","RESIZE_GHOST_ELEMENT_CLASS","MOUSE_MOVE_THROTTLE_MS","ResizableDirective","constructor","platformId","renderer","zone","resizeEdges","enableGhostResize","resizeSnapGrid","resizeCursors","resizeCursorPrecision","allowNegativeResizes","mouseMoveThrottleMS","resizeStart","resizing","resizeEnd","mouseup","mousedown","mousemove","destroy$","resizeEdges$","pointerEventListeners","PointerEventListeners","getInstance","ngOnInit","mousedown$","pointerDown","mousemove$","pointerMove","pipe","event","currentResize","preventDefault","e","mouseup$","pointerUp","removeGhostElement","clonedNode","parentElement","removeChild","setStyle","getResizeCursors","assign","some","legacyResizeEdgesEnabled","subscribe","cursor","setElementClass","mousedrag","startCoords","getDiff","moveCoords","getSnapGrid","snapGrid","x","y","getGrid","coords","ceil","previousCoords","newCoords","previousGrid","newGrid","round","validateResize","rectangle","observers","length","run","emit","currentRect","document","body","cloneNode","appendChild","addClass","removeClass","ngOnChanges","changes","next","ngOnDestroy","complete","name","add","ɵfac","ResizableDirective_Factory","t","ɵɵdirectiveInject","ɵdir","ɵɵdefineDirective","type","selectors","inputs","outputs","exportAs","features","ɵɵNgOnChangesFeature","ctorParameters","undefined","decorators","args","propDecorators","ngDevMode","ɵsetClassMetadata","selector","instance","observer","unsubscribeMouseDown","unsubscribeTouchStart","runOutsideAngular","listen","touches","unsubscribeMouseMove","unsubscribeTouchMove","targetTouches","unsubscribeMouseUp","unsubscribeTouchEnd","unsubscribeTouchCancel","changedTouches","ResizeHandleDirective","resizableDirective","eventListeners","listenOnTheHost","onMousedown","onMouseup","unsubscribeEventListeners","touchmove","touchMoveEvent","onMousemove","mouseMoveEvent","resizable","resizableContainer","eventName","ResizeHandleDirective_Factory","ResizableModule","ResizableModule_Factory","ɵmod","ɵɵdefineNgModule","ɵinj","ɵɵdefineInjector","declarations","exports","ngJitMode","ɵɵsetNgModuleScope"],"sources":["C:/Users/eudes.inacio/GabineteDigital/gabinete-digital-fo/node_modules/angular-resizable-element/__ivy_ngcc__/fesm2015/angular-resizable-element.js"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { Directive, Renderer2, ElementRef, Output, Input, EventEmitter, NgZone, Inject, PLATFORM_ID, Optional, NgModule } from '@angular/core';\nimport { Subject, Observable, merge, EMPTY, fromEvent } from 'rxjs';\nimport { map, mergeMap, takeUntil, filter, pairwise, take, share, auditTime, switchMap, startWith, tap } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @hidden\n * @type {?}\n */\nimport * as ɵngcc0 from '@angular/core';\nconst IS_TOUCH_DEVICE = (() => {\n // In case we're in Node.js environment.\n if (typeof window === 'undefined') {\n return false;\n }\n else {\n return ('ontouchstart' in window ||\n navigator.maxTouchPoints > 0 ||\n navigator.msMaxTouchPoints > 0);\n }\n})();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} value1\n * @param {?} value2\n * @param {?=} precision\n * @return {?}\n */\nfunction isNumberCloseTo(value1, value2, precision = 3) {\n /** @type {?} */\n const diff = Math.abs(value1 - value2);\n return diff < precision;\n}\n/**\n * @param {?} startingRect\n * @param {?} edges\n * @param {?} clientX\n * @param {?} clientY\n * @return {?}\n */\nfunction getNewBoundingRectangle(startingRect, edges, clientX, clientY) {\n /** @type {?} */\n const newBoundingRect = {\n top: startingRect.top,\n bottom: startingRect.bottom,\n left: startingRect.left,\n right: startingRect.right\n };\n if (edges.top) {\n newBoundingRect.top += clientY;\n }\n if (edges.bottom) {\n newBoundingRect.bottom += clientY;\n }\n if (edges.left) {\n newBoundingRect.left += clientX;\n }\n if (edges.right) {\n newBoundingRect.right += clientX;\n }\n newBoundingRect.height = newBoundingRect.bottom - newBoundingRect.top;\n newBoundingRect.width = newBoundingRect.right - newBoundingRect.left;\n return newBoundingRect;\n}\n/**\n * @param {?} element\n * @param {?} ghostElementPositioning\n * @return {?}\n */\nfunction getElementRect(element, ghostElementPositioning) {\n /** @type {?} */\n let translateX = 0;\n /** @type {?} */\n let translateY = 0;\n /** @type {?} */\n const style = element.nativeElement.style;\n /** @type {?} */\n const transformProperties = [\n 'transform',\n '-ms-transform',\n '-moz-transform',\n '-o-transform'\n ];\n /** @type {?} */\n const transform = transformProperties\n .map(property => style[property])\n .find(value => !!value);\n if (transform && transform.includes('translate')) {\n translateX = transform.replace(/.*translate3?d?\\((-?[0-9]*)px, (-?[0-9]*)px.*/, '$1');\n translateY = transform.replace(/.*translate3?d?\\((-?[0-9]*)px, (-?[0-9]*)px.*/, '$2');\n }\n if (ghostElementPositioning === 'absolute') {\n return {\n height: element.nativeElement.offsetHeight,\n width: element.nativeElement.offsetWidth,\n top: element.nativeElement.offsetTop - translateY,\n bottom: element.nativeElement.offsetHeight +\n element.nativeElement.offsetTop -\n translateY,\n left: element.nativeElement.offsetLeft - translateX,\n right: element.nativeElement.offsetWidth +\n element.nativeElement.offsetLeft -\n translateX\n };\n }\n else {\n /** @type {?} */\n const boundingRect = element.nativeElement.getBoundingClientRect();\n return {\n height: boundingRect.height,\n width: boundingRect.width,\n top: boundingRect.top - translateY,\n bottom: boundingRect.bottom - translateY,\n left: boundingRect.left - translateX,\n right: boundingRect.right - translateX,\n scrollTop: element.nativeElement.scrollTop,\n scrollLeft: element.nativeElement.scrollLeft\n };\n }\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction isWithinBoundingY({ clientY, rect }) {\n return clientY >= rect.top && clientY <= rect.bottom;\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction isWithinBoundingX({ clientX, rect }) {\n return clientX >= rect.left && clientX <= rect.right;\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction getResizeEdges({ clientX, clientY, elm, allowedEdges, cursorPrecision }) {\n /** @type {?} */\n const elmPosition = elm.nativeElement.getBoundingClientRect();\n /** @type {?} */\n const edges = {};\n if (allowedEdges.left &&\n isNumberCloseTo(clientX, elmPosition.left, cursorPrecision) &&\n isWithinBoundingY({ clientY, rect: elmPosition })) {\n edges.left = true;\n }\n if (allowedEdges.right &&\n isNumberCloseTo(clientX, elmPosition.right, cursorPrecision) &&\n isWithinBoundingY({ clientY, rect: elmPosition })) {\n edges.right = true;\n }\n if (allowedEdges.top &&\n isNumberCloseTo(clientY, elmPosition.top, cursorPrecision) &&\n isWithinBoundingX({ clientX, rect: elmPosition })) {\n edges.top = true;\n }\n if (allowedEdges.bottom &&\n isNumberCloseTo(clientY, elmPosition.bottom, cursorPrecision) &&\n isWithinBoundingX({ clientX, rect: elmPosition })) {\n edges.bottom = true;\n }\n return edges;\n}\n/** @type {?} */\nconst DEFAULT_RESIZE_CURSORS = Object.freeze({\n topLeft: 'nw-resize',\n topRight: 'ne-resize',\n bottomLeft: 'sw-resize',\n bottomRight: 'se-resize',\n leftOrRight: 'col-resize',\n topOrBottom: 'row-resize'\n});\n/**\n * @param {?} edges\n * @param {?} cursors\n * @return {?}\n */\nfunction getResizeCursor(edges, cursors) {\n if (edges.left && edges.top) {\n return cursors.topLeft;\n }\n else if (edges.right && edges.top) {\n return cursors.topRight;\n }\n else if (edges.left && edges.bottom) {\n return cursors.bottomLeft;\n }\n else if (edges.right && edges.bottom) {\n return cursors.bottomRight;\n }\n else if (edges.left || edges.right) {\n return cursors.leftOrRight;\n }\n else if (edges.top || edges.bottom) {\n return cursors.topOrBottom;\n }\n else {\n return '';\n }\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction getEdgesDiff({ edges, initialRectangle, newRectangle }) {\n /** @type {?} */\n const edgesDiff = {};\n Object.keys(edges).forEach(edge => {\n edgesDiff[edge] = (newRectangle[edge] || 0) - (initialRectangle[edge] || 0);\n });\n return edgesDiff;\n}\n/** @type {?} */\nconst RESIZE_ACTIVE_CLASS = 'resize-active';\n/** @type {?} */\nconst RESIZE_LEFT_HOVER_CLASS = 'resize-left-hover';\n/** @type {?} */\nconst RESIZE_RIGHT_HOVER_CLASS = 'resize-right-hover';\n/** @type {?} */\nconst RESIZE_TOP_HOVER_CLASS = 'resize-top-hover';\n/** @type {?} */\nconst RESIZE_BOTTOM_HOVER_CLASS = 'resize-bottom-hover';\n/** @type {?} */\nconst RESIZE_GHOST_ELEMENT_CLASS = 'resize-ghost-element';\n/** @type {?} */\nconst MOUSE_MOVE_THROTTLE_MS = 50;\n/**\n * Place this on an element to make it resizable. For example:\n *\n * ```html\n * <div\n * mwlResizable\n * [resizeEdges]=\"{bottom: true, right: true, top: true, left: true}\"\n * [enableGhostResize]=\"true\">\n * </div>\n * ```\n * Or in case they are sibling elements:\n * ```html\n * <div mwlResizable #resizableElement=\"mwlResizable\"></div>\n * <div mwlResizeHandle [resizableContainer]=\"resizableElement\" [resizeEdges]=\"{bottom: true, right: true}\"></div>\n * ```\n */\nclass ResizableDirective {\n /**\n * @hidden\n * @param {?} platformId\n * @param {?} renderer\n * @param {?} elm\n * @param {?} zone\n */\n constructor(platformId, renderer, elm, zone) {\n this.platformId = platformId;\n this.renderer = renderer;\n this.elm = elm;\n this.zone = zone;\n /**\n * The edges that an element can be resized from. Pass an object like `{top: true, bottom: false}`. By default no edges can be resized.\n * @deprecated use a resize handle instead that positions itself to the side of the element you would like to resize\n */\n this.resizeEdges = {};\n /**\n * Set to `true` to enable a temporary resizing effect of the element in between the `resizeStart` and `resizeEnd` events.\n */\n this.enableGhostResize = false;\n /**\n * A snap grid that resize events will be locked to.\n *\n * e.g. to only allow the element to be resized every 10px set it to `{left: 10, right: 10}`\n */\n this.resizeSnapGrid = {};\n /**\n * The mouse cursors that will be set on the resize edges\n */\n this.resizeCursors = DEFAULT_RESIZE_CURSORS;\n /**\n * Mouse over thickness to active cursor.\n * @deprecated invalid when you migrate to use resize handles instead of setting resizeEdges on the element\n */\n this.resizeCursorPrecision = 3;\n /**\n * Define the positioning of the ghost element (can be fixed or absolute)\n */\n this.ghostElementPositioning = 'fixed';\n /**\n * Allow elements to be resized to negative dimensions\n */\n this.allowNegativeResizes = false;\n /**\n * The mouse move throttle in milliseconds, default: 50 ms\n */\n this.mouseMoveThrottleMS = MOUSE_MOVE_THROTTLE_MS;\n /**\n * Called when the mouse is pressed and a resize event is about to begin. `$event` is a `ResizeEvent` object.\n */\n this.resizeStart = new EventEmitter();\n /**\n * Called as the mouse is dragged after a resize event has begun. `$event` is a `ResizeEvent` object.\n */\n this.resizing = new EventEmitter();\n /**\n * Called after the mouse is released after a resize event. `$event` is a `ResizeEvent` object.\n */\n this.resizeEnd = new EventEmitter();\n /**\n * @hidden\n */\n this.mouseup = new Subject();\n /**\n * @hidden\n */\n this.mousedown = new Subject();\n /**\n * @hidden\n */\n this.mousemove = new Subject();\n this.destroy$ = new Subject();\n this.resizeEdges$ = new Subject();\n this.pointerEventListeners = PointerEventListeners.getInstance(renderer, zone);\n }\n /**\n * @hidden\n * @return {?}\n */\n ngOnInit() {\n /** @type {?} */\n const mousedown$ = merge(this.pointerEventListeners.pointerDown, this.mousedown);\n /** @type {?} */\n const mousemove$ = merge(this.pointerEventListeners.pointerMove, this.mousemove).pipe(tap(({ event }) => {\n if (currentResize) {\n try {\n event.preventDefault();\n }\n catch (e) {\n // just adding try-catch not to see errors in console if there is a passive listener for same event somewhere\n // browser does nothing except of writing errors to console\n }\n }\n }), share());\n /** @type {?} */\n const mouseup$ = merge(this.pointerEventListeners.pointerUp, this.mouseup);\n /** @type {?} */\n let currentResize;\n /** @type {?} */\n const removeGhostElement = () => {\n if (currentResize && currentResize.clonedNode) {\n this.elm.nativeElement.parentElement.removeChild(currentResize.clonedNode);\n this.renderer.setStyle(this.elm.nativeElement, 'visibility', 'inherit');\n }\n };\n /** @type {?} */\n const getResizeCursors = () => {\n return Object.assign({}, DEFAULT_RESIZE_CURSORS, this.resizeCursors);\n };\n this.resizeEdges$\n .pipe(startWith(this.resizeEdges), map(() => {\n return (this.resizeEdges &&\n Object.keys(this.resizeEdges).some(edge => !!this.resizeEdges[edge]));\n }), switchMap(legacyResizeEdgesEnabled => legacyResizeEdgesEnabled ? mousemove$ : EMPTY), auditTime(this.mouseMoveThrottleMS), takeUntil(this.destroy$))\n .subscribe(({ clientX, clientY }) => {\n /** @type {?} */\n const resizeEdges = getResizeEdges({\n clientX,\n clientY,\n elm: this.elm,\n allowedEdges: this.resizeEdges,\n cursorPrecision: this.resizeCursorPrecision\n });\n /** @type {?} */\n const resizeCursors = getResizeCursors();\n if (!currentResize) {\n /** @type {?} */\n const cursor = getResizeCursor(resizeEdges, resizeCursors);\n this.renderer.setStyle(this.elm.nativeElement, 'cursor', cursor);\n }\n this.setElementClass(this.elm, RESIZE_LEFT_HOVER_CLASS, resizeEdges.left === true);\n this.setElementClass(this.elm, RESIZE_RIGHT_HOVER_CLASS, resizeEdges.right === true);\n this.setElementClass(this.elm, RESIZE_TOP_HOVER_CLASS, resizeEdges.top === true);\n this.setElementClass(this.elm, RESIZE_BOTTOM_HOVER_CLASS, resizeEdges.bottom === true);\n });\n /** @type {?} */\n const mousedrag = mousedown$\n .pipe(mergeMap(startCoords => {\n /**\n * @param {?} moveCoords\n * @return {?}\n */\n function getDiff(moveCoords) {\n return {\n clientX: moveCoords.clientX - startCoords.clientX,\n clientY: moveCoords.clientY - startCoords.clientY\n };\n }\n /** @type {?} */\n const getSnapGrid = () => {\n /** @type {?} */\n const snapGrid = { x: 1, y: 1 };\n if (currentResize) {\n if (this.resizeSnapGrid.left && currentResize.edges.left) {\n snapGrid.x = +this.resizeSnapGrid.left;\n }\n else if (this.resizeSnapGrid.right &&\n currentResize.edges.right) {\n snapGrid.x = +this.resizeSnapGrid.right;\n }\n if (this.resizeSnapGrid.top && currentResize.edges.top) {\n snapGrid.y = +this.resizeSnapGrid.top;\n }\n else if (this.resizeSnapGrid.bottom &&\n currentResize.edges.bottom) {\n snapGrid.y = +this.resizeSnapGrid.bottom;\n }\n }\n return snapGrid;\n };\n /**\n * @param {?} coords\n * @param {?} snapGrid\n * @return {?}\n */\n function getGrid(coords, snapGrid) {\n return {\n x: Math.ceil(coords.clientX / snapGrid.x),\n y: Math.ceil(coords.clientY / snapGrid.y)\n };\n }\n return ((/** @type {?} */ (merge(mousemove$.pipe(take(1)).pipe(map(coords => [, coords])), mousemove$.pipe(pairwise())))))\n .pipe(map(([previousCoords, newCoords]) => {\n return [\n previousCoords ? getDiff(previousCoords) : previousCoords,\n getDiff(newCoords)\n ];\n }))\n .pipe(filter(([previousCoords, newCoords]) => {\n if (!previousCoords) {\n return true;\n }\n /** @type {?} */\n const snapGrid = getSnapGrid();\n /** @type {?} */\n const previousGrid = getGrid(previousCoords, snapGrid);\n /** @type {?} */\n const newGrid = getGrid(newCoords, snapGrid);\n return (previousGrid.x !== newGrid.x || previousGrid.y !== newGrid.y);\n }))\n .pipe(map(([, newCoords]) => {\n /** @type {?} */\n const snapGrid = getSnapGrid();\n return {\n clientX: Math.round(newCoords.clientX / snapGrid.x) * snapGrid.x,\n clientY: Math.round(newCoords.clientY / snapGrid.y) * snapGrid.y\n };\n }))\n .pipe(takeUntil(merge(mouseup$, mousedown$)));\n }))\n .pipe(filter(() => !!currentResize));\n mousedrag\n .pipe(map(({ clientX, clientY }) => {\n return getNewBoundingRectangle((/** @type {?} */ (currentResize)).startingRect, (/** @type {?} */ (currentResize)).edges, clientX, clientY);\n }))\n .pipe(filter((newBoundingRect) => {\n return (this.allowNegativeResizes ||\n !!(newBoundingRect.height &&\n newBoundingRect.width &&\n newBoundingRect.height > 0 &&\n newBoundingRect.width > 0));\n }))\n .pipe(filter((newBoundingRect) => {\n return this.validateResize\n ? this.validateResize({\n rectangle: newBoundingRect,\n edges: getEdgesDiff({\n edges: (/** @type {?} */ (currentResize)).edges,\n initialRectangle: (/** @type {?} */ (currentResize)).startingRect,\n newRectangle: newBoundingRect\n })\n })\n : true;\n }), takeUntil(this.destroy$))\n .subscribe((newBoundingRect) => {\n if (currentResize && currentResize.clonedNode) {\n this.renderer.setStyle(currentResize.clonedNode, 'height', `${newBoundingRect.height}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'width', `${newBoundingRect.width}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'top', `${newBoundingRect.top}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'left', `${newBoundingRect.left}px`);\n }\n if (this.resizing.observers.length > 0) {\n this.zone.run(() => {\n this.resizing.emit({\n edges: getEdgesDiff({\n edges: (/** @type {?} */ (currentResize)).edges,\n initialRectangle: (/** @type {?} */ (currentResize)).startingRect,\n newRectangle: newBoundingRect\n }),\n rectangle: newBoundingRect\n });\n });\n }\n (/** @type {?} */ (currentResize)).currentRect = newBoundingRect;\n });\n mousedown$\n .pipe(map(({ clientX, clientY, edges }) => {\n return (edges ||\n getResizeEdges({\n clientX,\n clientY,\n elm: this.elm,\n allowedEdges: this.resizeEdges,\n cursorPrecision: this.resizeCursorPrecision\n }));\n }))\n .pipe(filter((edges) => {\n return Object.keys(edges).length > 0;\n }), takeUntil(this.destroy$))\n .subscribe((edges) => {\n if (currentResize) {\n removeGhostElement();\n }\n /** @type {?} */\n const startingRect = getElementRect(this.elm, this.ghostElementPositioning);\n currentResize = {\n edges,\n startingRect,\n currentRect: startingRect\n };\n /** @type {?} */\n const resizeCursors = getResizeCursors();\n /** @type {?} */\n const cursor = getResizeCursor(currentResize.edges, resizeCursors);\n this.renderer.setStyle(document.body, 'cursor', cursor);\n this.setElementClass(this.elm, RESIZE_ACTIVE_CLASS, true);\n if (this.enableGhostResize) {\n currentResize.clonedNode = this.elm.nativeElement.cloneNode(true);\n this.elm.nativeElement.parentElement.appendChild(currentResize.clonedNode);\n this.renderer.setStyle(this.elm.nativeElement, 'visibility', 'hidden');\n this.renderer.setStyle(currentResize.clonedNode, 'position', this.ghostElementPositioning);\n this.renderer.setStyle(currentResize.clonedNode, 'left', `${currentResize.startingRect.left}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'top', `${currentResize.startingRect.top}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'height', `${currentResize.startingRect.height}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'width', `${currentResize.startingRect.width}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'cursor', getResizeCursor(currentResize.edges, resizeCursors));\n this.renderer.addClass(currentResize.clonedNode, RESIZE_GHOST_ELEMENT_CLASS);\n (/** @type {?} */ (currentResize.clonedNode)).scrollTop = (/** @type {?} */ (currentResize.startingRect\n .scrollTop));\n (/** @type {?} */ (currentResize.clonedNode)).scrollLeft = (/** @type {?} */ (currentResize.startingRect\n .scrollLeft));\n }\n if (this.resizeStart.observers.length > 0) {\n this.zone.run(() => {\n this.resizeStart.emit({\n edges: getEdgesDiff({\n edges,\n initialRectangle: startingRect,\n newRectangle: startingRect\n }),\n rectangle: getNewBoundingRectangle(startingRect, {}, 0, 0)\n });\n });\n }\n });\n mouseup$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (currentResize) {\n this.renderer.removeClass(this.elm.nativeElement, RESIZE_ACTIVE_CLASS);\n this.renderer.setStyle(document.body, 'cursor', '');\n this.renderer.setStyle(this.elm.nativeElement, 'cursor', '');\n if (this.resizeEnd.observers.length > 0) {\n this.zone.run(() => {\n this.resizeEnd.emit({\n edges: getEdgesDiff({\n edges: (/** @type {?} */ (currentResize)).edges,\n initialRectangle: (/** @type {?} */ (currentResize)).startingRect,\n newRectangle: (/** @type {?} */ (currentResize)).currentRect\n }),\n rectangle: (/** @type {?} */ (currentResize)).currentRect\n });\n });\n }\n removeGhostElement();\n currentResize = null;\n }\n });\n }\n /**\n * @hidden\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.resizeEdges) {\n this.resizeEdges$.next(this.resizeEdges);\n }\n }\n /**\n * @hidden\n * @return {?}\n */\n ngOnDestroy() {\n // browser check for angular universal, because it doesn't know what document is\n if (isPlatformBrowser(this.platformId)) {\n this.renderer.setStyle(document.body, 'cursor', '');\n }\n this.mousedown.complete();\n this.mouseup.complete();\n this.mousemove.complete();\n this.resizeEdges$.complete();\n this.destroy$.next();\n }\n /**\n * @private\n * @param {?} elm\n * @param {?} name\n * @param {?} add\n * @return {?}\n */\n setElementClass(elm, name, add) {\n if (add) {\n this.renderer.addClass(elm.nativeElement, name);\n }\n else {\n this.renderer.removeClass(elm.nativeElement, name);\n }\n }\n}\nResizableDirective.ɵfac = function ResizableDirective_Factory(t) { return new (t || ResizableDirective)(ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nResizableDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ResizableDirective, selectors: [[\"\", \"mwlResizable\", \"\"]], inputs: { resizeEdges: \"resizeEdges\", enableGhostResize: \"enableGhostResize\", resizeSnapGrid: \"resizeSnapGrid\", resizeCursors: \"resizeCursors\", resizeCursorPrecision: \"resizeCursorPrecision\", ghostElementPositioning: \"ghostElementPositioning\", allowNegativeResizes: \"allowNegativeResizes\", mouseMoveThrottleMS: \"mouseMoveThrottleMS\", validateResize: \"validateResize\" }, outputs: { resizeStart: \"resizeStart\", resizing: \"resizing\", resizeEnd: \"resizeEnd\" }, exportAs: [\"mwlResizable\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nResizableDirective.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: Renderer2 },\n { type: ElementRef },\n { type: NgZone }\n];\nResizableDirective.propDecorators = {\n validateResize: [{ type: Input }],\n resizeEdges: [{ type: Input }],\n enableGhostResize: [{ type: Input }],\n resizeSnapGrid: [{ type: Input }],\n resizeCursors: [{ type: Input }],\n resizeCursorPrecision: [{ type: Input }],\n ghostElementPositioning: [{ type: Input }],\n allowNegativeResizes: [{ type: Input }],\n mouseMoveThrottleMS: [{ type: Input }],\n resizeStart: [{ type: Output }],\n resizing: [{ type: Output }],\n resizeEnd: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizableDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlResizable]',\n exportAs: 'mwlResizable'\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { resizeEdges: [{\n type: Input\n }], enableGhostResize: [{\n type: Input\n }], resizeSnapGrid: [{\n type: Input\n }], resizeCursors: [{\n type: Input\n }], resizeCursorPrecision: [{\n type: Input\n }], ghostElementPositioning: [{\n type: Input\n }], allowNegativeResizes: [{\n type: Input\n }], mouseMoveThrottleMS: [{\n type: Input\n }], resizeStart: [{\n type: Output\n }], resizing: [{\n type: Output\n }], resizeEnd: [{\n type: Output\n }], validateResize: [{\n type: Input\n }] }); })();\nclass PointerEventListeners {\n // tslint:disable-line\n /**\n * @param {?} renderer\n * @param {?} zone\n * @return {?}\n */\n static getInstance(renderer, zone) {\n if (!PointerEventListeners.instance) {\n PointerEventListeners.instance = new PointerEventListeners(renderer, zone);\n }\n return PointerEventListeners.instance;\n }\n /**\n * @param {?} renderer\n * @param {?} zone\n */\n constructor(renderer, zone) {\n this.pointerDown = new Observable((observer) => {\n /** @type {?} */\n let unsubscribeMouseDown;\n /** @type {?} */\n let unsubscribeTouchStart;\n zone.runOutsideAngular(() => {\n unsubscribeMouseDown = renderer.listen('document', 'mousedown', (event) => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchStart = renderer.listen('document', 'touchstart', (event) => {\n observer.next({\n clientX: event.touches[0].clientX,\n clientY: event.touches[0].clientY,\n event\n });\n });\n }\n });\n return () => {\n unsubscribeMouseDown();\n if (IS_TOUCH_DEVICE) {\n (/** @type {?} */ (unsubscribeTouchStart))();\n }\n };\n }).pipe(share());\n this.pointerMove = new Observable((observer) => {\n /** @type {?} */\n let unsubscribeMouseMove;\n /** @type {?} */\n let unsubscribeTouchMove;\n zone.runOutsideAngular(() => {\n unsubscribeMouseMove = renderer.listen('document', 'mousemove', (event) => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchMove = renderer.listen('document', 'touchmove', (event) => {\n observer.next({\n clientX: event.targetTouches[0].clientX,\n clientY: event.targetTouches[0].clientY,\n event\n });\n });\n }\n });\n return () => {\n unsubscribeMouseMove();\n if (IS_TOUCH_DEVICE) {\n (/** @type {?} */ (unsubscribeTouchMove))();\n }\n };\n }).pipe(share());\n this.pointerUp = new Observable((observer) => {\n /** @type {?} */\n let unsubscribeMouseUp;\n /** @type {?} */\n let unsubscribeTouchEnd;\n /** @type {?} */\n let unsubscribeTouchCancel;\n zone.runOutsideAngular(() => {\n unsubscribeMouseUp = renderer.listen('document', 'mouseup', (event) => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchEnd = renderer.listen('document', 'touchend', (event) => {\n observer.next({\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n event\n });\n });\n unsubscribeTouchCancel = renderer.listen('document', 'touchcancel', (event) => {\n observer.next({\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n event\n });\n });\n }\n });\n return () => {\n unsubscribeMouseUp();\n if (IS_TOUCH_DEVICE) {\n (/** @type {?} */ (unsubscribeTouchEnd))();\n (/** @type {?} */ (unsubscribeTouchCancel))();\n }\n };\n }).pipe(share());\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * An element placed inside a `mwlResizable` directive to be used as a drag and resize handle\n *\n * For example\n *\n * ```html\n * <div mwlResizable>\n * <div mwlResizeHandle [resizeEdges]=\"{bottom: true, right: true}\"></div>\n * </div>\n * ```\n * Or in case they are sibling elements:\n * ```html\n * <div mwlResizable #resizableElement=\"mwlResizable\"></div>\n * <div mwlResizeHandle [resizableContainer]=\"resizableElement\" [resizeEdges]=\"{bottom: true, right: true}\"></div>\n * ```\n */\nclass ResizeHandleDirective {\n /**\n * @param {?} renderer\n * @param {?} element\n * @param {?} zone\n * @param {?} resizableDirective\n */\n constructor(renderer, element, zone, resizableDirective) {\n this.renderer = renderer;\n this.element = element;\n this.zone = zone;\n this.resizableDirective = resizableDirective;\n /**\n * The `Edges` object that contains the edges of the parent element that dragging the handle will trigger a resize on\n */\n this.resizeEdges = {};\n this.eventListeners = {};\n this.destroy$ = new Subject();\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.zone.runOutsideAngular(() => {\n this.listenOnTheHost('mousedown').subscribe(event => {\n this.onMousedown(event, event.clientX, event.clientY);\n });\n this.listenOnTheHost('mouseup').subscribe(event => {\n this.onMouseup(event.clientX, event.clientY);\n });\n if (IS_TOUCH_DEVICE) {\n this.listenOnTheHost('touchstart').subscribe(event => {\n this.onMousedown(event, event.touches[0].clientX, event.touches[0].clientY);\n });\n merge(this.listenOnTheHost('touchend'), this.listenOnTheHost('touchcancel')).subscribe(event => {\n this.onMouseup(event.changedTouches[0].clientX, event.changedTouches[0].clientY);\n });\n }\n });\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.destroy$.next();\n this.unsubscribeEventListeners();\n }\n /**\n * @hidden\n * @param {?} event\n * @param {?} clientX\n * @param {?} clientY\n * @return {?}\n */\n onMousedown(event, clientX, clientY) {\n event.preventDefault();\n if (!this.eventListeners.touchmove) {\n this.eventListeners.touchmove = this.renderer.listen(this.element.nativeElement, 'touchmove', (touchMoveEvent) => {\n this.onMousemove(touchMoveEvent, touchMoveEvent.targetTouches[0].clientX, touchMoveEvent.targetTouches[0].clientY);\n });\n }\n if (!this.eventListeners.mousemove) {\n this.eventListeners.mousemove = this.renderer.listen(this.element.nativeElement, 'mousemove', (mouseMoveEvent) => {\n this.onMousemove(mouseMoveEvent, mouseMoveEvent.clientX, mouseMoveEvent.clientY);\n });\n }\n this.resizable.mousedown.next({\n clientX,\n clientY,\n edges: this.resizeEdges\n });\n }\n /**\n * @hidden\n * @param {?} clientX\n * @param {?} clientY\n * @return {?}\n */\n onMouseup(clientX, clientY) {\n this.unsubscribeEventListeners();\n this.resizable.mouseup.next({\n clientX,\n clientY,\n edges: this.resizeEdges\n });\n }\n // directive might be passed from DI or as an input\n /**\n * @private\n * @return {?}\n */\n get resizable() {\n return this.resizableDirective || this.resizableContainer;\n }\n /**\n * @private\n * @param {?} event\n * @param {?} clientX\n * @param {?} clientY\n * @return {?}\n */\n onMousemove(event, clientX, clientY) {\n this.resizable.mousemove.next({\n clientX,\n clientY,\n edges: this.resizeEdges,\n event\n });\n }\n /**\n * @private\n * @return {?}\n */\n unsubscribeEventListeners() {\n Object.keys(this.eventListeners).forEach(type => {\n ((/** @type {?} */ (this))).eventListeners[type]();\n delete this.eventListeners[type];\n });\n }\n /**\n * @private\n * @template T\n * @param {?} eventName\n * @return {?}\n */\n listenOnTheHost(eventName) {\n return fromEvent(this.element.nativeElement, eventName).pipe(takeUntil(this.destroy$));\n }\n}\nResizeHandleDirective.ɵfac = function ResizeHandleDirective_Factory(t) { return new (t || ResizeHandleDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ResizableDirective, 8)); };\nResizeHandleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ResizeHandleDirective, selectors: [[\"\", \"mwlResizeHandle\", \"\"]], inputs: { resizeEdges: \"resizeEdges\", resizableContainer: \"resizableContainer\" } });\n/** @nocollapse */\nResizeHandleDirective.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef },\n { type: NgZone },\n { type: ResizableDirective, decorators: [{ type: Optional }] }\n];\nResizeHandleDirective.propDecorators = {\n resizeEdges: [{ type: Input }],\n resizableContainer: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizeHandleDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlResizeHandle]'\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ResizableDirective, decorators: [{\n type: Optional\n }] }]; }, { resizeEdges: [{\n type: Input\n }], resizableContainer: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass ResizableModule {\n}\nResizableModule.ɵfac = function ResizableModule_Factory(t) { return new (t || ResizableModule)(); };\nResizableModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ResizableModule });\nResizableModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizableModule, [{\n type: NgModule,\n args: [{\n declarations: [ResizableDirective, ResizeHandleDirective],\n exports: [ResizableDirective, ResizeHandleDirective]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ResizableModule, { declarations: [ResizableDirective, ResizeHandleDirective], exports: [ResizableDirective, ResizeHandleDirective] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { ResizableDirective, ResizeHandleDirective, ResizableModule };\n\n"],"mappings":"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"},"metadata":{},"sourceType":"module"} |