@khanacademy/perseus 7.2.1 → 9.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 (390) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/dist/article-renderer.d.ts +27 -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/dependencies.d.ts +7 -1
  7. package/dist/es/index.js +1205 -1218
  8. package/dist/es/index.js.map +1 -1
  9. package/dist/hints-renderer.d.ts +1 -1
  10. package/dist/index.js +1207 -1221
  11. package/dist/index.js.map +1 -1
  12. package/dist/interaction-tracker.d.ts +3 -3
  13. package/dist/item-renderer.d.ts +2 -1
  14. package/dist/mixins/provide-keypad.d.ts +15 -12
  15. package/dist/multi-items/multi-renderer.d.ts +2 -1
  16. package/dist/perseus-api.d.ts +2 -2
  17. package/dist/renderer.d.ts +1 -1
  18. package/dist/server-item-renderer.d.ts +3 -1
  19. package/dist/types.d.ts +32 -11
  20. package/dist/widgets/expression.d.ts +410 -13
  21. package/dist/widgets/graded-group.d.ts +3 -3
  22. package/dist/widgets/interactive-graph.d.ts +1 -1
  23. package/dist/widgets/sequence.d.ts +3 -3
  24. package/dist/widgets/table.d.ts +8 -1
  25. package/dist/widgets.d.ts +1 -1
  26. package/package.json +34 -34
  27. package/src/__stories__/article-renderer.stories.tsx +35 -2
  28. package/src/__testdata__/article-renderer.testdata.ts +74 -1
  29. package/src/__testdata__/item-renderer.testdata.ts +1 -1
  30. package/src/__testdata__/renderer.testdata.ts +1 -1
  31. package/src/__tests__/item-renderer.test.tsx +13 -2
  32. package/src/__tests__/mock-asset-loading-widget.tsx +1 -1
  33. package/src/__tests__/perseus-markdown.test.ts +17 -17
  34. package/src/__tests__/renderer-api.test.tsx +21 -21
  35. package/src/__tests__/renderer.test.tsx +13 -13
  36. package/src/__tests__/server-item-renderer.test.tsx +12 -4
  37. package/src/__tests__/tex-wrangler.test.ts +1 -1
  38. package/src/article-renderer.tsx +75 -66
  39. package/src/components/__tests__/number-input.test.tsx +4 -4
  40. package/src/components/__tests__/sortable.test.tsx +2 -2
  41. package/src/components/fixed-to-responsive.tsx +1 -1
  42. package/src/components/graph.tsx +11 -11
  43. package/src/components/graphie-classes.ts +7 -7
  44. package/src/components/graphie.tsx +14 -14
  45. package/src/components/highlighting/highlightable-content.tsx +1 -1
  46. package/src/components/highlighting/ui/highlight-renderer.tsx +1 -1
  47. package/src/components/highlighting/ui/util.ts +2 -2
  48. package/src/components/highlighting/word-indexer.tsx +4 -4
  49. package/src/components/icon.tsx +1 -1
  50. package/src/components/image-loader.tsx +4 -4
  51. package/src/components/input-with-examples.tsx +2 -2
  52. package/src/components/lint.tsx +1 -1
  53. package/src/components/math-input.tsx +5 -5
  54. package/src/components/math-output.tsx +1 -1
  55. package/src/components/multi-button-group.tsx +1 -1
  56. package/src/components/number-input.tsx +10 -10
  57. package/src/components/prop-check-box.tsx +1 -1
  58. package/src/components/simple-keypad-input.tsx +4 -4
  59. package/src/components/sortable.tsx +42 -41
  60. package/src/components/svg-image.tsx +12 -12
  61. package/src/components/tex-buttons.tsx +4 -3
  62. package/src/components/text-input.tsx +8 -8
  63. package/src/components/text-list-editor.tsx +11 -11
  64. package/src/components/visibility-observer/create-visibility-observer.ts +1 -1
  65. package/src/components/visibility-observer/visibility-observer.tsx +2 -2
  66. package/src/components/zoomable-tex.tsx +3 -3
  67. package/src/components/zoomable.tsx +8 -8
  68. package/src/dependencies.ts +16 -1
  69. package/src/hint-renderer.tsx +3 -3
  70. package/src/hints-renderer.tsx +11 -11
  71. package/src/init.ts +1 -1
  72. package/src/interaction-tracker.ts +7 -7
  73. package/src/interactive2/__tests__/movable-point.test.ts +1 -1
  74. package/src/interactive2/interactive-util.ts +6 -6
  75. package/src/interactive2/movable-helper-methods.ts +2 -2
  76. package/src/interactive2/movable-line-options.ts +37 -37
  77. package/src/interactive2/movable-line.ts +2 -2
  78. package/src/interactive2/movable-point-options.ts +29 -29
  79. package/src/interactive2/movable-point.tsx +2 -2
  80. package/src/interactive2/movable-polygon-options.ts +45 -45
  81. package/src/interactive2/movable-polygon.ts +2 -2
  82. package/src/interactive2/movable.ts +2 -2
  83. package/src/interactive2/objective_.ts +1 -1
  84. package/src/interactive2/wrapped-defaults.ts +2 -2
  85. package/src/interactive2/wrapped-ellipse.ts +9 -9
  86. package/src/interactive2/wrapped-line.ts +8 -8
  87. package/src/interactive2/wrapped-path.ts +5 -5
  88. package/src/item-renderer.tsx +66 -48
  89. package/src/mixins/changeable.ts +2 -2
  90. package/src/mixins/editor-jsonify.ts +1 -1
  91. package/src/mixins/provide-keypad.tsx +23 -37
  92. package/src/mixins/widget-jsonify-deprecated.ts +1 -1
  93. package/src/multi-items/__tests__/items.test.ts +1 -1
  94. package/src/multi-items/__tests__/multi-renderer.test.tsx +13 -8
  95. package/src/multi-items/__tests__/trees.test.ts +12 -12
  96. package/src/multi-items/item-types.ts +2 -2
  97. package/src/multi-items/items.ts +1 -1
  98. package/src/multi-items/multi-renderer.tsx +30 -18
  99. package/src/multi-items/prop-type-builders.ts +2 -2
  100. package/src/multi-items/tree-types.ts +4 -4
  101. package/src/multi-items/trees.ts +16 -16
  102. package/src/perseus-env.ts +2 -2
  103. package/src/perseus-markdown.tsx +5 -5
  104. package/src/renderer.tsx +39 -39
  105. package/src/server-item-renderer.tsx +26 -21
  106. package/src/sigfigs.ts +1 -1
  107. package/src/traversal.ts +1 -1
  108. package/src/types.ts +52 -16
  109. package/src/util/answer-types.ts +14 -14
  110. package/src/util/geometry.ts +7 -7
  111. package/src/util/graphie.ts +32 -32
  112. package/src/util/interactive.ts +118 -118
  113. package/src/util/math.ts +4 -4
  114. package/src/util/react-render.tsx +1 -1
  115. package/src/util/scroll-utils.ts +2 -2
  116. package/src/util/tex.ts +3 -3
  117. package/src/util.ts +15 -15
  118. package/src/widget-container.tsx +1 -1
  119. package/src/widgets/__stories__/definition.stories.tsx +8 -1
  120. package/src/widgets/__stories__/expression.stories.tsx +2 -2
  121. package/src/widgets/__stories__/test-keypad-context-wrapper.tsx +3 -3
  122. package/src/widgets/__testdata__/numeric-input.testdata.ts +1 -1
  123. package/src/widgets/__tests__/__snapshots__/video.test.ts.snap +2 -2
  124. package/src/widgets/__tests__/{expression.test.ts → expression.test.tsx} +77 -11
  125. package/src/widgets/__tests__/grapher.cypress.ts +32 -32
  126. package/src/widgets/__tests__/group.test.tsx +1 -1
  127. package/src/widgets/__tests__/interactive-graph.cypress.ts +40 -40
  128. package/src/widgets/__tests__/interactive-graph.test.ts +1 -1
  129. package/src/widgets/__tests__/numeric-input.test.ts +1 -1
  130. package/src/widgets/__tests__/passage.test.tsx +2 -2
  131. package/src/widgets/__tests__/plotter.test.tsx +2 -1
  132. package/src/widgets/__tests__/radio/base-radio.test.tsx +7 -7
  133. package/src/widgets/__tests__/renderQuestion.tsx +29 -21
  134. package/src/widgets/categorizer.tsx +4 -4
  135. package/src/widgets/cs-program.tsx +2 -2
  136. package/src/widgets/dropdown.tsx +1 -1
  137. package/src/widgets/expression.tsx +92 -57
  138. package/src/widgets/graded-group-set.tsx +5 -5
  139. package/src/widgets/graded-group.tsx +29 -21
  140. package/src/widgets/grapher/util.tsx +6 -6
  141. package/src/widgets/grapher.tsx +10 -10
  142. package/src/widgets/group.tsx +3 -3
  143. package/src/widgets/iframe.tsx +2 -2
  144. package/src/widgets/image.tsx +1 -1
  145. package/src/widgets/input-number.tsx +4 -4
  146. package/src/widgets/interaction.tsx +77 -77
  147. package/src/widgets/interactive-graph.tsx +109 -107
  148. package/src/widgets/label-image/marker.tsx +2 -2
  149. package/src/widgets/label-image.test.ts +1 -1
  150. package/src/widgets/label-image.tsx +7 -7
  151. package/src/widgets/lights-puzzle.tsx +2 -2
  152. package/src/widgets/matcher.tsx +6 -6
  153. package/src/widgets/matrix.tsx +20 -20
  154. package/src/widgets/measurer.tsx +3 -3
  155. package/src/widgets/molecule/__tests__/layout.test.ts +4 -4
  156. package/src/widgets/molecule/__tests__/parser.test.ts +14 -14
  157. package/src/widgets/molecule/smiles-parser.ts +3 -3
  158. package/src/widgets/molecule.tsx +4 -4
  159. package/src/widgets/number-line.tsx +11 -11
  160. package/src/widgets/numeric-input.tsx +11 -11
  161. package/src/widgets/orderer.tsx +38 -38
  162. package/src/widgets/passage/__tests__/passage-markdown.test.ts +1 -1
  163. package/src/widgets/passage/passage-markdown.tsx +4 -4
  164. package/src/widgets/passage-ref-target.tsx +1 -1
  165. package/src/widgets/passage-ref.tsx +4 -6
  166. package/src/widgets/passage.tsx +11 -11
  167. package/src/widgets/plotter.tsx +9 -9
  168. package/src/widgets/radio/base-radio.tsx +11 -11
  169. package/src/widgets/radio/choice-icon/choice-icon.tsx +2 -2
  170. package/src/widgets/radio/choice.tsx +1 -1
  171. package/src/widgets/radio/option-status.tsx +1 -1
  172. package/src/widgets/radio/widget.tsx +6 -6
  173. package/src/widgets/radio.ts +1 -1
  174. package/src/widgets/reaction-diagram.tsx +8 -8
  175. package/src/widgets/sequence.tsx +12 -4
  176. package/src/widgets/simulator.tsx +14 -14
  177. package/src/widgets/sorter.tsx +4 -4
  178. package/src/widgets/table.tsx +8 -8
  179. package/src/widgets/transformer.tsx +92 -92
  180. package/src/widgets/unit.tsx +17 -17
  181. package/src/widgets/video-transcript-link.test.tsx +3 -3
  182. package/src/widgets/video-transcript-link.tsx +1 -1
  183. package/src/widgets/video.tsx +1 -1
  184. package/src/widgets.ts +5 -5
  185. package/src/zoom.ts +22 -22
  186. package/tsconfig-build.tsbuildinfo +1 -1
  187. package/dist/a11y.js.flow +0 -11
  188. package/dist/all-widgets.js.flow +0 -33
  189. package/dist/article-renderer.js.flow +0 -73
  190. package/dist/asset-context.js.flow +0 -15
  191. package/dist/basic-widgets.js.flow +0 -33
  192. package/dist/components/button-group.js.flow +0 -33
  193. package/dist/components/constants.js.flow +0 -13
  194. package/dist/components/fixed-to-responsive.js.flow +0 -34
  195. package/dist/components/graph.js.flow +0 -66
  196. package/dist/components/graphie-classes.js.flow +0 -19
  197. package/dist/components/graphie-movables.js.flow +0 -22
  198. package/dist/components/graphie.js.flow +0 -69
  199. package/dist/components/highlighting/highlightable-content.js.flow +0 -56
  200. package/dist/components/highlighting/highlights.js.flow +0 -54
  201. package/dist/components/highlighting/ranges.js.flow +0 -60
  202. package/dist/components/highlighting/types.js.flow +0 -70
  203. package/dist/components/highlighting/ui/highlight-renderer.js.flow +0 -43
  204. package/dist/components/highlighting/ui/highlight-set-renderer.js.flow +0 -41
  205. package/dist/components/highlighting/ui/highlight-tooltip.js.flow +0 -22
  206. package/dist/components/highlighting/ui/highlighting-ui.js.flow +0 -30
  207. package/dist/components/highlighting/ui/selection-tracker.js.flow +0 -54
  208. package/dist/components/highlighting/ui/types.js.flow +0 -22
  209. package/dist/components/highlighting/ui/util.js.flow +0 -42
  210. package/dist/components/highlighting/word-indexer.js.flow +0 -21
  211. package/dist/components/hud.js.flow +0 -14
  212. package/dist/components/icon.js.flow +0 -31
  213. package/dist/components/image-loader.js.flow +0 -49
  214. package/dist/components/info-tip/info-tip.js.flow +0 -20
  215. package/dist/components/info-tip.js.flow +0 -18
  216. package/dist/components/inline-icon.js.flow +0 -39
  217. package/dist/components/input-with-examples.js.flow +0 -58
  218. package/dist/components/lint.js.flow +0 -58
  219. package/dist/components/math-input.js.flow +0 -49
  220. package/dist/components/math-output.js.flow +0 -33
  221. package/dist/components/multi-button-group.js.flow +0 -35
  222. package/dist/components/number-input.js.flow +0 -42
  223. package/dist/components/prop-check-box.js.flow +0 -8
  224. package/dist/components/range-input.js.flow +0 -20
  225. package/dist/components/simple-keypad-input.js.flow +0 -16
  226. package/dist/components/sortable.js.flow +0 -91
  227. package/dist/components/stub-tag-editor.js.flow +0 -18
  228. package/dist/components/svg-image.js.flow +0 -85
  229. package/dist/components/tex-buttons.js.flow +0 -26
  230. package/dist/components/tex.js.flow +0 -25
  231. package/dist/components/text-input.js.flow +0 -39
  232. package/dist/components/text-list-editor.js.flow +0 -22
  233. package/dist/components/tooltip.js.flow +0 -51
  234. package/dist/components/visibility-observer/create-visibility-observer.js.flow +0 -23
  235. package/dist/components/visibility-observer/get-scroll-parent.js.flow +0 -7
  236. package/dist/components/visibility-observer/visibility-observer.js.flow +0 -36
  237. package/dist/components/zoomable-tex.js.flow +0 -18
  238. package/dist/components/zoomable.js.flow +0 -70
  239. package/dist/components.js.flow +0 -22
  240. package/dist/definition-context.js.flow +0 -25
  241. package/dist/dependencies.js.flow +0 -9
  242. package/dist/error-boundary.js.flow +0 -19
  243. package/dist/extra-widgets.js.flow +0 -33
  244. package/dist/hint-renderer.js.flow +0 -32
  245. package/dist/hints-renderer.js.flow +0 -41
  246. package/dist/icon-paths.js.flow +0 -123
  247. package/dist/index.js.flow +0 -134
  248. package/dist/init.js.flow +0 -20
  249. package/dist/interaction-tracker.js.flow +0 -35
  250. package/dist/interactive2/interactive-util.js.flow +0 -50
  251. package/dist/interactive2/movable-helper-methods.js.flow +0 -15
  252. package/dist/interactive2/movable-line-options.js.flow +0 -44
  253. package/dist/interactive2/movable-line.js.flow +0 -8
  254. package/dist/interactive2/movable-point-options.js.flow +0 -44
  255. package/dist/interactive2/movable-point.js.flow +0 -8
  256. package/dist/interactive2/movable-polygon-options.js.flow +0 -47
  257. package/dist/interactive2/movable-polygon.js.flow +0 -8
  258. package/dist/interactive2/movable.js.flow +0 -8
  259. package/dist/interactive2/objective_.js.flow +0 -25
  260. package/dist/interactive2/types.js.flow +0 -8
  261. package/dist/interactive2/wrapped-defaults.js.flow +0 -11
  262. package/dist/interactive2/wrapped-ellipse.js.flow +0 -14
  263. package/dist/interactive2/wrapped-line.js.flow +0 -14
  264. package/dist/interactive2/wrapped-path.js.flow +0 -13
  265. package/dist/interactive2.js.flow +0 -16
  266. package/dist/item-renderer.js.flow +0 -132
  267. package/dist/item-version.js.flow +0 -11
  268. package/dist/jipt-paragraphs.js.flow +0 -14
  269. package/dist/loading-context.js.flow +0 -12
  270. package/dist/logging/log.js.flow +0 -62
  271. package/dist/mixins/changeable.js.flow +0 -33
  272. package/dist/mixins/editor-jsonify.js.flow +0 -10
  273. package/dist/mixins/provide-keypad.js.flow +0 -33
  274. package/dist/mixins/widget-jsonify-deprecated.js.flow +0 -11
  275. package/dist/mixins/widget-prop-denylist.js.flow +0 -20
  276. package/dist/multi-items/item-types.js.flow +0 -55
  277. package/dist/multi-items/items.js.flow +0 -66
  278. package/dist/multi-items/multi-renderer.js.flow +0 -213
  279. package/dist/multi-items/prop-type-builders.js.flow +0 -22
  280. package/dist/multi-items/shape-types.js.flow +0 -60
  281. package/dist/multi-items/shapes.js.flow +0 -25
  282. package/dist/multi-items/tree-types.js.flow +0 -45
  283. package/dist/multi-items/trees.js.flow +0 -147
  284. package/dist/multi-items.js.flow +0 -36
  285. package/dist/perseus-api.js.flow +0 -151
  286. package/dist/perseus-env.js.flow +0 -6
  287. package/dist/perseus-error.js.flow +0 -16
  288. package/dist/perseus-markdown.js.flow +0 -20
  289. package/dist/perseus-types.js.flow +0 -1041
  290. package/dist/question-paragraph.js.flow +0 -17
  291. package/dist/renderability.js.flow +0 -19
  292. package/dist/renderer.js.flow +0 -325
  293. package/dist/server-item-renderer.js.flow +0 -132
  294. package/dist/sigfigs.js.flow +0 -41
  295. package/dist/styles/constants.js.flow +0 -62
  296. package/dist/styles/global-constants.js.flow +0 -348
  297. package/dist/styles/global-styles.js.flow +0 -53
  298. package/dist/styles/media-queries.js.flow +0 -35
  299. package/dist/styles/shared.js.flow +0 -8
  300. package/dist/tex-wrangler.js.flow +0 -13
  301. package/dist/translation-linter.js.flow +0 -32
  302. package/dist/traversal.js.flow +0 -26
  303. package/dist/types.js.flow +0 -318
  304. package/dist/util/a11y.js.flow +0 -8
  305. package/dist/util/answer-types.js.flow +0 -49
  306. package/dist/util/colors.js.flow +0 -95
  307. package/dist/util/fix-passage-refs.js.flow +0 -8
  308. package/dist/util/geometry.js.flow +0 -37
  309. package/dist/util/graph-utils.js.flow +0 -9
  310. package/dist/util/graphie.js.flow +0 -8
  311. package/dist/util/interactive.js.flow +0 -11
  312. package/dist/util/katex-preprocess.js.flow +0 -12
  313. package/dist/util/math.js.flow +0 -62
  314. package/dist/util/mobile-native-utils.js.flow +0 -12
  315. package/dist/util/react-render.js.flow +0 -12
  316. package/dist/util/register-all-widgets-for-testing.js.flow +0 -7
  317. package/dist/util/scroll-utils.js.flow +0 -19
  318. package/dist/util/sizing-utils.js.flow +0 -20
  319. package/dist/util/tex.js.flow +0 -17
  320. package/dist/util/url-utils.js.flow +0 -11
  321. package/dist/util.graphie.js.flow +0 -14
  322. package/dist/util.js.flow +0 -319
  323. package/dist/version.js.flow +0 -17
  324. package/dist/widget-container.js.flow +0 -33
  325. package/dist/widgets/categorizer.js.flow +0 -70
  326. package/dist/widgets/cs-program.js.flow +0 -54
  327. package/dist/widgets/definition.js.flow +0 -57
  328. package/dist/widgets/dropdown.js.flow +0 -63
  329. package/dist/widgets/explanation.js.flow +0 -58
  330. package/dist/widgets/expression.js.flow +0 -116
  331. package/dist/widgets/graded-group-answer-bar.js.flow +0 -24
  332. package/dist/widgets/graded-group-set.js.flow +0 -65
  333. package/dist/widgets/graded-group.js.flow +0 -78
  334. package/dist/widgets/grapher/util.js.flow +0 -38
  335. package/dist/widgets/grapher.js.flow +0 -102
  336. package/dist/widgets/group.js.flow +0 -60
  337. package/dist/widgets/iframe.js.flow +0 -53
  338. package/dist/widgets/image.js.flow +0 -73
  339. package/dist/widgets/input-number.js.flow +0 -94
  340. package/dist/widgets/interaction/arrow-picker.js.flow +0 -21
  341. package/dist/widgets/interaction/color-picker.js.flow +0 -23
  342. package/dist/widgets/interaction/dash-picker.js.flow +0 -21
  343. package/dist/widgets/interaction/element-container.js.flow +0 -28
  344. package/dist/widgets/interaction.js.flow +0 -60
  345. package/dist/widgets/interactive-graph.js.flow +0 -239
  346. package/dist/widgets/label-image/answer-choices.js.flow +0 -55
  347. package/dist/widgets/label-image/marker.js.flow +0 -31
  348. package/dist/widgets/label-image/types.js.flow +0 -23
  349. package/dist/widgets/label-image.js.flow +0 -142
  350. package/dist/widgets/lights-puzzle.js.flow +0 -58
  351. package/dist/widgets/matcher.js.flow +0 -106
  352. package/dist/widgets/matrix.js.flow +0 -80
  353. package/dist/widgets/measurer.js.flow +0 -30
  354. package/dist/widgets/molecule/molecule-drawing.js.flow +0 -11
  355. package/dist/widgets/molecule/molecule-layout.js.flow +0 -96
  356. package/dist/widgets/molecule/smiles-parser.js.flow +0 -26
  357. package/dist/widgets/molecule.js.flow +0 -60
  358. package/dist/widgets/number-line.js.flow +0 -102
  359. package/dist/widgets/numeric-input.js.flow +0 -105
  360. package/dist/widgets/orderer.js.flow +0 -81
  361. package/dist/widgets/passage/passage-markdown.js.flow +0 -33
  362. package/dist/widgets/passage-ref-target.js.flow +0 -52
  363. package/dist/widgets/passage-ref.js.flow +0 -85
  364. package/dist/widgets/passage.js.flow +0 -157
  365. package/dist/widgets/plotter.js.flow +0 -112
  366. package/dist/widgets/radio/base-radio.js.flow +0 -50
  367. package/dist/widgets/radio/choice-a11y-text.js.flow +0 -14
  368. package/dist/widgets/radio/choice-icon/choice-icon.js.flow +0 -22
  369. package/dist/widgets/radio/choice-icon/cross-out-line.js.flow +0 -16
  370. package/dist/widgets/radio/choice-icon/shared-styles.js.flow +0 -11
  371. package/dist/widgets/radio/choice-none-above.js.flow +0 -16
  372. package/dist/widgets/radio/choice.js.flow +0 -29
  373. package/dist/widgets/radio/choice.jsx.fixture.js.flow +0 -7
  374. package/dist/widgets/radio/focus-ring.js.flow +0 -22
  375. package/dist/widgets/radio/option-status.js.flow +0 -16
  376. package/dist/widgets/radio/util.js.flow +0 -12
  377. package/dist/widgets/radio/widget.js.flow +0 -80
  378. package/dist/widgets/radio.js.flow +0 -31
  379. package/dist/widgets/reaction-diagram.js.flow +0 -46
  380. package/dist/widgets/sequence.js.flow +0 -53
  381. package/dist/widgets/simulator.js.flow +0 -107
  382. package/dist/widgets/sorter.js.flow +0 -102
  383. package/dist/widgets/table.js.flow +0 -67
  384. package/dist/widgets/transformer.js.flow +0 -127
  385. package/dist/widgets/unit.js.flow +0 -93
  386. package/dist/widgets/video-transcript-link.js.flow +0 -15
  387. package/dist/widgets/video.js.flow +0 -57
  388. package/dist/widgets.js.flow +0 -108
  389. package/dist/zoom.js.flow +0 -7
  390. package/src/multi-items/item-types.js.flow +0 -55
@@ -2,10 +2,10 @@ import type { APIOptions, Tracking } from "./types";
2
2
  /**
3
3
  * Wrapper for the trackInteraction apiOption.
4
4
  */
5
- declare class InteractionTracker {
5
+ declare class InteractionTracker<T> {
6
6
  _tracked: boolean;
7
7
  setting: Tracking;
8
- track: (extraData?: any) => void;
8
+ track: (extraData?: T) => void;
9
9
  trackApi: any;
10
10
  widgetID: string;
11
11
  widgetType: string;
@@ -18,6 +18,6 @@ declare class InteractionTracker {
18
18
  * @param extraData Any extra data to track about the event.
19
19
  * @private
20
20
  */
21
- _track: (extraData: Record<string, any>) => void;
21
+ _track: (extraData: T) => void;
22
22
  }
23
23
  export default InteractionTracker;
@@ -3,7 +3,7 @@ import HintsRenderer from "./hints-renderer";
3
3
  import Renderer from "./renderer";
4
4
  import type { KeypadProps } from "./mixins/provide-keypad";
5
5
  import type { PerseusItem } from "./perseus-types";
6
- import type { APIOptions, FocusPath, LinterContextProps } from "./types";
6
+ import type { APIOptions, FocusPath, LinterContextProps, PerseusDependenciesV2 } from "./types";
7
7
  import type { KEScore } from "@khanacademy/perseus-core";
8
8
  type Props = // These props are used by the ProvideKeypad mixin.
9
9
  KeypadProps & {
@@ -23,6 +23,7 @@ KeypadProps & {
23
23
  savedState: any;
24
24
  linterContext: LinterContextProps;
25
25
  legacyPerseusLint?: ReadonlyArray<string>;
26
+ dependencies: PerseusDependenciesV2;
26
27
  };
27
28
  type DefaultProps = {
28
29
  apiOptions: Props["apiOptions"];
@@ -9,7 +9,7 @@
9
9
  * `ItemRenderer` and friends are written as ES6 Classes, we can have them
10
10
  * extend a `ProvideKeypad` component instead of using this mixin.
11
11
  */
12
- import PropTypes from "prop-types";
12
+ import type { APIOptions } from "../types";
13
13
  import type { CSSProperties } from "aphrodite";
14
14
  export type KeypadProps = {
15
15
  keypadStyle?: CSSProperties;
@@ -18,19 +18,22 @@ export type KeypadApiOptions = {
18
18
  customKeypad: boolean;
19
19
  nativeKeypadProxy: any;
20
20
  };
21
- declare const ProvideKeypad: {
22
- readonly propTypes: {
23
- readonly apiOptions: PropTypes.Requireable<PropTypes.InferProps<{
24
- customKeypad: PropTypes.Requireable<boolean>;
25
- nativeKeypadProxy: PropTypes.Requireable<(...args: any[]) => any>;
26
- }>>;
27
- readonly keypadStyle: PropTypes.Requireable<any>;
21
+ type KeypadMixinHostComponent = {
22
+ _keypadContainer?: HTMLDivElement | null;
23
+ props: {
24
+ apiOptions: APIOptions;
25
+ blur?: () => void;
26
+ };
27
+ state: {
28
+ keypadElement: any | null;
28
29
  };
29
- readonly getInitialState: () => {
30
+ };
31
+ declare const ProvideKeypad: {
32
+ readonly getInitialState: (this: KeypadMixinHostComponent) => {
30
33
  keypadElement: any | null;
31
34
  };
32
- readonly componentDidMount: () => void;
33
- readonly componentWillUnmount: () => void;
34
- readonly keypadElement: () => any;
35
+ readonly componentDidMount: (this: KeypadMixinHostComponent) => void;
36
+ readonly componentWillUnmount: (this: KeypadMixinHostComponent) => void;
37
+ readonly keypadElement: (this: KeypadMixinHostComponent) => any;
35
38
  };
36
39
  export default ProvideKeypad;
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import Renderer from "../renderer";
3
3
  import type { Widget } from "../renderer";
4
- import type { APIOptions, FilterCriterion } from "../types";
4
+ import type { APIOptions, FilterCriterion, PerseusDependenciesV2 } from "../types";
5
5
  import type { Item, ContentNode, HintNode, TagsNode } from "./item-types";
6
6
  import type { Shape, ArrayShape } from "./shape-types";
7
7
  import type { Tree } from "./tree-types";
@@ -47,6 +47,7 @@ type Props = {
47
47
  onInteractWithWidget?: (id: string) => void;
48
48
  apiOptions?: APIOptions;
49
49
  reviewMode?: boolean | null | undefined;
50
+ dependencies: PerseusDependenciesV2;
50
51
  };
51
52
  type State = {
52
53
  rendererDataTree: RendererDataTree | null | undefined;
@@ -83,10 +83,10 @@ export declare const ApiOptions: {
83
83
  type: string;
84
84
  id: string;
85
85
  correct?: boolean | undefined;
86
- } & Record<string, unknown>) => void) | undefined;
86
+ } & Partial<import("./types").TrackingGradedGroupExtraArguments> & Partial<import("./types").TrackingSequenceExtraArguments>) => void) | undefined;
87
87
  customKeypad?: boolean | undefined;
88
88
  useV2Keypad?: boolean | undefined;
89
- nativeKeypadProxy?: (() => unknown) | undefined;
89
+ nativeKeypadProxy?: ((blur: () => void) => import("@khanacademy/math-input").KeypadAPI) | undefined;
90
90
  isMobile?: boolean | undefined;
91
91
  setDrawingAreaAvailable?: ((arg1: boolean) => unknown) | undefined;
92
92
  useDraftEditor?: boolean | undefined;
@@ -93,7 +93,7 @@ declare class Renderer extends React.Component<Props, State> {
93
93
  _currentFocus: FocusPath | null | undefined;
94
94
  _foundTextNodes: boolean;
95
95
  _interactionTrackers: {
96
- [id: string]: InteractionTracker;
96
+ [id: string]: InteractionTracker<any>;
97
97
  };
98
98
  _isMounted: boolean;
99
99
  _isTwoColumn: boolean;
@@ -9,7 +9,7 @@
9
9
  import * as React from "react";
10
10
  import Renderer from "./renderer";
11
11
  import type { KeypadProps } from "./mixins/provide-keypad";
12
- import type { APIOptions, FocusPath } from "./types";
12
+ import type { APIOptions, FocusPath, PerseusDependenciesV2 } from "./types";
13
13
  import type { RendererInterface, KEScore } from "@khanacademy/perseus-core";
14
14
  type OwnProps = // These props are used by the ProvideKeypad mixin.
15
15
  KeypadProps & {
@@ -22,6 +22,7 @@ KeypadProps & {
22
22
  problemNum?: number;
23
23
  reviewMode?: boolean;
24
24
  keypadElement?: any | null | undefined;
25
+ dependencies: PerseusDependenciesV2;
25
26
  };
26
27
  type HOCProps = {
27
28
  onRendered: (isRendered: boolean) => void;
@@ -110,5 +111,6 @@ declare const ref: React.ForwardRefExoticComponent<Omit<KeypadProps & {
110
111
  problemNum?: number | undefined;
111
112
  reviewMode?: boolean | undefined;
112
113
  keypadElement?: any | null | undefined;
114
+ dependencies: PerseusDependenciesV2;
113
115
  } & HOCProps, "onRendered"> & React.RefAttributes<ServerItemRenderer>>;
114
116
  export default ref;
package/dist/types.d.ts CHANGED
@@ -1,12 +1,14 @@
1
- import * as React from "react";
2
1
  import type { SerializedHighlightSet } from "./components/highlighting/types";
3
2
  import type { ILogger } from "./logging/log";
4
3
  import type { Item } from "./multi-items/item-types";
5
4
  import type { PerseusWidget } from "./perseus-types";
6
5
  import type { SizeClass } from "./util/sizing-utils";
7
- import type { SendEventFn } from "@khanacademy/perseus-core";
6
+ import type { KeypadAPI } from "@khanacademy/math-input";
7
+ import type { AnalyticsEventHandlerFn } from "@khanacademy/perseus-core";
8
8
  import type { Result } from "@khanacademy/wonder-blocks-data";
9
+ import type * as React from "react";
9
10
  export type FocusPath = ReadonlyArray<string> | null | undefined;
11
+ type Empty = Record<never, never>;
10
12
  export type Dimensions = {
11
13
  width?: number;
12
14
  height?: number;
@@ -74,6 +76,11 @@ export type ImageUploader = (file: string, callback: (url: string) => unknown) =
74
76
  export type WidgetSize = "normal" | "small" | "mini";
75
77
  export type Path = ReadonlyArray<string>;
76
78
  type StubTagEditorType = any;
79
+ type TrackInteractionArgs = {
80
+ type: string;
81
+ id: string;
82
+ correct?: boolean;
83
+ } & Partial<TrackingGradedGroupExtraArguments> & Partial<TrackingSequenceExtraArguments>;
77
84
  export type APIOptions = Readonly<{
78
85
  isArticle?: boolean;
79
86
  onInputError?: (widgetId: any, value: string, message?: string | null | undefined) => unknown;
@@ -91,14 +98,10 @@ export type APIOptions = Readonly<{
91
98
  Link: React.ComponentType<any>;
92
99
  };
93
100
  imagePreloader?: (dimensions: Dimensions) => React.ReactNode;
94
- trackInteraction?: (args: {
95
- type: string;
96
- id: string;
97
- correct?: boolean;
98
- } & Record<string, unknown>) => void;
101
+ trackInteraction?: (args: TrackInteractionArgs) => void;
99
102
  customKeypad?: boolean;
100
103
  useV2Keypad?: boolean;
101
- nativeKeypadProxy?: () => unknown;
104
+ nativeKeypadProxy?: (blur: () => void) => KeypadAPI;
102
105
  isMobile?: boolean;
103
106
  setDrawingAreaAvailable?: (arg1: boolean) => unknown;
104
107
  useDraftEditor?: boolean;
@@ -160,7 +163,6 @@ export type PerseusDependencies = {
160
163
  TeX: React.ComponentType<TeXProps>;
161
164
  staticUrl: StaticUrlFn;
162
165
  InitialRequestUrl: InitialRequestUrlInterface;
163
- analytics: SendEventFn;
164
166
  useVideo(id: string, kind: VideoKind): Result<{
165
167
  video: VideoData | null | undefined;
166
168
  }>;
@@ -169,6 +171,19 @@ export type PerseusDependencies = {
169
171
  kaLocale: string;
170
172
  isMobile: boolean;
171
173
  };
174
+ /**
175
+ * The modern iteration of Perseus Depedndencies. These dependencies are
176
+ * provided to Perseus through its entrypoints (for example:
177
+ * ServerItemRenderer) and then attached to the DependenciesContext so they are
178
+ * available anywhere down the React render tree.
179
+ *
180
+ * Prefer using this type over `PerseusDependencies` when possible.
181
+ */
182
+ export type PerseusDependenciesV2 = {
183
+ analytics: {
184
+ onAnalyticsEvent: AnalyticsEventHandlerFn;
185
+ };
186
+ };
172
187
  export type APIOptionsWithDefaults = Readonly<APIOptions & {
173
188
  GroupMetadataEditor: NonNullable<APIOptions["GroupMetadataEditor"]>;
174
189
  baseElements: NonNullable<APIOptions["baseElements"]>;
@@ -194,6 +209,12 @@ export type LinterContextProps = {
194
209
  stack: ReadonlyArray<string>;
195
210
  };
196
211
  export type Tracking = "" | "all";
212
+ export type TrackingGradedGroupExtraArguments = {
213
+ status: "correct" | "incorrect" | "invalid";
214
+ };
215
+ export type TrackingSequenceExtraArguments = {
216
+ visible: number;
217
+ };
197
218
  export type Alignment = "default" | "block" | "inline-block" | "inline" | "float-left" | "float-right" | "full-width";
198
219
  type WidgetOptions = any;
199
220
  export type WidgetTransform = (arg1: WidgetOptions, problemNumber?: number) => any;
@@ -219,7 +240,7 @@ export type WidgetExports<T extends React.ComponentType<any> = React.ComponentTy
219
240
  }>;
220
241
  export type WidgetInfo = PerseusWidget;
221
242
  export type FilterCriterion = string | ((id: string, widgetInfo: WidgetInfo, widget?: Widget | null | undefined) => boolean);
222
- export type WidgetProps<RenderProps, Rubric> = RenderProps & {
243
+ export type WidgetProps<RenderProps, Rubric, TrackingExtraArgs = Empty> = RenderProps & {
223
244
  widgetId: string;
224
245
  alignment: string | null | undefined;
225
246
  static: boolean | null | undefined;
@@ -232,7 +253,7 @@ export type WidgetProps<RenderProps, Rubric> = RenderProps & {
232
253
  findWidgets: (arg1: FilterCriterion) => ReadonlyArray<Widget>;
233
254
  reviewModeRubric: Rubric;
234
255
  onChange: ChangeHandler;
235
- trackInteraction: (extraData?: any) => void;
256
+ trackInteraction: (extraData?: TrackingExtraArgs) => void;
236
257
  isLastUsedWidget: boolean;
237
258
  linterContext: LinterContextProps;
238
259
  containerSizeClass: SizeClass;