@sshwy/oi-code-editor
v0.6.0
Published
`oi-code-editor` is a showcase plus component suite centered around the `CodeViewer` and `CodeEditor` components. The `CodeEditor` exposes a Codemirror-based editing surface with theme-aware color mode binding and language presets, while the `CodeViewer`
Readme
oi-code-editor
oi-code-editor is a showcase plus component suite centered around the CodeViewer and CodeEditor components. The CodeEditor exposes a Codemirror-based editing surface with theme-aware color mode binding and language presets, while the CodeViewer renders tabbed code samples with syntax highlighting, configurable folding, and optional status panels, keeping everything in sync with the parent theme via colorMode.
App demo
The documentation app (src/App.vue) does the following:
- Imports
CodeEditor/CodeViewerfrom~/componentsplus the raw text assets for each sample file and the editor fixture. - Tracks the current color mode via
useColorMode, forces it into'auto', and computes a'light'or'dark'value to pass down as:color-mode="presentColor"so both components stay theme aligned. - Binds
CodeEditorto a reactivecoderef seeded witheuclideanoid.cpp, giving an editable C++ sandbox. - Passes an
itemsarray (id, label, content, lang) toCodeViewer, which renders the files in a tabbed view with syntax highlighting, status controls, and theinitial-foldsettings that collapse comments, preprocessors,using, andtypedef.
Running pnpm dev launches this demo so you can preview how CodeViewer behaves with real code samples and theme transitions.
Development
- Install dependencies:
pnpm install. - Run the demo:
pnpm dev.- This boots Vite, which mounts
src/App.vueand renders theCodeViewercomponent with the sample data described above.
- This boots Vite, which mounts
Building
pnpm buildperformsvue-tsctype checking and builds the documentation site via the default Vite configuration.pnpm build:libruns the same type checking step and then usesvite build --config vite.config.lib.tsto emit the library bundles defined insrc/components/index.ts.
Build artifacts appear in dist/, with the library delivering ESM/CJS bundles plus TypeScript declarations under dist/types.
Usage
import { createApp } from "vue";
import { CodeViewer } from "oi-code-editor/components";
createApp({
template: '<CodeViewer :items="items" />',
data: () => ({
items: [
{ id: "1", label: "dmst.cpp", content: "...cpp source...", lang: "cpp" },
{ id: "2", label: "head.h", content: "...header...", lang: "cpp" },
{ id: "3", label: "rating.rs", content: "...Rust source...", lang: "rust" },
],
}),
}).mount("#app");CodeViewer accepts optional tabs, status panel controls, line wrapping, and a colorMode prop so it can integrate with both light and dark themes. The demo app shows how to configure these props for a tabbed, theme-aware presentation.
