(e)
| 119 | } |
| 120 | |
| 121 | function dragstartHandler(e) { |
| 122 | if(e.originalEvent) { |
| 123 | e.dataTransfer = e.originalEvent.dataTransfer; |
| 124 | } |
| 125 | |
| 126 | var isDragAllowed = !isDragHandleUsed || dragTarget.classList.contains(dragHandleClass); |
| 127 | |
| 128 | if (isDragAllowed) { |
| 129 | var sendChannel = attrs.dragChannel || 'defaultchannel'; |
| 130 | var dragData = ''; |
| 131 | if (attrs.drag) { |
| 132 | dragData = scope.$eval(attrs.drag); |
| 133 | } |
| 134 | |
| 135 | var dragImage = attrs.dragImage || null; |
| 136 | |
| 137 | element.addClass(draggingClass); |
| 138 | element.bind('$destroy', dragendHandler); |
| 139 | |
| 140 | //Code to make sure that the setDragImage is available. IE 10, 11, and Opera do not support setDragImage. |
| 141 | var hasNativeDraggable = !(document.uniqueID || window.opera); |
| 142 | |
| 143 | //If there is a draggable image passed in, then set the image to be dragged. |
| 144 | if (dragImage && hasNativeDraggable) { |
| 145 | var dragImageFn = $parse(attrs.dragImage); |
| 146 | scope.$apply(function() { |
| 147 | var dragImageParameters = dragImageFn(scope, {$event: e}); |
| 148 | if (dragImageParameters) { |
| 149 | if (angular.isString(dragImageParameters)) { |
| 150 | dragImageParameters = $dragImage.generate(dragImageParameters); |
| 151 | } |
| 152 | if (dragImageParameters.image) { |
| 153 | var xOffset = dragImageParameters.xOffset || 0, |
| 154 | yOffset = dragImageParameters.yOffset || 0; |
| 155 | e.dataTransfer.setDragImage(dragImageParameters.image, xOffset, yOffset); |
| 156 | } |
| 157 | } |
| 158 | }); |
| 159 | } else if (attrs.dragImageElementId) { |
| 160 | setDragElement(e, attrs.dragImageElementId); |
| 161 | } |
| 162 | |
| 163 | var offset = {x: e.offsetX, y: e.offsetY}; |
| 164 | var transferDataObject = {data: dragData, channel: sendChannel, offset: offset}; |
| 165 | var transferDataText = angular.toJson(transferDataObject); |
| 166 | |
| 167 | e.dataTransfer.setData('text', transferDataText); |
| 168 | e.dataTransfer.effectAllowed = 'copyMove'; |
| 169 | |
| 170 | |
| 171 | if (attrs.onDragStart) { |
| 172 | var onDragStartFn = $parse(attrs.onDragStart); |
| 173 | scope.$evalAsync(function () { |
| 174 | onDragStartFn(scope, { |
| 175 | $event: e |
| 176 | }); |
| 177 | }); |
| 178 | } |
nothing calls this directly
no test coverage detected