import NoteContextAwareWidget from "../note_context_aware_widget.js";
import utils from "../../services/utils.js";
import branchService from "../../services/branches.js";
const TPL = `
    
    
    
`;
export default class NoteActionsWidget extends NoteContextAwareWidget {
    isEnabled() {
        return this.note?.type !== 'launcher';
    }
    doRender() {
        this.$widget = $(TPL);
        this.$findInTextButton = this.$widget.find('.find-in-text-button');
        this.$printActiveNoteButton = this.$widget.find('.print-active-note-button');
        this.$showSourceButton = this.$widget.find('.show-source-button');
        this.$renderNoteButton = this.$widget.find('.render-note-button');
        this.$exportNoteButton = this.$widget.find('.export-note-button');
        this.$exportNoteButton.on("click", () => {
            if (this.$exportNoteButton.hasClass("disabled")) {
                return;
            }
            this.triggerCommand("showExportDialog", {
                notePath: this.noteContext.notePath,
                defaultType: "single"
            });
        });
        this.$importNoteButton = this.$widget.find('.import-files-button');
        this.$importNoteButton.on("click", () => this.triggerCommand("showImportDialog", {noteId: this.noteId}));
        this.$widget.on('click', '.dropdown-item', () => this.$widget.find("[data-toggle='dropdown']").dropdown('toggle'));
        this.$openNoteExternallyButton = this.$widget.find(".open-note-externally-button");
        this.$openNoteCustomButton = this.$widget.find(".open-note-custom-button");
        this.$deleteNoteButton = this.$widget.find(".delete-note-button");
        this.$deleteNoteButton.on("click", () => {
            if (this.note.noteId === 'root') {
                return;
            }
            branchService.deleteNotes([this.note.getParentBranches()[0].branchId], true);
        });
    }
    refreshWithNote(note) {
        this.toggleDisabled(this.$findInTextButton, ['text', 'code', 'book', 'search'].includes(note.type));
        this.toggleDisabled(this.$showSourceButton, ['text', 'relationMap', 'mermaid'].includes(note.type));
        this.toggleDisabled(this.$printActiveNoteButton, ['text', 'code'].includes(note.type));
        this.$renderNoteButton.toggle(note.type === 'render');
        this.$openNoteExternallyButton.toggle(utils.isElectron());
        this.$openNoteCustomButton.toggle(utils.isElectron() && !utils.isMac()); // no implementation for Mac yet
    }
    toggleDisabled($el, enable) {
        if (enable) {
            $el.removeAttr('disabled');
        } else {
            $el.attr('disabled', 'disabled');
        }
    }
    entitiesReloadedEvent({loadResults}) {
        if (loadResults.isNoteReloaded(this.noteId)) {
            this.refresh();
        }
    }
}