intlayer-editor
Version:
Integrate the Intlayer visual editor into your Intlayer projects, enabling CMS-like content management with multilingual support.
105 lines (104 loc) • 4.43 kB
JavaScript
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vue-BQglRdBF.js","assets/css-BtVcDqlU.js","assets/javascript-DLs729Nk.js","assets/typescript-Cju7JbYj.js","assets/json-D07AUpjp.js","assets/html-derivative-Cswrtqyq.js","assets/html-BOjX3v2Q.js","assets/bundle-web-CNJDzNQN.js","assets/index-DqbmCrrm.js","assets/index-xMTI_9fM.css"])))=>i.map(i=>d[i]);
import { r as reactExports, j as jsxRuntimeExports, C as CodeDefault, _ as __vitePreload } from "./index-DqbmCrrm.js";
const languageCache = /* @__PURE__ */ new Map();
const themeCache = /* @__PURE__ */ new Map();
const loadLanguage = async (lang) => {
if (languageCache.has(lang)) return languageCache.get(lang);
let languageModule;
switch (lang) {
case "typescript":
case "ts":
languageModule = await __vitePreload(() => import("./typescript-Cju7JbYj.js").then((n) => n.b), true ? [] : void 0);
break;
case "javascript":
case "js":
languageModule = await __vitePreload(() => import("./javascript-DLs729Nk.js").then((n) => n.b), true ? [] : void 0);
break;
case "bash":
case "sh":
case "shell":
languageModule = await __vitePreload(() => import("./bash-Bz2gZrDc.js").then((n) => n.b), true ? [] : void 0);
break;
case "json":
languageModule = await __vitePreload(() => import("./json-D07AUpjp.js").then((n) => n.b), true ? [] : void 0);
break;
case "tsx":
languageModule = await __vitePreload(() => import("./tsx-B9RA6cgQ.js").then((n) => n.b), true ? [] : void 0);
break;
case "vue":
languageModule = await __vitePreload(() => import("./vue-BQglRdBF.js").then((n) => n.b), true ? __vite__mapDeps([0,1,2,3,4,5,6]) : void 0);
break;
case "html":
languageModule = await __vitePreload(() => import("./html-BOjX3v2Q.js").then((n) => n.b), true ? __vite__mapDeps([6,2,1]) : void 0);
break;
default:
languageModule = await __vitePreload(() => import("./typescript-Cju7JbYj.js").then((n) => n.b), true ? [] : void 0);
break;
}
const language = languageModule.default;
languageCache.set(lang, language);
return language;
};
const loadTheme = async (themeName) => {
if (themeCache.has(themeName)) return themeCache.get(themeName);
let themeModule;
switch (themeName) {
case "github-dark":
themeModule = await __vitePreload(() => import("./github-dark-CvKoaIXY.js").then((n) => n.a), true ? [] : void 0);
break;
case "github-light":
themeModule = await __vitePreload(() => import("./github-light-Dcx8we6r.js").then((n) => n.a), true ? [] : void 0);
break;
default:
themeModule = await __vitePreload(() => import("./github-light-Dcx8we6r.js").then((n) => n.a), true ? [] : void 0);
break;
}
const theme = themeModule.default;
themeCache.set(themeName, theme);
return theme;
};
const highlightCode = async (code, lang, isDarkMode) => {
const themeName = isDarkMode ? "github-dark" : "github-light";
const [{ codeToHtml }, languageModule, themeModule] = await Promise.all([
__vitePreload(() => import("./bundle-web-CNJDzNQN.js"), true ? __vite__mapDeps([7,8,9]) : void 0),
loadLanguage(lang),
loadTheme(themeName)
]);
return codeToHtml(code, {
lang,
theme: themeModule,
langs: [languageModule]
});
};
const CodeBlockShiki = ({ children, lang, isDarkMode }) => {
const [html, setHtml] = reactExports.useState(null);
reactExports.useEffect(() => {
let isCancelled = false;
setHtml(null);
highlightCode(children, lang, isDarkMode).then((result) => {
if (!isCancelled) setHtml(result);
}).catch(() => {
if (!isCancelled) setHtml("");
});
return () => {
isCancelled = true;
};
}, [
children,
lang,
isDarkMode
]);
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", {
className: "min-w-0 max-w-full overflow-auto bg-transparent [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&_pre::-webkit-scrollbar]:hidden [&_pre]:[-ms-overflow-style:none] [&_pre]:[scrollbar-width:none]",
style: {
backgroundColor: "transparent",
minWidth: 0,
maxWidth: "100%",
overflow: "auto"
},
children: html ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { dangerouslySetInnerHTML: { __html: html } }) : /* @__PURE__ */ jsxRuntimeExports.jsx(CodeDefault, { children })
});
};
export {
CodeBlockShiki
};