const getOptionsListeners = []; const initConverterListeners = []; const sectionPreviewListeners = []; export default { onGetOptions(listener) { getOptionsListeners.push(listener); }, onInitConverter(priority, listener) { initConverterListeners[priority] = listener; }, onSectionPreview(listener) { sectionPreviewListeners.push(listener); }, getOptions(properties, isCurrentFile) { return getOptionsListeners.reduce((options, listener) => { listener(options, properties, isCurrentFile); return options; }, {}); }, initConverter(markdown, options) { // Use forEach as it's a sparsed array initConverterListeners.forEach((listener) => { listener(markdown, options); }); }, sectionPreview(elt, options, isEditor) { sectionPreviewListeners.forEach((listener) => { listener(elt, options, isEditor); }); }, };