@khanacademy/perseus-editor 1.1.1 → 2.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 (312) hide show
  1. package/.babelrc.js +1 -1
  2. package/.eslintrc.js +1 -0
  3. package/CHANGELOG.md +14 -0
  4. package/dist/all-editors.d.ts +2 -0
  5. package/dist/all-editors.js.flow +8 -0
  6. package/dist/all-widgets.d.ts +22 -0
  7. package/dist/all-widgets.js.flow +34 -0
  8. package/dist/article-editor.d.ts +59 -0
  9. package/dist/article-editor.js.flow +72 -0
  10. package/dist/components/blur-input.d.ts +19 -0
  11. package/dist/components/blur-input.js.flow +25 -0
  12. package/dist/components/checkbox.d.ts +20 -0
  13. package/dist/components/checkbox.js.flow +26 -0
  14. package/dist/components/device-framer.d.ts +15 -0
  15. package/dist/components/device-framer.js.flow +20 -0
  16. package/dist/components/drag-target.d.ts +2 -0
  17. package/dist/components/drag-target.js.flow +8 -0
  18. package/dist/components/dropdown-option.d.ts +35 -0
  19. package/dist/components/dropdown-option.js.flow +49 -0
  20. package/dist/components/form-wrapped-text-field.d.ts +48 -0
  21. package/dist/components/form-wrapped-text-field.js.flow +48 -0
  22. package/dist/components/graph-settings.d.ts +2 -0
  23. package/dist/components/graph-settings.js.flow +8 -0
  24. package/dist/components/hover-behavior.d.ts +85 -0
  25. package/dist/components/hover-behavior.js.flow +48 -0
  26. package/dist/components/json-editor.d.ts +2 -0
  27. package/dist/components/json-editor.js.flow +8 -0
  28. package/dist/components/link.d.ts +41 -0
  29. package/dist/components/link.js.flow +50 -0
  30. package/dist/components/simple-button.d.ts +16 -0
  31. package/dist/components/simple-button.js.flow +18 -0
  32. package/dist/components/sortable.d.ts +2 -0
  33. package/dist/components/sortable.js.flow +8 -0
  34. package/dist/components/util.d.ts +1 -0
  35. package/dist/components/util.js.flow +9 -0
  36. package/dist/components/viewport-resizer.d.ts +16 -0
  37. package/dist/components/viewport-resizer.js.flow +22 -0
  38. package/dist/diffs/__stories__/perseus-diff-wrapper.d.ts +5 -0
  39. package/dist/diffs/__stories__/perseus-diff-wrapper.js.flow +11 -0
  40. package/dist/diffs/article-diff.d.ts +50 -0
  41. package/dist/diffs/article-diff.js.flow +71 -0
  42. package/dist/diffs/item-diff.d.ts +23 -0
  43. package/dist/diffs/item-diff.js.flow +41 -0
  44. package/dist/diffs/renderer-diff.d.ts +22 -0
  45. package/dist/diffs/renderer-diff.js.flow +25 -0
  46. package/dist/diffs/split-diff.d.ts +2 -0
  47. package/dist/diffs/split-diff.js.flow +8 -0
  48. package/dist/diffs/string-array-diff.d.ts +2 -0
  49. package/dist/diffs/string-array-diff.js.flow +11 -0
  50. package/dist/diffs/structured-item-diff.d.ts +25 -0
  51. package/dist/diffs/structured-item-diff.js.flow +37 -0
  52. package/dist/diffs/tags-diff.d.ts +21 -0
  53. package/dist/diffs/tags-diff.js.flow +24 -0
  54. package/dist/diffs/text-diff.d.ts +15 -0
  55. package/dist/diffs/text-diff.js.flow +21 -0
  56. package/dist/diffs/widget-diff-performer.d.ts +2 -0
  57. package/dist/diffs/widget-diff-performer.js.flow +8 -0
  58. package/dist/diffs/widget-diff.d.ts +21 -0
  59. package/dist/diffs/widget-diff.js.flow +31 -0
  60. package/dist/editor-page.d.ts +57 -0
  61. package/dist/editor-page.js.flow +73 -0
  62. package/dist/editor.d.ts +82 -0
  63. package/dist/editor.js.flow +98 -0
  64. package/dist/es/index.js +1428 -2587
  65. package/dist/es/index.js.map +1 -1
  66. package/dist/hint-editor.d.ts +64 -0
  67. package/dist/hint-editor.js.flow +87 -0
  68. package/dist/i18n.d.ts +7 -0
  69. package/dist/i18n.js.flow +13 -0
  70. package/dist/iframe-content-renderer.d.ts +22 -0
  71. package/dist/iframe-content-renderer.js.flow +28 -0
  72. package/dist/index.d.ts +17 -2
  73. package/dist/index.js +1492 -2548
  74. package/dist/index.js.flow +23 -2
  75. package/dist/index.js.map +1 -1
  76. package/dist/item-editor.d.ts +36 -0
  77. package/dist/item-editor.js.flow +46 -0
  78. package/dist/item-extras-editor.d.ts +17 -0
  79. package/dist/item-extras-editor.js.flow +23 -0
  80. package/dist/katex-error-view.d.ts +16 -0
  81. package/dist/katex-error-view.js.flow +24 -0
  82. package/dist/multirenderer-editor.d.ts +32 -0
  83. package/dist/multirenderer-editor.js.flow +46 -0
  84. package/dist/section-control-button.d.ts +12 -0
  85. package/dist/section-control-button.js.flow +20 -0
  86. package/dist/stateful-article-editor.d.ts +10 -0
  87. package/dist/stateful-article-editor.js.flow +16 -0
  88. package/dist/stateful-editor-page.d.ts +2 -0
  89. package/dist/stateful-editor-page.js.flow +8 -0
  90. package/dist/testing-widgets.d.ts +22 -0
  91. package/dist/testing-widgets.js.flow +34 -0
  92. package/dist/util/register-all-widgets-and-editors-for-testing.d.ts +1 -0
  93. package/dist/util/register-all-widgets-and-editors-for-testing.js.flow +7 -0
  94. package/dist/widgets/categorizer-editor.d.ts +47 -0
  95. package/dist/widgets/categorizer-editor.js.flow +61 -0
  96. package/dist/widgets/cs-program-editor.d.ts +21 -0
  97. package/dist/widgets/cs-program-editor.js.flow +25 -0
  98. package/dist/widgets/definition-editor.d.ts +17 -0
  99. package/dist/widgets/definition-editor.js.flow +23 -0
  100. package/dist/widgets/dropdown-editor.d.ts +23 -0
  101. package/dist/widgets/dropdown-editor.js.flow +37 -0
  102. package/dist/widgets/example-graphie-widget-editor.d.ts +18 -0
  103. package/dist/widgets/example-graphie-widget-editor.js.flow +25 -0
  104. package/dist/widgets/example-graphie-widget.d.ts +87 -0
  105. package/dist/widgets/example-graphie-widget.js.flow +101 -0
  106. package/dist/widgets/example-widget-editor.d.ts +19 -0
  107. package/dist/widgets/example-widget-editor.js.flow +26 -0
  108. package/dist/widgets/example-widget.d.ts +71 -0
  109. package/dist/widgets/example-widget.js.flow +86 -0
  110. package/dist/widgets/explanation-editor.d.ts +21 -0
  111. package/dist/widgets/explanation-editor.js.flow +27 -0
  112. package/dist/widgets/expression-editor.d.ts +33 -0
  113. package/dist/widgets/expression-editor.js.flow +41 -0
  114. package/dist/widgets/graded-group-editor.d.ts +53 -0
  115. package/dist/widgets/graded-group-editor.js.flow +67 -0
  116. package/dist/widgets/graded-group-set-editor.d.ts +51 -0
  117. package/dist/widgets/graded-group-set-editor.js.flow +65 -0
  118. package/dist/widgets/grapher-editor.d.ts +14 -0
  119. package/dist/widgets/grapher-editor.js.flow +21 -0
  120. package/dist/widgets/group-editor.d.ts +49 -0
  121. package/dist/widgets/group-editor.js.flow +63 -0
  122. package/dist/widgets/iframe-editor.d.ts +18 -0
  123. package/dist/widgets/iframe-editor.js.flow +24 -0
  124. package/dist/widgets/image-editor.d.ts +2 -0
  125. package/dist/widgets/image-editor.js.flow +8 -0
  126. package/dist/widgets/input-number-editor.d.ts +47 -0
  127. package/dist/widgets/input-number-editor.js.flow +77 -0
  128. package/dist/widgets/interaction/constraint-editor.d.ts +26 -0
  129. package/dist/widgets/interaction/constraint-editor.js.flow +35 -0
  130. package/dist/widgets/interaction-editor.d.ts +28 -0
  131. package/dist/widgets/interaction-editor.js.flow +36 -0
  132. package/dist/widgets/interactive-graph-editor.d.ts +2 -0
  133. package/dist/widgets/interactive-graph-editor.js.flow +8 -0
  134. package/dist/widgets/label-image/answer-choices.d.ts +13 -0
  135. package/dist/widgets/label-image/answer-choices.js.flow +16 -0
  136. package/dist/widgets/label-image/behavior.d.ts +14 -0
  137. package/dist/widgets/label-image/behavior.js.flow +17 -0
  138. package/dist/widgets/label-image/marker.d.ts +30 -0
  139. package/dist/widgets/label-image/marker.js.flow +34 -0
  140. package/dist/widgets/label-image/question-markers.d.ts +22 -0
  141. package/dist/widgets/label-image/question-markers.js.flow +25 -0
  142. package/dist/widgets/label-image/select-image.d.ts +10 -0
  143. package/dist/widgets/label-image/select-image.js.flow +13 -0
  144. package/dist/widgets/label-image-editor.d.ts +45 -0
  145. package/dist/widgets/label-image-editor.js.flow +44 -0
  146. package/dist/widgets/lights-puzzle-editor.d.ts +24 -0
  147. package/dist/widgets/lights-puzzle-editor.js.flow +34 -0
  148. package/dist/widgets/matcher-editor.d.ts +19 -0
  149. package/dist/widgets/matcher-editor.js.flow +28 -0
  150. package/dist/widgets/matrix-editor.d.ts +20 -0
  151. package/dist/widgets/matrix-editor.js.flow +26 -0
  152. package/dist/widgets/measurer-editor.d.ts +32 -0
  153. package/dist/widgets/measurer-editor.js.flow +42 -0
  154. package/dist/widgets/molecule-editor.d.ts +17 -0
  155. package/dist/widgets/molecule-editor.js.flow +23 -0
  156. package/dist/widgets/number-line-editor.d.ts +36 -0
  157. package/dist/widgets/number-line-editor.js.flow +45 -0
  158. package/dist/widgets/numeric-input-editor.d.ts +2 -0
  159. package/dist/widgets/numeric-input-editor.js.flow +8 -0
  160. package/dist/widgets/orderer-editor.d.ts +20 -0
  161. package/dist/widgets/orderer-editor.js.flow +30 -0
  162. package/dist/widgets/passage-editor.d.ts +18 -0
  163. package/dist/widgets/passage-editor.js.flow +24 -0
  164. package/dist/widgets/passage-ref-editor.d.ts +11 -0
  165. package/dist/widgets/passage-ref-editor.js.flow +17 -0
  166. package/dist/widgets/passage-ref-target-editor.d.ts +16 -0
  167. package/dist/widgets/passage-ref-target-editor.js.flow +22 -0
  168. package/dist/widgets/plotter-editor.d.ts +45 -0
  169. package/dist/widgets/plotter-editor.js.flow +53 -0
  170. package/dist/widgets/radio/editor.d.ts +64 -0
  171. package/dist/widgets/radio/editor.js.flow +80 -0
  172. package/dist/widgets/reaction-diagram-editor.d.ts +20 -0
  173. package/dist/widgets/reaction-diagram-editor.js.flow +26 -0
  174. package/dist/widgets/sequence-editor.d.ts +56 -0
  175. package/dist/widgets/sequence-editor.js.flow +72 -0
  176. package/dist/widgets/simple-markdown-tester-editor.d.ts +14 -0
  177. package/dist/widgets/simple-markdown-tester-editor.js.flow +23 -0
  178. package/dist/widgets/simple-markdown-tester.d.ts +52 -0
  179. package/dist/widgets/simple-markdown-tester.js.flow +61 -0
  180. package/dist/widgets/simulator-editor.d.ts +20 -0
  181. package/dist/widgets/simulator-editor.js.flow +26 -0
  182. package/dist/widgets/sorter-editor.d.ts +16 -0
  183. package/dist/widgets/sorter-editor.js.flow +22 -0
  184. package/dist/widgets/table-editor.d.ts +18 -0
  185. package/dist/widgets/table-editor.js.flow +24 -0
  186. package/dist/widgets/transformer-editor.d.ts +11 -0
  187. package/dist/widgets/transformer-editor.js.flow +17 -0
  188. package/dist/widgets/unit-editor.d.ts +33 -0
  189. package/dist/widgets/unit-editor.js.flow +41 -0
  190. package/dist/widgets/video-editor.d.ts +19 -0
  191. package/dist/widgets/video-editor.js.flow +25 -0
  192. package/package.json +6 -5
  193. package/src/__stories__/{editor.stories.js → editor.stories.tsx} +4 -5
  194. package/src/__stories__/{section-control-button.stories.jsx → section-control-button.stories.tsx} +10 -11
  195. package/src/__testdata__/{input-number_testdata.js → input-number.testdata.ts} +2 -3
  196. package/src/__tests__/{editor_test.jsx → editor.test.tsx} +4 -7
  197. package/src/__tests__/{i18n_test.jsx → i18n.test.ts} +5 -5
  198. package/src/__tests__/{traversal_test.jsx → traversal.test.ts} +9 -10
  199. package/src/{all-editors_test.js → all-editors.test.ts} +1 -2
  200. package/src/all-editors.ts +83 -0
  201. package/src/all-widgets.ts +7 -0
  202. package/src/{article-editor.jsx → article-editor.tsx} +52 -42
  203. package/src/components/__stories__/{blur-input.stories.jsx → blur-input.stories.tsx} +2 -4
  204. package/src/components/{blur-input.jsx → blur-input.tsx} +12 -13
  205. package/src/components/{checkbox.jsx → checkbox.tsx} +18 -19
  206. package/src/components/{device-framer.jsx → device-framer.tsx} +4 -5
  207. package/src/components/{drag-target.jsx → drag-target.tsx} +0 -1
  208. package/src/components/{dropdown-option.jsx → dropdown-option.tsx} +40 -40
  209. package/src/components/{form-wrapped-text-field.jsx → form-wrapped-text-field.tsx} +47 -53
  210. package/src/components/{graph-settings.jsx → graph-settings.tsx} +4 -8
  211. package/src/components/{hover-behavior.jsx → hover-behavior.ts} +32 -33
  212. package/src/components/{json-editor.jsx → json-editor.tsx} +4 -3
  213. package/src/components/{link.jsx → link.ts} +33 -33
  214. package/src/components/{simple-button.jsx → simple-button.tsx} +3 -4
  215. package/src/components/{sortable.jsx → sortable.tsx} +3 -3
  216. package/src/components/{util.js → util.ts} +1 -2
  217. package/src/components/{viewport-resizer.jsx → viewport-resizer.tsx} +5 -6
  218. package/src/diffs/__stories__/{perseus-diff-wrapper.jsx → perseus-diff-wrapper.tsx} +3 -2
  219. package/src/diffs/__stories__/{structured-item-diff.stories.jsx → structured-item-diff.stories.tsx} +27 -22
  220. package/src/diffs/__stories__/{tags-diff.stories.jsx → tags-diff.stories.tsx} +12 -14
  221. package/src/diffs/__stories__/{text-diff.stories.jsx → text-diff.stories.tsx} +12 -14
  222. package/src/diffs/__tests__/{split-diff_test.js → split-diff.test.ts} +1 -2
  223. package/src/diffs/__tests__/{string-array-diff_test.js → string-array-diff.test.ts} +1 -2
  224. package/src/diffs/__tests__/{structured-item-diff_test.js → structured-item-diff.test.ts} +15 -14
  225. package/src/diffs/__tests__/{widget-diff-performer_test.js → widget-diff-performer.test.ts} +1 -2
  226. package/src/diffs/{article-diff.jsx → article-diff.tsx} +5 -6
  227. package/src/diffs/{item-diff.jsx → item-diff.tsx} +4 -5
  228. package/src/diffs/{renderer-diff.jsx → renderer-diff.tsx} +22 -28
  229. package/src/diffs/{split-diff.jsx → split-diff.ts} +4 -3
  230. package/src/diffs/{string-array-diff.jsx → string-array-diff.ts} +8 -9
  231. package/src/diffs/{structured-item-diff.jsx → structured-item-diff.tsx} +32 -27
  232. package/src/diffs/{tags-diff.jsx → tags-diff.tsx} +15 -16
  233. package/src/diffs/{text-diff.jsx → text-diff.tsx} +13 -13
  234. package/src/diffs/{widget-diff-performer.jsx → widget-diff-performer.ts} +3 -8
  235. package/src/diffs/{widget-diff.jsx → widget-diff.tsx} +15 -14
  236. package/src/{editor-page.jsx → editor-page.tsx} +52 -60
  237. package/src/{editor.jsx → editor.tsx} +315 -277
  238. package/src/{hint-editor.jsx → hint-editor.tsx} +105 -79
  239. package/src/{i18n.jsx → i18n.ts} +9 -6
  240. package/src/{iframe-content-renderer.jsx → iframe-content-renderer.tsx} +23 -17
  241. package/src/{index.js → index.ts} +15 -16
  242. package/src/{item-editor.jsx → item-editor.tsx} +35 -30
  243. package/src/{item-extras-editor.jsx → item-extras-editor.tsx} +3 -4
  244. package/src/{katex-error-view.jsx → katex-error-view.tsx} +4 -5
  245. package/src/{multirenderer-editor.jsx → multirenderer-editor.tsx} +132 -127
  246. package/src/{section-control-button.jsx → section-control-button.tsx} +10 -9
  247. package/src/{stateful-article-editor.jsx → stateful-article-editor.tsx} +2 -5
  248. package/src/{stateful-editor-page.jsx → stateful-editor-page.tsx} +1 -3
  249. package/src/{testing-widgets.js → testing-widgets.ts} +5 -6
  250. package/src/util/{register-all-widgets-and-editors-for-testing_test.js → register-all-widgets-and-editors-for-testing.test.ts} +1 -2
  251. package/src/util/{register-all-widgets-and-editors-for-testing.js → register-all-widgets-and-editors-for-testing.ts} +2 -3
  252. package/src/widgets/__stories__/{label-image-editor.stories.jsx → label-image-editor.stories.tsx} +22 -18
  253. package/src/widgets/__stories__/{radio-editor.stories.jsx → radio-editor.stories.tsx} +15 -10
  254. package/src/widgets/{categorizer-editor.jsx → categorizer-editor.tsx} +8 -6
  255. package/src/widgets/{cs-program-editor.jsx → cs-program-editor.tsx} +17 -17
  256. package/src/widgets/{definition-editor.jsx → definition-editor.tsx} +9 -8
  257. package/src/widgets/{dropdown-editor.jsx → dropdown-editor.tsx} +27 -19
  258. package/src/widgets/{example-graphie-widget-editor.jsx → example-graphie-widget-editor.tsx} +8 -8
  259. package/src/widgets/{example-graphie-widget.jsx → example-graphie-widget.tsx} +14 -17
  260. package/src/widgets/{example-widget-editor.jsx → example-widget-editor.tsx} +10 -7
  261. package/src/widgets/{example-widget.jsx → example-widget.tsx} +14 -12
  262. package/src/widgets/{explanation-editor.jsx → explanation-editor.tsx} +12 -10
  263. package/src/widgets/{expression-editor.jsx → expression-editor.tsx} +36 -26
  264. package/src/widgets/{graded-group-editor.jsx → graded-group-editor.tsx} +18 -10
  265. package/src/widgets/{graded-group-set-editor.jsx → graded-group-set-editor.tsx} +15 -12
  266. package/src/widgets/{grapher-editor.jsx → grapher-editor.tsx} +10 -9
  267. package/src/widgets/{group-editor.jsx → group-editor.tsx} +11 -9
  268. package/src/widgets/{iframe-editor.jsx → iframe-editor.tsx} +16 -13
  269. package/src/widgets/{image-editor.jsx → image-editor.tsx} +4 -7
  270. package/src/widgets/{input-number-editor.jsx → input-number-editor.tsx} +61 -47
  271. package/src/widgets/interaction/{constraint-editor.jsx → constraint-editor.tsx} +21 -24
  272. package/src/widgets/{interaction-editor.jsx → interaction-editor.tsx} +160 -61
  273. package/src/widgets/{interactive-graph-editor.jsx → interactive-graph-editor.tsx} +13 -10
  274. package/src/widgets/label-image/__stories__/{answer-choices.stories.jsx → answer-choices.stories.tsx} +22 -17
  275. package/src/widgets/label-image/__stories__/{behavior.stories.jsx → behavior.stories.tsx} +9 -10
  276. package/src/widgets/label-image/__stories__/{marker.stories.jsx → marker.stories.tsx} +11 -12
  277. package/src/widgets/label-image/__stories__/{question-markers.stories.jsx → question-markers.stories.tsx} +17 -16
  278. package/src/widgets/label-image/__stories__/{select-image.stories.jsx → select-image.stories.tsx} +12 -13
  279. package/src/widgets/label-image/{answer-choices.jsx → answer-choices.tsx} +18 -18
  280. package/src/widgets/label-image/{behavior.jsx → behavior.tsx} +9 -11
  281. package/src/widgets/label-image/{marker.jsx → marker.tsx} +17 -19
  282. package/src/widgets/label-image/{question-markers.jsx → question-markers.tsx} +16 -21
  283. package/src/widgets/label-image/{select-image.jsx → select-image.tsx} +5 -7
  284. package/src/widgets/{label-image-editor.jsx → label-image-editor.tsx} +38 -44
  285. package/src/widgets/{lights-puzzle-editor.jsx → lights-puzzle-editor.tsx} +34 -24
  286. package/src/widgets/{matcher-editor.jsx → matcher-editor.tsx} +9 -7
  287. package/src/widgets/{matrix-editor.jsx → matrix-editor.tsx} +10 -9
  288. package/src/widgets/{measurer-editor.jsx → measurer-editor.tsx} +21 -14
  289. package/src/widgets/{molecule-editor.jsx → molecule-editor.tsx} +9 -8
  290. package/src/widgets/{number-line-editor.jsx → number-line-editor.tsx} +19 -17
  291. package/src/widgets/{numeric-input-editor.jsx → numeric-input-editor.tsx} +10 -10
  292. package/src/widgets/{orderer-editor.jsx → orderer-editor.tsx} +17 -12
  293. package/src/widgets/{passage-editor.jsx → passage-editor.tsx} +9 -7
  294. package/src/widgets/{passage-ref-editor.jsx → passage-ref-editor.tsx} +8 -6
  295. package/src/widgets/{passage-ref-target-editor.jsx → passage-ref-target-editor.tsx} +9 -7
  296. package/src/widgets/{plotter-editor.jsx → plotter-editor.tsx} +34 -33
  297. package/src/widgets/radio/{editor.jsx → editor.tsx} +22 -21
  298. package/src/widgets/{reaction-diagram-editor.jsx → reaction-diagram-editor.tsx} +14 -10
  299. package/src/widgets/{sequence-editor.jsx → sequence-editor.tsx} +13 -13
  300. package/src/widgets/{simple-markdown-tester-editor.jsx → simple-markdown-tester-editor.tsx} +11 -9
  301. package/src/widgets/{simple-markdown-tester.jsx → simple-markdown-tester.tsx} +8 -7
  302. package/src/widgets/{simulator-editor.jsx → simulator-editor.tsx} +10 -8
  303. package/src/widgets/{sorter-editor.jsx → sorter-editor.tsx} +8 -6
  304. package/src/widgets/{table-editor.jsx → table-editor.tsx} +11 -10
  305. package/src/widgets/{transformer-editor.jsx → transformer-editor.tsx} +37 -35
  306. package/src/widgets/{unit-editor.jsx → unit-editor.tsx} +31 -25
  307. package/src/widgets/{video-editor.jsx → video-editor.tsx} +8 -9
  308. package/tsconfig.json +22 -0
  309. package/tsconfig.tsbuildinfo +1 -0
  310. package/src/all-editors.js +0 -85
  311. package/src/all-widgets.js +0 -10
  312. /package/dist/{strings.js → strings} +0 -0
@@ -0,0 +1,83 @@
1
+ import CategorizerEditor from "./widgets/categorizer-editor";
2
+ import CSProgramEditor from "./widgets/cs-program-editor";
3
+ import DefinitionEditor from "./widgets/definition-editor";
4
+ import DropdownEditor from "./widgets/dropdown-editor";
5
+ import ExampleGraphieWidgetEditor from "./widgets/example-graphie-widget-editor";
6
+ import ExampleWidgetEditor from "./widgets/example-widget-editor";
7
+ import ExplanationEditor from "./widgets/explanation-editor";
8
+ import ExpressionEditor from "./widgets/expression-editor";
9
+ import GradedGroupEditor from "./widgets/graded-group-editor";
10
+ import GradedGroupSetEditor from "./widgets/graded-group-set-editor";
11
+ import GrapherEditor from "./widgets/grapher-editor";
12
+ import GroupEditor from "./widgets/group-editor";
13
+ import IframeEditor from "./widgets/iframe-editor";
14
+ import ImageEditor from "./widgets/image-editor";
15
+ import InputNumberEditor from "./widgets/input-number-editor";
16
+ import InteractionEditor from "./widgets/interaction-editor";
17
+ import InteractiveGraphEditor from "./widgets/interactive-graph-editor";
18
+ import LabelImageEditor from "./widgets/label-image-editor";
19
+ import LightsPuzzleEditor from "./widgets/lights-puzzle-editor";
20
+ import MatcherEditor from "./widgets/matcher-editor";
21
+ import MatrixEditor from "./widgets/matrix-editor";
22
+ import MeasurerEditor from "./widgets/measurer-editor";
23
+ import MoleculeEditor from "./widgets/molecule-editor";
24
+ import NumberLineEditor from "./widgets/number-line-editor";
25
+ import NumericInputEditor from "./widgets/numeric-input-editor";
26
+ import OrdererEditor from "./widgets/orderer-editor";
27
+ import PassageEditor from "./widgets/passage-editor";
28
+ import PassageRefEditor from "./widgets/passage-ref-editor";
29
+ import PassageRefTargetEditor from "./widgets/passage-ref-target-editor";
30
+ import PlotterEditor from "./widgets/plotter-editor";
31
+ import RadioEditor from "./widgets/radio/editor";
32
+ import ReactionDiagramEditor from "./widgets/reaction-diagram-editor";
33
+ import SequenceEditor from "./widgets/sequence-editor";
34
+ import SimpleMarkdownTesterEditor from "./widgets/simple-markdown-tester-editor";
35
+ import SimulatorEditor from "./widgets/simulator-editor";
36
+ import SorterEditor from "./widgets/sorter-editor";
37
+ import TableEditor from "./widgets/table-editor";
38
+ import TransformerEditor from "./widgets/transformer-editor";
39
+ import UnitEditor from "./widgets/unit-editor";
40
+ import VideoEditor from "./widgets/video-editor";
41
+
42
+ export default [
43
+ CategorizerEditor,
44
+ CSProgramEditor,
45
+ DefinitionEditor,
46
+ DropdownEditor,
47
+ ExampleGraphieWidgetEditor,
48
+ ExampleWidgetEditor,
49
+ ExplanationEditor,
50
+ ExpressionEditor,
51
+ GradedGroupEditor,
52
+ GradedGroupSetEditor,
53
+ GrapherEditor,
54
+ GroupEditor,
55
+ IframeEditor,
56
+ ImageEditor,
57
+ InputNumberEditor,
58
+ InteractionEditor,
59
+ InteractiveGraphEditor,
60
+ LabelImageEditor,
61
+ LightsPuzzleEditor,
62
+ MatcherEditor,
63
+ MatrixEditor,
64
+ MeasurerEditor,
65
+ MoleculeEditor,
66
+ NumberLineEditor,
67
+ NumericInputEditor,
68
+ OrdererEditor,
69
+ PassageEditor,
70
+ PassageRefEditor,
71
+ PassageRefTargetEditor,
72
+ PlotterEditor,
73
+ ReactionDiagramEditor,
74
+ SequenceEditor,
75
+ SimpleMarkdownTesterEditor,
76
+ SimulatorEditor,
77
+ SorterEditor,
78
+ TableEditor,
79
+ TransformerEditor,
80
+ UnitEditor,
81
+ VideoEditor,
82
+ RadioEditor,
83
+ ];
@@ -0,0 +1,7 @@
1
+ import {widgets} from "@khanacademy/perseus";
2
+
3
+ import testingWidgets from "./testing-widgets";
4
+
5
+ import type {WidgetExports} from "@khanacademy/perseus";
6
+
7
+ export default [...widgets, ...testingWidgets] as ReadonlyArray<WidgetExports>;
@@ -1,6 +1,4 @@
1
1
  /* eslint-disable jsx-a11y/anchor-is-valid */
2
- // @flow
3
-
4
2
  /**
5
3
  * An article editor. Articles are long-form pieces of content, composed of
6
4
  * multiple (Renderer) sections concatenated together.
@@ -18,47 +16,47 @@ import {
18
16
  import * as React from "react";
19
17
  import _ from "underscore";
20
18
 
21
- import DeviceFramer from "./components/device-framer.jsx";
22
- import JsonEditor from "./components/json-editor.jsx";
23
- import Editor from "./editor.jsx";
24
- import IframeContentRenderer from "./iframe-content-renderer.jsx";
25
- import SectionControlButton from "./section-control-button.jsx";
19
+ import DeviceFramer from "./components/device-framer";
20
+ import JsonEditor from "./components/json-editor";
21
+ import Editor from "./editor";
22
+ import IframeContentRenderer from "./iframe-content-renderer";
23
+ import SectionControlButton from "./section-control-button";
26
24
 
27
25
  import type {APIOptions} from "@khanacademy/perseus";
28
26
 
29
27
  const {HUD, InlineIcon} = components;
30
28
  const {iconCircleArrowDown, iconCircleArrowUp, iconPlus, iconTrash} = icons;
31
29
 
32
- type RendererProps = {|
33
- content?: string,
34
- widgets?: Object,
35
- images?: Object,
36
- |};
37
-
38
- type JsonType = RendererProps | $ReadOnlyArray<RendererProps>;
39
- type DefaultProps = {|
40
- contentPaths?: $ReadOnlyArray<string>,
41
- json: JsonType,
42
- mode: "diff" | "edit" | "json" | "preview",
43
- screen: "phone" | "tablet" | "desktop",
44
- sectionImageUploadGenerator: (i: number) => React$Element<"span">,
45
- useNewStyles: boolean,
46
- |};
47
- type PerseusArticleEditorProps = {|
48
- ...DefaultProps,
49
- apiOptions?: APIOptions,
50
- imageUploader?: (string, (string) => mixed) => mixed,
30
+ type RendererProps = {
31
+ content?: string;
32
+ widgets?: any;
33
+ images?: any;
34
+ };
35
+
36
+ type JsonType = RendererProps | ReadonlyArray<RendererProps>;
37
+ type DefaultProps = {
38
+ contentPaths?: ReadonlyArray<string>;
39
+ json: JsonType;
40
+ mode: "diff" | "edit" | "json" | "preview";
41
+ screen: "phone" | "tablet" | "desktop";
42
+ sectionImageUploadGenerator: (
43
+ i: number,
44
+ ) => React.ReactElement<React.ComponentProps<"span">>;
45
+ useNewStyles: boolean;
46
+ };
47
+ type PerseusArticleEditorProps = DefaultProps & {
48
+ apiOptions?: APIOptions;
49
+ imageUploader?: (arg1: string, arg2: (arg1: string) => unknown) => unknown;
51
50
  // URL of the route to show on initial load of the preview frames.
52
- previewURL: string,
53
- ...Changeable.ChangeableProps,
54
- |};
51
+ previewURL: string;
52
+ } & Changeable.ChangeableProps;
55
53
 
56
- type State = {|
57
- highlightLint: boolean,
58
- |};
54
+ type State = {
55
+ highlightLint: boolean;
56
+ };
59
57
  export default class ArticleEditor extends React.Component<
60
58
  PerseusArticleEditorProps,
61
- State,
59
+ State
62
60
  > {
63
61
  static defaultProps: DefaultProps = {
64
62
  contentPaths: [],
@@ -85,6 +83,7 @@ export default class ArticleEditor extends React.Component<
85
83
  _updatePreviewFrames() {
86
84
  if (this.props.mode === "preview") {
87
85
  // eslint-disable-next-line react/no-string-refs
86
+ // @ts-expect-error [FEI-5003] - TS2339 - Property 'sendNewData' does not exist on type 'ReactInstance'.
88
87
  this.refs["frame-all"].sendNewData({
89
88
  type: "article-all",
90
89
  data: this._sections().map((section, i) => {
@@ -94,6 +93,7 @@ export default class ArticleEditor extends React.Component<
94
93
  } else if (this.props.mode === "edit") {
95
94
  this._sections().forEach((section, i) => {
96
95
  // eslint-disable-next-line react/no-string-refs
96
+ // @ts-expect-error [FEI-5003] - TS2339 - Property 'sendNewData' does not exist on type 'ReactInstance'.
97
97
  this.refs["frame-" + i].sendNewData({
98
98
  type: "article",
99
99
  data: this._apiOptionsForSection(section, i),
@@ -122,17 +122,18 @@ export default class ArticleEditor extends React.Component<
122
122
  highlightLint: this.state.highlightLint,
123
123
  paths: this.props.contentPaths,
124
124
  },
125
+ // @ts-expect-error [FEI-5003] - TS2339 - Property 'getSaveWarnings' does not exist on type 'ReactInstance'.
125
126
  legacyPerseusLint: editor ? editor.getSaveWarnings() : [],
126
127
  };
127
128
  }
128
129
 
129
- _sections(): $ReadOnlyArray<RendererProps> {
130
+ _sections(): ReadonlyArray<RendererProps> {
130
131
  return Array.isArray(this.props.json)
131
132
  ? this.props.json
132
133
  : [this.props.json];
133
134
  }
134
135
 
135
- _renderEditor(): React$Element<"div"> {
136
+ _renderEditor(): React.ReactElement<React.ComponentProps<"div">> {
136
137
  const {imageUploader, sectionImageUploadGenerator} = this.props;
137
138
 
138
139
  const apiOptions = {
@@ -142,7 +143,7 @@ export default class ArticleEditor extends React.Component<
142
143
  // Alignment options are always available in article editors
143
144
  showAlignmentOptions: true,
144
145
  isArticle: true,
145
- };
146
+ } as const;
146
147
 
147
148
  const {KatexProvider} = Dependencies.getDependencies();
148
149
 
@@ -240,7 +241,7 @@ export default class ArticleEditor extends React.Component<
240
241
  /* eslint-enable max-len */
241
242
  }
242
243
 
243
- _renderAddSection(): React$Element<"div"> {
244
+ _renderAddSection(): React.ReactElement<React.ComponentProps<"div">> {
244
245
  return (
245
246
  <div className="perseus-editor-row">
246
247
  <div className="perseus-editor-left-cell">
@@ -260,7 +261,7 @@ export default class ArticleEditor extends React.Component<
260
261
  );
261
262
  }
262
263
 
263
- _renderLinterHUD(): React$Element<any> {
264
+ _renderLinterHUD(): React.ReactElement<any> {
264
265
  return (
265
266
  <HUD
266
267
  message="Style warnings"
@@ -277,7 +278,7 @@ export default class ArticleEditor extends React.Component<
277
278
  _renderIframePreview(
278
279
  i: number | string,
279
280
  nochrome: boolean,
280
- ): React$Element<any> {
281
+ ): React.ReactElement<any> {
281
282
  const isMobile =
282
283
  this.props.screen === "phone" || this.props.screen === "tablet";
283
284
 
@@ -295,7 +296,7 @@ export default class ArticleEditor extends React.Component<
295
296
  );
296
297
  }
297
298
 
298
- _renderPreviewMode(): React$Element<"div"> {
299
+ _renderPreviewMode(): React.ReactElement<React.ComponentProps<"div">> {
299
300
  return (
300
301
  <div className="standalone-preview">
301
302
  {this._renderIframePreview("all", false)}
@@ -312,6 +313,7 @@ export default class ArticleEditor extends React.Component<
312
313
  newProps,
313
314
  ) => {
314
315
  const sections = _.clone(this._sections());
316
+ // @ts-expect-error [FEI-5003] - TS2542 - Index signature in type 'readonly RendererProps[]' only permits reading.
315
317
  sections[i] = _.extend({}, sections[i], newProps);
316
318
  this.props.onChange({json: sections});
317
319
  };
@@ -322,7 +324,9 @@ export default class ArticleEditor extends React.Component<
322
324
  }
323
325
  const sections = _.clone(this._sections());
324
326
  const section = sections[i];
327
+ // @ts-expect-error [FEI-5003] - TS2551 - Property 'splice' does not exist on type 'readonly RendererProps[]'. Did you mean 'slice'?
325
328
  sections.splice(i, 1);
329
+ // @ts-expect-error [FEI-5003] - TS2551 - Property 'splice' does not exist on type 'readonly RendererProps[]'. Did you mean 'slice'?
326
330
  sections.splice(i - 1, 0, section);
327
331
  this.props.onChange({
328
332
  json: sections,
@@ -335,7 +339,9 @@ export default class ArticleEditor extends React.Component<
335
339
  return;
336
340
  }
337
341
  const section = sections[i];
342
+ // @ts-expect-error [FEI-5003] - TS2551 - Property 'splice' does not exist on type 'readonly RendererProps[]'. Did you mean 'slice'?
338
343
  sections.splice(i, 1);
344
+ // @ts-expect-error [FEI-5003] - TS2551 - Property 'splice' does not exist on type 'readonly RendererProps[]'. Did you mean 'slice'?
339
345
  sections.splice(i + 1, 0, section);
340
346
  this.props.onChange({
341
347
  json: sections,
@@ -358,6 +364,7 @@ export default class ArticleEditor extends React.Component<
358
364
  widgets: sections[i].widgets,
359
365
  }
360
366
  : {};
367
+ // @ts-expect-error [FEI-5003] - TS2339 - Property 'splice' does not exist on type 'JsonType'.
361
368
  sections.splice(i + 1, 0, newSection);
362
369
  this.props.onChange({
363
370
  json: sections,
@@ -366,6 +373,7 @@ export default class ArticleEditor extends React.Component<
366
373
 
367
374
  _handleRemoveSection(i: number) {
368
375
  const sections = _.clone(this._sections());
376
+ // @ts-expect-error [FEI-5003] - TS2551 - Property 'splice' does not exist on type 'readonly RendererProps[]'. Did you mean 'slice'?
369
377
  sections.splice(i, 1);
370
378
  this.props.onChange({
371
379
  json: sections,
@@ -376,6 +384,7 @@ export default class ArticleEditor extends React.Component<
376
384
  if (this.props.mode === "edit") {
377
385
  return this._sections().map((section, i) => {
378
386
  // eslint-disable-next-line react/no-string-refs
387
+ // @ts-expect-error [FEI-5003] - TS2339 - Property 'serialize' does not exist on type 'ReactInstance'.
379
388
  return this.refs["editor" + i].serialize();
380
389
  });
381
390
  }
@@ -394,7 +403,7 @@ export default class ArticleEditor extends React.Component<
394
403
  *
395
404
  * This function can currently only be called in edit mode.
396
405
  */
397
- getSaveWarnings(): $ReadOnlyArray<RendererProps> {
406
+ getSaveWarnings(): ReadonlyArray<RendererProps> {
398
407
  if (this.props.mode !== "edit") {
399
408
  // TODO(joshuan): We should be able to get save warnings in
400
409
  // preview mode.
@@ -406,11 +415,12 @@ export default class ArticleEditor extends React.Component<
406
415
 
407
416
  return this._sections().map((section, i) => {
408
417
  // eslint-disable-next-line react/no-string-refs
418
+ // @ts-expect-error [FEI-5003] - TS2339 - Property 'getSaveWarnings' does not exist on type 'ReactInstance'.
409
419
  return this.refs["editor" + i].getSaveWarnings();
410
420
  });
411
421
  }
412
422
 
413
- render(): React.Node {
423
+ render(): React.ReactNode {
414
424
  return (
415
425
  <div className="framework-perseus perseus-article-editor">
416
426
  {this.props.mode === "edit" && this._renderEditor()}
@@ -1,15 +1,13 @@
1
- // @flow
2
-
3
1
  import {action} from "@storybook/addon-actions";
4
2
  import * as React from "react";
5
3
 
6
- import BlurInput from "../blur-input.jsx";
4
+ import BlurInput from "../blur-input";
7
5
 
8
6
  export default {
9
7
  title: "Perseus/Editor/Components/Blur Input",
10
8
  };
11
9
 
12
- export const Default = (): React.Node => {
10
+ export const Default = (): React.ReactElement => {
13
11
  const [value, setValue] = React.useState("");
14
12
 
15
13
  return (
@@ -1,18 +1,17 @@
1
- // @flow
2
1
  import * as React from "react";
3
2
 
4
3
  import type {CSSProperties} from "aphrodite";
5
4
 
6
- type Props = {|
7
- value: string,
8
- onChange: (string) => void,
9
- className?: string,
10
- style?: CSSProperties,
11
- |};
5
+ type Props = {
6
+ value: string;
7
+ onChange: (arg1: string) => void;
8
+ className?: string;
9
+ style?: CSSProperties;
10
+ };
12
11
 
13
- type State = {|
14
- value: string,
15
- |};
12
+ type State = {
13
+ value: string;
14
+ };
16
15
 
17
16
  /* You know when you want to propagate input to a parent...
18
17
  * but then that parent does something with the input...
@@ -37,15 +36,15 @@ class BlurInput extends React.Component<Props, State> {
37
36
  this.setState({value: nextProps.value});
38
37
  }
39
38
 
40
- handleChange: (e: $FlowFixMe) => void = (e) => {
39
+ handleChange: (e: any) => void = (e) => {
41
40
  this.setState({value: e.target.value});
42
41
  };
43
42
 
44
- handleBlur: (e: $FlowFixMe) => void = (e) => {
43
+ handleBlur: (e: any) => void = (e) => {
45
44
  this.props.onChange(e.target.value);
46
45
  };
47
46
 
48
- render(): React.Element<"input"> {
47
+ render(): React.ReactNode {
49
48
  return (
50
49
  <input
51
50
  className={this.props.className}
@@ -1,4 +1,3 @@
1
- // @flow
2
1
  /**
3
2
  * Reusable checkbox component.
4
3
  **/
@@ -6,50 +5,49 @@ import {globalStyles} from "@khanacademy/perseus";
6
5
  import {css, StyleSheet} from "aphrodite";
7
6
  import * as React from "react";
8
7
 
9
- import HoverBehavior from "./hover-behavior.jsx";
8
+ import HoverBehavior from "./hover-behavior";
10
9
 
11
10
  const {borderRadius, colors} = globalStyles;
12
11
 
13
12
  export type CheckboxProps = {
14
13
  // Whether or not the checkbox is checked. The parent responsible for
15
14
  // responding to onChange events and updating this prop appropriately.
16
- checked: boolean,
15
+ checked: boolean;
17
16
  // When disable the checkbox will appear faded out and will not
18
17
  // respond to events and cannot be tabbed to.
19
- disabled?: boolean,
18
+ disabled?: boolean;
20
19
  // Appear as if disabled but allow it to respond to events and be
21
20
  // tabbed to.
22
21
  // This allows us to hook alternate responses into clicking on a
23
22
  // disabled checkbox.
24
- appearDisabled?: boolean,
23
+ appearDisabled?: boolean;
25
24
  // Called when the value has changed.
26
- onChange: (event: SyntheticInputEvent<>) => void,
27
- tabIndex?: number | string,
28
- style?: {|
29
- marginTop: number,
30
- |},
25
+ onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
26
+ tabIndex?: number | string;
27
+ style?: {
28
+ marginTop: number;
29
+ };
31
30
  // For e2e test
32
- dataTestId?: string,
31
+ dataTestId?: string;
33
32
  // Unique identifier for this checkbox.
34
- id?: string,
35
- ...
33
+ id?: string;
36
34
  };
37
35
 
38
36
  // NOTE(jangmi): Checkbox may have `onChange` depends on circumstances but lack
39
37
  // of onChange causes Dev only alert so we provide the no op func as default
40
38
  // to prevent that.
41
- const onChangeCheckboxNoop = (event: SyntheticInputEvent<>) => {};
39
+ const onChangeCheckboxNoop = (event: React.ChangeEvent<HTMLInputElement>) => {};
42
40
 
43
41
  export default class Checkbox extends React.Component<CheckboxProps> {
44
- static defaultProps: {|
45
- checked: boolean,
46
- onChange: (event: SyntheticInputEvent<>) => void,
47
- |} = {
42
+ static defaultProps: {
43
+ checked: boolean;
44
+ onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
45
+ } = {
48
46
  checked: false,
49
47
  onChange: onChangeCheckboxNoop,
50
48
  };
51
49
 
52
- render(): React.Node {
50
+ render(): React.ReactNode {
53
51
  const {
54
52
  checked,
55
53
  disabled,
@@ -132,6 +130,7 @@ export default class Checkbox extends React.Component<CheckboxProps> {
132
130
  )}
133
131
  disabled={disabled}
134
132
  onChange={onChange}
133
+ // @ts-expect-error [FEI-5003] - TS2322 - Type 'string | number | undefined' is not assignable to type 'number | undefined'.
135
134
  tabIndex={tabIndex}
136
135
  />
137
136
  </div>
@@ -1,4 +1,3 @@
1
- // @flow
2
1
  /**
3
2
  * A component that displays its contents inside a device frame.
4
3
  */
@@ -23,9 +22,9 @@ const SCREEN_SIZES = {
23
22
  height: 600,
24
23
  framedWidth: 688,
25
24
  },
26
- };
25
+ } as const;
27
26
 
28
- type Props = $FlowFixMe;
27
+ type Props = any;
29
28
 
30
29
  class DeviceFramer extends React.Component<Props> {
31
30
  static propTypes = {
@@ -39,7 +38,7 @@ class DeviceFramer extends React.Component<Props> {
39
38
  nochrome: PropTypes.bool,
40
39
  };
41
40
 
42
- render(): React.Node {
41
+ render(): React.ReactNode {
43
42
  const deviceType = this.props.deviceType;
44
43
 
45
44
  if (this.props.nochrome) {
@@ -78,7 +77,7 @@ class DeviceFramer extends React.Component<Props> {
78
77
  border: "solid 1px #CCC",
79
78
  margin: 8,
80
79
  zoom: scale,
81
- };
80
+ } as const;
82
81
 
83
82
  return (
84
83
  <div key="screen" className="screen" style={screenStyle}>
@@ -1,4 +1,3 @@
1
- // @noflow
2
1
  /* This component makes its children a drag target. Example:
3
2
  *
4
3
  * <DragTarget onDrop={this.handleDrop}>Drag to me</DragTarget>