UNPKG

golden-layout

Version:

A multi-screen javascript Layout manager https://golden-layout.com

52 lines (45 loc) 1.52 kB
/** * Allows for any DOM item to create a component on drag * start tobe dragged into the Layout * * @param {jQuery element} element * @param {Object} itemConfig the configuration for the contentItem that will be created * @param {LayoutManager} layoutManager * * @constructor */ lm.controls.DragSource = function( element, itemConfig, layoutManager ) { this._element = element; this._itemConfig = itemConfig; this._layoutManager = layoutManager; this._dragListener = null; this._createDragListener(); }; lm.utils.copy( lm.controls.DragSource.prototype, { /** * Called initially and after every drag * * @returns {void} */ _createDragListener: function() { if( this._dragListener !== null ) { this._dragListener.destroy(); } this._dragListener = new lm.utils.DragListener( this._element ); this._dragListener.on( 'dragStart', this._onDragStart, this ); this._dragListener.on( 'dragStop', this._createDragListener, this ); }, /** * Callback for the DragListener's dragStart event * * @param {int} x the x position of the mouse on dragStart * @param {int} y the x position of the mouse on dragStart * * @returns {void} */ _onDragStart: function( x, y ) { var contentItem = this._layoutManager._$normalizeContentItem( this._itemConfig ), dragProxy = new lm.controls.DragProxy( x, y, this._dragListener, this._layoutManager, contentItem, null ); this._layoutManager.transitionIndicator.transitionElements( this._element, dragProxy.element ); } });