{ "version": 3, "sources": ["../ui/app/components/directives/mn_drag_and_drop.js"], "sourcesContent": ["/*\nCopyright 2015-Present Couchbase, Inc.\n\nUse of this software is governed by the Business Source License included in\nthe file licenses/BSL-Couchbase.txt. As of the Change Date specified in that\nfile, in accordance with the Business Source License, use of this software will\nbe governed by the Apache License, Version 2.0, included in the file\nlicenses/APL2.txt.\n*/\n\nimport angular from 'angular';\n\nexport default 'mnDragAndDrop';\n\nangular\n .module('mnDragAndDrop', [])\n .directive('mnDragAndDrop', mnDragAndDropDirective);\n\nfunction mnDragAndDropDirective($window, $document) {\n var mnDragAndDrop = {\n scope: {\n onItemTaken: '&',\n onItemDropped: '&',\n onItemMoved: '&'\n },\n link: link\n };\n\n return mnDragAndDrop;\n\n function link($scope, $element, $attrs) {\n var draggedObject;\n var startX;\n var startY;\n var initialMouseX;\n var initialMouseY;\n var baseCornerRight = $attrs.baseCornerRight;\n\n $element.on('mousedown touchstart', onMouseDown);\n $scope.$on(\"$destroy\", function () {\n $element.off('mousedown touchstart', onMouseDown);\n });\n\n function onMouseDown(e) {\n e = e || $window.event;\n\n if (draggedObject) {\n onMouseUp();\n return;\n }\n var target = e.currentTarget;\n draggedObject = $element;\n\n if ($scope.onItemTaken) {\n $scope.onItemTaken({$event: e});\n }\n startX = target.offsetLeft;\n if (baseCornerRight) {\n startX += target.clientWidth;\n }\n startY = target.offsetTop;\n initialMouseX = e.clientX;\n initialMouseY = e.clientY;\n\n $element.addClass(\"dragged\");\n $document.on('mousemove touchmove', onMouseMove);\n $document.on('mouseup touchend', onMouseUp);\n $document.find('body').addClass('disable-text-selection');\n return false;\n }\n\n function onMouseMove(e) {\n e = e || $window.event;\n if ($scope.onItemMoved) {\n $scope.onItemMoved(this);\n }\n var dx = e.clientX - initialMouseX;\n var dy = e.clientY - initialMouseY;\n var move = {\n top: startY + dy + 'px',\n bottom: 'auto'\n };\n if (baseCornerRight) {\n move.right = -(startX + dx) + 'px';\n move.left = \"auto\";\n } else {\n move.right = \"auto\";\n move.left = startX + dx + 'px';\n }\n $element.css(move);\n return false;\n }\n function onMouseUp() {\n if ($scope.onItemDropped) {\n $scope.onItemDropped(this);\n }\n draggedObject.removeClass(\"dragged\");\n $document.off('mousemove touchmove', onMouseMove);\n $document.off('mouseup touchend', onMouseUp);\n $document.find('body').removeClass('disable-text-selection');\n draggedObject = null;\n }\n\n }\n}\n"], "mappings": "mFAYA,GAAO,0BAAQ,gBAEf,UACG,OAAO,gBAAiB,IACxB,UAAU,gBAAiB,wBAE9B,gCAAgC,QAAS,UAAW,CAClD,GAAI,eAAgB,CAClB,MAAO,CACL,YAAa,IACb,cAAe,IACf,YAAa,KAEf,MAGF,MAAO,eAEP,cAAc,OAAQ,SAAU,OAAQ,CACtC,GAAI,eACA,OACA,OACA,cACA,cACA,gBAAkB,OAAO,gBAE7B,SAAS,GAAG,uBAAwB,aACpC,OAAO,IAAI,WAAY,UAAY,CACjC,SAAS,IAAI,uBAAwB,eAGvC,qBAAqB,EAAG,CAGtB,GAFA,EAAI,GAAK,QAAQ,MAEb,cAAe,CACjB,YACA,OAEF,GAAI,QAAS,EAAE,cACf,qBAAgB,SAEZ,OAAO,aACT,OAAO,YAAY,CAAC,OAAQ,IAE9B,OAAS,OAAO,WACZ,iBACF,SAAU,OAAO,aAEnB,OAAS,OAAO,UAChB,cAAgB,EAAE,QAClB,cAAgB,EAAE,QAElB,SAAS,SAAS,WAClB,UAAU,GAAG,sBAAuB,aACpC,UAAU,GAAG,mBAAoB,WACjC,UAAU,KAAK,QAAQ,SAAS,0BACzB,GAzBA,kCA4BT,qBAAqB,EAAG,CACtB,EAAI,GAAK,QAAQ,MACb,OAAO,aACT,OAAO,YAAY,MAErB,GAAI,IAAK,EAAE,QAAU,cACjB,GAAK,EAAE,QAAU,cACjB,KAAO,CACT,IAAK,OAAS,GAAK,KACnB,OAAQ,QAEV,MAAI,iBACF,MAAK,MAAQ,CAAE,QAAS,IAAM,KAC9B,KAAK,KAAO,QAEZ,MAAK,MAAQ,OACb,KAAK,KAAO,OAAS,GAAK,MAE5B,SAAS,IAAI,MACN,GAnBA,kCAqBT,oBAAqB,CACnB,AAAI,OAAO,eACT,OAAO,cAAc,MAEvB,cAAc,YAAY,WAC1B,UAAU,IAAI,sBAAuB,aACrC,UAAU,IAAI,mBAAoB,WAClC,UAAU,KAAK,QAAQ,YAAY,0BACnC,cAAgB,KART,+BA1EJ", "names": [] }