Files
emailtemplate.it/public/assets/js/bridge/helpers.js
2025-12-04 22:33:05 +01:00

40 lines
1.5 KiB
JavaScript

/* /assets/js/bridge/helpers.js — Namespace + Utilities (kein ES-Module) */
(function(w){
var B = w.BridgeParts = w.BridgeParts || {};
B.post = function(m){ try { parent.postMessage(m,'*'); } catch{} };
B.send = function(type, payload){ B.post(Object.assign({ source:'email-editor', type:type }, payload||{})); };
B.log = function(msg){ B.post({ source:'bridge', type:'log', detail:String(msg||'') }); };
B.ready = function(cb){ (function t(){ if (w.grapesjs) return cb(); setTimeout(t,40); })(); };
B.BADGE = function(){ return document.getElementById('badge'); };
B.badgeSay = function(txt, tone){
var b = B.BADGE(); if(!b) return;
b.textContent = txt;
var cfg = {
ok: ['#ecfeff','#155e75','#a5f3fc'],
warn: ['#fef3c7','#92400e','#fde68a'],
err: ['#fee2e2','#7f1d1d','#fecaca'],
base: ['#eef2ff','#1e3a8a','#c7d2fe']
}[tone||'base'];
b.style.background = cfg[0]; b.style.color = cfg[1]; b.style.borderColor = cfg[2];
};
B.waitForBlocks = function(ed, opt){
opt = opt || {};
var timeoutMs = opt.timeoutMs || 4000, interval = opt.interval || 80;
var bm = ed.BlockManager, t0 = Date.now();
return new Promise(function(resolve){
(function tick(){
var n = (bm && bm.getAll && bm.getAll().length) || 0;
if (n > 0 || Date.now() - t0 > timeoutMs) return resolve(n);
setTimeout(tick, interval);
})();
});
};
B.renderBlocks = function(ed){ try { ed.BlockManager.render(); } catch{} };
})(window);