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.
Files changed (40) hide show
  1. package/example.js +2062 -138
  2. package/lib/customEventTypes.js +26 -0
  3. package/lib/defaultMarkdownStyle.js +2 -2
  4. package/lib/example/view/button/tab/markdown.js +167 -0
  5. package/lib/example/view/button/tab/markdownStyle.js +167 -0
  6. package/lib/example/view/button/tab.js +135 -0
  7. package/lib/example/view/div/container/markdown.js +192 -0
  8. package/lib/example/view/div/container/markdownStyle.js +193 -0
  9. package/lib/example/view/div/container.js +189 -0
  10. package/lib/example/view/div/preview.js +1 -1
  11. package/lib/example/view/div/sizeable/left.js +2 -2
  12. package/lib/example/view/div/tabButtons.js +260 -0
  13. package/lib/example/view/textarea/css.js +10 -10
  14. package/lib/example/view/textarea/markdown.js +2 -2
  15. package/lib/example/view/textarea/markdownStyle.js +2 -2
  16. package/lib/example/view/textarea/parseTree/markdown.js +140 -0
  17. package/lib/example/view/textarea/parseTree/markdownStyle.js +140 -0
  18. package/lib/example/view/textarea/parseTree.js +177 -0
  19. package/lib/example/view/xmp.js +1 -1
  20. package/lib/example/view.js +46 -12
  21. package/package.json +1 -1
  22. package/src/customEventTypes.js +5 -0
  23. package/src/defaultMarkdownStyle.js +5 -1
  24. package/src/example/view/button/tab/markdown.js +37 -0
  25. package/src/example/view/button/tab/markdownStyle.js +35 -0
  26. package/src/example/view/button/tab.js +33 -0
  27. package/src/example/view/div/container/markdown.js +33 -0
  28. package/src/example/view/div/container/markdownStyle.js +35 -0
  29. package/src/example/view/div/container.js +32 -0
  30. package/src/example/view/div/preview.js +1 -1
  31. package/src/example/view/div/sizeable/left.js +1 -1
  32. package/src/example/view/div/tabButtons.js +73 -0
  33. package/src/example/view/textarea/css.js +2 -2
  34. package/src/example/view/textarea/markdown.js +1 -0
  35. package/src/example/view/textarea/markdownStyle.js +2 -1
  36. package/src/example/view/textarea/parseTree/markdown.js +19 -0
  37. package/src/example/view/textarea/parseTree/markdownStyle.js +19 -0
  38. package/src/example/view/textarea/parseTree.js +44 -0
  39. package/src/example/view/xmp.js +1 -1
  40. 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 CSSTreeTextarea extends Textarea {
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(CSSTreeTextarea)`
29
+ export default withStyle(CSSTextarea)`
30
30
 
31
31
  height: 24rem;
32
32
 
@@ -36,6 +36,7 @@ class MarkdownTextarea extends Textarea {
36
36
 
37
37
  export default withStyle(MarkdownTextarea)`
38
38
 
39
+ width: 100%;
39
40
  height: 24rem;
40
41
 
41
42
  `;
@@ -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
+ `;
@@ -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 { Element } from "easy";
6
6
 
@@ -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 MarkdownTextarea from "./view/textarea/markdown";
15
- import MarkdownStyleTextarea from "./view/textarea/markdownStyle";
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
- keyUpHandler = (event, element) => {
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
- <SubHeading>
101
- Markdown
102
- </SubHeading>
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 = `https://occam.science
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";