@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
@@ -29,24 +29,24 @@ const WrappedLine = function (
29
29
 
30
30
  // Add `wrapper` and `visibleShape`
31
31
  _.extend(
32
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
32
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
33
33
  this,
34
34
  graphie.fixedLine(initialStart, initialEnd, options.thickness),
35
35
  );
36
36
 
37
37
  if (options.interactiveKindForTesting) {
38
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
38
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
39
39
  this.wrapper.setAttribute(
40
40
  "data-interactive-kind-for-testing",
41
41
  options.interactiveKindForTesting,
42
42
  );
43
43
  }
44
44
 
45
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
45
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
46
46
  this.visibleShape.attr(options.normalStyle);
47
47
 
48
48
  // Save properties for computing transformations
49
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
49
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
50
50
  _.extend(this, {
51
51
  graphie: graphie,
52
52
  initialPoint: graphie.scalePoint(initialStart),
@@ -60,18 +60,18 @@ const WrappedLine = function (
60
60
  if (options.mouselayer) {
61
61
  // Disable browser handling of all panning and zooming gestures on the
62
62
  // movable wrapper so that when moved the browser does not scroll page
63
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
63
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
64
64
  this.wrapper.style.touchAction = "none";
65
65
 
66
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
66
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
67
67
  this.graphie.addToMouseLayerWrapper(this.wrapper);
68
68
  } else {
69
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
69
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
70
70
  this.graphie.addToVisibleLayerWrapper(this.wrapper);
71
71
  }
72
72
 
73
73
  // Move to argument points
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.moveTo(start, end);
76
76
  };
77
77
 
@@ -19,13 +19,13 @@ const WrappedPath = function (
19
19
 
20
20
  // Add `wrapper` and `visibleShape`
21
21
  _.extend(
22
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
22
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
23
23
  this,
24
24
  graphie.fixedPath(points, options.center, options.createPath),
25
25
  );
26
26
 
27
27
  // Add remaining properties
28
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
28
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
29
29
  _.extend(this, {
30
30
  graphie: graphie,
31
31
  initialPoint: graphie.scalePoint(_.head(points)),
@@ -35,13 +35,13 @@ const WrappedPath = function (
35
35
  if (options.mouselayer) {
36
36
  // Disable browser handling of all panning and zooming gestures on the
37
37
  // movable wrapper so that when moved the browser does not scroll page
38
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
38
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
39
39
  this.wrapper.style.touchAction = "none";
40
40
 
41
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
41
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
42
42
  this.graphie.addToMouseLayerWrapper(this.wrapper);
43
43
  } else {
44
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
44
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation. | TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
45
45
  this.graphie.addToVisibleLayerWrapper(this.wrapper);
46
46
  }
47
47
  };
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @khanacademy/ts-no-error-suppressions */
1
2
  /* eslint-disable react/no-unsafe */
2
3
  import * as PerseusLinter from "@khanacademy/perseus-linter";
3
4
  import $ from "jquery";
@@ -72,7 +73,7 @@ type SerializedState = {
72
73
  };
73
74
 
74
75
  class ItemRenderer extends React.Component<Props, State> {
75
- // @ts-expect-error [FEI-5003] - TS2564 - Property 'questionRenderer' has no initializer and is not definitely assigned in the constructor.
76
+ // @ts-expect-error - TS2564 - Property 'questionRenderer' has no initializer and is not definitely assigned in the constructor.
76
77
  questionRenderer: Renderer;
77
78
  hintsRenderer: React.ElementRef<typeof HintsRenderer> | null | undefined;
78
79
  _currentFocus: FocusPath;
@@ -206,7 +207,7 @@ class ItemRenderer extends React.Component<Props, State> {
206
207
  {...this.props.item.question}
207
208
  legacyPerseusLint={this.props.legacyPerseusLint}
208
209
  />,
209
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'Element' is not assignable to parameter of type 'HTMLElement'.
210
+ // @ts-expect-error - TS2345 - Argument of type 'Element' is not assignable to parameter of type 'HTMLElement'.
210
211
  workArea,
211
212
  );
212
213
 
@@ -215,14 +216,14 @@ class ItemRenderer extends React.Component<Props, State> {
215
216
  ref={(node) => (this.hintsRenderer = node)}
216
217
  hints={this.props.item.hints}
217
218
  hintsVisible={this.state.hintsVisible}
218
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.
219
+ // @ts-expect-error - TS2769 - No overload matches this call.
219
220
  apiOptions={apiOptions}
220
221
  linterContext={PerseusLinter.pushContextStack(
221
222
  this.props.linterContext,
222
223
  "hints",
223
224
  )}
224
225
  />,
225
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'Element' is not assignable to parameter of type 'HTMLElement'.
226
+ // @ts-expect-error - TS2345 - Argument of type 'Element' is not assignable to parameter of type 'HTMLElement'.
226
227
  hintsArea,
227
228
  );
228
229
 
@@ -459,7 +460,7 @@ class ItemRenderer extends React.Component<Props, State> {
459
460
  const qScore = this.questionRenderer.scoreWidgets();
460
461
  const qGuess = this.questionRenderer.getUserInputForWidgets();
461
462
  const state = this.questionRenderer.getSerializedState();
462
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'Partial<Record<string, KEScore>>' is not assignable to type '{ [id: string]: KEScore; }'. | TS2345 - Argument of type '{ [widgetId: string]: PerseusScore; }' is not assignable to parameter of type 'Partial<Record<string, { type: "invalid"; message?: string | null | undefined; suppressAlmostThere?: boolean | null | undefined; }>>'.
463
+ // @ts-expect-error - TS2322 - Type 'Partial<Record<string, KEScore>>' is not assignable to type '{ [id: string]: KEScore; }'. | TS2345 - Argument of type '{ [widgetId: string]: PerseusScore; }' is not assignable to parameter of type 'Partial<Record<string, { type: "invalid"; message?: string | null | undefined; suppressAlmostThere?: boolean | null | undefined; }>>'.
463
464
  return mapObject(qScore, (score, id) => {
464
465
  return Util.keScoreFromPerseusScore(score, qGuess[id], state[id]);
465
466
  });
@@ -92,7 +92,7 @@ export const change: ChangeFn = function (
92
92
  // Called with an object of multiple props to change
93
93
  callback = propValue;
94
94
  return _changeMultiple(
95
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
95
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
96
96
  this,
97
97
  newPropsOrSinglePropName, // object newProps
98
98
  callback,
@@ -101,7 +101,7 @@ export const change: ChangeFn = function (
101
101
  if (typeof newPropsOrSinglePropName === "string") {
102
102
  // Called with a string propName of a single prop to change
103
103
  return _changeSingle(
104
- // @ts-expect-error [FEI-5003] - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
104
+ // @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
105
105
  this,
106
106
  newPropsOrSinglePropName, // string propName
107
107
  propValue,
@@ -5,7 +5,7 @@ import WIDGET_PROP_DENYLIST from "./widget-prop-denylist";
5
5
  const EditorJsonify = {
6
6
  serialize: function (): any {
7
7
  // Omit props that get passed to all widgets
8
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'props' does not exist on type '{ readonly serialize: () => any; }'.
8
+ // @ts-expect-error - TS2339 - Property 'props' does not exist on type '{ readonly serialize: () => any; }'.
9
9
  return _.omit(this.props, WIDGET_PROP_DENYLIST);
10
10
  },
11
11
  } as const;
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @khanacademy/ts-no-error-suppressions */
1
2
  /**
2
3
  * A mixin that renders a custom software keypad in additional to the base
3
4
  * component. The base component will receive blur events when the keypad is
@@ -11,13 +12,13 @@
11
12
  */
12
13
 
13
14
  import {MobileKeypad} from "@khanacademy/math-input";
14
- import PropTypes from "prop-types";
15
15
  import * as React from "react";
16
16
  import ReactDOM from "react-dom";
17
17
 
18
18
  import reactRender from "../util/react-render";
19
19
 
20
20
  import type {APIOptions} from "../types";
21
+ import type {KeypadAPI} from "@khanacademy/math-input";
21
22
  import type {CSSProperties} from "aphrodite";
22
23
 
23
24
  export type KeypadProps = {
@@ -33,48 +34,44 @@ export type KeypadApiOptions = {
33
34
  nativeKeypadProxy: any;
34
35
  };
35
36
 
37
+ // This represents the shape of any component that uses this ProvideKeypad
38
+ // mixin.
39
+ type KeypadMixinHostComponent = {
40
+ _keypadContainer?: HTMLDivElement | null;
41
+ props: {
42
+ apiOptions: APIOptions;
43
+ blur?: () => void;
44
+ };
45
+ state: {
46
+ keypadElement: any | null;
47
+ };
48
+ };
49
+
36
50
  // NOTE: This is not a real component. It's a collection of methods used to
37
51
  // create and manage a Keypad instances.
38
52
  // TODO(LP-10789): replace this with a React Context object to pass information
39
53
  // between Perseus and the Keypad.
40
54
  const ProvideKeypad = {
41
- propTypes: {
42
- apiOptions: PropTypes.shape({
43
- customKeypad: PropTypes.bool,
44
- nativeKeypadProxy: PropTypes.func,
45
- }),
46
- // An Aphrodite style object, to be applied to the keypad container.
47
- // Note that, given our awkward structure of injecting the keypad, this
48
- // style won't be applied or updated dynamically. Rather, it will only
49
- // be applied in `componentDidMount`.
50
- keypadStyle: PropTypes.any,
51
- },
52
-
53
- getInitialState(): {
55
+ getInitialState(this: KeypadMixinHostComponent): {
54
56
  keypadElement: any | null;
55
57
  } {
56
58
  const _this = this;
57
- let keypadElement = null;
59
+ let keypadElement: KeypadAPI | null = null;
58
60
  if (
59
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'props' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
60
61
  _this.props.apiOptions &&
61
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'props' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
62
62
  _this.props.apiOptions.customKeypad &&
63
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'props' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
64
63
  _this.props.apiOptions.nativeKeypadProxy
65
64
  ) {
66
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'props' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
67
65
  keypadElement = _this.props.apiOptions.nativeKeypadProxy(
68
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'blur' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'. | TS2339 - Property 'blur' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
66
+ // @ts-expect-error - TS2339 - Property 'blur' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'. | TS2339 - Property 'blur' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
69
67
  () => _this.blur && _this.blur(),
70
68
  );
71
69
  }
72
70
  return {keypadElement};
73
71
  },
74
72
 
75
- componentDidMount() {
73
+ componentDidMount(this: KeypadMixinHostComponent) {
76
74
  const _this = this;
77
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'props' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
78
75
  const apiOptions: APIOptions = _this.props.apiOptions;
79
76
 
80
77
  if (
@@ -85,9 +82,7 @@ const ProvideKeypad = {
85
82
  // TODO(charlie): Render this and the wrapped component in the same
86
83
  // React tree. We may also want to add this keypad asynchronously
87
84
  // or on-demand in the future.
88
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_keypadContainer' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
89
85
  _this._keypadContainer = document.createElement("div");
90
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_keypadContainer' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
91
86
  document.body?.appendChild(_this._keypadContainer);
92
87
 
93
88
  reactRender(
@@ -96,49 +91,41 @@ const ProvideKeypad = {
96
91
  // NOTE(kevinb): The reason why this setState works is
97
92
  // b/c we're calling it manually from item-renderer.jsx
98
93
  // and we're manually setting the 'this' by using 'call'
99
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'setState' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
94
+ // @ts-expect-error - TS2339 - Property 'setState' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
100
95
  _this.setState({
101
96
  keypadElement: element,
102
97
  });
103
98
  }}
104
99
  onDismiss={() => {
105
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'blur' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'. | TS2339 - Property 'blur' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
100
+ // @ts-expect-error - TS2339 - Property 'blur' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'. | TS2339 - Property 'blur' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
106
101
  _this.blur && _this.blur();
107
102
  }}
108
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'props' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
103
+ // @ts-expect-error - TS2339 - Property 'props' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
109
104
  style={_this.props.keypadStyle}
110
105
  useV2Keypad={apiOptions.useV2Keypad}
111
106
  />,
112
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_keypadContainer' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
113
107
  _this._keypadContainer,
114
108
  );
115
109
  }
116
110
  },
117
111
 
118
- componentWillUnmount() {
112
+ componentWillUnmount(this: KeypadMixinHostComponent) {
119
113
  const _this = this;
120
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_keypadContainer' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
121
114
  if (_this._keypadContainer) {
122
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_keypadContainer' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
123
115
  ReactDOM.unmountComponentAtNode(_this._keypadContainer);
124
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_keypadContainer' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
125
116
  if (_this._keypadContainer.parentNode) {
126
117
  // Note ChildNode.remove() isn't available in older Android
127
118
  // webviews.
128
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_keypadContainer' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
129
119
  _this._keypadContainer.parentNode.removeChild(
130
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_keypadContainer' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
131
120
  _this._keypadContainer,
132
121
  );
133
122
  }
134
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_keypadContainer' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
135
123
  _this._keypadContainer = null;
136
124
  }
137
125
  },
138
126
 
139
- keypadElement(): any {
127
+ keypadElement(this: KeypadMixinHostComponent): any {
140
128
  const _this = this;
141
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'state' does not exist on type '{ readonly propTypes: { readonly apiOptions: React.PropType<{ customKeypad?: boolean | undefined; nativeKeypadProxy?: ((...a: readonly any[]) => unknown) | undefined; }>; readonly keypadStyle: Requireable<any>; }; readonly getInitialState: () => { ...; }; readonly componentDidMount: () => void; readonly componentWil...'.
142
129
  return _this.state.keypadElement;
143
130
  },
144
131
  } as const;
@@ -9,7 +9,7 @@ import WIDGET_PROP_DENYLIST from "./widget-prop-denylist";
9
9
  const WidgetJsonifyDeprecated = {
10
10
  getUserInput: function (): any {
11
11
  // Omit props that get passed to all widgets
12
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'props' does not exist on type '{ readonly getUserInput: () => any; readonly getUserInputFromProps: (props: any) => any; }'.
12
+ // @ts-expect-error - TS2339 - Property 'props' does not exist on type '{ readonly getUserInput: () => any; readonly getUserInputFromProps: (props: any) => any; }'.
13
13
  return _.omit(this.props, WIDGET_PROP_DENYLIST);
14
14
  },
15
15
 
@@ -217,7 +217,7 @@ const item: Item = treeToItem({
217
217
  describe("findContentNodesInItem", () => {
218
218
  it("calls the callback for each content node in the item", () => {
219
219
  const contents = [];
220
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'ContentNode' is not assignable to parameter of type 'never'.
220
+ // @ts-expect-error - TS2345 - Argument of type 'ContentNode' is not assignable to parameter of type 'never'.
221
221
  findContentNodesInItem(item, shape, (c) => contents.push(c));
222
222
  contents.sort();
223
223
  expect([
@@ -69,7 +69,7 @@ const renderSimpleQuestion = (question: Item) => {
69
69
  const _findWidgets = (
70
70
  renderer: MultiRenderer,
71
71
  filterCriterion: FilterCriterion,
72
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'Tree' is not generic.
72
+ // @ts-expect-error - TS2315 - Type 'Tree' is not generic.
73
73
  ): Tree<
74
74
  ReadonlyArray<Widget | null | undefined>,
75
75
  ReadonlyArray<Widget | null | undefined>,
@@ -144,7 +144,7 @@ describe("multi-item renderer", () => {
144
144
  userEvent.paste(screen.getByRole("textbox"), "+42"); // Correct
145
145
 
146
146
  // Act
147
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_getSerializedState' does not exist on type 'never'.
147
+ // @ts-expect-error - TS2339 - Property '_getSerializedState' does not exist on type 'never'.
148
148
  const state = renderer._getSerializedState(null);
149
149
 
150
150
  // Assert
@@ -277,7 +277,7 @@ describe("multi-item renderer", () => {
277
277
  userEvent.paste(screen.getByRole("textbox"), "99");
278
278
 
279
279
  // Act
280
- // @ts-expect-error [FEI-5003] - TS2339 - Property '_getSerializedState' does not exist on type 'never'.
280
+ // @ts-expect-error - TS2339 - Property '_getSerializedState' does not exist on type 'never'.
281
281
  const state = renderer._getSerializedState({
282
282
  blurb: "last blurb",
283
283
  hints: ["uno", "dos" /* intentionally not passing a third */],
@@ -528,7 +528,7 @@ describe("multi-item renderer", () => {
528
528
  } as const;
529
529
 
530
530
  // Act
531
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'restoreSerializedState' does not exist on type 'never'.
531
+ // @ts-expect-error - TS2339 - Property 'restoreSerializedState' does not exist on type 'never'.
532
532
  renderer.restoreSerializedState(state);
533
533
 
534
534
  // Assert
@@ -546,7 +546,7 @@ describe("multi-item renderer", () => {
546
546
  const callback = jest.fn();
547
547
 
548
548
  // Act
549
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'restoreSerializedState' does not exist on type 'never'.
549
+ // @ts-expect-error - TS2339 - Property 'restoreSerializedState' does not exist on type 'never'.
550
550
  renderer.restoreSerializedState(
551
551
  {
552
552
  blurb: {"mock-widget 1": 1},
@@ -594,7 +594,7 @@ describe("multi-item renderer", () => {
594
594
  userEvent.paste(screen.getByRole("textbox"), "-42"); // Correct
595
595
 
596
596
  // Act
597
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'getScores' does not exist on type 'never'.
597
+ // @ts-expect-error - TS2339 - Property 'getScores' does not exist on type 'never'.
598
598
  const score = renderer.getScores();
599
599
 
600
600
  // Assert
@@ -756,7 +756,7 @@ describe("multi-item renderer", () => {
756
756
  userEvent.paste(screen.getByRole("textbox"), "-42"); // Correct
757
757
 
758
758
  // Act
759
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'score' does not exist on type 'never'.
759
+ // @ts-expect-error - TS2339 - Property 'score' does not exist on type 'never'.
760
760
  const score = renderer.score();
761
761
 
762
762
  // Assert
@@ -66,7 +66,7 @@ describe("buildMapper", () => {
66
66
  it("calls the content mapper for each of the content nodes", () => {
67
67
  const calledWith = [];
68
68
  buildMapper()
69
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'unknown' is not assignable to parameter of type 'never'.
69
+ // @ts-expect-error - TS2345 - Argument of type 'unknown' is not assignable to parameter of type 'never'.
70
70
  .setContentMapper((c) => calledWith.push(c))
71
71
  .mapTree(tree, shape);
72
72
  calledWith.sort();
@@ -83,7 +83,7 @@ describe("buildMapper", () => {
83
83
  it("calls the hint mapper for each of the hint nodes", () => {
84
84
  const calledWith = [];
85
85
  buildMapper()
86
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'unknown' is not assignable to parameter of type 'never'.
86
+ // @ts-expect-error - TS2345 - Argument of type 'unknown' is not assignable to parameter of type 'never'.
87
87
  .setHintMapper((h) => calledWith.push(h))
88
88
  .mapTree(tree, shape);
89
89
  calledWith.sort();
@@ -110,9 +110,9 @@ describe("buildMapper", () => {
110
110
  TagsNode,
111
111
  string
112
112
  > = buildMapper()
113
- // @ts-expect-error [FEI-5003] - TS2571 - Object is of type 'unknown'.
113
+ // @ts-expect-error - TS2571 - Object is of type 'unknown'.
114
114
  .setContentMapper((c) => `mapped content: ${c.content || "<none>"}`)
115
- // @ts-expect-error [FEI-5003] - TS2571 - Object is of type 'unknown'.
115
+ // @ts-expect-error - TS2571 - Object is of type 'unknown'.
116
116
  .setHintMapper((h) => `mapped hint: ${h.content || "<none>"}`)
117
117
  .setTagsMapper((t) => `mapped tags: ${t.join(", ")}`);
118
118
  const result = mapper.mapTree(tree, shape);
@@ -188,7 +188,7 @@ describe("buildMapper", () => {
188
188
 
189
189
  const tree = {a: {b: {c: content(1)}}} as const;
190
190
 
191
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'TreeMapperJustForLeaves<ContentNode, string | null | undefined, unknown, unknown, unknown, unknown>' is not assignable to type 'TreeMapper<ContentNode, string | null | undefined, HintNode, HintNode, TagsNode, TagsNode>'.
191
+ // @ts-expect-error - TS2322 - Type 'TreeMapperJustForLeaves<ContentNode, string | null | undefined, unknown, unknown, unknown, unknown>' is not assignable to type 'TreeMapper<ContentNode, string | null | undefined, HintNode, HintNode, TagsNode, TagsNode>'.
192
192
  const mapper: TreeMapper<
193
193
  ContentNode,
194
194
  string | null | undefined,
@@ -212,7 +212,7 @@ describe("buildMapper", () => {
212
212
  array(array(content(2)), array(content(3), content(4))),
213
213
  );
214
214
 
215
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'TreeMapperJustForLeaves<ContentNode, string | null | undefined, unknown, unknown, unknown, unknown>' is not assignable to type 'TreeMapper<ContentNode, string | null | undefined, HintNode, HintNode, TagsNode, TagsNode>'.
215
+ // @ts-expect-error - TS2322 - Type 'TreeMapperJustForLeaves<ContentNode, string | null | undefined, unknown, unknown, unknown, unknown>' is not assignable to type 'TreeMapper<ContentNode, string | null | undefined, HintNode, HintNode, TagsNode, TagsNode>'.
216
216
  const mapper: TreeMapper<
217
217
  ContentNode,
218
218
  string | null | undefined,
@@ -234,7 +234,7 @@ describe("buildMapper", () => {
234
234
 
235
235
  const tree = array(array(), array(content(1)), array());
236
236
 
237
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'TreeMapperJustForLeaves<ContentNode, string | null | undefined, unknown, unknown, unknown, unknown>' is not assignable to type 'TreeMapper<ContentNode, string | null | undefined, HintNode, HintNode, TagsNode, TagsNode>'.
237
+ // @ts-expect-error - TS2322 - Type 'TreeMapperJustForLeaves<ContentNode, string | null | undefined, unknown, unknown, unknown, unknown>' is not assignable to type 'TreeMapper<ContentNode, string | null | undefined, HintNode, HintNode, TagsNode, TagsNode>'.
238
238
  const mapper: TreeMapper<
239
239
  ContentNode,
240
240
  string | null | undefined,
@@ -258,7 +258,7 @@ describe("buildMapper", () => {
258
258
 
259
259
  let wasCalled = false;
260
260
  let callArgs: Record<string, any> = {};
261
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'TreeMapperForLeavesAndCollections<unknown, any, unknown, unknown, unknown, unknown>' is not assignable to type 'TreeMapper<ContentNode, string | null | undefined, HintNode, HintNode, TagsNode, TagsNode>'.
261
+ // @ts-expect-error - TS2322 - Type 'TreeMapperForLeavesAndCollections<unknown, any, unknown, unknown, unknown, unknown>' is not assignable to type 'TreeMapper<ContentNode, string | null | undefined, HintNode, HintNode, TagsNode, TagsNode>'.
262
262
  const mapper: TreeMapper<
263
263
  ContentNode,
264
264
  string | null | undefined,
@@ -267,7 +267,7 @@ describe("buildMapper", () => {
267
267
  TagsNode,
268
268
  TagsNode
269
269
  > = buildMapper()
270
- // @ts-expect-error [FEI-5003] - TS2571 - Object is of type 'unknown'.
270
+ // @ts-expect-error - TS2571 - Object is of type 'unknown'.
271
271
  .setContentMapper((c) => c.content)
272
272
  .setArrayMapper((mappedArray, originalArray, shape, path) => {
273
273
  wasCalled = true;
@@ -288,11 +288,11 @@ describe("buildMapper", () => {
288
288
 
289
289
  it("uses the array mapper return value to construct the new tree", () => {
290
290
  const mapper = buildMapper()
291
- // @ts-expect-error [FEI-5003] - TS2571 - Object is of type 'unknown'.
291
+ // @ts-expect-error - TS2571 - Object is of type 'unknown'.
292
292
  .setContentMapper((c) => c.content)
293
- // @ts-expect-error [FEI-5003] - TS2571 - Object is of type 'unknown'.
293
+ // @ts-expect-error - TS2571 - Object is of type 'unknown'.
294
294
  .setHintMapper((h) => h.content)
295
- // @ts-expect-error [FEI-5003] - TS2571 - Object is of type 'unknown'.
295
+ // @ts-expect-error - TS2571 - Object is of type 'unknown'.
296
296
  .setTagsMapper((t) => t.join(", "))
297
297
  .setArrayMapper((mappedArray, originalArray, shape, path) => {
298
298
  return mappedArray.map((child) => `${String(child)} in array`);
@@ -37,10 +37,10 @@ export type HintNode = {
37
37
  };
38
38
  export type TagsNode = ReadonlyArray<string>;
39
39
 
40
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'ArrayNode' is not generic.
40
+ // @ts-expect-error - TS2315 - Type 'ArrayNode' is not generic.
41
41
  export type ItemArrayNode = ArrayNode<ContentNode, HintNode, TagsNode>;
42
42
  export type ItemObjectNode = ObjectNode<ContentNode, HintNode, TagsNode>;
43
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'Tree' is not generic.
43
+ // @ts-expect-error - TS2315 - Type 'Tree' is not generic.
44
44
  export type ItemTree = Tree<ContentNode, HintNode, TagsNode>;
45
45
 
46
46
  // TODO(jeremy): I think we could refine this root type for multi items. Right
@@ -66,7 +66,7 @@ export function buildEmptyItemTreeForShape(shape: Shape): ItemTree {
66
66
  return object;
67
67
  }
68
68
  throw new PerseusError(
69
- // @ts-expect-error [FEI-5003] - TS2339 - Property 'type' does not exist on type 'never'.
69
+ // @ts-expect-error - TS2339 - Property 'type' does not exist on type 'never'.
70
70
  `unexpected shape type ${shape.type}`,
71
71
  Errors.InvalidInput,
72
72
  );
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @khanacademy/ts-no-error-suppressions */
1
2
  /* eslint-disable react/no-unsafe */
2
3
  // TODO(mdr): There are some TypeScript errors in this file, and they're tricky, so
3
4
  // I'm skipping TypeScript errors for now.
@@ -61,7 +62,7 @@ type SerializedState = any; // TODO(mdr)
61
62
 
62
63
  type RendererProps = JSX.LibraryManagedAttributes<
63
64
  typeof Renderer,
64
- // @ts-expect-error [FEI-5003] - TS2344 - Type 'typeof Renderer' does not satisfy the constraint 'keyof IntrinsicElements | JSXElementConstructor<any>'.
65
+ // @ts-expect-error - TS2344 - Type 'typeof Renderer' does not satisfy the constraint 'keyof IntrinsicElements | JSXElementConstructor<any>'.
65
66
  React.ComponentProps<typeof Renderer>
66
67
  >;
67
68
 
@@ -81,7 +82,7 @@ type HintRendererData = {
81
82
  hint: Hint;
82
83
  };
83
84
  type RendererData = ContentRendererData | HintRendererData;
84
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'Tree' is not generic.
85
+ // @ts-expect-error - TS2315 - Type 'Tree' is not generic.
85
86
  type RendererDataTree = Tree<ContentRendererData, HintRendererData, null>;
86
87
 
87
88
  /**
@@ -92,11 +93,11 @@ type RendererDataTree = Tree<ContentRendererData, HintRendererData, null>;
92
93
  * really helping us out as I now have to suppress this rather than
93
94
  * get value from the type. :(
94
95
  */
95
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'Tree' is not generic.
96
+ // @ts-expect-error - TS2315 - Type 'Tree' is not generic.
96
97
  type RendererTree = Tree<ContentRendererElement, HintRendererElement, null>;
97
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'Tree' is not generic.
98
+ // @ts-expect-error - TS2315 - Type 'Tree' is not generic.
98
99
  type ScoreTree = Tree<Score, null, null>;
99
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'Tree' is not generic.
100
+ // @ts-expect-error - TS2315 - Type 'Tree' is not generic.
100
101
  type SerializedStateTree = Tree<SerializedState, null, null>;
101
102
 
102
103
  type Props = {
@@ -140,17 +141,17 @@ class MultiRenderer extends React.Component<Props, State> {
140
141
  super(props);
141
142
 
142
143
  this.rendererDataTreeMapper = buildMapper()
143
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'unknown' is not assignable to parameter of type 'ContentNode'.
144
+ // @ts-expect-error - TS2345 - Argument of type 'unknown' is not assignable to parameter of type 'ContentNode'.
144
145
  .setContentMapper((c, _, p) => this._makeContentRendererData(c, p))
145
- // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'unknown' is not assignable to parameter of type 'HintNode'.
146
+ // @ts-expect-error - TS2345 - Argument of type 'unknown' is not assignable to parameter of type 'HintNode'.
146
147
  .setHintMapper((h) => this._makeHintRendererData(h))
147
148
  .setTagsMapper((t) => null);
148
149
 
149
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'TreeMapperForLeavesAndCollections<unknown, any, unknown, any, unknown, unknown>' is not assignable to type 'TreeMapper<ContentRendererData, ContentRendererElement, HintRendererData, HintRendererElement, null, null>'.
150
+ // @ts-expect-error - TS2322 - Type 'TreeMapperForLeavesAndCollections<unknown, any, unknown, any, unknown, unknown>' is not assignable to type 'TreeMapper<ContentRendererData, ContentRendererElement, HintRendererData, HintRendererElement, null, null>'.
150
151
  this.getRenderersMapper = buildMapper()
151
- // @ts-expect-error [FEI-5003] - TS2571 - Object is of type 'unknown'.
152
+ // @ts-expect-error - TS2571 - Object is of type 'unknown'.
152
153
  .setContentMapper((c) => c.makeRenderer())
153
- // @ts-expect-error [FEI-5003] - TS2571 - Object is of type 'unknown'.
154
+ // @ts-expect-error - TS2571 - Object is of type 'unknown'.
154
155
  .setHintMapper((h) => h.makeRenderer())
155
156
  .setArrayMapper((renderers, data, shape) =>
156
157
  this._annotateRendererArray(
@@ -263,7 +264,7 @@ class MultiRenderer extends React.Component<Props, State> {
263
264
  * if this spread is including undocumented props so mapping
264
265
  * one to one could introduce a bug. Need to work out the exact
265
266
  * type for ContentNode and then fix this.
266
- */ // @ts-expect-error [FEI-5003] - TS2322 - Type '{ ref: (e: any) => any; findExternalWidgets: (criterion: any) => readonly (Widget | null | undefined)[]; serializedState: any; onSerializedStateUpdated: (state: any) => void; __type: "content" | "item"; ... 9 more ...; reviewMode?: boolean | ... 1 more ... | undefined; }' is not assignable to type 'InexactPartial<Pick<Readonly<Props> & Readonly<{ children?: ReactNode; }>, "content" | "images" | "onRender" | "linterContext" | "widgets" | "alwaysUpdate" | ... 6 more ... | "serializedState">>'.
267
+ */ // @ts-expect-error - TS2322 - Type '{ ref: (e: any) => any; findExternalWidgets: (criterion: any) => readonly (Widget | null | undefined)[]; serializedState: any; onSerializedStateUpdated: (state: any) => void; __type: "content" | "item"; ... 9 more ...; reviewMode?: boolean | ... 1 more ... | undefined; }' is not assignable to type 'InexactPartial<Pick<Readonly<Props> & Readonly<{ children?: ReactNode; }>, "content" | "images" | "onRender" | "linterContext" | "widgets" | "alwaysUpdate" | ... 6 more ... | "serializedState">>'.
267
268
  <Renderer
268
269
  {...this._getRendererProps()}
269
270
  {...content}
@@ -305,7 +306,7 @@ class MultiRenderer extends React.Component<Props, State> {
305
306
  makeRenderer: () => (
306
307
  <HintsRenderer
307
308
  {...this._getRendererProps()}
308
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.
309
+ // @ts-expect-error - TS2769 - No overload matches this call.
309
310
  findExternalWidgets={findExternalWidgets}
310
311
  hints={[hint]}
311
312
  />
@@ -360,7 +361,7 @@ class MultiRenderer extends React.Component<Props, State> {
360
361
  // eslint-disable-next-line no-restricted-syntax
361
362
  leafMapper: ContentMapper<RendererData, O> &
362
363
  HintMapper<RendererData, O>,
363
- // @ts-expect-error [FEI-5003] - TS2315 - Type 'Tree' is not generic.
364
+ // @ts-expect-error - TS2315 - Type 'Tree' is not generic.
364
365
  ): Tree<O, O, null> | null | undefined {
365
366
  const {rendererDataTree} = this.state;
366
367
 
@@ -505,7 +506,7 @@ class MultiRenderer extends React.Component<Props, State> {
505
506
  (renderers as any).firstN = (n: any) => (
506
507
  <HintsRenderer
507
508
  {...this._getRendererProps()}
508
- // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.
509
+ // @ts-expect-error - TS2769 - No overload matches this call.
509
510
  findExternalWidgets={
510
511
  hintRendererDatas[0]
511
512
  ? hintRendererDatas[0].findExternalWidgets