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.
- package/lib/attributeNames.js +38 -0
- package/lib/constants.js +86 -0
- package/lib/example/constants.js +38 -0
- package/lib/example/customEventTypes.js +46 -0
- package/lib/example/importer.js +100 -0
- package/lib/example/indexOptions.js +45 -0
- package/lib/example/view/button/page.js +54 -0
- package/lib/example/view/button/tab/css.js +33 -0
- package/lib/example/view/button/tab/html.js +33 -0
- package/lib/example/view/button/tab/markdown.js +33 -0
- package/lib/example/view/button/tab/markdownStyle.js +33 -0
- package/lib/example/view/button/tab/plainText.js +33 -0
- package/lib/example/view/button/tab/preview.js +33 -0
- package/lib/example/view/button/tab.js +56 -0
- package/lib/example/view/div/container/css.js +35 -0
- package/lib/example/view/div/container/html.js +37 -0
- package/lib/example/view/div/container/markdown.js +56 -0
- package/lib/example/view/div/container/markdownStyle.js +57 -0
- package/lib/example/view/div/container/plainText.js +35 -0
- package/lib/example/view/div/container/preview.js +41 -0
- package/lib/example/view/div/container.js +39 -0
- package/lib/example/view/div/html.js +37 -0
- package/lib/example/view/div/pageButtons.js +86 -0
- package/lib/example/view/div/preview.js +83 -0
- package/lib/example/view/div/sizeable/left.js +31 -0
- package/lib/example/view/div/tabButtons/left.js +61 -0
- package/lib/example/view/div/tabButtons/right.js +95 -0
- package/lib/example/view/div/tabButtons.js +34 -0
- package/lib/example/view/textarea/css.js +47 -0
- package/lib/example/view/textarea/markdown.js +47 -0
- package/lib/example/view/textarea/markdownStyle.js +47 -0
- package/lib/example/view/textarea/parseTree/css.js +39 -0
- package/lib/example/view/textarea/parseTree/html.js +39 -0
- package/lib/example/view/textarea/parseTree/markdown.js +36 -0
- package/lib/example/view/textarea/parseTree/markdownStyle.js +36 -0
- package/lib/example/view/textarea/parseTree.js +40 -0
- package/lib/example/view/textarea/plainText.js +50 -0
- package/lib/example/view/textarea.js +33 -0
- package/lib/example/view/xmp.js +49 -0
- package/lib/example/view.js +309 -0
- package/lib/example.js +26 -0
- package/lib/index/item.js +40 -0
- package/lib/index/list.js +55 -0
- package/lib/index/match.js +37 -0
- package/lib/index.js +147 -0
- package/lib/letters.js +41 -0
- package/lib/map/className.js +19 -0
- package/lib/map/node/css.js +76 -0
- package/lib/map/node/html.js +142 -0
- package/lib/map/nonTerminalNode/markdown.js +89 -0
- package/lib/map/nonTerminalNode/markdownStyle.js +63 -0
- package/lib/map/tagName.js +19 -0
- package/lib/markdown/bnf.js +362 -0
- package/lib/markdown/entries.js +81 -0
- package/lib/markdown/lexer.js +41 -0
- package/lib/markdown/parser.js +36 -0
- package/lib/markdownStyle/bnf.js +89 -0
- package/lib/markdownStyle/entries.js +53 -0
- package/lib/markdownStyle/lexer.js +41 -0
- package/lib/markdownStyle/parser.js +36 -0
- package/lib/mixins/node.js +145 -0
- package/lib/mixins/token.js +43 -0
- package/lib/node/css/amount.js +34 -0
- package/lib/node/css/argument.js +26 -0
- package/lib/node/css/arguments.js +32 -0
- package/lib/node/css/class.js +32 -0
- package/lib/node/css/colour.js +34 -0
- package/lib/node/css/content.js +30 -0
- package/lib/node/css/declaration.js +37 -0
- package/lib/node/css/identifier.js +34 -0
- package/lib/node/css/name.js +32 -0
- package/lib/node/css/pseudoClass.js +32 -0
- package/lib/node/css/ruleName.js +65 -0
- package/lib/node/css/ruleSet.js +65 -0
- package/lib/node/css/selector.js +26 -0
- package/lib/node/css/selectors.js +37 -0
- package/lib/node/css/selectorsList.js +40 -0
- package/lib/node/css/string.js +34 -0
- package/lib/node/css/target.js +26 -0
- package/lib/node/css/topmost.js +93 -0
- package/lib/node/css/value.js +31 -0
- package/lib/node/css/values.js +34 -0
- package/lib/node/css/verbatim.js +38 -0
- package/lib/node/css.js +89 -0
- package/lib/node/html/anchor/contents.js +26 -0
- package/lib/node/html/anchor/footnote.js +26 -0
- package/lib/node/html/anchor/index.js +26 -0
- package/lib/node/html/anchor.js +56 -0
- package/lib/node/html/container.js +43 -0
- package/lib/node/html/directive/contents.js +26 -0
- package/lib/node/html/directive/footnotes.js +26 -0
- package/lib/node/html/directive/index.js +26 -0
- package/lib/node/html/directive/pageNumber.js +26 -0
- package/lib/node/html/directive.js +41 -0
- package/lib/node/html/division.js +149 -0
- package/lib/node/html/error.js +59 -0
- package/lib/node/html/footnote.js +58 -0
- package/lib/node/html/heading/index.js +81 -0
- package/lib/node/html/heading/primary.js +30 -0
- package/lib/node/html/heading/quaternary.js +30 -0
- package/lib/node/html/heading/secondary.js +30 -0
- package/lib/node/html/heading/tertiary.js +30 -0
- package/lib/node/html/heading.js +56 -0
- package/lib/node/html/image.js +95 -0
- package/lib/node/html/item/contents.js +38 -0
- package/lib/node/html/item/footnote.js +39 -0
- package/lib/node/html/item/index.js +57 -0
- package/lib/node/html/item/ordered.js +41 -0
- package/lib/node/html/item/unordered.js +28 -0
- package/lib/node/html/line/block.js +33 -0
- package/lib/node/html/line.js +113 -0
- package/lib/node/html/link/contents.js +54 -0
- package/lib/node/html/link/email.js +111 -0
- package/lib/node/html/link/footnote.js +114 -0
- package/lib/node/html/link/hyper.js +111 -0
- package/lib/node/html/link/index.js +88 -0
- package/lib/node/html/list/contents.js +38 -0
- package/lib/node/html/list/footnotes.js +58 -0
- package/lib/node/html/list/index.js +38 -0
- package/lib/node/html/list/ordered.js +28 -0
- package/lib/node/html/list/unordered.js +28 -0
- package/lib/node/html/listing/block.js +55 -0
- package/lib/node/html/listing/inline.js +55 -0
- package/lib/node/html/pageNumber.js +86 -0
- package/lib/node/html/paragraph.js +28 -0
- package/lib/node/html/reference.js +28 -0
- package/lib/node/html/table.js +28 -0
- package/lib/node/html/tableBody.js +28 -0
- package/lib/node/html/tableBodyCell.js +28 -0
- package/lib/node/html/tableBodyRow.js +28 -0
- package/lib/node/html/tableHead.js +28 -0
- package/lib/node/html/tableHeadCell.js +28 -0
- package/lib/node/html/tableHeadRow.js +28 -0
- package/lib/node/html/text/block.js +28 -0
- package/lib/node/html/text/comma.js +39 -0
- package/lib/node/html/text/emphasised.js +32 -0
- package/lib/node/html/text/index.js +46 -0
- package/lib/node/html/text/inline.js +52 -0
- package/lib/node/html/text/plain.js +28 -0
- package/lib/node/html/text/strong.js +32 -0
- package/lib/node/html/text/stronglyEmphasised.js +87 -0
- package/lib/node/html/text/xml.js +34 -0
- package/lib/node/html/text.js +42 -0
- package/lib/node/html/topmost.js +125 -0
- package/lib/node/html/xmlElement/complex.js +35 -0
- package/lib/node/html/xmlElement/simple.js +34 -0
- package/lib/node/html/xmlElement.js +125 -0
- package/lib/node/html.js +282 -0
- package/lib/node/markdown/blockEnd.js +23 -0
- package/lib/node/markdown/blockStart.js +49 -0
- package/lib/node/markdown/className.js +30 -0
- package/lib/node/markdown/container.js +36 -0
- package/lib/node/markdown/directive/embed.js +60 -0
- package/lib/node/markdown/directive/include.js +59 -0
- package/lib/node/markdown/division.js +91 -0
- package/lib/node/markdown/document.js +62 -0
- package/lib/node/markdown/error.js +30 -0
- package/lib/node/markdown/footnote.js +30 -0
- package/lib/node/markdown/hyperlink.js +58 -0
- package/lib/node/markdown/image.js +30 -0
- package/lib/node/markdown/item/ordered.js +36 -0
- package/lib/node/markdown/languageName.js +30 -0
- package/lib/node/markdown/link/email.js +58 -0
- package/lib/node/markdown/link/footnote.js +32 -0
- package/lib/node/markdown/listng/block.js +37 -0
- package/lib/node/markdown/listng/inline.js +36 -0
- package/lib/node/markdown/path.js +30 -0
- package/lib/node/markdown/reference.js +36 -0
- package/lib/node/markdown/releaseName.js +30 -0
- package/lib/node/markdown/subDivision.js +53 -0
- package/lib/node/markdown/text/block.js +23 -0
- package/lib/node/markdown/text/plain.js +23 -0
- package/lib/node/markdown/text/xml.js +23 -0
- package/lib/node/markdown/text.js +66 -0
- package/lib/node/markdown/xmlAttribute.js +45 -0
- package/lib/node/markdown/xmlAttributeName.js +32 -0
- package/lib/node/markdown/xmlAttributeValue.js +31 -0
- package/lib/node/markdown/xmlElement/complex.js +23 -0
- package/lib/node/markdown/xmlElement/simple.js +23 -0
- package/lib/node/markdown/xmlElement.js +51 -0
- package/lib/node/markdown/xmlTag/complete.js +23 -0
- package/lib/node/markdown/xmlTag/end.js +35 -0
- package/lib/node/markdown/xmlTag/start.js +23 -0
- package/lib/node/markdown/xmlTag.js +57 -0
- package/lib/node/markdown/xmlTagName.js +32 -0
- package/lib/node/markdown.js +67 -0
- package/lib/node/markdownStyle/amount.js +31 -0
- package/lib/node/markdownStyle/argument.js +23 -0
- package/lib/node/markdownStyle/arguments.js +23 -0
- package/lib/node/markdownStyle/colour.js +30 -0
- package/lib/node/markdownStyle/content.js +39 -0
- package/lib/node/markdownStyle/declaration.js +23 -0
- package/lib/node/markdownStyle/document.js +23 -0
- package/lib/node/markdownStyle/error.js +23 -0
- package/lib/node/markdownStyle/identifier.js +31 -0
- package/lib/node/markdownStyle/name.js +23 -0
- package/lib/node/markdownStyle/nonsense.js +23 -0
- package/lib/node/markdownStyle/pseudoClass.js +23 -0
- package/lib/node/markdownStyle/ruleName.js +30 -0
- package/lib/node/markdownStyle/ruleSet.js +23 -0
- package/lib/node/markdownStyle/selector.js +23 -0
- package/lib/node/markdownStyle/selectors.js +23 -0
- package/lib/node/markdownStyle/selectorsList.js +23 -0
- package/lib/node/markdownStyle/string.js +30 -0
- package/lib/node/markdownStyle/value.js +23 -0
- package/lib/node/markdownStyle/values.js +23 -0
- package/lib/node/markdownStyle/verbatim.js +23 -0
- package/lib/node/markdownStyle.js +36 -0
- package/lib/prepends.js +26 -0
- package/lib/queries/markdown.js +20 -0
- package/lib/queries/markdownStyle.js +20 -0
- package/lib/ruleNames/markdown.js +435 -0
- package/lib/ruleNames/markdownStyle.js +135 -0
- package/lib/style/defaultMarkdown.js +258 -0
- package/lib/style/font.js +65 -0
- package/lib/styleElement/markdown/default.js +36 -0
- package/lib/styleElement/markdown.js +86 -0
- package/lib/styleElement.js +56 -0
- package/lib/tokenTypes.js +110 -0
- package/lib/transform/css/ruleSet.js +33 -0
- package/lib/transform/css/selectors.js +35 -0
- package/lib/transform/css/selectorsList.js +51 -0
- package/lib/transform/css.js +57 -0
- package/lib/transform/html/anchor/index.js +29 -0
- package/lib/transform/html/division.js +36 -0
- package/lib/transform/html/footnote.js +43 -0
- package/lib/transform/html/heading/index.js +25 -0
- package/lib/transform/html/index.js +64 -0
- package/lib/transform/html/item/contents.js +42 -0
- package/lib/transform/html/item/footnote.js +29 -0
- package/lib/transform/html/item/index.js +29 -0
- package/lib/transform/html/line.js +28 -0
- package/lib/transform/html/link/contents.js +39 -0
- package/lib/transform/html/link/footnote.js +54 -0
- package/lib/transform/html/list/contents.js +66 -0
- package/lib/transform/html/list/footnotes.js +38 -0
- package/lib/transform/html/list/index.js +34 -0
- package/lib/transform/html/pageNumber.js +33 -0
- package/lib/transform/html.js +44 -0
- package/lib/transform/markdown/directive/embed.js +28 -0
- package/lib/transform/markdown/directive/ignore.js +24 -0
- package/lib/transform/markdown/directive/include.js +34 -0
- package/lib/transform/markdown/subDivision.js +24 -0
- package/lib/transform/markdown.js +21 -0
- package/lib/utilities/contents.js +101 -0
- package/lib/utilities/css.js +53 -0
- package/lib/utilities/dom.js +58 -0
- package/lib/utilities/element.js +26 -0
- package/lib/utilities/entities.js +17 -0
- package/lib/utilities/entries.js +24 -0
- package/lib/utilities/grammar.js +160 -0
- package/lib/utilities/html.js +86 -0
- package/lib/utilities/index.js +250 -0
- package/lib/utilities/jsx.js +59 -0
- package/lib/utilities/markdown.js +61 -0
- package/lib/utilities/markdownStyle.js +13 -0
- package/lib/utilities/object.js +65 -0
- package/lib/utilities/query.js +64 -0
- package/lib/utilities/string.js +51 -0
- package/lib/utilities/stringLiteral.js +16 -0
- 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=
|