@particle-academy/fancy-code 0.4.5 → 0.4.7

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.
package/README.md CHANGED
@@ -67,6 +67,19 @@ pnpm --filter @particle-academy/fancy-code clean # Remove dist/
67
67
  - **Zero third-party dependencies** — custom engine, no Monaco / CodeMirror / Shiki
68
68
  - **IDE-ready** — pairs with `TreeNav` from `@particle-academy/react-fancy` for full IDE layouts; see [docs/CodeEditor.md](./docs/CodeEditor.md) for an example.
69
69
 
70
+ ## Inertia.js integration
71
+
72
+ CodeEditor mounts its own DOM observers and is **not SSR-safe**. In an Inertia app, wrap with [`<FancyClientOnly>`](https://github.com/Particle-Academy/fancy-inertia/blob/main/docs/USAGE.md#fancyclientonly) from `@particle-academy/fancy-inertia`:
73
+
74
+ ```tsx
75
+ import { FancyClientOnly } from "@particle-academy/fancy-inertia";
76
+ import { CodeEditor } from "@particle-academy/fancy-code";
77
+
78
+ <FancyClientOnly fallback={<div className="h-96 animate-pulse rounded bg-zinc-100" />}>
79
+ <CodeEditor value={code} onChange={setCode} language="typescript" />
80
+ </FancyClientOnly>
81
+ ```
82
+
70
83
  ## License
71
84
 
72
85
  MIT
package/dist/index.cjs CHANGED
@@ -1578,6 +1578,7 @@ function CodeEditorRoot({
1578
1578
  },
1579
1579
  cursorPosition,
1580
1580
  selectionLength,
1581
+ textareaRef: engineReturn.textareaRef,
1581
1582
  placeholder,
1582
1583
  _engineReturn: engineReturn,
1583
1584
  _minHeight: minHeight,
@@ -1606,8 +1607,17 @@ var CodeEditor = Object.assign(CodeEditorRoot, {
1606
1607
  Panel: CodeEditorPanel,
1607
1608
  StatusBar: CodeEditorStatusBar
1608
1609
  });
1610
+ function useCodeEditorInputTagAdapter() {
1611
+ const ctx = useCodeEditor();
1612
+ return react.useMemo(() => reactFancy.textareaAdapter(ctx.textareaRef), [ctx.textareaRef]);
1613
+ }
1614
+ function CodeEditorInputTag(props) {
1615
+ const adapter = useCodeEditorInputTagAdapter();
1616
+ return /* @__PURE__ */ jsxRuntime.jsx(reactFancy.InputTag, { adapter, ...props });
1617
+ }
1609
1618
 
1610
1619
  exports.CodeEditor = CodeEditor;
1620
+ exports.CodeEditorInputTag = CodeEditorInputTag;
1611
1621
  exports.getLanguage = getLanguage;
1612
1622
  exports.getRegisteredLanguages = getRegisteredLanguages;
1613
1623
  exports.getRegisteredThemes = getRegisteredThemes;
@@ -1615,5 +1625,6 @@ exports.getTheme = getTheme;
1615
1625
  exports.registerLanguage = registerLanguage;
1616
1626
  exports.registerTheme = registerTheme;
1617
1627
  exports.useCodeEditor = useCodeEditor;
1628
+ exports.useCodeEditorInputTagAdapter = useCodeEditorInputTagAdapter;
1618
1629
  //# sourceMappingURL=index.cjs.map
1619
1630
  //# sourceMappingURL=index.cjs.map