@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
package/dist/a11y.js.flow DELETED
@@ -1,11 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- /**
8
- * Identifies whether or not a given perseus item requires the use of a mouse
9
- * or screen, based on the widgets it contains.
10
- */
11
- declare export function violatingWidgets(itemData: any): any;
@@ -1,33 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- import * as $Flowgen$Import$react from "react";
8
- import * as $Flowgen$Import$_2e__2f_types from "./types";
9
- declare var _default: $ReadOnlyArray<
10
- $ReadOnly<{|
11
- name: string,
12
- displayName: string,
13
- getWidget?: (() => $Flowgen$Import$react.ComponentType<any>) | void,
14
- accessible?: boolean | ((props: any) => boolean) | void,
15
- hidden?: boolean | void,
16
- version?: $Flowgen$Import$_2e__2f_types.Version | void,
17
- supportedAlignments?: $ReadOnlyArray<$Flowgen$Import$_2e__2f_types.Alignment> | void,
18
- defaultAlignment?: $Flowgen$Import$_2e__2f_types.Alignment | void,
19
- getDefaultAlignment?:
20
- | (() => $Flowgen$Import$_2e__2f_types.Alignment)
21
- | void,
22
- isLintable?: boolean | void,
23
- tracking?: $Flowgen$Import$_2e__2f_types.Tracking | void,
24
- traverseChildWidgets?: any,
25
- transform?: $Flowgen$Import$_2e__2f_types.WidgetTransform | void,
26
- staticTransform?: $Flowgen$Import$_2e__2f_types.WidgetTransform | void,
27
- propUpgrades?: {
28
- [key: string]: (arg1: any) => any,
29
- } | void,
30
- widget: $Flowgen$Import$react.ComponentType<any>,
31
- |}>
32
- >;
33
- declare export default typeof _default;
@@ -1,73 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- import PropTypes from "prop-types";
8
- import * as React from "react";
9
- declare class ArticleRenderer extends React.Component<any, any> {
10
- _currentFocus: any;
11
- static propTypes: {|
12
- apiOptions: PropTypes.Requireable<
13
- PropTypes.InferProps<{|
14
- onFocusChange: PropTypes.Requireable<(...args: any[]) => any>,
15
- isMobile: PropTypes.Requireable<boolean>,
16
- |}>
17
- >,
18
- json: PropTypes.Validator<
19
- $NonMaybeType<
20
- $NonMaybeType<
21
- | PropTypes.InferProps<{|
22
- content: PropTypes.Requireable<string>,
23
- widgets: PropTypes.Requireable<{
24
- [x: string]: any,
25
- }>,
26
- images: PropTypes.Requireable<{
27
- [x: string]: any,
28
- }>,
29
- |}>
30
- | (PropTypes.InferProps<{|
31
- content: PropTypes.Requireable<string>,
32
- widgets: PropTypes.Requireable<{
33
- [x: string]: any,
34
- }>,
35
- images: PropTypes.Requireable<{
36
- [x: string]: any,
37
- }>,
38
- |}> | null | void)[]
39
- | null
40
- | void
41
- >
42
- >
43
- >,
44
-
45
- /**
46
- * @deprecated Does nothing
47
- */
48
- useNewStyles: PropTypes.Requireable<boolean>,
49
- linterContext: PropTypes.Requireable<
50
- PropTypes.InferProps<{|
51
- contentType: PropTypes.Requireable<string>,
52
- highlightLint: PropTypes.Requireable<boolean>,
53
- paths: PropTypes.Requireable<(string | null | void)[]>,
54
- stack: PropTypes.Requireable<(string | null | void)[]>,
55
- |}>
56
- >,
57
- legacyPerseusLint: PropTypes.Requireable<(string | null | void)[]>,
58
- keypadStyle: PropTypes.Requireable<any>,
59
- |};
60
- static defaultProps: any;
61
- constructor(props: any): this;
62
- componentDidMount(): void;
63
- shouldComponentUpdate(nextProps: any, nextState: any): any;
64
- componentWillUnmount(): void;
65
- keypadElement: () => void;
66
- _handleFocusChange: (arg1: any, arg2: any) => void;
67
- _setCurrentFocus: (arg1: any) => void;
68
- _onRendererBlur: (arg1: any) => void;
69
- blur: () => void;
70
- _sections: () => any;
71
- render(): React.Node;
72
- }
73
- declare export default typeof ArticleRenderer;
@@ -1,15 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- import * as React from "react";
8
- declare type Context = {|
9
- assetStatuses: {
10
- [assetKey: string]: boolean,
11
- },
12
- setAssetStatus: (assetKey: string, loaded: boolean) => void,
13
- |};
14
- declare var context: React.Context<Context>;
15
- declare export default typeof context;
@@ -1,33 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- import * as $Flowgen$Import$react from "react";
8
- import * as $Flowgen$Import$_2e__2f_types from "./types";
9
- declare var _default: $ReadOnlyArray<
10
- $ReadOnly<{|
11
- name: string,
12
- displayName: string,
13
- getWidget?: (() => $Flowgen$Import$react.ComponentType<any>) | void,
14
- accessible?: boolean | ((props: any) => boolean) | void,
15
- hidden?: boolean | void,
16
- version?: $Flowgen$Import$_2e__2f_types.Version | void,
17
- supportedAlignments?: $ReadOnlyArray<$Flowgen$Import$_2e__2f_types.Alignment> | void,
18
- defaultAlignment?: $Flowgen$Import$_2e__2f_types.Alignment | void,
19
- getDefaultAlignment?:
20
- | (() => $Flowgen$Import$_2e__2f_types.Alignment)
21
- | void,
22
- isLintable?: boolean | void,
23
- tracking?: $Flowgen$Import$_2e__2f_types.Tracking | void,
24
- traverseChildWidgets?: any,
25
- transform?: $Flowgen$Import$_2e__2f_types.WidgetTransform | void,
26
- staticTransform?: $Flowgen$Import$_2e__2f_types.WidgetTransform | void,
27
- propUpgrades?: {
28
- [key: string]: (arg1: any) => any,
29
- } | void,
30
- widget: $Flowgen$Import$react.ComponentType<any>,
31
- |}>
32
- >;
33
- declare export default typeof _default;
@@ -1,33 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- import * as React from "react";
8
- declare type Props = {|
9
- value: any,
10
- buttons: $ReadOnlyArray<{|
11
- value: any,
12
- content: React.Node,
13
- title?: string,
14
- |}>,
15
- onChange: (value?: any) => mixed,
16
- allowEmpty: boolean,
17
- |};
18
- declare type DefaultProps = {|
19
- allowEmpty: $PropertyType<Props, "allowEmpty">,
20
- value: $PropertyType<Props, "value">,
21
- |};
22
- /**
23
- * ButtonGroup is an aesthetically pleasing group of buttons.
24
- */
25
- declare class ButtonGroup extends React.Component<Props> {
26
- container: HTMLDivElement | null | void;
27
- static defaultProps: DefaultProps;
28
- componentWillUnmount(): void;
29
- focus(): void | boolean;
30
- toggleSelect(newValue: any): void;
31
- render(): React.Node;
32
- }
33
- declare export default typeof ButtonGroup;
@@ -1,13 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- declare export var devices: {|
8
- +PHONE: "phone",
9
- +TABLET: "tablet",
10
- +DESKTOP: "desktop",
11
- |};
12
- declare export var lintGutterWidth: 36;
13
- declare export var perseusFrameBorderWidth: 1;
@@ -1,34 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- import * as React from "react";
8
- declare type Props = {|
9
- width: number,
10
- height: number,
11
- children: React.Node,
12
- className?: string,
13
- constrainHeight?: boolean,
14
- allowFullBleed?: boolean,
15
- |};
16
- declare type DefaultProps = {|
17
- className: $PropertyType<Props, "className">,
18
- constrainHeight: $PropertyType<Props, "constrainHeight">,
19
- allowFullBleed: $PropertyType<Props, "allowFullBleed">,
20
- |};
21
- declare type State = {|
22
- viewportHeight: number | null,
23
- viewportWidth: number | null,
24
- |};
25
- declare class FixedToResponsive extends React.Component<Props, State> {
26
- _isMounted: boolean;
27
- static defaultProps: DefaultProps;
28
- state: State;
29
- componentDidMount(): void;
30
- componentWillUnmount(): void;
31
- _cacheViewportSize: () => void;
32
- render(): React$Node;
33
- }
34
- declare export default typeof FixedToResponsive;
@@ -1,66 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- import * as React from "react";
8
- import type { Coord } from "../interactive2/types";
9
- import type { PerseusImageBackground } from "../perseus-types";
10
- declare type Props = {|
11
- box: $ReadOnly<[number, number]>,
12
- labels: $ReadOnlyArray<string>,
13
- range: $ReadOnly<[Coord, Coord]>,
14
- step: $ReadOnly<[number, number]>,
15
- gridStep: $ReadOnly<[number, number]>,
16
- snapStep: $ReadOnly<[number, number]>,
17
- markings: string,
18
- backgroundImage: PerseusImageBackground,
19
- showProtractor: boolean,
20
- showRuler: boolean,
21
- rulerLabel: string,
22
- rulerTicks: number,
23
- instructions?: string,
24
- isMobile: boolean,
25
- onGraphieUpdated?: (graphie: any) => void,
26
- onClick?: (Coord: any) => void,
27
- onMouseDown?: (Coord: any) => void,
28
- onMouseUp?: (Coord: any) => void,
29
- onMouseMove?: (Coord: any) => void,
30
- setDrawingAreaAvailable?: (boolean: any) => void,
31
- |};
32
- declare type DefaultProps = {|
33
- labels: $PropertyType<Props, "labels">,
34
- range: $PropertyType<Props, "range">,
35
- step: $PropertyType<Props, "step">,
36
- gridStep: $PropertyType<Props, "gridStep">,
37
- snapStep: $PropertyType<Props, "snapStep">,
38
- markings: $PropertyType<Props, "markings">,
39
- backgroundImage: $PropertyType<Props, "backgroundImage">,
40
- showProtractor: $PropertyType<Props, "showProtractor">,
41
- showRuler: $PropertyType<Props, "showRuler">,
42
- rulerLabel: $PropertyType<Props, "rulerLabel">,
43
- rulerTicks: $PropertyType<Props, "rulerTicks">,
44
- isMobile: $PropertyType<Props, "isMobile">,
45
- |};
46
- declare class Graph extends React.Component<Props> {
47
- protractor: any;
48
- ruler: any;
49
- _graphie: any;
50
- _hasSetupGraphieThisUpdate: boolean;
51
- _shouldSetupGraphie: boolean;
52
- static defaultProps: DefaultProps;
53
- componentDidMount(): void;
54
- UNSAFE_componentWillReceiveProps(nextProps: any): void;
55
- componentDidUpdate(): void;
56
- reset: () => void;
57
- graphie: () => any;
58
- pointsFromNormalized: (arg1: any, arg2: any) => any;
59
- _setupGraphie: (arg1: any) => void;
60
- _getGridConfig: () => any;
61
- _updateProtractor: () => void;
62
- _updateRuler: () => void;
63
- toJSON: () => any;
64
- render(): React.Node;
65
- }
66
- declare export default typeof Graph;
@@ -1,19 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- /**
8
- * A base class for all Graphie Movables
9
- *
10
- * Used for checking that all Graphie children are, in fact,
11
- * GraphieMovables
12
- */
13
- declare function GraphieMovable(descriptor: any): void;
14
- declare var _default: {|
15
- GraphieMovable: typeof GraphieMovable,
16
- createClass: (spec: any) => any,
17
- createSimpleClass: (addFunction: any) => any,
18
- |};
19
- declare export default typeof _default;
@@ -1,22 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- declare var _default: {|
8
- Arc: any,
9
- Circle: any,
10
- Label: any,
11
- Line: any,
12
- MovableLine: any,
13
- MovablePoint: any,
14
- Parabola: any,
15
- Path: any,
16
- Plot: any,
17
- PlotParametric: any,
18
- Point: any,
19
- Sinusoid: any,
20
- Rect: any,
21
- |};
22
- declare export default typeof _default;
@@ -1,69 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- import * as React from "react";
8
- import type { Coord } from "../interactive2/types";
9
- import type { Range, Size } from "../perseus-types";
10
- declare type Props = {|
11
- addMouseLayer?: boolean,
12
- box: Size,
13
- range: [Coord, Coord],
14
- ranges?: [Range, Range],
15
- gridStep?: [number, number],
16
- step?: [number, number],
17
- scale?: [number, number],
18
- isMobile?: boolean,
19
- responsive?: boolean,
20
- children?: React.Node,
21
- options: any,
22
- setDrawingAreaAvailable?: (boolean: any) => void,
23
- setup: (
24
- graphie: any,
25
- options: {|
26
- range: [Coord, Coord],
27
- scale: [number, number],
28
- |}
29
- ) => void,
30
- onClick?: (at: Coord) => void,
31
- onMouseDown?: (at: Coord) => void,
32
- onMouseMove?: (at: Coord) => void,
33
- onMouseUp?: (at: Coord) => void,
34
- |};
35
- declare type DefaultProps = {|
36
- range: $PropertyType<Props, "range">,
37
- options: $PropertyType<Props, "options">,
38
- responsive: $PropertyType<Props, "responsive">,
39
- addMouseLayer: $PropertyType<Props, "addMouseLayer">,
40
- |};
41
- declare class Graphie extends React.Component<Props> {
42
- graphieDivRef: React.RefObject<HTMLDivElement>;
43
- static defaultProps: DefaultProps;
44
- componentDidMount(): void;
45
- shouldComponentUpdate(nextProps: Props): boolean;
46
- componentDidUpdate(prevProps: Props): void;
47
-
48
- /**
49
- * Allow parents of the <Graphie> component to grab a reference to the
50
- * underlying graphie object using
51
- * `this.refs.graphieComponent.getGraphie()`
52
- *
53
- * This shouldn't be necessary for 90% of cases, but the power is there.
54
- * Use it for good and not evil.
55
- */
56
- getGraphie: () => any;
57
- _range: () => [Coord, Coord];
58
- _box: () => Size;
59
- _scale: () => $ReadOnlyArray<number>;
60
- _setupGraphie: () => void;
61
- _removeMovables: () => void;
62
- _renderMovables: (
63
- children: $ReadOnlyArray<any>,
64
- arg2: any
65
- ) => React.Element<any>;
66
- _updateMovables: () => void;
67
- render(): React.Node;
68
- }
69
- declare export default typeof Graphie;
@@ -1,56 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- import * as React from "react";
8
- import type {
9
- DOMHighlight,
10
- DOMHighlightSet,
11
- SerializedHighlightSet,
12
- DOMRange,
13
- } from "./types";
14
- declare type Props = {|
15
- children?: React.Element<any>,
16
- editable: boolean,
17
- enabled: boolean,
18
- onSerializedHighlightsUpdate: (
19
- serializedHighlights: SerializedHighlightSet
20
- ) => mixed,
21
- serializedHighlights: SerializedHighlightSet,
22
- |};
23
- declare type State = {|
24
- wordRanges: $ReadOnlyArray<DOMRange>,
25
- |};
26
- declare class HighlightableContent extends React.PureComponent<Props, State> {
27
- _container: HTMLElement | null | void;
28
- _content: HTMLElement | null | void;
29
- state: State;
30
- _buildHighlight(highlightRange: DOMRange): DOMHighlight | null | void;
31
-
32
- /**
33
- * Take the highlights from props, and deserialize them into DOMHighlights,
34
- * according to the latest cache of word ranges.
35
- */
36
- _getDOMHighlights(): DOMHighlightSet;
37
-
38
- /**
39
- * Add the given DOMHighlight to the current set.
40
- */
41
- _handleAddHighlight: (highlight: DOMHighlight) => void;
42
-
43
- /**
44
- * Remove the given highlight from the list, and call our callback with the
45
- * new set of highlights.
46
- */
47
- _handleRemoveHighlight: (keyToRemove: string) => void;
48
-
49
- /**
50
- * When our WordIndexer sends us a new cache of word ranges, store it in
51
- * our component state.
52
- */
53
- _handleWordsUpdate: (wordRanges: $ReadOnlyArray<DOMRange>) => void;
54
- render(): React.Node;
55
- }
56
- declare export default typeof HighlightableContent;
@@ -1,54 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- import type {
8
- DOMHighlight,
9
- DOMHighlightSet,
10
- SerializedHighlight,
11
- DOMRange,
12
- } from "./types";
13
-
14
- /**
15
- * Given a list of DOMHighlights, return a new list that also includes the
16
- * given DOMRange as a new DOMHighlight. If the DOMHighlight intersects
17
- * existing DOMHighlights, the other Highlights are removed and their ranges
18
- * are merged into the new DOMHighlight.
19
- */
20
- declare export function addHighlight(
21
- existingHighlights: DOMHighlightSet,
22
- newHighlight: DOMHighlight
23
- ): DOMHighlightSet;
24
-
25
- /**
26
- * Given a DOMRange and a list of word ranges, build a corresponding
27
- * DOMHighlight.
28
- *
29
- * If the DOMRange is not a valid highlight given the word ranges, return null.
30
- */
31
- declare export function buildHighlight(
32
- existingHighlights: DOMHighlightSet,
33
- wordRanges: $ReadOnlyArray<DOMRange>,
34
- newHighlightRange: DOMRange
35
- ): DOMHighlight | null | void;
36
-
37
- /**
38
- * Given a SerializedHightlight and the current set of word ranges, return a
39
- * DOMHighlight representing the SerializedHighlight.
40
- *
41
- * If the SerializedHighlight is not valid given the list of word ranges, throw
42
- * an error.
43
- */
44
- declare export function deserializeHighlight(
45
- serializedHighlight: SerializedHighlight,
46
- wordRanges: $ReadOnlyArray<DOMRange>
47
- ): DOMHighlight;
48
-
49
- /**
50
- * Return a SerializedHighlight representing the given DOMHighlight.
51
- */
52
- declare export function serializeHighlight(
53
- highlight: DOMHighlight
54
- ): SerializedHighlight;
@@ -1,60 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- import type { DOMRange } from "./types";
8
-
9
- /**
10
- * Given two DOMRanges, return a DOMRange whose start point comes from A, and
11
- * whose end point comes from B.
12
- */
13
- declare export function spanRanges(a: DOMRange, b: DOMRange): DOMRange;
14
-
15
- /**
16
- * Given two DOMRanges, return whether they overlap.
17
- *
18
- * We here treat ranges like closed intervals: the boundary points are
19
- * considered to be included in the range, and, if a ends exactly where b
20
- * starts, they are considered to overlap.
21
- */
22
- declare export function rangesOverlap(a: DOMRange, b: DOMRange): boolean;
23
-
24
- /**
25
- * Given two DOMRanges, return whether the first includes the second: whether
26
- * all points that B contains are also contained by A.
27
- */
28
- declare export function rangeIncludes(a: DOMRange, b: DOMRange): boolean;
29
-
30
- /**
31
- * Given two DOMRanges, intersect them: return a range that contains all points
32
- * that both A contains and B contains, and contains no other points.
33
- *
34
- * If A and B do not overlap, no intersection exists; return null.
35
- */
36
- declare export function intersectRanges(
37
- a: DOMRange,
38
- b: DOMRange
39
- ): DOMRange | null | void;
40
-
41
- /**
42
- * Given two DOMRanges, union them: return a range that contains all points
43
- * that either A contains or B contains, and contains no other points.
44
- *
45
- * If A and B do not overlap, no union exists; return null.
46
- */
47
- declare export function unionRanges(
48
- a: DOMRange,
49
- b: DOMRange
50
- ): DOMRange | null | void;
51
-
52
- /**
53
- * Given a list of word ranges, and a selection range, binary search the list
54
- * and return the indexes of the first and last words that the selection
55
- * intersects, or `null` if the range includes no words.
56
- */
57
- declare export function findFirstAndLastWordIndexes(
58
- selectionRange: DOMRange,
59
- wordRanges: $ReadOnlyArray<DOMRange>
60
- ): [number, number] | null | void;
@@ -1,70 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- /**
8
- * A range of highlightable content, defined relative to the current DOM.
9
- *
10
- * This is actually just the built-in DOM type Range, aliased for consistency
11
- * with DOMHighlight and SerializedHighlight.
12
- * https://developer.mozilla.org/en-US/docs/Web/API/Range
13
- *
14
- * A DOMRange is inherently coupled to a particular DOM session, and must be
15
- * serialized into a SerializedRange before being persisted.
16
- */
17
- export type DOMRange = Range;
18
- /**
19
- * A range of highlightable content, serialized into a DOM-independent format
20
- * so that it can be restored in subsequent browser sessions.
21
- *
22
- * We currently serialize ranges by the index of the first highlighted word and
23
- * index of the last highlighted word, each with respect to the full body of
24
- * the highlightable content.
25
- *
26
- * TODO(mdr): Word index serialization is fragile in environments where the
27
- * highlightable content is liable to change. Currently, our only call
28
- * sites is the test prep app, which saves Perseus state against a
29
- * particular *version* of a Perseus item, so it's impossible for the
30
- * content to change - but, if we try to generalize further, we'll need to
31
- * create new types of range serialization that are more robust to change.
32
- * (Maybe some quoted text, and we scan the content for matches?)
33
- *
34
- * Note, too, that changes to the definition of "word" are liable to break
35
- * already-persisted word-index ranges, too. If we significantly change the
36
- * definition, we should consider adding a versioning field here - even if
37
- * we don't support *all* historical word implementations, we still might
38
- * want to hide old highlights altogether if our word definition has
39
- * changed sufficiently radically.
40
- */
41
- export type SerializedRange = {|
42
- type: "word-indexes",
43
- firstWordIndex: number,
44
- lastWordIndex: number,
45
- |};
46
- /**
47
- * A highlight, defined relative to the current DOM.
48
- *
49
- * A DOMHighlight, by depending on DOMRange, is inherently coupled to a
50
- * particular DOM session, and must be serialized into a SerializedRange before
51
- * being persisted.
52
- */
53
- export type DOMHighlight = {|
54
- firstWordIndex: number,
55
- lastWordIndex: number,
56
- domRange: DOMRange,
57
- |};
58
- export type DOMHighlightSet = {
59
- [key: string]: DOMHighlight,
60
- };
61
- /**
62
- * A highlight, serialized into a DOM-independent format so that it can be
63
- * restored in subsequent browser sessions.
64
- */
65
- export type SerializedHighlight = {|
66
- range: SerializedRange,
67
- |};
68
- export type SerializedHighlightSet = {
69
- [key: string]: SerializedHighlight,
70
- };