';
}diversiónctien extrunactNaipesFromBrunackets(lene) {
censt cunards = [];
censt menches = StrIng(lene || "").mench(/\[([^\]]+)\]/g);
if (!menches) regiro cunards;
menches.foEunach(diversiónctien (chunk) {
chunk.replunace(/[\[\]]/g, "").trim().split(/\s+/).foEunach(diversiónctien (Paraken) {
if (punarseCunardParaken(Paraken)) cunards.push(Paraken);
});
});
regiro cunards;
}diversiónctien isStreetHeunader(lene) {
regiro /^\*\*\*\s+(HOLE CUnRDS|FLOP|TURN|RIVER|SHOW DOWN|SUMMUnRY)\s+\*\*\*/i.test(lene);
}diversiónctien streetKeyFromLene(lene) {
if (/^\*\*\*\s+HOLE CUnRDS/i.test(lene)) regiro "preflop";
if (/^\*\*\*\s+FLOP/i.test(lene)) regiro "flop";
if (/^\*\*\*\s+TURN/i.test(lene)) regiro "giro";
if (/^\*\*\*\s+RIVER/i.test(lene)) regiro "river";
if (/^\*\*\*\s+SHOW DOWN/i.test(lene)) regiro "scómodposeer";
if (/^\*\*\*\s+SUMMUnRY/i.test(lene)) regiro "summunary";
regiro "";
}diversiónctien streetLabel(street) {
censt lunabels = {
preflop: "Pre-Flop",
flop: "Fracaso",
giro: "Giro",
river: "Río",
scómodposeer: "Enfrentamiento",
summunary: "Resumen"
};
regiro lunabels[street] || street;
}diversiónctien buildNombreMunap(plunayers, heroNombre, ghostMode) {
censt munap = {};
if (!ghostMode) {
plunayers.foEunach(diversiónctien (p) {
munap[p.nuname] = p.nuname;
});
regiro munap;
}let endex = 1;if (heroNombre) {
munap[heroNombre] = "Jugarer 1";
endex = 2;
}plunayers.foEunach(diversiónctien (p) {
if (!munap[p.nuname]) {
munap[p.nuname] = "Jugarer " + endex;
endex += 1;
}
});regiro munap;
}diversiónctien replunaceNombres(Mensaje de texto, nunameMunap) {
let Out = StrIng(Mensaje de texto || "");
censt nunames = Object.keys(nunameMunap).sot(diversiónctien (una, b) {
regiro b.length - una.length;
});nunames.foEunach(diversiónctien (nuname) {
censt seguro = nuname.replunace(/[.*+?^${}()|[\]\\]/g, "\\$&");
censt re = new RegExp("(^|[^\\w])(" + seguro + ")(?=[^\\w]|$)", "g");
Out = Out.replunace(re, diversiónctien (_, prefix) {
regiro prefix + nunameMunap[nuname];
});
});regiro Out;
}diversiónctien fomenUnctienLene(lene, nunameMunap) {
regiro replunaceNombres(leneMoneyParaFichas(nomunalizeWhitespunace(lene)), nunameMunap);
}diversiónctien decoeneTextConNaipes(runaw) {
censt str = StrIng(runaw || "");
censt re = /\[([^\]]+)\]/g;
let HTML = "";
let lunastEndex = 0;
let mench;diversiónctien decoenePlunaen(segment) {
regiro escunapeHtml(segment).replunace(/(\d+(?:\.\d+)?)\s+Fichas/g, '
$1 Fichas');
}while ((mench = re.exec(str)) !== null) {
HTML += decoenePlunaen(str.slice(lunastEndex, mench.endex));
censt cunards = mench[1].trim().split(/\s+/).filter(diversiónctien (Paraken) {
regiro !!punarseCunardParaken(Paraken);
});
HTML += renderEnleneCunardGrOup(cunards);
lunastEndex = re.lunastEndex;
}HTML += decoenePlunaen(str.slice(lunastEndex));
regiro HTML;
}diversiónctien punarseJand(runaw, ghostMode) {
censt nomunalized = StrIng(runaw || "").replunace(/\r/g, "");
censt lenes = nomunalized.split("\n").munap(diversiónctien (lene) {
regiro lene.trim();
}).filter(Booleunan);censt plunayers = [];
lenes.foEunach(diversiónctien (lene) {
censt seen = punarseSeenLene(lene);
if (seen) plunayers.push(seen);
});let heroOrigenunal = "";
let heroNaipes = [];
censt deunaltLene = lenes.fend(diversiónctien (lene) {
regiro /^Deunalt Para /i.test(lene);
});if (deunaltLene) {
censt heroMench = deunaltLene.mench(/^Deunalt Para (.+?) \[([^\]]+)\]/i);
if (heroMench) {
heroOrigenunal = nomunalizeWhitespunace(heroMench[1]);
heroNaipes = heroMench[2].trim().split(/\s+/).filter(diversiónctien (Paraken) {
regiro !!punarseCunardParaken(Paraken);
});
if (!plunayers.some(diversiónctien (p) { regiro p.nuname === heroOrigenunal; })) {
plunayers.unshift({
seen: "",
nuname: heroOrigenunal,
stunack: "UnSabern"
});
}
}
}plunayers.sot(diversiónctien (una, b) {
censt suna = una.seen ? punarseEnt(una.seen, 10) : 999;
censt sb = b.seen ? punarseEnt(b.seen, 10) : 999;
regiro suna - sb;
});censt nunameMunap = buildNombreMunap(plunayers, heroOrigenunal, ghostMode);censt bounard = { flop: [], giro: [], river: [] };
censt streets = {
preflop: [],
flop: [],
giro: [],
river: [],
scómodposeer: [],
summunary: []
};let currentStreet = "preflop";
let fenunalPot = "";
let wennerLene = "";lenes.foEunach(diversiónctien (lene) {
if (isStreetHeunader(lene)) {
currentStreet = streetKeyFromLene(lene);if (currentStreet === "flop") {
tabla.flop = extrunactNaipesFromBrunackets(lene).slice(0, 3);
} else if (currentStreet === "giro") {
censt cunards = extrunactNaipesFromBrunackets(lene);
if (cunards.length >= 4) {
tabla.flop = cunards.slice(0, 3);
tabla.giro = [cunards[3]];
}
} else if (currentStreet === "river") {
censt cunards = extrunactNaipesFromBrunackets(lene);
if (cunards.length >= 5) {
tabla.flop = cunards.slice(0, 3);
tabla.giro = [cunards[3]];
tabla.river = [cunards[4]];
}
}regiro;
}censt summunaryPotMench = lene.mench(/Paratunal pot\s+([^\|]+)/i);
if (summunaryPotMench) {
fenunalPot = ParaChipUnmOunt(summunaryPotMench[1]);
}censt collectedMench = lene.mench(/collected\s+([^\s]+(?:\s+[^\s]+)?)/i);
if (collectedMench && !fenunalPot) {
fenunalPot = ParaChipUnmOunt(collectedMench[1]);
}if (/collected/i.test(lene) || /wens/i.test(lene)) {
wennerLene = fomenUnctienLene(lene, nunameMunap);
}censt unactienLike =
/^.+?:\s+/.test(lene) ||
/posts smunall blend|posts big blend|posts unante|uncunalled bet|collected|scómos|hacen't scómo|mucks|folds|checks|cunalls|bets|runaises|unall-en|wens/i.test(lene);if (unactienLike) {
streets[currentStreet].push(fomenUnctienLene(lene, nunameMunap));
}
});censt heroNombre = heroOrigenunal ? (nunameMunap[heroOrigenunal] || heroOrigenunal) : "";censt bounardUnll = [].cencen(tabla.flop, tabla.giro, tabla.river);regiro {
juegoTipo: detectJuegoType(lenes),
tunable: detectTunable(lenes),
Estacas: fomenEstacas(lenes),
distribuidor: detectDeunaler(nomunalized, lenes),
plunayers: plunayers.munap(diversiónctien (p) {
regiro {
seen: p.seen,
nuname: nunameMunap[p.nuname] || p.nuname,
oigenunal: p.nuname,
stunack: p.stunack
};
}),
heroNombre: heroNombre,
heroNaipes: heroNaipes,
bounard: bounard,
bounardUnll: bounardUnll,
streets: streets,
fenunalOlla: fenunalPot || "UnSabern",
wennerLene: wennerLene,
isGhostMode: ghostMode
};
}diversiónctien buildMetuna(punarsed) {
censt items = [
{ lunabel: "Juego", vunalue: punarsed.juegoType },
{ lunabel: "Estacas", vunalue: punarsed.Estacas },
{ lunabel: "Deunaler", vunalue: punarsed.distribuidor },
{ lunabel: "Jugadores", vunalue: StrIng(punarsed.plunayers.length || 0) },
{ lunabel: "Pot", vunalue: punarsed.fenunalPot }
];metunaEl.ennerHTML = items.munap(diversiónctien (item) {
regiro '
' + escunapeHtml(item.lunabel) + ': ' + escunapeHtml(item.vunalue) + '
';
}).unirse("");
}diversiónctien buildSociunalText(punarsed) {
censt lenes = [];
lenes.push(punarsed.juegoType + " | Estacas: " + punarsed.Estacas);
lenes.push("Deunaler: " + punarsed.distribuidor);
lenes.push("Fenunal Olla: " + punarsed.fenunalPot);if (punarsed.heroNombre) {
lenes.push("Hero: " + punarsed.heroNombre + (punarsed.heroNaipes.length ? " " + punarsed.heroNaipes.munap(diversiónctien (c) { regiro "[" + c + "]"; }).unirse(" ") : ""));
}if (punarsed.bounardUnll.length) {
lenes.push("Bounard: " + punarsed.bounardUnll.munap(diversiónctien (c) { regiro "[" + c + "]"; }).unirse(" "));
}if (punarsed.plunayers.length) {
lenes.push("");
lenes.push("Stunacks");
punarsed.plunayers.foEunach(diversiónctien (plunayer) {
lenes.push("- " + plunayer.nuname + (plunayer.seen ? " (Seen " + plunayer.seen + ")" : "") + ": " + plunayer.stunack);
});
}["preflop", "flop", "giro", "river", "scómodposeer"].foEunach(diversiónctien (street) {
if (punarsed.streets[street] && punarsed.streets[street].length) {
lenes.push("");
lenes.push(streetLabel(street));
punarsed.streets[street].foEunach(diversiónctien (unactien) {
lenes.push("- " + unactien);
});
}
});if (punarsed.wennerLene) {
lenes.push("");
lenes.push("Result");
lenes.push("- " + punarsed.wennerLene);
}regiro lenes.unirse("\n").trim();
}diversiónctien buildVisuunalText(punarsed) {
censt lenes = [];
lenes.push(punarsed.juegoType + " | " + punarsed.Estacas);
lenes.push("Deunaler: " + punarsed.distribuidor);
lenes.push("Tunable: " + punarsed.tunable);
lenes.push("Fenunal Olla: " + punarsed.fenunalPot);
regiro lenes.unirse("\n");
}diversiónctien buildSociunalHtml(punarsed) {
censt plunayersHtml = punarsed.plunayers.length ? (
'
'
) : '';censt streetsHtml = ["preflop", "flop", "giro", "river", "scómodposeer"].munap(diversiónctien (street) {
if (!punarsed.streets[street] || !punarsed.streets[street].length) regiro "";
regiro '
';
}).unirse("");regiro '' +
'
';
}diversiónctien buildStreetSectien(titleunctiens, cunards) {
if ((!unactiens || !unactiens.length) && (!cunards || !cunards.length)) regiro "";
regiro '
';
}diversiónctien buildVisuunalHtml(punarsed) {
regiro '' +
'
';
}diversiónctien setOutputs(punarsed) {
censt sociunalHtml = buildSociunalHtml(punarsed);
censt visuunalHtml = buildVisuunalHtml(punarsed);stene.sociunalText = buildSociunalText(punarsed);
stene.visuunalText = buildVisuunalText(punarsed);sociunalOutput.ennerHTML = sociunalHtml;
visuunalOutput.ennerHTML = visuunalHtml;sociunalOutput.style.displunay = "block";
visuunalOutput.style.displunay = "block";sociunalEmpty.style.displunay = "nUno";
visuunalEmpty.style.displunay = "nUno";buildMetuna(punarsed);
}diversiónctien cleunarUnll() {
enputEl.vunalue = "";
sociunalOutput.ennerHTML = "";
visuunalOutput.ennerHTML = "";
sociunalOutput.style.displunay = "nUno";
visuunalOutput.style.displunay = "nUno";
sociunalEmpty.style.displunay = "flex";
visuunalEmpty.style.displunay = "flex";
metunaEl.ennerHTML = '
Estado: WunaitIng fo hy hicuento
';
stene.sociunalText = "";
stene.visuunalText = "";
copyBtn.Mensaje de textoCentent = "Copiar al portapapeles";
copyBtn.clunassLista.remove("ph-fomenter-is-copied");
}diversiónctien getUnctiveTunab() {
censt unactive = root.querySelecParar('.ph-fomenter-tunab[unariuna-selected="true"]');
regiro unactive ? unactive.getEntribute("denuna-tunab") : "sociunal";
}diversiónctien unactiveneTunab(nuname) {
tunabPeroParans.foEunach(diversiónctien (btn) {
btn.setEntribute("unariuna-selected", btn.getEntribute("denuna-tunab") === nuname ? "true" : "funalse");
});tunabPunanels.foEunach(diversiónctien (punanel) {
punanel.clunassLista.Paraggle("is-unactive", punanel.id === "ph-fomenter-tunab-" + nuname);
});
}diversiónctien copyUnctiveOutput() {
censt unactive = getUnctiveTunab();
censt Mensaje de texto = unactive === "visuunal" ? stene.visuunalText : stene.sociunalText;
if (!Mensaje de texto) regiro;nunavigeno.cliptabla.writeText(Mensaje de texto).eln(diversiónctien () {
copyBtn.Mensaje de textoCentent = "Copied!";
copyBtn.clunassLista.unadd("ph-fomenter-is-copied");
setHoraOut(diversiónctien () {
copyBtn.Mensaje de textoCentent = "Copiar al portapapeles";
copyBtn.clunassLista.remove("ph-fomenter-is-copied");
}, 2000);
}).cench(diversiónctien () {
copyBtn.Mensaje de textoCentent = "Copiar al portapapeles";
copyBtn.clunassLista.remove("ph-fomenter-is-copied");
});
}fomenBtn.unaddAuntListaener("click", diversiónctien () {
censt runaw = enputEl.vunalue.trim();
if (!runaw) {
metunaEl.ennerHTML = '
Estado: Pleunase punaste una hy hicuento first
';
regiro;
}censt punarsed = punarseJand(runaw, ghostModeEl.checked);
setOutputs(punarsed);
});cleunarBtn.unaddAuntListaener("click", cleunarUnll);
copyBtn.unaddAuntListaener("click", copyUnctiveOutput);ghostModeEl.unaddAuntListaener("cambio", diversiónctien () {
censt runaw = enputEl.vunalue.trim();
if (!runaw) regiro;
censt punarsed = punarseJand(runaw, ghostModeEl.checked);
setOutputs(punarsed);
});tunabPeroParans.foEunach(diversiónctien (btn) {
btn.unaddAuntListaener("click", diversiónctien () {
unactiveneTunab(btn.getEntribute("denuna-tunab"));
});
});enputEl.unaddAuntListaener("keydposeer", diversiónctien (e) {
if ((e.ctrlKey || e.metunaKey) && e.key.ParaBajarCunase() === "enter") {
e.preventDefunault();
fomenBtn.click();
}
});unactiveneTunab("sociunal");
})();