From 8aedbc9e621993962b1d694762c86950c621e9af Mon Sep 17 00:00:00 2001 From: giles Date: Mon, 2 Mar 2026 20:18:41 +0000 Subject: [PATCH] Add version logging, Markdown card menu item, and oembed card types - sx-editor prints version on init: [sx-editor] v2026-03-02b-exorcism - Add Markdown to card insert menu with /markdown and /md slash commands - Add YouTube, X/Twitter, Vimeo, Spotify, CodePen as dedicated embed menu items with brand icons (all create ~kg-embed cards) Co-Authored-By: Claude Opus 4.6 --- shared/static/scripts/sx-editor.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/shared/static/scripts/sx-editor.js b/shared/static/scripts/sx-editor.js index a67c01b..80b8974 100644 --- a/shared/static/scripts/sx-editor.js +++ b/shared/static/scripts/sx-editor.js @@ -40,14 +40,20 @@ ]}, { section: "Text", items: [ { type: "html", icon: "fa-solid fa-code", label: "HTML", desc: "Insert raw HTML", slash: ["html"] }, + { type: "markdown", icon: "fa-brands fa-markdown", label: "Markdown",desc: "Insert markdown content", slash: ["markdown", "md"] }, { type: "hr", icon: "fa-solid fa-minus", label: "Divider", desc: "Insert a dividing line", slash: ["divider", "hr"] }, { type: "callout", icon: "fa-regular fa-comment-dots",label: "Callout", desc: "Info box that stands out", slash: ["callout"] }, { type: "toggle", icon: "fa-solid fa-caret-down", label: "Toggle", desc: "Collapsible content", slash: ["toggle"] }, { type: "code", icon: "fa-solid fa-terminal", label: "Code", desc: "Insert a code block", slash: ["code", "codeblock"] }, ]}, { section: "Embed", items: [ + { type: "youtube", icon: "fa-brands fa-youtube", label: "YouTube", desc: "Embed a YouTube video", slash: ["youtube", "yt"] }, + { type: "twitter", icon: "fa-brands fa-x-twitter", label: "X (Twitter)", desc: "Embed a tweet", slash: ["twitter", "tweet", "x"] }, + { type: "vimeo", icon: "fa-brands fa-vimeo-v", label: "Vimeo", desc: "Embed a Vimeo video", slash: ["vimeo"] }, + { type: "spotify", icon: "fa-brands fa-spotify", label: "Spotify", desc: "Embed a Spotify track or playlist", slash: ["spotify"] }, + { type: "codepen", icon: "fa-brands fa-codepen", label: "CodePen", desc: "Embed a CodePen", slash: ["codepen"] }, { type: "bookmark", icon: "fa-solid fa-bookmark", label: "Bookmark",desc: "Embed a link as a visual bookmark", slash: ["bookmark"] }, - { type: "embed", icon: "fa-solid fa-link", label: "Other...",desc: "Embed a URL via oEmbed", slash: ["embed", "youtube", "vimeo", "twitter", "spotify", "codepen"] }, + { type: "embed", icon: "fa-solid fa-link", label: "Other...",desc: "Embed any URL via oEmbed", slash: ["embed", "oembed"] }, { type: "button", icon: "fa-solid fa-square", label: "Button", desc: "Add a button", slash: ["button", "cta"] }, ]}, ]; @@ -1790,6 +1796,11 @@ insertBlockNode(editor, block, refBlock); block.querySelector(".sx-card-preview").click(); return; + } else if (type === "markdown") { + block = createCardBlock("kg-md", { _childrenSx: '""' }); + insertBlockNode(editor, block, refBlock); + block.querySelector(".sx-card-preview").click(); + return; } else if (type === "button") { block = createCardBlock("kg-button", { url: "", text: "Click here", alignment: "center" }); insertBlockNode(editor, block, refBlock); @@ -1800,7 +1811,8 @@ insertBlockNode(editor, block, refBlock); block.querySelector(".sx-card-preview").click(); return; - } else if (type === "embed") { + } else if (type === "embed" || type === "youtube" || type === "vimeo" || + type === "twitter" || type === "spotify" || type === "codepen") { block = createCardBlock("kg-embed", {}); insertBlockNode(editor, block, refBlock); block.querySelector(".sx-card-preview").click(); @@ -2453,11 +2465,16 @@ // Export // ========================================================================= + var VERSION = "2026-03-02b-exorcism"; + window.SxEditor = { + VERSION: VERSION, mount: mount, _serializeBlocks: serializeBlocks, _serializeInline: serializeInline, _deserializeSx: deserializeSx }; + console.log("[sx-editor] v" + VERSION + " init"); + })();