@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
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
- };