import { MAGICS } from "../config/constants.js" export function registerHandlebarsHelpers() { const { Handlebars } = globalThis if (!Handlebars) return Handlebars.registerHelper("select", function (selected, options) { const escapedValue = RegExp.escape(Handlebars.escapeExpression(selected)) const rgx = new RegExp(` value=["']${escapedValue}["']`) const html = options.fn(this) return html.replace(rgx, "$& selected") }) Handlebars.registerHelper("getMagicBackground", function (magic) { return game.i18n.localize(MAGICS[magic]?.background ?? "") }) Handlebars.registerHelper("getMagicLabel", function (magic) { return game.i18n.localize(MAGICS[magic]?.label ?? "") }) Handlebars.registerHelper("getMagicAspectLabel", function (magic) { return game.i18n.localize(MAGICS[magic]?.aspectlabel ?? "") }) Handlebars.registerHelper("getMagicSpecialityLabel", function (magic, speciality) { return game.i18n.localize(MAGICS[magic]?.speciality?.[speciality]?.label ?? "") }) Handlebars.registerHelper("getMagicSpecialityClassIcon", function (magic, speciality) { return MAGICS[magic]?.speciality?.[speciality]?.classicon ?? "" }) Handlebars.registerHelper("getMagicSpecialityIcon", function (magic, speciality) { return MAGICS[magic]?.speciality?.[speciality]?.icon ?? "" }) Handlebars.registerHelper("getMagicSpecialityElementIcon", function (magic, speciality) { return MAGICS[magic]?.speciality?.[speciality]?.elementicon ?? "" }) Handlebars.registerHelper("getMagicSpecialityLabelIcon", function (magic, speciality) { return MAGICS[magic]?.speciality?.[speciality]?.labelicon ?? "" }) Handlebars.registerHelper("getMagicSpecialityLabelElement", function (magic, speciality) { return game.i18n.localize(MAGICS[magic]?.speciality?.[speciality]?.labelelement ?? "") }) Handlebars.registerHelper("getMagicAspectIcon", function (magic) { const icons = { internalcinnabar: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", alchemy: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", masteryoftheway: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", exorcism: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", geomancy: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp", } return icons[magic] ?? "" }) Handlebars.registerHelper("getElementIcon", function (aspect) { const icons = { metal: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp", water: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", earth: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", fire: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", wood: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp", // legacy French keys eau: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp", terre: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp", feu: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp", bois: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp", } return icons[aspect] ?? "" }) Handlebars.registerHelper("getOrientationIcon", function (orientation) { const icons = { yin: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp", yang: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp", yinyang: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp", } return icons[orientation] ?? "" }) Handlebars.registerHelper("getOrientationLabel", function (orientation) { const keys = { yin: "CDE.OrientationYin", yang: "CDE.OrientationYang", yinyang: "CDE.OrientationYinYang", } return game.i18n.localize(keys[orientation] ?? "CDE.Orientation") }) Handlebars.registerHelper("getActivationLabel", function (activation) { const keys = { "action-attack": "CDE.ActivationAttack", "action-defense": "CDE.ActivationDefense", "action-aid": "CDE.ActivationAid", "action-attack-defense": "CDE.ActivationAttackOrDefense", reaction: "CDE.ActivationReaction", dice: "CDE.ActivationDice", "damage-inflicted": "CDE.ActivationDamageInflicted", "damage-received": "CDE.ActivationDamageReceived", } return game.i18n.localize(keys[activation] ?? "CDE.Activation") }) }