@khanacademy/perseus-editor 2.15.3 → 2.15.5

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 (61) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/editor-page.d.ts +4 -10
  3. package/dist/editor.d.ts +2 -2
  4. package/dist/es/index.js +362 -360
  5. package/dist/es/index.js.map +1 -1
  6. package/dist/index.js +426 -425
  7. package/dist/index.js.map +1 -1
  8. package/dist/widgets/interaction-editor/function-editor.d.ts +26 -0
  9. package/dist/widgets/interaction-editor/index.d.ts +2 -0
  10. package/dist/widgets/interaction-editor/label-editor.d.ts +22 -0
  11. package/dist/widgets/interaction-editor/line-editor.d.ts +30 -0
  12. package/dist/widgets/interaction-editor/movable-line-editor.d.ts +32 -0
  13. package/dist/widgets/interaction-editor/movable-point-editor.d.ts +28 -0
  14. package/dist/widgets/interaction-editor/parametric-editor.d.ts +28 -0
  15. package/dist/widgets/interaction-editor/point-editor.d.ts +20 -0
  16. package/dist/widgets/interaction-editor/rectangle-editor.d.ts +24 -0
  17. package/dist/widgets/interactive-graph-editor.d.ts +92 -92
  18. package/package.json +2 -2
  19. package/src/__stories__/editor-page.stories.tsx +65 -0
  20. package/src/__stories__/editor.stories.tsx +2 -4
  21. package/src/editor-page.tsx +5 -11
  22. package/src/editor.tsx +2 -2
  23. package/src/widgets/__stories__/categorizer-editor.stories.tsx +24 -0
  24. package/src/widgets/__stories__/definition-editor.stories.tsx +18 -0
  25. package/src/widgets/__stories__/dropdown-editor.stories.tsx +18 -0
  26. package/src/widgets/__stories__/explanation-editor.stories.tsx +18 -0
  27. package/src/widgets/__stories__/input-number-editor.stories.tsx +18 -0
  28. package/src/widgets/__stories__/interaction-editor.stories.tsx +24 -0
  29. package/src/widgets/__stories__/matcher-editor.stories.tsx +18 -0
  30. package/src/widgets/__stories__/number-line-editor.stories.tsx +18 -0
  31. package/src/widgets/__stories__/numeric-input-editor.stories.tsx +18 -0
  32. package/src/widgets/__stories__/radio-editor.stories.tsx +3 -3
  33. package/src/widgets/__stories__/sorter-editor.stories.tsx +18 -0
  34. package/src/widgets/__tests__/categorizer-editor.test.tsx +51 -0
  35. package/src/widgets/__tests__/definition-editor.test.tsx +41 -0
  36. package/src/widgets/__tests__/dropdown-editor.test.tsx +57 -0
  37. package/src/widgets/__tests__/explanation-editor.test.tsx +59 -0
  38. package/src/widgets/__tests__/input-number-editor.test.tsx +128 -0
  39. package/src/widgets/__tests__/matcher-editor.test.tsx +47 -0
  40. package/src/widgets/__tests__/number-line-editor.test.tsx +144 -0
  41. package/src/widgets/__tests__/numeric-input-editor.test.tsx +177 -0
  42. package/src/widgets/__tests__/radio-editor.test.tsx +118 -0
  43. package/src/widgets/__tests__/sorter-editor.test.tsx +55 -0
  44. package/src/widgets/dropdown-editor.tsx +1 -0
  45. package/src/widgets/input-number-editor.tsx +2 -0
  46. package/src/widgets/interaction-editor/function-editor.tsx +111 -0
  47. package/src/widgets/interaction-editor/index.ts +3 -0
  48. package/src/widgets/{interaction-editor.tsx → interaction-editor/interaction-editor.tsx} +14 -768
  49. package/src/widgets/interaction-editor/label-editor.tsx +91 -0
  50. package/src/widgets/interaction-editor/line-editor.tsx +129 -0
  51. package/src/widgets/interaction-editor/movable-line-editor.tsx +125 -0
  52. package/src/widgets/interaction-editor/movable-point-editor.tsx +92 -0
  53. package/src/widgets/interaction-editor/parametric-editor.tsx +122 -0
  54. package/src/widgets/interaction-editor/point-editor.tsx +79 -0
  55. package/src/widgets/interaction-editor/rectangle-editor.tsx +105 -0
  56. package/src/widgets/number-line-editor.tsx +16 -5
  57. package/src/widgets/numeric-input-editor.tsx +2 -0
  58. package/tsconfig-build.tsbuildinfo +1 -1
  59. package/dist/widgets/{interaction → interaction-editor}/constraint-editor.d.ts +0 -0
  60. package/dist/widgets/{interaction-editor.d.ts → interaction-editor/interaction-editor.d.ts} +1 -1
  61. /package/src/widgets/{interaction → interaction-editor}/constraint-editor.tsx +0 -0
@@ -0,0 +1,105 @@
1
+ import {
2
+ components,
3
+ Changeable,
4
+ Dependencies,
5
+ EditorJsonify,
6
+ KhanColors,
7
+ ColorPicker,
8
+ } from "@khanacademy/perseus";
9
+ import PropTypes from "prop-types";
10
+ import * as React from "react";
11
+ import _ from "underscore";
12
+
13
+ const {MathInput} = components;
14
+ const {getDependencies} = Dependencies;
15
+
16
+ type RectangleEditorProps = any;
17
+
18
+ //
19
+ // Editor for rectangles
20
+ //
21
+ // TODO(eater): Factor this out maybe?
22
+ //
23
+ class RectangleEditor extends React.Component<RectangleEditorProps> {
24
+ static propTypes = {
25
+ ...Changeable.propTypes,
26
+ color: PropTypes.string,
27
+ coordX: PropTypes.string,
28
+ coordY: PropTypes.string,
29
+ height: PropTypes.string,
30
+ width: PropTypes.string,
31
+ };
32
+
33
+ static defaultProps = {
34
+ coordX: "-5",
35
+ coordY: "5",
36
+ width: "2",
37
+ height: "3",
38
+ color: KhanColors.LIGHT_BLUE,
39
+ };
40
+
41
+ change: (arg1: any, arg2?: any, arg3?: any) => any = (...args) => {
42
+ return Changeable.change.apply(this, args);
43
+ };
44
+
45
+ serialize = () => {
46
+ return EditorJsonify.serialize.call(this);
47
+ };
48
+
49
+ render(): React.ReactNode {
50
+ const {TeX} = getDependencies();
51
+ const analyticsStub = {onAnalyticsEvent: () => Promise.resolve()};
52
+
53
+ return (
54
+ <div className="graph-settings">
55
+ <div className="perseus-widget-row">
56
+ Bottom left: <TeX>\Large(</TeX>
57
+ <MathInput
58
+ buttonsVisible="never"
59
+ value={this.props.coordX}
60
+ onChange={this.change("coordX")}
61
+ analytics={analyticsStub}
62
+ />
63
+ <TeX>,</TeX>{" "}
64
+ <MathInput
65
+ buttonsVisible="never"
66
+ value={this.props.coordY}
67
+ onChange={this.change("coordY")}
68
+ analytics={analyticsStub}
69
+ />
70
+ <TeX>\Large)</TeX>
71
+ </div>
72
+ <div className="perseus-widget-row">
73
+ Width:{" "}
74
+ <MathInput
75
+ buttonsVisible="never"
76
+ value={this.props.width}
77
+ onChange={this.change("width")}
78
+ analytics={analyticsStub}
79
+ />
80
+ </div>
81
+ <div className="perseus-widget-row">
82
+ Height:{" "}
83
+ <MathInput
84
+ buttonsVisible="never"
85
+ value={this.props.height}
86
+ onChange={this.change("height")}
87
+ analytics={analyticsStub}
88
+ />
89
+ </div>
90
+ <div className="perseus-widget-row">
91
+ <ColorPicker
92
+ value={this.props.color}
93
+ lightColors={true}
94
+ onChange={this.change("color")}
95
+ />
96
+ </div>
97
+ <div className="perseus-widget-row">
98
+ You want a border? Sorry, draw your own.
99
+ </div>
100
+ </div>
101
+ );
102
+ }
103
+ }
104
+
105
+ export default RectangleEditor;
@@ -214,12 +214,23 @@ class NumberLineEditor extends React.Component<Props> {
214
214
  value={this.props.correctRel}
215
215
  // @ts-expect-error - TS2322 - Type '(arg1: ChangeEvent<HTMLInputElement>) => void' is not assignable to type 'ChangeEventHandler<HTMLSelectElement>'.
216
216
  onChange={this.onChangeRelation}
217
+ aria-label="Select relationship"
217
218
  >
218
- <option value="eq"> = </option>
219
- <option value="lt"> &lt; </option>
220
- <option value="gt"> &gt; </option>
221
- <option value="le"> &le; </option>
222
- <option value="ge"> &ge; </option>
219
+ <option value="eq" aria-label="Equal">
220
+ =
221
+ </option>
222
+ <option value="lt" aria-label="Less than">
223
+ &lt;
224
+ </option>
225
+ <option value="gt" aria-label="Greater than">
226
+ &gt;
227
+ </option>
228
+ <option value="le" aria-label="Less than or equal">
229
+ &le;
230
+ </option>
231
+ <option value="ge" aria-label="Greater than or equal">
232
+ &ge;
233
+ </option>
223
234
  </select>{" "}
224
235
  <NumberInput
225
236
  value={this.props.correctX}
@@ -381,6 +381,7 @@ const NumericInputEditor: any = createReactClass({
381
381
  <a
382
382
  href="javascript:void(0)"
383
383
  className="answer-trash"
384
+ aria-label="Delete answer"
384
385
  onClick={() => this.onTrashAnswer(i)}
385
386
  onKeyDown={(e) =>
386
387
  this.onSpace(e, this.onTrashAnswer, i)
@@ -391,6 +392,7 @@ const NumericInputEditor: any = createReactClass({
391
392
  <a
392
393
  href="javascript:void(0)"
393
394
  className="options-toggle"
395
+ aria-label="Toggle options"
394
396
  onClick={() => this.onToggleOptions(i)}
395
397
  onKeyDown={(e) =>
396
398
  this.onSpace(e, this.onToggleOptions, i)