@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
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @khanacademy/ts-no-error-suppressions */
1
2
  /* eslint-disable @babel/no-invalid-this, react/no-unsafe, react/sort-comp */
2
3
  import * as PerseusLinter from "@khanacademy/perseus-linter";
3
4
  import {CircularSpinner} from "@khanacademy/wonder-blocks-progress-spinner";
@@ -10,9 +11,10 @@ import _ from "underscore";
10
11
  import {getDependencies} from "../dependencies";
11
12
  import {ClassNames as ApiClassNames} from "../perseus-api";
12
13
  import Renderer from "../renderer";
13
- import Util, {Position} from "../util";
14
+ import Util from "../util";
14
15
 
15
16
  import type {LinterContextProps} from "../types";
17
+ import type {Position} from "../util";
16
18
 
17
19
  export enum Layout {
18
20
  HORIZONTAL = "horizontal",
@@ -111,9 +113,9 @@ type DraggableState = {
111
113
  class Draggable extends React.Component<DraggableProps, DraggableState> {
112
114
  // Handler returned by requestAnimationFrame.
113
115
  animationFrameRequest = null;
114
- // @ts-expect-error [FEI-5003] - TS2564 - Property 'isMouseMoveUpBound' has no initializer and is not definitely assigned in the constructor.
116
+ // @ts-expect-error - TS2564 - Property 'isMouseMoveUpBound' has no initializer and is not definitely assigned in the constructor.
115
117
  isMouseMoveUpBound: boolean;
116
- // @ts-expect-error [FEI-5003] - TS2564 - Property '_mounted' has no initializer and is not definitely assigned in the constructor.
118
+ // @ts-expect-error - TS2564 - Property '_mounted' has no initializer and is not definitely assigned in the constructor.
117
119
  _mounted: boolean;
118
120
 
119
121
  static defaultProps: DefaultDraggableProps = {
@@ -272,7 +274,7 @@ class Draggable extends React.Component<DraggableProps, DraggableState> {
272
274
  ),
273
275
  );
274
276
 
275
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call. | TS2339 - Property 'animate' does not exist on type 'JQueryStatic'.
277
+ // @ts-expect-error - TS2769 - No overload matches this call. | TS2339 - Property 'animate' does not exist on type 'JQueryStatic'.
276
278
  $(ReactDOM.findDOMNode(this)).animate(this.props.endPosition, {
277
279
  duration: Math.max(duration, 1),
278
280
  // Animating -> Static
@@ -280,7 +282,7 @@ class Draggable extends React.Component<DraggableProps, DraggableState> {
280
282
  });
281
283
  } else if (this.props.state === ItemState.STATIC) {
282
284
  // Ensure that any animations are done
283
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call. | TS2339 - Property 'finish' does not exist on type 'JQueryStatic'.
285
+ // @ts-expect-error - TS2769 - No overload matches this call. | TS2339 - Property 'finish' does not exist on type 'JQueryStatic'.
284
286
  $(ReactDOM.findDOMNode(this)).finish();
285
287
  }
286
288
  }
@@ -316,14 +318,14 @@ class Draggable extends React.Component<DraggableProps, DraggableState> {
316
318
 
317
319
  // TODO(jeff, CP-3128): Use Wonder Blocks Timing API.
318
320
  // eslint-disable-next-line no-restricted-syntax
319
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'number' is not assignable to type 'null'.
321
+ // @ts-expect-error - TS2322 - Type 'number' is not assignable to type 'null'.
320
322
  this.animationFrameRequest = requestAnimationFrame(() => {
321
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.
323
+ // @ts-expect-error - TS2769 - No overload matches this call.
322
324
  const $el = $(ReactDOM.findDOMNode(this));
323
325
 
324
326
  // jQuery.position() gets the position of the element wrt its offset parent,
325
327
  // but subtracts the scroll position of the parent. We need to add that back.
326
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'position' does not exist on type 'JQueryStatic'.
328
+ // @ts-expect-error - TS2339 - Property 'position' does not exist on type 'JQueryStatic'.
327
329
  const position = $el.position();
328
330
  const startPosition = addOffsetParentScroll($el, position);
329
331
 
@@ -339,11 +341,11 @@ class Draggable extends React.Component<DraggableProps, DraggableState> {
339
341
  dragging: true,
340
342
  },
341
343
  function () {
342
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
344
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
343
345
  this.bindMouseMoveUp();
344
346
 
345
347
  // Static -> Dragging
346
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
348
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
347
349
  this.props.onMouseDown();
348
350
  },
349
351
  );
@@ -365,7 +367,7 @@ class Draggable extends React.Component<DraggableProps, DraggableState> {
365
367
  if (loc) {
366
368
  // TODO(jeff, CP-3128): Use Wonder Blocks Timing API.
367
369
  // eslint-disable-next-line no-restricted-syntax
368
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'number' is not assignable to type 'null'.
370
+ // @ts-expect-error - TS2322 - Type 'number' is not assignable to type 'null'.
369
371
  this.animationFrameRequest = requestAnimationFrame(() => {
370
372
  this.setState(
371
373
  {
@@ -548,7 +550,7 @@ class Sortable extends React.Component<SortableProps, SortableState> {
548
550
  items,
549
551
  function (item) {
550
552
  // eslint-disable-next-line react/no-string-refs
551
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
553
+ // @ts-expect-error - TS2769 - No overload matches this call. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
552
554
  return $(ReactDOM.findDOMNode(this.refs[item.key]));
553
555
  },
554
556
  this,
@@ -653,13 +655,13 @@ class Sortable extends React.Component<SortableProps, SortableState> {
653
655
  item.state === ItemState.DISABLED;
654
656
  let margin;
655
657
 
656
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
658
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
657
659
  if (this.props.layout === Layout.HORIZONTAL) {
658
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
660
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
659
661
  margin = "0 " + this.props.margin + "px 0 0"; // right
660
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
662
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
661
663
  } else if (this.props.layout === Layout.VERTICAL) {
662
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
664
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
663
665
  margin = "0 0 " + this.props.margin + "px 0"; // bottom
664
666
  }
665
667
 
@@ -668,44 +670,44 @@ class Sortable extends React.Component<SortableProps, SortableState> {
668
670
  content={item.option}
669
671
  key={item.key}
670
672
  state={item.state}
671
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.
673
+ // @ts-expect-error - TS2769 - No overload matches this call.
672
674
  ref={item.key}
673
675
  width={syncWidth ? item.width : undefined}
674
676
  height={syncHeight ? item.height : undefined}
675
677
  layout={layout}
676
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
678
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
677
679
  includePadding={this.props.padding}
678
680
  margin={isLast && isStatic ? 0 : margin}
679
681
  endPosition={item.endPosition}
680
682
  linterContext={PerseusLinter.pushContextStack(
681
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
683
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
682
684
  this.props.linterContext,
683
685
  "sortable",
684
686
  )}
685
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
687
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
686
688
  onRender={this.remeasureItems}
687
689
  // eslint-disable-next-line react/jsx-no-bind
688
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
690
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
689
691
  onMouseDown={this.onMouseDown.bind(this, item.key)}
690
692
  // eslint-disable-next-line react/jsx-no-bind
691
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
693
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
692
694
  onMouseMove={this.onMouseMove.bind(this, item.key)}
693
695
  // eslint-disable-next-line react/jsx-no-bind
694
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
696
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
695
697
  onMouseUp={this.onMouseUp.bind(this, item.key)}
696
698
  // eslint-disable-next-line react/jsx-no-bind
697
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
699
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
698
700
  onTouchMove={this.onMouseMove.bind(this, item.key)}
699
701
  // eslint-disable-next-line react/jsx-no-bind
700
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
702
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
701
703
  onTouchEnd={this.onMouseUp.bind(this, item.key)}
702
704
  // eslint-disable-next-line react/jsx-no-bind
703
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
705
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
704
706
  onTouchCancel={this.onMouseUp.bind(this, item.key)}
705
707
  // eslint-disable-next-line react/jsx-no-bind
706
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
708
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
707
709
  onAnimationEnd={this.onAnimationEnd.bind(
708
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
710
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
709
711
  this,
710
712
  item.key,
711
713
  )}
@@ -773,9 +775,9 @@ class Sortable extends React.Component<SortableProps, SortableState> {
773
775
  return i.key === item.key;
774
776
  });
775
777
 
776
- // @ts-expect-error [FEI-5003] - TS2551 - Property 'splice' does not exist on type 'readonly SortableItem[]'. Did you mean 'slice'?
778
+ // @ts-expect-error - TS2551 - Property 'splice' does not exist on type 'readonly SortableItem[]'. Did you mean 'slice'?
777
779
  nextItems.splice(currentIndex, 1);
778
- // @ts-expect-error [FEI-5003] - TS2551 - Property 'splice' does not exist on type 'readonly SortableItem[]'. Did you mean 'slice'?
780
+ // @ts-expect-error - TS2551 - Property 'splice' does not exist on type 'readonly SortableItem[]'. Did you mean 'slice'?
779
781
  nextItems.splice(index, 0, item);
780
782
 
781
783
  this.setState({items: nextItems});
@@ -785,22 +787,22 @@ class Sortable extends React.Component<SortableProps, SortableState> {
785
787
  onMouseMove(key: SortableItem["key"]) {
786
788
  // Dragging: Rearrange items based on draggable's position
787
789
  // eslint-disable-next-line react/no-string-refs
788
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.
790
+ // @ts-expect-error - TS2769 - No overload matches this call.
789
791
  const $draggable = $(ReactDOM.findDOMNode(this.refs[key]));
790
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.
792
+ // @ts-expect-error - TS2769 - No overload matches this call.
791
793
  const $sortable = $(ReactDOM.findDOMNode(this));
792
794
  const items = _.clone(this.state.items);
793
795
  const item = _.findWhere(this.state.items, {key: key});
794
796
  const margin = this.props.margin || 0;
795
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'SortableItem | undefined' is not assignable to parameter of type 'SortableItem'.
797
+ // @ts-expect-error - TS2345 - Argument of type 'SortableItem | undefined' is not assignable to parameter of type 'SortableItem'.
796
798
  const currentIndex = _.indexOf(items, item);
797
799
  let newIndex = 0;
798
800
 
799
- // @ts-expect-error [FEI-5003] - TS2551 - Property 'splice' does not exist on type 'readonly SortableItem[]'. Did you mean 'slice'?
801
+ // @ts-expect-error - TS2551 - Property 'splice' does not exist on type 'readonly SortableItem[]'. Did you mean 'slice'?
800
802
  items.splice(currentIndex, 1);
801
803
 
802
804
  if (this.props.layout === Layout.HORIZONTAL) {
803
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'offset' does not exist on type 'JQueryStatic'. | TS2339 - Property 'offset' does not exist on type 'JQueryStatic'.
805
+ // @ts-expect-error - TS2339 - Property 'offset' does not exist on type 'JQueryStatic'. | TS2339 - Property 'offset' does not exist on type 'JQueryStatic'.
804
806
  const midWidth = $draggable.offset().left - $sortable.offset().left;
805
807
  let sumWidth = 0;
806
808
  let cardWidth;
@@ -813,7 +815,7 @@ class Sortable extends React.Component<SortableProps, SortableState> {
813
815
  sumWidth += cardWidth + margin;
814
816
  });
815
817
  } else {
816
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'offset' does not exist on type 'JQueryStatic'. | TS2339 - Property 'offset' does not exist on type 'JQueryStatic'.
818
+ // @ts-expect-error - TS2339 - Property 'offset' does not exist on type 'JQueryStatic'. | TS2339 - Property 'offset' does not exist on type 'JQueryStatic'.
817
819
  const midHeight = $draggable.offset().top - $sortable.offset().top;
818
820
  let sumHeight = 0;
819
821
  let cardHeight;
@@ -828,7 +830,7 @@ class Sortable extends React.Component<SortableProps, SortableState> {
828
830
  }
829
831
 
830
832
  if (newIndex !== currentIndex) {
831
- // @ts-expect-error [FEI-5003] - TS2551 - Property 'splice' does not exist on type 'readonly SortableItem[]'. Did you mean 'slice'?
833
+ // @ts-expect-error - TS2551 - Property 'splice' does not exist on type 'readonly SortableItem[]'. Did you mean 'slice'?
832
834
  items.splice(newIndex, 0, item);
833
835
  this.setState({items: items});
834
836
  }
@@ -845,14 +847,14 @@ class Sortable extends React.Component<SortableProps, SortableState> {
845
847
  if (item.key === key) {
846
848
  item.state = ItemState.ANIMATING;
847
849
  const $placeholder = $(
848
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.
850
+ // @ts-expect-error - TS2769 - No overload matches this call.
849
851
  ReactDOM.findDOMNode(
850
852
  // eslint-disable-next-line react/no-string-refs
851
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
853
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
852
854
  this.refs["placeholder_" + key],
853
855
  ),
854
856
  );
855
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'position' does not exist on type 'JQueryStatic'.
857
+ // @ts-expect-error - TS2339 - Property 'position' does not exist on type 'JQueryStatic'.
856
858
  const position = $placeholder.position();
857
859
  const endPosition = addOffsetParentScroll(
858
860
  $placeholder,
@@ -872,7 +874,7 @@ class Sortable extends React.Component<SortableProps, SortableState> {
872
874
  this.props.onChange && this.props.onChange({});
873
875
  });
874
876
 
875
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'animationFrameRequest' does not exist on type 'Sortable'.
877
+ // @ts-expect-error - TS2339 - Property 'animationFrameRequest' does not exist on type 'Sortable'.
876
878
  this.animationFrameRequest = nextAnimationFrame;
877
879
  }
878
880
 
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @khanacademy/ts-no-error-suppressions */
1
2
  /* eslint-disable no-useless-escape, react/no-unsafe */
2
3
  import {CircularSpinner} from "@khanacademy/wonder-blocks-progress-spinner";
3
4
  import classNames from "classnames";
@@ -57,7 +58,7 @@ const doJSONP = function (url: string, options) {
57
58
  }
58
59
 
59
60
  // Add the global callback.
60
- // @ts-expect-error [FEI-5003] - TS2740 - Type '() => void' is missing the following properties from type 'Window': clientInformation, closed, customElements, devicePixelRatio, and 206 more.
61
+ // @ts-expect-error - TS2740 - Type '() => void' is missing the following properties from type 'Window': clientInformation, closed, customElements, devicePixelRatio, and 206 more.
61
62
  window[options.callbackName] = function (...args) {
62
63
  cleanup();
63
64
  options.success.apply(null, args);
@@ -331,13 +332,13 @@ class SvgImage extends React.Component<Props, State> {
331
332
  doJSONP(url, {
332
333
  callbackName: "svgData" + hash,
333
334
  success: (data) => {
334
- // @ts-expect-error [FEI-5003] - TS2540 - Cannot assign to 'data' because it is a read-only property.
335
+ // @ts-expect-error - TS2540 - Cannot assign to 'data' because it is a read-only property.
335
336
  cacheData.data = data;
336
- // @ts-expect-error [FEI-5003] - TS2540 - Cannot assign to 'loaded' because it is a read-only property.
337
+ // @ts-expect-error - TS2540 - Cannot assign to 'loaded' because it is a read-only property.
337
338
  cacheData.loaded = true;
338
339
 
339
340
  _.each(cacheData.dataCallbacks, (callback) => {
340
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'null' is not assignable to parameter of type '{ labels: readonly any[]; range: readonly any[]; }'.
341
+ // @ts-expect-error - TS2345 - Argument of type 'null' is not assignable to parameter of type '{ labels: readonly any[]; range: readonly any[]; }'.
341
342
  callback(cacheData.data, cacheData.localized);
342
343
  });
343
344
  },
@@ -349,7 +350,7 @@ class SvgImage extends React.Component<Props, State> {
349
350
  retrieveData(
350
351
  getLocalizedDataUrl(this.props.src),
351
352
  (x, status, error) => {
352
- // @ts-expect-error [FEI-5003] - TS2540 - Cannot assign to 'localized' because it is a read-only property.
353
+ // @ts-expect-error - TS2540 - Cannot assign to 'localized' because it is a read-only property.
353
354
  cacheData.localized = false;
354
355
 
355
356
  // If there is isn't any localized data, fall back to
@@ -511,9 +512,9 @@ class SvgImage extends React.Component<Props, State> {
511
512
  const svgHeight = (this.props.height || 0) * this.props.scale;
512
513
  const svgWidth = (this.props.width || 0) * this.props.scale;
513
514
  label.css({
514
- // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'.
515
+ // @ts-expect-error - TS2531 - Object is possibly 'null'.
515
516
  top: (labelTop / svgHeight) * 100 + "%",
516
- // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'.
517
+ // @ts-expect-error - TS2531 - Object is possibly 'null'.
517
518
  left: (labelLeft / svgWidth) * 100 + "%",
518
519
  });
519
520
 
@@ -560,7 +561,7 @@ class SvgImage extends React.Component<Props, State> {
560
561
  // nothing in that case as well. Figuring this out correctly
561
562
  // likely required accounting for the image alignment and margins.
562
563
  if (
563
- // @ts-expect-error [FEI-5003] - TS2532 - Object is possibly 'undefined'. | TS2532 - Object is possibly 'undefined'.
564
+ // @ts-expect-error - TS2532 - Object is possibly 'undefined'. | TS2532 - Object is possibly 'undefined'.
564
565
  $image.width() < this.props.width ||
565
566
  this.props.zoomToFullSizeOnMobile
566
567
  ) {
@@ -672,7 +673,7 @@ class SvgImage extends React.Component<Props, State> {
672
673
  <ImageLoader
673
674
  src={imageSrc}
674
675
  imgProps={imageProps}
675
- // @ts-expect-error [FEI-5003] - TS2322 - Type '(() => Element) | null' is not assignable to type '() => ReactElement<any, string | JSXElementConstructor<any>> | null | undefined'.
676
+ // @ts-expect-error - TS2322 - Type '(() => Element) | null' is not assignable to type '() => ReactElement<any, string | JSXElementConstructor<any>> | null | undefined'.
676
677
  preloader={preloader}
677
678
  onUpdate={this.handleUpdate}
678
679
  />
@@ -684,7 +685,7 @@ class SvgImage extends React.Component<Props, State> {
684
685
  return (
685
686
  <ImageLoader
686
687
  src={imageSrc}
687
- // @ts-expect-error [FEI-5003] - TS2322 - Type '(() => Element) | null' is not assignable to type '() => ReactElement<any, string | JSXElementConstructor<any>> | null | undefined'.
688
+ // @ts-expect-error - TS2322 - Type '(() => Element) | null' is not assignable to type '() => ReactElement<any, string | JSXElementConstructor<any>> | null | undefined'.
688
689
  preloader={preloader}
689
690
  imgProps={imageProps}
690
691
  onUpdate={this.handleUpdate}
@@ -747,7 +748,7 @@ class SvgImage extends React.Component<Props, State> {
747
748
  src={imageUrl}
748
749
  onLoad={this.onImageLoad}
749
750
  onUpdate={this.handleUpdate}
750
- // @ts-expect-error [FEI-5003] - TS2322 - Type '(() => Element) | null' is not assignable to type '() => ReactElement<any, string | JSXElementConstructor<any>> | null | undefined'.
751
+ // @ts-expect-error - TS2322 - Type '(() => Element) | null' is not assignable to type '() => ReactElement<any, string | JSXElementConstructor<any>> | null | undefined'.
751
752
  preloader={preloader}
752
753
  imgProps={imageProps}
753
754
  />
@@ -763,7 +764,7 @@ class SvgImage extends React.Component<Props, State> {
763
764
  src={imageUrl}
764
765
  onLoad={this.onImageLoad}
765
766
  onUpdate={this.handleUpdate}
766
- // @ts-expect-error [FEI-5003] - TS2322 - Type '(() => Element) | null' is not assignable to type '() => ReactElement<any, string | JSXElementConstructor<any>> | null | undefined'.
767
+ // @ts-expect-error - TS2322 - Type '(() => Element) | null' is not assignable to type '() => ReactElement<any, string | JSXElementConstructor<any>> | null | undefined'.
767
768
  preloader={preloader}
768
769
  imgProps={imageProps}
769
770
  />
@@ -1,4 +1,4 @@
1
- import {Keys} from "@khanacademy/math-input";
1
+ /* eslint-disable @khanacademy/ts-no-error-suppressions */
2
2
  import * as i18n from "@khanacademy/wonder-blocks-i18n";
3
3
  import PropTypes from "prop-types";
4
4
  import * as React from "react";
@@ -6,6 +6,8 @@ import _ from "underscore";
6
6
 
7
7
  import {getDependencies} from "../dependencies";
8
8
 
9
+ import type {Keys} from "@khanacademy/math-input";
10
+
9
11
  const prettyBig = {fontSize: "150%"} as const;
10
12
  const slightlyBig = {fontSize: "120%"} as const;
11
13
  const symbStyle = {fontSize: "130%"} as const;
@@ -283,7 +285,7 @@ class TexButtons extends React.Component<Props> {
283
285
  // for _.keys() to return the keys in an arbitrary order, but in
284
286
  // practice, they will be ordered as listed above.
285
287
  const sortedButtonSets = _.sortBy(this.props.sets, (setName) =>
286
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'string | number' is not assignable to parameter of type 'string'.
288
+ // @ts-expect-error - TS2345 - Argument of type 'string | number' is not assignable to parameter of type 'string'.
287
289
  _.keys(buttonSets).indexOf(setName),
288
290
  );
289
291
 
@@ -299,7 +301,7 @@ class TexButtons extends React.Component<Props> {
299
301
  <button
300
302
  onClick={() => this.props.onInsert(symbol[1])}
301
303
  className="tex-button"
302
- // @ts-expect-error [FEI-5003] - TS2533 - Object is possibly 'null' or 'undefined'. | TS2339 - Property 'key' does not exist on type 'boolean | ReactChild | ReactFragment | ReactPortal'.
304
+ // @ts-expect-error - TS2533 - Object is possibly 'null' or 'undefined'. | TS2339 - Property 'key' does not exist on type 'boolean | ReactChild | ReactFragment | ReactPortal'.
303
305
  key={symbol[0].key}
304
306
  type="button"
305
307
  aria-label={symbol[2]}
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @khanacademy/ts-no-error-suppressions */
1
2
  /* eslint-disable react/sort-comp */
2
3
  import {TextField} from "@khanacademy/wonder-blocks-form";
3
4
  import * as React from "react";
@@ -75,7 +76,7 @@ class TextInput extends React.Component<Props> {
75
76
  onFocus={onFocus}
76
77
  onBlur={onBlur}
77
78
  onKeyDown={onKeyDown}
78
- // @ts-expect-error [FEI-5003] - TS2322 - Type '{ style: StyleType; disabled: boolean | undefined; id: string; value: string; type: "text"; "aria-label": string | undefined; onChange: (value: string) => void; placeholder: string | undefined; ... 5 more ...; autoComplete: string; }' is not assignable to type 'IntrinsicAttributes & ExportProps & RefAttributes<HTMLInputElement>'.
79
+ // @ts-expect-error - TS2322 - Type '{ style: StyleType; disabled: boolean | undefined; id: string; value: string; type: "text"; "aria-label": string | undefined; onChange: (value: string) => void; placeholder: string | undefined; ... 5 more ...; autoComplete: string; }' is not assignable to type 'IntrinsicAttributes & ExportProps & RefAttributes<HTMLInputElement>'.
79
80
  autoCorrect="off"
80
81
  autoCapitalize="off"
81
82
  autoComplete="off"
@@ -84,22 +85,22 @@ class TextInput extends React.Component<Props> {
84
85
  }
85
86
 
86
87
  focus: () => void = () => {
87
- // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'. | TS2339 - Property 'focus' does not exist on type 'Element | Text'.
88
+ // @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'focus' does not exist on type 'Element | Text'.
88
89
  ReactDOM.findDOMNode(this).focus();
89
90
  };
90
91
 
91
92
  blur: () => void = () => {
92
- // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'. | TS2339 - Property 'blur' does not exist on type 'Element | Text'.
93
+ // @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'blur' does not exist on type 'Element | Text'.
93
94
  ReactDOM.findDOMNode(this).blur();
94
95
  };
95
96
 
96
97
  getValue: () => string | null | undefined = () => {
97
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'value' does not exist on type 'Element | Text'.
98
+ // @ts-expect-error - TS2339 - Property 'value' does not exist on type 'Element | Text'.
98
99
  return ReactDOM.findDOMNode(this)?.value;
99
100
  };
100
101
 
101
102
  getStringValue: () => string | null | undefined = () => {
102
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'value' does not exist on type 'Element | Text'.
103
+ // @ts-expect-error - TS2339 - Property 'value' does not exist on type 'Element | Text'.
103
104
  return ReactDOM.findDOMNode(this)?.value.toString();
104
105
  };
105
106
 
@@ -107,7 +108,7 @@ class TextInput extends React.Component<Props> {
107
108
  selectionStart,
108
109
  selectionEnd,
109
110
  ) => {
110
- // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'. | TS2339 - Property 'setSelectionRange' does not exist on type 'Element | Text'.
111
+ // @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'setSelectionRange' does not exist on type 'Element | Text'.
111
112
  ReactDOM.findDOMNode(this).setSelectionRange(
112
113
  selectionStart,
113
114
  selectionEnd,
@@ -115,12 +116,12 @@ class TextInput extends React.Component<Props> {
115
116
  };
116
117
 
117
118
  getSelectionStart: () => number = () => {
118
- // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'. | TS2339 - Property 'selectionStart' does not exist on type 'Element | Text'.
119
+ // @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'selectionStart' does not exist on type 'Element | Text'.
119
120
  return ReactDOM.findDOMNode(this).selectionStart;
120
121
  };
121
122
 
122
123
  getSelectionEnd: () => number = () => {
123
- // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'. | TS2339 - Property 'selectionEnd' does not exist on type 'Element | Text'.
124
+ // @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'selectionEnd' does not exist on type 'Element | Text'.
124
125
  return ReactDOM.findDOMNode(this).selectionEnd;
125
126
  };
126
127
  }
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @khanacademy/ts-no-error-suppressions */
1
2
  /* eslint-disable @babel/no-invalid-this, react/forbid-prop-types, react/no-unsafe, react/sort-comp */
2
3
  import $ from "jquery";
3
4
  import PropTypes from "prop-types";
@@ -10,7 +11,7 @@ function getTextWidth(text: any) {
10
11
  if (!textWidthCache[text]) {
11
12
  // Hacky way to guess the width of an input box
12
13
  const $test = $("<span>").text(text).appendTo("body");
13
- // @ts-expect-error [FEI-5003] - TS2532 - Object is possibly 'undefined'.
14
+ // @ts-expect-error - TS2532 - Object is possibly 'undefined'.
14
15
  textWidthCache[text] = $test.width() + 5;
15
16
  $test.remove();
16
17
  }
@@ -56,10 +57,10 @@ class TextListEditor extends React.Component<any, any> {
56
57
  type="text"
57
58
  value={item}
58
59
  // eslint-disable-next-line react/jsx-no-bind
59
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
60
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
60
61
  onChange={this.onChange.bind(this, i)}
61
62
  // eslint-disable-next-line react/jsx-no-bind
62
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
63
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
63
64
  onKeyDown={this.onKeyDown.bind(this, i)}
64
65
  style={{width: getTextWidth(item)}}
65
66
  />
@@ -106,17 +107,17 @@ class TextListEditor extends React.Component<any, any> {
106
107
  ) {
107
108
  // ...except for the last one, iff it is the only empty
108
109
  // input at the end.
109
- // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'. | TS2339 - Property 'focus' does not exist on type 'Element | Text'.
110
+ // @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'focus' does not exist on type 'Element | Text'.
110
111
  ReactDOM.findDOMNode(this.refs["input_" + focusIndex]).focus(); // eslint-disable-line react/no-string-refs
111
112
  } else {
112
113
  items.splice(index, 1);
113
114
  this.setState({items: items}, function () {
114
- // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'.
115
+ // @ts-expect-error - TS2531 - Object is possibly 'null'.
115
116
  ReactDOM.findDOMNode(
116
117
  // eslint-disable-next-line react/no-string-refs
117
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
118
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
118
119
  this.refs["input_" + focusIndex],
119
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'focus' does not exist on type 'Element | Text'.
120
+ // @ts-expect-error - TS2339 - Property 'focus' does not exist on type 'Element | Text'.
120
121
  ).focus();
121
122
  });
122
123
  }
@@ -144,17 +145,17 @@ class TextListEditor extends React.Component<any, any> {
144
145
 
145
146
  if (index === items.length - 2) {
146
147
  // ...unless the empty input is just below.
147
- // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'. | TS2339 - Property 'focus' does not exist on type 'Element | Text'.
148
+ // @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'focus' does not exist on type 'Element | Text'.
148
149
  ReactDOM.findDOMNode(this.refs["input_" + focusIndex]).focus(); // eslint-disable-line react/no-string-refs
149
150
  } else {
150
151
  items.splice(focusIndex, 0, "");
151
152
  this.setState({items: items}, function () {
152
- // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'.
153
+ // @ts-expect-error - TS2531 - Object is possibly 'null'.
153
154
  ReactDOM.findDOMNode(
154
155
  // eslint-disable-next-line react/no-string-refs
155
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
156
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
156
157
  this.refs["input_" + focusIndex],
157
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'focus' does not exist on type 'Element | Text'.
158
+ // @ts-expect-error - TS2339 - Property 'focus' does not exist on type 'Element | Text'.
158
159
  ).focus();
159
160
  });
160
161
  }
@@ -90,7 +90,7 @@ class NativeVisibilityObserver implements VisibilityObserver {
90
90
  // There should be exactly one entry, but let's be defensive and loop.
91
91
  //
92
92
  for (const entry of entries) {
93
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'DOMRectReadOnly | null' is not assignable to parameter of type 'DOMRectReadOnly'.
93
+ // @ts-expect-error - TS2345 - Argument of type 'DOMRectReadOnly | null' is not assignable to parameter of type 'DOMRectReadOnly'.
94
94
  this._onVisibilityChange(entry.isIntersecting, entry.rootBounds);
95
95
  }
96
96
  };
@@ -58,9 +58,9 @@ function findPositionInScrollContainer(
58
58
  }
59
59
 
60
60
  class VisibilityObserver extends React.Component<Props> {
61
- // @ts-expect-error [FEI-5003] - TS2564 - Property '_observer' has no initializer and is not definitely assigned in the constructor.
61
+ // @ts-expect-error - TS2564 - Property '_observer' has no initializer and is not definitely assigned in the constructor.
62
62
  _observer: IVisibilityObserver;
63
- // @ts-expect-error [FEI-5003] - TS2564 - Property '_node' has no initializer and is not definitely assigned in the constructor.
63
+ // @ts-expect-error - TS2564 - Property '_node' has no initializer and is not definitely assigned in the constructor.
64
64
  _node: HTMLElement;
65
65
 
66
66
  static defaultProps: {onChange: () => void} = {
@@ -26,9 +26,9 @@ const computeMathBounds = (
26
26
  parentNode.querySelector(".katex-html") ||
27
27
  parentNode.querySelector(".MathJax");
28
28
  const textBounds = {
29
- // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'. | TS2339 - Property 'offsetWidth' does not exist on type 'Element'.
29
+ // @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'offsetWidth' does not exist on type 'Element'.
30
30
  width: textElement.offsetWidth,
31
- // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'. | TS2339 - Property 'offsetHeight' does not exist on type 'Element'.
31
+ // @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'offsetHeight' does not exist on type 'Element'.
32
32
  height: textElement.offsetHeight,
33
33
  } as const;
34
34
 
@@ -44,7 +44,7 @@ const computeMathBounds = (
44
44
 
45
45
  export default class ZoomableTeX extends React.Component<Props, State> {
46
46
  constructor() {
47
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 1-2 arguments, but got 0.
47
+ // @ts-expect-error - TS2554 - Expected 1-2 arguments, but got 0.
48
48
  super();
49
49
 
50
50
  this.state = {isRendered: false};