visualifyjs 2.5.3-2.dev → 2.5.3-9-dev
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of visualifyjs might be problematic. Click here for more details.
- package/.github/workflows/{static.yml.bak → build.yaml} +51 -51
- package/LICENSE +674 -674
- package/README.md +40 -58
- package/config-overrides.js +31 -31
- package/dist/visualify.js +3 -3
- package/docs/CLI.md +15 -0
- package/docs/{docs/README.md → README.md} +41 -65
- package/docs/{docs/Rechart → Rechart}/bar.md +190 -190
- package/docs/{docs/Rechart → Rechart}/funnel.md +193 -241
- package/docs/{docs/Rechart → Rechart}/line.md +355 -355
- package/docs/{docs/Rechart → Rechart}/pie.md +225 -225
- package/docs/{docs/Rechart → Rechart}/radar.md +253 -253
- package/docs/{docs/_404.md → _404.md} +51 -51
- package/docs/{docs/_coverpage.md → _coverpage.md} +11 -11
- package/docs/{docs/_sidebar.md → _sidebar.md} +42 -44
- package/docs/{docs/components → components}/dotBio.md +34 -34
- package/docs/{docs/components → components}/echart.md +82 -82
- package/docs/{docs/components → components}/html.md +34 -34
- package/docs/{docs/components → components}/macaron.md +145 -145
- package/docs/components/markdown.md +0 -0
- package/docs/{docs/components → components}/more.md +142 -142
- package/docs/{docs/components → components}/plotly.md +62 -62
- package/docs/{docs/components → components}/scatterL.md +70 -70
- package/docs/{docs/components → components}/visium.md +56 -56
- package/docs/{docs/configuration.md → configuration.md} +123 -121
- package/docs/{docs/deploy.md → deploy.md} +23 -31
- package/docs/index.html +70 -70
- package/docs/log.md +1 -0
- package/docs/manifest.json +23 -23
- package/docs/{docs/more-pages.md → more-pages.md} +23 -23
- package/docs/{docs/quickstart.md → quickstart.md} +115 -124
- package/docs/{docs/rechart-attributes.md → rechart-attributes.md} +74 -74
- package/docs/{docs/rechart-basic-usage.md → rechart-basic-usage.md} +162 -162
- package/docs/static/css/fluff-stuff.css +169 -169
- package/docs/static/css/font-awesome.min.css +4 -4
- package/docs/static/css/visualify.css +25 -25
- package/docs/static/js/configuration.js +448 -448
- package/docs/static/js/visualify.js +24 -23
- package/docs/theme.md +3 -0
- package/package.json +74 -83
- package/rollup.config.mjs +75 -75
- package/src/_css/404.css +115 -115
- package/src/_css/App.css +37 -37
- package/src/_css/autoSuggestion.css +26 -26
- package/src/_css/circular-progress.css +32 -32
- package/src/_css/index.css +36 -36
- package/src/_css/modern.css +24 -24
- package/src/_media/corner.svg +8 -8
- package/src/_media/download.svg +3 -3
- package/src/_media/logo.svg +14 -14
- package/src/_test/App.test.js +15 -15
- package/src/_utils/reportWebVitals.js +13 -13
- package/src/core/appContext.js +27 -27
- package/src/core/components/Scatter.js +188 -188
- package/src/core/components/ScatterBio.js +572 -572
- package/src/core/components/VisiumPlot.js +165 -165
- package/src/core/components/browser.js +42 -42
- package/src/core/components/dotplot.js +413 -413
- package/src/core/components/html.js +29 -29
- package/src/core/components/list.js +178 -178
- package/src/core/components/macaron.js +201 -201
- package/src/core/components/markdown.js +56 -56
- package/src/core/components/parser.scatterBio.js +579 -587
- package/src/core/components/ratio.js +80 -80
- package/src/core/components/scatterL.js +173 -173
- package/src/core/components/searchbar.js +131 -131
- package/src/core/components/selection.js +193 -193
- package/src/core/components/timeline.js +281 -281
- package/src/core/components/visium.js +97 -97
- package/src/core/fetch/condfetch.js +82 -82
- package/src/core/fetch/fetch.js +92 -92
- package/src/core/fetch/json.js +29 -29
- package/src/core/fetch/vfetch.js +42 -42
- package/src/core/liveEditor.js +44 -44
- package/src/core/modules/codeEditorWithPreview.js +104 -104
- package/src/core/modules/echarts/common.js +20 -20
- package/src/core/modules/echarts/presetHandler.js +41 -41
- package/src/core/modules/echarts/presets/esodev.chromium.js +172 -172
- package/src/core/modules/echarts/presets/esodev.codex.js +130 -130
- package/src/core/modules/echarts/presets/esodev.visium.js +123 -123
- package/src/core/modules/echarts/presets/mmtrbc.js +186 -186
- package/src/core/modules/echarts.js +71 -71
- package/src/core/modules/echartsUtils.js +43 -43
- package/src/core/modules/echartswitcher.js +152 -152
- package/src/core/modules/replotly/presetHandler.js +24 -24
- package/src/core/modules/replotly/presets/minimum.js +18 -18
- package/src/core/modules/replotly/presets/mmtrbc.dot.js +114 -114
- package/src/core/modules/replotly/presets/mmtrbc.violin.js +100 -100
- package/src/core/modules/replotly.js +71 -71
- package/src/core/pages/404.js +50 -50
- package/src/core/pages/error.js +27 -27
- package/src/core/pages/jsonPage.js +62 -62
- package/src/core/pages/loading.js +44 -44
- package/src/core/parser/echart.data.js +183 -183
- package/src/core/parser/echart.features.js +125 -125
- package/src/core/parser/echart.general.js +143 -147
- package/src/core/parser/echart.hilbert.js +57 -57
- package/src/core/parser/echart.parser.js +210 -210
- package/src/core/parser/echart.series.js +67 -67
- package/src/core/parser/echart.types.js +76 -76
- package/src/core/parser/plotly.config.js +10 -10
- package/src/core/parser/plotly.data.js +132 -132
- package/src/core/parser/plotly.layout.js +9 -9
- package/src/core/parser/plotly.violin.js +18 -18
- package/src/core/recharts.js +62 -62
- package/src/core/router/alias.js +49 -49
- package/src/core/router/jsonRouter.js +31 -31
- package/src/core/themes/modern.js +32 -32
- package/src/core/themes/themeSelector.js +33 -33
- package/src/core/visualify.js +47 -47
- package/src/core/widgets/circularProgress.js +23 -23
- package/src/core/widgets/controller.js +83 -83
- package/src/core/widgets/errorBoundary.js +36 -36
- package/src/core/widgets/footer.js +177 -177
- package/src/core/widgets/header.js +234 -234
- package/src/core/widgets/layout/Grid.js +31 -31
- package/src/core/widgets/layout.js +36 -36
- package/src/core/widgets/mapping.js +42 -42
- package/src/index.js +62 -62
- package/src/setupTests.js +5 -5
- package/docs/docs/CLI.md +0 -34
- package/docs/docs/Rechart/scatter.md +0 -298
- package/docs/docs/log.md +0 -9
- package/docs/docs/static/logo/favicon.ico +0 -0
- package/docs/docs/static/logo/logo_128x128.png +0 -0
- package/docs/docs/static/logo/logo_192x192.png +0 -0
- package/docs/docs/static/logo/logo_256x256.png +0 -0
- package/docs/docs/static/logo/logo_512x512.png +0 -0
- package/docs/docs/static/logo/logo_64x64.png +0 -0
- package/docs/docs/theme.md +0 -5
- /package/docs/{docs/Rechart → Rechart}/geo.md +0 -0
- /package/docs/{docs/Rechart → Rechart}/liquidfill.md +0 -0
- /package/docs/{docs/Rechart → Rechart}/polar.md +0 -0
- /package/docs/{docs/Rechart → Rechart}/sankey.md +0 -0
- /package/docs/{docs/Rechart/sunburst.md → Rechart/scatter.md} +0 -0
- /package/docs/{docs/Rechart/tree.md → Rechart/sunburst.md} +0 -0
- /package/docs/{docs/Rechart/wordcloud.md → Rechart/tree.md} +0 -0
- /package/docs/{docs/components/markdown.md → Rechart/wordcloud.md} +0 -0
- /package/docs/{docs/static → static}/_images/deploy-github-pages.png +0 -0
@@ -1,448 +1,448 @@
|
|
1
|
-
// variableName (Type) | Default: defaultValue | Brief description
|
2
|
-
/* variableName (Type)
|
3
|
-
Default: defaultValue
|
4
|
-
Brief description
|
5
|
-
*/
|
6
|
-
|
7
|
-
config = {};
|
8
|
-
|
9
|
-
// ====================================== Basic ======================================
|
10
|
-
|
11
|
-
// name (String) | Website name in the sidebar, can include custom HTML for customization
|
12
|
-
config.name = 'visualify.js';
|
13
|
-
|
14
|
-
// repo (String) | Configure repository URL or username/repo for GitHub Corner widget in the top right corner
|
15
|
-
config.repo = 'https://github.com/
|
16
|
-
|
17
|
-
/*
|
18
|
-
config.corner = {
|
19
|
-
// the icon link url to another site
|
20
|
-
url: "https://github.com/usleolihao",
|
21
|
-
// the default preset icon in docsify-corner
|
22
|
-
//icon: "static/avatar/corner-unscreen.gif",
|
23
|
-
//background: "#091a28",
|
24
|
-
//width: 50,
|
25
|
-
//height: 50,
|
26
|
-
};
|
27
|
-
*/
|
28
|
-
|
29
|
-
/* auto2top (Boolean)
|
30
|
-
Default: false
|
31
|
-
Scrolls to the top when the route is changed
|
32
|
-
*/
|
33
|
-
config.auto2top = true;
|
34
|
-
|
35
|
-
// basePath (String) | Base path of the website. You can set it to another directory or another domain name.
|
36
|
-
config.basePath = 'docs/';
|
37
|
-
|
38
|
-
// autoHeader (Boolean) | Default: false | prepend a header to the page before converting it to HTML.
|
39
|
-
config.autoHeader = false;
|
40
|
-
|
41
|
-
// catchPluginErrors (Boolean) | Default: true | prevent plugin errors from affecting docsify
|
42
|
-
config.catchPluginErrors = true;
|
43
|
-
|
44
|
-
/* coverpage (Boolean|String|String[]|Object)
|
45
|
-
Default: false
|
46
|
-
Activate the cover feature. If true, it will load from _coverpage.md.
|
47
|
-
*/
|
48
|
-
config.coverpage = true;
|
49
|
-
|
50
|
-
// el (String) | Default: '#app' | The DOM element to be mounted on initialization.
|
51
|
-
config.el = '#docsify';
|
52
|
-
|
53
|
-
/* executeScript (Boolean)
|
54
|
-
Default: null
|
55
|
-
Execute the script on the page. Only parses the first script tag (demo).
|
56
|
-
If Vue is detected, this is true by default.
|
57
|
-
<script>
|
58
|
-
console.log(2333)
|
59
|
-
</script>
|
60
|
-
*/
|
61
|
-
config.executeScript = true;
|
62
|
-
|
63
|
-
/* formatUpdated (String|Function)
|
64
|
-
Default: null
|
65
|
-
display the file update date through {docsify-updated} variable.
|
66
|
-
window.$docsify = {
|
67
|
-
formatUpdated: '{MM}/{DD} {HH}:{mm}',
|
68
|
-
|
69
|
-
formatUpdated: function (time) {
|
70
|
-
// ...
|
71
|
-
|
72
|
-
return time;
|
73
|
-
},
|
74
|
-
};
|
75
|
-
*/
|
76
|
-
config.formatUpdated =
|
77
|
-
'<hr>\
|
78
|
-
<footer><strong>Last modified</strong>: {MM}/{DD}/{YYYY} {HH}:{mm} <br>\
|
79
|
-
<div style="text-align: center;margin-top: 50px;">\
|
80
|
-
<span>Fluff & Stuff</a> © 2023. Power by <a href="https://docsify.js.org/#/" target="_blank">docsify</a></span>\
|
81
|
-
</div>\
|
82
|
-
</footer>';
|
83
|
-
|
84
|
-
// homepage (String) | Default: 'README.md' | serve another file as homepage
|
85
|
-
// config.homepage = "home.md"
|
86
|
-
|
87
|
-
// loadNavbar (Boolean|String) | Default: false | Loads navbar from _navbar.md if true, else from specified path
|
88
|
-
config.loadNavbar = false;
|
89
|
-
|
90
|
-
// logo (String) | Website logo in the sidebar, can be resized using CSS
|
91
|
-
config.logo = './static/logo/logo_128x128.png';
|
92
|
-
|
93
|
-
// maxLevel (Number) | Default: 6 | Maximum Table of Contents level
|
94
|
-
config.maxLevel = 3;
|
95
|
-
|
96
|
-
// mergeNavbar (Boolean) | Default: false | Navbar merges with the sidebar on smaller screens
|
97
|
-
config.mergeNavbar = true;
|
98
|
-
|
99
|
-
// noCompileLinks (Array<string>) | Skips compiling of specified links using regex patterns
|
100
|
-
config.noCompileLinks = ['/_media/', '/_social/'];
|
101
|
-
|
102
|
-
// noEmoji (Boolean) | Default: false | Disables emoji parsing and renders all emoji shorthand as text
|
103
|
-
config.noEmoji = false;
|
104
|
-
|
105
|
-
// notFoundPage (Boolean | String | Object) | Default: false | Configures 404 page display or custom 404 page path
|
106
|
-
config.notFoundPage = true;
|
107
|
-
|
108
|
-
// onlyCover (Boolean) | Default: false | Only cover page is loaded when visiting the home page
|
109
|
-
config.onlyCover = false;
|
110
|
-
|
111
|
-
// relativePath (Boolean) | Default: false | If true, links are relative to the current context
|
112
|
-
config.relativePath = true;
|
113
|
-
|
114
|
-
// routerMode (String) | Default: 'hash' | Set router mode for navigation, can be 'hash' or 'history'
|
115
|
-
config.routerMode = 'hash';
|
116
|
-
|
117
|
-
// loadSidebar (Boolean|String) | Default: false | Loads sidebar from _sidebar.md if true, else from specified path
|
118
|
-
config.loadSidebar = true;
|
119
|
-
|
120
|
-
// subMaxLevel (Number) | Default: 0 | Add table of contents
|
121
|
-
// 自定义侧边栏后默认不会再生成目录,你也可以通过设置生成目录的最大层级开启这个功能。
|
122
|
-
config.subMaxLevel = 2;
|
123
|
-
// set sidebar display level
|
124
|
-
config.sidebarDisplayLevel = 3;
|
125
|
-
|
126
|
-
// ====================================== Theme ======================================
|
127
|
-
|
128
|
-
// themeColor (String) | Customize theme color using CSS3 variables feature and polyfill in older browsers
|
129
|
-
config.themeColor = '#3F51B5';
|
130
|
-
|
131
|
-
// topMargin (Number) | Default: 0 | Add space on top when scrolling content page to align anchors with sticky-header
|
132
|
-
config.topMargin = 90;
|
133
|
-
|
134
|
-
// ====================================== Router ======================================
|
135
|
-
|
136
|
-
config.alias = {
|
137
|
-
'/.*/_navbar.md': '/_navbar.md',
|
138
|
-
'/.*/_sidebar.md': '/_sidebar.md',
|
139
|
-
// "/_contents/fluffy/_sidebar.md"
|
140
|
-
// "/_projs/_IoT/_sidebar.md"
|
141
|
-
};
|
142
|
-
|
143
|
-
// routes (Object) | Define virtual routes for dynamic content, map path to string or function returning markdown
|
144
|
-
config.routes = {
|
145
|
-
// ... existing routes ...
|
146
|
-
// Basic match w/ return string
|
147
|
-
'/foo': '# Custom Markdown',
|
148
|
-
// RegEx match w/ synchronous function
|
149
|
-
'/bar/(.*)': function (route, matched) {
|
150
|
-
return '# Custom Markdown bar ' + matched[1];
|
151
|
-
},
|
152
|
-
// RegEx match w/ asynchronous function
|
153
|
-
'/baz/(.*)': function (route, matched, next) {
|
154
|
-
// Requires `fetch` polyfill for legacy browsers (https://github.github.io/fetch/)
|
155
|
-
fetch('/api/users?id=12345')
|
156
|
-
.then(function (response) {
|
157
|
-
next(
|
158
|
-
'# Custom Markdown baz\n' +
|
159
|
-
matched[1] +
|
160
|
-
' ' +
|
161
|
-
response.json(),
|
162
|
-
);
|
163
|
-
})
|
164
|
-
.catch(function (err) {
|
165
|
-
// Handle error...
|
166
|
-
});
|
167
|
-
},
|
168
|
-
// accepts everything other than dogs (synchronous)
|
169
|
-
'/pets/(.+)': function (route, matched) {
|
170
|
-
if (matched[0] === 'dogs') {
|
171
|
-
return null;
|
172
|
-
} else {
|
173
|
-
return 'I like all pets but dogs';
|
174
|
-
}
|
175
|
-
},
|
176
|
-
|
177
|
-
// accepts everything other than cats (asynchronous)
|
178
|
-
'/pets/(.*)': function (route, matched, next) {
|
179
|
-
if (matched[0] === 'cats') {
|
180
|
-
next();
|
181
|
-
} else {
|
182
|
-
// Async task(s)...
|
183
|
-
next('I like all pets but cats');
|
184
|
-
}
|
185
|
-
},
|
186
|
-
|
187
|
-
// explicit false value to load real markdown file
|
188
|
-
'/petss/cats': function (route, matched) {
|
189
|
-
return false;
|
190
|
-
},
|
191
|
-
|
192
|
-
// generate dynamic content for other pets
|
193
|
-
'/petss/(.+)': function (route, matched) {
|
194
|
-
const pet = matched[0];
|
195
|
-
return `your pet is ${pet} (but not a cat)`;
|
196
|
-
},
|
197
|
-
};
|
198
|
-
|
199
|
-
// ====================================== Markdown ======================================
|
200
|
-
|
201
|
-
// markdown (Function) | Allows Markdown configuration and customization
|
202
|
-
config.debug = false;
|
203
|
-
|
204
|
-
config.markdown = {
|
205
|
-
renderer: {
|
206
|
-
code: function (code, lang) {
|
207
|
-
if (typeof lang === 'string' && lang.startsWith('output')) {
|
208
|
-
const conf = lang.split(',');
|
209
|
-
let oconf = {};
|
210
|
-
// iterate over the rest of the elements
|
211
|
-
for (let i = 0; i < conf.length; i++) {
|
212
|
-
//skip if not a key-value pair
|
213
|
-
if (conf[i].indexOf('=') === -1) continue;
|
214
|
-
// split the element into key and value
|
215
|
-
const [key, value] = conf[i].split('=');
|
216
|
-
// set the key-value pair in the config object
|
217
|
-
oconf[key] = value;
|
218
|
-
}
|
219
|
-
if (config.debug) {
|
220
|
-
console.log(oconf);
|
221
|
-
}
|
222
|
-
|
223
|
-
// add line numbers if linenums attribute is true
|
224
|
-
if (oconf.linenums === 'true') {
|
225
|
-
let lines = code.split(/(?:<br>)|(?:\n)/);
|
226
|
-
for (let i = 0; i < lines.length; i++) {
|
227
|
-
lines[i] = i + 1 + ': ' + lines[i];
|
228
|
-
}
|
229
|
-
code = lines.join('<br>');
|
230
|
-
}
|
231
|
-
|
232
|
-
return (
|
233
|
-
'<div class="terminal">' +
|
234
|
-
'<div class="terminal-fakeMenu">' +
|
235
|
-
'<div class="terminal-fakeButtons terminal-fakeClose"></div>' +
|
236
|
-
'<div class="terminal-fakeButtons terminal-fakeMinimize"></div>' +
|
237
|
-
'<div class="terminal-fakeButtons terminal-fakeZoom"></div>' +
|
238
|
-
'<span> ' +
|
239
|
-
(oconf.title ?? 'Output') +
|
240
|
-
' </span>' +
|
241
|
-
'</div>' +
|
242
|
-
'<div class="terminal-fakeScreen">' +
|
243
|
-
'<output data-lang="output">' +
|
244
|
-
code +
|
245
|
-
'</output>' +
|
246
|
-
'</div>' +
|
247
|
-
'</div>'
|
248
|
-
);
|
249
|
-
} else if (lang === 'mermaid') {
|
250
|
-
//console.log("mermaid", this, arguments[0], arguments[1]);
|
251
|
-
return (
|
252
|
-
'<div class="fsmermaid">' +
|
253
|
-
this.origin.code.apply(this, arguments) +
|
254
|
-
'</div>'
|
255
|
-
);
|
256
|
-
}
|
257
|
-
return this.origin.code.apply(this, arguments);
|
258
|
-
},
|
259
|
-
},
|
260
|
-
};
|
261
|
-
|
262
|
-
// ====================================== Cross Origin Links ======================================
|
263
|
-
|
264
|
-
// crossOriginLinks (Array) | Default: true | prevent plugin errors from affecting docsify
|
265
|
-
config.crossOriginLinks = [
|
266
|
-
// 'https://example.com/cross-origin-link'
|
267
|
-
];
|
268
|
-
|
269
|
-
/* requestHeaders (Object)
|
270
|
-
Set request resource headers for custom configurations, e.g., caching
|
271
|
-
requestHeaders: {
|
272
|
-
'x-token': 'xxx', //设置请求头
|
273
|
-
'cache-control': 'max-age=600', //设置缓存
|
274
|
-
},
|
275
|
-
*/
|
276
|
-
config.requestHeaders = {};
|
277
|
-
|
278
|
-
// ====================================== Vue ======================================
|
279
|
-
|
280
|
-
/* vueComponents (Object)
|
281
|
-
Creates and registers global Vue components with unique data per instance
|
282
|
-
Components are specified using the component name as the key with an object containing Vue options as the value.
|
283
|
-
Component data is unique for each instance and will not persist as users navigate the site.
|
284
|
-
*/
|
285
|
-
config.vueComponents = {
|
286
|
-
'button-counter': {
|
287
|
-
template: `
|
288
|
-
<button @click="count += 1">
|
289
|
-
You clicked me {{ count }} times
|
290
|
-
</button>
|
291
|
-
`,
|
292
|
-
data() {
|
293
|
-
return { count: 0 };
|
294
|
-
},
|
295
|
-
}, // <button-counter></button-counter>
|
296
|
-
};
|
297
|
-
|
298
|
-
// vueGlobalOptions (Object) | Specifies Vue options for global content, changes persist across global references
|
299
|
-
config.vueGlobalOptions = {
|
300
|
-
data() {
|
301
|
-
return {
|
302
|
-
version: '1.0.0',
|
303
|
-
};
|
304
|
-
},
|
305
|
-
};
|
306
|
-
|
307
|
-
// vueMounts (Object) | Specifies DOM elements to mount as Vue instances with unique data per instance
|
308
|
-
config.vueMounts = {
|
309
|
-
'#counter': {
|
310
|
-
data() {
|
311
|
-
return { count: 0 };
|
312
|
-
},
|
313
|
-
},
|
314
|
-
};
|
315
|
-
// ====================================== Plugins ======================================
|
316
|
-
|
317
|
-
// ~~~~~~~~~~~~~~~~~~~~~ sidebarbar ~~~~~~~~~~~~~~~~~~~~~~
|
318
|
-
config.sidebarbar = {
|
319
|
-
showVersion: true,
|
320
|
-
};
|
321
|
-
|
322
|
-
// ~~~~~~~~~~~~~~~~~~~~~ Search ~~~~~~~~~~~~~~~~~~~~~~
|
323
|
-
/* search (String|String[]|Object)
|
324
|
-
Default: false
|
325
|
-
Usage:
|
326
|
-
|
327
|
-
config. = 'auto'; //default
|
328
|
-
|
329
|
-
config.search = [
|
330
|
-
'/', // => /README.md
|
331
|
-
'/guide', // => /guide.md
|
332
|
-
'/get-started', // => /get-started.md
|
333
|
-
'/zh-cn/', // => /zh-cn/README.md
|
334
|
-
]
|
335
|
-
*/
|
336
|
-
// complete configuration parameters
|
337
|
-
config.search = {
|
338
|
-
maxAge: 86400000, // Expiration time, the default one day
|
339
|
-
paths: 'auto', // or 'auto'
|
340
|
-
placeholder: 'Type to search',
|
341
|
-
// Localization
|
342
|
-
noData: 'No Results!',
|
343
|
-
// Headline depth, 1 - 6
|
344
|
-
depth: 5,
|
345
|
-
|
346
|
-
hideOtherSidebarContent: false, // whether or not to hide other sidebar content
|
347
|
-
|
348
|
-
// To avoid search index collision
|
349
|
-
// between multiple websites under the same domain
|
350
|
-
namespace: 'fluff',
|
351
|
-
|
352
|
-
// Use different indexes for path prefixes (namespaces).
|
353
|
-
// NOTE: Only works in 'auto' mode.
|
354
|
-
//
|
355
|
-
// When initialiazing an index, we look for the first path from the sidebar.
|
356
|
-
// If it matches the prefix from the list, we switch to the corresponding index.
|
357
|
-
pathNamespaces: ['/zh-cn', '/ru-ru', '/ru-ru/v1'],
|
358
|
-
|
359
|
-
// You can provide a regexp to match prefixes. In this case,
|
360
|
-
// the matching substring will be used to identify the index
|
361
|
-
pathNamespaces: /^(\/(zh-cn|ru-ru))?(\/(v1|v2))?/,
|
362
|
-
|
363
|
-
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Custom search ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
364
|
-
|
365
|
-
// exclude (Stirng("\.html$")|String[]) | Default: '' | Exclude files from search index (.html means exclude all html files)
|
366
|
-
exclude: ['.html', '.png', '.zip'],
|
367
|
-
// debug (Boolean) | Default: false | Enable debug mode
|
368
|
-
debug: false,
|
369
|
-
};
|
370
|
-
|
371
|
-
/* docsify-copy-code
|
372
|
-
A docsify plugin that adds a button to easily copy code blocks to your clipboard.
|
373
|
-
<script src="https://unpkg.com/docsify-copy-code@2"></script>
|
374
|
-
copyCode: {
|
375
|
-
buttonText : 'Copy to clipboard',
|
376
|
-
errorText : 'Error',
|
377
|
-
successText: 'Copied'
|
378
|
-
}
|
379
|
-
|
380
|
-
copyCode: {
|
381
|
-
buttonText: {
|
382
|
-
'/zh-cn/': '点击复制',
|
383
|
-
'/' : 'Copy to clipboard'
|
384
|
-
},
|
385
|
-
errorText: {
|
386
|
-
'/zh-cn/': '错误',
|
387
|
-
'/' : 'Error'
|
388
|
-
},
|
389
|
-
successText: {
|
390
|
-
'/zh-cn/': '复制',
|
391
|
-
'/' : 'Copied'
|
392
|
-
}
|
393
|
-
}
|
394
|
-
*/
|
395
|
-
config.copyCode = {
|
396
|
-
buttonText: 'Copy to clipboard',
|
397
|
-
errorText: 'Error',
|
398
|
-
successText: 'Copied',
|
399
|
-
};
|
400
|
-
|
401
|
-
// https://jhildenbiddle.github.io/docsify-tabs/
|
402
|
-
config.tabs = {
|
403
|
-
persist: true, // default
|
404
|
-
sync: true, // default
|
405
|
-
theme: 'Material', // Classic/material/No Theme
|
406
|
-
tabComments: true, // default
|
407
|
-
tabHeadings: true, // default
|
408
|
-
};
|
409
|
-
|
410
|
-
config.latex = {
|
411
|
-
inlineMath: [
|
412
|
-
['$', '$'],
|
413
|
-
['\\(', '\\)'],
|
414
|
-
], // default
|
415
|
-
displayMath: [['$$', '$$']], // default
|
416
|
-
};
|
417
|
-
|
418
|
-
config['flexible-alerts'] = {
|
419
|
-
style: 'callout',
|
420
|
-
note: {
|
421
|
-
label: {
|
422
|
-
'/zh-cn/': '提示',
|
423
|
-
'/': 'Note',
|
424
|
-
},
|
425
|
-
},
|
426
|
-
tip: {
|
427
|
-
label: {
|
428
|
-
'/zh-cn/': '小窍门',
|
429
|
-
'/': 'Tip',
|
430
|
-
},
|
431
|
-
},
|
432
|
-
warning: {
|
433
|
-
label: {
|
434
|
-
'/zh-cn/': '注意',
|
435
|
-
'/': 'Warning',
|
436
|
-
},
|
437
|
-
},
|
438
|
-
attention: {
|
439
|
-
label: {
|
440
|
-
'/zh-cn/': '警告',
|
441
|
-
'/': 'Attention',
|
442
|
-
},
|
443
|
-
},
|
444
|
-
};
|
445
|
-
|
446
|
-
config.mermaidConfig = {
|
447
|
-
querySelector: '.mermaid',
|
448
|
-
};
|
1
|
+
// variableName (Type) | Default: defaultValue | Brief description
|
2
|
+
/* variableName (Type)
|
3
|
+
Default: defaultValue
|
4
|
+
Brief description
|
5
|
+
*/
|
6
|
+
|
7
|
+
config = {};
|
8
|
+
|
9
|
+
// ====================================== Basic ======================================
|
10
|
+
|
11
|
+
// name (String) | Website name in the sidebar, can include custom HTML for customization
|
12
|
+
config.name = 'visualify.js';
|
13
|
+
|
14
|
+
// repo (String) | Configure repository URL or username/repo for GitHub Corner widget in the top right corner
|
15
|
+
config.repo = 'https://github.com/usleolihao';
|
16
|
+
|
17
|
+
/*
|
18
|
+
config.corner = {
|
19
|
+
// the icon link url to another site
|
20
|
+
url: "https://github.com/usleolihao",
|
21
|
+
// the default preset icon in docsify-corner
|
22
|
+
//icon: "static/avatar/corner-unscreen.gif",
|
23
|
+
//background: "#091a28",
|
24
|
+
//width: 50,
|
25
|
+
//height: 50,
|
26
|
+
};
|
27
|
+
*/
|
28
|
+
|
29
|
+
/* auto2top (Boolean)
|
30
|
+
Default: false
|
31
|
+
Scrolls to the top when the route is changed
|
32
|
+
*/
|
33
|
+
config.auto2top = true;
|
34
|
+
|
35
|
+
// basePath (String) | Base path of the website. You can set it to another directory or another domain name.
|
36
|
+
// config.basePath = '/docs/';
|
37
|
+
|
38
|
+
// autoHeader (Boolean) | Default: false | prepend a header to the page before converting it to HTML.
|
39
|
+
config.autoHeader = false;
|
40
|
+
|
41
|
+
// catchPluginErrors (Boolean) | Default: true | prevent plugin errors from affecting docsify
|
42
|
+
config.catchPluginErrors = true;
|
43
|
+
|
44
|
+
/* coverpage (Boolean|String|String[]|Object)
|
45
|
+
Default: false
|
46
|
+
Activate the cover feature. If true, it will load from _coverpage.md.
|
47
|
+
*/
|
48
|
+
config.coverpage = true;
|
49
|
+
|
50
|
+
// el (String) | Default: '#app' | The DOM element to be mounted on initialization.
|
51
|
+
config.el = '#docsify';
|
52
|
+
|
53
|
+
/* executeScript (Boolean)
|
54
|
+
Default: null
|
55
|
+
Execute the script on the page. Only parses the first script tag (demo).
|
56
|
+
If Vue is detected, this is true by default.
|
57
|
+
<script>
|
58
|
+
console.log(2333)
|
59
|
+
</script>
|
60
|
+
*/
|
61
|
+
config.executeScript = true;
|
62
|
+
|
63
|
+
/* formatUpdated (String|Function)
|
64
|
+
Default: null
|
65
|
+
display the file update date through {docsify-updated} variable.
|
66
|
+
window.$docsify = {
|
67
|
+
formatUpdated: '{MM}/{DD} {HH}:{mm}',
|
68
|
+
|
69
|
+
formatUpdated: function (time) {
|
70
|
+
// ...
|
71
|
+
|
72
|
+
return time;
|
73
|
+
},
|
74
|
+
};
|
75
|
+
*/
|
76
|
+
config.formatUpdated =
|
77
|
+
'<hr>\
|
78
|
+
<footer><strong>Last modified</strong>: {MM}/{DD}/{YYYY} {HH}:{mm} <br>\
|
79
|
+
<div style="text-align: center;margin-top: 50px;">\
|
80
|
+
<span>Fluff & Stuff</a> © 2023. Power by <a href="https://docsify.js.org/#/" target="_blank">docsify</a></span>\
|
81
|
+
</div>\
|
82
|
+
</footer>';
|
83
|
+
|
84
|
+
// homepage (String) | Default: 'README.md' | serve another file as homepage
|
85
|
+
// config.homepage = "home.md"
|
86
|
+
|
87
|
+
// loadNavbar (Boolean|String) | Default: false | Loads navbar from _navbar.md if true, else from specified path
|
88
|
+
config.loadNavbar = false;
|
89
|
+
|
90
|
+
// logo (String) | Website logo in the sidebar, can be resized using CSS
|
91
|
+
config.logo = './static/logo/logo_128x128.png';
|
92
|
+
|
93
|
+
// maxLevel (Number) | Default: 6 | Maximum Table of Contents level
|
94
|
+
config.maxLevel = 3;
|
95
|
+
|
96
|
+
// mergeNavbar (Boolean) | Default: false | Navbar merges with the sidebar on smaller screens
|
97
|
+
config.mergeNavbar = true;
|
98
|
+
|
99
|
+
// noCompileLinks (Array<string>) | Skips compiling of specified links using regex patterns
|
100
|
+
config.noCompileLinks = ['/_media/', '/_social/'];
|
101
|
+
|
102
|
+
// noEmoji (Boolean) | Default: false | Disables emoji parsing and renders all emoji shorthand as text
|
103
|
+
config.noEmoji = false;
|
104
|
+
|
105
|
+
// notFoundPage (Boolean | String | Object) | Default: false | Configures 404 page display or custom 404 page path
|
106
|
+
config.notFoundPage = true;
|
107
|
+
|
108
|
+
// onlyCover (Boolean) | Default: false | Only cover page is loaded when visiting the home page
|
109
|
+
config.onlyCover = false;
|
110
|
+
|
111
|
+
// relativePath (Boolean) | Default: false | If true, links are relative to the current context
|
112
|
+
config.relativePath = true;
|
113
|
+
|
114
|
+
// routerMode (String) | Default: 'hash' | Set router mode for navigation, can be 'hash' or 'history'
|
115
|
+
config.routerMode = 'hash';
|
116
|
+
|
117
|
+
// loadSidebar (Boolean|String) | Default: false | Loads sidebar from _sidebar.md if true, else from specified path
|
118
|
+
config.loadSidebar = true;
|
119
|
+
|
120
|
+
// subMaxLevel (Number) | Default: 0 | Add table of contents
|
121
|
+
// 自定义侧边栏后默认不会再生成目录,你也可以通过设置生成目录的最大层级开启这个功能。
|
122
|
+
config.subMaxLevel = 2;
|
123
|
+
// set sidebar display level
|
124
|
+
config.sidebarDisplayLevel = 3;
|
125
|
+
|
126
|
+
// ====================================== Theme ======================================
|
127
|
+
|
128
|
+
// themeColor (String) | Customize theme color using CSS3 variables feature and polyfill in older browsers
|
129
|
+
config.themeColor = '#3F51B5';
|
130
|
+
|
131
|
+
// topMargin (Number) | Default: 0 | Add space on top when scrolling content page to align anchors with sticky-header
|
132
|
+
config.topMargin = 90;
|
133
|
+
|
134
|
+
// ====================================== Router ======================================
|
135
|
+
|
136
|
+
config.alias = {
|
137
|
+
'/.*/_navbar.md': '/_navbar.md',
|
138
|
+
'/.*/_sidebar.md': '/_sidebar.md',
|
139
|
+
// "/_contents/fluffy/_sidebar.md"
|
140
|
+
// "/_projs/_IoT/_sidebar.md"
|
141
|
+
};
|
142
|
+
|
143
|
+
// routes (Object) | Define virtual routes for dynamic content, map path to string or function returning markdown
|
144
|
+
config.routes = {
|
145
|
+
// ... existing routes ...
|
146
|
+
// Basic match w/ return string
|
147
|
+
'/foo': '# Custom Markdown',
|
148
|
+
// RegEx match w/ synchronous function
|
149
|
+
'/bar/(.*)': function (route, matched) {
|
150
|
+
return '# Custom Markdown bar ' + matched[1];
|
151
|
+
},
|
152
|
+
// RegEx match w/ asynchronous function
|
153
|
+
'/baz/(.*)': function (route, matched, next) {
|
154
|
+
// Requires `fetch` polyfill for legacy browsers (https://github.github.io/fetch/)
|
155
|
+
fetch('/api/users?id=12345')
|
156
|
+
.then(function (response) {
|
157
|
+
next(
|
158
|
+
'# Custom Markdown baz\n' +
|
159
|
+
matched[1] +
|
160
|
+
' ' +
|
161
|
+
response.json(),
|
162
|
+
);
|
163
|
+
})
|
164
|
+
.catch(function (err) {
|
165
|
+
// Handle error...
|
166
|
+
});
|
167
|
+
},
|
168
|
+
// accepts everything other than dogs (synchronous)
|
169
|
+
'/pets/(.+)': function (route, matched) {
|
170
|
+
if (matched[0] === 'dogs') {
|
171
|
+
return null;
|
172
|
+
} else {
|
173
|
+
return 'I like all pets but dogs';
|
174
|
+
}
|
175
|
+
},
|
176
|
+
|
177
|
+
// accepts everything other than cats (asynchronous)
|
178
|
+
'/pets/(.*)': function (route, matched, next) {
|
179
|
+
if (matched[0] === 'cats') {
|
180
|
+
next();
|
181
|
+
} else {
|
182
|
+
// Async task(s)...
|
183
|
+
next('I like all pets but cats');
|
184
|
+
}
|
185
|
+
},
|
186
|
+
|
187
|
+
// explicit false value to load real markdown file
|
188
|
+
'/petss/cats': function (route, matched) {
|
189
|
+
return false;
|
190
|
+
},
|
191
|
+
|
192
|
+
// generate dynamic content for other pets
|
193
|
+
'/petss/(.+)': function (route, matched) {
|
194
|
+
const pet = matched[0];
|
195
|
+
return `your pet is ${pet} (but not a cat)`;
|
196
|
+
},
|
197
|
+
};
|
198
|
+
|
199
|
+
// ====================================== Markdown ======================================
|
200
|
+
|
201
|
+
// markdown (Function) | Allows Markdown configuration and customization
|
202
|
+
config.debug = false;
|
203
|
+
|
204
|
+
config.markdown = {
|
205
|
+
renderer: {
|
206
|
+
code: function (code, lang) {
|
207
|
+
if (typeof lang === 'string' && lang.startsWith('output')) {
|
208
|
+
const conf = lang.split(',');
|
209
|
+
let oconf = {};
|
210
|
+
// iterate over the rest of the elements
|
211
|
+
for (let i = 0; i < conf.length; i++) {
|
212
|
+
//skip if not a key-value pair
|
213
|
+
if (conf[i].indexOf('=') === -1) continue;
|
214
|
+
// split the element into key and value
|
215
|
+
const [key, value] = conf[i].split('=');
|
216
|
+
// set the key-value pair in the config object
|
217
|
+
oconf[key] = value;
|
218
|
+
}
|
219
|
+
if (config.debug) {
|
220
|
+
console.log(oconf);
|
221
|
+
}
|
222
|
+
|
223
|
+
// add line numbers if linenums attribute is true
|
224
|
+
if (oconf.linenums === 'true') {
|
225
|
+
let lines = code.split(/(?:<br>)|(?:\n)/);
|
226
|
+
for (let i = 0; i < lines.length; i++) {
|
227
|
+
lines[i] = i + 1 + ': ' + lines[i];
|
228
|
+
}
|
229
|
+
code = lines.join('<br>');
|
230
|
+
}
|
231
|
+
|
232
|
+
return (
|
233
|
+
'<div class="terminal">' +
|
234
|
+
'<div class="terminal-fakeMenu">' +
|
235
|
+
'<div class="terminal-fakeButtons terminal-fakeClose"></div>' +
|
236
|
+
'<div class="terminal-fakeButtons terminal-fakeMinimize"></div>' +
|
237
|
+
'<div class="terminal-fakeButtons terminal-fakeZoom"></div>' +
|
238
|
+
'<span> ' +
|
239
|
+
(oconf.title ?? 'Output') +
|
240
|
+
' </span>' +
|
241
|
+
'</div>' +
|
242
|
+
'<div class="terminal-fakeScreen">' +
|
243
|
+
'<output data-lang="output">' +
|
244
|
+
code +
|
245
|
+
'</output>' +
|
246
|
+
'</div>' +
|
247
|
+
'</div>'
|
248
|
+
);
|
249
|
+
} else if (lang === 'mermaid') {
|
250
|
+
//console.log("mermaid", this, arguments[0], arguments[1]);
|
251
|
+
return (
|
252
|
+
'<div class="fsmermaid">' +
|
253
|
+
this.origin.code.apply(this, arguments) +
|
254
|
+
'</div>'
|
255
|
+
);
|
256
|
+
}
|
257
|
+
return this.origin.code.apply(this, arguments);
|
258
|
+
},
|
259
|
+
},
|
260
|
+
};
|
261
|
+
|
262
|
+
// ====================================== Cross Origin Links ======================================
|
263
|
+
|
264
|
+
// crossOriginLinks (Array) | Default: true | prevent plugin errors from affecting docsify
|
265
|
+
config.crossOriginLinks = [
|
266
|
+
// 'https://example.com/cross-origin-link'
|
267
|
+
];
|
268
|
+
|
269
|
+
/* requestHeaders (Object)
|
270
|
+
Set request resource headers for custom configurations, e.g., caching
|
271
|
+
requestHeaders: {
|
272
|
+
'x-token': 'xxx', //设置请求头
|
273
|
+
'cache-control': 'max-age=600', //设置缓存
|
274
|
+
},
|
275
|
+
*/
|
276
|
+
config.requestHeaders = {};
|
277
|
+
|
278
|
+
// ====================================== Vue ======================================
|
279
|
+
|
280
|
+
/* vueComponents (Object)
|
281
|
+
Creates and registers global Vue components with unique data per instance
|
282
|
+
Components are specified using the component name as the key with an object containing Vue options as the value.
|
283
|
+
Component data is unique for each instance and will not persist as users navigate the site.
|
284
|
+
*/
|
285
|
+
config.vueComponents = {
|
286
|
+
'button-counter': {
|
287
|
+
template: `
|
288
|
+
<button @click="count += 1">
|
289
|
+
You clicked me {{ count }} times
|
290
|
+
</button>
|
291
|
+
`,
|
292
|
+
data() {
|
293
|
+
return { count: 0 };
|
294
|
+
},
|
295
|
+
}, // <button-counter></button-counter>
|
296
|
+
};
|
297
|
+
|
298
|
+
// vueGlobalOptions (Object) | Specifies Vue options for global content, changes persist across global references
|
299
|
+
config.vueGlobalOptions = {
|
300
|
+
data() {
|
301
|
+
return {
|
302
|
+
version: '1.0.0',
|
303
|
+
};
|
304
|
+
},
|
305
|
+
};
|
306
|
+
|
307
|
+
// vueMounts (Object) | Specifies DOM elements to mount as Vue instances with unique data per instance
|
308
|
+
config.vueMounts = {
|
309
|
+
'#counter': {
|
310
|
+
data() {
|
311
|
+
return { count: 0 };
|
312
|
+
},
|
313
|
+
},
|
314
|
+
};
|
315
|
+
// ====================================== Plugins ======================================
|
316
|
+
|
317
|
+
// ~~~~~~~~~~~~~~~~~~~~~ sidebarbar ~~~~~~~~~~~~~~~~~~~~~~
|
318
|
+
config.sidebarbar = {
|
319
|
+
showVersion: true,
|
320
|
+
};
|
321
|
+
|
322
|
+
// ~~~~~~~~~~~~~~~~~~~~~ Search ~~~~~~~~~~~~~~~~~~~~~~
|
323
|
+
/* search (String|String[]|Object)
|
324
|
+
Default: false
|
325
|
+
Usage:
|
326
|
+
|
327
|
+
config. = 'auto'; //default
|
328
|
+
|
329
|
+
config.search = [
|
330
|
+
'/', // => /README.md
|
331
|
+
'/guide', // => /guide.md
|
332
|
+
'/get-started', // => /get-started.md
|
333
|
+
'/zh-cn/', // => /zh-cn/README.md
|
334
|
+
]
|
335
|
+
*/
|
336
|
+
// complete configuration parameters
|
337
|
+
config.search = {
|
338
|
+
maxAge: 86400000, // Expiration time, the default one day
|
339
|
+
paths: 'auto', // or 'auto'
|
340
|
+
placeholder: 'Type to search',
|
341
|
+
// Localization
|
342
|
+
noData: 'No Results!',
|
343
|
+
// Headline depth, 1 - 6
|
344
|
+
depth: 5,
|
345
|
+
|
346
|
+
hideOtherSidebarContent: false, // whether or not to hide other sidebar content
|
347
|
+
|
348
|
+
// To avoid search index collision
|
349
|
+
// between multiple websites under the same domain
|
350
|
+
namespace: 'fluff',
|
351
|
+
|
352
|
+
// Use different indexes for path prefixes (namespaces).
|
353
|
+
// NOTE: Only works in 'auto' mode.
|
354
|
+
//
|
355
|
+
// When initialiazing an index, we look for the first path from the sidebar.
|
356
|
+
// If it matches the prefix from the list, we switch to the corresponding index.
|
357
|
+
pathNamespaces: ['/zh-cn', '/ru-ru', '/ru-ru/v1'],
|
358
|
+
|
359
|
+
// You can provide a regexp to match prefixes. In this case,
|
360
|
+
// the matching substring will be used to identify the index
|
361
|
+
pathNamespaces: /^(\/(zh-cn|ru-ru))?(\/(v1|v2))?/,
|
362
|
+
|
363
|
+
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Custom search ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
364
|
+
|
365
|
+
// exclude (Stirng("\.html$")|String[]) | Default: '' | Exclude files from search index (.html means exclude all html files)
|
366
|
+
exclude: ['.html', '.png', '.zip'],
|
367
|
+
// debug (Boolean) | Default: false | Enable debug mode
|
368
|
+
debug: false,
|
369
|
+
};
|
370
|
+
|
371
|
+
/* docsify-copy-code
|
372
|
+
A docsify plugin that adds a button to easily copy code blocks to your clipboard.
|
373
|
+
<script src="https://unpkg.com/docsify-copy-code@2"></script>
|
374
|
+
copyCode: {
|
375
|
+
buttonText : 'Copy to clipboard',
|
376
|
+
errorText : 'Error',
|
377
|
+
successText: 'Copied'
|
378
|
+
}
|
379
|
+
|
380
|
+
copyCode: {
|
381
|
+
buttonText: {
|
382
|
+
'/zh-cn/': '点击复制',
|
383
|
+
'/' : 'Copy to clipboard'
|
384
|
+
},
|
385
|
+
errorText: {
|
386
|
+
'/zh-cn/': '错误',
|
387
|
+
'/' : 'Error'
|
388
|
+
},
|
389
|
+
successText: {
|
390
|
+
'/zh-cn/': '复制',
|
391
|
+
'/' : 'Copied'
|
392
|
+
}
|
393
|
+
}
|
394
|
+
*/
|
395
|
+
config.copyCode = {
|
396
|
+
buttonText: 'Copy to clipboard',
|
397
|
+
errorText: 'Error',
|
398
|
+
successText: 'Copied',
|
399
|
+
};
|
400
|
+
|
401
|
+
// https://jhildenbiddle.github.io/docsify-tabs/
|
402
|
+
config.tabs = {
|
403
|
+
persist: true, // default
|
404
|
+
sync: true, // default
|
405
|
+
theme: 'Material', // Classic/material/No Theme
|
406
|
+
tabComments: true, // default
|
407
|
+
tabHeadings: true, // default
|
408
|
+
};
|
409
|
+
|
410
|
+
config.latex = {
|
411
|
+
inlineMath: [
|
412
|
+
['$', '$'],
|
413
|
+
['\\(', '\\)'],
|
414
|
+
], // default
|
415
|
+
displayMath: [['$$', '$$']], // default
|
416
|
+
};
|
417
|
+
|
418
|
+
config['flexible-alerts'] = {
|
419
|
+
style: 'callout',
|
420
|
+
note: {
|
421
|
+
label: {
|
422
|
+
'/zh-cn/': '提示',
|
423
|
+
'/': 'Note',
|
424
|
+
},
|
425
|
+
},
|
426
|
+
tip: {
|
427
|
+
label: {
|
428
|
+
'/zh-cn/': '小窍门',
|
429
|
+
'/': 'Tip',
|
430
|
+
},
|
431
|
+
},
|
432
|
+
warning: {
|
433
|
+
label: {
|
434
|
+
'/zh-cn/': '注意',
|
435
|
+
'/': 'Warning',
|
436
|
+
},
|
437
|
+
},
|
438
|
+
attention: {
|
439
|
+
label: {
|
440
|
+
'/zh-cn/': '警告',
|
441
|
+
'/': 'Attention',
|
442
|
+
},
|
443
|
+
},
|
444
|
+
};
|
445
|
+
|
446
|
+
config.mermaidConfig = {
|
447
|
+
querySelector: '.mermaid',
|
448
|
+
};
|