HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/intranet.kauko.lt/wp-content/plugins/wise-chat/assets/js/src/utils/image-viewer.js
import $ from "jquery";

export default class ImageViewer {

	get HOURGLASS_ICON() {
		return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wQEDB4ktAYXpwAAAb5JREFUSMe1lr9qFFEUh78rg8gWW1ikSLEWgkVq2SoYsbBIk1dYEAsxaJt3sLAIFkEEX0FSRlgMhKAPkEIQwZDChATSBLMQP5uz4bKZmZ3ZxR+cYs75nT9z7rlnJpFBfQC8B24xG/4Cz1NK38eKYoKwADxiPiwA1wnSpFUdAO+A+y0D/wBeppQ+5sqihHgAdIBRSumsSWT1bvgcNCF31Et1tWnp6mr4dCZtNw4zpXQB7AJrLdqzBuyGb6OKBuq52m3A7QZ3UGZPVW0CfgJvgc/As4r4H4CnwGvgXkrpDy36uh6VPVRPvYnTsJ2r662HWS3U/ZDH6kkW/CR0Y3sx041Re+qh+kXtq59C+qE7VHt1MWpXQkrpF7ACdIFhZhqGbiU4syX474gWHUU7FjP9YuiOprVo2iF/jUO8U3Hj94NTzJLgVYxgL0v4JqTI3rD9mEZ1v9WN7Hk7G9Pt8d5RN4LbaZPgelWE7JVctL3MXrkqqhLsqFvqbXVoNYbB2VJ32rTnMlbwptOxWbeuyxL0w/GJetUgwVVwVfuT8crGawm4AEbAi4ZdHYXPEvCtrvpl58dy3Rscx9dsnt+W41zxD60+eUN8VNiNAAAAAElFTkSuQmCC";
	}

	constructor() {
		this.hide = this.hide.bind(this);
	}

	setup() {
		if (this.imagePreview) {
			return;
		}

		const container = $('body');
		container.append('<div class="wcImagePreviewLayer wcHide"> </div>');
		this.imagePreview = container.find('.wcImagePreviewLayer');
		this.imagePreview.click(this.hide);
	}

	show(imageSource) {
		const that = this;

		this.setup();
		this.clearRemnants();

		this.addAndShowHourGlass();

		const imageElement = $('<img style="display:none;" src="" alt="Image preview popup" />');
		imageElement.on('load', function() {
			that.removeHourGlass();
			$(this).show();
		});
		imageElement.attr('src', imageSource);
		imageElement.appendTo(this.imagePreview);
		imageElement.click(this.hide);
	}

	hide() {
		this.clearRemnants();
		this.imagePreview.addClass('wcHide');
		this.imagePreview.removeClass('wcShow');
		$('body').removeClass('wcScrollOff');
	}

	clearRemnants() {
		this.imagePreview.find('img').remove();
	}

	addAndShowHourGlass() {
		const imageElement = $('<img class="wcHourGlass" src="" alt="hourglass" />');

		imageElement.attr('src', this.HOURGLASS_ICON);
		imageElement.appendTo(this.imagePreview);

		this.imagePreview.removeClass('wcHide');
		this.imagePreview.addClass('wcShow');
		$('body').addClass('wcScrollOff');
	}

	removeHourGlass() {
		this.imagePreview.find('.wcHourGlass').remove();
	}
}