fomantic-ui-sass 2.8.8.1 → 2.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/app/assets/fonts/semantic-ui/Lato-Bold.woff +0 -0
  4. data/app/assets/fonts/semantic-ui/Lato-Bold.woff2 +0 -0
  5. data/app/assets/fonts/semantic-ui/Lato-BoldItalic.woff +0 -0
  6. data/app/assets/fonts/semantic-ui/Lato-BoldItalic.woff2 +0 -0
  7. data/app/assets/fonts/semantic-ui/Lato-Italic.woff +0 -0
  8. data/app/assets/fonts/semantic-ui/Lato-Italic.woff2 +0 -0
  9. data/app/assets/fonts/semantic-ui/Lato-Regular.woff +0 -0
  10. data/app/assets/fonts/semantic-ui/Lato-Regular.woff2 +0 -0
  11. data/app/assets/fonts/semantic-ui/LatoLatin-Bold.woff +0 -0
  12. data/app/assets/fonts/semantic-ui/LatoLatin-Bold.woff2 +0 -0
  13. data/app/assets/fonts/semantic-ui/LatoLatin-BoldItalic.woff +0 -0
  14. data/app/assets/fonts/semantic-ui/LatoLatin-BoldItalic.woff2 +0 -0
  15. data/app/assets/fonts/semantic-ui/LatoLatin-Italic.woff +0 -0
  16. data/app/assets/fonts/semantic-ui/LatoLatin-Italic.woff2 +0 -0
  17. data/app/assets/fonts/semantic-ui/LatoLatin-Regular.woff +0 -0
  18. data/app/assets/fonts/semantic-ui/LatoLatin-Regular.woff2 +0 -0
  19. data/app/assets/fonts/semantic-ui/brand-icons.eot +0 -0
  20. data/app/assets/fonts/semantic-ui/brand-icons.svg +41 -6
  21. data/app/assets/fonts/semantic-ui/brand-icons.ttf +0 -0
  22. data/app/assets/fonts/semantic-ui/brand-icons.woff +0 -0
  23. data/app/assets/fonts/semantic-ui/brand-icons.woff2 +0 -0
  24. data/app/assets/fonts/semantic-ui/icons.eot +0 -0
  25. data/app/assets/fonts/semantic-ui/icons.svg +245 -7
  26. data/app/assets/fonts/semantic-ui/icons.ttf +0 -0
  27. data/app/assets/fonts/semantic-ui/icons.woff +0 -0
  28. data/app/assets/fonts/semantic-ui/icons.woff2 +0 -0
  29. data/app/assets/fonts/semantic-ui/outline-icons.eot +0 -0
  30. data/app/assets/fonts/semantic-ui/outline-icons.svg +2 -2
  31. data/app/assets/fonts/semantic-ui/outline-icons.ttf +0 -0
  32. data/app/assets/fonts/semantic-ui/outline-icons.woff +0 -0
  33. data/app/assets/fonts/semantic-ui/outline-icons.woff2 +0 -0
  34. data/app/assets/javascripts/semantic-ui/accordion.js +569 -590
  35. data/app/assets/javascripts/semantic-ui/api.js +1153 -1116
  36. data/app/assets/javascripts/semantic-ui/calendar.js +1941 -1698
  37. data/app/assets/javascripts/semantic-ui/checkbox.js +862 -854
  38. data/app/assets/javascripts/semantic-ui/dimmer.js +697 -713
  39. data/app/assets/javascripts/semantic-ui/dropdown.js +4196 -4192
  40. data/app/assets/javascripts/semantic-ui/embed.js +646 -672
  41. data/app/assets/javascripts/semantic-ui/flyout.js +1579 -0
  42. data/app/assets/javascripts/semantic-ui/form.js +2024 -2000
  43. data/app/assets/javascripts/semantic-ui/modal.js +1546 -1384
  44. data/app/assets/javascripts/semantic-ui/nag.js +521 -527
  45. data/app/assets/javascripts/semantic-ui/popup.js +1457 -1463
  46. data/app/assets/javascripts/semantic-ui/progress.js +970 -995
  47. data/app/assets/javascripts/semantic-ui/rating.js +508 -520
  48. data/app/assets/javascripts/semantic-ui/search.js +1521 -1508
  49. data/app/assets/javascripts/semantic-ui/shape.js +784 -811
  50. data/app/assets/javascripts/semantic-ui/sidebar.js +1061 -1002
  51. data/app/assets/javascripts/semantic-ui/site.js +437 -477
  52. data/app/assets/javascripts/semantic-ui/slider.js +1311 -1297
  53. data/app/assets/javascripts/semantic-ui/state.js +639 -658
  54. data/app/assets/javascripts/semantic-ui/sticky.js +848 -891
  55. data/app/assets/javascripts/semantic-ui/tab.js +895 -941
  56. data/app/assets/javascripts/semantic-ui/toast.js +911 -851
  57. data/app/assets/javascripts/semantic-ui/transition.js +1049 -1073
  58. data/app/assets/javascripts/semantic-ui/visibility.js +1214 -1246
  59. data/app/assets/stylesheets/semantic-ui/collections/_breadcrumb.scss +7 -7
  60. data/app/assets/stylesheets/semantic-ui/collections/_form.scss +389 -407
  61. data/app/assets/stylesheets/semantic-ui/collections/_grid.scss +203 -345
  62. data/app/assets/stylesheets/semantic-ui/collections/_menu.scss +372 -501
  63. data/app/assets/stylesheets/semantic-ui/collections/_message.scss +154 -226
  64. data/app/assets/stylesheets/semantic-ui/collections/_table.scss +2065 -880
  65. data/app/assets/stylesheets/semantic-ui/elements/_button.scss +867 -1232
  66. data/app/assets/stylesheets/semantic-ui/elements/_container.scss +101 -6
  67. data/app/assets/stylesheets/semantic-ui/elements/_divider.scss +75 -93
  68. data/app/assets/stylesheets/semantic-ui/elements/_emoji.scss +11148 -9190
  69. data/app/assets/stylesheets/semantic-ui/elements/_flag.scss +1037 -929
  70. data/app/assets/stylesheets/semantic-ui/elements/_header.scss +124 -146
  71. data/app/assets/stylesheets/semantic-ui/elements/_icon.scss +2728 -2759
  72. data/app/assets/stylesheets/semantic-ui/elements/_image.scss +41 -65
  73. data/app/assets/stylesheets/semantic-ui/elements/_input.scss +982 -163
  74. data/app/assets/stylesheets/semantic-ui/elements/_label.scss +432 -479
  75. data/app/assets/stylesheets/semantic-ui/elements/_list.scss +80 -101
  76. data/app/assets/stylesheets/semantic-ui/elements/_loader.scss +452 -540
  77. data/app/assets/stylesheets/semantic-ui/elements/_placeholder.scss +56 -76
  78. data/app/assets/stylesheets/semantic-ui/elements/_rail.scss +17 -22
  79. data/app/assets/stylesheets/semantic-ui/elements/_reveal.scss +46 -85
  80. data/app/assets/stylesheets/semantic-ui/elements/_segment.scss +263 -255
  81. data/app/assets/stylesheets/semantic-ui/elements/_step.scss +106 -179
  82. data/app/assets/stylesheets/semantic-ui/elements/_text.scss +33 -33
  83. data/app/assets/stylesheets/semantic-ui/globals/_reset.scss +14 -18
  84. data/app/assets/stylesheets/semantic-ui/globals/_site.scss +132 -48
  85. data/app/assets/stylesheets/semantic-ui/modules/_accordion.scss +196 -74
  86. data/app/assets/stylesheets/semantic-ui/modules/_calendar.scss +43 -29
  87. data/app/assets/stylesheets/semantic-ui/modules/_checkbox.scss +210 -280
  88. data/app/assets/stylesheets/semantic-ui/modules/_dimmer.scss +78 -182
  89. data/app/assets/stylesheets/semantic-ui/modules/_dropdown.scss +339 -423
  90. data/app/assets/stylesheets/semantic-ui/modules/_embed.scss +24 -35
  91. data/app/assets/stylesheets/semantic-ui/modules/_flyout.scss +546 -0
  92. data/app/assets/stylesheets/semantic-ui/modules/_modal.scss +150 -153
  93. data/app/assets/stylesheets/semantic-ui/modules/_nag.scss +55 -65
  94. data/app/assets/stylesheets/semantic-ui/modules/_popup.scss +530 -310
  95. data/app/assets/stylesheets/semantic-ui/modules/_progress.scss +108 -213
  96. data/app/assets/stylesheets/semantic-ui/modules/_rating.scss +88 -168
  97. data/app/assets/stylesheets/semantic-ui/modules/_search.scss +73 -102
  98. data/app/assets/stylesheets/semantic-ui/modules/_shape.scss +16 -32
  99. data/app/assets/stylesheets/semantic-ui/modules/_sidebar.scss +126 -215
  100. data/app/assets/stylesheets/semantic-ui/modules/_slider.scss +110 -138
  101. data/app/assets/stylesheets/semantic-ui/modules/_sticky.scss +3 -7
  102. data/app/assets/stylesheets/semantic-ui/modules/_tab.scss +16 -20
  103. data/app/assets/stylesheets/semantic-ui/modules/_toast.scss +111 -141
  104. data/app/assets/stylesheets/semantic-ui/modules/_transition.scss +371 -1282
  105. data/app/assets/stylesheets/semantic-ui/views/_ad.scss +39 -50
  106. data/app/assets/stylesheets/semantic-ui/views/_card.scss +949 -458
  107. data/app/assets/stylesheets/semantic-ui/views/_comment.scss +44 -62
  108. data/app/assets/stylesheets/semantic-ui/views/_feed.scss +50 -72
  109. data/app/assets/stylesheets/semantic-ui/views/_item.scss +89 -136
  110. data/app/assets/stylesheets/semantic-ui/views/_statistic.scss +78 -119
  111. data/lib/fomantic/ui/sass/version.rb +2 -2
  112. data/tasks/converter.rb +1 -1
  113. metadata +21 -3
@@ -1,1338 +1,1352 @@
1
1
  /*!
2
2
  * # Fomantic-UI - Slider
3
- * http://github.com/fomantic/Fomantic-UI/
3
+ * https://github.com/fomantic/Fomantic-UI/
4
4
  *
5
5
  *
6
6
  * Released under the MIT license
7
- * http://opensource.org/licenses/MIT
7
+ * https://opensource.org/licenses/MIT
8
8
  *
9
9
  */
10
10
 
11
- ;(function ( $, window, document, undefined ) {
11
+ (function ($, window, document) {
12
+ 'use strict';
12
13
 
13
- "use strict";
14
+ function isFunction(obj) {
15
+ return typeof obj === 'function' && typeof obj.nodeType !== 'number';
16
+ }
14
17
 
15
- window = (typeof window != 'undefined' && window.Math == Math)
16
- ? window
17
- : (typeof self != 'undefined' && self.Math == Math)
18
- ? self
19
- : Function('return this')()
20
- ;
18
+ window = window !== undefined && window.Math === Math
19
+ ? window
20
+ : globalThis;
21
21
 
22
- $.fn.slider = function(parameters) {
22
+ $.fn.slider = function (parameters) {
23
+ var
24
+ $allModules = $(this),
25
+ $document = $(document),
26
+ $window = $(window),
23
27
 
24
- var
25
- $allModules = $(this),
26
- $window = $(window),
28
+ moduleSelector = $allModules.selector || '',
27
29
 
28
- moduleSelector = $allModules.selector || '',
30
+ time = Date.now(),
31
+ performance = [],
29
32
 
30
- time = new Date().getTime(),
31
- performance = [],
33
+ query = arguments[0],
34
+ methodInvoked = typeof query === 'string',
35
+ queryArguments = [].slice.call(arguments, 1),
32
36
 
33
- query = arguments[0],
34
- methodInvoked = (typeof query == 'string'),
35
- queryArguments = [].slice.call(arguments, 1),
37
+ alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'],
36
38
 
37
- alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'],
39
+ SINGLE_STEP = 1,
40
+ BIG_STEP = 2,
41
+ NO_STEP = 0,
42
+ SINGLE_BACKSTEP = -1,
43
+ BIG_BACKSTEP = -2,
38
44
 
39
- SINGLE_STEP = 1,
40
- BIG_STEP = 2,
41
- NO_STEP = 0,
42
- SINGLE_BACKSTEP = -1,
43
- BIG_BACKSTEP = -2,
45
+ // Used to manage document bound events.
46
+ // Use this so that we can distinguish between which document events are bound to which range.
47
+ currentRange = 0,
44
48
 
45
- // Used to manage document bound events.
46
- // Use this so that we can distinguish between which document events are bound to which range.
47
- currentRange = 0,
49
+ returnedValue
50
+ ;
48
51
 
49
- returnedValue
50
- ;
51
-
52
- $allModules
53
- .each(function() {
54
-
55
- var
56
- settings = ( $.isPlainObject(parameters) )
57
- ? $.extend(true, {}, $.fn.slider.settings, parameters)
58
- : $.extend({}, $.fn.slider.settings),
59
-
60
- className = settings.className,
61
- metadata = settings.metadata,
62
- namespace = settings.namespace,
63
- error = settings.error,
64
- keys = settings.keys,
65
- interpretLabel = settings.interpretLabel,
66
-
67
- isHover = false,
68
- eventNamespace = '.' + namespace,
69
- moduleNamespace = 'module-' + namespace,
70
-
71
- $module = $(this),
72
- $currThumb,
73
- $thumb,
74
- $secondThumb,
75
- $track,
76
- $trackFill,
77
- $labels,
78
-
79
- element = this,
80
- instance = $module.data(moduleNamespace),
81
-
82
- documentEventID,
83
-
84
- value,
85
- position,
86
- secondPos,
87
- offset,
88
- precision,
89
- isTouch,
90
- gapRatio = 1,
91
- previousValue,
92
-
93
- initialPosition,
94
- initialLoad,
95
- module
96
- ;
97
-
98
- module = {
99
-
100
- initialize: function() {
101
- module.debug('Initializing slider', settings);
102
- initialLoad = true;
103
-
104
- currentRange += 1;
105
- documentEventID = currentRange;
106
-
107
- isTouch = module.setup.testOutTouch();
108
- module.setup.layout();
109
- module.setup.labels();
110
-
111
- if(!module.is.disabled()) {
112
- module.bind.events();
113
- }
114
-
115
- module.read.metadata();
116
- module.read.settings();
117
-
118
- initialLoad = false;
119
- module.instantiate();
120
- },
121
-
122
- instantiate: function() {
123
- module.verbose('Storing instance of slider', module);
124
- instance = module;
125
- $module
126
- .data(moduleNamespace, module)
127
- ;
128
- },
129
-
130
- destroy: function() {
131
- module.verbose('Destroying previous slider for', $module);
132
- clearInterval(instance.interval);
133
- module.unbind.events();
134
- module.unbind.slidingEvents();
135
- $module.removeData(moduleNamespace);
136
- instance = undefined;
137
- },
138
-
139
- setup: {
140
- layout: function() {
141
- if( $module.attr('tabindex') === undefined) {
142
- $module.attr('tabindex', 0);
143
- }
144
- if($module.find('.inner').length == 0) {
145
- $module.append("<div class='inner'>"
146
- + "<div class='track'></div>"
147
- + "<div class='track-fill'></div>"
148
- + "<div class='thumb'></div>"
149
- + "</div>");
150
- }
151
- precision = module.get.precision();
152
- $thumb = $module.find('.thumb:not(.second)');
153
- $currThumb = $thumb;
154
- if(module.is.range()) {
155
- if($module.find('.thumb.second').length == 0) {
156
- $module.find('.inner').append("<div class='thumb second'></div>");
157
- }
158
- $secondThumb = $module.find('.thumb.second');
159
- }
160
- $track = $module.find('.track');
161
- $trackFill = $module.find('.track-fill');
162
- offset = $thumb.width() / 2;
163
- },
164
- labels: function() {
165
- if(module.is.labeled()) {
166
- $labels = $module.find('.labels:not(.auto)');
167
- if($labels.length != 0) {
168
- module.setup.customLabel();
169
- } else {
170
- module.setup.autoLabel();
171
- }
172
-
173
- if (settings.showLabelTicks) {
174
- $module.addClass(className.ticked)
175
- }
176
- }
177
- },
178
- testOutTouch: function() {
179
- try {
180
- document.createEvent('TouchEvent');
181
- return true;
182
- } catch (e) {
183
- return false;
184
- }
185
- },
186
- customLabel: function() {
52
+ $allModules.each(function () {
187
53
  var
188
- $children = $labels.find('.label'),
189
- numChildren = $children.length,
190
- min = module.get.min(),
191
- max = module.get.max(),
192
- ratio
54
+ settings = $.isPlainObject(parameters)
55
+ ? $.extend(true, {}, $.fn.slider.settings, parameters)
56
+ : $.extend({}, $.fn.slider.settings),
57
+
58
+ className = settings.className,
59
+ metadata = settings.metadata,
60
+ namespace = settings.namespace,
61
+ error = settings.error,
62
+ keys = settings.keys,
63
+ interpretLabel = settings.interpretLabel,
64
+
65
+ isHover = false,
66
+ eventNamespace = '.' + namespace,
67
+ moduleNamespace = 'module-' + namespace,
68
+
69
+ $module = $(this),
70
+ $currThumb,
71
+ touchIdentifier,
72
+ $thumb,
73
+ $secondThumb,
74
+ $track,
75
+ $trackFill,
76
+ $labels,
77
+
78
+ element = this,
79
+ instance = $module.data(moduleNamespace),
80
+
81
+ documentEventID,
82
+
83
+ value,
84
+ position,
85
+ secondPos,
86
+ offset,
87
+ precision,
88
+ gapRatio = 1,
89
+ previousValue,
90
+
91
+ initialPosition,
92
+ initialLoad,
93
+ module
193
94
  ;
194
- $children.each(function(index) {
195
- var
196
- $child = $(this),
197
- attrValue = $child.attr('data-value')
198
- ;
199
- if(attrValue) {
200
- attrValue = attrValue > max ? max : attrValue < min ? min : attrValue;
201
- ratio = (attrValue - min) / (max - min);
202
- } else {
203
- ratio = (index + 1) / (numChildren + 1);
204
- }
205
- module.update.labelPosition(ratio, $(this));
206
- });
207
- },
208
- autoLabel: function() {
209
- $labels = $module.find('.labels');
210
- if($labels.length != 0) {
211
- $labels.empty();
212
- }
213
- else {
214
- $labels = $module.append('<ul class="auto labels"></ul>').find('.labels');
215
- }
216
- for(var i = 0, len = module.get.numLabels(); i <= len; i++) {
217
- var
218
- labelText = module.get.label(i),
219
- $label = (labelText !== "")
220
- ? !(i % module.get.gapRatio())
221
- ? $('<li class="label">' + labelText + '</li>')
222
- : $('<li class="halftick label"></li>')
223
- : null,
224
- ratio = i / len
225
- ;
226
- if($label) {
227
- module.update.labelPosition(ratio, $label);
228
- $labels.append($label);
229
- }
230
- }
231
- }
232
- },
233
95
 
234
- bind: {
235
- events: function() {
236
- module.bind.globalKeyboardEvents();
237
- module.bind.keyboardEvents();
238
- module.bind.mouseEvents();
239
- if(module.is.touch()) {
240
- module.bind.touchEvents();
241
- }
242
- if (settings.autoAdjustLabels) {
243
- module.bind.windowEvents();
244
- }
245
- },
246
- keyboardEvents: function() {
247
- module.verbose('Binding keyboard events');
248
- $module.on('keydown' + eventNamespace, module.event.keydown);
249
- },
250
- globalKeyboardEvents: function() {
251
- $(document).on('keydown' + eventNamespace + documentEventID, module.event.activateFocus);
252
- },
253
- mouseEvents: function() {
254
- module.verbose('Binding mouse events');
255
- $module.find('.track, .thumb, .inner').on('mousedown' + eventNamespace, function(event) {
256
- event.stopImmediatePropagation();
257
- event.preventDefault();
258
- module.event.down(event);
259
- });
260
- $module.on('mousedown' + eventNamespace, module.event.down);
261
- $module.on('mouseenter' + eventNamespace, function(event) {
262
- isHover = true;
263
- });
264
- $module.on('mouseleave' + eventNamespace, function(event) {
265
- isHover = false;
266
- });
267
- },
268
- touchEvents: function() {
269
- module.verbose('Binding touch events');
270
- $module.find('.track, .thumb, .inner').on('touchstart' + eventNamespace, function(event) {
271
- event.stopImmediatePropagation();
272
- event.preventDefault();
273
- module.event.down(event);
274
- });
275
- $module.on('touchstart' + eventNamespace, module.event.down);
276
- },
277
- slidingEvents: function() {
278
- // these don't need the identifier because we only ever want one of them to be registered with document
279
- module.verbose('Binding page wide events while handle is being draged');
280
- if(module.is.touch()) {
281
- $(document).on('touchmove' + eventNamespace, module.event.move);
282
- $(document).on('touchend' + eventNamespace, module.event.up);
283
- }
284
- else {
285
- $(document).on('mousemove' + eventNamespace, module.event.move);
286
- $(document).on('mouseup' + eventNamespace, module.event.up);
287
- }
288
- },
289
- windowEvents: function() {
290
- $window.on('resize' + eventNamespace, module.event.resize);
291
- }
292
- },
293
-
294
- unbind: {
295
- events: function() {
296
- $module.find('.track, .thumb, .inner').off('mousedown' + eventNamespace);
297
- $module.find('.track, .thumb, .inner').off('touchstart' + eventNamespace);
298
- $module.off('mousedown' + eventNamespace);
299
- $module.off('mouseenter' + eventNamespace);
300
- $module.off('mouseleave' + eventNamespace);
301
- $module.off('touchstart' + eventNamespace);
302
- $module.off('keydown' + eventNamespace);
303
- $module.off('focusout' + eventNamespace);
304
- $(document).off('keydown' + eventNamespace + documentEventID, module.event.activateFocus);
305
- $window.off('resize' + eventNamespace);
306
- },
307
- slidingEvents: function() {
308
- if(module.is.touch()) {
309
- $(document).off('touchmove' + eventNamespace);
310
- $(document).off('touchend' + eventNamespace);
311
- } else {
312
- $(document).off('mousemove' + eventNamespace);
313
- $(document).off('mouseup' + eventNamespace);
314
- }
315
- },
316
- },
317
-
318
- event: {
319
- down: function(event) {
320
- event.preventDefault();
321
- if(module.is.range()) {
322
- var
323
- eventPos = module.determine.eventPos(event),
324
- newPos = module.determine.pos(eventPos)
325
- ;
326
- // Special handling if range mode and both thumbs have the same value
327
- if(settings.preventCrossover && module.is.range() && module.thumbVal === module.secondThumbVal) {
328
- initialPosition = newPos;
329
- $currThumb = undefined;
330
- } else {
331
- $currThumb = module.determine.closestThumb(newPos);
332
- }
333
- if (previousValue === undefined) {
334
- previousValue = module.get.currentThumbValue();
335
- }
336
- } else if (previousValue === undefined) {
337
- previousValue = module.get.value();
338
- }
339
-
340
- if(!module.is.disabled()) {
341
- module.bind.slidingEvents();
342
- }
343
- },
344
- move: function(event) {
345
- event.preventDefault();
346
- var value = module.determine.valueFromEvent(event);
347
- if($currThumb === undefined) {
348
- var
349
- eventPos = module.determine.eventPos(event),
350
- newPos = module.determine.pos(eventPos)
351
- ;
352
- $currThumb = initialPosition > newPos ? $thumb : $secondThumb;
353
- }
354
- if(module.get.step() == 0 || module.is.smooth()) {
355
- var
356
- thumbVal = module.thumbVal,
357
- secondThumbVal = module.secondThumbVal,
358
- thumbSmoothVal = module.determine.smoothValueFromEvent(event)
359
- ;
360
- if(!$currThumb.hasClass('second')) {
361
- if(settings.preventCrossover && module.is.range()) {
362
- value = Math.min(secondThumbVal, value);
363
- thumbSmoothVal = Math.min(secondThumbVal, thumbSmoothVal);
96
+ module = {
97
+
98
+ initialize: function () {
99
+ module.debug('Initializing slider', settings);
100
+ initialLoad = true;
101
+
102
+ currentRange += 1;
103
+ documentEventID = currentRange;
104
+
105
+ module.setup.layout();
106
+ module.setup.labels();
107
+
108
+ if (!module.is.disabled()) {
109
+ module.bind.events();
110
+ }
111
+
112
+ module.read.metadata();
113
+ module.read.settings();
114
+
115
+ initialLoad = false;
116
+ module.instantiate();
117
+ },
118
+
119
+ instantiate: function () {
120
+ module.verbose('Storing instance of slider', module);
121
+ instance = module;
122
+ $module
123
+ .data(moduleNamespace, module)
124
+ ;
125
+ },
126
+
127
+ destroy: function () {
128
+ module.verbose('Destroying previous slider for', $module);
129
+ clearInterval(instance.interval);
130
+ module.unbind.events();
131
+ module.unbind.slidingEvents();
132
+ $module.removeData(moduleNamespace);
133
+ instance = undefined;
134
+ },
135
+
136
+ setup: {
137
+ layout: function () {
138
+ if ($module.attr('tabindex') === undefined) {
139
+ $module.attr('tabindex', 0);
140
+ }
141
+ if ($module.find('.inner').length === 0) {
142
+ $module.append("<div class='inner'>"
143
+ + "<div class='track'></div>"
144
+ + "<div class='track-fill'></div>"
145
+ + "<div class='thumb'></div>"
146
+ + '</div>');
147
+ }
148
+ precision = module.get.precision();
149
+ $thumb = $module.find('.thumb:not(.second)');
150
+ $currThumb = $thumb;
151
+ if (module.is.range()) {
152
+ if ($module.find('.thumb.second').length === 0) {
153
+ $module.find('.inner').append("<div class='thumb second'></div>");
154
+ }
155
+ $secondThumb = $module.find('.thumb.second');
156
+ }
157
+ $track = $module.find('.track');
158
+ $trackFill = $module.find('.track-fill');
159
+ offset = $thumb.width() / 2;
160
+ },
161
+ labels: function () {
162
+ if (module.is.labeled()) {
163
+ $labels = $module.find('.labels:not(.auto)');
164
+ if ($labels.length > 0) {
165
+ module.setup.customLabel();
166
+ } else {
167
+ module.setup.autoLabel();
168
+ }
169
+
170
+ if (settings.showLabelTicks) {
171
+ $module.addClass(className.ticked);
172
+ }
173
+ }
174
+ },
175
+ customLabel: function () {
176
+ var
177
+ $children = $labels.find('.label'),
178
+ numChildren = $children.length,
179
+ min = module.get.min(),
180
+ max = module.get.max(),
181
+ ratio
182
+ ;
183
+ $children.each(function (index) {
184
+ var
185
+ $child = $(this),
186
+ attrValue = $child.attr('data-value')
187
+ ;
188
+ if (attrValue) {
189
+ attrValue = attrValue > max
190
+ ? max
191
+ : (attrValue < min ? min : attrValue);
192
+ ratio = (attrValue - min) / (max - min);
193
+ } else {
194
+ ratio = (index + 1) / (numChildren + 1);
195
+ }
196
+ module.update.labelPosition(ratio, $(this));
197
+ });
198
+ },
199
+ autoLabel: function () {
200
+ $labels = $module.find('.labels');
201
+ if ($labels.length > 0) {
202
+ $labels.empty();
203
+ } else {
204
+ $labels = $module.append('<ul class="auto labels"></ul>').find('.labels');
205
+ }
206
+ for (var i = 0, len = module.get.numLabels(); i <= len; i++) {
207
+ var
208
+ labelText = module.get.label(i),
209
+ $label = labelText !== ''
210
+ ? (!(i % module.get.gapRatio())
211
+ ? $('<li class="label">' + labelText + '</li>')
212
+ : $('<li class="halftick label"></li>'))
213
+ : null,
214
+ ratio = i / len
215
+ ;
216
+ if ($label) {
217
+ module.update.labelPosition(ratio, $label);
218
+ $labels.append($label);
219
+ }
220
+ }
221
+ },
222
+ },
223
+
224
+ bind: {
225
+ events: function () {
226
+ module.bind.globalKeyboardEvents();
227
+ module.bind.keyboardEvents();
228
+ module.bind.mouseEvents();
229
+ if (settings.autoAdjustLabels) {
230
+ module.bind.windowEvents();
231
+ }
232
+ },
233
+ keyboardEvents: function () {
234
+ module.verbose('Binding keyboard events');
235
+ $module.on('keydown' + eventNamespace, module.event.keydown);
236
+ },
237
+ globalKeyboardEvents: function () {
238
+ $document.on('keydown' + eventNamespace + documentEventID, module.event.activateFocus);
239
+ },
240
+ mouseEvents: function () {
241
+ module.verbose('Binding mouse and touch events');
242
+ $module.find('.track, .thumb, .inner').on('mousedown' + eventNamespace, function (event) {
243
+ event.stopImmediatePropagation();
244
+ event.preventDefault();
245
+ module.event.down(event);
246
+ });
247
+ $module.on('mousedown' + eventNamespace, module.event.down);
248
+ $module.on('mouseenter' + eventNamespace, function (event) {
249
+ isHover = true;
250
+ });
251
+ $module.on('mouseleave' + eventNamespace, function (event) {
252
+ isHover = false;
253
+ });
254
+ // All touch events are invoked on the element where the touch *started*. Thus, we can bind them all
255
+ // on the thumb(s) and don't need to worry about interference with other components, i.e. no dynamic binding
256
+ // and unbinding required.
257
+ $module.find('.thumb')
258
+ .on('touchstart' + eventNamespace, module.event.touchDown)
259
+ .on('touchmove' + eventNamespace, module.event.move)
260
+ .on('touchend' + eventNamespace, module.event.up)
261
+ .on('touchcancel' + eventNamespace, module.event.touchCancel)
262
+ ;
263
+ },
264
+ slidingEvents: function () {
265
+ // these don't need the identifier because we only ever want one of them to be registered with document
266
+ module.verbose('Binding page wide events while handle is being draged');
267
+ $document.on('mousemove' + eventNamespace, module.event.move);
268
+ $document.on('mouseup' + eventNamespace, module.event.up);
269
+ },
270
+ windowEvents: function () {
271
+ $window.on('resize' + eventNamespace, module.event.resize);
272
+ },
273
+ },
274
+
275
+ unbind: {
276
+ events: function () {
277
+ $module.find('.track, .thumb, .inner').off('mousedown' + eventNamespace);
278
+ $module.off('mousedown' + eventNamespace);
279
+ $module.off('mouseenter' + eventNamespace);
280
+ $module.off('mouseleave' + eventNamespace);
281
+ $module.find('.thumb')
282
+ .off('touchstart' + eventNamespace)
283
+ .off('touchmove' + eventNamespace)
284
+ .off('touchend' + eventNamespace)
285
+ .off('touchcancel' + eventNamespace)
286
+ ;
287
+ $module.off('keydown' + eventNamespace);
288
+ $module.off('focusout' + eventNamespace);
289
+ $document.off('keydown' + eventNamespace + documentEventID, module.event.activateFocus);
290
+ $window.off('resize' + eventNamespace);
291
+ },
292
+ slidingEvents: function () {
293
+ $document.off('mousemove' + eventNamespace);
294
+ $document.off('mouseup' + eventNamespace);
295
+ },
296
+ },
297
+
298
+ event: {
299
+ down: function (event) {
300
+ event.preventDefault();
301
+ if (module.is.range()) {
302
+ var
303
+ eventPos = module.determine.eventPos(event),
304
+ newPos = module.determine.pos(eventPos)
305
+ ;
306
+ // Special handling if range mode and both thumbs have the same value
307
+ if (settings.preventCrossover && module.is.range() && module.thumbVal === module.secondThumbVal) {
308
+ initialPosition = newPos;
309
+ $currThumb = undefined;
310
+ } else {
311
+ $currThumb = module.determine.closestThumb(newPos);
312
+ }
313
+ if (previousValue === undefined) {
314
+ previousValue = module.get.currentThumbValue();
315
+ }
316
+ } else if (previousValue === undefined) {
317
+ previousValue = module.get.value();
318
+ }
319
+
320
+ if (!module.is.disabled()) {
321
+ module.bind.slidingEvents();
322
+ }
323
+ },
324
+ touchDown: function (event) {
325
+ event.preventDefault(); // disable mouse emulation and touch-scrolling
326
+ event.stopImmediatePropagation();
327
+ if (touchIdentifier !== undefined) {
328
+ // ignore multiple touches on the same slider --
329
+ // we cannot handle changing both thumbs at once due to shared state
330
+ return;
331
+ }
332
+ $currThumb = $(event.target);
333
+ var touchEvent = event.touches ? event : event.originalEvent;
334
+ touchIdentifier = touchEvent.targetTouches[0].identifier;
335
+ if (previousValue === undefined) {
336
+ previousValue = module.get.currentThumbValue();
337
+ }
338
+ },
339
+ move: function (event) {
340
+ if (event.type === 'mousemove') {
341
+ event.preventDefault(); // prevent text selection etc.
342
+ }
343
+ if (module.is.disabled()) {
344
+ // touch events are always bound, so we need to prevent touch-sliding on disabled sliders here
345
+ return;
346
+ }
347
+ var value = module.determine.valueFromEvent(event);
348
+ if (event.type === 'mousemove' && $currThumb === undefined) {
349
+ var
350
+ eventPos = module.determine.eventPos(event),
351
+ newPos = module.determine.pos(eventPos)
352
+ ;
353
+ $currThumb = initialPosition > newPos ? $thumb : $secondThumb;
354
+ }
355
+ if (module.get.step() === 0 || module.is.smooth()) {
356
+ var
357
+ thumbVal = module.thumbVal,
358
+ secondThumbVal = module.secondThumbVal,
359
+ thumbSmoothVal = module.determine.smoothValueFromEvent(event)
360
+ ;
361
+ if (!$currThumb.hasClass('second')) {
362
+ if (settings.preventCrossover && module.is.range()) {
363
+ value = Math.min(secondThumbVal, value);
364
+ thumbSmoothVal = Math.min(secondThumbVal, thumbSmoothVal);
365
+ }
366
+ thumbVal = value;
367
+ } else {
368
+ if (settings.preventCrossover && module.is.range()) {
369
+ value = Math.max(thumbVal, value);
370
+ thumbSmoothVal = Math.max(thumbVal, thumbSmoothVal);
371
+ }
372
+ secondThumbVal = value;
373
+ }
374
+ value = Math.abs(thumbVal - (secondThumbVal || 0));
375
+ module.update.position(thumbSmoothVal);
376
+ settings.onMove.call(element, value, thumbVal, secondThumbVal);
377
+ } else {
378
+ module.update.value(value, function (value, thumbVal, secondThumbVal) {
379
+ settings.onMove.call(element, value, thumbVal, secondThumbVal);
380
+ });
381
+ }
382
+ },
383
+ up: function (event) {
384
+ event.preventDefault();
385
+ if (module.is.disabled()) {
386
+ // touch events are always bound, so we need to prevent touch-sliding on disabled sliders here
387
+ return;
388
+ }
389
+ var value = module.determine.valueFromEvent(event);
390
+ module.set.value(value);
391
+ module.unbind.slidingEvents();
392
+ touchIdentifier = undefined;
393
+ if (previousValue !== undefined) {
394
+ previousValue = undefined;
395
+ }
396
+ },
397
+ touchCancel: function (event) {
398
+ event.preventDefault();
399
+ touchIdentifier = undefined;
400
+ if (previousValue !== undefined) {
401
+ module.update.value(previousValue);
402
+ previousValue = undefined;
403
+ }
404
+ },
405
+ keydown: function (event, first) {
406
+ if (settings.preventCrossover && module.is.range() && module.thumbVal === module.secondThumbVal) {
407
+ $currThumb = undefined;
408
+ }
409
+ if (module.is.focused()) {
410
+ $document.trigger(event);
411
+ }
412
+ if (first || module.is.focused()) {
413
+ var step = module.determine.keyMovement(event);
414
+ if (step !== NO_STEP) {
415
+ event.preventDefault();
416
+ switch (step) {
417
+ case SINGLE_STEP: {
418
+ module.takeStep();
419
+
420
+ break;
421
+ }
422
+ case BIG_STEP: {
423
+ module.takeStep(module.get.multiplier());
424
+
425
+ break;
426
+ }
427
+ case SINGLE_BACKSTEP: {
428
+ module.backStep();
429
+
430
+ break;
431
+ }
432
+ case BIG_BACKSTEP: {
433
+ module.backStep(module.get.multiplier());
434
+
435
+ break;
436
+ }
437
+ }
438
+ }
439
+ }
440
+ },
441
+ activateFocus: function (event) {
442
+ if (!module.is.focused() && module.is.hover() && module.determine.keyMovement(event) !== NO_STEP) {
443
+ event.preventDefault();
444
+ module.event.keydown(event, true);
445
+ $module.trigger('focus');
446
+ }
447
+ },
448
+ resize: function (_event) {
449
+ // To avoid a useless performance cost, we only call the label refresh when its necessary
450
+ if (gapRatio !== module.get.gapRatio()) {
451
+ module.setup.labels();
452
+ gapRatio = module.get.gapRatio();
453
+ }
454
+ },
455
+ },
456
+
457
+ resync: function () {
458
+ module.verbose('Resyncing thumb position based on value');
459
+ if (module.is.range()) {
460
+ module.update.position(module.secondThumbVal, $secondThumb);
461
+ }
462
+ module.update.position(module.thumbVal, $thumb);
463
+ module.setup.labels();
464
+ },
465
+ takeStep: function (multiplier) {
466
+ if (!multiplier) {
467
+ multiplier = 1;
468
+ }
469
+ var
470
+ step = module.get.step(),
471
+ currValue = module.get.currentThumbValue()
472
+ ;
473
+ module.verbose('Taking a step');
474
+ if (step > 0) {
475
+ module.set.value(currValue + step * multiplier);
476
+ } else if (step === 0) {
477
+ var
478
+ precision = module.get.precision(),
479
+ newValue = currValue + (multiplier / precision)
480
+ ;
481
+ module.set.value(Math.round(newValue * precision) / precision);
482
+ }
483
+ },
484
+
485
+ backStep: function (multiplier) {
486
+ if (!multiplier) {
487
+ multiplier = 1;
488
+ }
489
+ var
490
+ step = module.get.step(),
491
+ currValue = module.get.currentThumbValue()
492
+ ;
493
+ module.verbose('Going back a step');
494
+ if (step > 0) {
495
+ module.set.value(currValue - step * multiplier);
496
+ } else if (step === 0) {
497
+ var
498
+ precision = module.get.precision(),
499
+ newValue = currValue - (multiplier / precision)
500
+ ;
501
+ module.set.value(Math.round(newValue * precision) / precision);
502
+ }
503
+ },
504
+
505
+ is: {
506
+ range: function () {
507
+ return $module.hasClass(settings.className.range);
508
+ },
509
+ hover: function () {
510
+ return isHover;
511
+ },
512
+ focused: function () {
513
+ return $module.is(':focus');
514
+ },
515
+ disabled: function () {
516
+ return $module.hasClass(settings.className.disabled);
517
+ },
518
+ labeled: function () {
519
+ return $module.hasClass(settings.className.labeled);
520
+ },
521
+ reversed: function () {
522
+ return $module.hasClass(settings.className.reversed);
523
+ },
524
+ vertical: function () {
525
+ return $module.hasClass(settings.className.vertical);
526
+ },
527
+ smooth: function () {
528
+ return settings.smooth || $module.hasClass(settings.className.smooth);
529
+ },
530
+ },
531
+
532
+ get: {
533
+ trackOffset: function () {
534
+ if (module.is.vertical()) {
535
+ return $track.offset().top;
536
+ }
537
+
538
+ return $track.offset().left;
539
+ },
540
+ trackLength: function () {
541
+ if (module.is.vertical()) {
542
+ return $track.height();
543
+ }
544
+
545
+ return $track.width();
546
+ },
547
+ trackLeft: function () {
548
+ if (module.is.vertical()) {
549
+ return $track.position().top;
550
+ }
551
+
552
+ return $track.position().left;
553
+ },
554
+ trackStartPos: function () {
555
+ return module.is.reversed() ? module.get.trackLeft() + module.get.trackLength() : module.get.trackLeft();
556
+ },
557
+ trackEndPos: function () {
558
+ return module.is.reversed() ? module.get.trackLeft() : module.get.trackLeft() + module.get.trackLength();
559
+ },
560
+ trackStartMargin: function () {
561
+ var margin;
562
+ if (module.is.vertical()) {
563
+ margin = module.is.reversed() ? $module.css('padding-bottom') : $module.css('padding-top');
564
+ } else {
565
+ margin = module.is.reversed() ? $module.css('padding-right') : $module.css('padding-left');
566
+ }
567
+
568
+ return margin || '0px';
569
+ },
570
+ trackEndMargin: function () {
571
+ var margin;
572
+ if (module.is.vertical()) {
573
+ margin = module.is.reversed() ? $module.css('padding-top') : $module.css('padding-bottom');
574
+ } else {
575
+ margin = module.is.reversed() ? $module.css('padding-left') : $module.css('padding-right');
576
+ }
577
+
578
+ return margin || '0px';
579
+ },
580
+ precision: function () {
581
+ var
582
+ decimalPlaces,
583
+ step = module.get.step()
584
+ ;
585
+ if (step !== 0) {
586
+ var split = String(step).split('.');
587
+ decimalPlaces = split.length === 2 ? split[1].length : 0;
588
+ } else {
589
+ decimalPlaces = settings.decimalPlaces;
590
+ }
591
+ var precision = Math.pow(10, decimalPlaces);
592
+ module.debug('Precision determined', precision);
593
+
594
+ return precision;
595
+ },
596
+ min: function () {
597
+ return settings.min;
598
+ },
599
+ max: function () {
600
+ var
601
+ step = module.get.step(),
602
+ min = module.get.min(),
603
+ quotient = step === 0 ? 0 : Math.floor((settings.max - min) / step),
604
+ remainder = step === 0 ? 0 : (settings.max - min) % step
605
+ ;
606
+
607
+ return remainder === 0 ? settings.max : min + quotient * step;
608
+ },
609
+ step: function () {
610
+ return settings.step;
611
+ },
612
+ numLabels: function () {
613
+ var value = Math.round((module.get.max() - module.get.min()) / (module.get.step() === 0 ? 1 : module.get.step()));
614
+ module.debug('Determined that there should be ' + value + ' labels');
615
+
616
+ return value;
617
+ },
618
+ labelType: function () {
619
+ return settings.labelType;
620
+ },
621
+ label: function (value) {
622
+ if (interpretLabel) {
623
+ return interpretLabel(value);
624
+ }
625
+
626
+ switch (settings.labelType) {
627
+ case settings.labelTypes.number: {
628
+ return Math.round(((value * (module.get.step() === 0 ? 1 : module.get.step())) + module.get.min()) * precision) / precision;
629
+ }
630
+ case settings.labelTypes.letter: {
631
+ return alphabet[value % 26];
632
+ }
633
+ default: {
634
+ return value;
635
+ }
636
+ }
637
+ },
638
+ value: function () {
639
+ return value;
640
+ },
641
+ currentThumbValue: function () {
642
+ return $currThumb !== undefined && $currThumb.hasClass('second') ? module.secondThumbVal : module.thumbVal;
643
+ },
644
+ thumbValue: function (which) {
645
+ switch (which) {
646
+ case 'second': {
647
+ if (module.is.range()) {
648
+ return module.secondThumbVal;
649
+ }
650
+
651
+ module.error(error.notrange);
652
+
653
+ break;
654
+ }
655
+ default: {
656
+ return module.thumbVal;
657
+ }
658
+ }
659
+ },
660
+ multiplier: function () {
661
+ return settings.pageMultiplier;
662
+ },
663
+ thumbPosition: function (which) {
664
+ switch (which) {
665
+ case 'second': {
666
+ if (module.is.range()) {
667
+ return secondPos;
668
+ }
669
+
670
+ module.error(error.notrange);
671
+
672
+ break;
673
+ }
674
+ default: {
675
+ return position;
676
+ }
677
+ }
678
+ },
679
+ gapRatio: function () {
680
+ var gapRatio = 1;
681
+
682
+ if (settings.autoAdjustLabels) {
683
+ var
684
+ numLabels = module.get.numLabels(),
685
+ trackLength = module.get.trackLength(),
686
+ gapCounter = 1
687
+ ;
688
+
689
+ // While the distance between two labels is too short,
690
+ // we divide the number of labels at each iteration
691
+ // and apply only if the modulo of the operation is an odd number.
692
+ if (trackLength > 0) {
693
+ while ((trackLength / numLabels) * gapCounter < settings.labelDistance) {
694
+ if (!(numLabels % gapCounter)) {
695
+ gapRatio = gapCounter;
696
+ }
697
+ gapCounter += 1;
698
+ }
699
+ }
700
+ }
701
+
702
+ return gapRatio;
703
+ },
704
+ },
705
+
706
+ determine: {
707
+ pos: function (pagePos) {
708
+ return module.is.reversed()
709
+ ? module.get.trackStartPos() - pagePos + module.get.trackOffset()
710
+ : pagePos - module.get.trackOffset() - module.get.trackStartPos();
711
+ },
712
+ closestThumb: function (eventPos) {
713
+ var
714
+ thumbPos = parseFloat(module.determine.thumbPos($thumb)),
715
+ thumbDelta = Math.abs(eventPos - thumbPos),
716
+ secondThumbPos = parseFloat(module.determine.thumbPos($secondThumb)),
717
+ secondThumbDelta = Math.abs(eventPos - secondThumbPos)
718
+ ;
719
+ if (thumbDelta === secondThumbDelta && module.get.thumbValue() === module.get.min()) {
720
+ return $secondThumb;
721
+ }
722
+
723
+ return thumbDelta <= secondThumbDelta ? $thumb : $secondThumb;
724
+ },
725
+ closestThumbPos: function (eventPos) {
726
+ var
727
+ thumbPos = parseFloat(module.determine.thumbPos($thumb)),
728
+ thumbDelta = Math.abs(eventPos - thumbPos),
729
+ secondThumbPos = parseFloat(module.determine.thumbPos($secondThumb)),
730
+ secondThumbDelta = Math.abs(eventPos - secondThumbPos)
731
+ ;
732
+
733
+ return thumbDelta <= secondThumbDelta ? thumbPos : secondThumbPos;
734
+ },
735
+ thumbPos: function ($element) {
736
+ var
737
+ pos = module.is.vertical()
738
+ ? (module.is.reversed() ? $element.css('bottom') : $element.css('top'))
739
+ : (module.is.reversed() ? $element.css('right') : $element.css('left'))
740
+ ;
741
+
742
+ return pos;
743
+ },
744
+ positionFromValue: function (val) {
745
+ var
746
+ min = module.get.min(),
747
+ max = module.get.max(),
748
+ value = val > max
749
+ ? max
750
+ : (val < min ? min : val),
751
+ trackLength = module.get.trackLength(),
752
+ ratio = (value - min) / (max - min),
753
+ position = Math.round(ratio * trackLength)
754
+ ;
755
+ module.verbose('Determined position: ' + position + ' from value: ' + value);
756
+
757
+ return position;
758
+ },
759
+ positionFromRatio: function (ratio) {
760
+ var
761
+ trackLength = module.get.trackLength(),
762
+ step = module.get.step(),
763
+ position = Math.round(ratio * trackLength),
764
+ adjustedPos = step === 0 ? position : Math.round(position / step) * step
765
+ ;
766
+
767
+ return adjustedPos;
768
+ },
769
+ valueFromEvent: function (event) {
770
+ var
771
+ eventPos = module.determine.eventPos(event),
772
+ newPos = module.determine.pos(eventPos),
773
+ value
774
+ ;
775
+ if (eventPos < module.get.trackOffset()) {
776
+ value = module.is.reversed() ? module.get.max() : module.get.min();
777
+ } else if (eventPos > module.get.trackOffset() + module.get.trackLength()) {
778
+ value = module.is.reversed() ? module.get.min() : module.get.max();
779
+ } else {
780
+ value = module.determine.value(newPos);
781
+ }
782
+
783
+ return value;
784
+ },
785
+ smoothValueFromEvent: function (event) {
786
+ var
787
+ min = module.get.min(),
788
+ max = module.get.max(),
789
+ trackLength = module.get.trackLength(),
790
+ eventPos = module.determine.eventPos(event),
791
+ newPos = eventPos - module.get.trackOffset(),
792
+ ratio,
793
+ value
794
+ ;
795
+ newPos = newPos < 0
796
+ ? 0
797
+ : (newPos > trackLength ? trackLength : newPos);
798
+ ratio = newPos / trackLength;
799
+ if (module.is.reversed()) {
800
+ ratio = 1 - ratio;
801
+ }
802
+ value = ratio * (max - min) + min;
803
+
804
+ return value;
805
+ },
806
+ eventPos: function (event) {
807
+ if (event.type === 'touchmove' || event.type === 'touchend') {
808
+ var
809
+ touchEvent = event.touches ? event : event.originalEvent,
810
+ touch = touchEvent.changedTouches[0]; // fall back to first touch if correct touch not found
811
+ for (var i = 0; i < touchEvent.touches.length; i++) {
812
+ if (touchEvent.touches[i].identifier === touchIdentifier) {
813
+ touch = touchEvent.touches[i];
814
+
815
+ break;
816
+ }
817
+ }
818
+ var
819
+ touchY = touch.pageY,
820
+ touchX = touch.pageX
821
+ ;
822
+
823
+ return module.is.vertical() ? touchY : touchX;
824
+ }
825
+ var
826
+ clickY = event.pageY || event.originalEvent.pageY,
827
+ clickX = event.pageX || event.originalEvent.pageX
828
+ ;
829
+
830
+ return module.is.vertical() ? clickY : clickX;
831
+ },
832
+ value: function (position) {
833
+ var
834
+ startPos = module.is.reversed() ? module.get.trackEndPos() : module.get.trackStartPos(),
835
+ endPos = module.is.reversed() ? module.get.trackStartPos() : module.get.trackEndPos(),
836
+ ratio = (position - startPos) / (endPos - startPos),
837
+ range = module.get.max() - module.get.min(),
838
+ step = module.get.step(),
839
+ value = ratio * range,
840
+ difference = step === 0 ? value : Math.round(value / step) * step
841
+ ;
842
+ module.verbose('Determined value based upon position: ' + position + ' as: ' + value);
843
+ if (value !== difference) {
844
+ module.verbose('Rounding value to closest step: ' + difference);
845
+ }
846
+ // Use precision to avoid ugly Javascript floating point rounding issues
847
+ // (like 35 * .01 = 0.35000000000000003)
848
+ module.verbose('Cutting off additional decimal places');
849
+
850
+ return Math.round((difference + module.get.min()) * precision) / precision;
851
+ },
852
+ keyMovement: function (event) {
853
+ var
854
+ key = event.which,
855
+ downArrow = module.is.vertical()
856
+ ? (module.is.reversed() ? keys.downArrow : keys.upArrow)
857
+ : keys.downArrow,
858
+ upArrow = module.is.vertical()
859
+ ? (module.is.reversed() ? keys.upArrow : keys.downArrow)
860
+ : keys.upArrow,
861
+ leftArrow = !module.is.vertical()
862
+ ? (module.is.reversed() ? keys.rightArrow : keys.leftArrow)
863
+ : keys.leftArrow,
864
+ rightArrow = !module.is.vertical()
865
+ ? (module.is.reversed() ? keys.leftArrow : keys.rightArrow)
866
+ : keys.rightArrow
867
+ ;
868
+ if (key === downArrow || key === leftArrow) {
869
+ return SINGLE_BACKSTEP;
870
+ }
871
+ if (key === upArrow || key === rightArrow) {
872
+ return SINGLE_STEP;
873
+ }
874
+ if (key === keys.pageDown) {
875
+ return BIG_BACKSTEP;
876
+ }
877
+ if (key === keys.pageUp) {
878
+ return BIG_STEP;
879
+ }
880
+
881
+ return NO_STEP;
882
+ },
883
+ },
884
+
885
+ handleNewValuePosition: function (val) {
886
+ var
887
+ min = module.get.min(),
888
+ max = module.get.max(),
889
+ newPos
890
+ ;
891
+ if (val <= min) {
892
+ val = min;
893
+ } else if (val >= max) {
894
+ val = max;
895
+ }
896
+ newPos = module.determine.positionFromValue(val);
897
+
898
+ return newPos;
899
+ },
900
+
901
+ set: {
902
+ value: function (newValue, fireChange) {
903
+ fireChange = fireChange !== false;
904
+ var toReset = previousValue === undefined;
905
+ previousValue = previousValue === undefined ? module.get.value() : previousValue;
906
+ module.update.value(newValue, function (value, thumbVal, secondThumbVal) {
907
+ if ((!initialLoad || settings.fireOnInit) && fireChange) {
908
+ if (newValue !== previousValue) {
909
+ settings.onChange.call(element, value, thumbVal, secondThumbVal);
910
+ }
911
+ settings.onMove.call(element, value, thumbVal, secondThumbVal);
912
+ }
913
+ if (toReset) {
914
+ previousValue = undefined;
915
+ }
916
+ });
917
+ },
918
+ rangeValue: function (first, second, fireChange) {
919
+ fireChange = fireChange !== false;
920
+ if (module.is.range()) {
921
+ var
922
+ min = module.get.min(),
923
+ max = module.get.max(),
924
+ toReset = previousValue === undefined
925
+ ;
926
+ previousValue = previousValue === undefined ? module.get.value() : previousValue;
927
+ if (first <= min) {
928
+ first = min;
929
+ } else if (first >= max) {
930
+ first = max;
931
+ }
932
+ if (second <= min) {
933
+ second = min;
934
+ } else if (second >= max) {
935
+ second = max;
936
+ }
937
+ module.thumbVal = first;
938
+ module.secondThumbVal = second;
939
+ value = Math.abs(module.thumbVal - module.secondThumbVal);
940
+ module.update.position(module.thumbVal, $thumb);
941
+ module.update.position(module.secondThumbVal, $secondThumb);
942
+ if ((!initialLoad || settings.fireOnInit) && fireChange) {
943
+ if (value !== previousValue) {
944
+ settings.onChange.call(element, value, module.thumbVal, module.secondThumbVal);
945
+ }
946
+ settings.onMove.call(element, value, module.thumbVal, module.secondThumbVal);
947
+ }
948
+ if (toReset) {
949
+ previousValue = undefined;
950
+ }
951
+ } else {
952
+ module.error(error.notrange);
953
+ }
954
+ },
955
+ position: function (position, which) {
956
+ var thumbVal = module.determine.value(position);
957
+ if (which === 'second') {
958
+ module.secondThumbVal = thumbVal;
959
+ module.update.position(thumbVal, $secondThumb);
960
+ } else {
961
+ module.thumbVal = thumbVal;
962
+ module.update.position(thumbVal, $thumb);
963
+ }
964
+ value = Math.abs(module.thumbVal - (module.secondThumbVal || 0));
965
+ module.set.value(value);
966
+ },
967
+ },
968
+
969
+ update: {
970
+ value: function (newValue, callback) {
971
+ var
972
+ min = module.get.min(),
973
+ max = module.get.max()
974
+ ;
975
+ if (newValue <= min) {
976
+ newValue = min;
977
+ } else if (newValue >= max) {
978
+ newValue = max;
979
+ }
980
+ if (!module.is.range()) {
981
+ value = newValue;
982
+ module.thumbVal = value;
983
+ } else {
984
+ if ($currThumb === undefined) {
985
+ $currThumb = newValue <= module.get.currentThumbValue() ? $thumb : $secondThumb;
986
+ }
987
+ if (!$currThumb.hasClass('second')) {
988
+ if (settings.preventCrossover && module.is.range()) {
989
+ newValue = Math.min(module.secondThumbVal, newValue);
990
+ }
991
+ module.thumbVal = newValue;
992
+ } else {
993
+ if (settings.preventCrossover && module.is.range()) {
994
+ newValue = Math.max(module.thumbVal, newValue);
995
+ }
996
+ module.secondThumbVal = newValue;
997
+ }
998
+ value = Math.abs(module.thumbVal - module.secondThumbVal);
999
+ }
1000
+ module.update.position(newValue);
1001
+ module.debug('Setting slider value to ' + value);
1002
+ if (typeof callback === 'function') {
1003
+ callback(value, module.thumbVal, module.secondThumbVal);
1004
+ }
1005
+ },
1006
+ position: function (newValue, $element) {
1007
+ var
1008
+ newPos = module.handleNewValuePosition(newValue),
1009
+ $targetThumb = $element || $currThumb,
1010
+ thumbVal = module.thumbVal || module.get.min(),
1011
+ secondThumbVal = module.secondThumbVal || module.get.min()
1012
+ ;
1013
+ if (module.is.range()) {
1014
+ if (!$targetThumb.hasClass('second')) {
1015
+ position = newPos;
1016
+ thumbVal = newValue;
1017
+ } else {
1018
+ secondPos = newPos;
1019
+ secondThumbVal = newValue;
1020
+ }
1021
+ } else {
1022
+ position = newPos;
1023
+ thumbVal = newValue;
1024
+ }
1025
+ var
1026
+ trackPosValue,
1027
+ thumbPosValue,
1028
+ min = module.get.min(),
1029
+ max = module.get.max(),
1030
+ thumbPosPercent = 100 * ((newValue - min) / (max - min)),
1031
+ trackStartPosPercent = 100 * ((Math.min(thumbVal, secondThumbVal) - min) / (max - min)),
1032
+ trackEndPosPercent = 100 * (1 - (Math.max(thumbVal, secondThumbVal) - min) / (max - min))
1033
+ ;
1034
+ if (module.is.vertical()) {
1035
+ if (module.is.reversed()) {
1036
+ thumbPosValue = { bottom: 'calc(' + thumbPosPercent + '% - ' + offset + 'px)', top: 'auto' };
1037
+ trackPosValue = { bottom: trackStartPosPercent + '%', top: trackEndPosPercent + '%' };
1038
+ } else {
1039
+ thumbPosValue = { top: 'calc(' + thumbPosPercent + '% - ' + offset + 'px)', bottom: 'auto' };
1040
+ trackPosValue = { top: trackStartPosPercent + '%', bottom: trackEndPosPercent + '%' };
1041
+ }
1042
+ } else {
1043
+ if (module.is.reversed()) {
1044
+ thumbPosValue = { right: 'calc(' + thumbPosPercent + '% - ' + offset + 'px)', left: 'auto' };
1045
+ trackPosValue = { right: trackStartPosPercent + '%', left: trackEndPosPercent + '%' };
1046
+ } else {
1047
+ thumbPosValue = { left: 'calc(' + thumbPosPercent + '% - ' + offset + 'px)', right: 'auto' };
1048
+ trackPosValue = { left: trackStartPosPercent + '%', right: trackEndPosPercent + '%' };
1049
+ }
1050
+ }
1051
+ $targetThumb.css(thumbPosValue);
1052
+ $trackFill.css(trackPosValue);
1053
+ module.debug('Setting slider position to ' + newPos);
1054
+ },
1055
+ labelPosition: function (ratio, $label) {
1056
+ var
1057
+ startMargin = module.get.trackStartMargin(),
1058
+ endMargin = module.get.trackEndMargin(),
1059
+ posDir = module.is.vertical()
1060
+ ? (module.is.reversed() ? 'bottom' : 'top')
1061
+ : (module.is.reversed() ? 'right' : 'left'),
1062
+ startMarginMod = module.is.reversed() && !module.is.vertical()
1063
+ ? ' - '
1064
+ : ' + '
1065
+ ;
1066
+ var position = '(100% - ' + startMargin + ' - ' + endMargin + ') * ' + ratio;
1067
+ $label.css(posDir, 'calc(' + position + startMarginMod + startMargin + ')');
1068
+ },
1069
+ },
1070
+
1071
+ goto: {
1072
+ max: function () {
1073
+ module.set.value(module.get.max());
1074
+ },
1075
+ min: function () {
1076
+ module.set.value(module.get.min());
1077
+ },
1078
+ },
1079
+
1080
+ read: {
1081
+ metadata: function () {
1082
+ var
1083
+ data = {
1084
+ thumbVal: $module.data(metadata.thumbVal),
1085
+ secondThumbVal: $module.data(metadata.secondThumbVal),
1086
+ }
1087
+ ;
1088
+ if (data.thumbVal) {
1089
+ if (module.is.range() && data.secondThumbVal) {
1090
+ module.debug('Current value set from metadata', data.thumbVal, data.secondThumbVal);
1091
+ module.set.rangeValue(data.thumbVal, data.secondThumbVal);
1092
+ } else {
1093
+ module.debug('Current value set from metadata', data.thumbVal);
1094
+ module.set.value(data.thumbVal);
1095
+ }
1096
+ }
1097
+ },
1098
+ settings: function () {
1099
+ if (settings.start !== false) {
1100
+ if (module.is.range()) {
1101
+ module.debug('Start position set from settings', settings.start, settings.end);
1102
+ module.set.rangeValue(settings.start, settings.end);
1103
+ } else {
1104
+ module.debug('Start position set from settings', settings.start);
1105
+ module.set.value(settings.start);
1106
+ }
1107
+ }
1108
+ },
1109
+ },
1110
+
1111
+ setting: function (name, value) {
1112
+ module.debug('Changing setting', name, value);
1113
+ if ($.isPlainObject(name)) {
1114
+ $.extend(true, settings, name);
1115
+ } else if (value !== undefined) {
1116
+ if ($.isPlainObject(settings[name])) {
1117
+ $.extend(true, settings[name], value);
1118
+ } else {
1119
+ settings[name] = value;
1120
+ }
1121
+ } else {
1122
+ return settings[name];
1123
+ }
1124
+ },
1125
+ internal: function (name, value) {
1126
+ if ($.isPlainObject(name)) {
1127
+ $.extend(true, module, name);
1128
+ } else if (value !== undefined) {
1129
+ module[name] = value;
1130
+ } else {
1131
+ return module[name];
1132
+ }
1133
+ },
1134
+ debug: function () {
1135
+ if (!settings.silent && settings.debug) {
1136
+ if (settings.performance) {
1137
+ module.performance.log(arguments);
1138
+ } else {
1139
+ module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
1140
+ module.debug.apply(console, arguments);
1141
+ }
1142
+ }
1143
+ },
1144
+ verbose: function () {
1145
+ if (!settings.silent && settings.verbose && settings.debug) {
1146
+ if (settings.performance) {
1147
+ module.performance.log(arguments);
1148
+ } else {
1149
+ module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
1150
+ module.verbose.apply(console, arguments);
1151
+ }
1152
+ }
1153
+ },
1154
+ error: function () {
1155
+ if (!settings.silent) {
1156
+ module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
1157
+ module.error.apply(console, arguments);
1158
+ }
1159
+ },
1160
+
1161
+ performance: {
1162
+ log: function (message) {
1163
+ var
1164
+ currentTime,
1165
+ executionTime,
1166
+ previousTime
1167
+ ;
1168
+ if (settings.performance) {
1169
+ currentTime = Date.now();
1170
+ previousTime = time || currentTime;
1171
+ executionTime = currentTime - previousTime;
1172
+ time = currentTime;
1173
+ performance.push({
1174
+ Name: message[0],
1175
+ Arguments: [].slice.call(message, 1) || '',
1176
+ Element: element,
1177
+ 'Execution Time': executionTime,
1178
+ });
1179
+ }
1180
+ clearTimeout(module.performance.timer);
1181
+ module.performance.timer = setTimeout(module.performance.display, 500);
1182
+ },
1183
+ display: function () {
1184
+ var
1185
+ title = settings.name + ':',
1186
+ totalTime = 0
1187
+ ;
1188
+ time = false;
1189
+ clearTimeout(module.performance.timer);
1190
+ $.each(performance, function (index, data) {
1191
+ totalTime += data['Execution Time'];
1192
+ });
1193
+ title += ' ' + totalTime + 'ms';
1194
+ if (moduleSelector) {
1195
+ title += ' \'' + moduleSelector + '\'';
1196
+ }
1197
+ if (performance.length > 0) {
1198
+ console.groupCollapsed(title);
1199
+ if (console.table) {
1200
+ console.table(performance);
1201
+ } else {
1202
+ $.each(performance, function (index, data) {
1203
+ console.log(data.Name + ': ' + data['Execution Time'] + 'ms');
1204
+ });
1205
+ }
1206
+ console.groupEnd();
1207
+ }
1208
+ performance = [];
1209
+ },
1210
+ },
1211
+
1212
+ invoke: function (query, passedArguments, context) {
1213
+ var
1214
+ object = instance,
1215
+ maxDepth,
1216
+ found,
1217
+ response
1218
+ ;
1219
+ passedArguments = passedArguments || queryArguments;
1220
+ context = context || element;
1221
+ if (typeof query === 'string' && object !== undefined) {
1222
+ query = query.split(/[ .]/);
1223
+ maxDepth = query.length - 1;
1224
+ $.each(query, function (depth, value) {
1225
+ var camelCaseValue = depth !== maxDepth
1226
+ ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
1227
+ : query
1228
+ ;
1229
+ if ($.isPlainObject(object[camelCaseValue]) && (depth !== maxDepth)) {
1230
+ object = object[camelCaseValue];
1231
+ } else if (object[camelCaseValue] !== undefined) {
1232
+ found = object[camelCaseValue];
1233
+
1234
+ return false;
1235
+ } else if ($.isPlainObject(object[value]) && (depth !== maxDepth)) {
1236
+ object = object[value];
1237
+ } else if (object[value] !== undefined) {
1238
+ found = object[value];
1239
+
1240
+ return false;
1241
+ } else {
1242
+ module.error(error.method, query);
1243
+
1244
+ return false;
1245
+ }
1246
+ });
1247
+ }
1248
+ if (isFunction(found)) {
1249
+ response = found.apply(context, passedArguments);
1250
+ } else if (found !== undefined) {
1251
+ response = found;
1252
+ }
1253
+ if (Array.isArray(returnedValue)) {
1254
+ returnedValue.push(response);
1255
+ } else if (returnedValue !== undefined) {
1256
+ returnedValue = [returnedValue, response];
1257
+ } else if (response !== undefined) {
1258
+ returnedValue = response;
1259
+ }
1260
+
1261
+ return found;
1262
+ },
1263
+ };
1264
+
1265
+ if (methodInvoked) {
1266
+ if (instance === undefined) {
1267
+ module.initialize();
364
1268
  }
365
- thumbVal = value;
366
- } else {
367
- if(settings.preventCrossover && module.is.range()) {
368
- value = Math.max(thumbVal, value);
369
- thumbSmoothVal = Math.max(thumbVal, thumbSmoothVal);
370
- }
371
- secondThumbVal = value;
372
- }
373
- value = Math.abs(thumbVal - (secondThumbVal || 0));
374
- module.update.position(thumbSmoothVal);
375
- settings.onMove.call(element, value, thumbVal, secondThumbVal);
1269
+ module.invoke(query);
376
1270
  } else {
377
- module.update.value(value, function(value, thumbVal, secondThumbVal) {
378
- settings.onMove.call(element, value, thumbVal, secondThumbVal);
379
- });
380
- }
381
- },
382
- up: function(event) {
383
- event.preventDefault();
384
- var value = module.determine.valueFromEvent(event);
385
- module.set.value(value);
386
- module.unbind.slidingEvents();
387
- if (previousValue !== undefined) {
388
- previousValue = undefined;
389
- }
390
- },
391
- keydown: function(event, first) {
392
- if(settings.preventCrossover && module.is.range() && module.thumbVal === module.secondThumbVal) {
393
- $currThumb = undefined;
394
- }
395
- if(module.is.focused()) {
396
- $(document).trigger(event);
397
- }
398
- if(first || module.is.focused()) {
399
- var step = module.determine.keyMovement(event);
400
- if(step != NO_STEP) {
401
- event.preventDefault();
402
- switch(step) {
403
- case SINGLE_STEP:
404
- module.takeStep();
405
- break;
406
- case BIG_STEP:
407
- module.takeStep(module.get.multiplier());
408
- break;
409
- case SINGLE_BACKSTEP:
410
- module.backStep();
411
- break;
412
- case BIG_BACKSTEP:
413
- module.backStep(module.get.multiplier());
414
- break;
1271
+ if (instance !== undefined) {
1272
+ instance.invoke('destroy');
415
1273
  }
416
- }
417
- }
418
- },
419
- activateFocus: function(event) {
420
- if(!module.is.focused() && module.is.hover() && module.determine.keyMovement(event) != NO_STEP) {
421
- event.preventDefault();
422
- module.event.keydown(event, true);
423
- $module.focus();
1274
+ module.initialize();
424
1275
  }
425
- },
426
- resize: function(_event) {
427
- // To avoid a useless performance cost, we only call the label refresh when its necessary
428
- if (gapRatio != module.get.gapRatio()) {
429
- module.setup.labels();
430
- gapRatio = module.get.gapRatio();
431
- }
432
- }
433
- },
1276
+ });
434
1277
 
435
- resync: function() {
436
- module.verbose('Resyncing thumb position based on value');
437
- if(module.is.range()) {
438
- module.update.position(module.secondThumbVal, $secondThumb);
439
- }
440
- module.update.position(module.thumbVal, $thumb);
441
- module.setup.labels();
442
- },
443
- takeStep: function(multiplier) {
444
- var
445
- multiplier = multiplier != undefined ? multiplier : 1,
446
- step = module.get.step(),
447
- currValue = module.get.currentThumbValue()
448
- ;
449
- module.verbose('Taking a step');
450
- if(step > 0) {
451
- module.set.value(currValue + step * multiplier);
452
- } else if (step == 0){
453
- var
454
- precision = module.get.precision(),
455
- newValue = currValue + (multiplier/precision)
456
- ;
457
- module.set.value(Math.round(newValue * precision) / precision);
458
- }
459
- },
1278
+ return returnedValue !== undefined
1279
+ ? returnedValue
1280
+ : this;
1281
+ };
460
1282
 
461
- backStep: function(multiplier) {
462
- var
463
- multiplier = multiplier != undefined ? multiplier : 1,
464
- step = module.get.step(),
465
- currValue = module.get.currentThumbValue()
466
- ;
467
- module.verbose('Going back a step');
468
- if(step > 0) {
469
- module.set.value(currValue - step * multiplier);
470
- } else if (step == 0) {
471
- var
472
- precision = module.get.precision(),
473
- newValue = currValue - (multiplier/precision)
474
- ;
475
- module.set.value(Math.round(newValue * precision) / precision);
476
- }
477
- },
1283
+ $.fn.slider.settings = {
478
1284
 
479
- is: {
480
- range: function() {
481
- return $module.hasClass(settings.className.range);
482
- },
483
- hover: function() {
484
- return isHover;
485
- },
486
- focused: function() {
487
- return $module.is(':focus');
488
- },
489
- disabled: function() {
490
- return $module.hasClass(settings.className.disabled);
491
- },
492
- labeled: function() {
493
- return $module.hasClass(settings.className.labeled);
494
- },
495
- reversed: function() {
496
- return $module.hasClass(settings.className.reversed);
497
- },
498
- vertical: function() {
499
- return $module.hasClass(settings.className.vertical);
500
- },
501
- smooth: function() {
502
- return settings.smooth || $module.hasClass(settings.className.smooth);
503
- },
504
- touch: function() {
505
- return isTouch;
506
- }
507
- },
1285
+ silent: false,
1286
+ debug: false,
1287
+ verbose: false,
1288
+ performance: true,
508
1289
 
509
- get: {
510
- trackOffset: function() {
511
- if (module.is.vertical()) {
512
- return $track.offset().top;
513
- } else {
514
- return $track.offset().left;
515
- }
516
- },
517
- trackLength: function() {
518
- if (module.is.vertical()) {
519
- return $track.height();
520
- } else {
521
- return $track.width();
522
- }
523
- },
524
- trackLeft: function() {
525
- if (module.is.vertical()) {
526
- return $track.position().top;
527
- } else {
528
- return $track.position().left;
529
- }
530
- },
531
- trackStartPos: function() {
532
- return module.is.reversed() ? module.get.trackLeft() + module.get.trackLength() : module.get.trackLeft();
533
- },
534
- trackEndPos: function() {
535
- return module.is.reversed() ? module.get.trackLeft() : module.get.trackLeft() + module.get.trackLength();
536
- },
537
- trackStartMargin: function () {
538
- var margin;
539
- if (module.is.vertical()) {
540
- margin = module.is.reversed() ? $module.css('padding-bottom') : $module.css('padding-top');
541
- } else {
542
- margin = module.is.reversed() ? $module.css('padding-right') : $module.css('padding-left');
543
- }
544
- return margin || '0px';
545
- },
546
- trackEndMargin: function () {
547
- var margin;
548
- if (module.is.vertical()) {
549
- margin = module.is.reversed() ? $module.css('padding-top') : $module.css('padding-bottom');
550
- } else {
551
- margin = module.is.reversed() ? $module.css('padding-left') : $module.css('padding-right');
552
- }
553
- return margin || '0px';
554
- },
555
- precision: function() {
556
- var
557
- decimalPlaces,
558
- step = module.get.step()
559
- ;
560
- if(step != 0) {
561
- var split = String(step).split('.');
562
- if(split.length == 2) {
563
- decimalPlaces = split[1].length;
564
- } else {
565
- decimalPlaces = 0;
566
- }
567
- } else {
568
- decimalPlaces = settings.decimalPlaces;
569
- }
570
- var precision = Math.pow(10, decimalPlaces);
571
- module.debug('Precision determined', precision);
572
- return precision;
573
- },
574
- min: function() {
575
- return settings.min;
576
- },
577
- max: function() {
578
- var step = module.get.step(),
579
- min = module.get.min(),
580
- quotient = step === 0 ? 0 : Math.floor((settings.max - min) / step),
581
- remainder = step === 0 ? 0 : (settings.max - min) % step;
582
- return remainder === 0 ? settings.max : min + quotient * step;
583
- },
584
- step: function() {
585
- return settings.step;
586
- },
587
- numLabels: function() {
588
- var value = Math.round((module.get.max() - module.get.min()) / (module.get.step() === 0 ? 1 : module.get.step()));
589
- module.debug('Determined that there should be ' + value + ' labels');
590
- return value;
591
- },
592
- labelType: function() {
593
- return settings.labelType;
594
- },
595
- label: function(value) {
596
- if(interpretLabel) {
597
- return interpretLabel(value);
598
- }
1290
+ name: 'Slider',
1291
+ namespace: 'slider',
599
1292
 
600
- switch (settings.labelType) {
601
- case settings.labelTypes.number:
602
- return Math.round(((value * (module.get.step() === 0 ? 1 : module.get.step())) + module.get.min()) * precision ) / precision;
603
- case settings.labelTypes.letter:
604
- return alphabet[(value) % 26];
605
- default:
606
- return value;
607
- }
608
- },
609
- value: function() {
610
- return value;
611
- },
612
- currentThumbValue: function() {
613
- return $currThumb !== undefined && $currThumb.hasClass('second') ? module.secondThumbVal : module.thumbVal;
614
- },
615
- thumbValue: function(which) {
616
- switch(which) {
617
- case 'second':
618
- if(module.is.range()) {
619
- return module.secondThumbVal;
620
- }
621
- else {
622
- module.error(error.notrange);
623
- break;
624
- }
625
- case 'first':
626
- default:
627
- return module.thumbVal;
628
- }
629
- },
630
- multiplier: function() {
631
- return settings.pageMultiplier;
632
- },
633
- thumbPosition: function(which) {
634
- switch(which) {
635
- case 'second':
636
- if(module.is.range()) {
637
- return secondPos;
638
- }
639
- else {
640
- module.error(error.notrange);
641
- break;
642
- }
643
- case 'first':
644
- default:
645
- return position;
646
- }
647
- },
648
- gapRatio: function() {
649
- var gapRatio = 1;
650
-
651
- if( settings.autoAdjustLabels ) {
652
- var
653
- numLabels = module.get.numLabels(),
654
- trackLength = module.get.trackLength(),
655
- gapCounter = 1
656
- ;
657
-
658
- // While the distance between two labels is too short,
659
- // we divide the number of labels at each iteration
660
- // and apply only if the modulo of the operation is an odd number.
661
- if(trackLength>0){
662
- while ((trackLength / numLabels) * gapCounter < settings.labelDistance) {
663
- if( !(numLabels % gapCounter) ) {
664
- gapRatio = gapCounter;
665
- }
666
- gapCounter += 1;
667
- }
668
- }
669
- }
670
- return gapRatio;
671
- }
672
- },
673
-
674
- determine: {
675
- pos: function(pagePos) {
676
- return module.is.reversed()
677
- ?
678
- module.get.trackStartPos() - pagePos + module.get.trackOffset()
679
- :
680
- pagePos - module.get.trackOffset() - module.get.trackStartPos()
681
- ;
682
- },
683
- closestThumb: function(eventPos) {
684
- var
685
- thumbPos = parseFloat(module.determine.thumbPos($thumb)),
686
- thumbDelta = Math.abs(eventPos - thumbPos),
687
- secondThumbPos = parseFloat(module.determine.thumbPos($secondThumb)),
688
- secondThumbDelta = Math.abs(eventPos - secondThumbPos)
689
- ;
690
- if(thumbDelta === secondThumbDelta && module.get.thumbValue() === module.get.min()) {
691
- return $secondThumb;
692
- }
693
- return thumbDelta <= secondThumbDelta ? $thumb : $secondThumb;
694
- },
695
- closestThumbPos: function(eventPos) {
696
- var
697
- thumbPos = parseFloat(module.determine.thumbPos($thumb)),
698
- thumbDelta = Math.abs(eventPos - thumbPos),
699
- secondThumbPos = parseFloat(module.determine.thumbPos($secondThumb)),
700
- secondThumbDelta = Math.abs(eventPos - secondThumbPos)
701
- ;
702
- return thumbDelta <= secondThumbDelta ? thumbPos : secondThumbPos;
703
- },
704
- thumbPos: function($element) {
705
- var pos =
706
- module.is.vertical()
707
- ?
708
- module.is.reversed() ? $element.css('bottom') : $element.css('top')
709
- :
710
- module.is.reversed() ? $element.css('right') : $element.css('left')
711
- ;
712
- return pos;
713
- },
714
- positionFromValue: function(value) {
715
- var
716
- min = module.get.min(),
717
- max = module.get.max(),
718
- value = value > max ? max : value < min ? min : value,
719
- trackLength = module.get.trackLength(),
720
- ratio = (value - min) / (max - min),
721
- position = Math.round(ratio * trackLength)
722
- ;
723
- module.verbose('Determined position: ' + position + ' from value: ' + value);
724
- return position;
725
- },
726
- positionFromRatio: function(ratio) {
727
- var
728
- trackLength = module.get.trackLength(),
729
- step = module.get.step(),
730
- position = Math.round(ratio * trackLength),
731
- adjustedPos = (step == 0) ? position : Math.round(position / step) * step
732
- ;
733
- return adjustedPos;
734
- },
735
- valueFromEvent: function(event) {
736
- var
737
- eventPos = module.determine.eventPos(event),
738
- newPos = module.determine.pos(eventPos),
739
- value
740
- ;
741
- if(eventPos < module.get.trackOffset()) {
742
- value = module.is.reversed() ? module.get.max() : module.get.min();
743
- } else if(eventPos > module.get.trackOffset() + module.get.trackLength()) {
744
- value = module.is.reversed() ? module.get.min() : module.get.max();
745
- } else {
746
- value = module.determine.value(newPos);
747
- }
748
- return value;
749
- },
750
- smoothValueFromEvent: function(event) {
751
- var
752
- min = module.get.min(),
753
- max = module.get.max(),
754
- trackLength = module.get.trackLength(),
755
- eventPos = module.determine.eventPos(event),
756
- newPos = eventPos - module.get.trackOffset(),
757
- ratio,
758
- value
759
- ;
760
- newPos = newPos < 0 ? 0 : newPos > trackLength ? trackLength : newPos;
761
- ratio = newPos / trackLength;
762
- if (module.is.reversed()) {
763
- ratio = 1 - ratio;
764
- }
765
- value = ratio * (max - min) + min;
766
- return value;
767
- },
768
- eventPos: function(event) {
769
- if(module.is.touch()) {
770
- var
771
- touchEvent = event.changedTouches ? event : event.originalEvent,
772
- touches = touchEvent.changedTouches[0] ? touchEvent.changedTouches : touchEvent.touches,
773
- touchY = touches[0].pageY,
774
- touchX = touches[0].pageX
775
- ;
776
- return module.is.vertical() ? touchY : touchX;
777
- }
778
- var
779
- clickY = event.pageY || event.originalEvent.pageY,
780
- clickX = event.pageX || event.originalEvent.pageX
781
- ;
782
- return module.is.vertical() ? clickY : clickX;
783
- },
784
- value: function(position) {
785
- var
786
- startPos = module.is.reversed() ? module.get.trackEndPos() : module.get.trackStartPos(),
787
- endPos = module.is.reversed() ? module.get.trackStartPos() : module.get.trackEndPos(),
788
- ratio = (position - startPos) / (endPos - startPos),
789
- range = module.get.max() - module.get.min(),
790
- step = module.get.step(),
791
- value = (ratio * range),
792
- difference = (step == 0) ? value : Math.round(value / step) * step
793
- ;
794
- module.verbose('Determined value based upon position: ' + position + ' as: ' + value);
795
- if(value != difference) {
796
- module.verbose('Rounding value to closest step: ' + difference);
797
- }
798
- // Use precision to avoid ugly Javascript floating point rounding issues
799
- // (like 35 * .01 = 0.35000000000000003)
800
- module.verbose('Cutting off additional decimal places');
801
- return Math.round((difference + module.get.min()) * precision) / precision;
802
- },
803
- keyMovement: function(event) {
804
- var
805
- key = event.which,
806
- downArrow =
807
- module.is.vertical()
808
- ?
809
- module.is.reversed() ? keys.downArrow : keys.upArrow
810
- :
811
- keys.downArrow
812
- ,
813
- upArrow =
814
- module.is.vertical()
815
- ?
816
- module.is.reversed() ? keys.upArrow : keys.downArrow
817
- :
818
- keys.upArrow
819
- ,
820
- leftArrow =
821
- !module.is.vertical()
822
- ?
823
- module.is.reversed() ? keys.rightArrow : keys.leftArrow
824
- :
825
- keys.leftArrow
826
- ,
827
- rightArrow =
828
- !module.is.vertical()
829
- ?
830
- module.is.reversed() ? keys.leftArrow : keys.rightArrow
831
- :
832
- keys.rightArrow
833
- ;
834
- if(key == downArrow || key == leftArrow) {
835
- return SINGLE_BACKSTEP;
836
- } else if(key == upArrow || key == rightArrow) {
837
- return SINGLE_STEP;
838
- } else if (key == keys.pageDown) {
839
- return BIG_BACKSTEP;
840
- } else if (key == keys.pageUp) {
841
- return BIG_STEP;
842
- } else {
843
- return NO_STEP;
844
- }
845
- }
846
- },
847
-
848
- handleNewValuePosition: function(val) {
849
- var
850
- min = module.get.min(),
851
- max = module.get.max(),
852
- newPos
853
- ;
854
- if (val <= min) {
855
- val = min;
856
- } else if (val >= max) {
857
- val = max;
858
- }
859
- newPos = module.determine.positionFromValue(val);
860
- return newPos;
861
- },
862
-
863
- set: {
864
- value: function(newValue, fireChange) {
865
- fireChange = fireChange !== false;
866
- var toReset = previousValue === undefined;
867
- previousValue = previousValue === undefined ? module.get.value() : previousValue;
868
- module.update.value(newValue, function(value, thumbVal, secondThumbVal) {
869
- if ((!initialLoad || settings.fireOnInit) && fireChange){
870
- if (newValue !== previousValue) {
871
- settings.onChange.call(element, value, thumbVal, secondThumbVal);
872
- }
873
- settings.onMove.call(element, value, thumbVal, secondThumbVal);
874
- }
875
- if (toReset) {
876
- previousValue = undefined;
877
- }
878
- });
879
- },
880
- rangeValue: function(first, second, fireChange) {
881
- fireChange = fireChange !== false;
882
- if(module.is.range()) {
883
- var
884
- min = module.get.min(),
885
- max = module.get.max(),
886
- toReset = previousValue === undefined
887
- ;
888
- previousValue = previousValue === undefined ? module.get.value() : previousValue;
889
- if (first <= min) {
890
- first = min;
891
- } else if(first >= max){
892
- first = max;
893
- }
894
- if (second <= min) {
895
- second = min;
896
- } else if(second >= max){
897
- second = max;
898
- }
899
- module.thumbVal = first;
900
- module.secondThumbVal = second;
901
- value = Math.abs(module.thumbVal - module.secondThumbVal);
902
- module.update.position(module.thumbVal, $thumb);
903
- module.update.position(module.secondThumbVal, $secondThumb);
904
- if ((!initialLoad || settings.fireOnInit) && fireChange) {
905
- if (value !== previousValue) {
906
- settings.onChange.call(element, value, module.thumbVal, module.secondThumbVal);
907
- }
908
- settings.onMove.call(element, value, module.thumbVal, module.secondThumbVal);
909
- }
910
- if (toReset) {
911
- previousValue = undefined;
912
- }
913
- } else {
914
- module.error(error.notrange);
915
- }
916
- },
917
- position: function(position, which) {
918
- var thumbVal = module.determine.value(position);
919
- switch (which) {
920
- case 'second':
921
- module.secondThumbVal = thumbVal;
922
- module.update.position(thumbVal, $secondThumb);
923
- break;
924
- default:
925
- module.thumbVal = thumbVal;
926
- module.update.position(thumbVal, $thumb);
927
- }
928
- value = Math.abs(module.thumbVal - (module.secondThumbVal || 0));
929
- module.set.value(value);
930
- }
1293
+ error: {
1294
+ method: 'The method you called is not defined.',
1295
+ notrange: 'This slider is not a range slider',
931
1296
  },
932
1297
 
933
- update: {
934
- value: function(newValue, callback) {
935
- var
936
- min = module.get.min(),
937
- max = module.get.max()
938
- ;
939
- if (newValue <= min) {
940
- newValue = min;
941
- } else if(newValue >= max){
942
- newValue = max;
943
- }
944
- if(!module.is.range()) {
945
- value = newValue;
946
- module.thumbVal = value;
947
- } else {
948
- if($currThumb === undefined) {
949
- $currThumb = newValue <= module.get.currentThumbValue() ? $thumb : $secondThumb;
950
- }
951
- if(!$currThumb.hasClass('second')) {
952
- if(settings.preventCrossover && module.is.range()) {
953
- newValue = Math.min(module.secondThumbVal, newValue);
954
- }
955
- module.thumbVal = newValue;
956
- } else {
957
- if(settings.preventCrossover && module.is.range()) {
958
- newValue = Math.max(module.thumbVal, newValue);
959
- }
960
- module.secondThumbVal = newValue;
961
- }
962
- value = Math.abs(module.thumbVal - module.secondThumbVal);
963
- }
964
- module.update.position(newValue);
965
- module.debug('Setting slider value to ' + value);
966
- if(typeof callback === 'function') {
967
- callback(value, module.thumbVal, module.secondThumbVal);
968
- }
969
- },
970
- position: function(newValue, $element) {
971
- var
972
- newPos = module.handleNewValuePosition(newValue),
973
- $targetThumb = $element != undefined ? $element : $currThumb,
974
- thumbVal = module.thumbVal || module.get.min(),
975
- secondThumbVal = module.secondThumbVal || module.get.min()
976
- ;
977
- if(module.is.range()) {
978
- if(!$targetThumb.hasClass('second')) {
979
- position = newPos;
980
- thumbVal = newValue;
981
- } else {
982
- secondPos = newPos;
983
- secondThumbVal = newValue;
984
- }
985
- } else {
986
- position = newPos;
987
- thumbVal = newValue;
988
- }
989
- var
990
- trackPosValue,
991
- thumbPosValue,
992
- min = module.get.min(),
993
- max = module.get.max(),
994
- thumbPosPercent = 100 * (newValue - min) / (max - min),
995
- trackStartPosPercent = 100 * (Math.min(thumbVal, secondThumbVal) - min) / (max - min),
996
- trackEndPosPercent = 100 * (1 - (Math.max(thumbVal, secondThumbVal) - min) / (max - min))
997
- ;
998
- if (module.is.vertical()) {
999
- if (module.is.reversed()) {
1000
- thumbPosValue = {bottom: 'calc(' + thumbPosPercent + '% - ' + offset + 'px)', top: 'auto'};
1001
- trackPosValue = {bottom: trackStartPosPercent + '%', top: trackEndPosPercent + '%'};
1002
- }
1003
- else {
1004
- thumbPosValue = {top: 'calc(' + thumbPosPercent + '% - ' + offset + 'px)', bottom: 'auto'};
1005
- trackPosValue = {top: trackStartPosPercent + '%', bottom: trackEndPosPercent + '%'};
1006
- }
1007
- } else {
1008
- if (module.is.reversed()) {
1009
- thumbPosValue = {right: 'calc(' + thumbPosPercent + '% - ' + offset + 'px)', left: 'auto'};
1010
- trackPosValue = {right: trackStartPosPercent + '%', left: trackEndPosPercent + '%'};
1011
- }
1012
- else {
1013
- thumbPosValue = {left: 'calc(' + thumbPosPercent + '% - ' + offset + 'px)', right: 'auto'};
1014
- trackPosValue = {left: trackStartPosPercent + '%', right: trackEndPosPercent + '%'};
1015
- }
1016
- }
1017
- $targetThumb.css(thumbPosValue);
1018
- $trackFill.css(trackPosValue);
1019
- module.debug('Setting slider position to ' + newPos);
1020
- },
1021
- labelPosition: function (ratio, $label) {
1022
- var
1023
- startMargin = module.get.trackStartMargin(),
1024
- endMargin = module.get.trackEndMargin(),
1025
- posDir =
1026
- module.is.vertical()
1027
- ?
1028
- module.is.reversed() ? 'bottom' : 'top'
1029
- :
1030
- module.is.reversed() ? 'right' : 'left',
1031
- startMarginMod = module.is.reversed() && !module.is.vertical() ? ' - ' : ' + '
1032
- ;
1033
- var position = '(100% - ' + startMargin + ' - ' + endMargin + ') * ' + ratio;
1034
- $label.css(posDir, 'calc(' + position + startMarginMod + startMargin + ')');
1035
- }
1298
+ metadata: {
1299
+ thumbVal: 'thumbVal',
1300
+ secondThumbVal: 'secondThumbVal',
1036
1301
  },
1037
1302
 
1038
- goto: {
1039
- max: function() {
1040
- module.set.value(module.get.max());
1041
- },
1042
- min: function() {
1043
- module.set.value(module.get.min());
1044
- },
1303
+ min: 0,
1304
+ max: 20,
1305
+ step: 1,
1306
+ start: 0,
1307
+ end: 20,
1308
+ labelType: 'number',
1309
+ showLabelTicks: false,
1310
+ smooth: false,
1311
+ autoAdjustLabels: true,
1312
+ labelDistance: 100,
1313
+ preventCrossover: true,
1314
+ fireOnInit: false,
1315
+ interpretLabel: false,
1316
+
1317
+ // the decimal place to round to if step is undefined
1318
+ decimalPlaces: 2,
1319
+
1320
+ // page up/down multiplier. How many more times the steps to take on page up/down press
1321
+ pageMultiplier: 2,
1322
+
1323
+ selector: {},
1324
+
1325
+ className: {
1326
+ reversed: 'reversed',
1327
+ disabled: 'disabled',
1328
+ labeled: 'labeled',
1329
+ ticked: 'ticked',
1330
+ vertical: 'vertical',
1331
+ range: 'range',
1332
+ smooth: 'smooth',
1045
1333
  },
1046
1334
 
1047
- read: {
1048
- metadata: function() {
1049
- var
1050
- data = {
1051
- thumbVal : $module.data(metadata.thumbVal),
1052
- secondThumbVal : $module.data(metadata.secondThumbVal)
1053
- }
1054
- ;
1055
- if(data.thumbVal) {
1056
- if(module.is.range() && data.secondThumbVal) {
1057
- module.debug('Current value set from metadata', data.thumbVal, data.secondThumbVal);
1058
- module.set.rangeValue(data.thumbVal, data.secondThumbVal);
1059
- } else {
1060
- module.debug('Current value set from metadata', data.thumbVal);
1061
- module.set.value(data.thumbVal);
1062
- }
1063
- }
1064
- },
1065
- settings: function() {
1066
- if(settings.start !== false) {
1067
- if(module.is.range()) {
1068
- module.debug('Start position set from settings', settings.start, settings.end);
1069
- module.set.rangeValue(settings.start, settings.end);
1070
- } else {
1071
- module.debug('Start position set from settings', settings.start);
1072
- module.set.value(settings.start);
1073
- }
1074
- }
1075
- }
1076
- },
1077
-
1078
- setting: function(name, value) {
1079
- module.debug('Changing setting', name, value);
1080
- if( $.isPlainObject(name) ) {
1081
- $.extend(true, settings, name);
1082
- }
1083
- else if(value !== undefined) {
1084
- if($.isPlainObject(settings[name])) {
1085
- $.extend(true, settings[name], value);
1086
- }
1087
- else {
1088
- settings[name] = value;
1089
- }
1090
- }
1091
- else {
1092
- return settings[name];
1093
- }
1094
- },
1095
- internal: function(name, value) {
1096
- if( $.isPlainObject(name) ) {
1097
- $.extend(true, module, name);
1098
- }
1099
- else if(value !== undefined) {
1100
- module[name] = value;
1101
- }
1102
- else {
1103
- return module[name];
1104
- }
1105
- },
1106
- debug: function() {
1107
- if(!settings.silent && settings.debug) {
1108
- if(settings.performance) {
1109
- module.performance.log(arguments);
1110
- }
1111
- else {
1112
- module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');
1113
- module.debug.apply(console, arguments);
1114
- }
1115
- }
1116
- },
1117
- verbose: function() {
1118
- if(!settings.silent && settings.verbose && settings.debug) {
1119
- if(settings.performance) {
1120
- module.performance.log(arguments);
1121
- }
1122
- else {
1123
- module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');
1124
- module.verbose.apply(console, arguments);
1125
- }
1126
- }
1127
- },
1128
- error: function() {
1129
- if(!settings.silent) {
1130
- module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');
1131
- module.error.apply(console, arguments);
1132
- }
1335
+ keys: {
1336
+ pageUp: 33,
1337
+ pageDown: 34,
1338
+ leftArrow: 37,
1339
+ upArrow: 38,
1340
+ rightArrow: 39,
1341
+ downArrow: 40,
1133
1342
  },
1134
1343
 
1135
- performance: {
1136
- log: function(message) {
1137
- var
1138
- currentTime,
1139
- executionTime,
1140
- previousTime
1141
- ;
1142
- if(settings.performance) {
1143
- currentTime = new Date().getTime();
1144
- previousTime = time || currentTime;
1145
- executionTime = currentTime - previousTime;
1146
- time = currentTime;
1147
- performance.push({
1148
- 'Name' : message[0],
1149
- 'Arguments' : [].slice.call(message, 1) || '',
1150
- 'Element' : element,
1151
- 'Execution Time' : executionTime
1152
- });
1153
- }
1154
- clearTimeout(module.performance.timer);
1155
- module.performance.timer = setTimeout(module.performance.display, 500);
1156
- },
1157
- display: function() {
1158
- var
1159
- title = settings.name + ':',
1160
- totalTime = 0
1161
- ;
1162
- time = false;
1163
- clearTimeout(module.performance.timer);
1164
- $.each(performance, function(index, data) {
1165
- totalTime += data['Execution Time'];
1166
- });
1167
- title += ' ' + totalTime + 'ms';
1168
- if(moduleSelector) {
1169
- title += ' \'' + moduleSelector + '\'';
1170
- }
1171
- if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
1172
- console.groupCollapsed(title);
1173
- if(console.table) {
1174
- console.table(performance);
1175
- }
1176
- else {
1177
- $.each(performance, function(index, data) {
1178
- console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
1179
- });
1180
- }
1181
- console.groupEnd();
1182
- }
1183
- performance = [];
1184
- }
1344
+ labelTypes: {
1345
+ number: 'number',
1346
+ letter: 'letter',
1185
1347
  },
1186
1348
 
1187
- invoke: function(query, passedArguments, context) {
1188
- var
1189
- object = instance,
1190
- maxDepth,
1191
- found,
1192
- response
1193
- ;
1194
- passedArguments = passedArguments || queryArguments;
1195
- context = element || context;
1196
- if(typeof query == 'string' && object !== undefined) {
1197
- query = query.split(/[\. ]/);
1198
- maxDepth = query.length - 1;
1199
- $.each(query, function(depth, value) {
1200
- var camelCaseValue = (depth != maxDepth)
1201
- ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
1202
- : query
1203
- ;
1204
- if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {
1205
- object = object[camelCaseValue];
1206
- }
1207
- else if( object[camelCaseValue] !== undefined ) {
1208
- found = object[camelCaseValue];
1209
- return false;
1210
- }
1211
- else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {
1212
- object = object[value];
1213
- }
1214
- else if( object[value] !== undefined ) {
1215
- found = object[value];
1216
- return false;
1217
- }
1218
- else {
1219
- module.error(error.method, query);
1220
- return false;
1221
- }
1222
- });
1223
- }
1224
- if ( $.isFunction( found ) ) {
1225
- response = found.apply(context, passedArguments);
1226
- }
1227
- else if(found !== undefined) {
1228
- response = found;
1229
- }
1230
- if($.isArray(returnedValue)) {
1231
- returnedValue.push(response);
1232
- }
1233
- else if(returnedValue !== undefined) {
1234
- returnedValue = [returnedValue, response];
1235
- }
1236
- else if(response !== undefined) {
1237
- returnedValue = response;
1238
- }
1239
- return found;
1240
- }
1241
- };
1242
-
1243
- if(methodInvoked) {
1244
- if(instance === undefined) {
1245
- module.initialize();
1246
- }
1247
- module.invoke(query);
1248
- }
1249
- else {
1250
- if(instance !== undefined) {
1251
- instance.invoke('destroy');
1252
- }
1253
- module.initialize();
1254
- }
1255
- })
1256
- ;
1257
-
1258
- return (returnedValue !== undefined)
1259
- ? returnedValue
1260
- : this
1261
- ;
1262
-
1263
- };
1264
-
1265
- $.fn.slider.settings = {
1266
-
1267
- silent : false,
1268
- debug : false,
1269
- verbose : false,
1270
- performance : true,
1271
-
1272
- name : 'Slider',
1273
- namespace : 'slider',
1274
-
1275
- error : {
1276
- method : 'The method you called is not defined.',
1277
- notrange : 'This slider is not a range slider'
1278
- },
1279
-
1280
- metadata: {
1281
- thumbVal : 'thumbVal',
1282
- secondThumbVal : 'secondThumbVal'
1283
- },
1284
-
1285
- min : 0,
1286
- max : 20,
1287
- step : 1,
1288
- start : 0,
1289
- end : 20,
1290
- labelType : 'number',
1291
- showLabelTicks : false,
1292
- smooth : false,
1293
- autoAdjustLabels : true,
1294
- labelDistance : 100,
1295
- preventCrossover : true,
1296
- fireOnInit : false,
1297
- interpretLabel : false,
1298
-
1299
- //the decimal place to round to if step is undefined
1300
- decimalPlaces : 2,
1301
-
1302
- // page up/down multiplier. How many more times the steps to take on page up/down press
1303
- pageMultiplier : 2,
1304
-
1305
- selector: {
1306
-
1307
- },
1308
-
1309
- className : {
1310
- reversed : 'reversed',
1311
- disabled : 'disabled',
1312
- labeled : 'labeled',
1313
- ticked : 'ticked',
1314
- vertical : 'vertical',
1315
- range : 'range',
1316
- smooth : 'smooth'
1317
- },
1318
-
1319
- keys : {
1320
- pageUp : 33,
1321
- pageDown : 34,
1322
- leftArrow : 37,
1323
- upArrow : 38,
1324
- rightArrow : 39,
1325
- downArrow : 40
1326
- },
1327
-
1328
- labelTypes : {
1329
- number : 'number',
1330
- letter : 'letter'
1331
- },
1332
-
1333
- onChange : function(value, thumbVal, secondThumbVal){},
1334
- onMove : function(value, thumbVal, secondThumbVal){},
1335
- };
1336
-
1337
-
1338
- })( jQuery, window, document );
1349
+ onChange: function (value, thumbVal, secondThumbVal) {},
1350
+ onMove: function (value, thumbVal, secondThumbVal) {},
1351
+ };
1352
+ })(jQuery, window, document);