highmark-markdown 1.0.173 → 1.0.174
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/README.md +1 -1
- package/example.js +14061 -13787
- package/lib/example/importer.js +5 -5
- package/lib/example/view/div/container/markdown.js +3 -3
- package/lib/example/view/div/preview.js +5 -1
- package/lib/example/view/textarea/parseTree/{markdown/outer.js → html.js} +17 -17
- package/lib/example/view/textarea/parseTree/markdown.js +49 -2
- package/lib/example/view/textarea/plainText.js +7 -2
- package/lib/example/view/xmp.js +7 -2
- package/lib/example/view.js +67 -104
- package/lib/index/match.js +6 -6
- package/lib/index.js +27 -15
- package/lib/map/className.js +60 -0
- package/lib/map/node/html.js +85 -0
- package/lib/map/node/markdown.js +73 -0
- package/lib/map/tagName.js +60 -0
- package/lib/markdown/bnf.js +2 -2
- package/lib/markdown/parser.js +10 -9
- package/lib/markdownStyle/entries.js +3 -3
- package/lib/mixins/node.js +24 -23
- package/lib/node/html/anchor.js +55 -11
- package/lib/node/html/blockLine.js +75 -9
- package/lib/node/html/division.js +135 -0
- package/lib/node/html/error.js +195 -0
- package/lib/node/html/{blockListingEnd.js → footnote.js} +20 -14
- package/lib/node/html/heading/index.js +128 -0
- package/lib/node/html/heading/primary.js +129 -0
- package/lib/node/{markdown/directive.js → html/heading/quaternary.js} +21 -21
- package/lib/node/html/heading/secondary.js +129 -0
- package/lib/node/html/heading/tertiary.js +129 -0
- package/lib/node/html/image.js +214 -0
- package/lib/node/html/indexList.js +128 -0
- package/lib/node/html/item/contents.js +128 -0
- package/lib/node/html/item/footnotes.js +128 -0
- package/lib/node/{markdown/indexItem.js → html/item/index.js} +36 -15
- package/lib/node/html/item/ordered.js +17 -2
- package/lib/node/html/item/unordered.js +128 -0
- package/lib/node/html/line.js +174 -0
- package/lib/node/html/{contentsLink.js → link/contents.js} +19 -4
- package/lib/node/html/link/email.js +229 -0
- package/lib/node/html/link/footnote.js +137 -0
- package/lib/node/html/link/hyper.js +229 -0
- package/lib/node/html/link/index.js +202 -0
- package/lib/node/html/list/contents.js +128 -0
- package/lib/node/html/list/footnotes.js +144 -0
- package/lib/node/html/list/ordered.js +128 -0
- package/lib/node/html/list/unordered.js +128 -0
- package/lib/node/html/{blockListing.js → listing/block.js} +18 -9
- package/lib/node/html/listing/inline.js +189 -0
- package/lib/node/html/pageNumber.js +170 -0
- package/lib/node/html/{className.js → paragraph.js} +26 -18
- package/lib/node/{markdown/nonsense.js → html/table.js} +22 -15
- package/lib/node/{markdown/blockListingEnd.js → html/tableBody.js} +22 -15
- package/lib/node/html/tableBodyCell.js +128 -0
- package/lib/node/html/tableBodyRow.js +128 -0
- package/lib/node/html/{blockListingStart.js → tableHead.js} +26 -18
- package/lib/node/html/tableHeadCell.js +128 -0
- package/lib/node/html/tableHeadRow.js +128 -0
- package/lib/node/html/text/block.js +128 -0
- package/lib/node/html/text/emphasised.js +128 -0
- package/lib/node/html/text/inline.js +196 -0
- package/lib/node/html/text/plain.js +128 -0
- package/lib/node/html/text/strong.js +128 -0
- package/lib/node/html/text/stronglyEmphasised.js +212 -0
- package/lib/node/html/text.js +141 -0
- package/lib/node/html/topmost.js +57 -10
- package/lib/node/html.js +130 -40
- package/lib/node/markdown/anchor.js +6 -22
- package/lib/node/markdown/{table.js → blockEnd.js} +10 -10
- package/lib/node/markdown/blockListing.js +4 -31
- package/lib/node/markdown/{blockListingStart.js → blockStart.js} +10 -24
- package/lib/node/markdown/className.js +2 -2
- package/lib/node/markdown/contentsItem.js +4 -4
- package/lib/node/markdown/contentsList.js +2 -10
- package/lib/node/markdown/directive/embee.js +13 -13
- package/lib/node/markdown/directive/include.js +13 -13
- package/lib/node/markdown/directive/pageNumber.js +13 -29
- package/lib/node/markdown/division.js +205 -254
- package/lib/node/markdown/emailLink.js +36 -98
- package/lib/node/markdown/emphasisedText.js +3 -54
- package/lib/node/markdown/error.js +9 -53
- package/lib/node/markdown/footnote.js +1 -15
- package/lib/node/markdown/footnoteLink.js +9 -32
- package/lib/node/markdown/footnotesList.js +1 -16
- package/lib/node/markdown/heading/primary.js +1 -2
- package/lib/node/markdown/heading/quaternary.js +1 -2
- package/lib/node/markdown/heading/secondary.js +1 -2
- package/lib/node/markdown/heading/tertiary.js +1 -2
- package/lib/node/markdown/heading.js +1 -13
- package/lib/node/markdown/hyperlink.js +44 -108
- package/lib/node/markdown/image.js +2 -63
- package/lib/node/markdown/indexLink.js +13 -87
- package/lib/node/markdown/indexList.js +2 -10
- package/lib/node/markdown/inlineListing.js +22 -56
- package/lib/node/markdown/inlineText.js +3 -21
- package/lib/node/markdown/item/ordered.js +6 -6
- package/lib/node/markdown/line.js +1 -74
- package/lib/node/markdown/path.js +7 -7
- package/lib/node/markdown/strongText.js +3 -54
- package/lib/node/markdown/stronglyEmphasisedText.js +3 -78
- package/lib/node/markdown/{tableCellDivider.js → text/block.js} +12 -12
- package/lib/node/markdown/{tableBody.js → text/plain.js} +12 -12
- package/lib/node/markdown/text.js +154 -0
- package/lib/node/markdown/topmost.js +191 -0
- package/lib/node/markdown.js +6 -229
- package/lib/queries.js +4 -45
- package/lib/ruleNames.js +34 -21
- package/lib/style/selector.js +11 -7
- package/lib/transform/contentsItem.js +134 -0
- package/lib/transform/contentsLink.js +115 -0
- package/lib/transform/contentsList.js +194 -0
- package/lib/{replacement/subDivision.js → transform/division.js} +33 -38
- package/lib/{replacement → transform}/embedDirective.js +14 -19
- package/lib/{replacement → transform}/footnote.js +18 -23
- package/lib/transform/footnotesItem.js +123 -0
- package/lib/transform/footnotesList.js +173 -0
- package/lib/{replacement → transform}/includeDirective.js +13 -18
- package/lib/transform/index.js +166 -0
- package/lib/{replacement → transform}/indexAnchor.js +13 -13
- package/lib/{replacement → transform}/indexHeading.js +13 -18
- package/lib/{replacement → transform}/indexItem.js +13 -18
- package/lib/transform/indexList.js +121 -0
- package/lib/{replacement → transform}/line.js +13 -18
- package/lib/{replacement → transform}/subDivision/contentsDirective.js +14 -14
- package/lib/transform/subDivision/embedDirectives.js +147 -0
- package/lib/{replacement → transform}/subDivision/footnote.js +14 -14
- package/lib/{replacement → transform}/subDivision/footnotesDirective.js +14 -14
- package/lib/transform/subDivision/includeDirectives.js +142 -0
- package/lib/{replacement → transform}/subDivision/indexDirective.js +14 -14
- package/lib/{replacement → transform}/subDivision/pageNumberDirective.js +14 -14
- package/lib/utilities/content.js +1 -61
- package/lib/utilities/entities.js +17 -0
- package/lib/utilities/entries.js +6 -6
- package/lib/utilities/html.js +67 -9
- package/lib/utilities/markdown.js +45 -0
- package/lib/utilities/parser.js +8 -2
- package/lib/utilities/query.js +2 -22
- package/package.json +2 -2
- package/src/example/importer.js +2 -4
- package/src/example/view/div/container/markdown.js +2 -2
- package/src/example/view/div/preview.js +6 -0
- package/src/example/view/textarea/parseTree/html.js +28 -0
- package/src/example/view/textarea/parseTree/markdown.js +19 -1
- package/src/example/view/textarea/plainText.js +9 -1
- package/src/example/view/xmp.js +9 -1
- package/src/example/view.js +84 -91
- package/src/index/match.js +6 -6
- package/src/index.js +6 -3
- package/src/map/className.js +16 -0
- package/src/map/node/html.js +136 -0
- package/src/map/node/markdown.js +125 -0
- package/src/map/tagName.js +16 -0
- package/src/markdown/bnf.js +85 -64
- package/src/markdown/parser.js +3 -1
- package/src/markdownStyle/entries.js +3 -3
- package/src/mixins/node.js +29 -34
- package/src/node/html/anchor.js +26 -5
- package/src/node/html/blockLine.js +58 -7
- package/src/node/html/division.js +15 -0
- package/src/node/html/error.js +64 -0
- package/src/node/html/footnote.js +17 -0
- package/src/node/html/heading/index.js +13 -0
- package/src/node/html/heading/primary.js +15 -0
- package/src/node/html/heading/quaternary.js +15 -0
- package/src/node/html/heading/secondary.js +15 -0
- package/src/node/html/heading/tertiary.js +15 -0
- package/src/node/html/image.js +107 -0
- package/src/node/html/indexList.js +13 -0
- package/src/node/html/item/contents.js +13 -0
- package/src/node/html/item/footnotes.js +13 -0
- package/src/node/{markdown/indexItem.js → html/item/index.js} +9 -3
- package/src/node/html/item/ordered.js +5 -1
- package/src/node/html/item/unordered.js +13 -0
- package/src/node/html/line.js +64 -0
- package/src/node/html/{contentsLink.js → link/contents.js} +7 -3
- package/src/node/html/link/email.js +96 -0
- package/src/node/html/link/footnote.js +33 -0
- package/src/node/html/link/hyper.js +96 -0
- package/src/node/html/link/index.js +72 -0
- package/src/node/html/list/contents.js +13 -0
- package/src/node/html/list/footnotes.js +27 -0
- package/src/node/html/list/ordered.js +13 -0
- package/src/node/html/list/unordered.js +13 -0
- package/src/node/html/{blockListing.js → listing/block.js} +5 -8
- package/src/node/html/listing/inline.js +61 -0
- package/src/node/html/pageNumber.js +46 -0
- package/src/node/html/paragraph.js +13 -0
- package/src/node/html/table.js +13 -0
- package/src/node/html/tableBody.js +13 -0
- package/src/node/html/tableBodyCell.js +13 -0
- package/src/node/html/tableBodyRow.js +13 -0
- package/src/node/html/tableHead.js +13 -0
- package/src/node/html/tableHeadCell.js +13 -0
- package/src/node/html/tableHeadRow.js +13 -0
- package/src/node/html/text/block.js +13 -0
- package/src/node/html/text/emphasised.js +13 -0
- package/src/node/html/text/inline.js +57 -0
- package/src/node/html/text/plain.js +13 -0
- package/src/node/html/text/strong.js +13 -0
- package/src/node/html/text/stronglyEmphasised.js +98 -0
- package/src/node/html/text.js +34 -0
- package/src/node/html/topmost.js +57 -8
- package/src/node/html.js +136 -53
- package/src/node/markdown/anchor.js +5 -25
- package/src/node/markdown/{table.js → blockEnd.js} +2 -2
- package/src/node/markdown/blockListing.js +4 -10
- package/src/node/markdown/{blockListingStart.js → blockStart.js} +4 -6
- package/src/node/markdown/className.js +2 -2
- package/src/node/markdown/contentsItem.js +4 -4
- package/src/node/markdown/contentsList.js +0 -6
- package/src/node/markdown/directive/embee.js +10 -10
- package/src/node/markdown/directive/include.js +10 -10
- package/src/node/markdown/directive/pageNumber.js +10 -29
- package/src/node/markdown/division.js +203 -260
- package/src/node/markdown/emailLink.js +41 -87
- package/src/node/markdown/emphasisedText.js +1 -40
- package/src/node/markdown/error.js +9 -40
- package/src/node/markdown/footnote.js +0 -12
- package/src/node/markdown/footnoteLink.js +8 -31
- package/src/node/markdown/footnotesList.js +0 -13
- package/src/node/markdown/heading/primary.js +0 -2
- package/src/node/markdown/heading/quaternary.js +0 -2
- package/src/node/markdown/heading/secondary.js +0 -2
- package/src/node/markdown/heading/tertiary.js +0 -2
- package/src/node/markdown/heading.js +0 -14
- package/src/node/markdown/hyperlink.js +41 -91
- package/src/node/markdown/image.js +1 -82
- package/src/node/markdown/indexLink.js +10 -69
- package/src/node/markdown/indexList.js +0 -6
- package/src/node/markdown/inlineListing.js +20 -40
- package/src/node/markdown/inlineText.js +1 -21
- package/src/node/markdown/item/ordered.js +3 -3
- package/src/node/markdown/line.js +0 -61
- package/src/node/markdown/path.js +5 -5
- package/src/node/markdown/strongText.js +1 -40
- package/src/node/markdown/stronglyEmphasisedText.js +1 -74
- package/src/node/markdown/text/block.js +7 -0
- package/src/node/markdown/text/plain.js +7 -0
- package/src/node/markdown/text.js +80 -0
- package/src/node/markdown/topmost.js +91 -0
- package/src/node/markdown.js +1 -200
- package/src/queries.js +6 -86
- package/src/ruleNames.js +16 -12
- package/src/style/selector.js +16 -10
- package/src/transform/contentsItem.js +55 -0
- package/src/{replacement → transform}/contentsLink.js +10 -9
- package/src/{replacement → transform}/contentsList.js +26 -26
- package/src/transform/division.js +41 -0
- package/src/{replacement → transform}/embedDirective.js +4 -4
- package/src/{replacement → transform}/footnote.js +7 -7
- package/src/transform/footnotesItem.js +25 -0
- package/src/transform/footnotesList.js +79 -0
- package/src/{replacement → transform}/includeDirective.js +4 -4
- package/src/transform/index.js +90 -0
- package/src/{replacement → transform}/indexAnchor.js +5 -4
- package/src/{replacement → transform}/indexHeading.js +4 -4
- package/src/{replacement → transform}/indexItem.js +4 -4
- package/src/transform/indexList.js +33 -0
- package/src/{replacement → transform}/line.js +4 -4
- package/src/transform/subDivision/contentsDirective.js +20 -0
- package/src/transform/subDivision/embedDirectives.js +52 -0
- package/src/{replacement → transform}/subDivision/footnote.js +5 -5
- package/src/transform/subDivision/footnotesDirective.js +20 -0
- package/src/transform/subDivision/includeDirectives.js +48 -0
- package/src/transform/subDivision/indexDirective.js +20 -0
- package/src/transform/subDivision/pageNumberDirective.js +20 -0
- package/src/utilities/content.js +0 -95
- package/src/utilities/entities.js +11 -0
- package/src/utilities/entries.js +3 -3
- package/src/utilities/html.js +69 -6
- package/src/utilities/markdown.js +32 -0
- package/src/utilities/parser.js +3 -2
- package/src/utilities/query.js +8 -28
- package/lib/classFromOuterNode.js +0 -30
- package/lib/elementMap.js +0 -218
- package/lib/example/view/textarea/parseTree/markdown/inner.js +0 -179
- package/lib/mixins/content.js +0 -21
- package/lib/mixins/element.js +0 -32
- package/lib/node/html/comma.js +0 -127
- package/lib/node/html/directive/pageNumber.js +0 -178
- package/lib/node/markdown/blockLine.js +0 -207
- package/lib/node/markdown/comma.js +0 -123
- package/lib/node/markdown/directive/contents.js +0 -107
- package/lib/node/markdown/directive/footnotes.js +0 -107
- package/lib/node/markdown/directive/ignore.js +0 -107
- package/lib/node/markdown/directive/index.js +0 -107
- package/lib/node/markdown/directives.js +0 -125
- package/lib/node/markdown/emptyTableCell.js +0 -122
- package/lib/node/markdown/endOfLine.js +0 -151
- package/lib/node/markdown/indexHeading.js +0 -107
- package/lib/node/markdown/item/unordered.js +0 -107
- package/lib/node/markdown/item.js +0 -107
- package/lib/node/markdown/orderedList.js +0 -107
- package/lib/node/markdown/plainText.js +0 -115
- package/lib/node/markdown/subDivision.js +0 -161
- package/lib/node/markdown/tableBodyCell.js +0 -128
- package/lib/node/markdown/tableBodyRow.js +0 -107
- package/lib/node/markdown/tableCell.js +0 -118
- package/lib/node/markdown/tableDivider.js +0 -107
- package/lib/node/markdown/tableHead.js +0 -107
- package/lib/node/markdown/tableHeadCell.js +0 -128
- package/lib/node/markdown/tableHeadRow.js +0 -107
- package/lib/node/markdown/unorderedList.js +0 -107
- package/lib/node/markdown/verticalSpace.js +0 -151
- package/lib/nodeMap.js +0 -98
- package/lib/replacement/contentsItem.js +0 -134
- package/lib/replacement/contentsLink.js +0 -115
- package/lib/replacement/contentsList.js +0 -194
- package/lib/replacement/footnotesItem.js +0 -123
- package/lib/replacement/footnotesList.js +0 -173
- package/lib/replacement/index.js +0 -166
- package/lib/replacement/indexList.js +0 -121
- package/lib/replacement/subDivision/embedDirectives.js +0 -143
- package/lib/replacement/subDivision/includeDirectives.js +0 -175
- package/lib/replacement.js +0 -262
- package/lib/ruleNameToClassMap.js +0 -44
- package/lib/utilities/childNodes.js +0 -127
- package/lib/utilities/processing.js +0 -106
- package/lib/utilities/replacement.js +0 -195
- package/src/classFromOuterNode.js +0 -20
- package/src/elementMap.js +0 -322
- package/src/example/view/textarea/parseTree/markdown/inner.js +0 -36
- package/src/example/view/textarea/parseTree/markdown/outer.js +0 -27
- package/src/mixins/content.js +0 -16
- package/src/mixins/element.js +0 -29
- package/src/node/html/blockListingEnd.js +0 -11
- package/src/node/html/blockListingStart.js +0 -11
- package/src/node/html/className.js +0 -11
- package/src/node/html/comma.js +0 -18
- package/src/node/html/directive/pageNumber.js +0 -55
- package/src/node/markdown/blockLine.js +0 -90
- package/src/node/markdown/blockListingEnd.js +0 -9
- package/src/node/markdown/comma.js +0 -23
- package/src/node/markdown/directive/contents.js +0 -7
- package/src/node/markdown/directive/footnotes.js +0 -7
- package/src/node/markdown/directive/ignore.js +0 -7
- package/src/node/markdown/directive/index.js +0 -7
- package/src/node/markdown/directive.js +0 -15
- package/src/node/markdown/directives.js +0 -25
- package/src/node/markdown/emptyTableCell.js +0 -19
- package/src/node/markdown/endOfLine.js +0 -39
- package/src/node/markdown/indexHeading.js +0 -7
- package/src/node/markdown/item/unordered.js +0 -7
- package/src/node/markdown/item.js +0 -7
- package/src/node/markdown/nonsense.js +0 -9
- package/src/node/markdown/orderedList.js +0 -7
- package/src/node/markdown/plainText.js +0 -13
- package/src/node/markdown/subDivision.js +0 -64
- package/src/node/markdown/tableBody.js +0 -7
- package/src/node/markdown/tableBodyCell.js +0 -29
- package/src/node/markdown/tableBodyRow.js +0 -7
- package/src/node/markdown/tableCell.js +0 -19
- package/src/node/markdown/tableCellDivider.js +0 -7
- package/src/node/markdown/tableDivider.js +0 -7
- package/src/node/markdown/tableHead.js +0 -7
- package/src/node/markdown/tableHeadCell.js +0 -29
- package/src/node/markdown/tableHeadRow.js +0 -7
- package/src/node/markdown/unorderedList.js +0 -7
- package/src/node/markdown/verticalSpace.js +0 -39
- package/src/nodeMap.js +0 -200
- package/src/replacement/contentsItem.js +0 -54
- package/src/replacement/footnotesItem.js +0 -24
- package/src/replacement/footnotesList.js +0 -78
- package/src/replacement/index.js +0 -89
- package/src/replacement/indexList.js +0 -32
- package/src/replacement/subDivision/contentsDirective.js +0 -20
- package/src/replacement/subDivision/embedDirectives.js +0 -52
- package/src/replacement/subDivision/footnotesDirective.js +0 -20
- package/src/replacement/subDivision/includeDirectives.js +0 -58
- package/src/replacement/subDivision/indexDirective.js +0 -20
- package/src/replacement/subDivision/pageNumberDirective.js +0 -20
- package/src/replacement/subDivision.js +0 -41
- package/src/replacement.js +0 -185
- package/src/ruleNameToClassMap.js +0 -38
- package/src/utilities/childNodes.js +0 -178
- package/src/utilities/processing.js +0 -122
- package/src/utilities/replacement.js +0 -169
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import HTMLNode from "../../node/html";
|
|
4
|
+
|
|
5
|
+
export default class ErrorHTMLNode extends HTMLNode {
|
|
6
|
+
error(context) { return this.outerNode.error(context); }
|
|
7
|
+
|
|
8
|
+
createDOMElement(context) {
|
|
9
|
+
let domElement;
|
|
10
|
+
|
|
11
|
+
const error = this.error(context),
|
|
12
|
+
content = error, ///
|
|
13
|
+
textNode = document.createTextNode(content);
|
|
14
|
+
|
|
15
|
+
domElement = super.createDOMElement(context)
|
|
16
|
+
|
|
17
|
+
const parentDOMElement = domElement; ///
|
|
18
|
+
|
|
19
|
+
domElement = textNode; ///
|
|
20
|
+
|
|
21
|
+
parentDOMElement.appendChild(domElement);
|
|
22
|
+
|
|
23
|
+
domElement = parentDOMElement; ///
|
|
24
|
+
|
|
25
|
+
return domElement;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
asHTML(indent, context) {
|
|
29
|
+
let html;
|
|
30
|
+
|
|
31
|
+
indent = this.adjustIndent(indent);
|
|
32
|
+
|
|
33
|
+
const childNodesHTML = this.childNodesAsHTML(indent, context),
|
|
34
|
+
startingTag = this.startingTag(context),
|
|
35
|
+
closingTag = this.closingTag(context);
|
|
36
|
+
|
|
37
|
+
html = `${indent}${startingTag}${childNodesHTML}${closingTag}
|
|
38
|
+
`;
|
|
39
|
+
|
|
40
|
+
return html;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
asPlainText(context) {
|
|
44
|
+
const error = this.error(context),
|
|
45
|
+
plainText = error; ///
|
|
46
|
+
|
|
47
|
+
return plainText;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
childNodesAsHTML(indent, context) {
|
|
51
|
+
const error = this.error(context),
|
|
52
|
+
childNodesHTML = error; ///
|
|
53
|
+
|
|
54
|
+
return childNodesHTML;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
static tagName = "span";
|
|
58
|
+
|
|
59
|
+
static className = "error";
|
|
60
|
+
|
|
61
|
+
static fromNothing() { return HTMLNode.fromNothing(ErrorHTMLNode); }
|
|
62
|
+
|
|
63
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(ErrorHTMLNode, outerNode); }
|
|
64
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import HTMLNode from "../../node/html";
|
|
4
|
+
|
|
5
|
+
export default class FootnoteHTMLNode extends HTMLNode {
|
|
6
|
+
mount(parentDOMElement, siblingDOMElement, context) {
|
|
7
|
+
///
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
unmount(parentDOMElement, context) {
|
|
11
|
+
///
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static fromNothing() { return HTMLNode.fromNothing(FootnoteHTMLNode); }
|
|
15
|
+
|
|
16
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(FootnoteHTMLNode, outerNode); }
|
|
17
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import HTMLNode from "../../../node/html";
|
|
4
|
+
|
|
5
|
+
export default class IndexHeadingHTMLNode extends HTMLNode {
|
|
6
|
+
static tagName = "h3";
|
|
7
|
+
|
|
8
|
+
static className = "index";
|
|
9
|
+
|
|
10
|
+
static fromNothing() { return HTMLNode.fromNothing(IndexHeadingHTMLNode); }
|
|
11
|
+
|
|
12
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(IndexHeadingHTMLNode, outerNode); }
|
|
13
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import HTMLNode from "../../../node/html";
|
|
4
|
+
|
|
5
|
+
export default class PrimaryHeadingHTMLNode extends HTMLNode {
|
|
6
|
+
static lines = 3;
|
|
7
|
+
|
|
8
|
+
static tagName = "h1";
|
|
9
|
+
|
|
10
|
+
static className = null;
|
|
11
|
+
|
|
12
|
+
static fromNothing() { return HTMLNode.fromNothing(PrimaryHeadingHTMLNode); }
|
|
13
|
+
|
|
14
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(PrimaryHeadingHTMLNode, outerNode); }
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import HTMLNode from "../../../node/html";
|
|
4
|
+
|
|
5
|
+
export default class QuaternaryHeadingHTMLNode extends HTMLNode {
|
|
6
|
+
static lines = 2;
|
|
7
|
+
|
|
8
|
+
static tagName = "h4";
|
|
9
|
+
|
|
10
|
+
static className = null;
|
|
11
|
+
|
|
12
|
+
static fromNothing() { return HTMLNode.fromNothing(QuaternaryHeadingHTMLNode); }
|
|
13
|
+
|
|
14
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(QuaternaryHeadingHTMLNode, outerNode); }
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import HTMLNode from "../../../node/html";
|
|
4
|
+
|
|
5
|
+
export default class SecondaryHeadingHTMLNode extends HTMLNode {
|
|
6
|
+
static lines = 2.5;
|
|
7
|
+
|
|
8
|
+
static tagName = "h2";
|
|
9
|
+
|
|
10
|
+
static className = null;
|
|
11
|
+
|
|
12
|
+
static fromNothing() { return HTMLNode.fromNothing(SecondaryHeadingHTMLNode); }
|
|
13
|
+
|
|
14
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(SecondaryHeadingHTMLNode, outerNode); }
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import HTMLNode from "../../../node/html";
|
|
4
|
+
|
|
5
|
+
export default class TertiaryHeadingHTMLNode extends HTMLNode {
|
|
6
|
+
static lines = 2.25;
|
|
7
|
+
|
|
8
|
+
static tagName = "h3";
|
|
9
|
+
|
|
10
|
+
static className = null;
|
|
11
|
+
|
|
12
|
+
static fromNothing() { return HTMLNode.fromNothing(TertiaryHeadingHTMLNode); }
|
|
13
|
+
|
|
14
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(TertiaryHeadingHTMLNode, outerNode); }
|
|
15
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import HTMLNode from "../../node/html";
|
|
4
|
+
|
|
5
|
+
import { EMPTY_STRING } from "../../constants";
|
|
6
|
+
import { ALT_ATTRIBUTE_NAME, SRC_ATTRIBUTE_NAME } from "../../attributeNames";
|
|
7
|
+
import {IMAGE_RULE_NAME} from "../../ruleNames";
|
|
8
|
+
|
|
9
|
+
export default class ImageHTMLNode extends HTMLNode {
|
|
10
|
+
src(context) { return this.outerNode.src(context); }
|
|
11
|
+
|
|
12
|
+
alt(context) {
|
|
13
|
+
const alt = this.fromFirstChildNode((firstChildNode) => {
|
|
14
|
+
const inlineTextHTMLNode = firstChildNode, ///
|
|
15
|
+
plainText = inlineTextHTMLNode.asPlainText(context),
|
|
16
|
+
alt = plainText; ///
|
|
17
|
+
|
|
18
|
+
return alt;
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
return alt;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
selfClosingTag(context) {
|
|
25
|
+
const tagName = this.tagName(context),
|
|
26
|
+
attributeNames = this.attributeNames(context),
|
|
27
|
+
attributeValues = this.attributeValues(context),
|
|
28
|
+
attributesHTML = attributeNames.reduce((attributesHML, attributeName, index) => {
|
|
29
|
+
const attributeValue = attributeValues[index];
|
|
30
|
+
|
|
31
|
+
attributesHML = (attributesHML === null) ?
|
|
32
|
+
`${attributeName}="${attributeValue}"` :
|
|
33
|
+
`${attributesHML} ${attributeName}="${attributeValue}"`;
|
|
34
|
+
|
|
35
|
+
return attributesHML;
|
|
36
|
+
|
|
37
|
+
}, null),
|
|
38
|
+
selfClosingTag = `<${tagName} ${attributesHTML}/>`;
|
|
39
|
+
|
|
40
|
+
return selfClosingTag;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
attributeNames(context) {
|
|
44
|
+
const attributeNames = [
|
|
45
|
+
ALT_ATTRIBUTE_NAME,
|
|
46
|
+
SRC_ATTRIBUTE_NAME
|
|
47
|
+
];
|
|
48
|
+
|
|
49
|
+
return attributeNames;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
attributeValues(context) {
|
|
53
|
+
const alt = this.alt(context),
|
|
54
|
+
src = this.src(context),
|
|
55
|
+
attributeValues = [
|
|
56
|
+
alt,
|
|
57
|
+
src
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
return attributeValues;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
mount(parentDOMElement, siblingDOMElement, context) {
|
|
64
|
+
this.domElement = this.createDOMElement(context);
|
|
65
|
+
|
|
66
|
+
parentDOMElement.insertBefore(this.domElement, siblingDOMElement)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
unmount(parentDOMElement, context) {
|
|
70
|
+
parentDOMElement.removeChild(this.domElement);
|
|
71
|
+
|
|
72
|
+
this.domElement = null;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
createDOMElement(context) {
|
|
76
|
+
let domElement;
|
|
77
|
+
|
|
78
|
+
const tagName = this.tagName(context);
|
|
79
|
+
|
|
80
|
+
domElement = document.createElement(tagName);
|
|
81
|
+
|
|
82
|
+
const attributeNames = this.attributeNames(context),
|
|
83
|
+
attributeValues = this.attributeValues(context);
|
|
84
|
+
|
|
85
|
+
attributeNames.forEach((attributeName, index) => {
|
|
86
|
+
const attributeValue = attributeValues[index];
|
|
87
|
+
|
|
88
|
+
domElement.setAttribute(attributeName, attributeValue);
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
return domElement;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
childNodesAsHTML(indent, context) {
|
|
95
|
+
const childNodesHTML = EMPTY_STRING;
|
|
96
|
+
|
|
97
|
+
return childNodesHTML;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
static tagName = "img";
|
|
101
|
+
|
|
102
|
+
static className = null;
|
|
103
|
+
|
|
104
|
+
static fromNothing() { return HTMLNode.fromNothing(ImageHTMLNode); }
|
|
105
|
+
|
|
106
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(ImageHTMLNode, outerNode); }
|
|
107
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import HTMLNode from "../../node/html";
|
|
4
|
+
|
|
5
|
+
export default class IndexListHTMLNode extends HTMLNode {
|
|
6
|
+
static tagName = "ul";
|
|
7
|
+
|
|
8
|
+
static className = "index";
|
|
9
|
+
|
|
10
|
+
static fromNothing() { return HTMLNode.fromNothing(IndexListHTMLNode); }
|
|
11
|
+
|
|
12
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(IndexListHTMLNode, outerNode); }
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import HTMLNode from "../../../node/html";
|
|
4
|
+
|
|
5
|
+
export default class ContentsItemHTMLNode extends HTMLNode {
|
|
6
|
+
static tagName = "li";
|
|
7
|
+
|
|
8
|
+
static className = "contents";
|
|
9
|
+
|
|
10
|
+
static fromNothing() { return HTMLNode.fromNothing(ContentsItemHTMLNode); }
|
|
11
|
+
|
|
12
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(ContentsItemHTMLNode, outerNode); }
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import HTMLNode from "../../../node/html";
|
|
4
|
+
|
|
5
|
+
export default class FootnotesListItemNode extends HTMLNode {
|
|
6
|
+
static tagName = "li";
|
|
7
|
+
|
|
8
|
+
static className = "footnotes";
|
|
9
|
+
|
|
10
|
+
static fromNothing() { return HTMLNode.fromNothing(FootnotesListItemNode); }
|
|
11
|
+
|
|
12
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(FootnotesListItemNode, outerNode); }
|
|
13
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import HTMLNode from "../../../node/html";
|
|
4
4
|
|
|
5
|
-
export default class
|
|
5
|
+
export default class IndexItemHTMLNode extends HTMLNode {
|
|
6
6
|
asHTML(indent, context) {
|
|
7
7
|
indent = this.adjustIndent(indent);
|
|
8
8
|
|
|
@@ -23,5 +23,11 @@ export default class IndexItemMarkdownNode extends MarkdownNode {
|
|
|
23
23
|
return childNodesHTML;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
static
|
|
26
|
+
static tagName = "li";
|
|
27
|
+
|
|
28
|
+
static className = "index";
|
|
29
|
+
|
|
30
|
+
static fromNothing() { return HTMLNode.fromNothing(IndexItemHTMLNode); }
|
|
31
|
+
|
|
32
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(IndexItemHTMLNode, outerNode); }
|
|
27
33
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import HTMLNode from "
|
|
3
|
+
import HTMLNode from "../../../node/html";
|
|
4
4
|
|
|
5
5
|
import { VALUE_ATTRIBUTE_NAME } from "../../../attributeNames";
|
|
6
6
|
|
|
@@ -20,6 +20,10 @@ export default class OrderedItemHTMLNode extends HTMLNode {
|
|
|
20
20
|
return attributeValue;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
static tagName = "li";
|
|
24
|
+
|
|
25
|
+
static className = null;
|
|
26
|
+
|
|
23
27
|
static fromNothing() { return HTMLNode.fromNothing(OrderedItemHTMLNode); }
|
|
24
28
|
|
|
25
29
|
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(OrderedItemHTMLNode, outerNode); }
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import HTMLNode from "../../../node/html";
|
|
4
|
+
|
|
5
|
+
export default class UnorderedItemHTMLNode extends HTMLNode {
|
|
6
|
+
static tagName = "li";
|
|
7
|
+
|
|
8
|
+
static className = null;
|
|
9
|
+
|
|
10
|
+
static fromNothing() { return HTMLNode.fromNothing(UnorderedItemHTMLNode); }
|
|
11
|
+
|
|
12
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(UnorderedItemHTMLNode, outerNode); }
|
|
13
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import HTMLNode from "../../node/html";
|
|
4
|
+
import PlainTextHTMLNode from "./text/plain";
|
|
5
|
+
|
|
6
|
+
import { EMPTY_STRING } from "../../constants";
|
|
7
|
+
|
|
8
|
+
export default class LineHTMLNode extends HTMLNode {
|
|
9
|
+
childNodesAsHTML(indent, context) {
|
|
10
|
+
let childNodesHTML;
|
|
11
|
+
|
|
12
|
+
let previousChildNode = null;
|
|
13
|
+
|
|
14
|
+
childNodesHTML = this.reduceChildNode((childNodesHTML, childNode) => {
|
|
15
|
+
const previousChildNodePlainTextHTMLNode = (previousChildNode instanceof PlainTextHTMLNode);
|
|
16
|
+
|
|
17
|
+
if (previousChildNodePlainTextHTMLNode) {
|
|
18
|
+
const childNodePlainTextHTMLNode = (childNode instanceof PlainTextHTMLNode);
|
|
19
|
+
|
|
20
|
+
if (!childNodePlainTextHTMLNode) {
|
|
21
|
+
childNodesHTML = `${childNodesHTML}
|
|
22
|
+
`;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const childNodeHTML = childNode.asHTML(indent, context);
|
|
27
|
+
|
|
28
|
+
childNodesHTML = `${childNodesHTML}${childNodeHTML}`;
|
|
29
|
+
|
|
30
|
+
previousChildNode = childNode; ///
|
|
31
|
+
|
|
32
|
+
return childNodesHTML;
|
|
33
|
+
}, EMPTY_STRING);
|
|
34
|
+
|
|
35
|
+
const previousChildNodePlainTextHTMLNode = (previousChildNode instanceof PlainTextHTMLNode);
|
|
36
|
+
|
|
37
|
+
if (previousChildNodePlainTextHTMLNode) {
|
|
38
|
+
childNodesHTML = `${childNodesHTML}
|
|
39
|
+
`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return childNodesHTML;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
childNodesAsPlainText(context) {
|
|
46
|
+
const childNodesPlainText = this.reduceChildNode((childNodesPlainText, childNode) => {
|
|
47
|
+
const childNodePlainText = childNode.asPlainText(context);
|
|
48
|
+
|
|
49
|
+
childNodesPlainText = `${childNodesPlainText}${childNodePlainText}`;
|
|
50
|
+
|
|
51
|
+
return childNodesPlainText;
|
|
52
|
+
}, EMPTY_STRING);
|
|
53
|
+
|
|
54
|
+
return childNodesPlainText;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
static tagName = "span";
|
|
58
|
+
|
|
59
|
+
static className = "line";
|
|
60
|
+
|
|
61
|
+
static fromNothing() { return HTMLNode.fromNothing(LineHTMLNode); }
|
|
62
|
+
|
|
63
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(LineHTMLNode, outerNode); }
|
|
64
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import HTMLNode from "
|
|
3
|
+
import HTMLNode from "../../../node/html";
|
|
4
4
|
|
|
5
|
-
import { CONTENTS_PREPEND } from "
|
|
6
|
-
import { HREF_ATTRIBUTE_NAME } from "
|
|
5
|
+
import { CONTENTS_PREPEND } from "../../../prepends";
|
|
6
|
+
import { HREF_ATTRIBUTE_NAME } from "../../../attributeNames";
|
|
7
7
|
|
|
8
8
|
export default class ContentsLinkHTMLNode extends HTMLNode {
|
|
9
9
|
getIdentifier() { return this.outerNode.getIdentifier(); }
|
|
@@ -22,6 +22,10 @@ export default class ContentsLinkHTMLNode extends HTMLNode {
|
|
|
22
22
|
return attributeValue;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
static tagName = "a";
|
|
26
|
+
|
|
27
|
+
static className = "contents-link";
|
|
28
|
+
|
|
25
29
|
static fromNothing() { return HTMLNode.fromNothing(ContentsLinkHTMLNode); }
|
|
26
30
|
|
|
27
31
|
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(ContentsLinkHTMLNode, outerNode); }
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import HTMLNode from "../../../node/html";
|
|
4
|
+
|
|
5
|
+
import { HREF_ATTRIBUTE_NAME } from "../../../attributeNames";
|
|
6
|
+
|
|
7
|
+
export default class EmailLinkHTMLNode extends HTMLNode {
|
|
8
|
+
isSimple() { return this.outerNode.isSimple(); }
|
|
9
|
+
|
|
10
|
+
emailAddress(context) { return this.outerNode.emailAddress(context); }
|
|
11
|
+
|
|
12
|
+
attributeName(context) {
|
|
13
|
+
const attributeName = HREF_ATTRIBUTE_NAME;
|
|
14
|
+
|
|
15
|
+
return attributeName;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
attributeValue(context) {
|
|
19
|
+
const emailAddress = this.emailAddress(context),
|
|
20
|
+
attributeValue = `mailto:${emailAddress}`;
|
|
21
|
+
|
|
22
|
+
return attributeValue;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
mount(parentDOMElement, siblingDOMElement, context) {
|
|
26
|
+
super.mount(parentDOMElement, siblingDOMElement, context);
|
|
27
|
+
|
|
28
|
+
const simple = this.isSimple();
|
|
29
|
+
|
|
30
|
+
if (simple) {
|
|
31
|
+
const emailAddress = this.emailAddress(context),
|
|
32
|
+
content = emailAddress, ///
|
|
33
|
+
textNode = document.createTextNode(content),
|
|
34
|
+
domElement = textNode, ///
|
|
35
|
+
parentDOMElement = this.domElement, ///
|
|
36
|
+
siblingDOMElement = null;
|
|
37
|
+
|
|
38
|
+
parentDOMElement.insertBefore(domElement, siblingDOMElement)
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
unmount(parentDOMElement, context) {
|
|
43
|
+
const simple = this.isSimple();
|
|
44
|
+
|
|
45
|
+
if (simple) {
|
|
46
|
+
const parentDOMElement = this.domElement,
|
|
47
|
+
firstChild = parentDOMElement.firstChild,
|
|
48
|
+
domElement = firstChild; ///
|
|
49
|
+
|
|
50
|
+
parentDOMElement.removeChild(domElement)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
super.unmount(parentDOMElement, context);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
asPlainText(context) {
|
|
57
|
+
let plainText;
|
|
58
|
+
|
|
59
|
+
const simple = this.isSimple();
|
|
60
|
+
|
|
61
|
+
if (simple) {
|
|
62
|
+
const emailAddress = this.emailAddress(context);
|
|
63
|
+
|
|
64
|
+
plainText = emailAddress; ///
|
|
65
|
+
} else {
|
|
66
|
+
plainText = super.asPlainText(context);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return plainText;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
childNodesAsHTML(indent, context) {
|
|
73
|
+
let childNodesHTML;
|
|
74
|
+
|
|
75
|
+
const simple = this.isSimple();
|
|
76
|
+
|
|
77
|
+
if (simple) {
|
|
78
|
+
const emailAddress = this.emailAddress(context);
|
|
79
|
+
|
|
80
|
+
childNodesHTML = `${emailAddress}
|
|
81
|
+
`;
|
|
82
|
+
} else {
|
|
83
|
+
childNodesHTML = super.childNodesAsHTML(indent, context);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return childNodesHTML;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
static tagName = "a";
|
|
90
|
+
|
|
91
|
+
static className = "email-link";
|
|
92
|
+
|
|
93
|
+
static fromNothing() { return HTMLNode.fromNothing(EmailLinkHTMLNode); }
|
|
94
|
+
|
|
95
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(EmailLinkHTMLNode, outerNode); }
|
|
96
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import HTMLNode from "../../../node/html";
|
|
4
|
+
|
|
5
|
+
import { FOOTNOTE_PREPEND } from "../../../prepends";
|
|
6
|
+
import { HREF_ATTRIBUTE_NAME } from "../../../attributeNames";
|
|
7
|
+
|
|
8
|
+
export default class FootnoteLinkHTMLNode extends HTMLNode {
|
|
9
|
+
attributeName(context) {
|
|
10
|
+
const attributeName = HREF_ATTRIBUTE_NAME;
|
|
11
|
+
|
|
12
|
+
return attributeName;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
attributeValue(context) {
|
|
16
|
+
const prepend = FOOTNOTE_PREPEND,
|
|
17
|
+
identifier = this.identifier(context),
|
|
18
|
+
attributeValue = `#${prepend}-${identifier}`; ///
|
|
19
|
+
|
|
20
|
+
return attributeValue;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
childNodesAsHTML(indent, context) {
|
|
24
|
+
const content = this.content(context),
|
|
25
|
+
childNodesHTML = content; ///
|
|
26
|
+
|
|
27
|
+
return childNodesHTML;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
static fromNothing() { return HTMLNode.fromNothing(FootnoteLinkHTMLNode); }
|
|
31
|
+
|
|
32
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(FootnoteLinkHTMLNode, outerNode); }
|
|
33
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import HTMLNode from "../../../node/html";
|
|
4
|
+
|
|
5
|
+
import { HREF_ATTRIBUTE_NAME } from "../../../attributeNames";
|
|
6
|
+
|
|
7
|
+
export default class HyperlinkHTMLNode extends HTMLNode {
|
|
8
|
+
isSimple() { return this.outerNode.isSimple(); }
|
|
9
|
+
|
|
10
|
+
url(context) { return this.outerNode.url(context); }
|
|
11
|
+
|
|
12
|
+
attributeName(context) {
|
|
13
|
+
const attributeName = HREF_ATTRIBUTE_NAME;
|
|
14
|
+
|
|
15
|
+
return attributeName;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
attributeValue(context) {
|
|
19
|
+
const url = this.url(context),
|
|
20
|
+
attributeValue = url; ///
|
|
21
|
+
|
|
22
|
+
return attributeValue;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
mount(parentDOMElement, siblingDOMElement, context) {
|
|
26
|
+
super.mount(parentDOMElement, siblingDOMElement, context);
|
|
27
|
+
|
|
28
|
+
const simple = this.isSimple();
|
|
29
|
+
|
|
30
|
+
if (simple) {
|
|
31
|
+
const url = this.url(context),
|
|
32
|
+
content = url, ///
|
|
33
|
+
textNode = document.createTextNode(content),
|
|
34
|
+
domElement = textNode, ///
|
|
35
|
+
parentDOMElement = this.domElement, ///
|
|
36
|
+
siblingDOMElement = null;
|
|
37
|
+
|
|
38
|
+
parentDOMElement.insertBefore(domElement, siblingDOMElement)
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
unmount(parentDOMElement, context) {
|
|
43
|
+
const simple = this.isSimple();
|
|
44
|
+
|
|
45
|
+
if (simple) {
|
|
46
|
+
const parentDOMElement = this.domElement,
|
|
47
|
+
firstChild = parentDOMElement.firstChild,
|
|
48
|
+
domElement = firstChild; ///
|
|
49
|
+
|
|
50
|
+
parentDOMElement.removeChild(domElement)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
super.unmount(parentDOMElement, context);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
asPlainText(context) {
|
|
57
|
+
let plainText;
|
|
58
|
+
|
|
59
|
+
const simple = this.isSimple();
|
|
60
|
+
|
|
61
|
+
if (simple) {
|
|
62
|
+
const url = this.url(context);
|
|
63
|
+
|
|
64
|
+
plainText = url; ///
|
|
65
|
+
} else {
|
|
66
|
+
plainText = super.asPlainText(context);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return plainText;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
childNodesAsHTML(indent, context) {
|
|
73
|
+
let childNodesHTML;
|
|
74
|
+
|
|
75
|
+
const simple = this.isSimple();
|
|
76
|
+
|
|
77
|
+
if (simple) {
|
|
78
|
+
const url = this.url(context);
|
|
79
|
+
|
|
80
|
+
childNodesHTML = `${url}
|
|
81
|
+
`;
|
|
82
|
+
} else {
|
|
83
|
+
childNodesHTML = super.childNodesAsHTML(indent, context);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return childNodesHTML;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
static tagName = "a";
|
|
90
|
+
|
|
91
|
+
static className = "hyperlink";
|
|
92
|
+
|
|
93
|
+
static fromNothing() { return HTMLNode.fromNothing(HyperlinkHTMLNode); }
|
|
94
|
+
|
|
95
|
+
static fromOuterNode(outerNode) { return HTMLNode.fromOuterNode(HyperlinkHTMLNode, outerNode); }
|
|
96
|
+
}
|