highmark-markdown 1.0.9 → 1.0.11

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 +665 -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 +63 -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 +78 -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,76 @@ 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
+ insertBefore(this.domElement, parentDOMElement, siblingDOMElement);
139
+
140
+ parentDOMElement = this.domElement; ///
141
+ }
142
+
143
+ siblingDOMElement = null;
144
+
145
+ this.childNodes.forEach((childNode) => {
146
+ const childNodeMarkdownNode = (childNode instanceof MarkdownNode);
147
+
148
+ if (childNodeMarkdownNode) {
149
+ const markdownNode = childNode; ///
150
+
151
+ siblingDOMElement = markdownNode.mount(parentDOMElement, siblingDOMElement, context);
152
+ }
153
+ });
154
+
155
+ if (this.domElement !== null) {
156
+ siblingDOMElement = this.domElement;
157
+ }
158
+
159
+ return siblingDOMElement;
160
+ }
161
+
162
+ unmount(parentDOMElement, context) {
163
+ if (this.domElement !== null) {
164
+ parentDOMElement.removeChild(this.domElement);
165
+
166
+ parentDOMElement = this.domElement; ///
167
+
168
+ this.domElement = null;
169
+
170
+ return;
171
+ }
172
+
173
+ this.childNodes.forEach((childNode) => {
174
+ childNode.unmount(parentDOMElement, context);
175
+ });
176
+ }
177
+
178
+ createDOMElement(context) {
179
+ let domElement = null;
180
+
181
+ const tagName = this.tagName(context);
182
+
183
+ if (tagName !== null) {
184
+ domElement = document.createElement(tagName);
185
+
186
+ const className = this.className(context),
187
+ attributeName = this.attributeName(context),
188
+ attributeValue = this.attributeValue(context);
189
+
190
+ if (className !== null) {
191
+ Object.assign(domElement, {
192
+ className
193
+ });
194
+ }
195
+
196
+ if ((attributeName !== null) && (attributeValue !== null)) {
197
+ domElement.setAttribute(attributeName, attributeValue);
198
+ }
199
+ }
200
+
201
+ return domElement;
202
+ }
203
+
134
204
  asHTML(indent, context) {
135
205
  let html = null;
136
206
 
@@ -199,36 +269,6 @@ ${childNodesHTML}${indent}${closingTag}
199
269
  return childNodesHTML;
200
270
  }
201
271
 
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
272
  childNodesAsPlainText(context) {
233
273
  const childNodes = this.getChildNodes(),
234
274
  childNodesPlainText = childNodes.reduce((childNodesPlainText, childNode) => {
@@ -252,26 +292,6 @@ ${markdownNodePlainText}`;
252
292
  return childNodesPlainText;
253
293
  }
254
294
 
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
295
  clone(...remainingArguments) { return super.clone(this.domElement, ...remainingArguments); }
276
296
 
277
297
  static fromRuleNameChildNodesAndOpacity(Class, ruleName, childNodes, opacity, ...remainingArguments) {
@@ -286,3 +306,11 @@ Object.assign(MarkdownNode.prototype, nodeMixins);
286
306
  Object.assign(MarkdownNode.prototype, elementMixins);
287
307
 
288
308
  export default MarkdownNode;
309
+
310
+ function insertBefore(domElement, parentDOMElement, siblingDOMElement) {
311
+ if (siblingDOMElement !== null) {
312
+ siblingDOMElement = siblingDOMElement.nextSibling; ///
313
+ }
314
+
315
+ parentDOMElement.insertBefore(domElement, siblingDOMElement)
316
+ }
@@ -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
  }