{"version":3,"file":"jquery-toolbar.min.js","sources":["https:\/\/udl.id\/theme\/remui\/amd\/src\/jquery-toolbar.js"],"sourcesContent":["\/\/ This file is part of Moodle - http:\/\/moodle.org\/\n\/\/\n\/\/ Moodle is free software: you can redistribute it and\/or modify\n\/\/ it under the terms of the GNU General Public License as published by\n\/\/ the Free Software Foundation, either version 3 of the License, or\n\/\/ (at your option) any later version.\n\/\/\n\/\/ Moodle is distributed in the hope that it will be useful,\n\/\/ but WITHOUT ANY WARRANTY; without even the implied warranty of\n\/\/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\/\/ GNU General Public License for more details.\n\/\/\n\/\/ You should have received a copy of the GNU General Public License\n\/\/ along with Moodle. If not, see .\n\n\/* eslint-disable *\/\n\/**\n * Toolbar.js\n *\n * @fileoverview jQuery plugin that creates tooltip style toolbars.\n * @link http:\/\/paulkinzett.github.com\/toolbar\/\n * @author Paul Kinzett (http:\/\/kinzett.co.nz\/)\n * @version 1.1.0\n * @requires jQuery 1.7+\n *\n * @license jQuery Toolbar Plugin v1.1.0\n * http:\/\/paulkinzett.github.com\/toolbar\/\n * Copyright 2013 - 2015 Paul Kinzett (http:\/\/kinzett.co.nz\/)\n * Released under the MIT license.\n * \n *\/\n\nif ( typeof Object.create !== 'function' ) {\n Object.create = function( obj ) {\n function F() {}\n F.prototype = obj;\n return new F();\n };\n}\ndefine(['jquery'], function($) {\n\tvar ToolBar = {\n init: function( options, elem ) {\n var self = this;\n self.elem = elem;\n self.$elem = $( elem );\n self.options = $.extend( {}, $.fn.toolbar.options, options );\n self.metadata = self.$elem.data();\n self.overrideOptions();\n self.toolbar = $('')\n .addClass('tool-'+self.options.position)\n .addClass('toolbar-'+self.options.style)\n .append('')\n .append('')\n .appendTo('body')\n .css('opacity', 0)\n .hide();\n self.toolbar_arrow = self.toolbar.find('.arrow');\n self.initializeToolbar();\n },\n\n overrideOptions: function() {\n var self = this;\n $.each( self.options, function( $option ) {\n if (typeof(self.$elem.data('toolbar-'+$option)) != \"undefined\") {\n self.options[$option] = self.$elem.data('toolbar-'+$option);\n }\n });\n },\n\n initializeToolbar: function() {\n var self = this;\n self.populateContent();\n self.setTrigger();\n self.toolbarWidth = self.toolbar.width();\n },\n\n setTrigger: function() {\n var self = this;\n\n if (self.options.event != 'click') {\n\n var moveTime;\n function decideTimeout () {\n if (self.$elem.hasClass('pressed')) {\n moveTime = setTimeout(function() {\n self.hide();\n }, 150);\n } else {\n clearTimeout(moveTime);\n };\n };\n\n self.$elem.on({\n mouseenter: function(event) {\n if (self.$elem.hasClass('pressed')) {\n clearTimeout(moveTime);\n } else {\n self.show();\n }\n }\n });\n\n self.$elem.parent().on({\n mouseleave: function(event){ decideTimeout(); }\n });\n\n $('.tool-container').on({\n mouseenter: function(event){ clearTimeout(moveTime); },\n mouseleave: function(event){ decideTimeout(); }\n });\n }\n\n if (self.options.event == 'click') {\n self.$elem.on('click', function(event) {\n event.preventDefault();\n if(self.$elem.hasClass('pressed')) {\n self.hide();\n } else {\n self.show();\n }\n });\n\n if (self.options.hideOnClick) {\n $('html').on(\"click.toolbar\", function ( event ) {\n if (event.target != self.elem &&\n self.$elem.has(event.target).length === 0 &&\n self.toolbar.has(event.target).length === 0 &&\n self.toolbar.is(\":visible\")) {\n self.hide();\n }\n });\n }\n }\n\n if (self.options.hover) {\n var moveTime;\n\n function decideTimeout () {\n if (self.$elem.hasClass('pressed')) {\n moveTime = setTimeout(function() {\n self.hide();\n }, 150);\n } else {\n clearTimeout(moveTime);\n };\n };\n\n self.$elem.on({\n mouseenter: function(event) {\n if (self.$elem.hasClass('pressed')) {\n clearTimeout(moveTime);\n } else {\n self.show();\n }\n }\n });\n\n self.$elem.parent().on({\n mouseleave: function(event){ decideTimeout(); }\n });\n\n $('.tool-container').on({\n mouseenter: function(event){ clearTimeout(moveTime); },\n mouseleave: function(event){ decideTimeout(); }\n });\n }\n\n $(window).resize(function( event ) {\n event.stopPropagation();\n if ( self.toolbar.is(\":visible\") ) {\n self.toolbarCss = self.getCoordinates(self.options.position, 20);\n self.collisionDetection();\n self.toolbar.css( self.toolbarCss );\n self.toolbar_arrow.css( self.arrowCss );\n }\n });\n },\n\n populateContent: function() {\n var self = this;\n var location = self.toolbar.find('.tool-items');\n var content = $(self.options.content).clone( true ).find('a').addClass('tool-item');\n location.html(content);\n location.find('.tool-item').on('click', function(event) {\n event.preventDefault();\n self.$elem.trigger('toolbarItemClick', this);\n });\n },\n\n calculatePosition: function() {\n var self = this;\n self.arrowCss = {};\n self.toolbarCss = self.getCoordinates(self.options.position, self.options.adjustment);\n self.toolbarCss.position = 'absolute';\n self.toolbarCss.zIndex = self.options.zIndex;\n self.collisionDetection();\n self.toolbar.css(self.toolbarCss);\n self.toolbar_arrow.css(self.arrowCss);\n },\n\n getCoordinates: function( position, adjustment ) {\n var self = this;\n self.coordinates = self.$elem.offset();\n\n if (self.options.adjustment && self.options.adjustment[self.options.position]) {\n adjustment = self.options.adjustment[self.options.position] + adjustment;\n }\n\n switch(self.options.position) {\n case 'top':\n return {\n left: self.coordinates.left-(self.toolbar.width()\/2)+(self.$elem.outerWidth()\/2),\n top: self.coordinates.top-self.$elem.outerHeight()-adjustment,\n right: 'auto'\n };\n case 'left':\n return {\n left: self.coordinates.left-(self.toolbar.width()\/2)-(self.$elem.outerWidth()\/2)-adjustment,\n top: self.coordinates.top-(self.toolbar.height()\/2)+(self.$elem.outerHeight()\/2),\n right: 'auto'\n };\n case 'right':\n return {\n left: self.coordinates.left+(self.toolbar.width()\/2)+(self.$elem.outerWidth()\/2)+adjustment,\n top: self.coordinates.top-(self.toolbar.height()\/2)+(self.$elem.outerHeight()\/2),\n right: 'auto'\n };\n case 'bottom':\n return {\n left: self.coordinates.left-(self.toolbar.width()\/2)+(self.$elem.outerWidth()\/2),\n top: self.coordinates.top+self.$elem.outerHeight()+adjustment,\n right: 'auto'\n };\n }\n },\n\n collisionDetection: function() {\n var self = this;\n var edgeOffset = 20;\n if(self.options.position == 'top' || self.options.position == 'bottom') {\n self.arrowCss = {left: '50%', right: '50%'};\n if( self.toolbarCss.left < edgeOffset ) {\n self.toolbarCss.left = edgeOffset;\n self.arrowCss.left = self.$elem.offset().left + self.$elem.width()\/2-(edgeOffset);\n }\n else if(($(window).width() - (self.toolbarCss.left + self.toolbarWidth)) < edgeOffset) {\n self.toolbarCss.right = edgeOffset;\n self.toolbarCss.left = 'auto';\n self.arrowCss.left = 'auto';\n self.arrowCss.right = ($(window).width()-self.$elem.offset().left)-(self.$elem.width()\/2)-(edgeOffset)-5;\n }\n }\n },\n\n show: function() {\n var self = this;\n self.$elem.addClass('pressed');\n self.calculatePosition();\n self.toolbar.show().css({'opacity': 1}).addClass('animate-'+self.options.animation);\n self.$elem.trigger('toolbarShown');\n },\n\n hide: function() {\n var self = this;\n var animation = {'opacity': 0};\n\n self.$elem.removeClass('pressed');\n\n switch(self.options.position) {\n case 'top':\n animation.top = '+=20';\n break;\n case 'left':\n animation.left = '+=20';\n break;\n case 'right':\n animation.left = '-=20';\n break;\n case 'bottom':\n animation.top = '-=20';\n break;\n }\n\n self.toolbar.animate(animation, 200, function() {\n self.toolbar.hide();\n });\n\n self.$elem.trigger('toolbarHidden');\n },\n\n getToolbarElement: function () {\n return this.toolbar.find('.tool-items');\n }\n };\n\n $.fn.toolbar = function( options ) {\n if ($.isPlainObject( options )) {\n return this.each(function() {\n var toolbarObj = Object.create( ToolBar );\n toolbarObj.init( options, this );\n $(this).data('toolbarObj', toolbarObj);\n });\n } else if ( typeof options === 'string' && options.indexOf('_') !== 0 ) {\n var toolbarObj = $(this).data('toolbarObj');\n var method = toolbarObj[options];\n return method.apply(toolbarObj, $.makeArray(arguments).slice(1));\n }\n };\n\n $.fn.toolbar.options = {\n content: '#myContent',\n position: 'top',\n hideOnClick: false,\n zIndex: 120,\n hover: false,\n style: 'default',\n animation: 'standard',\n adjustment: 10\n };\n});\n"],"names":["Object","create","obj","F","prototype","define","$","ToolBar","init","options","elem","this","$elem","extend","fn","toolbar","metadata","data","overrideOptions","addClass","position","style","append","appendTo","css","hide","toolbar_arrow","find","initializeToolbar","self","each","$option","populateContent","setTrigger","toolbarWidth","width","event","decideTimeout","hasClass","moveTime","setTimeout","clearTimeout","on","mouseenter","show","parent","mouseleave","preventDefault","hideOnClick","target","has","length","is","hover","window","resize","stopPropagation","toolbarCss","getCoordinates","collisionDetection","arrowCss","location","content","clone","html","trigger","calculatePosition","adjustment","zIndex","coordinates","offset","left","outerWidth","top","outerHeight","right","height","animation","removeClass","animate","getToolbarElement","isPlainObject","toolbarObj","indexOf","method","apply","makeArray","arguments","slice"],"mappings":"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"}