aboutsummaryrefslogtreecommitdiff
path: root/public/assets/js/jquery-resizable.js
diff options
context:
space:
mode:
authorJakob Stendahl <14180120+JakobST1n@users.noreply.github.com>2018-10-18 12:44:36 +0200
committerGitHub <noreply@github.com>2018-10-18 12:44:36 +0200
commit0a91009c97ff8b28822c1b20e7568bddfdb43e7e (patch)
treee07b97177749e6401a5b70f3a08b7c53b8d96b0d /public/assets/js/jquery-resizable.js
parent1afb32f103bb7ebbc9ffa678ac6f5948a5ec54b1 (diff)
parent5cb309a9bb3481534b353cb50c707a64b4155c00 (diff)
downloadLuxcena-Neo-0a91009c97ff8b28822c1b20e7568bddfdb43e7e.tar.gz
Luxcena-Neo-0a91009c97ff8b28822c1b20e7568bddfdb43e7e.zip
:construction: Work on installer and start on implementing LED control
:construction: Work on installer and start on implementing LED control
Diffstat (limited to 'public/assets/js/jquery-resizable.js')
-rw-r--r--public/assets/js/jquery-resizable.js194
1 files changed, 194 insertions, 0 deletions
diff --git a/public/assets/js/jquery-resizable.js b/public/assets/js/jquery-resizable.js
new file mode 100644
index 0000000..daac616
--- /dev/null
+++ b/public/assets/js/jquery-resizable.js
@@ -0,0 +1,194 @@
+/// <reference path="../bower_components/jquery/dist/jquery.js" />
+/*
+jquery-resizable
+Version 0.32 - 5/5/2018
+© 2015-2018 Rick Strahl, West Wind Technologies
+www.west-wind.com
+Licensed under MIT License
+*/
+(function(factory, undefined) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD
+ define(['jquery'], factory);
+ } else if (typeof module === 'object' && typeof module.exports === 'object') {
+ // CommonJS
+ module.exports = factory(require('jquery'));
+ } else {
+ // Global jQuery
+ factory(jQuery);
+ }
+}(function($, undefined) {
+
+ if ($.fn.resizable)
+ return;
+
+ $.fn.resizable = function fnResizable(options) {
+ var defaultOptions = {
+ // selector for handle that starts dragging
+ handleSelector: null,
+ // resize the width
+ resizeWidth: true,
+ // resize the height
+ resizeHeight: true,
+ // the side that the width resizing is relative to
+ resizeWidthFrom: 'right',
+ // the side that the height resizing is relative to
+ resizeHeightFrom: 'bottom',
+ // hook into start drag operation (event passed)
+ onDragStart: null,
+ // hook into stop drag operation (event passed)
+ onDragEnd: null,
+ // hook into each drag operation (event passed)
+ onDrag: null,
+ // disable touch-action on $handle
+ // prevents browser level actions like forward back gestures
+ touchActionNone: true,
+ // instance id
+ instanceId: null
+ };
+ if (typeof options == "object")
+ defaultOptions = $.extend(defaultOptions, options);
+
+ return this.each(function () {
+ var opt = $.extend({}, defaultOptions);
+ if (!opt.instanceId)
+ opt.instanceId = "rsz_" + new Date().getTime();
+
+ var startPos, startTransition;
+
+ // get the element to resize
+ var $el = $(this);
+ var $handle;
+
+ if (options === 'destroy') {
+ opt = $el.data('resizable');
+ if (!opt)
+ return;
+
+ $handle = getHandle(opt.handleSelector, $el);
+ $handle.off("mousedown." + opt.instanceId + " touchstart." + opt.instanceId);
+ if (opt.touchActionNone)
+ $handle.css("touch-action", "");
+ $el.removeClass("resizable");
+ return;
+ }
+
+ $el.data('resizable', opt);
+
+ // get the drag handle
+
+ $handle = getHandle(opt.handleSelector, $el);
+
+ if (opt.touchActionNone)
+ $handle.css("touch-action", "none");
+
+ $el.addClass("resizable");
+ $handle.on("mousedown." + opt.instanceId + " touchstart." + opt.instanceId, startDragging);
+
+ function noop(e) {
+ e.stopPropagation();
+ e.preventDefault();
+ };
+
+ function startDragging(e) {
+ // Prevent dragging a ghost image in HTML5 / Firefox and maybe others
+ if ( e.preventDefault ) {
+ e.preventDefault();
+ }
+
+ startPos = getMousePos(e);
+ startPos.width = parseInt($el.width(), 10);
+ startPos.height = parseInt($el.height(), 10);
+
+ startTransition = $el.css("transition");
+ $el.css("transition", "none");
+
+ if (opt.onDragStart) {
+ if (opt.onDragStart(e, $el, opt) === false)
+ return;
+ }
+
+ $(document).on('mousemove.' + opt.instanceId, doDrag);
+ $(document).on('mouseup.' + opt.instanceId, stopDragging);
+ if (window.Touch || navigator.maxTouchPoints) {
+ $(document).on('touchmove.' + opt.instanceId, doDrag);
+ $(document).on('touchend.' + opt.instanceId, stopDragging);
+ }
+ $(document).on('selectstart.' + opt.instanceId, noop); // disable selection
+ $("iframe").css("pointer-events","none");
+ }
+
+ function doDrag(e) {
+
+ var pos = getMousePos(e), newWidth, newHeight;
+
+ if (opt.resizeWidthFrom === 'left')
+ newWidth = startPos.width - pos.x + startPos.x;
+ else
+ newWidth = startPos.width + pos.x - startPos.x;
+
+ if (opt.resizeHeightFrom === 'top')
+ newHeight = startPos.height - pos.y + startPos.y;
+ else
+ newHeight = startPos.height + pos.y - startPos.y;
+
+ if (!opt.onDrag || opt.onDrag(e, $el, newWidth, newHeight, opt) !== false) {
+ if (opt.resizeHeight)
+ $el.height(newHeight);
+
+ if (opt.resizeWidth)
+ $el.width(newWidth);
+ }
+ }
+
+ function stopDragging(e) {
+ e.stopPropagation();
+ e.preventDefault();
+
+ $(document).off('mousemove.' + opt.instanceId);
+ $(document).off('mouseup.' + opt.instanceId);
+
+ if (window.Touch || navigator.maxTouchPoints) {
+ $(document).off('touchmove.' + opt.instanceId);
+ $(document).off('touchend.' + opt.instanceId);
+ }
+ $(document).off('selectstart.' + opt.instanceId, noop);
+
+ // reset changed values
+ $el.css("transition", startTransition);
+ $("iframe").css("pointer-events","auto");
+
+ if (opt.onDragEnd)
+ opt.onDragEnd(e, $el, opt);
+
+ return false;
+ }
+
+ function getMousePos(e) {
+ var pos = { x: 0, y: 0, width: 0, height: 0 };
+ if (typeof e.clientX === "number") {
+ pos.x = e.clientX;
+ pos.y = e.clientY;
+ } else if (e.originalEvent.touches) {
+ pos.x = e.originalEvent.touches[0].clientX;
+ pos.y = e.originalEvent.touches[0].clientY;
+ } else
+ return null;
+
+ return pos;
+ }
+
+ function getHandle(selector, $el) {
+ if (selector && selector.trim()[0] === ">") {
+ selector = selector.trim().replace(/^>\s*/, "");
+ return $el.find(selector);
+ }
+
+ // Search for the selector, but only in the parent element to limit the scope
+ // This works for multiple objects on a page (using .class syntax most likely)
+ // as long as each has a separate parent container.
+ return selector ? $el.parent().find(selector) : $el;
+ }
+ });
+ };
+}));