Home Reference Source

js/controllers/MarkdownControls/MarkdownLinkControl.js

import { MarkdownControlBuilder } from '~/template/MarkdownControl';
import ModalController from '~/controllers/ModalController';
import LinkModalTemplate from '~/template/LinkModalTemplate';
import ActionControllerDelegate from '~/delegate/ActionControllerDelegate';

export default MarkdownControlBuilder(
    'Insert Link',
    'k',
    'link',
    (controller) => {
        let modalTemplate = new LinkModalTemplate();
        modalTemplate.delegate = new class extends ActionControllerDelegate {
            didSetStateTo(_, link) {
                controller.insertAtSelectionStart('[')
                controller.insertAtSelectionEnd(`](${link})`)
            }
        }

        ModalController.shared.present(modalTemplate);
    }
);