@khanacademy/perseus 7.2.0 → 8.0.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 (409) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/article-renderer.d.ts +26 -40
  3. package/dist/components/math-input.d.ts +1 -1
  4. package/dist/components/sortable.d.ts +1 -1
  5. package/dist/components/tex-buttons.d.ts +1 -1
  6. package/dist/es/index.css +61 -61
  7. package/dist/es/index.js +1189 -1308
  8. package/dist/es/index.js.map +1 -1
  9. package/dist/hints-renderer.d.ts +1 -1
  10. package/dist/index.css +61 -61
  11. package/dist/index.js +1180 -1269
  12. package/dist/index.js.map +1 -1
  13. package/dist/mixins/provide-keypad.d.ts +15 -12
  14. package/dist/perseus-api.d.ts +1 -1
  15. package/dist/types.d.ts +3 -2
  16. package/dist/widgets/expression.d.ts +1 -1
  17. package/dist/widgets/graded-group.d.ts +1 -1
  18. package/dist/widgets/interactive-graph.d.ts +1 -1
  19. package/dist/widgets/plotter.d.ts +47 -13
  20. package/dist/widgets/sequence.d.ts +1 -1
  21. package/dist/widgets/table.d.ts +8 -1
  22. package/dist/widgets.d.ts +1 -1
  23. package/package.json +33 -33
  24. package/src/__testdata__/article-renderer.testdata.ts +3 -1
  25. package/src/__testdata__/item-renderer.testdata.ts +1 -1
  26. package/src/__testdata__/renderer.testdata.ts +1 -1
  27. package/src/__tests__/item-renderer.test.tsx +2 -2
  28. package/src/__tests__/mock-asset-loading-widget.tsx +1 -1
  29. package/src/__tests__/perseus-markdown.test.ts +17 -17
  30. package/src/__tests__/renderer-api.test.tsx +21 -21
  31. package/src/__tests__/renderer.test.tsx +13 -13
  32. package/src/__tests__/server-item-renderer.test.tsx +3 -3
  33. package/src/__tests__/tex-wrangler.test.ts +1 -1
  34. package/src/article-renderer.tsx +39 -38
  35. package/src/components/__stories__/image-loader.stories.tsx +1 -0
  36. package/src/components/__tests__/number-input.test.tsx +4 -4
  37. package/src/components/__tests__/sortable.test.tsx +2 -2
  38. package/src/components/fixed-to-responsive.tsx +1 -1
  39. package/src/components/graph.tsx +12 -11
  40. package/src/components/graphie-classes.ts +7 -7
  41. package/src/components/graphie.tsx +14 -14
  42. package/src/components/highlighting/highlightable-content.tsx +1 -1
  43. package/src/components/highlighting/ui/highlight-renderer.tsx +1 -1
  44. package/src/components/highlighting/ui/util.ts +2 -2
  45. package/src/components/highlighting/word-indexer.tsx +4 -4
  46. package/src/components/icon.tsx +2 -1
  47. package/src/components/image-loader.tsx +5 -4
  48. package/src/components/input-with-examples.tsx +2 -2
  49. package/src/components/lint.tsx +1 -1
  50. package/src/components/math-input.tsx +5 -5
  51. package/src/components/math-output.tsx +1 -1
  52. package/src/components/multi-button-group.tsx +1 -1
  53. package/src/components/number-input.tsx +11 -10
  54. package/src/components/prop-check-box.tsx +1 -1
  55. package/src/components/simple-keypad-input.tsx +4 -4
  56. package/src/components/sortable.tsx +43 -41
  57. package/src/components/svg-image.tsx +13 -12
  58. package/src/components/tex-buttons.tsx +5 -3
  59. package/src/components/text-input.tsx +9 -8
  60. package/src/components/text-list-editor.tsx +12 -11
  61. package/src/components/visibility-observer/create-visibility-observer.ts +1 -1
  62. package/src/components/visibility-observer/visibility-observer.tsx +2 -2
  63. package/src/components/zoomable-tex.tsx +3 -3
  64. package/src/components/zoomable.tsx +9 -8
  65. package/src/hint-renderer.tsx +3 -3
  66. package/src/hints-renderer.tsx +12 -11
  67. package/src/index.ts +1 -0
  68. package/src/init.ts +1 -1
  69. package/src/interaction-tracker.ts +4 -4
  70. package/src/interactive2/__tests__/movable-point.test.ts +1 -1
  71. package/src/interactive2/interactive-util.ts +6 -6
  72. package/src/interactive2/movable-helper-methods.ts +2 -2
  73. package/src/interactive2/movable-line-options.ts +37 -37
  74. package/src/interactive2/movable-line.ts +2 -2
  75. package/src/interactive2/movable-point-options.ts +29 -29
  76. package/src/interactive2/movable-point.tsx +2 -2
  77. package/src/interactive2/movable-polygon-options.ts +45 -45
  78. package/src/interactive2/movable-polygon.ts +2 -2
  79. package/src/interactive2/movable.ts +2 -2
  80. package/src/interactive2/objective_.ts +1 -1
  81. package/src/interactive2/wrapped-defaults.ts +2 -2
  82. package/src/interactive2/wrapped-ellipse.ts +9 -9
  83. package/src/interactive2/wrapped-line.ts +8 -8
  84. package/src/interactive2/wrapped-path.ts +5 -5
  85. package/src/item-renderer.tsx +6 -5
  86. package/src/mixins/changeable.ts +2 -2
  87. package/src/mixins/editor-jsonify.ts +1 -1
  88. package/src/mixins/provide-keypad.tsx +24 -37
  89. package/src/mixins/widget-jsonify-deprecated.ts +1 -1
  90. package/src/multi-items/__tests__/items.test.ts +1 -1
  91. package/src/multi-items/__tests__/multi-renderer.test.tsx +7 -7
  92. package/src/multi-items/__tests__/trees.test.ts +12 -12
  93. package/src/multi-items/item-types.ts +2 -2
  94. package/src/multi-items/items.ts +1 -1
  95. package/src/multi-items/multi-renderer.tsx +15 -14
  96. package/src/multi-items/prop-type-builders.ts +2 -2
  97. package/src/multi-items/tree-types.ts +4 -4
  98. package/src/multi-items/trees.ts +16 -16
  99. package/src/perseus-env.ts +2 -2
  100. package/src/perseus-markdown.tsx +5 -5
  101. package/src/renderer.tsx +39 -38
  102. package/src/server-item-renderer.tsx +6 -5
  103. package/src/sigfigs.ts +1 -1
  104. package/src/styles/articles.less +8 -4
  105. package/src/styles/perseus-renderer.less +47 -38
  106. package/src/styles/util.less +1 -1
  107. package/src/styles/variables.boostrap.less +158 -182
  108. package/src/styles/variables.less +20 -20
  109. package/src/styles/variables.shared.less +162 -168
  110. package/src/styles/widgets/categorizer.less +1 -2
  111. package/src/styles/widgets/expression.less +7 -4
  112. package/src/styles/widgets/grapher.less +2 -1
  113. package/src/styles/widgets/image.less +3 -2
  114. package/src/styles/widgets/interactive-graph.less +4 -2
  115. package/src/styles/widgets/label-image.less +2 -1
  116. package/src/styles/widgets/matrix.less +11 -7
  117. package/src/styles/widgets/orderer.less +2 -1
  118. package/src/styles/widgets/passage.less +2 -1
  119. package/src/styles/widgets/plotter.less +4 -3
  120. package/src/styles/widgets/radio.less +4 -2
  121. package/src/styles/widgets/sortable.less +1 -1
  122. package/src/styles/widgets/table.less +2 -1
  123. package/src/styles/widgets/transformer.less +2 -1
  124. package/src/styles/widgets/unit.less +2 -1
  125. package/src/traversal.ts +1 -1
  126. package/src/types.ts +3 -3
  127. package/src/util/answer-types.ts +14 -14
  128. package/src/util/geometry.ts +7 -7
  129. package/src/util/graphie.ts +32 -32
  130. package/src/util/interactive.ts +118 -118
  131. package/src/util/math.ts +4 -4
  132. package/src/util/react-render.tsx +1 -1
  133. package/src/util/scroll-utils.ts +2 -2
  134. package/src/util/tex.ts +3 -3
  135. package/src/util.ts +15 -15
  136. package/src/widget-container.tsx +1 -1
  137. package/src/widgets/__stories__/plotter.stories.tsx +27 -0
  138. package/src/widgets/__stories__/test-keypad-context-wrapper.tsx +3 -3
  139. package/src/widgets/__testdata__/numeric-input.testdata.ts +1 -1
  140. package/src/widgets/__testdata__/plotter.testdata.ts +36 -0
  141. package/src/widgets/__tests__/__snapshots__/plotter.test.tsx.snap +863 -0
  142. package/src/widgets/__tests__/__snapshots__/video.test.ts.snap +2 -2
  143. package/src/widgets/__tests__/expression.test.ts +4 -3
  144. package/src/widgets/__tests__/grapher.cypress.ts +32 -32
  145. package/src/widgets/__tests__/group.test.tsx +1 -1
  146. package/src/widgets/__tests__/interactive-graph.cypress.ts +40 -40
  147. package/src/widgets/__tests__/interactive-graph.test.ts +1 -1
  148. package/src/widgets/__tests__/numeric-input.test.ts +1 -1
  149. package/src/widgets/__tests__/passage.test.tsx +2 -2
  150. package/src/widgets/__tests__/plotter.test.tsx +66 -0
  151. package/src/widgets/__tests__/radio/base-radio.test.tsx +7 -7
  152. package/src/widgets/__tests__/renderQuestion.tsx +3 -3
  153. package/src/widgets/categorizer.tsx +5 -4
  154. package/src/widgets/cs-program.tsx +2 -2
  155. package/src/widgets/dropdown.tsx +1 -1
  156. package/src/widgets/expression.tsx +10 -9
  157. package/src/widgets/graded-group-set.tsx +6 -5
  158. package/src/widgets/graded-group.tsx +19 -19
  159. package/src/widgets/grapher/util.tsx +6 -6
  160. package/src/widgets/grapher.tsx +10 -10
  161. package/src/widgets/group.tsx +3 -3
  162. package/src/widgets/iframe.tsx +2 -2
  163. package/src/widgets/image.tsx +1 -1
  164. package/src/widgets/input-number.tsx +4 -4
  165. package/src/widgets/interaction.tsx +78 -77
  166. package/src/widgets/interactive-graph.tsx +109 -107
  167. package/src/widgets/label-image/marker.tsx +3 -2
  168. package/src/widgets/label-image.test.ts +1 -1
  169. package/src/widgets/label-image.tsx +7 -7
  170. package/src/widgets/lights-puzzle.tsx +2 -2
  171. package/src/widgets/matcher.tsx +7 -6
  172. package/src/widgets/matrix.tsx +20 -20
  173. package/src/widgets/measurer.tsx +3 -3
  174. package/src/widgets/molecule/__tests__/layout.test.ts +4 -4
  175. package/src/widgets/molecule/__tests__/parser.test.ts +14 -14
  176. package/src/widgets/molecule/smiles-parser.ts +3 -3
  177. package/src/widgets/molecule.tsx +4 -4
  178. package/src/widgets/number-line.tsx +11 -11
  179. package/src/widgets/numeric-input.tsx +11 -11
  180. package/src/widgets/orderer.tsx +39 -38
  181. package/src/widgets/passage/__tests__/passage-markdown.test.ts +1 -1
  182. package/src/widgets/passage/passage-markdown.tsx +4 -4
  183. package/src/widgets/passage-ref-target.tsx +2 -1
  184. package/src/widgets/passage-ref.tsx +4 -6
  185. package/src/widgets/passage.tsx +11 -11
  186. package/src/widgets/plotter.tsx +117 -107
  187. package/src/widgets/radio/base-radio.tsx +12 -11
  188. package/src/widgets/radio/choice-icon/choice-icon.tsx +3 -2
  189. package/src/widgets/radio/choice.tsx +1 -1
  190. package/src/widgets/radio/option-status.tsx +1 -1
  191. package/src/widgets/radio/widget.tsx +6 -6
  192. package/src/widgets/radio.ts +1 -1
  193. package/src/widgets/reaction-diagram.tsx +8 -8
  194. package/src/widgets/sequence.tsx +2 -2
  195. package/src/widgets/simulator.tsx +14 -14
  196. package/src/widgets/sorter.tsx +5 -4
  197. package/src/widgets/table.tsx +8 -8
  198. package/src/widgets/transformer.tsx +93 -92
  199. package/src/widgets/unit.tsx +17 -17
  200. package/src/widgets/video-transcript-link.test.tsx +3 -3
  201. package/src/widgets/video-transcript-link.tsx +1 -1
  202. package/src/widgets/video.tsx +1 -1
  203. package/src/widgets.ts +5 -5
  204. package/src/zoom.ts +22 -22
  205. package/tsconfig-build.tsbuildinfo +1 -1
  206. package/dist/a11y.js.flow +0 -11
  207. package/dist/all-widgets.js.flow +0 -33
  208. package/dist/article-renderer.js.flow +0 -73
  209. package/dist/asset-context.js.flow +0 -15
  210. package/dist/basic-widgets.js.flow +0 -33
  211. package/dist/components/button-group.js.flow +0 -33
  212. package/dist/components/constants.js.flow +0 -13
  213. package/dist/components/fixed-to-responsive.js.flow +0 -34
  214. package/dist/components/graph.js.flow +0 -66
  215. package/dist/components/graphie-classes.js.flow +0 -19
  216. package/dist/components/graphie-movables.js.flow +0 -22
  217. package/dist/components/graphie.js.flow +0 -69
  218. package/dist/components/highlighting/highlightable-content.js.flow +0 -56
  219. package/dist/components/highlighting/highlights.js.flow +0 -54
  220. package/dist/components/highlighting/ranges.js.flow +0 -60
  221. package/dist/components/highlighting/types.js.flow +0 -70
  222. package/dist/components/highlighting/ui/highlight-renderer.js.flow +0 -43
  223. package/dist/components/highlighting/ui/highlight-set-renderer.js.flow +0 -41
  224. package/dist/components/highlighting/ui/highlight-tooltip.js.flow +0 -22
  225. package/dist/components/highlighting/ui/highlighting-ui.js.flow +0 -30
  226. package/dist/components/highlighting/ui/selection-tracker.js.flow +0 -54
  227. package/dist/components/highlighting/ui/types.js.flow +0 -22
  228. package/dist/components/highlighting/ui/util.js.flow +0 -42
  229. package/dist/components/highlighting/word-indexer.js.flow +0 -21
  230. package/dist/components/hud.js.flow +0 -14
  231. package/dist/components/icon.js.flow +0 -31
  232. package/dist/components/image-loader.js.flow +0 -49
  233. package/dist/components/info-tip/info-tip.js.flow +0 -20
  234. package/dist/components/info-tip.js.flow +0 -18
  235. package/dist/components/inline-icon.js.flow +0 -39
  236. package/dist/components/input-with-examples.js.flow +0 -58
  237. package/dist/components/lint.js.flow +0 -58
  238. package/dist/components/math-input.js.flow +0 -49
  239. package/dist/components/math-output.js.flow +0 -33
  240. package/dist/components/multi-button-group.js.flow +0 -35
  241. package/dist/components/number-input.js.flow +0 -42
  242. package/dist/components/prop-check-box.js.flow +0 -8
  243. package/dist/components/range-input.js.flow +0 -20
  244. package/dist/components/simple-keypad-input.js.flow +0 -16
  245. package/dist/components/sortable.js.flow +0 -91
  246. package/dist/components/stub-tag-editor.js.flow +0 -18
  247. package/dist/components/svg-image.js.flow +0 -85
  248. package/dist/components/tex-buttons.js.flow +0 -26
  249. package/dist/components/tex.js.flow +0 -25
  250. package/dist/components/text-input.js.flow +0 -39
  251. package/dist/components/text-list-editor.js.flow +0 -22
  252. package/dist/components/tooltip.js.flow +0 -51
  253. package/dist/components/visibility-observer/create-visibility-observer.js.flow +0 -23
  254. package/dist/components/visibility-observer/get-scroll-parent.js.flow +0 -7
  255. package/dist/components/visibility-observer/visibility-observer.js.flow +0 -36
  256. package/dist/components/zoomable-tex.js.flow +0 -18
  257. package/dist/components/zoomable.js.flow +0 -70
  258. package/dist/components.js.flow +0 -22
  259. package/dist/definition-context.js.flow +0 -25
  260. package/dist/dependencies.js.flow +0 -9
  261. package/dist/error-boundary.js.flow +0 -19
  262. package/dist/extra-widgets.js.flow +0 -33
  263. package/dist/hint-renderer.js.flow +0 -32
  264. package/dist/hints-renderer.js.flow +0 -41
  265. package/dist/icon-paths.js.flow +0 -123
  266. package/dist/index.js.flow +0 -134
  267. package/dist/init.js.flow +0 -20
  268. package/dist/interaction-tracker.js.flow +0 -35
  269. package/dist/interactive2/interactive-util.js.flow +0 -50
  270. package/dist/interactive2/movable-helper-methods.js.flow +0 -15
  271. package/dist/interactive2/movable-line-options.js.flow +0 -44
  272. package/dist/interactive2/movable-line.js.flow +0 -8
  273. package/dist/interactive2/movable-point-options.js.flow +0 -44
  274. package/dist/interactive2/movable-point.js.flow +0 -8
  275. package/dist/interactive2/movable-polygon-options.js.flow +0 -47
  276. package/dist/interactive2/movable-polygon.js.flow +0 -8
  277. package/dist/interactive2/movable.js.flow +0 -8
  278. package/dist/interactive2/objective_.js.flow +0 -25
  279. package/dist/interactive2/types.js.flow +0 -8
  280. package/dist/interactive2/wrapped-defaults.js.flow +0 -11
  281. package/dist/interactive2/wrapped-ellipse.js.flow +0 -14
  282. package/dist/interactive2/wrapped-line.js.flow +0 -14
  283. package/dist/interactive2/wrapped-path.js.flow +0 -13
  284. package/dist/interactive2.js.flow +0 -16
  285. package/dist/item-renderer.js.flow +0 -132
  286. package/dist/item-version.js.flow +0 -11
  287. package/dist/jipt-paragraphs.js.flow +0 -14
  288. package/dist/loading-context.js.flow +0 -12
  289. package/dist/logging/log.js.flow +0 -62
  290. package/dist/mixins/changeable.js.flow +0 -33
  291. package/dist/mixins/editor-jsonify.js.flow +0 -10
  292. package/dist/mixins/provide-keypad.js.flow +0 -33
  293. package/dist/mixins/widget-jsonify-deprecated.js.flow +0 -11
  294. package/dist/mixins/widget-prop-denylist.js.flow +0 -20
  295. package/dist/multi-items/item-types.js.flow +0 -55
  296. package/dist/multi-items/items.js.flow +0 -66
  297. package/dist/multi-items/multi-renderer.js.flow +0 -213
  298. package/dist/multi-items/prop-type-builders.js.flow +0 -22
  299. package/dist/multi-items/shape-types.js.flow +0 -60
  300. package/dist/multi-items/shapes.js.flow +0 -25
  301. package/dist/multi-items/tree-types.js.flow +0 -45
  302. package/dist/multi-items/trees.js.flow +0 -147
  303. package/dist/multi-items.js.flow +0 -36
  304. package/dist/perseus-api.js.flow +0 -151
  305. package/dist/perseus-env.js.flow +0 -6
  306. package/dist/perseus-error.js.flow +0 -16
  307. package/dist/perseus-markdown.js.flow +0 -20
  308. package/dist/perseus-types.js.flow +0 -1041
  309. package/dist/question-paragraph.js.flow +0 -17
  310. package/dist/renderability.js.flow +0 -19
  311. package/dist/renderer.js.flow +0 -325
  312. package/dist/server-item-renderer.js.flow +0 -132
  313. package/dist/sigfigs.js.flow +0 -41
  314. package/dist/styles/constants.js.flow +0 -62
  315. package/dist/styles/global-constants.js.flow +0 -348
  316. package/dist/styles/global-styles.js.flow +0 -53
  317. package/dist/styles/media-queries.js.flow +0 -35
  318. package/dist/styles/shared.js.flow +0 -8
  319. package/dist/tex-wrangler.js.flow +0 -13
  320. package/dist/translation-linter.js.flow +0 -32
  321. package/dist/traversal.js.flow +0 -26
  322. package/dist/types.js.flow +0 -318
  323. package/dist/util/a11y.js.flow +0 -8
  324. package/dist/util/answer-types.js.flow +0 -49
  325. package/dist/util/colors.js.flow +0 -95
  326. package/dist/util/fix-passage-refs.js.flow +0 -8
  327. package/dist/util/geometry.js.flow +0 -37
  328. package/dist/util/graph-utils.js.flow +0 -9
  329. package/dist/util/graphie.js.flow +0 -8
  330. package/dist/util/interactive.js.flow +0 -11
  331. package/dist/util/katex-preprocess.js.flow +0 -12
  332. package/dist/util/math.js.flow +0 -62
  333. package/dist/util/mobile-native-utils.js.flow +0 -12
  334. package/dist/util/react-render.js.flow +0 -12
  335. package/dist/util/register-all-widgets-for-testing.js.flow +0 -7
  336. package/dist/util/scroll-utils.js.flow +0 -19
  337. package/dist/util/sizing-utils.js.flow +0 -20
  338. package/dist/util/tex.js.flow +0 -17
  339. package/dist/util/url-utils.js.flow +0 -11
  340. package/dist/util.graphie.js.flow +0 -14
  341. package/dist/util.js.flow +0 -319
  342. package/dist/version.js.flow +0 -17
  343. package/dist/widget-container.js.flow +0 -33
  344. package/dist/widgets/categorizer.js.flow +0 -70
  345. package/dist/widgets/cs-program.js.flow +0 -54
  346. package/dist/widgets/definition.js.flow +0 -57
  347. package/dist/widgets/dropdown.js.flow +0 -63
  348. package/dist/widgets/explanation.js.flow +0 -58
  349. package/dist/widgets/expression.js.flow +0 -116
  350. package/dist/widgets/graded-group-answer-bar.js.flow +0 -24
  351. package/dist/widgets/graded-group-set.js.flow +0 -65
  352. package/dist/widgets/graded-group.js.flow +0 -78
  353. package/dist/widgets/grapher/util.js.flow +0 -38
  354. package/dist/widgets/grapher.js.flow +0 -102
  355. package/dist/widgets/group.js.flow +0 -60
  356. package/dist/widgets/iframe.js.flow +0 -53
  357. package/dist/widgets/image.js.flow +0 -73
  358. package/dist/widgets/input-number.js.flow +0 -94
  359. package/dist/widgets/interaction/arrow-picker.js.flow +0 -21
  360. package/dist/widgets/interaction/color-picker.js.flow +0 -23
  361. package/dist/widgets/interaction/dash-picker.js.flow +0 -21
  362. package/dist/widgets/interaction/element-container.js.flow +0 -28
  363. package/dist/widgets/interaction.js.flow +0 -60
  364. package/dist/widgets/interactive-graph.js.flow +0 -239
  365. package/dist/widgets/label-image/answer-choices.js.flow +0 -55
  366. package/dist/widgets/label-image/marker.js.flow +0 -31
  367. package/dist/widgets/label-image/types.js.flow +0 -23
  368. package/dist/widgets/label-image.js.flow +0 -142
  369. package/dist/widgets/lights-puzzle.js.flow +0 -58
  370. package/dist/widgets/matcher.js.flow +0 -106
  371. package/dist/widgets/matrix.js.flow +0 -80
  372. package/dist/widgets/measurer.js.flow +0 -30
  373. package/dist/widgets/molecule/molecule-drawing.js.flow +0 -11
  374. package/dist/widgets/molecule/molecule-layout.js.flow +0 -96
  375. package/dist/widgets/molecule/smiles-parser.js.flow +0 -26
  376. package/dist/widgets/molecule.js.flow +0 -60
  377. package/dist/widgets/number-line.js.flow +0 -102
  378. package/dist/widgets/numeric-input.js.flow +0 -105
  379. package/dist/widgets/orderer.js.flow +0 -81
  380. package/dist/widgets/passage/passage-markdown.js.flow +0 -33
  381. package/dist/widgets/passage-ref-target.js.flow +0 -52
  382. package/dist/widgets/passage-ref.js.flow +0 -85
  383. package/dist/widgets/passage.js.flow +0 -157
  384. package/dist/widgets/plotter.js.flow +0 -78
  385. package/dist/widgets/radio/base-radio.js.flow +0 -50
  386. package/dist/widgets/radio/choice-a11y-text.js.flow +0 -14
  387. package/dist/widgets/radio/choice-icon/choice-icon.js.flow +0 -22
  388. package/dist/widgets/radio/choice-icon/cross-out-line.js.flow +0 -16
  389. package/dist/widgets/radio/choice-icon/shared-styles.js.flow +0 -11
  390. package/dist/widgets/radio/choice-none-above.js.flow +0 -16
  391. package/dist/widgets/radio/choice.js.flow +0 -29
  392. package/dist/widgets/radio/choice.jsx.fixture.js.flow +0 -7
  393. package/dist/widgets/radio/focus-ring.js.flow +0 -22
  394. package/dist/widgets/radio/option-status.js.flow +0 -16
  395. package/dist/widgets/radio/util.js.flow +0 -12
  396. package/dist/widgets/radio/widget.js.flow +0 -80
  397. package/dist/widgets/radio.js.flow +0 -31
  398. package/dist/widgets/reaction-diagram.js.flow +0 -46
  399. package/dist/widgets/sequence.js.flow +0 -53
  400. package/dist/widgets/simulator.js.flow +0 -107
  401. package/dist/widgets/sorter.js.flow +0 -102
  402. package/dist/widgets/table.js.flow +0 -67
  403. package/dist/widgets/transformer.js.flow +0 -127
  404. package/dist/widgets/unit.js.flow +0 -93
  405. package/dist/widgets/video-transcript-link.js.flow +0 -15
  406. package/dist/widgets/video.js.flow +0 -57
  407. package/dist/widgets.js.flow +0 -108
  408. package/dist/zoom.js.flow +0 -7
  409. package/src/multi-items/item-types.js.flow +0 -55
@@ -9,7 +9,7 @@
9
9
  * `ItemRenderer` and friends are written as ES6 Classes, we can have them
10
10
  * extend a `ProvideKeypad` component instead of using this mixin.
11
11
  */
12
- import PropTypes from "prop-types";
12
+ import type { APIOptions } from "../types";
13
13
  import type { CSSProperties } from "aphrodite";
14
14
  export type KeypadProps = {
15
15
  keypadStyle?: CSSProperties;
@@ -18,19 +18,22 @@ export type KeypadApiOptions = {
18
18
  customKeypad: boolean;
19
19
  nativeKeypadProxy: any;
20
20
  };
21
- declare const ProvideKeypad: {
22
- readonly propTypes: {
23
- readonly apiOptions: PropTypes.Requireable<PropTypes.InferProps<{
24
- customKeypad: PropTypes.Requireable<boolean>;
25
- nativeKeypadProxy: PropTypes.Requireable<(...args: any[]) => any>;
26
- }>>;
27
- readonly keypadStyle: PropTypes.Requireable<any>;
21
+ type KeypadMixinHostComponent = {
22
+ _keypadContainer?: HTMLDivElement | null;
23
+ props: {
24
+ apiOptions: APIOptions;
25
+ blur?: () => void;
26
+ };
27
+ state: {
28
+ keypadElement: any | null;
28
29
  };
29
- readonly getInitialState: () => {
30
+ };
31
+ declare const ProvideKeypad: {
32
+ readonly getInitialState: (this: KeypadMixinHostComponent) => {
30
33
  keypadElement: any | null;
31
34
  };
32
- readonly componentDidMount: () => void;
33
- readonly componentWillUnmount: () => void;
34
- readonly keypadElement: () => any;
35
+ readonly componentDidMount: (this: KeypadMixinHostComponent) => void;
36
+ readonly componentWillUnmount: (this: KeypadMixinHostComponent) => void;
37
+ readonly keypadElement: (this: KeypadMixinHostComponent) => any;
35
38
  };
36
39
  export default ProvideKeypad;
@@ -86,7 +86,7 @@ export declare const ApiOptions: {
86
86
  } & Record<string, unknown>) => void) | undefined;
87
87
  customKeypad?: boolean | undefined;
88
88
  useV2Keypad?: boolean | undefined;
89
- nativeKeypadProxy?: (() => unknown) | undefined;
89
+ nativeKeypadProxy?: ((blur: () => void) => import("@khanacademy/math-input").KeypadAPI) | undefined;
90
90
  isMobile?: boolean | undefined;
91
91
  setDrawingAreaAvailable?: ((arg1: boolean) => unknown) | undefined;
92
92
  useDraftEditor?: boolean | undefined;
package/dist/types.d.ts CHANGED
@@ -1,11 +1,12 @@
1
- import * as React from "react";
2
1
  import type { SerializedHighlightSet } from "./components/highlighting/types";
3
2
  import type { ILogger } from "./logging/log";
4
3
  import type { Item } from "./multi-items/item-types";
5
4
  import type { PerseusWidget } from "./perseus-types";
6
5
  import type { SizeClass } from "./util/sizing-utils";
6
+ import type { KeypadAPI } from "@khanacademy/math-input";
7
7
  import type { SendEventFn } from "@khanacademy/perseus-core";
8
8
  import type { Result } from "@khanacademy/wonder-blocks-data";
9
+ import type * as React from "react";
9
10
  export type FocusPath = ReadonlyArray<string> | null | undefined;
10
11
  export type Dimensions = {
11
12
  width?: number;
@@ -98,7 +99,7 @@ export type APIOptions = Readonly<{
98
99
  } & Record<string, unknown>) => void;
99
100
  customKeypad?: boolean;
100
101
  useV2Keypad?: boolean;
101
- nativeKeypadProxy?: () => unknown;
102
+ nativeKeypadProxy?: (blur: () => void) => KeypadAPI;
102
103
  isMobile?: boolean;
103
104
  setDrawingAreaAvailable?: (arg1: boolean) => unknown;
104
105
  useDraftEditor?: boolean;
@@ -1,7 +1,7 @@
1
- import { Keys as Key } from "@khanacademy/math-input";
2
1
  import * as React from "react";
3
2
  import type { PerseusExpressionWidgetOptions } from "../perseus-types";
4
3
  import type { PerseusScore, WidgetProps } from "../types";
4
+ import type { Keys as Key } from "@khanacademy/math-input";
5
5
  type InputPath = ReadonlyArray<string>;
6
6
  type Rubric = PerseusExpressionWidgetOptions;
7
7
  type ExternalProps = WidgetProps<RenderProps, Rubric>;
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
- import { ANSWER_BAR_STATES } from "./graded-group-answer-bar";
3
2
  import type { PerseusGradedGroupWidgetOptions } from "../perseus-types";
4
3
  import type { WidgetProps } from "../types";
4
+ import type { ANSWER_BAR_STATES } from "./graded-group-answer-bar";
5
5
  declare const GRADING_STATUSES: {
6
6
  readonly ungraded: "ungraded";
7
7
  readonly correct: "correct";
@@ -1,8 +1,8 @@
1
1
  import * as React from "react";
2
- import { QuadraticCoefficient, SineCoefficient, Range } from "../util/geometry";
3
2
  import type { Coord } from "../interactive2/types";
4
3
  import type { PerseusGraphType, PerseusGraphTypeAngle, PerseusGraphTypePoint, PerseusGraphTypePolygon, PerseusGraphTypeSegment, PerseusInteractiveGraphWidgetOptions } from "../perseus-types";
5
4
  import type { PerseusScore, WidgetProps } from "../types";
5
+ import type { QuadraticCoefficient, SineCoefficient, Range } from "../util/geometry";
6
6
  type RenderProps = PerseusInteractiveGraphWidgetOptions;
7
7
  type Rubric = PerseusInteractiveGraphWidgetOptions;
8
8
  type Props = WidgetProps<RenderProps, Rubric>;
@@ -1,25 +1,58 @@
1
- import PropTypes from "prop-types";
2
1
  import * as React from "react";
3
- declare class Plotter extends React.Component<any, any> {
2
+ import type { APIOptions } from "../types";
3
+ declare const plotTypes: string[];
4
+ type PlotType = typeof plotTypes[number];
5
+ type Props = {
6
+ type: PlotType;
7
+ labels: ReadonlyArray<string>;
8
+ categories: ReadonlyArray<string | number>;
9
+ scaleY: number;
10
+ maxY: number;
11
+ snapsPerLine: number;
12
+ picSize: number;
13
+ picBoxHeight: number;
14
+ picUrl: string;
15
+ plotDimensions: ReadonlyArray<number>;
16
+ labelInterval: number;
17
+ starting: Array<number>;
18
+ static: boolean;
19
+ markings: any;
20
+ onChange: any;
21
+ trackInteraction: () => void;
22
+ apiOptions: APIOptions;
23
+ };
24
+ type DefaultProps = {
25
+ type: Props["type"];
26
+ labels: Props["labels"];
27
+ categories: Props["categories"];
28
+ scaleY: Props["scaleY"];
29
+ maxY: Props["maxY"];
30
+ snapsPerLine: Props["snapsPerLine"];
31
+ picSize: Props["picSize"];
32
+ picBoxHeight: Props["picBoxHeight"];
33
+ picUrl: Props["picUrl"];
34
+ plotDimensions: Props["plotDimensions"];
35
+ labelInterval: Props["labelInterval"];
36
+ };
37
+ type State = {
38
+ values: Array<number>;
39
+ categoryHeights: Record<string, number>;
40
+ };
41
+ export declare class Plotter extends React.Component<Props, State> {
4
42
  shouldSetupGraphie: boolean;
5
43
  _isMounted: boolean;
6
44
  horizHairline: any;
7
45
  hairlineRange: any;
8
46
  graphie: any;
9
- static propTypes: {
10
- onChange: PropTypes.Validator<(...args: any[]) => any>;
11
- trackInteraction: PropTypes.Validator<(...args: any[]) => any>;
12
- };
13
- static defaultProps: any;
14
- state: any;
47
+ static defaultProps: DefaultProps;
48
+ state: State;
49
+ componentDidMount(): void;
50
+ UNSAFE_componentWillReceiveProps(nextProps: Props): void;
51
+ componentDidUpdate(prevProps: Props, prevState: State): void;
52
+ componentWillUnmount(): void;
15
53
  DOT_PLOT_POINT_SIZE: () => number;
16
54
  DOT_PLOT_POINT_PADDING: () => number;
17
55
  DOT_TICK_POINT_SIZE: () => number;
18
- render(): React.ReactNode;
19
- componentDidUpdate(prevProps: any, prevState: any): void;
20
- componentDidMount(): void;
21
- UNSAFE_componentWillReceiveProps(nextProps: any): void;
22
- componentWillUnmount(): void;
23
56
  setupGraphie: (arg1: any) => void;
24
57
  showHairlines: (arg1: any) => void;
25
58
  hideHairlines: () => void;
@@ -44,6 +77,7 @@ declare class Plotter extends React.Component<any, any> {
44
77
  drawPicHeights: (arg1: any, arg2: any) => void;
45
78
  getUserInput: () => any;
46
79
  simpleValidate: (arg1: any) => any;
80
+ render(): React.ReactNode;
47
81
  }
48
82
  declare const _default: Readonly<{
49
83
  name: string;
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { PerseusSequenceWidgetOptions } from "../perseus-types";
2
+ import type { PerseusSequenceWidgetOptions } from "../perseus-types";
3
3
  import type { WidgetProps } from "../types";
4
4
  type Rubric = PerseusSequenceWidgetOptions;
5
5
  type ExternalProps = WidgetProps<PerseusSequenceWidgetOptions, Rubric>;
@@ -6,7 +6,14 @@ declare class Table extends React.Component<any> {
6
6
  editableHeaders: PropTypes.Requireable<boolean>;
7
7
  Editor: PropTypes.Requireable<(...args: any[]) => any>;
8
8
  headers: PropTypes.Requireable<(string | null | undefined)[]>;
9
- keypadElement: any;
9
+ keypadElement: PropTypes.Requireable<PropTypes.InferProps<{
10
+ activate: PropTypes.Validator<(...args: any[]) => any>;
11
+ dismiss: PropTypes.Validator<(...args: any[]) => any>;
12
+ configure: PropTypes.Validator<(...args: any[]) => any>;
13
+ setCursor: PropTypes.Validator<(...args: any[]) => any>;
14
+ setKeyHandler: PropTypes.Validator<(...args: any[]) => any>;
15
+ getDOMNode: PropTypes.Validator<(...args: any[]) => any>;
16
+ }>>;
10
17
  trackInteraction: PropTypes.Validator<(...args: any[]) => any>;
11
18
  linterContext: PropTypes.Requireable<PropTypes.InferProps<{
12
19
  contentType: PropTypes.Requireable<string>;
package/dist/widgets.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import * as React from "react";
2
1
  import type { Alignment, Tracking, Version, WidgetExports, WidgetInfo, WidgetTransform } from "./types";
2
+ import type * as React from "react";
3
3
  type Editor = any;
4
4
  export declare const registerWidget: (name: string, widget: WidgetExports) => void;
5
5
  export declare const registerWidgets: (widgets: ReadonlyArray<WidgetExports>) => void;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Core Perseus API (includes renderers and widgets)",
4
4
  "author": "Khan Academy",
5
5
  "license": "MIT",
6
- "version": "7.2.0",
6
+ "version": "8.0.0",
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },
@@ -22,30 +22,30 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "@khanacademy/kas": "^0.3.1",
25
- "@khanacademy/kmath": "^0.1.1",
26
- "@khanacademy/math-input": "^8.1.1",
25
+ "@khanacademy/kmath": "^0.1.2",
26
+ "@khanacademy/math-input": "^9.0.0",
27
27
  "@khanacademy/perseus-core": "0.1.1",
28
- "@khanacademy/perseus-linter": "^0.3.1",
29
- "@khanacademy/pure-markdown": "^0.2.3",
30
- "@khanacademy/simple-markdown": "^0.9.3"
28
+ "@khanacademy/perseus-linter": "^0.3.2",
29
+ "@khanacademy/pure-markdown": "^0.2.4",
30
+ "@khanacademy/simple-markdown": "^0.10.0"
31
31
  },
32
32
  "devDependencies": {
33
- "@khanacademy/wonder-blocks-button": "^4.0.8",
34
- "@khanacademy/wonder-blocks-clickable": "^3.0.8",
33
+ "@khanacademy/wonder-blocks-button": "^4.1.3",
34
+ "@khanacademy/wonder-blocks-clickable": "^4.0.0",
35
35
  "@khanacademy/wonder-blocks-color": "^2.0.1",
36
- "@khanacademy/wonder-blocks-core": "^5.0.4",
37
- "@khanacademy/wonder-blocks-data": "^11.0.8",
38
- "@khanacademy/wonder-blocks-dropdown": "^3.0.8",
39
- "@khanacademy/wonder-blocks-form": "^4.0.8",
36
+ "@khanacademy/wonder-blocks-core": "^6.0.0",
37
+ "@khanacademy/wonder-blocks-data": "^12.0.0",
38
+ "@khanacademy/wonder-blocks-dropdown": "^3.0.21",
39
+ "@khanacademy/wonder-blocks-form": "^4.3.3",
40
40
  "@khanacademy/wonder-blocks-i18n": "^2.0.2",
41
- "@khanacademy/wonder-blocks-layout": "^2.0.8",
42
- "@khanacademy/wonder-blocks-link": "^4.0.8",
43
- "@khanacademy/wonder-blocks-modal": "^4.0.8",
44
- "@khanacademy/wonder-blocks-popover": "^2.0.8",
45
- "@khanacademy/wonder-blocks-progress-spinner": "^2.0.8",
41
+ "@khanacademy/wonder-blocks-layout": "^2.0.17",
42
+ "@khanacademy/wonder-blocks-link": "^5.0.0",
43
+ "@khanacademy/wonder-blocks-modal": "^4.0.19",
44
+ "@khanacademy/wonder-blocks-popover": "^3.0.0",
45
+ "@khanacademy/wonder-blocks-progress-spinner": "^2.0.17",
46
46
  "@khanacademy/wonder-blocks-spacing": "^3.0.5",
47
- "@khanacademy/wonder-blocks-tooltip": "^2.0.8",
48
- "@khanacademy/wonder-blocks-typography": "^2.0.5",
47
+ "@khanacademy/wonder-blocks-tooltip": "^2.1.2",
48
+ "@khanacademy/wonder-blocks-typography": "^2.1.3",
49
49
  "@khanacademy/wonder-stuff-core": "^1.2.2",
50
50
  "aphrodite": "^1.2.5",
51
51
  "classnames": "^1.1.4",
@@ -56,29 +56,29 @@
56
56
  "jquery": "^2.1.1",
57
57
  "katex": "^0.11.1",
58
58
  "lodash.debounce": "^4.0.8",
59
- "perseus-build-settings": "^0.1.0",
59
+ "perseus-build-settings": "^0.2.0",
60
60
  "prop-types": "^15.6.1",
61
61
  "react": "16.14.0",
62
62
  "react-dom": "16.14.0",
63
63
  "underscore": "^1.4.4"
64
64
  },
65
65
  "peerDependencies": {
66
- "@khanacademy/wonder-blocks-button": "^4.0.8",
67
- "@khanacademy/wonder-blocks-clickable": "^3.0.8",
66
+ "@khanacademy/wonder-blocks-button": "^4.1.3",
67
+ "@khanacademy/wonder-blocks-clickable": "^4.0.0",
68
68
  "@khanacademy/wonder-blocks-color": "^2.0.1",
69
- "@khanacademy/wonder-blocks-core": "^5.0.4",
70
- "@khanacademy/wonder-blocks-data": "^11.0.8",
71
- "@khanacademy/wonder-blocks-dropdown": "^3.0.8",
72
- "@khanacademy/wonder-blocks-form": "^4.0.8",
69
+ "@khanacademy/wonder-blocks-core": "^6.0.0",
70
+ "@khanacademy/wonder-blocks-data": "^12.0.0",
71
+ "@khanacademy/wonder-blocks-dropdown": "^3.0.21",
72
+ "@khanacademy/wonder-blocks-form": "^4.3.3",
73
73
  "@khanacademy/wonder-blocks-i18n": "^2.0.2",
74
- "@khanacademy/wonder-blocks-layout": "^2.0.8",
75
- "@khanacademy/wonder-blocks-link": "^4.0.8",
76
- "@khanacademy/wonder-blocks-modal": "^4.0.8",
77
- "@khanacademy/wonder-blocks-popover": "^2.0.8",
78
- "@khanacademy/wonder-blocks-progress-spinner": "^2.0.8",
74
+ "@khanacademy/wonder-blocks-layout": "^2.0.17",
75
+ "@khanacademy/wonder-blocks-link": "^5.0.0",
76
+ "@khanacademy/wonder-blocks-modal": "^4.0.19",
77
+ "@khanacademy/wonder-blocks-popover": "^3.0.0",
78
+ "@khanacademy/wonder-blocks-progress-spinner": "^2.0.17",
79
79
  "@khanacademy/wonder-blocks-spacing": "^3.0.5",
80
- "@khanacademy/wonder-blocks-tooltip": "^2.0.8",
81
- "@khanacademy/wonder-blocks-typography": "^2.0.5",
80
+ "@khanacademy/wonder-blocks-tooltip": "^2.1.2",
81
+ "@khanacademy/wonder-blocks-typography": "^2.1.3",
82
82
  "@khanacademy/wonder-stuff-core": "^1.2.2",
83
83
  "aphrodite": "^1.2.5",
84
84
  "classnames": "^1.1.4",
@@ -1,4 +1,6 @@
1
- export const passageArticle = {
1
+ import type {PerseusRenderer} from "../perseus-types";
2
+
3
+ export const passageArticle: PerseusRenderer = {
2
4
  content:
3
5
  "###Group/Pair Activity \n\nThis passage is adapted from Ed Yong, “Turtles Use the Earth’s Magnetic Field as Global GPS.” ©2011 by Kalmbach Publishing Co.\n\n[[☃ passage 1]]\n\n**Question 9**\n\nThe passage most strongly suggests that Adelita used which of the following to navigate her 9,000-mile journey?\n\nA) The current of the North Atlantic gyre\n\nB) Cues from electromagnetic coils designed by Putman and Lohmann\n\nC) The inclination and intensity of Earth’s magnetic field\n\nD) A simulated “magnetic signature” configured by Lohmann\n\n10) Which choice provides the best evidence for the answer to the previous question?\n\nA) Lines 1–2 (“In 1996...way”)\n\nB) Lines 20–21 (“Using...surface”)\n\nC) Lines 36–37 (“In the wild...stars”)\n\nD) Lines 43–45 (“Neither...it is”)\n\n**Question 12** \n\nBased on the passage, which choice best describes the relationship between Putman’s and Lohmann’s research?\n\nA) Putman’s research contradicts Lohmann’s.\n\nB) Putman’s research builds on Lohmann’s.\n\nC) Lohmann’s research confirms Putman’s.\n\nD) Lohmann’s research corrects Putman’s.",
4
6
  images: {},
@@ -251,7 +251,7 @@ export const mockedItem: PerseusItem = {
251
251
  // The mock widget type is not part of the PerseusWidget type union (and
252
252
  // we don't want to make it such to avoid polluting our production types
253
253
  // for test purposes) so we force TypeScript to accept it here.
254
- // @ts-expect-error [FEI-5003] - TS2352 - Conversion of type '{ content: string; images: {}; widgets: { "mock-widget 1": { graded: true; version: { major: number; minor: number; }; static: false; type: "mock-widget"; options: { static: false; smiling: boolean; }; alignment: string; }; "mock-widget 2": { ...; }; "mock-widget 3": { ...; }; "mock-widget 4": { ...; }; }; }' to type 'PerseusRenderer' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
254
+ // @ts-expect-error - TS2352 - Conversion of type '{ content: string; images: {}; widgets: { "mock-widget 1": { graded: true; version: { major: number; minor: number; }; static: false; type: "mock-widget"; options: { static: false; smiling: boolean; }; alignment: string; }; "mock-widget 2": { ...; }; "mock-widget 3": { ...; }; "mock-widget 4": { ...; }; }; }' to type 'PerseusRenderer' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
255
255
  question: {
256
256
  content:
257
257
  "Mock widget ==> [[\u2603 mock-widget 1]] [[\u2603 mock-widget 2]] [[\u2603 mock-widget 3]] [[\u2603 mock-widget 4]]",
@@ -85,7 +85,7 @@ export const question2: PerseusRenderer = {
85
85
  };
86
86
 
87
87
  // Note that if this item is used, you _must_ first register the MockWidget
88
- // @ts-expect-error [FEI-5003] - TS2352 - Conversion of type '{ content: string; images: {}; widgets: { "mock-widget 1": { graded: true; version: { major: number; minor: number; }; static: false; type: "mock-widget"; options: { static: false; smiling: boolean; }; alignment: string; }; "mock-widget 2": { ...; }; "mock-widget 3": { ...; }; }; }' to type 'PerseusRenderer' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
88
+ // @ts-expect-error - TS2352 - Conversion of type '{ content: string; images: {}; widgets: { "mock-widget 1": { graded: true; version: { major: number; minor: number; }; static: false; type: "mock-widget"; options: { static: false; smiling: boolean; }; alignment: string; }; "mock-widget 2": { ...; }; "mock-widget 3": { ...; }; }; }' to type 'PerseusRenderer' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
89
89
  export const mockedItem: PerseusRenderer = {
90
90
  // The mock widget type is not part of the PerseusWidget type union (and
91
91
  // we don't want to make it such to avoid polluting our production types
@@ -115,7 +115,7 @@ const makeHint = (content: string): PerseusRenderer => ({
115
115
  graded: true,
116
116
  version: {major: 0, minor: 0},
117
117
  static: false,
118
- // @ts-expect-error [FEI-5003] - TS2322 - Type '"mock-widget"' is not assignable to type '"video" | "image" | "iframe" | "table" | "radio" | "definition" | "group" | "matrix" | "categorizer" | "cs-program" | "dropdown" | "example-graphie-widget" | "example-widget" | ... 26 more ... | "unit-input"'.
118
+ // @ts-expect-error - TS2322 - Type '"mock-widget"' is not assignable to type '"video" | "image" | "iframe" | "table" | "radio" | "definition" | "group" | "matrix" | "categorizer" | "cs-program" | "dropdown" | "example-graphie-widget" | "example-widget" | ... 26 more ... | "unit-input"'.
119
119
  type: "mock-widget",
120
120
  options: {static: false},
121
121
  alignment: "default",
@@ -309,7 +309,7 @@ describe("item renderer", () => {
309
309
  renderer.focus();
310
310
 
311
311
  // Assert
312
- expect(screen.getByLabelText("Up arrow")).toBeVisible();
312
+ expect(screen.getByLabelText("7")).toBeVisible();
313
313
  });
314
314
 
315
315
  it("should provide current and previous focus paths on focus change to, and away from, a single widget", () => {
@@ -34,7 +34,7 @@ export const mockedAssetItem = {
34
34
  } as const;
35
35
 
36
36
  export class MockAssetLoadingWidget extends React.Component<Record<any, any>> {
37
- // @ts-expect-error [FEI-5003] - TS2564 - Property 'setAssetStatus' has no initializer and is not definitely assigned in the constructor.
37
+ // @ts-expect-error - TS2564 - Property 'setAssetStatus' has no initializer and is not definitely assigned in the constructor.
38
38
  setAssetStatus: (assetKey: string, loaded: boolean) => void;
39
39
 
40
40
  render(): React.ReactNode {
@@ -35,7 +35,7 @@ describe("perseus markdown", () => {
35
35
  },
36
36
  ])("should parse math", ({content, expected}) => {
37
37
  // Arrange, Act
38
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
38
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
39
39
  const parsed = parse(content);
40
40
 
41
41
  // Assert
@@ -75,7 +75,7 @@ describe("perseus markdown", () => {
75
75
  },
76
76
  ])("should parse nested math", ({content, expected}) => {
77
77
  // Arrange, Act
78
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
78
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
79
79
  const parsed = parse(content);
80
80
 
81
81
  // Assert
@@ -161,7 +161,7 @@ describe("perseus markdown", () => {
161
161
  },
162
162
  ])("should allow escaping in math", ({content, expected}) => {
163
163
  // Arrange, Act
164
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
164
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
165
165
  const parsed = parse(content);
166
166
 
167
167
  // Assert
@@ -229,7 +229,7 @@ describe("perseus markdown", () => {
229
229
  },
230
230
  ])("should parse block math", ({content, expected}) => {
231
231
  // Arrange, Act
232
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
232
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
233
233
  const parsed = parse(content);
234
234
 
235
235
  // Assert
@@ -274,7 +274,7 @@ describe("perseus markdown", () => {
274
274
  },
275
275
  ])("should break on paragraphs", ({content, expected}) => {
276
276
  // Arrange, Act
277
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
277
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
278
278
  const parsed = parse(content);
279
279
 
280
280
  // Assert
@@ -352,7 +352,7 @@ describe("perseus markdown", () => {
352
352
  },
353
353
  ])("should parse widget types and ids", ({content, expected}) => {
354
354
  // Arrange, Act
355
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
355
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
356
356
  const parsed = parse(content);
357
357
 
358
358
  // Assert
@@ -361,7 +361,7 @@ describe("perseus markdown", () => {
361
361
 
362
362
  it("should allow escaping widget identifiers", () => {
363
363
  // Arrange, Act
364
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
364
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
365
365
  const parsed = parse("\\[[☃ test 1]]");
366
366
 
367
367
  // Assert
@@ -408,7 +408,7 @@ describe("perseus markdown", () => {
408
408
  "should parse widgets next to each other as widgets",
409
409
  ({content, expected}) => {
410
410
  // Arrange, Act
411
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
411
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
412
412
  const parsed = parse(content);
413
413
 
414
414
  // Assert
@@ -418,7 +418,7 @@ describe("perseus markdown", () => {
418
418
 
419
419
  it("should parse multiple columns", () => {
420
420
  // Arrange, Act
421
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
421
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
422
422
  const parsed = parse("hi\n\n" + "=====\n\n" + "there\n\n");
423
423
 
424
424
  // Assert
@@ -539,7 +539,7 @@ describe("perseus markdown", () => {
539
539
  },
540
540
  ])("should detect unescaped dollars", ({content, expected}) => {
541
541
  // Arrange, Act
542
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
542
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
543
543
  const parsed = parse(content);
544
544
 
545
545
  // Assert
@@ -557,7 +557,7 @@ describe("perseus markdown", () => {
557
557
  "data 7 | data 8 | data 9";
558
558
 
559
559
  // Act
560
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
560
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
561
561
  const parsed = parse(content);
562
562
 
563
563
  // Assert
@@ -582,7 +582,7 @@ describe("perseus markdown", () => {
582
582
  } as const;
583
583
 
584
584
  // Act
585
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
585
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
586
586
  const parsedWithLint = parse(content);
587
587
  PerseusLinter.runLinter(parsedWithLint, context, true);
588
588
 
@@ -601,7 +601,7 @@ describe("perseus markdown", () => {
601
601
  const content = "para!";
602
602
 
603
603
  // Act
604
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
604
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
605
605
  const parsed = parse(content);
606
606
  const output = basicOutput(parsed);
607
607
 
@@ -614,7 +614,7 @@ describe("perseus markdown", () => {
614
614
  const content = "col1\n\n" + "=====\n\n" + "col2";
615
615
 
616
616
  // Act
617
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
617
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
618
618
  const parsed = parse(content);
619
619
  const output = basicOutput(parsed);
620
620
 
@@ -627,7 +627,7 @@ describe("perseus markdown", () => {
627
627
  const content = "```alt\n" + "screenreader-only text!\n" + "```";
628
628
 
629
629
  // Act
630
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
630
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
631
631
  const parsed = parse(content);
632
632
  const output = basicOutput(parsed);
633
633
 
@@ -646,7 +646,7 @@ describe("perseus markdown", () => {
646
646
  "data 7 | data 8 | data 9";
647
647
 
648
648
  // Act
649
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
649
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
650
650
  const parsed = parse(content);
651
651
  const output = basicOutput(parsed);
652
652
 
@@ -672,7 +672,7 @@ describe("perseus markdown", () => {
672
672
  } as const;
673
673
 
674
674
  // Act
675
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
675
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
676
676
  const parsedWithLint = parse(content);
677
677
  PerseusLinter.runLinter(parsedWithLint, context, true);
678
678