highmark-markdown 1.2.130 → 1.2.132

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 (261) hide show
  1. package/lib/attributeNames.js +38 -0
  2. package/lib/constants.js +86 -0
  3. package/lib/example/constants.js +38 -0
  4. package/lib/example/customEventTypes.js +46 -0
  5. package/lib/example/importer.js +100 -0
  6. package/lib/example/indexOptions.js +45 -0
  7. package/lib/example/view/button/page.js +54 -0
  8. package/lib/example/view/button/tab/css.js +33 -0
  9. package/lib/example/view/button/tab/html.js +33 -0
  10. package/lib/example/view/button/tab/markdown.js +33 -0
  11. package/lib/example/view/button/tab/markdownStyle.js +33 -0
  12. package/lib/example/view/button/tab/plainText.js +33 -0
  13. package/lib/example/view/button/tab/preview.js +33 -0
  14. package/lib/example/view/button/tab.js +56 -0
  15. package/lib/example/view/div/container/css.js +35 -0
  16. package/lib/example/view/div/container/html.js +37 -0
  17. package/lib/example/view/div/container/markdown.js +56 -0
  18. package/lib/example/view/div/container/markdownStyle.js +57 -0
  19. package/lib/example/view/div/container/plainText.js +35 -0
  20. package/lib/example/view/div/container/preview.js +41 -0
  21. package/lib/example/view/div/container.js +39 -0
  22. package/lib/example/view/div/html.js +37 -0
  23. package/lib/example/view/div/pageButtons.js +86 -0
  24. package/lib/example/view/div/preview.js +83 -0
  25. package/lib/example/view/div/sizeable/left.js +31 -0
  26. package/lib/example/view/div/tabButtons/left.js +61 -0
  27. package/lib/example/view/div/tabButtons/right.js +95 -0
  28. package/lib/example/view/div/tabButtons.js +34 -0
  29. package/lib/example/view/textarea/css.js +47 -0
  30. package/lib/example/view/textarea/markdown.js +47 -0
  31. package/lib/example/view/textarea/markdownStyle.js +47 -0
  32. package/lib/example/view/textarea/parseTree/css.js +39 -0
  33. package/lib/example/view/textarea/parseTree/html.js +39 -0
  34. package/lib/example/view/textarea/parseTree/markdown.js +36 -0
  35. package/lib/example/view/textarea/parseTree/markdownStyle.js +36 -0
  36. package/lib/example/view/textarea/parseTree.js +40 -0
  37. package/lib/example/view/textarea/plainText.js +50 -0
  38. package/lib/example/view/textarea.js +33 -0
  39. package/lib/example/view/xmp.js +49 -0
  40. package/lib/example/view.js +309 -0
  41. package/lib/example.js +26 -0
  42. package/lib/index/item.js +40 -0
  43. package/lib/index/list.js +55 -0
  44. package/lib/index/match.js +37 -0
  45. package/lib/index.js +147 -0
  46. package/lib/letters.js +41 -0
  47. package/lib/map/className.js +19 -0
  48. package/lib/map/node/css.js +76 -0
  49. package/lib/map/node/html.js +142 -0
  50. package/lib/map/nonTerminalNode/markdown.js +89 -0
  51. package/lib/map/nonTerminalNode/markdownStyle.js +63 -0
  52. package/lib/map/tagName.js +19 -0
  53. package/lib/markdown/bnf.js +362 -0
  54. package/lib/markdown/entries.js +81 -0
  55. package/lib/markdown/lexer.js +41 -0
  56. package/lib/markdown/parser.js +36 -0
  57. package/lib/markdownStyle/bnf.js +89 -0
  58. package/lib/markdownStyle/entries.js +53 -0
  59. package/lib/markdownStyle/lexer.js +41 -0
  60. package/lib/markdownStyle/parser.js +36 -0
  61. package/lib/mixins/node.js +145 -0
  62. package/lib/mixins/token.js +43 -0
  63. package/lib/node/css/amount.js +34 -0
  64. package/lib/node/css/argument.js +26 -0
  65. package/lib/node/css/arguments.js +32 -0
  66. package/lib/node/css/class.js +32 -0
  67. package/lib/node/css/colour.js +34 -0
  68. package/lib/node/css/content.js +30 -0
  69. package/lib/node/css/declaration.js +37 -0
  70. package/lib/node/css/identifier.js +34 -0
  71. package/lib/node/css/name.js +32 -0
  72. package/lib/node/css/pseudoClass.js +32 -0
  73. package/lib/node/css/ruleName.js +65 -0
  74. package/lib/node/css/ruleSet.js +65 -0
  75. package/lib/node/css/selector.js +26 -0
  76. package/lib/node/css/selectors.js +37 -0
  77. package/lib/node/css/selectorsList.js +40 -0
  78. package/lib/node/css/string.js +34 -0
  79. package/lib/node/css/target.js +26 -0
  80. package/lib/node/css/topmost.js +93 -0
  81. package/lib/node/css/value.js +31 -0
  82. package/lib/node/css/values.js +34 -0
  83. package/lib/node/css/verbatim.js +38 -0
  84. package/lib/node/css.js +89 -0
  85. package/lib/node/html/anchor/contents.js +26 -0
  86. package/lib/node/html/anchor/footnote.js +26 -0
  87. package/lib/node/html/anchor/index.js +26 -0
  88. package/lib/node/html/anchor.js +56 -0
  89. package/lib/node/html/container.js +43 -0
  90. package/lib/node/html/directive/contents.js +26 -0
  91. package/lib/node/html/directive/footnotes.js +26 -0
  92. package/lib/node/html/directive/index.js +26 -0
  93. package/lib/node/html/directive/pageNumber.js +26 -0
  94. package/lib/node/html/directive.js +41 -0
  95. package/lib/node/html/division.js +149 -0
  96. package/lib/node/html/error.js +59 -0
  97. package/lib/node/html/footnote.js +58 -0
  98. package/lib/node/html/heading/index.js +81 -0
  99. package/lib/node/html/heading/primary.js +30 -0
  100. package/lib/node/html/heading/quaternary.js +30 -0
  101. package/lib/node/html/heading/secondary.js +30 -0
  102. package/lib/node/html/heading/tertiary.js +30 -0
  103. package/lib/node/html/heading.js +56 -0
  104. package/lib/node/html/image.js +95 -0
  105. package/lib/node/html/item/contents.js +38 -0
  106. package/lib/node/html/item/footnote.js +39 -0
  107. package/lib/node/html/item/index.js +57 -0
  108. package/lib/node/html/item/ordered.js +41 -0
  109. package/lib/node/html/item/unordered.js +28 -0
  110. package/lib/node/html/line/block.js +33 -0
  111. package/lib/node/html/line.js +113 -0
  112. package/lib/node/html/link/contents.js +54 -0
  113. package/lib/node/html/link/email.js +111 -0
  114. package/lib/node/html/link/footnote.js +114 -0
  115. package/lib/node/html/link/hyper.js +111 -0
  116. package/lib/node/html/link/index.js +88 -0
  117. package/lib/node/html/list/contents.js +38 -0
  118. package/lib/node/html/list/footnotes.js +58 -0
  119. package/lib/node/html/list/index.js +38 -0
  120. package/lib/node/html/list/ordered.js +28 -0
  121. package/lib/node/html/list/unordered.js +28 -0
  122. package/lib/node/html/listing/block.js +55 -0
  123. package/lib/node/html/listing/inline.js +55 -0
  124. package/lib/node/html/pageNumber.js +86 -0
  125. package/lib/node/html/paragraph.js +28 -0
  126. package/lib/node/html/reference.js +28 -0
  127. package/lib/node/html/table.js +28 -0
  128. package/lib/node/html/tableBody.js +28 -0
  129. package/lib/node/html/tableBodyCell.js +28 -0
  130. package/lib/node/html/tableBodyRow.js +28 -0
  131. package/lib/node/html/tableHead.js +28 -0
  132. package/lib/node/html/tableHeadCell.js +28 -0
  133. package/lib/node/html/tableHeadRow.js +28 -0
  134. package/lib/node/html/text/block.js +28 -0
  135. package/lib/node/html/text/comma.js +39 -0
  136. package/lib/node/html/text/emphasised.js +32 -0
  137. package/lib/node/html/text/index.js +46 -0
  138. package/lib/node/html/text/inline.js +52 -0
  139. package/lib/node/html/text/plain.js +28 -0
  140. package/lib/node/html/text/strong.js +32 -0
  141. package/lib/node/html/text/stronglyEmphasised.js +87 -0
  142. package/lib/node/html/text/xml.js +34 -0
  143. package/lib/node/html/text.js +42 -0
  144. package/lib/node/html/topmost.js +125 -0
  145. package/lib/node/html/xmlElement/complex.js +35 -0
  146. package/lib/node/html/xmlElement/simple.js +34 -0
  147. package/lib/node/html/xmlElement.js +125 -0
  148. package/lib/node/html.js +282 -0
  149. package/lib/node/markdown/blockEnd.js +23 -0
  150. package/lib/node/markdown/blockStart.js +49 -0
  151. package/lib/node/markdown/className.js +30 -0
  152. package/lib/node/markdown/container.js +36 -0
  153. package/lib/node/markdown/directive/embed.js +60 -0
  154. package/lib/node/markdown/directive/include.js +59 -0
  155. package/lib/node/markdown/division.js +91 -0
  156. package/lib/node/markdown/document.js +62 -0
  157. package/lib/node/markdown/error.js +30 -0
  158. package/lib/node/markdown/footnote.js +30 -0
  159. package/lib/node/markdown/hyperlink.js +58 -0
  160. package/lib/node/markdown/image.js +30 -0
  161. package/lib/node/markdown/item/ordered.js +36 -0
  162. package/lib/node/markdown/languageName.js +30 -0
  163. package/lib/node/markdown/link/email.js +58 -0
  164. package/lib/node/markdown/link/footnote.js +32 -0
  165. package/lib/node/markdown/listng/block.js +37 -0
  166. package/lib/node/markdown/listng/inline.js +36 -0
  167. package/lib/node/markdown/path.js +30 -0
  168. package/lib/node/markdown/reference.js +36 -0
  169. package/lib/node/markdown/releaseName.js +30 -0
  170. package/lib/node/markdown/subDivision.js +53 -0
  171. package/lib/node/markdown/text/block.js +23 -0
  172. package/lib/node/markdown/text/plain.js +23 -0
  173. package/lib/node/markdown/text/xml.js +23 -0
  174. package/lib/node/markdown/text.js +66 -0
  175. package/lib/node/markdown/xmlAttribute.js +45 -0
  176. package/lib/node/markdown/xmlAttributeName.js +32 -0
  177. package/lib/node/markdown/xmlAttributeValue.js +31 -0
  178. package/lib/node/markdown/xmlElement/complex.js +23 -0
  179. package/lib/node/markdown/xmlElement/simple.js +23 -0
  180. package/lib/node/markdown/xmlElement.js +51 -0
  181. package/lib/node/markdown/xmlTag/complete.js +23 -0
  182. package/lib/node/markdown/xmlTag/end.js +35 -0
  183. package/lib/node/markdown/xmlTag/start.js +23 -0
  184. package/lib/node/markdown/xmlTag.js +57 -0
  185. package/lib/node/markdown/xmlTagName.js +32 -0
  186. package/lib/node/markdown.js +67 -0
  187. package/lib/node/markdownStyle/amount.js +31 -0
  188. package/lib/node/markdownStyle/argument.js +23 -0
  189. package/lib/node/markdownStyle/arguments.js +23 -0
  190. package/lib/node/markdownStyle/colour.js +30 -0
  191. package/lib/node/markdownStyle/content.js +39 -0
  192. package/lib/node/markdownStyle/declaration.js +23 -0
  193. package/lib/node/markdownStyle/document.js +23 -0
  194. package/lib/node/markdownStyle/error.js +23 -0
  195. package/lib/node/markdownStyle/identifier.js +31 -0
  196. package/lib/node/markdownStyle/name.js +23 -0
  197. package/lib/node/markdownStyle/nonsense.js +23 -0
  198. package/lib/node/markdownStyle/pseudoClass.js +23 -0
  199. package/lib/node/markdownStyle/ruleName.js +30 -0
  200. package/lib/node/markdownStyle/ruleSet.js +23 -0
  201. package/lib/node/markdownStyle/selector.js +23 -0
  202. package/lib/node/markdownStyle/selectors.js +23 -0
  203. package/lib/node/markdownStyle/selectorsList.js +23 -0
  204. package/lib/node/markdownStyle/string.js +30 -0
  205. package/lib/node/markdownStyle/value.js +23 -0
  206. package/lib/node/markdownStyle/values.js +23 -0
  207. package/lib/node/markdownStyle/verbatim.js +23 -0
  208. package/lib/node/markdownStyle.js +36 -0
  209. package/lib/prepends.js +26 -0
  210. package/lib/queries/markdown.js +20 -0
  211. package/lib/queries/markdownStyle.js +20 -0
  212. package/lib/ruleNames/markdown.js +435 -0
  213. package/lib/ruleNames/markdownStyle.js +135 -0
  214. package/lib/style/defaultMarkdown.js +258 -0
  215. package/lib/style/font.js +65 -0
  216. package/lib/styleElement/markdown/default.js +36 -0
  217. package/lib/styleElement/markdown.js +86 -0
  218. package/lib/styleElement.js +56 -0
  219. package/lib/tokenTypes.js +110 -0
  220. package/lib/transform/css/ruleSet.js +33 -0
  221. package/lib/transform/css/selectors.js +35 -0
  222. package/lib/transform/css/selectorsList.js +51 -0
  223. package/lib/transform/css.js +57 -0
  224. package/lib/transform/html/anchor/index.js +29 -0
  225. package/lib/transform/html/division.js +36 -0
  226. package/lib/transform/html/footnote.js +43 -0
  227. package/lib/transform/html/heading/index.js +25 -0
  228. package/lib/transform/html/index.js +64 -0
  229. package/lib/transform/html/item/contents.js +42 -0
  230. package/lib/transform/html/item/footnote.js +29 -0
  231. package/lib/transform/html/item/index.js +29 -0
  232. package/lib/transform/html/line.js +28 -0
  233. package/lib/transform/html/link/contents.js +39 -0
  234. package/lib/transform/html/link/footnote.js +54 -0
  235. package/lib/transform/html/list/contents.js +66 -0
  236. package/lib/transform/html/list/footnotes.js +38 -0
  237. package/lib/transform/html/list/index.js +34 -0
  238. package/lib/transform/html/pageNumber.js +33 -0
  239. package/lib/transform/html.js +44 -0
  240. package/lib/transform/markdown/directive/embed.js +28 -0
  241. package/lib/transform/markdown/directive/ignore.js +24 -0
  242. package/lib/transform/markdown/directive/include.js +34 -0
  243. package/lib/transform/markdown/subDivision.js +24 -0
  244. package/lib/transform/markdown.js +21 -0
  245. package/lib/utilities/contents.js +101 -0
  246. package/lib/utilities/css.js +53 -0
  247. package/lib/utilities/dom.js +58 -0
  248. package/lib/utilities/element.js +26 -0
  249. package/lib/utilities/entities.js +17 -0
  250. package/lib/utilities/entries.js +24 -0
  251. package/lib/utilities/grammar.js +160 -0
  252. package/lib/utilities/html.js +86 -0
  253. package/lib/utilities/index.js +250 -0
  254. package/lib/utilities/jsx.js +59 -0
  255. package/lib/utilities/markdown.js +61 -0
  256. package/lib/utilities/markdownStyle.js +13 -0
  257. package/lib/utilities/object.js +65 -0
  258. package/lib/utilities/query.js +64 -0
  259. package/lib/utilities/string.js +51 -0
  260. package/lib/utilities/stringLiteral.js +16 -0
  261. package/package.json +6 -6
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _default;
9
+ }
10
+ });
11
+ const _easywithstyle = /*#__PURE__*/ _interop_require_default(require("easy-with-style"));
12
+ const _easy = require("easy");
13
+ function _interop_require_default(obj) {
14
+ return obj && obj.__esModule ? obj : {
15
+ default: obj
16
+ };
17
+ }
18
+ const _default = (0, _easywithstyle.default)(_easy.Textarea)`
19
+
20
+ width: 100%;
21
+ border: 1px solid darkgrey;
22
+ resize: none;
23
+ outline: none;
24
+ padding: 0.25rem;
25
+ font-size: 1.2rem;
26
+ min-height: 24rem;
27
+ line-height: 1.5rem;
28
+ white-space: pre;
29
+ font-family: monospace;
30
+
31
+ `;
32
+
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leGFtcGxlL3ZpZXcvdGV4dGFyZWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB3aXRoU3R5bGUgZnJvbSBcImVhc3ktd2l0aC1zdHlsZVwiOyAgLy8vXG5cbmltcG9ydCB7IFRleHRhcmVhIH0gZnJvbSBcImVhc3lcIjtcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlKFRleHRhcmVhKWBcblxuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyOiAxcHggc29saWQgZGFya2dyZXk7XG4gIHJlc2l6ZTogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgcGFkZGluZzogMC4yNXJlbTtcbiAgZm9udC1zaXplOiAxLjJyZW07XG4gIG1pbi1oZWlnaHQ6IDI0cmVtO1xuICBsaW5lLWhlaWdodDogMS41cmVtO1xuICB3aGl0ZS1zcGFjZTogcHJlO1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuXG5gO1xuIl0sIm5hbWVzIjpbIndpdGhTdHlsZSIsIlRleHRhcmVhIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQUE7OztzRUFKc0I7c0JBRUc7Ozs7OztNQUV6QixXQUFlQSxJQUFBQSxzQkFBUyxFQUFDQyxjQUFRLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWFuQyxDQUFDIn0=
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _default;
9
+ }
10
+ });
11
+ const _easywithstyle = /*#__PURE__*/ _interop_require_default(require("easy-with-style"));
12
+ const _easy = require("easy");
13
+ const _constants = require("../constants");
14
+ function _interop_require_default(obj) {
15
+ return obj && obj.__esModule ? obj : {
16
+ default: obj
17
+ };
18
+ }
19
+ class XMP extends _easy.Element {
20
+ update(html) {
21
+ this.html(html);
22
+ }
23
+ clear() {
24
+ const html = _constants.EMPTY_STRING;
25
+ this.html(html);
26
+ }
27
+ parentContext() {
28
+ const clearXMP = this.clear.bind(this), updateXMP = this.update.bind(this); ///
29
+ return {
30
+ clearXMP,
31
+ updateXMP
32
+ };
33
+ }
34
+ static tagName = "xmp";
35
+ }
36
+ const _default = (0, _easywithstyle.default)(XMP)`
37
+
38
+ top: 0;
39
+ left: 0;
40
+ width: 100%;
41
+ height: 100%;
42
+ position: absolute;
43
+ font-size: 1.2rem;
44
+ line-height: 1.5rem;
45
+ font-family: monospace;
46
+
47
+ `;
48
+
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leGFtcGxlL3ZpZXcveG1wLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgd2l0aFN0eWxlIGZyb20gXCJlYXN5LXdpdGgtc3R5bGVcIjsgIC8vL1xuXG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcImVhc3lcIjtcblxuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5jbGFzcyBYTVAgZXh0ZW5kcyBFbGVtZW50IHtcbiAgdXBkYXRlKGh0bWwpIHtcbiAgICB0aGlzLmh0bWwoaHRtbCk7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICBjb25zdCBodG1sID0gRU1QVFlfU1RSSU5HO1xuXG4gICAgdGhpcy5odG1sKGh0bWwpO1xuICB9XG5cbiAgcGFyZW50Q29udGV4dCgpIHtcbiAgICBjb25zdCBjbGVhclhNUCA9IHRoaXMuY2xlYXIuYmluZCh0aGlzKSwgLy8vXG4gICAgICAgICAgdXBkYXRlWE1QID0gdGhpcy51cGRhdGUuYmluZCh0aGlzKTsgIC8vL1xuXG4gICAgcmV0dXJuICh7XG4gICAgICBjbGVhclhNUCxcbiAgICAgIHVwZGF0ZVhNUFxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHRhZ05hbWUgPSBcInhtcFwiO1xufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGUoWE1QKWBcblxuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZm9udC1zaXplOiAxLjJyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjVyZW07XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gIFxuYDtcbiJdLCJuYW1lcyI6WyJYTVAiLCJFbGVtZW50IiwidXBkYXRlIiwiaHRtbCIsImNsZWFyIiwiRU1QVFlfU1RSSU5HIiwicGFyZW50Q29udGV4dCIsImNsZWFyWE1QIiwiYmluZCIsInVwZGF0ZVhNUCIsInRhZ05hbWUiLCJ3aXRoU3R5bGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWdDQTs7O2VBQUE7OztzRUE5QnNCO3NCQUVFOzJCQUVLOzs7Ozs7QUFFN0IsTUFBTUEsWUFBWUMsYUFBTztJQUN2QkMsT0FBT0MsSUFBSSxFQUFFO1FBQ1gsSUFBSSxDQUFDQSxJQUFJLENBQUNBO0lBQ1o7SUFFQUMsUUFBUTtRQUNOLE1BQU1ELE9BQU9FLHVCQUFZO1FBRXpCLElBQUksQ0FBQ0YsSUFBSSxDQUFDQTtJQUNaO0lBRUFHLGdCQUFnQjtRQUNkLE1BQU1DLFdBQVcsSUFBSSxDQUFDSCxLQUFLLENBQUNJLElBQUksQ0FBQyxJQUFJLEdBQy9CQyxZQUFZLElBQUksQ0FBQ1AsTUFBTSxDQUFDTSxJQUFJLENBQUMsSUFBSSxHQUFJLEdBQUc7UUFFOUMsT0FBUTtZQUNORDtZQUNBRTtRQUNGO0lBQ0Y7SUFFQSxPQUFPQyxVQUFVLE1BQU07QUFDekI7TUFFQSxXQUFlQyxJQUFBQSxzQkFBUyxFQUFDWCxJQUFJLENBQUM7Ozs7Ozs7Ozs7O0FBVzlCLENBQUMifQ==
@@ -0,0 +1,309 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _default;
9
+ }
10
+ });
11
+ const _easywithstyle = /*#__PURE__*/ _interop_require_default(require("easy-with-style"));
12
+ const _easy = require("easy");
13
+ const _index = require("../index");
14
+ const _easylayout = require("easy-layout");
15
+ const _indexOptions = /*#__PURE__*/ _interop_require_default(require("./indexOptions"));
16
+ const _pageButtons = /*#__PURE__*/ _interop_require_default(require("./view/div/pageButtons"));
17
+ const _left = /*#__PURE__*/ _interop_require_default(require("./view/div/sizeable/left"));
18
+ const _css = /*#__PURE__*/ _interop_require_default(require("./view/div/container/css"));
19
+ const _html = /*#__PURE__*/ _interop_require_default(require("./view/div/container/html"));
20
+ const _left1 = /*#__PURE__*/ _interop_require_default(require("./view/div/tabButtons/left"));
21
+ const _right = /*#__PURE__*/ _interop_require_default(require("./view/div/tabButtons/right"));
22
+ const _preview = /*#__PURE__*/ _interop_require_default(require("./view/div/container/preview"));
23
+ const _markdown = /*#__PURE__*/ _interop_require_default(require("./view/div/container/markdown"));
24
+ const _css1 = /*#__PURE__*/ _interop_require_default(require("./view/textarea/parseTree/css"));
25
+ const _html1 = /*#__PURE__*/ _interop_require_default(require("./view/textarea/parseTree/html"));
26
+ const _plainText = /*#__PURE__*/ _interop_require_default(require("./view/div/container/plainText"));
27
+ const _markdownStyle = /*#__PURE__*/ _interop_require_default(require("./view/div/container/markdownStyle"));
28
+ const _importer = require("./importer");
29
+ const _constants = require("./constants");
30
+ function _interop_require_default(obj) {
31
+ return obj && obj.__esModule ? obj : {
32
+ default: obj
33
+ };
34
+ }
35
+ const { tokensFromMarkdown, tokensFromMarkdownStyle, documentMarkdownNodeFromTokens, htmlFromMarkdownOptionsAndImporter, documentMarkdownStyleNodeFromTokens, topmostHTMLNodeFromDocumentMarkdownNode, cssFromMarkdownStyleAndCSSSelectorsString, topmostCSSNodeFromDocumentMarkdownStyleNode } = _index.grammarUtilities;
36
+ class View extends _easy.Element {
37
+ pageUpdateCustomHandler = (event, element, index)=>{
38
+ this.updateHTML(index);
39
+ };
40
+ markdownStyleCustomHandler = (event, element)=>{
41
+ this.markdownStyle();
42
+ };
43
+ markdownCustomHandler = (event, element)=>{
44
+ this.markdown();
45
+ };
46
+ plainTextCustomHandler = (event, element)=>{
47
+ this.plainText();
48
+ };
49
+ previewCustomHandler = (event, element)=>{
50
+ this.preview();
51
+ };
52
+ keyUpCustomHandler = (event, element)=>{
53
+ this.update();
54
+ };
55
+ htmlCustomHandler = (event, element)=>{
56
+ this.html();
57
+ };
58
+ cssCustomHandler = (event, element)=>{
59
+ this.css();
60
+ };
61
+ update() {
62
+ this.updateMarkdownStyle();
63
+ this.updateMarkdown();
64
+ this.updateHTML();
65
+ this.updateCSS();
66
+ }
67
+ updateMarkdownStyle() {
68
+ const markdownStyle = this.getMarkdownStyle(), tokens = tokensFromMarkdownStyle(markdownStyle), documentMarkdownStyleNode = documentMarkdownStyleNodeFromTokens(tokens);
69
+ if (documentMarkdownStyleNode === null) {
70
+ this.resetMarkdownStyleTokens();
71
+ this.resetDocumentMarkdownStyleNode();
72
+ this.clearMarkdownStyleParseTreeTextarea();
73
+ return;
74
+ }
75
+ const node = documentMarkdownStyleNode, parseTree = node.asParseTree(tokens), markdownStyleTokens = tokens; ///
76
+ this.setMarkdownStyleTokens(markdownStyleTokens);
77
+ this.setDocumentMarkdownStyleNode(documentMarkdownStyleNode);
78
+ this.updateMarkdownStyleParseTreeTextarea(parseTree);
79
+ }
80
+ updateMarkdown() {
81
+ const markdown = this.getMarkdown(), tokens = tokensFromMarkdown(markdown), documentMarkdownNode = documentMarkdownNodeFromTokens(tokens);
82
+ if (documentMarkdownNode === null) {
83
+ this.resetMarkdownTokens();
84
+ this.resetDocumentMarkdownNode();
85
+ this.clearMarkdownParseTreeTextarea();
86
+ return;
87
+ }
88
+ let context;
89
+ context = {
90
+ tokens,
91
+ importer: _importer.importer
92
+ };
93
+ documentMarkdownNode.resolve(context);
94
+ const documentMarkdownNodeParseTree = documentMarkdownNode.asParseTree(tokens), markdownParseTree = documentMarkdownNodeParseTree, markdownTokens = tokens; ///
95
+ this.setMarkdownTokens(markdownTokens);
96
+ this.setDocumentMarkdownNode(documentMarkdownNode);
97
+ this.updateMarkdownParseTreeTextarea(markdownParseTree);
98
+ }
99
+ updateHTML(index = 0) {
100
+ this.clearXMP();
101
+ this.clearPreviewDiv();
102
+ this.clearPlainTextTextarea();
103
+ this.clearHTMLParseTreeTextarea();
104
+ this.clearPageButtonsDiv();
105
+ const documentMarkdownNode = this.getDocumentMarkdownNode(), topmostHTMLNode = topmostHTMLNodeFromDocumentMarkdownNode(documentMarkdownNode);
106
+ if (topmostHTMLNode === null) {
107
+ return;
108
+ }
109
+ let context;
110
+ const markdownTokens = this.getMarkdownTokens(), tokens = markdownTokens; ///
111
+ context = {
112
+ tokens
113
+ };
114
+ topmostHTMLNode.resolve(context);
115
+ const divisionHTMLNode = topmostHTMLNode.getDivisionHTMLNodeAt(index);
116
+ if (divisionHTMLNode === null) {
117
+ return;
118
+ }
119
+ const divisionHTMLNOdeParseTree = divisionHTMLNode.asParseTree(), htmlParseTree = divisionHTMLNOdeParseTree, divisionHTMLNodes = topmostHTMLNode.getDivisionHTMLNodes(), length = divisionHTMLNodes.length; ///
120
+ context = {
121
+ tokens,
122
+ pathToURL
123
+ };
124
+ this.updatePreviewDiv(divisionHTMLNode, context);
125
+ this.updatePlainTextTextarea(divisionHTMLNode, context);
126
+ this.updateHTMLParseTreeTextarea(htmlParseTree);
127
+ this.updatePageButtonsDiv(length, index);
128
+ const markdown = this.getMarkdown(), options = _indexOptions.default, html = htmlFromMarkdownOptionsAndImporter(markdown, options, _importer.importer);
129
+ this.updateXMP(html, context);
130
+ }
131
+ updateCSS() {
132
+ const markdownStyleTokens = this.getMarkdownStyleTokens(), markdownStyleElement = this.getMarkdownStyleElement(), documentMarkdownStyleNode = this.getDocumentMarkdownStyleNode();
133
+ if (documentMarkdownStyleNode === null) {
134
+ const css = _constants.EMPTY_STRING;
135
+ markdownStyleElement.setCSS(css);
136
+ this.clearCSSParseTreeTextarea();
137
+ this.clearCSS();
138
+ return;
139
+ }
140
+ const topmostCSSNode = topmostCSSNodeFromDocumentMarkdownStyleNode(documentMarkdownStyleNode), tokens = markdownStyleTokens, context = {
141
+ tokens
142
+ };
143
+ topmostCSSNode.resolve(context);
144
+ const topmostCSSNodeParseTree = topmostCSSNode.asParseTree(tokens), cssParseTree = topmostCSSNodeParseTree; ///
145
+ this.updateCSSParseTreeTextarea(cssParseTree);
146
+ const cssSelectorsString = _constants.CSS_SELECTORS_STRING, markdownStyle = this.getMarkdownStyle(), css = cssFromMarkdownStyleAndCSSSelectorsString(markdownStyle, cssSelectorsString);
147
+ markdownStyleElement.setCSS(css);
148
+ this.setCSS(css);
149
+ }
150
+ markdownStyle() {
151
+ this.hideMarkdownContainerDiv();
152
+ this.showMarkdownStyleContainerDiv();
153
+ }
154
+ markdown() {
155
+ this.showMarkdownContainerDiv();
156
+ this.hideMarkdownStyleContainerDiv();
157
+ }
158
+ plainText() {
159
+ this.hideCSSContainerDiv();
160
+ this.hideHTMLContainerDiv();
161
+ this.hidePreviewContainerDiv();
162
+ this.showPlainTextContainerDiv();
163
+ this.hideCSSParseTreeTextarea();
164
+ this.showHTMLParseTreeTextarea();
165
+ }
166
+ preview() {
167
+ this.hideCSSContainerDiv();
168
+ this.hideHTMLContainerDiv();
169
+ this.showPreviewContainerDiv();
170
+ this.hidePlainTextContainerDiv();
171
+ this.hideCSSParseTreeTextarea();
172
+ this.showHTMLParseTreeTextarea();
173
+ }
174
+ html() {
175
+ this.hideCSSContainerDiv();
176
+ this.showHTMLContainerDiv();
177
+ this.hidePreviewContainerDiv();
178
+ this.hidePlainTextContainerDiv();
179
+ this.hideCSSParseTreeTextarea();
180
+ this.showHTMLParseTreeTextarea();
181
+ }
182
+ css() {
183
+ this.showCSSContainerDiv();
184
+ this.hideHTMLContainerDiv();
185
+ this.hidePreviewContainerDiv();
186
+ this.hidePlainTextContainerDiv();
187
+ this.showCSSParseTreeTextarea();
188
+ this.hideHTMLParseTreeTextarea();
189
+ }
190
+ resetMarkdownTokens() {
191
+ const markdownTokens = null;
192
+ this.setMarkdownTokens(markdownTokens);
193
+ }
194
+ resetMarkdownStyleTokens() {
195
+ const markdownStyleTokens = null;
196
+ this.setMarkdownStyleTokens(markdownStyleTokens);
197
+ }
198
+ resetDocumentMarkdownNode() {
199
+ const documentMarkdownNode = null;
200
+ this.setDocumentMarkdownNode(documentMarkdownNode);
201
+ }
202
+ resetDocumentMarkdownStyleNode() {
203
+ const documentMarkdownStyleNode = null;
204
+ this.setDocumentMarkdownStyleNode(documentMarkdownStyleNode);
205
+ }
206
+ getMarkdownStyleElement() {
207
+ const { markdownStyleElement } = this.properties;
208
+ return markdownStyleElement;
209
+ }
210
+ getMarkdownTokens() {
211
+ const { markdownTokens } = this.getState();
212
+ return markdownTokens;
213
+ }
214
+ getMarkdownStyleTokens() {
215
+ const { markdownStyleTokens } = this.getState();
216
+ return markdownStyleTokens;
217
+ }
218
+ getDocumentMarkdownNode() {
219
+ const { topmostMMarkdownNode } = this.getState();
220
+ return topmostMMarkdownNode;
221
+ }
222
+ getDocumentMarkdownStyleNode() {
223
+ const { topmostMMarkdownStyleNode } = this.getState();
224
+ return topmostMMarkdownStyleNode;
225
+ }
226
+ setMarkdownTokens(markdownTokens) {
227
+ this.updateState({
228
+ markdownTokens
229
+ });
230
+ }
231
+ setMarkdownStyleTokens(markdownStyleTokens) {
232
+ this.updateState({
233
+ markdownStyleTokens
234
+ });
235
+ }
236
+ setDocumentMarkdownNode(topmostMMarkdownNode) {
237
+ this.updateState({
238
+ topmostMMarkdownNode
239
+ });
240
+ }
241
+ setDocumentMarkdownStyleNode(topmostMMarkdownStyleNode) {
242
+ this.updateState({
243
+ topmostMMarkdownStyleNode
244
+ });
245
+ }
246
+ setInitialState() {
247
+ const markdownTokens = null, markdownStyleTokens = null, documentMarkdownNode = null, documentMarkdownStyleNode = null;
248
+ this.setState({
249
+ markdownTokens,
250
+ markdownStyleTokens,
251
+ documentMarkdownNode,
252
+ documentMarkdownStyleNode
253
+ });
254
+ }
255
+ didMount() {
256
+ this.markdown();
257
+ this.html();
258
+ this.update();
259
+ }
260
+ willUnmount() {
261
+ ///
262
+ }
263
+ childElements() {
264
+ return /*#__PURE__*/ React.createElement(_easylayout.ColumnsDiv, null, /*#__PURE__*/ React.createElement(_left.default, null, /*#__PURE__*/ React.createElement(_left1.default, {
265
+ onCustomMarkdown: this.markdownCustomHandler,
266
+ onCustomMarkdownStyle: this.markdownStyleCustomHandler
267
+ }), /*#__PURE__*/ React.createElement(_markdown.default, {
268
+ onCustomKeyUp: this.keyUpCustomHandler
269
+ }), /*#__PURE__*/ React.createElement(_markdownStyle.default, {
270
+ onCustomKeyUp: this.keyUpCustomHandler
271
+ })), /*#__PURE__*/ React.createElement(_easylayout.VerticalSplitterDiv, null), /*#__PURE__*/ React.createElement(_easylayout.ColumnDiv, null, /*#__PURE__*/ React.createElement(_easylayout.RowsDiv, null, /*#__PURE__*/ React.createElement(_right.default, {
272
+ onCustomCSS: this.cssCustomHandler,
273
+ onCustomHTML: this.htmlCustomHandler,
274
+ onCustomPreview: this.previewCustomHandler,
275
+ onCustomPlainText: this.plainTextCustomHandler
276
+ }), /*#__PURE__*/ React.createElement(_pageButtons.default, {
277
+ onCustomPageUpdate: this.pageUpdateCustomHandler
278
+ }), /*#__PURE__*/ React.createElement(_css.default, null), /*#__PURE__*/ React.createElement(_html.default, null), /*#__PURE__*/ React.createElement(_preview.default, null), /*#__PURE__*/ React.createElement(_plainText.default, null), /*#__PURE__*/ React.createElement(_html1.default, null), /*#__PURE__*/ React.createElement(_css1.default, null))));
279
+ }
280
+ initialise() {
281
+ this.assignContext();
282
+ this.setInitialState();
283
+ const { initialMarkdown, initialMarkdownStyle } = this.constructor, markdownStyle = initialMarkdownStyle, markdown = initialMarkdown; ///
284
+ this.setMarkdownStyle(markdownStyle);
285
+ this.setMarkdown(markdown);
286
+ }
287
+ static initialMarkdown = `
288
+ Licensed under the Apache License, Version 2.0 and Anti-996 License
289
+ `;
290
+ static initialMarkdownStyle = "";
291
+ static tagName = "div";
292
+ static ignoredProperties = [
293
+ "markdownStyleElement"
294
+ ];
295
+ static defaultProperties = {
296
+ className: "view"
297
+ };
298
+ }
299
+ const _default = (0, _easywithstyle.default)(View)`
300
+
301
+ padding: 1rem;
302
+
303
+ `;
304
+ function pathToURL(path) {
305
+ const url = `https://djalbat.com/${path}`;
306
+ return url;
307
+ }
308
+
309
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGFtcGxlL3ZpZXcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB3aXRoU3R5bGUgZnJvbSBcImVhc3ktd2l0aC1zdHlsZVwiOyAgLy8vXG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiZWFzeVwiO1xuaW1wb3J0IHsgZ3JhbW1hclV0aWxpdGllcyB9IGZyb20gXCIuLi9pbmRleFwiOyAgLy8vXG5pbXBvcnQgeyBSb3dzRGl2LCBDb2x1bW5EaXYsIENvbHVtbnNEaXYsIFZlcnRpY2FsU3BsaXR0ZXJEaXYgfSBmcm9tIFwiZWFzeS1sYXlvdXRcIjtcblxuaW1wb3J0IGluZGV4T3B0aW9ucyBmcm9tIFwiLi9pbmRleE9wdGlvbnNcIjtcbmltcG9ydCBQYWdlQnV0dG9uc0RpdiBmcm9tIFwiLi92aWV3L2Rpdi9wYWdlQnV0dG9uc1wiO1xuaW1wb3J0IExlZnRTaXplYWJsZURpdiBmcm9tIFwiLi92aWV3L2Rpdi9zaXplYWJsZS9sZWZ0XCI7XG5pbXBvcnQgQ1NTQ29udGFpbmVyRGl2IGZyb20gXCIuL3ZpZXcvZGl2L2NvbnRhaW5lci9jc3NcIjtcbmltcG9ydCBIVE1MQ29udGFpbmVyRGl2IGZyb20gXCIuL3ZpZXcvZGl2L2NvbnRhaW5lci9odG1sXCI7XG5pbXBvcnQgTGVmdFRhYkJ1dHRvbnNEaXYgZnJvbSBcIi4vdmlldy9kaXYvdGFiQnV0dG9ucy9sZWZ0XCI7XG5pbXBvcnQgUmlnaHRUYWJCdXR0b25zRGl2IGZyb20gXCIuL3ZpZXcvZGl2L3RhYkJ1dHRvbnMvcmlnaHRcIjtcbmltcG9ydCBQcmV2aWV3Q29udGFpbmVyRGl2IGZyb20gXCIuL3ZpZXcvZGl2L2NvbnRhaW5lci9wcmV2aWV3XCI7XG5pbXBvcnQgTWFya2Rvd25Db250YWluZXJEaXYgZnJvbSBcIi4vdmlldy9kaXYvY29udGFpbmVyL21hcmtkb3duXCI7XG5pbXBvcnQgQ1NTUGFyc2VUcmVlVGV4dGFyZWEgZnJvbSBcIi4vdmlldy90ZXh0YXJlYS9wYXJzZVRyZWUvY3NzXCI7XG5pbXBvcnQgSFRNTFBhcnNlVHJlZVRleHRhcmVhIGZyb20gXCIuL3ZpZXcvdGV4dGFyZWEvcGFyc2VUcmVlL2h0bWxcIjtcbmltcG9ydCBQbGFpblRleHRDb250YWluZXJEaXYgZnJvbSBcIi4vdmlldy9kaXYvY29udGFpbmVyL3BsYWluVGV4dFwiO1xuaW1wb3J0IE1hcmtkb3duU3R5bGVDb250YWluZXJEaXYgZnJvbSBcIi4vdmlldy9kaXYvY29udGFpbmVyL21hcmtkb3duU3R5bGVcIjtcblxuaW1wb3J0IHsgaW5pdGlhbE1hcmtkb3duLCBpbXBvcnRlciB9IGZyb20gXCIuL2ltcG9ydGVyXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIENTU19TRUxFQ1RPUlNfU1RSSU5HIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IHsgdG9rZW5zRnJvbU1hcmtkb3duLFxuICAgICAgICB0b2tlbnNGcm9tTWFya2Rvd25TdHlsZSxcbiAgICAgICAgZG9jdW1lbnRNYXJrZG93bk5vZGVGcm9tVG9rZW5zLFxuICAgICAgICBodG1sRnJvbU1hcmtkb3duT3B0aW9uc0FuZEltcG9ydGVyLFxuICAgICAgICBkb2N1bWVudE1hcmtkb3duU3R5bGVOb2RlRnJvbVRva2VucyxcbiAgICAgICAgdG9wbW9zdEhUTUxOb2RlRnJvbURvY3VtZW50TWFya2Rvd25Ob2RlLFxuICAgICAgICBjc3NGcm9tTWFya2Rvd25TdHlsZUFuZENTU1NlbGVjdG9yc1N0cmluZyxcbiAgICAgICAgdG9wbW9zdENTU05vZGVGcm9tRG9jdW1lbnRNYXJrZG93blN0eWxlTm9kZSB9ID0gZ3JhbW1hclV0aWxpdGllcztcblxuY2xhc3MgVmlldyBleHRlbmRzIEVsZW1lbnQge1xuICBwYWdlVXBkYXRlQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICB0aGlzLnVwZGF0ZUhUTUwoaW5kZXgpO1xuICB9XG5cbiAgbWFya2Rvd25TdHlsZUN1c3RvbUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcbiAgICB0aGlzLm1hcmtkb3duU3R5bGUoKTtcbiAgfVxuXG4gIG1hcmtkb3duQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xuICAgIHRoaXMubWFya2Rvd24oKTtcbiAgfVxuXG4gIHBsYWluVGV4dEN1c3RvbUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcbiAgICB0aGlzLnBsYWluVGV4dCgpO1xuICB9XG5cbiAgcHJldmlld0N1c3RvbUhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcbiAgICB0aGlzLnByZXZpZXcoKTtcbiAgfVxuXG4gIGtleVVwQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xuICAgIHRoaXMudXBkYXRlKCk7XG4gIH1cblxuICBodG1sQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xuICAgIHRoaXMuaHRtbCgpO1xuICB9XG5cbiAgY3NzQ3VzdG9tSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xuICAgIHRoaXMuY3NzKCk7XG4gIH1cblxuICB1cGRhdGUoKSB7XG4gICAgdGhpcy51cGRhdGVNYXJrZG93blN0eWxlKCk7XG5cbiAgICB0aGlzLnVwZGF0ZU1hcmtkb3duKCk7XG5cbiAgICB0aGlzLnVwZGF0ZUhUTUwoKTtcblxuICAgIHRoaXMudXBkYXRlQ1NTKCk7XG4gIH1cblxuICB1cGRhdGVNYXJrZG93blN0eWxlKCkge1xuICAgIGNvbnN0IG1hcmtkb3duU3R5bGUgPSB0aGlzLmdldE1hcmtkb3duU3R5bGUoKSxcbiAgICAgICAgICB0b2tlbnMgPSB0b2tlbnNGcm9tTWFya2Rvd25TdHlsZShtYXJrZG93blN0eWxlKSxcbiAgICAgICAgICBkb2N1bWVudE1hcmtkb3duU3R5bGVOb2RlID0gZG9jdW1lbnRNYXJrZG93blN0eWxlTm9kZUZyb21Ub2tlbnModG9rZW5zKTtcblxuICAgIGlmIChkb2N1bWVudE1hcmtkb3duU3R5bGVOb2RlID09PSBudWxsKSB7XG4gICAgICB0aGlzLnJlc2V0TWFya2Rvd25TdHlsZVRva2VucygpO1xuXG4gICAgICB0aGlzLnJlc2V0RG9jdW1lbnRNYXJrZG93blN0eWxlTm9kZSgpO1xuXG4gICAgICB0aGlzLmNsZWFyTWFya2Rvd25TdHlsZVBhcnNlVHJlZVRleHRhcmVhKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlID0gZG9jdW1lbnRNYXJrZG93blN0eWxlTm9kZSwgLy8vXG4gICAgICAgICAgcGFyc2VUcmVlID0gbm9kZS5hc1BhcnNlVHJlZSh0b2tlbnMpLFxuICAgICAgICAgIG1hcmtkb3duU3R5bGVUb2tlbnMgPSB0b2tlbnM7IC8vL1xuXG4gICAgdGhpcy5zZXRNYXJrZG93blN0eWxlVG9rZW5zKG1hcmtkb3duU3R5bGVUb2tlbnMpO1xuXG4gICAgdGhpcy5zZXREb2N1bWVudE1hcmtkb3duU3R5bGVOb2RlKGRvY3VtZW50TWFya2Rvd25TdHlsZU5vZGUpO1xuXG4gICAgdGhpcy51cGRhdGVNYXJrZG93blN0eWxlUGFyc2VUcmVlVGV4dGFyZWEocGFyc2VUcmVlKTtcbiAgfVxuXG4gIHVwZGF0ZU1hcmtkb3duKCkge1xuICAgIGNvbnN0IG1hcmtkb3duID0gdGhpcy5nZXRNYXJrZG93bigpLFxuICAgICAgICAgIHRva2VucyA9IHRva2Vuc0Zyb21NYXJrZG93bihtYXJrZG93biksXG4gICAgICAgICAgZG9jdW1lbnRNYXJrZG93bk5vZGUgPSBkb2N1bWVudE1hcmtkb3duTm9kZUZyb21Ub2tlbnModG9rZW5zKTtcblxuICAgIGlmIChkb2N1bWVudE1hcmtkb3duTm9kZSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5yZXNldE1hcmtkb3duVG9rZW5zKCk7XG5cbiAgICAgIHRoaXMucmVzZXREb2N1bWVudE1hcmtkb3duTm9kZSgpO1xuXG4gICAgICB0aGlzLmNsZWFyTWFya2Rvd25QYXJzZVRyZWVUZXh0YXJlYSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNvbnRleHQ7XG5cbiAgICBjb250ZXh0ID0ge1xuICAgICAgdG9rZW5zLFxuICAgICAgaW1wb3J0ZXJcbiAgICB9O1xuXG4gICAgZG9jdW1lbnRNYXJrZG93bk5vZGUucmVzb2x2ZShjb250ZXh0KTtcblxuICAgIGNvbnN0IGRvY3VtZW50TWFya2Rvd25Ob2RlUGFyc2VUcmVlID0gZG9jdW1lbnRNYXJrZG93bk5vZGUuYXNQYXJzZVRyZWUodG9rZW5zKSxcbiAgICAgICAgICBtYXJrZG93blBhcnNlVHJlZSA9IGRvY3VtZW50TWFya2Rvd25Ob2RlUGFyc2VUcmVlLCAvLy9cbiAgICAgICAgICBtYXJrZG93blRva2VucyA9IHRva2VuczsgIC8vL1xuXG4gICAgdGhpcy5zZXRNYXJrZG93blRva2VucyhtYXJrZG93blRva2Vucyk7XG5cbiAgICB0aGlzLnNldERvY3VtZW50TWFya2Rvd25Ob2RlKGRvY3VtZW50TWFya2Rvd25Ob2RlKTtcblxuICAgIHRoaXMudXBkYXRlTWFya2Rvd25QYXJzZVRyZWVUZXh0YXJlYShtYXJrZG93blBhcnNlVHJlZSk7XG4gIH1cblxuICB1cGRhdGVIVE1MKGluZGV4ID0gMCkge1xuICAgIHRoaXMuY2xlYXJYTVAoKTtcblxuICAgIHRoaXMuY2xlYXJQcmV2aWV3RGl2KCk7XG5cbiAgICB0aGlzLmNsZWFyUGxhaW5UZXh0VGV4dGFyZWEoKTtcblxuICAgIHRoaXMuY2xlYXJIVE1MUGFyc2VUcmVlVGV4dGFyZWEoKTtcblxuICAgIHRoaXMuY2xlYXJQYWdlQnV0dG9uc0RpdigpO1xuXG4gICAgY29uc3QgZG9jdW1lbnRNYXJrZG93bk5vZGUgPSB0aGlzLmdldERvY3VtZW50TWFya2Rvd25Ob2RlKCksXG4gICAgICAgICAgdG9wbW9zdEhUTUxOb2RlID0gdG9wbW9zdEhUTUxOb2RlRnJvbURvY3VtZW50TWFya2Rvd25Ob2RlKGRvY3VtZW50TWFya2Rvd25Ob2RlKTtcblxuICAgIGlmICh0b3Btb3N0SFRNTE5vZGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY29udGV4dDtcblxuICAgIGNvbnN0IG1hcmtkb3duVG9rZW5zID0gdGhpcy5nZXRNYXJrZG93blRva2VucygpLFxuICAgICAgICAgIHRva2VucyA9IG1hcmtkb3duVG9rZW5zOyAgLy8vXG5cbiAgICBjb250ZXh0ID0ge1xuICAgICAgdG9rZW5zXG4gICAgfTtcblxuICAgIHRvcG1vc3RIVE1MTm9kZS5yZXNvbHZlKGNvbnRleHQpO1xuXG4gICAgY29uc3QgZGl2aXNpb25IVE1MTm9kZSA9IHRvcG1vc3RIVE1MTm9kZS5nZXREaXZpc2lvbkhUTUxOb2RlQXQoaW5kZXgpO1xuXG4gICAgaWYgKGRpdmlzaW9uSFRNTE5vZGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkaXZpc2lvbkhUTUxOT2RlUGFyc2VUcmVlID0gZGl2aXNpb25IVE1MTm9kZS5hc1BhcnNlVHJlZSgpLFxuICAgICAgICAgIGh0bWxQYXJzZVRyZWUgPSBkaXZpc2lvbkhUTUxOT2RlUGFyc2VUcmVlLCAgLy8vXG4gICAgICAgICAgZGl2aXNpb25IVE1MTm9kZXMgPSB0b3Btb3N0SFRNTE5vZGUuZ2V0RGl2aXNpb25IVE1MTm9kZXMoKSxcbiAgICAgICAgICBsZW5ndGggPSBkaXZpc2lvbkhUTUxOb2Rlcy5sZW5ndGg7ICAvLy9cblxuICAgIGNvbnRleHQgPSB7XG4gICAgICB0b2tlbnMsXG4gICAgICBwYXRoVG9VUkxcbiAgICB9O1xuXG4gICAgdGhpcy51cGRhdGVQcmV2aWV3RGl2KGRpdmlzaW9uSFRNTE5vZGUsIGNvbnRleHQpO1xuXG4gICAgdGhpcy51cGRhdGVQbGFpblRleHRUZXh0YXJlYShkaXZpc2lvbkhUTUxOb2RlLCBjb250ZXh0KTtcblxuICAgIHRoaXMudXBkYXRlSFRNTFBhcnNlVHJlZVRleHRhcmVhKGh0bWxQYXJzZVRyZWUpO1xuXG4gICAgdGhpcy51cGRhdGVQYWdlQnV0dG9uc0RpdihsZW5ndGgsIGluZGV4KTtcblxuICAgIGNvbnN0IG1hcmtkb3duID0gdGhpcy5nZXRNYXJrZG93bigpLFxuICAgICAgICAgIG9wdGlvbnMgPSBpbmRleE9wdGlvbnMsIC8vL1xuICAgICAgICAgIGh0bWwgPSBodG1sRnJvbU1hcmtkb3duT3B0aW9uc0FuZEltcG9ydGVyKG1hcmtkb3duLCBvcHRpb25zLCBpbXBvcnRlcik7XG5cbiAgICB0aGlzLnVwZGF0ZVhNUChodG1sLCBjb250ZXh0KTtcbiAgfVxuXG4gIHVwZGF0ZUNTUygpIHtcbiAgICBjb25zdCBtYXJrZG93blN0eWxlVG9rZW5zID0gdGhpcy5nZXRNYXJrZG93blN0eWxlVG9rZW5zKCksXG4gICAgICAgICAgbWFya2Rvd25TdHlsZUVsZW1lbnQgPSB0aGlzLmdldE1hcmtkb3duU3R5bGVFbGVtZW50KCksXG4gICAgICAgICAgZG9jdW1lbnRNYXJrZG93blN0eWxlTm9kZSA9IHRoaXMuZ2V0RG9jdW1lbnRNYXJrZG93blN0eWxlTm9kZSgpO1xuXG4gICAgaWYgKGRvY3VtZW50TWFya2Rvd25TdHlsZU5vZGUgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNzcyA9IEVNUFRZX1NUUklORztcblxuICAgICAgbWFya2Rvd25TdHlsZUVsZW1lbnQuc2V0Q1NTKGNzcyk7XG5cbiAgICAgIHRoaXMuY2xlYXJDU1NQYXJzZVRyZWVUZXh0YXJlYSgpO1xuXG4gICAgICB0aGlzLmNsZWFyQ1NTKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0b3Btb3N0Q1NTTm9kZSA9IHRvcG1vc3RDU1NOb2RlRnJvbURvY3VtZW50TWFya2Rvd25TdHlsZU5vZGUoZG9jdW1lbnRNYXJrZG93blN0eWxlTm9kZSksXG4gICAgICAgICAgdG9rZW5zID0gbWFya2Rvd25TdHlsZVRva2VucywgLy8vXG4gICAgICAgICAgY29udGV4dCA9IHtcbiAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgIH07XG5cbiAgICB0b3Btb3N0Q1NTTm9kZS5yZXNvbHZlKGNvbnRleHQpO1xuXG4gICAgY29uc3QgdG9wbW9zdENTU05vZGVQYXJzZVRyZWUgPSB0b3Btb3N0Q1NTTm9kZS5hc1BhcnNlVHJlZSh0b2tlbnMpLFxuICAgICAgICAgIGNzc1BhcnNlVHJlZSA9IHRvcG1vc3RDU1NOb2RlUGFyc2VUcmVlOyAvLy9cblxuICAgIHRoaXMudXBkYXRlQ1NTUGFyc2VUcmVlVGV4dGFyZWEoY3NzUGFyc2VUcmVlKTtcblxuICAgIGNvbnN0IGNzc1NlbGVjdG9yc1N0cmluZyA9IENTU19TRUxFQ1RPUlNfU1RSSU5HLFxuICAgICAgICAgIG1hcmtkb3duU3R5bGUgPSB0aGlzLmdldE1hcmtkb3duU3R5bGUoKSxcbiAgICAgICAgICBjc3MgPSBjc3NGcm9tTWFya2Rvd25TdHlsZUFuZENTU1NlbGVjdG9yc1N0cmluZyhtYXJrZG93blN0eWxlLCBjc3NTZWxlY3RvcnNTdHJpbmcpO1xuXG4gICAgbWFya2Rvd25TdHlsZUVsZW1lbnQuc2V0Q1NTKGNzcyk7XG5cbiAgICB0aGlzLnNldENTUyhjc3MpO1xuICB9XG5cbiAgbWFya2Rvd25TdHlsZSgpIHtcbiAgICB0aGlzLmhpZGVNYXJrZG93bkNvbnRhaW5lckRpdigpO1xuICAgIHRoaXMuc2hvd01hcmtkb3duU3R5bGVDb250YWluZXJEaXYoKTtcbiAgfVxuXG4gIG1hcmtkb3duKCkge1xuICAgIHRoaXMuc2hvd01hcmtkb3duQ29udGFpbmVyRGl2KCk7XG4gICAgdGhpcy5oaWRlTWFya2Rvd25TdHlsZUNvbnRhaW5lckRpdigpO1xuICB9XG5cbiAgcGxhaW5UZXh0KCkge1xuICAgIHRoaXMuaGlkZUNTU0NvbnRhaW5lckRpdigpO1xuICAgIHRoaXMuaGlkZUhUTUxDb250YWluZXJEaXYoKTtcbiAgICB0aGlzLmhpZGVQcmV2aWV3Q29udGFpbmVyRGl2KCk7XG4gICAgdGhpcy5zaG93UGxhaW5UZXh0Q29udGFpbmVyRGl2KCk7XG5cbiAgICB0aGlzLmhpZGVDU1NQYXJzZVRyZWVUZXh0YXJlYSgpO1xuICAgIHRoaXMuc2hvd0hUTUxQYXJzZVRyZWVUZXh0YXJlYSgpO1xuICB9XG5cbiAgcHJldmlldygpIHtcbiAgICB0aGlzLmhpZGVDU1NDb250YWluZXJEaXYoKTtcbiAgICB0aGlzLmhpZGVIVE1MQ29udGFpbmVyRGl2KCk7XG4gICAgdGhpcy5zaG93UHJldmlld0NvbnRhaW5lckRpdigpO1xuICAgIHRoaXMuaGlkZVBsYWluVGV4dENvbnRhaW5lckRpdigpO1xuXG4gICAgdGhpcy5oaWRlQ1NTUGFyc2VUcmVlVGV4dGFyZWEoKTtcbiAgICB0aGlzLnNob3dIVE1MUGFyc2VUcmVlVGV4dGFyZWEoKTtcbiAgfVxuXG4gIGh0bWwoKSB7XG4gICAgdGhpcy5oaWRlQ1NTQ29udGFpbmVyRGl2KCk7XG4gICAgdGhpcy5zaG93SFRNTENvbnRhaW5lckRpdigpO1xuICAgIHRoaXMuaGlkZVByZXZpZXdDb250YWluZXJEaXYoKTtcbiAgICB0aGlzLmhpZGVQbGFpblRleHRDb250YWluZXJEaXYoKTtcblxuICAgIHRoaXMuaGlkZUNTU1BhcnNlVHJlZVRleHRhcmVhKCk7XG4gICAgdGhpcy5zaG93SFRNTFBhcnNlVHJlZVRleHRhcmVhKCk7XG4gIH1cblxuICBjc3MoKSB7XG4gICAgdGhpcy5zaG93Q1NTQ29udGFpbmVyRGl2KCk7XG4gICAgdGhpcy5oaWRlSFRNTENvbnRhaW5lckRpdigpO1xuICAgIHRoaXMuaGlkZVByZXZpZXdDb250YWluZXJEaXYoKTtcbiAgICB0aGlzLmhpZGVQbGFpblRleHRDb250YWluZXJEaXYoKTtcblxuICAgIHRoaXMuc2hvd0NTU1BhcnNlVHJlZVRleHRhcmVhKCk7XG4gICAgdGhpcy5oaWRlSFRNTFBhcnNlVHJlZVRleHRhcmVhKCk7XG4gIH1cblxuICByZXNldE1hcmtkb3duVG9rZW5zKCkge1xuICAgIGNvbnN0IG1hcmtkb3duVG9rZW5zID0gbnVsbDtcblxuICAgIHRoaXMuc2V0TWFya2Rvd25Ub2tlbnMobWFya2Rvd25Ub2tlbnMpO1xuICB9XG5cbiAgcmVzZXRNYXJrZG93blN0eWxlVG9rZW5zKCkge1xuICAgIGNvbnN0IG1hcmtkb3duU3R5bGVUb2tlbnMgPSBudWxsO1xuXG4gICAgdGhpcy5zZXRNYXJrZG93blN0eWxlVG9rZW5zKG1hcmtkb3duU3R5bGVUb2tlbnMpO1xuICB9XG5cbiAgcmVzZXREb2N1bWVudE1hcmtkb3duTm9kZSgpIHtcbiAgICBjb25zdCBkb2N1bWVudE1hcmtkb3duTm9kZSA9IG51bGw7XG5cbiAgICB0aGlzLnNldERvY3VtZW50TWFya2Rvd25Ob2RlKGRvY3VtZW50TWFya2Rvd25Ob2RlKTtcbiAgfVxuXG4gIHJlc2V0RG9jdW1lbnRNYXJrZG93blN0eWxlTm9kZSgpIHtcbiAgICBjb25zdCBkb2N1bWVudE1hcmtkb3duU3R5bGVOb2RlID0gbnVsbDtcblxuICAgIHRoaXMuc2V0RG9jdW1lbnRNYXJrZG93blN0eWxlTm9kZShkb2N1bWVudE1hcmtkb3duU3R5bGVOb2RlKTtcbiAgfVxuXG4gIGdldE1hcmtkb3duU3R5bGVFbGVtZW50KCkge1xuICAgIGNvbnN0IHsgbWFya2Rvd25TdHlsZUVsZW1lbnQgfSA9IHRoaXMucHJvcGVydGllcztcblxuICAgIHJldHVybiBtYXJrZG93blN0eWxlRWxlbWVudDtcbiAgfVxuXG4gIGdldE1hcmtkb3duVG9rZW5zKCkge1xuICAgIGNvbnN0IHsgbWFya2Rvd25Ub2tlbnMgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcblxuICAgIHJldHVybiBtYXJrZG93blRva2VucztcbiAgfVxuXG4gIGdldE1hcmtkb3duU3R5bGVUb2tlbnMoKSB7XG4gICAgY29uc3QgeyBtYXJrZG93blN0eWxlVG9rZW5zIH0gPSB0aGlzLmdldFN0YXRlKCk7XG5cbiAgICByZXR1cm4gbWFya2Rvd25TdHlsZVRva2VucztcbiAgfVxuXG4gIGdldERvY3VtZW50TWFya2Rvd25Ob2RlKCkge1xuICAgIGNvbnN0IHsgdG9wbW9zdE1NYXJrZG93bk5vZGUgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcblxuICAgIHJldHVybiB0b3Btb3N0TU1hcmtkb3duTm9kZTtcbiAgfVxuXG4gIGdldERvY3VtZW50TWFya2Rvd25TdHlsZU5vZGUoKSB7XG4gICAgY29uc3QgeyB0b3Btb3N0TU1hcmtkb3duU3R5bGVOb2RlIH0gPSB0aGlzLmdldFN0YXRlKCk7XG5cbiAgICByZXR1cm4gdG9wbW9zdE1NYXJrZG93blN0eWxlTm9kZTtcbiAgfVxuXG4gIHNldE1hcmtkb3duVG9rZW5zKG1hcmtkb3duVG9rZW5zKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICBtYXJrZG93blRva2Vuc1xuICAgIH0pO1xuICB9XG5cbiAgc2V0TWFya2Rvd25TdHlsZVRva2VucyhtYXJrZG93blN0eWxlVG9rZW5zKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICBtYXJrZG93blN0eWxlVG9rZW5zXG4gICAgfSk7XG4gIH1cblxuICBzZXREb2N1bWVudE1hcmtkb3duTm9kZSh0b3Btb3N0TU1hcmtkb3duTm9kZSkge1xuICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgdG9wbW9zdE1NYXJrZG93bk5vZGVcbiAgICB9KTtcbiAgfVxuXG4gIHNldERvY3VtZW50TWFya2Rvd25TdHlsZU5vZGUodG9wbW9zdE1NYXJrZG93blN0eWxlTm9kZSkge1xuICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgdG9wbW9zdE1NYXJrZG93blN0eWxlTm9kZVxuICAgIH0pO1xuICB9XG5cbiAgc2V0SW5pdGlhbFN0YXRlKCkge1xuICAgIGNvbnN0IG1hcmtkb3duVG9rZW5zID0gbnVsbCxcbiAgICAgICAgICBtYXJrZG93blN0eWxlVG9rZW5zID0gbnVsbCxcbiAgICAgICAgICBkb2N1bWVudE1hcmtkb3duTm9kZSA9IG51bGwsXG4gICAgICAgICAgZG9jdW1lbnRNYXJrZG93blN0eWxlTm9kZSA9IG51bGw7XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIG1hcmtkb3duVG9rZW5zLFxuICAgICAgbWFya2Rvd25TdHlsZVRva2VucyxcbiAgICAgIGRvY3VtZW50TWFya2Rvd25Ob2RlLFxuICAgICAgZG9jdW1lbnRNYXJrZG93blN0eWxlTm9kZVxuICAgIH0pO1xuICB9XG5cbiAgZGlkTW91bnQoKSB7XG4gICAgdGhpcy5tYXJrZG93bigpO1xuXG4gICAgdGhpcy5odG1sKCk7XG5cbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgd2lsbFVubW91bnQoKSB7XG4gICAgLy8vXG4gIH1cblxuICBjaGlsZEVsZW1lbnRzKCkge1xuICAgIHJldHVybiAoXG5cbiAgICAgIDxDb2x1bW5zRGl2PlxuICAgICAgICA8TGVmdFNpemVhYmxlRGl2PlxuICAgICAgICAgIDxMZWZ0VGFiQnV0dG9uc0RpdiBvbkN1c3RvbU1hcmtkb3duPXt0aGlzLm1hcmtkb3duQ3VzdG9tSGFuZGxlcn0gb25DdXN0b21NYXJrZG93blN0eWxlPXt0aGlzLm1hcmtkb3duU3R5bGVDdXN0b21IYW5kbGVyfSAvPlxuICAgICAgICAgIDxNYXJrZG93bkNvbnRhaW5lckRpdiBvbkN1c3RvbUtleVVwPXt0aGlzLmtleVVwQ3VzdG9tSGFuZGxlcn0gLz5cbiAgICAgICAgICA8TWFya2Rvd25TdHlsZUNvbnRhaW5lckRpdiBvbkN1c3RvbUtleVVwPXt0aGlzLmtleVVwQ3VzdG9tSGFuZGxlcn0gLz5cbiAgICAgICAgPC9MZWZ0U2l6ZWFibGVEaXY+XG4gICAgICAgIDxWZXJ0aWNhbFNwbGl0dGVyRGl2Lz5cbiAgICAgICAgPENvbHVtbkRpdj5cbiAgICAgICAgICA8Um93c0Rpdj5cbiAgICAgICAgICAgIDxSaWdodFRhYkJ1dHRvbnNEaXYgb25DdXN0b21DU1M9e3RoaXMuY3NzQ3VzdG9tSGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DdXN0b21IVE1MPXt0aGlzLmh0bWxDdXN0b21IYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkN1c3RvbVByZXZpZXc9e3RoaXMucHJldmlld0N1c3RvbUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ3VzdG9tUGxhaW5UZXh0PXt0aGlzLnBsYWluVGV4dEN1c3RvbUhhbmRsZXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFBhZ2VCdXR0b25zRGl2IG9uQ3VzdG9tUGFnZVVwZGF0ZT17dGhpcy5wYWdlVXBkYXRlQ3VzdG9tSGFuZGxlcn0gLz5cbiAgICAgICAgICAgIDxDU1NDb250YWluZXJEaXYvPlxuICAgICAgICAgICAgPEhUTUxDb250YWluZXJEaXYvPlxuICAgICAgICAgICAgPFByZXZpZXdDb250YWluZXJEaXYvPlxuICAgICAgICAgICAgPFBsYWluVGV4dENvbnRhaW5lckRpdi8+XG4gICAgICAgICAgICA8SFRNTFBhcnNlVHJlZVRleHRhcmVhLz5cbiAgICAgICAgICAgIDxDU1NQYXJzZVRyZWVUZXh0YXJlYS8+XG4gICAgICAgICAgPC9Sb3dzRGl2PlxuICAgICAgICA8L0NvbHVtbkRpdj5cbiAgICAgIDwvQ29sdW1uc0Rpdj5cblxuICAgICk7XG4gIH1cblxuICBpbml0aWFsaXNlKCkge1xuICAgIHRoaXMuYXNzaWduQ29udGV4dCgpO1xuXG4gICAgdGhpcy5zZXRJbml0aWFsU3RhdGUoKTtcblxuICAgIGNvbnN0IHsgaW5pdGlhbE1hcmtkb3duLCBpbml0aWFsTWFya2Rvd25TdHlsZSB9ID0gdGhpcy5jb25zdHJ1Y3RvcixcbiAgICAgICAgICBtYXJrZG93blN0eWxlID0gaW5pdGlhbE1hcmtkb3duU3R5bGUsIC8vL1xuICAgICAgICAgIG1hcmtkb3duID0gaW5pdGlhbE1hcmtkb3duOyAvLy9cblxuICAgIHRoaXMuc2V0TWFya2Rvd25TdHlsZShtYXJrZG93blN0eWxlKTtcblxuICAgIHRoaXMuc2V0TWFya2Rvd24obWFya2Rvd24pO1xuICB9XG5cbiAgc3RhdGljIGluaXRpYWxNYXJrZG93biA9IGBcbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgYW5kIEFudGktOTk2IExpY2Vuc2UgXG5gO1xuXG4gIHN0YXRpYyBpbml0aWFsTWFya2Rvd25TdHlsZSA9IFwiXCI7XG5cbiAgc3RhdGljIHRhZ05hbWUgPSBcImRpdlwiO1xuXG4gIHN0YXRpYyBpZ25vcmVkUHJvcGVydGllcyA9IFtcbiAgICBcIm1hcmtkb3duU3R5bGVFbGVtZW50XCJcbiAgXTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BlcnRpZXMgPSB7XG4gICAgY2xhc3NOYW1lOiBcInZpZXdcIlxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGUoVmlldylgXG5cbiAgcGFkZGluZzogMXJlbTtcbiAgXG5gO1xuXG5mdW5jdGlvbiBwYXRoVG9VUkwocGF0aCkge1xuICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9kamFsYmF0LmNvbS8ke3BhdGh9YDtcblxuICByZXR1cm4gdXJsO1xufVxuIl0sIm5hbWVzIjpbInRva2Vuc0Zyb21NYXJrZG93biIsInRva2Vuc0Zyb21NYXJrZG93blN0eWxlIiwiZG9jdW1lbnRNYXJrZG93bk5vZGVGcm9tVG9rZW5zIiwiaHRtbEZyb21NYXJrZG93bk9wdGlvbnNBbmRJbXBvcnRlciIsImRvY3VtZW50TWFya2Rvd25TdHlsZU5vZGVGcm9tVG9rZW5zIiwidG9wbW9zdEhUTUxOb2RlRnJvbURvY3VtZW50TWFya2Rvd25Ob2RlIiwiY3NzRnJvbU1hcmtkb3duU3R5bGVBbmRDU1NTZWxlY3RvcnNTdHJpbmciLCJ0b3Btb3N0Q1NTTm9kZUZyb21Eb2N1bWVudE1hcmtkb3duU3R5bGVOb2RlIiwiZ3JhbW1hclV0aWxpdGllcyIsIlZpZXciLCJFbGVtZW50IiwicGFnZVVwZGF0ZUN1c3RvbUhhbmRsZXIiLCJldmVudCIsImVsZW1lbnQiLCJpbmRleCIsInVwZGF0ZUhUTUwiLCJtYXJrZG93blN0eWxlQ3VzdG9tSGFuZGxlciIsIm1hcmtkb3duU3R5bGUiLCJtYXJrZG93bkN1c3RvbUhhbmRsZXIiLCJtYXJrZG93biIsInBsYWluVGV4dEN1c3RvbUhhbmRsZXIiLCJwbGFpblRleHQiLCJwcmV2aWV3Q3VzdG9tSGFuZGxlciIsInByZXZpZXciLCJrZXlVcEN1c3RvbUhhbmRsZXIiLCJ1cGRhdGUiLCJodG1sQ3VzdG9tSGFuZGxlciIsImh0bWwiLCJjc3NDdXN0b21IYW5kbGVyIiwiY3NzIiwidXBkYXRlTWFya2Rvd25TdHlsZSIsInVwZGF0ZU1hcmtkb3duIiwidXBkYXRlQ1NTIiwiZ2V0TWFya2Rvd25TdHlsZSIsInRva2VucyIsImRvY3VtZW50TWFya2Rvd25TdHlsZU5vZGUiLCJyZXNldE1hcmtkb3duU3R5bGVUb2tlbnMiLCJyZXNldERvY3VtZW50TWFya2Rvd25TdHlsZU5vZGUiLCJjbGVhck1hcmtkb3duU3R5bGVQYXJzZVRyZWVUZXh0YXJlYSIsIm5vZGUiLCJwYXJzZVRyZWUiLCJhc1BhcnNlVHJlZSIsIm1hcmtkb3duU3R5bGVUb2tlbnMiLCJzZXRNYXJrZG93blN0eWxlVG9rZW5zIiwic2V0RG9jdW1lbnRNYXJrZG93blN0eWxlTm9kZSIsInVwZGF0ZU1hcmtkb3duU3R5bGVQYXJzZVRyZWVUZXh0YXJlYSIsImdldE1hcmtkb3duIiwiZG9jdW1lbnRNYXJrZG93bk5vZGUiLCJyZXNldE1hcmtkb3duVG9rZW5zIiwicmVzZXREb2N1bWVudE1hcmtkb3duTm9kZSIsImNsZWFyTWFya2Rvd25QYXJzZVRyZWVUZXh0YXJlYSIsImNvbnRleHQiLCJpbXBvcnRlciIsInJlc29sdmUiLCJkb2N1bWVudE1hcmtkb3duTm9kZVBhcnNlVHJlZSIsIm1hcmtkb3duUGFyc2VUcmVlIiwibWFya2Rvd25Ub2tlbnMiLCJzZXRNYXJrZG93blRva2VucyIsInNldERvY3VtZW50TWFya2Rvd25Ob2RlIiwidXBkYXRlTWFya2Rvd25QYXJzZVRyZWVUZXh0YXJlYSIsImNsZWFyWE1QIiwiY2xlYXJQcmV2aWV3RGl2IiwiY2xlYXJQbGFpblRleHRUZXh0YXJlYSIsImNsZWFySFRNTFBhcnNlVHJlZVRleHRhcmVhIiwiY2xlYXJQYWdlQnV0dG9uc0RpdiIsImdldERvY3VtZW50TWFya2Rvd25Ob2RlIiwidG9wbW9zdEhUTUxOb2RlIiwiZ2V0TWFya2Rvd25Ub2tlbnMiLCJkaXZpc2lvbkhUTUxOb2RlIiwiZ2V0RGl2aXNpb25IVE1MTm9kZUF0IiwiZGl2aXNpb25IVE1MTk9kZVBhcnNlVHJlZSIsImh0bWxQYXJzZVRyZWUiLCJkaXZpc2lvbkhUTUxOb2RlcyIsImdldERpdmlzaW9uSFRNTE5vZGVzIiwibGVuZ3RoIiwicGF0aFRvVVJMIiwidXBkYXRlUHJldmlld0RpdiIsInVwZGF0ZVBsYWluVGV4dFRleHRhcmVhIiwidXBkYXRlSFRNTFBhcnNlVHJlZVRleHRhcmVhIiwidXBkYXRlUGFnZUJ1dHRvbnNEaXYiLCJvcHRpb25zIiwiaW5kZXhPcHRpb25zIiwidXBkYXRlWE1QIiwiZ2V0TWFya2Rvd25TdHlsZVRva2VucyIsIm1hcmtkb3duU3R5bGVFbGVtZW50IiwiZ2V0TWFya2Rvd25TdHlsZUVsZW1lbnQiLCJnZXREb2N1bWVudE1hcmtkb3duU3R5bGVOb2RlIiwiRU1QVFlfU1RSSU5HIiwic2V0Q1NTIiwiY2xlYXJDU1NQYXJzZVRyZWVUZXh0YXJlYSIsImNsZWFyQ1NTIiwidG9wbW9zdENTU05vZGUiLCJ0b3Btb3N0Q1NTTm9kZVBhcnNlVHJlZSIsImNzc1BhcnNlVHJlZSIsInVwZGF0ZUNTU1BhcnNlVHJlZVRleHRhcmVhIiwiY3NzU2VsZWN0b3JzU3RyaW5nIiwiQ1NTX1NFTEVDVE9SU19TVFJJTkciLCJoaWRlTWFya2Rvd25Db250YWluZXJEaXYiLCJzaG93TWFya2Rvd25TdHlsZUNvbnRhaW5lckRpdiIsInNob3dNYXJrZG93bkNvbnRhaW5lckRpdiIsImhpZGVNYXJrZG93blN0eWxlQ29udGFpbmVyRGl2IiwiaGlkZUNTU0NvbnRhaW5lckRpdiIsImhpZGVIVE1MQ29udGFpbmVyRGl2IiwiaGlkZVByZXZpZXdDb250YWluZXJEaXYiLCJzaG93UGxhaW5UZXh0Q29udGFpbmVyRGl2IiwiaGlkZUNTU1BhcnNlVHJlZVRleHRhcmVhIiwic2hvd0hUTUxQYXJzZVRyZWVUZXh0YXJlYSIsInNob3dQcmV2aWV3Q29udGFpbmVyRGl2IiwiaGlkZVBsYWluVGV4dENvbnRhaW5lckRpdiIsInNob3dIVE1MQ29udGFpbmVyRGl2Iiwic2hvd0NTU0NvbnRhaW5lckRpdiIsInNob3dDU1NQYXJzZVRyZWVUZXh0YXJlYSIsImhpZGVIVE1MUGFyc2VUcmVlVGV4dGFyZWEiLCJwcm9wZXJ0aWVzIiwiZ2V0U3RhdGUiLCJ0b3Btb3N0TU1hcmtkb3duTm9kZSIsInRvcG1vc3RNTWFya2Rvd25TdHlsZU5vZGUiLCJ1cGRhdGVTdGF0ZSIsInNldEluaXRpYWxTdGF0ZSIsInNldFN0YXRlIiwiZGlkTW91bnQiLCJ3aWxsVW5tb3VudCIsImNoaWxkRWxlbWVudHMiLCJDb2x1bW5zRGl2IiwiTGVmdFNpemVhYmxlRGl2IiwiTGVmdFRhYkJ1dHRvbnNEaXYiLCJvbkN1c3RvbU1hcmtkb3duIiwib25DdXN0b21NYXJrZG93blN0eWxlIiwiTWFya2Rvd25Db250YWluZXJEaXYiLCJvbkN1c3RvbUtleVVwIiwiTWFya2Rvd25TdHlsZUNvbnRhaW5lckRpdiIsIlZlcnRpY2FsU3BsaXR0ZXJEaXYiLCJDb2x1bW5EaXYiLCJSb3dzRGl2IiwiUmlnaHRUYWJCdXR0b25zRGl2Iiwib25DdXN0b21DU1MiLCJvbkN1c3RvbUhUTUwiLCJvbkN1c3RvbVByZXZpZXciLCJvbkN1c3RvbVBsYWluVGV4dCIsIlBhZ2VCdXR0b25zRGl2Iiwib25DdXN0b21QYWdlVXBkYXRlIiwiQ1NTQ29udGFpbmVyRGl2IiwiSFRNTENvbnRhaW5lckRpdiIsIlByZXZpZXdDb250YWluZXJEaXYiLCJQbGFpblRleHRDb250YWluZXJEaXYiLCJIVE1MUGFyc2VUcmVlVGV4dGFyZWEiLCJDU1NQYXJzZVRyZWVUZXh0YXJlYSIsImluaXRpYWxpc2UiLCJhc3NpZ25Db250ZXh0IiwiaW5pdGlhbE1hcmtkb3duIiwiaW5pdGlhbE1hcmtkb3duU3R5bGUiLCJzZXRNYXJrZG93blN0eWxlIiwic2V0TWFya2Rvd24iLCJ0YWdOYW1lIiwiaWdub3JlZFByb3BlcnRpZXMiLCJkZWZhdWx0UHJvcGVydGllcyIsImNsYXNzTmFtZSIsIndpdGhTdHlsZSIsInBhdGgiLCJ1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
package/lib/example.js ADDED
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ require("juxtapose");
6
+ const _easywithstyle = /*#__PURE__*/ _interop_require_default(require("easy-with-style"));
7
+ const _easy = require("easy");
8
+ const _index = require("./index");
9
+ const _view = /*#__PURE__*/ _interop_require_default(require("./example/view"));
10
+ const _constants = require("./example/constants");
11
+ function _interop_require_default(obj) {
12
+ return obj && obj.__esModule ? obj : {
13
+ default: obj
14
+ };
15
+ }
16
+ const { renderStyles } = _easywithstyle.default;
17
+ const cssSelectorsString = _constants.CSS_SELECTORS_STRING;
18
+ _index.DefaultMarkdownStyleElement.fromCSSSelectorsString(cssSelectorsString);
19
+ const markdownStyleElement = _index.MarkdownStyleElement.fromCSSSelectorsString(cssSelectorsString);
20
+ renderStyles();
21
+ const body = new _easy.Body();
22
+ body.mount(/*#__PURE__*/ React.createElement(_view.default, {
23
+ markdownStyleElement: markdownStyleElement
24
+ }));
25
+
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leGFtcGxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgXCJqdXh0YXBvc2VcIjtcblxuaW1wb3J0IHdpdGhTdHlsZSBmcm9tIFwiZWFzeS13aXRoLXN0eWxlXCI7ICAvLy9cblxuaW1wb3J0IHsgQm9keSB9IGZyb20gXCJlYXN5XCI7XG5pbXBvcnQgeyBNYXJrZG93blN0eWxlRWxlbWVudCwgRGVmYXVsdE1hcmtkb3duU3R5bGVFbGVtZW50IH0gZnJvbSBcIi4vaW5kZXhcIjsgIC8vL1xuXG5pbXBvcnQgVmlldyBmcm9tIFwiLi9leGFtcGxlL3ZpZXdcIjtcblxuaW1wb3J0IHsgQ1NTX1NFTEVDVE9SU19TVFJJTkcgfSBmcm9tIFwiLi9leGFtcGxlL2NvbnN0YW50c1wiO1xuXG5jb25zdCB7IHJlbmRlclN0eWxlcyB9ID0gd2l0aFN0eWxlO1xuXG5jb25zdCBjc3NTZWxlY3RvcnNTdHJpbmcgPSBDU1NfU0VMRUNUT1JTX1NUUklORztcblxuRGVmYXVsdE1hcmtkb3duU3R5bGVFbGVtZW50LmZyb21DU1NTZWxlY3RvcnNTdHJpbmcoY3NzU2VsZWN0b3JzU3RyaW5nKTtcblxuY29uc3QgbWFya2Rvd25TdHlsZUVsZW1lbnQgPSBNYXJrZG93blN0eWxlRWxlbWVudC5mcm9tQ1NTU2VsZWN0b3JzU3RyaW5nKGNzc1NlbGVjdG9yc1N0cmluZyk7XG5cbnJlbmRlclN0eWxlcygpO1xuXG5jb25zdCBib2R5ID0gbmV3IEJvZHkoKTtcblxuYm9keS5tb3VudChcblxuICA8VmlldyBtYXJrZG93blN0eWxlRWxlbWVudD17bWFya2Rvd25TdHlsZUVsZW1lbnR9IC8+XG5cbik7XG4iXSwibmFtZXMiOlsicmVuZGVyU3R5bGVzIiwid2l0aFN0eWxlIiwiY3NzU2VsZWN0b3JzU3RyaW5nIiwiQ1NTX1NFTEVDVE9SU19TVFJJTkciLCJEZWZhdWx0TWFya2Rvd25TdHlsZUVsZW1lbnQiLCJmcm9tQ1NTU2VsZWN0b3JzU3RyaW5nIiwibWFya2Rvd25TdHlsZUVsZW1lbnQiLCJNYXJrZG93blN0eWxlRWxlbWVudCIsImJvZHkiLCJCb2R5IiwibW91bnQiLCJWaWV3Il0sIm1hcHBpbmdzIjoiQUFBQTs7OztRQUVPO3NFQUVlO3NCQUVEO3VCQUM2Qzs2REFFakQ7MkJBRW9COzs7Ozs7QUFFckMsTUFBTSxFQUFFQSxZQUFZLEVBQUUsR0FBR0Msc0JBQVM7QUFFbEMsTUFBTUMscUJBQXFCQywrQkFBb0I7QUFFL0NDLGtDQUEyQixDQUFDQyxzQkFBc0IsQ0FBQ0g7QUFFbkQsTUFBTUksdUJBQXVCQywyQkFBb0IsQ0FBQ0Ysc0JBQXNCLENBQUNIO0FBRXpFRjtBQUVBLE1BQU1RLE9BQU8sSUFBSUMsVUFBSTtBQUVyQkQsS0FBS0UsS0FBSyxlQUVSLG9CQUFDQyxhQUFJO0lBQUNMLHNCQUFzQkEifQ==
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return IndexItem;
9
+ }
10
+ });
11
+ const _necessary = require("necessary");
12
+ const { first } = _necessary.arrayUtilities;
13
+ class IndexItem {
14
+ constructor(lowerCaseLetter, wordOrPhrase, pageNumbers){
15
+ this.lowerCaseLetter = lowerCaseLetter;
16
+ this.wordOrPhrase = wordOrPhrase;
17
+ this.pageNumbers = pageNumbers;
18
+ }
19
+ getLowerCaseLetter() {
20
+ return this.lowerCaseLetter;
21
+ }
22
+ getWordOrPhrase() {
23
+ return this.wordOrPhrase;
24
+ }
25
+ getPageNumbers() {
26
+ return this.pageNumbers;
27
+ }
28
+ matchLetter(letter) {
29
+ const matchesLetter = this.lowerCaseLetter === letter;
30
+ return matchesLetter;
31
+ }
32
+ static fromWordOrPhraseAndPageNumbers(wordOrPhrase, pageNumbers) {
33
+ const lowerCaseWordOrPhrase = wordOrPhrase.toLowerCase(), lowerCaseLetters = [
34
+ ...lowerCaseWordOrPhrase
35
+ ], firstLowerCaseLetter = first(lowerCaseLetters), lowerCaseLetter = firstLowerCaseLetter, indexItem = new IndexItem(lowerCaseLetter, wordOrPhrase, pageNumbers);
36
+ return indexItem;
37
+ }
38
+ }
39
+
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC9pdGVtLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBmaXJzdCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEluZGV4SXRlbSB7XG4gIGNvbnN0cnVjdG9yKGxvd2VyQ2FzZUxldHRlciwgd29yZE9yUGhyYXNlLCBwYWdlTnVtYmVycykge1xuICAgIHRoaXMubG93ZXJDYXNlTGV0dGVyID0gbG93ZXJDYXNlTGV0dGVyO1xuICAgIHRoaXMud29yZE9yUGhyYXNlID0gd29yZE9yUGhyYXNlO1xuICAgIHRoaXMucGFnZU51bWJlcnMgPSBwYWdlTnVtYmVycztcbiAgfVxuXG4gIGdldExvd2VyQ2FzZUxldHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5sb3dlckNhc2VMZXR0ZXI7XG4gIH1cblxuICBnZXRXb3JkT3JQaHJhc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZE9yUGhyYXNlO1xuICB9XG5cbiAgZ2V0UGFnZU51bWJlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFnZU51bWJlcnM7XG4gIH1cblxuICBtYXRjaExldHRlcihsZXR0ZXIpIHtcbiAgICBjb25zdCBtYXRjaGVzTGV0dGVyID0gKHRoaXMubG93ZXJDYXNlTGV0dGVyID09PSBsZXR0ZXIpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXNMZXR0ZXI7XG4gIH1cblxuICBzdGF0aWMgZnJvbVdvcmRPclBocmFzZUFuZFBhZ2VOdW1iZXJzKHdvcmRPclBocmFzZSwgcGFnZU51bWJlcnMpIHtcbiAgICBjb25zdCBsb3dlckNhc2VXb3JkT3JQaHJhc2UgPSB3b3JkT3JQaHJhc2UudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICBsb3dlckNhc2VMZXR0ZXJzID0gW1xuICAgICAgICAgICAgLi4ubG93ZXJDYXNlV29yZE9yUGhyYXNlXG4gICAgICAgICAgXSxcbiAgICAgICAgICBmaXJzdExvd2VyQ2FzZUxldHRlciA9IGZpcnN0KGxvd2VyQ2FzZUxldHRlcnMpLFxuICAgICAgICAgIGxvd2VyQ2FzZUxldHRlciA9IGZpcnN0TG93ZXJDYXNlTGV0dGVyLCAvLy9cbiAgICAgICAgICBpbmRleEl0ZW0gPSBuZXcgSW5kZXhJdGVtKGxvd2VyQ2FzZUxldHRlciwgd29yZE9yUGhyYXNlLCBwYWdlTnVtYmVycyk7XG5cbiAgICByZXR1cm4gaW5kZXhJdGVtO1xuICB9XG59XG4iXSwibmFtZXMiOlsiSW5kZXhJdGVtIiwiZmlyc3QiLCJhcnJheVV0aWxpdGllcyIsImxvd2VyQ2FzZUxldHRlciIsIndvcmRPclBocmFzZSIsInBhZ2VOdW1iZXJzIiwiZ2V0TG93ZXJDYXNlTGV0dGVyIiwiZ2V0V29yZE9yUGhyYXNlIiwiZ2V0UGFnZU51bWJlcnMiLCJtYXRjaExldHRlciIsImxldHRlciIsIm1hdGNoZXNMZXR0ZXIiLCJmcm9tV29yZE9yUGhyYXNlQW5kUGFnZU51bWJlcnMiLCJsb3dlckNhc2VXb3JkT3JQaHJhc2UiLCJ0b0xvd2VyQ2FzZSIsImxvd2VyQ2FzZUxldHRlcnMiLCJmaXJzdExvd2VyQ2FzZUxldHRlciIsImluZGV4SXRlbSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBTUE7OztlQUFxQkE7OzsyQkFKVTtBQUUvQixNQUFNLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYztBQUVqQixNQUFNRjtJQUNuQixZQUFZRyxlQUFlLEVBQUVDLFlBQVksRUFBRUMsV0FBVyxDQUFFO1FBQ3RELElBQUksQ0FBQ0YsZUFBZSxHQUFHQTtRQUN2QixJQUFJLENBQUNDLFlBQVksR0FBR0E7UUFDcEIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBO0lBQ3JCO0lBRUFDLHFCQUFxQjtRQUNuQixPQUFPLElBQUksQ0FBQ0gsZUFBZTtJQUM3QjtJQUVBSSxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUNILFlBQVk7SUFDMUI7SUFFQUksaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUNILFdBQVc7SUFDekI7SUFFQUksWUFBWUMsTUFBTSxFQUFFO1FBQ2xCLE1BQU1DLGdCQUFpQixJQUFJLENBQUNSLGVBQWUsS0FBS087UUFFaEQsT0FBT0M7SUFDVDtJQUVBLE9BQU9DLCtCQUErQlIsWUFBWSxFQUFFQyxXQUFXLEVBQUU7UUFDL0QsTUFBTVEsd0JBQXdCVCxhQUFhVSxXQUFXLElBQ2hEQyxtQkFBbUI7ZUFDZEY7U0FDSixFQUNERyx1QkFBdUJmLE1BQU1jLG1CQUM3Qlosa0JBQWtCYSxzQkFDbEJDLFlBQVksSUFBSWpCLFVBQVVHLGlCQUFpQkMsY0FBY0M7UUFFL0QsT0FBT1k7SUFDVDtBQUNGIn0=
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return IndexList;
9
+ }
10
+ });
11
+ const _necessary = require("necessary");
12
+ const _item = /*#__PURE__*/ _interop_require_default(require("../index/item"));
13
+ const _index = require("../utilities/index");
14
+ function _interop_require_default(obj) {
15
+ return obj && obj.__esModule ? obj : {
16
+ default: obj
17
+ };
18
+ }
19
+ const { strcmp } = _necessary.stringUtilities;
20
+ class IndexList {
21
+ constructor(indexItems){
22
+ this.indexItems = indexItems;
23
+ }
24
+ getIndexItems() {
25
+ return this.indexItems;
26
+ }
27
+ reduceIndexItemByLetter(letter, callback) {
28
+ const indexItems = this.indexItems.filter((indexItem)=>{
29
+ const indexItemMatchesLetter = indexItem.matchLetter(letter);
30
+ if (indexItemMatchesLetter) {
31
+ return true;
32
+ }
33
+ });
34
+ const result = indexItems.map(callback);
35
+ return result;
36
+ }
37
+ static fromIndexDirectiveHTMLNodeAndDivisionHTMLNodes(indexDirectiveHTMLNode, divisionHTMLNodes, context) {
38
+ const indexMap = (0, _index.indexMapFromIndexDirectiveHTMLNodeAndDivisionHTMLNodes)(indexDirectiveHTMLNode, divisionHTMLNodes, context), indexItems = indexItemsFromIndexMap(indexMap), indexList = new IndexList(indexItems);
39
+ return indexList;
40
+ }
41
+ }
42
+ function indexItemsFromIndexMap(indexMap) {
43
+ const wordsOrPhrases = Object.keys(indexMap); ///
44
+ wordsOrPhrases.sort((wordOrPhraseA, wordOrPhraseB)=>{
45
+ const lowerCaseWordOrPhraseA = wordOrPhraseA.toLowerCase(), lowerCaseWordOrPhraseB = wordOrPhraseB.toLowerCase(), difference = strcmp(lowerCaseWordOrPhraseA, lowerCaseWordOrPhraseB);
46
+ return difference;
47
+ });
48
+ const indexItems = wordsOrPhrases.map((wordOrPhrase, index)=>{
49
+ const pageNumbers = indexMap[wordOrPhrase], indexItem = _item.default.fromWordOrPhraseAndPageNumbers(wordOrPhrase, pageNumbers);
50
+ return indexItem;
51
+ });
52
+ return indexItems;
53
+ }
54
+
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC9saXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBzdHJpbmdVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCBJbmRleEl0ZW0gZnJvbSBcIi4uL2luZGV4L2l0ZW1cIjtcblxuaW1wb3J0IHsgaW5kZXhNYXBGcm9tSW5kZXhEaXJlY3RpdmVIVE1MTm9kZUFuZERpdmlzaW9uSFRNTE5vZGVzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9pbmRleFwiO1xuXG5jb25zdCB7IHN0cmNtcCB9ID0gc3RyaW5nVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbmRleExpc3Qge1xuICBjb25zdHJ1Y3RvcihpbmRleEl0ZW1zKSB7XG4gICAgdGhpcy5pbmRleEl0ZW1zID0gaW5kZXhJdGVtcztcbiAgfVxuXG4gIGdldEluZGV4SXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5kZXhJdGVtcztcbiAgfVxuXG4gIHJlZHVjZUluZGV4SXRlbUJ5TGV0dGVyKGxldHRlciwgY2FsbGJhY2spIHtcbiAgICBjb25zdCBpbmRleEl0ZW1zID0gdGhpcy5pbmRleEl0ZW1zLmZpbHRlcigoaW5kZXhJdGVtKSA9PiB7XG4gICAgICBjb25zdCBpbmRleEl0ZW1NYXRjaGVzTGV0dGVyID0gaW5kZXhJdGVtLm1hdGNoTGV0dGVyKGxldHRlcik7XG5cbiAgICAgIGlmIChpbmRleEl0ZW1NYXRjaGVzTGV0dGVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gaW5kZXhJdGVtcy5tYXAoY2FsbGJhY2spO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSW5kZXhEaXJlY3RpdmVIVE1MTm9kZUFuZERpdmlzaW9uSFRNTE5vZGVzKGluZGV4RGlyZWN0aXZlSFRNTE5vZGUsIGRpdmlzaW9uSFRNTE5vZGVzLCBjb250ZXh0KSB7XG4gICAgY29uc3QgaW5kZXhNYXAgPSBpbmRleE1hcEZyb21JbmRleERpcmVjdGl2ZUhUTUxOb2RlQW5kRGl2aXNpb25IVE1MTm9kZXMoaW5kZXhEaXJlY3RpdmVIVE1MTm9kZSwgZGl2aXNpb25IVE1MTm9kZXMsIGNvbnRleHQpLFxuICAgICAgICAgIGluZGV4SXRlbXMgPSBpbmRleEl0ZW1zRnJvbUluZGV4TWFwKGluZGV4TWFwKSxcbiAgICAgICAgICBpbmRleExpc3QgPSBuZXcgSW5kZXhMaXN0KGluZGV4SXRlbXMpO1xuXG4gICAgcmV0dXJuIGluZGV4TGlzdDtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbmRleEl0ZW1zRnJvbUluZGV4TWFwKGluZGV4TWFwKSB7XG4gIGNvbnN0IHdvcmRzT3JQaHJhc2VzID0gT2JqZWN0LmtleXMoaW5kZXhNYXApOyAvLy9cblxuICB3b3Jkc09yUGhyYXNlcy5zb3J0KCh3b3JkT3JQaHJhc2VBLCB3b3JkT3JQaHJhc2VCKSA9PiB7XG4gICAgY29uc3QgbG93ZXJDYXNlV29yZE9yUGhyYXNlQSA9IHdvcmRPclBocmFzZUEudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICBsb3dlckNhc2VXb3JkT3JQaHJhc2VCID0gd29yZE9yUGhyYXNlQi50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgIGRpZmZlcmVuY2UgPSBzdHJjbXAobG93ZXJDYXNlV29yZE9yUGhyYXNlQSwgbG93ZXJDYXNlV29yZE9yUGhyYXNlQik7XG5cbiAgICByZXR1cm4gZGlmZmVyZW5jZTtcbiAgfSk7XG5cbiAgY29uc3QgaW5kZXhJdGVtcyA9IHdvcmRzT3JQaHJhc2VzLm1hcCgod29yZE9yUGhyYXNlLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhZ2VOdW1iZXJzID0gaW5kZXhNYXBbd29yZE9yUGhyYXNlXSxcbiAgICAgICAgICBpbmRleEl0ZW0gPSBJbmRleEl0ZW0uZnJvbVdvcmRPclBocmFzZUFuZFBhZ2VOdW1iZXJzKHdvcmRPclBocmFzZSwgcGFnZU51bWJlcnMpO1xuXG4gICAgcmV0dXJuIGluZGV4SXRlbTtcbiAgfSlcblxuICByZXR1cm4gaW5kZXhJdGVtcztcbn1cbiJdLCJuYW1lcyI6WyJJbmRleExpc3QiLCJzdHJjbXAiLCJzdHJpbmdVdGlsaXRpZXMiLCJpbmRleEl0ZW1zIiwiZ2V0SW5kZXhJdGVtcyIsInJlZHVjZUluZGV4SXRlbUJ5TGV0dGVyIiwibGV0dGVyIiwiY2FsbGJhY2siLCJmaWx0ZXIiLCJpbmRleEl0ZW0iLCJpbmRleEl0ZW1NYXRjaGVzTGV0dGVyIiwibWF0Y2hMZXR0ZXIiLCJyZXN1bHQiLCJtYXAiLCJmcm9tSW5kZXhEaXJlY3RpdmVIVE1MTm9kZUFuZERpdmlzaW9uSFRNTE5vZGVzIiwiaW5kZXhEaXJlY3RpdmVIVE1MTm9kZSIsImRpdmlzaW9uSFRNTE5vZGVzIiwiY29udGV4dCIsImluZGV4TWFwIiwiaW5kZXhNYXBGcm9tSW5kZXhEaXJlY3RpdmVIVE1MTm9kZUFuZERpdmlzaW9uSFRNTE5vZGVzIiwiaW5kZXhJdGVtc0Zyb21JbmRleE1hcCIsImluZGV4TGlzdCIsIndvcmRzT3JQaHJhc2VzIiwiT2JqZWN0Iiwia2V5cyIsInNvcnQiLCJ3b3JkT3JQaHJhc2VBIiwid29yZE9yUGhyYXNlQiIsImxvd2VyQ2FzZVdvcmRPclBocmFzZUEiLCJ0b0xvd2VyQ2FzZSIsImxvd2VyQ2FzZVdvcmRPclBocmFzZUIiLCJkaWZmZXJlbmNlIiwid29yZE9yUGhyYXNlIiwiaW5kZXgiLCJwYWdlTnVtYmVycyIsIkluZGV4SXRlbSIsImZyb21Xb3JkT3JQaHJhc2VBbmRQYWdlTnVtYmVycyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBVUE7OztlQUFxQkE7OzsyQkFSVzs2REFFVjt1QkFFaUQ7Ozs7OztBQUV2RSxNQUFNLEVBQUVDLE1BQU0sRUFBRSxHQUFHQywwQkFBZTtBQUVuQixNQUFNRjtJQUNuQixZQUFZRyxVQUFVLENBQUU7UUFDdEIsSUFBSSxDQUFDQSxVQUFVLEdBQUdBO0lBQ3BCO0lBRUFDLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDRCxVQUFVO0lBQ3hCO0lBRUFFLHdCQUF3QkMsTUFBTSxFQUFFQyxRQUFRLEVBQUU7UUFDeEMsTUFBTUosYUFBYSxJQUFJLENBQUNBLFVBQVUsQ0FBQ0ssTUFBTSxDQUFDLENBQUNDO1lBQ3pDLE1BQU1DLHlCQUF5QkQsVUFBVUUsV0FBVyxDQUFDTDtZQUVyRCxJQUFJSSx3QkFBd0I7Z0JBQzFCLE9BQU87WUFDVDtRQUNGO1FBRUEsTUFBTUUsU0FBU1QsV0FBV1UsR0FBRyxDQUFDTjtRQUU5QixPQUFPSztJQUNUO0lBRUEsT0FBT0UsK0NBQStDQyxzQkFBc0IsRUFBRUMsaUJBQWlCLEVBQUVDLE9BQU8sRUFBRTtRQUN4RyxNQUFNQyxXQUFXQyxJQUFBQSw2REFBc0QsRUFBQ0osd0JBQXdCQyxtQkFBbUJDLFVBQzdHZCxhQUFhaUIsdUJBQXVCRixXQUNwQ0csWUFBWSxJQUFJckIsVUFBVUc7UUFFaEMsT0FBT2tCO0lBQ1Q7QUFDRjtBQUVBLFNBQVNELHVCQUF1QkYsUUFBUTtJQUN0QyxNQUFNSSxpQkFBaUJDLE9BQU9DLElBQUksQ0FBQ04sV0FBVyxHQUFHO0lBRWpESSxlQUFlRyxJQUFJLENBQUMsQ0FBQ0MsZUFBZUM7UUFDbEMsTUFBTUMseUJBQXlCRixjQUFjRyxXQUFXLElBQ2xEQyx5QkFBeUJILGNBQWNFLFdBQVcsSUFDbERFLGFBQWE5QixPQUFPMkIsd0JBQXdCRTtRQUVsRCxPQUFPQztJQUNUO0lBRUEsTUFBTTVCLGFBQWFtQixlQUFlVCxHQUFHLENBQUMsQ0FBQ21CLGNBQWNDO1FBQ25ELE1BQU1DLGNBQWNoQixRQUFRLENBQUNjLGFBQWEsRUFDcEN2QixZQUFZMEIsYUFBUyxDQUFDQyw4QkFBOEIsQ0FBQ0osY0FBY0U7UUFFekUsT0FBT3pCO0lBQ1Q7SUFFQSxPQUFPTjtBQUNUIn0=
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return IndexMatch;
9
+ }
10
+ });
11
+ const _constants = require("../constants");
12
+ class IndexMatch {
13
+ constructor(regularExpression, transform){
14
+ this.regularExpression = regularExpression;
15
+ this.transform = transform;
16
+ }
17
+ getRegularExpression() {
18
+ return this.regularExpression;
19
+ }
20
+ getReplacement() {
21
+ return this.transform;
22
+ }
23
+ replace(plainText) {
24
+ plainText = plainText.replace(this.regularExpression, this.transform); ///
25
+ return plainText;
26
+ }
27
+ static revert(wordOrPhrase) {
28
+ wordOrPhrase = wordOrPhrase.replace(/_/g, _constants.SINGLE_SPACE);
29
+ return wordOrPhrase;
30
+ }
31
+ static fromPhrase(phrase) {
32
+ const regularExpression = new RegExp(phrase, _constants.GLOBAL_FLAG), transform = phrase.replace(/\s/g, _constants.UNDERSCORE), indexMatch = new IndexMatch(regularExpression, transform);
33
+ return indexMatch;
34
+ }
35
+ }
36
+
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC9tYXRjaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgVU5ERVJTQ09SRSwgR0xPQkFMX0ZMQUcsIFNJTkdMRV9TUEFDRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5kZXhNYXRjaCB7XG4gIGNvbnN0cnVjdG9yKHJlZ3VsYXJFeHByZXNzaW9uLCB0cmFuc2Zvcm0pIHtcbiAgICB0aGlzLnJlZ3VsYXJFeHByZXNzaW9uID0gcmVndWxhckV4cHJlc3Npb247XG4gICAgdGhpcy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07XG4gIH1cblxuICBnZXRSZWd1bGFyRXhwcmVzc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5yZWd1bGFyRXhwcmVzc2lvbjtcbiAgfVxuXG4gIGdldFJlcGxhY2VtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybTtcbiAgfVxuXG4gIHJlcGxhY2UocGxhaW5UZXh0KSB7XG4gICAgcGxhaW5UZXh0ID0gcGxhaW5UZXh0LnJlcGxhY2UodGhpcy5yZWd1bGFyRXhwcmVzc2lvbiwgdGhpcy50cmFuc2Zvcm0pOyAgLy8vXG5cbiAgICByZXR1cm4gcGxhaW5UZXh0O1xuICB9XG5cbiAgc3RhdGljIHJldmVydCh3b3JkT3JQaHJhc2UpIHtcbiAgICB3b3JkT3JQaHJhc2UgPSB3b3JkT3JQaHJhc2UucmVwbGFjZSgvXy9nLCBTSU5HTEVfU1BBQ0UpO1xuXG4gICAgcmV0dXJuIHdvcmRPclBocmFzZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUGhyYXNlKHBocmFzZSkge1xuICAgIGNvbnN0IHJlZ3VsYXJFeHByZXNzaW9uID0gbmV3IFJlZ0V4cChwaHJhc2UsIEdMT0JBTF9GTEFHKSxcbiAgICAgICAgICB0cmFuc2Zvcm0gPSBwaHJhc2UucmVwbGFjZSgvXFxzL2csIFVOREVSU0NPUkUpLFxuICAgICAgICAgIGluZGV4TWF0Y2ggPSBuZXcgSW5kZXhNYXRjaChyZWd1bGFyRXhwcmVzc2lvbiwgdHJhbnNmb3JtKTtcblxuICAgIHJldHVybiBpbmRleE1hdGNoO1xuICB9XG59XG4iXSwibmFtZXMiOlsiSW5kZXhNYXRjaCIsInJlZ3VsYXJFeHByZXNzaW9uIiwidHJhbnNmb3JtIiwiZ2V0UmVndWxhckV4cHJlc3Npb24iLCJnZXRSZXBsYWNlbWVudCIsInJlcGxhY2UiLCJwbGFpblRleHQiLCJyZXZlcnQiLCJ3b3JkT3JQaHJhc2UiLCJTSU5HTEVfU1BBQ0UiLCJmcm9tUGhyYXNlIiwicGhyYXNlIiwiUmVnRXhwIiwiR0xPQkFMX0ZMQUciLCJVTkRFUlNDT1JFIiwiaW5kZXhNYXRjaCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSUE7OztlQUFxQkE7OzsyQkFGaUM7QUFFdkMsTUFBTUE7SUFDbkIsWUFBWUMsaUJBQWlCLEVBQUVDLFNBQVMsQ0FBRTtRQUN4QyxJQUFJLENBQUNELGlCQUFpQixHQUFHQTtRQUN6QixJQUFJLENBQUNDLFNBQVMsR0FBR0E7SUFDbkI7SUFFQUMsdUJBQXVCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDRixpQkFBaUI7SUFDL0I7SUFFQUcsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUNGLFNBQVM7SUFDdkI7SUFFQUcsUUFBUUMsU0FBUyxFQUFFO1FBQ2pCQSxZQUFZQSxVQUFVRCxPQUFPLENBQUMsSUFBSSxDQUFDSixpQkFBaUIsRUFBRSxJQUFJLENBQUNDLFNBQVMsR0FBSSxHQUFHO1FBRTNFLE9BQU9JO0lBQ1Q7SUFFQSxPQUFPQyxPQUFPQyxZQUFZLEVBQUU7UUFDMUJBLGVBQWVBLGFBQWFILE9BQU8sQ0FBQyxNQUFNSSx1QkFBWTtRQUV0RCxPQUFPRDtJQUNUO0lBRUEsT0FBT0UsV0FBV0MsTUFBTSxFQUFFO1FBQ3hCLE1BQU1WLG9CQUFvQixJQUFJVyxPQUFPRCxRQUFRRSxzQkFBVyxHQUNsRFgsWUFBWVMsT0FBT04sT0FBTyxDQUFDLE9BQU9TLHFCQUFVLEdBQzVDQyxhQUFhLElBQUlmLFdBQVdDLG1CQUFtQkM7UUFFckQsT0FBT2E7SUFDVDtBQUNGIn0=