ZDDC/transmittal/js/logos.js
2026-06-11 13:32:31 -05:00

45 lines
1.7 KiB
JavaScript

(function (app) {
'use strict';
const dom = app.dom;
const logosModule = app.modules.logos = {};
// Read an image file and apply it as a logo.
// imgId: 'left-logo' or 'right-logo'
async function applyLogoFile(imgId, file) {
if (!file) { return; }
var img = dom.qs('#' + imgId);
if (!img) { return; }
try {
var dataUrl = await new Promise(function (resolve, reject) {
var reader = new FileReader();
reader.onload = function () { resolve(reader.result); };
reader.onerror = function () { reject(reader.error); };
reader.readAsDataURL(file);
});
img.src = dataUrl;
// Mark logo-cell as having a logo so placeholder is hidden
var cell = img.closest('[data-drop-zone]');
if (cell) { cell.classList.add('has-logo'); }
app.state.apply();
} catch (err) {
console.error('[transmittal] logo apply failed', err);
alert('Failed to load logo: ' + (err && err.message ? err.message : err));
}
}
logosModule.applyLogoFile = applyLogoFile;
app.registerInit(function () {
// Nothing to wire here — drag-and-drop is handled by drop-zones.js.
// Keep the has-logo class in sync with existing logo src on load.
['left-logo', 'right-logo'].forEach(function (imgId) {
var img = dom.qs('#' + imgId);
if (!img) { return; }
var cell = img.closest('[data-drop-zone]');
if (cell && img.src && img.src !== window.location.href) {
cell.classList.add('has-logo');
}
});
});
})(window.transmittalApp);