@live-change/frontend-base 0.2.56 → 0.3.0
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/Page.vue +7 -4
- package/ViewRoot.vue +2 -2
- package/lezer.js +63 -0
- package/package.json +15 -3
- package/vite-config.js +13 -29
- package/yarn-error.log +12077 -0
package/Page.vue
CHANGED
|
@@ -29,21 +29,24 @@
|
|
|
29
29
|
const isMounted = ref(false)
|
|
30
30
|
onMounted(() => isMounted.value = true)
|
|
31
31
|
|
|
32
|
-
const { working, loading } = defineProps({
|
|
32
|
+
const { working, loading, pageType } = defineProps({
|
|
33
33
|
working: {
|
|
34
34
|
type: Boolean
|
|
35
35
|
},
|
|
36
36
|
loading: {
|
|
37
37
|
type: Boolean
|
|
38
|
+
},
|
|
39
|
+
pageType: {
|
|
40
|
+
type: String,
|
|
41
|
+
default: 'simple'
|
|
38
42
|
}
|
|
39
43
|
})
|
|
40
44
|
|
|
41
45
|
//console.log("SETUP PAGE!!!")
|
|
42
46
|
|
|
43
47
|
import { computed } from 'vue'
|
|
44
|
-
import { useRoute } from 'vue-router'
|
|
48
|
+
import { useRoute, useRouter } from 'vue-router'
|
|
45
49
|
const route = useRoute()
|
|
46
|
-
|
|
47
|
-
const pageType = computed(() => route?.meta?.pageType ?? 'simple' )
|
|
50
|
+
const router = useRouter()
|
|
48
51
|
|
|
49
52
|
</script>
|
package/ViewRoot.vue
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
</div>
|
|
13
13
|
</template>
|
|
14
14
|
<template v-slot:default="{ isLoading }">
|
|
15
|
-
<page :loading="loading" :working="working">
|
|
15
|
+
<page :loading="loading" :working="working" :route="route" :pageType="route?.meta?.pageType">
|
|
16
16
|
<template #navbar>
|
|
17
17
|
<slot name="navbar"></slot>
|
|
18
18
|
</template>
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
]
|
|
54
54
|
})
|
|
55
55
|
|
|
56
|
-
import { ref } from 'vue'
|
|
56
|
+
import { computed, onMounted, ref } from 'vue'
|
|
57
57
|
const working = ref(false)
|
|
58
58
|
const loading = ref(false)
|
|
59
59
|
|
package/lezer.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
const { parser: javascriptParser } = require("@lezer/javascript")
|
|
2
|
+
const { parser: htmlParser } = require("@lezer/html")
|
|
3
|
+
const { parser: markdownParser } = require("@lezer/markdown")
|
|
4
|
+
const { parser: cssParser } = require("@lezer/css")
|
|
5
|
+
const { parser: jsonParser } = require("@lezer/json")
|
|
6
|
+
const { parser: cppParser } = require("@lezer/cpp")
|
|
7
|
+
const { parser: sassParser } = require("@lezer/sass")
|
|
8
|
+
const { parser: javaParser } = require("@lezer/java")
|
|
9
|
+
const { parser: pythonParser } = require("@lezer/python")
|
|
10
|
+
const { parser: phpParser } = require("@lezer/php")
|
|
11
|
+
const { parser: rustParser } = require("@lezer/rust")
|
|
12
|
+
|
|
13
|
+
const { highlightTree } = require("@lezer/highlight")
|
|
14
|
+
const { defaultHighlightStyle } = require("@codemirror/language")
|
|
15
|
+
|
|
16
|
+
const parsers = {
|
|
17
|
+
javascript: javascriptParser,
|
|
18
|
+
html: htmlParser,
|
|
19
|
+
markdown: markdownParser,
|
|
20
|
+
css: cssParser,
|
|
21
|
+
json: jsonParser,
|
|
22
|
+
cpp: cppParser,
|
|
23
|
+
sass: sassParser,
|
|
24
|
+
java: javaParser,
|
|
25
|
+
python: pythonParser,
|
|
26
|
+
php: phpParser,
|
|
27
|
+
rust: rustParser,
|
|
28
|
+
scss: sassParser,
|
|
29
|
+
less: cssParser,
|
|
30
|
+
stylus: cssParser,
|
|
31
|
+
ts: javascriptParser,
|
|
32
|
+
tsx: javascriptParser,
|
|
33
|
+
jsx: javascriptParser,
|
|
34
|
+
vue: htmlParser,
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function hightlight(code, language) {
|
|
38
|
+
//console.log("HIGHLIGHT", language, code)
|
|
39
|
+
const parser = parsers[language]
|
|
40
|
+
if(parser) {
|
|
41
|
+
const tree = parser.parse(code)
|
|
42
|
+
let pos = 0
|
|
43
|
+
const output = []
|
|
44
|
+
highlightTree(tree, defaultHighlightStyle, (from, to, classes) => {
|
|
45
|
+
if (from > pos) output.push(`<span>${
|
|
46
|
+
code.slice(pos, from).replace(/</g, "<").replace(/>/g, ">")
|
|
47
|
+
}</span>`)
|
|
48
|
+
console.log("HIGHLIGHT", from, to, classes, code.slice(from, to))
|
|
49
|
+
output.push(`<span class="${classes}">${
|
|
50
|
+
code.slice(from, to).replace(/</g, "<").replace(/>/g, ">")
|
|
51
|
+
}</span>`)
|
|
52
|
+
pos = to
|
|
53
|
+
})
|
|
54
|
+
if (code.length > pos) output.push(`<span>${
|
|
55
|
+
code.slice(pos).replace(/</g, "<").replace(/>/g, ">")
|
|
56
|
+
}</span>`)
|
|
57
|
+
return `<pre class="code${language ? ' code-language-'+language : ''}">${output.join('')}</pre>`
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
module.exports = {
|
|
62
|
+
parsers, hightlight
|
|
63
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@live-change/frontend-base",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"memDev": "lcli memDev --enableSessions --initScript ./init.js --templatePath ../../base-frontend/index.html",
|
|
6
6
|
"localDevInit": "rm tmp.db; lcli localDev --enableSessions --initScript ./init.js",
|
|
@@ -20,6 +20,17 @@
|
|
|
20
20
|
"debug": "node --inspect-brk server"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
+
"@lezer/cpp": "^1.1.1",
|
|
24
|
+
"@lezer/css": "^1.1.3",
|
|
25
|
+
"@lezer/html": "^1.3.6",
|
|
26
|
+
"@lezer/java": "^1.0.4",
|
|
27
|
+
"@lezer/javascript": "^1.4.7",
|
|
28
|
+
"@lezer/json": "^1.0.1",
|
|
29
|
+
"@lezer/markdown": "^1.1.0",
|
|
30
|
+
"@lezer/php": "^1.0.1",
|
|
31
|
+
"@lezer/python": "^1.1.8",
|
|
32
|
+
"@lezer/rust": "^1.0.1",
|
|
33
|
+
"@lezer/sass": "^1.0.3",
|
|
23
34
|
"@live-change/cli": "0.7.32",
|
|
24
35
|
"@live-change/dao": "0.5.21",
|
|
25
36
|
"@live-change/dao-message": "0.5.21",
|
|
@@ -30,7 +41,7 @@
|
|
|
30
41
|
"@live-change/password-authentication-service": "0.3.30",
|
|
31
42
|
"@live-change/secret-code-service": "0.3.30",
|
|
32
43
|
"@live-change/secret-link-service": "0.3.30",
|
|
33
|
-
"@live-change/security-frontend": "^0.
|
|
44
|
+
"@live-change/security-frontend": "^0.3.0",
|
|
34
45
|
"@live-change/session-service": "0.3.30",
|
|
35
46
|
"@live-change/user-service": "0.3.30",
|
|
36
47
|
"@live-change/vue3-components": "0.2.29",
|
|
@@ -53,6 +64,7 @@
|
|
|
53
64
|
"markdown-it-highlight": "^0.2.0",
|
|
54
65
|
"markdown-it-katex": "^2.0.3",
|
|
55
66
|
"markdown-it-mark": "^3.0.1",
|
|
67
|
+
"markdown-it-mermaid": "^0.2.5",
|
|
56
68
|
"markdown-it-plugin-echarts": "^0.0.1",
|
|
57
69
|
"markdown-it-prism": "^2.3.0",
|
|
58
70
|
"markdown-it-source-map": "^0.1.1",
|
|
@@ -93,5 +105,5 @@
|
|
|
93
105
|
"author": "",
|
|
94
106
|
"license": "BSD-3-Clause",
|
|
95
107
|
"description": "",
|
|
96
|
-
"gitHead": "
|
|
108
|
+
"gitHead": "ad1cf7e6deb52afdc69eb4748656f121417d31b3"
|
|
97
109
|
}
|
package/vite-config.js
CHANGED
|
@@ -15,11 +15,13 @@ const MarkdownItTaskLists = require('markdown-it-task-lists')
|
|
|
15
15
|
const MarkdownItTableOfContents = require('markdown-it-table-of-contents')
|
|
16
16
|
const MarkdownItMermaid = require('markdown-it-mermaid').default
|
|
17
17
|
|
|
18
|
-
const {
|
|
19
|
-
const { highlightTree } = require("@lezer/highlight")
|
|
20
|
-
const { defaultHighlightStyle } = require("@codemirror/language")
|
|
18
|
+
const { highlight } = require('@live-change/frontend-base/lezer.js')
|
|
21
19
|
|
|
22
20
|
const Components = require('unplugin-vue-components/vite')
|
|
21
|
+
const {
|
|
22
|
+
PrimeVueResolver
|
|
23
|
+
} = require('unplugin-vue-components/resolvers')
|
|
24
|
+
|
|
23
25
|
const { visualizer } = require('rollup-plugin-visualizer')
|
|
24
26
|
const viteImages = require('vite-plugin-vue-images')
|
|
25
27
|
const viteCompression = require('vite-plugin-compression')
|
|
@@ -33,8 +35,7 @@ const ssrTransformCustomDir = () => {
|
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
module.exports = async ({ command, mode }) => {
|
|
36
|
-
console.log("VITE CONFIG", command, mode)
|
|
37
|
-
//const MarkdownItEcharts = await import('markdown-it-echarts')
|
|
38
|
+
//console.log("VITE CONFIG", command, mode)
|
|
38
39
|
return {
|
|
39
40
|
define: {
|
|
40
41
|
ENV_BASE_HREF: JSON.stringify(process.env.BASE_HREF || 'http://localhost:8001')
|
|
@@ -73,26 +74,7 @@ module.exports = async ({ command, mode }) => {
|
|
|
73
74
|
html: true,
|
|
74
75
|
linkify: true,
|
|
75
76
|
typographer: true,
|
|
76
|
-
highlight
|
|
77
|
-
//console.log("HIGHLIGHT", lang, str)
|
|
78
|
-
const tree = javascriptParser.parse(code)
|
|
79
|
-
let pos = 0
|
|
80
|
-
const output = []
|
|
81
|
-
highlightTree(tree, defaultHighlightStyle, (from, to, classes) => {
|
|
82
|
-
if(from > pos) output.push(`<span>${
|
|
83
|
-
code.slice(pos, from).replace(/</g, "<").replace(/>/g, ">")
|
|
84
|
-
}</span>`)
|
|
85
|
-
console.log("HIGHLIGHT", from, to, classes, code.slice(from, to))
|
|
86
|
-
output.push(`<span class="${classes}">${
|
|
87
|
-
code.slice(from, to).replace(/</g, "<").replace(/>/g, ">")
|
|
88
|
-
}</span>`)
|
|
89
|
-
pos = to
|
|
90
|
-
})
|
|
91
|
-
if(code.length > pos) output.push(`<span>${
|
|
92
|
-
code.slice(pos).replace(/</g, "<").replace(/>/g, ">")
|
|
93
|
-
}</span>`)
|
|
94
|
-
return `<pre>${output.join('')}</pre>`
|
|
95
|
-
},
|
|
77
|
+
highlight,
|
|
96
78
|
},
|
|
97
79
|
markdownItSetup(md) {
|
|
98
80
|
md.use(MarkdownItSub)
|
|
@@ -103,15 +85,12 @@ module.exports = async ({ command, mode }) => {
|
|
|
103
85
|
md.use(MarkdownItMark)
|
|
104
86
|
md.use(MarkdownItKatex)
|
|
105
87
|
md.use(MarkdownItTaskLists)
|
|
106
|
-
//md.use(MarkdownItEcharts)
|
|
107
88
|
md.use(MarkdownItMermaid)
|
|
108
89
|
md.use(MarkdownItAnchor)
|
|
109
90
|
md.use(MarkdownItTableOfContents, {
|
|
110
91
|
includeLevel: [1, 2, 3],
|
|
111
92
|
containerClass: 'table-of-contents',
|
|
112
93
|
})
|
|
113
|
-
|
|
114
|
-
console.log('MDO', md.options.highlight.toString())
|
|
115
94
|
},
|
|
116
95
|
wrapperClasses: 'markdown-body'
|
|
117
96
|
}),
|
|
@@ -120,13 +99,18 @@ module.exports = async ({ command, mode }) => {
|
|
|
120
99
|
from: 'vue-router',
|
|
121
100
|
names: ['RouterLink', 'RouterView'],
|
|
122
101
|
}],
|
|
102
|
+
resolvers: [
|
|
103
|
+
PrimeVueResolver({
|
|
104
|
+
})
|
|
105
|
+
],
|
|
123
106
|
// allow auto load markdown components under `./src/components/`
|
|
124
107
|
dirs: ['src/components'],
|
|
125
108
|
// search for subdirectories
|
|
126
109
|
deep: true,
|
|
127
110
|
extensions: ['vue', 'md'],
|
|
111
|
+
dts: true,
|
|
128
112
|
// allow auto import and register components used in markdown
|
|
129
|
-
|
|
113
|
+
include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
|
|
130
114
|
}),
|
|
131
115
|
viteImages({ extensions: ['jpg', 'jpeg', 'png', 'svg', 'webp'] }),
|
|
132
116
|
viteCompression({ algorithm: 'brotliCompress', ext: '.br' }),
|