Liyuan Li 5 years ago
parent
commit
7b1cb509fd
3 changed files with 88 additions and 8 deletions
  1. 4 1
      CHANGELOG.md
  2. 6 3
      demo/static-preview.html
  3. 78 4
      types/index.d.ts

+ 4 - 1
CHANGELOG.md

@@ -64,7 +64,10 @@
 * [open issues](https://github.com/Vanessa219/vditor/issues)
 * [346](https://github.com/Vanessa219/vditor/issues/346) 内容主题推荐(长期有效) `改进功能`
 
-### v3.2.0 / 2020-05-0x
+### v3.1.23 / 2020-05-0x
+
+* [362](https://github.com/Vanessa219/vditor/issues/362) Export HeadingID function to JavaScript `改进功能`
+* [359](https://github.com/Vanessa219/vditor/issues/359) heading anchor when copy & paste `修复缺陷`
 
 ### v3.1.22 / 2020-05-04
 

+ 6 - 3
demo/static-preview.html

@@ -34,8 +34,8 @@
     <meta name="twitter:url" content="https://hacpai.com/tag/vditor"/>
     <meta property="og:image" content="https://cdn.jsdelivr.net/npm/vditor/src/assets/images/logo.png"/>
     <meta name="twitter:image" content="https://cdn.jsdelivr.net/npm/vditor/src/assets/images/logo.png"/>
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]1/dist/index.css"/>
-    <script src="https://cdn.jsdelivr.net/npm/[email protected]1/dist/method.min.js"></script>
+    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]3/dist/index.css"/>
+    <script src="https://cdn.jsdelivr.net/npm/[email protected]3/dist/method.min.js"></script>
     <style>
         a {
             color: #4285f4;
@@ -723,8 +723,11 @@ https://www.youtube.com/watch?v=S4xoOW4DVKE
       renderers: {
         renderHeading: (node, entering) => {
           if (entering) {
+            const id = Lute.GetHeadingID(node)
             return [
-              `<h${node.__internal_object__.HeadingLevel} class="vditor__heading"><span class="prefix"></span><span>`,
+              `<h${node.__internal_object__.HeadingLevel} id="${id}" class="vditor__heading">
+<a id="vditorAnchor-${id}" class="vditor-anchor" href="#${id}"><svg viewBox="0 0 16 16" version="1.1" width="16" height="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>
+<span class="prefix"></span><span>`,
               Lute.WalkContinue]
           } else {
             return [`</span></h${node.__internal_object__.HeadingLevel}>`, Lute.WalkContinue]

+ 78 - 4
types/index.d.ts

@@ -4,19 +4,91 @@ declare module "*.png";
 
 declare const Lute: ILute;
 
-type ILuteRenderCallback = (node: {
+interface ILuteNode {
     TokensStr: () => string;
     __internal_object__: {
         Parent: {
             Type: number,
         },
         HeadingLevel: string,
-    }
-},                          entering: boolean) => [string, number];
+    };
+}
 
+type ILuteRenderCallback = (node: ILuteNode, entering: boolean) => [string, number];
+
+/** @link https://hacpai.com/article/1588412297062 */
 interface ILuteRender {
+    renderDocument?: ILuteRenderCallback;
+    renderParagraph?: ILuteRenderCallback;
+    renderText?: ILuteRenderCallback;
+    renderCodeBlock?: ILuteRenderCallback;
+    renderCodeBlockOpenMarker?: ILuteRenderCallback;
+    renderCodeBlockInfoMarker?: ILuteRenderCallback;
+    renderCodeBlockCode?: ILuteRenderCallback;
+    renderCodeBlockCloseMarker?: ILuteRenderCallback;
+    renderMathBlock?: ILuteRenderCallback;
+    renderMathBlockOpenMarker?: ILuteRenderCallback;
+    renderMathBlockContent?: ILuteRenderCallback;
+    renderMathBlockCloseMarker?: ILuteRenderCallback;
+    renderBlockquote?: ILuteRenderCallback;
+    renderBlockquoteMarker?: ILuteRenderCallback;
     renderHeading?: ILuteRenderCallback;
+    renderHeadingC8hMarker?: ILuteRenderCallback;
+    renderList?: ILuteRenderCallback;
+    renderListItem?: ILuteRenderCallback;
+    renderTaskListItemMarker?: ILuteRenderCallback;
+    renderThematicBreak?: ILuteRenderCallback;
+    renderHTML?: ILuteRenderCallback;
+    renderTable?: ILuteRenderCallback;
+    renderTableHead?: ILuteRenderCallback;
+    renderTableRow?: ILuteRenderCallback;
+    renderTableCell?: ILuteRenderCallback;
+    renderFootnotesDef?: ILuteRenderCallback;
+    renderCodeSpan?: ILuteRenderCallback;
+    renderCodeSpanOpenMarker?: ILuteRenderCallback;
+    renderCodeSpanContent?: ILuteRenderCallback;
+    renderCodeSpanCloseMarker?: ILuteRenderCallback;
+    renderInlineMath?: ILuteRenderCallback;
+    renderInlineMathOpenMarker?: ILuteRenderCallback;
+    renderInlineMathContent?: ILuteRenderCallback;
+    renderInlineMathCloseMarker?: ILuteRenderCallback;
+    renderEmphasis?: ILuteRenderCallback;
+    renderEmAsteriskOpenMarker?: ILuteRenderCallback;
+    renderEmAsteriskCloseMarker?: ILuteRenderCallback;
+    renderEmUnderscoreOpenMarker?: ILuteRenderCallback;
+    renderEmUnderscoreCloseMarker?: ILuteRenderCallback;
+    renderStrong?: ILuteRenderCallback;
+    renderStrongA6kOpenMarker?: ILuteRenderCallback;
+    renderStrongA6kCloseMarker?: ILuteRenderCallback;
+    renderStrongU8eOpenMarker?: ILuteRenderCallback;
+    renderStrongU8eCloseMarker?: ILuteRenderCallback;
+    renderStrikethrough?: ILuteRenderCallback;
+    renderStrikethrough1OpenMarker?: ILuteRenderCallback;
+    renderStrikethrough1CloseMarker?: ILuteRenderCallback;
+    renderStrikethrough2OpenMarker?: ILuteRenderCallback;
+    renderStrikethrough2CloseMarker?: ILuteRenderCallback;
+    renderHardBreak?: ILuteRenderCallback;
+    renderSoftBreak?: ILuteRenderCallback;
+    renderInlineHTML?: ILuteRenderCallback;
+    renderLink?: ILuteRenderCallback;
+    renderOpenBracket?: ILuteRenderCallback;
+    renderCloseBracket?: ILuteRenderCallback;
+    renderOpenParen?: ILuteRenderCallback;
+    renderCloseParen?: ILuteRenderCallback;
+    renderLinkText?: ILuteRenderCallback;
+    renderLinkSpace?: ILuteRenderCallback;
     renderLinkDest?: ILuteRenderCallback;
+    renderLinkTitle?: ILuteRenderCallback;
+    renderImage?: ILuteRenderCallback;
+    renderBang?: ILuteRenderCallback;
+    renderEmoji?: ILuteRenderCallback;
+    renderEmojiUnicode?: ILuteRenderCallback;
+    renderEmojiImg?: ILuteRenderCallback;
+    renderEmojiAlias?: ILuteRenderCallback;
+    renderToC?: ILuteRenderCallback;
+    renderFootnotesRef?: ILuteRenderCallback;
+    renderBackslash?: ILuteRenderCallback;
+    renderBackslashContent?: ILuteRenderCallback;
 }
 
 interface ILuteOptions extends IMarkdownConfig {
@@ -33,7 +105,9 @@ interface ILute {
     WalkContinue: number;
     Version: string;
 
-    New(): ILute;
+    New(node: ILuteNode): ILute;
+
+    GetHeadingID(): string;
 
     SetJSRenderers(options?: {
         renderers: {