@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
  /**
2
3
  * Controlled question image marker, rendered as a styled button element.
3
4
  *
@@ -132,9 +133,9 @@ export default class Marker extends React.Component<Props, State> {
132
133
  tabIndex={isDisabled ? -1 : 0}
133
134
  onFocus={() => this.handleFocus()}
134
135
  onBlur={() => this.handleBlur()}
135
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'MouseEvent<HTMLButtonElement, MouseEvent>' is not assignable to parameter of type 'MouseEvent'.
136
+ // @ts-expect-error - TS2345 - Argument of type 'MouseEvent<HTMLButtonElement, MouseEvent>' is not assignable to parameter of type 'MouseEvent'.
136
137
  onClick={(e) => this.props.onClick(e)}
137
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'KeyboardEvent<HTMLButtonElement>' is not assignable to parameter of type 'KeyboardEvent'.
138
+ // @ts-expect-error - TS2345 - Argument of type 'KeyboardEvent<HTMLButtonElement>' is not assignable to parameter of type 'KeyboardEvent'.
138
139
  onKeyDown={(e) => this.props.onKeyDown(e)}
139
140
  >
140
141
  {this.renderIcon()}
@@ -335,7 +335,7 @@ describe("LabelImage", function () {
335
335
 
336
336
  expect(
337
337
  markers[
338
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type '({ label: string; answers: readonly []; selected: readonly []; x: 0; y: 0; } | { label: string; y: number; showCorrectness: string; answers: readonly []; selected: readonly []; x: 0; } | { label: string; x: number; showCorrectness: string; answers: readonly []; selected: readonly []; y: 0; })[]' is not assignable to parameter of type 'readonly InteractiveMarkerType[]'.
338
+ // @ts-expect-error - TS2345 - Argument of type '({ label: string; answers: readonly []; selected: readonly []; x: 0; y: 0; } | { label: string; y: number; showCorrectness: string; answers: readonly []; selected: readonly []; x: 0; } | { label: string; x: number; showCorrectness: string; answers: readonly []; selected: readonly []; y: 0; })[]' is not assignable to parameter of type 'readonly InteractiveMarkerType[]'.
339
339
  LabelImage.navigateToMarkerIndex({x: 0, y: 0}, markers, 0)
340
340
  ].label,
341
341
  ).toEqual("this");
@@ -99,7 +99,7 @@ class LabelImage extends React.Component<LabelImageProps, LabelImageState> {
99
99
  } as const;
100
100
 
101
101
  if (marker.selected && marker.selected.length > 0) {
102
- // @ts-expect-error [FEI-5003] - TS2540 - Cannot assign to 'hasAnswers' because it is a read-only property.
102
+ // @ts-expect-error - TS2540 - Cannot assign to 'hasAnswers' because it is a read-only property.
103
103
  score.hasAnswers = true;
104
104
  }
105
105
 
@@ -109,14 +109,14 @@ class LabelImage extends React.Component<LabelImageProps, LabelImageState> {
109
109
  marker.selected.length === marker.answers.length
110
110
  ) {
111
111
  // All correct answers are selected by the user.
112
- // @ts-expect-error [FEI-5003] - TS2540 - Cannot assign to 'isCorrect' because it is a read-only property.
112
+ // @ts-expect-error - TS2540 - Cannot assign to 'isCorrect' because it is a read-only property.
113
113
  score.isCorrect = marker.selected.every((choice) =>
114
114
  marker.answers.includes(choice),
115
115
  );
116
116
  }
117
117
  } else if (!marker.selected || marker.selected.length === 0) {
118
118
  // Correct as no answers should be selected by the user.
119
- // @ts-expect-error [FEI-5003] - TS2540 - Cannot assign to 'isCorrect' because it is a read-only property.
119
+ // @ts-expect-error - TS2540 - Cannot assign to 'isCorrect' because it is a read-only property.
120
120
  score.isCorrect = true;
121
121
  }
122
122
 
@@ -217,9 +217,9 @@ class LabelImage extends React.Component<LabelImageProps, LabelImageState> {
217
217
  for (const side of Object.keys(triangles)) {
218
218
  const corners = triangles[side];
219
219
 
220
- // @ts-expect-error [FEI-5003] - TS2556 - A spread argument must either have a tuple type or be passed to a rest parameter.
220
+ // @ts-expect-error - TS2556 - A spread argument must either have a tuple type or be passed to a rest parameter.
221
221
  if (LabelImage.pointInTriangle(p, ...corners)) {
222
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'string' is not assignable to type '"left" | "top" | "center" | "right" | "bottom"'.
222
+ // @ts-expect-error - TS2322 - Type 'string' is not assignable to type '"left" | "top" | "center" | "right" | "bottom"'.
223
223
  return side;
224
224
  }
225
225
  }
@@ -385,7 +385,7 @@ class LabelImage extends React.Component<LabelImageProps, LabelImageState> {
385
385
 
386
386
  // Update Perseus widget state with user selected answers without
387
387
  // triggering interaction events for listeners.
388
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'null' is not assignable to parameter of type '(() => unknown) | undefined'.
388
+ // @ts-expect-error - TS2345 - Argument of type 'null' is not assignable to parameter of type '(() => unknown) | undefined'.
389
389
  onChange({markers: updatedMarkers}, null, true);
390
390
  }
391
391
 
@@ -526,7 +526,7 @@ class LabelImage extends React.Component<LabelImageProps, LabelImageState> {
526
526
  const marker =
527
527
  this._markers[
528
528
  LabelImage.navigateToMarkerIndex(
529
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type '{ x: number; y: number; } | { x: number; y: number; } | { x: number; y: number; } | { x: number; y: number; }' is not assignable to parameter of type 'Direction'.
529
+ // @ts-expect-error - TS2345 - Argument of type '{ x: number; y: number; } | { x: number; y: number; } | { x: number; y: number; } | { x: number; y: number; }' is not assignable to parameter of type 'Direction'.
530
530
  navigateDirection,
531
531
  markers,
532
532
  index,
@@ -173,7 +173,7 @@ const flipTilesPattern = (oldCells: any, tileY: any, tileX, pattern: any) => {
173
173
  class LightsPuzzle extends React.Component<any> {
174
174
  _currPattern: any;
175
175
  _nextPattern: any;
176
- // @ts-expect-error [FEI-5003] - TS2564 - Property '_patternIndex' has no initializer and is not definitely assigned in the constructor.
176
+ // @ts-expect-error - TS2564 - Property '_patternIndex' has no initializer and is not definitely assigned in the constructor.
177
177
  _patternIndex: number;
178
178
 
179
179
  static propTypes = {
@@ -237,7 +237,7 @@ class LightsPuzzle extends React.Component<any> {
237
237
  }
238
238
 
239
239
  change: (...args: ReadonlyArray<unknown>) => any = (...args) => {
240
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'readonly unknown[]' is not assignable to parameter of type 'any[]'.
240
+ // @ts-expect-error - TS2345 - Argument of type 'readonly unknown[]' is not assignable to parameter of type 'any[]'.
241
241
  return Changeable.change.apply(this, args);
242
242
  };
243
243
 
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @khanacademy/ts-no-error-suppressions */
1
2
  /* eslint-disable react/forbid-prop-types, react/sort-comp */
2
3
  import {
3
4
  linterContextProps,
@@ -156,7 +157,7 @@ class Matcher extends React.Component<any, any> {
156
157
  </td>
157
158
  <td className={css(styles.column, styles.columnRight)}>
158
159
  <Sortable
159
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'readonly unknown[]' is not assignable to type 'readonly string[]'.
160
+ // @ts-expect-error - TS2322 - Type 'readonly unknown[]' is not assignable to type 'readonly string[]'.
160
161
  options={right}
161
162
  layout={Layout.VERTICAL}
162
163
  padding={this.props.padding}
@@ -203,10 +204,10 @@ class Matcher extends React.Component<any, any> {
203
204
 
204
205
  return {
205
206
  // eslint-disable-next-line react/no-string-refs
206
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'getOptions' does not exist on type 'ReactInstance'.
207
+ // @ts-expect-error - TS2339 - Property 'getOptions' does not exist on type 'ReactInstance'.
207
208
  left: this.refs.left.getOptions(),
208
209
  // eslint-disable-next-line react/no-string-refs
209
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'getOptions' does not exist on type 'ReactInstance'.
210
+ // @ts-expect-error - TS2339 - Property 'getOptions' does not exist on type 'ReactInstance'.
210
211
  right: this.refs.right.getOptions(),
211
212
  };
212
213
  };
@@ -218,7 +219,7 @@ class Matcher extends React.Component<any, any> {
218
219
  index,
219
220
  ) => {
220
221
  // eslint-disable-next-line react/no-string-refs
221
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'moveOptionToIndex' does not exist on type 'ReactInstance'.
222
+ // @ts-expect-error - TS2339 - Property 'moveOptionToIndex' does not exist on type 'ReactInstance'.
222
223
  this.refs.left.moveOptionToIndex(option, index);
223
224
  };
224
225
 
@@ -229,12 +230,12 @@ class Matcher extends React.Component<any, any> {
229
230
  index,
230
231
  ) => {
231
232
  // eslint-disable-next-line react/no-string-refs
232
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'moveOptionToIndex' does not exist on type 'ReactInstance'.
233
+ // @ts-expect-error - TS2339 - Property 'moveOptionToIndex' does not exist on type 'ReactInstance'.
233
234
  this.refs.right.moveOptionToIndex(option, index);
234
235
  };
235
236
 
236
237
  simpleValidate: (arg1: any) => any = (rubric) => {
237
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'validate' does not exist on type 'typeof Matcher'.
238
+ // @ts-expect-error - TS2339 - Property 'validate' does not exist on type 'typeof Matcher'.
238
239
  return Matcher.validate(this.getUserInput(), rubric);
239
240
  };
240
241
  }
@@ -123,7 +123,7 @@ type State = {
123
123
  enterTheMatrix: number;
124
124
  };
125
125
  class Matrix extends React.Component<Props, State> {
126
- // @ts-expect-error [FEI-5003] - TS2564 - Property 'cursorPosition' has no initializer and is not definitely assigned in the constructor.
126
+ // @ts-expect-error - TS2564 - Property 'cursorPosition' has no initializer and is not definitely assigned in the constructor.
127
127
  cursorPosition: [number, number];
128
128
 
129
129
  static defaultProps: DefaultProps = {
@@ -323,7 +323,7 @@ class Matrix extends React.Component<Props, State> {
323
323
  } as const;
324
324
 
325
325
  MatrixInput = (
326
- // @ts-expect-error [FEI-5003] - TS2322 - Type '{ style: CSSProperties; className: "inside" | "outside"; ref: string; value: number | null; disabled: boolean; onFocus: () => void; onBlur: () => void; onKeyDown: (e: any) => void; onChange: (value: any, cb: any) => void; }' is not assignable to type 'Pick<Readonly<Props> & Readonly<{ children?: ReactNode; }>, "children" | "style" | "id" | "className" | "placeholder" | "onFocus" | "onBlur" | "onChange" | "onKeyDown" | "labelText">'.
326
+ // @ts-expect-error - TS2322 - Type '{ style: CSSProperties; className: "inside" | "outside"; ref: string; value: number | null; disabled: boolean; onFocus: () => void; onBlur: () => void; onKeyDown: (e: any) => void; onChange: (value: any, cb: any) => void; }' is not assignable to type 'Pick<Readonly<Props> & Readonly<{ children?: ReactNode; }>, "children" | "style" | "id" | "className" | "placeholder" | "onFocus" | "onBlur" | "onChange" | "onKeyDown" | "labelText">'.
327
327
  <TextInput {...updatedProps} />
328
328
  );
329
329
  }
@@ -387,7 +387,7 @@ class Matrix extends React.Component<Props, State> {
387
387
  focusInputPath: (arg1: any) => void = (path) => {
388
388
  const inputID = getRefForPath(path);
389
389
  // eslint-disable-next-line react/no-string-refs
390
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'focus' does not exist on type 'ReactInstance'.
390
+ // @ts-expect-error - TS2339 - Property 'focus' does not exist on type 'ReactInstance'.
391
391
  this.refs[inputID].focus();
392
392
  };
393
393
 
@@ -398,7 +398,7 @@ class Matrix extends React.Component<Props, State> {
398
398
 
399
399
  const inputID = getRefForPath(path);
400
400
  // eslint-disable-next-line react/no-string-refs
401
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'blur' does not exist on type 'ReactInstance'.
401
+ // @ts-expect-error - TS2339 - Property 'blur' does not exist on type 'ReactInstance'.
402
402
  this.refs[inputID].blur();
403
403
  };
404
404
 
@@ -431,37 +431,37 @@ class Matrix extends React.Component<Props, State> {
431
431
 
432
432
  // eslint-disable-next-line react/no-string-refs
433
433
  const curInput = this.refs[getRefForPath(getInputPath(row, col))];
434
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'getStringValue' does not exist on type 'ReactInstance'.
434
+ // @ts-expect-error - TS2339 - Property 'getStringValue' does not exist on type 'ReactInstance'.
435
435
  const curValueString = curInput.getStringValue();
436
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'getSelectionStart' does not exist on type 'ReactInstance'.
436
+ // @ts-expect-error - TS2339 - Property 'getSelectionStart' does not exist on type 'ReactInstance'.
437
437
  const cursorStartPosition = curInput.getSelectionStart();
438
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'getSelectionEnd' does not exist on type 'ReactInstance'.
438
+ // @ts-expect-error - TS2339 - Property 'getSelectionEnd' does not exist on type 'ReactInstance'.
439
439
  const cursorEndPosition = curInput.getSelectionEnd();
440
440
 
441
441
  let nextPath = null;
442
442
  if (e.key === "ArrowUp" && row > 0) {
443
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'readonly string[]' is not assignable to type 'null'.
443
+ // @ts-expect-error - TS2322 - Type 'readonly string[]' is not assignable to type 'null'.
444
444
  nextPath = getInputPath(row - 1, col);
445
445
  } else if (e.key === "ArrowDown" && row + 1 < maxRow) {
446
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'readonly string[]' is not assignable to type 'null'.
446
+ // @ts-expect-error - TS2322 - Type 'readonly string[]' is not assignable to type 'null'.
447
447
  nextPath = getInputPath(row + 1, col);
448
448
  } else if (e.key === "ArrowLeft" && col > 0) {
449
449
  if (cursorStartPosition === 0 && cursorEndPosition === 0) {
450
450
  // Only go to next input if we're at the *start* of the content
451
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'readonly string[]' is not assignable to type 'null'.
451
+ // @ts-expect-error - TS2322 - Type 'readonly string[]' is not assignable to type 'null'.
452
452
  nextPath = getInputPath(row, col - 1);
453
453
  }
454
454
  } else if (e.key === "ArrowRight" && col + 1 < maxCol) {
455
455
  if (cursorStartPosition === curValueString.length) {
456
456
  // Only go to next input if we're at the *end* of the content
457
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'readonly string[]' is not assignable to type 'null'.
457
+ // @ts-expect-error - TS2322 - Type 'readonly string[]' is not assignable to type 'null'.
458
458
  nextPath = getInputPath(row, col + 1);
459
459
  }
460
460
  } else if (e.key === "Enter") {
461
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'number' is not assignable to type 'null'.
461
+ // @ts-expect-error - TS2322 - Type 'number' is not assignable to type 'null'.
462
462
  enterTheMatrix = this.state.enterTheMatrix + 1;
463
463
  } else if (e.key === "Escape") {
464
- // @ts-expect-error [FEI-5003] - TS2322 - Type '0' is not assignable to type 'null'.
464
+ // @ts-expect-error - TS2322 - Type '0' is not assignable to type 'null'.
465
465
  enterTheMatrix = 0;
466
466
  }
467
467
 
@@ -475,17 +475,17 @@ class Matrix extends React.Component<Props, State> {
475
475
 
476
476
  // Multiply by 2 to ensure the cursor always ends up at the end;
477
477
  // Opera sometimes sees a carriage return as 2 characters.
478
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'getStringValue' does not exist on type 'ReactInstance'.
478
+ // @ts-expect-error - TS2339 - Property 'getStringValue' does not exist on type 'ReactInstance'.
479
479
  const inputValString = input.getStringValue();
480
480
  const valueLength = inputValString.length * 2;
481
481
 
482
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'focus' does not exist on type 'ReactInstance'.
482
+ // @ts-expect-error - TS2339 - Property 'focus' does not exist on type 'ReactInstance'.
483
483
  input.focus();
484
484
  if (e.key === "ArrowRight") {
485
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'setSelectionRange' does not exist on type 'ReactInstance'.
485
+ // @ts-expect-error - TS2339 - Property 'setSelectionRange' does not exist on type 'ReactInstance'.
486
486
  input.setSelectionRange(0, 0);
487
487
  } else {
488
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'setSelectionRange' does not exist on type 'ReactInstance'.
488
+ // @ts-expect-error - TS2339 - Property 'setSelectionRange' does not exist on type 'ReactInstance'.
489
489
  input.setSelectionRange(valueLength, valueLength);
490
490
  }
491
491
  }
@@ -524,7 +524,7 @@ class Matrix extends React.Component<Props, State> {
524
524
  };
525
525
 
526
526
  simpleValidate: (arg1: any) => any = (rubric) => {
527
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'validate' does not exist on type 'typeof Matrix'.
527
+ // @ts-expect-error - TS2339 - Property 'validate' does not exist on type 'typeof Matrix'.
528
528
  return Matrix.validate(this.getUserInput(), rubric);
529
529
  };
530
530
  }
@@ -559,7 +559,7 @@ _.extend(Matrix, {
559
559
  });
560
560
  const result = validator(supplied[row][col]);
561
561
  if (result.message) {
562
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'string' is not assignable to type 'null'.
562
+ // @ts-expect-error - TS2322 - Type 'string' is not assignable to type 'null'.
563
563
  message = result.message;
564
564
  }
565
565
  if (!result.correct) {
@@ -616,7 +616,7 @@ const staticTransform: (arg1: any) => any = (editorProps) => {
616
616
  );
617
617
  // We convert matrix cells from numbers to string to match the expected
618
618
  // input into the rendered widget.
619
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'answers' does not exist on type 'Pick<any, "suffix" | "prefix" | "matrixBoardSize">'.
619
+ // @ts-expect-error - TS2339 - Property 'answers' does not exist on type 'Pick<any, "suffix" | "prefix" | "matrixBoardSize">'.
620
620
  widgetProps.answers = _.map(editorProps.answers, (row) => {
621
621
  // Replace null values with empty string
622
622
  return _.map(row, (cell) => (cell != null ? String(cell) : ""));
@@ -79,7 +79,7 @@ const Measurer: any = createReactClass({
79
79
  left: image.left,
80
80
  }}
81
81
  >
82
- {/* @ts-expect-error [FEI-5003] - TS2741 - Property 'alt' is missing in type '{ src: any; }' but required in type 'Pick<Readonly<Props> & Readonly<{ children?: ReactNode; }>, "children" | "height" | "width" | "title" | "alt" | "trackInteraction" | "preloader" | "allowFullBleed" | "extraGraphie" | "overrideAriaHidden">'. */}
82
+ {/* @ts-expect-error - TS2741 - Property 'alt' is missing in type '{ src: any; }' but required in type 'Pick<Readonly<Props> & Readonly<{ children?: ReactNode; }>, "children" | "height" | "width" | "title" | "alt" | "trackInteraction" | "preloader" | "allowFullBleed" | "extraGraphie" | "overrideAriaHidden">'. */}
83
83
  <SvgImage src={image.url} />
84
84
  </div>
85
85
  )}
@@ -105,7 +105,7 @@ const Measurer: any = createReactClass({
105
105
  "rulerLength",
106
106
  ],
107
107
  function (prop) {
108
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
108
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
109
109
  return prevProps[prop] !== this.props[prop];
110
110
  },
111
111
  this,
@@ -119,7 +119,7 @@ const Measurer: any = createReactClass({
119
119
  setupGraphie: function () {
120
120
  // eslint-disable-next-line react/no-string-refs
121
121
  const graphieDiv = ReactDOM.findDOMNode(this.refs.graphieDiv);
122
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call. | TS2339 - Property 'empty' does not exist on type 'JQueryStatic'.
122
+ // @ts-expect-error - TS2769 - No overload matches this call. | TS2339 - Property 'empty' does not exist on type 'JQueryStatic'.
123
123
  $(graphieDiv).empty();
124
124
  const graphie = (this.graphie = GraphUtils.createGraphie(graphieDiv));
125
125
 
@@ -7,7 +7,7 @@ function assertApproximately(actual: any, expected: number, allowed: number) {
7
7
 
8
8
  describe("Molecule layout", () => {
9
9
  describe("Simple molecules", () => {
10
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
10
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
11
11
  const parsedAtoms = SmilesParser.parse("CC");
12
12
  const converted = Layout._convertTree({}, [], parsedAtoms);
13
13
  const atoms = converted[0];
@@ -72,7 +72,7 @@ describe("Molecule layout", () => {
72
72
  });
73
73
 
74
74
  describe("Layout at a three-way junction", () => {
75
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
75
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
76
76
  const layoutItems = Layout.layout(SmilesParser.parse("CC(C)C"), 0);
77
77
  it("should place the second atom in the center", () => {
78
78
  const centerAtom = layoutItems.find((item) => item.idx === "2,0");
@@ -112,7 +112,7 @@ describe("Molecule layout", () => {
112
112
  });
113
113
 
114
114
  describe("Layout at a four-way junction", () => {
115
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
115
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
116
116
  const layoutItems = Layout.layout(SmilesParser.parse("CC(C)(C)C"), 0);
117
117
  it("should place the second atom in the center", () => {
118
118
  const centerAtom = layoutItems.find((item) => item.idx === "2,0");
@@ -148,7 +148,7 @@ describe("Molecule layout", () => {
148
148
  });
149
149
 
150
150
  describe("Triple bond layout", () => {
151
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
151
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
152
152
  const layoutItems = Layout.layout(SmilesParser.parse("CC#CC"), 0);
153
153
  it("should place all the atoms colinearly", () => {
154
154
  const atoms = layoutItems.filter((item) => item.idx);
@@ -5,7 +5,7 @@ const parser = SmilesParser.parse;
5
5
  describe("SMILES parser", () => {
6
6
  describe("single atom parsing", () => {
7
7
  it("should parse a single bare atom", () => {
8
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
8
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
9
9
  const parsed = parser("C");
10
10
  expect(parsed).toEqual({
11
11
  type: "atom",
@@ -16,7 +16,7 @@ describe("SMILES parser", () => {
16
16
  });
17
17
 
18
18
  it("should parse a bracketed atom", () => {
19
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
19
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
20
20
  const parsed = parser("[At]");
21
21
  expect(parsed).toEqual({
22
22
  type: "atom",
@@ -27,7 +27,7 @@ describe("SMILES parser", () => {
27
27
  });
28
28
 
29
29
  it("should parse certain common two-letter atoms", () => {
30
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
30
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
31
31
  const parsed = parser("Br");
32
32
  expect(parsed).toEqual({
33
33
  type: "atom",
@@ -40,7 +40,7 @@ describe("SMILES parser", () => {
40
40
  it("should fail to parse an unusual atom when not bracketed", () => {
41
41
  // Arrange
42
42
  // Act
43
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
43
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
44
44
  const underTest = () => parser("At");
45
45
 
46
46
  // Assert
@@ -50,7 +50,7 @@ describe("SMILES parser", () => {
50
50
 
51
51
  describe("bond parsing", () => {
52
52
  it("should parse a single bond", () => {
53
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
53
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
54
54
  const parsed = parser("CC");
55
55
  const expectedBond = {
56
56
  type: "bond",
@@ -71,7 +71,7 @@ describe("SMILES parser", () => {
71
71
  });
72
72
 
73
73
  it("should parse a double bond", () => {
74
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
74
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
75
75
  const parsed = parser("C=C");
76
76
  const expectedBond = {
77
77
  type: "bond",
@@ -92,7 +92,7 @@ describe("SMILES parser", () => {
92
92
  });
93
93
 
94
94
  it("should parse a triple bond", () => {
95
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
95
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
96
96
  const parsed = parser("C#C");
97
97
  const expectedBond = {
98
98
  type: "bond",
@@ -115,7 +115,7 @@ describe("SMILES parser", () => {
115
115
 
116
116
  describe("branch parsing", () => {
117
117
  it("should parse a branch", () => {
118
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
118
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
119
119
  const parsed = parser("C(C)C");
120
120
  expect(parsed.bonds).toHaveLength(2);
121
121
  expect(parsed.bonds[0].type).toBe("bond");
@@ -129,12 +129,12 @@ describe("SMILES parser", () => {
129
129
  });
130
130
 
131
131
  it("should apply bond modifiers only to one branch", () => {
132
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
132
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
133
133
  let parsed = parser("C(=O)C");
134
134
  expect(parsed.bonds).toHaveLength(2);
135
135
  expect(parsed.bonds[0].bondType).toBe("double");
136
136
  expect(parsed.bonds[1].bondType).toBe("single");
137
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
137
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
138
138
  parsed = parser("C(O)=C");
139
139
  expect(parsed.bonds).toHaveLength(2);
140
140
  expect(parsed.bonds[0].bondType).toBe("single");
@@ -142,13 +142,13 @@ describe("SMILES parser", () => {
142
142
  });
143
143
 
144
144
  it("should error on mismatched parentheses", () => {
145
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
145
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
146
146
  expect(() => parser("C)")).toThrow();
147
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
147
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
148
148
  expect(() => parser("C(")).toThrow();
149
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
149
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
150
150
  expect(() => parser("C(()")).toThrow();
151
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
151
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
152
152
  expect(() => parser("C())")).toThrow();
153
153
  });
154
154
  });
@@ -10,7 +10,7 @@ const smilesRe = new RegExp("^[A-Za-z\\[\\]()=#+-]*$");
10
10
  const atomRe = new RegExp("^(Cl|Br|[CONPSFBI]|\\[)");
11
11
 
12
12
  function ParseError(message: string) {
13
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
13
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
14
14
  this.message = message;
15
15
  }
16
16
 
@@ -180,9 +180,9 @@ function readAtomSymbol(smiles: any, _ctx) {
180
180
  rest = smiles.slice(closingIdx + 1);
181
181
  } else {
182
182
  const match = atomRe.exec(smiles);
183
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'string' is not assignable to type 'null'. | TS2531 - Object is possibly 'null'.
183
+ // @ts-expect-error - TS2322 - Type 'string' is not assignable to type 'null'. | TS2531 - Object is possibly 'null'.
184
184
  sym = match[1];
185
- // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'.
185
+ // @ts-expect-error - TS2531 - Object is possibly 'null'.
186
186
  rest = smiles.slice(sym.length);
187
187
  }
188
188
 
@@ -44,13 +44,13 @@ export class Molecule extends React.Component<any, any> {
44
44
  stateFromSmiles: (arg1: any) => void = (smiles) => {
45
45
  try {
46
46
  this.setState({
47
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
47
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
48
48
  parsedSmiles: parse(smiles),
49
49
  error: null,
50
50
  });
51
51
  } catch (e: any) {
52
52
  if (e instanceof ParseError) {
53
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'message' does not exist on type '{}'.
53
+ // @ts-expect-error - TS2339 - Property 'message' does not exist on type '{}'.
54
54
  this.setState({error: e.message});
55
55
  } else {
56
56
  throw e;
@@ -89,9 +89,9 @@ export class Molecule extends React.Component<any, any> {
89
89
  // eslint-disable-next-line react/no-string-refs
90
90
  const canvas = this.refs.canvas;
91
91
  const translation = this.setCanvasBounds(canvas, items);
92
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'getContext' does not exist on type 'ReactInstance'.
92
+ // @ts-expect-error - TS2339 - Property 'getContext' does not exist on type 'ReactInstance'.
93
93
  const ctx = canvas.getContext("2d");
94
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'width' does not exist on type 'ReactInstance'. | TS2339 - Property 'height' does not exist on type 'ReactInstance'.
94
+ // @ts-expect-error - TS2339 - Property 'width' does not exist on type 'ReactInstance'. | TS2339 - Property 'height' does not exist on type 'ReactInstance'.
95
95
  ctx.clearRect(0, 0, canvas.width, canvas.height);
96
96
  ctx.save();
97
97
  ctx.translate(translation[0], translation[1]);
@@ -16,9 +16,9 @@ import KhanMath from "../util/math";
16
16
  import type {ChangeableProps} from "../mixins/changeable";
17
17
  import type {APIOptions, WidgetExports} from "../types";
18
18
 
19
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'MovablePoint' does not exist on type 'typeof Graphie'.
19
+ // @ts-expect-error - TS2339 - Property 'MovablePoint' does not exist on type 'typeof Graphie'.
20
20
  const MovablePoint = Graphie.MovablePoint;
21
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'Line' does not exist on type 'typeof Graphie'.
21
+ // @ts-expect-error - TS2339 - Property 'Line' does not exist on type 'typeof Graphie'.
22
22
  const Line = Graphie.Line;
23
23
  const {assert} = InteractiveUtil;
24
24
 
@@ -111,7 +111,7 @@ const _label = (
111
111
  }
112
112
  };
113
113
 
114
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'createSimpleClass' does not exist on type 'typeof Graphie'.
114
+ // @ts-expect-error - TS2339 - Property 'createSimpleClass' does not exist on type 'typeof Graphie'.
115
115
  const TickMarks: any = Graphie.createSimpleClass((graphie, props) => {
116
116
  // Avoid infinite loop
117
117
  if (!_.isFinite(props.tickStep) || props.tickStep <= 0) {
@@ -252,7 +252,7 @@ class NumberLine extends React.Component<Props, State> {
252
252
  };
253
253
 
254
254
  change: (...args: ReadonlyArray<unknown>) => any = (...args) => {
255
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'readonly unknown[]' is not assignable to parameter of type 'any[]'.
255
+ // @ts-expect-error - TS2345 - Argument of type 'readonly unknown[]' is not assignable to parameter of type 'any[]'.
256
256
  return Changeable.change.apply(this, args);
257
257
  };
258
258
 
@@ -333,7 +333,7 @@ class NumberLine extends React.Component<Props, State> {
333
333
  focus: () => boolean | null | undefined = () => {
334
334
  if (this.props.isTickCtrl) {
335
335
  // eslint-disable-next-line react/no-string-refs
336
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'focus' does not exist on type 'ReactInstance'.
336
+ // @ts-expect-error - TS2339 - Property 'focus' does not exist on type 'ReactInstance'.
337
337
  this.refs["tick-ctrl"].focus();
338
338
  return true;
339
339
  }
@@ -342,7 +342,7 @@ class NumberLine extends React.Component<Props, State> {
342
342
  focusInputPath: (arg1: any) => void = (path) => {
343
343
  if (path.length === 1) {
344
344
  // eslint-disable-next-line react/no-string-refs
345
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'focus' does not exist on type 'ReactInstance'.
345
+ // @ts-expect-error - TS2339 - Property 'focus' does not exist on type 'ReactInstance'.
346
346
  this.refs[path[0]].focus();
347
347
  }
348
348
  };
@@ -350,7 +350,7 @@ class NumberLine extends React.Component<Props, State> {
350
350
  blurInputPath: (arg1: any) => void = (path) => {
351
351
  if (path.length === 1) {
352
352
  // eslint-disable-next-line react/no-string-refs
353
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'blur' does not exist on type 'ReactInstance'.
353
+ // @ts-expect-error - TS2339 - Property 'blur' does not exist on type 'ReactInstance'.
354
354
  this.refs[path[0]].blur();
355
355
  }
356
356
  };
@@ -414,7 +414,7 @@ class NumberLine extends React.Component<Props, State> {
414
414
  options={options}
415
415
  onMouseDown={(coord) => {
416
416
  // eslint-disable-next-line react/no-string-refs
417
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'movables' does not exist on type 'ReactInstance'.
417
+ // @ts-expect-error - TS2339 - Property 'movables' does not exist on type 'ReactInstance'.
418
418
  this.refs.graphie.movables.numberLinePoint.grab(coord);
419
419
  }}
420
420
  setup={this._setupGraphie}
@@ -532,7 +532,7 @@ class NumberLine extends React.Component<Props, State> {
532
532
  this.props.onChange({rel: newRel});
533
533
  };
534
534
 
535
- // @ts-expect-error [FEI-5003] - TS2322 - Type '(props: any) => any[]' is not assignable to type '(arg1: any) => [number, number]'.
535
+ // @ts-expect-error - TS2322 - Type '(props: any) => any[]' is not assignable to type '(arg1: any) => [number, number]'.
536
536
  _getInequalityEndpoint: (arg1: any) => [number, number] = (props) => {
537
537
  const isGreater = _(["ge", "gt"]).contains(props.rel);
538
538
  const widthInPixels = 400;
@@ -545,7 +545,7 @@ class NumberLine extends React.Component<Props, State> {
545
545
  return end;
546
546
  };
547
547
 
548
- // @ts-expect-error [FEI-5003] - TS2322 - Type '(props: any) => Element | null' is not assignable to type '(arg1: any) => ReactElement<any, string | JSXElementConstructor<any>>'.
548
+ // @ts-expect-error - TS2322 - Type '(props: any) => Element | null' is not assignable to type '(arg1: any) => ReactElement<any, string | JSXElementConstructor<any>>'.
549
549
  _renderInequality: (arg1: any) => React.ReactElement = (props) => {
550
550
  if (props.isInequality) {
551
551
  const end = this._getInequalityEndpoint(props);
@@ -625,7 +625,7 @@ class NumberLine extends React.Component<Props, State> {
625
625
  };
626
626
 
627
627
  simpleValidate: (arg1: any) => any = (rubric) => {
628
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'validate' does not exist on type 'typeof NumberLine'.
628
+ // @ts-expect-error - TS2339 - Property 'validate' does not exist on type 'typeof NumberLine'.
629
629
  return NumberLine.validate(this.getUserInput(), rubric);
630
630
  };
631
631