@editora/core 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodePlugin.native-CK9d8rmt.mjs","sources":["../../light-code-editor/dist/index.es.js","../../plugins/code/src/CodePlugin.native.ts"],"sourcesContent":["class k {\n constructor(t = \"\") {\n this._lines = [], this._version = 0, this.setText(t);\n }\n // Get line at index\n getLine(t) {\n return this._lines[t] || \"\";\n }\n // Get all lines\n getLines() {\n return [...this._lines];\n }\n // Get total number of lines\n getLineCount() {\n return this._lines.length;\n }\n // Get total text content\n getText() {\n return this._lines.join(`\n`);\n }\n // Set entire text content\n setText(t) {\n this._lines = t.split(`\n`), this._version++;\n }\n // Get text in a range\n getTextInRange(t) {\n if (t.start.line === t.end.line)\n return this.getLine(t.start.line).substring(t.start.column, t.end.column);\n const e = [];\n e.push(this.getLine(t.start.line).substring(t.start.column));\n for (let s = t.start.line + 1; s < t.end.line; s++)\n e.push(this.getLine(s));\n return t.end.line < this.getLineCount() && e.push(this.getLine(t.end.line).substring(0, t.end.column)), e.join(`\n`);\n }\n // Replace text in range\n replaceRange(t, e) {\n const s = this.getTextInRange(t);\n if (t.start.line === t.end.line) {\n const i = this.getLine(t.start.line), n = i.substring(0, t.start.column) + e + i.substring(t.end.column);\n this._lines[t.start.line] = n;\n } else {\n const i = this.getLine(t.start.line), n = this.getLine(t.end.line), o = i.substring(0, t.start.column) + e, h = n.substring(t.end.column), r = e.split(`\n`);\n r[0] = o + r[0], r[r.length - 1] = r[r.length - 1] + h, this._lines.splice(t.start.line, t.end.line - t.start.line + 1, ...r);\n }\n return this._version++, { range: t, text: e, oldText: s };\n }\n // Insert text at position\n insertText(t, e) {\n const s = { start: t, end: t };\n return this.replaceRange(s, e);\n }\n // Delete text in range\n deleteRange(t) {\n return this.replaceRange(t, \"\");\n }\n // Convert position to offset\n positionToOffset(t) {\n let e = 0;\n for (let s = 0; s < t.line; s++)\n e += this.getLine(s).length + 1;\n return e += t.column, e;\n }\n // Convert offset to position\n offsetToPosition(t) {\n let e = t;\n for (let s = 0; s < this.getLineCount(); s++) {\n const i = this.getLine(s).length;\n if (e <= i)\n return { line: s, column: e };\n e -= i + 1;\n }\n return {\n line: this.getLineCount() - 1,\n column: this.getLine(this.getLineCount() - 1).length\n };\n }\n // Validate position\n isValidPosition(t) {\n return !(t.line < 0 || t.line >= this.getLineCount() || t.column < 0 || t.column > this.getLine(t.line).length);\n }\n // Validate range\n isValidRange(t) {\n return this.isValidPosition(t.start) && this.isValidPosition(t.end);\n }\n // Get version for change tracking\n getVersion() {\n return this._version;\n }\n // Clone the model\n clone() {\n const t = new k();\n return t._lines = [...this._lines], t._version = this._version, t;\n }\n}\nclass P {\n constructor(t) {\n this.gutterWidth = 50, this.lineHeight = 21, this.container = t, this.createDOM();\n }\n createDOM() {\n this.container.innerHTML = \"\";\n const t = document.createElement(\"div\");\n this.editorContainer = t, t.style.cssText = `\n position: relative;\n display: flex;\n width: 100%;\n height: 100%;\n background: var(--editor-background, #1e1e1e);\n color: var(--editor-foreground, #f8f9fa);\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 14px;\n line-height: ${this.lineHeight}px;\n /* make the outer container the single scrollable element so gutter and content scroll together */\n overflow: auto;\n `, this.lineNumbersElement = document.createElement(\"div\"), this.lineNumbersElement.setAttribute(\"data-editor-gutter\", \"true\"), this.lineNumbersElement.style.cssText = `\n display: table-cell;\n vertical-align: top;\n width: ${this.gutterWidth}px;\n background: var(--editor-gutter-background, #252526);\n color: var(--editor-gutter-foreground, #858585);\n padding: 0 8px 0 0;\n text-align: right;\n border-right: 1px solid var(--editor-gutter-border, #3e3e42);\n user-select: none;\n z-index: 1;\n `, this.contentElement = document.createElement(\"div\"), this.contentElement.style.cssText = `\n display: table-cell;\n vertical-align: top;\n padding: 0 12px;\n background: transparent;\n border: none;\n outline: none;\n white-space: pre;\n overflow-x: auto;\n overflow-y: visible;\n min-height: 400px;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n tab-size: 2;\n -moz-tab-size: 2;\n `, this.contentElement.contentEditable = \"true\", this.contentElement.spellcheck = !1;\n const e = document.createElement(\"div\");\n e.setAttribute(\"data-editora-editor\", \"true\"), e.style.cssText = \"display: table; table-layout: fixed; width: 100%; height: 100%;\", e.appendChild(this.lineNumbersElement), e.appendChild(this.contentElement), t.appendChild(e), this.container.appendChild(t), this.updateLineNumbers(1);\n }\n // Update line numbers\n updateLineNumbers(t) {\n const e = Math.max(t, 20), s = Array.from({ length: e }, (i, n) => n + 1);\n this.lineNumbersElement.innerHTML = s.map((i) => `<div style=\"height: ${this.lineHeight}px; line-height: ${this.lineHeight}px; padding-right: 12px;\">${i}</div>`).join(\"\");\n }\n // Get content element\n getContentElement() {\n return this.contentElement;\n }\n // Get line numbers element\n getLineNumbersElement() {\n return this.lineNumbersElement;\n }\n // Get text content\n getText() {\n return this.contentElement.textContent || \"\";\n }\n // Set text content\n setText(t) {\n this.contentElement.textContent = t;\n const e = t.split(`\n`).length;\n this.updateLineNumbers(e);\n }\n // Set inner HTML (used for syntax highlighted content)\n setHTML(t) {\n const e = /&lt;|&gt;/.test(t), s = /<span\\b/i.test(t), i = /<[^>]+>/.test(t);\n e && s ? this.contentElement.innerHTML = t : i && !e ? this.contentElement.textContent = t : this.contentElement.innerHTML = t;\n const o = (this.contentElement.textContent || \"\").split(`\n`).length;\n this.updateLineNumbers(o);\n }\n // Get cursor position from DOM selection\n getCursorPosition() {\n const t = window.getSelection();\n if (!t || t.rangeCount === 0)\n return { line: 0, column: 0 };\n const e = t.getRangeAt(0), s = e.cloneRange();\n s.selectNodeContents(this.contentElement), s.setEnd(e.endContainer, e.endOffset);\n const n = s.toString().split(`\n`);\n return {\n line: n.length - 1,\n column: n[n.length - 1].length\n };\n }\n // Set cursor position\n setCursorPosition(t) {\n const s = this.getText().split(`\n`), i = Math.min(t.line, s.length - 1), n = Math.min(t.column, s[i]?.length || 0);\n let o = 0;\n for (let a = 0; a < i; a++)\n o += s[a].length + 1;\n o += n;\n const h = document.createRange(), r = window.getSelection();\n let l = 0, c = null, d = 0;\n const f = document.createTreeWalker(\n this.contentElement,\n NodeFilter.SHOW_TEXT,\n null\n );\n let g;\n for (; g = f.nextNode(); ) {\n const a = g.textContent?.length || 0;\n if (l + a >= o) {\n c = g, d = o - l;\n break;\n }\n l += a;\n }\n if (c)\n try {\n h.setStart(c, d), h.setEnd(c, d), r?.removeAllRanges(), r?.addRange(h);\n } catch (a) {\n console.warn(\"Could not set cursor position:\", a);\n }\n }\n // Get selection range\n getSelectionRange() {\n const t = window.getSelection();\n if (!t || t.rangeCount === 0 || t.isCollapsed)\n return;\n const e = t.getRangeAt(0), s = e.cloneRange();\n s.selectNodeContents(this.contentElement), s.setEnd(e.startContainer, e.startOffset);\n const n = s.toString().split(`\n`), o = e.cloneRange();\n o.selectNodeContents(this.contentElement), o.setEnd(e.endContainer, e.endOffset);\n const r = o.toString().split(`\n`);\n return {\n start: {\n line: n.length - 1,\n column: n[n.length - 1].length\n },\n end: {\n line: r.length - 1,\n column: r[r.length - 1].length\n }\n };\n }\n // Set selection range\n setSelectionRange(t) {\n this.setCursorPosition(t.start);\n }\n // Focus the editor\n focus() {\n this.contentElement.focus();\n }\n // Blur the editor\n blur() {\n this.contentElement.blur();\n }\n // Set read-only mode\n setReadOnly(t) {\n this.contentElement.contentEditable = t ? \"false\" : \"true\";\n }\n // Apply theme\n applyTheme(t) {\n Object.entries(t).forEach(([e, s]) => {\n this.container.style.setProperty(`--${e}`, s);\n });\n }\n // Scroll to position\n scrollToPosition(t) {\n const e = this.lineNumbersElement.children[t.line];\n e && e.scrollIntoView({ block: \"center\", behavior: \"smooth\" });\n }\n // Get scroll position\n getScrollTop() {\n return this.editorContainer.scrollTop;\n }\n // Set scroll position\n setScrollTop(t) {\n this.editorContainer.scrollTop = t;\n }\n // Destroy the view\n destroy() {\n this.container && this.container.parentNode && this.container.parentNode.removeChild(this.container), this._rafId && (cancelAnimationFrame(this._rafId), this._rafId = void 0);\n }\n}\nclass $ {\n constructor(t, e = {}) {\n this.extensions = /* @__PURE__ */ new Map(), this.commands = /* @__PURE__ */ new Map(), this.eventListeners = /* @__PURE__ */ new Map(), this.folds = [], this.currentTheme = \"default\", this.isDestroyed = !1, this.undoStack = [], this.redoStack = [], this.suppressHistory = !1, this.expectingProgrammaticCursor = !1, this.config = {\n value: \"\",\n theme: \"default\",\n readOnly: !1,\n tabSize: 2,\n lineWrapping: !1,\n lineNumbers: !0,\n ...e\n }, this.textModel = new k(this.config.value), this.view = new P(t), this.setupEventHandlers(), this.config.extensions && this.config.extensions.forEach((s) => this.addExtension(s)), this.setTheme(this.config.theme), this.view.setReadOnly(this.config.readOnly || !1), this.renderTextWithHighlight(this.textModel.getText()), this.registerBuiltInCommands();\n }\n // Public accessors for extensions\n getTextModel() {\n return this.textModel;\n }\n getView() {\n return this.view;\n }\n getConfig() {\n return { ...this.config };\n }\n // Register built-in editor commands like undo/redo/insertTab\n registerBuiltInCommands() {\n this.registerCommand(\"undo\", () => this.undo()), this.registerCommand(\"redo\", () => this.redo()), this.registerCommand(\"insertTab\", () => this.insertTab()), this.registerCommand(\"save\", () => {\n this.emit(\"save\");\n });\n }\n // Get keymap extension if available\n getKeymapExtension() {\n return this.extensions.get(\"keymap\");\n }\n // Setup DOM event handlers\n setupEventHandlers() {\n const t = this.view.getContentElement();\n t.addEventListener(\"input\", () => {\n const e = this.view.getText(), s = this.textModel.getText();\n if (e !== s) {\n if (!this.suppressHistory) {\n const i = this.getCursor().position, n = this.textModel.positionToOffset(i), o = this.getSelection();\n let h, r;\n o && (h = this.textModel.positionToOffset(o.start), r = this.textModel.positionToOffset(o.end)), this.undoStack.push({ text: s, cursorOffset: n, anchorOffset: h, focusOffset: r }), this.undoStack.length > 100 && this.undoStack.shift(), this.redoStack.length = 0;\n }\n this.textModel.setText(e), this.highlightTimeout && clearTimeout(this.highlightTimeout), this.highlightTimeout = setTimeout(() => {\n this.renderTextWithHighlight(this.textModel.getText(), !1), this.highlightTimeout = null;\n }, 300), this.updateLineNumbers(), this.emit(\"change\", [{ range: this.getFullRange(), text: e, oldText: s }]);\n }\n }), t.addEventListener(\"selectionchange\", () => {\n const e = this.getCursor(), s = this.getSelection();\n this.emit(\"cursor\", e), s && this.emit(\"selection\", s);\n }), t.addEventListener(\"keydown\", (e) => {\n if (this.emit(\"keydown\", e), e.key === \"Tab\") {\n this.config.readOnly || this.insertTab(), e.preventDefault(), e.stopPropagation();\n return;\n }\n if (e.key === \"Enter\") {\n if (!this.config.readOnly) {\n const s = window.getSelection();\n if (s && s.rangeCount > 0) {\n const i = this.getCursor().position, n = this.textModel.positionToOffset(i), o = this.getSelection();\n let h, r;\n o && (h = this.textModel.positionToOffset(o.start), r = this.textModel.positionToOffset(o.end)), this.suppressHistory || (this.undoStack.push({ text: this.textModel.getText(), cursorOffset: n, anchorOffset: h, focusOffset: r }), this.undoStack.length > 100 && this.undoStack.shift(), this.redoStack.length = 0);\n const l = s.getRangeAt(0);\n l.deleteContents();\n const c = document.createTextNode(`\n`);\n l.insertNode(c), l.setStartAfter(c), l.collapse(!0), s.removeAllRanges(), s.addRange(l);\n const d = this.getCursor().position, f = this.textModel.positionToOffset(d), g = this.getSelection();\n let a, u;\n g && (a = this.textModel.positionToOffset(g.start), u = this.textModel.positionToOffset(g.end));\n const p = this.view.getText();\n this.textModel.setText(p), this.highlightTimeout && clearTimeout(this.highlightTimeout), this.highlightTimeout = setTimeout(() => {\n this.renderTextWithHighlight(this.textModel.getText(), !1), requestAnimationFrame(() => {\n try {\n if (g && (a !== void 0 || u !== void 0)) {\n const m = a !== void 0 ? a : f, M = u !== void 0 ? u : f, y = Math.min(m, M), C = Math.max(m, M), w = this.textModel.offsetToPosition(y), v = this.textModel.offsetToPosition(C);\n this.setSelection({ start: w, end: v });\n } else {\n const m = this.textModel.offsetToPosition(f);\n this.setCursor(m);\n }\n } catch {\n }\n }), this.highlightTimeout = null;\n }, 300), this.updateLineNumbers(), this.emit(\"change\", [{ range: this.getFullRange(), text: this.getValue(), oldText: \"\" }]);\n }\n }\n e.preventDefault(), e.stopPropagation();\n return;\n }\n for (const s of this.extensions.values())\n if (s.onKeyDown && s.onKeyDown(e) === !1) {\n e.preventDefault(), e.stopPropagation();\n return;\n }\n }), t.addEventListener(\"mousedown\", (e) => {\n this.emit(\"mousedown\", e);\n for (const s of this.extensions.values())\n if (s.onMouseDown && s.onMouseDown(e) === !1) {\n e.preventDefault(), e.stopPropagation();\n return;\n }\n }), t.addEventListener(\"focus\", () => {\n this.emit(\"focus\");\n }), t.addEventListener(\"blur\", () => {\n this.emit(\"blur\");\n });\n }\n // Update line numbers display\n updateLineNumbers() {\n const t = this.textModel.getLineCount();\n this.view.updateLineNumbers(t);\n }\n // Get full range of document\n getFullRange() {\n return {\n start: { line: 0, column: 0 },\n end: {\n line: this.textModel.getLineCount() - 1,\n column: this.textModel.getLine(this.textModel.getLineCount() - 1).length\n }\n };\n }\n // Emit events to listeners\n emit(t, ...e) {\n const s = this.eventListeners.get(t);\n s && s.forEach((i) => i(...e));\n }\n // State management\n getValue() {\n return this.textModel.getText();\n }\n setValue(t) {\n const e = this.textModel.getText();\n this.textModel.setText(t), this.renderTextWithHighlight(t, !1), this.updateLineNumbers(), this.emit(\"change\", [{ range: this.getFullRange(), text: t, oldText: e }]);\n }\n getState() {\n return {\n text: this.getValue(),\n cursor: this.getCursor(),\n selection: this.getSelection(),\n readOnly: this.config.readOnly || !1,\n theme: this.currentTheme\n };\n }\n // Cursor & Selection\n getCursor() {\n const t = this.view.getCursorPosition();\n return {\n position: t,\n anchor: t\n // For now, cursor and anchor are the same\n };\n }\n setCursor(t) {\n this.view.setCursorPosition(t), this.emit(\"cursor\", this.getCursor());\n }\n getSelection() {\n return this.view.getSelectionRange();\n }\n setSelection(t) {\n this.view.setSelectionRange(t), this.emit(\"selection\", t);\n }\n // Configuration\n setTheme(t) {\n this.currentTheme = t;\n const e = {\n \"editor-background\": t === \"dark\" ? \"#1e1e1e\" : \"#ffffff\",\n \"editor-foreground\": t === \"dark\" ? \"#f8f9fa\" : \"#1a1a1a\",\n \"editor-gutter-background\": t === \"dark\" ? \"#252526\" : \"#f8f9fa\",\n \"editor-gutter-foreground\": t === \"dark\" ? \"#858585\" : \"#666666\",\n \"editor-gutter-border\": t === \"dark\" ? \"#3e3e42\" : \"#e1e5e9\"\n };\n this.view.applyTheme(e);\n const s = this.extensions.get(\"syntax-highlighting\");\n if (s && typeof s.setTheme == \"function\")\n try {\n s.setTheme(t === \"dark\" ? \"dark\" : \"light\"), this.renderTextWithHighlight(this.textModel.getText());\n } catch (i) {\n console.warn(\"Error applying theme to syntax-highlighting extension\", i);\n }\n }\n setReadOnly(t) {\n this.config.readOnly = t, this.view.setReadOnly(t);\n }\n // Extensions & Commands\n addExtension(t) {\n if (this.extensions.has(t.name))\n throw new Error(`Extension '${t.name}' already exists`);\n this.extensions.set(t.name, t), t.setup(this), t.name === \"syntax-highlighting\" && typeof t.highlightHTML == \"function\" && this.renderTextWithHighlight(this.textModel.getText());\n }\n removeExtension(t) {\n const e = this.extensions.get(t);\n e && e.destroy && e.destroy(), this.extensions.delete(t);\n }\n executeCommand(t, ...e) {\n const s = this.commands.get(t);\n s ? s(this, ...e) : console.warn(`Command '${t}' not found`);\n }\n // Register a command\n registerCommand(t, e) {\n this.commands.set(t, e);\n }\n // Search & Navigation\n search(t, e = {}) {\n const s = {\n caseSensitive: !1,\n regex: !1,\n ...e\n }, i = [], n = this.getValue();\n n.split(`\n`);\n let o = s.caseSensitive ? n : n.toLowerCase(), h = s.caseSensitive ? t : t.toLowerCase();\n if (s.regex) {\n const r = new RegExp(h, s.caseSensitive ? \"g\" : \"gi\");\n let l;\n for (; (l = r.exec(o)) !== null; ) {\n const c = this.textModel.offsetToPosition(l.index), d = this.textModel.offsetToPosition(l.index + l[0].length);\n i.push({\n range: { start: c, end: d },\n match: l[0]\n });\n }\n } else {\n let r = 0, l = o.indexOf(h, r);\n for (; l !== -1; ) {\n const c = l + t.length, d = this.textModel.offsetToPosition(l), f = this.textModel.offsetToPosition(c);\n i.push({\n range: { start: d, end: f },\n match: n.substring(l, c)\n }), r = c, l = o.indexOf(h, r);\n }\n }\n return i;\n }\n replace(t, e) {\n const s = this.getValue();\n if (!this.suppressHistory) {\n const n = this.getCursor().position, o = this.textModel.positionToOffset(n), h = this.getSelection();\n let r, l;\n h && (r = this.textModel.positionToOffset(h.start), l = this.textModel.positionToOffset(h.end)), this.undoStack.push({ text: s, cursorOffset: o, anchorOffset: r, focusOffset: l }), this.undoStack.length > 100 && this.undoStack.shift(), this.redoStack.length = 0;\n }\n const i = this.textModel.replaceRange(t, e);\n this.renderTextWithHighlight(this.getValue(), !1), this.emit(\"change\", [i]);\n }\n replaceAll(t, e, s = {}) {\n const i = this.search(t, s);\n let n = 0;\n for (let o = i.length - 1; o >= 0; o--)\n this.replace(i[o].range, e), n++;\n return n;\n }\n // Folding (basic implementation)\n fold(t) {\n const e = {\n start: t.start,\n end: t.end,\n collapsed: !0,\n level: 0\n };\n this.folds.push(e);\n }\n unfold(t) {\n this.folds = this.folds.filter(\n (e) => !(e.start.line === t.start.line && e.end.line === t.end.line)\n );\n }\n getFolds() {\n return [...this.folds];\n }\n // Utilities\n focus() {\n this.view.focus();\n }\n blur() {\n this.view.blur();\n }\n // Render text using syntax highlighting extension if available\n // If `restoreSelection` is true (default), the method captures current selection/caret\n // and restores it after updating the DOM. Callers that will explicitly set the caret\n // should pass `false` to avoid stomping programmatic cursor changes.\n renderTextWithHighlight(t, e = !0) {\n const s = this.extensions.get(\"syntax-highlighting\");\n if (s && typeof s.highlightHTML == \"function\")\n try {\n const i = !e && !this.expectingProgrammaticCursor;\n let n, o, h, r;\n if (e || i) {\n n = this.getSelection();\n const c = this.getCursor().position;\n o = this.textModel.positionToOffset(c), n && (h = this.textModel.positionToOffset(n.start), r = this.textModel.positionToOffset(n.end));\n }\n const l = s.highlightHTML(t);\n typeof this.view.setHighlightHTML == \"function\" ? this.view.setHighlightHTML(l) : this.view.setHTML(l), (e || i) && requestAnimationFrame(() => {\n try {\n if (n && (h !== void 0 || r !== void 0)) {\n const c = h !== void 0 ? h : o, d = r !== void 0 ? r : o, f = Math.min(c, d), g = Math.max(c, d), a = this.textModel.offsetToPosition(f), u = this.textModel.offsetToPosition(g);\n this.view.setSelectionRange({ start: a, end: u });\n } else if (o !== void 0) {\n const c = this.textModel.offsetToPosition(o);\n this.view.setCursorPosition(c);\n }\n } catch {\n }\n });\n return;\n } catch (i) {\n console.warn(\"Syntax highlighting failed, falling back to plain text\", i);\n }\n this.view.setText(t);\n }\n destroy() {\n if (!this.isDestroyed) {\n this.isDestroyed = !0;\n for (const t of this.extensions.values())\n t.destroy && t.destroy();\n this.extensions.clear(), this.view.destroy(), this.commands.clear(), this.eventListeners.clear();\n }\n }\n // History: undo/redo\n undo() {\n if (this.undoStack.length === 0) return;\n const t = this.undoStack.pop(), e = { text: this.getValue(), cursorOffset: this.textModel.positionToOffset(this.getCursor().position) };\n this.redoStack.push(e);\n try {\n this.suppressHistory = !0, this.expectingProgrammaticCursor = !0;\n let s, i;\n typeof t == \"string\" ? s = t : (s = t.text, i = t.cursorOffset), this.setValue(s), requestAnimationFrame(() => {\n try {\n if (i != null)\n if (typeof t != \"string\" && (t.anchorOffset !== void 0 || t.focusOffset !== void 0)) {\n const n = t.anchorOffset !== void 0 ? t.anchorOffset : i, o = t.focusOffset !== void 0 ? t.focusOffset : i, h = Math.min(n, o), r = Math.max(n, o), l = this.textModel.offsetToPosition(h), c = this.textModel.offsetToPosition(r);\n this.setSelection({ start: l, end: c });\n } else {\n const n = this.textModel.offsetToPosition(i);\n this.setCursor(n);\n }\n } catch {\n }\n }), setTimeout(() => {\n this.expectingProgrammaticCursor = !1;\n }, 30);\n } finally {\n this.suppressHistory = !1;\n }\n }\n redo() {\n if (this.redoStack.length === 0) return;\n const t = this.redoStack.pop(), e = { text: this.getValue(), cursorOffset: this.textModel.positionToOffset(this.getCursor().position) };\n this.undoStack.push(e);\n try {\n this.suppressHistory = !0, this.expectingProgrammaticCursor = !0;\n let s, i;\n typeof t == \"string\" ? s = t : (s = t.text, i = t.cursorOffset), this.setValue(s), requestAnimationFrame(() => {\n try {\n if (i != null)\n if (typeof t != \"string\" && (t.anchorOffset !== void 0 || t.focusOffset !== void 0)) {\n const n = t.anchorOffset !== void 0 ? t.anchorOffset : i, o = t.focusOffset !== void 0 ? t.focusOffset : i, h = Math.min(n, o), r = Math.max(n, o), l = this.textModel.offsetToPosition(h), c = this.textModel.offsetToPosition(r);\n this.setSelection({ start: l, end: c });\n } else {\n const n = this.textModel.offsetToPosition(i);\n this.setCursor(n);\n }\n } catch {\n }\n }), setTimeout(() => {\n this.expectingProgrammaticCursor = !1;\n }, 30);\n } finally {\n this.suppressHistory = !1;\n }\n }\n // Insert a tab character or spaces at current cursor\n insertTab() {\n if (this.config.readOnly) return;\n const t = this.getCursor().position, e = this.textModel.positionToOffset(t), s = \" \".repeat(this.config.tabSize || 2), i = this.textModel.insertText(t, s), n = this.textModel.offsetToPosition(this.textModel.positionToOffset(t) + s.length);\n if (!this.suppressHistory) {\n const o = this.getSelection();\n let h, r;\n o && (h = this.textModel.positionToOffset(o.start), r = this.textModel.positionToOffset(o.end)), this.undoStack.push({ text: this.getValue(), cursorOffset: e, anchorOffset: h, focusOffset: r }), this.redoStack.length = 0;\n }\n this.expectingProgrammaticCursor = !0, this.renderTextWithHighlight(this.getValue(), !1), this.setCursor(n), setTimeout(() => {\n this.expectingProgrammaticCursor = !1;\n }, 20), this.emit(\"change\", [i]);\n }\n // Insert a newline at current cursor position\n insertNewLine() {\n if (this.config.readOnly) return;\n const t = this.getCursor().position, e = this.textModel.positionToOffset(t), s = this.textModel.insertText(t, `\n`), i = this.textModel.offsetToPosition(this.textModel.positionToOffset(t) + 1);\n if (!this.suppressHistory) {\n const n = this.getSelection();\n let o, h;\n n && (o = this.textModel.positionToOffset(n.start), h = this.textModel.positionToOffset(n.end)), this.undoStack.push({ text: this.getValue(), cursorOffset: e, anchorOffset: o, focusOffset: h }), this.redoStack.length = 0;\n }\n this.expectingProgrammaticCursor = !0, this.renderTextWithHighlight(this.getValue(), !1), this.setCursor(i), setTimeout(() => {\n this.expectingProgrammaticCursor = !1;\n }, 20), this.emit(\"change\", [s]);\n }\n // Events\n on(t, e) {\n this.eventListeners.has(t) || this.eventListeners.set(t, []), this.eventListeners.get(t).push(e);\n }\n off(t, e) {\n if (!this.eventListeners.has(t)) return;\n const s = this.eventListeners.get(t);\n if (e) {\n const i = s.indexOf(e);\n i !== -1 && s.splice(i, 1);\n } else\n s.length = 0;\n }\n}\nclass H {\n constructor(t) {\n this.name = \"keymap\", this.editor = null, this.keymap = {}, this.isMac = navigator.platform.toUpperCase().indexOf(\"MAC\") >= 0, this.keymap = t || this.getDefaultKeymap();\n }\n setup(t) {\n this.editor = t;\n }\n handleKeyDown(t) {\n if (!this.editor) return;\n const e = this.findMatchingBinding(t);\n if (e)\n return this.editor.executeCommand(e.command), t.preventDefault(), t.stopPropagation(), !1;\n }\n findMatchingBinding(t) {\n const { key: e, ctrlKey: s, altKey: i, shiftKey: n, metaKey: o } = t, h = String(e).toLowerCase(), r = this.keymap[h];\n if (!r) return null;\n for (const l of r) {\n const c = l.ctrlKey === void 0 || l.ctrlKey === s, d = l.altKey === void 0 || l.altKey === i, f = l.shiftKey === void 0 || l.shiftKey === n, g = l.metaKey === void 0 || l.metaKey === o;\n if (c && d && f && g)\n return l;\n }\n return null;\n }\n // Allow EditorCore to call this directly when checking extension.onKeyDown\n onKeyDown(t) {\n return this.handleKeyDown(t);\n }\n getDefaultKeymap() {\n const t = {};\n return this.addBinding(t, \"f\", { ctrlKey: !this.isMac, metaKey: this.isMac }, \"find\"), this.addBinding(t, \"h\", { ctrlKey: !this.isMac, metaKey: this.isMac }, \"replace\"), this.addBinding(t, \"f3\", {}, \"findNext\"), this.addBinding(t, \"f3\", { shiftKey: !0 }, \"findPrev\"), this.addBinding(t, \"g\", { ctrlKey: !this.isMac, metaKey: this.isMac }, \"findNext\"), this.addBinding(t, \"[\", { ctrlKey: !this.isMac, metaKey: this.isMac, shiftKey: !0 }, \"fold\"), this.addBinding(t, \"]\", { ctrlKey: !this.isMac, metaKey: this.isMac, shiftKey: !0 }, \"unfold\"), this.addBinding(t, \"s\", { ctrlKey: !0 }, \"save\"), this.addBinding(t, \"s\", { metaKey: !0 }, \"save\"), this.addBinding(t, \"z\", { ctrlKey: !0 }, \"undo\"), this.addBinding(t, \"z\", { metaKey: !0 }, \"undo\"), this.addBinding(t, \"y\", { ctrlKey: !0 }, \"redo\"), this.addBinding(t, \"y\", { metaKey: !0 }, \"redo\"), this.addBinding(t, \"z\", { ctrlKey: !0, shiftKey: !0 }, \"redo\"), this.addBinding(t, \"z\", { metaKey: !0, shiftKey: !0 }, \"redo\"), this.addBinding(t, \"tab\", {}, \"insertTab\"), this.addBinding(t, \"t\", { ctrlKey: !this.isMac, metaKey: this.isMac, shiftKey: !0 }, \"toggleTheme\"), t;\n }\n addBinding(t, e, s, i) {\n const n = e.toLowerCase();\n t[n] || (t[n] = []), t[n].push({\n key: n,\n command: i,\n ...s\n });\n }\n // Public API for customizing keymap\n setKeymap(t) {\n this.keymap = { ...t };\n }\n addKeyBinding(t) {\n const e = t.key.toLowerCase();\n this.keymap[e] || (this.keymap[e] = []), this.keymap[e] = this.keymap[e].filter((s) => s.command !== t.command), this.keymap[e].push({\n ...t,\n key: e\n });\n }\n removeKeyBinding(t, e) {\n const s = t.toLowerCase();\n e ? this.keymap[s] && (this.keymap[s] = this.keymap[s].filter((i) => i.command !== e), this.keymap[s].length === 0 && delete this.keymap[s]) : delete this.keymap[s];\n }\n getKeymap() {\n return { ...this.keymap };\n }\n getBindingsForCommand(t) {\n const e = [];\n for (const s in this.keymap)\n for (const i of this.keymap[s])\n i.command === t && e.push({ ...i });\n return e;\n }\n getPlatformInfo() {\n return {\n isMac: this.isMac,\n platform: navigator.platform\n };\n }\n destroy() {\n this.keymap = {}, this.editor = null;\n }\n}\nclass R {\n constructor() {\n this.name = \"transaction\", this.transactions = [];\n }\n setup(t) {\n t.on(\"change\", (e) => {\n const s = {\n changes: [e],\n selection: t.getSelection(),\n effects: [],\n annotations: []\n };\n this.transactions.push(s);\n });\n }\n getTransactions() {\n return this.transactions;\n }\n destroy() {\n this.transactions = [];\n }\n}\nclass N {\n constructor() {\n this.name = \"line-numbers\", this.editor = null, this.lineNumbersElement = null, this.isEnabled = !0;\n }\n setup(t) {\n this.editor = t, this.createLineNumbers(), t.registerCommand(\"toggleLineNumbers\", () => {\n this.toggle();\n }), t.on(\"change\", () => {\n this.updateLineNumbers();\n }), this.updateLineNumbers();\n }\n createLineNumbers() {\n if (!this.editor) return;\n const e = this.editor.getView().getLineNumbersElement();\n e && (this.lineNumbersElement = e);\n }\n updateLineNumbers() {\n if (!this.lineNumbersElement || !this.editor || !this.isEnabled) return;\n const t = this.editor.getValue().split(`\n`).length, e = Array.from({ length: Math.max(t, 20) }, (s, i) => i + 1);\n this.lineNumbersElement.innerHTML = e.map((s) => `<div style=\"height: 21px; line-height: 21px; padding-right: 12px;\">${s}</div>`).join(\"\");\n }\n toggle() {\n this.isEnabled = !this.isEnabled, this.lineNumbersElement && (this.lineNumbersElement.style.display = this.isEnabled ? \"block\" : \"none\");\n const t = this.editor.getView().getContentElement();\n t && (t.style.marginLeft = this.isEnabled ? \"60px\" : \"0\"), this.updateLineNumbers();\n }\n destroy() {\n this.lineNumbersElement = null, this.editor = null;\n }\n}\nclass K {\n constructor() {\n this.name = \"theme\", this.editor = null, this.currentTheme = \"dark\";\n }\n setup(t) {\n this.editor = t, t.registerCommand(\"setTheme\", (e) => {\n this.setTheme(e);\n }), t.registerCommand(\"toggleTheme\", () => {\n this.toggleTheme();\n }), this.setTheme(this.currentTheme);\n }\n setTheme(t) {\n this.editor && (this.currentTheme = t, this.editor.setTheme(t));\n }\n toggleTheme() {\n const t = this.currentTheme === \"dark\" ? \"light\" : \"dark\";\n this.setTheme(t);\n }\n getCurrentTheme() {\n return this.currentTheme;\n }\n destroy() {\n this.editor = null;\n }\n}\nclass B {\n constructor() {\n this.name = \"read-only\", this.editor = null, this.isReadOnly = !1;\n }\n setup(t) {\n this.editor = t, t.registerCommand(\"setReadOnly\", (e) => {\n this.setReadOnly(e);\n }), t.registerCommand(\"toggleReadOnly\", () => {\n this.toggleReadOnly();\n }), t.on(\"keydown\", (e) => {\n if (e.ctrlKey && e.key === \"r\")\n return e.preventDefault(), this.toggleReadOnly(), !1;\n });\n }\n setReadOnly(t) {\n this.editor && (this.isReadOnly = t, this.editor.setReadOnly(t));\n }\n toggleReadOnly() {\n this.setReadOnly(!this.isReadOnly);\n }\n isCurrentlyReadOnly() {\n return this.isReadOnly;\n }\n destroy() {\n this.editor = null;\n }\n}\nclass V {\n constructor() {\n this.name = \"search\", this.editor = null, this.searchUI = null, this.isVisible = !1, this.currentResults = [], this.currentIndex = -1;\n }\n setup(t) {\n this.editor = t, t.registerCommand(\"find\", () => {\n this.showSearch();\n }), t.registerCommand(\"findNext\", () => {\n this.findNext();\n }), t.registerCommand(\"findPrev\", () => {\n this.findPrev();\n }), t.registerCommand(\"replace\", () => {\n this.showReplace();\n }), t.registerCommand(\"replaceAll\", (e, s) => {\n this.replaceAll(e, s);\n });\n }\n showSearch() {\n if (this.editor && (this.searchUI || this.createSearchUI(), this.isVisible = !0, this.searchUI)) {\n this.searchUI.style.display = \"block\";\n const t = this.searchUI.querySelector(\"input\");\n t && (t.focus(), t.select());\n }\n }\n showReplace() {\n this.showSearch();\n const t = this.searchUI?.querySelector(\".search-replace-input\");\n t && (t.style.display = \"block\", t.focus());\n const e = this.searchUI?.querySelector(\".search-status\");\n e && (e.textContent = \"Replace mode - Enter to replace, Shift+Enter to replace all\");\n }\n hideSearch() {\n this.isVisible = !1, this.searchUI && (this.searchUI.style.display = \"none\"), this.clearHighlights();\n }\n createSearchUI() {\n if (!this.editor) return;\n const t = document.querySelector(\".rte-source-editor-modal\");\n if (!t) return;\n this.searchUI = document.createElement(\"div\"), this.searchUI.style.cssText = `\n position: absolute;\n top: 10px;\n right: 10px;\n background: var(--editor-background, #1e1e1e);\n border: 1px solid var(--editor-gutter-border, #3e3e42);\n border-radius: 4px;\n padding: 8px;\n z-index: 1000;\n display: none;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\n min-width: 250px;\n `, this.searchUI.innerHTML = `\n <div style=\"display: flex; align-items: center; gap: 4px; margin-bottom: 4px;\">\n <input type=\"text\" placeholder=\"Find...\" style=\"\n flex: 1;\n padding: 4px 8px;\n background: var(--editor-gutter-background, #252526);\n color: var(--editor-foreground, #f8f9fa);\n border: 1px solid var(--editor-gutter-border, #3e3e42);\n border-radius: 3px;\n font-size: 12px;\n outline: none;\n \" />\n <button class=\"search-prev\" style=\"\n padding: 2px 6px;\n background: var(--editor-gutter-background, #252526);\n color: var(--editor-gutter-foreground, #858585);\n border: 1px solid var(--editor-gutter-border, #3e3e42);\n border-radius: 3px;\n cursor: pointer;\n font-size: 11px;\n \">↑</button>\n <button class=\"search-next\" style=\"\n padding: 2px 6px;\n background: var(--editor-gutter-background, #252526);\n color: var(--editor-gutter-foreground, #858585);\n border: 1px solid var(--editor-gutter-border, #3e3e42);\n border-radius: 3px;\n cursor: pointer;\n font-size: 11px;\n \">↓</button>\n <button class=\"search-close\" style=\"\n padding: 2px 6px;\n background: var(--editor-gutter-background, #252526);\n color: var(--editor-gutter-foreground, #858585);\n border: 1px solid var(--editor-gutter-border, #3e3e42);\n border-radius: 3px;\n cursor: pointer;\n font-size: 11px;\n \">×</button>\n </div>\n <div class=\"search-status\" style=\"\n font-size: 11px;\n color: var(--editor-gutter-foreground, #858585);\n text-align: center;\n \"></div>\n <input type=\"text\" class=\"search-replace-input\" placeholder=\"Replace with...\" style=\"\n width: 100%;\n padding: 4px 8px;\n background: var(--editor-gutter-background, #252526);\n color: var(--editor-foreground, #f8f9fa);\n border: 1px solid var(--editor-gutter-border, #3e3e42);\n border-radius: 3px;\n font-size: 12px;\n outline: none;\n display: none;\n margin-top: 4px;\n \" />\n `;\n const e = this.searchUI.querySelector(\"input\"), s = this.searchUI.querySelector(\".search-replace-input\"), i = this.searchUI.querySelector(\".search-prev\"), n = this.searchUI.querySelector(\".search-next\"), o = this.searchUI.querySelector(\".search-close\");\n e.addEventListener(\"input\", () => {\n this.performSearch(e.value);\n }), e.addEventListener(\"keydown\", (h) => {\n h.key === \"Enter\" && (h.preventDefault(), h.shiftKey ? this.findPrev() : this.findNext());\n }), s.addEventListener(\"keydown\", (h) => {\n h.key === \"Enter\" && (h.preventDefault(), h.shiftKey ? this.replaceAll(e.value, s.value) : this.replaceCurrent(e.value, s.value));\n }), i.addEventListener(\"click\", () => this.findPrev()), n.addEventListener(\"click\", () => this.findNext()), o.addEventListener(\"click\", () => this.hideSearch()), t.appendChild(this.searchUI);\n }\n performSearch(t) {\n if (!this.editor || !t.trim()) {\n this.clearHighlights(), this.updateStatus(\"\");\n return;\n }\n const e = this.editor.getValue(), s = [];\n let i = e.toLowerCase().indexOf(t.toLowerCase());\n for (; i !== -1; ) {\n const n = this.getPositionFromOffset(e, i), o = this.getPositionFromOffset(e, i + t.length);\n s.push({\n range: { start: n, end: o },\n match: e.substring(i, i + t.length)\n }), i = e.toLowerCase().indexOf(t.toLowerCase(), i + 1);\n }\n this.currentResults = s, this.currentIndex = this.currentResults.length > 0 ? 0 : -1, this.updateHighlights(), this.updateStatus(`${this.currentResults.length} matches`);\n }\n getPositionFromOffset(t, e) {\n const s = t.substring(0, e).split(`\n`), i = s.length - 1, n = s[s.length - 1].length;\n return { line: i, column: n };\n }\n findNext() {\n this.currentResults.length !== 0 && (this.currentIndex = (this.currentIndex + 1) % this.currentResults.length, this.updateHighlights());\n }\n findPrev() {\n this.currentResults.length !== 0 && (this.currentIndex = this.currentIndex <= 0 ? this.currentResults.length - 1 : this.currentIndex - 1, this.updateHighlights());\n }\n replaceCurrent(t, e) {\n if (!this.editor || !t.trim() || this.currentIndex === -1) return;\n const s = this.currentResults[this.currentIndex];\n if (!s) return;\n const i = this.editor.getValue(), n = this.getOffsetFromPosition(i, s.range.start), o = i.substring(0, n), h = i.substring(n + t.length), r = o + e + h;\n this.editor.setValue(r), this.performSearch(t), this.updateStatus(\"Replaced current occurrence\");\n }\n replaceAll(t, e) {\n if (!this.editor || !t.trim()) return;\n let s = this.editor.getValue(), i = 0, n = s.toLowerCase().indexOf(t.toLowerCase());\n for (; n !== -1; )\n s = s.substring(0, n) + e + s.substring(n + t.length), i++, n = s.toLowerCase().indexOf(t.toLowerCase(), n + e.length);\n i > 0 && (this.editor.setValue(s), this.updateStatus(`Replaced ${i} occurrences`));\n }\n getOffsetFromPosition(t, e) {\n const s = t.split(`\n`);\n let i = 0;\n for (let n = 0; n < e.line; n++)\n i += s[n].length + 1;\n return i += e.column, i;\n }\n updateHighlights() {\n this.clearHighlights(), !(this.currentResults.length === 0 || this.currentIndex === -1) && (this.currentResults[this.currentIndex], this.updateStatus(`${this.currentResults.length} matches (showing ${this.currentIndex + 1}/${this.currentResults.length})`));\n }\n clearHighlights() {\n }\n updateStatus(t) {\n const e = this.searchUI?.querySelector(\".search-status\");\n e && (e.textContent = t);\n }\n destroy() {\n this.searchUI && this.searchUI.parentNode && this.searchUI.parentNode.removeChild(this.searchUI), this.searchUI = null, this.editor = null;\n }\n}\nclass A {\n constructor() {\n this.name = \"bracket-matching\", this.editor = null, this.bracketPairs = {\n \"(\": \")\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"<\": \">\"\n }, this.reverseBracketPairs = {\n \")\": \"(\",\n \"]\": \"[\",\n \"}\": \"{\",\n \">\": \"<\"\n }, this.currentMatch = null;\n }\n setup(t) {\n this.editor = t, t.on(\"cursor\", () => {\n this.updateBracketMatching();\n }), t.on(\"change\", () => {\n this.updateBracketMatching();\n });\n }\n updateBracketMatching() {\n if (!this.editor) return;\n const t = this.editor.getCursor(), e = this.editor.getValue();\n this.clearBracketHighlighting();\n const s = this.getBracketAtPosition(e, t.position);\n if (!s) return;\n const i = this.findMatchingBracket(e, s);\n i && (this.currentMatch = i, this.highlightBrackets(i));\n }\n getBracketAtPosition(t, e) {\n const s = t.split(`\n`);\n if (e.line >= s.length) return null;\n const i = s[e.line];\n if (e.column >= i.length) return null;\n const n = i[e.column];\n return this.bracketPairs[n] || this.reverseBracketPairs[n] ? { char: n, position: e } : null;\n }\n findMatchingBracket(t, e) {\n const s = t.split(`\n`), i = e.position.line, n = e.position.column, o = e.char;\n return this.bracketPairs[o] ? this.findClosingBracket(t, s, i, n, o) : this.reverseBracketPairs[o] ? this.findOpeningBracket(t, s, i, n, o) : null;\n }\n findClosingBracket(t, e, s, i, n) {\n const o = this.bracketPairs[n];\n let h = 0;\n for (let r = s; r < e.length; r++) {\n const l = e[r], c = r === s ? i : 0;\n for (let d = c; d < l.length; d++) {\n const f = l[d];\n if (f === n)\n h++;\n else if (f === o && (h--, h === 0))\n return {\n open: { start: { line: s, column: i }, end: { line: s, column: i + 1 } },\n close: { start: { line: r, column: d }, end: { line: r, column: d + 1 } },\n type: n\n };\n }\n }\n return null;\n }\n findOpeningBracket(t, e, s, i, n) {\n const o = this.reverseBracketPairs[n];\n let h = 0;\n for (let r = s; r >= 0; r--) {\n const l = e[r], c = r === s ? i : l.length - 1;\n for (let d = c; d >= 0; d--) {\n const f = l[d];\n if (f === n)\n h++;\n else if (f === o && (h--, h === 0))\n return {\n open: { start: { line: r, column: d }, end: { line: r, column: d + 1 } },\n close: { start: { line: s, column: i }, end: { line: s, column: i + 1 } },\n type: o\n };\n }\n }\n return null;\n }\n highlightBrackets(t) {\n }\n clearBracketHighlighting() {\n this.currentMatch = null;\n }\n getCurrentMatch() {\n return this.currentMatch;\n }\n destroy() {\n this.clearBracketHighlighting(), this.editor = null;\n }\n}\nclass U {\n constructor() {\n this.name = \"code-folding\", this.editor = null, this.foldIndicators = [], this.foldingUI = null;\n }\n setup(t) {\n this.editor = t, t.registerCommand(\"fold\", () => {\n this.foldAtCursor();\n }), t.registerCommand(\"unfold\", () => {\n this.unfoldAtCursor();\n }), t.registerCommand(\"foldAll\", () => {\n this.foldAll();\n }), t.registerCommand(\"unfoldAll\", () => {\n this.unfoldAll();\n }), t.on(\"change\", () => {\n this.updateFoldIndicators();\n }), this.createFoldingUI(), this.updateFoldIndicators();\n }\n createFoldingUI() {\n if (!this.editor) return;\n const t = document.querySelector(\".rte-source-editor-modal\");\n t && (this.foldingUI = document.createElement(\"div\"), this.foldingUI.style.cssText = `\n position: absolute;\n left: 40px;\n top: 0;\n bottom: 0;\n width: 20px;\n pointer-events: none;\n z-index: 2;\n `, t.appendChild(this.foldingUI));\n }\n updateFoldIndicators() {\n if (!this.editor || !this.foldingUI) return;\n this.foldingUI.innerHTML = \"\", this.foldIndicators = [];\n const e = this.editor.getValue().split(`\n`);\n this.findFoldableLines(e).forEach((i) => {\n this.createFoldIndicator(i);\n });\n }\n findFoldableLines(t) {\n const e = [];\n for (let s = 0; s < t.length; s++) {\n const i = t[s].trim();\n (i.startsWith(\"{\") || i.startsWith(\"function\") || i.startsWith(\"class\") || i.startsWith(\"if\") || i.includes(\"=>\") || i.startsWith(\"for\") || i.startsWith(\"while\") || i.startsWith(\"try\")) && e.push(s);\n }\n return e;\n }\n createFoldIndicator(t) {\n if (!this.foldingUI) return;\n const e = document.createElement(\"div\");\n e.style.cssText = `\n position: absolute;\n left: 0;\n top: ${t * 21}px;\n width: 20px;\n height: 21px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n pointer-events: auto;\n color: var(--editor-gutter-foreground, #858585);\n font-size: 10px;\n user-select: none;\n `, e.innerHTML = \"▶\", e.title = \"Code folding not yet implemented - click shows fold indicators\", e.addEventListener(\"click\", () => {\n }), this.foldingUI.appendChild(e), this.foldIndicators.push(e);\n }\n foldAtCursor() {\n }\n unfoldAtCursor() {\n }\n foldAll() {\n }\n unfoldAll() {\n }\n destroy() {\n this.foldingUI && this.foldingUI.parentNode && this.foldingUI.parentNode.removeChild(this.foldingUI), this.foldingUI = null, this.foldIndicators = [], this.editor = null;\n }\n}\nclass F {\n constructor() {\n this.name = \"syntax-highlighting\", this.editor = null, this.currentTheme = \"dark\", this.currentLanguage = null, this.modes = /* @__PURE__ */ new Map();\n }\n setup(t) {\n this.editor = t, this.registerMode(\"html\", { name: \"html\", highlight: (e, s) => this._highlightHTML(e, s) }), this.registerMode(\"javascript\", { name: \"javascript\", highlight: (e, s) => this._highlightJS(e, s) }), this.registerMode(\"typescript\", { name: \"typescript\", highlight: (e, s) => this._highlightJS(e, s) }), this.registerMode(\"php\", { name: \"php\", highlight: (e, s) => this._highlightPHP(e, s) });\n }\n // Extension provides methods that can be called by the editor\n setTheme(t) {\n this.currentTheme = t;\n }\n setLanguage(t) {\n this.currentLanguage = t;\n }\n registerMode(t, e) {\n this.modes.set(t.toLowerCase(), e);\n }\n // Method to get syntax highlighting colors for a given theme\n getSyntaxColors() {\n return this.currentTheme === \"dark\" ? {\n tag: \"#569cd6\",\n // Blue\n comment: \"#6a9955\",\n // Green\n attrName: \"#9cdcfe\",\n // Light blue for attribute names\n attrValue: \"#ce9178\",\n // Orange for attribute values\n styleProp: \"#c586c0\",\n // Purple for CSS property names\n styleVal: \"#dcdcaa\",\n // Yellow-ish for CSS values\n doctype: \"#808080\",\n // Gray for doctype\n text: \"#d4d4d4\",\n // Light gray for normal text\n keyword: \"#c586c0\",\n // JS/PHP keywords (purple)\n string: \"#ce9178\",\n // JS strings\n number: \"#b5cea8\",\n // numbers\n variable: \"#9cdcfe\"\n // php variable color\n } : {\n tag: \"#0000ff\",\n // Blue\n comment: \"#008000\",\n // Green\n attrName: \"#001080\",\n attrValue: \"#a31515\",\n // Red\n styleProp: \"#6a00a8\",\n styleVal: \"#804000\",\n doctype: \"#444444\",\n text: \"#000000\",\n // Black\n keyword: \"#000080\",\n string: \"#a31515\",\n number: \"#0086b3\",\n variable: \"#001080\"\n };\n }\n // Public API: highlight a source string using the chosen mode (or detect html)\n highlight(t, e) {\n const s = this.getSyntaxColors(), i = (e || this.currentLanguage || \"html\").toLowerCase();\n return (this.modes.get(i) || this.modes.get(\"html\")).highlight(t, s);\n }\n // Backwards-compatible method\n highlightHTML(t) {\n return this.highlight(t, \"html\");\n }\n // --- Internal mode implementations ---\n escapeHTML(t) {\n return t.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\\\"/g, \"&quot;\").replace(/'/g, \"&#39;\");\n }\n // Robustly unescape common HTML entities, repeating a few times to handle nested encoding like &amp;amp;...\n unescapeEntitiesRepeated(t) {\n let e = t || \"\";\n for (let s = 0; s < 5; s++) {\n const i = e;\n if (e = e.replace(/&amp;/g, \"&\").replace(/&lt;/g, \"<\").replace(/&gt;/g, \">\").replace(/&quot;/g, '\"').replace(/&#39;/g, \"'\"), e === i) break;\n }\n return e;\n }\n _highlightHTML(t, e) {\n const s = e, i = (l) => this.escapeHTML(l);\n let n = i(t);\n const o = (l) => {\n let c = l.replace(/&quot;/g, '\"').replace(/&#39;/g, \"'\");\n return c = c.replace(/(\\/\\*[\\s\\S]*?\\*\\/)/g, `<span style=\"color: ${s.comment};\">$1</span>`), c = c.replace(/([a-zA-Z-]+)(\\s*:\\s*)([^;{]+)(;?)/g, (d, f, g, a, u) => {\n const p = String(a).trim(), m = i(p);\n return `<span style=\"color: ${s.styleProp};\">${f}</span>${g}<span style=\"color: ${s.styleVal};\">${m}</span>${u}`;\n }), c;\n }, h = [];\n try {\n t.replace(/<script\\b([^>]*)>([\\s\\S]*?)<\\/script>/gi, (l, c, d) => (h.push({ attrs: String(c || \"\"), inner: String(d || \"\") }), l));\n } catch {\n }\n let r = 0;\n return n = n.replace(/(&lt;script\\b([^&>]*)&gt;)([\\s\\S]*?)(&lt;\\/script&gt;)/gi, (l, c, d, f, g) => {\n const a = h[r++]?.inner ?? this.unescapeEntitiesRepeated(f || \"\");\n (h[r - 1]?.attrs || d || \"\").toLowerCase();\n const u = this._highlightJS(a, s);\n return `${c}${u}${g}`;\n }), n = n.replace(/(&lt;style\\b[^&]*&gt;)([\\s\\S]*?)(&lt;\\/style&gt;)/gi, (l, c, d, f) => {\n const g = o(d);\n return `${c}${g}${f}`;\n }), n = n.replace(/(&lt;!--[\\s\\S]*?--&gt;)/g, `<span style=\"color: ${s.comment};\">$1</span>`), n = n.replace(/(&lt;!DOCTYPE[\\s\\S]*?&gt;)/i, `<span style=\"color: ${s.doctype};\">$1</span>`), n = n.replace(/(&lt;\\/?\\s*)([^\\s&>\\/]+)([\\s\\S]*?)(\\/?&gt;)/g, (l, c, d, f, g) => {\n const a = `<span style=\"color: ${s.tag};\">${d}</span>`;\n let u = f;\n return u = u.replace(/([\\w:-]+)(\\s*=\\s*)((&quot;[\\s\\S]*?&quot;|&#39;[\\s\\S]*?&#39;|[^\\s&>]+))/g, (p, m, M, y) => {\n const C = String(m).toLowerCase(), w = `<span style=\"color: ${s.attrName};\">${m}</span>`;\n let v = y, T = \"\";\n y.startsWith(\"&quot;\") && y.endsWith(\"&quot;\") ? (v = y.slice(6, -6), T = \"&quot;\") : y.startsWith(\"&#39;\") && y.endsWith(\"&#39;\") && (v = y.slice(5, -5), T = \"&#39;\");\n let b = y;\n if (C === \"style\") {\n const L = v.replace(/([\\w-]+)\\s*:\\s*([^;]+)(;?)/g, (I, S, O, E) => `<span style=\"color: ${s.styleProp};\">${S}</span>:<span style=\"color: ${s.styleVal};\">${O.trim()}</span>${E}`);\n T ? b = `${T}${L}${T}` : b = L, b = `<span style=\"color: ${s.attrValue};\">${b}</span>`;\n } else\n T && (b = `${T}${v}${T}`), b = `<span style=\"color: ${s.attrValue};\">${b}</span>`;\n return `${w}${M}${b}`;\n }), `${c}${a}${u}${g}`;\n }), n;\n }\n _highlightJS(t, e) {\n const s = this.unescapeEntitiesRepeated(t);\n this.escapeHTML(s);\n const i = [], n = (g) => {\n let a = \"\", u = g;\n do\n a = String.fromCharCode(97 + u % 26) + a, u = Math.floor(u / 26) - 1;\n while (u >= 0);\n return a || \"a\";\n }, o = (g) => `\\0${n(g)}\\0`, h = (g) => {\n const a = i.length;\n return i.push(g), o(a);\n };\n let r;\n const l = /(\\/\\*[\\s\\S]*?\\*\\/)|(\\/\\/[^\\n\\r]*)|(\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|`(?:\\\\.|[^`\\\\])*`)/g;\n let c = 0, d = \"\";\n for (; r = l.exec(s); ) {\n const g = r.index;\n c < g && (d += this.escapeHTML(s.slice(c, g)));\n const a = r[0];\n /^\\/\\*/.test(a) || /^\\/\\//.test(a) ? d += h(`<span style=\"color: ${e.comment};\">${this.escapeHTML(a)}</span>`) : d += h(`<span style=\"color: ${e.string};\">${this.escapeHTML(a)}</span>`), c = l.lastIndex;\n }\n return c < s.length && (d += this.escapeHTML(s.slice(c))), d = d.replace(/\\b(0x[0-9a-fA-F]+|\\d+\\.?\\d*|\\d*\\.\\d+)\\b/g, (g, a, u) => {\n const p = d[u - 1] || \"\", m = d[u + g.length] || \"\";\n return p === \"&\" || p === \"#\" || m === \";\" || m === \"#\" ? g : `<span style=\"color: ${e.number};\">${g}</span>`;\n }), d = d.replace(/\\b(const|let|var|function|class|if|else|return|for|while|switch|case|break|import|from|export|extends|new|try|catch|finally|throw|await|async|interface|type)\\b/g, `<span style=\"color: ${e.keyword};\">$1</span>`), d.replace(/\\u0000([a-z]+)\\u0000/g, (g, a) => {\n let u = 0;\n for (let p = 0; p < a.length; p++)\n u = u * 26 + (a.charCodeAt(p) - 97 + 1);\n return u = u - 1, i[u] || \"\";\n });\n }\n _highlightPHP(t, e) {\n const s = this.unescapeEntitiesRepeated(t);\n let i = this.escapeHTML(s);\n const n = [], o = (a) => {\n let u = \"\", p = a;\n do\n u = String.fromCharCode(97 + p % 26) + u, p = Math.floor(p / 26) - 1;\n while (p >= 0);\n return u || \"a\";\n }, h = (a) => {\n const u = n.length;\n return n.push(a), `\\0${o(u)}\\0`;\n }, r = (a, u) => {\n const p = i.indexOf(a);\n return p === -1 ? !1 : (i = i.slice(0, p) + u + i.slice(p + a.length), !0);\n };\n let l;\n const c = /\\/\\*[\\s\\S]*?\\*\\//g, d = /\\/\\/[^\\n\\r]*/g, f = /\\#([^\\n\\r]*)/g, g = /(\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*')/g;\n for (; l = c.exec(s); ) {\n const a = l[0];\n r(this.escapeHTML(a), h(`<span style=\"color: ${e.comment};\">${this.escapeHTML(a)}</span>`));\n }\n for (; l = d.exec(s); ) {\n const a = l[0];\n r(this.escapeHTML(a), h(`<span style=\"color: ${e.comment};\">${this.escapeHTML(a)}</span>`));\n }\n for (; l = f.exec(s); ) {\n const a = l[0];\n r(this.escapeHTML(a), h(`<span style=\"color: ${e.comment};\">${this.escapeHTML(a)}</span>`));\n }\n for (; l = g.exec(s); ) {\n const a = l[0];\n r(this.escapeHTML(a), h(`<span style=\"color: ${e.string};\">${this.escapeHTML(a)}</span>`));\n }\n return i = i.replace(/(\\$[a-zA-Z_\\x80-\\xff][a-zA-Z0-9_\\x80-\\xff]*)/g, `<span style=\"color: ${e.variable};\">$1</span>`), i = i.replace(/\\b(echo|print|function|class|if|else|elseif|foreach|as|return|namespace|use|new|extends|public|protected|private|static)\\b/g, `<span style=\"color: ${e.keyword};\">$1</span>`), i = i.replace(/\\u0000([a-z]+)\\u0000/g, (a, u) => {\n let p = 0;\n for (let m = 0; m < u.length; m++)\n p = p * 26 + (u.charCodeAt(m) - 97 + 1);\n return p = p - 1, n[p] || \"\";\n }), i;\n }\n // Method to check if content contains syntax that should be highlighted\n shouldHighlight(t) {\n return /<\\/?[\\w:-]+|<!--/.test(t);\n }\n destroy() {\n this.editor = null, this.modes.clear();\n }\n}\nfunction _(x, t) {\n const e = { ...t };\n return e.extensions || (e.extensions = []), e.extensions.some((n) => n.name === \"keymap\") || e.extensions.unshift(new H(e.keymap)), e.extensions.some((n) => n.name === \"transaction\") || e.extensions.unshift(new R()), new $(x, e);\n}\nexport {\n A as BracketMatchingExtension,\n U as CodeFoldingExtension,\n $ as EditorCore,\n H as KeymapExtension,\n N as LineNumbersExtension,\n B as ReadOnlyExtension,\n V as SearchExtension,\n F as SyntaxHighlightingExtension,\n k as TextModel,\n K as ThemeExtension,\n P as View,\n _ as createEditor,\n $ as default\n};\n","import { Plugin } from '@editora/core';\nimport {\n createEditor,\n EditorCore,\n LineNumbersExtension,\n ThemeExtension,\n ReadOnlyExtension,\n SearchExtension,\n BracketMatchingExtension,\n CodeFoldingExtension,\n SyntaxHighlightingExtension\n} from '@editora/light-code-editor';\n\nconst SOURCE_EDITOR_CSS = `/* Source Editor Dialog Styles */\n.rte-source-editor-overlay {\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n width: 100vw !important;\n height: 100vh !important;\n background-color: rgba(0, 0, 0, 0.6) !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n z-index: 10000 !important;\n padding: 20px !important;\n box-sizing: border-box !important;\n margin: 0 !important;\n}\n\n.rte-source-editor-overlay.fullscreen {\n padding: 0 !important;\n}\n\n.rte-source-editor-modal {\n background: white;\n border-radius: 8px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n width: 100%;\n max-width: 1200px;\n max-height: 90vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n position: relative;\n}\n\n.rte-source-editor-overlay.fullscreen .rte-source-editor-modal {\n border-radius: 0;\n max-width: 100%;\n max-height: 100vh;\n width: 100%;\n height: 100vh;\n}\n\n.rte-source-editor-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid #e1e5e9;\n background: #f8f9fa;\n border-radius: 8px 8px 0 0;\n}\n\n.rte-source-editor-overlay.fullscreen .rte-source-editor-header {\n border-radius: 0;\n}\n\n.rte-source-editor-header h2 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1a1a1a;\n}\n\n.rte-source-editor-header-toolbar {\n display: flex;\n gap: 8px;\n margin-left: auto;\n margin-right: 16px;\n}\n\n.rte-source-editor-toolbar-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 6px;\n border-radius: 4px;\n font-size: 16px;\n line-height: 1;\n transition: all 0.2s ease;\n color: #666;\n}\n\n.rte-source-editor-toolbar-btn:hover:not(:disabled) {\n background: #e1e5e9;\n color: #1a1a1a;\n}\n\n.rte-source-editor-toolbar-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.rte-source-editor-toolbar-btn.active {\n background: #007acc;\n color: white;\n}\n\n.rte-source-editor-toolbar-btn.active:hover {\n background: #0056b3;\n}\n\n.rte-source-editor-header-actions {\n display: flex;\n gap: 8px;\n}\n\n.rte-source-editor-fullscreen-btn,\n.rte-source-editor-close-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n border-radius: 4px;\n color: #666;\n font-size: 16px;\n line-height: 1;\n transition: all 0.2s ease;\n}\n\n.rte-source-editor-fullscreen-btn:hover,\n.rte-source-editor-close-btn:hover {\n background: #e1e5e9;\n color: #1a1a1a;\n}\n\n.rte-source-editor-body {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.rte-source-editor-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: #666;\n position: absolute;\n z-index: 9;\n margin: 0 auto;\n width: 100%;\n top: 44%;\n}\n\n.rte-source-editor-spinner {\n width: 32px;\n height: 32px;\n border: 3px solid #e1e5e9;\n border-top: 3px solid #007acc;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n margin-bottom: 16px;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n.rte-source-editor-error {\n background: #fee;\n color: #c53030;\n padding: 12px 16px;\n border-left: 4px solid #c53030;\n margin: 16px;\n border-radius: 4px;\n font-size: 14px;\n}\n\n.rte-source-editor-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.rte-source-editor-warning {\n background: #fefcbf;\n color: #744210;\n padding: 8px 16px;\n font-size: 12px;\n font-weight: 500;\n border-bottom: 1px solid #f6e05e;\n}\n\n.rte-source-editor-codemirror {\n flex: 1;\n overflow: auto;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 14px;\n line-height: 1.5;\n}\n\n.rte-source-editor-codemirror .cm-editor {\n height: 100%;\n}\n\n.rte-source-editor-codemirror .cm-focused {\n outline: none;\n}\n\n.rte-source-editor-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-top: 1px solid #e1e5e9;\n background: #f8f9fa;\n border-radius: 0 0 8px 8px;\n}\n\n.rte-source-editor-overlay.fullscreen .rte-source-editor-footer {\n border-radius: 0;\n}\n\n.rte-source-editor-footer-info {\n font-size: 12px;\n color: #666;\n}\n\n.unsaved-changes {\n color: #d69e2e;\n font-weight: 500;\n}\n\n.rte-source-editor-footer-actions {\n display: flex;\n gap: 12px;\n}\n\n.rte-source-editor-btn {\n padding: 8px 16px;\n border-radius: 4px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n border: 1px solid transparent;\n transition: all 0.2s ease;\n}\n\n.rte-source-editor-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.rte-source-editor-btn-cancel {\n background: white;\n border-color: #d1d5db;\n color: #374151;\n}\n\n.rte-source-editor-btn-cancel:hover:not(:disabled) {\n background: #f9fafb;\n border-color: #9ca3af;\n}\n\n.rte-source-editor-btn-save {\n background: #007acc;\n color: white;\n}\n\n.rte-source-editor-btn-save:hover:not(:disabled) {\n background: #0056b3;\n}\n\n/* Dark theme support */\n@media (prefers-color-scheme: dark) {\n .rte-source-editor-modal {\n background: #1e1e1e;\n color: #f8f9fa;\n }\n\n .rte-source-editor-header {\n background: #2d2d2d;\n border-color: #404040;\n }\n\n .rte-source-editor-header h2 {\n color: #f8f9fa;\n }\n\n .rte-source-editor-fullscreen-btn,\n .rte-source-editor-close-btn {\n color: #ccc;\n }\n\n .rte-source-editor-fullscreen-btn:hover,\n .rte-source-editor-close-btn:hover {\n background: #404040;\n color: #f8f9fa;\n }\n\n .rte-source-editor-error {\n background: #2d1b1b;\n color: #fca5a5;\n border-color: #dc2626;\n }\n\n .rte-source-editor-warning {\n background: #2d2a1b;\n color: #fcd34d;\n border-color: #d97706;\n }\n\n .rte-source-editor-footer {\n background: #2d2d2d;\n border-color: #404040;\n }\n\n .rte-source-editor-footer-info {\n color: #ccc;\n }\n\n .rte-source-editor-btn-cancel {\n background: #374151;\n border-color: #4b5563;\n color: #f9fafb;\n }\n\n .rte-source-editor-btn-cancel:hover:not(:disabled) {\n background: #4b5563;\n border-color: #6b7280;\n }\n}\n\n/* Responsive design */\n@media (max-width: 768px) {\n .rte-source-editor-overlay {\n padding: 10px;\n }\n\n .rte-source-editor-modal {\n max-height: 95vh;\n }\n\n .rte-source-editor-header {\n padding: 12px 16px;\n }\n\n .rte-source-editor-footer {\n padding: 12px 16px;\n flex-direction: column;\n gap: 12px;\n align-items: stretch;\n }\n\n .rte-source-editor-footer-actions {\n justify-content: stretch;\n }\n\n .rte-source-editor-btn {\n flex: 1;\n text-align: center;\n }\n}`;\n\n/**\n * Code Plugin - Framework Agnostic\n * \n * Adds HTML source view functionality.\n * Opens a dialog to edit the raw HTML source of the editor content.\n * No React dependency required.\n */\nexport const CodePlugin = (): Plugin => ({\n name: 'code',\n \n // Toolbar button configuration\n toolbar: [\n {\n label: 'Source',\n command: 'toggleSourceView',\n type: 'button',\n icon: '<>',\n shortcut: 'Mod-Shift-S'\n }\n ],\n \n // Native command implementations\n commands: {\n /**\n * Toggle HTML source view\n * Opens a dialog to edit raw HTML\n */\n toggleSourceView: () => {\n // Find the editor container and content area\n const findEditorContent = (): HTMLElement | null => {\n // PRIORITY 1: Try to find from current selection or focus\n // This ensures we get the correct editor in multi-instance scenarios\n const selection = window.getSelection();\n if (selection && selection.anchorNode) {\n let current = selection.anchorNode instanceof HTMLElement \n ? selection.anchorNode \n : selection.anchorNode.parentElement;\n \n // Traverse up to find .rte-content (the contenteditable element)\n while (current) {\n if (current.classList?.contains('rte-content')) {\n return current;\n }\n current = current.parentElement;\n }\n }\n \n // PRIORITY 2: Try to find from document.activeElement\n // If the editor was just focused by the toolbar\n if (document.activeElement) {\n let current = document.activeElement;\n \n // Check if activeElement itself is the content\n if (current.classList?.contains('rte-content')) {\n return current as HTMLElement;\n }\n \n // Or traverse up from activeElement\n while (current && current !== document.body) {\n if (current.classList?.contains('rte-content')) {\n return current as HTMLElement;\n }\n // Also check children\n const contentEl = current.querySelector('.rte-content') as HTMLElement;\n if (contentEl) return contentEl;\n \n current = current.parentElement!;\n }\n }\n \n // PRIORITY 3: Find from data-editora-editor (single instance fallback)\n const editorContainer = document.querySelector('[data-editora-editor]');\n if (editorContainer) {\n const contentEl = editorContainer.querySelector('.rte-content') as HTMLElement;\n if (contentEl) return contentEl;\n }\n \n // PRIORITY 4: Last resort - find any .rte-content\n return document.querySelector('.rte-content') as HTMLElement;\n };\n \n const contentElement = findEditorContent();\n \n if (!contentElement) {\n console.error('[CodePlugin] Editor content area not found');\n alert('Editor content area not found. Please click inside the editor first.');\n return false;\n }\n \n // Get current HTML\n const currentHtml = contentElement.innerHTML;\n \n // Format HTML for better readability\n const formatHTML = (html: string): string => {\n let formatted = '';\n let indentLevel = 0;\n const indentSize = 2;\n const tokens = html.split(/(<\\/?[a-zA-Z][^>]*>)/);\n\n for (const token of tokens) {\n if (!token.trim()) continue;\n\n if (token.match(/^<\\/[a-zA-Z]/)) {\n indentLevel = Math.max(0, indentLevel - 1);\n formatted += '\\n' + ' '.repeat(indentLevel * indentSize) + token;\n } else if (token.match(/^<[a-zA-Z]/) && !token.match(/\\/>$/)) {\n formatted += '\\n' + ' '.repeat(indentLevel * indentSize) + token;\n indentLevel++;\n } else if (token.match(/^<[a-zA-Z].*\\/>$/)) {\n formatted += '\\n' + ' '.repeat(indentLevel * indentSize) + token;\n } else {\n formatted += token.trim();\n }\n }\n return formatted.trim();\n };\n \n // Create source editor dialog\n const createSourceDialog = () => {\n let editorInstance: EditorCore | null = null;\n let currentTheme = 'dark';\n let isReadOnly = false;\n let isFullscreen = false;\n let hasUnsavedChanges = false;\n const originalHtml = currentHtml;\n const overlay = document.createElement('div');\n overlay.className = 'rte-source-editor-overlay';\n \n const dialog = document.createElement('div');\n dialog.className = 'rte-source-editor-modal';\n dialog.setAttribute('role', 'dialog');\n dialog.setAttribute('aria-modal', 'true');\n dialog.setAttribute('aria-labelledby', 'source-editor-title');\n \n const header = document.createElement('div');\n header.className = 'rte-source-editor-header';\n header.innerHTML = `\n <h2 id=\"source-editor-title\">Source Editor</h2>\n <div class=\"rte-source-editor-header-toolbar\">\n <button class=\"rte-source-editor-toolbar-btn theme-toggle-btn\" title=\"Switch theme\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"5\"/>\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"/>\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"/>\n <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"/>\n <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"/>\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"/>\n <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"/>\n <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"/>\n <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"/>\n </svg>\n </button>\n <button class=\"rte-source-editor-toolbar-btn readonly-toggle-btn\" title=\"Toggle read-only\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"/>\n <path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"/>\n </svg>\n </button>\n </div>\n <div class=\"rte-source-editor-header-actions\">\n <button class=\"rte-source-editor-fullscreen-btn\" title=\"Toggle fullscreen\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7\"/>\n </svg>\n </button>\n <button class=\"rte-source-editor-close-btn\" aria-label=\"Close source editor\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/>\n </svg>\n </button>\n </div>\n `;\n \n const body = document.createElement('div');\n body.className = 'rte-source-editor-body';\n \n const content = document.createElement('div');\n content.className = 'rte-source-editor-content';\n \n const warning = document.createElement('div');\n warning.className = 'rte-source-editor-warning';\n warning.textContent = '⚠️ Advanced users only. Invalid HTML may break the editor.';\n \n const editorContainer = document.createElement('div');\n editorContainer.className = 'rte-source-editor-light-editor';\n editorContainer.style.height = '400px';\n \n content.appendChild(warning);\n content.appendChild(editorContainer);\n body.appendChild(content);\n \n const footer = document.createElement('div');\n footer.className = 'rte-source-editor-footer';\n footer.innerHTML = `\n <div class=\"rte-source-editor-footer-info\">\n <span class=\"unsaved-changes\" style=\"display: none;\">• Unsaved changes</span>\n </div>\n <div class=\"rte-source-editor-footer-actions\">\n <button class=\"rte-source-editor-btn rte-source-editor-btn-cancel\">Cancel</button>\n <button class=\"rte-source-editor-btn rte-source-editor-btn-save\">Save</button>\n </div>\n `;\n \n // Assemble dialog\n dialog.appendChild(header);\n dialog.appendChild(body);\n dialog.appendChild(footer);\n overlay.appendChild(dialog);\n \n // Inject Source Editor CSS if not already present\n if (!document.getElementById('rte-source-editor-styles')) {\n const style = document.createElement('style');\n style.id = 'rte-source-editor-styles';\n style.textContent = SOURCE_EDITOR_CSS;\n document.head.appendChild(style);\n }\n \n document.body.appendChild(overlay);\n \n // Initialize code editor\n try {\n editorInstance = createEditor(editorContainer, {\n value: formatHTML(currentHtml),\n theme: 'dark',\n readOnly: false,\n extensions: [\n new LineNumbersExtension(),\n new ThemeExtension(),\n new ReadOnlyExtension(),\n new BracketMatchingExtension(),\n new SearchExtension(),\n new CodeFoldingExtension(),\n new SyntaxHighlightingExtension()\n ]\n });\n\n // Track changes\n editorInstance.on('change', () => {\n const newContent = editorInstance?.getValue() || '';\n hasUnsavedChanges = newContent !== formatHTML(originalHtml);\n const unsavedLabel = footer.querySelector('.unsaved-changes') as HTMLElement;\n if (unsavedLabel) {\n unsavedLabel.style.display = hasUnsavedChanges ? 'inline' : 'none';\n }\n });\n\n setTimeout(() => editorInstance?.focus(), 100);\n } catch (err) {\n console.error('Failed to initialize code editor:', err);\n }\n \n // Event handlers\n const updateUnsavedState = () => {\n const unsavedLabel = footer.querySelector('.unsaved-changes') as HTMLElement;\n if (unsavedLabel) {\n unsavedLabel.style.display = hasUnsavedChanges ? 'inline' : 'none';\n }\n };\n \n const toggleTheme = () => {\n currentTheme = currentTheme === 'dark' ? 'light' : 'dark';\n editorInstance?.setTheme(currentTheme);\n const themeBtn = header.querySelector('.theme-toggle-btn');\n if (themeBtn && currentTheme === 'light') {\n themeBtn.innerHTML = `\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"/>\n </svg>\n `;\n }\n };\n \n const toggleReadOnly = () => {\n isReadOnly = !isReadOnly;\n editorInstance?.setReadOnly(isReadOnly);\n const readonlyBtn = header.querySelector('.readonly-toggle-btn');\n if (readonlyBtn) {\n if (isReadOnly) {\n readonlyBtn.classList.add('active');\n readonlyBtn.innerHTML = `\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"/>\n <circle cx=\"12\" cy=\"16\" r=\"1\"/>\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\"/>\n </svg>\n `;\n } else {\n readonlyBtn.classList.remove('active');\n readonlyBtn.innerHTML = `\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"/>\n <path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"/>\n </svg>\n `;\n }\n }\n };\n \n const toggleFullscreen = () => {\n isFullscreen = !isFullscreen;\n if (isFullscreen) {\n overlay.classList.add('fullscreen');\n editorContainer.style.height = 'calc(100vh - 200px)';\n } else {\n overlay.classList.remove('fullscreen');\n editorContainer.style.height = '400px';\n }\n const fullscreenBtn = header.querySelector('.rte-source-editor-fullscreen-btn');\n if (fullscreenBtn) {\n fullscreenBtn.innerHTML = isFullscreen ? `\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 0 2-2h3M3 16h3a2 2 0 0 0 2 2v3\"/>\n </svg>\n ` : `\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7\"/>\n </svg>\n `;\n }\n };\n \n const closeDialog = () => {\n if (editorInstance) {\n editorInstance.destroy();\n editorInstance = null;\n }\n document.body.removeChild(overlay);\n };\n \n const handleCancel = () => {\n if (hasUnsavedChanges) {\n if (!confirm('You have unsaved changes. Are you sure you want to cancel?')) {\n return;\n }\n }\n closeDialog();\n };\n \n const handleSave = () => {\n try {\n const htmlContent = editorInstance?.getValue() || '';\n \n // Basic HTML sanitization\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = htmlContent;\n const dangerous = tempDiv.querySelectorAll('script, iframe[src^=\"javascript:\"], object, embed');\n dangerous.forEach(el => el.remove());\n \n contentElement.innerHTML = tempDiv.innerHTML;\n hasUnsavedChanges = false;\n closeDialog();\n } catch (error) {\n alert('Failed to update HTML. Please check your syntax.');\n console.error('HTML update error:', error);\n }\n };\n \n // Attach event listeners\n header.querySelector('.theme-toggle-btn')?.addEventListener('click', toggleTheme);\n header.querySelector('.readonly-toggle-btn')?.addEventListener('click', toggleReadOnly);\n header.querySelector('.rte-source-editor-fullscreen-btn')?.addEventListener('click', toggleFullscreen);\n header.querySelector('.rte-source-editor-close-btn')?.addEventListener('click', closeDialog);\n footer.querySelector('.rte-source-editor-btn-cancel')?.addEventListener('click', handleCancel);\n footer.querySelector('.rte-source-editor-btn-save')?.addEventListener('click', handleSave);\n \n overlay.addEventListener('click', (e) => {\n if (e.target === overlay) closeDialog();\n });\n \n // Keyboard shortcuts\n const escHandler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n closeDialog();\n document.removeEventListener('keydown', escHandler);\n }\n };\n document.addEventListener('keydown', escHandler);\n };\n \n createSourceDialog();\n return true;\n }\n },\n \n // Keyboard shortcuts\n keymap: {\n 'Mod-Shift-s': 'toggleSourceView',\n 'Mod-Shift-S': 'toggleSourceView'\n }\n});\n"],"names":["k","t","e","n","o","h","r","P","_a","_b","s","i","a","l","d","f","g","$","c","u","m","M","y","w","v","H","R","N","K","B","V","A","U","F","_c","T","b","L","I","S","E","p","_","x","SOURCE_EDITOR_CSS","CodePlugin","contentElement","selection","current","contentEl","editorContainer","currentHtml","formatHTML","html","formatted","indentLevel","indentSize","tokens","token","_d","_e","_f","editorInstance","currentTheme","isReadOnly","isFullscreen","hasUnsavedChanges","originalHtml","overlay","dialog","header","body","content","warning","footer","style","createEditor","LineNumbersExtension","ThemeExtension","ReadOnlyExtension","BracketMatchingExtension","SearchExtension","CodeFoldingExtension","SyntaxHighlightingExtension","unsavedLabel","err","toggleTheme","themeBtn","toggleReadOnly","readonlyBtn","toggleFullscreen","fullscreenBtn","closeDialog","handleCancel","handleSave","htmlContent","tempDiv","el","error","escHandler"],"mappings":"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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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"}
@@ -1218,7 +1218,7 @@ const B = {
1218
1218
  clearFormatting: () => import("./ClearFormattingPlugin.native-BZPDHswo.mjs").then((s) => s.ClearFormattingPlugin()),
1219
1219
  heading: () => import("./HeadingPlugin.native-DrLYwQnQ.mjs").then((s) => s.HeadingPlugin()),
1220
1220
  blockquote: () => import("./BlockquotePlugin.native-JFmOLsxN.mjs").then((s) => s.BlockquotePlugin()),
1221
- code: () => import("./CodePlugin.native-DD9xFIid.mjs").then((s) => s.CodePlugin()),
1221
+ code: () => import("./CodePlugin.native-CK9d8rmt.mjs").then((s) => s.CodePlugin()),
1222
1222
  list: () => import("./ListPlugin.native-CLFU5AUQ.mjs").then((s) => s.ListPlugin()),
1223
1223
  history: () => import("./HistoryPlugin.native-DoDRifCf.mjs").then((s) => s.HistoryPlugin())
1224
1224
  };