yapp 4.0.227 → 4.0.229
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/README.md +4 -4
- package/example.js +1049 -1008
- package/lib/customEventTypes.js +13 -0
- package/lib/div/{overlay.js → pretty.js} +17 -17
- package/lib/example/view.js +3 -3
- package/lib/prettyPrinter.js +19 -13
- package/lib/richTextarea.js +5 -4
- package/lib/yapp.js +16 -12
- package/package.json +2 -2
- package/src/customEventTypes.js +3 -0
- package/src/div/{overlay.js → pretty.js} +8 -8
- package/src/example/view.js +2 -2
- package/src/prettyPrinter.js +26 -14
- package/src/richTextarea.js +5 -3
- package/src/yapp.js +27 -22
package/src/prettyPrinter.js
CHANGED
|
@@ -3,42 +3,54 @@
|
|
|
3
3
|
import withStyle from "easy-with-style"; ///
|
|
4
4
|
|
|
5
5
|
import { React, Element } from "easy";
|
|
6
|
+
import { customEventTypes } from "easy-richtextarea";
|
|
6
7
|
|
|
7
8
|
import GutterDiv from "./div/gutter";
|
|
8
|
-
import
|
|
9
|
+
import PrettyDiv from "./div/pretty";
|
|
9
10
|
import RichTextarea from "./richTextarea";
|
|
10
11
|
|
|
11
12
|
import { getScrollbarThickness } from "./utilities/scrollbar";
|
|
12
13
|
|
|
14
|
+
const { CHANGE_CUSTOM_EVENT_TYPE } = customEventTypes;
|
|
15
|
+
|
|
13
16
|
class PrettyPrinter extends Element {
|
|
14
|
-
|
|
17
|
+
customChangeHandler = (event, element) => {
|
|
18
|
+
const customEventType = CHANGE_CUSTOM_EVENT_TYPE; ///
|
|
19
|
+
|
|
20
|
+
this.callCustomHandlers(customEventType);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
customScrollHandler = (event, element) => {
|
|
15
24
|
const richTextarea = element, ///
|
|
16
25
|
scrollTop = richTextarea.getScrollTop(),
|
|
17
26
|
scrollLeft = richTextarea.getScrollLeft();
|
|
18
27
|
|
|
19
28
|
this.scrollGutterDiv(scrollTop ,scrollLeft);
|
|
20
29
|
|
|
21
|
-
this.
|
|
30
|
+
this.scrollPrettyDiv(scrollTop, scrollLeft);
|
|
22
31
|
}
|
|
23
32
|
|
|
24
33
|
update(tokens) {
|
|
25
34
|
this.updateGutterDiv(tokens);
|
|
26
|
-
|
|
27
|
-
this.updateOverlayDiv(tokens);
|
|
35
|
+
this.updatePrettyDiv(tokens);
|
|
28
36
|
}
|
|
29
37
|
|
|
30
38
|
childElements() {
|
|
31
|
-
const { editable,
|
|
32
|
-
|
|
39
|
+
const { editable, hiddenGutter, fancyScrollbars, hiddenScrollbars } = this.properties,
|
|
40
|
+
scrollbarThickness = getScrollbarThickness(hiddenScrollbars, fancyScrollbars),
|
|
33
41
|
readOnly = !editable,
|
|
34
|
-
|
|
35
|
-
scrollbarThickness = getScrollbarThickness(hiddenScrollbars, fancyScrollbars);
|
|
42
|
+
hidden = hiddenGutter; ///
|
|
36
43
|
|
|
37
44
|
return ([
|
|
38
45
|
|
|
39
46
|
<GutterDiv hidden={hidden} />,
|
|
40
|
-
<
|
|
41
|
-
<RichTextarea
|
|
47
|
+
<PrettyDiv scrollbarThickness={scrollbarThickness} />,
|
|
48
|
+
<RichTextarea readOnly={readOnly}
|
|
49
|
+
fancyScrollbars={fancyScrollbars}
|
|
50
|
+
hiddenScrollbars={hiddenScrollbars}
|
|
51
|
+
onCustomChange={this.customChangeHandler}
|
|
52
|
+
onCustomScroll={this.customScrollHandler}
|
|
53
|
+
/>
|
|
42
54
|
|
|
43
55
|
]);
|
|
44
56
|
}
|
|
@@ -57,8 +69,8 @@ class PrettyPrinter extends Element {
|
|
|
57
69
|
this.assignContext([
|
|
58
70
|
"updateGutterDiv",
|
|
59
71
|
"scrollGutterDiv",
|
|
60
|
-
"
|
|
61
|
-
"
|
|
72
|
+
"updatePrettyDiv",
|
|
73
|
+
"scrollPrettyDiv"
|
|
62
74
|
]);
|
|
63
75
|
}
|
|
64
76
|
|
|
@@ -84,7 +96,7 @@ export default withStyle(PrettyPrinter)`
|
|
|
84
96
|
display: grid;
|
|
85
97
|
overflow: hidden;
|
|
86
98
|
grid-template-rows: auto;
|
|
87
|
-
grid-template-areas: "gutter
|
|
99
|
+
grid-template-areas: "gutter pretty-rich-textarea";
|
|
88
100
|
grid-template-columns: min-content auto;
|
|
89
101
|
|
|
90
102
|
color: inherit;
|
package/src/richTextarea.js
CHANGED
|
@@ -39,13 +39,15 @@ export default withStyle(class extends RichTextarea {
|
|
|
39
39
|
const getContent = this.getContent.bind(this), ///
|
|
40
40
|
activateRichTextarea = this.activate.bind(this), ///
|
|
41
41
|
getRichTextareaContent = this.getContent.bind(this), ///
|
|
42
|
-
setRichTextareaContent = this.setContent.bind(this)
|
|
42
|
+
setRichTextareaContent = this.setContent.bind(this), ///
|
|
43
|
+
hasRichTextareaContentChanged = this.hasContentChanged.bind(this); ///
|
|
43
44
|
|
|
44
45
|
return ({
|
|
45
46
|
getContent,
|
|
46
47
|
activateRichTextarea,
|
|
47
48
|
getRichTextareaContent,
|
|
48
|
-
setRichTextareaContent
|
|
49
|
+
setRichTextareaContent,
|
|
50
|
+
hasRichTextareaContentChanged
|
|
49
51
|
});
|
|
50
52
|
}
|
|
51
53
|
|
|
@@ -69,7 +71,7 @@ export default withStyle(class extends RichTextarea {
|
|
|
69
71
|
tab-size: 2;
|
|
70
72
|
overflow: scroll;
|
|
71
73
|
position: relative;
|
|
72
|
-
grid-area:
|
|
74
|
+
grid-area: pretty-rich-textarea;
|
|
73
75
|
white-space: pre;
|
|
74
76
|
overflow-wrap: normal;
|
|
75
77
|
background-color: transparent;
|
package/src/yapp.js
CHANGED
|
@@ -9,6 +9,7 @@ import PrettyPrinter from "./prettyPrinter";
|
|
|
9
9
|
|
|
10
10
|
import { getScrollbarThickness } from "./utilities/scrollbar";
|
|
11
11
|
import { pluginFromLanguageAndPlugin } from "./utilities/plugin";
|
|
12
|
+
import { CONTENT_CHANGE_CUSTOM_EVENT_TYPE } from "./customEventTypes";
|
|
12
13
|
import { propertiesFromContentLanguagePluginAndOptions } from "./utilities/properties";
|
|
13
14
|
import { lineCountFromContent, contentFromChildElements } from "./utilities/content";
|
|
14
15
|
import { colour, caretColour, borderColour, backgroundColour } from "./scheme/colour";
|
|
@@ -32,6 +33,13 @@ class Yapp extends Element {
|
|
|
32
33
|
return content;
|
|
33
34
|
}
|
|
34
35
|
|
|
36
|
+
hasContentChanged() {
|
|
37
|
+
const richTextareaContentChanged = this.hasRichTextareaContentChanged(),
|
|
38
|
+
contentChanged = richTextareaContentChanged; ///
|
|
39
|
+
|
|
40
|
+
return contentChanged;
|
|
41
|
+
}
|
|
42
|
+
|
|
35
43
|
getInitialLineCount() {
|
|
36
44
|
const content = this.getContent(),
|
|
37
45
|
lineCount = lineCountFromContent(content),
|
|
@@ -40,6 +48,19 @@ class Yapp extends Element {
|
|
|
40
48
|
return initialLineCount;
|
|
41
49
|
}
|
|
42
50
|
|
|
51
|
+
customChangeHandler = (event, element) => {
|
|
52
|
+
const contentChanged = this.hasContentChanged();
|
|
53
|
+
|
|
54
|
+
if (contentChanged) {
|
|
55
|
+
const content = this.getContent(),
|
|
56
|
+
customEventType = CONTENT_CHANGE_CUSTOM_EVENT_TYPE;
|
|
57
|
+
|
|
58
|
+
this.update();
|
|
59
|
+
|
|
60
|
+
this.callCustomHandlers(customEventType, content);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
43
64
|
setLexer(lexer) { this.plugin.setLexer(lexer); }
|
|
44
65
|
|
|
45
66
|
setParser(parser) { this.plugin.setParser(parser); }
|
|
@@ -52,24 +73,6 @@ class Yapp extends Element {
|
|
|
52
73
|
this.removeClass("fira-code");
|
|
53
74
|
}
|
|
54
75
|
|
|
55
|
-
changeHandler = (event, element) => {
|
|
56
|
-
const richTextarea = element, ///
|
|
57
|
-
contentChanged = richTextarea.hasContentChanged();
|
|
58
|
-
|
|
59
|
-
if (contentChanged) {
|
|
60
|
-
const { onContentChange = null } = this.properties,
|
|
61
|
-
contentChangeHandler = onContentChange; ///
|
|
62
|
-
|
|
63
|
-
this.update();
|
|
64
|
-
|
|
65
|
-
if (contentChangeHandler) {
|
|
66
|
-
element = this; ///
|
|
67
|
-
|
|
68
|
-
contentChangeHandler(event, element);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
76
|
update() {
|
|
74
77
|
const content = this.getContent();
|
|
75
78
|
|
|
@@ -111,11 +114,14 @@ class Yapp extends Element {
|
|
|
111
114
|
}
|
|
112
115
|
|
|
113
116
|
childElements() {
|
|
114
|
-
const { editable = DEFAULT_EDITABLE,
|
|
117
|
+
const { editable = DEFAULT_EDITABLE,
|
|
118
|
+
hiddenGutter = DEFAULT_HIDDEN_GUTTER,
|
|
119
|
+
fancyScrollbars = DEFAULT_FANCY_SCROLLBARS,
|
|
120
|
+
hiddenScrollbars = DEFAULT_HIDDEN_SCROLLBARS } = this.properties;
|
|
115
121
|
|
|
116
122
|
return (
|
|
117
123
|
|
|
118
|
-
<PrettyPrinter
|
|
124
|
+
<PrettyPrinter onCustomChange={this.customChangeHandler} editable={editable} hiddenGutter={hiddenGutter} fancyScrollbars={fancyScrollbars} hiddenScrollbars={hiddenScrollbars} />
|
|
119
125
|
|
|
120
126
|
);
|
|
121
127
|
}
|
|
@@ -158,8 +164,7 @@ class Yapp extends Element {
|
|
|
158
164
|
"autoHeight",
|
|
159
165
|
"hiddenGutter",
|
|
160
166
|
"noScrollbars",
|
|
161
|
-
"fancyScrollbars"
|
|
162
|
-
"onContentChange"
|
|
167
|
+
"fancyScrollbars"
|
|
163
168
|
];
|
|
164
169
|
|
|
165
170
|
static fromContent(content, language, Plugin, options) {
|