@jupyterlab/markedparser-extension 4.0.0-alpha.8 → 4.0.0-beta.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/lib/index.js +20 -26
- package/lib/index.js.map +1 -1
- package/package.json +10 -8
- package/src/index.ts +90 -0
- package/style/index.css +1 -1
- package/style/index.js +1 -1
package/lib/index.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* @packageDocumentation
|
|
7
7
|
* @module markedparser-extension
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
9
|
+
import { IEditorLanguageRegistry } from '@jupyterlab/codemirror';
|
|
10
10
|
import { IMarkdownParser } from '@jupyterlab/rendermime';
|
|
11
11
|
import { marked } from 'marked';
|
|
12
12
|
/**
|
|
@@ -16,8 +16,9 @@ const plugin = {
|
|
|
16
16
|
id: '@jupyterlab/markedparser-extension:plugin',
|
|
17
17
|
autoStart: true,
|
|
18
18
|
provides: IMarkdownParser,
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
requires: [IEditorLanguageRegistry],
|
|
20
|
+
activate: (app, languages) => {
|
|
21
|
+
Private.initializeMarked(languages);
|
|
21
22
|
return {
|
|
22
23
|
render: (content) => new Promise((resolve, reject) => {
|
|
23
24
|
marked(content, (err, content) => {
|
|
@@ -39,7 +40,7 @@ export default plugin;
|
|
|
39
40
|
var Private;
|
|
40
41
|
(function (Private) {
|
|
41
42
|
let markedInitialized = false;
|
|
42
|
-
function initializeMarked() {
|
|
43
|
+
function initializeMarked(languages) {
|
|
43
44
|
if (markedInitialized) {
|
|
44
45
|
return;
|
|
45
46
|
}
|
|
@@ -50,7 +51,7 @@ var Private;
|
|
|
50
51
|
gfm: true,
|
|
51
52
|
sanitize: false,
|
|
52
53
|
// breaks: true; We can't use GFM breaks as it causes problems with tables
|
|
53
|
-
langPrefix: `
|
|
54
|
+
langPrefix: `language-`,
|
|
54
55
|
highlight: (code, lang, callback) => {
|
|
55
56
|
const cb = (err, code) => {
|
|
56
57
|
if (callback) {
|
|
@@ -62,28 +63,21 @@ var Private;
|
|
|
62
63
|
// no language, no highlight
|
|
63
64
|
return cb(null, code);
|
|
64
65
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return cb(null, code);
|
|
71
|
-
}
|
|
72
|
-
try {
|
|
73
|
-
Mode.run(code, spec.mime, el);
|
|
66
|
+
const el = document.createElement('div');
|
|
67
|
+
try {
|
|
68
|
+
languages
|
|
69
|
+
.highlight(code, languages.findBest(lang), el)
|
|
70
|
+
.then(() => {
|
|
74
71
|
return cb(null, el.innerHTML);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
return cb(null, code);
|
|
85
|
-
});
|
|
86
|
-
return code;
|
|
72
|
+
})
|
|
73
|
+
.catch(reason => {
|
|
74
|
+
return cb(reason, code);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
console.error(`Failed to highlight ${lang} code`, err);
|
|
79
|
+
return cb(err, code);
|
|
80
|
+
}
|
|
87
81
|
}
|
|
88
82
|
});
|
|
89
83
|
}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;+EAG+E;AAC/E;;;GAGG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;+EAG+E;AAC/E;;;GAGG;AAMH,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;GAEG;AACH,MAAM,MAAM,GAA2C;IACrD,EAAE,EAAE,2CAA2C;IAC/C,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,eAAe;IACzB,QAAQ,EAAE,CAAC,uBAAuB,CAAC;IACnC,QAAQ,EAAE,CAAC,GAAoB,EAAE,SAAkC,EAAE,EAAE;QACrE,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACpC,OAAO;YACL,MAAM,EAAE,CAAC,OAAe,EAAmB,EAAE,CAC3C,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACtC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,OAAe,EAAE,EAAE;oBAC5C,IAAI,GAAG,EAAE;wBACP,MAAM,CAAC,GAAG,CAAC,CAAC;qBACb;yBAAM;wBACL,OAAO,CAAC,OAAO,CAAC,CAAC;qBAClB;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;SACL,CAAC;IACJ,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,eAAe,MAAM,CAAC;AAEtB,IAAU,OAAO,CA0ChB;AA1CD,WAAU,OAAO;IACf,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,SAAgB,gBAAgB,CAAC,SAAkC;QACjE,IAAI,iBAAiB,EAAE;YACrB,OAAO;SACR;aAAM;YACL,iBAAiB,GAAG,IAAI,CAAC;SAC1B;QAED,MAAM,CAAC,UAAU,CAAC;YAChB,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,KAAK;YACf,0EAA0E;YAC1E,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;gBAClC,MAAM,EAAE,GAAG,CAAC,GAAiB,EAAE,IAAY,EAAE,EAAE;oBAC7C,IAAI,QAAQ,EAAE;wBACZ,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;qBACrB;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC;gBACF,IAAI,CAAC,IAAI,EAAE;oBACT,4BAA4B;oBAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;iBACvB;gBACD,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI;oBACF,SAAS;yBACN,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;yBAC7C,IAAI,CAAC,GAAG,EAAE;wBACT,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;oBAChC,CAAC,CAAC;yBACD,KAAK,CAAC,MAAM,CAAC,EAAE;wBACd,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBAC1B,CAAC,CAAC,CAAC;iBACN;gBAAC,OAAO,GAAG,EAAE;oBACZ,OAAO,CAAC,KAAK,CAAC,uBAAuB,IAAI,OAAO,EAAE,GAAG,CAAC,CAAC;oBACvD,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;iBACtB;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAvCe,wBAAgB,mBAuC/B,CAAA;AACH,CAAC,EA1CS,OAAO,KAAP,OAAO,QA0ChB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jupyterlab/markedparser-extension",
|
|
3
|
-
"version": "4.0.0-
|
|
3
|
+
"version": "4.0.0-beta.0",
|
|
4
4
|
"description": "JupyterLab - Markdown parser provider",
|
|
5
5
|
"homepage": "https://github.com/jupyterlab/jupyterlab",
|
|
6
6
|
"bugs": {
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
"files": [
|
|
26
26
|
"lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
|
|
27
27
|
"style/index.css",
|
|
28
|
-
"style/index.js"
|
|
28
|
+
"style/index.js",
|
|
29
|
+
"src/**/*.{ts,tsx}"
|
|
29
30
|
],
|
|
30
31
|
"scripts": {
|
|
31
32
|
"build": "tsc -b",
|
|
@@ -34,15 +35,16 @@
|
|
|
34
35
|
"watch": "tsc -b --watch"
|
|
35
36
|
},
|
|
36
37
|
"dependencies": {
|
|
37
|
-
"@jupyterlab/application": "^4.0.0-
|
|
38
|
-
"@jupyterlab/codemirror": "^4.0.0-
|
|
39
|
-
"@jupyterlab/rendermime": "^4.0.0-
|
|
40
|
-
"marked": "^4.0.
|
|
38
|
+
"@jupyterlab/application": "^4.0.0-beta.0",
|
|
39
|
+
"@jupyterlab/codemirror": "^4.0.0-beta.0",
|
|
40
|
+
"@jupyterlab/rendermime": "^4.0.0-beta.0",
|
|
41
|
+
"marked": "^4.0.17"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {
|
|
43
|
-
"@types/marked": "^4.0.
|
|
44
|
+
"@types/marked": "^4.0.3",
|
|
44
45
|
"rimraf": "~3.0.0",
|
|
45
|
-
"
|
|
46
|
+
"typedoc": "~0.23.25",
|
|
47
|
+
"typescript": "~5.0.2"
|
|
46
48
|
},
|
|
47
49
|
"publishConfig": {
|
|
48
50
|
"access": "public"
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/* -----------------------------------------------------------------------------
|
|
2
|
+
| Copyright (c) Jupyter Development Team.
|
|
3
|
+
| Distributed under the terms of the Modified BSD License.
|
|
4
|
+
|----------------------------------------------------------------------------*/
|
|
5
|
+
/**
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module markedparser-extension
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import {
|
|
11
|
+
JupyterFrontEnd,
|
|
12
|
+
JupyterFrontEndPlugin
|
|
13
|
+
} from '@jupyterlab/application';
|
|
14
|
+
import { IEditorLanguageRegistry } from '@jupyterlab/codemirror';
|
|
15
|
+
import { IMarkdownParser } from '@jupyterlab/rendermime';
|
|
16
|
+
import { marked } from 'marked';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The markdown parser plugin.
|
|
20
|
+
*/
|
|
21
|
+
const plugin: JupyterFrontEndPlugin<IMarkdownParser> = {
|
|
22
|
+
id: '@jupyterlab/markedparser-extension:plugin',
|
|
23
|
+
autoStart: true,
|
|
24
|
+
provides: IMarkdownParser,
|
|
25
|
+
requires: [IEditorLanguageRegistry],
|
|
26
|
+
activate: (app: JupyterFrontEnd, languages: IEditorLanguageRegistry) => {
|
|
27
|
+
Private.initializeMarked(languages);
|
|
28
|
+
return {
|
|
29
|
+
render: (content: string): Promise<string> =>
|
|
30
|
+
new Promise<string>((resolve, reject) => {
|
|
31
|
+
marked(content, (err: any, content: string) => {
|
|
32
|
+
if (err) {
|
|
33
|
+
reject(err);
|
|
34
|
+
} else {
|
|
35
|
+
resolve(content);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
})
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Export the plugin as default.
|
|
45
|
+
*/
|
|
46
|
+
export default plugin;
|
|
47
|
+
|
|
48
|
+
namespace Private {
|
|
49
|
+
let markedInitialized = false;
|
|
50
|
+
export function initializeMarked(languages: IEditorLanguageRegistry): void {
|
|
51
|
+
if (markedInitialized) {
|
|
52
|
+
return;
|
|
53
|
+
} else {
|
|
54
|
+
markedInitialized = true;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
marked.setOptions({
|
|
58
|
+
gfm: true,
|
|
59
|
+
sanitize: false,
|
|
60
|
+
// breaks: true; We can't use GFM breaks as it causes problems with tables
|
|
61
|
+
langPrefix: `language-`,
|
|
62
|
+
highlight: (code, lang, callback) => {
|
|
63
|
+
const cb = (err: Error | null, code: string) => {
|
|
64
|
+
if (callback) {
|
|
65
|
+
callback(err, code);
|
|
66
|
+
}
|
|
67
|
+
return code;
|
|
68
|
+
};
|
|
69
|
+
if (!lang) {
|
|
70
|
+
// no language, no highlight
|
|
71
|
+
return cb(null, code);
|
|
72
|
+
}
|
|
73
|
+
const el = document.createElement('div');
|
|
74
|
+
try {
|
|
75
|
+
languages
|
|
76
|
+
.highlight(code, languages.findBest(lang), el)
|
|
77
|
+
.then(() => {
|
|
78
|
+
return cb(null, el.innerHTML);
|
|
79
|
+
})
|
|
80
|
+
.catch(reason => {
|
|
81
|
+
return cb(reason, code);
|
|
82
|
+
});
|
|
83
|
+
} catch (err) {
|
|
84
|
+
console.error(`Failed to highlight ${lang} code`, err);
|
|
85
|
+
return cb(err, code);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
package/style/index.css
CHANGED
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
|----------------------------------------------------------------------------*/
|
|
5
5
|
|
|
6
6
|
/* This file was auto-generated by ensurePackage() in @jupyterlab/buildutils */
|
|
7
|
-
@import url('~@jupyterlab/codemirror/style/index.css');
|
|
8
7
|
@import url('~@jupyterlab/rendermime/style/index.css');
|
|
9
8
|
@import url('~@jupyterlab/application/style/index.css');
|
|
9
|
+
@import url('~@jupyterlab/codemirror/style/index.css');
|
package/style/index.js
CHANGED
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
|----------------------------------------------------------------------------*/
|
|
5
5
|
|
|
6
6
|
/* This file was auto-generated by ensurePackage() in @jupyterlab/buildutils */
|
|
7
|
-
import '@jupyterlab/codemirror/style/index.js';
|
|
8
7
|
import '@jupyterlab/rendermime/style/index.js';
|
|
9
8
|
import '@jupyterlab/application/style/index.js';
|
|
9
|
+
import '@jupyterlab/codemirror/style/index.js';
|