@opensumi/ide-markdown 2.21.9 → 2.21.10-next-1671764634.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.
@@ -1 +1 @@
1
- {"version":3,"file":"contribution.js","sourceRoot":"","sources":["../../src/browser/contribution.ts"],"names":[],"mappings":";;;;AAAA,qCAAyC;AACzC,iEAA+D;AAC/D,+DAAsE;AACtE,8DAAsG;AAEtG,sCAA6C;AAE7C,uDAA4D;AAE/C,QAAA,4BAA4B,GAAG,8BAA8B,CAAC;AAG3E,IAAa,kCAAkC,GAA/C,MAAa,kCAAkC;IAO7C,uBAAuB,CAAC,iBAA0C;QAChE,iBAAiB,CAAC,uBAAuB,CAAC;YACxC,GAAG,EAAE,oCAA4B;YACjC,SAAS,EAAE,yCAAuB;YAClC,MAAM,EAAE,yBAAO,CAAC,IAAI;SACrB,CAAC,CAAC;QAEH,iBAAiB,CAAC,+BAA+B,CAAC,yBAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;YACpF,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,EAAE;gBACnC,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,WAAW;oBACjB,WAAW,EAAE,oCAA4B;oBACzC,KAAK,EAAE,IAAA,0BAAQ,EAAC,wBAAwB,CAAC;oBACzC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAU,mCAAmC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3F,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAvBC;IADC,IAAA,cAAS,EAAC,yBAAgB,CAAC;;2EACM;AAGlC;IADC,IAAA,cAAS,EAAC,oCAAiB,CAAC;;6EACQ;AAL1B,kCAAkC;IAD9C,IAAA,wBAAM,EAAC,mCAAyB,CAAC;GACrB,kCAAkC,CAyB9C;AAzBY,gFAAkC"}
1
+ {"version":3,"file":"contribution.js","sourceRoot":"","sources":["../../src/browser/contribution.ts"],"names":[],"mappings":";;;;AAAA,qCAAyC;AACzC,iEAA+D;AAC/D,+DAAsE;AACtE,8DAAsG;AAEtG,sCAA6C;AAE7C,uDAA4D;AAE/C,QAAA,4BAA4B,GAAG,8BAA8B,CAAC;AAGpE,IAAM,kCAAkC,GAAxC,MAAM,kCAAkC;IAO7C,uBAAuB,CAAC,iBAA0C;QAChE,iBAAiB,CAAC,uBAAuB,CAAC;YACxC,GAAG,EAAE,oCAA4B;YACjC,SAAS,EAAE,yCAAuB;YAClC,MAAM,EAAE,yBAAO,CAAC,IAAI;SACrB,CAAC,CAAC;QAEH,iBAAiB,CAAC,+BAA+B,CAAC,yBAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;YACpF,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,EAAE;gBACnC,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,WAAW;oBACjB,WAAW,EAAE,oCAA4B;oBACzC,KAAK,EAAE,IAAA,0BAAQ,EAAC,wBAAwB,CAAC;oBACzC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAU,mCAAmC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3F,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAxBC;IAAC,IAAA,cAAS,EAAC,yBAAgB,CAAC;;2EACM;AAElC;IAAC,IAAA,cAAS,EAAC,oCAAiB,CAAC;;6EACQ;AAL1B,kCAAkC;IAD9C,IAAA,wBAAM,EAAC,mCAAyB,CAAC;GACrB,kCAAkC,CAyB9C;AAzBY,gFAAkC"}
@@ -1 +1 @@
1
- {"version":3,"file":"editor.markdown.d.ts","sourceRoot":"","sources":["../../src/browser/editor.markdown.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAA+B,MAAM,kCAAkC,CAAC;AAIrG,eAAO,MAAM,uBAAuB,EAAE,oBAAoB,CAAC,GAAG,CAqD7D,CAAC"}
1
+ {"version":3,"file":"editor.markdown.d.ts","sourceRoot":"","sources":["../../src/browser/editor.markdown.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAA+B,MAAM,kCAAkC,CAAC;AAIrG,eAAO,MAAM,uBAAuB,EAAE,oBAAoB,CAAC,GAAG,CA2D7D,CAAC"}
@@ -34,7 +34,7 @@ const MarkdownEditorComponent = ({ resource }) => {
34
34
  if (container) {
35
35
  // container可能已不存在
36
36
  markdownService
37
- .previewMarkdownInContainer(documentRef.instance.getText(), container, cancellation.token, onUpdate.event)
37
+ .previewMarkdownInContainer(documentRef.instance.getText(), container, cancellation.token, undefined, onUpdate.event)
38
38
  .then((r) => {
39
39
  disposer.addDispose(r);
40
40
  });
@@ -1 +1 @@
1
- {"version":3,"file":"editor.markdown.js","sourceRoot":"","sources":["../../src/browser/editor.markdown.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAE1B,iEAAyG;AACzG,8DAAqG;AAErG,sCAA6C;AAEtC,MAAM,uBAAuB,GAA8B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACjF,IAAI,SAAS,GAAuB,IAAI,CAAC;IACzC,MAAM,eAAe,GAAqB,IAAA,gCAAa,EAAC,yBAAgB,CAAC,CAAC;IAC1E,MAAM,eAAe,GAAgC,IAAA,gCAAa,EAAC,qCAA2B,CAAC,CAAC;IAEhG,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,SAAS,EAAE;YACb,MAAM,QAAQ,GAAG,IAAI,6BAAU,EAAE,CAAC;YAClC,MAAM,YAAY,GAAG,IAAI,0CAAuB,EAAE,CAAC;YACnD,QAAQ,CAAC,UAAU,CAAC;gBAClB,OAAO,EAAE,GAAG,EAAE;oBACZ,YAAY,CAAC,MAAM,EAAE,CAAC;gBACxB,CAAC;aACF,CAAC,CAAC;YACH,eAAe,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;gBAC1F,IAAI,YAAY,CAAC,KAAK,CAAC,uBAAuB,EAAE;oBAC9C,IAAI,WAAW,EAAE;wBACf,WAAW,CAAC,OAAO,EAAE,CAAC;qBACvB;oBACD,OAAO;iBACR;gBACD,MAAM,QAAQ,GAAG,IAAI,0BAAO,EAAU,CAAC;gBACvC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC9B,QAAQ,CAAC,UAAU,CACjB,WAAW,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC7D,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChD,CAAC,CAAC,CACH,CAAC;gBACF,IAAI,SAAS,EAAE;oBACb,kBAAkB;oBAClB,eAAe;yBACZ,0BAA0B,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,SAAU,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;yBAC1G,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;wBACV,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBACzB,CAAC,CAAC,CAAC;iBACN;gBACD,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YAEH,OAAO,GAAG,EAAE;gBACV,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,CAAC,CAAC;SACH;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,uCACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;YACV,SAAS,GAAG,EAAE,CAAC;QACjB,CAAC,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GACpB,CACR,CAAC;AACJ,CAAC,CAAC;AArDW,QAAA,uBAAuB,2BAqDlC"}
1
+ {"version":3,"file":"editor.markdown.js","sourceRoot":"","sources":["../../src/browser/editor.markdown.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAE1B,iEAAyG;AACzG,8DAAqG;AAErG,sCAA6C;AAEtC,MAAM,uBAAuB,GAA8B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACjF,IAAI,SAAS,GAAuB,IAAI,CAAC;IACzC,MAAM,eAAe,GAAqB,IAAA,gCAAa,EAAC,yBAAgB,CAAC,CAAC;IAC1E,MAAM,eAAe,GAAgC,IAAA,gCAAa,EAAC,qCAA2B,CAAC,CAAC;IAEhG,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,SAAS,EAAE;YACb,MAAM,QAAQ,GAAG,IAAI,6BAAU,EAAE,CAAC;YAClC,MAAM,YAAY,GAAG,IAAI,0CAAuB,EAAE,CAAC;YACnD,QAAQ,CAAC,UAAU,CAAC;gBAClB,OAAO,EAAE,GAAG,EAAE;oBACZ,YAAY,CAAC,MAAM,EAAE,CAAC;gBACxB,CAAC;aACF,CAAC,CAAC;YACH,eAAe,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;gBAC1F,IAAI,YAAY,CAAC,KAAK,CAAC,uBAAuB,EAAE;oBAC9C,IAAI,WAAW,EAAE;wBACf,WAAW,CAAC,OAAO,EAAE,CAAC;qBACvB;oBACD,OAAO;iBACR;gBACD,MAAM,QAAQ,GAAG,IAAI,0BAAO,EAAU,CAAC;gBACvC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC9B,QAAQ,CAAC,UAAU,CACjB,WAAW,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC7D,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChD,CAAC,CAAC,CACH,CAAC;gBACF,IAAI,SAAS,EAAE;oBACb,kBAAkB;oBAClB,eAAe;yBACZ,0BAA0B,CACzB,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,EAC9B,SAAU,EACV,YAAY,CAAC,KAAK,EAClB,SAAS,EACT,QAAQ,CAAC,KAAK,CACf;yBACA,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;wBACV,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBACzB,CAAC,CAAC,CAAC;iBACN;gBACD,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YAEH,OAAO,GAAG,EAAE;gBACV,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,CAAC,CAAC;SACH;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,uCACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;YACV,SAAS,GAAG,EAAE,CAAC;QACjB,CAAC,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GACpB,CACR,CAAC;AACJ,CAAC,CAAC;AA3DW,QAAA,uBAAuB,2BA2DlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";;;;AAAA,qCAAoD;AACpD,iEAA2D;AAE3D,sCAA6C;AAE7C,yDAAyD;AACzD,qDAA6C;AAApC,2GAAA,QAAQ,OAAA;AAEjB,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,gCAAa;IAAjD;;QACE,cAAS,GAAe;YACtB;gBACE,KAAK,EAAE,yBAAgB;gBACvB,QAAQ,EAAE,sCAAmB;aAC9B;SACF,CAAC;IACJ,CAAC;CAAA,CAAA;AAPY,cAAc;IAD1B,IAAA,eAAU,GAAE;GACA,cAAc,CAO1B;AAPY,wCAAc"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";;;;AAAA,qCAAoD;AACpD,iEAA2D;AAE3D,sCAA6C;AAE7C,yDAAyD;AACzD,qDAA6C;AAApC,2GAAA,QAAQ,OAAA;AAEV,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,gCAAa;IAA1C;;QACL,cAAS,GAAe;YACtB;gBACE,KAAK,EAAE,yBAAgB;gBACvB,QAAQ,EAAE,sCAAmB;aAC9B;SACF,CAAC;IACJ,CAAC;CAAA,CAAA;AAPY,cAAc;IAD1B,IAAA,eAAU,GAAE;GACA,cAAc,CAO1B;AAPY,wCAAc"}
@@ -1,7 +1,9 @@
1
1
  /// <reference types="react" />
2
+ import { IMarkedOptions } from '@opensumi/ide-components/lib/utils';
2
3
  import { URI } from '@opensumi/ide-core-browser';
3
- export declare const Markdown: ({ content, onLoaded, onLinkClick, }: {
4
+ export declare const Markdown: ({ content, options, onLoaded, onLinkClick, }: {
4
5
  content: string;
6
+ options?: import("marked").marked.MarkedOptions | undefined;
5
7
  onLoaded?: (() => void) | undefined;
6
8
  onLinkClick?: ((uri: URI) => void) | undefined;
7
9
  }) => JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-widget.d.ts","sourceRoot":"","sources":["../../src/browser/markdown-widget.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAsD,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAIrG,eAAO,MAAM,QAAQ;aAKV,MAAM;sBACE,IAAI;yBACD,GAAG,KAAK,IAAI;iBAqCjC,CAAC"}
1
+ {"version":3,"file":"markdown-widget.d.ts","sourceRoot":"","sources":["../../src/browser/markdown-widget.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAsD,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAIrG,eAAO,MAAM,QAAQ;aAMV,MAAM;;sBAEE,IAAI;yBACD,GAAG,KAAK,IAAI;iBAqCjC,CAAC"}
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
6
  const ide_core_browser_1 = require("@opensumi/ide-core-browser");
7
7
  const common_1 = require("../common");
8
- const Markdown = ({ content, onLoaded, onLinkClick, }) => {
8
+ const Markdown = ({ content, options, onLoaded, onLinkClick, }) => {
9
9
  let container = null;
10
10
  const markdownService = (0, ide_core_browser_1.useInjectable)(common_1.IMarkdownService);
11
11
  react_1.default.useEffect(() => {
@@ -18,7 +18,7 @@ const Markdown = ({ content, onLoaded, onLinkClick, }) => {
18
18
  },
19
19
  });
20
20
  markdownService
21
- .previewMarkdownInContainer(content, container, cancellation.token, undefined, onLinkClick)
21
+ .previewMarkdownInContainer(content, container, cancellation.token, options, undefined, onLinkClick)
22
22
  .then((r) => {
23
23
  disposer.addDispose(r);
24
24
  if (onLoaded) {
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-widget.js","sourceRoot":"","sources":["../../src/browser/markdown-widget.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAE1B,iEAAqG;AAErG,sCAA6C;AAEtC,MAAM,QAAQ,GAAG,CAAC,EACvB,OAAO,EACP,QAAQ,EACR,WAAW,GAKZ,EAAE,EAAE;IACH,IAAI,SAAS,GAAuB,IAAI,CAAC;IACzC,MAAM,eAAe,GAAqB,IAAA,gCAAa,EAAC,yBAAgB,CAAC,CAAC;IAE1E,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,SAAS,EAAE;YACb,MAAM,QAAQ,GAAG,IAAI,6BAAU,EAAE,CAAC;YAClC,MAAM,YAAY,GAAG,IAAI,0CAAuB,EAAE,CAAC;YACnD,QAAQ,CAAC,UAAU,CAAC;gBAClB,OAAO,EAAE,GAAG,EAAE;oBACZ,YAAY,CAAC,MAAM,EAAE,CAAC;gBACxB,CAAC;aACF,CAAC,CAAC;YACH,eAAe;iBACZ,0BAA0B,CAAC,OAAO,EAAE,SAAU,EAAE,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC;iBAC3F,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACV,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,QAAQ,EAAE;oBACZ,QAAQ,EAAE,CAAC;iBACZ;YACH,CAAC,CAAC,CAAC;YAEL,OAAO,GAAG,EAAE;gBACV,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,CAAC,CAAC;SACH;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,uCACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;YACV,SAAS,GAAG,EAAE,CAAC;QACjB,CAAC,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GACpB,CACR,CAAC;AACJ,CAAC,CAAC;AA5CW,QAAA,QAAQ,YA4CnB"}
1
+ {"version":3,"file":"markdown-widget.js","sourceRoot":"","sources":["../../src/browser/markdown-widget.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAG1B,iEAAqG;AAErG,sCAA6C;AAEtC,MAAM,QAAQ,GAAG,CAAC,EACvB,OAAO,EACP,OAAO,EACP,QAAQ,EACR,WAAW,GAMZ,EAAE,EAAE;IACH,IAAI,SAAS,GAAuB,IAAI,CAAC;IACzC,MAAM,eAAe,GAAqB,IAAA,gCAAa,EAAC,yBAAgB,CAAC,CAAC;IAE1E,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,SAAS,EAAE;YACb,MAAM,QAAQ,GAAG,IAAI,6BAAU,EAAE,CAAC;YAClC,MAAM,YAAY,GAAG,IAAI,0CAAuB,EAAE,CAAC;YACnD,QAAQ,CAAC,UAAU,CAAC;gBAClB,OAAO,EAAE,GAAG,EAAE;oBACZ,YAAY,CAAC,MAAM,EAAE,CAAC;gBACxB,CAAC;aACF,CAAC,CAAC;YACH,eAAe;iBACZ,0BAA0B,CAAC,OAAO,EAAE,SAAU,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC;iBACpG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACV,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,QAAQ,EAAE;oBACZ,QAAQ,EAAE,CAAC;iBACZ;YACH,CAAC,CAAC,CAAC;YAEL,OAAO,GAAG,EAAE;gBACV,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,CAAC,CAAC;SACH;IACH,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,uCACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;YACV,SAAS,GAAG,EAAE,CAAC;QACjB,CAAC,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GACpB,CACR,CAAC;AACJ,CAAC,CAAC;AA9CW,QAAA,QAAQ,YA8CnB"}
@@ -1,3 +1,4 @@
1
+ import { IMarkedOptions } from '@opensumi/ide-components/lib/utils';
1
2
  import { IDisposable, CancellationToken, Event, URI } from '@opensumi/ide-core-browser';
2
3
  import { IWebviewService } from '@opensumi/ide-webview';
3
4
  import { IMarkdownService } from '../common';
@@ -5,7 +6,7 @@ export declare class MarkdownServiceImpl implements IMarkdownService {
5
6
  webviewService: IWebviewService;
6
7
  private readonly openerService;
7
8
  private isSupportedLink;
8
- previewMarkdownInContainer(content: string, container: HTMLElement, cancellationToken: CancellationToken, onUpdate?: Event<string>, onLinkClick?: (uri: URI) => void): Promise<IDisposable>;
9
- getBody(content: string): Promise<string>;
9
+ previewMarkdownInContainer(content: string, container: HTMLElement, cancellationToken: CancellationToken, options?: IMarkedOptions, onUpdate?: Event<string>, onLinkClick?: (uri: URI) => void): Promise<IDisposable>;
10
+ getBody(content: string, options: IMarkedOptions | undefined): Promise<string>;
10
11
  }
11
12
  //# sourceMappingURL=markdown.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.service.d.ts","sourceRoot":"","sources":["../../src/browser/markdown.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAc,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAkB,MAAM,4BAA4B,CAAC;AAEpH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAI7C,qBACa,mBAAoB,YAAW,gBAAgB;IAE1D,cAAc,EAAE,eAAe,CAAC;IAGhC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAG/C,OAAO,CAAC,eAAe;IAIjB,0BAA0B,CAC9B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,WAAW,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EACxB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAC/B,OAAO,CAAC,WAAW,CAAC;IA2CjB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAUhD"}
1
+ {"version":3,"file":"markdown.service.d.ts","sourceRoot":"","sources":["../../src/browser/markdown.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAiB,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,WAAW,EAAc,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAkB,MAAM,4BAA4B,CAAC;AAEpH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAI7C,qBACa,mBAAoB,YAAW,gBAAgB;IAE1D,cAAc,EAAE,eAAe,CAAC;IAGhC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAG/C,OAAO,CAAC,eAAe;IAIjB,0BAA0B,CAC9B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,WAAW,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,CAAC,EAAE,cAAc,EACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EACxB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAC/B,OAAO,CAAC,WAAW,CAAC;IA2CjB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;CAUrF"}
@@ -13,8 +13,8 @@ let MarkdownServiceImpl = class MarkdownServiceImpl {
13
13
  isSupportedLink(uri) {
14
14
  return http_opener_1.HttpOpener.standardSupportedLinkSchemes.has(uri.scheme);
15
15
  }
16
- async previewMarkdownInContainer(content, container, cancellationToken, onUpdate, onLinkClick) {
17
- const body = await this.getBody(content);
16
+ async previewMarkdownInContainer(content, container, cancellationToken, options, onUpdate, onLinkClick) {
17
+ const body = await this.getBody(content, options);
18
18
  if (cancellationToken.isCancellationRequested) {
19
19
  return new ide_core_browser_1.Disposable();
20
20
  }
@@ -40,7 +40,7 @@ let MarkdownServiceImpl = class MarkdownServiceImpl {
40
40
  disposer.addDispose(webviewElement);
41
41
  if (onUpdate) {
42
42
  disposer.addDispose(onUpdate(async (content) => {
43
- const body = await this.getBody(content);
43
+ const body = await this.getBody(content, options);
44
44
  if (!cancellationToken.isCancellationRequested) {
45
45
  webviewElement.setContent(body);
46
46
  }
@@ -48,9 +48,9 @@ let MarkdownServiceImpl = class MarkdownServiceImpl {
48
48
  }
49
49
  return disposer;
50
50
  }
51
- async getBody(content) {
51
+ async getBody(content, options) {
52
52
  return new Promise((resolve, reject) => {
53
- (0, utils_1.parseMarkdown)(content, undefined, (err, result) => {
53
+ (0, utils_1.parseMarkdown)(content, options, (err, result) => {
54
54
  if (err) {
55
55
  reject(err);
56
56
  }
@@ -76,7 +76,7 @@ function renderBody(body) {
76
76
  <html>
77
77
  <head>
78
78
  <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
79
- <meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src https: data:; media-src https:; script-src 'none'; style-src 'unsafe-inline'; child-src 'none'; frame-src 'none';">
79
+ <meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src http: https: data:; media-src https:; script-src 'none'; style-src 'unsafe-inline'; child-src 'none'; frame-src 'none';">
80
80
  <style>
81
81
  ${mardown_style_1.markdownCss}
82
82
  </style>
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.service.js","sourceRoot":"","sources":["../../src/browser/markdown.service.ts"],"names":[],"mappings":";;;;AAAA,qCAAqD;AACrD,8DAAmE;AACnE,iEAAoH;AACpH,mFAA+E;AAC/E,uDAAwD;AAIxD,mDAA8C;AAG9C,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAO9B,oBAAoB;IACZ,eAAe,CAAC,GAAQ;QAC9B,OAAO,wBAAU,CAAC,4BAA4B,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,0BAA0B,CAC9B,OAAe,EACf,SAAsB,EACtB,iBAAoC,EACpC,QAAwB,EACxB,WAAgC;QAEhC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,iBAAiB,CAAC,uBAAuB,EAAE;YAC7C,OAAO,IAAI,6BAAU,EAAE,CAAC;SACzB;QAED,MAAM,QAAQ,GAAG,IAAI,6BAAU,EAAE,CAAC;QAClC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;YACvD,gBAAgB,EAAE,IAAI;YACtB,kBAAkB,EAAE,EAAE;SACvB,CAAC,CAAC;QACH,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEhC,QAAQ,CAAC,UAAU,CACjB,cAAc,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YACD,wCAAwC;YACxC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;gBAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC/B;YACD,IAAI,WAAW,EAAE;gBACf,WAAW,CAAC,IAAI,CAAC,CAAC;aACnB;QACH,CAAC,CAAC,CACH,CAAC;QACF,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACpC,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,UAAU,CACjB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBACzB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACzC,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,EAAE;oBAC9C,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iBACjC;YACH,CAAC,CAAC,CACH,CAAC;SACH;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAe;QAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAA,qBAAa,EAAC,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBAChD,IAAI,GAAG,EAAE;oBACP,MAAM,CAAC,GAAG,CAAC,CAAC;iBACb;gBACD,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AArEC;IADC,IAAA,cAAS,EAAC,6BAAe,CAAC;;2DACK;AAGhC;IADC,IAAA,cAAS,EAAC,iCAAc,CAAC;;0DACqB;AALpC,mBAAmB;IAD/B,IAAA,eAAU,GAAE;GACA,mBAAmB,CAuE/B;AAvEY,kDAAmB;AAyEhC,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO;;;;;;YAMG,2BAAW;;;;;UAKb,IAAI;;YAEF,CAAC;AACb,CAAC;AAED,SAAS,kBAAkB,CAAC,eAAuB;IACjD,MAAM,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAElF,yBAAyB;IACzB,MAAM,OAAO,GAAG,WAAW,CAAC,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACpE,IAAI,OAAO,EAAE;QACX,4DAA4D;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,GAAG,CAAC,UAAU,EAAE;gBAClB,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;aACxC;SACF;KACF;IAED,OAAO,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"markdown.service.js","sourceRoot":"","sources":["../../src/browser/markdown.service.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { CancellationToken, IDisposable, Event, URI } from '@opensumi/ide-core-common';
2
2
  export interface IMarkdownService {
3
- previewMarkdownInContainer(content: string, container: HTMLElement, cancellationToken: CancellationToken, onUpdate?: Event<string>, onLinkClick?: (uri: URI) => void): Promise<IDisposable>;
3
+ previewMarkdownInContainer(content: string, container: HTMLElement, cancellationToken: CancellationToken, options?: {
4
+ baseUrl?: string | undefined;
5
+ }, onUpdate?: Event<string>, onLinkClick?: (uri: URI) => void): Promise<IDisposable>;
4
6
  }
5
7
  export declare const IMarkdownService: unique symbol;
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAEvF,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B,CACxB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,WAAW,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EACxB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAC/B,OAAO,CAAC,WAAW,CAAC,CAAC;CACzB;AAED,eAAO,MAAM,gBAAgB,eAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAEvF,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B,CACxB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,WAAW,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,EAC1C,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EACxB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAC/B,OAAO,CAAC,WAAW,CAAC,CAAC;CACzB;AAED,eAAO,MAAM,gBAAgB,eAA6B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":";;;AAYa,QAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":";;;AAaa,QAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "@opensumi/ide-markdown",
3
- "version": "2.21.9",
3
+ "version": "2.21.10-next-1671764634.0",
4
4
  "files": [
5
- "lib"
5
+ "lib",
6
+ "src"
6
7
  ],
7
8
  "license": "MIT",
8
9
  "main": "lib/index.js",
9
10
  "typings": "lib/index.d.ts",
10
11
  "scripts": {
11
- "prepublishOnly": "npm run build",
12
+ "prepublishOnly": "yarn run build",
12
13
  "build": "tsc --build ../../configs/ts/references/tsconfig.markdown.json"
13
14
  },
14
15
  "repository": {
@@ -16,15 +17,14 @@
16
17
  "url": "git@github.com:opensumi/core.git"
17
18
  },
18
19
  "dependencies": {
19
- "@opensumi/ide-core-common": "2.21.9",
20
- "@opensumi/ide-core-node": "2.21.9"
20
+ "@opensumi/ide-core-common": "2.21.10-next-1671764634.0"
21
21
  },
22
22
  "devDependencies": {
23
- "@opensumi/ide-components": "2.21.9",
24
- "@opensumi/ide-core-browser": "2.21.9",
23
+ "@opensumi/ide-components": "2.21.10-next-1671764634.0",
24
+ "@opensumi/ide-core-browser": "2.21.10-next-1671764634.0",
25
25
  "@opensumi/ide-dev-tool": "^1.3.1",
26
- "@opensumi/ide-editor": "2.21.9",
27
- "@opensumi/ide-webview": "2.21.9"
26
+ "@opensumi/ide-editor": "2.21.10-next-1671764634.0",
27
+ "@opensumi/ide-webview": "2.21.10-next-1671764634.0"
28
28
  },
29
- "gitHead": "6038a6faa5ad85bfb5acb721c1d39190fe674555"
29
+ "gitHead": "206024891162e280483c014921a8e5ecf668b009"
30
30
  }
@@ -0,0 +1,38 @@
1
+ import { Autowired } from '@opensumi/di';
2
+ import { PreferenceService } from '@opensumi/ide-core-browser';
3
+ import { Domain, localize, Schemes } from '@opensumi/ide-core-common';
4
+ import { BrowserEditorContribution, EditorComponentRegistry } from '@opensumi/ide-editor/lib/browser';
5
+
6
+ import { IMarkdownService } from '../common';
7
+
8
+ import { MarkdownEditorComponent } from './editor.markdown';
9
+
10
+ export const MARKDOWN_EDITOR_COMPONENT_ID = 'MARKDOWN_EDITOR_COMPONENT_ID';
11
+
12
+ @Domain(BrowserEditorContribution)
13
+ export class EmbeddedMarkdownEditorContribution implements BrowserEditorContribution {
14
+ @Autowired(IMarkdownService)
15
+ markdownService: IMarkdownService;
16
+
17
+ @Autowired(PreferenceService)
18
+ preferenceService: PreferenceService;
19
+
20
+ registerEditorComponent(componentRegistry: EditorComponentRegistry) {
21
+ componentRegistry.registerEditorComponent({
22
+ uid: MARKDOWN_EDITOR_COMPONENT_ID,
23
+ component: MarkdownEditorComponent,
24
+ scheme: Schemes.file,
25
+ });
26
+
27
+ componentRegistry.registerEditorComponentResolver(Schemes.file, (resource, results) => {
28
+ if (resource.uri.path.ext === '.md') {
29
+ results.push({
30
+ type: 'component',
31
+ componentId: MARKDOWN_EDITOR_COMPONENT_ID,
32
+ title: localize('editorOpenType.preview'),
33
+ weight: this.preferenceService.get<boolean>('application.preferMarkdownPreview') ? 10 : -1,
34
+ });
35
+ }
36
+ });
37
+ }
38
+ }
@@ -0,0 +1,67 @@
1
+ import React from 'react';
2
+
3
+ import { useInjectable, Disposable, CancellationTokenSource, Emitter } from '@opensumi/ide-core-browser';
4
+ import { ReactEditorComponent, IEditorDocumentModelService } from '@opensumi/ide-editor/lib/browser';
5
+
6
+ import { IMarkdownService } from '../common';
7
+
8
+ export const MarkdownEditorComponent: ReactEditorComponent<any> = ({ resource }) => {
9
+ let container: HTMLElement | null = null;
10
+ const markdownService: IMarkdownService = useInjectable(IMarkdownService);
11
+ const documentService: IEditorDocumentModelService = useInjectable(IEditorDocumentModelService);
12
+
13
+ React.useEffect(() => {
14
+ if (container) {
15
+ const disposer = new Disposable();
16
+ const cancellation = new CancellationTokenSource();
17
+ disposer.addDispose({
18
+ dispose: () => {
19
+ cancellation.cancel();
20
+ },
21
+ });
22
+ documentService.createModelReference(resource.uri, 'markdown-preview').then((documentRef) => {
23
+ if (cancellation.token.isCancellationRequested) {
24
+ if (documentRef) {
25
+ documentRef.dispose();
26
+ }
27
+ return;
28
+ }
29
+ const onUpdate = new Emitter<string>();
30
+ disposer.addDispose(onUpdate);
31
+ disposer.addDispose(
32
+ documentRef.instance.getMonacoModel().onDidChangeContent((e) => {
33
+ onUpdate.fire(documentRef.instance.getText());
34
+ }),
35
+ );
36
+ if (container) {
37
+ // container可能已不存在
38
+ markdownService
39
+ .previewMarkdownInContainer(
40
+ documentRef.instance.getText(),
41
+ container!,
42
+ cancellation.token,
43
+ undefined,
44
+ onUpdate.event,
45
+ )
46
+ .then((r) => {
47
+ disposer.addDispose(r);
48
+ });
49
+ }
50
+ disposer.addDispose(documentRef);
51
+ });
52
+
53
+ return () => {
54
+ disposer.dispose();
55
+ };
56
+ }
57
+ });
58
+
59
+ return (
60
+ <div
61
+ ref={(el) => {
62
+ container = el;
63
+ }}
64
+ style={{ height: '100%' }}
65
+ ></div>
66
+ );
67
+ };
@@ -0,0 +1,16 @@
1
+ import { Provider, Injectable } from '@opensumi/di';
2
+ import { BrowserModule } from '@opensumi/ide-core-browser';
3
+
4
+ import { IMarkdownService } from '../common';
5
+
6
+ import { MarkdownServiceImpl } from './markdown.service';
7
+ export { Markdown } from './markdown-widget';
8
+ @Injectable()
9
+ export class MarkdownModule extends BrowserModule {
10
+ providers: Provider[] = [
11
+ {
12
+ token: IMarkdownService,
13
+ useClass: MarkdownServiceImpl,
14
+ },
15
+ ];
16
+ }
@@ -0,0 +1,178 @@
1
+ export const markdownCss = `
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License. See License.txt in the project root for license information.
5
+ *--------------------------------------------------------------------------------------------*/
6
+
7
+ body {
8
+ padding: 10px 20px;
9
+ line-height: 22px;
10
+ }
11
+
12
+ img {
13
+ max-width: 100%;
14
+ max-height: 100%;
15
+ }
16
+
17
+ a {
18
+ text-decoration: none;
19
+ }
20
+
21
+ a:hover {
22
+ text-decoration: underline;
23
+ }
24
+
25
+ a:focus,
26
+ input:focus,
27
+ select:focus,
28
+ textarea:focus {
29
+ outline: 1px solid -webkit-focus-ring-color;
30
+ outline-offset: -1px;
31
+ }
32
+
33
+ hr {
34
+ border: 0;
35
+ height: 2px;
36
+ border-bottom: 2px solid;
37
+ }
38
+
39
+ h1 {
40
+ padding-bottom: 0.3em;
41
+ line-height: 1.2;
42
+ border-bottom-width: 1px;
43
+ border-bottom-style: solid;
44
+ }
45
+
46
+ h1, h2, h3 {
47
+ font-weight: normal;
48
+ }
49
+
50
+ table {
51
+ border-collapse: collapse;
52
+ }
53
+
54
+ table > thead > tr > th {
55
+ text-align: left;
56
+ border-bottom: 1px solid;
57
+ }
58
+
59
+ table > thead > tr > th,
60
+ table > thead > tr > td,
61
+ table > tbody > tr > th,
62
+ table > tbody > tr > td {
63
+ padding: 5px 10px;
64
+ }
65
+
66
+ table > tbody > tr + tr > td {
67
+ border-top: 1px solid;
68
+ }
69
+
70
+ blockquote {
71
+ margin: 0 7px 0 5px;
72
+ padding: 0 16px 0 10px;
73
+ border-left-width: 5px;
74
+ border-left-style: solid;
75
+ }
76
+
77
+ code {
78
+ font-family: Menlo, Monaco, Consolas, "Droid Sans Mono", "Courier New", monospace, "Droid Sans Fallback";
79
+ font-size: 14px;
80
+ line-height: 19px;
81
+ }
82
+
83
+ .mac code {
84
+ font-size: 12px;
85
+ line-height: 18px;
86
+ }
87
+
88
+ code > div {
89
+ padding: 16px;
90
+ border-radius: 3px;
91
+ overflow: auto;
92
+ }
93
+
94
+ #scroll-to-top {
95
+ position: fixed;
96
+ width: 40px;
97
+ height: 40px;
98
+ right: 25px;
99
+ bottom: 77px;
100
+ background-color:#444444;
101
+ border-radius: 50%;
102
+ cursor: pointer;
103
+ box-shadow: 1px 1px 1px rgba(0,0,0,.25);
104
+ outline: none;
105
+ display: flex;
106
+ justify-content: center;
107
+ align-items: center;
108
+ }
109
+
110
+ #scroll-to-top:hover {
111
+ background-color:#007acc;
112
+ box-shadow: 2px 2px 2px rgba(0,0,0,.25);
113
+ }
114
+
115
+ body.vscode-light #scroll-to-top {
116
+ background-color: #949494;
117
+ }
118
+
119
+ body.vscode-high-contrast #scroll-to-top:hover {
120
+ background-color: #007acc;
121
+ }
122
+
123
+ body.vscode-high-contrast #scroll-to-top {
124
+ background-color: black;
125
+ border: 2px solid #6fc3df;
126
+ box-shadow: none;
127
+ }
128
+ body.vscode-high-contrast #scroll-to-top:hover {
129
+ background-color: #007acc;
130
+ }
131
+
132
+ #scroll-to-top span.icon::before {
133
+ content: "";
134
+ display: block;
135
+ /* Chevron up icon */
136
+ background:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxNiAxNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTYgMTY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojRkZGRkZGO30KCS5zdDF7ZmlsbDpub25lO30KPC9zdHlsZT4KPHRpdGxlPnVwY2hldnJvbjwvdGl0bGU+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik04LDUuMWwtNy4zLDcuM0wwLDExLjZsOC04bDgsOGwtMC43LDAuN0w4LDUuMXoiLz4KPHJlY3QgY2xhc3M9InN0MSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+Cjwvc3ZnPgo=');
137
+ width: 16px;
138
+ height: 16px;
139
+ }
140
+
141
+ /** Theming */
142
+ .vscode-light code > div {
143
+ background-color: rgba(220, 220, 220, 0.4);
144
+ }
145
+
146
+ .vscode-dark code > div {
147
+ background-color: rgba(10, 10, 10, 0.4);
148
+ }
149
+
150
+ .vscode-high-contrast code > div {
151
+ background-color: rgb(0, 0, 0);
152
+ }
153
+
154
+ .vscode-high-contrast h1 {
155
+ border-color: rgb(0, 0, 0);
156
+ }
157
+
158
+ .vscode-light table > thead > tr > th {
159
+ border-color: rgba(0, 0, 0, 0.69);
160
+ }
161
+
162
+ .vscode-dark table > thead > tr > th {
163
+ border-color: rgba(255, 255, 255, 0.69);
164
+ }
165
+
166
+ .vscode-light h1,
167
+ .vscode-light hr,
168
+ .vscode-light table > tbody > tr + tr > td {
169
+ border-color: rgba(0, 0, 0, 0.18);
170
+ }
171
+
172
+ .vscode-dark h1,
173
+ .vscode-dark hr,
174
+ .vscode-dark table > tbody > tr + tr > td {
175
+ border-color: rgba(255, 255, 255, 0.18);
176
+ }
177
+
178
+ `;
@@ -0,0 +1,54 @@
1
+ import React from 'react';
2
+
3
+ import { IMarkedOptions } from '@opensumi/ide-components/lib/utils';
4
+ import { useInjectable, Disposable, CancellationTokenSource, URI } from '@opensumi/ide-core-browser';
5
+
6
+ import { IMarkdownService } from '../common';
7
+
8
+ export const Markdown = ({
9
+ content,
10
+ options,
11
+ onLoaded,
12
+ onLinkClick,
13
+ }: {
14
+ content: string;
15
+ options?: IMarkedOptions;
16
+ onLoaded?: () => void;
17
+ onLinkClick?: (uri: URI) => void;
18
+ }) => {
19
+ let container: HTMLElement | null = null;
20
+ const markdownService: IMarkdownService = useInjectable(IMarkdownService);
21
+
22
+ React.useEffect(() => {
23
+ if (container) {
24
+ const disposer = new Disposable();
25
+ const cancellation = new CancellationTokenSource();
26
+ disposer.addDispose({
27
+ dispose: () => {
28
+ cancellation.cancel();
29
+ },
30
+ });
31
+ markdownService
32
+ .previewMarkdownInContainer(content, container!, cancellation.token, options, undefined, onLinkClick)
33
+ .then((r) => {
34
+ disposer.addDispose(r);
35
+ if (onLoaded) {
36
+ onLoaded();
37
+ }
38
+ });
39
+
40
+ return () => {
41
+ disposer.dispose();
42
+ };
43
+ }
44
+ }, [content]);
45
+
46
+ return (
47
+ <div
48
+ ref={(el) => {
49
+ container = el;
50
+ }}
51
+ style={{ height: '100%' }}
52
+ ></div>
53
+ );
54
+ };
@@ -0,0 +1,119 @@
1
+ import { Injectable, Autowired } from '@opensumi/di';
2
+ import { IMarkedOptions, parseMarkdown } from '@opensumi/ide-components/lib/utils';
3
+ import { IDisposable, Disposable, CancellationToken, Event, URI, IOpenerService } from '@opensumi/ide-core-browser';
4
+ import { HttpOpener } from '@opensumi/ide-core-browser/lib/opener/http-opener';
5
+ import { IWebviewService } from '@opensumi/ide-webview';
6
+
7
+ import { IMarkdownService } from '../common';
8
+
9
+ import { markdownCss } from './mardown.style';
10
+
11
+ @Injectable()
12
+ export class MarkdownServiceImpl implements IMarkdownService {
13
+ @Autowired(IWebviewService)
14
+ webviewService: IWebviewService;
15
+
16
+ @Autowired(IOpenerService)
17
+ private readonly openerService: IOpenerService;
18
+
19
+ // 检测下支持的协议,以防打开内部协议
20
+ private isSupportedLink(uri: URI) {
21
+ return HttpOpener.standardSupportedLinkSchemes.has(uri.scheme);
22
+ }
23
+
24
+ async previewMarkdownInContainer(
25
+ content: string,
26
+ container: HTMLElement,
27
+ cancellationToken: CancellationToken,
28
+ options?: IMarkedOptions,
29
+ onUpdate?: Event<string>,
30
+ onLinkClick?: (uri: URI) => void,
31
+ ): Promise<IDisposable> {
32
+ const body = await this.getBody(content, options);
33
+ if (cancellationToken.isCancellationRequested) {
34
+ return new Disposable();
35
+ }
36
+
37
+ const disposer = new Disposable();
38
+ const webviewElement = this.webviewService.createWebview({
39
+ enableFindWidget: true,
40
+ localResourceRoots: [],
41
+ });
42
+ webviewElement.appendTo(container);
43
+ webviewElement.setContent(body);
44
+
45
+ disposer.addDispose(
46
+ webviewElement.onDidClickLink((link) => {
47
+ if (!link) {
48
+ return;
49
+ }
50
+ // Whitelist supported schemes for links
51
+ if (this.isSupportedLink(link)) {
52
+ this.openerService.open(link);
53
+ }
54
+ if (onLinkClick) {
55
+ onLinkClick(link);
56
+ }
57
+ }),
58
+ );
59
+ disposer.addDispose(webviewElement);
60
+ if (onUpdate) {
61
+ disposer.addDispose(
62
+ onUpdate(async (content) => {
63
+ const body = await this.getBody(content, options);
64
+ if (!cancellationToken.isCancellationRequested) {
65
+ webviewElement.setContent(body);
66
+ }
67
+ }),
68
+ );
69
+ }
70
+
71
+ return disposer;
72
+ }
73
+
74
+ async getBody(content: string, options: IMarkedOptions | undefined): Promise<string> {
75
+ return new Promise((resolve, reject) => {
76
+ parseMarkdown(content, options, (err, result) => {
77
+ if (err) {
78
+ reject(err);
79
+ }
80
+ resolve(removeEmbeddedSVGs(renderBody(result)));
81
+ });
82
+ });
83
+ }
84
+ }
85
+
86
+ function renderBody(body: string): string {
87
+ return `<!DOCTYPE html>
88
+ <html>
89
+ <head>
90
+ <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
91
+ <meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src http: https: data:; media-src https:; script-src 'none'; style-src 'unsafe-inline'; child-src 'none'; frame-src 'none';">
92
+ <style>
93
+ ${markdownCss}
94
+ </style>
95
+ </head>
96
+ <body>
97
+ <a id="scroll-to-top" role="button" aria-label="scroll to top" href="#"><span class="icon"></span></a>
98
+ ${body}
99
+ </body>
100
+ </html>`;
101
+ }
102
+
103
+ function removeEmbeddedSVGs(documentContent: string): string {
104
+ const newDocument = new DOMParser().parseFromString(documentContent, 'text/html');
105
+
106
+ // remove all inline svgs
107
+ const allSVGs = newDocument.documentElement.querySelectorAll('svg');
108
+ if (allSVGs) {
109
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
110
+ for (let i = 0; i < allSVGs.length; i++) {
111
+ const svg = allSVGs[i];
112
+ if (svg.parentNode) {
113
+ svg.parentNode.removeChild(allSVGs[i]);
114
+ }
115
+ }
116
+ }
117
+
118
+ return newDocument.documentElement.outerHTML;
119
+ }
@@ -0,0 +1,14 @@
1
+ import { CancellationToken, IDisposable, Event, URI } from '@opensumi/ide-core-common';
2
+
3
+ export interface IMarkdownService {
4
+ previewMarkdownInContainer(
5
+ content: string,
6
+ container: HTMLElement,
7
+ cancellationToken: CancellationToken,
8
+ options?: { baseUrl?: string | undefined },
9
+ onUpdate?: Event<string>,
10
+ onLinkClick?: (uri: URI) => void,
11
+ ): Promise<IDisposable>;
12
+ }
13
+
14
+ export const IMarkdownService = Symbol('IMarkdownService');
package/src/index.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './common';
2
+ export * from './browser';