/**
* Overlay class
* @param {PhotoSphereViewer} psv
* @constructor
* @extends module:components.PSVComponent
* @memberof module:components
*/
function PSVOverlay(psv) {
PSVComponent.call(this, psv);
this.create();
this.hide();
}
PSVOverlay.prototype = Object.create(PSVComponent.prototype);
PSVOverlay.prototype.constructor = PSVOverlay;
PSVOverlay.className = 'psv-overlay';
PSVOverlay.publicMethods = ['showOverlay', 'hideOverlay', 'isOverlayVisible'];
/**
* @override
*/
PSVOverlay.prototype.create = function() {
PSVComponent.prototype.create.call(this);
this.image = document.createElement('div');
this.image.className = 'psv-overlay-image';
this.container.appendChild(this.image);
this.text = document.createElement('div');
this.text.className = 'psv-overlay-text';
this.container.appendChild(this.text);
this.subtext = document.createElement('div');
this.subtext.className = 'psv-overlay-subtext';
this.container.appendChild(this.subtext);
this.container.addEventListener('click', this.hideOverlay.bind(this));
};
/**
* @override
*/
PSVOverlay.prototype.destroy = function() {
delete this.image;
delete this.text;
delete this.subtext;
PSVComponent.prototype.destroy.call(this);
};
/**
* @summary Checks if the overlay is visible
* @returns {boolean}
*/
PSVOverlay.prototype.isOverlayVisible = function() {
return this.visible;
};
/**
* @summary Displays an overlay on the viewer
* @param {Object|string} config
* @param {string} config.image
* @param {string} config.text
* @param {string} config.subtext
*
* @example
* viewer.showOverlay({
* image: '<svg></svg>',
* text: '....',
* subtext: '....'
* })
*/
PSVOverlay.prototype.showOverlay = function(config) {
if (typeof config === 'string') {
config = {
text: config
};
}
this.image.innerHTML = config.image || '';
this.text.innerHTML = config.text || '';
this.subtext.innerHTML = config.subtext || '';
this.show();
/**
* @event show-overlay
* @memberof module:components.PSVOverlay
* @summary Trigered when the overlay is shown
*/
this.psv.trigger('show-overlay');
};
/**
* @summary Hides the notification
* @fires module:components.PSVOverlay.hide-notification
*/
PSVOverlay.prototype.hideOverlay = function() {
if (this.isOverlayVisible()) {
this.hide();
/**
* @event hide-overlay
* @memberof module:components.PSVOverlay
* @summary Trigered when the overlay is hidden
*/
this.psv.trigger('hide-overlay');
}
};