UNPKG

118 kBSource Map (JSON)View Raw
1{"version":3,"file":"angular-draggable-droppable.umd.js","sources":["../../../node_modules/@mattlewis92/dom-autoscroller/dist/bundle.es.js","node_modules/tslib/tslib.es6.js","ng:/angular-draggable-droppable/lib/draggable-helper.provider.ts","ng:/angular-draggable-droppable/lib/draggable-scroll-container.directive.ts","ng:/angular-draggable-droppable/lib/util.ts","ng:/angular-draggable-droppable/lib/draggable.directive.ts","ng:/angular-draggable-droppable/lib/droppable.directive.ts","ng:/angular-draggable-droppable/lib/drag-and-drop.module.ts"],"sourcesContent":["function getDef(f, d) {\n if (typeof f === 'undefined') {\n return typeof d === 'undefined' ? f : d;\n }\n\n return f;\n}\nfunction boolean(func, def) {\n\n func = getDef(func, def);\n\n if (typeof func === 'function') {\n return function f() {\n var arguments$1 = arguments;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments$1[_key];\n }\n\n return !!func.apply(this, args);\n };\n }\n\n return !!func ? function () {\n return true;\n } : function () {\n return false;\n };\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\n/**\n * Returns `true` if provided input is Element.\n * @name isElement\n * @param {*} [input]\n * @returns {boolean}\n */\nvar isElement$1 = function (input) {\n return input != null && (typeof input === 'undefined' ? 'undefined' : _typeof(input)) === 'object' && input.nodeType === 1 && _typeof(input.style) === 'object' && _typeof(input.ownerDocument) === 'object';\n};\n\nfunction indexOfElement(elements, element){\n element = resolveElement(element, true);\n if(!isElement$1(element)) { return -1; }\n for(var i=0; i<elements.length; i++){\n if(elements[i] === element){\n return i;\n }\n }\n return -1;\n}\n\nfunction hasElement(elements, element){\n return -1 !== indexOfElement(elements, element);\n}\n\nfunction pushElements(elements, toAdd){\n\n for(var i=0; i<toAdd.length; i++){\n if(!hasElement(elements, toAdd[i]))\n { elements.push(toAdd[i]); }\n }\n\n return toAdd;\n}\n\nfunction addElements(elements){\n var arguments$1 = arguments;\n\n var toAdd = [], len = arguments.length - 1;\n while ( len-- > 0 ) { toAdd[ len ] = arguments$1[ len + 1 ]; }\n\n toAdd = toAdd.map(resolveElement);\n return pushElements(elements, toAdd);\n}\n\nfunction removeElements(elements){\n var arguments$1 = arguments;\n\n var toRemove = [], len = arguments.length - 1;\n while ( len-- > 0 ) { toRemove[ len ] = arguments$1[ len + 1 ]; }\n\n return toRemove.map(resolveElement).reduce(function (last, e){\n\n var index = indexOfElement(elements, e);\n\n if(index !== -1)\n { return last.concat(elements.splice(index, 1)); }\n return last;\n }, []);\n}\n\nfunction resolveElement(element, noThrow){\n if(typeof element === 'string'){\n try{\n return document.querySelector(element);\n }catch(e){\n throw e;\n }\n\n }\n\n if(!isElement$1(element) && !noThrow){\n throw new TypeError((element + \" is not a DOM element.\"));\n }\n return element;\n}\n\nfunction createPointCB(object, options) {\n\n // A persistent object (as opposed to returned object) is used to save memory\n // This is good to prevent layout thrashing, or for games, and such\n\n // NOTE\n // This uses IE fixes which should be OK to remove some day. :)\n // Some speed will be gained by removal of these.\n\n // pointCB should be saved in a variable on return\n // This allows the usage of element.removeEventListener\n\n options = options || {};\n\n var allowUpdate = boolean(options.allowUpdate, true);\n\n /*if(typeof options.allowUpdate === 'function'){\n allowUpdate = options.allowUpdate;\n }else{\n allowUpdate = function(){return true;};\n }*/\n\n return function pointCB(event) {\n\n event = event || window.event; // IE-ism\n object.target = event.target || event.srcElement || event.originalTarget;\n object.element = this;\n object.type = event.type;\n\n if (!allowUpdate(event)) {\n return;\n }\n\n // Support touch\n // http://www.creativebloq.com/javascript/make-your-site-work-touch-devices-51411644\n\n if (event.targetTouches) {\n object.x = event.targetTouches[0].clientX;\n object.y = event.targetTouches[0].clientY;\n object.pageX = event.targetTouches[0].pageX;\n object.pageY = event.targetTouches[0].pageY;\n object.screenX = event.targetTouches[0].screenX;\n object.screenY = event.targetTouches[0].screenY;\n } else {\n\n // If pageX/Y aren't available and clientX/Y are,\n // calculate pageX/Y - logic taken from jQuery.\n // (This is to support old IE)\n // NOTE Hopefully this can be removed soon.\n\n if (event.pageX === null && event.clientX !== null) {\n var eventDoc = event.target && event.target.ownerDocument || document;\n var doc = eventDoc.documentElement;\n var body = eventDoc.body;\n\n object.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n object.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n } else {\n object.pageX = event.pageX;\n object.pageY = event.pageY;\n }\n\n // pageX, and pageY change with page scroll\n // so we're not going to use those for x, and y.\n // NOTE Most browsers also alias clientX/Y with x/y\n // so that's something to consider down the road.\n\n object.x = event.clientX;\n object.y = event.clientY;\n\n object.screenX = event.screenX;\n object.screenY = event.screenY;\n }\n\n object.clientX = object.x;\n object.clientY = object.y;\n };\n\n //NOTE Remember accessibility, Aria roles, and labels.\n}\n\nfunction createWindowRect() {\n var props = {\n top: { value: 0, enumerable: true },\n left: { value: 0, enumerable: true },\n right: { value: window.innerWidth, enumerable: true },\n bottom: { value: window.innerHeight, enumerable: true },\n width: { value: window.innerWidth, enumerable: true },\n height: { value: window.innerHeight, enumerable: true },\n x: { value: 0, enumerable: true },\n y: { value: 0, enumerable: true }\n };\n\n if (Object.create) {\n return Object.create({}, props);\n } else {\n var rect = {};\n Object.defineProperties(rect, props);\n return rect;\n }\n}\n\nfunction getClientRect(el) {\n if (el === window) {\n return createWindowRect();\n } else {\n try {\n var rect = el.getBoundingClientRect();\n if (rect.x === undefined) {\n rect.x = rect.left;\n rect.y = rect.top;\n }\n return rect;\n } catch (e) {\n throw new TypeError(\"Can't call getBoundingClientRect on \" + el);\n }\n }\n}\n\nfunction pointInside(point, el) {\n var rect = getClientRect(el);\n return point.y > rect.top && point.y < rect.bottom && point.x > rect.left && point.x < rect.right;\n}\n\nvar objectCreate = void 0;\nif (typeof Object.create != 'function') {\n objectCreate = function (undefined$1) {\n var Temp = function Temp() {};\n return function (prototype, propertiesObject) {\n if (prototype !== Object(prototype) && prototype !== null) {\n throw TypeError('Argument must be an object, or null');\n }\n Temp.prototype = prototype || {};\n var result = new Temp();\n Temp.prototype = null;\n if (propertiesObject !== undefined$1) {\n Object.defineProperties(result, propertiesObject);\n }\n\n // to imitate the case of Object.create(null)\n if (prototype === null) {\n result.__proto__ = null;\n }\n return result;\n };\n }();\n} else {\n objectCreate = Object.create;\n}\n\nvar objectCreate$1 = objectCreate;\n\nvar mouseEventProps = ['altKey', 'button', 'buttons', 'clientX', 'clientY', 'ctrlKey', 'metaKey', 'movementX', 'movementY', 'offsetX', 'offsetY', 'pageX', 'pageY', 'region', 'relatedTarget', 'screenX', 'screenY', 'shiftKey', 'which', 'x', 'y'];\n\nfunction createDispatcher(element) {\n\n var defaultSettings = {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n ctrlKey: false,\n shiftKey: false,\n altKey: false,\n metaKey: false,\n button: 0,\n buttons: 1,\n relatedTarget: null,\n region: null\n };\n\n if (element !== undefined) {\n element.addEventListener('mousemove', onMove);\n }\n\n function onMove(e) {\n for (var i = 0; i < mouseEventProps.length; i++) {\n defaultSettings[mouseEventProps[i]] = e[mouseEventProps[i]];\n }\n }\n\n var dispatch = function () {\n if (MouseEvent) {\n return function m1(element, initMove, data) {\n var evt = new MouseEvent('mousemove', createMoveInit(defaultSettings, initMove));\n\n //evt.dispatched = 'mousemove';\n setSpecial(evt, data);\n\n return element.dispatchEvent(evt);\n };\n } else if (typeof document.createEvent === 'function') {\n return function m2(element, initMove, data) {\n var settings = createMoveInit(defaultSettings, initMove);\n var evt = document.createEvent('MouseEvents');\n\n evt.initMouseEvent(\"mousemove\", true, //can bubble\n true, //cancelable\n window, //view\n 0, //detail\n settings.screenX, //0, //screenX\n settings.screenY, //0, //screenY\n settings.clientX, //80, //clientX\n settings.clientY, //20, //clientY\n settings.ctrlKey, //false, //ctrlKey\n settings.altKey, //false, //altKey\n settings.shiftKey, //false, //shiftKey\n settings.metaKey, //false, //metaKey\n settings.button, //0, //button\n settings.relatedTarget //null //relatedTarget\n );\n\n //evt.dispatched = 'mousemove';\n setSpecial(evt, data);\n\n return element.dispatchEvent(evt);\n };\n } else if (typeof document.createEventObject === 'function') {\n return function m3(element, initMove, data) {\n var evt = document.createEventObject();\n var settings = createMoveInit(defaultSettings, initMove);\n for (var name in settings) {\n evt[name] = settings[name];\n }\n\n //evt.dispatched = 'mousemove';\n setSpecial(evt, data);\n\n return element.dispatchEvent(evt);\n };\n }\n }();\n\n function destroy() {\n if (element) { element.removeEventListener('mousemove', onMove, false); }\n defaultSettings = null;\n }\n\n return {\n destroy: destroy,\n dispatch: dispatch\n };\n}\n\nfunction createMoveInit(defaultSettings, initMove) {\n initMove = initMove || {};\n var settings = objectCreate$1(defaultSettings);\n for (var i = 0; i < mouseEventProps.length; i++) {\n if (initMove[mouseEventProps[i]] !== undefined) { settings[mouseEventProps[i]] = initMove[mouseEventProps[i]]; }\n }\n\n return settings;\n}\n\nfunction setSpecial(e, data) {\n console.log('data ', data);\n e.data = data || {};\n e.dispatched = 'mousemove';\n}\n\nvar prefix = [ 'webkit', 'moz', 'ms', 'o' ];\n\nvar requestFrame = (function () {\n\n if (typeof window === \"undefined\") {\n return function () {};\n }\n\n for ( var i = 0, limit = prefix.length ; i < limit && ! window.requestAnimationFrame ; ++i ) {\n window.requestAnimationFrame = window[ prefix[ i ] + 'RequestAnimationFrame' ];\n }\n\n if ( ! window.requestAnimationFrame ) {\n var lastTime = 0;\n\n window.requestAnimationFrame = function (callback) {\n var now = new Date().getTime();\n var ttc = Math.max( 0, 16 - now - lastTime );\n var timer = window.setTimeout( function () { return callback( now + ttc ); }, ttc );\n\n lastTime = now + ttc;\n\n return timer;\n };\n }\n\n return window.requestAnimationFrame.bind( window );\n})();\n\nvar cancelFrame = (function () {\n\n if (typeof window === \"undefined\") {\n return function () {};\n }\n\n for ( var i = 0, limit = prefix.length ; i < limit && ! window.cancelAnimationFrame ; ++i ) {\n window.cancelAnimationFrame = window[ prefix[ i ] + 'CancelAnimationFrame' ] || window[ prefix[ i ] + 'CancelRequestAnimationFrame' ];\n }\n\n if ( ! window.cancelAnimationFrame ) {\n window.cancelAnimationFrame = function (timer) {\n window.clearTimeout( timer );\n };\n }\n\n return window.cancelAnimationFrame.bind( window );\n})();\n\nfunction AutoScroller(elements, options){\n if ( options === void 0 ) options = {};\n\n var self = this;\n var maxSpeed = 4, scrolling = false;\n\n if (typeof options.margin !== 'object') {\n var margin = options.margin || -1;\n\n this.margin = {\n left: margin,\n right: margin,\n top: margin,\n bottom: margin\n };\n } else {\n this.margin = options.margin;\n }\n\n //this.scrolling = false;\n this.scrollWhenOutside = options.scrollWhenOutside || false;\n\n var point = {},\n pointCB = createPointCB(point),\n dispatcher = createDispatcher(),\n down = false;\n\n window.addEventListener('mousemove', pointCB, false);\n window.addEventListener('touchmove', pointCB, false);\n\n if(!isNaN(options.maxSpeed)){\n maxSpeed = options.maxSpeed;\n }\n\n if (typeof maxSpeed !== 'object') {\n maxSpeed = {\n left: maxSpeed,\n right: maxSpeed,\n top: maxSpeed,\n bottom: maxSpeed\n };\n }\n\n this.autoScroll = boolean(options.autoScroll);\n this.syncMove = boolean(options.syncMove, false);\n\n this.destroy = function(forceCleanAnimation) {\n window.removeEventListener('mousemove', pointCB, false);\n window.removeEventListener('touchmove', pointCB, false);\n window.removeEventListener('mousedown', onDown, false);\n window.removeEventListener('touchstart', onDown, false);\n window.removeEventListener('mouseup', onUp, false);\n window.removeEventListener('touchend', onUp, false);\n window.removeEventListener('pointerup', onUp, false);\n window.removeEventListener('mouseleave', onMouseOut, false);\n\n window.removeEventListener('mousemove', onMove, false);\n window.removeEventListener('touchmove', onMove, false);\n\n window.removeEventListener('scroll', setScroll, true);\n elements = [];\n if(forceCleanAnimation){\n cleanAnimation();\n }\n };\n\n this.add = function(){\n var element = [], len = arguments.length;\n while ( len-- ) element[ len ] = arguments[ len ];\n\n addElements.apply(void 0, [ elements ].concat( element ));\n return this;\n };\n\n this.remove = function(){\n var element = [], len = arguments.length;\n while ( len-- ) element[ len ] = arguments[ len ];\n\n return removeElements.apply(void 0, [ elements ].concat( element ));\n };\n\n var hasWindow = null, windowAnimationFrame;\n\n if(Object.prototype.toString.call(elements) !== '[object Array]'){\n elements = [elements];\n }\n\n (function(temp){\n elements = [];\n temp.forEach(function(element){\n if(element === window){\n hasWindow = window;\n }else {\n self.add(element);\n }\n });\n }(elements));\n\n Object.defineProperties(this, {\n down: {\n get: function(){ return down; }\n },\n maxSpeed: {\n get: function(){ return maxSpeed; }\n },\n point: {\n get: function(){ return point; }\n },\n scrolling: {\n get: function(){ return scrolling; }\n }\n });\n\n var current = null, animationFrame;\n\n window.addEventListener('mousedown', onDown, false);\n window.addEventListener('touchstart', onDown, false);\n window.addEventListener('mouseup', onUp, false);\n window.addEventListener('touchend', onUp, false);\n\n /*\n IE does not trigger mouseup event when scrolling.\n It is a known issue that Microsoft won't fix.\n https://connect.microsoft.com/IE/feedback/details/783058/scrollbar-trigger-mousedown-but-not-mouseup\n IE supports pointer events instead\n */\n window.addEventListener('pointerup', onUp, false);\n\n window.addEventListener('mousemove', onMove, false);\n window.addEventListener('touchmove', onMove, false);\n\n window.addEventListener('mouseleave', onMouseOut, false);\n\n window.addEventListener('scroll', setScroll, true);\n\n function setScroll(e){\n\n for(var i=0; i<elements.length; i++){\n if(elements[i] === e.target){\n scrolling = true;\n break;\n }\n }\n\n if(scrolling){\n requestFrame(function (){ return scrolling = false; });\n }\n }\n\n function onDown(){\n down = true;\n }\n\n function onUp(){\n down = false;\n cleanAnimation();\n }\n function cleanAnimation(){\n cancelFrame(animationFrame);\n cancelFrame(windowAnimationFrame);\n }\n function onMouseOut(){\n down = false;\n }\n\n function getTarget(target){\n if(!target){\n return null;\n }\n\n if(current === target){\n return target;\n }\n\n if(hasElement(elements, target)){\n return target;\n }\n\n while(target = target.parentNode){\n if(hasElement(elements, target)){\n return target;\n }\n }\n\n return null;\n }\n\n function getElementUnderPoint(){\n var underPoint = null;\n\n for(var i=0; i<elements.length; i++){\n if(inside(point, elements[i])){\n underPoint = elements[i];\n }\n }\n\n return underPoint;\n }\n\n\n function onMove(event){\n\n if(!self.autoScroll()) { return; }\n\n if(event['dispatched']){ return; }\n\n var target = event.target, body = document.body;\n\n if(current && !inside(point, current)){\n if(!self.scrollWhenOutside){\n current = null;\n }\n }\n\n if(target && target.parentNode === body){\n //The special condition to improve speed.\n target = getElementUnderPoint();\n }else {\n target = getTarget(target);\n\n if(!target){\n target = getElementUnderPoint();\n }\n }\n\n\n if(target && target !== current){\n current = target;\n }\n\n if(hasWindow){\n cancelFrame(windowAnimationFrame);\n windowAnimationFrame = requestFrame(scrollWindow);\n }\n\n\n if(!current){\n return;\n }\n\n cancelFrame(animationFrame);\n animationFrame = requestFrame(scrollTick);\n }\n\n function scrollWindow(){\n autoScroll(hasWindow);\n\n cancelFrame(windowAnimationFrame);\n windowAnimationFrame = requestFrame(scrollWindow);\n }\n\n function scrollTick(){\n\n if(!current){\n return;\n }\n\n autoScroll(current);\n\n cancelFrame(animationFrame);\n animationFrame = requestFrame(scrollTick);\n\n }\n\n\n function autoScroll(el){\n var rect = getClientRect(el), scrollx, scrolly;\n\n if(point.x < rect.left + self.margin.left){\n scrollx = Math.floor(\n Math.max(-1, (point.x - rect.left) / self.margin.left - 1) * self.maxSpeed.left\n );\n }else if(point.x > rect.right - self.margin.right){\n scrollx = Math.ceil(\n Math.min(1, (point.x - rect.right) / self.margin.right + 1) * self.maxSpeed.right\n );\n }else {\n scrollx = 0;\n }\n\n if(point.y < rect.top + self.margin.top){\n scrolly = Math.floor(\n Math.max(-1, (point.y - rect.top) / self.margin.top - 1) * self.maxSpeed.top\n );\n }else if(point.y > rect.bottom - self.margin.bottom){\n scrolly = Math.ceil(\n Math.min(1, (point.y - rect.bottom) / self.margin.bottom + 1) * self.maxSpeed.bottom\n );\n }else {\n scrolly = 0;\n }\n\n if(self.syncMove()){\n /*\n Notes about mousemove event dispatch.\n screen(X/Y) should need to be updated.\n Some other properties might need to be set.\n Keep the syncMove option default false until all inconsistencies are taken care of.\n */\n dispatcher.dispatch(el, {\n pageX: point.pageX + scrollx,\n pageY: point.pageY + scrolly,\n clientX: point.x + scrollx,\n clientY: point.y + scrolly\n });\n }\n\n setTimeout(function (){\n\n if(scrolly){\n scrollY(el, scrolly);\n }\n\n if(scrollx){\n scrollX(el, scrollx);\n }\n\n });\n }\n\n function scrollY(el, amount){\n if(el === window){\n window.scrollTo(el.pageXOffset, el.pageYOffset + amount);\n }else {\n el.scrollTop += amount;\n }\n }\n\n function scrollX(el, amount){\n if(el === window){\n window.scrollTo(el.pageXOffset + amount, el.pageYOffset);\n }else {\n el.scrollLeft += amount;\n }\n }\n\n}\n\nfunction AutoScrollerFactory(element, options){\n return new AutoScroller(element, options);\n}\n\nfunction inside(point, el, rect){\n if(!rect){\n return pointInside(point, el);\n }else {\n return (point.y > rect.top && point.y < rect.bottom &&\n point.x > rect.left && point.x < rect.right);\n }\n}\n\n/*\ngit remote add origin https://github.com/hollowdoor/dom_autoscroller.git\ngit push -u origin master\n*/\n\nexport default AutoScrollerFactory;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = 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\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\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 __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\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = 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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Subject } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\nexport interface CurrentDragData {\n clientX: number;\n clientY: number;\n dropData: any;\n target: EventTarget;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DraggableHelper {\n currentDrag = new Subject<Subject<CurrentDragData>>();\n}\n","import {\n Directive,\n ElementRef,\n Input,\n NgZone,\n OnInit,\n Renderer2,\n} from '@angular/core';\n\n/**\n * If the window isn't scrollable, then place this on the scrollable container that draggable elements are inside. e.g.\n * ```html\n <div style=\"overflow: scroll\" mwlDraggableScrollContainer>\n <div mwlDraggable>Drag me!</div>\n </div>\n ```\n */\n@Directive({\n selector: '[mwlDraggableScrollContainer]',\n})\nexport class DraggableScrollContainerDirective {\n /**\n * Trigger the DragStart after a long touch in scrollable container when true\n * @deprecated will be removed in v5 (use [touchStartLongPress]=\"{delay: 300, delta: 30}\" on the mwlDraggable element instead)\n */\n @Input() activeLongPressDrag: boolean = false;\n\n /**\n * Configuration of a long touch\n * Duration in ms of a long touch before activating DragStart\n * Delta of the\n * @deprecated will be removed in v5 (use [touchStartLongPress]=\"{delay: 300, delta: 30}\" on the mwlDraggable element instead)\n */\n @Input() longPressConfig = { duration: 300, delta: 30 };\n\n /**\n * @hidden\n */\n constructor(public elementRef: ElementRef<HTMLElement>) {}\n}\n","import { ElementRef, Renderer2 } from '@angular/core';\n\nexport function addClass(\n renderer: Renderer2,\n element: ElementRef<HTMLElement>,\n classToAdd: string\n) {\n if (classToAdd) {\n classToAdd\n .split(' ')\n .forEach((className) =>\n renderer.addClass(element.nativeElement, className)\n );\n }\n}\n\nexport function removeClass(\n renderer: Renderer2,\n element: ElementRef<HTMLElement>,\n classToRemove: string\n) {\n if (classToRemove) {\n classToRemove\n .split(' ')\n .forEach((className) =>\n renderer.removeClass(element.nativeElement, className)\n );\n }\n}\n","import {\n Directive,\n OnInit,\n ElementRef,\n Renderer2,\n Output,\n EventEmitter,\n Input,\n OnDestroy,\n OnChanges,\n NgZone,\n SimpleChanges,\n Inject,\n TemplateRef,\n ViewContainerRef,\n Optional,\n} from '@angular/core';\nimport {\n Subject,\n Observable,\n merge,\n ReplaySubject,\n combineLatest,\n fromEvent,\n} from 'rxjs';\nimport {\n map,\n mergeMap,\n takeUntil,\n take,\n takeLast,\n pairwise,\n share,\n filter,\n count,\n startWith,\n} from 'rxjs/operators';\nimport { CurrentDragData, DraggableHelper } from './draggable-helper.provider';\nimport { DOCUMENT } from '@angular/common';\nimport autoScroll from '@mattlewis92/dom-autoscroller';\nimport { DraggableScrollContainerDirective } from './draggable-scroll-container.directive';\nimport { addClass, removeClass } from './util';\n\nexport interface Coordinates {\n x: number;\n y: number;\n}\n\nexport interface DragAxis {\n x: boolean;\n y: boolean;\n}\n\nexport interface SnapGrid {\n x?: number;\n y?: number;\n}\n\nexport interface DragPointerDownEvent extends Coordinates {}\n\nexport interface DragStartEvent {\n cancelDrag$: ReplaySubject<void>;\n}\n\nexport interface DragMoveEvent extends Coordinates {}\n\nexport interface DragEndEvent extends Coordinates {\n dragCancelled: boolean;\n}\n\nexport interface ValidateDragParams extends Coordinates {\n transform: {\n x: number;\n y: number;\n };\n}\n\nexport type ValidateDrag = (params: ValidateDragParams) => boolean;\n\nexport interface PointerEvent {\n clientX: number;\n clientY: number;\n event: MouseEvent | TouchEvent;\n}\n\nexport interface TimeLongPress {\n timerBegin: number;\n timerEnd: number;\n}\n\nexport interface GhostElementCreatedEvent {\n clientX: number;\n clientY: number;\n element: HTMLElement;\n}\n\n@Directive({\n selector: '[mwlDraggable]',\n})\nexport class DraggableDirective implements OnInit, OnChanges, OnDestroy {\n /**\n * an object of data you can pass to the drop event\n */\n @Input() dropData: any;\n\n /**\n * The axis along which the element is draggable\n */\n @Input() dragAxis: DragAxis = { x: true, y: true };\n\n /**\n * Snap all drags to an x / y grid\n */\n @Input() dragSnapGrid: SnapGrid = {};\n\n /**\n * Show a ghost element that shows the drag when dragging\n */\n @Input() ghostDragEnabled: boolean = true;\n\n /**\n * Show the original element when ghostDragEnabled is true\n */\n @Input() showOriginalElementWhileDragging: boolean = false;\n\n /**\n * Allow custom behaviour to control when the element is dragged\n */\n @Input() validateDrag: ValidateDrag;\n\n /**\n * The cursor to use when hovering over a draggable element\n */\n @Input() dragCursor: string = '';\n\n /**\n * The css class to apply when the element is being dragged\n */\n @Input() dragActiveClass: string;\n\n /**\n * The element the ghost element will be appended to. Default is next to the dragged element\n */\n @Input() ghostElementAppendTo: HTMLElement;\n\n /**\n * An ng-template to be inserted into the parent element of the ghost element. It will overwrite any child nodes.\n */\n @Input() ghostElementTemplate: TemplateRef<any>;\n\n /**\n * Amount of milliseconds to wait on touch devices before starting to drag the element (so that you can scroll the page by touching a draggable element)\n */\n @Input() touchStartLongPress: { delay: number; delta: number };\n\n /*\n * Options used to control the behaviour of auto scrolling: https://www.npmjs.com/package/dom-autoscroller\n */\n @Input() autoScroll: {\n margin:\n | number\n | { top?: number; left?: number; right?: number; bottom?: number };\n maxSpeed?:\n | number\n | { top?: number; left?: number; right?: number; bottom?: number };\n scrollWhenOutside?: boolean;\n } = {\n margin: 20,\n };\n\n /**\n * Called when the element can be dragged along one axis and has the mouse or pointer device pressed on it\n */\n @Output() dragPointerDown = new EventEmitter<DragPointerDownEvent>();\n\n /**\n * Called when the element has started to be dragged.\n * Only called after at least one mouse or touch move event.\n * If you call $event.cancelDrag$.emit() it will cancel the current drag\n */\n @Output() dragStart = new EventEmitter<DragStartEvent>();\n\n /**\n * Called after the ghost element has been created\n */\n @Output() ghostElementCreated = new EventEmitter<GhostElementCreatedEvent>();\n\n /**\n * Called when the element is being dragged\n */\n @Output() dragging = new EventEmitter<DragMoveEvent>();\n\n /**\n * Called after the element is dragged\n */\n @Output() dragEnd = new EventEmitter<DragEndEvent>();\n\n /**\n * @hidden\n */\n pointerDown$ = new Subject<PointerEvent>();\n\n /**\n * @hidden\n */\n pointerMove$ = new Subject<PointerEvent>();\n\n /**\n * @hidden\n */\n pointerUp$ = new Subject<PointerEvent>();\n\n private eventListenerSubscriptions: {\n mousemove?: () => void;\n mousedown?: () => void;\n mouseup?: () => void;\n mouseenter?: () => void;\n mouseleave?: () => void;\n touchstart?: () => void;\n touchmove?: () => void;\n touchend?: () => void;\n touchcancel?: () => void;\n } = {};\n\n private ghostElement: HTMLElement | null;\n\n private destroy$ = new Subject();\n\n private timeLongPress: TimeLongPress = { timerBegin: 0, timerEnd: 0 };\n\n private scroller: { destroy: () => void };\n\n /**\n * @hidden\n */\n constructor(\n private element: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private draggableHelper: DraggableHelper,\n private zone: NgZone,\n private vcr: ViewContainerRef,\n @Optional() private scrollContainer: DraggableScrollContainerDirective,\n @Inject(DOCUMENT) private document: any\n ) {}\n\n ngOnInit(): void {\n this.checkEventListeners();\n\n const pointerDragged$: Observable<any> = this.pointerDown$.pipe(\n filter(() => this.canDrag()),\n mergeMap((pointerDownEvent: PointerEvent) => {\n // fix for https://github.com/mattlewis92/angular-draggable-droppable/issues/61\n // stop mouse events propagating up the chain\n if (pointerDownEvent.event.stopPropagation && !this.scrollContainer) {\n pointerDownEvent.event.stopPropagation();\n }\n\n // hack to prevent text getting selected in safari while dragging\n const globalDragStyle: HTMLStyleElement = this.renderer.createElement(\n 'style'\n );\n this.renderer.setAttribute(globalDragStyle, 'type', 'text/css');\n this.renderer.appendChild(\n globalDragStyle,\n this.renderer.createText(`\n body * {\n -moz-user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n }\n `)\n );\n requestAnimationFrame(() => {\n this.document.head.appendChild(globalDragStyle);\n });\n\n const startScrollPosition = this.getScrollPosition();\n\n const scrollContainerScroll$ = new Observable((observer) => {\n const scrollContainer = this.scrollContainer\n ? this.scrollContainer.elementRef.nativeElement\n : 'window';\n return this.renderer.listen(scrollContainer, 'scroll', (e) =>\n observer.next(e)\n );\n }).pipe(\n startWith(startScrollPosition),\n map(() => this.getScrollPosition())\n );\n\n const currentDrag$ = new Subject<CurrentDragData>();\n const cancelDrag$ = new ReplaySubject<void>();\n\n this.zone.run(() => {\n this.dragPointerDown.next({ x: 0, y: 0 });\n });\n\n const dragComplete$ = merge(\n this.pointerUp$,\n this.pointerDown$,\n cancelDrag$,\n this.destroy$\n ).pipe(share());\n\n const pointerMove = combineLatest([\n this.pointerMove$,\n scrollContainerScroll$,\n ]).pipe(\n map(([pointerMoveEvent, scroll]) => {\n return {\n currentDrag$,\n transformX: pointerMoveEvent.clientX - pointerDownEvent.clientX,\n transformY: pointerMoveEvent.clientY - pointerDownEvent.clientY,\n clientX: pointerMoveEvent.clientX,\n clientY: pointerMoveEvent.clientY,\n scrollLeft: scroll.left,\n scrollTop: scroll.top,\n target: pointerMoveEvent.event.target,\n };\n }),\n map((moveData) => {\n if (this.dragSnapGrid.x) {\n moveData.transformX =\n Math.round(moveData.transformX / this.dragSnapGrid.x) *\n this.dragSnapGrid.x;\n }\n\n if (this.dragSnapGrid.y) {\n moveData.transformY =\n Math.round(moveData.transformY / this.dragSnapGrid.y) *\n this.dragSnapGrid.y;\n }\n\n return moveData;\n }),\n map((moveData) => {\n if (!this.dragAxis.x) {\n moveData.transformX = 0;\n }\n\n if (!this.dragAxis.y) {\n moveData.transformY = 0;\n }\n\n return moveData;\n }),\n map((moveData) => {\n const scrollX = moveData.scrollLeft - startScrollPosition.left;\n const scrollY = moveData.scrollTop - startScrollPosition.top;\n return {\n ...moveData,\n x: moveData.transformX + scrollX,\n y: moveData.transformY + scrollY,\n };\n }),\n filter(\n ({ x, y, transformX, transformY }) =>\n !this.validateDrag ||\n this.validateDrag({\n x,\n y,\n transform: { x: transformX, y: transformY },\n })\n ),\n takeUntil(dragComplete$),\n share()\n );\n\n const dragStarted$ = pointerMove.pipe(take(1), share());\n const dragEnded$ = pointerMove.pipe(takeLast(1), share());\n\n dragStarted$.subscribe(({ clientX, clientY, x, y }) => {\n this.zone.run(() => {\n this.dragStart.next({ cancelDrag$ });\n });\n\n this.scroller = autoScroll(\n [\n this.scrollContainer\n ? this.scrollContainer.elementRef.nativeElement\n : this.document.defaultView,\n ],\n {\n ...this.autoScroll,\n autoScroll() {\n return true;\n },\n }\n );\n addClass(this.renderer, this.element, this.dragActiveClass);\n\n if (this.ghostDragEnabled) {\n const rect = this.element.nativeElement.getBoundingClientRect();\n const clone = this.element.nativeElement.cloneNode(\n true\n ) as HTMLElement;\n if (!this.showOriginalElementWhileDragging) {\n this.renderer.setStyle(\n this.element.nativeElement,\n 'visibility',\n 'hidden'\n );\n }\n\n if (this.ghostElementAppendTo) {\n this.ghostElementAppendTo.appendChild(clone);\n } else {\n this.element.nativeElement.parentNode!.insertBefore(\n clone,\n this.element.nativeElement.nextSibling\n );\n }\n\n this.ghostElement = clone;\n\n this.document.body.style.cursor = this.dragCursor;\n\n this.setElementStyles(clone, {\n position: 'fixed',\n top: `${rect.top}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n height: `${rect.height}px`,\n cursor: this.dragCursor,\n margin: '0',\n willChange: 'transform',\n pointerEvents: 'none',\n });\n\n if (this.ghostElementTemplate) {\n const viewRef = this.vcr.createEmbeddedView(\n this.ghostElementTemplate\n );\n clone.innerHTML = '';\n viewRef.rootNodes\n .filter((node) => node instanceof Node)\n .forEach((node) => {\n clone.appendChild(node);\n });\n dragEnded$.subscribe(() => {\n this.vcr.remove(this.vcr.indexOf(viewRef));\n });\n }\n\n this.zone.run(() => {\n this.ghostElementCreated.emit({\n clientX: clientX - x,\n clientY: clientY - y,\n element: clone,\n });\n });\n\n dragEnded$.subscribe(() => {\n clone.parentElement!.removeChild(clone);\n this.ghostElement = null;\n this.renderer.setStyle(\n this.element.nativeElement,\n 'visibility',\n ''\n );\n });\n }\n\n this.draggableHelper.currentDrag.next(currentDrag$);\n });\n\n dragEnded$\n .pipe(\n mergeMap((dragEndData) => {\n const dragEndData$ = cancelDrag$.pipe(\n count(),\n take(1),\n map((calledCount) => ({\n ...dragEndData,\n dragCancelled: calledCount > 0,\n }))\n );\n cancelDrag$.complete();\n return dragEndData$;\n })\n )\n .subscribe(({ x, y, dragCancelled }) => {\n this.scroller.destroy();\n this.zone.run(() => {\n this.dragEnd.next({ x, y, dragCancelled });\n });\n removeClass(this.renderer, this.element, this.dragActiveClass);\n currentDrag$.complete();\n });\n\n merge(dragComplete$, dragEnded$)\n .pipe(take(1))\n .subscribe(() => {\n requestAnimationFrame(() => {\n this.document.head.removeChild(globalDragStyle);\n });\n });\n\n return pointerMove;\n }),\n share()\n );\n\n merge(\n pointerDragged$.pipe(\n take(1),\n map((value) => [, value])\n ),\n pointerDragged$.pipe(pairwise())\n )\n .pipe(\n filter(([previous, next]) => {\n if (!previous) {\n return true;\n }\n return previous.x !== next.x || previous.y !== next.y;\n }),\n map(([previous, next]) => next)\n )\n .subscribe(\n ({\n x,\n y,\n currentDrag$,\n clientX,\n clientY,\n transformX,\n transformY,\n target,\n }) => {\n this.zone.run(() => {\n this.dragging.next({ x, y });\n });\n requestAnimationFrame(() => {\n if (this.ghostElement) {\n const transform = `translate3d(${transformX}px, ${transformY}px, 0px)`;\n this.setElementStyles(this.ghostElement, {\n transform,\n '-webkit-transform': transform,\n '-ms-transform': transform,\n '-moz-transform': transform,\n '-o-transform': transform,\n });\n }\n });\n currentDrag$.next({\n clientX,\n clientY,\n dropData: this.dropData,\n target,\n });\n }\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.dragAxis) {\n this.checkEventListeners();\n }\n }\n\n ngOnDestroy(): void {\n this.unsubscribeEventListeners();\n this.pointerDown$.complete();\n this.pointerMove$.complete();\n this.pointerUp$.complete();\n this.destroy$.next();\n }\n\n private checkEventListeners(): void {\n const canDrag: boolean = this.canDrag();\n const hasEventListeners: boolean =\n Object.keys(this.eventListenerSubscriptions).length > 0;\n\n if (canDrag && !hasEventListeners) {\n this.zone.runOutsideAngular(() => {\n this.eventListenerSubscriptions.mousedown = this.renderer.listen(\n this.element.nativeElement,\n 'mousedown',\n (event: MouseEvent) => {\n this.onMouseDown(event);\n }\n );\n\n this.eventListenerSubscriptions.mouseup = this.renderer.listen(\n 'document',\n 'mouseup',\n (event: MouseEvent) => {\n this.onMouseUp(event);\n }\n );\n\n this.eventListenerSubscriptions.touchstart = this.renderer.listen(\n this.element.nativeElement,\n 'touchstart',\n (event: TouchEvent) => {\n this.onTouchStart(event);\n }\n );\n\n this.eventListenerSubscriptions.touchend = this.renderer.listen(\n 'document',\n 'touchend',\n (event: TouchEvent) => {\n this.onTouchEnd(event);\n }\n );\n\n this.eventListenerSubscriptions.touchcancel = this.renderer.listen(\n 'document',\n 'touchcancel',\n (event: TouchEvent) => {\n this.onTouchEnd(event);\n }\n );\n\n this.eventListenerSubscriptions.mouseenter = this.renderer.listen(\n this.element.nativeElement,\n 'mouseenter',\n () => {\n this.onMouseEnter();\n }\n );\n\n this.eventListenerSubscriptions.mouseleave = this.renderer.listen(\n this.element.nativeElement,\n 'mouseleave',\n () => {\n this.onMouseLeave();\n }\n );\n });\n } else if (!canDrag && hasEventListeners) {\n this.unsubscribeEventListeners();\n }\n }\n\n private onMouseDown(event: MouseEvent): void {\n if (event.button === 0) {\n if (!this.eventListenerSubscriptions.mousemove) {\n this.eventListenerSubscriptions.mousemove = this.renderer.listen(\n 'document',\n 'mousemove',\n (mouseMoveEvent: MouseEvent) => {\n this.pointerMove$.next({\n event: mouseMoveEvent,\n clientX: mouseMoveEvent.clientX,\n clientY: mouseMoveEvent.clientY,\n });\n }\n );\n }\n this.pointerDown$.next({\n event,\n clientX: event.clientX,\n clientY: event.clientY,\n });\n }\n }\n\n private onMouseUp(event: MouseEvent): void {\n if (event.button === 0) {\n if (this.eventListenerSubscriptions.mousemove) {\n this.eventListenerSubscriptions.mousemove();\n delete this.eventListenerSubscriptions.mousemove;\n }\n this.pointerUp$.next({\n event,\n clientX: event.clientX,\n clientY: event.clientY,\n });\n }\n }\n\n private onTouchStart(event: TouchEvent): void {\n let startScrollPosition: any;\n let isDragActivated: boolean;\n let hasContainerScrollbar: boolean;\n if (\n (this.scrollContainer && this.scrollContainer.activeLongPressDrag) ||\n this.touchStartLongPress\n ) {\n this.timeLongPress.timerBegin = Date.now();\n isDragActivated = false;\n hasContainerScrollbar = this.hasScrollbar();\n startScrollPosition = this.getScrollPosition();\n }\n\n if (!this.eventListenerSubscriptions.touchmove) {\n const contextMenuListener = fromEvent<Event>(\n this.document,\n 'contextmenu'\n ).subscribe((e) => {\n e.preventDefault();\n });\n\n const touchMoveListener = fromEvent<TouchEvent>(\n this.document,\n 'touchmove',\n {\n passive: false,\n }\n ).subscribe((touchMoveEvent) => {\n if (\n ((this.scrollContainer && this.scrollContainer.activeLongPressDrag) ||\n this.touchStartLongPress) &&\n !isDragActivated &&\n hasContainerScrollbar\n ) {\n isDragActivated = this.shouldBeginDrag(\n event,\n touchMoveEvent,\n startScrollPosition\n );\n }\n if (\n ((!this.scrollContainer ||\n !this.scrollContainer.activeLongPressDrag) &&\n !this.touchStartLongPress) ||\n !hasContainerScrollbar ||\n isDragActivated\n ) {\n touchMoveEvent.preventDefault();\n this.pointerMove$.next({\n event: touchMoveEvent,\n clientX: touchMoveEvent.targetTouches[0].clientX,\n clientY: touchMoveEvent.targetTouches[0].clientY,\n });\n }\n });\n\n this.eventListenerSubscriptions.touchmove = () => {\n contextMenuListener.unsubscribe();\n touchMoveListener.unsubscribe();\n };\n }\n this.pointerDown$.next({\n event,\n clientX: event.touches[0].clientX,\n clientY: event.touches[0].clientY,\n });\n }\n\n private onTouchEnd(event: TouchEvent): void {\n if (this.eventListenerSubscriptions.touchmove) {\n this.eventListenerSubscriptions.touchmove();\n delete this.eventListenerSubscriptions.touchmove;\n\n if (\n (this.scrollContainer && this.scrollContainer.activeLongPressDrag) ||\n this.touchStartLongPress\n ) {\n this.enableScroll();\n }\n }\n this.pointerUp$.next({\n event,\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n });\n }\n\n private onMouseEnter(): void {\n this.setCursor(this.dragCursor);\n }\n\n private onMouseLeave(): void {\n this.setCursor('');\n }\n\n private canDrag(): boolean {\n return this.dragAxis.x || this.dragAxis.y;\n }\n\n private setCursor(value: string): void {\n if (!this.eventListenerSubscriptions.mousemove) {\n this.renderer.setStyle(this.element.nativeElement, 'cursor', value);\n }\n }\n\n private unsubscribeEventListeners(): void {\n Object.keys(this.eventListenerSubscriptions).forEach((type) => {\n (this as any).eventListenerSubscriptions[type]();\n delete (this as any).eventListenerSubscriptions[type];\n });\n }\n\n private setElementStyles(\n element: HTMLElement,\n styles: { [key: string]: string }\n ) {\n Object.keys(styles).forEach((key) => {\n this.renderer.setStyle(element, key, styles[key]);\n });\n }\n\n private getScrollElement() {\n if (this.scrollContainer) {\n return this.scrollContainer.elementRef.nativeElement;\n } else {\n return this.document.body;\n }\n }\n\n private getScrollPosition() {\n if (this.scrollContainer) {\n return {\n top: this.scrollContainer.elementRef.nativeElement.scrollTop,\n left: this.scrollContainer.elementRef.nativeElement.scrollLeft,\n };\n } else {\n return {\n top: window.pageYOffset || this.document.documentElement.scrollTop,\n left: window.pageXOffset || this.document.documentElement.scrollLeft,\n };\n }\n }\n\n private shouldBeginDrag(\n event: TouchEvent,\n touchMoveEvent: TouchEvent,\n startScrollPosition: { top: number; left: number }\n ): boolean {\n const moveScrollPosition = this.getScrollPosition();\n const deltaScroll = {\n top: Math.abs(moveScrollPosition.top - startScrollPosition.top),\n left: Math.abs(moveScrollPosition.left - startScrollPosition.left),\n };\n const deltaX =\n Math.abs(\n touchMoveEvent.targetTouches[0].clientX - event.touches[0].clientX\n ) - deltaScroll.left;\n const deltaY =\n Math.abs(\n touchMoveEvent.targetTouches[0].clientY - event.touches[0].clientY\n ) - deltaScroll.top;\n const deltaTotal = deltaX + deltaY;\n const longPressConfig = this.touchStartLongPress\n ? this.touchStartLongPress\n : /* istanbul ignore next */\n {\n delta: this.scrollContainer.longPressConfig.delta,\n delay: this.scrollContainer.longPressConfig.duration,\n };\n if (\n deltaTotal > longPressConfig.delta ||\n deltaScroll.top > 0 ||\n deltaScroll.left > 0\n ) {\n this.timeLongPress.timerBegin = Date.now();\n }\n this.timeLongPress.timerEnd = Date.now();\n const duration =\n this.timeLongPress.timerEnd - this.timeLongPress.timerBegin;\n if (duration >= longPressConfig.delay) {\n this.disableScroll();\n return true;\n }\n return false;\n }\n\n private enableScroll() {\n if (this.scrollContainer) {\n this.renderer.setStyle(\n this.scrollContainer.elementRef.nativeElement,\n 'overflow',\n ''\n );\n }\n this.renderer.setStyle(this.document.body, 'overflow', '');\n }\n\n private disableScroll() {\n /* istanbul ignore next */\n if (this.scrollContainer) {\n this.renderer.setStyle(\n this.scrollContainer.elementRef.nativeElement,\n 'overflow',\n 'hidden'\n );\n }\n this.renderer.setStyle(this.document.body, 'overflow', 'hidden');\n }\n\n private hasScrollbar(): boolean {\n const scrollContainer = this.getScrollElement();\n const containerHasHorizontalScroll =\n scrollContainer.scrollWidth > scrollContainer.clientWidth;\n const containerHasVerticalScroll =\n scrollContainer.scrollHeight > scrollContainer.clientHeight;\n return containerHasHorizontalScroll || containerHasVerticalScroll;\n }\n}\n","import {\n Directive,\n OnInit,\n ElementRef,\n OnDestroy,\n Output,\n EventEmitter,\n NgZone,\n Input,\n Renderer2,\n Optional,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged, pairwise, filter, map } from 'rxjs/operators';\nimport { DraggableHelper } from './draggable-helper.provider';\nimport { DraggableScrollContainerDirective } from './draggable-scroll-container.directive';\nimport { addClass, removeClass } from './util';\n\nfunction isCoordinateWithinRectangle(\n clientX: number,\n clientY: number,\n rect: ClientRect\n): boolean {\n return (\n clientX >= rect.left &&\n clientX <= rect.right &&\n clientY >= rect.top &&\n clientY <= rect.bottom\n );\n}\n\nexport interface DropEvent<T = any> {\n dropData: T;\n}\n\nexport interface ValidateDropParams {\n /**\n * ClientX value of the mouse location where the drop occurred\n */\n clientX: number;\n /**\n * ClientY value of the mouse location where the drop occurred\n */\n clientY: number;\n /**\n * The target of the event where the drop occurred\n */\n target: EventTarget;\n}\n\nexport type ValidateDrop = (params: ValidateDropParams) => boolean;\n\n@Directive({\n selector: '[mwlDroppable]',\n})\nexport class DroppableDirective implements OnInit, OnDestroy {\n /**\n * Added to the element when an element is dragged over it\n */\n @Input() dragOverClass: string;\n\n /**\n * Added to the element any time a draggable element is being dragged\n */\n @Input() dragActiveClass: string;\n\n /**\n * Allow custom behaviour to control when the element is dropped\n */\n @Input() validateDrop: ValidateDrop;\n\n /**\n * Called when a draggable element starts overlapping the element\n */\n @Output() dragEnter = new EventEmitter<DropEvent>();\n\n /**\n * Called when a draggable element stops overlapping the element\n */\n @Output() dragLeave = new EventEmitter<DropEvent>();\n\n /**\n * Called when a draggable element is moved over the element\n */\n @Output() dragOver = new EventEmitter<DropEvent>();\n\n /**\n * Called when a draggable element is dropped on this element\n */\n @Output() drop = new EventEmitter<DropEvent>(); // tslint:disable-line no-output-named-after-standard-event\n\n currentDragSubscription: Subscription;\n\n constructor(\n private element: ElementRef<HTMLElement>,\n private draggableHelper: DraggableHelper,\n private zone: NgZone,\n private renderer: Renderer2,\n @Optional() private scrollContainer: DraggableScrollContainerDirective\n ) {}\n\n ngOnInit() {\n this.currentDragSubscription = this.draggableHelper.currentDrag.subscribe(\n (drag$) => {\n addClass(this.renderer, this.element, this.dragActiveClass);\n const droppableElement: {\n rect?: ClientRect;\n updateCache: boolean;\n scrollContainerRect?: ClientRect;\n } = {\n updateCache: true,\n };\n\n const deregisterScrollListener = this.renderer.listen(\n this.scrollContainer\n ? this.scrollContainer.elementRef.nativeElement\n : 'window',\n 'scroll',\n () => {\n droppableElement.updateCache = true;\n }\n );\n\n let currentDragDropData: any;\n const overlaps$ = drag$.pipe(\n map(({ clientX, clientY, dropData, target }) => {\n currentDragDropData = dropData;\n if (droppableElement.updateCache) {\n droppableElement.rect = this.element.nativeElement.getBoundingClientRect();\n if (this.scrollContainer) {\n droppableElement.scrollContainerRect = this.scrollContainer.elementRef.nativeElement.getBoundingClientRect();\n }\n droppableElement.updateCache = false;\n }\n const isWithinElement = isCoordinateWithinRectangle(\n clientX,\n clientY,\n droppableElement.rect as ClientRect\n );\n\n const isDropAllowed =\n !this.validateDrop ||\n this.validateDrop({ clientX, clientY, target });\n\n if (droppableElement.scrollContainerRect) {\n return (\n isWithinElement &&\n isDropAllowed &&\n isCoordinateWithinRectangle(\n clientX,\n clientY,\n droppableElement.scrollContainerRect as ClientRect\n )\n );\n } else {\n return isWithinElement && isDropAllowed;\n }\n })\n );\n\n const overlapsChanged$ = overlaps$.pipe(distinctUntilChanged());\n\n let dragOverActive: boolean; // TODO - see if there's a way of doing this via rxjs\n\n overlapsChanged$\n .pipe(filter((overlapsNow) => overlapsNow))\n .subscribe(() => {\n dragOverActive = true;\n addClass(this.renderer, this.element, this.dragOverClass);\n this.zone.run(() => {\n this.dragEnter.next({\n dropData: currentDragDropData,\n });\n });\n });\n\n overlaps$.pipe(filter((overlapsNow) => overlapsNow)).subscribe(() => {\n this.zone.run(() => {\n this.dragOver.next({\n dropData: currentDragDropData,\n });\n });\n });\n\n overlapsChanged$\n .pipe(\n pairwise(),\n filter(([didOverlap, overlapsNow]) => didOverlap && !overlapsNow)\n )\n .subscribe(() => {\n dragOverActive = false;\n removeClass(this.renderer, this.element, this.dragOverClass);\n this.zone.run(() => {\n this.dragLeave.next({\n dropData: currentDragDropData,\n });\n });\n });\n\n drag$.subscribe({\n complete: () => {\n deregisterScrollListener();\n removeClass(this.renderer, this.element, this.dragActiveClass);\n if (dragOverActive) {\n removeClass(this.renderer, this.element, this.dragOverClass);\n this.zone.run(() => {\n this.drop.next({\n dropData: currentDragDropData,\n });\n });\n }\n },\n });\n }\n );\n }\n\n ngOnDestroy() {\n if (this.currentDragSubscription) {\n this.currentDragSubscription.unsubscribe();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DraggableDirective } from './draggable.directive';\nimport { DroppableDirective } from './droppable.directive';\nimport { DraggableScrollContainerDirective } from './draggable-scroll-container.directive';\n\n@NgModule({\n declarations: [\n DraggableDirective,\n DroppableDirective,\n DraggableScrollContainerDirective,\n ],\n exports: [\n DraggableDirective,\n DroppableDirective,\n DraggableScrollContainerDirective,\n ],\n})\nexport class DragAndDropModule {}\n"],"names":["Subject","Injectable","Directive","ElementRef","Input","EventEmitter","filter","mergeMap","Observable","startWith","map","ReplaySubject","merge","share","combineLatest","takeUntil","take","takeLast","count","pairwise","fromEvent","Renderer2","NgZone","ViewContainerRef","Optional","Inject","DOCUMENT","Output","distinctUntilChanged","NgModule"],"mappings":"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"}
\No newline at end of file