{"version":3,"file":"draggabilly-269a022a.js","sources":["../../../../../web/bootstrap-aunoa/node_modules/draggabilly/draggabilly.js"],"sourcesContent":["/*!\n * Draggabilly v2.3.0\n * Make that shiz draggable\n * https://draggabilly.desandro.com\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'get-size/get-size',\n 'unidragger/unidragger',\n ],\n function( getSize, Unidragger ) {\n return factory( window, getSize, Unidragger );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('get-size'),\n require('unidragger')\n );\n } else {\n // browser global\n window.Draggabilly = factory(\n window,\n window.getSize,\n window.Unidragger\n );\n }\n\n}( window, function factory( window, getSize, Unidragger ) {\n\n// -------------------------- helpers & variables -------------------------- //\n\n// extend objects\nfunction extend( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n}\n\nfunction noop() {}\n\nvar jQuery = window.jQuery;\n\n// -------------------------- -------------------------- //\n\nfunction Draggabilly( element, options ) {\n // querySelector if string\n this.element = typeof element == 'string' ?\n document.querySelector( element ) : element;\n\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n\n // options\n this.options = extend( {}, this.constructor.defaults );\n this.option( options );\n\n this._create();\n}\n\n// inherit Unidragger methods\nvar proto = Draggabilly.prototype = Object.create( Unidragger.prototype );\n\nDraggabilly.defaults = {\n};\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n extend( this.options, opts );\n};\n\n// css position values that don't need to be set\nvar positionValues = {\n relative: true,\n absolute: true,\n fixed: true,\n};\n\nproto._create = function() {\n // properties\n this.position = {};\n this._getPosition();\n\n this.startPoint = { x: 0, y: 0 };\n this.dragPoint = { x: 0, y: 0 };\n\n this.startPosition = extend( {}, this.position );\n\n // set relative positioning\n var style = getComputedStyle( this.element );\n if ( !positionValues[ style.position ] ) {\n this.element.style.position = 'relative';\n }\n\n // events, bridge jQuery events from vanilla\n this.on( 'pointerMove', this.onPointerMove );\n this.on( 'pointerUp', this.onPointerUp );\n\n this.enable();\n this.setHandles();\n};\n\n/**\n * set this.handles and bind start events to 'em\n */\nproto.setHandles = function() {\n this.handles = this.options.handle ?\n this.element.querySelectorAll( this.options.handle ) : [ this.element ];\n\n this.bindHandles();\n};\n\n/**\n * emits events via EvEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n var emitArgs = [ event ].concat( args );\n this.emitEvent( type, emitArgs );\n this.dispatchJQueryEvent( type, event, args );\n};\n\nproto.dispatchJQueryEvent = function( type, event, args ) {\n var jquery = window.jQuery;\n // trigger jQuery event\n if ( !jquery || !this.$element ) {\n return;\n }\n // create jQuery event\n /* eslint-disable-next-line new-cap */\n var $event = jquery.Event( event );\n $event.type = type;\n this.$element.trigger( $event, args );\n};\n\n// -------------------------- position -------------------------- //\n\n// get x/y position from style\nproto._getPosition = function() {\n var style = getComputedStyle( this.element );\n var x = this._getPositionCoord( style.left, 'width' );\n var y = this._getPositionCoord( style.top, 'height' );\n // clean up 'auto' or other non-integer values\n this.position.x = isNaN( x ) ? 0 : x;\n this.position.y = isNaN( y ) ? 0 : y;\n\n this._addTransformPosition( style );\n};\n\nproto._getPositionCoord = function( styleSide, measure ) {\n if ( styleSide.indexOf('%') != -1 ) {\n // convert percent into pixel for Safari, #75\n var parentSize = getSize( this.element.parentNode );\n // prevent not-in-DOM element throwing bug, #131\n return !parentSize ? 0 :\n ( parseFloat( styleSide ) / 100 ) * parentSize[ measure ];\n }\n return parseInt( styleSide, 10 );\n};\n\n// add transform: translate( x, y ) to position\nproto._addTransformPosition = function( style ) {\n var transform = style.transform;\n // bail out if value is 'none'\n if ( transform.indexOf('matrix') !== 0 ) {\n return;\n }\n // split matrix(1, 0, 0, 1, x, y)\n var matrixValues = transform.split(',');\n // translate X value is in 12th or 4th position\n var xIndex = transform.indexOf('matrix3d') === 0 ? 12 : 4;\n var translateX = parseInt( matrixValues[ xIndex ], 10 );\n // translate Y value is in 13th or 5th position\n var translateY = parseInt( matrixValues[ xIndex + 1 ], 10 );\n this.position.x += translateX;\n this.position.y += translateY;\n};\n\n// -------------------------- events -------------------------- //\n\nproto.onPointerDown = function( event, pointer ) {\n this.element.classList.add('is-pointer-down');\n this.dispatchJQueryEvent( 'pointerDown', event, [ pointer ] );\n};\n\nproto.pointerDown = function( event, pointer ) {\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay || !this.isEnabled ) {\n this._pointerReset();\n return;\n }\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. flickity#842\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n\n event.preventDefault();\n this.pointerDownBlur();\n // bind move and end events\n this._bindPostStartEvents( event );\n this.element.classList.add('is-pointer-down');\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\n/**\n * drag start\n * @param {Event} event\n * @param {[Event, Touch]} pointer\n */\nproto.dragStart = function( event, pointer ) {\n if ( !this.isEnabled ) {\n return;\n }\n this._getPosition();\n this.measureContainment();\n // position _when_ drag began\n this.startPosition.x = this.position.x;\n this.startPosition.y = this.position.y;\n // reset left/top style\n this.setLeftTop();\n\n this.dragPoint.x = 0;\n this.dragPoint.y = 0;\n\n this.element.classList.add('is-dragging');\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\n // start animation\n this.animate();\n};\n\nproto.measureContainment = function() {\n var container = this.getContainer();\n if ( !container ) {\n return;\n }\n\n var elemSize = getSize( this.element );\n var containerSize = getSize( container );\n var elemRect = this.element.getBoundingClientRect();\n var containerRect = container.getBoundingClientRect();\n\n var borderSizeX = containerSize.borderLeftWidth + containerSize.borderRightWidth;\n var borderSizeY = containerSize.borderTopWidth + containerSize.borderBottomWidth;\n\n var position = this.relativeStartPosition = {\n x: elemRect.left - ( containerRect.left + containerSize.borderLeftWidth ),\n y: elemRect.top - ( containerRect.top + containerSize.borderTopWidth ),\n };\n\n this.containSize = {\n width: ( containerSize.width - borderSizeX ) - position.x - elemSize.width,\n height: ( containerSize.height - borderSizeY ) - position.y - elemSize.height,\n };\n};\n\nproto.getContainer = function() {\n var containment = this.options.containment;\n if ( !containment ) {\n return;\n }\n var isElement = containment instanceof HTMLElement;\n // use as element\n if ( isElement ) {\n return containment;\n }\n // querySelector if string\n if ( typeof containment == 'string' ) {\n return document.querySelector( containment );\n }\n // fallback to parent element\n return this.element.parentNode;\n};\n\n// ----- move event ----- //\n\nproto.onPointerMove = function( event, pointer, moveVector ) {\n this.dispatchJQueryEvent( 'pointerMove', event, [ pointer, moveVector ] );\n};\n\n/**\n * drag move\n * @param {Event} event\n * @param {[Event, Touch]} pointer\n * @param {Object} moveVector - x and y coordinates\n */\nproto.dragMove = function( event, pointer, moveVector ) {\n if ( !this.isEnabled ) {\n return;\n }\n var dragX = moveVector.x;\n var dragY = moveVector.y;\n\n var grid = this.options.grid;\n var gridX = grid && grid[0];\n var gridY = grid && grid[1];\n\n dragX = applyGrid( dragX, gridX );\n dragY = applyGrid( dragY, gridY );\n\n dragX = this.containDrag( 'x', dragX, gridX );\n dragY = this.containDrag( 'y', dragY, gridY );\n\n // constrain to axis\n dragX = this.options.axis == 'y' ? 0 : dragX;\n dragY = this.options.axis == 'x' ? 0 : dragY;\n\n this.position.x = this.startPosition.x + dragX;\n this.position.y = this.startPosition.y + dragY;\n // set dragPoint properties\n this.dragPoint.x = dragX;\n this.dragPoint.y = dragY;\n\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nfunction applyGrid( value, grid, method ) {\n method = method || 'round';\n return grid ? Math[ method ]( value/grid ) * grid : value;\n}\n\nproto.containDrag = function( axis, drag, grid ) {\n if ( !this.options.containment ) {\n return drag;\n }\n var measure = axis == 'x' ? 'width' : 'height';\n\n var rel = this.relativeStartPosition[ axis ];\n var min = applyGrid( -rel, grid, 'ceil' );\n var max = this.containSize[ measure ];\n max = applyGrid( max, grid, 'floor' );\n return Math.max( min, Math.min( max, drag ) );\n};\n\n// ----- end event ----- //\n\n/**\n * pointer up\n * @param {Event} event\n * @param {[Event, Touch]} pointer\n */\nproto.onPointerUp = function( event, pointer ) {\n this.element.classList.remove('is-pointer-down');\n this.dispatchJQueryEvent( 'pointerUp', event, [ pointer ] );\n};\n\n/**\n * drag end\n * @param {Event} event\n * @param {[Event, Touch]} pointer\n */\nproto.dragEnd = function( event, pointer ) {\n if ( !this.isEnabled ) {\n return;\n }\n // use top left position when complete\n this.element.style.transform = '';\n this.setLeftTop();\n this.element.classList.remove('is-dragging');\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\n// -------------------------- animation -------------------------- //\n\nproto.animate = function() {\n // only render and animate if dragging\n if ( !this.isDragging ) {\n return;\n }\n\n this.positionDrag();\n\n var _this = this;\n requestAnimationFrame( function animateFrame() {\n _this.animate();\n } );\n\n};\n\n// left/top positioning\nproto.setLeftTop = function() {\n this.element.style.left = this.position.x + 'px';\n this.element.style.top = this.position.y + 'px';\n};\n\nproto.positionDrag = function() {\n this.element.style.transform = 'translate3d( ' + this.dragPoint.x +\n 'px, ' + this.dragPoint.y + 'px, 0)';\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n this.dispatchEvent( 'staticClick', event, [ pointer ] );\n};\n\n// ----- methods ----- //\n\n/**\n * @param {Number} x\n * @param {Number} y\n */\nproto.setPosition = function( x, y ) {\n this.position.x = x;\n this.position.y = y;\n this.setLeftTop();\n};\n\nproto.enable = function() {\n this.isEnabled = true;\n};\n\nproto.disable = function() {\n this.isEnabled = false;\n if ( this.isDragging ) {\n this.dragEnd();\n }\n};\n\nproto.destroy = function() {\n this.disable();\n // reset styles\n this.element.style.transform = '';\n this.element.style.left = '';\n this.element.style.top = '';\n this.element.style.position = '';\n // unbind handles\n this.unbindHandles();\n // remove jQuery data\n if ( this.$element ) {\n this.$element.removeData('draggabilly');\n }\n};\n\n// ----- jQuery bridget ----- //\n\n// required for jQuery bridget\nproto._init = noop;\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'draggabilly', Draggabilly );\n}\n\n// ----- ----- //\n\nreturn Draggabilly;\n\n} ) );\n"],"names":["window","factory","module","require$$0","require$$1","getSize","Unidragger","extend","a","b","prop","noop","jQuery","Draggabilly","element","options","proto","opts","positionValues","style","type","event","args","emitArgs","jquery","$event","x","y","styleSide","measure","parentSize","transform","matrixValues","xIndex","translateX","translateY","pointer","isOkay","container","elemSize","containerSize","elemRect","containerRect","borderSizeX","borderSizeY","position","containment","isElement","moveVector","dragX","dragY","grid","gridX","gridY","applyGrid","value","method","axis","drag","rel","min","max","_this"],"mappings":"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"}