highmark-markdown 0.0.379 → 0.0.382

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 (100) hide show
  1. package/example.js +4764 -3417
  2. package/lib/attributeNames.js +5 -1
  3. package/lib/constants.js +1 -5
  4. package/lib/defaultMarkdownStyle.js +2 -2
  5. package/lib/example/constants.js +15 -7
  6. package/lib/example/customEventTypes.js +5 -1
  7. package/lib/example/view/button/page.js +168 -0
  8. package/lib/example/view/div/html.js +2 -2
  9. package/lib/example/view/div/pageButtons.js +270 -0
  10. package/lib/example/view/div/preview.js +105 -13
  11. package/lib/example/view/textarea/css.js +2 -2
  12. package/lib/example/view/xmp.js +2 -4
  13. package/lib/example/view.js +88 -34
  14. package/lib/example.js +2 -2
  15. package/lib/index.js +15 -11
  16. package/lib/markdown/bnf.js +2 -2
  17. package/lib/mixins/node.js +10 -3
  18. package/lib/node/markdown/anchor.js +5 -2
  19. package/lib/node/markdown/blockLine.js +3 -2
  20. package/lib/node/markdown/contentsLink.js +4 -4
  21. package/lib/node/markdown/directive/contents.js +6 -6
  22. package/lib/node/markdown/directive/embee.js +12 -12
  23. package/lib/node/markdown/directive/footnotes.js +6 -6
  24. package/lib/node/markdown/directive/ignore.js +6 -6
  25. package/lib/node/markdown/directive/include.js +6 -6
  26. package/lib/node/markdown/directive/pageNumber.js +74 -9
  27. package/lib/node/markdown/directive.js +128 -0
  28. package/lib/node/markdown/directives.js +33 -2
  29. package/lib/node/markdown/division.js +128 -28
  30. package/lib/node/markdown/emailLink.js +8 -1
  31. package/lib/node/markdown/endOfLine.js +8 -1
  32. package/lib/node/markdown/footnoteItem.js +3 -3
  33. package/lib/node/markdown/footnotesList.js +95 -27
  34. package/lib/node/markdown/heading/primary.js +2 -1
  35. package/lib/node/markdown/heading/quaternary.js +2 -1
  36. package/lib/node/markdown/heading/secondary.js +2 -1
  37. package/lib/node/markdown/heading/tertiary.js +2 -1
  38. package/lib/node/markdown/heading.js +8 -1
  39. package/lib/node/markdown/line.js +8 -1
  40. package/lib/node/markdown/subDivision.js +17 -10
  41. package/lib/node/markdown.js +15 -1
  42. package/lib/replacement.js +185 -0
  43. package/lib/utilities/childNodes.js +7 -5
  44. package/lib/utilities/content.js +7 -7
  45. package/lib/utilities/markdown.js +87 -0
  46. package/lib/utilities/node.js +163 -0
  47. package/lib/utilities/query.js +25 -9
  48. package/package.json +1 -1
  49. package/src/attributeNames.js +1 -0
  50. package/src/constants.js +0 -1
  51. package/src/defaultMarkdownStyle.js +5 -1
  52. package/src/example/constants.js +4 -2
  53. package/src/example/customEventTypes.js +1 -0
  54. package/src/example/view/button/page.js +48 -0
  55. package/src/example/view/div/html.js +0 -1
  56. package/src/example/view/div/pageButtons.js +98 -0
  57. package/src/example/view/div/preview.js +51 -11
  58. package/src/example/view/textarea/css.js +1 -1
  59. package/src/example/view/xmp.js +1 -5
  60. package/src/example/view.js +117 -51
  61. package/src/example.js +2 -2
  62. package/src/index.js +9 -6
  63. package/src/markdown/bnf.js +21 -23
  64. package/src/mixins/node.js +20 -2
  65. package/src/node/markdown/anchor.js +7 -2
  66. package/src/node/markdown/blockLine.js +3 -3
  67. package/src/node/markdown/contentsLink.js +3 -3
  68. package/src/node/markdown/directive/contents.js +3 -3
  69. package/src/node/markdown/directive/embee.js +8 -8
  70. package/src/node/markdown/directive/footnotes.js +3 -3
  71. package/src/node/markdown/directive/ignore.js +3 -3
  72. package/src/node/markdown/directive/include.js +3 -3
  73. package/src/node/markdown/directive/pageNumber.js +53 -5
  74. package/src/node/markdown/directive.js +13 -0
  75. package/src/node/markdown/directives.js +10 -1
  76. package/src/node/markdown/division.js +144 -26
  77. package/src/node/markdown/emailLink.js +6 -0
  78. package/src/node/markdown/endOfLine.js +6 -0
  79. package/src/node/markdown/footnoteItem.js +1 -1
  80. package/src/node/markdown/footnotesList.js +87 -31
  81. package/src/node/markdown/heading/primary.js +2 -0
  82. package/src/node/markdown/heading/quaternary.js +2 -0
  83. package/src/node/markdown/heading/secondary.js +2 -0
  84. package/src/node/markdown/heading/tertiary.js +2 -0
  85. package/src/node/markdown/heading.js +6 -0
  86. package/src/node/markdown/line.js +12 -1
  87. package/src/node/markdown/subDivision.js +18 -12
  88. package/src/node/markdown.js +19 -0
  89. package/src/replacement.js +158 -0
  90. package/src/utilities/childNodes.js +6 -4
  91. package/src/utilities/content.js +12 -20
  92. package/src/utilities/markdown.js +103 -0
  93. package/src/utilities/node.js +158 -0
  94. package/src/utilities/query.js +22 -6
  95. package/lib/replacementNodeAndTokens.js +0 -149
  96. package/lib/utilities/footnotes.js +0 -20
  97. package/lib/utilities/replace.js +0 -66
  98. package/src/replacementNodeAndTokens.js +0 -152
  99. package/src/utilities/footnotes.js +0 -16
  100. package/src/utilities/replace.js +0 -31
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ leadingIndexFromNodeAndTokens: function() {
13
+ return leadingIndexFromNodeAndTokens;
14
+ },
15
+ removeNode: function() {
16
+ return removeNode;
17
+ },
18
+ removeNodes: function() {
19
+ return removeNodes;
20
+ },
21
+ removeTokens: function() {
22
+ return removeTokens;
23
+ },
24
+ replaceNode: function() {
25
+ return replaceNode;
26
+ },
27
+ replaceNodes: function() {
28
+ return replaceNodes;
29
+ },
30
+ replaceTokens: function() {
31
+ return replaceTokens;
32
+ },
33
+ trailingIndexFromNodeAndTokens: function() {
34
+ return trailingIndexFromNodeAndTokens;
35
+ }
36
+ });
37
+ var _necessary = require("necessary");
38
+ function _array_like_to_array(arr, len) {
39
+ if (len == null || len > arr.length) len = arr.length;
40
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
41
+ return arr2;
42
+ }
43
+ function _array_without_holes(arr) {
44
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
45
+ }
46
+ function _iterable_to_array(iter) {
47
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
48
+ }
49
+ function _non_iterable_spread() {
50
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
51
+ }
52
+ function _to_consumable_array(arr) {
53
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
54
+ }
55
+ function _unsupported_iterable_to_array(o, minLen) {
56
+ if (!o) return;
57
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
58
+ var n = Object.prototype.toString.call(o).slice(8, -1);
59
+ if (n === "Object" && o.constructor) n = o.constructor.name;
60
+ if (n === "Map" || n === "Set") return Array.from(n);
61
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
62
+ }
63
+ var forwardsSome = _necessary.arrayUtilities.forwardsSome, backwardsSome = _necessary.arrayUtilities.backwardsSome;
64
+ function removeNode(removedNode, parentNode) {
65
+ var removedChildNode = removedNode; ///
66
+ parentNode.removeChildNode(removedChildNode);
67
+ }
68
+ function removeNodes(removedNodes, parentNode) {
69
+ var removedChildNodes = removedNodes; ///
70
+ parentNode.removeChildNodes(removedChildNodes);
71
+ }
72
+ function removeTokens(removedNode, tokens) {
73
+ var nonTerminalNode = removedNode, leadingIndex = leadingIndexFromNonTerminalNodeAndTokens(nonTerminalNode, tokens), trailingIndex = trailingIndexFromNonTerminalNodeAndTokens(nonTerminalNode, tokens), start = leadingIndex, end = trailingIndex + 1, deleteCount = end - start;
74
+ tokens.splice(start, deleteCount);
75
+ }
76
+ function replaceNode(replacementNode, replacedNode, parentNode) {
77
+ var replacedChildNode = replacedNode, replacementChildNode = replacementNode; ///
78
+ parentNode.replaceChildNode(replacedChildNode, replacementChildNode);
79
+ }
80
+ function replaceNodes(replacementNodes, replacedNode, parentNode) {
81
+ var replacedChildNode = replacedNode, replacementChildNodes = replacementNodes; ///
82
+ parentNode.replaceChildNodes(replacedChildNode, replacementChildNodes);
83
+ }
84
+ function replaceTokens(replacementTokens, replacedNode, tokens) {
85
+ var _tokens;
86
+ var nonTerminalNode = replacedNode, leadingIndex = leadingIndexFromNonTerminalNodeAndTokens(nonTerminalNode, tokens), trailingIndex = trailingIndexFromNonTerminalNodeAndTokens(nonTerminalNode, tokens), start = leadingIndex, end = trailingIndex + 1, deleteCount = end - start;
87
+ (_tokens = tokens).splice.apply(_tokens, [
88
+ start,
89
+ deleteCount
90
+ ].concat(_to_consumable_array(replacementTokens)));
91
+ }
92
+ function leadingIndexFromNodeAndTokens(node, tokens) {
93
+ var leadingIndex;
94
+ var nodeTerminalNode = node.isTerminalNode();
95
+ if (nodeTerminalNode) {
96
+ var terminalNode = node; ///
97
+ leadingIndex = leadingIndexFromTerminalNodeAndTokens(terminalNode, tokens);
98
+ } else {
99
+ var nonTerminalNode = node; ///
100
+ leadingIndex = leadingIndexFromNonTerminalNodeAndTokens(nonTerminalNode, tokens);
101
+ }
102
+ return leadingIndex;
103
+ }
104
+ function trailingIndexFromNodeAndTokens(node, tokens) {
105
+ var trailingIndex;
106
+ var nodeTerminalNode = node.isTerminalNode();
107
+ if (nodeTerminalNode) {
108
+ var terminalNode = node; ///
109
+ trailingIndex = trailingIndexFromTerminalNodeAndTokens(terminalNode, tokens);
110
+ } else {
111
+ var nonTerminalNode = node; ///
112
+ trailingIndex = trailingIndexFromNonTerminalNodeAndTokens(nonTerminalNode, tokens);
113
+ }
114
+ return trailingIndex;
115
+ }
116
+ function leadingIndexFromTerminalNodeAndTokens(terminalNode, tokens) {
117
+ var leadingIndex;
118
+ var significantToken = terminalNode.getSignificantToken();
119
+ if (significantToken === null) {
120
+ leadingIndex = -1;
121
+ } else {
122
+ var significantTokenIndex = tokens.indexOf(significantToken);
123
+ leadingIndex = significantTokenIndex; ///
124
+ }
125
+ return leadingIndex;
126
+ }
127
+ function trailingIndexFromTerminalNodeAndTokens(terminalNode, tokens) {
128
+ var trailingIndex;
129
+ var significantToken = terminalNode.getSignificantToken();
130
+ if (significantToken === null) {
131
+ trailingIndex = -1;
132
+ } else {
133
+ var significantTokenIndex = tokens.indexOf(significantToken);
134
+ trailingIndex = significantTokenIndex; ///
135
+ }
136
+ return trailingIndex;
137
+ }
138
+ function leadingIndexFromNonTerminalNodeAndTokens(nonTerminalNode, tokens) {
139
+ var leadingIndex;
140
+ var childNodes = nonTerminalNode.getChildNodes();
141
+ forwardsSome(childNodes, function(childNode) {
142
+ var node = childNode;
143
+ leadingIndex = leadingIndexFromNodeAndTokens(node, tokens);
144
+ if (leadingIndex !== -1) {
145
+ return true;
146
+ }
147
+ });
148
+ return leadingIndex;
149
+ }
150
+ function trailingIndexFromNonTerminalNodeAndTokens(nonTerminalNode, tokens) {
151
+ var trailingIndex;
152
+ var childNodes = nonTerminalNode.getChildNodes();
153
+ backwardsSome(childNodes, function(childNode) {
154
+ var node = childNode;
155
+ trailingIndex = trailingIndexFromNodeAndTokens(node, tokens);
156
+ if (trailingIndex !== -1) {
157
+ return true;
158
+ }
159
+ });
160
+ return trailingIndex;
161
+ }
162
+
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmNvbnN0IHsgZm9yd2FyZHNTb21lLCBiYWNrd2FyZHNTb21lIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU5vZGUocmVtb3ZlZE5vZGUsIHBhcmVudE5vZGUpIHtcbiAgY29uc3QgcmVtb3ZlZENoaWxkTm9kZSA9IHJlbW92ZWROb2RlOyAvLy9cblxuICBwYXJlbnROb2RlLnJlbW92ZUNoaWxkTm9kZShyZW1vdmVkQ2hpbGROb2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU5vZGVzKHJlbW92ZWROb2RlcywgcGFyZW50Tm9kZSkge1xuICBjb25zdCByZW1vdmVkQ2hpbGROb2RlcyA9IHJlbW92ZWROb2RlczsgLy8vXG5cbiAgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZE5vZGVzKHJlbW92ZWRDaGlsZE5vZGVzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRva2VucyhyZW1vdmVkTm9kZSwgdG9rZW5zKSB7XG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHJlbW92ZWROb2RlLCAgLy8vXG4gICAgICAgIGxlYWRpbmdJbmRleCA9IGxlYWRpbmdJbmRleEZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMobm9uVGVybWluYWxOb2RlLCB0b2tlbnMpLFxuICAgICAgICB0cmFpbGluZ0luZGV4ID0gdHJhaWxpbmdJbmRleEZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMobm9uVGVybWluYWxOb2RlLCB0b2tlbnMpLFxuICAgICAgICBzdGFydCA9IGxlYWRpbmdJbmRleCwgLy8vXG4gICAgICAgIGVuZCA9IHRyYWlsaW5nSW5kZXggKyAxLFxuICAgICAgICBkZWxldGVDb3VudCA9IGVuZCAtIHN0YXJ0O1xuXG4gIHRva2Vucy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VOb2RlKHJlcGxhY2VtZW50Tm9kZSwgcmVwbGFjZWROb2RlLCBwYXJlbnROb2RlKSB7XG4gIGNvbnN0IHJlcGxhY2VkQ2hpbGROb2RlID0gcmVwbGFjZWROb2RlLCAgLy8vXG4gICAgICAgIHJlcGxhY2VtZW50Q2hpbGROb2RlID0gcmVwbGFjZW1lbnROb2RlOyAvLy9cblxuICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZE5vZGUocmVwbGFjZWRDaGlsZE5vZGUsIHJlcGxhY2VtZW50Q2hpbGROb2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VOb2RlcyhyZXBsYWNlbWVudE5vZGVzLCByZXBsYWNlZE5vZGUsIHBhcmVudE5vZGUpIHtcbiAgY29uc3QgcmVwbGFjZWRDaGlsZE5vZGUgPSByZXBsYWNlZE5vZGUsICAvLy9cbiAgICAgICAgcmVwbGFjZW1lbnRDaGlsZE5vZGVzID0gcmVwbGFjZW1lbnROb2RlczsgLy8vXG5cbiAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGROb2RlcyhyZXBsYWNlZENoaWxkTm9kZSwgcmVwbGFjZW1lbnRDaGlsZE5vZGVzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VUb2tlbnMocmVwbGFjZW1lbnRUb2tlbnMsIHJlcGxhY2VkTm9kZSwgdG9rZW5zKSB7XG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHJlcGxhY2VkTm9kZSwgIC8vL1xuICAgICAgICBsZWFkaW5nSW5kZXggPSBsZWFkaW5nSW5kZXhGcm9tTm9uVGVybWluYWxOb2RlQW5kVG9rZW5zKG5vblRlcm1pbmFsTm9kZSwgdG9rZW5zKSxcbiAgICAgICAgdHJhaWxpbmdJbmRleCA9IHRyYWlsaW5nSW5kZXhGcm9tTm9uVGVybWluYWxOb2RlQW5kVG9rZW5zKG5vblRlcm1pbmFsTm9kZSwgdG9rZW5zKSxcbiAgICAgICAgc3RhcnQgPSBsZWFkaW5nSW5kZXgsIC8vL1xuICAgICAgICBlbmQgPSB0cmFpbGluZ0luZGV4ICsgMSxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBlbmQgLSBzdGFydDtcblxuICB0b2tlbnMuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCwgLi4ucmVwbGFjZW1lbnRUb2tlbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGVhZGluZ0luZGV4RnJvbU5vZGVBbmRUb2tlbnMobm9kZSwgdG9rZW5zKSB7XG4gIGxldCBsZWFkaW5nSW5kZXg7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICBpZiAobm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIGxlYWRpbmdJbmRleCA9IGxlYWRpbmdJbmRleEZyb21UZXJtaW5hbE5vZGVBbmRUb2tlbnModGVybWluYWxOb2RlLCB0b2tlbnMpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIGxlYWRpbmdJbmRleCA9IGxlYWRpbmdJbmRleEZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMobm9uVGVybWluYWxOb2RlLCB0b2tlbnMpO1xuICB9XG5cbiAgcmV0dXJuIGxlYWRpbmdJbmRleDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWlsaW5nSW5kZXhGcm9tTm9kZUFuZFRva2Vucyhub2RlLCB0b2tlbnMpIHtcbiAgbGV0IHRyYWlsaW5nSW5kZXg7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICBpZiAobm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHRyYWlsaW5nSW5kZXggPSB0cmFpbGluZ0luZGV4RnJvbVRlcm1pbmFsTm9kZUFuZFRva2Vucyh0ZXJtaW5hbE5vZGUsIHRva2Vucyk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgdHJhaWxpbmdJbmRleCA9IHRyYWlsaW5nSW5kZXhGcm9tTm9uVGVybWluYWxOb2RlQW5kVG9rZW5zKG5vblRlcm1pbmFsTm9kZSwgdG9rZW5zKTtcbiAgfVxuXG4gIHJldHVybiB0cmFpbGluZ0luZGV4O1xufVxuXG5mdW5jdGlvbiBsZWFkaW5nSW5kZXhGcm9tVGVybWluYWxOb2RlQW5kVG9rZW5zKHRlcm1pbmFsTm9kZSwgdG9rZW5zKSB7XG4gIGxldCBsZWFkaW5nSW5kZXg7XG5cbiAgY29uc3Qgc2lnbmlmaWNhbnRUb2tlbiA9IHRlcm1pbmFsTm9kZS5nZXRTaWduaWZpY2FudFRva2VuKCk7XG5cbiAgaWYgKHNpZ25pZmljYW50VG9rZW4gPT09IG51bGwpIHtcbiAgICBsZWFkaW5nSW5kZXggPSAtMTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBzaWduaWZpY2FudFRva2VuSW5kZXggPSB0b2tlbnMuaW5kZXhPZihzaWduaWZpY2FudFRva2VuKTtcblxuICAgIGxlYWRpbmdJbmRleCA9IHNpZ25pZmljYW50VG9rZW5JbmRleDsgLy8vXG4gIH1cblxuICByZXR1cm4gbGVhZGluZ0luZGV4O1xufVxuXG5mdW5jdGlvbiB0cmFpbGluZ0luZGV4RnJvbVRlcm1pbmFsTm9kZUFuZFRva2Vucyh0ZXJtaW5hbE5vZGUsIHRva2Vucykge1xuICBsZXQgdHJhaWxpbmdJbmRleDtcblxuICBjb25zdCBzaWduaWZpY2FudFRva2VuID0gdGVybWluYWxOb2RlLmdldFNpZ25pZmljYW50VG9rZW4oKTtcblxuICBpZiAoc2lnbmlmaWNhbnRUb2tlbiA9PT0gbnVsbCkge1xuICAgIHRyYWlsaW5nSW5kZXggPSAtMTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBzaWduaWZpY2FudFRva2VuSW5kZXggPSB0b2tlbnMuaW5kZXhPZihzaWduaWZpY2FudFRva2VuKTtcblxuICAgIHRyYWlsaW5nSW5kZXggPSBzaWduaWZpY2FudFRva2VuSW5kZXg7IC8vL1xuICB9XG5cbiAgcmV0dXJuIHRyYWlsaW5nSW5kZXg7XG59XG5cbmZ1bmN0aW9uIGxlYWRpbmdJbmRleEZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMobm9uVGVybWluYWxOb2RlLCB0b2tlbnMpIHtcbiAgbGV0IGxlYWRpbmdJbmRleDtcblxuICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKTtcblxuICBmb3J3YXJkc1NvbWUoY2hpbGROb2RlcywgKGNoaWxkTm9kZSkgPT4ge1xuICAgIGNvbnN0IG5vZGUgPSBjaGlsZE5vZGU7XG5cbiAgICBsZWFkaW5nSW5kZXggPSBsZWFkaW5nSW5kZXhGcm9tTm9kZUFuZFRva2Vucyhub2RlLCB0b2tlbnMpO1xuXG4gICAgaWYgKGxlYWRpbmdJbmRleCAhPT0gLTEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGxlYWRpbmdJbmRleDtcbn1cblxuZnVuY3Rpb24gdHJhaWxpbmdJbmRleEZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMobm9uVGVybWluYWxOb2RlLCB0b2tlbnMpIHtcbiAgbGV0IHRyYWlsaW5nSW5kZXg7XG5cbiAgY29uc3QgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgYmFja3dhcmRzU29tZShjaGlsZE5vZGVzLCAoY2hpbGROb2RlKSA9PiB7XG4gICAgY29uc3Qgbm9kZSA9IGNoaWxkTm9kZTtcblxuICAgIHRyYWlsaW5nSW5kZXggPSB0cmFpbGluZ0luZGV4RnJvbU5vZGVBbmRUb2tlbnMobm9kZSwgdG9rZW5zKTtcblxuICAgIGlmICh0cmFpbGluZ0luZGV4ICE9PSAtMSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdHJhaWxpbmdJbmRleDtcbn1cblxuIl0sIm5hbWVzIjpbImxlYWRpbmdJbmRleEZyb21Ob2RlQW5kVG9rZW5zIiwicmVtb3ZlTm9kZSIsInJlbW92ZU5vZGVzIiwicmVtb3ZlVG9rZW5zIiwicmVwbGFjZU5vZGUiLCJyZXBsYWNlTm9kZXMiLCJyZXBsYWNlVG9rZW5zIiwidHJhaWxpbmdJbmRleEZyb21Ob2RlQW5kVG9rZW5zIiwiZm9yd2FyZHNTb21lIiwiYXJyYXlVdGlsaXRpZXMiLCJiYWNrd2FyZHNTb21lIiwicmVtb3ZlZE5vZGUiLCJwYXJlbnROb2RlIiwicmVtb3ZlZENoaWxkTm9kZSIsInJlbW92ZUNoaWxkTm9kZSIsInJlbW92ZWROb2RlcyIsInJlbW92ZWRDaGlsZE5vZGVzIiwicmVtb3ZlQ2hpbGROb2RlcyIsInRva2VucyIsIm5vblRlcm1pbmFsTm9kZSIsImxlYWRpbmdJbmRleCIsImxlYWRpbmdJbmRleEZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMiLCJ0cmFpbGluZ0luZGV4IiwidHJhaWxpbmdJbmRleEZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMiLCJzdGFydCIsImVuZCIsImRlbGV0ZUNvdW50Iiwic3BsaWNlIiwicmVwbGFjZW1lbnROb2RlIiwicmVwbGFjZWROb2RlIiwicmVwbGFjZWRDaGlsZE5vZGUiLCJyZXBsYWNlbWVudENoaWxkTm9kZSIsInJlcGxhY2VDaGlsZE5vZGUiLCJyZXBsYWNlbWVudE5vZGVzIiwicmVwbGFjZW1lbnRDaGlsZE5vZGVzIiwicmVwbGFjZUNoaWxkTm9kZXMiLCJyZXBsYWNlbWVudFRva2VucyIsIm5vZGUiLCJub2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJsZWFkaW5nSW5kZXhGcm9tVGVybWluYWxOb2RlQW5kVG9rZW5zIiwidHJhaWxpbmdJbmRleEZyb21UZXJtaW5hbE5vZGVBbmRUb2tlbnMiLCJzaWduaWZpY2FudFRva2VuIiwiZ2V0U2lnbmlmaWNhbnRUb2tlbiIsInNpZ25pZmljYW50VG9rZW5JbmRleCIsImluZGV4T2YiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsImNoaWxkTm9k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
@@ -18,8 +18,8 @@ _export(exports, {
18
18
  embedDirectiveMarkdownNodesFromNode: function() {
19
19
  return embedDirectiveMarkdownNodesFromNode;
20
20
  },
21
- footnoteMarkdownNodesFromNode: function() {
22
- return footnoteMarkdownNodesFromNode;
21
+ footnoteMarkdownNodsFromNode: function() {
22
+ return footnoteMarkdownNodsFromNode;
23
23
  },
24
24
  footnotesDirectiveMarkdownNodeFromNode: function() {
25
25
  return footnotesDirectiveMarkdownNodeFromNode;
@@ -44,12 +44,18 @@ _export(exports, {
44
44
  },
45
45
  nodesQuery: function() {
46
46
  return nodesQuery;
47
+ },
48
+ pageNumberDirectiveMarkdownNodeFromNode: function() {
49
+ return pageNumberDirectiveMarkdownNodeFromNode;
50
+ },
51
+ subDivisionMarkdownNodesFromNode: function() {
52
+ return subDivisionMarkdownNodesFromNode;
47
53
  }
48
54
  });
49
55
  var _occamquery = require("occam-query");
50
56
  var _necessary = require("necessary");
51
57
  var first = _necessary.arrayUtilities.first, push = _necessary.arrayUtilities.push;
52
- var ignoreDirectiveMarkdownNodeQuery = _occamquery.Query.fromExpression("//directives/ignoreDirective"), contentsDirectiveMarkdownNodeQuery = _occamquery.Query.fromExpression("//directives/contentsDirective"), footnotesDirectiveMarkdownNodeQuery = _occamquery.Query.fromExpression("//directives/footnotesDirective"), linkMarkdownNodesQuery = _occamquery.Query.fromExpression("//link"), headingMarkdownNodesQuery = _occamquery.Query.fromExpression("//primaryHeading|secondaryHeading|tertiaryHeading|quaternaryHeading"), footnoteMarkdownNodesQuery = _occamquery.Query.fromExpression("//footnote"), embedDirectiveMarkdownNodesQuery = _occamquery.Query.fromExpression("//directives/embedDirective"), includeDirectiveMarkdownNodesQuery = _occamquery.Query.fromExpression("//directives/includeDirective"), linkReferenceOrFootnotesDirectiveMarkdownNodesQuery = _occamquery.Query.fromExpression("//link|reference|footnotesDirective");
58
+ var footnoteMarkdownNodeQuery = _occamquery.Query.fromExpression("//footnote"), ignoreDirectiveMarkdownNodeQuery = _occamquery.Query.fromExpression("//directives/ignoreDirective"), contentsDirectiveMarkdownNodeQuery = _occamquery.Query.fromExpression("//directives/contentsDirective"), footnotesDirectiveMarkdownNodeQuery = _occamquery.Query.fromExpression("//directives/footnotesDirective"), pageNumberDirectiveMarkdownNodeQuery = _occamquery.Query.fromExpression("//directives/pageNumber"), linkMarkdownNodesQuery = _occamquery.Query.fromExpression("//link"), headingMarkdownNodesQuery = _occamquery.Query.fromExpression("//primaryHeading|secondaryHeading|tertiaryHeading|quaternaryHeading"), subDivisionMarkdownNodesQuery = _occamquery.Query.fromExpression("//subDivision"), embedDirectiveMarkdownNodesQuery = _occamquery.Query.fromExpression("//directives/embedDirective"), includeDirectiveMarkdownNodesQuery = _occamquery.Query.fromExpression("//directives/includeDirective"), linkReferenceOrFootnotesDirectiveMarkdownNodesQuery = _occamquery.Query.fromExpression("//link|reference|footnotesDirective");
53
59
  function nodeQuery(expression) {
54
60
  var query = _occamquery.Query.fromExpression(expression);
55
61
  return function(node) {
@@ -70,6 +76,10 @@ function nodesQuery(expression) {
70
76
  return nodes;
71
77
  };
72
78
  }
79
+ function footnoteMarkdownNodsFromNode(node) {
80
+ var footnoteMarkdownNode = nodeFromNodeAndQuery(node, footnoteMarkdownNodeQuery);
81
+ return footnoteMarkdownNode;
82
+ }
73
83
  function ignoreDirectiveMarkdownNodeFromNode(node) {
74
84
  var ignoreDirectiveMarkdownNode = nodeFromNodeAndQuery(node, ignoreDirectiveMarkdownNodeQuery);
75
85
  return ignoreDirectiveMarkdownNode;
@@ -82,6 +92,10 @@ function footnotesDirectiveMarkdownNodeFromNode(node) {
82
92
  var footnotesDirectiveMarkdownNode = nodeFromNodeAndQuery(node, footnotesDirectiveMarkdownNodeQuery);
83
93
  return footnotesDirectiveMarkdownNode;
84
94
  }
95
+ function pageNumberDirectiveMarkdownNodeFromNode(node) {
96
+ var pageNumberDirectiveMarkdownNode = nodeFromNodeAndQuery(node, pageNumberDirectiveMarkdownNodeQuery);
97
+ return pageNumberDirectiveMarkdownNode;
98
+ }
85
99
  function linkMarkdownNodesFromNode(node) {
86
100
  var linkMarkdownNodes = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
87
101
  nodesFromNodeAndQuery(node, linkMarkdownNodesQuery, linkMarkdownNodes);
@@ -92,10 +106,10 @@ function headingMarkdownNodesFromNode(node) {
92
106
  nodesFromNodeAndQuery(node, headingMarkdownNodesQuery, headingMarkdownNodes);
93
107
  return headingMarkdownNodes;
94
108
  }
95
- function footnoteMarkdownNodesFromNode(node) {
96
- var footnoteMarkdownNodes = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
97
- nodesFromNodeAndQuery(node, footnoteMarkdownNodesQuery, footnoteMarkdownNodes);
98
- return footnoteMarkdownNodes;
109
+ function subDivisionMarkdownNodesFromNode(node) {
110
+ var subDivisionMarkdownNodes = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
111
+ nodesFromNodeAndQuery(node, subDivisionMarkdownNodesQuery, subDivisionMarkdownNodes);
112
+ return subDivisionMarkdownNodes;
99
113
  }
100
114
  function embedDirectiveMarkdownNodesFromNode(node) {
101
115
  var embedDirectiveMarkdownNodes = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
@@ -113,12 +127,14 @@ function linkReferenceOrFootnotesDirectiveMarkdownNodesFromNode(node) {
113
127
  return linkReferenceOrFootnotesDirectiveMarkdownNodes;
114
128
  }
115
129
  var _default = {
130
+ footnoteMarkdownNodsFromNode: footnoteMarkdownNodsFromNode,
116
131
  ignoreDirectiveMarkdownNodeFromNode: ignoreDirectiveMarkdownNodeFromNode,
117
132
  contentsDirectiveMarkdownNodeFromNode: contentsDirectiveMarkdownNodeFromNode,
118
133
  footnotesDirectiveMarkdownNodeFromNode: footnotesDirectiveMarkdownNodeFromNode,
134
+ pageNumberDirectiveMarkdownNodeFromNode: pageNumberDirectiveMarkdownNodeFromNode,
119
135
  linkMarkdownNodesFromNode: linkMarkdownNodesFromNode,
120
136
  headingMarkdownNodesFromNode: headingMarkdownNodesFromNode,
121
- footnoteMarkdownNodesFromNode: footnoteMarkdownNodesFromNode,
137
+ subDivisionMarkdownNodesFromNode: subDivisionMarkdownNodesFromNode,
122
138
  embedDirectiveMarkdownNodesFromNode: embedDirectiveMarkdownNodesFromNode,
123
139
  includeDirectiveMarkdownNodesFromNode: includeDirectiveMarkdownNodesFromNode,
124
140
  linkReferenceOrFootnotesDirectiveMarkdownNodesFromNode: linkReferenceOrFootnotesDirectiveMarkdownNodesFromNode
@@ -139,4 +155,4 @@ function nodesFromNodeAndQuery(node, query, nodes) {
139
155
  return nodes;
140
156
  }
141
157
 
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcXVlcnkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIm9jY2FtLXF1ZXJ5XCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBmaXJzdCwgcHVzaCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmNvbnN0IGlnbm9yZURpcmVjdGl2ZU1hcmtkb3duTm9kZVF1ZXJ5ID0gUXVlcnkuZnJvbUV4cHJlc3Npb24oXCIvL2RpcmVjdGl2ZXMvaWdub3JlRGlyZWN0aXZlXCIpLFxuICAgICAgY29udGVudHNEaXJlY3RpdmVNYXJrZG93bk5vZGVRdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uKFwiLy9kaXJlY3RpdmVzL2NvbnRlbnRzRGlyZWN0aXZlXCIpLFxuICAgICAgZm9vdG5vdGVzRGlyZWN0aXZlTWFya2Rvd25Ob2RlUXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihcIi8vZGlyZWN0aXZlcy9mb290bm90ZXNEaXJlY3RpdmVcIiksXG4gICAgICBsaW5rTWFya2Rvd25Ob2Rlc1F1ZXJ5ID0gUXVlcnkuZnJvbUV4cHJlc3Npb24oXCIvL2xpbmtcIiksXG4gICAgICBoZWFkaW5nTWFya2Rvd25Ob2Rlc1F1ZXJ5ID0gUXVlcnkuZnJvbUV4cHJlc3Npb24oXCIvL3ByaW1hcnlIZWFkaW5nfHNlY29uZGFyeUhlYWRpbmd8dGVydGlhcnlIZWFkaW5nfHF1YXRlcm5hcnlIZWFkaW5nXCIpLFxuICAgICAgZm9vdG5vdGVNYXJrZG93bk5vZGVzUXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihcIi8vZm9vdG5vdGVcIiksXG4gICAgICBlbWJlZERpcmVjdGl2ZU1hcmtkb3duTm9kZXNRdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uKFwiLy9kaXJlY3RpdmVzL2VtYmVkRGlyZWN0aXZlXCIpLFxuICAgICAgaW5jbHVkZURpcmVjdGl2ZU1hcmtkb3duTm9kZXNRdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uKFwiLy9kaXJlY3RpdmVzL2luY2x1ZGVEaXJlY3RpdmVcIiksXG4gICAgICBsaW5rUmVmZXJlbmNlT3JGb290bm90ZXNEaXJlY3RpdmVNYXJrZG93bk5vZGVzUXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihcIi8vbGlua3xyZWZlcmVuY2V8Zm9vdG5vdGVzRGlyZWN0aXZlXCIpO1xuXG5leHBvcnQgZnVuY3Rpb24gbm9kZVF1ZXJ5KGV4cHJlc3Npb24pIHtcbiAgY29uc3QgcXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihleHByZXNzaW9uKTtcblxuICByZXR1cm4gZnVuY3Rpb24obm9kZSkge1xuICAgIGNvbnN0IG5vZGVzID0gcXVlcnkuZXhlY3V0ZShub2RlKSxcbiAgICAgICAgICBub2Rlc0xlbmd0aCA9IG5vZGVzLmxlbmd0aDtcblxuICAgIGlmIChub2Rlc0xlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpcnN0Tm9kZSA9IGZpcnN0KG5vZGVzKTtcblxuICAgICAgbm9kZSA9IGZpcnN0Tm9kZTsgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2Rlc1F1ZXJ5KGV4cHJlc3Npb24pIHtcbiAgY29uc3QgcXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihleHByZXNzaW9uKTtcblxuICByZXR1cm4gZnVuY3Rpb24obm9kZSkge1xuICAgIGNvbnN0IG5vZGVzID0gcXVlcnkuZXhlY3V0ZShub2RlKTtcblxuICAgIHJldHVybiBub2RlcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaWdub3JlRGlyZWN0aXZlTWFya2Rvd25Ob2RlRnJvbU5vZGUobm9kZSkge1xuICBjb25zdCBpZ25vcmVEaXJlY3RpdmVNYXJrZG93bk5vZGUgPSBub2RlRnJvbU5vZGVBbmRRdWVyeShub2RlLCBpZ25vcmVEaXJlY3RpdmVNYXJrZG93bk5vZGVRdWVyeSk7XG5cbiAgcmV0dXJuIGlnbm9yZURpcmVjdGl2ZU1hcmtkb3duTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRlbnRzRGlyZWN0aXZlTWFya2Rvd25Ob2RlRnJvbU5vZGUobm9kZSkge1xuICBjb25zdCBjb250ZW50c0RpcmVjdGl2ZU1hcmtkb3duTm9kZSA9IG5vZGVGcm9tTm9kZUFuZFF1ZXJ5KG5vZGUsIGNvbnRlbnRzRGlyZWN0aXZlTWFya2Rvd25Ob2RlUXVlcnkpO1xuXG4gIHJldHVybiBjb250ZW50c0RpcmVjdGl2ZU1hcmtkb3duTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvb3Rub3Rlc0RpcmVjdGl2ZU1hcmtkb3duTm9kZUZyb21Ob2RlKG5vZGUpIHtcbiAgY29uc3QgZm9vdG5vdGVzRGlyZWN0aXZlTWFya2Rvd25Ob2RlID0gbm9kZUZyb21Ob2RlQW5kUXVlcnkobm9kZSwgZm9vdG5vdGVzRGlyZWN0aXZlTWFya2Rvd25Ob2RlUXVlcnkpO1xuXG4gIHJldHVybiBmb290bm90ZXNEaXJlY3RpdmVNYXJrZG93bk5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5rTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlKG5vZGUsIGxpbmtNYXJrZG93bk5vZGVzID0gW10pIHtcbiAgbm9kZXNGcm9tTm9kZUFuZFF1ZXJ5KG5vZGUsIGxpbmtNYXJrZG93bk5vZGVzUXVlcnksIGxpbmtNYXJrZG93bk5vZGVzKTtcblxuICByZXR1cm4gbGlua01hcmtkb3duTm9kZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoZWFkaW5nTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlKG5vZGUsIGhlYWRpbmdNYXJrZG93bk5vZGVzID0gW10pIHtcbiAgbm9kZXNGcm9tTm9kZUFuZFF1ZXJ5KG5vZGUsIGhlYWRpbmdNYXJrZG93bk5vZGVzUXVlcnksIGhlYWRpbmdNYXJrZG93bk5vZGVzKTtcblxuICByZXR1cm4gaGVhZGluZ01hcmtkb3duTm9kZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb290bm90ZU1hcmtkb3duTm9kZXNGcm9tTm9kZShub2RlLCBmb290bm90ZU1hcmtkb3duTm9kZXMgPSBbXSkge1xuICBub2Rlc0Zyb21Ob2RlQW5kUXVlcnkobm9kZSwgZm9vdG5vdGVNYXJrZG93bk5vZGVzUXVlcnksIGZvb3Rub3RlTWFya2Rvd25Ob2Rlcyk7XG5cbiAgcmV0dXJuIGZvb3Rub3RlTWFya2Rvd25Ob2Rlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVtYmVkRGlyZWN0aXZlTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlKG5vZGUsIGVtYmVkRGlyZWN0aXZlTWFya2Rvd25Ob2RlcyA9IFtdKSB7XG4gIG5vZGVzRnJvbU5vZGVBbmRRdWVyeShub2RlLCBlbWJlZERpcmVjdGl2ZU1hcmtkb3duTm9kZXNRdWVyeSwgZW1iZWREaXJlY3RpdmVNYXJrZG93bk5vZGVzKTtcblxuICByZXR1cm4gZW1iZWREaXJlY3RpdmVNYXJrZG93bk5vZGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5jbHVkZURpcmVjdGl2ZU1hcmtkb3duTm9kZXNGcm9tTm9kZShub2RlLCBpbmNsdWRlRGlyZWN0aXZlTWFya2Rvd25Ob2RlcyA9IFtdKSB7XG4gIG5vZGVzRnJvbU5vZGVBbmRRdWVyeShub2RlLCBpbmNsdWRlRGlyZWN0aXZlTWFya2Rvd25Ob2Rlc1F1ZXJ5LCBpbmNsdWRlRGlyZWN0aXZlTWFya2Rvd25Ob2Rlcyk7XG5cbiAgcmV0dXJuIGluY2x1ZGVEaXJlY3RpdmVNYXJrZG93bk5vZGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua1JlZmVyZW5jZU9yRm9vdG5vdGVzRGlyZWN0aXZlTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlKG5vZGUsIGxpbmtSZWZlcmVuY2VPckZvb3Rub3Rlc0RpcmVjdGl2ZU1hcmtkb3duTm9kZXMgPSBbXSkge1xuICBub2Rlc0Zyb21Ob2RlQW5kUXVlcnkobm9kZSwgbGlua1JlZmVyZW5jZU9yRm9vdG5vdGVzRGlyZWN0aXZlTWFya2Rvd25Ob2Rlc1F1ZXJ5LCBsaW5rUmVmZXJlbmNlT3JGb290bm90ZXNEaXJlY3RpdmVNYXJrZG93bk5vZGVzKTtcblxuICByZXR1cm4gbGlua1JlZmVyZW5jZU9yRm9vdG5vdGVzRGlyZWN0aXZlTWFya2Rvd25Ob2Rlcztcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBpZ25vcmVEaXJlY3RpdmVNYXJrZG93bk5vZGVGcm9tTm9kZSxcbiAgY29udGVudHNEaXJlY3RpdmVNYXJrZG93bk5vZGVGcm9tTm9kZSxcbiAgZm9vdG5vdGVzRGlyZWN0aXZlTWFya2Rvd25Ob2RlRnJvbU5vZGUsXG4gIGxpbmtNYXJrZG93bk5vZGVzRnJvbU5vZGUsXG4gIGhlYWRpbmdNYXJrZG93bk5vZGVzRnJvbU5vZGUsXG4gIGZvb3Rub3RlTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlLFxuICBlbWJlZERpcmVjdGl2ZU1hcmtkb3duTm9kZXNGcm9tTm9kZSxcbiAgaW5jbHVkZURpcmVjdGl2ZU1hcmtkb3duTm9kZXNGcm9tTm9kZSxcbiAgbGlua1JlZmVyZW5jZU9yRm9vdG5vdGVzRGlyZWN0aXZlTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlXG59O1xuXG5mdW5jdGlvbiBub2RlRnJvbU5vZGVBbmRRdWVyeShub2RlLCBxdWVyeSkge1xuICBjb25zdCBxdWVyeU5vZGVzID0gcXVlcnkuZXhlY3V0ZShub2RlKSxcbiAgICAgICAgcXVlcnlOb2Rlc0xlbmd0aCA9IHF1ZXJ5Tm9kZXMubGVuZ3RoO1xuXG4gIGlmIChxdWVyeU5vZGVzTGVuZ3RoID09PSAwKSB7XG4gICAgbm9kZSA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZmlyc3RRdWVyeU5vZGUgPSBmaXJzdChxdWVyeU5vZGVzKTtcblxuICAgIG5vZGUgPSBmaXJzdFF1ZXJ5Tm9kZTsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59XG5cbmZ1bmN0aW9uIG5vZGVzRnJvbU5vZGVBbmRRdWVyeShub2RlLCBxdWVyeSwgbm9kZXMpIHtcbiAgY29uc3QgcXVlcnlOb2RlcyA9IHF1ZXJ5LmV4ZWN1dGUobm9kZSk7XG5cbiAgcHVzaChub2RlcywgcXVlcnlOb2Rlcyk7XG5cbiAgcmV0dXJuIG5vZGVzO1xufVxuIl0sIm5hbWVzIjpbImNvbnRlbnRzRGlyZWN0aXZlTWFya2Rvd25Ob2RlRnJvbU5vZGUiLCJlbWJlZERpcmVjdGl2ZU1hcmtkb3duTm9kZXNGcm9tTm9kZSIsImZvb3Rub3RlTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlIiwiZm9vdG5vdGVzRGlyZWN0aXZlTWFya2Rvd25Ob2RlRnJvbU5vZGUiLCJoZWFkaW5nTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlIiwiaWdub3JlRGlyZWN0aXZlTWFya2Rvd25Ob2RlRnJvbU5vZGUiLCJpbmNsdWRlRGlyZWN0aXZlTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlIiwibGlua01hcmtkb3duTm9kZXNGcm9tTm9kZSIsImxpbmtSZWZlcmVuY2VPckZvb3Rub3Rlc0RpcmVjdGl2ZU1hcmtkb3duTm9kZXNGcm9tTm9kZSIsIm5vZGVRdWVyeSIsIm5vZGVzUXVlcnkiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwicHVzaCIsImlnbm9yZURpcmVjdGl2ZU1hcmtkb3duTm9kZVF1ZXJ5IiwiUXVlcnkiLCJmcm9tRXhwcmVzc2lvbiIsImNvbnRlbnRzRGlyZWN0aXZlTWFya2Rvd25Ob2RlUXVlcnkiLCJmb290bm90ZXNEaXJlY3RpdmVNYXJrZG93bk5vZGVRdWVyeSIsImxpbmtNYXJrZG93bk5vZGVzUXVlcnkiLCJoZWFkaW5nTWFya2Rvd25Ob2Rlc1F1ZXJ5IiwiZm9vdG5vdGVNYXJrZG93bk5vZGVzUXVlcnkiLCJlbWJlZERpcmVjdGl2ZU1hcmtkb3duTm9kZXNRdWVyeSIsImluY2x1ZGVEaXJlY3RpdmVNYXJrZG93bk5vZGVzUXVlcnkiLCJsaW5rUmVmZXJlbmNlT3JGb290bm90ZXNEaXJlY3RpdmVNYXJrZG93bk5vZGVzUXVlcnkiLCJleHByZXNzaW9uIiwicXVlcnkiLCJub2RlIiwibm9kZXMiLCJleGVjdXRlIiwibm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJmaXJzdE5vZGUiLCJpZ25vcmVEaXJlY3RpdmVNYXJrZG93bk5vZGUiLCJub2RlRnJvbU5vZGVBbmRRdWVyeSIsImNvbnRlbnRzRGlyZWN0aXZlTWFya2Rvd25Ob2RlIiwiZm9vdG5vdGVzRGlyZWN0aXZlTWFya2Rvd25Ob2RlIiwibGlua01hcmtkb3duTm9kZXMiLCJub2Rlc0Zyb21Ob2RlQW5kUXVlcnkiLCJoZWFkaW5nTWFya2Rvd25Ob2RlcyIsImZvb3Rub3RlTWFya2Rvd25Ob2RlcyIsImVtYmVkRGlyZWN0aXZlTWFya2Rvd25Ob2RlcyIsImluY2x1ZGVEaXJlY3RpdmVNYXJrZG93bk5vZGVzIiwibGlua1JlZmVyZW5jZU9yRm9vdG5vdGVzRGlyZWN0aXZlTWFya2Rvd25Ob2RlcyIsInF1ZXJ5Tm9kZXMiLCJxdWVyeU5vZGVzTGVuZ3RoIiwiZmlyc3RRdWVyeU5vZGUiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBb0RnQkEscUNBQXFDO2VBQXJDQTs7SUFnRGhCLE9BVUU7ZUFWRjs7SUFsQmdCQyxtQ0FBbUM7ZUFBbkNBOztJQU5BQyw2QkFBNkI7ZUFBN0JBOztJQWxCQUMsc0NBQXNDO2VBQXRDQTs7SUFZQUMsNEJBQTRCO2VBQTVCQTs7SUF4QkFDLG1DQUFtQztlQUFuQ0E7O0lBMENBQyxxQ0FBcUM7ZUFBckNBOztJQXhCQUMseUJBQXlCO2VBQXpCQTs7SUE4QkFDLHNEQUFzRDtlQUF0REE7O0lBN0VBQyxTQUFTO2VBQVRBOztJQW1CQUMsVUFBVTtlQUFWQTs7OzBCQWxDTTt5QkFDUztBQUUvQixJQUFRQyxRQUFnQkMseUJBQWMsQ0FBOUJELE9BQU9FLE9BQVNELHlCQUFjLENBQXZC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
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcXVlcnkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIm9jY2FtLXF1ZXJ5XCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBmaXJzdCwgcHVzaCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmNvbnN0IGZvb3Rub3RlTWFya2Rvd25Ob2RlUXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihcIi8vZm9vdG5vdGVcIiksXG4gICAgICBpZ25vcmVEaXJlY3RpdmVNYXJrZG93bk5vZGVRdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uKFwiLy9kaXJlY3RpdmVzL2lnbm9yZURpcmVjdGl2ZVwiKSxcbiAgICAgIGNvbnRlbnRzRGlyZWN0aXZlTWFya2Rvd25Ob2RlUXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihcIi8vZGlyZWN0aXZlcy9jb250ZW50c0RpcmVjdGl2ZVwiKSxcbiAgICAgIGZvb3Rub3Rlc0RpcmVjdGl2ZU1hcmtkb3duTm9kZVF1ZXJ5ID0gUXVlcnkuZnJvbUV4cHJlc3Npb24oXCIvL2RpcmVjdGl2ZXMvZm9vdG5vdGVzRGlyZWN0aXZlXCIpLFxuICAgICAgcGFnZU51bWJlckRpcmVjdGl2ZU1hcmtkb3duTm9kZVF1ZXJ5ID0gUXVlcnkuZnJvbUV4cHJlc3Npb24oXCIvL2RpcmVjdGl2ZXMvcGFnZU51bWJlclwiKSxcbiAgICAgIGxpbmtNYXJrZG93bk5vZGVzUXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihcIi8vbGlua1wiKSxcbiAgICAgIGhlYWRpbmdNYXJrZG93bk5vZGVzUXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihcIi8vcHJpbWFyeUhlYWRpbmd8c2Vjb25kYXJ5SGVhZGluZ3x0ZXJ0aWFyeUhlYWRpbmd8cXVhdGVybmFyeUhlYWRpbmdcIiksXG4gICAgICBzdWJEaXZpc2lvbk1hcmtkb3duTm9kZXNRdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uKFwiLy9zdWJEaXZpc2lvblwiKSxcbiAgICAgIGVtYmVkRGlyZWN0aXZlTWFya2Rvd25Ob2Rlc1F1ZXJ5ID0gUXVlcnkuZnJvbUV4cHJlc3Npb24oXCIvL2RpcmVjdGl2ZXMvZW1iZWREaXJlY3RpdmVcIiksXG4gICAgICBpbmNsdWRlRGlyZWN0aXZlTWFya2Rvd25Ob2Rlc1F1ZXJ5ID0gUXVlcnkuZnJvbUV4cHJlc3Npb24oXCIvL2RpcmVjdGl2ZXMvaW5jbHVkZURpcmVjdGl2ZVwiKSxcbiAgICAgIGxpbmtSZWZlcmVuY2VPckZvb3Rub3Rlc0RpcmVjdGl2ZU1hcmtkb3duTm9kZXNRdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uKFwiLy9saW5rfHJlZmVyZW5jZXxmb290bm90ZXNEaXJlY3RpdmVcIik7XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlUXVlcnkoZXhwcmVzc2lvbikge1xuICBjb25zdCBxdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uKGV4cHJlc3Npb24pO1xuXG4gIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgY29uc3Qgbm9kZXMgPSBxdWVyeS5leGVjdXRlKG5vZGUpLFxuICAgICAgICAgIG5vZGVzTGVuZ3RoID0gbm9kZXMubGVuZ3RoO1xuXG4gICAgaWYgKG5vZGVzTGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlyc3ROb2RlID0gZmlyc3Qobm9kZXMpO1xuXG4gICAgICBub2RlID0gZmlyc3ROb2RlOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZSA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVzUXVlcnkoZXhwcmVzc2lvbikge1xuICBjb25zdCBxdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uKGV4cHJlc3Npb24pO1xuXG4gIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgY29uc3Qgbm9kZXMgPSBxdWVyeS5leGVjdXRlKG5vZGUpO1xuXG4gICAgcmV0dXJuIG5vZGVzO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb290bm90ZU1hcmtkb3duTm9kc0Zyb21Ob2RlKG5vZGUpIHtcbiAgY29uc3QgZm9vdG5vdGVNYXJrZG93bk5vZGUgPSBub2RlRnJvbU5vZGVBbmRRdWVyeShub2RlLCBmb290bm90ZU1hcmtkb3duTm9kZVF1ZXJ5KTtcblxuICByZXR1cm4gZm9vdG5vdGVNYXJrZG93bk5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZ25vcmVEaXJlY3RpdmVNYXJrZG93bk5vZGVGcm9tTm9kZShub2RlKSB7XG4gIGNvbnN0IGlnbm9yZURpcmVjdGl2ZU1hcmtkb3duTm9kZSA9IG5vZGVGcm9tTm9kZUFuZFF1ZXJ5KG5vZGUsIGlnbm9yZURpcmVjdGl2ZU1hcmtkb3duTm9kZVF1ZXJ5KTtcblxuICByZXR1cm4gaWdub3JlRGlyZWN0aXZlTWFya2Rvd25Ob2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGVudHNEaXJlY3RpdmVNYXJrZG93bk5vZGVGcm9tTm9kZShub2RlKSB7XG4gIGNvbnN0IGNvbnRlbnRzRGlyZWN0aXZlTWFya2Rvd25Ob2RlID0gbm9kZUZyb21Ob2RlQW5kUXVlcnkobm9kZSwgY29udGVudHNEaXJlY3RpdmVNYXJrZG93bk5vZGVRdWVyeSk7XG5cbiAgcmV0dXJuIGNvbnRlbnRzRGlyZWN0aXZlTWFya2Rvd25Ob2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9vdG5vdGVzRGlyZWN0aXZlTWFya2Rvd25Ob2RlRnJvbU5vZGUobm9kZSkge1xuICBjb25zdCBmb290bm90ZXNEaXJlY3RpdmVNYXJrZG93bk5vZGUgPSBub2RlRnJvbU5vZGVBbmRRdWVyeShub2RlLCBmb290bm90ZXNEaXJlY3RpdmVNYXJrZG93bk5vZGVRdWVyeSk7XG5cbiAgcmV0dXJuIGZvb3Rub3Rlc0RpcmVjdGl2ZU1hcmtkb3duTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhZ2VOdW1iZXJEaXJlY3RpdmVNYXJrZG93bk5vZGVGcm9tTm9kZShub2RlKSB7XG4gIGNvbnN0IHBhZ2VOdW1iZXJEaXJlY3RpdmVNYXJrZG93bk5vZGUgPSBub2RlRnJvbU5vZGVBbmRRdWVyeShub2RlLCBwYWdlTnVtYmVyRGlyZWN0aXZlTWFya2Rvd25Ob2RlUXVlcnkpO1xuXG4gIHJldHVybiBwYWdlTnVtYmVyRGlyZWN0aXZlTWFya2Rvd25Ob2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua01hcmtkb3duTm9kZXNGcm9tTm9kZShub2RlLCBsaW5rTWFya2Rvd25Ob2RlcyA9IFtdKSB7XG4gIG5vZGVzRnJvbU5vZGVBbmRRdWVyeShub2RlLCBsaW5rTWFya2Rvd25Ob2Rlc1F1ZXJ5LCBsaW5rTWFya2Rvd25Ob2Rlcyk7XG5cbiAgcmV0dXJuIGxpbmtNYXJrZG93bk5vZGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGVhZGluZ01hcmtkb3duTm9kZXNGcm9tTm9kZShub2RlLCBoZWFkaW5nTWFya2Rvd25Ob2RlcyA9IFtdKSB7XG4gIG5vZGVzRnJvbU5vZGVBbmRRdWVyeShub2RlLCBoZWFkaW5nTWFya2Rvd25Ob2Rlc1F1ZXJ5LCBoZWFkaW5nTWFya2Rvd25Ob2Rlcyk7XG5cbiAgcmV0dXJuIGhlYWRpbmdNYXJrZG93bk5vZGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3ViRGl2aXNpb25NYXJrZG93bk5vZGVzRnJvbU5vZGUobm9kZSwgc3ViRGl2aXNpb25NYXJrZG93bk5vZGVzID0gW10pIHtcbiAgbm9kZXNGcm9tTm9kZUFuZFF1ZXJ5KG5vZGUsIHN1YkRpdmlzaW9uTWFya2Rvd25Ob2Rlc1F1ZXJ5LCBzdWJEaXZpc2lvbk1hcmtkb3duTm9kZXMpO1xuXG4gIHJldHVybiBzdWJEaXZpc2lvbk1hcmtkb3duTm9kZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbWJlZERpcmVjdGl2ZU1hcmtkb3duTm9kZXNGcm9tTm9kZShub2RlLCBlbWJlZERpcmVjdGl2ZU1hcmtkb3duTm9kZXMgPSBbXSkge1xuICBub2Rlc0Zyb21Ob2RlQW5kUXVlcnkobm9kZSwgZW1iZWREaXJlY3RpdmVNYXJrZG93bk5vZGVzUXVlcnksIGVtYmVkRGlyZWN0aXZlTWFya2Rvd25Ob2Rlcyk7XG5cbiAgcmV0dXJuIGVtYmVkRGlyZWN0aXZlTWFya2Rvd25Ob2Rlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluY2x1ZGVEaXJlY3RpdmVNYXJrZG93bk5vZGVzRnJvbU5vZGUobm9kZSwgaW5jbHVkZURpcmVjdGl2ZU1hcmtkb3duTm9kZXMgPSBbXSkge1xuICBub2Rlc0Zyb21Ob2RlQW5kUXVlcnkobm9kZSwgaW5jbHVkZURpcmVjdGl2ZU1hcmtkb3duTm9kZXNRdWVyeSwgaW5jbHVkZURpcmVjdGl2ZU1hcmtkb3duTm9kZXMpO1xuXG4gIHJldHVybiBpbmNsdWRlRGlyZWN0aXZlTWFya2Rvd25Ob2Rlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtSZWZlcmVuY2VPckZvb3Rub3Rlc0RpcmVjdGl2ZU1hcmtkb3duTm9kZXNGcm9tTm9kZShub2RlLCBsaW5rUmVmZXJlbmNlT3JGb290bm90ZXNEaXJlY3RpdmVNYXJrZG93bk5vZGVzID0gW10pIHtcbiAgbm9kZXNGcm9tTm9kZUFuZFF1ZXJ5KG5vZGUsIGxpbmtSZWZlcmVuY2VPckZvb3Rub3Rlc0RpcmVjdGl2ZU1hcmtkb3duTm9kZXNRdWVyeSwgbGlua1JlZmVyZW5jZU9yRm9vdG5vdGVzRGlyZWN0aXZlTWFya2Rvd25Ob2Rlcyk7XG5cbiAgcmV0dXJuIGxpbmtSZWZlcmVuY2VPckZvb3Rub3Rlc0RpcmVjdGl2ZU1hcmtkb3duTm9kZXM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZm9vdG5vdGVNYXJrZG93bk5vZHNGcm9tTm9kZSxcbiAgaWdub3JlRGlyZWN0aXZlTWFya2Rvd25Ob2RlRnJvbU5vZGUsXG4gIGNvbnRlbnRzRGlyZWN0aXZlTWFya2Rvd25Ob2RlRnJvbU5vZGUsXG4gIGZvb3Rub3Rlc0RpcmVjdGl2ZU1hcmtkb3duTm9kZUZyb21Ob2RlLFxuICBwYWdlTnVtYmVyRGlyZWN0aXZlTWFya2Rvd25Ob2RlRnJvbU5vZGUsXG4gIGxpbmtNYXJrZG93bk5vZGVzRnJvbU5vZGUsXG4gIGhlYWRpbmdNYXJrZG93bk5vZGVzRnJvbU5vZGUsXG4gIHN1YkRpdmlzaW9uTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlLFxuICBlbWJlZERpcmVjdGl2ZU1hcmtkb3duTm9kZXNGcm9tTm9kZSxcbiAgaW5jbHVkZURpcmVjdGl2ZU1hcmtkb3duTm9kZXNGcm9tTm9kZSxcbiAgbGlua1JlZmVyZW5jZU9yRm9vdG5vdGVzRGlyZWN0aXZlTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlXG59O1xuXG5mdW5jdGlvbiBub2RlRnJvbU5vZGVBbmRRdWVyeShub2RlLCBxdWVyeSkge1xuICBjb25zdCBxdWVyeU5vZGVzID0gcXVlcnkuZXhlY3V0ZShub2RlKSxcbiAgICAgICAgcXVlcnlOb2Rlc0xlbmd0aCA9IHF1ZXJ5Tm9kZXMubGVuZ3RoO1xuXG4gIGlmIChxdWVyeU5vZGVzTGVuZ3RoID09PSAwKSB7XG4gICAgbm9kZSA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZmlyc3RRdWVyeU5vZGUgPSBmaXJzdChxdWVyeU5vZGVzKTtcblxuICAgIG5vZGUgPSBmaXJzdFF1ZXJ5Tm9kZTsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59XG5cbmZ1bmN0aW9uIG5vZGVzRnJvbU5vZGVBbmRRdWVyeShub2RlLCBxdWVyeSwgbm9kZXMpIHtcbiAgY29uc3QgcXVlcnlOb2RlcyA9IHF1ZXJ5LmV4ZWN1dGUobm9kZSk7XG5cbiAgcHVzaChub2RlcywgcXVlcnlOb2Rlcyk7XG5cbiAgcmV0dXJuIG5vZGVzO1xufVxuIl0sIm5hbWVzIjpbImNvbnRlbnRzRGlyZWN0aXZlTWFya2Rvd25Ob2RlRnJvbU5vZGUiLCJlbWJlZERpcmVjdGl2ZU1hcmtkb3duTm9kZXNGcm9tTm9kZSIsImZvb3Rub3RlTWFya2Rvd25Ob2RzRnJvbU5vZGUiLCJmb290bm90ZXNEaXJlY3RpdmVNYXJrZG93bk5vZGVGcm9tTm9kZSIsImhlYWRpbmdNYXJrZG93bk5vZGVzRnJvbU5vZGUiLCJpZ25vcmVEaXJlY3RpdmVNYXJrZG93bk5vZGVGcm9tTm9kZSIsImluY2x1ZGVEaXJlY3RpdmVNYXJrZG93bk5vZGVzRnJvbU5vZGUiLCJsaW5rTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlIiwibGlua1JlZmVyZW5jZU9yRm9vdG5vdGVzRGlyZWN0aXZlTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlIiwibm9kZVF1ZXJ5Iiwibm9kZXNRdWVyeSIsInBhZ2VOdW1iZXJEaXJlY3RpdmVNYXJrZG93bk5vZGVGcm9tTm9kZSIsInN1YkRpdmlzaW9uTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlIiwiZmlyc3QiLCJhcnJheVV0aWxpdGllcyIsInB1c2giLCJmb290bm90ZU1hcmtkb3duTm9kZVF1ZXJ5IiwiUXVlcnkiLCJmcm9tRXhwcmVzc2lvbiIsImlnbm9yZURpcmVjdGl2ZU1hcmtkb3duTm9kZVF1ZXJ5IiwiY29udGVudHNEaXJlY3RpdmVNYXJrZG93bk5vZGVRdWVyeSIsImZvb3Rub3Rlc0RpcmVjdGl2ZU1hcmtkb3duTm9kZVF1ZXJ5IiwicGFnZU51bWJlckRpcmVjdGl2ZU1hcmtkb3duTm9kZVF1ZXJ5IiwibGlua01hcmtkb3duTm9kZXNRdWVyeSIsImhlYWRpbmdNYXJrZG93bk5vZGVzUXVlcnkiLCJzdWJEaXZpc2lvbk1hcmtkb3duTm9kZXNRdWVyeSIsImVtYmVkRGlyZWN0aXZlTWFya2Rvd25Ob2Rlc1F1ZXJ5IiwiaW5jbHVkZURpcmVjdGl2ZU1hcmtkb3duTm9kZXNRdWVyeSIsImxpbmtSZWZlcmVuY2VPckZvb3Rub3Rlc0RpcmVjdGl2ZU1hcmtkb3duTm9kZXNRdWVyeSIsImV4cHJlc3Npb24iLCJxdWVyeSIsIm5vZGUiLCJub2RlcyIsImV4ZWN1dGUiLCJub2Rlc0xlbmd0aCIsImxlbmd0aCIsImZpcnN0Tm9kZSIsImZvb3Rub3RlTWFya2Rvd25Ob2RlIiwibm9kZUZyb21Ob2RlQW5kUXVlcnkiLCJpZ25vcmVEaXJlY3RpdmVNYXJrZG93bk5vZGUiLCJjb250ZW50c0RpcmVjdGl2ZU1hcmtkb3duTm9kZSIsImZvb3Rub3Rlc0RpcmVjdGl2ZU1hcmtkb3duTm9kZSIsInBhZ2VOdW1iZXJEaXJlY3RpdmVNYXJrZG93bk5vZGUiLCJsaW5rTWFya2Rvd25Ob2RlcyIsIm5vZGVzRnJvbU5vZGVBbmRRdWVyeSIsImhlYWRpbmdNYXJrZG93bk5vZGVzIiwic3ViRGl2aXNpb25NYXJrZG93bk5vZGVzIiwiZW1iZWREaXJlY3RpdmVNYXJrZG93bk5vZGVzIiwiaW5jbHVkZURpcmVjdGl2ZU1hcmtkb3duTm9kZXMiLCJsaW5rUmVmZXJlbmNlT3JGb290bm90ZXNEaXJlY3RpdmVNYXJrZG93bk5vZGVzIiwicXVlcnlOb2RlcyIsInF1ZXJ5Tm9kZXNMZW5ndGgiLCJmaXJzdFF1ZXJ5Tm9kZSJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBNERnQkEscUNBQXFDO2VBQXJDQTs7SUFzRGhCLE9BWUU7ZUFaRjs7SUFsQmdCQyxtQ0FBbUM7ZUFBbkNBOztJQWhEQUMsNEJBQTRCO2VBQTVCQTs7SUFrQkFDLHNDQUFzQztlQUF0Q0E7O0lBa0JBQyw0QkFBNEI7ZUFBNUJBOztJQTlCQUMsbUNBQW1DO2VBQW5DQTs7SUFnREFDLHFDQUFxQztlQUFyQ0E7O0lBeEJBQyx5QkFBeUI7ZUFBekJBOztJQThCQUMsc0RBQXNEO2VBQXREQTs7SUF6RkFDLFNBQVM7ZUFBVEE7O0lBbUJBQyxVQUFVO2VBQVZBOztJQWtDQUMsdUNBQXVDO2VBQXZDQTs7SUFrQkFDLGdDQUFnQztlQUFoQ0E7OzswQkF4Rk07eUJBQ1M7QUFFL0IsSUFBUUMs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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "highmark-markdown",
3
3
  "author": "James Smith",
4
- "version": "0.0.379",
4
+ "version": "0.0.382",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/highmark-markdown",
7
7
  "description": "Highmark's Markdown and Markdown Style languages.",
@@ -5,3 +5,4 @@ export const SRC_ATTRIBUTE_NAME = "src";
5
5
  export const ALT_ATTRIBUTE_NAME = "alt";
6
6
  export const HREF_ATTRIBUTE_NAME = "href";
7
7
  export const VALUE_ATTRIBUTE_NAME = "value";
8
+ export const START_ATTRIBUTE_NAME = "start";
package/src/constants.js CHANGED
@@ -4,6 +4,5 @@ export const HEAD = "head";
4
4
  export const STYLE = "style";
5
5
  export const COLOUR = "color"; ///
6
6
  export const HYPHEN = "-";
7
- export const PAGE_NUMBER = "pageNumber";
8
7
  export const EMPTY_STRING = "";
9
8
  export const CARRIAGE_RETURN = "\n";
@@ -6,7 +6,7 @@ padding: 24pt;
6
6
  position: relative;
7
7
  min-height: 100%;
8
8
  font-family: "Computer Modern Serif";
9
- padding-bottom: 48pt;
9
+ padding-bottom: 64pt;
10
10
  background-colour: white;
11
11
 
12
12
  primaryHeading {
@@ -88,6 +88,10 @@ unorderedListItem {
88
88
  }
89
89
  }
90
90
 
91
+ paragraph {
92
+ text-align: justify;
93
+ }
94
+
91
95
  blockListing,
92
96
  inlineListing {
93
97
  colour: white;
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  export const EMPTY_STRING = "";
4
- export const DOUBLE_SPACE = " ";
5
- export const PREVIEW_DIV_DIVS_SELECTORS_STRING = "div.preview div";
4
+ export const LINES_PER_PAGE = 5;
5
+ export const CHARACTERS_PER_LINE = 10;
6
+ export const INTRODUCTION_CLASS_NAME = "introduction";
7
+ export const INTRODUCTION_DIV_SELECTORS_STRING = "div.preview div.introduction";
@@ -2,4 +2,5 @@
2
2
 
3
3
  export const KEY_UP_CUSTOM_EVENT_TYPE = "key-up";
4
4
  export const MARKDOWN_CUSTOM_EVENT_TYPE = "markdown";
5
+ export const PAGE_UPDATE_CUSTOM_EVENT_TYPE = "page-update";
5
6
  export const MARKDOWN_STYLE_CUSTOM_EVENT_TYPE = "markdown-style";
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ import withStyle from "easy-with-style"; ///
4
+
5
+ import { Button } from "easy";
6
+
7
+ class PageButton extends Button {
8
+ getIndex() {
9
+ const { index } = this.properties;
10
+
11
+ return index;
12
+ }
13
+
14
+ childElements() {
15
+ const index = this.getIndex(),
16
+ childElements = `${index + 1}`;
17
+
18
+ return childElements;
19
+ }
20
+
21
+ static ignoredProperties = [
22
+ "index"
23
+ ];
24
+
25
+ static defaultProperties = {
26
+ className: "page"
27
+ };
28
+ }
29
+
30
+ export default withStyle(PageButton)`
31
+
32
+ color: black;
33
+ border: 1px solid black;
34
+ padding: 0.5rem;
35
+ font-size: 1.7rem;
36
+ background: transparent;
37
+ font-family: serif;
38
+ margin-left: 1rem;
39
+
40
+ cursor: pointer;
41
+ font-weight: bold;
42
+
43
+ [disabled] {
44
+ cursor: auto;
45
+ font-weight: normal;
46
+ }
47
+
48
+ `;
@@ -26,7 +26,6 @@ export default withStyle(HTMLDiv)`
26
26
 
27
27
  height: 100%;
28
28
  border: 1px solid darkgrey;
29
- padding: 0.25rem;
30
29
  overflow: scroll;
31
30
  position: relative;
32
31
 
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+
3
+ import withStyle from "easy-with-style"; ///
4
+
5
+ import { Element } from "easy";
6
+
7
+ import PageButton from "../button/page";
8
+
9
+ import { PAGE_UPDATE_CUSTOM_EVENT_TYPE } from "../../customEventTypes";
10
+
11
+ class PageButtonsDiv extends Element {
12
+ pageButtonClickHandler = (event, element) => {
13
+ const pageButton = element, ///
14
+ index = pageButton.getIndex(),
15
+ customEventType = PAGE_UPDATE_CUSTOM_EVENT_TYPE;
16
+
17
+ this.callCustomHandlers(customEventType, event, element, index);
18
+ }
19
+
20
+ unmountPageButtons() {
21
+ const pageButtons = this.getPageButtons();
22
+
23
+ pageButtons.forEach((pageButton) => {
24
+ this.unmount(pageButton);
25
+ });
26
+ }
27
+
28
+ mountPageButtons(length) {
29
+ const pageButtons = [];
30
+
31
+ for (let index = 0; index < length; index++) {
32
+ const pageButton =
33
+
34
+ <PageButton index={index} onClick={this.pageButtonClickHandler} />
35
+
36
+ ;
37
+
38
+ pageButtons.push(pageButton);
39
+ }
40
+
41
+ pageButtons.forEach((pageButton) => {
42
+ this.mount(pageButton);
43
+ });
44
+ }
45
+
46
+ getPageButtons() {
47
+ const pageButtonChildElements = this.getChildElements("button.page"),
48
+ pageButtons = pageButtonChildElements; ///
49
+
50
+ return pageButtons;
51
+ }
52
+
53
+ update(length, index = 0) {
54
+ if (length !== null) {
55
+ this.unmountPageButtons();
56
+
57
+ this.mountPageButtons(length);
58
+ }
59
+
60
+ const pageButtons = this.getPageButtons(),
61
+ currentIndex = index;
62
+
63
+ pageButtons.forEach((pageButton, index) => {
64
+ (index === currentIndex) ?
65
+ pageButton.disable() :
66
+ pageButton.enable();
67
+ });
68
+ }
69
+
70
+ clear() {
71
+ this.unmountPageButtons();
72
+ }
73
+
74
+ parentContext() {
75
+ const clearPageButtonsDiv = this.clear.bind(this), ///
76
+ updatePageButtonsDiv = this.update.bind(this); ///
77
+
78
+ return ({
79
+ clearPageButtonsDiv,
80
+ updatePageButtonsDiv
81
+ });
82
+ }
83
+
84
+ static tagName = "div";
85
+
86
+ static defaultProperties = {
87
+ className: "page-buttons"
88
+ };
89
+ }
90
+
91
+ export default withStyle(PageButtonsDiv)`
92
+
93
+ top: 1rem;
94
+ right: 1rem;
95
+ z-index: 1;
96
+ position: absolute;
97
+
98
+ `;
@@ -3,10 +3,22 @@
3
3
  import withStyle from "easy-with-style"; ///
4
4
 
5
5
  import { Element } from "easy";
6
+ import { arrayUtilities } from "necessary";
6
7
 
7
- import { EMPTY_STRING } from "../../constants";
8
+ import PageButtonsDiv from "../div/pageButtons";
9
+
10
+ const { first } = arrayUtilities;
8
11
 
9
12
  class PreviewDiv extends Element {
13
+ getPageButtonsDivDOMElement() {
14
+ const childElements = this.getChildElements(),
15
+ firstChildElement = first(childElements),
16
+ pageButtonsDiv = firstChildElement, ///
17
+ pageButtonsDivDOMElement = pageButtonsDiv.getDOMElement();
18
+
19
+ return pageButtonsDivDOMElement;
20
+ }
21
+
10
22
  getParentDOMElement() {
11
23
  const domElement = this.getDOMElement(),
12
24
  parentDOMElement = domElement; ///
@@ -14,30 +26,51 @@ class PreviewDiv extends Element {
14
26
  return parentDOMElement;
15
27
  }
16
28
 
17
- clear() {
29
+ getDOMElements() {
18
30
  const parentDOMElement = this.getParentDOMElement(),
19
- innerHTML = EMPTY_STRING; ///
31
+ { childNodes } = parentDOMElement,
32
+ domElements = [ ...childNodes ]; ///
20
33
 
21
- Object.assign(parentDOMElement, {
22
- innerHTML
34
+ return domElements;
35
+ }
36
+
37
+ clear() {
38
+ const domElements = this.getDOMElements(),
39
+ pageButtonsDivDOMElement = this.getPageButtonsDivDOMElement();
40
+
41
+ domElements.forEach((domElement) => {
42
+ if (domElement !== pageButtonsDivDOMElement) {
43
+ domElement.remove();
44
+ }
23
45
  });
24
46
  }
25
47
 
26
- update(domElements) {
48
+ update(domElement) {
49
+ this.clear();
50
+
27
51
  const parentDOMElement = this.getParentDOMElement();
28
52
 
29
- this.clear();
53
+ parentDOMElement.appendChild(domElement);
54
+ }
30
55
 
31
- domElements.forEach((domElement) => {
32
- parentDOMElement.appendChild(domElement);
33
- });
56
+ childElements() {
57
+ const { onCustomPageUpdate } = this.properties,
58
+ pageUpdateCustomHandler = onCustomPageUpdate; ///
59
+
60
+ return (
61
+
62
+ <PageButtonsDiv onCustomPageUpdate={pageUpdateCustomHandler} />
63
+
64
+ );
34
65
  }
35
66
 
36
67
  parentContext() {
37
- const clearPreviewDiv = this.clear.bind(this), ///
68
+ const context = this.getContext(),
69
+ clearPreviewDiv = this.clear.bind(this), ///
38
70
  updatePreviewDiv = this.update.bind(this); ///
39
71
 
40
72
  return ({
73
+ ...context,
41
74
  clearPreviewDiv,
42
75
  updatePreviewDiv
43
76
  });
@@ -45,6 +78,10 @@ class PreviewDiv extends Element {
45
78
 
46
79
  static tagName = "div";
47
80
 
81
+ static ignoredProperties = [
82
+ "onCustomPageUpdate"
83
+ ];
84
+
48
85
  static defaultProperties = {
49
86
  className: "preview"
50
87
  };
@@ -52,6 +89,9 @@ class PreviewDiv extends Element {
52
89
 
53
90
  export default withStyle(PreviewDiv)`
54
91
 
92
+ height: 48rem;
55
93
  border: 1px solid darkgrey;
94
+ overflow: scroll;
95
+ position: relative;
56
96
 
57
97
  `;
@@ -28,6 +28,6 @@ class CSSTextarea extends Textarea {
28
28
 
29
29
  export default withStyle(CSSTextarea)`
30
30
 
31
- height: 24rem;
31
+ height: 12rem;
32
32
 
33
33
  `;