MCPcopy Index your code
hub / github.com/angular-dragdrop/angular-dragdrop / dragstartHandler

Function dragstartHandler

draganddrop.js:121–185  ·  view source on GitHub ↗
(e)

Source from the content-addressed store, hash-verified

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 }

Callers

nothing calls this directly

Calls 1

setDragElementFunction · 0.85

Tested by

no test coverage detected