highmark-markdown 1.1.22 → 1.1.24
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/example.js +350 -1393
- package/lib/example/view/button/page.js +1 -1
- package/lib/example/view/button/tab/css.js +1 -1
- package/lib/example/view/button/tab/html.js +1 -1
- package/lib/example/view/button/tab/markdown.js +1 -1
- package/lib/example/view/button/tab/markdownStyle.js +1 -1
- package/lib/example/view/button/tab/plainText.js +1 -1
- package/lib/example/view/button/tab/preview.js +1 -1
- package/lib/example/view/button/tab.js +1 -1
- package/lib/example/view/div/container/css.js +1 -1
- package/lib/example/view/div/container/html.js +1 -1
- package/lib/example/view/div/container/markdown.js +1 -1
- package/lib/example/view/div/container/markdownStyle.js +1 -1
- package/lib/example/view/div/container/plainText.js +1 -1
- package/lib/example/view/div/container/preview.js +1 -1
- package/lib/example/view/div/html.js +1 -1
- package/lib/example/view/div/preview.js +1 -1
- package/lib/example/view/div/sizeable/left.js +1 -1
- package/lib/example/view/div/tabButtons.js +1 -1
- package/lib/example/view/textarea/css.js +1 -1
- package/lib/example/view/textarea/markdown.js +1 -1
- package/lib/example/view/textarea/markdownStyle.js +1 -1
- package/lib/example/view/textarea/parseTree/css.js +1 -1
- package/lib/example/view/textarea/parseTree/html.js +1 -1
- package/lib/example/view/textarea/parseTree/markdown.js +1 -1
- package/lib/example/view/textarea/parseTree/markdownStyle.js +1 -1
- package/lib/example/view/textarea/parseTree.js +1 -1
- package/lib/example/view/textarea/plainText.js +1 -1
- package/lib/example/view/xmp.js +1 -1
- package/lib/example/view.js +2 -3
- package/lib/markdown/lexer.js +2 -3
- package/lib/markdown/parser.js +1 -1
- package/lib/markdownStyle/lexer.js +2 -3
- package/lib/markdownStyle/parser.js +1 -1
- package/lib/node/css/amount.js +1 -1
- package/lib/node/css/argument.js +1 -1
- package/lib/node/css/arguments.js +1 -1
- package/lib/node/css/class.js +1 -1
- package/lib/node/css/colour.js +1 -1
- package/lib/node/css/declaration.js +1 -1
- package/lib/node/css/identifier.js +1 -1
- package/lib/node/css/name.js +1 -1
- package/lib/node/css/pseudoClass.js +1 -1
- package/lib/node/css/ruleName.js +1 -1
- package/lib/node/css/ruleSet.js +1 -1
- package/lib/node/css/selector.js +1 -1
- package/lib/node/css/selectors.js +1 -1
- package/lib/node/css/selectorsList.js +1 -1
- package/lib/node/css/string.js +1 -1
- package/lib/node/css/topmost.js +1 -1
- package/lib/node/css/value.js +1 -1
- package/lib/node/css/values.js +1 -1
- package/lib/node/css.js +1 -1
- package/lib/node/html/directive/contents.js +1 -1
- package/lib/node/html/directive/footnotes.js +1 -1
- package/lib/node/html/directive/index.js +1 -1
- package/lib/node/html/directive/pageNumber.js +1 -1
- package/lib/node/html/directive.js +1 -1
- package/lib/node/html/division.js +57 -49
- package/lib/node/html/error.js +1 -1
- package/lib/node/html/footnote.js +20 -1
- package/lib/node/html/heading/index.js +1 -1
- package/lib/node/html/heading/primary.js +1 -1
- package/lib/node/html/heading/quaternary.js +1 -1
- package/lib/node/html/heading/secondary.js +1 -1
- package/lib/node/html/heading/tertiary.js +1 -1
- package/lib/node/html/heading.js +1 -1
- package/lib/node/html/image.js +1 -1
- package/lib/node/html/item/contents.js +1 -1
- package/lib/node/html/item/footnote.js +5 -5
- package/lib/node/html/item/index.js +1 -1
- package/lib/node/html/item/ordered.js +1 -1
- package/lib/node/html/item/unordered.js +1 -1
- package/lib/node/html/line/block.js +1 -1
- package/lib/node/html/line.js +1 -1
- package/lib/node/html/link/email.js +1 -1
- package/lib/node/html/link/footnote.js +44 -23
- package/lib/node/html/link/hyper.js +1 -1
- package/lib/node/html/list/contents.js +1 -1
- package/lib/node/html/list/index.js +1 -1
- package/lib/node/html/list/ordered.js +1 -1
- package/lib/node/html/list/unordered.js +1 -1
- package/lib/node/html/listing/block.js +1 -1
- package/lib/node/html/listing/inline.js +1 -1
- package/lib/node/html/paragraph.js +1 -1
- package/lib/node/html/reference.js +1 -1
- package/lib/node/html/table.js +1 -1
- package/lib/node/html/tableBody.js +1 -1
- package/lib/node/html/tableBodyCell.js +1 -1
- package/lib/node/html/tableBodyRow.js +1 -1
- package/lib/node/html/tableHead.js +1 -1
- package/lib/node/html/tableHeadCell.js +1 -1
- package/lib/node/html/tableHeadRow.js +1 -1
- package/lib/node/html/text/block.js +1 -1
- package/lib/node/html/text/comma.js +1 -1
- package/lib/node/html/text/emphasised.js +1 -1
- package/lib/node/html/text/inline.js +1 -1
- package/lib/node/html/text/plain.js +1 -1
- package/lib/node/html/text/strong.js +1 -1
- package/lib/node/html/text/stronglyEmphasised.js +1 -1
- package/lib/node/html/text.js +1 -1
- package/lib/node/html/topmost.js +10 -8
- package/lib/node/html.js +1 -1
- package/lib/node/markdown/blockEnd.js +1 -1
- package/lib/node/markdown/blockStart.js +1 -1
- package/lib/node/markdown/className.js +1 -1
- package/lib/node/markdown/directive/embed.js +1 -1
- package/lib/node/markdown/directive/include.js +1 -1
- package/lib/node/markdown/error.js +1 -1
- package/lib/node/markdown/footnote.js +1 -1
- package/lib/node/markdown/hyperlink.js +1 -1
- package/lib/node/markdown/image.js +1 -1
- package/lib/node/markdown/item/ordered.js +1 -1
- package/lib/node/markdown/link/email.js +1 -1
- package/lib/node/markdown/link/footnote.js +1 -1
- package/lib/node/markdown/listng/block.js +1 -1
- package/lib/node/markdown/listng/inline.js +1 -1
- package/lib/node/markdown/path.js +1 -1
- package/lib/node/markdown/reference.js +1 -1
- package/lib/node/markdown/subDivision.js +1 -1
- package/lib/node/markdown/text/block.js +1 -1
- package/lib/node/markdown/text/plain.js +1 -1
- package/lib/node/markdown/text.js +1 -1
- package/lib/node/markdown/topmost.js +1 -1
- package/lib/node/markdown.js +1 -1
- package/lib/node/markdownStyle/amount.js +1 -1
- package/lib/node/markdownStyle/argument.js +1 -1
- package/lib/node/markdownStyle/arguments.js +1 -1
- package/lib/node/markdownStyle/colour.js +1 -1
- package/lib/node/markdownStyle/declaration.js +1 -1
- package/lib/node/markdownStyle/error.js +1 -1
- package/lib/node/markdownStyle/identifier.js +1 -1
- package/lib/node/markdownStyle/name.js +1 -1
- package/lib/node/markdownStyle/nonsense.js +1 -1
- package/lib/node/markdownStyle/pseudoClass.js +1 -1
- package/lib/node/markdownStyle/ruleName.js +1 -1
- package/lib/node/markdownStyle/ruleSet.js +1 -1
- package/lib/node/markdownStyle/selector.js +1 -1
- package/lib/node/markdownStyle/selectors.js +1 -1
- package/lib/node/markdownStyle/selectorsList.js +1 -1
- package/lib/node/markdownStyle/string.js +1 -1
- package/lib/node/markdownStyle/topmost.js +1 -1
- package/lib/node/markdownStyle/value.js +1 -1
- package/lib/node/markdownStyle/values.js +1 -1
- package/lib/node/markdownStyle.js +1 -1
- package/lib/styleElement/markdown/default.js +1 -1
- package/lib/transform/css/ruleSet.js +1 -1
- package/lib/transform/css/selectors.js +1 -1
- package/lib/transform/html/division.js +4 -4
- package/lib/transform/html/footnote.js +3 -22
- package/lib/transform/html/heading/index.js +1 -1
- package/lib/transform/html/index.js +12 -12
- package/lib/transform/html/indexAnchor.js +2 -2
- package/lib/transform/html/item/contents.js +1 -1
- package/lib/transform/html/item/footnote.js +4 -4
- package/lib/transform/html/item/index.js +1 -1
- package/lib/transform/html/line.js +1 -8
- package/lib/transform/html/link/contents.js +1 -1
- package/lib/transform/html/link/footnote.js +1 -1
- package/lib/transform/html/list/contents.js +8 -8
- package/lib/transform/html/list/footnotes.js +1 -1
- package/lib/transform/html/list/index.js +1 -1
- package/lib/transform/html/pageNumber.js +1 -1
- package/lib/transform/html.js +3 -23
- package/lib/transform/markdown/directive/embed.js +3 -3
- package/lib/transform/markdown/directive/ignore.js +1 -1
- package/lib/transform/markdown/directive/include.js +1 -1
- package/lib/transform/markdown/subDivision.js +1 -1
- package/lib/transform/markdown.js +1 -1
- package/lib/utilities/division.js +9 -135
- package/lib/utilities/html.js +3 -12
- package/package.json +1 -1
- package/src/example/view.js +1 -13
- package/src/node/html/division.js +77 -70
- package/src/node/html/footnote.js +21 -0
- package/src/node/html/heading/index.js +1 -1
- package/src/node/html/item/footnote.js +2 -3
- package/src/node/html/link/email.js +1 -1
- package/src/node/html/link/footnote.js +48 -32
- package/src/node/html/topmost.js +9 -13
- package/src/transform/html/division.js +2 -2
- package/src/transform/html/footnote.js +2 -24
- package/src/transform/html/index.js +13 -13
- package/src/transform/html/indexAnchor.js +1 -1
- package/src/transform/html/item/footnote.js +4 -4
- package/src/transform/html/line.js +0 -8
- package/src/transform/html/list/contents.js +5 -7
- package/src/transform/html.js +2 -26
- package/src/transform/markdown/directive/embed.js +2 -2
- package/src/utilities/division.js +8 -170
- package/src/utilities/html.js +2 -10
- package/lib/transform/html/directive/contents.js +0 -116
- package/lib/transform/html/directive/footnotes.js +0 -108
- package/lib/transform/html/directive/index.js +0 -116
- package/lib/transform/html/directive/pageNumber.js +0 -108
- package/lib/transform/html/link/nestedFootnote.js +0 -108
- package/src/transform/html/directive/contents.js +0 -19
- package/src/transform/html/directive/footnotes.js +0 -12
- package/src/transform/html/directive/index.js +0 -19
- package/src/transform/html/directive/pageNumber.js +0 -12
- package/src/transform/html/link/nestedFootnote.js +0 -12
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
3
5
|
import HTMLNode from "../../node/html";
|
|
4
6
|
import PageNumberHTMLNode from "../../node/html/pageNumber";
|
|
5
7
|
import PageNumberHTMLTransform from "../../transform/html/pageNumber";
|
|
6
8
|
import IndexAnchorHTMLTransform from "../../transform/html/indexAnchor";
|
|
9
|
+
import FootnoteItemHTMLTransform from "../../transform/html/item/footnote";
|
|
7
10
|
import FootnotesListHTMLTransform from "../../transform/html/list/footnotes";
|
|
8
11
|
|
|
9
12
|
import { DIVISION_MARKDOWN_RULE_NAME } from "../../ruleNames/markdown";
|
|
10
|
-
import { groupHTMLNodes,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
removePageNumberDirectiveHTMLNode,
|
|
18
|
-
removeNestedFootnoteLinkHTMLNodes,
|
|
19
|
-
lineHTMLTransformsFromFootnoteHTMLTransforms,
|
|
20
|
-
footnoteItemHTMLTransformsFromLineHTMLTransforms } from "../../utilities/division";
|
|
13
|
+
import { groupHTMLNodes, removeHTMLNodes, paginateGroupedHTMLNodes } from "../../utilities/division";
|
|
14
|
+
import { footnotesHTMLNodesFromNode,
|
|
15
|
+
footnoteLinkHTMLNodesFromNode,
|
|
16
|
+
footnotesDirectiveHTMLNodeFromNode,
|
|
17
|
+
pageNumberDirectiveHTMLNodeFromNode } from "../../utilities/html";
|
|
18
|
+
|
|
19
|
+
const { extract } = arrayUtilities;
|
|
21
20
|
|
|
22
21
|
export default class DivisionHTMLNode extends HTMLNode {
|
|
23
22
|
constructor(outerNode, parentNode, childNodes, domElement, divisionClassName) {
|
|
@@ -42,41 +41,36 @@ export default class DivisionHTMLNode extends HTMLNode {
|
|
|
42
41
|
return ruleNme;
|
|
43
42
|
}
|
|
44
43
|
|
|
45
|
-
|
|
46
|
-
this.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
callback(firstHTMLNode);
|
|
50
|
-
});
|
|
51
|
-
}
|
|
44
|
+
pageNumber() {
|
|
45
|
+
const pageNumber = this.fromFirstLastChildNode((firstLastChildNode) => {
|
|
46
|
+
let pageNumber = null;
|
|
52
47
|
|
|
53
|
-
|
|
54
|
-
const node = this;
|
|
48
|
+
const firstLastChildNodePageNumberHTMLNode = (firstLastChildNode instanceof PageNumberHTMLNode);
|
|
55
49
|
|
|
56
|
-
|
|
50
|
+
if (firstLastChildNodePageNumberHTMLNode) {
|
|
51
|
+
const pageNumberHTMLNode = firstLastChildNode; ///
|
|
57
52
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
footnoteHTMLTransforms = removeFootnoteHTMLNodes(node);
|
|
53
|
+
pageNumber = pageNumberHTMLNode.getPageNumber();
|
|
54
|
+
}
|
|
61
55
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
56
|
+
return pageNumber;
|
|
57
|
+
});
|
|
65
58
|
|
|
66
|
-
|
|
59
|
+
return pageNumber;
|
|
67
60
|
}
|
|
68
61
|
|
|
69
|
-
paginate(
|
|
70
|
-
const node = this,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
identifierMap = {},
|
|
74
|
-
divisionClassName = outerNode.className(context);
|
|
62
|
+
paginate(divisionHTMLNodes, context) {
|
|
63
|
+
const node = this,
|
|
64
|
+
footnotesDirectiveHTMLNode = footnotesDirectiveHTMLNodeFromNode(node),
|
|
65
|
+
pageNumberDirectiveHTMLNode = pageNumberDirectiveHTMLNodeFromNode(node);
|
|
75
66
|
|
|
76
67
|
const htmlNodes = removeHTMLNodes(node),
|
|
77
68
|
groupedHTMLNodesArray = groupHTMLNodes(htmlNodes),
|
|
78
69
|
paginatedHTMLNodesArray = paginateGroupedHTMLNodes(groupedHTMLNodesArray, context);
|
|
79
70
|
|
|
71
|
+
const outerNode = this.getOuterNode(),
|
|
72
|
+
divisionClassName = outerNode.className(context);
|
|
73
|
+
|
|
80
74
|
paginatedHTMLNodesArray.forEach((paginatedHTMLNodes) => {
|
|
81
75
|
let pageNumber;
|
|
82
76
|
|
|
@@ -84,19 +78,12 @@ export default class DivisionHTMLNode extends HTMLNode {
|
|
|
84
78
|
|
|
85
79
|
const divisionHTMLNode = DivisionHTMLNode.fromPaginatedHTMLNodesAndDivisionClassName(paginatedHTMLNodes, divisionClassName);
|
|
86
80
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const pageNumberHTMLTransform = PageNumberHTMLTransform.fromPageNumber(pageNumber);
|
|
91
|
-
|
|
92
|
-
pageNumberHTMLTransform.appendToDivisionHTMLNode(divisionHTMLNode);
|
|
93
|
-
|
|
94
|
-
this.fromFirstHTMLNode((firstHTMLNode) => {
|
|
95
|
-
const indexAnchorHTMLTransform = IndexAnchorHTMLTransform.fromPageNumber(pageNumber),
|
|
96
|
-
htmlNode = firstHTMLNode; ///
|
|
81
|
+
if (footnotesDirectiveHTMLNode !== null) {
|
|
82
|
+
divisionHTMLNode.resolveFootnotes(context);
|
|
83
|
+
}
|
|
97
84
|
|
|
98
|
-
|
|
99
|
-
|
|
85
|
+
if (pageNumberDirectiveHTMLNode !== null) {
|
|
86
|
+
divisionHTMLNode.resolvePageNumber(pageNumber, context);
|
|
100
87
|
}
|
|
101
88
|
|
|
102
89
|
divisionHTMLNodes.push(divisionHTMLNode);
|
|
@@ -109,43 +96,63 @@ export default class DivisionHTMLNode extends HTMLNode {
|
|
|
109
96
|
});
|
|
110
97
|
}
|
|
111
98
|
|
|
112
|
-
|
|
113
|
-
const
|
|
114
|
-
|
|
99
|
+
resolveFootnotes(context) {
|
|
100
|
+
const node = this, ///
|
|
101
|
+
footnoteHTMLNodes = footnotesHTMLNodesFromNode(node),
|
|
102
|
+
footnoteLinkHTMLNodes = footnoteLinkHTMLNodesFromNode(node);
|
|
115
103
|
|
|
116
|
-
|
|
104
|
+
let start = 0;
|
|
117
105
|
|
|
118
|
-
|
|
119
|
-
const pageNumberHTMLNode = firstLastChildNode; ///
|
|
106
|
+
const footnoteItemHTMLTransforms = [];
|
|
120
107
|
|
|
121
|
-
|
|
122
|
-
|
|
108
|
+
footnoteLinkHTMLNodes.forEach((footnoteLinkHTMLNode) => {
|
|
109
|
+
const identifier = footnoteLinkHTMLNode.identifier(context),
|
|
110
|
+
footnoteHTMLNode = extract(footnoteHTMLNodes, (footnoteHTMLNode) => {
|
|
111
|
+
const identifierMatches = footnoteHTMLNode.matchIdentifier(identifier);
|
|
123
112
|
|
|
124
|
-
|
|
125
|
-
|
|
113
|
+
if (identifierMatches) {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
}) || null;
|
|
126
117
|
|
|
127
|
-
|
|
128
|
-
|
|
118
|
+
if (footnoteHTMLNode !== null) {
|
|
119
|
+
const number = start; ///
|
|
129
120
|
|
|
130
|
-
|
|
131
|
-
let footnotesListHTMLTransform = null;
|
|
121
|
+
footnoteLinkHTMLNode.setNumber(number);
|
|
132
122
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
footnoteHTMLTransformsLength = footnoteHTMLTransforms.length;
|
|
123
|
+
const paragraphHTMLNode = footnoteHTMLNode.getParagraphHTMLNode(),
|
|
124
|
+
footnoteItemHTMLTransform = FootnoteItemHTMLTransform.fromParagraphHTMLNOdeAndIdentifier(paragraphHTMLNode, identifier)
|
|
136
125
|
|
|
137
|
-
|
|
138
|
-
const divisionHTMLNode = node, ///
|
|
139
|
-
start = numberFootnoteLinkHTMLNodes(footnoteHTMLTransforms, identifierMap, node, context),
|
|
140
|
-
lineHTMLTransforms = lineHTMLTransformsFromFootnoteHTMLTransforms(footnoteHTMLTransforms),
|
|
141
|
-
footnoteItemHTMLTransforms = footnoteItemHTMLTransformsFromLineHTMLTransforms(lineHTMLTransforms, identifierMap, start);
|
|
126
|
+
footnoteItemHTMLTransforms.push(footnoteItemHTMLTransform);
|
|
142
127
|
|
|
143
|
-
|
|
128
|
+
start++;
|
|
129
|
+
} else {
|
|
130
|
+
footnoteLinkHTMLNode.resetNumber()
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
const footnoteItemHTMLTransformsLength = footnoteItemHTMLTransforms.length;
|
|
135
|
+
|
|
136
|
+
if (footnoteItemHTMLTransformsLength > 0) {
|
|
137
|
+
const divisionHTMLNode = node, ///
|
|
138
|
+
footnotesListHTMLTransform = FootnotesListHTMLTransform.fromStartAndFootnoteItemHTMLTransforms(start, footnoteItemHTMLTransforms);
|
|
144
139
|
|
|
145
140
|
footnotesListHTMLTransform.appendToDivisionHTMLNode(divisionHTMLNode);
|
|
146
141
|
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
resolvePageNumber(pageNumber, context) {
|
|
145
|
+
const divisionHTMLNode = this, ///
|
|
146
|
+
pageNumberHTMLTransform = PageNumberHTMLTransform.fromPageNumber(pageNumber);
|
|
147
|
+
|
|
148
|
+
pageNumberHTMLTransform.appendToDivisionHTMLNode(divisionHTMLNode);
|
|
147
149
|
|
|
148
|
-
|
|
150
|
+
this.fromFirstChildNode((firstChildNode) => {
|
|
151
|
+
const indexAnchorHTMLTransform = IndexAnchorHTMLTransform.fromPageNumber(pageNumber),
|
|
152
|
+
htmlNode = firstChildNode; ///
|
|
153
|
+
|
|
154
|
+
indexAnchorHTMLTransform.appendToHTMLNode(htmlNode);
|
|
155
|
+
});
|
|
149
156
|
}
|
|
150
157
|
|
|
151
158
|
asString() {
|
|
@@ -4,6 +4,27 @@ import HTMLNode from "../../node/html";
|
|
|
4
4
|
import {EMPTY_STRING} from "../../constants";
|
|
5
5
|
|
|
6
6
|
export default class FootnoteHTMLNode extends HTMLNode {
|
|
7
|
+
getParagraphHTMLNode() {
|
|
8
|
+
const paragraphHTMLNode = this.fromSecondChildNode((secondChildNode) => {
|
|
9
|
+
const paragraphHTMLNode = secondChildNode; ///
|
|
10
|
+
|
|
11
|
+
return paragraphHTMLNode;
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
return paragraphHTMLNode;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
matchIdentifier(identifier, context) {
|
|
18
|
+
const identifierA = identifier; ///
|
|
19
|
+
|
|
20
|
+
identifier = this.identifier(context);
|
|
21
|
+
|
|
22
|
+
const identifierB = identifier, ///
|
|
23
|
+
identifierMatches = (identifierA === identifierB);
|
|
24
|
+
|
|
25
|
+
return identifierMatches;
|
|
26
|
+
}
|
|
27
|
+
|
|
7
28
|
identifier(context) {
|
|
8
29
|
const markdownNode = this.getMarkdownNode(),
|
|
9
30
|
identifier = markdownNode.identifier(context);
|
|
@@ -56,7 +56,7 @@ export default class IndexHeadingHTMLNode extends HTMLNode {
|
|
|
56
56
|
domElement = this.getDOMElement();
|
|
57
57
|
|
|
58
58
|
const parentDOMElement = domElement, ///
|
|
59
|
-
firstChild = domElement.firstChild
|
|
59
|
+
firstChild = domElement.firstChild;
|
|
60
60
|
|
|
61
61
|
domElement = firstChild; ///
|
|
62
62
|
|
|
@@ -24,13 +24,12 @@ export default class FootnoteItemHTMLNode extends HTMLNode {
|
|
|
24
24
|
|
|
25
25
|
static className = "footnote";
|
|
26
26
|
|
|
27
|
-
static
|
|
27
|
+
static fromParagraphTMLNodeAndIdentifier(paragraphHTMLNode, identifier) {
|
|
28
28
|
const prepend = FOOTNOTE_PREPEND,
|
|
29
29
|
anchorHTMLNode = AnchorHTMLNode.fromPrependAndIdentifier(prepend, identifier),
|
|
30
|
-
lineHTMLNode = lineHTMLTransform.getLineHTMLNode(),
|
|
31
30
|
childHTMLNodes = [
|
|
32
31
|
anchorHTMLNode,
|
|
33
|
-
|
|
32
|
+
paragraphHTMLNode
|
|
34
33
|
],
|
|
35
34
|
footnoteItemHTMLNode = HTMLNode.fromChildHTMLNodes(FootnoteItemHTMLNode, childHTMLNodes);
|
|
36
35
|
|
|
@@ -22,10 +22,12 @@ export default class FootnoteLinkHTMLNode extends HTMLNode {
|
|
|
22
22
|
this.number = number;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
resetNumber() {
|
|
26
|
+
this.number = null;
|
|
27
|
+
}
|
|
28
|
+
|
|
25
29
|
content(context) {
|
|
26
|
-
const content =
|
|
27
|
-
this.number :
|
|
28
|
-
EMPTY_STRING;
|
|
30
|
+
const content = this.number; ///
|
|
29
31
|
|
|
30
32
|
return content;
|
|
31
33
|
}
|
|
@@ -52,68 +54,82 @@ export default class FootnoteLinkHTMLNode extends HTMLNode {
|
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
mount(parentDOMElement, siblingDOMElement, context) {
|
|
55
|
-
|
|
57
|
+
if (this.number !== null) {
|
|
58
|
+
let domElement;
|
|
56
59
|
|
|
57
|
-
|
|
60
|
+
domElement = this.createDOMElement(context);
|
|
58
61
|
|
|
59
|
-
|
|
62
|
+
this.setDOMElement(domElement);
|
|
60
63
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
(siblingDOMElement !== null) ?
|
|
65
|
+
insertAfter(domElement, parentDOMElement, siblingDOMElement) :
|
|
66
|
+
insertBeforehand(domElement, parentDOMElement);
|
|
64
67
|
|
|
65
|
-
|
|
68
|
+
parentDOMElement = domElement; ///
|
|
66
69
|
|
|
67
|
-
|
|
68
|
-
|
|
70
|
+
const content = this.content(context),
|
|
71
|
+
textNode = document.createTextNode(content);
|
|
69
72
|
|
|
70
|
-
|
|
73
|
+
domElement = textNode; ///
|
|
71
74
|
|
|
72
|
-
|
|
75
|
+
insertAfterwards(domElement, parentDOMElement);
|
|
73
76
|
|
|
74
|
-
|
|
77
|
+
domElement = this.getDOMElement();
|
|
75
78
|
|
|
76
|
-
|
|
79
|
+
siblingDOMElement = domElement; ///
|
|
80
|
+
}
|
|
77
81
|
|
|
78
82
|
return siblingDOMElement;
|
|
79
83
|
}
|
|
80
84
|
|
|
81
85
|
unmount(parentDOMElement) {
|
|
82
|
-
|
|
86
|
+
if (this.number !== null) {
|
|
87
|
+
let domElement;
|
|
83
88
|
|
|
84
|
-
|
|
85
|
-
|
|
89
|
+
{
|
|
90
|
+
domElement = this.getDOMElement();
|
|
86
91
|
|
|
87
|
-
|
|
88
|
-
|
|
92
|
+
const parentDOMElement = domElement, ///
|
|
93
|
+
firstChild = domElement.firstChild;
|
|
89
94
|
|
|
90
|
-
|
|
95
|
+
domElement = firstChild; ///
|
|
91
96
|
|
|
92
|
-
|
|
93
|
-
|
|
97
|
+
remove(domElement, parentDOMElement);
|
|
98
|
+
}
|
|
94
99
|
|
|
95
|
-
|
|
100
|
+
domElement = this.getDOMElement();
|
|
96
101
|
|
|
97
|
-
|
|
102
|
+
remove(domElement, parentDOMElement);
|
|
98
103
|
|
|
99
|
-
|
|
104
|
+
this.resetDOMElement();
|
|
105
|
+
}
|
|
100
106
|
}
|
|
101
107
|
|
|
102
108
|
asHTML(indent, context) {
|
|
103
109
|
let html;
|
|
104
110
|
|
|
105
|
-
|
|
111
|
+
if (this.number === null) {
|
|
112
|
+
html = EMPTY_STRING;
|
|
113
|
+
} else {
|
|
114
|
+
indent = this.adjustIndent(indent);
|
|
106
115
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
116
|
+
const childNodesHTML = this.childNodesAsHTML(indent, context),
|
|
117
|
+
startingTag = this.startingTag(context),
|
|
118
|
+
closingTag = this.closingTag(context);
|
|
110
119
|
|
|
111
|
-
|
|
120
|
+
html = `${indent}${startingTag}${childNodesHTML}${closingTag}
|
|
112
121
|
`;
|
|
122
|
+
}
|
|
113
123
|
|
|
114
124
|
return html;
|
|
115
125
|
}
|
|
116
126
|
|
|
127
|
+
asPlainText(context) {
|
|
128
|
+
const plainText = EMPTY_STRING;
|
|
129
|
+
|
|
130
|
+
return plainText;
|
|
131
|
+
}
|
|
132
|
+
|
|
117
133
|
childNodesAsHTML(indent, context) {
|
|
118
134
|
const content = this.content(context),
|
|
119
135
|
childNodesHTML = content; ///
|
package/src/node/html/topmost.js
CHANGED
|
@@ -4,8 +4,6 @@ import HTMLNode from "../../node/html";
|
|
|
4
4
|
import IndexHTMLTransform from "../../transform/html/index";
|
|
5
5
|
import DivisionHTMLTransform from "../../transform/html/division";
|
|
6
6
|
import ContentsListHTMLTransform from "../../transform/html/list/contents";
|
|
7
|
-
import IndexDirectiveHTMLTransform from "../../transform/html/directive/index";
|
|
8
|
-
import ContentsDirectiveHTMLTransform from "../../transform/html/directive/contents";
|
|
9
7
|
|
|
10
8
|
import { HTML_MARKDOWN_RULE_NAME } from "../../ruleNames/markdown";
|
|
11
9
|
import { divisionHTMLNodesFromNode, indexDirectiveHTMLNodeFromNode, contentsDirectiveHTMLNodeFromNode } from "../../utilities/html";
|
|
@@ -54,7 +52,7 @@ export default class TopmostHTMLNode extends HTMLNode {
|
|
|
54
52
|
divisionHTMLTransforms.forEach((divisionHTMLTransform) => {
|
|
55
53
|
divisionHTMLTransform.remove();
|
|
56
54
|
|
|
57
|
-
divisionHTMLTransform.
|
|
55
|
+
divisionHTMLTransform.paginate(divisionHTMLNodes, context);
|
|
58
56
|
});
|
|
59
57
|
|
|
60
58
|
delete context.pageNumber;
|
|
@@ -77,12 +75,11 @@ export default class TopmostHTMLNode extends HTMLNode {
|
|
|
77
75
|
}
|
|
78
76
|
|
|
79
77
|
const divisionHTMLNodes = this.getDivisionHTMLNodes(),
|
|
80
|
-
|
|
81
|
-
indexHTMLTransform = IndexHTMLTransform.fromIndexDirectiveHTMLTransformAndDivisionHTMLNodes(indexDirectiveHTMLTransform, divisionHTMLNodes, context);
|
|
78
|
+
indexHTMLTransform = IndexHTMLTransform.fromIndexDirectiveHTMLNodeAndDivisionHTMLNodes(indexDirectiveHTMLNode, divisionHTMLNodes, context);
|
|
82
79
|
|
|
83
|
-
(indexHTMLTransform !== null)
|
|
84
|
-
indexHTMLTransform.
|
|
85
|
-
|
|
80
|
+
if (indexHTMLTransform !== null) {
|
|
81
|
+
indexHTMLTransform.addAfterIndexDirectiveHTMLNode(indexDirectiveHTMLNode);
|
|
82
|
+
}
|
|
86
83
|
}
|
|
87
84
|
|
|
88
85
|
addContents(context) {
|
|
@@ -94,12 +91,11 @@ export default class TopmostHTMLNode extends HTMLNode {
|
|
|
94
91
|
}
|
|
95
92
|
|
|
96
93
|
const topmostHTMLNode = this, ///
|
|
97
|
-
|
|
98
|
-
contentsListHTMLTransform = ContentsListHTMLTransform.fromContentsDirectiveHTMLTransformAndTopmostHTMLNode(contentsDirectiveHTMLTransform, topmostHTMLNode, context);
|
|
94
|
+
contentsListHTMLTransform = ContentsListHTMLTransform.fromContentsDirectiveHTMLNodeAndTopmostHTMLNode(contentsDirectiveHTMLNode, topmostHTMLNode, context);
|
|
99
95
|
|
|
100
|
-
(contentsListHTMLTransform !== null)
|
|
101
|
-
contentsListHTMLTransform.
|
|
102
|
-
|
|
96
|
+
if (contentsListHTMLTransform !== null) {
|
|
97
|
+
contentsListHTMLTransform.addAfterContentsDirectiveHTMLNode(contentsDirectiveHTMLNode);
|
|
98
|
+
}
|
|
103
99
|
}
|
|
104
100
|
|
|
105
101
|
adjustIndent(indent) {
|
|
@@ -18,10 +18,10 @@ export default class DivisionHTMLTransform extends HTMLTransform {
|
|
|
18
18
|
parentNode.appendChildNode(childNode);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
paginate(divisionHTMLNodes, context) {
|
|
22
22
|
const divisionHTMLNode = this.getDivisionHTMLNode();
|
|
23
23
|
|
|
24
|
-
divisionHTMLNode.
|
|
24
|
+
divisionHTMLNode.paginate(divisionHTMLNodes, context);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
static fromDivisionHTMLNode(divisionHTMLNode) {
|
|
@@ -10,17 +10,6 @@ export default class FootnoteHTMLTransform extends HTMLTransform {
|
|
|
10
10
|
return identifier;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
getLineHTMLNode() {
|
|
14
|
-
const paragraphHTMLNode = this.getParagraphHTMLNode(),
|
|
15
|
-
lineHTMLNode = paragraphHTMLNode.fromFirstChildNode((firstChildNode) => {
|
|
16
|
-
const lineHTMLNode = firstChildNode; ///
|
|
17
|
-
|
|
18
|
-
return lineHTMLNode;
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
return lineHTMLNode;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
13
|
getFootnoteHTMLNode() {
|
|
25
14
|
const htmlNode = this.getHTMLNode(),
|
|
26
15
|
footnoteHTMLNode = htmlNode; ///
|
|
@@ -39,22 +28,11 @@ export default class FootnoteHTMLTransform extends HTMLTransform {
|
|
|
39
28
|
return paragraphHTMLNode;
|
|
40
29
|
}
|
|
41
30
|
|
|
42
|
-
matchIdentifier(identifier, context) {
|
|
43
|
-
const identifierA = identifier; ///
|
|
44
|
-
|
|
45
|
-
identifier = this.identifier(context);
|
|
46
|
-
|
|
47
|
-
const identifierB = identifier, ///
|
|
48
|
-
identifierMatches = (identifierA === identifierB);
|
|
49
|
-
|
|
50
|
-
return identifierMatches;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
31
|
addAfterFootnoteLinkHTMLTransform(footnoteLinkHTMLTransform) {
|
|
54
32
|
const containingHTMLNode = footnoteLinkHTMLTransform.getContainingHTMLNode(),
|
|
55
|
-
|
|
33
|
+
siblingHTMLNode = containingHTMLNode; ///
|
|
56
34
|
|
|
57
|
-
this.addAfter(
|
|
35
|
+
this.addAfter(siblingHTMLNode);
|
|
58
36
|
}
|
|
59
37
|
|
|
60
38
|
static fromFootnoteHTMLNode(footnoteHTMLNde) {
|
|
@@ -17,26 +17,26 @@ export default class IndexHTMLTransform extends HTMLTransform {
|
|
|
17
17
|
return this.htmlNodes;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
addAfter(siblingHTMLNode) {
|
|
21
|
+
const childNode = siblingHTMLNode, ///
|
|
22
|
+
parentNode = childNode.getParentNode(),
|
|
23
|
+
index = parentNode.indexOfChildNode(childNode),
|
|
24
|
+
startIndex = index + 1,
|
|
25
|
+
addedChildNodes = this.htmlNodes; ///
|
|
26
|
+
|
|
27
|
+
parentNode.addChildNodes(addedChildNodes, startIndex);
|
|
26
28
|
}
|
|
27
29
|
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
replacedHTMLNode = indexDirectiveHTMLNode; ///
|
|
30
|
+
addAfterIndexDirectiveHTMLNode(indexDirectiveHTMLNode) {
|
|
31
|
+
const siblingHTMLNode = indexDirectiveHTMLNode; ///
|
|
31
32
|
|
|
32
|
-
this.
|
|
33
|
+
this.addAfter(siblingHTMLNode);
|
|
33
34
|
}
|
|
34
35
|
|
|
35
|
-
static
|
|
36
|
+
static fromIndexDirectiveHTMLNodeAndDivisionHTMLNodes(indexDirectiveHTMLNode, divisionHTMLNodes, context) {
|
|
36
37
|
let indexHTMLTransform = null;
|
|
37
38
|
|
|
38
|
-
const
|
|
39
|
-
indexList = IndexList.fromIndexDirectiveHTMLNodeAndDivisionHTMLNodes(indexDirectiveHTMLNode, divisionHTMLNodes, context),
|
|
39
|
+
const indexList = IndexList.fromIndexDirectiveHTMLNodeAndDivisionHTMLNodes(indexDirectiveHTMLNode, divisionHTMLNodes, context),
|
|
40
40
|
indexHTMLTransforms = [];
|
|
41
41
|
|
|
42
42
|
letters.forEach((letter) => {
|
|
@@ -11,10 +11,10 @@ export default class FootnoteItemHTMLTransform extends HTMLTransform {
|
|
|
11
11
|
return footnoteItemHTMLNode;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
static
|
|
15
|
-
const footnoteItemHTMLNode = FootnoteItemHTMLNode.
|
|
16
|
-
|
|
17
|
-
footnoteItemTransform =
|
|
14
|
+
static fromParagraphHTMLNOdeAndIdentifier(paragraphHTMLNode, identifier) {
|
|
15
|
+
const footnoteItemHTMLNode = FootnoteItemHTMLNode.fromParagraphTMLNodeAndIdentifier(paragraphHTMLNode, identifier),
|
|
16
|
+
htmlNode = footnoteItemHTMLNode, ///
|
|
17
|
+
footnoteItemTransform = HTMLTransform.fromHTMLNode(FootnoteItemHTMLTransform, htmlNode);
|
|
18
18
|
|
|
19
19
|
return footnoteItemTransform;
|
|
20
20
|
}
|
|
@@ -16,12 +16,4 @@ export default class LineHTMLTransform extends HTMLTransform {
|
|
|
16
16
|
|
|
17
17
|
return paragraphHTMLTransform;
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
static fromFootnoteHTMLTransform(footnoteHTMLTransform) {
|
|
21
|
-
const lineHTMLNode = footnoteHTMLTransform.getLineHTMLNode(),
|
|
22
|
-
htmlNode = lineHTMLNode, ///
|
|
23
|
-
paragraphHTMLTransform = HTMLTransform.fromHTMLNode(LineHTMLTransform, htmlNode);
|
|
24
|
-
|
|
25
|
-
return paragraphHTMLTransform;
|
|
26
|
-
}
|
|
27
19
|
}
|
|
@@ -14,19 +14,17 @@ const { filter } = arrayUtilities,
|
|
|
14
14
|
{ isLessThan } = nodeUtilities;
|
|
15
15
|
|
|
16
16
|
class ContentsListHTMLTransform extends HTMLTransform {
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
replacedHTMLNode = contentsDirectiveHTMLNode; ///
|
|
17
|
+
addAfterContentsDirectiveHTMLNode(contentsDirectiveHTMLNode) {
|
|
18
|
+
const siblingHTMLNode = contentsDirectiveHTMLNode; ///
|
|
20
19
|
|
|
21
|
-
super.
|
|
20
|
+
super.addAfter(siblingHTMLNode);
|
|
22
21
|
}
|
|
23
22
|
|
|
24
|
-
static
|
|
23
|
+
static fromContentsDirectiveHTMLNodeAndTopmostHTMLNode(contentsDirectiveHTMLNode, topmostHTMLNode, context) {
|
|
25
24
|
let contentsListHTMLTransform = null;
|
|
26
25
|
|
|
27
26
|
const node = topmostHTMLNode, ///
|
|
28
|
-
headingHTMLNodes = headingHTMLNodesFromNode(node)
|
|
29
|
-
contentsDirectiveHTMLNode = contentsDirectiveHTMLTransform.getContentsDirectiveHTMLNode();
|
|
27
|
+
headingHTMLNodes = headingHTMLNodesFromNode(node);
|
|
30
28
|
|
|
31
29
|
filter(headingHTMLNodes, (headingHTMLNode) => {
|
|
32
30
|
const contentsDirectiveHTMLNodeLessThanHeadingHTMLNode = isLessThan(contentsDirectiveHTMLNode, headingHTMLNode);
|