rhymix/common/js/plugins/jquery.finderSelect/jquery.finderSelect.min.js

1 line
No EOL
7.7 KiB
JavaScript
Executable file

!function(a){function h(b){var c=a(this),d={selectClass:"selected",unSelectClass:"un-selected",currentClass:"selected-current",lastClass:"selected-last",shiftClass:"selected-shift",ctrlClass:"selected-ctrl",triggerUpdate:"finderSelectUpdate",children:!1,event:"mousedown",cursor:"pointer",dragEvent:"mouseenter",enableClickDrag:!0,enableShiftClick:!0,enableCtrlClick:!0,enableSingleClick:!0,enableSelectAll:!0,enableDisableSelection:!0,enableTouchCtrlDefault:!0,enableDesktopCtrlDefault:!1,totalSelector:!1,menuSelector:!1,menuXOffset:0,menuYOffset:0};a.extend(d,b),f=d,f.children||(f.children=g.detect.children(c)),g.h.off(g.get.siblings(c,f),f),f.cursor&&g.set.cursor(c,f),f.enableDisableSelection&&g.core.disableSelection(c,f),f.enableClickDrag&&g.core.clickDrag(c,f),f.enableSelectAll&&g.core.selectAll(c,f),(f.enableShiftClick||f.enableCtrlClick||f.enableSingleClick)&&g.core.click(c,f),f.totalSelector&&g.core.totalUpdate(c,f),f.menuSelector&&g.core.loadMenu(c,f)}function j(a){g.h.on(a,f)}function k(a){g.h.off(a,f)}function l(){var b=a(this);g.h.on(b.find(f.children),f)}function m(){var b=a(this);g.h.off(b.find(f.children),f)}function n(){var b=a(this);return b.find(f.children+"."+f.selectClass)}function o(){var b=a(this);return b.find(f.children)}function p(){var b=a(this);g.t.update(b,f)}function q(a,b){if("object"==typeof a){var c;for(c=0;c<a.length;c++){var d=a[c];e[d]||(e[d]=[]),e[d].push(b)}}else e[a]||(e[a]=[]),e[a].push(b)}var b=a(document),c=a("body"),d={highlight:j,unHighlight:k,highlightAll:l,unHighlightAll:m,selected:n,children:o,update:p,addHook:q},e={},f={},g=a.fn.finderSelect=function(){if("string"==typeof arguments[0]){var a=Array.prototype.slice.call(arguments);return a.splice(0,1),d[arguments[0]].apply(this,a)}return h.apply(this,arguments),this};g.core={clickDrag:function(b,d){return g.set.mouseDown(!1),c.mousedown(function(a){g.detect.leftMouse(a)&&g.set.mouseDown(!0)}),c.mouseup(function(a){g.detect.leftMouse(a)&&g.set.mouseDown(!1)}),b.on(d.dragEvent,d.children,function(c){var e=g.get.clicks(b,d,a(this));g.get.mouseDown()&&g.detect.ctrl(c)&&(g.t.deleteSelection(d),g.t.toggleDrag(b,e,d))}),b},click:function(b,c){b.on(c.event,c.children,function(d){if(g.detect.leftMouse(d)){var e=g.get.clicks(b,c,a(this));g.detect.ctrl(d)&&c.enableCtrlClick||!g.detect.shift(d)||!c.enableShiftClick||(g.t.deleteSelection(c),g.t.shiftClick(b,e,c)),!(g.detect.ctrl(d)&&c.enableCtrlClick||g.detect.touch()&&c.enableTouchCtrlDefault||c.enableDesktopCtrlDefault)||g.detect.shift(d)&&c.enableShiftClick||g.t.toggleClick(b,e,c),g.detect.ctrl(d)&&c.enableCtrlClick||g.detect.shift(d)&&c.enableShiftClick||!c.enableSingleClick||c.enableDesktopCtrlDefault||g.t.singleClick(b,e,c)}})},selectAll:function(a,c){function d(b){g.detect.ctrl(b)&&65==b.keyCode&&(b.preventDefault(),g.detect.alt(b)?g.t.unHAll(a,c):g.t.hAll(a,c))}a.on("mouseover",function(){b.on("keydown",d)}),a.on("mouseout",function(){b.off("keydown",d)})},totalUpdate:function(b,c){b.on(c.triggerUpdate,function(){a(c.totalSelector).html(a(this).find(c.children).filter("."+c.selectClass).length)})},loadMenu:function(b,c){b.bind("contextmenu",function(b){return a(c.menuSelector).css({left:b.pageX+c.menuXOffset,top:b.pageY+c.menuYOffset}).show(),!1}).bind("mousedown",function(){a(c.menuSelector).hide()}),a(c.menuSelector).bind("click",function(){a(this).hide()})},disableSelection:function(a){function d(a){a.preventDefault()}b.on("keydown",function(){a.on("selectstart",d)}).on("keyup",function(){a.off("selectstart",d)})}},g.h={on:function(a,b){g.get.hook("highlight:before",[a,b]),a.removeClass(b.unSelectClass),a.addClass(b.selectClass),g.get.hook("highlight:after",[a,b])},off:function(a,b){g.get.hook("unHighlight:before",[a,b]),a.removeClass(b.selectClass),a.addClass(b.unSelectClass),g.get.hook("unHighlight:after",[a,b])},tog:function(b,c){b.each(function(){var b=a(this);g.detect.h(b,c)?g.h.off(b,c):g.h.on(b,c)})},reset:function(b,c){b.each(function(){var b=a(this);g.detect.lastH(b,c)?g.h.on(b,c):g.h.off(b,c)})},state:function(b,c){b.each(function(){var b=a(this);g.detect.h(b,c)?(b.removeClass("stateUnSelected"),b.addClass("stateSelected")):(b.removeClass("stateSelected"),b.addClass("stateUnSelected"))})}},g.detect={leftMouse:function(a){return 1==a.which},shift:function(a){return a.shiftKey},alt:function(a){return a.altKey},ctrl:function(a){return a.ctrlKey||a.metaKey},h:function(a,b){return a.hasClass(b.selectClass)},lastH:function(a){return a.hasClass("stateSelected")},touch:function(){return!!("ontouchstart"in window)||!!("onmsgesturechange"in window)},children:function(a){return a.children().get(0).tagName}},g.set={clicks:function(a,b,c,d,e){g.set.click(d,!1,e.currentClass),g.set.click(d,a,e.lastClass),g.set.click(d,b,e.shiftClass),g.set.click(d,c,e.ctrlClass),g.t.update(d,e)},click:function(a,b,c){g.get.click(a,c).removeClass(c),b&&b.addClass(c)},mouseDown:function(a){return c.data("down",a)},cursor:function(a,b){var c=g.get.siblings(a,b);return c.css("cursor",b.cursor)}},g.get={clicks:function(a,b,c){var d={};return g.set.click(a,c,b.currentClass),d.current={v:c,c:b.currentClass},d.hard={v:g.get.click(a,b.lastClass),c:b.lastClass},d.shift={v:g.get.click(a,b.shiftClass),c:b.shiftClass},d.ctrl={v:g.get.click(a,b.ctrlClass),c:b.ctrlClass},d},click:function(a,b){return a.find("."+b)},mouseDown:function(){return c.data("down")},siblings:function(a,b){return a.find(b.children)},between:function(a,b,c){return a.index(b.v)<a.index(c.v)?g.get.elem(!0,b.v,!1,c.c):g.get.elem(!1,b.v,!1,c.c)},elem:function(b,c,d,e){for(var f=[],g=b?c.next():c.prev();g.length;)"undefined"!=typeof e&&e&&g.hasClass(e)?g={}:(("undefined"==typeof d||!d||g.hasClass(d))&&f.push(g[0]),g=b?g.next():g.prev());return a(f)},hook:function(a,b){var c=e[a];if(c)for(i=0;i<c.length;i++)c[i].apply(void 0,b)}},g.t={update:function(a,b){return a.trigger(b.triggerUpdate)},deleteSelection:function(a){if(a.enableDisableSelection&&document.getSelection){var b=document.getSelection();b.removeAllRanges&&b.removeAllRanges()}},singleClick:function(a,b,c){var d=g.get.siblings(a,c);g.h.off(d,c),g.h.on(b.current.v,c),g.set.clicks(b.current.v,null,null,a,c)},toggleClick:function(a,b,c){var d=g.get.siblings(a,c);g.h.tog(b.current.v,c),g.h.state(d,c),g.set.clicks(b.current.v,null,null,a,c)},toggleDrag:function(a,b,c){var d=g.get.siblings(a,c);g.h.reset(d,c),d.index(b.current.v)!=d.index(b.hard.v)&&(g.h.tog(g.get.between(d,b.current,b.hard),c),g.h.tog(b.current.v,c)),g.set.clicks(b.hard.v,null,null,a,c)},shiftClick:function(b,c,d){var e=g.get.siblings(b,d),f=e.index(c.current.v),h=e.index(c.hard.v);if(0!=c.hard.v.length&&!g.detect.h(c.hard.v,d)){var i=g.get.elem(!0,c.hard.v,d.selectClass);if(i.length>0)c.hard.v=a(i[0]),g.set.click(b,c.hard.v,d.lastClass);else{var i=g.get.elem(h>f,c.hard.v,d.selectClass);i.length>0?(i=f>h?a(i[0]):a(i[i.length-1]),c.hard.v=i,g.set.click(b,c.hard.v,d.lastClass)):(c.hard.v=e.first(),g.set.click(b,c.hard.v,d.lastClass),g.t.singleClick(e,{current:{v:e.first()}},d))}}var h=e.index(c.hard.v),j=e.index(c.shift.v),f=e.index(c.current.v);0==c.hard.v.length&&g.t.singleClick(e,{current:{v:e.first()}},d),0!=c.shift.v.length?((j>h&&f>h&&j>f||h>j&&h>f&&f>j)&&g.h.off(g.get.between(e,c.shift,c.current),d),(j>h&&h>f&&j>f||h>j&&f>h&&f>j)&&(g.h.off(g.get.between(e,c.shift,c.hard),d),g.h.on(g.get.between(e,c.current,c.hard),d)),h>j&&h>f&&j>f||j>h&&f>h&&f>j||h==j?g.h.on(g.get.between(e,c.shift,c.current),d):(g.h.off(c.shift.v,d),g.t.unHExist(f>j,c.shift.v,d))):(g.t.unHExist(f>h,c.hard.v,d),g.h.on(g.get.between(e,c.current,c.hard),d)),g.h.on(c.current.v,d),g.set.clicks(c.hard.v,c.current.v,null,b,d)},unHAll:function(a,b){g.h.off(a.find(b.children),b)},hAll:function(a,b){g.h.on(a.find(b.children),b)},unHExist:function(a,b,c){a?g.h.off(g.get.elem(!1,b,!1,c.unSelectClass),c):g.h.off(g.get.elem(!0,b,!1,c.unSelectClass),c)}}}(window.jQuery||window.Zepto);