annotate src/main/webapp/imageServer/resources/js/jquery-ui-1.10.4/ui/jquery.ui.selectable.js @ 205:f719d73383db

Merge iiif_diva branch 964846688a95cc9b0af5ade832b8d34ae4a4bc21
author Robert Casties <casties@mpiwg-berlin.mpg.de>
date Mon, 08 Jul 2019 17:55:14 +0200
parents 764f47286679
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
jurzua
parents:
diff changeset
1 /*!
jurzua
parents:
diff changeset
2 * jQuery UI Selectable 1.10.4
jurzua
parents:
diff changeset
3 * http://jqueryui.com
jurzua
parents:
diff changeset
4 *
jurzua
parents:
diff changeset
5 * Copyright 2014 jQuery Foundation and other contributors
jurzua
parents:
diff changeset
6 * Released under the MIT license.
jurzua
parents:
diff changeset
7 * http://jquery.org/license
jurzua
parents:
diff changeset
8 *
jurzua
parents:
diff changeset
9 * http://api.jqueryui.com/selectable/
jurzua
parents:
diff changeset
10 *
jurzua
parents:
diff changeset
11 * Depends:
jurzua
parents:
diff changeset
12 * jquery.ui.core.js
jurzua
parents:
diff changeset
13 * jquery.ui.mouse.js
jurzua
parents:
diff changeset
14 * jquery.ui.widget.js
jurzua
parents:
diff changeset
15 */
jurzua
parents:
diff changeset
16 (function( $, undefined ) {
jurzua
parents:
diff changeset
17
jurzua
parents:
diff changeset
18 $.widget("ui.selectable", $.ui.mouse, {
jurzua
parents:
diff changeset
19 version: "1.10.4",
jurzua
parents:
diff changeset
20 options: {
jurzua
parents:
diff changeset
21 appendTo: "body",
jurzua
parents:
diff changeset
22 autoRefresh: true,
jurzua
parents:
diff changeset
23 distance: 0,
jurzua
parents:
diff changeset
24 filter: "*",
jurzua
parents:
diff changeset
25 tolerance: "touch",
jurzua
parents:
diff changeset
26
jurzua
parents:
diff changeset
27 // callbacks
jurzua
parents:
diff changeset
28 selected: null,
jurzua
parents:
diff changeset
29 selecting: null,
jurzua
parents:
diff changeset
30 start: null,
jurzua
parents:
diff changeset
31 stop: null,
jurzua
parents:
diff changeset
32 unselected: null,
jurzua
parents:
diff changeset
33 unselecting: null
jurzua
parents:
diff changeset
34 },
jurzua
parents:
diff changeset
35 _create: function() {
jurzua
parents:
diff changeset
36 var selectees,
jurzua
parents:
diff changeset
37 that = this;
jurzua
parents:
diff changeset
38
jurzua
parents:
diff changeset
39 this.element.addClass("ui-selectable");
jurzua
parents:
diff changeset
40
jurzua
parents:
diff changeset
41 this.dragged = false;
jurzua
parents:
diff changeset
42
jurzua
parents:
diff changeset
43 // cache selectee children based on filter
jurzua
parents:
diff changeset
44 this.refresh = function() {
jurzua
parents:
diff changeset
45 selectees = $(that.options.filter, that.element[0]);
jurzua
parents:
diff changeset
46 selectees.addClass("ui-selectee");
jurzua
parents:
diff changeset
47 selectees.each(function() {
jurzua
parents:
diff changeset
48 var $this = $(this),
jurzua
parents:
diff changeset
49 pos = $this.offset();
jurzua
parents:
diff changeset
50 $.data(this, "selectable-item", {
jurzua
parents:
diff changeset
51 element: this,
jurzua
parents:
diff changeset
52 $element: $this,
jurzua
parents:
diff changeset
53 left: pos.left,
jurzua
parents:
diff changeset
54 top: pos.top,
jurzua
parents:
diff changeset
55 right: pos.left + $this.outerWidth(),
jurzua
parents:
diff changeset
56 bottom: pos.top + $this.outerHeight(),
jurzua
parents:
diff changeset
57 startselected: false,
jurzua
parents:
diff changeset
58 selected: $this.hasClass("ui-selected"),
jurzua
parents:
diff changeset
59 selecting: $this.hasClass("ui-selecting"),
jurzua
parents:
diff changeset
60 unselecting: $this.hasClass("ui-unselecting")
jurzua
parents:
diff changeset
61 });
jurzua
parents:
diff changeset
62 });
jurzua
parents:
diff changeset
63 };
jurzua
parents:
diff changeset
64 this.refresh();
jurzua
parents:
diff changeset
65
jurzua
parents:
diff changeset
66 this.selectees = selectees.addClass("ui-selectee");
jurzua
parents:
diff changeset
67
jurzua
parents:
diff changeset
68 this._mouseInit();
jurzua
parents:
diff changeset
69
jurzua
parents:
diff changeset
70 this.helper = $("<div class='ui-selectable-helper'></div>");
jurzua
parents:
diff changeset
71 },
jurzua
parents:
diff changeset
72
jurzua
parents:
diff changeset
73 _destroy: function() {
jurzua
parents:
diff changeset
74 this.selectees
jurzua
parents:
diff changeset
75 .removeClass("ui-selectee")
jurzua
parents:
diff changeset
76 .removeData("selectable-item");
jurzua
parents:
diff changeset
77 this.element
jurzua
parents:
diff changeset
78 .removeClass("ui-selectable ui-selectable-disabled");
jurzua
parents:
diff changeset
79 this._mouseDestroy();
jurzua
parents:
diff changeset
80 },
jurzua
parents:
diff changeset
81
jurzua
parents:
diff changeset
82 _mouseStart: function(event) {
jurzua
parents:
diff changeset
83 var that = this,
jurzua
parents:
diff changeset
84 options = this.options;
jurzua
parents:
diff changeset
85
jurzua
parents:
diff changeset
86 this.opos = [event.pageX, event.pageY];
jurzua
parents:
diff changeset
87
jurzua
parents:
diff changeset
88 if (this.options.disabled) {
jurzua
parents:
diff changeset
89 return;
jurzua
parents:
diff changeset
90 }
jurzua
parents:
diff changeset
91
jurzua
parents:
diff changeset
92 this.selectees = $(options.filter, this.element[0]);
jurzua
parents:
diff changeset
93
jurzua
parents:
diff changeset
94 this._trigger("start", event);
jurzua
parents:
diff changeset
95
jurzua
parents:
diff changeset
96 $(options.appendTo).append(this.helper);
jurzua
parents:
diff changeset
97 // position helper (lasso)
jurzua
parents:
diff changeset
98 this.helper.css({
jurzua
parents:
diff changeset
99 "left": event.pageX,
jurzua
parents:
diff changeset
100 "top": event.pageY,
jurzua
parents:
diff changeset
101 "width": 0,
jurzua
parents:
diff changeset
102 "height": 0
jurzua
parents:
diff changeset
103 });
jurzua
parents:
diff changeset
104
jurzua
parents:
diff changeset
105 if (options.autoRefresh) {
jurzua
parents:
diff changeset
106 this.refresh();
jurzua
parents:
diff changeset
107 }
jurzua
parents:
diff changeset
108
jurzua
parents:
diff changeset
109 this.selectees.filter(".ui-selected").each(function() {
jurzua
parents:
diff changeset
110 var selectee = $.data(this, "selectable-item");
jurzua
parents:
diff changeset
111 selectee.startselected = true;
jurzua
parents:
diff changeset
112 if (!event.metaKey && !event.ctrlKey) {
jurzua
parents:
diff changeset
113 selectee.$element.removeClass("ui-selected");
jurzua
parents:
diff changeset
114 selectee.selected = false;
jurzua
parents:
diff changeset
115 selectee.$element.addClass("ui-unselecting");
jurzua
parents:
diff changeset
116 selectee.unselecting = true;
jurzua
parents:
diff changeset
117 // selectable UNSELECTING callback
jurzua
parents:
diff changeset
118 that._trigger("unselecting", event, {
jurzua
parents:
diff changeset
119 unselecting: selectee.element
jurzua
parents:
diff changeset
120 });
jurzua
parents:
diff changeset
121 }
jurzua
parents:
diff changeset
122 });
jurzua
parents:
diff changeset
123
jurzua
parents:
diff changeset
124 $(event.target).parents().addBack().each(function() {
jurzua
parents:
diff changeset
125 var doSelect,
jurzua
parents:
diff changeset
126 selectee = $.data(this, "selectable-item");
jurzua
parents:
diff changeset
127 if (selectee) {
jurzua
parents:
diff changeset
128 doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass("ui-selected");
jurzua
parents:
diff changeset
129 selectee.$element
jurzua
parents:
diff changeset
130 .removeClass(doSelect ? "ui-unselecting" : "ui-selected")
jurzua
parents:
diff changeset
131 .addClass(doSelect ? "ui-selecting" : "ui-unselecting");
jurzua
parents:
diff changeset
132 selectee.unselecting = !doSelect;
jurzua
parents:
diff changeset
133 selectee.selecting = doSelect;
jurzua
parents:
diff changeset
134 selectee.selected = doSelect;
jurzua
parents:
diff changeset
135 // selectable (UN)SELECTING callback
jurzua
parents:
diff changeset
136 if (doSelect) {
jurzua
parents:
diff changeset
137 that._trigger("selecting", event, {
jurzua
parents:
diff changeset
138 selecting: selectee.element
jurzua
parents:
diff changeset
139 });
jurzua
parents:
diff changeset
140 } else {
jurzua
parents:
diff changeset
141 that._trigger("unselecting", event, {
jurzua
parents:
diff changeset
142 unselecting: selectee.element
jurzua
parents:
diff changeset
143 });
jurzua
parents:
diff changeset
144 }
jurzua
parents:
diff changeset
145 return false;
jurzua
parents:
diff changeset
146 }
jurzua
parents:
diff changeset
147 });
jurzua
parents:
diff changeset
148
jurzua
parents:
diff changeset
149 },
jurzua
parents:
diff changeset
150
jurzua
parents:
diff changeset
151 _mouseDrag: function(event) {
jurzua
parents:
diff changeset
152
jurzua
parents:
diff changeset
153 this.dragged = true;
jurzua
parents:
diff changeset
154
jurzua
parents:
diff changeset
155 if (this.options.disabled) {
jurzua
parents:
diff changeset
156 return;
jurzua
parents:
diff changeset
157 }
jurzua
parents:
diff changeset
158
jurzua
parents:
diff changeset
159 var tmp,
jurzua
parents:
diff changeset
160 that = this,
jurzua
parents:
diff changeset
161 options = this.options,
jurzua
parents:
diff changeset
162 x1 = this.opos[0],
jurzua
parents:
diff changeset
163 y1 = this.opos[1],
jurzua
parents:
diff changeset
164 x2 = event.pageX,
jurzua
parents:
diff changeset
165 y2 = event.pageY;
jurzua
parents:
diff changeset
166
jurzua
parents:
diff changeset
167 if (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; }
jurzua
parents:
diff changeset
168 if (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; }
jurzua
parents:
diff changeset
169 this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});
jurzua
parents:
diff changeset
170
jurzua
parents:
diff changeset
171 this.selectees.each(function() {
jurzua
parents:
diff changeset
172 var selectee = $.data(this, "selectable-item"),
jurzua
parents:
diff changeset
173 hit = false;
jurzua
parents:
diff changeset
174
jurzua
parents:
diff changeset
175 //prevent helper from being selected if appendTo: selectable
jurzua
parents:
diff changeset
176 if (!selectee || selectee.element === that.element[0]) {
jurzua
parents:
diff changeset
177 return;
jurzua
parents:
diff changeset
178 }
jurzua
parents:
diff changeset
179
jurzua
parents:
diff changeset
180 if (options.tolerance === "touch") {
jurzua
parents:
diff changeset
181 hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );
jurzua
parents:
diff changeset
182 } else if (options.tolerance === "fit") {
jurzua
parents:
diff changeset
183 hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);
jurzua
parents:
diff changeset
184 }
jurzua
parents:
diff changeset
185
jurzua
parents:
diff changeset
186 if (hit) {
jurzua
parents:
diff changeset
187 // SELECT
jurzua
parents:
diff changeset
188 if (selectee.selected) {
jurzua
parents:
diff changeset
189 selectee.$element.removeClass("ui-selected");
jurzua
parents:
diff changeset
190 selectee.selected = false;
jurzua
parents:
diff changeset
191 }
jurzua
parents:
diff changeset
192 if (selectee.unselecting) {
jurzua
parents:
diff changeset
193 selectee.$element.removeClass("ui-unselecting");
jurzua
parents:
diff changeset
194 selectee.unselecting = false;
jurzua
parents:
diff changeset
195 }
jurzua
parents:
diff changeset
196 if (!selectee.selecting) {
jurzua
parents:
diff changeset
197 selectee.$element.addClass("ui-selecting");
jurzua
parents:
diff changeset
198 selectee.selecting = true;
jurzua
parents:
diff changeset
199 // selectable SELECTING callback
jurzua
parents:
diff changeset
200 that._trigger("selecting", event, {
jurzua
parents:
diff changeset
201 selecting: selectee.element
jurzua
parents:
diff changeset
202 });
jurzua
parents:
diff changeset
203 }
jurzua
parents:
diff changeset
204 } else {
jurzua
parents:
diff changeset
205 // UNSELECT
jurzua
parents:
diff changeset
206 if (selectee.selecting) {
jurzua
parents:
diff changeset
207 if ((event.metaKey || event.ctrlKey) && selectee.startselected) {
jurzua
parents:
diff changeset
208 selectee.$element.removeClass("ui-selecting");
jurzua
parents:
diff changeset
209 selectee.selecting = false;
jurzua
parents:
diff changeset
210 selectee.$element.addClass("ui-selected");
jurzua
parents:
diff changeset
211 selectee.selected = true;
jurzua
parents:
diff changeset
212 } else {
jurzua
parents:
diff changeset
213 selectee.$element.removeClass("ui-selecting");
jurzua
parents:
diff changeset
214 selectee.selecting = false;
jurzua
parents:
diff changeset
215 if (selectee.startselected) {
jurzua
parents:
diff changeset
216 selectee.$element.addClass("ui-unselecting");
jurzua
parents:
diff changeset
217 selectee.unselecting = true;
jurzua
parents:
diff changeset
218 }
jurzua
parents:
diff changeset
219 // selectable UNSELECTING callback
jurzua
parents:
diff changeset
220 that._trigger("unselecting", event, {
jurzua
parents:
diff changeset
221 unselecting: selectee.element
jurzua
parents:
diff changeset
222 });
jurzua
parents:
diff changeset
223 }
jurzua
parents:
diff changeset
224 }
jurzua
parents:
diff changeset
225 if (selectee.selected) {
jurzua
parents:
diff changeset
226 if (!event.metaKey && !event.ctrlKey && !selectee.startselected) {
jurzua
parents:
diff changeset
227 selectee.$element.removeClass("ui-selected");
jurzua
parents:
diff changeset
228 selectee.selected = false;
jurzua
parents:
diff changeset
229
jurzua
parents:
diff changeset
230 selectee.$element.addClass("ui-unselecting");
jurzua
parents:
diff changeset
231 selectee.unselecting = true;
jurzua
parents:
diff changeset
232 // selectable UNSELECTING callback
jurzua
parents:
diff changeset
233 that._trigger("unselecting", event, {
jurzua
parents:
diff changeset
234 unselecting: selectee.element
jurzua
parents:
diff changeset
235 });
jurzua
parents:
diff changeset
236 }
jurzua
parents:
diff changeset
237 }
jurzua
parents:
diff changeset
238 }
jurzua
parents:
diff changeset
239 });
jurzua
parents:
diff changeset
240
jurzua
parents:
diff changeset
241 return false;
jurzua
parents:
diff changeset
242 },
jurzua
parents:
diff changeset
243
jurzua
parents:
diff changeset
244 _mouseStop: function(event) {
jurzua
parents:
diff changeset
245 var that = this;
jurzua
parents:
diff changeset
246
jurzua
parents:
diff changeset
247 this.dragged = false;
jurzua
parents:
diff changeset
248
jurzua
parents:
diff changeset
249 $(".ui-unselecting", this.element[0]).each(function() {
jurzua
parents:
diff changeset
250 var selectee = $.data(this, "selectable-item");
jurzua
parents:
diff changeset
251 selectee.$element.removeClass("ui-unselecting");
jurzua
parents:
diff changeset
252 selectee.unselecting = false;
jurzua
parents:
diff changeset
253 selectee.startselected = false;
jurzua
parents:
diff changeset
254 that._trigger("unselected", event, {
jurzua
parents:
diff changeset
255 unselected: selectee.element
jurzua
parents:
diff changeset
256 });
jurzua
parents:
diff changeset
257 });
jurzua
parents:
diff changeset
258 $(".ui-selecting", this.element[0]).each(function() {
jurzua
parents:
diff changeset
259 var selectee = $.data(this, "selectable-item");
jurzua
parents:
diff changeset
260 selectee.$element.removeClass("ui-selecting").addClass("ui-selected");
jurzua
parents:
diff changeset
261 selectee.selecting = false;
jurzua
parents:
diff changeset
262 selectee.selected = true;
jurzua
parents:
diff changeset
263 selectee.startselected = true;
jurzua
parents:
diff changeset
264 that._trigger("selected", event, {
jurzua
parents:
diff changeset
265 selected: selectee.element
jurzua
parents:
diff changeset
266 });
jurzua
parents:
diff changeset
267 });
jurzua
parents:
diff changeset
268 this._trigger("stop", event);
jurzua
parents:
diff changeset
269
jurzua
parents:
diff changeset
270 this.helper.remove();
jurzua
parents:
diff changeset
271
jurzua
parents:
diff changeset
272 return false;
jurzua
parents:
diff changeset
273 }
jurzua
parents:
diff changeset
274
jurzua
parents:
diff changeset
275 });
jurzua
parents:
diff changeset
276
jurzua
parents:
diff changeset
277 })(jQuery);