@khanacademy/perseus-editor 2.2.1 → 2.3.0

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 (48) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/all-widgets.d.ts +2 -2
  3. package/dist/all-widgets.js.flow +2 -2
  4. package/dist/components/graph-points-count-selector.d.ts +7 -0
  5. package/dist/components/graph-points-count-selector.js.flow +12 -0
  6. package/dist/components/graph-type-selector.d.ts +7 -0
  7. package/dist/components/graph-type-selector.js.flow +12 -0
  8. package/dist/components/segment-count-selector.d.ts +6 -0
  9. package/dist/components/segment-count-selector.js.flow +11 -0
  10. package/dist/components/widget-editor.d.ts +31 -0
  11. package/dist/components/widget-editor.js.flow +91 -0
  12. package/dist/components/widget-select.d.ts +10 -0
  13. package/dist/components/widget-select.js.flow +16 -0
  14. package/dist/es/index.js +423 -229
  15. package/dist/es/index.js.map +1 -1
  16. package/dist/index.js +431 -225
  17. package/dist/index.js.map +1 -1
  18. package/dist/testing-widgets.d.ts +2 -2
  19. package/dist/testing-widgets.js.flow +2 -2
  20. package/dist/util/points.d.ts +3 -0
  21. package/dist/util/points.js.flow +9 -0
  22. package/dist/widgets/example-graphie-widget.d.ts +2 -2
  23. package/dist/widgets/example-graphie-widget.js.flow +2 -2
  24. package/dist/widgets/example-widget.d.ts +2 -2
  25. package/dist/widgets/example-widget.js.flow +2 -2
  26. package/dist/widgets/interactive-graph-editor.d.ts +3182 -1
  27. package/dist/widgets/interactive-graph-editor.js.flow +5290 -1
  28. package/package.json +9 -3
  29. package/src/__stories__/editor.stories.tsx +105 -4
  30. package/src/article-editor.tsx +1 -1
  31. package/src/{__stories__ → components/__stories__}/section-control-button.stories.tsx +1 -1
  32. package/src/components/graph-points-count-selector.tsx +29 -0
  33. package/src/components/graph-type-selector.tsx +31 -0
  34. package/src/components/json-editor.tsx +0 -1
  35. package/src/components/segment-count-selector.tsx +27 -0
  36. package/src/components/widget-editor.tsx +232 -0
  37. package/src/components/widget-select.tsx +48 -0
  38. package/src/editor.tsx +4 -270
  39. package/src/util/points.test.ts +24 -0
  40. package/src/util/points.ts +13 -0
  41. package/src/widgets/interactive-graph-editor.tsx +294 -48
  42. package/tsconfig-build.json +0 -1
  43. package/tsconfig-build.tsbuildinfo +1 -1
  44. package/dist/diffs/__stories__/perseus-diff-wrapper.d.ts +0 -6
  45. package/dist/diffs/__stories__/perseus-diff-wrapper.js.flow +0 -12
  46. /package/dist/{section-control-button.d.ts → components/section-control-button.d.ts} +0 -0
  47. /package/dist/{section-control-button.js.flow → components/section-control-button.js.flow} +0 -0
  48. /package/src/{section-control-button.tsx → components/section-control-button.tsx} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @khanacademy/perseus-editor
2
2
 
3
+ ## 2.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 5d88d8c5: Restore point count selector in `interactive-graph` widget editor
8
+ - 2e5683d3: Re-enable editing of 'polygon' graph type in interactive-graph-editor
9
+ - 5675178b: Re-enable editing of 'line segment' graph type in interactive-graph-editor
10
+ - d2cf7b67: Re-introduce graph type selector for interactive graph editor
11
+
12
+ ### Patch Changes
13
+
14
+ - d28cbf34: Enhance formatting of the 'Correct answer' field on interactive-graph widget editor (to be more legible)
15
+ - Updated dependencies [5fba7c60]
16
+ - @khanacademy/perseus@6.2.2
17
+
18
+ ## 2.2.2
19
+
20
+ ### Patch Changes
21
+
22
+ - @khanacademy/perseus@6.2.1
23
+
3
24
  ## 2.2.1
4
25
 
5
26
  ### Patch Changes
@@ -10,10 +10,10 @@ declare const _default: readonly Readonly<{
10
10
  defaultAlignment?: import("@khanacademy/perseus").Alignment | undefined;
11
11
  getDefaultAlignment?: (() => import("@khanacademy/perseus").Alignment) | undefined;
12
12
  isLintable?: boolean | undefined;
13
- transform?: import("../../perseus/src/types").WidgetTransform | undefined;
14
13
  tracking?: import("../../perseus/src/types").Tracking | undefined;
15
- staticTransform?: import("../../perseus/src/types").WidgetTransform | undefined;
16
14
  traverseChildWidgets?: any;
15
+ transform?: import("../../perseus/src/types").WidgetTransform | undefined;
16
+ staticTransform?: import("../../perseus/src/types").WidgetTransform | undefined;
17
17
  propUpgrades?: {
18
18
  [key: string]: (arg1: any) => any;
19
19
  } | undefined;
@@ -21,10 +21,10 @@ declare var _default: $ReadOnlyArray<
21
21
  | (() => $Flowgen$Import$_40_khanacademy_2f_perseus.Alignment)
22
22
  | void,
23
23
  isLintable?: boolean | void,
24
- transform?: $Flowgen$Import$_2e__2e__2f__2e__2e__2f_perseus_2f_src_2f_types.WidgetTransform | void,
25
24
  tracking?: $Flowgen$Import$_2e__2e__2f__2e__2e__2f_perseus_2f_src_2f_types.Tracking | void,
26
- staticTransform?: $Flowgen$Import$_2e__2e__2f__2e__2e__2f_perseus_2f_src_2f_types.WidgetTransform | void,
27
25
  traverseChildWidgets?: any,
26
+ transform?: $Flowgen$Import$_2e__2e__2f__2e__2e__2f_perseus_2f_src_2f_types.WidgetTransform | void,
27
+ staticTransform?: $Flowgen$Import$_2e__2e__2f__2e__2e__2f_perseus_2f_src_2f_types.WidgetTransform | void,
28
28
  propUpgrades?: {
29
29
  [key: string]: (arg1: any) => any,
30
30
  } | void,
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { PointValue } from "../util/points";
3
+ declare const GraphPointsCountSelector: ({ numPoints, onChange, }: {
4
+ numPoints?: PointValue | undefined;
5
+ onChange: (points: PointValue) => void;
6
+ }) => JSX.Element;
7
+ export default GraphPointsCountSelector;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Flowtype definitions for data
3
+ * Generated by Flowgen from a Typescript Definition
4
+ * Flowgen v1.21.0
5
+ * @flow
6
+ */
7
+ import { PointValue } from "../util/points";
8
+ declare var GraphPointsCountSelector: (x: {|
9
+ numPoints?: PointValue | void,
10
+ onChange: (points: PointValue) => void,
11
+ |}) => React$Node;
12
+ declare export default typeof GraphPointsCountSelector;
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ type GraphTypeSelectorProps = {
3
+ graphType: string;
4
+ onChange: (newGraphType: string) => void;
5
+ };
6
+ declare const GraphTypeSelector: (props: GraphTypeSelectorProps) => JSX.Element;
7
+ export default GraphTypeSelector;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Flowtype definitions for data
3
+ * Generated by Flowgen from a Typescript Definition
4
+ * Flowgen v1.21.0
5
+ * @flow
6
+ */
7
+ declare type GraphTypeSelectorProps = {|
8
+ graphType: string,
9
+ onChange: (newGraphType: string) => void,
10
+ |};
11
+ declare var GraphTypeSelector: (props: GraphTypeSelectorProps) => React$Node;
12
+ declare export default typeof GraphTypeSelector;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ declare const SegmentCountSelector: ({ numSegments, onChange, }: {
3
+ numSegments?: number | undefined;
4
+ onChange: (numSegments: number) => void;
5
+ }) => JSX.Element;
6
+ export default SegmentCountSelector;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Flowtype definitions for data
3
+ * Generated by Flowgen from a Typescript Definition
4
+ * Flowgen v1.21.0
5
+ * @flow
6
+ */
7
+ declare var SegmentCountSelector: (x: {|
8
+ numSegments?: number | void,
9
+ onChange: (numSegments: number) => void,
10
+ |}) => React$Node;
11
+ declare export default typeof SegmentCountSelector;
@@ -0,0 +1,31 @@
1
+ import * as React from "react";
2
+ import type { WidgetInfo } from "@khanacademy/perseus";
3
+ type WidgetEditorProps = {
4
+ id: string;
5
+ onChange: (widgetInfo: WidgetInfo, cb?: () => unknown, silent?: boolean) => unknown;
6
+ onRemove: () => unknown;
7
+ apiOptions: any;
8
+ } & WidgetInfo;
9
+ type WidgetEditorState = {
10
+ showWidget: boolean;
11
+ widgetInfo: WidgetInfo;
12
+ };
13
+ declare class WidgetEditor extends React.Component<WidgetEditorProps, WidgetEditorState> {
14
+ constructor(props: WidgetEditorProps);
15
+ UNSAFE_componentWillReceiveProps(nextProps: WidgetEditorProps): void;
16
+ _toggleWidget: (e: React.SyntheticEvent) => void;
17
+ _handleWidgetChange: (newProps: WidgetEditorProps, cb: () => unknown, silent: boolean) => void;
18
+ _toggleStatic: (e: Event) => void;
19
+ _handleAlignmentChange: (e: React.SyntheticEvent<HTMLSelectElement>) => void;
20
+ getSaveWarnings: () => any;
21
+ serialize: () => {
22
+ type: "categorizer" | "iframe" | "table" | "video" | "image" | "radio" | "cs-program" | "definition" | "group" | "dropdown" | "example-graphie-widget" | "example-widget" | "explanation" | "expression" | "graded-group-set" | "graded-group" | "grapher" | "input-number" | "interaction" | "interactive-graph" | "label-image" | "lights-puzzle" | "matcher" | "matrix" | "measurer" | "molecule-renderer" | "number-line" | "numeric-input" | "orderer" | "passage-ref" | "passage" | "plotter" | "reaction-diagtram" | "passage-ref-target" | "sequence" | "simple-markdown-tester" | "simulator" | "sorter" | "transformer" | "unit-input";
23
+ alignment: string | undefined;
24
+ static: boolean | undefined;
25
+ graded: boolean | undefined;
26
+ options: any;
27
+ version: import("../../../perseus/src/perseus-types").Version | undefined;
28
+ };
29
+ render(): React.ReactNode;
30
+ }
31
+ export default WidgetEditor;
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Flowtype definitions for data
3
+ * Generated by Flowgen from a Typescript Definition
4
+ * Flowgen v1.21.0
5
+ * @flow
6
+ */
7
+ import * as $Flowgen$Import$_2e__2e__2f__2e__2e__2f__2e__2e__2f_perseus_2f_src_2f_perseus_2d_types from "../../../perseus/src/perseus-types";
8
+ import * as React from "react";
9
+ import type { WidgetInfo } from "@khanacademy/perseus";
10
+ declare type WidgetEditorProps = {|
11
+ ...{|
12
+ id: string,
13
+ onChange: (
14
+ widgetInfo: WidgetInfo,
15
+ cb?: () => mixed,
16
+ silent?: boolean
17
+ ) => mixed,
18
+ onRemove: () => mixed,
19
+ apiOptions: any,
20
+ |},
21
+ ...WidgetInfo,
22
+ |};
23
+ declare type WidgetEditorState = {|
24
+ showWidget: boolean,
25
+ widgetInfo: WidgetInfo,
26
+ |};
27
+ declare class WidgetEditor
28
+ extends React.Component<WidgetEditorProps, WidgetEditorState>
29
+ {
30
+ constructor(props: WidgetEditorProps): this;
31
+ UNSAFE_componentWillReceiveProps(nextProps: WidgetEditorProps): void;
32
+ _toggleWidget: (e: SyntheticEvent<>) => void;
33
+ _handleWidgetChange: (
34
+ newProps: WidgetEditorProps,
35
+ cb: () => mixed,
36
+ silent: boolean
37
+ ) => void;
38
+ _toggleStatic: (e: Event) => void;
39
+ _handleAlignmentChange: (e: SyntheticEvent<HTMLSelectElement>) => void;
40
+ getSaveWarnings: () => any;
41
+ serialize: () => {|
42
+ type:
43
+ | "categorizer"
44
+ | "iframe"
45
+ | "table"
46
+ | "video"
47
+ | "image"
48
+ | "radio"
49
+ | "cs-program"
50
+ | "definition"
51
+ | "group"
52
+ | "dropdown"
53
+ | "example-graphie-widget"
54
+ | "example-widget"
55
+ | "explanation"
56
+ | "expression"
57
+ | "graded-group-set"
58
+ | "graded-group"
59
+ | "grapher"
60
+ | "input-number"
61
+ | "interaction"
62
+ | "interactive-graph"
63
+ | "label-image"
64
+ | "lights-puzzle"
65
+ | "matcher"
66
+ | "matrix"
67
+ | "measurer"
68
+ | "molecule-renderer"
69
+ | "number-line"
70
+ | "numeric-input"
71
+ | "orderer"
72
+ | "passage-ref"
73
+ | "passage"
74
+ | "plotter"
75
+ | "reaction-diagtram"
76
+ | "passage-ref-target"
77
+ | "sequence"
78
+ | "simple-markdown-tester"
79
+ | "simulator"
80
+ | "sorter"
81
+ | "transformer"
82
+ | "unit-input",
83
+ alignment: string | void,
84
+ static: boolean | void,
85
+ graded: boolean | void,
86
+ options: any,
87
+ version: $Flowgen$Import$_2e__2e__2f__2e__2e__2f__2e__2e__2f_perseus_2f_src_2f_perseus_2d_types.Version | void,
88
+ |};
89
+ render(): React.Node;
90
+ }
91
+ declare export default typeof WidgetEditor;
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ type WidgetSelectProps = {
3
+ onChange?: (widgetType: string) => unknown;
4
+ };
5
+ declare class WidgetSelect extends React.Component<WidgetSelectProps> {
6
+ shouldComponentUpdate(): boolean;
7
+ handleChange: (e: React.SyntheticEvent<HTMLSelectElement>) => void;
8
+ render(): React.ReactNode;
9
+ }
10
+ export default WidgetSelect;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Flowtype definitions for data
3
+ * Generated by Flowgen from a Typescript Definition
4
+ * Flowgen v1.21.0
5
+ * @flow
6
+ */
7
+ import * as React from "react";
8
+ declare type WidgetSelectProps = {|
9
+ onChange?: (widgetType: string) => mixed,
10
+ |};
11
+ declare class WidgetSelect extends React.Component<WidgetSelectProps> {
12
+ shouldComponentUpdate(): boolean;
13
+ handleChange: (e: SyntheticEvent<HTMLSelectElement>) => void;
14
+ render(): React.Node;
15
+ }
16
+ declare export default typeof WidgetSelect;