@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
@@ -39,7 +39,7 @@ export function shapePropType(...args: ReadonlyArray<any>): any {
39
39
  }).isRequired,
40
40
  ]);
41
41
 
42
- // @ts-expect-error [FEI-5003] - TS2556 - A spread argument must either have a tuple type or be passed to a rest parameter.
42
+ // @ts-expect-error - TS2556 - A spread argument must either have a tuple type or be passed to a rest parameter.
43
43
  return itemShape(...args);
44
44
  }
45
45
 
@@ -99,7 +99,7 @@ function buildTreePropTypeForShape(shape: Shape): any {
99
99
  return PropTypes.shape(propTypeShape);
100
100
  }
101
101
  throw new PerseusError(
102
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'type' does not exist on type 'never'.
102
+ // @ts-expect-error - TS2339 - Property 'type' does not exist on type 'never'.
103
103
  `unexpected shape type ${shape.type}`,
104
104
  Errors.InvalidInput,
105
105
  );
@@ -23,10 +23,10 @@
23
23
 
24
24
  // TODO(jeremy): We lost "arrayness" in D69450. It'd be nice to restore that
25
25
  // because right now ArrayNode doesn't add anything.
26
- // @ts-expect-error [FEI-5003] - TS2456 - Type alias 'ArrayNode' circularly references itself. | TS2315 - Type 'Tree' is not generic.
26
+ // @ts-expect-error - TS2456 - Type alias 'ArrayNode' circularly references itself. | TS2315 - Type 'Tree' is not generic.
27
27
  export type ArrayNode<C, H, T> = Tree<C, H, T>;
28
28
  export type ObjectNode<C, H, T> = {
29
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'Tree' is not generic.
29
+ // @ts-expect-error - TS2315 - Type 'Tree' is not generic.
30
30
  [k: string]: Tree<C, H, T>;
31
31
  };
32
32
 
@@ -37,11 +37,11 @@ export type ObjectNode<C, H, T> = {
37
37
  * in order to ensure that TypeScript can track its refinement and appropriate use.
38
38
  * It's messy.
39
39
  */
40
- // @ts-expect-error [FEI-5003] - TS2456 - Type alias 'Tree' circularly references itself. | TS2315 - Type 'ArrayNode' is not generic.
40
+ // @ts-expect-error - TS2456 - Type alias 'Tree' circularly references itself. | TS2315 - Type 'ArrayNode' is not generic.
41
41
  export type Tree<C, H, T> =
42
42
  | C
43
43
  | H
44
44
  | T
45
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'ArrayNode' is not generic.
45
+ // @ts-expect-error - TS2315 - Type 'ArrayNode' is not generic.
46
46
  | ArrayNode<C, H, T>
47
47
  | ObjectNode<C, H, T>;
@@ -98,13 +98,13 @@ export type ContentMapper<CI, CO> = (
98
98
  export type HintMapper<HI, HO> = (hint: HI, shape: HintShape, path: Path) => HO;
99
99
  export type TagsMapper<TI, TO> = (tag: TI, shape: TagsShape, path: Path) => TO;
100
100
  export type ArrayMapper<CI, CO, HI, HO, TI, TO> = (
101
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'ArrayNode' is not generic.
101
+ // @ts-expect-error - TS2315 - Type 'ArrayNode' is not generic.
102
102
  mappedArray: ArrayNode<CO, HO, TO>,
103
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'ArrayNode' is not generic.
103
+ // @ts-expect-error - TS2315 - Type 'ArrayNode' is not generic.
104
104
  originalArray: ArrayNode<CI, HI, TI>,
105
105
  shape: ArrayShape,
106
106
  path: Path,
107
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'ArrayNode' is not generic.
107
+ // @ts-expect-error - TS2315 - Type 'ArrayNode' is not generic.
108
108
  ) => ArrayNode<CO, HO, TO>;
109
109
 
110
110
  /**
@@ -120,7 +120,7 @@ export interface TreeMapper<CI, CO, HI, HO, TI, TO> {
120
120
  hint: HintMapper<HI, HO>;
121
121
  tags: TagsMapper<TI, TO>;
122
122
  array: ArrayMapper<CI, CO, HI, HO, TI, TO>;
123
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'Tree' is not generic. | TS2315 - Type 'Tree' is not generic.
123
+ // @ts-expect-error - TS2315 - Type 'Tree' is not generic. | TS2315 - Type 'Tree' is not generic.
124
124
  mapTree(tree: Tree<CI, HI, TI>, shape: Shape): Tree<CO, HO, TO>;
125
125
  }
126
126
 
@@ -196,7 +196,7 @@ class TreeMapperJustForLeaves<CI, CO, HI, HO, TI, TO> {
196
196
  );
197
197
  }
198
198
 
199
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'Tree' is not generic. | TS2315 - Type 'Tree' is not generic.
199
+ // @ts-expect-error - TS2315 - Type 'Tree' is not generic. | TS2315 - Type 'Tree' is not generic.
200
200
  mapTree(tree: Tree<CI, HI, TI>, shape: Shape): Tree<CO, HO, TO> {
201
201
  return mapTree(tree, shape, [], this);
202
202
  }
@@ -235,7 +235,7 @@ class TreeMapperForLeavesAndCollections<CI, CO, HI, HO, TI, TO> {
235
235
  );
236
236
  }
237
237
 
238
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'Tree' is not generic. | TS2315 - Type 'Tree' is not generic.
238
+ // @ts-expect-error - TS2315 - Type 'Tree' is not generic. | TS2315 - Type 'Tree' is not generic.
239
239
  mapTree(tree: Tree<CI, HI, TI>, shape: Shape): Tree<CO, HO, TO> {
240
240
  return mapTree(tree, shape, [], this);
241
241
  }
@@ -251,7 +251,7 @@ function identity<T>(x: T): T {
251
251
  * `setHintMapper`, `setTagMapper`, and `setArrayMapper` to specify
252
252
  * transformations for the individual node types.
253
253
  */
254
- // @ts-expect-error [FEI-5003] - TS2300 - Duplicate identifier 'C'. | TS2300 - Duplicate identifier 'H'. | TS2300 - Duplicate identifier 'T'.
254
+ // @ts-expect-error - TS2300 - Duplicate identifier 'C'. | TS2300 - Duplicate identifier 'H'. | TS2300 - Duplicate identifier 'T'.
255
255
  export function buildMapper<C, C, H, H, T, T>(): TreeMapperJustForLeaves<
256
256
  C,
257
257
  C,
@@ -268,12 +268,12 @@ export function buildMapper<C, C, H, H, T, T>(): TreeMapperJustForLeaves<
268
268
  * TreeMapper to each node, and return the resulting tree.
269
269
  */
270
270
  function mapTree<CI, CO, HI, HO, TI, TO>(
271
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'Tree' is not generic.
271
+ // @ts-expect-error - TS2315 - Type 'Tree' is not generic.
272
272
  tree: Tree<CI, HI, TI>,
273
273
  shape: Shape,
274
274
  path: Path,
275
275
  mappers: TreeMapper<CI, CO, HI, HO, TI, TO>,
276
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'Tree' is not generic.
276
+ // @ts-expect-error - TS2315 - Type 'Tree' is not generic.
277
277
  ): Tree<CO, HO, TO> {
278
278
  // We trust the shape of the multi-item to match the shape provided at
279
279
  // runtime. Therefore, in each shape branch, we cast the node to `any` and
@@ -291,20 +291,20 @@ function mapTree<CI, CO, HI, HO, TI, TO>(
291
291
  return mappers.tags(tags, shape, path);
292
292
  }
293
293
  if (shape.type === "array") {
294
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'ArrayNode' is not generic.
294
+ // @ts-expect-error - TS2315 - Type 'ArrayNode' is not generic.
295
295
  const array: ArrayNode<CI, HI, TI> = tree as any;
296
296
 
297
297
  if (!Array.isArray(array)) {
298
298
  throw new PerseusError(
299
299
  `Invalid object of type "${typeof array}" found at path ` +
300
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.
300
+ // @ts-expect-error - TS2769 - No overload matches this call.
301
301
  `${["<root>"].concat(path).join(".")}. Expected array.`,
302
302
  Errors.Internal,
303
303
  );
304
304
  }
305
305
 
306
306
  const elementShape = shape.elementShape;
307
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'ArrayNode' is not generic.
307
+ // @ts-expect-error - TS2315 - Type 'ArrayNode' is not generic.
308
308
  const mappedElements: ArrayNode<CO, HO, TO> = array.map((inner, i) =>
309
309
  mapTree(inner, elementShape, path.concat(i), mappers),
310
310
  );
@@ -316,7 +316,7 @@ function mapTree<CI, CO, HI, HO, TI, TO>(
316
316
  if (object && typeof object !== "object") {
317
317
  throw new PerseusError(
318
318
  `Invalid object of type "${typeof object}" found at ` +
319
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.
319
+ // @ts-expect-error - TS2769 - No overload matches this call.
320
320
  `path ${["<root>"].concat(path).join(".")}. Expected ` +
321
321
  `"object" type.`,
322
322
  Errors.InvalidInput,
@@ -327,7 +327,7 @@ function mapTree<CI, CO, HI, HO, TI, TO>(
327
327
  if (!valueShapes) {
328
328
  throw new PerseusError(
329
329
  `Unexpected shape ${JSON.stringify(shape)} at path ` +
330
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.
330
+ // @ts-expect-error - TS2769 - No overload matches this call.
331
331
  `${["<root>"].concat(path).join(".")}.`,
332
332
  Errors.InvalidInput,
333
333
  );
@@ -337,7 +337,7 @@ function mapTree<CI, CO, HI, HO, TI, TO>(
337
337
  if (!(key in object)) {
338
338
  throw new PerseusError(
339
339
  `Key "${key}" is missing from shape at path ` +
340
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.
340
+ // @ts-expect-error - TS2769 - No overload matches this call.
341
341
  `${["<root>"].concat(path).join(".")}.`,
342
342
  Errors.InvalidInput,
343
343
  );
@@ -353,7 +353,7 @@ function mapTree<CI, CO, HI, HO, TI, TO>(
353
353
  return newObject;
354
354
  }
355
355
  throw new PerseusError(
356
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'type' does not exist on type 'never'.
356
+ // @ts-expect-error - TS2339 - Property 'type' does not exist on type 'never'.
357
357
  `unexpected shape type ${shape.type}`,
358
358
  Errors.InvalidInput,
359
359
  );
@@ -2,7 +2,7 @@
2
2
  * Sets up the basic environment for running Perseus in.
3
3
  */
4
4
 
5
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'KhanUtil' does not exist on type 'Window & typeof globalThis'.
5
+ // @ts-expect-error - TS2339 - Property 'KhanUtil' does not exist on type 'Window & typeof globalThis'.
6
6
  window.KhanUtil = {
7
7
  debugLog: function () {},
8
8
  localeToFixed: function (num, precision) {
@@ -10,7 +10,7 @@ window.KhanUtil = {
10
10
  },
11
11
  };
12
12
 
13
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'Exercises' does not exist on type 'Window & typeof globalThis'.
13
+ // @ts-expect-error - TS2339 - Property 'Exercises' does not exist on type 'Window & typeof globalThis'.
14
14
  window.Exercises = {
15
15
  localMode: true,
16
16
 
@@ -128,7 +128,7 @@ const rules = {
128
128
 
129
129
  // Splice the caption into the table's children with the
130
130
  // caption as the first child.
131
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.
131
+ // @ts-expect-error - TS2769 - No overload matches this call.
132
132
  contents = React.cloneElement(tableOutput, null, [
133
133
  caption,
134
134
  ...tableOutput.props.children,
@@ -156,7 +156,7 @@ const rules = {
156
156
  // just a stub for testing.
157
157
  return (
158
158
  <em key={state.key}>
159
- {/* @ts-expect-error [FEI-5003] - TS2554 - Expected 1-2 arguments, but got 3. */}
159
+ {/* @ts-expect-error - TS2554 - Expected 1-2 arguments, but got 3. */}
160
160
  {i18n.doNotTranslate("[Widget: ", node.id, "]")}
161
161
  </em>
162
162
  );
@@ -211,7 +211,7 @@ const rules = {
211
211
  : false;
212
212
  if (!isKAUrl) {
213
213
  // Prevents "reverse tabnabbing" phishing attacks
214
- // @ts-expect-error [FEI-5003] - TS2322 - Type '"noopener noreferrer"' is not assignable to type 'null'.
214
+ // @ts-expect-error - TS2322 - Type '"noopener noreferrer"' is not assignable to type 'null'.
215
215
  rel = "noopener noreferrer";
216
216
  }
217
217
 
@@ -293,7 +293,7 @@ const inlineNodeTypes = {
293
293
  code: true,
294
294
  } as const;
295
295
 
296
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type '{ readonly columns: { readonly react: (node: any, output: any, state: any) => Element; readonly order: -2; readonly match: any; readonly parse: (capture: any, parse: any, state: any) => any; }; ... 35 more ...; readonly text: TextInOutRule; }' is not assignable to parameter of type 'ParserRules'.
296
+ // @ts-expect-error - TS2345 - Argument of type '{ readonly columns: { readonly react: (node: any, output: any, state: any) => Element; readonly order: -2; readonly match: any; readonly parse: (capture: any, parse: any, state: any) => any; }; ... 35 more ...; readonly text: TextInOutRule; }' is not assignable to parameter of type 'ParserRules'.
297
297
  const builtParser = SimpleMarkdown.parserFor(rules);
298
298
  const parse = (source: string, state: any): any => {
299
299
  const paragraphedSource = source + "\n\n";
@@ -385,7 +385,7 @@ const getContent = (ast: any) => {
385
385
  * Markdown markup and widget references are ignored.
386
386
  */
387
387
  const characterCount = (source: string): number => {
388
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
388
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
389
389
  const ast = parse(source);
390
390
  const content = getContent(ast).join("");
391
391
  return content.length;
package/src/renderer.tsx CHANGED
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @khanacademy/ts-no-error-suppressions */
1
2
  /* eslint-disable react/no-unsafe */
2
3
  import * as PerseusLinter from "@khanacademy/perseus-linter";
3
4
  import classNames from "classnames";
@@ -65,7 +66,7 @@ const isIdPathPrefix = function (
65
66
  return prefixArray === wholeArray;
66
67
  }
67
68
 
68
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'readonly string[] | undefined' is not assignable to parameter of type 'Collection<any>'.
69
+ // @ts-expect-error - TS2345 - Argument of type 'readonly string[] | undefined' is not assignable to parameter of type 'Collection<any>'.
69
70
  return _.every(prefixArray, (elem: string, i: number) => {
70
71
  if (wholeArray != null) {
71
72
  return _.isEqual(elem, wholeArray[i]);
@@ -208,26 +209,26 @@ type DefaultProps = {
208
209
 
209
210
  class Renderer extends React.Component<Props, State> {
210
211
  _currentFocus: FocusPath | null | undefined;
211
- // @ts-expect-error [FEI-5003] - TS2564 - Property '_foundTextNodes' has no initializer and is not definitely assigned in the constructor.
212
+ // @ts-expect-error - TS2564 - Property '_foundTextNodes' has no initializer and is not definitely assigned in the constructor.
212
213
  _foundTextNodes: boolean;
213
- // @ts-expect-error [FEI-5003] - TS2564 - Property '_interactionTrackers' has no initializer and is not definitely assigned in the constructor.
214
+ // @ts-expect-error - TS2564 - Property '_interactionTrackers' has no initializer and is not definitely assigned in the constructor.
214
215
  _interactionTrackers: {
215
216
  [id: string]: InteractionTracker;
216
217
  };
217
- // @ts-expect-error [FEI-5003] - TS2564 - Property '_isMounted' has no initializer and is not definitely assigned in the constructor.
218
+ // @ts-expect-error - TS2564 - Property '_isMounted' has no initializer and is not definitely assigned in the constructor.
218
219
  _isMounted: boolean;
219
- // @ts-expect-error [FEI-5003] - TS2564 - Property '_isTwoColumn' has no initializer and is not definitely assigned in the constructor.
220
+ // @ts-expect-error - TS2564 - Property '_isTwoColumn' has no initializer and is not definitely assigned in the constructor.
220
221
  _isTwoColumn: boolean;
221
222
 
222
223
  // The i18n linter.
223
224
  _translationLinter: TranslationLinter;
224
225
 
225
226
  lastRenderedMarkdown: React.ReactNode;
226
- // @ts-expect-error [FEI-5003] - TS2564 - Property 'reuseMarkdown' has no initializer and is not definitely assigned in the constructor.
227
+ // @ts-expect-error - TS2564 - Property 'reuseMarkdown' has no initializer and is not definitely assigned in the constructor.
227
228
  reuseMarkdown: boolean;
228
- // @ts-expect-error [FEI-5003] - TS2564 - Property 'translationIndex' has no initializer and is not definitely assigned in the constructor.
229
+ // @ts-expect-error - TS2564 - Property 'translationIndex' has no initializer and is not definitely assigned in the constructor.
229
230
  translationIndex: number;
230
- // @ts-expect-error [FEI-5003] - TS2564 - Property 'widgetIds' has no initializer and is not definitely assigned in the constructor.
231
+ // @ts-expect-error - TS2564 - Property 'widgetIds' has no initializer and is not definitely assigned in the constructor.
231
232
  widgetIds: Array<string>;
232
233
 
233
234
  static defaultProps: DefaultProps = {
@@ -274,7 +275,7 @@ class Renderer extends React.Component<Props, State> {
274
275
  this._isMounted = true;
275
276
 
276
277
  // figure out why we're passing an empty object
277
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type '{}' is not assignable to parameter of type 'Props'.
278
+ // @ts-expect-error - TS2345 - Argument of type '{}' is not assignable to parameter of type 'Props'.
278
279
  this.handleRender({});
279
280
  this._currentFocus = null;
280
281
 
@@ -391,7 +392,7 @@ class Renderer extends React.Component<Props, State> {
391
392
  _.each(this.widgetIds, (id) => {
392
393
  // eslint-disable-next-line react/no-string-refs
393
394
  const container = this.refs["container:" + id];
394
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'replaceWidgetProps' does not exist on type 'ReactInstance'.
395
+ // @ts-expect-error - TS2339 - Property 'replaceWidgetProps' does not exist on type 'ReactInstance'.
395
396
  container && container.replaceWidgetProps(this.getWidgetProps(id));
396
397
  });
397
398
 
@@ -453,11 +454,11 @@ class Renderer extends React.Component<Props, State> {
453
454
  };
454
455
  };
455
456
 
456
- // @ts-expect-error [FEI-5003] - TS2322 - Type '(props: Props) => Partial<Record<string, CategorizerWidget | CSProgramWidget | DefinitionWidget | DropdownWidget | ... 35 more ... | VideoWidget>>' is not assignable to type '(props: Props) => { [key: string]: PerseusWidget; }'.
457
+ // @ts-expect-error - TS2322 - Type '(props: Props) => Partial<Record<string, CategorizerWidget | CSProgramWidget | DefinitionWidget | DropdownWidget | ... 35 more ... | VideoWidget>>' is not assignable to type '(props: Props) => { [key: string]: PerseusWidget; }'.
457
458
  _getAllWidgetsInfo: (props: Props) => {
458
459
  [key: string]: WidgetInfo;
459
460
  } = (props: Props) => {
460
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type '{ [key: string]: PerseusWidget; }' is not assignable to parameter of type 'Partial<Record<string, CategorizerWidget>>'.
461
+ // @ts-expect-error - TS2345 - Argument of type '{ [key: string]: PerseusWidget; }' is not assignable to parameter of type 'Partial<Record<string, CategorizerWidget>>'.
461
462
  return mapObject(props.widgets, (widgetInfo, widgetId) => {
462
463
  if (!widgetInfo.type || !widgetInfo.alignment) {
463
464
  const newValues: Record<string, any> = {};
@@ -481,7 +482,7 @@ class Renderer extends React.Component<Props, State> {
481
482
  },
482
483
  props: Props,
483
484
  ) => any = (allWidgetInfo, props) => {
484
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type '{ [key: string]: PerseusWidget; }' is not assignable to parameter of type 'Partial<Record<string, CategorizerWidget>>'.
485
+ // @ts-expect-error - TS2345 - Argument of type '{ [key: string]: PerseusWidget; }' is not assignable to parameter of type 'Partial<Record<string, CategorizerWidget>>'.
485
486
  return mapObject(allWidgetInfo, (widgetInfo) => {
486
487
  return Widgets.getRendererPropsForWidgetInfo(
487
488
  widgetInfo,
@@ -540,7 +541,7 @@ class Renderer extends React.Component<Props, State> {
540
541
  if (widgetInfo) {
541
542
  const type = (widgetInfo && widgetInfo.type) || impliedType;
542
543
  const shouldHighlight = _.contains(
543
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'readonly any[] | undefined' is not assignable to parameter of type 'Collection<any>'.
544
+ // @ts-expect-error - TS2345 - Argument of type 'readonly any[] | undefined' is not assignable to parameter of type 'Collection<any>'.
544
545
  this.props.highlightedWidgets,
545
546
  id,
546
547
  );
@@ -589,10 +590,10 @@ class Renderer extends React.Component<Props, State> {
589
590
  interactionTracker = this._interactionTrackers[id] =
590
591
  new InteractionTracker(
591
592
  apiOptions.trackInteraction,
592
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
593
+ // @ts-expect-error - TS2345 - Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
593
594
  widgetInfo && widgetInfo.type,
594
595
  id,
595
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
596
+ // @ts-expect-error - TS2345 - Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
596
597
  Widgets.getTracking(widgetInfo && widgetInfo.type),
597
598
  );
598
599
  }
@@ -857,7 +858,7 @@ class Renderer extends React.Component<Props, State> {
857
858
  if (!ref) {
858
859
  return null;
859
860
  }
860
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'getWidget' does not exist on type 'ReactInstance'.
861
+ // @ts-expect-error - TS2339 - Property 'getWidget' does not exist on type 'ReactInstance'.
861
862
  return ref.getWidget();
862
863
  };
863
864
 
@@ -884,7 +885,7 @@ class Renderer extends React.Component<Props, State> {
884
885
 
885
886
  // Failsafe: abort if ID is different, because focus probably happened
886
887
  // before blur
887
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.
888
+ // @ts-expect-error - TS2769 - No overload matches this call.
888
889
  const fullPath = [id].concat(blurPath);
889
890
  if (!_.isEqual(fullPath, blurringFocusPath)) {
890
891
  return;
@@ -977,7 +978,7 @@ class Renderer extends React.Component<Props, State> {
977
978
 
978
979
  // wrap top-level elements in a QuestionParagraph, mostly
979
980
  // for appropriate spacing and other css
980
- // @ts-expect-error [FEI-5003] - TS2322 - Type '(ast: any, state: WidgetState) => never[] | JSX.Element' is not assignable to type '(ast: any, state: WidgetState) => ReactElement<any, string | JSXElementConstructor<any>>'.
981
+ // @ts-expect-error - TS2322 - Type '(ast: any, state: WidgetState) => never[] | JSX.Element' is not assignable to type '(ast: any, state: WidgetState) => ReactElement<any, string | JSXElementConstructor<any>>'.
981
982
  outputMarkdown: (ast: any, state: WidgetState) => React.ReactElement = (
982
983
  ast: any,
983
984
  state: WidgetState,
@@ -1003,10 +1004,10 @@ class Renderer extends React.Component<Props, State> {
1003
1004
  // now.
1004
1005
  /* c8 ignore if */
1005
1006
  if (typeof nodeOut === "string" && lastWasString) {
1006
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'number' is not assignable to type 'never'.
1007
+ // @ts-expect-error - TS2322 - Type 'number' is not assignable to type 'never'.
1007
1008
  result[result.length - 1] += nodeOut;
1008
1009
  } else {
1009
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'ReactElement<any, string | JSXElementConstructor<any>>' is not assignable to parameter of type 'never'.
1010
+ // @ts-expect-error - TS2345 - Argument of type 'ReactElement<any, string | JSXElementConstructor<any>>' is not assignable to parameter of type 'never'.
1010
1011
  result.push(nodeOut);
1011
1012
  }
1012
1013
  lastWasString = isString;
@@ -1302,7 +1303,7 @@ class Renderer extends React.Component<Props, State> {
1302
1303
  {({setAssetStatus}) => (
1303
1304
  <SvgImage
1304
1305
  setAssetStatus={setAssetStatus}
1305
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'string | null | undefined' is not assignable to type 'string | undefined'.
1306
+ // @ts-expect-error - TS2322 - Type 'string | null | undefined' is not assignable to type 'string | undefined'.
1306
1307
  src={PerseusMarkdown.sanitizeUrl(node.target)}
1307
1308
  alt={node.alt}
1308
1309
  title={node.title}
@@ -1396,7 +1397,7 @@ class Renderer extends React.Component<Props, State> {
1396
1397
 
1397
1398
  // In the common case of no callback specified, avoid this work.
1398
1399
  if (onRender !== noopOnRender || oldOnRender !== noopOnRender) {
1399
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call. | TS2339 - Property 'find' does not exist on type 'JQueryStatic'.
1400
+ // @ts-expect-error - TS2769 - No overload matches this call. | TS2339 - Property 'find' does not exist on type 'JQueryStatic'.
1400
1401
  const $images = $(ReactDOM.findDOMNode(this)).find("img");
1401
1402
 
1402
1403
  // Fire callback on image load...
@@ -1489,9 +1490,9 @@ class Renderer extends React.Component<Props, State> {
1489
1490
 
1490
1491
  getDOMNodeForPath: (path: FocusPath) => Element | Text | null | undefined =
1491
1492
  (path: FocusPath) => {
1492
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1493
+ // @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1493
1494
  const widgetId = _.first(path);
1494
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1495
+ // @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1495
1496
  const interWidgetPath = _.rest(path);
1496
1497
 
1497
1498
  // Widget handles parsing of the interWidgetPath. If the path is empty
@@ -1503,7 +1504,7 @@ class Renderer extends React.Component<Props, State> {
1503
1504
  return getNode(interWidgetPath);
1504
1505
  }
1505
1506
  if (interWidgetPath.length === 0) {
1506
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'Widget | null | undefined' is not assignable to parameter of type 'ReactInstance | null | undefined'.
1507
+ // @ts-expect-error - TS2345 - Argument of type 'Widget | null | undefined' is not assignable to parameter of type 'ReactInstance | null | undefined'.
1507
1508
  return ReactDOM.findDOMNode(widget);
1508
1509
  }
1509
1510
  };
@@ -1511,9 +1512,9 @@ class Renderer extends React.Component<Props, State> {
1511
1512
  getGrammarTypeForPath: (path: FocusPath) => string | null | undefined = (
1512
1513
  path: FocusPath,
1513
1514
  ) => {
1514
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1515
+ // @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1515
1516
  const widgetId = _.first(path);
1516
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1517
+ // @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1517
1518
  const interWidgetPath = _.rest(path);
1518
1519
 
1519
1520
  const widget = this.getWidgetInstance(widgetId);
@@ -1531,7 +1532,7 @@ class Renderer extends React.Component<Props, State> {
1531
1532
  const widgetInputPaths = widget.getInputPaths();
1532
1533
  // Prefix paths with their widgetID and add to collective
1533
1534
  // list of paths.
1534
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type '(inputPath: string) => void' is not assignable to parameter of type 'CollectionIterator<FocusPath, void, readonly FocusPath[]>'.
1535
+ // @ts-expect-error - TS2345 - Argument of type '(inputPath: string) => void' is not assignable to parameter of type 'CollectionIterator<FocusPath, void, readonly FocusPath[]>'.
1535
1536
  _.each(widgetInputPaths, (inputPath: string) => {
1536
1537
  const relativeInputPath = [widgetId].concat(inputPath);
1537
1538
  inputPaths.push(relativeInputPath);
@@ -1552,9 +1553,9 @@ class Renderer extends React.Component<Props, State> {
1552
1553
  this.blurPath(this._currentFocus);
1553
1554
  }
1554
1555
 
1555
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1556
+ // @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1556
1557
  const widgetId = _.first(path);
1557
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1558
+ // @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1558
1559
  const interWidgetPath = _.rest(path);
1559
1560
 
1560
1561
  // Widget handles parsing of the interWidgetPath
@@ -1570,9 +1571,9 @@ class Renderer extends React.Component<Props, State> {
1570
1571
  return;
1571
1572
  }
1572
1573
 
1573
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1574
+ // @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1574
1575
  const widgetId = _.first(path);
1575
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1576
+ // @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1576
1577
  const interWidgetPath = _.rest(path);
1577
1578
  const widget = this.getWidgetInstance(widgetId);
1578
1579
  // We might be in the editor and blurring a widget that no
@@ -1599,7 +1600,7 @@ class Renderer extends React.Component<Props, State> {
1599
1600
  this.state.widgetInfo,
1600
1601
  function (info, id) {
1601
1602
  // eslint-disable-next-line @babel/no-invalid-this
1602
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
1603
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
1603
1604
  // eslint-disable-next-line @babel/no-invalid-this
1604
1605
  const widget = this.getWidgetInstance(id);
1605
1606
  const s = widget.serialize();
@@ -1613,7 +1614,7 @@ class Renderer extends React.Component<Props, State> {
1613
1614
  };
1614
1615
 
1615
1616
  emptyWidgets: () => any = () => {
1616
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type '(id: string) => boolean | undefined' is not assignable to parameter of type 'Iteratee<string[], boolean, string>'.
1617
+ // @ts-expect-error - TS2345 - Argument of type '(id: string) => boolean | undefined' is not assignable to parameter of type 'Iteratee<string[], boolean, string>'.
1617
1618
  return _.filter(this.widgetIds, (id) => {
1618
1619
  const widgetInfo = this._getWidgetInfo(id);
1619
1620
  if (widgetInfo.static) {
@@ -1624,7 +1625,7 @@ class Renderer extends React.Component<Props, State> {
1624
1625
  if (widget && widget.simpleValidate) {
1625
1626
  const score: PerseusScore = widget.simpleValidate(
1626
1627
  widgetInfo.options,
1627
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'null' is not assignable to parameter of type '((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined'.
1628
+ // @ts-expect-error - TS2345 - Argument of type 'null' is not assignable to parameter of type '((widgetId: any, value: string, message?: string | null | undefined) => unknown) | undefined'.
1628
1629
  null,
1629
1630
  );
1630
1631
  return Util.scoreIsEmpty(score);
@@ -1697,9 +1698,9 @@ class Renderer extends React.Component<Props, State> {
1697
1698
  newValue: string,
1698
1699
  focus: () => unknown,
1699
1700
  ) => void = (path, newValue, focus) => {
1700
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1701
+ // @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1701
1702
  const widgetId = _.first(path);
1702
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1703
+ // @ts-expect-error - TS2345 - Argument of type 'FocusPath' is not assignable to parameter of type 'List<any>'.
1703
1704
  const interWidgetPath = _.rest(path);
1704
1705
  const widget = this.getWidgetInstance(widgetId);
1705
1706
 
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @khanacademy/ts-no-error-suppressions */
1
2
  import {StyleSheet, css} from "aphrodite";
2
3
  /**
3
4
  * A copy of the ItemRenderer which renders its question renderer and hints
@@ -69,7 +70,7 @@ export class ServerItemRenderer
69
70
  extends React.Component<Props, State>
70
71
  implements RendererInterface
71
72
  {
72
- // @ts-expect-error [FEI-5003] - TS2564 - Property 'questionRenderer' has no initializer and is not definitely assigned in the constructor.
73
+ // @ts-expect-error - TS2564 - Property 'questionRenderer' has no initializer and is not definitely assigned in the constructor.
73
74
  questionRenderer: Renderer;
74
75
  hintsRenderer: any;
75
76
  _currentFocus: FocusPath;
@@ -173,7 +174,7 @@ export class ServerItemRenderer
173
174
  this._currentFocus,
174
175
  prevFocus,
175
176
  didFocusInput && keypadElement && keypadElement.getDOMNode(),
176
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'false | Element | Text | null | undefined' is not assignable to parameter of type 'HTMLElement | undefined'.
177
+ // @ts-expect-error - TS2345 - Argument of type 'false | Element | Text | null | undefined' is not assignable to parameter of type 'HTMLElement | undefined'.
177
178
  didFocusInput &&
178
179
  this.questionRenderer.getDOMNodeForPath(newFocus),
179
180
  );
@@ -204,7 +205,7 @@ export class ServerItemRenderer
204
205
  // this callback is executed
205
206
  // TODO(jeff, CP-3128): Use Wonder Blocks Timing API.
206
207
  // eslint-disable-next-line no-restricted-syntax
207
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'Timeout' is not assignable to type 'number'.
208
+ // @ts-expect-error - TS2322 - Type 'Timeout' is not assignable to type 'number'.
208
209
  this.blurTimeoutID = setTimeout(() => {
209
210
  if (_.isEqual(this._currentFocus, blurringFocusPath)) {
210
211
  this._setCurrentFocus(null);
@@ -323,7 +324,7 @@ export class ServerItemRenderer
323
324
  const qScore = this.questionRenderer.scoreWidgets();
324
325
  const qGuess = this.questionRenderer.getUserInputForWidgets();
325
326
  const state = this.questionRenderer.getSerializedState();
326
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'Partial<Record<string, KEScore>>' is not assignable to type '{ [key: string]: KEScore; }'. | TS2345 - Argument of type '{ [widgetId: string]: PerseusScore; }' is not assignable to parameter of type 'Partial<Record<string, { type: "invalid"; message?: string | null | undefined; suppressAlmostThere?: boolean | null | undefined; }>>'.
327
+ // @ts-expect-error - TS2322 - Type 'Partial<Record<string, KEScore>>' is not assignable to type '{ [key: string]: KEScore; }'. | TS2345 - Argument of type '{ [widgetId: string]: PerseusScore; }' is not assignable to parameter of type 'Partial<Record<string, { type: "invalid"; message?: string | null | undefined; suppressAlmostThere?: boolean | null | undefined; }>>'.
327
328
  return mapObject(qScore, (score, id) => {
328
329
  return Util.keScoreFromPerseusScore(score, qGuess[id], state);
329
330
  });
@@ -417,7 +418,7 @@ export class ServerItemRenderer
417
418
  <HintsRenderer
418
419
  hints={this.props.item.hints}
419
420
  hintsVisible={this.props.hintsVisible}
420
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.
421
+ // @ts-expect-error - TS2769 - No overload matches this call.
421
422
  apiOptions={apiOptions}
422
423
  ref={(elem) => (this.hintsRenderer = elem)}
423
424
  />
package/src/sigfigs.ts CHANGED
@@ -434,7 +434,7 @@ function round(mantissa: string, digits: number): string {
434
434
  roundUp = true;
435
435
  }
436
436
  }
437
- // @ts-expect-error [FEI-5003] - TS2362 - The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
437
+ // @ts-expect-error - TS2362 - The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
438
438
  if (lastChar % 2 == 1) {
439
439
  roundUp = true;
440
440
  }
@@ -58,7 +58,8 @@
58
58
  // inline, so we rely on the "actual paragraph" check above
59
59
  // (a .paragraph that contains another .paragraph instead of a
60
60
  // .perseus-block-math).
61
- .katex, mjx-container {
61
+ .katex,
62
+ mjx-container {
62
63
  font-size: 100%;
63
64
  }
64
65
 
@@ -243,7 +244,8 @@
243
244
  .paragraph {
244
245
  .text(@choiceTextSize, @choiceLineHeight, @gray17);
245
246
 
246
- .katex, mjx-container {
247
+ .katex,
248
+ mjx-container {
247
249
  color: @gray17;
248
250
  }
249
251
  }
@@ -391,7 +393,8 @@
391
393
  .paragraph {
392
394
  .text(@choiceTextSize, @choiceLineHeight, @gray17);
393
395
 
394
- .katex, mjx-container {
396
+ .katex,
397
+ mjx-container {
395
398
  color: @gray17;
396
399
  }
397
400
  }
@@ -418,7 +421,8 @@
418
421
 
419
422
  .math(@blockMathTextSize; @blockMathLineHeight;
420
423
  @inlineMathTextSize; @inlineMathLineHeight) {
421
- .katex, mjx-container {
424
+ .katex,
425
+ mjx-container {
422
426
  font-size: @inlineMathTextSize;
423
427
  line-height: @inlineMathLineHeight;
424
428
  color: @gray17;