// Copyright (c) 2024-present AI-Labs // @ ts-nocheck import { EditorEvents } from "@tiptap/core"; import { t } from "i18next"; import { UAIEditorEventListener, UAIEditorOptions } from "../../../../core/UAIEditor.ts"; import { MenuButton, MenuButtonOptions } from "../../MenuButton.ts"; import icon from "../../../../assets/icons/print.svg"; /** * 基础菜单:打印 */ export class Print extends HTMLElement implements UAIEditorEventListener { // 按钮选项 menuButtonOptions: MenuButtonOptions = { menuType: "button", enable: true, icon: icon, hideText: true, text: t('base.print.text'), tooltip: t('base.print.text'), shortcut: "Ctrl+P", } // 功能按钮 menuButton: MenuButton; constructor(options: MenuButtonOptions) { super(); // 初始化功能按钮选项 this.menuButtonOptions = { ...this.menuButtonOptions, ...options }; // 创建功能按钮 this.menuButton = new MenuButton(this.menuButtonOptions); } /** * 定义创建方法 * @param event * @param options */ onCreate(event: EditorEvents["create"], options: UAIEditorOptions) { this.menuButton.onCreate(event, options); this.appendChild(this.menuButton); // 定义按钮点击事件,打印内容 this.addEventListener("click", () => { if (this.menuButtonOptions.enable) { event.editor.commands.blur(); const iframe = document.createElement("iframe"); iframe.classList.add("uai-print-iframe"); document.body.appendChild(iframe); // 设置打印内容 const printContent = ` 有爱文档(UAI-Editor) ${Array.from(document.querySelectorAll('link, style')).map((item) => item.outerHTML).join('')}
${document.querySelector(`.uai-zoomable-container`)?.outerHTML ?? ''}