@khanacademy/perseus 19.1.2 → 19.1.4

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 (69) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/all-widgets.d.ts +1 -1
  3. package/dist/basic-widgets.d.ts +1 -1
  4. package/dist/es/index.js +38 -70
  5. package/dist/es/index.js.map +1 -1
  6. package/dist/extra-widgets.d.ts +1 -1
  7. package/dist/index.js +51 -55
  8. package/dist/index.js.map +1 -1
  9. package/dist/interactive2/interactive-util.d.ts +1 -1
  10. package/dist/interactive2/movable.d.ts +20 -1
  11. package/dist/types.d.ts +1 -1
  12. package/dist/util/graphie.d.ts +1 -1
  13. package/dist/widgets/categorizer.d.ts +1 -1
  14. package/dist/widgets/cs-program.d.ts +1 -1
  15. package/dist/widgets/definition.d.ts +1 -1
  16. package/dist/widgets/deprecated-standin/index.d.ts +1 -1
  17. package/dist/widgets/dropdown.d.ts +1 -1
  18. package/dist/widgets/explanation.d.ts +1 -1
  19. package/dist/widgets/expression.d.ts +14 -14
  20. package/dist/widgets/graded-group-set.d.ts +1 -1
  21. package/dist/widgets/graded-group.d.ts +1 -1
  22. package/dist/widgets/grapher.d.ts +1 -1
  23. package/dist/widgets/group.d.ts +1 -1
  24. package/dist/widgets/iframe.d.ts +1 -1
  25. package/dist/widgets/image.d.ts +1 -1
  26. package/dist/widgets/input-number.d.ts +1 -1
  27. package/dist/widgets/interaction.d.ts +1 -1
  28. package/dist/widgets/interactive-graph.d.ts +1 -1
  29. package/dist/widgets/label-image.d.ts +14 -14
  30. package/dist/widgets/lights-puzzle.d.ts +1 -1
  31. package/dist/widgets/matcher.d.ts +1 -1
  32. package/dist/widgets/matrix.d.ts +1 -1
  33. package/dist/widgets/measurer.d.ts +1 -1
  34. package/dist/widgets/molecule.d.ts +1 -1
  35. package/dist/widgets/number-line.d.ts +1 -1
  36. package/dist/widgets/numeric-input.d.ts +1 -1
  37. package/dist/widgets/orderer.d.ts +1 -1
  38. package/dist/widgets/passage-ref-target.d.ts +1 -1
  39. package/dist/widgets/passage-ref.d.ts +1 -1
  40. package/dist/widgets/passage.d.ts +1 -1
  41. package/dist/widgets/plotter.d.ts +1 -1
  42. package/dist/widgets/radio.d.ts +1 -1
  43. package/dist/widgets/reaction-diagram.d.ts +1 -1
  44. package/dist/widgets/sequence.d.ts +1 -1
  45. package/dist/widgets/simulator.d.ts +1 -1
  46. package/dist/widgets/sorter.d.ts +1 -1
  47. package/dist/widgets/table.d.ts +1 -1
  48. package/dist/widgets/unit.d.ts +1 -1
  49. package/dist/widgets/video.d.ts +1 -1
  50. package/package.json +2 -2
  51. package/src/__tests__/init.test.ts +10 -0
  52. package/src/init.ts +1 -4
  53. package/src/interactive2/__tests__/movable-mock.ts +2 -1
  54. package/src/interactive2/__tests__/movable.test.ts +157 -0
  55. package/src/interactive2/interactive-util.test.ts +93 -0
  56. package/src/interactive2/interactive-util.ts +19 -15
  57. package/src/interactive2/movable-helper-methods.ts +7 -2
  58. package/src/interactive2/movable-line.ts +1 -12
  59. package/src/interactive2/movable-point.tsx +1 -9
  60. package/src/interactive2/movable-polygon.ts +1 -9
  61. package/src/interactive2/movable.ts +49 -44
  62. package/src/types.ts +4 -2
  63. package/src/util/graphie.ts +3 -1
  64. package/src/widgets/__tests__/__snapshots__/input-number.test.ts.snap +1 -1
  65. package/src/widgets/__tests__/__snapshots__/numeric-input.test.ts.snap +1 -1
  66. package/src/widgets/label-image/marker.tsx +4 -0
  67. package/src/widgets/label-image.tsx +2 -7
  68. package/src/widgets.ts +4 -1
  69. package/tsconfig-build.tsbuildinfo +1 -1
@@ -121,13 +121,15 @@ export class Graphie {
121
121
  }
122
122
 
123
123
  init(options: {
124
- range?: [Interval, Interval];
124
+ range: [Interval, Interval];
125
125
  scale?: number | Coord;
126
126
  isMobile?: boolean;
127
127
  }) {
128
128
  let scale = options.scale || [40, 40];
129
129
  scale = typeof scale === "number" ? [scale, scale] : scale;
130
130
 
131
+ // TODO(jeremy): This can be removed once we're confident that callers
132
+ // obey the Typescript types.
131
133
  if (options.range == null) {
132
134
  throw new PerseusError(
133
135
  "range should be specified in graph init",
@@ -182,7 +182,7 @@ exports[`rendering supports mobile rendering: mobile render 1`] = `
182
182
  class="mq-textarea"
183
183
  >
184
184
  <span
185
- aria-label="Math Input:"
185
+ aria-label="Math input box:"
186
186
  />
187
187
  </span>
188
188
  <span
@@ -44,7 +44,7 @@ exports[`Numeric input widget styles differently on mobile: mobile render 1`] =
44
44
  class="mq-textarea"
45
45
  >
46
46
  <span
47
- aria-label="Math Input:"
47
+ aria-label="Math input box:"
48
48
  />
49
49
  </span>
50
50
  <span
@@ -7,6 +7,7 @@
7
7
 
8
8
  import Color from "@khanacademy/wonder-blocks-color";
9
9
  import {View, type StyleType} from "@khanacademy/wonder-blocks-core";
10
+ import * as i18n from "@khanacademy/wonder-blocks-i18n";
10
11
  import {StyleSheet} from "aphrodite";
11
12
  import * as React from "react";
12
13
 
@@ -127,6 +128,7 @@ export default class Marker extends React.Component<Props> {
127
128
  answerStyles,
128
129
  hovered,
129
130
  focused,
131
+ label,
130
132
  } = this.props;
131
133
 
132
134
  // We cannot make dropdown openers untabbable, so we isolate tabbing
@@ -141,6 +143,8 @@ export default class Marker extends React.Component<Props> {
141
143
  styles.marker,
142
144
  active && !markerDisabled && styles.markerActive,
143
145
  ]}
146
+ // already translated in: /widgets/graded-group.tsx
147
+ aria-label={markerDisabled ? i18n._("Correct!") : label}
144
148
  >
145
149
  {this.renderIcon()}
146
150
  </View>
@@ -598,16 +598,11 @@ export class LabelImage extends React.Component<
598
598
  }
599
599
  // cannot change answer choices once question is answered
600
600
  disabled={disabled}
601
- opener={({opened, text}) => (
601
+ opener={({opened}) => (
602
602
  <Clickable
603
603
  role="button"
604
+ aria-expanded={opened}
604
605
  key={`marker-${marker.x}.${marker.y}`}
605
- aria-label={
606
- // already translated in: /widgets/graded-group.tsx
607
- showCorrectness === "correct"
608
- ? i18n._("Correct!")
609
- : marker.label
610
- }
611
606
  >
612
607
  {({hovered, focused, pressed}) => (
613
608
  <Marker
package/src/widgets.ts CHANGED
@@ -170,7 +170,10 @@ export const upgradeWidgetInfoToLatestVersion = (
170
170
  oldWidgetInfo: PerseusWidget,
171
171
  ): PerseusWidget => {
172
172
  const type = oldWidgetInfo.type;
173
- // TODO(LP-10707): Remove unnecessary type checking (`type` is a string)
173
+ // NOTE(jeremy): This looks like it could be replaced by fixing types so
174
+ // that `type` is non-optional. But we're seeing this in Sentry today so I
175
+ // suspect we have legacy data (potentially unpublished) and we should
176
+ // figure that out before depending solely on types.
174
177
  if (!_.isString(type)) {
175
178
  throw new PerseusError(
176
179
  "widget type must be a string, but was: " + type,