<div id="koya-calculadora"></div>
<script>
/* Calculadora de equivalencias de endulzantes de Koya Health Foods (koya.mx).
No carga archivos externos y no usa cookies ni seguimiento.
Las equivalencias vienen de snippets/koya-equivalencias.liquid del tema de Koya, la misma fuente que
la página: si cambia una equivalencia se edita ahí, y este código hay que volver a copiarlo desde
https://koya.mx/pages/calculadora-endulzantes */
(function () {
var host = document.getElementById('koya-calculadora');
if (!host || !host.attachShadow || host.shadowRoot) return;
var D = [
{h: "alulosa", n: "Alulosa", r: 1.3333333333333333, g: true},
{h: "alulosa-monk", n: "Alulosa Monk", r: 0.5, g: true},
{h: "monk-fruit-blend", n: "Monk Fruit Blend", r: 0.5, g: true},
{h: "monk-fruit-puro", n: "Monk Fruit Puro", r: 0.25, g: false},
{h: "xilitol", n: "Xilitol", r: 1.0, g: true},
{h: "eritritol", n: "Eritritol", r: 1.3333333333333333, g: true}
];
var css = ':host{all:initial;display:block}' +
'.w{container-type:inline-size;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:#353d3c;font-size:16px;line-height:1.4}' +
'.k{background:#eef1ea;border-radius:24px;padding:20px;box-sizing:border-box}' +
'.dir{display:flex;gap:4px;margin:0 0 20px;padding:4px;border-radius:999px;background:#fff}' +
'.dir label{flex:1 1 0;position:relative}' +
'.dir input{position:absolute;inset:0;opacity:0;margin:0}' +
'.dir span{display:block;padding:10px 8px;border-radius:999px;font-size:13px;font-weight:600;line-height:1.25;text-align:center;cursor:pointer}' +
'.dir input:checked+span{background:#353d3c;color:#fff}' +
'.dir input:focus-visible+span{outline:2px solid #353d3c;outline-offset:2px}' +
'.campos{display:grid;grid-template-columns:1fr 1.4fr;gap:12px}' +
'.ancho{grid-column:1/-1}' +
'.l{display:block;margin:0 0 6px;font-size:12px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:#5f6f6c}' +
'.s{position:relative;display:block}' +
'.s:after{content:"";position:absolute;right:20px;top:50%;width:7px;height:7px;border-right:1.5px solid #353d3c;border-bottom:1.5px solid #353d3c;transform:translateY(-70%) rotate(45deg);pointer-events:none}' +
'.f{display:block;box-sizing:border-box;width:100%;height:48px;margin:0;padding:0 18px;border:0;border-radius:999px;background:#fff;color:#353d3c;font:inherit;font-size:16px;-webkit-appearance:none;appearance:none}' +
'select.f{padding-right:44px}' +
'.f:focus-visible{outline:2px solid #353d3c;outline-offset:1px}' +
'.res{margin:24px 0 16px;font-size:26px;line-height:1.25}' +
'.res.aviso{font-size:16px;line-height:1.5}' +
'.btn{display:inline-flex;align-items:center;min-height:48px;padding:0 28px;border-radius:999px;background:#353d3c;color:#fff;font-size:15px;font-weight:700;text-decoration:none}' +
'.btn:hover{background:#2a3a37}' +
'.nota{margin:12px 0 0;font-size:12px;color:#5f6f6c}' +
'.firma{margin:16px 0 0;font-size:11px;letter-spacing:.5px;color:#5f6f6c}' +
'@container (min-width:560px){.k{padding:28px 32px}.dir{display:inline-flex}.dir label{flex:0 0 auto}.dir span{padding:10px 18px}.campos{grid-template-columns:.8fr 1fr 1.4fr;gap:16px}.ancho{grid-column:auto}.res{font-size:30px}}';
var ops = D.map(function (d) { return '<option value="' + d.h + '">' + d.n + '</option>'; }).join('');
var root = host.attachShadow({ mode: 'open' });
root.innerHTML = '<style>' + css + '</style><div class="w"><div class="k">' +
'<div class="dir" role="radiogroup" aria-label="Dirección">' +
'<label><input type="radio" name="d" value="a" checked><span>De azúcar a endulzante</span></label>' +
'<label><input type="radio" name="d" value="b"><span>De endulzante a azúcar</span></label></div>' +
'<div class="campos">' +
'<label><span class="l">Cantidad</span><input class="f" name="q" type="text" value="1" autocomplete="off"></label>' +
'<label><span class="l">Unidad</span><span class="s"><select class="f" name="u"><option value="taza">Taza</option><option value="cucharada">Cucharada</option><option value="cucharadita">Cucharadita</option><option value="g">Gramos</option></select></span></label>' +
'<label class="ancho"><span class="l">Endulzante</span><span class="s"><select class="f" name="e">' + ops + '</select></span></label></div>' +
'<p class="res" aria-live="polite"></p>' +
'<a class="btn" target="_blank" rel="noopener"></a>' +
'<p class="nota">Equivalencia de referencia; ajusta al gusto.</p>' +
'<p class="firma">Calculadora de Koya Health Foods</p></div></div>';
/* Siempre en fracción: la más cercana entre ⅛ ¼ ⅓ ½ ⅔ ¾ y sus enteros; gramos de a 5 */
var FR = [0, 1 / 8, 1 / 4, 1 / 3, 1 / 2, 2 / 3, 3 / 4, 1];
var GL = ['', '⅛', '¼', '⅓', '½', '⅔', '¾', ''];
function cant(v, u) {
if (u === 'g') { var g = Math.round(v / 5) * 5; return (g || Math.round(v * 10) / 10) + ' g'; }
if (v < 1 / 16) return 'menos de ⅛ ' + u;
var e = Math.floor(v), m = 0, md = Infinity;
FR.forEach(function (f, i) { var c = e + f; if (c > 0 && Math.abs(v - c) < md) { m = i; md = Math.abs(v - c); } });
var n = e + FR[m], ent = m === 7 ? e + 1 : e;
return (ent > 0 ? ent : '') + GL[m] + ' ' + (n > 1 ? u + 's' : u);
}
/* Acepta 1, 1.5, 1,5, 1/2, 1 1/2 y ½ */
var UNI = { '¼': '1/4', '½': '1/2', '¾': '3/4', '⅓': '1/3', '⅔': '2/3' };
function leer(t) {
var s = String(t).replace(/[¼½¾⅓⅔]/g, function (c) { return ' ' + UNI[c]; }).replace(',', '.').trim().replace(/\s+/g, ' '), x;
if ((x = s.match(/^(\d+(?:\.\d+)?|\.\d+)$/))) return parseFloat(x[1]);
if ((x = s.match(/^(?:(\d+) )?(\d+)\/(\d+)$/)) && +x[3] > 0) return (+x[1] || 0) + x[2] / x[3];
return NaN;
}
var q = root.querySelector('[name=q]'), u = root.querySelector('[name=u]'), e = root.querySelector('[name=e]');
var res = root.querySelector('.res'), btn = root.querySelector('.btn');
function calc() {
var d = D.filter(function (x) { return x.h === e.value; })[0] || D[0];
var b = root.querySelector('[name=d]:checked').value === 'b';
var v = leer(q.value), un = u.value;
btn.href = 'https://koya.mx/products/' + d.h;
btn.textContent = 'Ver ' + d.n + ' en Koya';
res.className = 'res aviso';
if (!(v > 0)) { res.textContent = 'Escribe una cantidad mayor que 0, por ejemplo 1, 1.5 o 1/2.'; return; }
if (un === 'g' && !d.g) { res.textContent = 'Para ' + d.n + ' usa tazas o cucharadas; no pesa lo mismo que el azúcar.'; return; }
res.className = 'res';
var ent = un === 'g' ? Math.round(v * 10) / 10 + ' g' : cant(v, un);
var sal = cant(b ? v / d.r : v * d.r, un), ap = un === 'g' ? ' aprox.' : '';
res.textContent = b ? ent + ' de ' + d.n + ' = ' + sal + ' de azúcar' + ap : ent + ' de azúcar = ' + sal + ' de ' + d.n + ap;
}
root.addEventListener('input', calc);
root.addEventListener('change', calc);
calc();
})();
</script>
<p style="font-size:13px;"><a href="https://koya.mx/pages/calculadora-endulzantes">Calculadora de equivalencias de Koya</a></p>
Copiar código