highmark-markdown 0.0.273 → 0.0.277
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/example.js +2062 -138
- package/lib/customEventTypes.js +26 -0
- package/lib/defaultMarkdownStyle.js +2 -2
- package/lib/example/view/button/tab/markdown.js +167 -0
- package/lib/example/view/button/tab/markdownStyle.js +167 -0
- package/lib/example/view/button/tab.js +135 -0
- package/lib/example/view/div/container/markdown.js +192 -0
- package/lib/example/view/div/container/markdownStyle.js +193 -0
- package/lib/example/view/div/container.js +189 -0
- package/lib/example/view/div/preview.js +1 -1
- package/lib/example/view/div/sizeable/left.js +2 -2
- package/lib/example/view/div/tabButtons.js +260 -0
- package/lib/example/view/textarea/css.js +10 -10
- package/lib/example/view/textarea/markdown.js +2 -2
- package/lib/example/view/textarea/markdownStyle.js +2 -2
- package/lib/example/view/textarea/parseTree/markdown.js +140 -0
- package/lib/example/view/textarea/parseTree/markdownStyle.js +140 -0
- package/lib/example/view/textarea/parseTree.js +177 -0
- package/lib/example/view/xmp.js +1 -1
- package/lib/example/view.js +46 -12
- package/package.json +1 -1
- package/src/customEventTypes.js +5 -0
- package/src/defaultMarkdownStyle.js +5 -1
- package/src/example/view/button/tab/markdown.js +37 -0
- package/src/example/view/button/tab/markdownStyle.js +35 -0
- package/src/example/view/button/tab.js +33 -0
- package/src/example/view/div/container/markdown.js +33 -0
- package/src/example/view/div/container/markdownStyle.js +35 -0
- package/src/example/view/div/container.js +32 -0
- package/src/example/view/div/preview.js +1 -1
- package/src/example/view/div/sizeable/left.js +1 -1
- package/src/example/view/div/tabButtons.js +73 -0
- package/src/example/view/textarea/css.js +2 -2
- package/src/example/view/textarea/markdown.js +1 -0
- package/src/example/view/textarea/markdownStyle.js +2 -1
- package/src/example/view/textarea/parseTree/markdown.js +19 -0
- package/src/example/view/textarea/parseTree/markdownStyle.js +19 -0
- package/src/example/view/textarea/parseTree.js +44 -0
- package/src/example/view/xmp.js +1 -1
- package/src/example/view.js +54 -17
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import withStyle from "easy-with-style"; ///
|
|
4
|
+
|
|
5
|
+
import { Element } from "easy";
|
|
6
|
+
|
|
7
|
+
import MarkdownTabButton from "../button/tab/markdown";
|
|
8
|
+
import MarkdownStyleTabButton from "../button/tab/markdownStyle";
|
|
9
|
+
|
|
10
|
+
import { MARKDOWN_CUSTOM_EVENT_TYPE, MARKDOWN_STYLE_CUSTOM_EVENT_TYPE } from "../../../customEventTypes";
|
|
11
|
+
|
|
12
|
+
class TabButtonsDiv extends Element {
|
|
13
|
+
markdownStyleTabButtonClickHandler = (event, element) => {
|
|
14
|
+
this.markdownStyle(event, element);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
markdownTabButtonClickHandler = (event, element) => {
|
|
18
|
+
this.markdown(event, element);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
markdownStyle(event = null, element = null) {
|
|
22
|
+
this.enableMarkdownTabButton();
|
|
23
|
+
this.disableMarkdownStyleTabButton();
|
|
24
|
+
|
|
25
|
+
const eventType = MARKDOWN_STYLE_CUSTOM_EVENT_TYPE;
|
|
26
|
+
|
|
27
|
+
this.callCustomHandlers(eventType, event, element);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
markdown(event = null, element = null) {
|
|
31
|
+
this.disableMarkdownTabButton();
|
|
32
|
+
this.enableMarkdownStyleTabButton();
|
|
33
|
+
|
|
34
|
+
const eventType = MARKDOWN_CUSTOM_EVENT_TYPE;
|
|
35
|
+
|
|
36
|
+
this.callCustomHandlers(eventType, event, element);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
didMount() {
|
|
40
|
+
this.markdown();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
willUnmount() {
|
|
44
|
+
///
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
childElements() {
|
|
48
|
+
return ([
|
|
49
|
+
|
|
50
|
+
<MarkdownTabButton onClick={this.markdownTabButtonClickHandler} />,
|
|
51
|
+
<MarkdownStyleTabButton onClick={this.markdownStyleTabButtonClickHandler} />
|
|
52
|
+
|
|
53
|
+
]);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
initialise() {
|
|
57
|
+
this.assignContext();
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
static tagName = "div";
|
|
61
|
+
|
|
62
|
+
static defaultProperties = {
|
|
63
|
+
className: "tab-buttons"
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export default withStyle(TabButtonsDiv)`
|
|
68
|
+
|
|
69
|
+
display: grid;
|
|
70
|
+
grid-template-rows: auto;
|
|
71
|
+
grid-template-columns: 1fr 1fr;
|
|
72
|
+
|
|
73
|
+
`;
|
|
@@ -4,7 +4,7 @@ import withStyle from "easy-with-style"; ///
|
|
|
4
4
|
|
|
5
5
|
import Textarea from "../textarea";
|
|
6
6
|
|
|
7
|
-
class
|
|
7
|
+
class CSSTextarea extends Textarea {
|
|
8
8
|
setCSS(css) {
|
|
9
9
|
const value = css; ///
|
|
10
10
|
|
|
@@ -26,7 +26,7 @@ class CSSTreeTextarea extends Textarea {
|
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
export default withStyle(
|
|
29
|
+
export default withStyle(CSSTextarea)`
|
|
30
30
|
|
|
31
31
|
height: 24rem;
|
|
32
32
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import withStyle from "easy-with-style";
|
|
3
|
+
import withStyle from "easy-with-style"; ///
|
|
4
4
|
|
|
5
5
|
import Textarea from "../textarea";
|
|
6
6
|
|
|
@@ -36,6 +36,7 @@ class MarkdownStyleTextarea extends Textarea {
|
|
|
36
36
|
|
|
37
37
|
export default withStyle(MarkdownStyleTextarea)`
|
|
38
38
|
|
|
39
|
+
width: 100%;
|
|
39
40
|
height: 24rem;
|
|
40
41
|
|
|
41
42
|
`;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import ParseTreeTextarea from "../../textarea/parseTree";
|
|
4
|
+
|
|
5
|
+
export default class MarkdownParseTreeTextarea extends ParseTreeTextarea {
|
|
6
|
+
parentContext() {
|
|
7
|
+
const clearMarkdownParseTreeTextarea = this.clear.bind(this), ///
|
|
8
|
+
updateMarkdownParseTreeTextarea = this.update.bind(this); ///
|
|
9
|
+
|
|
10
|
+
return ({
|
|
11
|
+
clearMarkdownParseTreeTextarea,
|
|
12
|
+
updateMarkdownParseTreeTextarea
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
static defaultProperties = {
|
|
17
|
+
className: "markdown"
|
|
18
|
+
};
|
|
19
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import ParseTreeTextarea from "../../textarea/parseTree";
|
|
4
|
+
|
|
5
|
+
export default class MarkdownStyleParseTreeTextarea extends ParseTreeTextarea {
|
|
6
|
+
parentContext() {
|
|
7
|
+
const clearMarkdownStyleParseTreeTextarea = this.clear.bind(this), ///
|
|
8
|
+
updateMarkdownStyleParseTreeTextarea = this.update.bind(this); ///
|
|
9
|
+
|
|
10
|
+
return ({
|
|
11
|
+
clearMarkdownStyleParseTreeTextarea,
|
|
12
|
+
updateMarkdownStyleParseTreeTextarea
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
static defaultProperties = {
|
|
17
|
+
className: "markdown-style"
|
|
18
|
+
};
|
|
19
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import withStyle from "easy-with-style"; ///
|
|
4
|
+
|
|
5
|
+
import Textarea from "../textarea";
|
|
6
|
+
|
|
7
|
+
import { EMPTY_STRING } from "../../constants";
|
|
8
|
+
|
|
9
|
+
class ParseTreeTextarea extends Textarea {
|
|
10
|
+
update(parseTree) {
|
|
11
|
+
const parseTreeString = parseTree.asString(),
|
|
12
|
+
value = parseTreeString; ///
|
|
13
|
+
|
|
14
|
+
this.setValue(value);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
clear() {
|
|
18
|
+
const value = EMPTY_STRING;
|
|
19
|
+
|
|
20
|
+
this.setValue(value);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
parentContext() {
|
|
24
|
+
const setCSS = this.setCSS.bind(this);
|
|
25
|
+
|
|
26
|
+
return ({
|
|
27
|
+
setCSS
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
static defaultProperties = {
|
|
32
|
+
readOnly: true,
|
|
33
|
+
className: "parse-tree",
|
|
34
|
+
spellCheck: "false"
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export default withStyle(ParseTreeTextarea)`
|
|
39
|
+
|
|
40
|
+
width: 100%;
|
|
41
|
+
height: 48rem;
|
|
42
|
+
margin-top: 1rem;
|
|
43
|
+
|
|
44
|
+
`;
|
package/src/example/view/xmp.js
CHANGED
package/src/example/view.js
CHANGED
|
@@ -3,22 +3,33 @@
|
|
|
3
3
|
import withStyle from "easy-with-style"; ///
|
|
4
4
|
|
|
5
5
|
import { Element } from "easy";
|
|
6
|
-
import { MarkdownLexer, MarkdownParser } from "../index";
|
|
7
6
|
import { RowsDiv, ColumnDiv, ColumnsDiv, VerticalSplitterDiv } from "easy-layout";
|
|
7
|
+
import { MarkdownLexer, MarkdownParser, MarkdownStyleLexer, MarkdownStyleParser } from "../index";
|
|
8
8
|
|
|
9
9
|
import XMP from "./view/xmp";
|
|
10
10
|
import PreviewDiv from "./view/div/preview";
|
|
11
11
|
import SubHeading from "./view/subHeading";
|
|
12
12
|
import CSSTextarea from "./view/textarea/css";
|
|
13
|
+
import TabButtonsDiv from "./view/div/tabButtons";
|
|
13
14
|
import LeftSizeableDiv from "./view/div/sizeable/left";
|
|
14
|
-
import
|
|
15
|
-
import
|
|
15
|
+
import MarkdownContainerDiv from "./view/div/container/markdown";
|
|
16
|
+
import MarkdownStyleContainerDiv from "./view/div/container/markdownStyle";
|
|
16
17
|
|
|
17
18
|
const markdownLexer = MarkdownLexer.fromNothing(),
|
|
18
|
-
markdownParser = MarkdownParser.fromNothing()
|
|
19
|
+
markdownParser = MarkdownParser.fromNothing(),
|
|
20
|
+
markdownStyleLexer = MarkdownStyleLexer.fromNothing(),
|
|
21
|
+
markdownStyleParser = MarkdownStyleParser.fromNothing();
|
|
19
22
|
|
|
20
23
|
class View extends Element {
|
|
21
|
-
|
|
24
|
+
markdownStyleCustomHandler = (event, element) => {
|
|
25
|
+
this.markdownStyle();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
markdownCustomHandler = (event, element) => {
|
|
29
|
+
this.markdown();
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
keyUpCustomHandler = (event, element) => {
|
|
22
33
|
this.update();
|
|
23
34
|
}
|
|
24
35
|
|
|
@@ -28,13 +39,27 @@ class View extends Element {
|
|
|
28
39
|
css = markdownStyleElement.update(markdownStyle);
|
|
29
40
|
|
|
30
41
|
this.setCSS(css);
|
|
42
|
+
|
|
43
|
+
const lexer = markdownStyleLexer, ///
|
|
44
|
+
parser = markdownStyleParser, ///
|
|
45
|
+
content = markdownStyle, ///
|
|
46
|
+
tokens = lexer.tokenise(content),
|
|
47
|
+
node = parser.parse(tokens);
|
|
48
|
+
|
|
49
|
+
if (node !== null) {
|
|
50
|
+
const parseTree = node.asParseTree(tokens);
|
|
51
|
+
|
|
52
|
+
this.updateMarkdownStyleParseTreeTextarea(parseTree);
|
|
53
|
+
} else {
|
|
54
|
+
this.clearMarkdownStyleParseTreeTextarea();
|
|
55
|
+
}
|
|
31
56
|
}
|
|
32
57
|
|
|
33
58
|
updateMarkdown() {
|
|
34
59
|
const markdown = this.getMarkdown(),
|
|
60
|
+
lexer = markdownLexer, ///
|
|
61
|
+
parser = markdownParser, ///
|
|
35
62
|
content = markdown, ///
|
|
36
|
-
lexer = markdownLexer,
|
|
37
|
-
parser = markdownParser,
|
|
38
63
|
tokens = lexer.tokenise(content),
|
|
39
64
|
node = parser.parse(tokens);
|
|
40
65
|
|
|
@@ -80,13 +105,29 @@ class View extends Element {
|
|
|
80
105
|
this.updateXMP(htmls);
|
|
81
106
|
|
|
82
107
|
this.updatePreviewDiv(domElements);
|
|
108
|
+
|
|
109
|
+
const parseTree = node.asParseTree(tokens);
|
|
110
|
+
|
|
111
|
+
this.updateMarkdownParseTreeTextarea(parseTree);
|
|
83
112
|
} else {
|
|
84
113
|
this.clearXMP();
|
|
85
114
|
|
|
86
115
|
this.clearPreviewDiv();
|
|
116
|
+
|
|
117
|
+
this.clearMarkdownParseTreeTextarea();
|
|
87
118
|
}
|
|
88
119
|
}
|
|
89
120
|
|
|
121
|
+
markdownStyle() {
|
|
122
|
+
this.hideMarkdownContainerDiv();
|
|
123
|
+
this.showMarkdownStyleContainerDiv();
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
markdown() {
|
|
127
|
+
this.showMarkdownContainerDiv();
|
|
128
|
+
this.hideMarkdownStyleContainerDiv();
|
|
129
|
+
}
|
|
130
|
+
|
|
90
131
|
update() {
|
|
91
132
|
this.updateMarkdown();
|
|
92
133
|
this.updateMarkdownStyle();
|
|
@@ -97,14 +138,9 @@ class View extends Element {
|
|
|
97
138
|
|
|
98
139
|
<ColumnsDiv>
|
|
99
140
|
<LeftSizeableDiv>
|
|
100
|
-
<
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
<MarkdownTextarea onKeyUp={this.keyUpHandler} />
|
|
104
|
-
<SubHeading>
|
|
105
|
-
Markdown style
|
|
106
|
-
</SubHeading>
|
|
107
|
-
<MarkdownStyleTextarea onKeyUp={this.keyUpHandler} />
|
|
141
|
+
<TabButtonsDiv onCustomMarkdown={this.markdownCustomHandler} onCustomMarkdownStyle={this.markdownStyleCustomHandler} />
|
|
142
|
+
<MarkdownContainerDiv onCustomKeyUp={this.keyUpCustomHandler} />
|
|
143
|
+
<MarkdownStyleContainerDiv onCustomKeyUp={this.keyUpCustomHandler} />
|
|
108
144
|
</LeftSizeableDiv>
|
|
109
145
|
<VerticalSplitterDiv/>
|
|
110
146
|
<ColumnDiv>
|
|
@@ -145,8 +181,9 @@ class View extends Element {
|
|
|
145
181
|
static initialMarkdownStyle = `min-height: initial;
|
|
146
182
|
`;
|
|
147
183
|
|
|
148
|
-
static initialMarkdown =
|
|
149
|
-
|
|
184
|
+
static initialMarkdown = `\`\`\`
|
|
185
|
+
git clone git\\@github.com:djalbat/the-occam-user-manual.git
|
|
186
|
+
\`\`\`
|
|
150
187
|
`;
|
|
151
188
|
|
|
152
189
|
static tagName = "div";
|