@khanacademy/perseus-editor 14.10.3 → 14.11.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/es/index.js CHANGED
@@ -46,7 +46,7 @@ import arrowCounterClockwise from '@phosphor-icons/core/bold/arrow-counter-clock
46
46
 
47
47
  // This file is processed by a Rollup plugin (replace) to inject the production
48
48
  const libName = "@khanacademy/perseus-editor";
49
- const libVersion = "14.10.3";
49
+ const libVersion = "14.11.0";
50
50
  addLibraryVersionToPerseusDebug(libName, libVersion);
51
51
 
52
52
  function _extends() {
@@ -23628,7 +23628,7 @@ class StructuredItemDiff extends React.Component {
23628
23628
 
23629
23629
  /* eslint-disable @khanacademy/ts-no-error-suppressions */
23630
23630
  const {
23631
- InfoTip: InfoTip$n,
23631
+ InfoTip: InfoTip$o,
23632
23632
  InlineIcon: InlineIcon$7
23633
23633
  } = components;
23634
23634
  /* Renders a hint editor box
@@ -23694,7 +23694,7 @@ class HintEditor extends React.Component {
23694
23694
  type: "button",
23695
23695
  className: this.props.isFirst ? "hidden" : "",
23696
23696
  onClick: _.partial(this.props.onMove, -1)
23697
- }, /*#__PURE__*/React.createElement(InlineIcon$7, iconCircleArrowUp)), " ", this.props.isLast && /*#__PURE__*/React.createElement(InfoTip$n, null, /*#__PURE__*/React.createElement("p", null, "The last hint is automatically bolded."))), /*#__PURE__*/React.createElement("input", {
23697
+ }, /*#__PURE__*/React.createElement(InlineIcon$7, iconCircleArrowUp)), " ", this.props.isLast && /*#__PURE__*/React.createElement(InfoTip$o, null, /*#__PURE__*/React.createElement("p", null, "The last hint is automatically bolded."))), /*#__PURE__*/React.createElement("input", {
23698
23698
  type: "checkbox"
23699
23699
  // @ts-expect-error - TS2322 - Type 'boolean | null | undefined' is not assignable to type 'boolean | undefined'.
23700
23700
  ,
@@ -23940,7 +23940,7 @@ CombinedHintsEditor.defaultProps = {
23940
23940
  };
23941
23941
 
23942
23942
  const {
23943
- InfoTip: InfoTip$m
23943
+ InfoTip: InfoTip$n
23944
23944
  } = components;
23945
23945
  class ItemExtrasEditor extends React.Component {
23946
23946
  constructor(...args) {
@@ -24085,7 +24085,7 @@ const ItemExtraCheckbox = props => /*#__PURE__*/React.createElement(View, {
24085
24085
  style: {
24086
24086
  flexDirection: "row"
24087
24087
  }
24088
- }, props.label, " ", /*#__PURE__*/React.createElement(InfoTip$m, null, props.infoTip)),
24088
+ }, props.label, " ", /*#__PURE__*/React.createElement(InfoTip$n, null, props.infoTip)),
24089
24089
  checked: props.checked,
24090
24090
  onChange: newCheckedState => props.onChange(newCheckedState)
24091
24091
  }));
@@ -25776,7 +25776,7 @@ class BlurInput extends React.Component {
25776
25776
  }
25777
25777
 
25778
25778
  const {
25779
- InfoTip: InfoTip$l
25779
+ InfoTip: InfoTip$m
25780
25780
  } = components;
25781
25781
  const DEFAULT_WIDTH = 400;
25782
25782
  const DEFAULT_HEIGHT = 400;
@@ -25940,7 +25940,7 @@ class CSProgramEditor extends React.Component {
25940
25940
  showEditor: value
25941
25941
  });
25942
25942
  }
25943
- }), /*#__PURE__*/React.createElement(InfoTip$l, null, "If you show the editor, you should use the \"full-width\" alignment to make room for the width of the editor."), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(Checkbox$1, {
25943
+ }), /*#__PURE__*/React.createElement(InfoTip$m, null, "If you show the editor, you should use the \"full-width\" alignment to make room for the width of the editor."), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(Checkbox$1, {
25944
25944
  label: "Show Buttons",
25945
25945
  checked: this.props.showButtons,
25946
25946
  onChange: value => {
@@ -25952,7 +25952,7 @@ class CSProgramEditor extends React.Component {
25952
25952
  name: "settings",
25953
25953
  pairs: this.props.settings,
25954
25954
  onChange: this._handleSettingsChange
25955
- }), /*#__PURE__*/React.createElement(InfoTip$l, null, "Settings that you add here are available to the program as an object returned by ", /*#__PURE__*/React.createElement("code", null, "Program.settings()"))));
25955
+ }), /*#__PURE__*/React.createElement(InfoTip$m, null, "Settings that you add here are available to the program as an object returned by ", /*#__PURE__*/React.createElement("code", null, "Program.settings()"))));
25956
25956
  }
25957
25957
  }
25958
25958
  CSProgramEditor.propTypes = _extends({}, Changeable.propTypes);
@@ -26038,7 +26038,7 @@ DeprecatedStandinEditor.widgetName = "deprecated-standin";
26038
26038
 
26039
26039
  /* eslint-disable @khanacademy/ts-no-error-suppressions */
26040
26040
  const {
26041
- InfoTip: InfoTip$k,
26041
+ InfoTip: InfoTip$l,
26042
26042
  InlineIcon: InlineIcon$5
26043
26043
  } = components;
26044
26044
  class DropdownEditor extends React.Component {
@@ -26103,14 +26103,14 @@ class DropdownEditor extends React.Component {
26103
26103
  className: "perseus-widget-dropdown"
26104
26104
  }, /*#__PURE__*/React.createElement("div", {
26105
26105
  className: "dropdown-info"
26106
- }, "Dropdown", /*#__PURE__*/React.createElement(InfoTip$k, null, /*#__PURE__*/React.createElement("p", null, "The drop down is useful for making inequalities in a custom format. We normally use the symbols ", "<", ",", " ", ">", ", \u2264, \u2265 (in that order) which you can copy into the choices. When possible, use the \"multiple choice\" answer type instead."))), /*#__PURE__*/React.createElement("div", {
26106
+ }, "Dropdown", /*#__PURE__*/React.createElement(InfoTip$l, null, /*#__PURE__*/React.createElement("p", null, "The drop down is useful for making inequalities in a custom format. We normally use the symbols ", "<", ",", " ", ">", ", \u2264, \u2265 (in that order) which you can copy into the choices. When possible, use the \"multiple choice\" answer type instead."))), /*#__PURE__*/React.createElement("div", {
26107
26107
  className: "dropdown-placeholder"
26108
26108
  }, /*#__PURE__*/React.createElement("input", {
26109
26109
  type: "text",
26110
26110
  placeholder: "Placeholder value",
26111
26111
  value: this.props.placeholder,
26112
26112
  onChange: this.onPlaceholderChange
26113
- }), /*#__PURE__*/React.createElement(InfoTip$k, null, /*#__PURE__*/React.createElement("p", null, "This value will appear as the drop down default. It should give the user some indication of the values available in the drop down itself, e.g., Yes/No/Maybe."))), /*#__PURE__*/React.createElement("div", {
26113
+ }), /*#__PURE__*/React.createElement(InfoTip$l, null, /*#__PURE__*/React.createElement("p", null, "This value will appear as the drop down default. It should give the user some indication of the values available in the drop down itself, e.g., Yes/No/Maybe."))), /*#__PURE__*/React.createElement("div", {
26114
26114
  className: "clearfix"
26115
26115
  }), /*#__PURE__*/React.createElement("ul", {
26116
26116
  className: "dropdown-choices"
@@ -26438,7 +26438,7 @@ const styles$N = StyleSheet.create({
26438
26438
  });
26439
26439
 
26440
26440
  const {
26441
- InfoTip: InfoTip$j
26441
+ InfoTip: InfoTip$k
26442
26442
  } = components;
26443
26443
 
26444
26444
  // types for iterables
@@ -26684,13 +26684,13 @@ class ExpressionEditor extends React.Component {
26684
26684
  label: "Visible label",
26685
26685
  value: this.props.visibleLabel || "",
26686
26686
  onChange: this.change("visibleLabel")
26687
- }), /*#__PURE__*/React.createElement(InfoTip$j, null, /*#__PURE__*/React.createElement("p", null, "Optional visible text; strongly encouraged to help learners using dictation software, but can be omitted if the surrounding content provides enough context."))), /*#__PURE__*/React.createElement("div", {
26687
+ }), /*#__PURE__*/React.createElement(InfoTip$k, null, /*#__PURE__*/React.createElement("p", null, "Optional visible text; strongly encouraged to help learners using dictation software, but can be omitted if the surrounding content provides enough context."))), /*#__PURE__*/React.createElement("div", {
26688
26688
  className: css(styles$M.paddedY)
26689
26689
  }, /*#__PURE__*/React.createElement(LabeledTextField, {
26690
26690
  label: "Aria label",
26691
26691
  value: this.props.ariaLabel || "",
26692
26692
  onChange: this.change("ariaLabel")
26693
- }), /*#__PURE__*/React.createElement(InfoTip$j, null, /*#__PURE__*/React.createElement("p", null, "Label text that's read by screen readers. Highly recommend adding a label here to ensure your exercise is accessible. For more information on writting accessible labels, please see", " ", /*#__PURE__*/React.createElement("a", {
26693
+ }), /*#__PURE__*/React.createElement(InfoTip$k, null, /*#__PURE__*/React.createElement("p", null, "Label text that's read by screen readers. Highly recommend adding a label here to ensure your exercise is accessible. For more information on writting accessible labels, please see", " ", /*#__PURE__*/React.createElement("a", {
26694
26694
  href: "https://www.w3.org/WAI/tips/designing/#ensure-that-form-elements-include-clearly-associated-labels",
26695
26695
  target: "_blank"
26696
26696
  }, "this article.")))), /*#__PURE__*/React.createElement("div", {
@@ -26699,7 +26699,7 @@ class ExpressionEditor extends React.Component {
26699
26699
  label: "Function variables",
26700
26700
  value: this.state.functionsInternal,
26701
26701
  onChange: this.handleFunctions
26702
- }), /*#__PURE__*/React.createElement(InfoTip$j, null, /*#__PURE__*/React.createElement("p", null, "Single-letter variables listed here will be interpreted as functions. This let us know that f(x) means \"f of x\" and not \"f times x\"."))), /*#__PURE__*/React.createElement("div", {
26702
+ }), /*#__PURE__*/React.createElement(InfoTip$k, null, /*#__PURE__*/React.createElement("p", null, "Single-letter variables listed here will be interpreted as functions. This let us know that f(x) means \"f of x\" and not \"f times x\"."))), /*#__PURE__*/React.createElement("div", {
26703
26703
  className: css(styles$M.paddedY)
26704
26704
  }, /*#__PURE__*/React.createElement(Checkbox$1, {
26705
26705
  label: "Use \xD7 instead of \u22C5 for multiplication",
@@ -26709,7 +26709,7 @@ class ExpressionEditor extends React.Component {
26709
26709
  times: value
26710
26710
  });
26711
26711
  }
26712
- }), /*#__PURE__*/React.createElement(InfoTip$j, null, /*#__PURE__*/React.createElement("p", null, "For pre-algebra problems this option displays multiplication as \\times instead of \\cdot in both the rendered output and the acceptable formats examples."))), /*#__PURE__*/React.createElement("div", {
26712
+ }), /*#__PURE__*/React.createElement(InfoTip$k, null, /*#__PURE__*/React.createElement("p", null, "For pre-algebra problems this option displays multiplication as \\times instead of \\cdot in both the rendered output and the acceptable formats examples."))), /*#__PURE__*/React.createElement("div", {
26713
26713
  className: css(styles$M.paddedY)
26714
26714
  }, /*#__PURE__*/React.createElement(HeadingXSmall, null, "Button Sets"), buttonSetChoices), /*#__PURE__*/React.createElement(HeadingSmall, null, "Answers"), /*#__PURE__*/React.createElement("p", {
26715
26715
  style: {
@@ -26801,7 +26801,7 @@ class AnswerOption extends React.Component {
26801
26801
  form: value
26802
26802
  });
26803
26803
  }
26804
- }), /*#__PURE__*/React.createElement(InfoTip$j, null, /*#__PURE__*/React.createElement("p", null, "The student's answer must be in the same form. Commutativity and excess negative signs are ignored."))), /*#__PURE__*/React.createElement("div", {
26804
+ }), /*#__PURE__*/React.createElement(InfoTip$k, null, /*#__PURE__*/React.createElement("p", null, "The student's answer must be in the same form. Commutativity and excess negative signs are ignored."))), /*#__PURE__*/React.createElement("div", {
26805
26805
  className: css(styles$M.paddedY, styles$M.paddedX)
26806
26806
  }, /*#__PURE__*/React.createElement(Checkbox$1, {
26807
26807
  label: "Answer expression must be fully expanded and simplified.",
@@ -26811,7 +26811,7 @@ class AnswerOption extends React.Component {
26811
26811
  simplify: value
26812
26812
  });
26813
26813
  }
26814
- }), /*#__PURE__*/React.createElement(InfoTip$j, null, /*#__PURE__*/React.createElement("p", null, "The student's answer must be fully expanded and simplified. Answering this equation (x^2+2x+1) with this factored equation (x+1)^2 will render this response \"Your answer is not fully expanded and simplified.\""))), /*#__PURE__*/React.createElement("div", {
26814
+ }), /*#__PURE__*/React.createElement(InfoTip$k, null, /*#__PURE__*/React.createElement("p", null, "The student's answer must be fully expanded and simplified. Answering this equation (x^2+2x+1) with this factored equation (x+1)^2 will render this response \"Your answer is not fully expanded and simplified.\""))), /*#__PURE__*/React.createElement("div", {
26815
26815
  className: css(styles$M.buttonRow, styles$M.paddedY)
26816
26816
  }, removeButton)));
26817
26817
  }
@@ -27050,7 +27050,7 @@ const setArrayItem = (list, i, value) => [...list.slice(0, i), value, ...list.sl
27050
27050
 
27051
27051
  const {
27052
27052
  ButtonGroup: ButtonGroup$7,
27053
- InfoTip: InfoTip$i,
27053
+ InfoTip: InfoTip$j,
27054
27054
  RangeInput: RangeInput$6
27055
27055
  } = components;
27056
27056
  const defaultBackgroundImage$3 = {
@@ -27509,7 +27509,7 @@ const GraphSettings = createReactClass({
27509
27509
  },
27510
27510
  onKeyPress: this.changeBackgroundUrl,
27511
27511
  onBlur: this.changeBackgroundUrl
27512
- }), /*#__PURE__*/React.createElement(InfoTip$i, null, /*#__PURE__*/React.createElement("p", null, "Create an image in graphie, or use the \"Add image\" function to create a background.")))), _.contains(this.props.editableSettings, "measure") && /*#__PURE__*/React.createElement("div", {
27512
+ }), /*#__PURE__*/React.createElement(InfoTip$j, null, /*#__PURE__*/React.createElement("p", null, "Create an image in graphie, or use the \"Add image\" function to create a background.")))), _.contains(this.props.editableSettings, "measure") && /*#__PURE__*/React.createElement("div", {
27513
27513
  className: "misc-settings"
27514
27514
  }, /*#__PURE__*/React.createElement("div", {
27515
27515
  className: "perseus-widget-row"
@@ -27555,7 +27555,7 @@ const GraphSettings = createReactClass({
27555
27555
  });
27556
27556
 
27557
27557
  const {
27558
- InfoTip: InfoTip$h,
27558
+ InfoTip: InfoTip$i,
27559
27559
  MultiButtonGroup: MultiButtonGroup$1
27560
27560
  } = components;
27561
27561
  const Grapher = GrapherWidget.widget;
@@ -27634,7 +27634,7 @@ class GrapherEditor extends React.Component {
27634
27634
  className: "perseus-error"
27635
27635
  }, this.props.graph.valid);
27636
27636
  }
27637
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", null, "Correct answer", " ", /*#__PURE__*/React.createElement(InfoTip$h, null, /*#__PURE__*/React.createElement("p", null, "Graph the correct answer in the graph below and ensure the equation or point coordinates displayed represent the correct answer.")), " ", ": ", equationString), /*#__PURE__*/React.createElement(GraphSettings, {
27637
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", null, "Correct answer", " ", /*#__PURE__*/React.createElement(InfoTip$i, null, /*#__PURE__*/React.createElement("p", null, "Graph the correct answer in the graph below and ensure the equation or point coordinates displayed represent the correct answer.")), " ", ": ", equationString), /*#__PURE__*/React.createElement(GraphSettings, {
27638
27638
  editableSettings: ["graph", "snap", "image"],
27639
27639
  box: getInteractiveBoxFromSizeClass(sizeClass),
27640
27640
  range: this.props.graph.range,
@@ -27884,7 +27884,7 @@ IframeEditor.defaultProps = {
27884
27884
 
27885
27885
  /* eslint-disable jsx-a11y/anchor-is-valid */
27886
27886
  const {
27887
- InfoTip: InfoTip$g,
27887
+ InfoTip: InfoTip$h,
27888
27888
  InlineIcon: InlineIcon$3,
27889
27889
  RangeInput: RangeInput$5
27890
27890
  } = components;
@@ -28074,7 +28074,7 @@ class ImageEditor extends React.Component {
28074
28074
  style: {
28075
28075
  width: "100%"
28076
28076
  }
28077
- }))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("label", null, /*#__PURE__*/React.createElement("div", null, "Dimensions:"), /*#__PURE__*/React.createElement("p", null, backgroundImage.width, "x", backgroundImage.height))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("label", null, /*#__PURE__*/React.createElement("div", null, "Alt text:", /*#__PURE__*/React.createElement(InfoTip$g, null, "This is important for screenreaders. The content of this alt text will be formatted as markdown (tables, emphasis, etc. are supported).")), /*#__PURE__*/React.createElement(Editor, {
28077
+ }))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("label", null, /*#__PURE__*/React.createElement("div", null, "Dimensions:"), /*#__PURE__*/React.createElement("p", null, backgroundImage.width, "x", backgroundImage.height))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("label", null, /*#__PURE__*/React.createElement("div", null, "Alt text:", /*#__PURE__*/React.createElement(InfoTip$h, null, "This is important for screenreaders. The content of this alt text will be formatted as markdown (tables, emphasis, etc. are supported).")), /*#__PURE__*/React.createElement(Editor, {
28078
28078
  apiOptions: this.props.apiOptions,
28079
28079
  content: this.props.alt,
28080
28080
  onChange: props => {
@@ -28098,7 +28098,7 @@ class ImageEditor extends React.Component {
28098
28098
  }, this.state.backgroundImageError);
28099
28099
  return /*#__PURE__*/React.createElement("div", {
28100
28100
  className: "perseus-image-editor"
28101
- }, /*#__PURE__*/React.createElement("label", null, "Image url:", /*#__PURE__*/React.createElement(InfoTip$g, null, "Paste an image or graphie image URL."), this.state.backgroundImageError && backgroundImageErrorText, /*#__PURE__*/React.createElement(BlurInput, {
28101
+ }, /*#__PURE__*/React.createElement("label", null, "Image url:", /*#__PURE__*/React.createElement(InfoTip$h, null, "Paste an image or graphie image URL."), this.state.backgroundImageError && backgroundImageErrorText, /*#__PURE__*/React.createElement(BlurInput, {
28102
28102
  value: backgroundImage.url || "",
28103
28103
  style: {
28104
28104
  width: 332
@@ -28120,7 +28120,7 @@ ImageEditor.defaultProps = {
28120
28120
  };
28121
28121
 
28122
28122
  const {
28123
- InfoTip: InfoTip$f
28123
+ InfoTip: InfoTip$g
28124
28124
  } = components;
28125
28125
  const answerTypes = {
28126
28126
  number: {
@@ -28206,7 +28206,7 @@ class InputNumberEditor extends React.Component {
28206
28206
  value: "optional"
28207
28207
  }, "will be accepted"), /*#__PURE__*/React.createElement("option", {
28208
28208
  value: "enforced"
28209
- }, "will be marked wrong"))), /*#__PURE__*/React.createElement(InfoTip$f, null, /*#__PURE__*/React.createElement("p", null, "Normally select \"will not be graded\". This will give the user a message saying the answer is correct but not simplified. The user will then have to simplify it and re-enter, but will not be penalized. (5th grade and anything after)"), /*#__PURE__*/React.createElement("p", null, "Select \"will be accepted\" only if the user is not expected to know how to simplify fractions yet. (Anything prior to 5th grade)"), /*#__PURE__*/React.createElement("p", null, "Select \"will be marked wrong\" only if we are specifically assessing the ability to simplify."))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("label", null, /*#__PURE__*/React.createElement("input", {
28209
+ }, "will be marked wrong"))), /*#__PURE__*/React.createElement(InfoTip$g, null, /*#__PURE__*/React.createElement("p", null, "Normally select \"will not be graded\". This will give the user a message saying the answer is correct but not simplified. The user will then have to simplify it and re-enter, but will not be penalized. (5th grade and anything after)"), /*#__PURE__*/React.createElement("p", null, "Select \"will be accepted\" only if the user is not expected to know how to simplify fractions yet. (Anything prior to 5th grade)"), /*#__PURE__*/React.createElement("p", null, "Select \"will be marked wrong\" only if we are specifically assessing the ability to simplify."))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("label", null, /*#__PURE__*/React.createElement("input", {
28210
28210
  type: "checkbox",
28211
28211
  checked: this.props.inexact,
28212
28212
  onChange: e => {
@@ -28242,7 +28242,7 @@ class InputNumberEditor extends React.Component {
28242
28242
  });
28243
28243
  },
28244
28244
  "aria-label": "Answer type"
28245
- }, answerTypeOptions), /*#__PURE__*/React.createElement(InfoTip$f, null, /*#__PURE__*/React.createElement("p", null, "Use the default \"Numbers\" unless the answer must be in a specific form (e.g., question is about converting decimals to fractions)."))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("label", null, "Width", " ", /*#__PURE__*/React.createElement("select", {
28245
+ }, answerTypeOptions), /*#__PURE__*/React.createElement(InfoTip$g, null, /*#__PURE__*/React.createElement("p", null, "Use the default \"Numbers\" unless the answer must be in a specific form (e.g., question is about converting decimals to fractions)."))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("label", null, "Width", " ", /*#__PURE__*/React.createElement("select", {
28246
28246
  value: this.props.size,
28247
28247
  onChange: e => {
28248
28248
  // @ts-expect-error - TS2322 - Type 'string' is not assignable to type '"small" | "normal" | undefined'.
@@ -28254,7 +28254,7 @@ class InputNumberEditor extends React.Component {
28254
28254
  value: "normal"
28255
28255
  }, "Normal (80px)"), /*#__PURE__*/React.createElement("option", {
28256
28256
  value: "small"
28257
- }, "Small (40px)"))), /*#__PURE__*/React.createElement(InfoTip$f, null, /*#__PURE__*/React.createElement("p", null, "Use size \"Normal\" for all text boxes, unless there are multiple text boxes in one line and the answer area is too narrow to fit them."))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("label", null, /*#__PURE__*/React.createElement("input", {
28257
+ }, "Small (40px)"))), /*#__PURE__*/React.createElement(InfoTip$g, null, /*#__PURE__*/React.createElement("p", null, "Use size \"Normal\" for all text boxes, unless there are multiple text boxes in one line and the answer area is too narrow to fit them."))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("label", null, /*#__PURE__*/React.createElement("input", {
28258
28258
  type: "checkbox",
28259
28259
  checked: this.props.rightAlign,
28260
28260
  onChange: e => {
@@ -29764,7 +29764,7 @@ const styles$F = StyleSheet.create({
29764
29764
 
29765
29765
  const {
29766
29766
  ButtonGroup: ButtonGroup$2,
29767
- InfoTip: InfoTip$e,
29767
+ InfoTip: InfoTip$f,
29768
29768
  RangeInput: RangeInput$4
29769
29769
  } = components;
29770
29770
  const defaultBackgroundImage$1 = {
@@ -30154,7 +30154,7 @@ class InteractiveGraphSettings extends React.Component {
30154
30154
  },
30155
30155
  onKeyPress: this.changeBackgroundUrl,
30156
30156
  onBlur: this.changeBackgroundUrl
30157
- }), /*#__PURE__*/React.createElement(InfoTip$e, null, /*#__PURE__*/React.createElement("p", null, "Create an image in graphie, or use the \"Add image\" function to create a background."))), /*#__PURE__*/React.createElement(View, {
30157
+ }), /*#__PURE__*/React.createElement(InfoTip$f, null, /*#__PURE__*/React.createElement("p", null, "Create an image in graphie, or use the \"Add image\" function to create a background."))), /*#__PURE__*/React.createElement(View, {
30158
30158
  style: styles$E.protractorSection
30159
30159
  }, /*#__PURE__*/React.createElement(View, {
30160
30160
  style: styles$E.checkboxRow
@@ -30666,7 +30666,7 @@ const styles$v = StyleSheet.create({
30666
30666
  });
30667
30667
 
30668
30668
  const {
30669
- InfoTip: InfoTip$d
30669
+ InfoTip: InfoTip$e
30670
30670
  } = components;
30671
30671
  function LockedFigureAria(props) {
30672
30672
  const {
@@ -30683,7 +30683,7 @@ function LockedFigureAria(props) {
30683
30683
  }, /*#__PURE__*/React.createElement(LabelMedium, {
30684
30684
  tag: "label",
30685
30685
  htmlFor: ariaLabelId
30686
- }, "Aria label"), /*#__PURE__*/React.createElement(Spring, null), /*#__PURE__*/React.createElement(InfoTip$d, null, "Aria label is used by screen readers to describe content to users who may be visually impaired. ", /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("br", null), "Populating this field will make it so that users can use a screen reader to navigate to this point and hear the description.", /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("br", null), "If you leave this field blank, the point will be hidden from screen readers. Users will not be able to navigate to this point using a screen reader.")), /*#__PURE__*/React.createElement(Strut, {
30686
+ }, "Aria label"), /*#__PURE__*/React.createElement(Spring, null), /*#__PURE__*/React.createElement(InfoTip$e, null, "Aria label is used by screen readers to describe content to users who may be visually impaired. ", /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("br", null), "Populating this field will make it so that users can use a screen reader to navigate to this point and hear the description.", /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("br", null), "If you leave this field blank, the point will be hidden from screen readers. Users will not be able to navigate to this point using a screen reader.")), /*#__PURE__*/React.createElement(Strut, {
30687
30687
  size: spacing.xxSmall_6
30688
30688
  }), /*#__PURE__*/React.createElement(LabelXSmall, {
30689
30689
  style: styles$u.caption
@@ -30795,6 +30795,9 @@ const styles$t = StyleSheet.create({
30795
30795
  *
30796
30796
  * Used in the interactive graph editor's locked figures section.
30797
30797
  */
30798
+ const {
30799
+ InfoTip: InfoTip$d
30800
+ } = components;
30798
30801
  function LockedLabelSettings(props) {
30799
30802
  const {
30800
30803
  type,
@@ -30831,10 +30834,14 @@ function LockedLabelSettings(props) {
30831
30834
  });
30832
30835
  },
30833
30836
  style: styles$s.spaceUnder
30834
- }), /*#__PURE__*/React.createElement(LabelMedium, {
30837
+ }), /*#__PURE__*/React.createElement(View, {
30838
+ style: styles$s.row
30839
+ }, /*#__PURE__*/React.createElement(LabelMedium, {
30835
30840
  tag: "label",
30836
- style: [styles$s.row, styles$s.spaceUnder]
30837
- }, "TeX", /*#__PURE__*/React.createElement(Strut, {
30841
+ style: [styles$s.row, styles$s.spaceUnder, {
30842
+ flexGrow: 1
30843
+ }]
30844
+ }, "text", /*#__PURE__*/React.createElement(Strut, {
30838
30845
  size: spacing.xSmall_8
30839
30846
  }), /*#__PURE__*/React.createElement(TextField, {
30840
30847
  value: text,
@@ -30842,7 +30849,7 @@ function LockedLabelSettings(props) {
30842
30849
  onChange: newValue => onChangeProps({
30843
30850
  text: newValue
30844
30851
  })
30845
- })), /*#__PURE__*/React.createElement(View, {
30852
+ })), /*#__PURE__*/React.createElement(InfoTip$d, null, "Surround your text with $ for TeX.", /*#__PURE__*/React.createElement("br", null), "Example: ", `This circle has radius $\\frac{1}{2}$ units.`, /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("br", null), "It is important to use TeX when appropriate for accessibility. The above example would be read as \"This circle has radius one-half units\" by screen readers.")), /*#__PURE__*/React.createElement(View, {
30846
30853
  style: styles$s.row
30847
30854
  }, /*#__PURE__*/React.createElement(ColorSelect, {
30848
30855
  selectedValue: color$1,