@khanacademy/perseus 7.2.1 → 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 (380) hide show
  1. package/CHANGELOG.md +26 -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.js +1139 -1189
  7. package/dist/es/index.js.map +1 -1
  8. package/dist/hints-renderer.d.ts +1 -1
  9. package/dist/index.js +1141 -1192
  10. package/dist/index.js.map +1 -1
  11. package/dist/mixins/provide-keypad.d.ts +15 -12
  12. package/dist/perseus-api.d.ts +1 -1
  13. package/dist/types.d.ts +3 -2
  14. package/dist/widgets/expression.d.ts +1 -1
  15. package/dist/widgets/graded-group.d.ts +1 -1
  16. package/dist/widgets/interactive-graph.d.ts +1 -1
  17. package/dist/widgets/sequence.d.ts +1 -1
  18. package/dist/widgets/table.d.ts +8 -1
  19. package/dist/widgets.d.ts +1 -1
  20. package/package.json +33 -33
  21. package/src/__testdata__/article-renderer.testdata.ts +3 -1
  22. package/src/__testdata__/item-renderer.testdata.ts +1 -1
  23. package/src/__testdata__/renderer.testdata.ts +1 -1
  24. package/src/__tests__/item-renderer.test.tsx +1 -1
  25. package/src/__tests__/mock-asset-loading-widget.tsx +1 -1
  26. package/src/__tests__/perseus-markdown.test.ts +17 -17
  27. package/src/__tests__/renderer-api.test.tsx +21 -21
  28. package/src/__tests__/renderer.test.tsx +13 -13
  29. package/src/__tests__/server-item-renderer.test.tsx +3 -3
  30. package/src/__tests__/tex-wrangler.test.ts +1 -1
  31. package/src/article-renderer.tsx +39 -38
  32. package/src/components/__tests__/number-input.test.tsx +4 -4
  33. package/src/components/__tests__/sortable.test.tsx +2 -2
  34. package/src/components/fixed-to-responsive.tsx +1 -1
  35. package/src/components/graph.tsx +11 -11
  36. package/src/components/graphie-classes.ts +7 -7
  37. package/src/components/graphie.tsx +14 -14
  38. package/src/components/highlighting/highlightable-content.tsx +1 -1
  39. package/src/components/highlighting/ui/highlight-renderer.tsx +1 -1
  40. package/src/components/highlighting/ui/util.ts +2 -2
  41. package/src/components/highlighting/word-indexer.tsx +4 -4
  42. package/src/components/icon.tsx +1 -1
  43. package/src/components/image-loader.tsx +4 -4
  44. package/src/components/input-with-examples.tsx +2 -2
  45. package/src/components/lint.tsx +1 -1
  46. package/src/components/math-input.tsx +5 -5
  47. package/src/components/math-output.tsx +1 -1
  48. package/src/components/multi-button-group.tsx +1 -1
  49. package/src/components/number-input.tsx +10 -10
  50. package/src/components/prop-check-box.tsx +1 -1
  51. package/src/components/simple-keypad-input.tsx +4 -4
  52. package/src/components/sortable.tsx +42 -41
  53. package/src/components/svg-image.tsx +12 -12
  54. package/src/components/tex-buttons.tsx +4 -3
  55. package/src/components/text-input.tsx +8 -8
  56. package/src/components/text-list-editor.tsx +11 -11
  57. package/src/components/visibility-observer/create-visibility-observer.ts +1 -1
  58. package/src/components/visibility-observer/visibility-observer.tsx +2 -2
  59. package/src/components/zoomable-tex.tsx +3 -3
  60. package/src/components/zoomable.tsx +8 -8
  61. package/src/hint-renderer.tsx +3 -3
  62. package/src/hints-renderer.tsx +11 -11
  63. package/src/init.ts +1 -1
  64. package/src/interaction-tracker.ts +4 -4
  65. package/src/interactive2/__tests__/movable-point.test.ts +1 -1
  66. package/src/interactive2/interactive-util.ts +6 -6
  67. package/src/interactive2/movable-helper-methods.ts +2 -2
  68. package/src/interactive2/movable-line-options.ts +37 -37
  69. package/src/interactive2/movable-line.ts +2 -2
  70. package/src/interactive2/movable-point-options.ts +29 -29
  71. package/src/interactive2/movable-point.tsx +2 -2
  72. package/src/interactive2/movable-polygon-options.ts +45 -45
  73. package/src/interactive2/movable-polygon.ts +2 -2
  74. package/src/interactive2/movable.ts +2 -2
  75. package/src/interactive2/objective_.ts +1 -1
  76. package/src/interactive2/wrapped-defaults.ts +2 -2
  77. package/src/interactive2/wrapped-ellipse.ts +9 -9
  78. package/src/interactive2/wrapped-line.ts +8 -8
  79. package/src/interactive2/wrapped-path.ts +5 -5
  80. package/src/item-renderer.tsx +5 -5
  81. package/src/mixins/changeable.ts +2 -2
  82. package/src/mixins/editor-jsonify.ts +1 -1
  83. package/src/mixins/provide-keypad.tsx +23 -37
  84. package/src/mixins/widget-jsonify-deprecated.ts +1 -1
  85. package/src/multi-items/__tests__/items.test.ts +1 -1
  86. package/src/multi-items/__tests__/multi-renderer.test.tsx +7 -7
  87. package/src/multi-items/__tests__/trees.test.ts +12 -12
  88. package/src/multi-items/item-types.ts +2 -2
  89. package/src/multi-items/items.ts +1 -1
  90. package/src/multi-items/multi-renderer.tsx +14 -14
  91. package/src/multi-items/prop-type-builders.ts +2 -2
  92. package/src/multi-items/tree-types.ts +4 -4
  93. package/src/multi-items/trees.ts +16 -16
  94. package/src/perseus-env.ts +2 -2
  95. package/src/perseus-markdown.tsx +5 -5
  96. package/src/renderer.tsx +38 -38
  97. package/src/server-item-renderer.tsx +5 -5
  98. package/src/sigfigs.ts +1 -1
  99. package/src/traversal.ts +1 -1
  100. package/src/types.ts +3 -3
  101. package/src/util/answer-types.ts +14 -14
  102. package/src/util/geometry.ts +7 -7
  103. package/src/util/graphie.ts +32 -32
  104. package/src/util/interactive.ts +118 -118
  105. package/src/util/math.ts +4 -4
  106. package/src/util/react-render.tsx +1 -1
  107. package/src/util/scroll-utils.ts +2 -2
  108. package/src/util/tex.ts +3 -3
  109. package/src/util.ts +15 -15
  110. package/src/widget-container.tsx +1 -1
  111. package/src/widgets/__stories__/test-keypad-context-wrapper.tsx +3 -3
  112. package/src/widgets/__testdata__/numeric-input.testdata.ts +1 -1
  113. package/src/widgets/__tests__/__snapshots__/video.test.ts.snap +2 -2
  114. package/src/widgets/__tests__/expression.test.ts +4 -3
  115. package/src/widgets/__tests__/grapher.cypress.ts +32 -32
  116. package/src/widgets/__tests__/group.test.tsx +1 -1
  117. package/src/widgets/__tests__/interactive-graph.cypress.ts +40 -40
  118. package/src/widgets/__tests__/interactive-graph.test.ts +1 -1
  119. package/src/widgets/__tests__/numeric-input.test.ts +1 -1
  120. package/src/widgets/__tests__/passage.test.tsx +2 -2
  121. package/src/widgets/__tests__/plotter.test.tsx +2 -1
  122. package/src/widgets/__tests__/radio/base-radio.test.tsx +7 -7
  123. package/src/widgets/__tests__/renderQuestion.tsx +3 -3
  124. package/src/widgets/categorizer.tsx +4 -4
  125. package/src/widgets/cs-program.tsx +2 -2
  126. package/src/widgets/dropdown.tsx +1 -1
  127. package/src/widgets/expression.tsx +10 -9
  128. package/src/widgets/graded-group-set.tsx +5 -5
  129. package/src/widgets/graded-group.tsx +18 -19
  130. package/src/widgets/grapher/util.tsx +6 -6
  131. package/src/widgets/grapher.tsx +10 -10
  132. package/src/widgets/group.tsx +3 -3
  133. package/src/widgets/iframe.tsx +2 -2
  134. package/src/widgets/image.tsx +1 -1
  135. package/src/widgets/input-number.tsx +4 -4
  136. package/src/widgets/interaction.tsx +77 -77
  137. package/src/widgets/interactive-graph.tsx +109 -107
  138. package/src/widgets/label-image/marker.tsx +2 -2
  139. package/src/widgets/label-image.test.ts +1 -1
  140. package/src/widgets/label-image.tsx +7 -7
  141. package/src/widgets/lights-puzzle.tsx +2 -2
  142. package/src/widgets/matcher.tsx +6 -6
  143. package/src/widgets/matrix.tsx +20 -20
  144. package/src/widgets/measurer.tsx +3 -3
  145. package/src/widgets/molecule/__tests__/layout.test.ts +4 -4
  146. package/src/widgets/molecule/__tests__/parser.test.ts +14 -14
  147. package/src/widgets/molecule/smiles-parser.ts +3 -3
  148. package/src/widgets/molecule.tsx +4 -4
  149. package/src/widgets/number-line.tsx +11 -11
  150. package/src/widgets/numeric-input.tsx +11 -11
  151. package/src/widgets/orderer.tsx +38 -38
  152. package/src/widgets/passage/__tests__/passage-markdown.test.ts +1 -1
  153. package/src/widgets/passage/passage-markdown.tsx +4 -4
  154. package/src/widgets/passage-ref-target.tsx +1 -1
  155. package/src/widgets/passage-ref.tsx +4 -6
  156. package/src/widgets/passage.tsx +11 -11
  157. package/src/widgets/plotter.tsx +9 -9
  158. package/src/widgets/radio/base-radio.tsx +11 -11
  159. package/src/widgets/radio/choice-icon/choice-icon.tsx +2 -2
  160. package/src/widgets/radio/choice.tsx +1 -1
  161. package/src/widgets/radio/option-status.tsx +1 -1
  162. package/src/widgets/radio/widget.tsx +6 -6
  163. package/src/widgets/radio.ts +1 -1
  164. package/src/widgets/reaction-diagram.tsx +8 -8
  165. package/src/widgets/sequence.tsx +2 -2
  166. package/src/widgets/simulator.tsx +14 -14
  167. package/src/widgets/sorter.tsx +4 -4
  168. package/src/widgets/table.tsx +8 -8
  169. package/src/widgets/transformer.tsx +92 -92
  170. package/src/widgets/unit.tsx +17 -17
  171. package/src/widgets/video-transcript-link.test.tsx +3 -3
  172. package/src/widgets/video-transcript-link.tsx +1 -1
  173. package/src/widgets/video.tsx +1 -1
  174. package/src/widgets.ts +5 -5
  175. package/src/zoom.ts +22 -22
  176. package/tsconfig-build.tsbuildinfo +1 -1
  177. package/dist/a11y.js.flow +0 -11
  178. package/dist/all-widgets.js.flow +0 -33
  179. package/dist/article-renderer.js.flow +0 -73
  180. package/dist/asset-context.js.flow +0 -15
  181. package/dist/basic-widgets.js.flow +0 -33
  182. package/dist/components/button-group.js.flow +0 -33
  183. package/dist/components/constants.js.flow +0 -13
  184. package/dist/components/fixed-to-responsive.js.flow +0 -34
  185. package/dist/components/graph.js.flow +0 -66
  186. package/dist/components/graphie-classes.js.flow +0 -19
  187. package/dist/components/graphie-movables.js.flow +0 -22
  188. package/dist/components/graphie.js.flow +0 -69
  189. package/dist/components/highlighting/highlightable-content.js.flow +0 -56
  190. package/dist/components/highlighting/highlights.js.flow +0 -54
  191. package/dist/components/highlighting/ranges.js.flow +0 -60
  192. package/dist/components/highlighting/types.js.flow +0 -70
  193. package/dist/components/highlighting/ui/highlight-renderer.js.flow +0 -43
  194. package/dist/components/highlighting/ui/highlight-set-renderer.js.flow +0 -41
  195. package/dist/components/highlighting/ui/highlight-tooltip.js.flow +0 -22
  196. package/dist/components/highlighting/ui/highlighting-ui.js.flow +0 -30
  197. package/dist/components/highlighting/ui/selection-tracker.js.flow +0 -54
  198. package/dist/components/highlighting/ui/types.js.flow +0 -22
  199. package/dist/components/highlighting/ui/util.js.flow +0 -42
  200. package/dist/components/highlighting/word-indexer.js.flow +0 -21
  201. package/dist/components/hud.js.flow +0 -14
  202. package/dist/components/icon.js.flow +0 -31
  203. package/dist/components/image-loader.js.flow +0 -49
  204. package/dist/components/info-tip/info-tip.js.flow +0 -20
  205. package/dist/components/info-tip.js.flow +0 -18
  206. package/dist/components/inline-icon.js.flow +0 -39
  207. package/dist/components/input-with-examples.js.flow +0 -58
  208. package/dist/components/lint.js.flow +0 -58
  209. package/dist/components/math-input.js.flow +0 -49
  210. package/dist/components/math-output.js.flow +0 -33
  211. package/dist/components/multi-button-group.js.flow +0 -35
  212. package/dist/components/number-input.js.flow +0 -42
  213. package/dist/components/prop-check-box.js.flow +0 -8
  214. package/dist/components/range-input.js.flow +0 -20
  215. package/dist/components/simple-keypad-input.js.flow +0 -16
  216. package/dist/components/sortable.js.flow +0 -91
  217. package/dist/components/stub-tag-editor.js.flow +0 -18
  218. package/dist/components/svg-image.js.flow +0 -85
  219. package/dist/components/tex-buttons.js.flow +0 -26
  220. package/dist/components/tex.js.flow +0 -25
  221. package/dist/components/text-input.js.flow +0 -39
  222. package/dist/components/text-list-editor.js.flow +0 -22
  223. package/dist/components/tooltip.js.flow +0 -51
  224. package/dist/components/visibility-observer/create-visibility-observer.js.flow +0 -23
  225. package/dist/components/visibility-observer/get-scroll-parent.js.flow +0 -7
  226. package/dist/components/visibility-observer/visibility-observer.js.flow +0 -36
  227. package/dist/components/zoomable-tex.js.flow +0 -18
  228. package/dist/components/zoomable.js.flow +0 -70
  229. package/dist/components.js.flow +0 -22
  230. package/dist/definition-context.js.flow +0 -25
  231. package/dist/dependencies.js.flow +0 -9
  232. package/dist/error-boundary.js.flow +0 -19
  233. package/dist/extra-widgets.js.flow +0 -33
  234. package/dist/hint-renderer.js.flow +0 -32
  235. package/dist/hints-renderer.js.flow +0 -41
  236. package/dist/icon-paths.js.flow +0 -123
  237. package/dist/index.js.flow +0 -134
  238. package/dist/init.js.flow +0 -20
  239. package/dist/interaction-tracker.js.flow +0 -35
  240. package/dist/interactive2/interactive-util.js.flow +0 -50
  241. package/dist/interactive2/movable-helper-methods.js.flow +0 -15
  242. package/dist/interactive2/movable-line-options.js.flow +0 -44
  243. package/dist/interactive2/movable-line.js.flow +0 -8
  244. package/dist/interactive2/movable-point-options.js.flow +0 -44
  245. package/dist/interactive2/movable-point.js.flow +0 -8
  246. package/dist/interactive2/movable-polygon-options.js.flow +0 -47
  247. package/dist/interactive2/movable-polygon.js.flow +0 -8
  248. package/dist/interactive2/movable.js.flow +0 -8
  249. package/dist/interactive2/objective_.js.flow +0 -25
  250. package/dist/interactive2/types.js.flow +0 -8
  251. package/dist/interactive2/wrapped-defaults.js.flow +0 -11
  252. package/dist/interactive2/wrapped-ellipse.js.flow +0 -14
  253. package/dist/interactive2/wrapped-line.js.flow +0 -14
  254. package/dist/interactive2/wrapped-path.js.flow +0 -13
  255. package/dist/interactive2.js.flow +0 -16
  256. package/dist/item-renderer.js.flow +0 -132
  257. package/dist/item-version.js.flow +0 -11
  258. package/dist/jipt-paragraphs.js.flow +0 -14
  259. package/dist/loading-context.js.flow +0 -12
  260. package/dist/logging/log.js.flow +0 -62
  261. package/dist/mixins/changeable.js.flow +0 -33
  262. package/dist/mixins/editor-jsonify.js.flow +0 -10
  263. package/dist/mixins/provide-keypad.js.flow +0 -33
  264. package/dist/mixins/widget-jsonify-deprecated.js.flow +0 -11
  265. package/dist/mixins/widget-prop-denylist.js.flow +0 -20
  266. package/dist/multi-items/item-types.js.flow +0 -55
  267. package/dist/multi-items/items.js.flow +0 -66
  268. package/dist/multi-items/multi-renderer.js.flow +0 -213
  269. package/dist/multi-items/prop-type-builders.js.flow +0 -22
  270. package/dist/multi-items/shape-types.js.flow +0 -60
  271. package/dist/multi-items/shapes.js.flow +0 -25
  272. package/dist/multi-items/tree-types.js.flow +0 -45
  273. package/dist/multi-items/trees.js.flow +0 -147
  274. package/dist/multi-items.js.flow +0 -36
  275. package/dist/perseus-api.js.flow +0 -151
  276. package/dist/perseus-env.js.flow +0 -6
  277. package/dist/perseus-error.js.flow +0 -16
  278. package/dist/perseus-markdown.js.flow +0 -20
  279. package/dist/perseus-types.js.flow +0 -1041
  280. package/dist/question-paragraph.js.flow +0 -17
  281. package/dist/renderability.js.flow +0 -19
  282. package/dist/renderer.js.flow +0 -325
  283. package/dist/server-item-renderer.js.flow +0 -132
  284. package/dist/sigfigs.js.flow +0 -41
  285. package/dist/styles/constants.js.flow +0 -62
  286. package/dist/styles/global-constants.js.flow +0 -348
  287. package/dist/styles/global-styles.js.flow +0 -53
  288. package/dist/styles/media-queries.js.flow +0 -35
  289. package/dist/styles/shared.js.flow +0 -8
  290. package/dist/tex-wrangler.js.flow +0 -13
  291. package/dist/translation-linter.js.flow +0 -32
  292. package/dist/traversal.js.flow +0 -26
  293. package/dist/types.js.flow +0 -318
  294. package/dist/util/a11y.js.flow +0 -8
  295. package/dist/util/answer-types.js.flow +0 -49
  296. package/dist/util/colors.js.flow +0 -95
  297. package/dist/util/fix-passage-refs.js.flow +0 -8
  298. package/dist/util/geometry.js.flow +0 -37
  299. package/dist/util/graph-utils.js.flow +0 -9
  300. package/dist/util/graphie.js.flow +0 -8
  301. package/dist/util/interactive.js.flow +0 -11
  302. package/dist/util/katex-preprocess.js.flow +0 -12
  303. package/dist/util/math.js.flow +0 -62
  304. package/dist/util/mobile-native-utils.js.flow +0 -12
  305. package/dist/util/react-render.js.flow +0 -12
  306. package/dist/util/register-all-widgets-for-testing.js.flow +0 -7
  307. package/dist/util/scroll-utils.js.flow +0 -19
  308. package/dist/util/sizing-utils.js.flow +0 -20
  309. package/dist/util/tex.js.flow +0 -17
  310. package/dist/util/url-utils.js.flow +0 -11
  311. package/dist/util.graphie.js.flow +0 -14
  312. package/dist/util.js.flow +0 -319
  313. package/dist/version.js.flow +0 -17
  314. package/dist/widget-container.js.flow +0 -33
  315. package/dist/widgets/categorizer.js.flow +0 -70
  316. package/dist/widgets/cs-program.js.flow +0 -54
  317. package/dist/widgets/definition.js.flow +0 -57
  318. package/dist/widgets/dropdown.js.flow +0 -63
  319. package/dist/widgets/explanation.js.flow +0 -58
  320. package/dist/widgets/expression.js.flow +0 -116
  321. package/dist/widgets/graded-group-answer-bar.js.flow +0 -24
  322. package/dist/widgets/graded-group-set.js.flow +0 -65
  323. package/dist/widgets/graded-group.js.flow +0 -78
  324. package/dist/widgets/grapher/util.js.flow +0 -38
  325. package/dist/widgets/grapher.js.flow +0 -102
  326. package/dist/widgets/group.js.flow +0 -60
  327. package/dist/widgets/iframe.js.flow +0 -53
  328. package/dist/widgets/image.js.flow +0 -73
  329. package/dist/widgets/input-number.js.flow +0 -94
  330. package/dist/widgets/interaction/arrow-picker.js.flow +0 -21
  331. package/dist/widgets/interaction/color-picker.js.flow +0 -23
  332. package/dist/widgets/interaction/dash-picker.js.flow +0 -21
  333. package/dist/widgets/interaction/element-container.js.flow +0 -28
  334. package/dist/widgets/interaction.js.flow +0 -60
  335. package/dist/widgets/interactive-graph.js.flow +0 -239
  336. package/dist/widgets/label-image/answer-choices.js.flow +0 -55
  337. package/dist/widgets/label-image/marker.js.flow +0 -31
  338. package/dist/widgets/label-image/types.js.flow +0 -23
  339. package/dist/widgets/label-image.js.flow +0 -142
  340. package/dist/widgets/lights-puzzle.js.flow +0 -58
  341. package/dist/widgets/matcher.js.flow +0 -106
  342. package/dist/widgets/matrix.js.flow +0 -80
  343. package/dist/widgets/measurer.js.flow +0 -30
  344. package/dist/widgets/molecule/molecule-drawing.js.flow +0 -11
  345. package/dist/widgets/molecule/molecule-layout.js.flow +0 -96
  346. package/dist/widgets/molecule/smiles-parser.js.flow +0 -26
  347. package/dist/widgets/molecule.js.flow +0 -60
  348. package/dist/widgets/number-line.js.flow +0 -102
  349. package/dist/widgets/numeric-input.js.flow +0 -105
  350. package/dist/widgets/orderer.js.flow +0 -81
  351. package/dist/widgets/passage/passage-markdown.js.flow +0 -33
  352. package/dist/widgets/passage-ref-target.js.flow +0 -52
  353. package/dist/widgets/passage-ref.js.flow +0 -85
  354. package/dist/widgets/passage.js.flow +0 -157
  355. package/dist/widgets/plotter.js.flow +0 -112
  356. package/dist/widgets/radio/base-radio.js.flow +0 -50
  357. package/dist/widgets/radio/choice-a11y-text.js.flow +0 -14
  358. package/dist/widgets/radio/choice-icon/choice-icon.js.flow +0 -22
  359. package/dist/widgets/radio/choice-icon/cross-out-line.js.flow +0 -16
  360. package/dist/widgets/radio/choice-icon/shared-styles.js.flow +0 -11
  361. package/dist/widgets/radio/choice-none-above.js.flow +0 -16
  362. package/dist/widgets/radio/choice.js.flow +0 -29
  363. package/dist/widgets/radio/choice.jsx.fixture.js.flow +0 -7
  364. package/dist/widgets/radio/focus-ring.js.flow +0 -22
  365. package/dist/widgets/radio/option-status.js.flow +0 -16
  366. package/dist/widgets/radio/util.js.flow +0 -12
  367. package/dist/widgets/radio/widget.js.flow +0 -80
  368. package/dist/widgets/radio.js.flow +0 -31
  369. package/dist/widgets/reaction-diagram.js.flow +0 -46
  370. package/dist/widgets/sequence.js.flow +0 -53
  371. package/dist/widgets/simulator.js.flow +0 -107
  372. package/dist/widgets/sorter.js.flow +0 -102
  373. package/dist/widgets/table.js.flow +0 -67
  374. package/dist/widgets/transformer.js.flow +0 -127
  375. package/dist/widgets/unit.js.flow +0 -93
  376. package/dist/widgets/video-transcript-link.js.flow +0 -15
  377. package/dist/widgets/video.js.flow +0 -57
  378. package/dist/widgets.js.flow +0 -108
  379. package/dist/zoom.js.flow +0 -7
  380. package/src/multi-items/item-types.js.flow +0 -55
@@ -149,7 +149,7 @@ describe("renderer", () => {
149
149
  mockRunLinter.mockClear();
150
150
 
151
151
  // Act
152
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type '{ problemNum: number; linterContext: { readonly contentType: "exercise"; readonly highlightLint: true; readonly paths: readonly []; readonly stack: readonly []; }; }' is not assignable to parameter of type 'Pick<{}, never> & InexactPartial<Pick<{}, never>> & InexactPartial<Pick<DefaultProps, keyof DefaultProps>>'.
152
+ // @ts-expect-error - TS2345 - Argument of type '{ problemNum: number; linterContext: { readonly contentType: "exercise"; readonly highlightLint: true; readonly paths: readonly []; readonly stack: readonly []; }; }' is not assignable to parameter of type 'Pick<{}, never> & InexactPartial<Pick<{}, never>> & InexactPartial<Pick<DefaultProps, keyof DefaultProps>>'.
153
153
  rerender(question1, {...extraProps, problemNum: 1});
154
154
 
155
155
  // Assert
@@ -192,7 +192,7 @@ describe("renderer", () => {
192
192
  ...question1.widgets,
193
193
  // $FlowIgnore[prop-missing]
194
194
  // $FlowIgnore[incompatible-cast]
195
- // @ts-expect-error [FEI-5003] - TS2352 - Conversion of type '{ type: undefined; static?: boolean | undefined; graded?: boolean | undefined; alignment?: string | undefined; options: PerseusCategorizerWidgetOptions | null | undefined; key?: number | undefined; version?: Version | undefined; } | ... 38 more ... | { ...; }' to type 'DropdownWidget' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
195
+ // @ts-expect-error - TS2352 - Conversion of type '{ type: undefined; static?: boolean | undefined; graded?: boolean | undefined; alignment?: string | undefined; options: PerseusCategorizerWidgetOptions | null | undefined; key?: number | undefined; version?: Version | undefined; } | ... 38 more ... | { ...; }' to type 'DropdownWidget' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
196
196
  "dropdown 1": {
197
197
  ...question1.widgets["dropdown 1"],
198
198
  // $FlowIgnore[incompatible-cast]
@@ -298,7 +298,7 @@ describe("renderer", () => {
298
298
  originalImage = window.Image;
299
299
  // Mock HTML Image so we can trigger onLoad callbacks and see full
300
300
  // image rendering.
301
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'Mock<Record<string, any>, [], any>' is not assignable to type 'new (width?: number | undefined, height?: number | undefined) => HTMLImageElement'.
301
+ // @ts-expect-error - TS2322 - Type 'Mock<Record<string, any>, [], any>' is not assignable to type 'new (width?: number | undefined, height?: number | undefined) => HTMLImageElement'.
302
302
  window.Image = jest.fn(() => {
303
303
  const img: Record<string, any> = {};
304
304
  images.push(img);
@@ -426,7 +426,7 @@ describe("renderer", () => {
426
426
 
427
427
  const wrapperStyle = getComputedStyle(
428
428
  // $FlowIgnore[incompatible-call]
429
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'HTMLElement | null' is not assignable to parameter of type 'Element'.
429
+ // @ts-expect-error - TS2345 - Argument of type 'HTMLElement | null' is not assignable to parameter of type 'Element'.
430
430
  screen.getByAltText("This image has dimensions").parentElement, // eslint-disable-line testing-library/no-node-access
431
431
  );
432
432
  expect(wrapperStyle.maxWidth).toBe("420px");
@@ -452,7 +452,7 @@ describe("renderer", () => {
452
452
 
453
453
  const wrapperStyle = getComputedStyle(
454
454
  // $FlowIgnore[incompatible-call]
455
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'HTMLElement | null' is not assignable to parameter of type 'Element'.
455
+ // @ts-expect-error - TS2345 - Argument of type 'HTMLElement | null' is not assignable to parameter of type 'Element'.
456
456
  screen.getByAltText("This image doesn't").parentElement, // eslint-disable-line testing-library/no-node-access
457
457
  );
458
458
  expect(wrapperStyle.maxWidth).toBe("");
@@ -683,11 +683,11 @@ describe("renderer", () => {
683
683
  );
684
684
  expect(zoomable).not.toBeUndefined();
685
685
  expect(zoomable).not.toBeNull();
686
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'style' does not exist on type 'Element'.
686
+ // @ts-expect-error - TS2339 - Property 'style' does not exist on type 'Element'.
687
687
  expect(zoomable.style.transform).not.toBe("");
688
688
 
689
689
  /* eslint-disable testing-library/no-node-access */
690
- // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'.
690
+ // @ts-expect-error - TS2531 - Object is possibly 'null'.
691
691
  expect(zoomable.parentElement.style.transform).not.toBe("");
692
692
  /* eslint-enable testing-library/no-node-access */
693
693
  });
@@ -1139,7 +1139,7 @@ describe("renderer", () => {
1139
1139
 
1140
1140
  const {renderer} = renderQuestion(mockedItem);
1141
1141
  const [widget1, widget2, widget3] = renderer.findWidgets(
1142
- // @ts-expect-error [FEI-5003] - TS2367 - This condition will always return 'false' since the types '"video" | "image" | "iframe" | "table" | "radio" | "definition" | "group" | "matrix" | "categorizer" | "cs-program" | "dropdown" | "example-graphie-widget" | "example-widget" | ... 26 more ... | "unit-input"' and '"mock-widget"' have no overlap.
1142
+ // @ts-expect-error - TS2367 - This condition will always return 'false' since the types '"video" | "image" | "iframe" | "table" | "radio" | "definition" | "group" | "matrix" | "categorizer" | "cs-program" | "dropdown" | "example-graphie-widget" | "example-widget" | ... 26 more ... | "unit-input"' and '"mock-widget"' have no overlap.
1143
1143
  (_, info) => info.type === "mock-widget",
1144
1144
  );
1145
1145
  widget1.restoreSerializedState = makeRestoreSerializedStateMock;
@@ -1311,7 +1311,7 @@ describe("renderer", () => {
1311
1311
  break;
1312
1312
  }
1313
1313
  // eslint-disable-next-line testing-library/no-node-access
1314
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'HTMLElement | null' is not assignable to type 'HTMLElement'.
1314
+ // @ts-expect-error - TS2322 - Type 'HTMLElement | null' is not assignable to type 'HTMLElement'.
1315
1315
  // eslint-disable-next-line testing-library/no-node-access
1316
1316
  el = el.parentElement;
1317
1317
  }
@@ -1334,7 +1334,7 @@ describe("renderer", () => {
1334
1334
  },
1335
1335
  },
1336
1336
  {},
1337
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type '{ problemNum: number; }' is not assignable to parameter of type 'Pick<{}, never> & InexactPartial<Pick<{}, never>> & InexactPartial<Pick<DefaultProps, keyof DefaultProps>>'.
1337
+ // @ts-expect-error - TS2345 - Argument of type '{ problemNum: number; }' is not assignable to parameter of type 'Pick<{}, never> & InexactPartial<Pick<{}, never>> & InexactPartial<Pick<DefaultProps, keyof DefaultProps>>'.
1338
1338
  {problemNum: 1},
1339
1339
  );
1340
1340
 
@@ -1349,7 +1349,7 @@ describe("renderer", () => {
1349
1349
  // Arrange
1350
1350
  const {renderer} = renderQuestion(mockedItem);
1351
1351
  const widgets = renderer.findWidgets(
1352
- // @ts-expect-error [FEI-5003] - TS2367 - This condition will always return 'false' since the types '"video" | "image" | "iframe" | "table" | "radio" | "definition" | "group" | "matrix" | "categorizer" | "cs-program" | "dropdown" | "example-graphie-widget" | "example-widget" | ... 26 more ... | "unit-input"' and '"mock-widget"' have no overlap.
1352
+ // @ts-expect-error - TS2367 - This condition will always return 'false' since the types '"video" | "image" | "iframe" | "table" | "radio" | "definition" | "group" | "matrix" | "categorizer" | "cs-program" | "dropdown" | "example-graphie-widget" | "example-widget" | ... 26 more ... | "unit-input"' and '"mock-widget"' have no overlap.
1353
1353
  (_, info) => info.type === "mock-widget",
1354
1354
  );
1355
1355
  widgets.forEach(
@@ -1376,7 +1376,7 @@ describe("renderer", () => {
1376
1376
  // Arrange
1377
1377
  const {renderer} = renderQuestion(mockedItem);
1378
1378
  const widgets = renderer.findWidgets(
1379
- // @ts-expect-error [FEI-5003] - TS2367 - This condition will always return 'false' since the types '"video" | "image" | "iframe" | "table" | "radio" | "definition" | "group" | "matrix" | "categorizer" | "cs-program" | "dropdown" | "example-graphie-widget" | "example-widget" | ... 26 more ... | "unit-input"' and '"mock-widget"' have no overlap.
1379
+ // @ts-expect-error - TS2367 - This condition will always return 'false' since the types '"video" | "image" | "iframe" | "table" | "radio" | "definition" | "group" | "matrix" | "categorizer" | "cs-program" | "dropdown" | "example-graphie-widget" | "example-widget" | ... 26 more ... | "unit-input"' and '"mock-widget"' have no overlap.
1380
1380
  (_, info) => info.type === "mock-widget",
1381
1381
  );
1382
1382
  widgets.forEach(
@@ -1489,7 +1489,7 @@ describe("renderer", () => {
1489
1489
 
1490
1490
  // Assert
1491
1491
  // "button" role is the WB dropdown's "opener" element
1492
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'Element | Text | null | undefined' is not assignable to parameter of type 'HTMLElement'.
1492
+ // @ts-expect-error - TS2345 - Argument of type 'Element | Text | null | undefined' is not assignable to parameter of type 'HTMLElement'.
1493
1493
  expect(within(node).queryAllByRole("button")).toHaveLength(1);
1494
1494
  });
1495
1495
 
@@ -18,13 +18,13 @@ import InputNumberExport from "../widgets/input-number";
18
18
  import RadioWidgetExport from "../widgets/radio";
19
19
 
20
20
  import MockAssetLoadingWidgetExport, {
21
- MockAssetLoadingWidget,
22
21
  mockedAssetItem,
23
22
  } from "./mock-asset-loading-widget";
24
23
  import MockWidgetExport from "./mock-widget";
25
24
 
26
25
  import type {PerseusItem} from "../perseus-types";
27
26
  import type {APIOptions} from "../types";
27
+ import type {MockAssetLoadingWidget} from "./mock-asset-loading-widget";
28
28
 
29
29
  // This looks alot like `widgets/__tests__/renderQuestion.jsx', except we use
30
30
  // the ServerItemRenderer instead of Renderer
@@ -167,7 +167,7 @@ describe("server item renderer", () => {
167
167
  const node = renderer.getDOMNodeForPath(["input-number 1"]);
168
168
 
169
169
  // Assert
170
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'Element | Text | null | undefined' is not assignable to parameter of type 'HTMLElement'.
170
+ // @ts-expect-error - TS2345 - Argument of type 'Element | Text | null | undefined' is not assignable to parameter of type 'HTMLElement'.
171
171
  expect(await within(node).findAllByRole("textbox")).toHaveLength(1);
172
172
  });
173
173
 
@@ -300,7 +300,7 @@ describe("server item renderer", () => {
300
300
  // Act
301
301
  // setAssetStatus() is not part of the Widget interface, it's specific
302
302
  // this test.
303
- // @ts-expect-error [FEI-5003] - TS2352 - Conversion of type 'Widget' to type 'MockAssetLoadingWidget' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
303
+ // @ts-expect-error - TS2352 - Conversion of type 'Widget' to type 'MockAssetLoadingWidget' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
304
304
  const widget = mockedWidget as MockAssetLoadingWidget;
305
305
  widget.setAssetStatus("ABC", true);
306
306
 
@@ -13,7 +13,7 @@ const assertWrangled = (toWrangle: string, check: string) => {
13
13
 
14
14
  const assertParsed = (toParse: undefined | string, check: string) => {
15
15
  // We ignore whitespace when comparing
16
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
16
+ // @ts-expect-error - TS2345 - Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
17
17
  const parsed = parseTex(toParse).replace(whitespaceRegex, "");
18
18
  const checkNoSpace = check.replace(whitespaceRegex, "");
19
19
  expect(parsed).toBe(checkNoSpace);
@@ -5,7 +5,6 @@
5
5
 
6
6
  import * as PerseusLinter from "@khanacademy/perseus-linter";
7
7
  import classNames from "classnames";
8
- import PropTypes from "prop-types";
9
8
  import * as React from "react";
10
9
 
11
10
  import ProvideKeypad from "./mixins/provide-keypad";
@@ -13,42 +12,44 @@ import {ClassNames as ApiClassNames, ApiOptions} from "./perseus-api";
13
12
  import Renderer from "./renderer";
14
13
  import Util from "./util";
15
14
 
16
- const rendererProps = PropTypes.shape({
17
- content: PropTypes.string,
18
- widgets: PropTypes.objectOf(PropTypes.any),
19
- images: PropTypes.objectOf(PropTypes.any),
20
- });
21
-
22
- class ArticleRenderer extends React.Component<any, any> {
15
+ import type {KeypadProps} from "./mixins/provide-keypad";
16
+ import type {PerseusRenderer} from "./perseus-types";
17
+ import type {APIOptions} from "./types";
18
+ import type {LinterContextProps} from "@khanacademy/perseus-linter";
19
+
20
+ type Props = {
21
+ apiOptions: APIOptions;
22
+ json: PerseusRenderer | ReadonlyArray<PerseusRenderer>;
23
+
24
+ // Whether to use the new Bibliotron styles for articles
25
+ /**
26
+ * @deprecated Does nothing
27
+ */
28
+ useNewStyles: boolean;
29
+ linterContext: LinterContextProps;
30
+ legacyPerseusLint?: ReadonlyArray<string>;
31
+ } & KeypadProps;
32
+
33
+ type DefaultProps = {
34
+ apiOptions: Props["apiOptions"];
35
+ useNewStyles: Props["useNewStyles"];
36
+ linterContext: Props["linterContext"];
37
+ };
38
+
39
+ type State = {
40
+ keypadElement: any | null;
41
+ };
42
+
43
+ class ArticleRenderer extends React.Component<Props, State> {
23
44
  _currentFocus: any;
24
45
 
25
- static propTypes = {
26
- ...ProvideKeypad.propTypes,
27
- apiOptions: PropTypes.shape({
28
- onFocusChange: PropTypes.func,
29
- isMobile: PropTypes.bool,
30
- }),
31
- json: PropTypes.oneOfType([
32
- rendererProps,
33
- PropTypes.arrayOf(rendererProps),
34
- ]).isRequired,
35
-
36
- // Whether to use the new Bibliotron styles for articles
37
- /**
38
- * @deprecated Does nothing
39
- */
40
- useNewStyles: PropTypes.bool,
41
- linterContext: PerseusLinter.linterContextProps,
42
- legacyPerseusLint: PropTypes.arrayOf(PropTypes.string),
43
- };
44
-
45
- static defaultProps: any = {
46
- apiOptions: {},
46
+ static defaultProps: DefaultProps = {
47
+ apiOptions: ApiOptions.defaults,
47
48
  useNewStyles: false,
48
49
  linterContext: PerseusLinter.linterContextDefault,
49
50
  };
50
51
 
51
- constructor(props: any) {
52
+ constructor(props: Props) {
52
53
  super(props);
53
54
  this.state = ProvideKeypad.getInitialState.call(this);
54
55
  }
@@ -58,7 +59,7 @@ class ArticleRenderer extends React.Component<any, any> {
58
59
  this._currentFocus = null;
59
60
  }
60
61
 
61
- shouldComponentUpdate(nextProps: any, nextState: any): any {
62
+ shouldComponentUpdate(nextProps: Props, nextState: State): boolean {
62
63
  return nextProps !== this.props || nextState !== this.state;
63
64
  }
64
65
 
@@ -96,7 +97,7 @@ class ArticleRenderer extends React.Component<any, any> {
96
97
  if (this._currentFocus) {
97
98
  const [sectionRef, ...focusPath] = this._currentFocus;
98
99
  // eslint-disable-next-line react/no-string-refs
99
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'getInputPaths' does not exist on type 'ReactInstance'.
100
+ // @ts-expect-error - TS2339 - Property 'getInputPaths' does not exist on type 'ReactInstance'.
100
101
  const inputPaths = this.refs[sectionRef].getInputPaths();
101
102
  didFocusInput = inputPaths.some((inputPath) => {
102
103
  return Util.inputPathsEqual(inputPath, focusPath);
@@ -107,18 +108,18 @@ class ArticleRenderer extends React.Component<any, any> {
107
108
  this.props.apiOptions.onFocusChange(
108
109
  this._currentFocus,
109
110
  prevFocusPath,
110
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'getDOMNode' does not exist on type 'never'.
111
+ // @ts-expect-error - TS2339 - Property 'getDOMNode' does not exist on type 'never'.
111
112
  didFocusInput && keypadElement && keypadElement.getDOMNode(),
112
113
  );
113
114
  }
114
115
 
115
- // @ts-expect-error [FEI-5003] - TS1345 - An expression of type 'void' cannot be tested for truthiness.
116
+ // @ts-expect-error - TS1345 - An expression of type 'void' cannot be tested for truthiness.
116
117
  if (keypadElement) {
117
118
  if (didFocusInput) {
118
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'activate' does not exist on type 'never'.
119
+ // @ts-expect-error - TS2339 - Property 'activate' does not exist on type 'never'.
119
120
  keypadElement.activate();
120
121
  } else {
121
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'dismiss' does not exist on type 'never'.
122
+ // @ts-expect-error - TS2339 - Property 'dismiss' does not exist on type 'never'.
122
123
  keypadElement.dismiss();
123
124
  }
124
125
  }
@@ -149,7 +150,7 @@ class ArticleRenderer extends React.Component<any, any> {
149
150
  if (this._currentFocus) {
150
151
  const [sectionRef, ...inputPath] = this._currentFocus;
151
152
  // eslint-disable-next-line react/no-string-refs
152
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'blurPath' does not exist on type 'ReactInstance'.
153
+ // @ts-expect-error - TS2339 - Property 'blurPath' does not exist on type 'ReactInstance'.
153
154
  this.refs[sectionRef].blurPath(inputPath);
154
155
  }
155
156
  };
@@ -31,7 +31,7 @@ describe("NumberInput", function () {
31
31
  );
32
32
 
33
33
  const node = TestUtils.renderIntoDocument(<NumberInput {...props} />);
34
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'Element | Text | null' is not assignable to parameter of type 'Element | Component<any, {}, any>'. | TS2345 - Argument of type 'void' is not assignable to parameter of type 'ReactInstance | null | undefined'.
34
+ // @ts-expect-error - TS2345 - Argument of type 'Element | Text | null' is not assignable to parameter of type 'Element | Component<any, {}, any>'. | TS2345 - Argument of type 'void' is not assignable to parameter of type 'ReactInstance | null | undefined'.
35
35
  TestUtils.Simulate.change(ReactDOM.findDOMNode(node), {
36
36
  target: {value: input},
37
37
  });
@@ -39,12 +39,12 @@ describe("NumberInput", function () {
39
39
  };
40
40
 
41
41
  it("basic input", function () {
42
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 3 arguments, but got 2.
42
+ // @ts-expect-error - TS2554 - Expected 3 arguments, but got 2.
43
43
  testInputResult("42", 42);
44
44
  });
45
45
 
46
46
  it("invalid input does not change", function () {
47
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 3 arguments, but got 2.
47
+ // @ts-expect-error - TS2554 - Expected 3 arguments, but got 2.
48
48
  testInputResult("asdf", STARTING_VALUE);
49
49
  });
50
50
 
@@ -78,7 +78,7 @@ describe("NumberInput", function () {
78
78
  useArrowKeys={keysEnabled}
79
79
  />,
80
80
  );
81
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'Element | Text | null' is not assignable to parameter of type 'Element | Component<any, {}, any>'. | TS2345 - Argument of type 'void' is not assignable to parameter of type 'ReactInstance | null | undefined'.
81
+ // @ts-expect-error - TS2345 - Argument of type 'Element | Text | null' is not assignable to parameter of type 'Element | Component<any, {}, any>'. | TS2345 - Argument of type 'void' is not assignable to parameter of type 'ReactInstance | null | undefined'.
82
82
  TestUtils.Simulate.keyDown(ReactDOM.findDOMNode(node), {key: key});
83
83
  expect(newVal).toEqual(endingValue);
84
84
  };
@@ -89,10 +89,10 @@ describe("moveOptionToIndex", () => {
89
89
  throw new Error("Failed to render");
90
90
  }
91
91
 
92
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'moveOptionToIndex' does not exist on type 'never'.
92
+ // @ts-expect-error - TS2339 - Property 'moveOptionToIndex' does not exist on type 'never'.
93
93
  sortable.moveOptionToIndex("a", 1);
94
94
 
95
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'getOptions' does not exist on type 'never'.
95
+ // @ts-expect-error - TS2339 - Property 'getOptions' does not exist on type 'never'.
96
96
  expect(sortable?.getOptions()).toStrictEqual(["b", "a", "c"]);
97
97
  });
98
98
 
@@ -108,7 +108,7 @@ class FixedToResponsive extends React.Component<Props, State> {
108
108
  const spacer = (
109
109
  <div
110
110
  style={{
111
- // @ts-expect-error [FEI-5003] - TS2362 - The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
111
+ // @ts-expect-error - TS2362 - The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
112
112
  paddingBottom: (1 / aspectRatio).toFixed(4) * 100 + "%",
113
113
  }}
114
114
  />
@@ -84,9 +84,9 @@ class Graph extends React.Component<Props> {
84
84
  protractor: any;
85
85
  ruler: any;
86
86
  _graphie: any;
87
- // @ts-expect-error [FEI-5003] - TS2564 - Property '_hasSetupGraphieThisUpdate' has no initializer and is not definitely assigned in the constructor.
87
+ // @ts-expect-error - TS2564 - Property '_hasSetupGraphieThisUpdate' has no initializer and is not definitely assigned in the constructor.
88
88
  _hasSetupGraphieThisUpdate: boolean;
89
- // @ts-expect-error [FEI-5003] - TS2564 - Property '_shouldSetupGraphie' has no initializer and is not definitely assigned in the constructor.
89
+ // @ts-expect-error - TS2564 - Property '_shouldSetupGraphie' has no initializer and is not definitely assigned in the constructor.
90
90
  _shouldSetupGraphie: boolean;
91
91
 
92
92
  static defaultProps: DefaultProps = {
@@ -187,7 +187,7 @@ class Graph extends React.Component<Props> {
187
187
 
188
188
  // eslint-disable-next-line react/no-string-refs
189
189
  const graphieDiv = ReactDOM.findDOMNode(this.refs.graphieDiv);
190
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call. | TS2339 - Property 'empty' does not exist on type 'JQueryStatic'.
190
+ // @ts-expect-error - TS2769 - No overload matches this call. | TS2339 - Property 'empty' does not exist on type 'JQueryStatic'.
191
191
  $(graphieDiv).empty();
192
192
 
193
193
  // Content creators may need to explicitly add the dollar signs so the
@@ -266,7 +266,7 @@ class Graph extends React.Component<Props> {
266
266
  });
267
267
 
268
268
  $instructionsWrapper.append($instructions);
269
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call. | TS2339 - Property 'append' does not exist on type 'JQueryStatic'.
269
+ // @ts-expect-error - TS2769 - No overload matches this call. | TS2339 - Property 'append' does not exist on type 'JQueryStatic'.
270
270
  $(graphieDiv).append($instructionsWrapper);
271
271
  } else {
272
272
  $instructionsWrapper = undefined;
@@ -281,7 +281,7 @@ class Graph extends React.Component<Props> {
281
281
  $instructionsWrapper = null;
282
282
  }
283
283
  // eslint-disable-next-line @babel/no-invalid-this
284
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
284
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
285
285
  // eslint-disable-next-line @babel/no-invalid-this
286
286
  this.props.onMouseDown(coord);
287
287
  }, this)
@@ -346,7 +346,7 @@ class Graph extends React.Component<Props> {
346
346
  }
347
347
 
348
348
  if (this.props.showProtractor) {
349
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
349
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
350
350
  const coord = this.pointsFromNormalized([[0.5, 0.05]])[0];
351
351
  this.protractor = this._graphie.protractor(coord);
352
352
  }
@@ -358,7 +358,7 @@ class Graph extends React.Component<Props> {
358
358
  }
359
359
 
360
360
  if (this.props.showRuler) {
361
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 2 arguments, but got 1.
361
+ // @ts-expect-error - TS2554 - Expected 2 arguments, but got 1.
362
362
  const coord = this.pointsFromNormalized([[0.5, 0.25]])[0];
363
363
  const extent =
364
364
  this._graphie.range[0][1] - this._graphie.range[0][0];
@@ -395,7 +395,7 @@ class Graph extends React.Component<Props> {
395
395
  if (imageData.url) {
396
396
  const scale = this.props.box[0] / interactiveSizes.defaultBoxSize;
397
397
  image = (
398
- // @ts-expect-error [FEI-5003] - TS2741 - Property 'alt' is missing in type '{ src: any; width: any; height: any; scale: number; responsive: false; }' but required in type 'Pick<Readonly<Props> & Readonly<{ children?: ReactNode; }>, "children" | "height" | "width" | "title" | "alt" | "trackInteraction" | "preloader" | "allowFullBleed" | "extraGraphie" | "overrideAriaHidden">'.
398
+ // @ts-expect-error - TS2741 - Property 'alt' is missing in type '{ src: any; width: any; height: any; scale: number; responsive: false; }' but required in type 'Pick<Readonly<Props> & Readonly<{ children?: ReactNode; }>, "children" | "height" | "width" | "title" | "alt" | "trackInteraction" | "preloader" | "allowFullBleed" | "extraGraphie" | "overrideAriaHidden">'.
399
399
  <SvgImage
400
400
  src={imageData.url}
401
401
  width={imageData.width}
@@ -415,11 +415,11 @@ class Graph extends React.Component<Props> {
415
415
  width: this.props.box[0],
416
416
  height: this.props.box[1],
417
417
  }}
418
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'onMouseOut' does not exist on type 'Graph'.
418
+ // @ts-expect-error - TS2339 - Property 'onMouseOut' does not exist on type 'Graph'.
419
419
  onMouseOut={this.onMouseOut}
420
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'onMouseOver' does not exist on type 'Graph'.
420
+ // @ts-expect-error - TS2339 - Property 'onMouseOver' does not exist on type 'Graph'.
421
421
  onMouseOver={this.onMouseOver}
422
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'onClick' does not exist on type 'Graph'.
422
+ // @ts-expect-error - TS2339 - Property 'onClick' does not exist on type 'Graph'.
423
423
  onClick={this.onClick}
424
424
  >
425
425
  {image}
@@ -15,14 +15,14 @@ const deepEq = Util.deepEq;
15
15
  * GraphieMovables
16
16
  */
17
17
  function GraphieMovable(descriptor: any) {
18
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
18
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
19
19
  _.extend(this, descriptor);
20
20
  }
21
21
 
22
22
  const abstractMethod = function () {
23
23
  throw new PerseusError(
24
24
  "Abstract method! Must be implemented by Graphie Movable" +
25
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
25
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
26
26
  this.constructor.displayName,
27
27
  Errors.NotAllowed,
28
28
  );
@@ -64,16 +64,16 @@ const rewriteProps = function (props: any, childrenArray: any) {
64
64
  */
65
65
  const createClass = function (spec: any): any {
66
66
  const GraphieClass = function (props: any) {
67
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
67
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
68
68
  if (!(this instanceof GraphieClass)) {
69
69
  throw new PerseusError(
70
70
  "Use createElement or JSX with graphie movables",
71
71
  Errors.NotAllowed,
72
72
  );
73
73
  }
74
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
74
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
75
75
  this.props = rewriteProps(props, props.children || []);
76
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
76
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
77
77
  return this;
78
78
  };
79
79
 
@@ -125,7 +125,7 @@ const createSimpleClass = function (addFunction: any): any {
125
125
  },
126
126
 
127
127
  remove: function () {
128
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 3 arguments, but got 2.
128
+ // @ts-expect-error - TS2554 - Expected 3 arguments, but got 2.
129
129
  nestedMap(this._elements, (elem) => {
130
130
  if (elem) {
131
131
  elem.remove();
@@ -136,7 +136,7 @@ const createSimpleClass = function (addFunction: any): any {
136
136
  },
137
137
 
138
138
  toFront: function () {
139
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 3 arguments, but got 2.
139
+ // @ts-expect-error - TS2554 - Expected 3 arguments, but got 2.
140
140
  nestedMap(this._elements, (elem) => {
141
141
  if (_.isFunction(elem.toFront)) {
142
142
  elem.toFront();
@@ -120,7 +120,7 @@ class Graphie extends React.Component<Props> {
120
120
  * Use it for good and not evil.
121
121
  */
122
122
  getGraphie: () => any = () => {
123
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_graphie' does not exist on type 'Graphie'.
123
+ // @ts-expect-error - TS2339 - Property '_graphie' does not exist on type 'Graphie'.
124
124
  return this._graphie;
125
125
  };
126
126
 
@@ -164,9 +164,9 @@ class Graphie extends React.Component<Props> {
164
164
  this._removeMovables();
165
165
 
166
166
  const graphieDiv = ReactDOM.findDOMNode(this.graphieDivRef.current);
167
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call. | TS2339 - Property 'empty' does not exist on type 'JQueryStatic'.
167
+ // @ts-expect-error - TS2769 - No overload matches this call. | TS2339 - Property 'empty' does not exist on type 'JQueryStatic'.
168
168
  $(graphieDiv).empty();
169
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_graphie' does not exist on type 'Graphie'.
169
+ // @ts-expect-error - TS2339 - Property '_graphie' does not exist on type 'Graphie'.
170
170
  const graphie = (this._graphie = createGraphie(graphieDiv));
171
171
 
172
172
  // This has to be called before addMouseLayer. You can re-init
@@ -193,7 +193,7 @@ class Graphie extends React.Component<Props> {
193
193
  // Overwrite fixed styles set in init()
194
194
  // TODO(alex): Either make this component always responsive by
195
195
  // itself, or always wrap it in other components so that it is.
196
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call. | TS2554 - Expected 2 arguments, but got 1.
196
+ // @ts-expect-error - TS2769 - No overload matches this call. | TS2554 - Expected 2 arguments, but got 1.
197
197
  $(graphieDiv).css({width: "100%", height: "100%"});
198
198
  graphie.raphael.setSize("100%", "100%");
199
199
  }
@@ -212,13 +212,13 @@ class Graphie extends React.Component<Props> {
212
212
 
213
213
  _removeMovables: () => void = () => {
214
214
  // _.invoke works even when this._movables is undefined
215
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_movables' does not exist on type 'Graphie'.
215
+ // @ts-expect-error - TS2339 - Property '_movables' does not exist on type 'Graphie'.
216
216
  _.invoke(this._movables, "remove");
217
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_movables' does not exist on type 'Graphie'.
217
+ // @ts-expect-error - TS2339 - Property '_movables' does not exist on type 'Graphie'.
218
218
  this._movables = {};
219
219
  };
220
220
 
221
- // @ts-expect-error [FEI-5003] - TS2322 - Type '(children: readonly any[], options: any) => ReactElement<any, string | JSXElementConstructor<any>> | readonly ReactElement<any, string | JSXElementConstructor<any>>[]' is not assignable to type '(children: readonly any[], arg2: any) => ReactElement<any, string | JSXElementConstructor<any>>'.
221
+ // @ts-expect-error - TS2322 - Type '(children: readonly any[], options: any) => ReactElement<any, string | JSXElementConstructor<any>> | readonly ReactElement<any, string | JSXElementConstructor<any>>[]' is not assignable to type '(children: readonly any[], arg2: any) => ReactElement<any, string | JSXElementConstructor<any>>'.
222
222
  _renderMovables: (
223
223
  children: ReadonlyArray<any>,
224
224
  arg2: any,
@@ -260,7 +260,7 @@ class Graphie extends React.Component<Props> {
260
260
  // elements occurring afterwards. If this happens, we set
261
261
  // `areMovablesOutOfOrder` to true:
262
262
  let areMovablesOutOfOrder = false;
263
- // @ts-expect-error [FEI-5003] - TS2554 - Expected 3 arguments, but got 2.
263
+ // @ts-expect-error - TS2554 - Expected 3 arguments, but got 2.
264
264
  return nestedMap(children, (childDescriptor) => {
265
265
  if (!childDescriptor) {
266
266
  // Still increment the key to avoid cascading key changes
@@ -333,7 +333,7 @@ class Graphie extends React.Component<Props> {
333
333
  }
334
334
 
335
335
  if (ref) {
336
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'movables' does not exist on type 'Graphie'.
336
+ // @ts-expect-error - TS2339 - Property 'movables' does not exist on type 'Graphie'.
337
337
  this.movables[ref] = newMovables[key];
338
338
  }
339
339
 
@@ -343,18 +343,18 @@ class Graphie extends React.Component<Props> {
343
343
 
344
344
  // Sort of like react diffing, but for movables
345
345
  _updateMovables: () => void = () => {
346
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_graphie' does not exist on type 'Graphie'.
346
+ // @ts-expect-error - TS2339 - Property '_graphie' does not exist on type 'Graphie'.
347
347
  const graphie = this._graphie;
348
348
 
349
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_movables' does not exist on type 'Graphie'.
349
+ // @ts-expect-error - TS2339 - Property '_movables' does not exist on type 'Graphie'.
350
350
  const oldMovables = this._movables;
351
351
  const newMovables: Record<string, any> = {};
352
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_movables' does not exist on type 'Graphie'.
352
+ // @ts-expect-error - TS2339 - Property '_movables' does not exist on type 'Graphie'.
353
353
  this._movables = newMovables;
354
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'movables' does not exist on type 'Graphie'.
354
+ // @ts-expect-error - TS2339 - Property 'movables' does not exist on type 'Graphie'.
355
355
  this.movables = {};
356
356
 
357
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'ReactNode' is not assignable to parameter of type 'readonly any[]'.
357
+ // @ts-expect-error - TS2345 - Argument of type 'ReactNode' is not assignable to parameter of type 'readonly any[]'.
358
358
  this._renderMovables(this.props.children, {
359
359
  nextKey: 1,
360
360
  graphie: graphie,
@@ -131,7 +131,7 @@ class HighlightableContent extends React.PureComponent<Props, State> {
131
131
  ) => {
132
132
  const {serializedHighlights} = this.props;
133
133
  const newSerializedHighlights = {...serializedHighlights} as const;
134
- // @ts-expect-error [FEI-5003] - TS2542 - Index signature in type '{ readonly [x: string]: SerializedHighlight; }' only permits reading.
134
+ // @ts-expect-error - TS2542 - Index signature in type '{ readonly [x: string]: SerializedHighlight; }' only permits reading.
135
135
  delete newSerializedHighlights[keyToRemove];
136
136
  this.props.onSerializedHighlightsUpdate(newSerializedHighlights);
137
137
  };
@@ -53,7 +53,7 @@ type State = {
53
53
  class HighlightRenderer extends React.PureComponent<Props, State> {
54
54
  state: State = {
55
55
  cachedHighlightRects: this._computeRects(this.props),
56
- // @ts-expect-error [FEI-5003] - TS2322 - Type '{ cachedHighlightRects: readonly Rect[]; tooltipIsHovered: boolean; }' is not assignable to type 'HighlightRendererState'.
56
+ // @ts-expect-error - TS2322 - Type '{ cachedHighlightRects: readonly Rect[]; tooltipIsHovered: boolean; }' is not assignable to type 'HighlightRendererState'.
57
57
  tooltipIsHovered: false,
58
58
  };
59
59
 
@@ -117,7 +117,7 @@ function addClientRectsForText(
117
117
  mutableRects: Array<Rect>,
118
118
  ): void {
119
119
  const parentElement = textNode.parentElement;
120
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'HTMLElement | null' is not assignable to parameter of type 'Element'.
120
+ // @ts-expect-error - TS2345 - Argument of type 'HTMLElement | null' is not assignable to parameter of type 'Element'.
121
121
  const computedStyle = window.getComputedStyle(parentElement);
122
122
 
123
123
  // NOTE(mdr): I'm not sure how computed line height works in all contexts
@@ -134,7 +134,7 @@ function addClientRectsForText(
134
134
  ) {
135
135
  const parsedLineHeight = parseFloat(computedStyle.lineHeight);
136
136
  if (!isNaN(parsedLineHeight)) {
137
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'number' is not assignable to type 'null'.
137
+ // @ts-expect-error - TS2322 - Type 'number' is not assignable to type 'null'.
138
138
  lineHeight = parsedLineHeight;
139
139
  }
140
140
  }