UNPKG

on-codemerge

Version:

A WYSIWYG editor for on-codemerge is a user-friendly interface that allows users to edit and view their code in real time, exactly as it will appear in the final product

88 lines (87 loc) 3.25 kB
/*! on-codemerge v1.3.1 @author Pavel Kuzmin @license MIT @homepage https://s00d.github.io/on-codemerge/ @repository git+https://github.com/s00d/on-codemerge.git Copyright (c) 2026 Pavel Kuzmin - Built on 2026-07-02T13:39:17.947Z */ var s = Object.defineProperty; var p = (a, t, e) => t in a ? s(a, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[t] = e; var c = (a, t, e) => p(a, typeof t != "symbol" ? t + "" : t, e); import { PopupManager as d } from "../../../core/ui/PopupManager.mjs"; import { TableExportService as h } from "../services/TableExportService.mjs"; class x { constructor(t, e) { c(this, "editor"); c(this, "table"); c(this, "exportService"); this.editor = t, this.table = e, this.exportService = new h(); } execute() { this.showExportDialog(); } showExportDialog() { if (!this.editor) return; const t = new d(this.editor, { title: this.editor.t("Export Table"), className: "export-dialog-popup", closeOnClickOutside: !0, buttons: [ { label: this.editor.t("Cancel"), variant: "secondary", onClick: () => t.hide() } ], items: [ { type: "custom", id: "export-options", content: () => { const e = document.createElement("div"); e.className = "p-4 space-y-4"; const o = document.createElement("select"); o.className = "w-full p-2 border border-gray-300 rounded-md", [ { value: "csv", label: "CSV" }, { value: "json", label: "JSON" }, { value: "html", label: "HTML" }, { value: "excel", label: "Excel" } ].forEach((r) => { const n = document.createElement("option"); n.value = r.value, n.textContent = r.label, o.appendChild(n); }), e.appendChild(o); const l = document.createElement("button"); return l.className = "w-full bg-blue-500 text-white p-2 rounded-md hover:bg-blue-600", l.textContent = this.editor.t("Export"), l.onclick = () => { this.performExport(o.value), t.hide(); }, e.appendChild(l), e; } } ] }); t.show(); } performExport(t) { try { let e, o; switch (t) { case "csv": e = this.exportService.exportToCSV(this.table), o = "text/csv"; break; case "json": e = this.exportService.exportToJSON(this.table), o = "application/json"; break; case "html": e = this.exportService.exportToHTML(this.table), o = "text/html"; break; case "excel": e = this.exportService.exportToExcel(this.table), o = "application/vnd.ms-excel"; break; default: throw new Error(`Unsupported format: ${t}`); } const i = new Blob([e], { type: o }), l = URL.createObjectURL(i), r = document.createElement("a"); r.href = l, r.download = `table.${t}`, document.body.appendChild(r), r.click(), document.body.removeChild(r), URL.revokeObjectURL(l); } catch (e) { console.error("Export failed:", e); } } undo() { } } export { x as ExportTableCommand };