jekyll-theme-glueckkanja 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +12 -0
  3. data/README.md +64 -0
  4. data/_includes/blogtitlepic.html +25 -0
  5. data/_includes/contactform.html +77 -0
  6. data/_includes/footer.html +14 -0
  7. data/_includes/hc-document-icon.html +12 -0
  8. data/_includes/hc-listings.html +15 -0
  9. data/_includes/head.html +41 -0
  10. data/_includes/keyvisual.html +7 -0
  11. data/_includes/navigation.html +64 -0
  12. data/_includes/register-modal.html +37 -0
  13. data/_includes/scripts.html +126 -0
  14. data/_includes/sitelinks.html +57 -0
  15. data/_layouts/banner.html +54 -0
  16. data/_layouts/default-with-image.html +25 -0
  17. data/_layouts/default.html +24 -0
  18. data/_layouts/docs-default.html +72 -0
  19. data/_layouts/framed.html +47 -0
  20. data/_layouts/hc-archive.html +12 -0
  21. data/_layouts/hc-default.html +99 -0
  22. data/_layouts/hc-post.html +59 -0
  23. data/_layouts/page.html +5 -0
  24. data/_layouts/post.html +24 -0
  25. data/_sass/_docs-layout.scss +482 -0
  26. data/_sass/_docs-mixins.scss +34 -0
  27. data/_sass/_hc-dark-theme.scss +38 -0
  28. data/_sass/_hc-elements.scss +86 -0
  29. data/_sass/_hc-header.scss +104 -0
  30. data/_sass/_hc-tutorials.scss +251 -0
  31. data/_sass/_rangeslider.scss +111 -0
  32. data/_sass/_variables.scss +89 -0
  33. data/_sass/font-awesome/scss/_animated.scss +34 -0
  34. data/_sass/font-awesome/scss/_bordered-pulled.scss +25 -0
  35. data/_sass/font-awesome/scss/_core.scss +12 -0
  36. data/_sass/font-awesome/scss/_fixed-width.scss +6 -0
  37. data/_sass/font-awesome/scss/_icons.scss +789 -0
  38. data/_sass/font-awesome/scss/_larger.scss +13 -0
  39. data/_sass/font-awesome/scss/_list.scss +19 -0
  40. data/_sass/font-awesome/scss/_mixins.scss +60 -0
  41. data/_sass/font-awesome/scss/_path.scss +15 -0
  42. data/_sass/font-awesome/scss/_rotated-flipped.scss +20 -0
  43. data/_sass/font-awesome/scss/_screen-reader.scss +5 -0
  44. data/_sass/font-awesome/scss/_stacked.scss +20 -0
  45. data/_sass/font-awesome/scss/_variables.scss +800 -0
  46. data/_sass/font-awesome/scss/font-awesome.scss +18 -0
  47. data/assets/azurebin/ChangeLog +941 -0
  48. data/assets/azurebin/IMDisplay.exe +0 -0
  49. data/assets/azurebin/ImageMagick.rdf +166 -0
  50. data/assets/azurebin/LICENSE.txt +103 -0
  51. data/assets/azurebin/NOTICE.txt +1324 -0
  52. data/assets/azurebin/README.txt +105 -0
  53. data/assets/azurebin/colors.xml +28 -0
  54. data/assets/azurebin/compare.exe +0 -0
  55. data/assets/azurebin/composite.exe +0 -0
  56. data/assets/azurebin/configure.xml +20 -0
  57. data/assets/azurebin/conjure.exe +0 -0
  58. data/assets/azurebin/convert.exe +0 -0
  59. data/assets/azurebin/dcraw.exe +0 -0
  60. data/assets/azurebin/delegates.xml +100 -0
  61. data/assets/azurebin/english.xml +1682 -0
  62. data/assets/azurebin/ffmpeg.exe +0 -0
  63. data/assets/azurebin/hp2xx.exe +0 -0
  64. data/assets/azurebin/identify.exe +0 -0
  65. data/assets/azurebin/index.html +280 -0
  66. data/assets/azurebin/locale.xml +48 -0
  67. data/assets/azurebin/log.xml +80 -0
  68. data/assets/azurebin/magic.xml +23 -0
  69. data/assets/azurebin/magick.exe +0 -0
  70. data/assets/azurebin/mime.xml +1145 -0
  71. data/assets/azurebin/mogrify.exe +0 -0
  72. data/assets/azurebin/montage.exe +0 -0
  73. data/assets/azurebin/policy.xml +75 -0
  74. data/assets/azurebin/quantization-table.xml +68 -0
  75. data/assets/azurebin/sRGB.icc +0 -0
  76. data/assets/azurebin/stream.exe +0 -0
  77. data/assets/azurebin/thresholds.xml +334 -0
  78. data/assets/azurebin/type-ghostscript.xml +55 -0
  79. data/assets/azurebin/type.xml +21 -0
  80. data/assets/azureroot/.deploy.cmd +150 -0
  81. data/assets/azureroot/.deployment +2 -0
  82. data/assets/azureroot/_config.yml +165 -0
  83. data/assets/azureroot/dot.gitignore +11 -0
  84. data/assets/azureroot/web.config +93 -0
  85. data/assets/css/app.scss +1900 -0
  86. data/assets/docs/changelog.html +28 -0
  87. data/assets/docs/index.md +7 -0
  88. data/assets/docs/search.html +35 -0
  89. data/assets/docs/uservoice.html +17 -0
  90. data/assets/favicons/100percentcloud.png +0 -0
  91. data/assets/favicons/apple-konnekt-icon-120x120.png +0 -0
  92. data/assets/favicons/apple-konnekt-icon-152x152.png +0 -0
  93. data/assets/favicons/apple-konnekt-icon-60x60.png +0 -0
  94. data/assets/favicons/apple-konnekt-icon-76x76.png +0 -0
  95. data/assets/favicons/favicon-konnekt-144.png +0 -0
  96. data/assets/favicons/favicon-konnekt-96.png +0 -0
  97. data/assets/favicons/favicon-konnekt.ico +0 -0
  98. data/assets/favicons/favicon-konnekt.png +0 -0
  99. data/assets/favicons/gk-boxes.ico +0 -0
  100. data/assets/favicons/gk-boxes.png +0 -0
  101. data/assets/favicons/gk-logo-white.svg +39 -0
  102. data/assets/favicons/gk-logo.svg +1 -0
  103. data/assets/help-center/faq.html +33 -0
  104. data/assets/help-center/index.html +54 -0
  105. data/assets/help-center/search.html +36 -0
  106. data/assets/help-center/videos.html +15 -0
  107. data/assets/js/guk.js +12 -0
  108. data/assets/js/hc.js +94 -0
  109. data/assets/js/lunr.min.js +7 -0
  110. data/assets/js/mandrill.min.js +122 -0
  111. data/assets/js/rangeslider.js +494 -0
  112. data/assets/js/rangeslider.min.js +2 -0
  113. data/assets/js/search.js +103 -0
  114. data/assets/misc/general-glitch.html +9 -0
  115. data/assets/misc/imprint.html +40 -0
  116. data/assets/misc/privacy-policy.html +138 -0
  117. data/assets/misc/terms-of-service.html +138 -0
  118. data/assets/nav/arrow-up.png +0 -0
  119. data/assets/nav/arrow-up.svg +13 -0
  120. data/assets/nav/cbp-sprite.png +0 -0
  121. data/assets/nav/dotline.png +0 -0
  122. data/assets/nav/splash.png +0 -0
  123. data/assets/nav/splash@2x.png +0 -0
  124. data/assets/video/meerkat-404.jpg +0 -0
  125. data/assets/video/meerkat-404.mp4 +0 -0
  126. data/assets/video/meerkat-404.ogv +0 -0
  127. data/assets/video/meerkat-404.webm +0 -0
  128. metadata +394 -0
@@ -0,0 +1,494 @@
1
+ /*! rangeslider.js - v2.3.0 | (c) 2016 @andreruffert | MIT license | https://github.com/andreruffert/rangeslider.js */
2
+ (function(factory) {
3
+ 'use strict';
4
+
5
+ if (typeof define === 'function' && define.amd) {
6
+ // AMD. Register as an anonymous module.
7
+ define(['jquery'], factory);
8
+ } else if (typeof exports === 'object') {
9
+ // CommonJS
10
+ module.exports = factory(require('jquery'));
11
+ } else {
12
+ // Browser globals
13
+ factory(jQuery);
14
+ }
15
+ }(function($) {
16
+ 'use strict';
17
+
18
+ // Polyfill Number.isNaN(value)
19
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN
20
+ Number.isNaN = Number.isNaN || function(value) {
21
+ return typeof value === 'number' && value !== value;
22
+ };
23
+
24
+ /**
25
+ * Range feature detection
26
+ * @return {Boolean}
27
+ */
28
+ function supportsRange() {
29
+ var input = document.createElement('input');
30
+ input.setAttribute('type', 'range');
31
+ return input.type !== 'text';
32
+ }
33
+
34
+ var pluginName = 'rangeslider',
35
+ pluginIdentifier = 0,
36
+ hasInputRangeSupport = supportsRange(),
37
+ defaults = {
38
+ polyfill: true,
39
+ orientation: 'horizontal',
40
+ rangeClass: 'rangeslider',
41
+ disabledClass: 'rangeslider--disabled',
42
+ activeClass: 'rangeslider--active',
43
+ horizontalClass: 'rangeslider--horizontal',
44
+ verticalClass: 'rangeslider--vertical',
45
+ fillClass: 'rangeslider__fill',
46
+ handleClass: 'rangeslider__handle',
47
+ startEvent: ['mousedown', 'touchstart', 'pointerdown'],
48
+ moveEvent: ['mousemove', 'touchmove', 'pointermove'],
49
+ endEvent: ['mouseup', 'touchend', 'pointerup']
50
+ },
51
+ constants = {
52
+ orientation: {
53
+ horizontal: {
54
+ dimension: 'width',
55
+ direction: 'left',
56
+ directionStyle: 'left',
57
+ coordinate: 'x'
58
+ },
59
+ vertical: {
60
+ dimension: 'height',
61
+ direction: 'top',
62
+ directionStyle: 'bottom',
63
+ coordinate: 'y'
64
+ }
65
+ }
66
+ };
67
+
68
+ /**
69
+ * Delays a function for the given number of milliseconds, and then calls
70
+ * it with the arguments supplied.
71
+ *
72
+ * @param {Function} fn [description]
73
+ * @param {Number} wait [description]
74
+ * @return {Function}
75
+ */
76
+ function delay(fn, wait) {
77
+ var args = Array.prototype.slice.call(arguments, 2);
78
+ return setTimeout(function(){ return fn.apply(null, args); }, wait);
79
+ }
80
+
81
+ /**
82
+ * Returns a debounced function that will make sure the given
83
+ * function is not triggered too much.
84
+ *
85
+ * @param {Function} fn Function to debounce.
86
+ * @param {Number} debounceDuration OPTIONAL. The amount of time in milliseconds for which we will debounce the function. (defaults to 100ms)
87
+ * @return {Function}
88
+ */
89
+ function debounce(fn, debounceDuration) {
90
+ debounceDuration = debounceDuration || 100;
91
+ return function() {
92
+ if (!fn.debouncing) {
93
+ var args = Array.prototype.slice.apply(arguments);
94
+ fn.lastReturnVal = fn.apply(window, args);
95
+ fn.debouncing = true;
96
+ }
97
+ clearTimeout(fn.debounceTimeout);
98
+ fn.debounceTimeout = setTimeout(function(){
99
+ fn.debouncing = false;
100
+ }, debounceDuration);
101
+ return fn.lastReturnVal;
102
+ };
103
+ }
104
+
105
+ /**
106
+ * Check if a `element` is visible in the DOM
107
+ *
108
+ * @param {Element} element
109
+ * @return {Boolean}
110
+ */
111
+ function isHidden(element) {
112
+ return (
113
+ element && (
114
+ element.offsetWidth === 0 ||
115
+ element.offsetHeight === 0 ||
116
+ // Also Consider native `<details>` elements.
117
+ element.open === false
118
+ )
119
+ );
120
+ }
121
+
122
+ /**
123
+ * Get hidden parentNodes of an `element`
124
+ *
125
+ * @param {Element} element
126
+ * @return {[type]}
127
+ */
128
+ function getHiddenParentNodes(element) {
129
+ var parents = [],
130
+ node = element.parentNode;
131
+
132
+ while (isHidden(node)) {
133
+ parents.push(node);
134
+ node = node.parentNode;
135
+ }
136
+ return parents;
137
+ }
138
+
139
+ /**
140
+ * Returns dimensions for an element even if it is not visible in the DOM.
141
+ *
142
+ * @param {Element} element
143
+ * @param {String} key (e.g. offsetWidth …)
144
+ * @return {Number}
145
+ */
146
+ function getDimension(element, key) {
147
+ var hiddenParentNodes = getHiddenParentNodes(element),
148
+ hiddenParentNodesLength = hiddenParentNodes.length,
149
+ inlineStyle = [],
150
+ dimension = element[key];
151
+
152
+ // Used for native `<details>` elements
153
+ function toggleOpenProperty(element) {
154
+ if (typeof element.open !== 'undefined') {
155
+ element.open = (element.open) ? false : true;
156
+ }
157
+ }
158
+
159
+ if (hiddenParentNodesLength) {
160
+ for (var i = 0; i < hiddenParentNodesLength; i++) {
161
+
162
+ // Cache style attribute to restore it later.
163
+ inlineStyle[i] = hiddenParentNodes[i].style.cssText;
164
+
165
+ // visually hide
166
+ if (hiddenParentNodes[i].style.setProperty) {
167
+ hiddenParentNodes[i].style.setProperty('display', 'block', 'important');
168
+ } else {
169
+ hiddenParentNodes[i].style.cssText += ';display: block !important';
170
+ }
171
+ hiddenParentNodes[i].style.height = '0';
172
+ hiddenParentNodes[i].style.overflow = 'hidden';
173
+ hiddenParentNodes[i].style.visibility = 'hidden';
174
+ toggleOpenProperty(hiddenParentNodes[i]);
175
+ }
176
+
177
+ // Update dimension
178
+ dimension = element[key];
179
+
180
+ for (var j = 0; j < hiddenParentNodesLength; j++) {
181
+
182
+ // Restore the style attribute
183
+ hiddenParentNodes[j].style.cssText = inlineStyle[j];
184
+ toggleOpenProperty(hiddenParentNodes[j]);
185
+ }
186
+ }
187
+ return dimension;
188
+ }
189
+
190
+ /**
191
+ * Returns the parsed float or the default if it failed.
192
+ *
193
+ * @param {String} str
194
+ * @param {Number} defaultValue
195
+ * @return {Number}
196
+ */
197
+ function tryParseFloat(str, defaultValue) {
198
+ var value = parseFloat(str);
199
+ return Number.isNaN(value) ? defaultValue : value;
200
+ }
201
+
202
+ /**
203
+ * Capitalize the first letter of string
204
+ *
205
+ * @param {String} str
206
+ * @return {String}
207
+ */
208
+ function ucfirst(str) {
209
+ return str.charAt(0).toUpperCase() + str.substr(1);
210
+ }
211
+
212
+ /**
213
+ * Plugin
214
+ * @param {String} element
215
+ * @param {Object} options
216
+ */
217
+ function Plugin(element, options) {
218
+ this.$window = $(window);
219
+ this.$document = $(document);
220
+ this.$element = $(element);
221
+ this.options = $.extend( {}, defaults, options );
222
+ this.polyfill = this.options.polyfill;
223
+ this.orientation = this.$element[0].getAttribute('data-orientation') || this.options.orientation;
224
+ this.onInit = this.options.onInit;
225
+ this.onSlide = this.options.onSlide;
226
+ this.onSlideEnd = this.options.onSlideEnd;
227
+ this.DIMENSION = constants.orientation[this.orientation].dimension;
228
+ this.DIRECTION = constants.orientation[this.orientation].direction;
229
+ this.DIRECTION_STYLE = constants.orientation[this.orientation].directionStyle;
230
+ this.COORDINATE = constants.orientation[this.orientation].coordinate;
231
+
232
+ // Plugin should only be used as a polyfill
233
+ if (this.polyfill) {
234
+ // Input range support?
235
+ if (hasInputRangeSupport) { return false; }
236
+ }
237
+
238
+ this.identifier = 'js-' + pluginName + '-' +(pluginIdentifier++);
239
+ this.startEvent = this.options.startEvent.join('.' + this.identifier + ' ') + '.' + this.identifier;
240
+ this.moveEvent = this.options.moveEvent.join('.' + this.identifier + ' ') + '.' + this.identifier;
241
+ this.endEvent = this.options.endEvent.join('.' + this.identifier + ' ') + '.' + this.identifier;
242
+ this.toFixed = (this.step + '').replace('.', '').length - 1;
243
+ this.$fill = $('<div class="' + this.options.fillClass + '" />');
244
+ this.$handle = $('<div class="' + this.options.handleClass + '" />');
245
+ this.$range = $('<div class="' + this.options.rangeClass + ' ' + this.options[this.orientation + 'Class'] + '" id="' + this.identifier + '" />').insertAfter(this.$element).prepend(this.$fill, this.$handle);
246
+
247
+ // visually hide the input
248
+ this.$element.css({
249
+ 'position': 'absolute',
250
+ 'width': '1px',
251
+ 'height': '1px',
252
+ 'overflow': 'hidden',
253
+ 'opacity': '0'
254
+ });
255
+
256
+ // Store context
257
+ this.handleDown = $.proxy(this.handleDown, this);
258
+ this.handleMove = $.proxy(this.handleMove, this);
259
+ this.handleEnd = $.proxy(this.handleEnd, this);
260
+
261
+ this.init();
262
+
263
+ // Attach Events
264
+ var _this = this;
265
+ this.$window.on('resize.' + this.identifier, debounce(function() {
266
+ // Simulate resizeEnd event.
267
+ delay(function() { _this.update(false, false); }, 300);
268
+ }, 20));
269
+
270
+ this.$document.on(this.startEvent, '#' + this.identifier + ':not(.' + this.options.disabledClass + ')', this.handleDown);
271
+
272
+ // Listen to programmatic value changes
273
+ this.$element.on('change.' + this.identifier, function(e, data) {
274
+ if (data && data.origin === _this.identifier) {
275
+ return;
276
+ }
277
+
278
+ var value = e.target.value,
279
+ pos = _this.getPositionFromValue(value);
280
+ _this.setPosition(pos);
281
+ });
282
+ }
283
+
284
+ Plugin.prototype.init = function() {
285
+ this.update(true, false);
286
+
287
+ if (this.onInit && typeof this.onInit === 'function') {
288
+ this.onInit();
289
+ }
290
+ };
291
+
292
+ Plugin.prototype.update = function(updateAttributes, triggerSlide) {
293
+ updateAttributes = updateAttributes || false;
294
+
295
+ if (updateAttributes) {
296
+ this.min = tryParseFloat(this.$element[0].getAttribute('min'), 0);
297
+ this.max = tryParseFloat(this.$element[0].getAttribute('max'), 100);
298
+ this.value = tryParseFloat(this.$element[0].value, Math.round(this.min + (this.max-this.min)/2));
299
+ this.step = tryParseFloat(this.$element[0].getAttribute('step'), 1);
300
+ }
301
+
302
+ this.handleDimension = getDimension(this.$handle[0], 'offset' + ucfirst(this.DIMENSION));
303
+ this.rangeDimension = getDimension(this.$range[0], 'offset' + ucfirst(this.DIMENSION));
304
+ this.maxHandlePos = this.rangeDimension - this.handleDimension;
305
+ this.grabPos = this.handleDimension / 2;
306
+ this.position = this.getPositionFromValue(this.value);
307
+
308
+ // Consider disabled state
309
+ if (this.$element[0].disabled) {
310
+ this.$range.addClass(this.options.disabledClass);
311
+ } else {
312
+ this.$range.removeClass(this.options.disabledClass);
313
+ }
314
+
315
+ this.setPosition(this.position, triggerSlide);
316
+ };
317
+
318
+ Plugin.prototype.handleDown = function(e) {
319
+ e.preventDefault();
320
+ this.$document.on(this.moveEvent, this.handleMove);
321
+ this.$document.on(this.endEvent, this.handleEnd);
322
+
323
+ // add active class because Firefox is ignoring
324
+ // the handle:active pseudo selector because of `e.preventDefault();`
325
+ this.$range.addClass(this.options.activeClass);
326
+
327
+ // If we click on the handle don't set the new position
328
+ if ((' ' + e.target.className + ' ').replace(/[\n\t]/g, ' ').indexOf(this.options.handleClass) > -1) {
329
+ return;
330
+ }
331
+
332
+ var pos = this.getRelativePosition(e),
333
+ rangePos = this.$range[0].getBoundingClientRect()[this.DIRECTION],
334
+ handlePos = this.getPositionFromNode(this.$handle[0]) - rangePos,
335
+ setPos = (this.orientation === 'vertical') ? (this.maxHandlePos - (pos - this.grabPos)) : (pos - this.grabPos);
336
+
337
+ this.setPosition(setPos);
338
+
339
+ if (pos >= handlePos && pos < handlePos + this.handleDimension) {
340
+ this.grabPos = pos - handlePos;
341
+ }
342
+ };
343
+
344
+ Plugin.prototype.handleMove = function(e) {
345
+ e.preventDefault();
346
+ var pos = this.getRelativePosition(e);
347
+ var setPos = (this.orientation === 'vertical') ? (this.maxHandlePos - (pos - this.grabPos)) : (pos - this.grabPos);
348
+ this.setPosition(setPos);
349
+ };
350
+
351
+ Plugin.prototype.handleEnd = function(e) {
352
+ e.preventDefault();
353
+ this.$document.off(this.moveEvent, this.handleMove);
354
+ this.$document.off(this.endEvent, this.handleEnd);
355
+
356
+ this.$range.removeClass(this.options.activeClass);
357
+
358
+ // Ok we're done fire the change event
359
+ this.$element.trigger('change', { origin: this.identifier });
360
+
361
+ if (this.onSlideEnd && typeof this.onSlideEnd === 'function') {
362
+ this.onSlideEnd(this.position, this.value);
363
+ }
364
+ };
365
+
366
+ Plugin.prototype.cap = function(pos, min, max) {
367
+ if (pos < min) { return min; }
368
+ if (pos > max) { return max; }
369
+ return pos;
370
+ };
371
+
372
+ Plugin.prototype.setPosition = function(pos, triggerSlide) {
373
+ var value, newPos;
374
+
375
+ if (triggerSlide === undefined) {
376
+ triggerSlide = true;
377
+ }
378
+
379
+ // Snapping steps
380
+ value = this.getValueFromPosition(this.cap(pos, 0, this.maxHandlePos));
381
+ newPos = this.getPositionFromValue(value);
382
+
383
+ // Update ui
384
+ this.$fill[0].style[this.DIMENSION] = (newPos + this.grabPos) + 'px';
385
+ this.$handle[0].style[this.DIRECTION_STYLE] = newPos + 'px';
386
+ this.setValue(value);
387
+
388
+ // Update globals
389
+ this.position = newPos;
390
+ this.value = value;
391
+
392
+ if (triggerSlide && this.onSlide && typeof this.onSlide === 'function') {
393
+ this.onSlide(newPos, value);
394
+ }
395
+ };
396
+
397
+ // Returns element position relative to the parent
398
+ Plugin.prototype.getPositionFromNode = function(node) {
399
+ var i = 0;
400
+ while (node !== null) {
401
+ i += node.offsetLeft;
402
+ node = node.offsetParent;
403
+ }
404
+ return i;
405
+ };
406
+
407
+ Plugin.prototype.getRelativePosition = function(e) {
408
+ // Get the offset DIRECTION relative to the viewport
409
+ var ucCoordinate = ucfirst(this.COORDINATE),
410
+ rangePos = this.$range[0].getBoundingClientRect()[this.DIRECTION],
411
+ pageCoordinate = 0;
412
+
413
+ if (typeof e.originalEvent['client' + ucCoordinate] !== 'undefined') {
414
+ pageCoordinate = e.originalEvent['client' + ucCoordinate];
415
+ }
416
+ else if (
417
+ e.originalEvent.touches &&
418
+ e.originalEvent.touches[0] &&
419
+ typeof e.originalEvent.touches[0]['client' + ucCoordinate] !== 'undefined'
420
+ ) {
421
+ pageCoordinate = e.originalEvent.touches[0]['client' + ucCoordinate];
422
+ }
423
+ else if(e.currentPoint && typeof e.currentPoint[this.COORDINATE] !== 'undefined') {
424
+ pageCoordinate = e.currentPoint[this.COORDINATE];
425
+ }
426
+
427
+ return pageCoordinate - rangePos;
428
+ };
429
+
430
+ Plugin.prototype.getPositionFromValue = function(value) {
431
+ var percentage, pos;
432
+ percentage = (value - this.min)/(this.max - this.min);
433
+ pos = (!Number.isNaN(percentage)) ? percentage * this.maxHandlePos : 0;
434
+ return pos;
435
+ };
436
+
437
+ Plugin.prototype.getValueFromPosition = function(pos) {
438
+ var percentage, value;
439
+ percentage = ((pos) / (this.maxHandlePos || 1));
440
+ value = this.step * Math.round(percentage * (this.max - this.min) / this.step) + this.min;
441
+ return Number((value).toFixed(this.toFixed));
442
+ };
443
+
444
+ Plugin.prototype.setValue = function(value) {
445
+ if (value === this.value && this.$element[0].value !== '') {
446
+ return;
447
+ }
448
+
449
+ // Set the new value and fire the `input` event
450
+ this.$element
451
+ .val(value)
452
+ .trigger('input', { origin: this.identifier });
453
+ };
454
+
455
+ Plugin.prototype.destroy = function() {
456
+ this.$document.off('.' + this.identifier);
457
+ this.$window.off('.' + this.identifier);
458
+
459
+ this.$element
460
+ .off('.' + this.identifier)
461
+ .removeAttr('style')
462
+ .removeData('plugin_' + pluginName);
463
+
464
+ // Remove the generated markup
465
+ if (this.$range && this.$range.length) {
466
+ this.$range[0].parentNode.removeChild(this.$range[0]);
467
+ }
468
+ };
469
+
470
+ // A really lightweight plugin wrapper around the constructor,
471
+ // preventing against multiple instantiations
472
+ $.fn[pluginName] = function(options) {
473
+ var args = Array.prototype.slice.call(arguments, 1);
474
+
475
+ return this.each(function() {
476
+ var $this = $(this),
477
+ data = $this.data('plugin_' + pluginName);
478
+
479
+ // Create a new instance.
480
+ if (!data) {
481
+ $this.data('plugin_' + pluginName, (data = new Plugin(this, options)));
482
+ }
483
+
484
+ // Make it possible to access methods from public.
485
+ // e.g `$element.rangeslider('method');`
486
+ if (typeof options === 'string') {
487
+ data[options].apply(data, args);
488
+ }
489
+ });
490
+ };
491
+
492
+ return 'rangeslider.js is available in jQuery context e.g $(selector).rangeslider(options);';
493
+
494
+ }));