import { getWidthOfText } from "./utils.mjs"; export default class RegisterHandlebarsHelpers { static registerHelpers(){ Handlebars.registerHelper({ looseEq: this.looseEq, times: this.times, join: this.join, add: this.add, subtract: this.subtract, objectSelector: this.objectSelector, includes: this.includes, simpleEditor: this.simpleEditor, debug: this.debug, }); }; static looseEq(a, b){ return a == b; } static times(nr, block){ var accum = ''; for(var i = 0; i < nr; ++i) accum += block.fn(i); return accum; } static join(...options){ return options.slice(0, options.length-1); } static add(a, b){ const aNum = Number.parseInt(a); const bNum = Number.parseInt(b); return (Number.isNaN(aNum) ? 0 : aNum) + (Number.isNaN(bNum) ? 0 : bNum); } static subtract(a, b){ const aNum = Number.parseInt(a); const bNum = Number.parseInt(b); return (Number.isNaN(aNum) ? 0 : aNum) - (Number.isNaN(bNum) ? 0 : bNum); } static objectSelector(options){ let { title, values, titleFontSize, ids, style } = options.hash; const titleLength = getWidthOfText(title, titleFontSize, true, true); const margins = 12; const buttons = options.fn(); const nrButtons = Math.max($(buttons).length-1, 1); const iconWidth = 26; const texts = values.reduce((acc, x, index) => { if(x){ acc.push(`${x}`); } return acc; }, []).join(' '); const html = `