<reponame>rafaeljost/plotly_and_dash_for_bi<filename>obsidian-advanced-slides/plugin/customcontrols/plugin.js<gh_stars>0/*****************************************************************
** Author: Asvin Goel, ychag@example.com
**
** A plugin replacing the default controls by custom controls.
**
** Version: 2.0.0
** 
** License: MIT license (see LICENSE.md)
**
******************************************************************/
window.RevealCustomControls = window.RevealCustomControls || {
    id: 'RevealCustomControls',
    init: function(deck) {
        initCustomControls(deck);
    }
};

const initCustomControls = function(Reveal){
	var config = Reveal.getConfig().customcontrols || {};

	var collapseIcon = config.collapseIcon || '<i class="fa fa-chevron-down"></i>';
	var expandIcon = config.expandIcon || '<i class="fa fa-chevron-up"></i>';
	var tooltip = config.tooltip || 'Show/hide controls';

	var div = document.createElement( 'div' );
	div.id = 'customcontrols';

	var toggleButton = document.createElement( 'button' );
	toggleButton.title = tooltip;
	toggleButton.innerHTML = '<span id="collapse-customcontrols">' + collapseIcon + '</span>' + '<span id="expand-customcontrols">' + expandIcon + '</span>';

	toggleButton.addEventListener('click', function( event ) {
		var div = document.querySelector("div#customcontrols");
		if ( div.classList.contains('collapsed') ) {
			div.classList.remove('collapsed');
		}
		else {
			div.classList.add('collapsed');
		}
	});

	div.appendChild(toggleButton);

	var controls = document.createElement( 'ul' );
	for (var i = 0; i < config.controls.length; i++ ) {
		var control = document.createElement( 'li' );
		if ( config.controls[i].id ) {
			control.id = config.controls[i].id;
		}
		control.innerHTML = '<button ' + ( config.controls[i].title ? 'title="' + config.controls[i].title + '" ': '' ) + 'onclick="' + config.controls[i].action + '">' + config.controls[i].icon + '</button>';
		controls.appendChild( control );
	}
	div.appendChild( controls );


	document.querySelector(".reveal").appendChild( div );

	document.addEventListener( 'resize', function( event ) {
		// expand controls to make sure they are visible
		var div = document.querySelector("div#customcontrols.collapsed");
		if ( div ) {
			div.classList.remove('collapsed');
		}
	} );

	return this;

};

