@codecademy/codebytes 0.7.2-alpha.736afb.0 → 0.7.3
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/dist/MonacoEditor/index.js +36 -21
- package/dist/MonacoEditor/types.js +1 -0
- package/dist/__tests__/codebyte.test.tsx +179 -0
- package/dist/__tests__/editor.test.tsx +108 -0
- package/dist/__tests__/{helpers-test.js → helpers.test.tsx} +19 -16
- package/dist/__tests__/language-selection.test.tsx +14 -0
- package/dist/api.js +5 -7
- package/dist/codeByteEditor.js +81 -73
- package/dist/consts.js +3 -0
- package/dist/drawers.js +124 -81
- package/dist/editor.js +107 -66
- package/dist/helpers/index.js +2 -7
- package/dist/languageSelection.js +30 -12
- package/dist/libs/eventTracking.js +1 -1
- package/dist/theme.d.js +1 -0
- package/dist/types.js +1 -0
- package/package.json +22 -48
- package/CHANGELOG.md +0 -227
- package/dist/MonacoEditor/colorsDark.d.ts +0 -32
- package/dist/MonacoEditor/index.d.ts +0 -7
- package/dist/MonacoEditor/theme.d.ts +0 -2
- package/dist/MonacoEditor/types.d.ts +0 -1
- package/dist/__tests__/codebyte-test.d.ts +0 -1
- package/dist/__tests__/codebyte-test.js +0 -155
- package/dist/__tests__/editor-test.d.ts +0 -1
- package/dist/__tests__/editor-test.js +0 -133
- package/dist/__tests__/helpers-test.d.ts +0 -1
- package/dist/__tests__/language-selection-test.d.ts +0 -1
- package/dist/__tests__/language-selection-test.js +0 -15
- package/dist/__tests__/mocks.d.ts +0 -0
- package/dist/__tests__/mocks.js +0 -13
- package/dist/api.d.ts +0 -12
- package/dist/codeByteEditor.d.ts +0 -4
- package/dist/consts.d.ts +0 -23
- package/dist/drawers.d.ts +0 -6
- package/dist/editor.d.ts +0 -15
- package/dist/helpers/index.d.ts +0 -2
- package/dist/index.d.ts +0 -3
- package/dist/languageSelection.d.ts +0 -6
- package/dist/libs/eventTracking.d.ts +0 -1
- package/dist/theme.d.ts +0 -4
- package/dist/types.d.ts +0 -22
package/CHANGELOG.md
DELETED
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
# Change Log
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
|
-
|
|
6
|
-
### [0.7.2-alpha.736afb.0](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.7.1...@codecademy/codebytes@0.7.2-alpha.736afb.0) (2022-08-22)
|
|
7
|
-
|
|
8
|
-
**Note:** Version bump only for package @codecademy/codebytes
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
### [0.7.1](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.7.0...@codecademy/codebytes@0.7.1) (2022-05-24)
|
|
15
|
-
|
|
16
|
-
**Note:** Version bump only for package @codecademy/codebytes
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
## [0.7.0](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.16...@codecademy/codebytes@0.7.0) (2022-05-19)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
### ⚠ BREAKING CHANGES
|
|
26
|
-
|
|
27
|
-
* **CodeByteEditor:** Add copyFormatter prop (#51)
|
|
28
|
-
|
|
29
|
-
### Features
|
|
30
|
-
|
|
31
|
-
* **CodeByteEditor:** Add copyFormatter prop ([#51](https://github.com/Codecademy/client-modules/issues/51)) ([39b5229](https://github.com/Codecademy/client-modules/commit/39b52291c3db6307203100bb216b852e7e07bc9e))
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
### [0.6.16](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.15...@codecademy/codebytes@0.6.16) (2022-05-16)
|
|
36
|
-
|
|
37
|
-
**Note:** Version bump only for package @codecademy/codebytes
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
### [0.6.15](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.14...@codecademy/codebytes@0.6.15) (2022-05-13)
|
|
44
|
-
|
|
45
|
-
**Note:** Version bump only for package @codecademy/codebytes
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
### [0.6.14](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.13...@codecademy/codebytes@0.6.14) (2022-05-13)
|
|
52
|
-
|
|
53
|
-
**Note:** Version bump only for package @codecademy/codebytes
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
### [0.6.13](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.12...@codecademy/codebytes@0.6.13) (2022-04-11)
|
|
60
|
-
|
|
61
|
-
**Note:** Version bump only for package @codecademy/codebytes
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
### [0.6.12](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.11...@codecademy/codebytes@0.6.12) (2022-03-10)
|
|
68
|
-
|
|
69
|
-
**Note:** Version bump only for package @codecademy/codebytes
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
### [0.6.11](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.10...@codecademy/codebytes@0.6.11) (2022-03-07)
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
### Bug Fixes
|
|
79
|
-
|
|
80
|
-
* fixes a monaco editor display bug for lines below 14-17 ([9780410](https://github.com/Codecademy/client-modules/commit/97804100dea13fe92b6e4d58bfbec4667af5d96c))
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
### [0.6.10](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.9...@codecademy/codebytes@0.6.10) (2022-02-09)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
### Bug Fixes
|
|
88
|
-
|
|
89
|
-
* remove get options from client modules ([6bf7b94](https://github.com/Codecademy/client-modules/commit/6bf7b94876f1c6c1e15b0da2b5393bc1f8151535))
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
### [0.6.9](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.8...@codecademy/codebytes@0.6.9) (2022-02-07)
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
### Bug Fixes
|
|
97
|
-
|
|
98
|
-
* **codebytes:** style tweaks ([#33](https://github.com/Codecademy/client-modules/issues/33)) ([6722a8a](https://github.com/Codecademy/client-modules/commit/6722a8accb9dcf88b7508903fdec1f155b010d96))
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
### [0.6.8](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.7...@codecademy/codebytes@0.6.8) (2022-02-05)
|
|
103
|
-
|
|
104
|
-
**Note:** Version bump only for package @codecademy/codebytes
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
### [0.6.7](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.6...@codecademy/codebytes@0.6.7) (2022-02-05)
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
### Bug Fixes
|
|
114
|
-
|
|
115
|
-
* **codebytes:** semantic text color ([8c5e59b](https://github.com/Codecademy/client-modules/commit/8c5e59b25af3e7f92e4bf3f6bb9de198eec5a3e0))
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
### [0.6.6](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.5...@codecademy/codebytes@0.6.6) (2022-02-03)
|
|
120
|
-
|
|
121
|
-
**Note:** Version bump only for package @codecademy/codebytes
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
### [0.6.5](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.4...@codecademy/codebytes@0.6.5) (2022-02-03)
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
### Bug Fixes
|
|
131
|
-
|
|
132
|
-
* **Codebytes:** tracking tweaks for monolith ([#31](https://github.com/Codecademy/client-modules/issues/31)) ([4d309d0](https://github.com/Codecademy/client-modules/commit/4d309d0f57c7c30bf672d8ed02193e9d5b2a27a9))
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
### [0.6.4](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.3...@codecademy/codebytes@0.6.4) (2022-02-02)
|
|
137
|
-
|
|
138
|
-
**Note:** Version bump only for package @codecademy/codebytes
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
### [0.6.3](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.2...@codecademy/codebytes@0.6.3) (2022-02-02)
|
|
145
|
-
|
|
146
|
-
**Note:** Version bump only for package @codecademy/codebytes
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
### [0.6.2](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.1...@codecademy/codebytes@0.6.2) (2022-02-02)
|
|
153
|
-
|
|
154
|
-
**Note:** Version bump only for package @codecademy/codebytes
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
### [0.6.1](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.6.0...@codecademy/codebytes@0.6.1) (2022-02-01)
|
|
161
|
-
|
|
162
|
-
**Note:** Version bump only for package @codecademy/codebytes
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
## [0.6.0](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.5.1...@codecademy/codebytes@0.6.0) (2022-01-31)
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
### Features
|
|
172
|
-
|
|
173
|
-
* **Codebytes:** add tests for codebytes package disc 399 ([#21](https://github.com/Codecademy/client-modules/issues/21)) ([df3f780](https://github.com/Codecademy/client-modules/commit/df3f780237cbe31b620f7d88870612e1109ffb5b))
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
### [0.5.1](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.5.0...@codecademy/codebytes@0.5.1) (2022-01-29)
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
### Reverts
|
|
181
|
-
|
|
182
|
-
* Revert "add yarn build task for codebytes (#23)" (#24) ([209a493](https://github.com/Codecademy/client-modules/commit/209a4935066ed1cf7e6932281218338c67ab088b)), closes [#23](https://github.com/Codecademy/client-modules/issues/23) [#24](https://github.com/Codecademy/client-modules/issues/24)
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
## [0.5.0](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.4.0...@codecademy/codebytes@0.5.0) (2022-01-27)
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
### Features
|
|
190
|
-
|
|
191
|
-
* **Codebytes:** Refactor tracking in Codebytes ([#19](https://github.com/Codecademy/client-modules/issues/19)) ([494a944](https://github.com/Codecademy/client-modules/commit/494a94441cfbc1ea563f997607821131a7f1e007))
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
## [0.4.0](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.3.0...@codecademy/codebytes@0.4.0) (2022-01-21)
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
### Features
|
|
199
|
-
|
|
200
|
-
* **Codebytes:** move language selection component disc 354 ([#17](https://github.com/Codecademy/client-modules/issues/17)) ([040553d](https://github.com/Codecademy/client-modules/commit/040553dcc7867b6e331712365bcc19ea2df306d5))
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
## [0.3.0](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.2.0...@codecademy/codebytes@0.3.0) (2022-01-12)
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
### Features
|
|
208
|
-
|
|
209
|
-
* **Codebytes:** add simple monaco editor disc 353 ([#16](https://github.com/Codecademy/client-modules/issues/16)) ([eec98ba](https://github.com/Codecademy/client-modules/commit/eec98ba9aad45f07fb5f3417e3da1e1935985deb))
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
## [0.2.0](https://github.com/Codecademy/client-modules/compare/@codecademy/codebytes@0.1.0...@codecademy/codebytes@0.2.0) (2022-01-04)
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
### Features
|
|
217
|
-
|
|
218
|
-
* **Codebytes:** add editor and drawers disc 351 ([#14](https://github.com/Codecademy/client-modules/issues/14)) ([e84e265](https://github.com/Codecademy/client-modules/commit/e84e265e4cf4bf8360830ebf2dbea930ab503c9c))
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
## 0.1.0 (2021-12-17)
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
### Features
|
|
226
|
-
|
|
227
|
-
* **Codebytes:** move codebytes parent disc 351 ([#11](https://github.com/Codecademy/client-modules/issues/11)) ([30edd2b](https://github.com/Codecademy/client-modules/commit/30edd2b7a0e50c27d3adcf231b56441b8e8f6b81))
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
export declare const syntax: {
|
|
2
|
-
attribute: "#b4d353";
|
|
3
|
-
annotation: "#e85d7f";
|
|
4
|
-
atom: "#cc7bc2";
|
|
5
|
-
basic: "#ffffff";
|
|
6
|
-
comment: "#939598";
|
|
7
|
-
constant: "#ff8973";
|
|
8
|
-
decoration: "#e85d7f";
|
|
9
|
-
invalid: "#e85d7f";
|
|
10
|
-
key: "#83fff5";
|
|
11
|
-
keyword: "#b3ccff";
|
|
12
|
-
number: "#e85d7f";
|
|
13
|
-
operator: "#e85d7f";
|
|
14
|
-
predefined: "#ffffff";
|
|
15
|
-
property: "#e85d7f";
|
|
16
|
-
regexp: "#b4d353";
|
|
17
|
-
string: "#ffe083";
|
|
18
|
-
tag: "#e85d7f";
|
|
19
|
-
text: "#ff8973";
|
|
20
|
-
value: "#ffe083";
|
|
21
|
-
variable: "#b4d353";
|
|
22
|
-
};
|
|
23
|
-
export declare const ui: {
|
|
24
|
-
background: string;
|
|
25
|
-
text: "#ffffff";
|
|
26
|
-
indent: {
|
|
27
|
-
active: string;
|
|
28
|
-
inactive: string;
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
export declare type SyntaxColors = typeof syntax;
|
|
32
|
-
export declare type UIColors = typeof ui;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare type Monaco = typeof import('monaco-editor');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import './mocks';
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import './mocks';
|
|
2
|
-
import { setupRtl } from '@codecademy/gamut-tests';
|
|
3
|
-
import userEvent from '@testing-library/user-event';
|
|
4
|
-
import React from 'react';
|
|
5
|
-
import { CodeByteEditor } from '..';
|
|
6
|
-
import { helloWorld, validLanguages } from '../consts';
|
|
7
|
-
import { trackClick } from '../helpers';
|
|
8
|
-
import { trackUserImpression } from '../libs/eventTracking';
|
|
9
|
-
var mockEditorTestId = 'mock-editor-test-id'; // This is a super simplified mock capable of render value and trigger onChange.
|
|
10
|
-
|
|
11
|
-
jest.mock('../MonacoEditor', function () {
|
|
12
|
-
return {
|
|
13
|
-
SimpleMonacoEditor: function SimpleMonacoEditor(_ref) {
|
|
14
|
-
var value = _ref.value,
|
|
15
|
-
_onChange = _ref.onChange;
|
|
16
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, value, /*#__PURE__*/React.createElement("input", {
|
|
17
|
-
"data-testid": mockEditorTestId,
|
|
18
|
-
type: "text",
|
|
19
|
-
onChange: function onChange(e) {
|
|
20
|
-
_onChange === null || _onChange === void 0 ? void 0 : _onChange(e.target.value);
|
|
21
|
-
},
|
|
22
|
-
value: value
|
|
23
|
-
}));
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
});
|
|
27
|
-
var renderWrapper = setupRtl(CodeByteEditor, {});
|
|
28
|
-
describe('CodeBytes', function () {
|
|
29
|
-
var initialUrl = window.location.href;
|
|
30
|
-
afterEach(function () {
|
|
31
|
-
window.history.replaceState(null, '', initialUrl);
|
|
32
|
-
trackClick.mockReset();
|
|
33
|
-
trackUserImpression.mockReset();
|
|
34
|
-
});
|
|
35
|
-
it('has a language-specific "hello world" program defined for each language', function () {
|
|
36
|
-
validLanguages.forEach(function (language) {
|
|
37
|
-
expect(helloWorld[language]).toBeDefined();
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
it('initializes with a language-specific "hello world" program when there is no language prop', function () {
|
|
41
|
-
var _renderWrapper = renderWrapper(),
|
|
42
|
-
view = _renderWrapper.view;
|
|
43
|
-
|
|
44
|
-
var selectedLanguage = view.getByRole('combobox');
|
|
45
|
-
userEvent.selectOptions(selectedLanguage, ['javascript']);
|
|
46
|
-
view.getByText(helloWorld.javascript);
|
|
47
|
-
});
|
|
48
|
-
it('initializes with a language-specific "hello world" program when there is a language prop but no text prop', function () {
|
|
49
|
-
var _renderWrapper2 = renderWrapper({
|
|
50
|
-
language: 'javascript'
|
|
51
|
-
}),
|
|
52
|
-
view = _renderWrapper2.view;
|
|
53
|
-
|
|
54
|
-
view.getByText(helloWorld.javascript);
|
|
55
|
-
});
|
|
56
|
-
it('initializes with deserialized text when there is a text prop but no language prop', function () {
|
|
57
|
-
var testString = 'yes hello';
|
|
58
|
-
|
|
59
|
-
var _renderWrapper3 = renderWrapper({
|
|
60
|
-
text: testString
|
|
61
|
-
}),
|
|
62
|
-
view = _renderWrapper3.view;
|
|
63
|
-
|
|
64
|
-
var selectedLanguage = view.getByRole('combobox');
|
|
65
|
-
userEvent.selectOptions(selectedLanguage, ['javascript']);
|
|
66
|
-
view.getByText(testString);
|
|
67
|
-
});
|
|
68
|
-
it('initializes with deserialized text when there is both a language and text prop', function () {
|
|
69
|
-
var testString = 'yes hello';
|
|
70
|
-
|
|
71
|
-
var _renderWrapper4 = renderWrapper({
|
|
72
|
-
text: testString,
|
|
73
|
-
language: 'javascript'
|
|
74
|
-
}),
|
|
75
|
-
view = _renderWrapper4.view;
|
|
76
|
-
|
|
77
|
-
view.getByText(testString);
|
|
78
|
-
});
|
|
79
|
-
describe('Change Handlers', function () {
|
|
80
|
-
it('triggers onEdit on text edit', function () {
|
|
81
|
-
var onEdit = jest.fn();
|
|
82
|
-
|
|
83
|
-
var _renderWrapper5 = renderWrapper({
|
|
84
|
-
text: '',
|
|
85
|
-
language: 'javascript',
|
|
86
|
-
onEdit: onEdit
|
|
87
|
-
}),
|
|
88
|
-
view = _renderWrapper5.view;
|
|
89
|
-
|
|
90
|
-
var editor = view.getByTestId(mockEditorTestId);
|
|
91
|
-
userEvent.type(editor, 'dog');
|
|
92
|
-
expect(onEdit).toHaveBeenCalledTimes(3);
|
|
93
|
-
expect(onEdit).toHaveBeenLastCalledWith('dog', 'javascript');
|
|
94
|
-
});
|
|
95
|
-
it('triggers onLanguageChange on language selection', function () {
|
|
96
|
-
var onLanguageChange = jest.fn();
|
|
97
|
-
|
|
98
|
-
var _renderWrapper6 = renderWrapper({
|
|
99
|
-
onLanguageChange: onLanguageChange
|
|
100
|
-
}),
|
|
101
|
-
view = _renderWrapper6.view;
|
|
102
|
-
|
|
103
|
-
var selectedLanguage = view.getByRole('combobox');
|
|
104
|
-
userEvent.selectOptions(selectedLanguage, ['javascript']);
|
|
105
|
-
expect(onLanguageChange).toHaveBeenCalledWith("console.log('Hello world!');", 'javascript');
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
describe('Tracking', function () {
|
|
109
|
-
it('triggers trackClick on clicking the logo', function () {
|
|
110
|
-
var _renderWrapper7 = renderWrapper({}),
|
|
111
|
-
view = _renderWrapper7.view;
|
|
112
|
-
|
|
113
|
-
var logo = view.getByLabelText('visit codecademy.com');
|
|
114
|
-
userEvent.click(logo);
|
|
115
|
-
expect(trackClick).toHaveBeenCalledWith('logo', undefined);
|
|
116
|
-
});
|
|
117
|
-
it('triggers trackClick on language selection', function () {
|
|
118
|
-
var _renderWrapper8 = renderWrapper(),
|
|
119
|
-
view = _renderWrapper8.view;
|
|
120
|
-
|
|
121
|
-
var selectedLanguage = view.getByRole('combobox');
|
|
122
|
-
userEvent.selectOptions(selectedLanguage, ['javascript']);
|
|
123
|
-
expect(trackClick).toHaveBeenCalledWith('lang_select', undefined);
|
|
124
|
-
});
|
|
125
|
-
it('triggers trackClick for the first edit', function () {
|
|
126
|
-
var testString = 'original-value';
|
|
127
|
-
|
|
128
|
-
var _renderWrapper9 = renderWrapper({
|
|
129
|
-
text: testString,
|
|
130
|
-
language: 'javascript',
|
|
131
|
-
trackFirstEdit: true
|
|
132
|
-
}),
|
|
133
|
-
view = _renderWrapper9.view;
|
|
134
|
-
|
|
135
|
-
var editor = view.getByTestId(mockEditorTestId);
|
|
136
|
-
userEvent.type(editor, 'd');
|
|
137
|
-
expect(trackClick).toHaveBeenCalledWith('edit', undefined);
|
|
138
|
-
});
|
|
139
|
-
it('triggers trackUserImpression', function () {
|
|
140
|
-
renderWrapper({
|
|
141
|
-
text: 'some-value',
|
|
142
|
-
language: 'javascript',
|
|
143
|
-
trackingData: {
|
|
144
|
-
page_name: 'forum_compose',
|
|
145
|
-
context: 'https://discuss.codecademy.com/some-interesting/post'
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
expect(trackUserImpression).toHaveBeenCalledWith({
|
|
149
|
-
page_name: 'forum_compose',
|
|
150
|
-
context: 'https://discuss.codecademy.com/some-interesting/post',
|
|
151
|
-
target: 'codebyte'
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import './mocks';
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
2
|
-
|
|
3
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
4
|
-
|
|
5
|
-
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
6
|
-
|
|
7
|
-
import './mocks';
|
|
8
|
-
import { setupRtl } from '@codecademy/gamut-tests';
|
|
9
|
-
import { act } from '@testing-library/react';
|
|
10
|
-
import userEvent from '@testing-library/user-event';
|
|
11
|
-
import React from 'react';
|
|
12
|
-
import { Editor } from '../editor';
|
|
13
|
-
import { trackClick } from '../helpers';
|
|
14
|
-
jest.mock('../MonacoEditor', function () {
|
|
15
|
-
return {
|
|
16
|
-
SimpleMonacoEditor: function SimpleMonacoEditor(_ref) {
|
|
17
|
-
var value = _ref.value;
|
|
18
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, value);
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
});
|
|
22
|
-
var renderWrapper = setupRtl(Editor, {
|
|
23
|
-
hideCopyButton: false,
|
|
24
|
-
language: 'javascript',
|
|
25
|
-
text: 'hello world',
|
|
26
|
-
onChange: jest.fn(),
|
|
27
|
-
snippetsBaseUrl: ''
|
|
28
|
-
});
|
|
29
|
-
Object.defineProperty(navigator, 'clipboard', {
|
|
30
|
-
value: {
|
|
31
|
-
writeText: jest.fn().mockImplementation(function () {
|
|
32
|
-
return Promise.resolve();
|
|
33
|
-
})
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
describe('Editor', function () {
|
|
37
|
-
global.fetch = jest.fn();
|
|
38
|
-
afterEach(function () {
|
|
39
|
-
global.fetch.mockClear();
|
|
40
|
-
});
|
|
41
|
-
it('shows a prompt tooltip when the CodeByte has __not__ been copied via the button', function () {
|
|
42
|
-
var _renderWrapper = renderWrapper(),
|
|
43
|
-
view = _renderWrapper.view;
|
|
44
|
-
|
|
45
|
-
expect(view.queryByTestId('copy-confirmation-tooltip')).toBeFalsy();
|
|
46
|
-
view.getByTestId('copy-prompt-tooltip');
|
|
47
|
-
});
|
|
48
|
-
it('shows a confirmation tooltip when the CodeByte has been copied via the button', function () {
|
|
49
|
-
var _renderWrapper2 = renderWrapper(),
|
|
50
|
-
view = _renderWrapper2.view;
|
|
51
|
-
|
|
52
|
-
var copyBtn = view.getByTestId('copy-codebyte-btn');
|
|
53
|
-
userEvent.click(copyBtn);
|
|
54
|
-
expect(view.queryByTestId('copy-prompt-tooltip')).toBeFalsy();
|
|
55
|
-
view.getByTestId('copy-confirmation-tooltip');
|
|
56
|
-
});
|
|
57
|
-
it('hides the copy codebyte button if hideCopyButton prop is true"', function () {
|
|
58
|
-
var _renderWrapper3 = renderWrapper({
|
|
59
|
-
hideCopyButton: true
|
|
60
|
-
}),
|
|
61
|
-
view = _renderWrapper3.view;
|
|
62
|
-
|
|
63
|
-
expect(view.queryByTestId('copy-codebyte-btn')).toBeNull();
|
|
64
|
-
});
|
|
65
|
-
it('shows the copy codebyte button if hideCopyButton prop is not set', function () {
|
|
66
|
-
var _renderWrapper4 = renderWrapper(),
|
|
67
|
-
view = _renderWrapper4.view;
|
|
68
|
-
|
|
69
|
-
view.getByTestId('copy-codebyte-btn');
|
|
70
|
-
});
|
|
71
|
-
describe('Tracking', function () {
|
|
72
|
-
it('tracks clicks on the run button', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
73
|
-
var _renderWrapper5, view, runButton;
|
|
74
|
-
|
|
75
|
-
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
76
|
-
while (1) {
|
|
77
|
-
switch (_context2.prev = _context2.next) {
|
|
78
|
-
case 0:
|
|
79
|
-
global.fetch.mockResolvedValue({
|
|
80
|
-
json: function json() {
|
|
81
|
-
return Promise.resolve({
|
|
82
|
-
stderr: [],
|
|
83
|
-
exit_code: 0,
|
|
84
|
-
stdout: ''
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
_renderWrapper5 = renderWrapper({
|
|
89
|
-
onChange: jest.fn(),
|
|
90
|
-
text: 'test',
|
|
91
|
-
language: 'javascript'
|
|
92
|
-
}), view = _renderWrapper5.view;
|
|
93
|
-
runButton = view.getByText('Run');
|
|
94
|
-
_context2.next = 5;
|
|
95
|
-
return act( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
96
|
-
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
97
|
-
while (1) {
|
|
98
|
-
switch (_context.prev = _context.next) {
|
|
99
|
-
case 0:
|
|
100
|
-
userEvent.click(runButton);
|
|
101
|
-
|
|
102
|
-
case 1:
|
|
103
|
-
case "end":
|
|
104
|
-
return _context.stop();
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}, _callee);
|
|
108
|
-
})));
|
|
109
|
-
|
|
110
|
-
case 5:
|
|
111
|
-
expect(trackClick).toHaveBeenCalledWith('run', undefined);
|
|
112
|
-
|
|
113
|
-
case 6:
|
|
114
|
-
case "end":
|
|
115
|
-
return _context2.stop();
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}, _callee2);
|
|
119
|
-
})));
|
|
120
|
-
it('tracks clicks on the copy codebyte button', function () {
|
|
121
|
-
var _renderWrapper6 = renderWrapper({
|
|
122
|
-
onChange: jest.fn(),
|
|
123
|
-
text: 'test',
|
|
124
|
-
language: 'javascript'
|
|
125
|
-
}),
|
|
126
|
-
view = _renderWrapper6.view;
|
|
127
|
-
|
|
128
|
-
var copyButton = view.getByTestId('copy-codebyte-btn');
|
|
129
|
-
userEvent.click(copyButton);
|
|
130
|
-
expect(trackClick).toHaveBeenCalledWith('copy', undefined);
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { setupRtl } from '@codecademy/gamut-tests';
|
|
2
|
-
import { LanguageSelection } from '../languageSelection';
|
|
3
|
-
var renderWrapper = setupRtl(LanguageSelection, {
|
|
4
|
-
onChange: function onChange() {
|
|
5
|
-
return null;
|
|
6
|
-
}
|
|
7
|
-
});
|
|
8
|
-
describe('LanguageSelection', function () {
|
|
9
|
-
it('has placeholder text', function () {
|
|
10
|
-
var _renderWrapper = renderWrapper(),
|
|
11
|
-
view = _renderWrapper.view;
|
|
12
|
-
|
|
13
|
-
view.getByText('Which language do you want to code in?');
|
|
14
|
-
});
|
|
15
|
-
});
|
|
File without changes
|
package/dist/__tests__/mocks.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
-
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
|
-
|
|
5
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
-
|
|
7
|
-
jest.mock('react-resize-observer');
|
|
8
|
-
jest.mock('../libs/eventTracking');
|
|
9
|
-
jest.mock('../helpers', function () {
|
|
10
|
-
return _objectSpread(_objectSpread({}, jest.requireActual('../helpers')), {}, {
|
|
11
|
-
trackClick: jest.fn()
|
|
12
|
-
});
|
|
13
|
-
});
|
package/dist/api.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { LanguageOption } from './consts';
|
|
2
|
-
interface Response {
|
|
3
|
-
stderr: string;
|
|
4
|
-
stdout: string;
|
|
5
|
-
exit_code: number;
|
|
6
|
-
}
|
|
7
|
-
interface PostSnippetData {
|
|
8
|
-
language: LanguageOption;
|
|
9
|
-
code: string;
|
|
10
|
-
}
|
|
11
|
-
export declare const postSnippet: (data: PostSnippetData, snippetsBaseUrl?: string | undefined) => Promise<Response>;
|
|
12
|
-
export {};
|
package/dist/codeByteEditor.d.ts
DELETED
package/dist/consts.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export declare const LanguageOptions: {
|
|
2
|
-
'': string;
|
|
3
|
-
cpp: string;
|
|
4
|
-
csharp: string;
|
|
5
|
-
golang: string;
|
|
6
|
-
javascript: string;
|
|
7
|
-
php: string;
|
|
8
|
-
python: string;
|
|
9
|
-
ruby: string;
|
|
10
|
-
scheme: string;
|
|
11
|
-
};
|
|
12
|
-
export declare type LanguageOption = keyof typeof LanguageOptions;
|
|
13
|
-
export declare const validLanguages: ("cpp" | "csharp" | "golang" | "javascript" | "php" | "python" | "ruby" | "scheme")[];
|
|
14
|
-
export declare const helloWorld: {
|
|
15
|
-
readonly cpp: "#include <iostream>\nint main() {\n std::cout << \"Hello world!\";\n return 0;\n}";
|
|
16
|
-
readonly csharp: "namespace HelloWorld {\n class Hello {\n static void Main(string[] args) {\n System.Console.WriteLine(\"Hello world!\");\n }\n }\n}";
|
|
17
|
-
readonly golang: "package main\nimport \"fmt\"\nfunc main() {\n fmt.Println(\"Hello world!\")\n}";
|
|
18
|
-
readonly javascript: "console.log('Hello world!');";
|
|
19
|
-
readonly php: "<?php\n echo \"Hello world!\";\n?>";
|
|
20
|
-
readonly python: "print('Hello world!')";
|
|
21
|
-
readonly ruby: "puts \"Hello world!\"";
|
|
22
|
-
readonly scheme: "(begin\n (display \"Hello world!\")\n (newline))";
|
|
23
|
-
};
|
package/dist/drawers.d.ts
DELETED
package/dist/editor.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { UserClickData } from '@codecademy/tracking';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import type { LanguageOption } from './consts';
|
|
4
|
-
import { CodebytesCopyFormatter } from './types';
|
|
5
|
-
declare type EditorProps = {
|
|
6
|
-
hideCopyButton: boolean;
|
|
7
|
-
language: LanguageOption;
|
|
8
|
-
text: string;
|
|
9
|
-
onChange: (text: string) => void;
|
|
10
|
-
snippetsBaseUrl?: string;
|
|
11
|
-
copyFormatter?: CodebytesCopyFormatter;
|
|
12
|
-
trackingData?: Omit<UserClickData, 'target'>;
|
|
13
|
-
};
|
|
14
|
-
export declare const Editor: React.FC<EditorProps>;
|
|
15
|
-
export {};
|