import type { EventData } from "../components/app_context.js"; import type FNote from "../entities/fnote.js"; import { t } from "../services/i18n.js"; import NoteContextAwareWidget from "./note_context_aware_widget.js"; const TPL = /*html*/`
`; export default class ApiLogWidget extends NoteContextAwareWidget { private $logContainer!: JQuery; private $closeButton!: JQuery; isEnabled() { return !!this.note && this.note.mime.startsWith("application/javascript;env=") && super.isEnabled(); } doRender() { this.$widget = $(TPL); this.toggle(false); this.$logContainer = this.$widget.find(".api-log-container"); this.$closeButton = this.$widget.find(".close-api-log-button"); this.$closeButton.on("click", () => this.toggle(false)); } async refreshWithNote(note: FNote) { this.$logContainer.empty(); } apiLogMessagesEvent({ messages, noteId }: EventData<"apiLogMessages">) { if (!this.isNote(noteId)) { return; } this.toggle(true); for (const message of messages) { this.$logContainer.append(message).append($("
")); } } toggle(show: boolean) { this.$widget.toggleClass("hidden-api-log", !show); } }