1$axure.internal(function($ax) { 2 var widgetDragInfo = new Object(); 3 var _drag = {}; 4 $ax.drag = _drag; 5 6 $ax.drag.GetWidgetDragInfo = function() { 7 return $.extend({}, widgetDragInfo); 8 }; 9 10 $ax.drag.StartDragWidget = function(event, id) { 11 $ax.setjBrowserEvent(jQuery.Event(event)); 12 if(event.donotdrag) return; 13 14 var x, y; 15 var tg; 16 if(IE_10_AND_BELOW) { 17 x = window.event.clientX + window.document.documentElement.scrollLeft + window.document.body.scrollLeft; 18 y = window.event.clientY + window.document.documentElement.scrollTop + window.document.body.scrollTop; 19 tg = window.event.srcElement; 20 } else { 21 if(event.changedTouches) { 22 x = event.changedTouches[0].pageX; 23 y = event.changedTouches[0].pageY; 24 } else { 25 x = event.pageX; 26 y = event.pageY; 27 event.preventDefault(); 28 } 29 tg = event.target; 30 } 31 32 widgetDragInfo.hasStarted = false; 33 widgetDragInfo.widgetId = id; 34 widgetDragInfo.cursorStartX = x; 35 widgetDragInfo.cursorStartY = y; 36 widgetDragInfo.lastX = x; 37 widgetDragInfo.lastY = y; 38 widgetDragInfo.currentX = x; 39 widgetDragInfo.currentY = y; 40 41 widgetDragInfo.movedWidgets = new Object(); 42 widgetDragInfo.startTime = (new Date()).getTime(); 43 widgetDragInfo.targetWidget = tg; 44 45 var movedownName = IE_10_AND_BELOW && $ax.features.supports.windowsMobile ? 46 $ax.features.eventNames.mouseDownName : $ax.features.eventNames.mouseMoveName; 47 $ax.event.addEvent(document, movedownName, _dragWidget, true); 48 $ax.event.addEvent(document, $ax.features.eventNames.mouseUpName, _stopDragWidget, true); 49 50 $ax.legacy.SuppressBubble(event); 51 }; 52 53 var _dragWidget = function(event) { 54 $ax.setjBrowserEvent(jQuery.Event(event)); 55 56 var x, y; 57 if(IE_10_AND_BELOW) { 58 x = window.event.clientX + window.document.documentElement.scrollLeft + window.document.body.scrollLeft; 59 y = window.event.clientY + window.document.documentElement.scrollTop + window.document.body.scrollTop; 60 } else { 61 if(event.changedTouches) { 62 x = event.changedTouches[0].pageX; 63 y = event.changedTouches[0].pageY; 64 //allow scroll (defaults) if only swipe events have cases and delta x is less than 5px and not blocking scrolling 65 var deltaX = x - widgetDragInfo.currentX; 66 var target = window.document.getElementById(widgetDragInfo.widgetId); 67 if($ax.event.hasSyntheticEvent(widgetDragInfo.widgetId, "onDrag") || $ax.event.hasSyntheticEvent(widgetDragInfo.widgetId, "onSwipeUp") || 68 $ax.event.hasSyntheticEvent(widgetDragInfo.widgetId, "onSwipeDown") || (deltaX * deltaX) > 25 69 || ($ax.document.configuration.preventScroll && $ax.legacy.GetScrollable(target) == window.document.body)) { 70 event.preventDefault(); 71 } 72 } else { 73 x = event.pageX; 74 y = event.pageY; 75 } 76 } 77 widgetDragInfo.xDelta = x - widgetDragInfo.currentX; 78 widgetDragInfo.yDelta = y - widgetDragInfo.currentY; 79 widgetDragInfo.lastX = widgetDragInfo.currentX; 80 widgetDragInfo.lastY = widgetDragInfo.currentY; 81 widgetDragInfo.currentX = x; 82 widgetDragInfo.currentY = y; 83 84 widgetDragInfo.currentTime = (new Date()).getTime(); 85 86 $ax.legacy.SuppressBubble(event); 87 88 if(!widgetDragInfo.hasStarted) { 89 widgetDragInfo.hasStarted = true; 90 $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onDragStart"); 91 92 widgetDragInfo.oldBodyCursor = window.document.body.style.cursor; 93 window.document.body.style.cursor = 'move'; 94 var widget = window.document.getElementById(widgetDragInfo.widgetId); 95 widgetDragInfo.oldCursor = widget.style.cursor; 96 widget.style.cursor = 'move'; 97 } 98 99 $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onDrag"); 100 }; 101 102 var _suppressClickAfterDrag = function(event) { 103 _removeSuppressEvents(); 104 105 $ax.legacy.SuppressBubble(event); 106 }; 107 108 var _removeSuppressEvents = function () { 109 if(IE_10_AND_BELOW) { 110 $ax.event.removeEvent(event.srcElement, 'click', _suppressClickAfterDrag, undefined, true); 111 $ax.event.removeEvent(widgetDragInfo.targetWidget, 'mousemove', _removeSuppressEvents, undefined, true); 112 } else { 113 $ax.event.removeEvent(document, "click", _suppressClickAfterDrag, true); 114 $ax.event.removeEvent(document, 'mousemove', _removeSuppressEvents, true); 115 } 116 }; 117 118 var _stopDragWidget = function(event) { 119 $ax.setjBrowserEvent(jQuery.Event(event)); 120 121 var tg; 122 123 124 var movedownName = IE_10_AND_BELOW && $ax.features.supports.windowsMobile ? 125 $ax.features.eventNames.mouseDownName : $ax.features.eventNames.mouseMoveName; 126 $ax.event.removeEvent(document, movedownName, _dragWidget, true); 127 $ax.event.removeEvent(document, $ax.features.eventNames.mouseUpName, _stopDragWidget, true); 128 129 tg = IE_10_AND_BELOW ? window.event.srcElement : event.target; 130 131 if(widgetDragInfo.hasStarted) { 132 widgetDragInfo.currentTime = (new Date()).getTime(); 133 $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onDragDrop"); 134 135 if($ax.globalVariableProvider.getVariableValue('totaldragx') < -30 && $ax.globalVariableProvider.getVariableValue('dragtime') < 1000) { 136 $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onSwipeLeft"); 137 } 138 139 if($ax.globalVariableProvider.getVariableValue('totaldragx') > 30 && $ax.globalVariableProvider.getVariableValue('dragtime') < 1000) { 140 $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onSwipeRight"); 141 } 142 143 var totalDragY = $ax.globalVariableProvider.getVariableValue('totaldragy'); 144 if(totalDragY < -30 && $ax.globalVariableProvider.getVariableValue('dragtime') < 1000) { 145 $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onSwipeUp"); 146 } 147 148 if(totalDragY > 30 && $ax.globalVariableProvider.getVariableValue('dragtime') < 1000) { 149 $ax.event.raiseSyntheticEvent(widgetDragInfo.widgetId, "onSwipeDown"); 150 } 151 152 window.document.body.style.cursor = widgetDragInfo.oldBodyCursor; 153 var widget = window.document.getElementById(widgetDragInfo.widgetId); 154 // It may be null if OnDragDrop filtered out the widget 155 if(widget != null) widget.style.cursor = widgetDragInfo.oldCursor; 156 157 if(widgetDragInfo.targetWidget == tg && !event.changedTouches) {
158 // suppress the click after the drag on desktop browsers 159 if(IE_10_AND_BELOW && widgetDragInfo.targetWidget) { 160 $ax.event.addEvent(widgetDragInfo.targetWidget, 'click', _suppressClickAfterDrag, true, true); 161 $ax.event.addEvent(widgetDragInfo.targetWidget, "onmousemove", _removeSuppressEvents, true, true); 162 } else { 163 $ax.event.addEvent(document, "click", _suppressClickAfterDrag, true); 164 $ax.event.addEvent(document, "mousemove", _removeSuppressEvents, true); 165 166 } 167 } 168 } 169 170 widgetDragInfo.hasStarted = false; 171 widgetDragInfo.movedWidgets = new Object(); 172 173 return false; 174 }; 175 176 $ax.drag.GetDragX = function() { 177 if(widgetDragInfo.hasStarted) return widgetDragInfo.xDelta; 178 return 0; 179 }; 180 181 $ax.drag.GetDragY = function() { 182 if(widgetDragInfo.hasStarted) return widgetDragInfo.yDelta; 183 return 0; 184 }; 185 186 $ax.drag.GetTotalDragX = function() { 187 if(widgetDragInfo.hasStarted) return widgetDragInfo.currentX - widgetDragInfo.cursorStartX; 188 return 0; 189 }; 190 191 $ax.drag.GetTotalDragY = function() { 192 if(widgetDragInfo.hasStarted) return widgetDragInfo.currentY - widgetDragInfo.cursorStartY; 193 return 0; 194 }; 195 196 $ax.drag.GetDragTime = function() { 197 if(widgetDragInfo.hasStarted) return widgetDragInfo.currentTime - widgetDragInfo.startTime; 198 return 600000; 199 }; 200 201 $ax.drag.LogMovedWidgetForDrag = function (id, dragInfo) { 202 dragInfo = dragInfo || widgetDragInfo; 203 if(dragInfo.hasStarted) { 204 var containerIndex = id.indexOf('_container'); 205 if(containerIndex != -1) id = id.substring(0, containerIndex); 206 207 // If state or other non-widget id, this should not be dragged, and should exit out to avoid exceptions. 208 if(!$obj(id)) return; 209 210 var query = $ax('#' + id); 211 //var x = query.left(); 212 //var y = query.top(); 213 var viewportLocation = query.viewportLocation(); 214 var x = viewportLocation.left; 215 var y = viewportLocation.top; 216 217 var movedWidgets = dragInfo.movedWidgets; 218 if(!movedWidgets[id]) { 219 movedWidgets[id] = new Location(x, y); 220 } 221 } 222 }; 223 224 var Location = function(x, y) { 225 this.x = x; 226 this.y = y; 227 }; 228 $ax.drag.location = Location; 229 230 var Rectangle = $ax.drag.Rectangle = function(x, y, width, height) { 231 this.x = x; 232 this.y = y; 233 this.width = width; 234 this.height = height; 235 this.right = x + width; 236 this.bottom = y + height; 237 }; 238 239 Rectangle.prototype.IntersectsWith = function(rect) { 240 if(this.Invalid()) return false; 241 if(rect.length) { 242 for(var i = 0; i < rect.length; i++) if(!rect[i].Invalid && this.IntersectsWith(rect[i])) return true; 243 return false; 244 } 245 if(rect.Invalid()) return false; 246 return this.x < rect.right && this.right > rect.x && this.y < rect.bottom && this.bottom > rect.y; 247 }; 248 249 Rectangle.prototype.Invalid = function() { 250 return this.x == -1 && this.y == -1 && this.width == -1 && this.height == -1; 251 }; 252 253 Rectangle.prototype.Move = function(x, y) { 254 return new Rectangle(x, y, this.width, this.height); 255 }; 256});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.