@khanacademy/perseus-editor 4.1.8 → 4.2.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.
package/dist/index.js CHANGED
@@ -64,7 +64,7 @@ var i18n__namespace = /*#__PURE__*/_interopNamespace(i18n$1);
64
64
 
65
65
  // This file is processed by a Rollup plugin (replace) to inject the production
66
66
  const libName = "@khanacademy/perseus-editor";
67
- const libVersion = "4.1.8";
67
+ const libVersion = "4.2.0";
68
68
  perseusCore.addLibraryVersionToPerseusDebug(libName, libVersion);
69
69
 
70
70
  function _extends() {
@@ -25916,7 +25916,7 @@ class CSProgramEditor extends React__namespace.Component {
25916
25916
 
25917
25917
  /* eslint-disable @khanacademy/ts-no-error-suppressions */
25918
25918
  const {
25919
- TextInput: TextInput$8
25919
+ TextInput: TextInput$9
25920
25920
  } = perseus.components;
25921
25921
  class DefinitionEditor extends React__namespace.Component {
25922
25922
  static propTypes = {
@@ -25950,7 +25950,7 @@ class DefinitionEditor extends React__namespace.Component {
25950
25950
  target: "_blank"
25951
25951
  }, "Definition style guide"), /*#__PURE__*/React__namespace.createElement("div", {
25952
25952
  className: "perseus-widget-row"
25953
- }, /*#__PURE__*/React__namespace.createElement("label", null, "Word to be defined:", " ", /*#__PURE__*/React__namespace.createElement(TextInput$8, {
25953
+ }, /*#__PURE__*/React__namespace.createElement("label", null, "Word to be defined:", " ", /*#__PURE__*/React__namespace.createElement(TextInput$9, {
25954
25954
  value: this.props.togglePrompt
25955
25955
  // @ts-expect-error - TS2554 - Expected 3 arguments, but got 1.
25956
25956
  ,
@@ -26366,7 +26366,7 @@ class ExampleWidgetEditor extends React__namespace.Component {
26366
26366
 
26367
26367
  /* eslint-disable @khanacademy/ts-no-error-suppressions */
26368
26368
  const {
26369
- TextInput: TextInput$7
26369
+ TextInput: TextInput$8
26370
26370
  } = perseus.components;
26371
26371
  const defaultExplanationProps = {
26372
26372
  showPrompt: "Explain",
@@ -26403,14 +26403,14 @@ class ExplanationEditor extends React__namespace.Component {
26403
26403
  className: "perseus-widget-explanation-editor"
26404
26404
  }, /*#__PURE__*/React__namespace.createElement("div", {
26405
26405
  className: "perseus-widget-row"
26406
- }, /*#__PURE__*/React__namespace.createElement("label", null, "Prompt to show explanation:", " ", /*#__PURE__*/React__namespace.createElement(TextInput$7, {
26406
+ }, /*#__PURE__*/React__namespace.createElement("label", null, "Prompt to show explanation:", " ", /*#__PURE__*/React__namespace.createElement(TextInput$8, {
26407
26407
  value: this.props.showPrompt
26408
26408
  // @ts-expect-error - TS2554 - Expected 3 arguments, but got 1.
26409
26409
  ,
26410
26410
  onChange: this.change("showPrompt")
26411
26411
  }))), /*#__PURE__*/React__namespace.createElement("div", {
26412
26412
  className: "perseus-widget-row"
26413
- }, /*#__PURE__*/React__namespace.createElement("label", null, "Prompt to hide explanation:", " ", /*#__PURE__*/React__namespace.createElement(TextInput$7, {
26413
+ }, /*#__PURE__*/React__namespace.createElement("label", null, "Prompt to hide explanation:", " ", /*#__PURE__*/React__namespace.createElement(TextInput$8, {
26414
26414
  value: this.props.hidePrompt
26415
26415
  // @ts-expect-error - TS2554 - Expected 3 arguments, but got 1.
26416
26416
  ,
@@ -26988,7 +26988,7 @@ class AnswerOption extends React__namespace.Component {
26988
26988
  /* eslint-disable @khanacademy/ts-no-error-suppressions */
26989
26989
  const {
26990
26990
  InlineIcon: InlineIcon$5,
26991
- TextInput: TextInput$6
26991
+ TextInput: TextInput$7
26992
26992
  } = perseus.components;
26993
26993
  const {
26994
26994
  iconPlus: iconPlus$2,
@@ -27044,7 +27044,7 @@ class GradedGroupEditor extends React__namespace.Component {
27044
27044
  className: "perseus-widget-row"
27045
27045
  }, /*#__PURE__*/React__namespace.createElement("label", {
27046
27046
  className: aphrodite.css(styles$b.title)
27047
- }, "Title:", " ", /*#__PURE__*/React__namespace.createElement(TextInput$6, {
27047
+ }, "Title:", " ", /*#__PURE__*/React__namespace.createElement(TextInput$7, {
27048
27048
  value: this.props.title,
27049
27049
  className: aphrodite.css(styles$b.input)
27050
27050
  // @ts-expect-error - TS2554 - Expected 3 arguments, but got 1.
@@ -28460,7 +28460,7 @@ const styles$a = aphrodite.StyleSheet.create({
28460
28460
  });
28461
28461
 
28462
28462
  const {
28463
- NumberInput: NumberInput$g
28463
+ NumberInput: NumberInput$h
28464
28464
  } = perseus.components;
28465
28465
  const {
28466
28466
  getDependencies: getDependencies$8
@@ -28520,7 +28520,7 @@ class FunctionEditor extends React__namespace.Component {
28520
28520
  className: "perseus-widget-row"
28521
28521
  }, /*#__PURE__*/React__namespace.createElement("div", {
28522
28522
  className: "perseus-widget-left-col"
28523
- }, "Width:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$g, {
28523
+ }, "Width:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$h, {
28524
28524
  value: this.props.strokeWidth,
28525
28525
  placeholder: 2,
28526
28526
  onChange: this.change("strokeWidth")
@@ -28529,7 +28529,7 @@ class FunctionEditor extends React__namespace.Component {
28529
28529
  }
28530
28530
 
28531
28531
  const {
28532
- TextInput: TextInput$5
28532
+ TextInput: TextInput$6
28533
28533
  } = perseus.components;
28534
28534
  const {
28535
28535
  getDependencies: getDependencies$7
@@ -28563,7 +28563,7 @@ class LabelEditor extends React__namespace.Component {
28563
28563
  className: "graph-settings"
28564
28564
  }, /*#__PURE__*/React__namespace.createElement("div", {
28565
28565
  className: "perseus-widget-row"
28566
- }, /*#__PURE__*/React__namespace.createElement(TextInput$5, {
28566
+ }, /*#__PURE__*/React__namespace.createElement(TextInput$6, {
28567
28567
  value: this.props.label,
28568
28568
  onChange: this.change("label"),
28569
28569
  style: {
@@ -28587,7 +28587,7 @@ class LabelEditor extends React__namespace.Component {
28587
28587
  }
28588
28588
 
28589
28589
  const {
28590
- NumberInput: NumberInput$f
28590
+ NumberInput: NumberInput$g
28591
28591
  } = perseus.components;
28592
28592
  const {
28593
28593
  getDependencies: getDependencies$6
@@ -28655,7 +28655,7 @@ class LineEditor extends React__namespace.Component {
28655
28655
  className: "perseus-widget-row"
28656
28656
  }, /*#__PURE__*/React__namespace.createElement("div", {
28657
28657
  className: "perseus-widget-left-col"
28658
- }, "Width:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$f, {
28658
+ }, "Width:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$g, {
28659
28659
  value: this.props.strokeWidth,
28660
28660
  placeholder: 2,
28661
28661
  onChange: this.change("strokeWidth")
@@ -28665,7 +28665,7 @@ class LineEditor extends React__namespace.Component {
28665
28665
 
28666
28666
  const {
28667
28667
  ButtonGroup: ButtonGroup$2,
28668
- NumberInput: NumberInput$e
28668
+ NumberInput: NumberInput$f
28669
28669
  } = perseus.components;
28670
28670
  class ConstraintEditor extends React__namespace.Component {
28671
28671
  static defaultProps = {
@@ -28705,7 +28705,7 @@ class ConstraintEditor extends React__namespace.Component {
28705
28705
  onChange: this.change("constraint")
28706
28706
  })), this.props.constraint === "snap" && /*#__PURE__*/React__namespace.createElement("div", {
28707
28707
  className: "perseus-widget-row"
28708
- }, "Snap:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$e, {
28708
+ }, "Snap:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$f, {
28709
28709
  value: this.props.snap,
28710
28710
  placeholder: 0,
28711
28711
  onChange: this.change("snap")
@@ -28748,7 +28748,7 @@ class ConstraintEditor extends React__namespace.Component {
28748
28748
  }
28749
28749
 
28750
28750
  const {
28751
- NumberInput: NumberInput$d
28751
+ NumberInput: NumberInput$e
28752
28752
  } = perseus.components;
28753
28753
  const {
28754
28754
  getDependencies: getDependencies$5
@@ -28806,13 +28806,13 @@ class MovableLineEditor extends React__namespace.Component {
28806
28806
  onChange: this.change("endY")
28807
28807
  }), /*#__PURE__*/React__namespace.createElement(TeX, null, "\\Large)")), /*#__PURE__*/React__namespace.createElement("div", {
28808
28808
  className: "perseus-widget-row"
28809
- }, "Start updates ", /*#__PURE__*/React__namespace.createElement(TeX, null, "(x_n, y_n)"), " for ", /*#__PURE__*/React__namespace.createElement(TeX, null, "n ="), /*#__PURE__*/React__namespace.createElement(NumberInput$d, {
28809
+ }, "Start updates ", /*#__PURE__*/React__namespace.createElement(TeX, null, "(x_n, y_n)"), " for ", /*#__PURE__*/React__namespace.createElement(TeX, null, "n ="), /*#__PURE__*/React__namespace.createElement(NumberInput$e, {
28810
28810
  value: this.props.startSubscript,
28811
28811
  placeholder: 0,
28812
28812
  onChange: this.change("startSubscript")
28813
28813
  })), /*#__PURE__*/React__namespace.createElement("div", {
28814
28814
  className: "perseus-widget-row"
28815
- }, "End updates ", /*#__PURE__*/React__namespace.createElement(TeX, null, "(x_m, y_m)"), " for ", /*#__PURE__*/React__namespace.createElement(TeX, null, "m ="), /*#__PURE__*/React__namespace.createElement(NumberInput$d, {
28815
+ }, "End updates ", /*#__PURE__*/React__namespace.createElement(TeX, null, "(x_m, y_m)"), " for ", /*#__PURE__*/React__namespace.createElement(TeX, null, "m ="), /*#__PURE__*/React__namespace.createElement(NumberInput$e, {
28816
28816
  value: this.props.endSubscript,
28817
28817
  placeholder: 0,
28818
28818
  onChange: this.change("endSubscript")
@@ -28823,7 +28823,7 @@ class MovableLineEditor extends React__namespace.Component {
28823
28823
  }
28824
28824
 
28825
28825
  const {
28826
- NumberInput: NumberInput$c
28826
+ NumberInput: NumberInput$d
28827
28827
  } = perseus.components;
28828
28828
  const {
28829
28829
  getDependencies: getDependencies$4
@@ -28871,7 +28871,7 @@ class MovablePointEditor extends React__namespace.Component {
28871
28871
  onChange: this.change("startY")
28872
28872
  }), /*#__PURE__*/React__namespace.createElement(TeX, null, "\\Large)")), /*#__PURE__*/React__namespace.createElement("div", {
28873
28873
  className: "perseus-widget-row"
28874
- }, "Update ", /*#__PURE__*/React__namespace.createElement(TeX, null, "(x_n, y_n)"), " for ", /*#__PURE__*/React__namespace.createElement(TeX, null, "n ="), " ", /*#__PURE__*/React__namespace.createElement(NumberInput$c, {
28874
+ }, "Update ", /*#__PURE__*/React__namespace.createElement(TeX, null, "(x_n, y_n)"), " for ", /*#__PURE__*/React__namespace.createElement(TeX, null, "n ="), " ", /*#__PURE__*/React__namespace.createElement(NumberInput$d, {
28875
28875
  value: this.props.varSubscript,
28876
28876
  placeholder: 0,
28877
28877
  onChange: this.change("varSubscript")
@@ -28880,7 +28880,7 @@ class MovablePointEditor extends React__namespace.Component {
28880
28880
  }
28881
28881
 
28882
28882
  const {
28883
- NumberInput: NumberInput$b
28883
+ NumberInput: NumberInput$c
28884
28884
  } = perseus.components;
28885
28885
  const {
28886
28886
  getDependencies: getDependencies$3
@@ -28946,7 +28946,7 @@ class ParametricEditor extends React__namespace.Component {
28946
28946
  className: "perseus-widget-row"
28947
28947
  }, /*#__PURE__*/React__namespace.createElement("div", {
28948
28948
  className: "perseus-widget-left-col"
28949
- }, "Width:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$b, {
28949
+ }, "Width:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$c, {
28950
28950
  value: this.props.strokeWidth,
28951
28951
  placeholder: 2,
28952
28952
  onChange: this.change("strokeWidth")
@@ -31423,7 +31423,7 @@ const styles = aphrodite.StyleSheet.create({
31423
31423
  /* eslint-disable @khanacademy/ts-no-error-suppressions */
31424
31424
  const {
31425
31425
  InfoTip: InfoTip$c,
31426
- NumberInput: NumberInput$a,
31426
+ NumberInput: NumberInput$b,
31427
31427
  PropCheckBox: PropCheckBox$7
31428
31428
  } = perseus.components;
31429
31429
  const MAX_SIZE = 8;
@@ -31555,11 +31555,11 @@ class LightsPuzzleEditor extends React__namespace.Component {
31555
31555
  };
31556
31556
  })();
31557
31557
  render() {
31558
- return /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("div", null, "Width:", /*#__PURE__*/React__namespace.createElement(NumberInput$a, {
31558
+ return /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("div", null, "Width:", /*#__PURE__*/React__namespace.createElement(NumberInput$b, {
31559
31559
  value: this._width(),
31560
31560
  placeholder: 5,
31561
31561
  onChange: this._changeWidth
31562
- }), ", ", "Height:", /*#__PURE__*/React__namespace.createElement(NumberInput$a, {
31562
+ }), ", ", "Height:", /*#__PURE__*/React__namespace.createElement(NumberInput$b, {
31563
31563
  value: this._height(),
31564
31564
  placeholder: 5,
31565
31565
  onChange: this._changeHeight
@@ -31840,7 +31840,7 @@ class MatrixEditor extends React__namespace.Component {
31840
31840
  /* eslint-disable @khanacademy/ts-no-error-suppressions */
31841
31841
  const {
31842
31842
  InfoTip: InfoTip$a,
31843
- NumberInput: NumberInput$9,
31843
+ NumberInput: NumberInput$a,
31844
31844
  PropCheckBox: PropCheckBox$5,
31845
31845
  RangeInput: RangeInput$2
31846
31846
  } = perseus.components;
@@ -31893,14 +31893,14 @@ class MeasurerEditor extends React__namespace.Component {
31893
31893
  className: "perseus-widget-row"
31894
31894
  }, /*#__PURE__*/React__namespace.createElement("label", {
31895
31895
  className: "perseus-widget-left-col"
31896
- }, "Pixels from top:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$9, {
31896
+ }, "Pixels from top:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$a, {
31897
31897
  placeholder: 0,
31898
31898
  onChange: this._changeTop,
31899
31899
  value: image.top,
31900
31900
  useArrowKeys: true
31901
31901
  })), /*#__PURE__*/React__namespace.createElement("label", {
31902
31902
  className: "perseus-widget-right-col"
31903
- }, "Pixels from left:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$9, {
31903
+ }, "Pixels from left:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$a, {
31904
31904
  placeholder: 0,
31905
31905
  onChange: this._changeLeft,
31906
31906
  value: image.left,
@@ -31946,14 +31946,14 @@ class MeasurerEditor extends React__namespace.Component {
31946
31946
  key: n,
31947
31947
  value: n
31948
31948
  }, n);
31949
- })))), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "Ruler pixels per unit:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$9, {
31949
+ })))), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "Ruler pixels per unit:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$a, {
31950
31950
  placeholder: 40
31951
31951
  // @ts-expect-error - TS2554 - Expected 3 arguments, but got 1.
31952
31952
  ,
31953
31953
  onChange: this.change("rulerPixels"),
31954
31954
  value: this.props.rulerPixels,
31955
31955
  useArrowKeys: true
31956
- }))), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "Ruler length in units:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$9, {
31956
+ }))), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "Ruler length in units:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$a, {
31957
31957
  placeholder: 10
31958
31958
  // @ts-expect-error - TS2554 - Expected 3 arguments, but got 1.
31959
31959
  ,
@@ -32001,8 +32001,8 @@ class MeasurerEditor extends React__namespace.Component {
32001
32001
  }
32002
32002
 
32003
32003
  const {
32004
- NumberInput: NumberInput$8,
32005
- TextInput: TextInput$4
32004
+ NumberInput: NumberInput$9,
32005
+ TextInput: TextInput$5
32006
32006
  } = perseus.components;
32007
32007
  class MoleculeWidgetEditor extends React__namespace.Component {
32008
32008
  static propTypes = {
@@ -32036,10 +32036,10 @@ class MoleculeWidgetEditor extends React__namespace.Component {
32036
32036
  return perseus.EditorJsonify.serialize.call(this);
32037
32037
  };
32038
32038
  render() {
32039
- return /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "SMILES:\xA0", /*#__PURE__*/React__namespace.createElement(TextInput$4, {
32039
+ return /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "SMILES:\xA0", /*#__PURE__*/React__namespace.createElement(TextInput$5, {
32040
32040
  onChange: this.updateMolecule,
32041
32041
  value: this.props.smiles
32042
- }))), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "Rotation (deg):\xA0", /*#__PURE__*/React__namespace.createElement(NumberInput$8, {
32042
+ }))), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "Rotation (deg):\xA0", /*#__PURE__*/React__namespace.createElement(NumberInput$9, {
32043
32043
  onChange: this.updateRotation,
32044
32044
  value: this.props.rotationAngle
32045
32045
  }))));
@@ -32050,7 +32050,7 @@ class MoleculeWidgetEditor extends React__namespace.Component {
32050
32050
  const {
32051
32051
  ButtonGroup: ButtonGroup$1,
32052
32052
  InfoTip: InfoTip$9,
32053
- NumberInput: NumberInput$7,
32053
+ NumberInput: NumberInput$8,
32054
32054
  PropCheckBox: PropCheckBox$4,
32055
32055
  RangeInput: RangeInput$1
32056
32056
  } = perseus.components;
@@ -32230,7 +32230,7 @@ class NumberLineEditor extends React__namespace.Component {
32230
32230
  }, "\u2264"), /*#__PURE__*/React__namespace.createElement("option", {
32231
32231
  value: "ge",
32232
32232
  "aria-label": "Greater than or equal"
32233
- }, "\u2265")), " ", /*#__PURE__*/React__namespace.createElement(NumberInput$7, {
32233
+ }, "\u2265")), " ", /*#__PURE__*/React__namespace.createElement(NumberInput$8, {
32234
32234
  value: this.props.correctX,
32235
32235
  format: this.props.labelStyle
32236
32236
  // eslint-disable-next-line react/jsx-no-bind
@@ -32242,7 +32242,7 @@ class NumberLineEditor extends React__namespace.Component {
32242
32242
  useArrowKeys: true
32243
32243
  }), /*#__PURE__*/React__namespace.createElement(InfoTip$9, null, /*#__PURE__*/React__namespace.createElement("p", null, "This is the correct answer. The answer is validated (as right or wrong) by using only the end position of the point and the relation (=, <, >, \u2264, \u2265)."))), /*#__PURE__*/React__namespace.createElement("div", {
32244
32244
  className: "perseus-widget-row"
32245
- }, this.props.static ? /*#__PURE__*/React__namespace.createElement("label", null, "Range:") : /*#__PURE__*/React__namespace.createElement("label", null, "Position:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$7, {
32245
+ }, this.props.static ? /*#__PURE__*/React__namespace.createElement("label", null, "Range:") : /*#__PURE__*/React__namespace.createElement("label", null, "Position:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$8, {
32246
32246
  value: this.props.initialX,
32247
32247
  format: this.props.labelStyle
32248
32248
  // eslint-disable-next-line react/jsx-no-bind
@@ -32262,7 +32262,7 @@ class NumberLineEditor extends React__namespace.Component {
32262
32262
  className: "perseus-widget-row"
32263
32263
  }, /*#__PURE__*/React__namespace.createElement("div", {
32264
32264
  className: "perseus-widget-left-col"
32265
- }, "Labels:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$7, {
32265
+ }, "Labels:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$8, {
32266
32266
  value: labelRange[0],
32267
32267
  placeholder: range[0],
32268
32268
  format: this.props.labelStyle,
@@ -32271,7 +32271,7 @@ class NumberLineEditor extends React__namespace.Component {
32271
32271
  ,
32272
32272
  onChange: this.onLabelRangeChange.bind(this, 0),
32273
32273
  useArrowKeys: true
32274
- }), /*#__PURE__*/React__namespace.createElement("span", null, " & "), /*#__PURE__*/React__namespace.createElement(NumberInput$7, {
32274
+ }), /*#__PURE__*/React__namespace.createElement("span", null, " & "), /*#__PURE__*/React__namespace.createElement(NumberInput$8, {
32275
32275
  value: labelRange[1],
32276
32276
  placeholder: range[1],
32277
32277
  format: this.props.labelStyle,
@@ -32309,7 +32309,7 @@ class NumberLineEditor extends React__namespace.Component {
32309
32309
  onChange: this.props.onChange
32310
32310
  })), /*#__PURE__*/React__namespace.createElement("div", {
32311
32311
  className: "perseus-widget-row"
32312
- }, isTickCtrl && /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement("label", null, "Start num divisions at", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$7, {
32312
+ }, isTickCtrl && /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement("label", null, "Start num divisions at", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$8, {
32313
32313
  value: this.props.numDivisions || null,
32314
32314
  format: "decimal",
32315
32315
  onChange: this.onNumDivisionsChange,
@@ -32318,7 +32318,7 @@ class NumberLineEditor extends React__namespace.Component {
32318
32318
  },
32319
32319
  placeholder: width / this.props.tickStep,
32320
32320
  useArrowKeys: true
32321
- })), /*#__PURE__*/React__namespace.createElement(InfoTip$9, null, /*#__PURE__*/React__namespace.createElement("p", null, "This controls the number (and position) of the tick marks. The number of divisions is constrained to", " " + divisionRange[0] + EN_DASH + divisionRange[1], ".", /*#__PURE__*/React__namespace.createElement("br", null), /*#__PURE__*/React__namespace.createElement("strong", null, "Note:"), " The user will be able to specify the number of divisions in a number input."))), !isTickCtrl && /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement("label", null, "Num divisions:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$7, {
32321
+ })), /*#__PURE__*/React__namespace.createElement(InfoTip$9, null, /*#__PURE__*/React__namespace.createElement("p", null, "This controls the number (and position) of the tick marks. The number of divisions is constrained to", " " + divisionRange[0] + EN_DASH + divisionRange[1], ".", /*#__PURE__*/React__namespace.createElement("br", null), /*#__PURE__*/React__namespace.createElement("strong", null, "Note:"), " The user will be able to specify the number of divisions in a number input."))), !isTickCtrl && /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement("label", null, "Num divisions:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$8, {
32322
32322
  value: this.props.numDivisions || null,
32323
32323
  format: "decimal",
32324
32324
  onChange: this.onNumDivisionsChange,
@@ -32327,7 +32327,7 @@ class NumberLineEditor extends React__namespace.Component {
32327
32327
  },
32328
32328
  placeholder: width / this.props.tickStep,
32329
32329
  useArrowKeys: true
32330
- })), " ", /*#__PURE__*/React__namespace.createElement("label", null, "or tick step:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$7, {
32330
+ })), " ", /*#__PURE__*/React__namespace.createElement("label", null, "or tick step:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$8, {
32331
32331
  value: this.props.tickStep || null,
32332
32332
  format: this.props.labelStyle,
32333
32333
  onChange: this.onTickStepChange,
@@ -32338,7 +32338,7 @@ class NumberLineEditor extends React__namespace.Component {
32338
32338
  useArrowKeys: true
32339
32339
  })), /*#__PURE__*/React__namespace.createElement(InfoTip$9, null, /*#__PURE__*/React__namespace.createElement("p", null, "This controls the number (and position) of the tick marks; you can either set the number of divisions (2 divisions would split the entire range in two halves), or the tick step (the distance between ticks) and the other value will be updated accordingly.", " ", /*#__PURE__*/React__namespace.createElement("br", null), /*#__PURE__*/React__namespace.createElement("strong", null, "Note:"), " There is no check to see if labels coordinate with the tick marks, which may be confusing for users if the blue labels and black ticks are off-step.")))), /*#__PURE__*/React__namespace.createElement("div", {
32340
32340
  className: "perseus-widget-row"
32341
- }, /*#__PURE__*/React__namespace.createElement("label", null, "Snap increments per tick:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$7, {
32341
+ }, /*#__PURE__*/React__namespace.createElement("label", null, "Snap increments per tick:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$8, {
32342
32342
  value: snapDivisions,
32343
32343
  checkValidity: val => val > 0,
32344
32344
  format: this.props.labelStyle
@@ -32356,9 +32356,9 @@ const {
32356
32356
  InfoTip: InfoTip$8,
32357
32357
  InlineIcon: InlineIcon$3,
32358
32358
  MultiButtonGroup,
32359
- NumberInput: NumberInput$6,
32359
+ NumberInput: NumberInput$7,
32360
32360
  PropCheckBox: PropCheckBox$3,
32361
- TextInput: TextInput$3
32361
+ TextInput: TextInput$4
32362
32362
  } = perseus.components;
32363
32363
  const {
32364
32364
  iconGear,
@@ -32462,7 +32462,7 @@ const NumericInputEditor = createReactClass__default["default"]({
32462
32462
  })));
32463
32463
  const maxError = i => /*#__PURE__*/React__namespace.createElement("div", {
32464
32464
  className: "perseus-widget-row"
32465
- }, /*#__PURE__*/React__namespace.createElement("label", null, "Max error", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$6, {
32465
+ }, /*#__PURE__*/React__namespace.createElement("label", null, "Max error", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$7, {
32466
32466
  className: "max-error",
32467
32467
  value: answers[i]["maxError"],
32468
32468
  onChange: this.updateAnswer(i, "maxError"),
@@ -32491,7 +32491,7 @@ const NumericInputEditor = createReactClass__default["default"]({
32491
32491
  }));
32492
32492
  const labelText = /*#__PURE__*/React__namespace.createElement("div", {
32493
32493
  className: "perseus-widget-row"
32494
- }, /*#__PURE__*/React__namespace.createElement("label", null, "Label text:", " ", /*#__PURE__*/React__namespace.createElement(TextInput$3, {
32494
+ }, /*#__PURE__*/React__namespace.createElement("label", null, "Label text:", " ", /*#__PURE__*/React__namespace.createElement(TextInput$4, {
32495
32495
  value: this.props.labelText,
32496
32496
  onChange: this.change("labelText")
32497
32497
  })), /*#__PURE__*/React__namespace.createElement(InfoTip$8, null, /*#__PURE__*/React__namespace.createElement("p", null, "Text to describe this input. This will be shown to users using screenreaders.")));
@@ -32532,7 +32532,7 @@ const NumericInputEditor = createReactClass__default["default"]({
32532
32532
  key: i
32533
32533
  }, /*#__PURE__*/React__namespace.createElement("div", {
32534
32534
  className: "input-answer-editor-value-container" + (answer.maxError ? " with-max-error" : "")
32535
- }, /*#__PURE__*/React__namespace.createElement(NumberInput$6, {
32535
+ }, /*#__PURE__*/React__namespace.createElement(NumberInput$7, {
32536
32536
  value: answer.value,
32537
32537
  className: "numeric-input-value",
32538
32538
  placeholder: "answer",
@@ -32579,7 +32579,7 @@ const NumericInputEditor = createReactClass__default["default"]({
32579
32579
  className: "max-error-container"
32580
32580
  }, /*#__PURE__*/React__namespace.createElement("div", {
32581
32581
  className: "max-error-plusmn"
32582
- }, "\xB1"), /*#__PURE__*/React__namespace.createElement(NumberInput$6, {
32582
+ }, "\xB1"), /*#__PURE__*/React__namespace.createElement(NumberInput$7, {
32583
32583
  placeholder: 0,
32584
32584
  value: answers[i]["maxError"],
32585
32585
  format: ___default["default"].last(answer.answerForms),
@@ -32909,8 +32909,8 @@ class PassageEditor extends React__namespace.Component {
32909
32909
  /* eslint-disable @khanacademy/ts-no-error-suppressions */
32910
32910
  const {
32911
32911
  InfoTip: InfoTip$5,
32912
- NumberInput: NumberInput$5,
32913
- TextInput: TextInput$2
32912
+ NumberInput: NumberInput$6,
32913
+ TextInput: TextInput$3
32914
32914
  } = perseus.components;
32915
32915
  class PassageRefEditor extends React__namespace.Component {
32916
32916
  static propTypes = {
@@ -32938,17 +32938,17 @@ class PassageRefEditor extends React__namespace.Component {
32938
32938
  return perseus.EditorJsonify.serialize.call(this);
32939
32939
  };
32940
32940
  render() {
32941
- return /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "Passage Number: ", /*#__PURE__*/React__namespace.createElement(NumberInput$5, {
32941
+ return /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "Passage Number: ", /*#__PURE__*/React__namespace.createElement(NumberInput$6, {
32942
32942
  value: this.props.passageNumber
32943
32943
  // @ts-expect-error - TS2554 - Expected 3 arguments, but got 1.
32944
32944
  ,
32945
32945
  onChange: this.change("passageNumber")
32946
- }))), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "Reference Number: ", /*#__PURE__*/React__namespace.createElement(NumberInput$5, {
32946
+ }))), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "Reference Number: ", /*#__PURE__*/React__namespace.createElement(NumberInput$6, {
32947
32947
  value: this.props.referenceNumber
32948
32948
  // @ts-expect-error - TS2554 - Expected 3 arguments, but got 1.
32949
32949
  ,
32950
32950
  onChange: this.change("referenceNumber")
32951
- }))), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "Summary Text: ", /*#__PURE__*/React__namespace.createElement(TextInput$2, {
32951
+ }))), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "Summary Text: ", /*#__PURE__*/React__namespace.createElement(TextInput$3, {
32952
32952
  value: this.props.summaryText
32953
32953
  // @ts-expect-error - TS2554 - Expected 3 arguments, but got 1.
32954
32954
  ,
@@ -32995,7 +32995,7 @@ class PassageRefTargetEditor extends React__namespace.Component {
32995
32995
 
32996
32996
  const {
32997
32997
  InfoTip: InfoTip$4,
32998
- NumberInput: NumberInput$4,
32998
+ NumberInput: NumberInput$5,
32999
32999
  RangeInput,
33000
33000
  TextListEditor: TextListEditor$1
33001
33001
  } = perseus.components;
@@ -33245,7 +33245,7 @@ class PlotterEditor extends React__namespace.Component {
33245
33245
  className: "set-from-scale-box"
33246
33246
  }, /*#__PURE__*/React__namespace.createElement("span", {
33247
33247
  className: "categories-title"
33248
- }, "Set Categories From Scale"), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "Tick Step:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$4, {
33248
+ }, "Set Categories From Scale"), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "Tick Step:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$5, {
33249
33249
  placeholder: 1,
33250
33250
  useArrowKeys: true,
33251
33251
  value: this.state.tickStep,
@@ -33257,7 +33257,7 @@ class PlotterEditor extends React__namespace.Component {
33257
33257
  onChange: this.handleChangeRange
33258
33258
  }))), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("button", {
33259
33259
  onClick: this.setCategoriesFromScale
33260
- }, "Set Categories", " "))), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "Label Interval:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$4, {
33260
+ }, "Set Categories", " "))), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "Label Interval:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$5, {
33261
33261
  useArrowKeys: true,
33262
33262
  value: this.props.labelInterval,
33263
33263
  onChange: this.changeLabelInterval
@@ -33303,6 +33303,65 @@ class PlotterEditor extends React__namespace.Component {
33303
33303
  }
33304
33304
  }
33305
33305
 
33306
+ /**
33307
+ * This editor is for embedding Khan Academy Python programs.
33308
+ */
33309
+ const {
33310
+ NumberInput: NumberInput$4,
33311
+ TextInput: TextInput$2
33312
+ } = perseus.components;
33313
+ function validateOptions(height, programID) {
33314
+ const errors = [];
33315
+ if (programID === "") {
33316
+ errors.push("The program ID is required.");
33317
+ }
33318
+ if (!Number.isInteger(height) || height < 1) {
33319
+ errors.push("The height must be a positive integer.");
33320
+ }
33321
+ return errors;
33322
+ }
33323
+
33324
+ /**
33325
+ * This is the main editor for this widget, to specify all the options.
33326
+ */
33327
+ class PythonProgramEditor extends React__namespace.Component {
33328
+ static widgetName = "python-program";
33329
+ static defaultProps = {
33330
+ programID: "",
33331
+ height: 400
33332
+ };
33333
+ change = (() => {
33334
+ var _this = this;
33335
+ return function () {
33336
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
33337
+ args[_key] = arguments[_key];
33338
+ }
33339
+ // @ts-expect-error - TS2345 - Argument of type 'readonly unknown[]' is not assignable to parameter of type 'any[]'.
33340
+ return perseus.Changeable.change.apply(_this, args);
33341
+ };
33342
+ })();
33343
+ serialize() {
33344
+ return {
33345
+ programID: this.props.programID,
33346
+ height: this.props.height
33347
+ };
33348
+ }
33349
+ getSaveWarnings = () => {
33350
+ return validateOptions(this.props.height, this.props.programID);
33351
+ };
33352
+ render() {
33353
+ return /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("label", null, "User Program ID:", " ", /*#__PURE__*/React__namespace.createElement(TextInput$2, {
33354
+ value: this.props.programID,
33355
+ onChange: this.change("programID"),
33356
+ placeholder: "123"
33357
+ })), /*#__PURE__*/React__namespace.createElement("br", null), /*#__PURE__*/React__namespace.createElement("label", null, "Height:", " ", /*#__PURE__*/React__namespace.createElement(NumberInput$4, {
33358
+ value: this.props.height,
33359
+ onChange: this.change("height"),
33360
+ placeholder: "400"
33361
+ })));
33362
+ }
33363
+ }
33364
+
33306
33365
  /* eslint-disable jsx-a11y/anchor-is-valid, react/forbid-prop-types, react/sort-comp */
33307
33366
  const {
33308
33367
  InlineIcon: InlineIcon$2,
@@ -34435,7 +34494,7 @@ class VideoEditor extends React__namespace.Component {
34435
34494
  }
34436
34495
  }
34437
34496
 
34438
- var AllEditors = [CategorizerEditor, CSProgramEditor, DefinitionEditor, DropdownEditor, ExampleGraphieWidgetEditor, ExampleWidgetEditor, ExplanationEditor, ExpressionEditor, GradedGroupEditor, GradedGroupSetEditor, GrapherEditor, GroupEditor, IframeEditor, ImageEditor, InputNumberEditor, InteractionEditor, InteractiveGraphEditor, LabelImageEditor, LightsPuzzleEditor, MatcherEditor, MatrixEditor, MeasurerEditor, MoleculeWidgetEditor, NumberLineEditor, NumericInputEditor, OrdererEditor, PassageEditor, PassageRefEditor, PassageRefTargetEditor, PlotterEditor, ReactionDiagramWidgetEditor, SequenceEditor, SimpleMarkdownTesterEditor, SimulatorEditor, SorterEditor, TableEditor, UnitInputEditor, VideoEditor, RadioEditor, DeprecatedStandinEditor];
34497
+ var AllEditors = [CategorizerEditor, CSProgramEditor, DefinitionEditor, DropdownEditor, ExampleGraphieWidgetEditor, ExampleWidgetEditor, ExplanationEditor, ExpressionEditor, GradedGroupEditor, GradedGroupSetEditor, GrapherEditor, GroupEditor, IframeEditor, ImageEditor, InputNumberEditor, InteractionEditor, InteractiveGraphEditor, LabelImageEditor, LightsPuzzleEditor, MatcherEditor, MatrixEditor, MeasurerEditor, MoleculeWidgetEditor, NumberLineEditor, NumericInputEditor, OrdererEditor, PassageEditor, PassageRefEditor, PassageRefTargetEditor, PlotterEditor, PythonProgramEditor, ReactionDiagramWidgetEditor, SequenceEditor, SimpleMarkdownTesterEditor, SimulatorEditor, SorterEditor, TableEditor, UnitInputEditor, VideoEditor, RadioEditor, DeprecatedStandinEditor];
34439
34498
 
34440
34499
  /* eslint-disable @khanacademy/ts-no-error-suppressions */
34441
34500
  class TextInput extends React__namespace.Component {