2016-08-19 06:44:07 +02:00
/ * *
2016-08-20 22:33:40 +02:00
* gridstack . js 0.3 . 0 - dev
2016-08-19 06:44:07 +02:00
* http : //troolee.github.io/gridstack.js/
2016-08-20 21:48:10 +02:00
* ( c ) 2014 - 2016 Pavel Reznikov , Dylan Weiss
2016-08-19 06:44:07 +02:00
* gridstack . js may be freely distributed under the MIT license .
* @ preserve
* /
2016-08-21 16:33:24 +02:00
! function ( a ) { if ( "function" == typeof define && define . amd ) define ( [ "jquery" , "lodash" ] , a ) ; else if ( "undefined" != typeof exports ) { try { jQuery = require ( "jquery" ) } catch ( b ) { } try { _ = require ( "lodash" ) } catch ( b ) { } a ( jQuery , _ ) } else a ( jQuery , _ ) } ( function ( a , b ) {
2016-08-19 06:44:07 +02:00
// jscs:enable requireCamelCaseOrUpperCaseIdentifiers
/ * *
* @ class GridStackDragDropPlugin
* Base class for drag 'n' drop plugin .
* /
2016-08-21 16:33:24 +02:00
function c ( a ) { this . grid = a } var d = window , e = function ( a , b , c ) { var d = function ( ) { return console . warn ( "gridstack.js: Function `" + b + "` is deprecated as of v0.2.5 and has been replaced with `" + c + "`. It will be **completely** removed in v1.0." ) , a . apply ( this , arguments ) } ; return d . prototype = a . prototype , d } , f = function ( a , b ) { console . warn ( "gridstack.js: Option `" + a + "` is deprecated as of v0.2.5 and has been replaced with `" + b + "`. It will be **completely** removed in v1.0." ) } , g = { isIntercepted : function ( a , b ) { return ! ( a . x + a . width <= b . x || b . x + b . width <= a . x || a . y + a . height <= b . y || b . y + b . height <= a . y ) } , sort : function ( a , c , d ) { return d = d || b . chain ( a ) . map ( function ( a ) { return a . x + a . width } ) . max ( ) . value ( ) , c = - 1 != c ? 1 : - 1 , b . sortBy ( a , function ( a ) { return c * ( a . x + a . y * d ) } ) } , createStylesheet : function ( a ) { var b = document . createElement ( "style" ) ; return b . setAttribute ( "type" , "text/css" ) , b . setAttribute ( "data-gs-style-id" , a ) , b . styleSheet ? b . styleSheet . cssText = "" : b . appendChild ( document . createTextNode ( "" ) ) , document . getElementsByTagName ( "head" ) [ 0 ] . appendChild ( b ) , b . sheet } , removeStylesheet : function ( b ) { a ( "STYLE[data-gs-style-id=" + b + "]" ) . remove ( ) } , insertCSSRule : function ( a , b , c , d ) { "function" == typeof a . insertRule ? a . insertRule ( b + "{" + c + "}" , d ) : "function" == typeof a . addRule && a . addRule ( b , c , d ) } , toBool : function ( a ) { return "boolean" == typeof a ? a : "string" == typeof a ? ( a = a . toLowerCase ( ) , ! ( "" === a || "no" == a || "false" == a || "0" == a ) ) : Boolean ( a ) } , _collisionNodeCheck : function ( a ) { return a != this . node && g . isIntercepted ( a , this . nn ) } , _didCollide : function ( a ) { return g . isIntercepted ( { x : this . n . x , y : this . newY , width : this . n . width , height : this . n . height } , a ) } , _isAddNodeIntercepted : function ( a ) { return g . isIntercepted ( { x : this . x , y : this . y , width : this . node . width , height : this . node . height } , a ) } , parseHeight : function ( a ) { var c = a , d = "px" ; if ( c && b . isString ( c ) ) { var e = c . match ( /^(-[0-9]+\.[0-9]+|[0-9]*\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw)?$/ ) ; if ( ! e ) throw new Error ( "Invalid height" ) ; d = e [ 2 ] || "px" , c = parseFloat ( e [ 1 ] ) } return { height : c , unit : d } } } ;
2016-08-19 06:44:07 +02:00
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
2016-08-21 16:33:24 +02:00
g . is _intercepted = e ( g . isIntercepted , "is_intercepted" , "isIntercepted" ) , g . create _stylesheet = e ( g . createStylesheet , "create_stylesheet" , "createStylesheet" ) , g . remove _stylesheet = e ( g . removeStylesheet , "remove_stylesheet" , "removeStylesheet" ) , g . insert _css _rule = e ( g . insertCSSRule , "insert_css_rule" , "insertCSSRule" ) , c . registeredPlugins = [ ] , c . registerPlugin = function ( a ) { c . registeredPlugins . push ( a ) } , c . prototype . resizable = function ( a , b ) { return this } , c . prototype . draggable = function ( a , b ) { return this } , c . prototype . droppable = function ( a , b ) { return this } , c . prototype . isDroppable = function ( a ) { return ! 1 } , c . prototype . on = function ( a , b , c ) { return this } ; var h = 0 , i = function ( a , b , c , d , e ) { this . width = a , this [ "float" ] = c || ! 1 , this . height = d || 0 , this . nodes = e || [ ] , this . onchange = b || function ( ) { } , this . _updateCounter = 0 , this . _float = this [ "float" ] , this . _addedNodes = [ ] , this . _removedNodes = [ ] } ; i . prototype . batchUpdate = function ( ) { this . _updateCounter = 1 , this [ "float" ] = ! 0 } , i . prototype . commit = function ( ) { 0 !== this . _updateCounter && ( this . _updateCounter = 0 , this [ "float" ] = this . _float , this . _packNodes ( ) , this . _notify ( ) ) } ,
2016-08-19 06:44:07 +02:00
// For Meteor support: https://github.com/troolee/gridstack.js/pull/272
2016-08-21 16:33:24 +02:00
i . prototype . getNodeDataByDOMEl = function ( a ) { return b . find ( this . nodes , function ( b ) { return a . get ( 0 ) === b . el . get ( 0 ) } ) } , i . prototype . _fixCollisions = function ( a ) { this . _sortNodes ( - 1 ) ; var c = a , d = Boolean ( b . find ( this . nodes , function ( a ) { return a . locked } ) ) ; for ( this [ "float" ] || d || ( c = { x : 0 , y : a . y , width : this . width , height : a . height } ) ; ; ) { var e = b . find ( this . nodes , b . bind ( g . _collisionNodeCheck , { node : a , nn : c } ) ) ; if ( "undefined" == typeof e ) return ; this . moveNode ( e , e . x , a . y + a . height , e . width , e . height , ! 0 ) } } , i . prototype . isAreaEmpty = function ( a , c , d , e ) { var f = { x : a || 0 , y : c || 0 , width : d || 1 , height : e || 1 } , h = b . find ( this . nodes , b . bind ( function ( a ) { return g . isIntercepted ( a , f ) } , this ) ) ; return null === h || "undefined" == typeof h } , i . prototype . _sortNodes = function ( a ) { this . nodes = g . sort ( this . nodes , a , this . width ) } , i . prototype . _packNodes = function ( ) { this . _sortNodes ( ) , this [ "float" ] ? b . each ( this . nodes , b . bind ( function ( a , c ) { if ( ! a . _updating && "undefined" != typeof a . _origY && a . y != a . _origY ) for ( var d = a . y ; d >= a . _origY ; ) { var e = b . chain ( this . nodes ) . find ( b . bind ( g . _didCollide , { n : a , newY : d } ) ) . value ( ) ; e || ( a . _dirty = ! 0 , a . y = d ) , -- d } } , this ) ) : b . each ( this . nodes , b . bind ( function ( a , c ) { if ( ! a . locked ) for ( ; a . y > 0 ; ) { var d = a . y - 1 , e = 0 === c ; if ( c > 0 ) { var f = b . chain ( this . nodes ) . take ( c ) . find ( b . bind ( g . _didCollide , { n : a , newY : d } ) ) . value ( ) ; e = "undefined" == typeof f } if ( ! e ) break ; a . _dirty = a . y != d , a . y = d } } , this ) ) } , i . prototype . _prepareNode = function ( a , c ) { return a = b . defaults ( a || { } , { width : 1 , height : 1 , x : 0 , y : 0 } ) , a . x = parseInt ( "" + a . x ) , a . y = parseInt ( "" + a . y ) , a . width = parseInt ( "" + a . width ) , a . height = parseInt ( "" + a . height ) , a . autoPosition = a . autoPosition || ! 1 , a . noResize = a . noResize || ! 1 , a . noMove = a . noMove || ! 1 , a . width > this . width ? a . width = this . width : a . width < 1 && ( a . width = 1 ) , a . height < 1 && ( a . height = 1 ) , a . x < 0 && ( a . x = 0 ) , a . x + a . width > this . width && ( c ? a . width = this . width - a . x : a . x = this . width - a . width ) , a . y < 0 && ( a . y = 0 ) , a } , i . prototype . _notify = function ( ) { var a = Array . prototype . slice . call ( arguments , 0 ) ; if ( a [ 0 ] = "undefined" == typeof a [ 0 ] ? [ ] : [ a [ 0 ] ] , a [ 1 ] = "undefined" == typeof a [ 1 ] ? ! 0 : a [ 1 ] , ! this . _updateCounter ) { var b = a [ 0 ] . concat ( this . getDirtyNodes ( ) ) ; this . onchange ( b , a [ 1 ] ) } } , i . prototype . cleanNodes = function ( ) { this . _updateCounter || b . each ( this . nodes , function ( a ) { a . _dirty = ! 1 } ) } , i . prototype . getDirtyNodes = function ( ) { return b . filter ( this . nodes , function ( a ) { return a . _dirty } ) } , i . prototype . addNode = function ( a , c ) { if ( a = this . _prepareNode ( a ) , "undefined" != typeof a . maxWidth && ( a . width = Math . min ( a . width , a . maxWidth ) ) , "undefined" != typeof a . maxHeight && ( a . height = Math . min ( a . height , a . maxHeight ) ) , "undefined" != typeof a . minWidth && ( a . width = Math . max ( a . width , a . minWidth ) ) , "undefined" != typeof a . minHeight && ( a . height = Math . max ( a . height , a . minHeight ) ) , a . _id = ++ h , a . _dirty = ! 0 , a . autoPosition ) { this . _sortNodes ( ) ; for ( var d = 0 ; ; ++ d ) { var e = d % this . width , f = Math . floor ( d / this . width ) ; if ( ! ( e + a . width > this . width || b . find ( this . nodes , b . bind ( g . _isAddNodeIntercepted , { x : e , y : f , node : a } ) ) ) ) { a . x = e , a . y = f ; break } } } return this . nodes . push ( a ) , "undefined" != typeof c && c && this . _addedNodes . push ( b . clone ( a ) ) , this . _fixCollisions ( a ) , this . _packNodes ( ) , this . _notify ( ) , a } , i . prototype . removeNode = function ( a , c ) { c = "undefined" == typeof c ? ! 0 : c , this . _removedNodes . push ( b . clone ( a ) ) , a . _id = null , this . nodes = b . without ( this . nodes , a ) , this . _packNodes ( ) , this . _notify ( a , c ) } , i . prototype . canMoveNode = function ( c , d , e , f , g ) { if ( ! this . isNodeChangedPosition ( c , d , e , f , g ) ) return ! 1 ; var h = Boolean ( b . find ( this . nodes , function ( a ) { return a . locked } ) ) ; if ( ! this . height && ! h ) return ! 0 ; var j , k = new i ( this . width , null , this [ "float" ] , 0 , b . map ( this . nodes , function ( b ) { return b == c ? j = a . extend ( { } , b ) : a . extend ( { } , b ) } ) ) ; if ( "undefined" == typeof j ) return ! 0 ; k . moveNode ( j , d , e , f , g ) ; var l = ! 0 ; return h && ( l &= ! Boolean ( b . find ( k . nodes , function ( a ) { return a != j && Boolean ( a . locked ) && Boolean ( a . _dirty ) } ) ) ) , this . height && ( l &= k . getGridHeight ( ) <= this . height ) , l } , i . prototype . canBePlacedWithRespectToHeight = function ( c ) { if ( ! this . height ) return ! 0 ; var d = new i ( this . width , null , this [ "float" ] , 0 , b . map ( this . nodes , function ( b ) { return a . extend ( { } , b ) } ) ) ; return d . addNode ( c ) , d . getGridHeight ( ) <= this . height } , i . prototype . isNodeChangedPosition = function ( a , b , c , d , e ) { return "number" != typeof b && ( b = a . x ) , "number" != typeof c && ( c = a . y ) , "number" != typeof d && ( d = a . width ) , "number" != typeof e && ( e = a . height ) , "undefined" != typeof a . maxW
2016-08-19 06:44:07 +02:00
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
// jscs:enable requireCamelCaseOrUpperCaseIdentifiers
2016-08-21 16:33:24 +02:00
return j . prototype . _triggerChangeEvent = function ( a ) { var b = this . grid . getDirtyNodes ( ) , c = ! 1 , d = [ ] ; b && b . length && ( d . push ( b ) , c = ! 0 ) , ( c || a === ! 0 ) && this . container . trigger ( "change" , d ) } , j . prototype . _triggerAddEvent = function ( ) { this . grid . _addedNodes && this . grid . _addedNodes . length > 0 && ( this . container . trigger ( "added" , [ b . map ( this . grid . _addedNodes , b . clone ) ] ) , this . grid . _addedNodes = [ ] ) } , j . prototype . _triggerRemoveEvent = function ( ) { this . grid . _removedNodes && this . grid . _removedNodes . length > 0 && ( this . container . trigger ( "removed" , [ b . map ( this . grid . _removedNodes , b . clone ) ] ) , this . grid . _removedNodes = [ ] ) } , j . prototype . _initStyles = function ( ) { this . _stylesId && g . removeStylesheet ( this . _stylesId ) , this . _stylesId = "gridstack-style-" + ( 1e5 * Math . random ( ) ) . toFixed ( ) , this . _styles = g . createStylesheet ( this . _stylesId ) , null !== this . _styles && ( this . _styles . _max = 0 ) } , j . prototype . _updateStyles = function ( a ) { if ( null !== this . _styles && "undefined" != typeof this . _styles ) { var b , c = "." + this . opts . _class + " ." + this . opts . itemClass , d = this ; if ( "undefined" == typeof a && ( a = this . _styles . _max , this . _initStyles ( ) , this . _updateContainerHeight ( ) ) , this . opts . cellHeight && ! ( 0 !== this . _styles . _max && a <= this . _styles . _max ) && ( b = this . opts . verticalMargin && this . opts . cellHeightUnit !== this . opts . verticalMarginUnit ? function ( a , b ) { return a && b ? "calc(" + ( d . opts . cellHeight * a + d . opts . cellHeightUnit ) + " + " + ( d . opts . verticalMargin * b + d . opts . verticalMarginUnit ) + ")" : d . opts . cellHeight * a + d . opts . verticalMargin * b + d . opts . cellHeightUnit } : function ( a , b ) { return d . opts . cellHeight * a + d . opts . verticalMargin * b + d . opts . cellHeightUnit } , 0 === this . _styles . _max && g . insertCSSRule ( this . _styles , c , "min-height: " + b ( 1 , 0 ) + ";" , 0 ) , a > this . _styles . _max ) ) { for ( var e = this . _styles . _max ; a > e ; ++ e ) g . insertCSSRule ( this . _styles , c + '[data-gs-height="' + ( e + 1 ) + '"]' , "height: " + b ( e + 1 , e ) + ";" , e ) , g . insertCSSRule ( this . _styles , c + '[data-gs-min-height="' + ( e + 1 ) + '"]' , "min-height: " + b ( e + 1 , e ) + ";" , e ) , g . insertCSSRule ( this . _styles , c + '[data-gs-max-height="' + ( e + 1 ) + '"]' , "max-height: " + b ( e + 1 , e ) + ";" , e ) , g . insertCSSRule ( this . _styles , c + '[data-gs-y="' + e + '"]' , "top: " + b ( e , e ) + ";" , e ) ; this . _styles . _max = a } } } , j . prototype . _updateContainerHeight = function ( ) { if ( ! this . grid . _updateCounter ) { var a = this . grid . getGridHeight ( ) ; this . container . attr ( "data-gs-current-height" , a ) , this . opts . cellHeight && ( this . opts . verticalMargin ? this . opts . cellHeightUnit === this . opts . verticalMarginUnit ? this . container . css ( "height" , a * ( this . opts . cellHeight + this . opts . verticalMargin ) - this . opts . verticalMargin + this . opts . cellHeightUnit ) : this . container . css ( "height" , "calc(" + ( a * this . opts . cellHeight + this . opts . cellHeightUnit ) + " + " + ( a * ( this . opts . verticalMargin - 1 ) + this . opts . verticalMarginUnit ) + ")" ) : this . container . css ( "height" , a * this . opts . cellHeight + this . opts . cellHeightUnit ) ) } } , j . prototype . _isOneColumnMode = function ( ) { return ( window . innerWidth || document . documentElement . clientWidth || document . body . clientWidth ) <= this . opts . minWidth } , j . prototype . _setupRemovingTimeout = function ( b ) { var c = this , d = a ( b ) . data ( "_gridstack_node" ) ; ! d . _removeTimeout && c . opts . removable && ( d . _removeTimeout = setTimeout ( function ( ) { b . addClass ( "grid-stack-item-removing" ) , d . _isAboutToRemove = ! 0 } , c . opts . removeTimeout ) ) } , j . prototype . _clearRemovingTimeout = function ( b ) { var c = a ( b ) . data ( "_gridstack_node" ) ; c . _removeTimeout && ( clearTimeout ( c . _removeTimeout ) , c . _removeTimeout = null , b . removeClass ( "grid-stack-item-removing" ) , c . _isAboutToRemove = ! 1 ) } , j . prototype . _prepareElementsByNode = function ( b , c ) { if ( "undefined" != typeof a . ui ) { var d , e , f = this , g = function ( a , g ) { var h , i , j = Math . round ( g . position . left / d ) , k = Math . floor ( ( g . position . top + e / 2 ) / e ) ; if ( "drag" != a . type && ( h = Math . round ( g . size . width / d ) , i = Math . round ( g . size . height / e ) ) , "drag" == a . type ) 0 > j || j >= f . grid . width || 0 > k ? ( f . opts . removable === ! 0 && f . _setupRemovingTimeout ( b ) , j = c . _beforeDragX , k = c . _beforeDragY , f . placeholder . detach ( ) , f . placeholder . hide ( ) , f . grid . removeNode ( c ) , f . _updateContainerHeight ( ) , c . _temporaryRemoved = ! 0 ) : ( f . _clearRemovingTimeout ( b ) , c . _temporaryRemoved && ( f . grid . addNode ( c ) , f . placeholder . attr ( "data-gs-x" , j ) . attr ( "data-gs-y" , k ) . attr ( "data-gs-width" , h ) . attr ( "data-gs-height" , i ) . show ( ) , f . container . append ( f . placeholder ) , c . el = f . placeholder , c . _temporaryRemoved = ! 1 ) ) ; else if ( "resize" == a . type && 0 > j ) return ;
// width and height are undefined if not resizing
var l = "undefined" != typeof h ? h : c . lastTriedWidth , m = "undefined" != typeof i ? i : c . lastTriedHeight ; ! f . grid . canMoveNode ( c , j , k , h , i ) || c . lastTriedX === j && c . lastTriedY === k && c . lastTriedWidth === l && c . lastTriedHeight === m || ( c . lastTriedX = j , c . lastTriedY = k , c . lastTriedWidth = h , c . lastTriedHeight = i , f . grid . moveNode ( c , j , k , h , i ) , f . _updateContainerHeight ( ) ) } , h = function ( g , h ) { f . container . append ( f . placeholder ) ; var i = a ( this ) ; f . grid . cleanNodes ( ) , f . grid . beginUpdate ( c ) , d = f . cellWidth ( ) ; var j = Math . ceil ( i . outerHeight ( ) / i . attr ( "data-gs-height" ) ) ; e = f . container . height ( ) / parseInt ( f . container . attr ( "data-gs-current-height" ) ) , f . placeholder . attr ( "data-gs-x" , i . attr ( "data-gs-x" ) ) . attr ( "data-gs-y" , i . attr ( "data-gs-y" ) ) . attr ( "data-gs-width" , i . attr ( "data-gs-width" ) ) . attr ( "data-gs-height" , i . attr ( "data-gs-height" ) ) . show ( ) , c . el = f . placeholder , c . _beforeDragX = c . x , c . _beforeDragY = c . y , f . dd . resizable ( b , "option" , "minWidth" , d * ( c . minWidth || 1 ) ) , f . dd . resizable ( b , "option" , "minHeight" , j * ( c . minHeight || 1 ) ) , "resizestart" == g . type && i . find ( ".grid-stack-item" ) . trigger ( "resizestart" ) } , i = function ( d , e ) { var g = a ( this ) ; if ( g . data ( "_gridstack_node" ) ) { var h = ! 1 ; f . placeholder . detach ( ) , c . el = g , f . placeholder . hide ( ) , c . _isAboutToRemove ? ( h = ! 0 , b . removeData ( "_gridstack_node" ) , b . remove ( ) ) : ( f . _clearRemovingTimeout ( b ) , c . _temporaryRemoved ? ( g . attr ( "data-gs-x" , c . _beforeDragX ) . attr ( "data-gs-y" , c . _beforeDragY ) . attr ( "data-gs-width" , c . width ) . attr ( "data-gs-height" , c . height ) . removeAttr ( "style" ) , c . x = c . _beforeDragX , c . y = c . _beforeDragY , f . grid . addNode ( c ) ) : g . attr ( "data-gs-x" , c . x ) . attr ( "data-gs-y" , c . y ) . attr ( "data-gs-width" , c . width ) . attr ( "data-gs-height" , c . height ) . removeAttr ( "style" ) ) , f . _updateContainerHeight ( ) , f . _triggerChangeEvent ( h ) , f . grid . endUpdate ( ) ; var i = g . find ( ".grid-stack" ) ; i . length && "resizestop" == d . type && ( i . each ( function ( b , c ) { a ( c ) . data ( "gridstack" ) . onResizeHandler ( ) } ) , g . find ( ".grid-stack-item" ) . trigger ( "resizestop" ) ) } } ; this . dd . draggable ( b , { start : h , stop : i , drag : g } ) . resizable ( b , { start : h , stop : i , resize : g } ) , ( c . noMove || this . _isOneColumnMode ( ) || this . opts . disableDrag ) && this . dd . draggable ( b , "disable" ) , ( c . noResize || this . _isOneColumnMode ( ) || this . opts . disableResize ) && this . dd . resizable ( b , "disable" ) , b . attr ( "data-gs-locked" , c . locked ? "yes" : null ) } } , j . prototype . _prepareElement = function ( b , c ) { c = "undefined" != typeof c ? c : ! 1 ; var d = this ; b = a ( b ) , b . addClass ( this . opts . itemClass ) ; var e = d . grid . addNode ( { x : b . attr ( "data-gs-x" ) , y : b . attr ( "data-gs-y" ) , width : b . attr ( "data-gs-width" ) , height : b . attr ( "data-gs-height" ) , maxWidth : b . attr ( "data-gs-max-width" ) , minWidth : b . attr ( "data-gs-min-width" ) , maxHeight : b . attr ( "data-gs-max-height" ) , minHeight : b . attr ( "data-gs-min-height" ) , autoPosition : g . toBool ( b . attr ( "data-gs-auto-position" ) ) , noResize : g . toBool ( b . attr ( "data-gs-no-resize" ) ) , noMove : g . toBool ( b . attr ( "data-gs-no-move" ) ) , locked : g . toBool ( b . attr ( "data-gs-locked" ) ) , el : b , id : b . attr ( "data-gs-id" ) , _grid : d } , c ) ; b . data ( "_gridstack_node" , e ) , this . _prepareElementsByNode ( b , e ) } , j . prototype . setAnimation = function ( a ) { a ? this . container . addClass ( "grid-stack-animate" ) : this . container . removeClass ( "grid-stack-animate" ) } , j . prototype . addWidget = function ( b , c , d , e , f , g , h , i , j , k , l ) { return b = a ( b ) , "undefined" != typeof c && b . attr ( "data-gs-x" , c ) , "undefined" != typeof d && b . attr ( "data-gs-y" , d ) , "undefined" != typeof e && b . attr ( "data-gs-width" , e ) , "undefined" != typeof f && b . attr ( "data-gs-height" , f ) , "undefined" != typeof g && b . attr ( "data-gs-auto-position" , g ? "yes" : null ) , "undefined" != typeof h && b . attr ( "data-gs-min-width" , h ) , "undefined" != typeof i && b . attr ( "data-gs-max-width" , i ) , "undefined" != typeof j && b . attr ( "data-gs-min-height" , j ) , "undefined" != typeof k && b . attr ( "data-gs-max-height" , k ) , "undefined" != typeof l && b . attr ( "data-gs-id" , l ) , this . container . append ( b ) , this . _prepareElement ( b , ! 0 ) , this . _triggerAddEvent ( ) , this . _updateContainerHeight ( ) , this . _triggerChangeEvent ( ! 0 ) , b } , j . prototype . makeWidget = function ( b ) { return b = a ( b ) , this . _prepareElement ( b , ! 0 ) , this . _triggerAddEvent ( ) , this . _updateContainerHeight ( ) , this . _triggerChangeEvent ( ! 0 ) , b } , j . prototype . willItFit = function ( a , b , c , d , e ) { var f = { x : a , y : b , width : c , height : d , autoPosition : e } ; return this . grid . canBePlacedWithRespectToHeight ( f ) } , j . prototype . removeWidget = function ( b , c ) { c = "undefined" == typeof c ? ! 0 : c , b = a ( b ) ; var d =
2016-08-19 06:44:07 +02:00
// For Meteor support: https://github.com/troolee/gridstack.js/pull/272
d || ( d = this . grid . getNodeDataByDOMEl ( b ) ) , this . grid . removeNode ( d , c ) , b . removeData ( "_gridstack_node" ) , this . _updateContainerHeight ( ) , c && b . remove ( ) , this . _triggerChangeEvent ( ! 0 ) , this . _triggerRemoveEvent ( ) } , j . prototype . removeAll = function ( a ) { b . each ( this . grid . nodes , b . bind ( function ( b ) { this . removeWidget ( b . el , a ) } , this ) ) , this . grid . nodes = [ ] , this . _updateContainerHeight ( ) } , j . prototype . destroy = function ( b ) { a ( window ) . off ( "resize" , this . onResizeHandler ) , this . disable ( ) , "undefined" == typeof b || b ? this . container . remove ( ) : ( this . removeAll ( ! 1 ) , this . container . removeData ( "gridstack" ) ) , g . removeStylesheet ( this . _stylesId ) , this . grid && ( this . grid = null ) } , j . prototype . resizable = function ( b , c ) { var d = this ; return b = a ( b ) , b . each ( function ( b , e ) { e = a ( e ) ; var f = e . data ( "_gridstack_node" ) ; "undefined" != typeof f && null !== f && "undefined" != typeof a . ui && ( f . noResize = ! c , f . noResize || d . _isOneColumnMode ( ) ? d . dd . resizable ( e , "disable" ) : d . dd . resizable ( e , "enable" ) ) } ) , this } , j . prototype . movable = function ( b , c ) { var d = this ; return b = a ( b ) , b . each ( function ( b , e ) { e = a ( e ) ; var f = e . data ( "_gridstack_node" ) ; "undefined" != typeof f && null !== f && "undefined" != typeof a . ui && ( f . noMove = ! c , f . noMove || d . _isOneColumnMode ( ) ? ( d . dd . draggable ( e , "disable" ) , e . removeClass ( "ui-draggable-handle" ) ) : ( d . dd . draggable ( e , "enable" ) , e . addClass ( "ui-draggable-handle" ) ) ) } ) , this } , j . prototype . enableMove = function ( a , b ) { this . movable ( this . container . children ( "." + this . opts . itemClass ) , a ) , b && ( this . opts . disableDrag = ! a ) } , j . prototype . enableResize = function ( a , b ) { this . resizable ( this . container . children ( "." + this . opts . itemClass ) , a ) , b && ( this . opts . disableResize = ! a ) } , j . prototype . disable = function ( ) { this . movable ( this . container . children ( "." + this . opts . itemClass ) , ! 1 ) , this . resizable ( this . container . children ( "." + this . opts . itemClass ) , ! 1 ) , this . container . trigger ( "disable" ) } , j . prototype . enable = function ( ) { this . movable ( this . container . children ( "." + this . opts . itemClass ) , ! 0 ) , this . resizable ( this . container . children ( "." + this . opts . itemClass ) , ! 0 ) , this . container . trigger ( "enable" ) } , j . prototype . locked = function ( b , c ) { return b = a ( b ) , b . each ( function ( b , d ) { d = a ( d ) ; var e = d . data ( "_gridstack_node" ) ; "undefined" != typeof e && null !== e && ( e . locked = c || ! 1 , d . attr ( "data-gs-locked" , e . locked ? "yes" : null ) ) } ) , this } , j . prototype . maxHeight = function ( b , c ) { return b = a ( b ) , b . each ( function ( b , d ) { d = a ( d ) ; var e = d . data ( "_gridstack_node" ) ; "undefined" != typeof e && null !== e && ( isNaN ( c ) || ( e . maxHeight = c || ! 1 , d . attr ( "data-gs-max-height" , c ) ) ) } ) , this } , j . prototype . minHeight = function ( b , c ) { return b = a ( b ) , b . each ( function ( b , d ) { d = a ( d ) ; var e = d . data ( "_gridstack_node" ) ; "undefined" != typeof e && null !== e && ( isNaN ( c ) || ( e . minHeight = c || ! 1 , d . attr ( "data-gs-min-height" , c ) ) ) } ) , this } , j . prototype . maxWidth = function ( b , c ) { return b = a ( b ) , b . each ( function ( b , d ) { d = a ( d ) ; var e = d . data ( "_gridstack_node" ) ; "undefined" != typeof e && null !== e && ( isNaN ( c ) || ( e . maxWidth = c || ! 1 , d . attr ( "data-gs-max-width" , c ) ) ) } ) , this } , j . prototype . minWidth = function ( b , c ) { return b = a ( b ) , b . each ( function ( b , d ) { d = a ( d ) ; var e = d . data ( "_gridstack_node" ) ; "undefined" != typeof e && null !== e && ( isNaN ( c ) || ( e . minWidth = c || ! 1 , d . attr ( "data-gs-min-width" , c ) ) ) } ) , this } , j . prototype . _updateElement = function ( b , c ) { b = a ( b ) . first ( ) ; var d = b . data ( "_gridstack_node" ) ; if ( "undefined" != typeof d && null !== d ) { var e = this ; e . grid . cleanNodes ( ) , e . grid . beginUpdate ( d ) , c . call ( this , b , d ) , e . _updateContainerHeight ( ) , e . _triggerChangeEvent ( ) , e . grid . endUpdate ( ) } } , j . prototype . resize = function ( a , b , c ) { this . _updateElement ( a , function ( a , d ) { b = null !== b && "undefined" != typeof b ? b : d . width , c = null !== c && "undefined" != typeof c ? c : d . height , this . grid . moveNode ( d , d . x , d . y , b , c ) } ) } , j . prototype . move = function ( a , b , c ) { this . _updateElement ( a , function ( a , d ) { b = null !== b && "undefined" != typeof b ? b : d . x , c = null !== c && "undefined" != typeof c ? c : d . y , this . grid . moveNode ( d , b , c , d . width , d . height ) } ) } , j . prototype . update = function ( a , b , c , d , e ) { this . _updateElement ( a , function ( a , f ) { b = null !== b && "undefined" != typeof b ? b : f . x , c = null !== c && "undefined" != typeof c ? c : f . y , d = null !== d && "undefined" != typeof d ? d : f . width , e = null !== e && "undefined" != typeof e ? e : f . height , this . grid . moveNode ( f , b , c , d , e ) } ) } , j . prototype . verticalMargin = function ( a , b ) { if ( "undefined" == typeof a ) return this . opts . verticalMargin ; var c = g . parseHeight ( a ) ; this . opts . verticalMarginUnit === c .
2016-08-20 22:33:40 +02:00
* gridstack . js 0.3 . 0 - dev
2016-08-19 06:44:07 +02:00
* http : //troolee.github.io/gridstack.js/
2016-08-20 21:48:10 +02:00
* ( c ) 2014 - 2016 Pavel Reznikov , Dylan Weiss
2016-08-19 06:44:07 +02:00
* gridstack . js may be freely distributed under the MIT license .
* @ preserve
* /
2016-08-21 16:33:24 +02:00
function ( a ) { if ( "function" == typeof define && define . amd ) define ( [ "jquery" , "lodash" , "gridstack" , "jquery-ui/data" , "jquery-ui/disable-selection" , "jquery-ui/focusable" , "jquery-ui/form" , "jquery-ui/ie" , "jquery-ui/keycode" , "jquery-ui/labels" , "jquery-ui/jquery-1-7" , "jquery-ui/plugin" , "jquery-ui/safe-active-element" , "jquery-ui/safe-blur" , "jquery-ui/scroll-parent" , "jquery-ui/tabbable" , "jquery-ui/unique-id" , "jquery-ui/version" , "jquery-ui/widget" , "jquery-ui/widgets/mouse" , "jquery-ui/widgets/draggable" , "jquery-ui/widgets/droppable" , "jquery-ui/widgets/resizable" ] , a ) ; else if ( "undefined" != typeof exports ) { try { jQuery = require ( "jquery" ) } catch ( b ) { } try { _ = require ( "lodash" ) } catch ( b ) { } try { GridStackUI = require ( "gridstack" ) } catch ( b ) { } a ( jQuery , _ , GridStackUI ) } else a ( jQuery , _ , GridStackUI ) } ( function ( a , b , c ) { / * *
2016-08-19 06:44:07 +02:00
* @ class JQueryUIGridStackDragDropPlugin
* jQuery UI implementation of drag 'n' drop gridstack plugin .
* /
function d ( a ) { c . GridStackDragDropPlugin . call ( this , a ) } window ; return c . GridStackDragDropPlugin . registerPlugin ( d ) , d . prototype = Object . create ( c . GridStackDragDropPlugin . prototype ) , d . prototype . constructor = d , d . prototype . resizable = function ( c , d ) { if ( c = a ( c ) , "disable" === d || "enable" === d ) c . resizable ( d ) ; else if ( "option" === d ) { var e = arguments [ 2 ] , f = arguments [ 3 ] ; c . resizable ( d , e , f ) } else c . resizable ( b . extend ( { } , this . grid . opts . resizable , { start : d . start || function ( ) { } , stop : d . stop || function ( ) { } , resize : d . resize || function ( ) { } } ) ) ; return this } , d . prototype . draggable = function ( c , d ) { return c = a ( c ) , "disable" === d || "enable" === d ? c . draggable ( d ) : c . draggable ( b . extend ( { } , this . grid . opts . draggable , { containment : this . grid . opts . isNested ? this . grid . container . parent ( ) : null , start : d . start || function ( ) { } , stop : d . stop || function ( ) { } , drag : d . drag || function ( ) { } } ) ) , this } , d . prototype . droppable = function ( b , c ) { return b = a ( b ) , "disable" === c || "enable" === c ? b . droppable ( c ) : b . droppable ( { accept : c . accept } ) , this } , d . prototype . isDroppable = function ( b , c ) { return b = a ( b ) , Boolean ( b . data ( "droppable" ) ) } , d . prototype . on = function ( b , c , d ) { return a ( b ) . on ( c , d ) , this } , d } ) ;
//# sourceMappingURL=gridstack.min.map