highmark-markdown 1.0.9 → 1.0.10

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.
Files changed (62) hide show
  1. package/example.js +662 -354
  2. package/lib/example/importer.js +6 -2
  3. package/lib/example/view/div/preview.js +43 -51
  4. package/lib/example/view.js +14 -7
  5. package/lib/mixins/element.js +1 -14
  6. package/lib/node/markdown/anchor.js +19 -6
  7. package/lib/node/markdown/blockLine.js +47 -21
  8. package/lib/node/markdown/comma.js +8 -9
  9. package/lib/node/markdown/directive/pageNumber.js +8 -14
  10. package/lib/node/markdown/directives.js +6 -20
  11. package/lib/node/markdown/emailLink.js +54 -13
  12. package/lib/node/markdown/emphasisedText.js +49 -2
  13. package/lib/node/markdown/emptyTableCell.js +8 -7
  14. package/lib/node/markdown/endOfLine.js +1 -2
  15. package/lib/node/markdown/error.js +31 -14
  16. package/lib/node/markdown/footnoteLink.js +14 -8
  17. package/lib/node/markdown/hyperlink.js +60 -12
  18. package/lib/node/markdown/image.js +1 -2
  19. package/lib/node/markdown/indexLink.js +37 -1
  20. package/lib/node/markdown/inlineListing.js +38 -10
  21. package/lib/node/markdown/inlineText.js +1 -2
  22. package/lib/node/markdown/line.js +40 -16
  23. package/lib/node/markdown/strongText.js +49 -2
  24. package/lib/node/markdown/stronglyEmphasisedText.js +31 -10
  25. package/lib/node/markdown/subDivision.js +1 -16
  26. package/lib/node/markdown/tableBodyCell.js +1 -8
  27. package/lib/node/markdown/tableCell.js +1 -11
  28. package/lib/node/markdown/tableHeadCell.js +1 -8
  29. package/lib/node/markdown/verticalSpace.js +8 -9
  30. package/lib/node/markdown.js +60 -41
  31. package/lib/utilities/childNodes.js +2 -3
  32. package/package.json +1 -1
  33. package/src/example/importer.js +3 -1
  34. package/src/example/view/div/preview.js +40 -30
  35. package/src/example/view.js +16 -11
  36. package/src/mixins/element.js +0 -18
  37. package/src/node/markdown/anchor.js +23 -6
  38. package/src/node/markdown/blockLine.js +31 -28
  39. package/src/node/markdown/comma.js +7 -9
  40. package/src/node/markdown/directive/pageNumber.js +11 -16
  41. package/src/node/markdown/directives.js +6 -20
  42. package/src/node/markdown/emailLink.js +39 -14
  43. package/src/node/markdown/emphasisedText.js +37 -1
  44. package/src/node/markdown/emptyTableCell.js +6 -4
  45. package/src/node/markdown/endOfLine.js +0 -2
  46. package/src/node/markdown/error.js +11 -16
  47. package/src/node/markdown/footnoteLink.js +18 -7
  48. package/src/node/markdown/hyperlink.js +46 -15
  49. package/src/node/markdown/image.js +0 -2
  50. package/src/node/markdown/indexLink.js +19 -0
  51. package/src/node/markdown/inlineListing.js +18 -8
  52. package/src/node/markdown/inlineText.js +0 -2
  53. package/src/node/markdown/line.js +23 -23
  54. package/src/node/markdown/strongText.js +37 -1
  55. package/src/node/markdown/stronglyEmphasisedText.js +47 -13
  56. package/src/node/markdown/subDivision.js +0 -16
  57. package/src/node/markdown/tableBodyCell.js +0 -9
  58. package/src/node/markdown/tableCell.js +0 -14
  59. package/src/node/markdown/tableHeadCell.js +0 -9
  60. package/src/node/markdown/verticalSpace.js +6 -8
  61. package/src/node/markdown.js +74 -50
  62. package/src/utilities/childNodes.js +1 -3
@@ -1,36 +1,58 @@
1
1
  "use strict";
2
2
 
3
+ import { arrayUtilities } from "necessary";
4
+
3
5
  import elementMap from "../../elementMap";
4
6
  import MarkdownNode from "../../node/markdown";
5
7
  import contentMixins from "../../mixins/content";
6
8
 
7
9
  import { STRONG_TEXT_RULE_NAME } from "../../ruleNames";
8
10
 
9
- const { tagName } = elementMap[STRONG_TEXT_RULE_NAME];
11
+ const { second } = arrayUtilities,
12
+ { tagName } = elementMap[STRONG_TEXT_RULE_NAME];
10
13
 
11
14
  class StronglyEmphasisedTextMarkdownNode extends MarkdownNode {
12
- asHTML(indent, context) {
13
- let html = super.asHTML(indent, context);
15
+ inlineText(context) {
16
+ const indent = null,
17
+ childNodes = this.getChildNodes(),
18
+ secondChildNode = second(childNodes),
19
+ inlineTextMarkdownNode = secondChildNode, ///
20
+ inlineTextMarkdownNodeHTML = inlineTextMarkdownNode.asHTML(indent, context),
21
+ inlineText = inlineTextMarkdownNodeHTML; ///
22
+
23
+ return inlineText;
24
+ }
14
25
 
15
- const childNodesHTML = html, ///
16
- startingTag = `<${tagName}>`,
17
- closingTag = `</${tagName}>`;
26
+ createDOMElement(context) {
27
+ let domElement;
18
28
 
19
- html = `${startingTag}${childNodesHTML}${closingTag}`;
29
+ domElement = document.createElement(tagName);
20
30
 
21
- return html;
31
+ const parentDOMElement = domElement, ///
32
+ childDOMElement = this.createChildDOMElement(context);
33
+
34
+ domElement = childDOMElement; ///
35
+
36
+ parentDOMElement.appendChild(domElement);
37
+
38
+ domElement = parentDOMElement; ///
39
+
40
+ return domElement;
22
41
  }
23
42
 
24
- createDOMElement(context) {
43
+ createChildDOMElement(context) {
44
+ const inlineText = this.inlineText(context),
45
+ content = inlineText; ///
46
+
25
47
  let domElement;
26
48
 
27
- domElement = document.createElement(tagName);
49
+ const textNode = document.createTextNode(content);
28
50
 
29
- this.setDOMElement(domElement);
51
+ domElement = super.createDOMElement(context);
30
52
 
31
53
  const parentDOMElement = domElement; ///
32
54
 
33
- domElement = super.createDOMElement(context);
55
+ domElement = textNode; ///
34
56
 
35
57
  parentDOMElement.appendChild(domElement);
36
58
 
@@ -39,9 +61,21 @@ class StronglyEmphasisedTextMarkdownNode extends MarkdownNode {
39
61
  return domElement;
40
62
  }
41
63
 
64
+ asHTML(indent, context) {
65
+ let html = super.asHTML(indent, context);
66
+
67
+ const childNodesHTML = html, ///
68
+ startingTag = `<${tagName}>`,
69
+ closingTag = `</${tagName}>`;
70
+
71
+ html = `${startingTag}${childNodesHTML}${closingTag}`;
72
+
73
+ return html;
74
+ }
75
+
42
76
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(StronglyEmphasisedTextMarkdownNode, ruleName, childNodes, opacity); }
43
77
  }
44
78
 
45
79
  Object.assign(StronglyEmphasisedTextMarkdownNode.prototype, contentMixins);
46
80
 
47
- export default StronglyEmphasisedTextMarkdownNode;
81
+ export default StronglyEmphasisedTextMarkdownNode;
@@ -31,13 +31,6 @@ export default class SubDivisionMarkdownNode extends MarkdownNode {
31
31
  }
32
32
  }
33
33
 
34
- getDOMElement() {
35
- const secondMarkdownNode = this.getSecondMarkdownNode(),
36
- domElement = secondMarkdownNode.getDOMElement();
37
-
38
- return domElement;
39
- }
40
-
41
34
  lines(context) {
42
35
  const secondMarkdownNode = this.getSecondMarkdownNode(),
43
36
  lines = secondMarkdownNode.lines(context);
@@ -59,15 +52,6 @@ export default class SubDivisionMarkdownNode extends MarkdownNode {
59
52
  return plainText;
60
53
  }
61
54
 
62
- createDOMElement(context) {
63
- const secondMarkdownNode = this.getSecondMarkdownNode(),
64
- domElement = null;
65
-
66
- secondMarkdownNode.createDOMElement(context);
67
-
68
- return domElement;
69
- }
70
-
71
55
  getSecondMarkdownNode() {
72
56
  const childNodes = this.getChildNodes(),
73
57
  secondChildNode = second(childNodes),
@@ -16,14 +16,5 @@ export default class TableBodyCellMarkdownNode extends MarkdownNode {
16
16
  return childNodesHTML;
17
17
  }
18
18
 
19
- createChildNodeDOMElements(context) {
20
- const domElement = this.getDOMElement(),
21
- childNodes = this.getChildNodes(),
22
- firstChildNode = first(childNodes),
23
- tableCellMarkdownNode = firstChildNode; ///
24
-
25
- tableCellMarkdownNode.createChildNodeDOMElements(domElement, context);
26
- }
27
-
28
19
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(TableBodyCellMarkdownNode, ruleName, childNodes, opacity); }
29
20
  }
@@ -17,19 +17,5 @@ export default class TableCellMarkdownNode extends MarkdownNode {
17
17
  return childNodesHTML;
18
18
  }
19
19
 
20
- createChildNodeDOMElements(domElement, context) {
21
- const childNodes = this.getChildNodes(),
22
- firstChildNode = first(childNodes),
23
- lineMarkdownNode = firstChildNode; ///
24
-
25
- lineMarkdownNode.createDOMElement(context);
26
-
27
- const parentDOMElement = domElement; ///
28
-
29
- domElement = lineMarkdownNode.getDOMElement();
30
-
31
- parentDOMElement.appendChild(domElement)
32
- }
33
-
34
20
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(TableCellMarkdownNode, ruleName, childNodes, opacity); }
35
21
  }
@@ -16,14 +16,5 @@ export default class TableHeadCellMarkdownNode extends MarkdownNode {
16
16
  return childNodesHTML;
17
17
  }
18
18
 
19
- createChildNodeDOMElements(context) {
20
- const domElement = this.getDOMElement(),
21
- childNodes = this.getChildNodes(),
22
- firstChildNode = first(childNodes),
23
- tableCellMarkdownNode = firstChildNode; ///
24
-
25
- tableCellMarkdownNode.createChildNodeDOMElements(domElement, context);
26
- }
27
-
28
19
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(TableHeadCellMarkdownNode, ruleName, childNodes, opacity); }
29
20
  }
@@ -5,21 +5,19 @@ import MarkdownNode from "../../node/markdown";
5
5
  import { CARRIAGE_RETURN } from "../../constants";
6
6
 
7
7
  export default class VerticalSpaceMarkdownNode extends MarkdownNode {
8
- asHTML(indent, context) {
9
- const html = CARRIAGE_RETURN; ///
10
-
11
- return html;
12
- }
13
-
14
8
  createDOMElement(context) {
15
9
  const content = CARRIAGE_RETURN, ///
16
10
  textNode = document.createTextNode(content),
17
11
  domElement = textNode; ///
18
12
 
19
- this.setDOMElement(domElement);
20
-
21
13
  return domElement;
22
14
  }
23
15
 
16
+ asHTML(indent, context) {
17
+ const html = CARRIAGE_RETURN; ///
18
+
19
+ return html;
20
+ }
21
+
24
22
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(VerticalSpaceMarkdownNode, ruleName, childNodes, opacity); }
25
23
  }
@@ -131,6 +131,80 @@ class MarkdownNode extends NonTerminalNode {
131
131
  return lines;
132
132
  }
133
133
 
134
+ mount(parentDOMElement, siblingDOMElement, context) {
135
+ this.domElement = this.createDOMElement(context);
136
+
137
+ if (this.domElement !== null) {
138
+ if (siblingDOMElement !== null) {
139
+ siblingDOMElement = siblingDOMElement.nextSibling; ///
140
+ }
141
+
142
+ parentDOMElement.insertBefore(this.domElement, siblingDOMElement);
143
+
144
+ parentDOMElement = this.domElement; ///
145
+ }
146
+
147
+ siblingDOMElement = null;
148
+
149
+ this.childNodes.forEach((childNode) => {
150
+ const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
151
+
152
+ if (childNodeMarkdownNode) {
153
+ const markdownNode = childNode; ///
154
+
155
+ siblingDOMElement = markdownNode.mount(parentDOMElement, siblingDOMElement, context);
156
+ }
157
+ });
158
+
159
+ if (this.domElement !== null) {
160
+ siblingDOMElement = this.domElement;
161
+ }
162
+
163
+ return siblingDOMElement;
164
+ }
165
+
166
+ unmount(parentDOMElement, context) {
167
+ if (this.domElement !== null) {
168
+ parentDOMElement.removeChild(this.domElement);
169
+
170
+ parentDOMElement = this.domElement; ///
171
+
172
+ this.domElement = null;
173
+
174
+ return;
175
+ }
176
+
177
+ this.childNodes.forEach((childNode) => {
178
+ childNode.unmount(parentDOMElement, context);
179
+ });
180
+ }
181
+
182
+ createDOMElement(context) {
183
+ let domElement = null;
184
+
185
+ const tagName = this.tagName(context);
186
+
187
+ if (tagName !== null) {
188
+ domElement = document.createElement(tagName);
189
+
190
+ const className = this.className(context),
191
+ attributeName = this.attributeName(context),
192
+ attributeValue = this.attributeValue(context);
193
+
194
+ if (className !== null) {
195
+ Object.assign(domElement, {
196
+ className
197
+ });
198
+ }
199
+
200
+ if ((attributeName !== null) && (attributeValue !== null)) {
201
+ domElement.setAttribute(attributeName, attributeValue);
202
+ }
203
+ }
204
+
205
+ return domElement;
206
+ }
207
+
134
208
  asHTML(indent, context) {
135
209
  let html = null;
136
210
 
@@ -199,36 +273,6 @@ ${childNodesHTML}${indent}${closingTag}
199
273
  return childNodesHTML;
200
274
  }
201
275
 
202
- createDOMElement(context) {
203
- let domElement = null;
204
-
205
- const tagName = this.tagName(context);
206
-
207
- if (tagName !== null) {
208
- domElement = document.createElement(tagName);
209
-
210
- const className = this.className(context),
211
- attributeName = this.attributeName(context),
212
- attributeValue = this.attributeValue(context);
213
-
214
- if (className !== null) {
215
- Object.assign(domElement, {
216
- className
217
- });
218
- }
219
-
220
- if ((attributeName !== null) && (attributeValue !== null)) {
221
- domElement.setAttribute(attributeName, attributeValue);
222
- }
223
-
224
- this.setDOMElement(domElement);
225
-
226
- this.createChildNodeDOMElements(context);
227
- }
228
-
229
- return domElement;
230
- }
231
-
232
276
  childNodesAsPlainText(context) {
233
277
  const childNodes = this.getChildNodes(),
234
278
  childNodesPlainText = childNodes.reduce((childNodesPlainText, childNode) => {
@@ -252,26 +296,6 @@ ${markdownNodePlainText}`;
252
296
  return childNodesPlainText;
253
297
  }
254
298
 
255
- createChildNodeDOMElements(context) {
256
- const childNodes = this.getChildNodes();
257
-
258
- childNodes.forEach((childNode) => {
259
- const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
260
-
261
- if (childNodeMarkdownNode) {
262
- const markdownNode = childNode; ///
263
-
264
- markdownNode.createDOMElement(context);
265
-
266
- const domElement = markdownNode.getDOMElement();
267
-
268
- if (domElement !== null) {
269
- this.addDOMElement(domElement);
270
- }
271
- }
272
- });
273
- }
274
-
275
299
  clone(...remainingArguments) { return super.clone(this.domElement, ...remainingArguments); }
276
300
 
277
301
  static fromRuleNameChildNodesAndOpacity(Class, ruleName, childNodes, opacity, ...remainingArguments) {
@@ -131,9 +131,7 @@ export function domElementsFromChildNodes(childNodes, context) {
131
131
  domElements.push(domElement);
132
132
  }
133
133
 
134
- markdownNode.createDOMElement(context);
135
-
136
- const domElement = markdownNode.getDOMElement();
134
+ const domElement = markdownNode.createDOMElement(context);
137
135
 
138
136
  domElements.push(domElement);
139
137
  }