mirror of
https://github.com/h44z/wg-portal.git
synced 2026-07-13 20:18:22 +00:00
* fix: resolve Prism syntax highlighting error in peer config modal
The PeerViewModal and InterfaceViewModal components displayed:
Error: The language "undefined" has no grammar.
Root cause: vue-prism-component bundles its own instance of prismjs
(separate from the one imported elsewhere), so registering the ini
grammar on a different Prism instance had no effect on the one
actually performing the highlighting.
Fix: bypass vue-prism-component entirely. Import a single Prism
instance via a new helper (frontend/src/helpers/prism-setup.js) that
also registers the ini grammar, then render highlighted HTML directly
with <pre><code v-html="highlightedConfig">. This ensures the same
Prism object that owns the ini grammar is the one calling highlight().
Affected files:
- frontend/src/helpers/prism-setup.js (new): imports prismjs, defines
the ini grammar on the Prism instance, re-exports it
- frontend/src/components/PeerViewModal.vue: replaces <Prism> with
v-html using the shared Prism instance
- frontend/src/components/InterfaceViewModal.vue: same replacement
- frontend/src/main.js: removes the now-unused prism-setup import
Fixes #726
* Revert "fix: resolve Prism syntax highlighting error in peer config modal"
This reverts commit 8d1155224d.
* fix: resolve Prism syntax highlighting error in peer config modal
The PeerViewModal displayed: Error: The language "undefined" has no grammar.
Root cause: Vite bundled prismjs as separate instances per lazy-loaded
chunk, so the ini grammar registered in one instance was invisible to
vue-prism-component which used a different instance.
Fix:
- Add dedupe: ['prismjs'] to vite.config.mjs to force a single Prism
instance across all chunks
- Add the missing 'prismjs/components/prism-ini' import in
PeerViewModal.vue (InterfaceViewModal already had it)
38 lines
807 B
JavaScript
38 lines
807 B
JavaScript
import { fileURLToPath, URL } from 'url'
|
|
|
|
import { defineConfig } from 'vite'
|
|
import vue from '@vitejs/plugin-vue'
|
|
|
|
// https://vitejs.dev/config/
|
|
export default defineConfig({
|
|
base: './',
|
|
plugins: [vue()],
|
|
resolve: {
|
|
alias: {
|
|
'@': fileURLToPath(new URL('./src', import.meta.url))
|
|
},
|
|
dedupe: ['prismjs']
|
|
},
|
|
build: {
|
|
//
|
|
outDir: process.env.DIST_OUT_DIR || '../internal/app/api/core/frontend-dist',
|
|
emptyOutDir: true
|
|
},
|
|
// local dev api (proxy to avoid cors problems)
|
|
server: {
|
|
port: 5000,
|
|
proxy: {
|
|
"/api/v0": {
|
|
target: "http://localhost:8888",
|
|
changeOrigin: true,
|
|
secure: false,
|
|
withCredentials: true,
|
|
headers: {
|
|
"x-wg-dev": true,
|
|
},
|
|
rewrite: (path) => path,
|
|
},
|
|
},
|
|
},
|
|
})
|