UNPKG

83.3 kBSource Map (JSON)View Raw
1{"version":3,"file":"angular-resizable-element.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/angular-resizable-element/src/lib/util/is-touch-device.ts","../../../projects/angular-resizable-element/src/lib/util/clone-node.ts","../../../projects/angular-resizable-element/src/lib/resizable.directive.ts","../../../projects/angular-resizable-element/src/lib/resize-handle.directive.ts","../../../projects/angular-resizable-element/src/lib/resizable.module.ts","../../../projects/angular-resizable-element/src/public-api.ts","../../../projects/angular-resizable-element/src/angular-resizable-element.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * @hidden\n */\nexport const IS_TOUCH_DEVICE: boolean = (() => {\n // In case we're in Node.js environment.\n if (typeof window === 'undefined') {\n return false;\n } else {\n return (\n 'ontouchstart' in window ||\n navigator.maxTouchPoints > 0 ||\n navigator.msMaxTouchPoints > 0\n );\n }\n})();\n","/** Creates a deep clone of an element. */\nexport function deepCloneNode(node: HTMLElement): HTMLElement {\n const clone = node.cloneNode(true) as HTMLElement;\n const descendantsWithId = clone.querySelectorAll('[id]');\n const nodeName = node.nodeName.toLowerCase();\n\n // Remove the `id` to avoid having multiple elements with the same id on the page.\n clone.removeAttribute('id');\n\n descendantsWithId.forEach((descendant) => {\n descendant.removeAttribute('id');\n });\n\n if (nodeName === 'canvas') {\n transferCanvasData(node as HTMLCanvasElement, clone as HTMLCanvasElement);\n } else if (\n nodeName === 'input' ||\n nodeName === 'select' ||\n nodeName === 'textarea'\n ) {\n transferInputData(node as HTMLInputElement, clone as HTMLInputElement);\n }\n\n transferData('canvas', node, clone, transferCanvasData);\n transferData('input, textarea, select', node, clone, transferInputData);\n return clone;\n}\n\n/** Matches elements between an element and its clone and allows for their data to be cloned. */\nfunction transferData<T extends Element>(\n selector: string,\n node: HTMLElement,\n clone: HTMLElement,\n callback: (source: T, clone: T) => void\n) {\n const descendantElements = node.querySelectorAll<T>(selector);\n\n if (descendantElements.length) {\n const cloneElements = clone.querySelectorAll<T>(selector);\n\n for (let i = 0; i < descendantElements.length; i++) {\n callback(descendantElements[i], cloneElements[i]);\n }\n }\n}\n\n// Counter for unique cloned radio button names.\nlet cloneUniqueId = 0;\n\n/** Transfers the data of one input element to another. */\nfunction transferInputData(\n source: Element & { value: string },\n clone: Element & { value: string; name: string; type: string }\n) {\n // Browsers throw an error when assigning the value of a file input programmatically.\n if (clone.type !== 'file') {\n clone.value = source.value;\n }\n\n // Radio button `name` attributes must be unique for radio button groups\n // otherwise original radio buttons can lose their checked state\n // once the clone is inserted in the DOM.\n if (clone.type === 'radio' && clone.name) {\n clone.name = `mat-clone-${clone.name}-${cloneUniqueId++}`;\n }\n}\n\n/** Transfers the data of one canvas element to another. */\nfunction transferCanvasData(\n source: HTMLCanvasElement,\n clone: HTMLCanvasElement\n) {\n const context = clone.getContext('2d');\n\n if (context) {\n // In some cases `drawImage` can throw (e.g. if the canvas size is 0x0).\n // We can't do much about it so just ignore the error.\n try {\n context.drawImage(source, 0, 0);\n } catch {}\n }\n}\n","import {\n Directive,\n Renderer2,\n ElementRef,\n OnInit,\n Output,\n Input,\n EventEmitter,\n OnDestroy,\n NgZone,\n Inject,\n PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Subject, Observable, Observer, merge } from 'rxjs';\nimport {\n map,\n mergeMap,\n takeUntil,\n filter,\n pairwise,\n take,\n share,\n tap,\n} from 'rxjs/operators';\nimport { Edges } from './interfaces/edges.interface';\nimport { BoundingRectangle } from './interfaces/bounding-rectangle.interface';\nimport { ResizeEvent } from './interfaces/resize-event.interface';\nimport { IS_TOUCH_DEVICE } from './util/is-touch-device';\nimport { deepCloneNode } from './util/clone-node';\n\ninterface PointerEventCoordinate {\n clientX: number;\n clientY: number;\n event: MouseEvent | TouchEvent;\n}\n\ninterface Coordinate {\n x: number;\n y: number;\n}\n\nfunction getNewBoundingRectangle(\n startingRect: BoundingRectangle,\n edges: Edges,\n clientX: number,\n clientY: number\n): BoundingRectangle {\n const newBoundingRect: BoundingRectangle = {\n top: startingRect.top,\n bottom: startingRect.bottom,\n left: startingRect.left,\n right: startingRect.right,\n };\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\n return newBoundingRect;\n}\n\nfunction getElementRect(\n element: ElementRef,\n ghostElementPositioning: string\n): BoundingRectangle {\n let translateX = 0;\n let translateY = 0;\n const style = element.nativeElement.style;\n const transformProperties = [\n 'transform',\n '-ms-transform',\n '-moz-transform',\n '-o-transform',\n ];\n const transform = transformProperties\n .map((property) => style[property])\n .find((value) => !!value);\n if (transform && transform.includes('translate')) {\n translateX = transform.replace(\n /.*translate3?d?\\((-?[0-9]*)px, (-?[0-9]*)px.*/,\n '$1'\n );\n translateY = transform.replace(\n /.*translate3?d?\\((-?[0-9]*)px, (-?[0-9]*)px.*/,\n '$2'\n );\n }\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:\n element.nativeElement.offsetHeight +\n element.nativeElement.offsetTop -\n translateY,\n left: element.nativeElement.offsetLeft - translateX,\n right:\n element.nativeElement.offsetWidth +\n element.nativeElement.offsetLeft -\n translateX,\n };\n } else {\n const boundingRect: BoundingRectangle =\n 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\nexport interface ResizeCursors {\n topLeft: string;\n topRight: string;\n bottomLeft: string;\n bottomRight: string;\n leftOrRight: string;\n topOrBottom: string;\n}\n\nconst DEFAULT_RESIZE_CURSORS: ResizeCursors = 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\nfunction getResizeCursor(edges: Edges, cursors: ResizeCursors): string {\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\nfunction getEdgesDiff({\n edges,\n initialRectangle,\n newRectangle,\n}: {\n edges: Edges;\n initialRectangle: BoundingRectangle;\n newRectangle: BoundingRectangle;\n}): Edges {\n const edgesDiff: Edges = {};\n Object.keys(edges).forEach((edge) => {\n edgesDiff[edge] = (newRectangle[edge] || 0) - (initialRectangle[edge] || 0);\n });\n return edgesDiff;\n}\n\nconst RESIZE_ACTIVE_CLASS: string = 'resize-active';\nconst RESIZE_GHOST_ELEMENT_CLASS: string = 'resize-ghost-element';\n\nexport const MOUSE_MOVE_THROTTLE_MS: number = 50;\n\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 */\n@Directive({\n selector: '[mwlResizable]',\n exportAs: 'mwlResizable',\n})\nexport class ResizableDirective implements OnInit, OnDestroy {\n /**\n * A function that will be called before each resize event. Return `true` to allow the resize event to propagate or `false` to cancel it\n */\n @Input() validateResize: (resizeEvent: ResizeEvent) => boolean;\n\n /**\n * Set to `true` to enable a temporary resizing effect of the element in between the `resizeStart` and `resizeEnd` events.\n */\n @Input() enableGhostResize: boolean = false;\n\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 @Input() resizeSnapGrid: Edges = {};\n\n /**\n * The mouse cursors that will be set on the resize edges\n */\n @Input() resizeCursors: ResizeCursors = DEFAULT_RESIZE_CURSORS;\n\n /**\n * Define the positioning of the ghost element (can be fixed or absolute)\n */\n @Input() ghostElementPositioning: 'fixed' | 'absolute' = 'fixed';\n\n /**\n * Allow elements to be resized to negative dimensions\n */\n @Input() allowNegativeResizes: boolean = false;\n\n /**\n * The mouse move throttle in milliseconds, default: 50 ms\n */\n @Input() mouseMoveThrottleMS: number = MOUSE_MOVE_THROTTLE_MS;\n\n /**\n * Called when the mouse is pressed and a resize event is about to begin. `$event` is a `ResizeEvent` object.\n */\n @Output() resizeStart = new EventEmitter<ResizeEvent>();\n\n /**\n * Called as the mouse is dragged after a resize event has begun. `$event` is a `ResizeEvent` object.\n */\n @Output() resizing = new EventEmitter<ResizeEvent>();\n\n /**\n * Called after the mouse is released after a resize event. `$event` is a `ResizeEvent` object.\n */\n @Output() resizeEnd = new EventEmitter<ResizeEvent>();\n\n /**\n * @hidden\n */\n public mouseup = new Subject<{\n clientX: number;\n clientY: number;\n edges?: Edges;\n }>();\n\n /**\n * @hidden\n */\n public mousedown = new Subject<{\n clientX: number;\n clientY: number;\n edges?: Edges;\n }>();\n\n /**\n * @hidden\n */\n public mousemove = new Subject<{\n clientX: number;\n clientY: number;\n edges?: Edges;\n event: MouseEvent | TouchEvent;\n }>();\n\n private pointerEventListeners: PointerEventListeners;\n\n private destroy$ = new Subject<void>();\n\n /**\n * @hidden\n */\n constructor(\n @Inject(PLATFORM_ID) private platformId: any,\n private renderer: Renderer2,\n public elm: ElementRef,\n private zone: NgZone\n ) {\n this.pointerEventListeners = PointerEventListeners.getInstance(\n renderer,\n zone\n );\n }\n\n /**\n * @hidden\n */\n ngOnInit(): void {\n const mousedown$: Observable<{\n clientX: number;\n clientY: number;\n edges?: Edges;\n }> = merge(this.pointerEventListeners.pointerDown, this.mousedown);\n\n const mousemove$ = merge(\n this.pointerEventListeners.pointerMove,\n this.mousemove\n ).pipe(\n tap(({ event }) => {\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 }),\n share()\n );\n\n const mouseup$ = merge(this.pointerEventListeners.pointerUp, this.mouseup);\n\n let currentResize: {\n edges: Edges;\n startingRect: BoundingRectangle;\n currentRect: BoundingRectangle;\n clonedNode?: HTMLElement;\n } | null;\n\n const removeGhostElement = () => {\n if (currentResize && currentResize.clonedNode) {\n this.elm.nativeElement.parentElement.removeChild(\n currentResize.clonedNode\n );\n this.renderer.setStyle(this.elm.nativeElement, 'visibility', 'inherit');\n }\n };\n\n const getResizeCursors = (): ResizeCursors => {\n return {\n ...DEFAULT_RESIZE_CURSORS,\n ...this.resizeCursors,\n };\n };\n\n const mousedrag: Observable<any> = mousedown$\n .pipe(\n mergeMap((startCoords) => {\n function getDiff(moveCoords: { clientX: number; clientY: number }) {\n return {\n clientX: moveCoords.clientX - startCoords.clientX,\n clientY: moveCoords.clientY - startCoords.clientY,\n };\n }\n\n const getSnapGrid = () => {\n const snapGrid: Coordinate = { x: 1, y: 1 };\n\n if (currentResize) {\n if (this.resizeSnapGrid.left && currentResize.edges.left) {\n snapGrid.x = +this.resizeSnapGrid.left;\n } else if (\n this.resizeSnapGrid.right &&\n currentResize.edges.right\n ) {\n snapGrid.x = +this.resizeSnapGrid.right;\n }\n\n if (this.resizeSnapGrid.top && currentResize.edges.top) {\n snapGrid.y = +this.resizeSnapGrid.top;\n } else if (\n this.resizeSnapGrid.bottom &&\n currentResize.edges.bottom\n ) {\n snapGrid.y = +this.resizeSnapGrid.bottom;\n }\n }\n\n return snapGrid;\n };\n\n function getGrid(\n coords: { clientX: number; clientY: number },\n snapGrid: Coordinate\n ) {\n return {\n x: Math.ceil(coords.clientX / snapGrid.x),\n y: Math.ceil(coords.clientY / snapGrid.y),\n };\n }\n\n return (\n merge(\n mousemove$.pipe(take(1)).pipe(map((coords) => [, coords])),\n mousemove$.pipe(pairwise())\n ) as Observable<\n [\n { clientX: number; clientY: number },\n { clientX: number; clientY: number }\n ]\n >\n )\n .pipe(\n map(([previousCoords, newCoords]) => {\n return [\n previousCoords ? getDiff(previousCoords) : previousCoords,\n getDiff(newCoords),\n ];\n })\n )\n .pipe(\n filter(([previousCoords, newCoords]) => {\n if (!previousCoords) {\n return true;\n }\n\n const snapGrid: Coordinate = getSnapGrid();\n const previousGrid: Coordinate = getGrid(\n previousCoords,\n snapGrid\n );\n const newGrid: Coordinate = getGrid(newCoords, snapGrid);\n\n return (\n previousGrid.x !== newGrid.x || previousGrid.y !== newGrid.y\n );\n })\n )\n .pipe(\n map(([, newCoords]) => {\n const snapGrid: Coordinate = getSnapGrid();\n return {\n clientX:\n Math.round(newCoords.clientX / snapGrid.x) * snapGrid.x,\n clientY:\n Math.round(newCoords.clientY / snapGrid.y) * snapGrid.y,\n };\n })\n )\n .pipe(takeUntil(merge(mouseup$, mousedown$)));\n })\n )\n .pipe(filter(() => !!currentResize));\n\n mousedrag\n .pipe(\n map(({ clientX, clientY }) => {\n return getNewBoundingRectangle(\n currentResize!.startingRect,\n currentResize!.edges,\n clientX,\n clientY\n );\n })\n )\n .pipe(\n filter((newBoundingRect: BoundingRectangle) => {\n return (\n this.allowNegativeResizes ||\n !!(\n newBoundingRect.height &&\n newBoundingRect.width &&\n newBoundingRect.height > 0 &&\n newBoundingRect.width > 0\n )\n );\n })\n )\n .pipe(\n filter((newBoundingRect: BoundingRectangle) => {\n return this.validateResize\n ? this.validateResize({\n rectangle: newBoundingRect,\n edges: getEdgesDiff({\n edges: currentResize!.edges,\n initialRectangle: currentResize!.startingRect,\n newRectangle: newBoundingRect,\n }),\n })\n : true;\n }),\n takeUntil(this.destroy$)\n )\n .subscribe((newBoundingRect: BoundingRectangle) => {\n if (currentResize && currentResize.clonedNode) {\n this.renderer.setStyle(\n currentResize.clonedNode,\n 'height',\n `${newBoundingRect.height}px`\n );\n this.renderer.setStyle(\n currentResize.clonedNode,\n 'width',\n `${newBoundingRect.width}px`\n );\n this.renderer.setStyle(\n currentResize.clonedNode,\n 'top',\n `${newBoundingRect.top}px`\n );\n this.renderer.setStyle(\n currentResize.clonedNode,\n 'left',\n `${newBoundingRect.left}px`\n );\n }\n\n if (this.resizing.observers.length > 0) {\n this.zone.run(() => {\n this.resizing.emit({\n edges: getEdgesDiff({\n edges: currentResize!.edges,\n initialRectangle: currentResize!.startingRect,\n newRectangle: newBoundingRect,\n }),\n rectangle: newBoundingRect,\n });\n });\n }\n currentResize!.currentRect = newBoundingRect;\n });\n\n mousedown$\n .pipe(\n map(({ edges }) => {\n return edges || {};\n }),\n filter((edges: Edges) => {\n return Object.keys(edges).length > 0;\n }),\n takeUntil(this.destroy$)\n )\n .subscribe((edges: Edges) => {\n if (currentResize) {\n removeGhostElement();\n }\n const startingRect: BoundingRectangle = getElementRect(\n this.elm,\n this.ghostElementPositioning\n );\n currentResize = {\n edges,\n startingRect,\n currentRect: startingRect,\n };\n const resizeCursors = getResizeCursors();\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 = deepCloneNode(this.elm.nativeElement);\n this.elm.nativeElement.parentElement.appendChild(\n currentResize.clonedNode\n );\n this.renderer.setStyle(\n this.elm.nativeElement,\n 'visibility',\n 'hidden'\n );\n this.renderer.setStyle(\n currentResize.clonedNode,\n 'position',\n this.ghostElementPositioning\n );\n this.renderer.setStyle(\n currentResize.clonedNode,\n 'left',\n `${currentResize.startingRect.left}px`\n );\n this.renderer.setStyle(\n currentResize.clonedNode,\n 'top',\n `${currentResize.startingRect.top}px`\n );\n this.renderer.setStyle(\n currentResize.clonedNode,\n 'height',\n `${currentResize.startingRect.height}px`\n );\n this.renderer.setStyle(\n currentResize.clonedNode,\n 'width',\n `${currentResize.startingRect.width}px`\n );\n this.renderer.setStyle(\n currentResize.clonedNode,\n 'cursor',\n getResizeCursor(currentResize.edges, resizeCursors)\n );\n this.renderer.addClass(\n currentResize.clonedNode,\n RESIZE_GHOST_ELEMENT_CLASS\n );\n currentResize.clonedNode!.scrollTop = currentResize.startingRect\n .scrollTop as number;\n currentResize.clonedNode!.scrollLeft = currentResize.startingRect\n .scrollLeft as number;\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\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: currentResize!.edges,\n initialRectangle: currentResize!.startingRect,\n newRectangle: currentResize!.currentRect,\n }),\n rectangle: currentResize!.currentRect,\n });\n });\n }\n removeGhostElement();\n currentResize = null;\n }\n });\n }\n\n /**\n * @hidden\n */\n ngOnDestroy(): void {\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.destroy$.next();\n }\n\n private setElementClass(elm: ElementRef, name: string, add: boolean): void {\n if (add) {\n this.renderer.addClass(elm.nativeElement, name);\n } else {\n this.renderer.removeClass(elm.nativeElement, name);\n }\n }\n}\n\nclass PointerEventListeners {\n public pointerDown: Observable<PointerEventCoordinate>;\n\n public pointerMove: Observable<PointerEventCoordinate>;\n\n public pointerUp: Observable<PointerEventCoordinate>;\n\n private static instance: PointerEventListeners;\n\n public static getInstance(\n renderer: Renderer2,\n zone: NgZone\n ): PointerEventListeners {\n if (!PointerEventListeners.instance) {\n PointerEventListeners.instance = new PointerEventListeners(\n renderer,\n zone\n );\n }\n return PointerEventListeners.instance;\n }\n\n constructor(renderer: Renderer2, zone: NgZone) {\n this.pointerDown = new Observable(\n (observer: Observer<PointerEventCoordinate>) => {\n let unsubscribeMouseDown: () => void;\n let unsubscribeTouchStart: (() => void) | undefined;\n\n zone.runOutsideAngular(() => {\n unsubscribeMouseDown = renderer.listen(\n 'document',\n 'mousedown',\n (event: MouseEvent) => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event,\n });\n }\n );\n\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchStart = renderer.listen(\n 'document',\n 'touchstart',\n (event: TouchEvent) => {\n observer.next({\n clientX: event.touches[0].clientX,\n clientY: event.touches[0].clientY,\n event,\n });\n }\n );\n }\n });\n\n return () => {\n unsubscribeMouseDown();\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchStart!();\n }\n };\n }\n ).pipe(share());\n\n this.pointerMove = new Observable(\n (observer: Observer<PointerEventCoordinate>) => {\n let unsubscribeMouseMove: () => void;\n let unsubscribeTouchMove: (() => void) | undefined;\n\n zone.runOutsideAngular(() => {\n unsubscribeMouseMove = renderer.listen(\n 'document',\n 'mousemove',\n (event: MouseEvent) => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event,\n });\n }\n );\n\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchMove = renderer.listen(\n 'document',\n 'touchmove',\n (event: TouchEvent) => {\n observer.next({\n clientX: event.targetTouches[0].clientX,\n clientY: event.targetTouches[0].clientY,\n event,\n });\n }\n );\n }\n });\n\n return () => {\n unsubscribeMouseMove();\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchMove!();\n }\n };\n }\n ).pipe(share());\n\n this.pointerUp = new Observable(\n (observer: Observer<PointerEventCoordinate>) => {\n let unsubscribeMouseUp: () => void;\n let unsubscribeTouchEnd: (() => void) | undefined;\n let unsubscribeTouchCancel: (() => void) | undefined;\n\n zone.runOutsideAngular(() => {\n unsubscribeMouseUp = renderer.listen(\n 'document',\n 'mouseup',\n (event: MouseEvent) => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event,\n });\n }\n );\n\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchEnd = renderer.listen(\n 'document',\n 'touchend',\n (event: TouchEvent) => {\n observer.next({\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n event,\n });\n }\n );\n\n unsubscribeTouchCancel = renderer.listen(\n 'document',\n 'touchcancel',\n (event: TouchEvent) => {\n observer.next({\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n event,\n });\n }\n );\n }\n });\n\n return () => {\n unsubscribeMouseUp();\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchEnd!();\n unsubscribeTouchCancel!();\n }\n };\n }\n ).pipe(share());\n }\n}\n","import {\n Directive,\n Input,\n Renderer2,\n ElementRef,\n OnInit,\n OnDestroy,\n NgZone,\n Optional,\n} from '@angular/core';\nimport { fromEvent, merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ResizableDirective } from './resizable.directive';\nimport { Edges } from './interfaces/edges.interface';\nimport { IS_TOUCH_DEVICE } from './util/is-touch-device';\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 */\n@Directive({\n selector: '[mwlResizeHandle]',\n})\nexport class ResizeHandleDirective implements OnInit, OnDestroy {\n /**\n * The `Edges` object that contains the edges of the parent element that dragging the handle will trigger a resize on\n */\n @Input() resizeEdges: Edges = {};\n /**\n * Reference to ResizableDirective in case if handle is not located inside of element with ResizableDirective\n */\n @Input() resizableContainer: ResizableDirective;\n\n private eventListeners: {\n touchmove?: () => void;\n mousemove?: () => void;\n [key: string]: (() => void) | undefined;\n } = {};\n\n private destroy$ = new Subject<void>();\n\n constructor(\n private renderer: Renderer2,\n private element: ElementRef,\n private zone: NgZone,\n @Optional() private resizableDirective: ResizableDirective\n ) {}\n\n ngOnInit(): void {\n this.zone.runOutsideAngular(() => {\n this.listenOnTheHost<MouseEvent>('mousedown').subscribe((event) => {\n this.onMousedown(event, event.clientX, event.clientY);\n });\n\n this.listenOnTheHost<MouseEvent>('mouseup').subscribe((event) => {\n this.onMouseup(event.clientX, event.clientY);\n });\n\n if (IS_TOUCH_DEVICE) {\n this.listenOnTheHost<TouchEvent>('touchstart').subscribe((event) => {\n this.onMousedown(\n event,\n event.touches[0].clientX,\n event.touches[0].clientY\n );\n });\n\n merge(\n this.listenOnTheHost<TouchEvent>('touchend'),\n this.listenOnTheHost<TouchEvent>('touchcancel')\n ).subscribe((event) => {\n this.onMouseup(\n event.changedTouches[0].clientX,\n event.changedTouches[0].clientY\n );\n });\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.unsubscribeEventListeners();\n }\n\n /**\n * @hidden\n */\n onMousedown(\n event: MouseEvent | TouchEvent,\n clientX: number,\n clientY: number\n ): void {\n event.preventDefault();\n if (!this.eventListeners.touchmove) {\n this.eventListeners.touchmove = this.renderer.listen(\n this.element.nativeElement,\n 'touchmove',\n (touchMoveEvent: TouchEvent) => {\n this.onMousemove(\n touchMoveEvent,\n touchMoveEvent.targetTouches[0].clientX,\n touchMoveEvent.targetTouches[0].clientY\n );\n }\n );\n }\n if (!this.eventListeners.mousemove) {\n this.eventListeners.mousemove = this.renderer.listen(\n this.element.nativeElement,\n 'mousemove',\n (mouseMoveEvent: MouseEvent) => {\n this.onMousemove(\n mouseMoveEvent,\n mouseMoveEvent.clientX,\n mouseMoveEvent.clientY\n );\n }\n );\n }\n this.resizable.mousedown.next({\n clientX,\n clientY,\n edges: this.resizeEdges,\n });\n }\n\n /**\n * @hidden\n */\n onMouseup(clientX: number, clientY: number): void {\n this.unsubscribeEventListeners();\n this.resizable.mouseup.next({\n clientX,\n clientY,\n edges: this.resizeEdges,\n });\n }\n\n // directive might be passed from DI or as an input\n private get resizable(): ResizableDirective {\n return this.resizableDirective || this.resizableContainer;\n }\n\n private onMousemove(\n event: MouseEvent | TouchEvent,\n clientX: number,\n clientY: number\n ): void {\n this.resizable.mousemove.next({\n clientX,\n clientY,\n edges: this.resizeEdges,\n event,\n });\n }\n\n private unsubscribeEventListeners(): void {\n Object.keys(this.eventListeners).forEach((type) => {\n (this as any).eventListeners[type]();\n delete this.eventListeners[type];\n });\n }\n\n private listenOnTheHost<T extends Event>(eventName: string) {\n return fromEvent<T>(this.element.nativeElement, eventName).pipe(\n takeUntil(this.destroy$)\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ResizableDirective } from './resizable.directive';\nimport { ResizeHandleDirective } from './resize-handle.directive';\n\n@NgModule({\n declarations: [ResizableDirective, ResizeHandleDirective],\n exports: [ResizableDirective, ResizeHandleDirective],\n})\nexport class ResizableModule {}\n","/*\n * Public API Surface of angular-resizable-element\n */\n\nexport * from './lib/resizable.module';\nexport { BoundingRectangle } from './lib/interfaces/bounding-rectangle.interface';\nexport { Edges } from './lib/interfaces/edges.interface';\nexport { ResizeEvent } from './lib/interfaces/resize-event.interface';\nexport { ResizableDirective } from './lib/resizable.directive';\nexport { ResizeHandleDirective } from './lib/resize-handle.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["EventEmitter","Subject","merge","tap","share","mergeMap","take","map","pairwise","filter","takeUntil","isPlatformBrowser","Directive","Inject","PLATFORM_ID","Renderer2","ElementRef","NgZone","Input","Output","Observable","fromEvent","Optional","NgModule"],"mappings":"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"}
\No newline at end of file