@khanacademy/perseus 19.1.4 → 19.1.6

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 (487) hide show
  1. package/dist/components/graphie.d.ts +9 -1
  2. package/dist/es/index.js +255 -122
  3. package/dist/es/index.js.map +1 -1
  4. package/dist/index.js +261 -126
  5. package/dist/index.js.map +1 -1
  6. package/dist/interactive2/interactive-util.d.ts +1 -1
  7. package/dist/interactive2/movable-point-options.d.ts +5 -4
  8. package/dist/interactive2/movable.d.ts +90 -13
  9. package/dist/interactive2/types.d.ts +6 -0
  10. package/dist/util/graphie.d.ts +5 -0
  11. package/dist/widgets/expression.d.ts +4 -4
  12. package/package.json +11 -8
  13. package/.babelrc.js +0 -8
  14. package/.eslintrc.js +0 -12
  15. package/CHANGELOG.md +0 -1422
  16. package/src/__stories__/article-renderer.stories.tsx +0 -100
  17. package/src/__stories__/hints-renderer.stories.tsx +0 -55
  18. package/src/__stories__/server-item-renderer.stories.tsx +0 -44
  19. package/src/__testdata__/article-renderer.testdata.ts +0 -212
  20. package/src/__testdata__/graphie.testdata.ts +0 -51
  21. package/src/__testdata__/renderer.testdata.ts +0 -274
  22. package/src/__testdata__/server-item-renderer.testdata.ts +0 -171
  23. package/src/__tests__/__snapshots__/perseus-markdown.test.ts.snap +0 -507
  24. package/src/__tests__/__snapshots__/renderer.test.tsx.snap +0 -525
  25. package/src/__tests__/__snapshots__/server-item-renderer.test.tsx.snap +0 -285
  26. package/src/__tests__/a11y.test.ts +0 -303
  27. package/src/__tests__/article-renderer.test.tsx +0 -130
  28. package/src/__tests__/error-boundary.test.tsx +0 -76
  29. package/src/__tests__/extract-perseus-data.test.ts +0 -1027
  30. package/src/__tests__/init.test.ts +0 -10
  31. package/src/__tests__/jipt-paragraphs.test.ts +0 -32
  32. package/src/__tests__/mock-asset-loading-widget.tsx +0 -53
  33. package/src/__tests__/mock-widget.tsx +0 -33
  34. package/src/__tests__/perseus-markdown.test.ts +0 -764
  35. package/src/__tests__/renderability.test.ts +0 -480
  36. package/src/__tests__/renderer-api.test.tsx +0 -302
  37. package/src/__tests__/renderer.test.tsx +0 -1816
  38. package/src/__tests__/server-item-renderer.test.tsx +0 -582
  39. package/src/__tests__/test-items/image-item.ts +0 -24
  40. package/src/__tests__/test-items/input-number-1-item.ts +0 -26
  41. package/src/__tests__/test-items/input-number-2-item.ts +0 -38
  42. package/src/__tests__/test-items/table-item.ts +0 -29
  43. package/src/__tests__/tex-wrangler.test.ts +0 -82
  44. package/src/__tests__/util.test.ts +0 -40
  45. package/src/__tests__/widget-container.test.tsx +0 -126
  46. package/src/__tests__/widgets.test.ts +0 -91
  47. package/src/a11y.ts +0 -45
  48. package/src/all-widgets.ts +0 -9
  49. package/src/article-renderer.tsx +0 -237
  50. package/src/asset-context.ts +0 -30
  51. package/src/basic-widgets.ts +0 -16
  52. package/src/components/__stories__/button-group.stories.tsx +0 -55
  53. package/src/components/__stories__/fixed-to-responsive.stories.tsx +0 -141
  54. package/src/components/__stories__/graph.stories.tsx +0 -28
  55. package/src/components/__stories__/graphie.stories.tsx +0 -33
  56. package/src/components/__stories__/hud.stories.tsx +0 -35
  57. package/src/components/__stories__/icon.stories.tsx +0 -63
  58. package/src/components/__stories__/image-loader.stories.tsx +0 -63
  59. package/src/components/__stories__/info-tip.stories.tsx +0 -31
  60. package/src/components/__stories__/inline-icon.stories.tsx +0 -40
  61. package/src/components/__stories__/input-with-examples.stories.tsx +0 -53
  62. package/src/components/__stories__/lint.stories.tsx +0 -86
  63. package/src/components/__stories__/math-input.stories.tsx +0 -43
  64. package/src/components/__stories__/math-output.stories.tsx +0 -23
  65. package/src/components/__stories__/multi-button-group.stories.tsx +0 -66
  66. package/src/components/__stories__/number-input.stories.tsx +0 -41
  67. package/src/components/__stories__/prop-check-box.stories.tsx +0 -65
  68. package/src/components/__stories__/range-input.stories.tsx +0 -29
  69. package/src/components/__stories__/simple-keypad-input.stories.tsx +0 -27
  70. package/src/components/__stories__/sortable.stories.tsx +0 -77
  71. package/src/components/__stories__/stub-tag-editor.stories.tsx +0 -45
  72. package/src/components/__stories__/svg-image.stories.tsx +0 -74
  73. package/src/components/__stories__/tex.stories.tsx +0 -23
  74. package/src/components/__stories__/text-input.stories.tsx +0 -33
  75. package/src/components/__stories__/text-list-editor.stories.tsx +0 -32
  76. package/src/components/__stories__/tooltip.stories.tsx +0 -52
  77. package/src/components/__stories__/zoomable-tex.stories.tsx +0 -41
  78. package/src/components/__stories__/zoomable.stories.tsx +0 -49
  79. package/src/components/__testdata__/sorter.testdata.ts +0 -19
  80. package/src/components/__tests__/__snapshots__/sortable.test.tsx.snap +0 -163
  81. package/src/components/__tests__/__snapshots__/sorter.test.tsx.snap +0 -265
  82. package/src/components/__tests__/math-input.test.tsx +0 -147
  83. package/src/components/__tests__/number-input.test.tsx +0 -128
  84. package/src/components/__tests__/sortable.test.tsx +0 -269
  85. package/src/components/__tests__/sorter.test.tsx +0 -114
  86. package/src/components/__tests__/zoomable.test.tsx +0 -399
  87. package/src/components/button-group.tsx +0 -130
  88. package/src/components/constants.ts +0 -14
  89. package/src/components/fixed-to-responsive.tsx +0 -169
  90. package/src/components/graph.tsx +0 -444
  91. package/src/components/graphie-classes.ts +0 -153
  92. package/src/components/graphie-movables.ts +0 -338
  93. package/src/components/graphie.tsx +0 -392
  94. package/src/components/highlighting/highlightable-content.tsx +0 -240
  95. package/src/components/highlighting/highlights.ts +0 -207
  96. package/src/components/highlighting/ranges.ts +0 -304
  97. package/src/components/highlighting/types.ts +0 -73
  98. package/src/components/highlighting/ui/highlight-renderer.tsx +0 -172
  99. package/src/components/highlighting/ui/highlight-set-renderer.tsx +0 -185
  100. package/src/components/highlighting/ui/highlight-tooltip.tsx +0 -141
  101. package/src/components/highlighting/ui/highlighting-ui.tsx +0 -143
  102. package/src/components/highlighting/ui/selection-tracker.tsx +0 -186
  103. package/src/components/highlighting/ui/types.ts +0 -21
  104. package/src/components/highlighting/ui/util.ts +0 -165
  105. package/src/components/highlighting/word-indexer.tsx +0 -152
  106. package/src/components/hud.tsx +0 -167
  107. package/src/components/icon.tsx +0 -141
  108. package/src/components/image-loader.tsx +0 -177
  109. package/src/components/info-tip/info-tip.tsx +0 -144
  110. package/src/components/info-tip.tsx +0 -39
  111. package/src/components/inline-icon.tsx +0 -60
  112. package/src/components/input-with-examples.tsx +0 -249
  113. package/src/components/lint.tsx +0 -459
  114. package/src/components/math-input.tsx +0 -474
  115. package/src/components/math-output.tsx +0 -134
  116. package/src/components/multi-button-group.tsx +0 -135
  117. package/src/components/number-input.tsx +0 -249
  118. package/src/components/prop-check-box.tsx +0 -79
  119. package/src/components/range-input.tsx +0 -60
  120. package/src/components/simple-keypad-input.tsx +0 -88
  121. package/src/components/sortable.tsx +0 -958
  122. package/src/components/stub-tag-editor.tsx +0 -53
  123. package/src/components/svg-image.tsx +0 -779
  124. package/src/components/tex.tsx +0 -67
  125. package/src/components/text-input.tsx +0 -129
  126. package/src/components/text-list-editor.tsx +0 -166
  127. package/src/components/tooltip.tsx +0 -410
  128. package/src/components/visibility-observer/__stories__/visibility-observer.stories.tsx +0 -141
  129. package/src/components/visibility-observer/create-visibility-observer.ts +0 -108
  130. package/src/components/visibility-observer/get-scroll-parent.ts +0 -46
  131. package/src/components/visibility-observer/visibility-observer.tsx +0 -124
  132. package/src/components/zoomable-tex.tsx +0 -78
  133. package/src/components/zoomable.tsx +0 -304
  134. package/src/components.ts +0 -15
  135. package/src/definition-context.tsx +0 -59
  136. package/src/dependencies.ts +0 -40
  137. package/src/error-boundary.tsx +0 -70
  138. package/src/extra-widgets.ts +0 -75
  139. package/src/hint-renderer.tsx +0 -151
  140. package/src/hints-renderer.tsx +0 -372
  141. package/src/icon-paths.ts +0 -119
  142. package/src/index.ts +0 -171
  143. package/src/init.ts +0 -56
  144. package/src/interaction-tracker.ts +0 -62
  145. package/src/interactive2/__tests__/movable-mock.ts +0 -43
  146. package/src/interactive2/__tests__/movable-point.test.ts +0 -144
  147. package/src/interactive2/__tests__/movable.test.ts +0 -157
  148. package/src/interactive2/interactive-util.test.ts +0 -93
  149. package/src/interactive2/interactive-util.ts +0 -159
  150. package/src/interactive2/movable-helper-methods.ts +0 -166
  151. package/src/interactive2/movable-line-options.ts +0 -419
  152. package/src/interactive2/movable-line.ts +0 -307
  153. package/src/interactive2/movable-point-options.ts +0 -212
  154. package/src/interactive2/movable-point.tsx +0 -585
  155. package/src/interactive2/movable-polygon-options.ts +0 -389
  156. package/src/interactive2/movable-polygon.ts +0 -360
  157. package/src/interactive2/movable.ts +0 -279
  158. package/src/interactive2/objective_.ts +0 -79
  159. package/src/interactive2/types.ts +0 -2
  160. package/src/interactive2/wrapped-defaults.ts +0 -87
  161. package/src/interactive2/wrapped-ellipse.ts +0 -94
  162. package/src/interactive2/wrapped-line.ts +0 -116
  163. package/src/interactive2/wrapped-path.ts +0 -51
  164. package/src/interactive2.ts +0 -70
  165. package/src/item-version.ts +0 -10
  166. package/src/jipt-paragraphs.ts +0 -49
  167. package/src/jquery.mobile.vmouse.js +0 -545
  168. package/src/loading-context.ts +0 -21
  169. package/src/logging/log.test.ts +0 -39
  170. package/src/logging/log.ts +0 -97
  171. package/src/mixins/__tests__/widget-prop-denylist.test.ts +0 -21
  172. package/src/mixins/changeable.ts +0 -133
  173. package/src/mixins/editor-jsonify.ts +0 -13
  174. package/src/mixins/widget-jsonify-deprecated.ts +0 -23
  175. package/src/mixins/widget-prop-denylist.ts +0 -48
  176. package/src/multi-items/__stories__/multi-renderer.stories.tsx +0 -83
  177. package/src/multi-items/__testdata__/multi-renderer.testdata.ts +0 -172
  178. package/src/multi-items/__tests__/__snapshots__/multi-renderer.test.tsx.snap +0 -1164
  179. package/src/multi-items/__tests__/items.test.ts +0 -240
  180. package/src/multi-items/__tests__/multi-renderer.test.tsx +0 -914
  181. package/src/multi-items/__tests__/prop-type-builders.test.ts +0 -133
  182. package/src/multi-items/__tests__/shapes.test.ts +0 -43
  183. package/src/multi-items/__tests__/trees.test.ts +0 -317
  184. package/src/multi-items/item-types.ts +0 -56
  185. package/src/multi-items/items.ts +0 -176
  186. package/src/multi-items/multi-renderer.tsx +0 -569
  187. package/src/multi-items/prop-type-builders.ts +0 -106
  188. package/src/multi-items/shape-types.ts +0 -52
  189. package/src/multi-items/shapes.ts +0 -52
  190. package/src/multi-items/tree-types.ts +0 -47
  191. package/src/multi-items/trees.ts +0 -360
  192. package/src/multi-items.ts +0 -75
  193. package/src/perseus-api.tsx +0 -188
  194. package/src/perseus-env.ts +0 -27
  195. package/src/perseus-error.ts +0 -17
  196. package/src/perseus-markdown.tsx +0 -405
  197. package/src/perseus-types.ts +0 -1366
  198. package/src/perseus-version.ts +0 -9
  199. package/src/question-paragraph.tsx +0 -34
  200. package/src/renderability.ts +0 -109
  201. package/src/renderer.tsx +0 -2000
  202. package/src/server-item-renderer.tsx +0 -495
  203. package/src/sigfigs.ts +0 -490
  204. package/src/styles/articles.less +0 -749
  205. package/src/styles/constants.ts +0 -94
  206. package/src/styles/global-constants.ts +0 -343
  207. package/src/styles/global-styles.ts +0 -306
  208. package/src/styles/khan-exercise.css +0 -1468
  209. package/src/styles/media-queries.ts +0 -47
  210. package/src/styles/perseus-renderer.less +0 -732
  211. package/src/styles/shared.ts +0 -130
  212. package/src/styles/util.less +0 -47
  213. package/src/styles/variables.boostrap.less +0 -277
  214. package/src/styles/variables.less +0 -56
  215. package/src/styles/variables.shared.less +0 -340
  216. package/src/styles/widgets/categorizer.less +0 -38
  217. package/src/styles/widgets/dropdown.less +0 -3
  218. package/src/styles/widgets/expression.less +0 -65
  219. package/src/styles/widgets/graded-group.less +0 -36
  220. package/src/styles/widgets/grapher.less +0 -12
  221. package/src/styles/widgets/group.less +0 -19
  222. package/src/styles/widgets/image.less +0 -54
  223. package/src/styles/widgets/interactive-graph.less +0 -64
  224. package/src/styles/widgets/label-image.less +0 -57
  225. package/src/styles/widgets/matcher.less +0 -8
  226. package/src/styles/widgets/matrix.less +0 -126
  227. package/src/styles/widgets/measurer.less +0 -20
  228. package/src/styles/widgets/orderer.less +0 -98
  229. package/src/styles/widgets/passage.less +0 -154
  230. package/src/styles/widgets/plotter.less +0 -31
  231. package/src/styles/widgets/radio.less +0 -58
  232. package/src/styles/widgets/reaction-diagram.less +0 -35
  233. package/src/styles/widgets/sequence.less +0 -5
  234. package/src/styles/widgets/sortable.less +0 -113
  235. package/src/styles/widgets/table.less +0 -57
  236. package/src/styles/widgets/unit.less +0 -15
  237. package/src/tex-wrangler.ts +0 -182
  238. package/src/translation-linter.ts +0 -126
  239. package/src/traversal.ts +0 -138
  240. package/src/types.ts +0 -513
  241. package/src/util/a11y.ts +0 -23
  242. package/src/util/answer-types.test.ts +0 -114
  243. package/src/util/answer-types.ts +0 -876
  244. package/src/util/colors.ts +0 -93
  245. package/src/util/drawing-transform.test.ts +0 -67
  246. package/src/util/drawing-transform.ts +0 -102
  247. package/src/util/extract-perseus-data.ts +0 -539
  248. package/src/util/fix-passage-refs.ts +0 -121
  249. package/src/util/geometry.test.ts +0 -75
  250. package/src/util/geometry.ts +0 -312
  251. package/src/util/graph-bounds.ts +0 -23
  252. package/src/util/graph-utils.ts +0 -15
  253. package/src/util/graphie.test.ts +0 -1277
  254. package/src/util/graphie.ts +0 -1566
  255. package/src/util/interactive.ts +0 -4172
  256. package/src/util/interval.ts +0 -4
  257. package/src/util/katex-preprocess.ts +0 -14
  258. package/src/util/math.test.ts +0 -11
  259. package/src/util/math.ts +0 -294
  260. package/src/util/mobile-native-utils.test.ts +0 -22
  261. package/src/util/mobile-native-utils.ts +0 -12
  262. package/src/util/parse-perseus-json.test.ts +0 -10
  263. package/src/util/parse-perseus-json.ts +0 -13
  264. package/src/util/react-render.tsx +0 -27
  265. package/src/util/register-all-widgets-for-testing.ts +0 -13
  266. package/src/util/scroll-utils.ts +0 -155
  267. package/src/util/sizing-utils.ts +0 -46
  268. package/src/util/tex.ts +0 -73
  269. package/src/util/url-utils.ts +0 -34
  270. package/src/util.graphie.test.ts +0 -45
  271. package/src/util.graphie.ts +0 -59
  272. package/src/util.ts +0 -966
  273. package/src/version.ts +0 -10
  274. package/src/widget-container.tsx +0 -199
  275. package/src/widgets/__stories__/categorizer.stories.tsx +0 -14
  276. package/src/widgets/__stories__/cs-program.stories.tsx +0 -14
  277. package/src/widgets/__stories__/definition.stories.tsx +0 -114
  278. package/src/widgets/__stories__/dropdown.stories.tsx +0 -14
  279. package/src/widgets/__stories__/explanation.stories.tsx +0 -18
  280. package/src/widgets/__stories__/expression.stories.tsx +0 -145
  281. package/src/widgets/__stories__/graded-group-set.stories.tsx +0 -31
  282. package/src/widgets/__stories__/graded-group.stories.tsx +0 -31
  283. package/src/widgets/__stories__/grapher.stories.tsx +0 -46
  284. package/src/widgets/__stories__/group.stories.tsx +0 -14
  285. package/src/widgets/__stories__/iframe.stories.tsx +0 -14
  286. package/src/widgets/__stories__/image.stories.tsx +0 -85
  287. package/src/widgets/__stories__/input-number.stories.tsx +0 -101
  288. package/src/widgets/__stories__/interaction.stories.tsx +0 -14
  289. package/src/widgets/__stories__/interactive-graph.stories.tsx +0 -60
  290. package/src/widgets/__stories__/label-image.stories.tsx +0 -130
  291. package/src/widgets/__stories__/matcher.stories.tsx +0 -14
  292. package/src/widgets/__stories__/matrix.stories.tsx +0 -14
  293. package/src/widgets/__stories__/number-line.stories.tsx +0 -14
  294. package/src/widgets/__stories__/numeric-input.stories.tsx +0 -105
  295. package/src/widgets/__stories__/orderer.stories.tsx +0 -18
  296. package/src/widgets/__stories__/passage-ref.stories.tsx +0 -33
  297. package/src/widgets/__stories__/passage.stories.tsx +0 -39
  298. package/src/widgets/__stories__/plotter.stories.tsx +0 -27
  299. package/src/widgets/__stories__/radio.stories.tsx +0 -86
  300. package/src/widgets/__stories__/random-widgets.stories.tsx +0 -59
  301. package/src/widgets/__stories__/sorter.stories.tsx +0 -14
  302. package/src/widgets/__stories__/test-keypad-context-wrapper.tsx +0 -66
  303. package/src/widgets/__stories__/unit.stories.tsx +0 -28
  304. package/src/widgets/__stories__/video-transcript-link.stories.tsx +0 -23
  305. package/src/widgets/__stories__/video.stories.tsx +0 -22
  306. package/src/widgets/__testdata__/base-radio.testdata.ts +0 -21
  307. package/src/widgets/__testdata__/categorizer.testdata.ts +0 -89
  308. package/src/widgets/__testdata__/cs-program.testdata.ts +0 -27
  309. package/src/widgets/__testdata__/dropdown.testdata.ts +0 -71
  310. package/src/widgets/__testdata__/explanation.testdata.ts +0 -85
  311. package/src/widgets/__testdata__/expression.testdata.ts +0 -198
  312. package/src/widgets/__testdata__/graded-group-set.testdata.ts +0 -356
  313. package/src/widgets/__testdata__/graded-group.testdata.ts +0 -77
  314. package/src/widgets/__testdata__/grapher.testdata.ts +0 -374
  315. package/src/widgets/__testdata__/group.testdata.ts +0 -153
  316. package/src/widgets/__testdata__/iframe.testdata.ts +0 -35
  317. package/src/widgets/__testdata__/image.testdata.ts +0 -36
  318. package/src/widgets/__testdata__/input-number.testdata.ts +0 -72
  319. package/src/widgets/__testdata__/interaction.testdata.ts +0 -262
  320. package/src/widgets/__testdata__/interactive-graph-random.testdata.ts +0 -269
  321. package/src/widgets/__testdata__/interactive-graph.testdata.ts +0 -644
  322. package/src/widgets/__testdata__/label-image.testdata.ts +0 -308
  323. package/src/widgets/__testdata__/matcher.testdata.ts +0 -33
  324. package/src/widgets/__testdata__/matrix.testdata.ts +0 -28
  325. package/src/widgets/__testdata__/number-line.testdata.ts +0 -30
  326. package/src/widgets/__testdata__/numeric-input.testdata.ts +0 -265
  327. package/src/widgets/__testdata__/orderer.testdata.ts +0 -123
  328. package/src/widgets/__testdata__/passage-ref.testdata.ts +0 -101
  329. package/src/widgets/__testdata__/passage.testdata.ts +0 -95
  330. package/src/widgets/__testdata__/plotter.testdata.ts +0 -36
  331. package/src/widgets/__testdata__/radio.testdata.ts +0 -324
  332. package/src/widgets/__testdata__/randomizers.ts +0 -51
  333. package/src/widgets/__testdata__/sorter.testdata.ts +0 -19
  334. package/src/widgets/__testdata__/video.testdata.ts +0 -61
  335. package/src/widgets/__tests__/__snapshots__/categorizer.test.ts.snap +0 -940
  336. package/src/widgets/__tests__/__snapshots__/cs-program.test.ts.snap +0 -67
  337. package/src/widgets/__tests__/__snapshots__/definition.test.ts.snap +0 -97
  338. package/src/widgets/__tests__/__snapshots__/dropdown.test.ts.snap +0 -133
  339. package/src/widgets/__tests__/__snapshots__/explanation.test.ts.snap +0 -425
  340. package/src/widgets/__tests__/__snapshots__/graded-group-set-jipt.test.ts.snap +0 -729
  341. package/src/widgets/__tests__/__snapshots__/graded-group-set.test.ts.snap +0 -339
  342. package/src/widgets/__tests__/__snapshots__/graded-group.test.ts.snap +0 -801
  343. package/src/widgets/__tests__/__snapshots__/grapher.test.ts.snap +0 -2673
  344. package/src/widgets/__tests__/__snapshots__/group.test.tsx.snap +0 -1211
  345. package/src/widgets/__tests__/__snapshots__/iframe.test.ts.snap +0 -61
  346. package/src/widgets/__tests__/__snapshots__/image.test.ts.snap +0 -378
  347. package/src/widgets/__tests__/__snapshots__/input-number.test.ts.snap +0 -495
  348. package/src/widgets/__tests__/__snapshots__/interaction.test.ts.snap +0 -292
  349. package/src/widgets/__tests__/__snapshots__/interactive-graph.test.ts.snap +0 -2889
  350. package/src/widgets/__tests__/__snapshots__/matcher.test.tsx.snap +0 -883
  351. package/src/widgets/__tests__/__snapshots__/matrix.test.ts.snap +0 -514
  352. package/src/widgets/__tests__/__snapshots__/number-line.test.ts.snap +0 -814
  353. package/src/widgets/__tests__/__snapshots__/numeric-input.test.ts.snap +0 -470
  354. package/src/widgets/__tests__/__snapshots__/orderer.test.ts.snap +0 -243
  355. package/src/widgets/__tests__/__snapshots__/passage-ref.test.ts.snap +0 -434
  356. package/src/widgets/__tests__/__snapshots__/passage.test.tsx.snap +0 -1956
  357. package/src/widgets/__tests__/__snapshots__/plotter.test.tsx.snap +0 -827
  358. package/src/widgets/__tests__/__snapshots__/radio.test.ts.snap +0 -4237
  359. package/src/widgets/__tests__/__snapshots__/unit.test.tsx.snap +0 -20
  360. package/src/widgets/__tests__/__snapshots__/video.test.ts.snap +0 -153
  361. package/src/widgets/__tests__/categorizer.test.ts +0 -203
  362. package/src/widgets/__tests__/cs-program.test.ts +0 -43
  363. package/src/widgets/__tests__/definition.test.ts +0 -136
  364. package/src/widgets/__tests__/dropdown.test.ts +0 -105
  365. package/src/widgets/__tests__/explanation.test.ts +0 -198
  366. package/src/widgets/__tests__/expression-mobile.test.tsx +0 -363
  367. package/src/widgets/__tests__/expression.test.tsx +0 -484
  368. package/src/widgets/__tests__/graded-group-set-jipt.test.ts +0 -30
  369. package/src/widgets/__tests__/graded-group-set.test.ts +0 -288
  370. package/src/widgets/__tests__/graded-group.test.ts +0 -232
  371. package/src/widgets/__tests__/grapher.cypress.ts +0 -576
  372. package/src/widgets/__tests__/grapher.test.ts +0 -33
  373. package/src/widgets/__tests__/group.test.tsx +0 -510
  374. package/src/widgets/__tests__/iframe.test.ts +0 -45
  375. package/src/widgets/__tests__/image.test.ts +0 -62
  376. package/src/widgets/__tests__/input-number.test.ts +0 -354
  377. package/src/widgets/__tests__/interaction.test.ts +0 -31
  378. package/src/widgets/__tests__/interactive-graph.cypress.ts +0 -815
  379. package/src/widgets/__tests__/interactive-graph.test.ts +0 -106
  380. package/src/widgets/__tests__/matcher.test.tsx +0 -176
  381. package/src/widgets/__tests__/matrix.test.ts +0 -82
  382. package/src/widgets/__tests__/number-line.test.ts +0 -79
  383. package/src/widgets/__tests__/numeric-input.test.ts +0 -575
  384. package/src/widgets/__tests__/orderer.test.ts +0 -73
  385. package/src/widgets/__tests__/passage-ref.test.ts +0 -168
  386. package/src/widgets/__tests__/passage.test.tsx +0 -224
  387. package/src/widgets/__tests__/plotter.test.tsx +0 -69
  388. package/src/widgets/__tests__/radio/base-radio.test.tsx +0 -470
  389. package/src/widgets/__tests__/radio/choice-icon.test.tsx +0 -90
  390. package/src/widgets/__tests__/radio/choice.test.tsx +0 -310
  391. package/src/widgets/__tests__/radio/focus-ring.test.tsx +0 -22
  392. package/src/widgets/__tests__/radio/option-status.test.tsx +0 -77
  393. package/src/widgets/__tests__/radio.test.ts +0 -807
  394. package/src/widgets/__tests__/randomizers.test.ts +0 -53
  395. package/src/widgets/__tests__/renderQuestion.tsx +0 -101
  396. package/src/widgets/__tests__/unit.test.tsx +0 -168
  397. package/src/widgets/__tests__/video.test.ts +0 -69
  398. package/src/widgets/categorizer.tsx +0 -344
  399. package/src/widgets/cs-program.tsx +0 -227
  400. package/src/widgets/definition.tsx +0 -121
  401. package/src/widgets/deprecated-standin/__stories__/deprecated-standin.stories.tsx +0 -30
  402. package/src/widgets/deprecated-standin/__tests__/__snapshots__/deprecated-standin.test.ts.snap +0 -70
  403. package/src/widgets/deprecated-standin/__tests__/deprecated-standin.test.ts +0 -93
  404. package/src/widgets/deprecated-standin/index.tsx +0 -58
  405. package/src/widgets/dropdown.tsx +0 -142
  406. package/src/widgets/explanation.tsx +0 -317
  407. package/src/widgets/expression.tsx +0 -707
  408. package/src/widgets/graded-group-answer-bar.tsx +0 -142
  409. package/src/widgets/graded-group-set.tsx +0 -338
  410. package/src/widgets/graded-group.tsx +0 -471
  411. package/src/widgets/grapher/util.tsx +0 -799
  412. package/src/widgets/grapher.tsx +0 -660
  413. package/src/widgets/group.tsx +0 -195
  414. package/src/widgets/iframe.tsx +0 -195
  415. package/src/widgets/image.tsx +0 -312
  416. package/src/widgets/input-number.tsx +0 -412
  417. package/src/widgets/interaction/arrow-picker.tsx +0 -38
  418. package/src/widgets/interaction/color-picker.tsx +0 -69
  419. package/src/widgets/interaction/dash-picker.tsx +0 -45
  420. package/src/widgets/interaction/element-container.tsx +0 -100
  421. package/src/widgets/interaction.tsx +0 -826
  422. package/src/widgets/interactive-graph.tsx +0 -2597
  423. package/src/widgets/label-image/__stories__/answer-choices.stories.tsx +0 -91
  424. package/src/widgets/label-image/__stories__/answer-pill.stories.tsx +0 -62
  425. package/src/widgets/label-image/__stories__/marker.stories.tsx +0 -171
  426. package/src/widgets/label-image/__tests__/answer-pill.test.tsx +0 -75
  427. package/src/widgets/label-image/__tests__/hide-answers-toggle.test.tsx +0 -39
  428. package/src/widgets/label-image/answer-choices.tsx +0 -88
  429. package/src/widgets/label-image/answer-pill.tsx +0 -103
  430. package/src/widgets/label-image/hide-answers-toggle.tsx +0 -40
  431. package/src/widgets/label-image/marker.tsx +0 -268
  432. package/src/widgets/label-image/strings.ts +0 -5
  433. package/src/widgets/label-image/types.ts +0 -27
  434. package/src/widgets/label-image.test.ts +0 -928
  435. package/src/widgets/label-image.tsx +0 -819
  436. package/src/widgets/lights-puzzle.tsx +0 -359
  437. package/src/widgets/matcher.tsx +0 -298
  438. package/src/widgets/matrix.tsx +0 -634
  439. package/src/widgets/measurer.tsx +0 -222
  440. package/src/widgets/molecule/__tests__/layout.test.ts +0 -162
  441. package/src/widgets/molecule/__tests__/parser.test.ts +0 -155
  442. package/src/widgets/molecule/molecule-drawing.ts +0 -173
  443. package/src/widgets/molecule/molecule-layout.ts +0 -362
  444. package/src/widgets/molecule/smiles-parser.ts +0 -296
  445. package/src/widgets/molecule.tsx +0 -172
  446. package/src/widgets/number-line.tsx +0 -862
  447. package/src/widgets/numeric-input.tsx +0 -576
  448. package/src/widgets/orderer.tsx +0 -786
  449. package/src/widgets/passage/__tests__/passage-markdown.test.ts +0 -376
  450. package/src/widgets/passage/passage-markdown.tsx +0 -475
  451. package/src/widgets/passage-ref-target.tsx +0 -76
  452. package/src/widgets/passage-ref.tsx +0 -213
  453. package/src/widgets/passage.tsx +0 -582
  454. package/src/widgets/plotter.tsx +0 -1194
  455. package/src/widgets/radio/__stories__/base-radio.stories.tsx +0 -196
  456. package/src/widgets/radio/__stories__/choice-icon.stories.tsx +0 -166
  457. package/src/widgets/radio/__stories__/choice-none-above.stories.tsx +0 -40
  458. package/src/widgets/radio/__stories__/choice.stories.tsx +0 -137
  459. package/src/widgets/radio/__stories__/focus-ring.stories.tsx +0 -43
  460. package/src/widgets/radio/__stories__/option-status.stories.tsx +0 -103
  461. package/src/widgets/radio/base-radio.tsx +0 -511
  462. package/src/widgets/radio/choice-a11y-text.ts +0 -61
  463. package/src/widgets/radio/choice-icon/choice-icon.tsx +0 -218
  464. package/src/widgets/radio/choice-icon/cross-out-line.tsx +0 -51
  465. package/src/widgets/radio/choice-icon/shared-styles.ts +0 -15
  466. package/src/widgets/radio/choice-none-above.tsx +0 -56
  467. package/src/widgets/radio/choice.jsx.fixture.ts +0 -45
  468. package/src/widgets/radio/choice.tsx +0 -359
  469. package/src/widgets/radio/focus-ring.tsx +0 -57
  470. package/src/widgets/radio/option-status.tsx +0 -98
  471. package/src/widgets/radio/util.test.ts +0 -18
  472. package/src/widgets/radio/util.ts +0 -31
  473. package/src/widgets/radio/widget.tsx +0 -520
  474. package/src/widgets/radio.ts +0 -157
  475. package/src/widgets/reaction-diagram.tsx +0 -144
  476. package/src/widgets/sequence.tsx +0 -142
  477. package/src/widgets/simulator.tsx +0 -829
  478. package/src/widgets/sorter.tsx +0 -155
  479. package/src/widgets/table.tsx +0 -393
  480. package/src/widgets/unit.tsx +0 -374
  481. package/src/widgets/video-transcript-link.test.tsx +0 -213
  482. package/src/widgets/video-transcript-link.tsx +0 -84
  483. package/src/widgets/video.tsx +0 -135
  484. package/src/widgets.ts +0 -489
  485. package/src/zoom.ts +0 -555
  486. package/tsconfig-build.json +0 -26
  487. package/tsconfig-build.tsbuildinfo +0 -1
@@ -1,249 +0,0 @@
1
- /* eslint-disable react/sort-comp */
2
- import * as PerseusLinter from "@khanacademy/perseus-linter";
3
- import * as React from "react";
4
- import _ from "underscore";
5
-
6
- import {ClassNames as ApiClassNames} from "../perseus-api";
7
- import Renderer from "../renderer";
8
- import Util from "../util";
9
-
10
- import MathInput from "./math-input";
11
- import MathOutput from "./math-output";
12
- import TextInput from "./text-input";
13
- import Tooltip, {HorizontalDirection, VerticalDirection} from "./tooltip";
14
-
15
- import type {LinterContextProps} from "@khanacademy/perseus-linter";
16
- import type {StyleType} from "@khanacademy/wonder-blocks-core";
17
-
18
- const {captureScratchpadTouchStart} = Util;
19
-
20
- type Props = {
21
- type: "math" | "text" | "tex";
22
- value: string;
23
- onChange: any;
24
- className: string;
25
- examples: ReadonlyArray<string>;
26
- shouldShowExamples: boolean;
27
- convertDotToTimes?: boolean;
28
- buttonSet?: string;
29
- buttonsVisible?: "always" | "never" | "focused";
30
- labelText?: string;
31
- onFocus: () => void;
32
- onBlur: () => void;
33
- disabled: boolean;
34
- style?: StyleType;
35
- id: string;
36
- linterContext: LinterContextProps;
37
- };
38
-
39
- type DefaultProps = {
40
- type: Props["type"];
41
- shouldShowExamples: Props["shouldShowExamples"];
42
- onFocus: Props["onFocus"];
43
- onBlur: Props["onBlur"];
44
- disabled: Props["disabled"];
45
- linterContext: Props["linterContext"];
46
- className: Props["className"];
47
- };
48
-
49
- type State = {
50
- focused: boolean;
51
- showExamples: boolean;
52
- };
53
-
54
- class InputWithExamples extends React.Component<Props, State> {
55
- static defaultProps: DefaultProps = {
56
- type: "text",
57
- shouldShowExamples: true,
58
- onFocus: function () {},
59
- onBlur: function () {},
60
- disabled: false,
61
- linterContext: PerseusLinter.linterContextDefault,
62
- className: "",
63
- };
64
-
65
- state: State = {
66
- focused: false,
67
- showExamples: false,
68
- };
69
-
70
- _getUniqueId: () => string = () => {
71
- return `input-with-examples-${btoa(this.props.id).replace(/=/g, "")}`;
72
- };
73
-
74
- _getInputClassName: () => string = () => {
75
- // <MathOutput> is a special component that manages its own class and
76
- // state, as it's a <span> that wants to act like an <input>.
77
- if (this.props.type === "tex") {
78
- return this.props.className;
79
- }
80
-
81
- // Otherwise, we need to add these INPUT and FOCUSED tags here.
82
- let className = ApiClassNames.INPUT + " " + ApiClassNames.INTERACTIVE;
83
- if (this.state.focused) {
84
- className += " " + ApiClassNames.FOCUSED;
85
- }
86
- if (this.props.className) {
87
- className += " " + this.props.className;
88
- }
89
- return className;
90
- };
91
-
92
- _getPropsForInputType: () => any = () => {
93
- // Minimal set of props, used by each input type
94
- const id = this._getUniqueId();
95
- const inputProps = {
96
- id: id,
97
- "aria-describedby": id,
98
- ref: "input",
99
- className: this._getInputClassName(),
100
- labelText: this.props.labelText,
101
- value: this.props.value,
102
- onFocus: this._handleFocus,
103
- onBlur: this._handleBlur,
104
- disabled: this.props.disabled,
105
- style: this.props.style,
106
- } as const;
107
-
108
- if (this.props.type === "tex") {
109
- return inputProps;
110
- }
111
-
112
- // Add useful props required for MATH and TEXT modes
113
- _.extend(inputProps, {
114
- onChange: this.props.onChange,
115
- onTouchStart: captureScratchpadTouchStart,
116
- });
117
-
118
- // And add final props that are MATH- and TEXT-specific
119
- if (this.props.type === "math") {
120
- return _.extend(
121
- {
122
- buttonSet: this.props.buttonSet,
123
- buttonsVisible: this.props.buttonsVisible,
124
- convertDotToTimes: this.props.convertDotToTimes,
125
- },
126
- inputProps,
127
- );
128
- }
129
- if (this.props.type === "text") {
130
- return _.extend(
131
- {
132
- autoCapitalize: "off",
133
- autoComplete: "off",
134
- autoCorrect: "off",
135
- spellCheck: "false",
136
- },
137
- inputProps,
138
- );
139
- }
140
- };
141
-
142
- _getComponentForInputType: () => any = () => {
143
- switch (this.props.type) {
144
- case "tex":
145
- return MathOutput;
146
-
147
- case "math":
148
- return MathInput;
149
-
150
- case "text":
151
- return TextInput;
152
-
153
- default:
154
- this.props.type as never;
155
- return null;
156
- }
157
- };
158
-
159
- _renderInput: () => any = () => {
160
- const inputProps = this._getPropsForInputType();
161
- const InputComponent = this._getComponentForInputType();
162
- return <InputComponent {...inputProps} />;
163
- };
164
-
165
- render(): React.ReactNode {
166
- const input = this._renderInput();
167
-
168
- // Static rendering, which doesn't include the 'tooltip' logic that the
169
- // other types require, and is hence handled separately.
170
- if (this.props.type === "tex") {
171
- return input;
172
- }
173
-
174
- // Else, we need to be able to show examples
175
- const examplesContent = _.map(this.props.examples, (example) => {
176
- return "- " + example;
177
- }).join("\n");
178
-
179
- const showExamples =
180
- this.props.shouldShowExamples && this.state.showExamples;
181
-
182
- return (
183
- <Tooltip
184
- // eslint-disable-next-line react/no-string-refs
185
- ref="tooltip"
186
- className="perseus-formats-tooltip preview-measure"
187
- horizontalPosition={HorizontalDirection.Left}
188
- horizontalAlign={HorizontalDirection.Left}
189
- verticalPosition={VerticalDirection.Bottom}
190
- arrowSize={10}
191
- borderColor="#ccc"
192
- show={showExamples}
193
- >
194
- {input}
195
- <div id={this._getUniqueId()}>
196
- <Renderer
197
- content={examplesContent}
198
- linterContext={PerseusLinter.pushContextStack(
199
- this.props.linterContext,
200
- "input-with-examples",
201
- )}
202
- />
203
- </div>
204
- </Tooltip>
205
- );
206
- }
207
-
208
- _handleFocus: () => void = () => {
209
- this.props.onFocus();
210
- this.setState({
211
- focused: true,
212
- showExamples: true,
213
- });
214
- };
215
-
216
- show: () => void = () => {
217
- this.setState({showExamples: true});
218
- };
219
-
220
- hide: () => void = () => {
221
- this.setState({showExamples: false});
222
- };
223
-
224
- _handleBlur: () => void = () => {
225
- this.props.onBlur();
226
- this.setState({
227
- focused: false,
228
- showExamples: false,
229
- });
230
- };
231
-
232
- focus: () => void = () => {
233
- // eslint-disable-next-line react/no-string-refs
234
- // @ts-expect-error - TS2339 - Property 'focus' does not exist on type 'ReactInstance'.
235
- this.refs.input.focus();
236
- };
237
-
238
- blur: () => void = () => {
239
- // eslint-disable-next-line react/no-string-refs
240
- // @ts-expect-error - TS2339 - Property 'blur' does not exist on type 'ReactInstance'.
241
- this.refs.input.blur();
242
- };
243
-
244
- handleChange: (arg1: any) => void = (e) => {
245
- this.props.onChange(e.target.value);
246
- };
247
- }
248
-
249
- export default InputWithExamples;
@@ -1,459 +0,0 @@
1
- import {StyleSheet, css} from "aphrodite";
2
- import * as React from "react";
3
- import ReactDOM from "react-dom";
4
-
5
- import * as constants from "../styles/constants";
6
-
7
- import InlineIcon from "./inline-icon";
8
-
9
- const exclamationIcon = {
10
- path: "M6 11a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0-9a1 1 0 0 1 1 1v4a1 1 0 1 1-2 0V3a1 1 0 0 1 1-1z",
11
- height: 12,
12
- width: 12,
13
- } as const;
14
-
15
- enum Severity {
16
- Error = 1,
17
- Warning = 2,
18
- Recommendation = 3,
19
- OfflineReportingOnly = 4,
20
- }
21
-
22
- type Props = {
23
- // The children are the linty content we're highlighting
24
- children: React.ReactNode;
25
- // Inline lint is highlighted differently than block lint.
26
- inline?: boolean;
27
- // This is the text that appears in the tooltip
28
- message: string;
29
- // This is used as the fragment id (hash) in the URL of the link
30
- ruleName: string;
31
- // Lint warnings inside tables are handled specially
32
- insideTable: boolean;
33
- // Should lint highlighting be rendered as a block to the left of
34
- // the lint instead of on the right gutter?
35
- blockHighlight?: boolean;
36
- // How important this lint message is for the editor. Severity goes
37
- // from 1 (indicating an error) to 4 (offline reporting only)
38
- severity?: Severity;
39
- };
40
-
41
- type State = {
42
- tooltipAbove: boolean;
43
- };
44
-
45
- /**
46
- * This component renders "lint" nodes in a markdown parse tree. Lint nodes
47
- * are inserted into the tree by the Perseus linter (see
48
- * perseus-linter/src/index).
49
- *
50
- * This component serves multiple purposes
51
- *
52
- * 1) It renders a small circle in the right margin to indicate that there
53
- * is lint on (or near) that line.
54
- *
55
- * 2) The area around the circle is hoverable: when the mouse moves over it
56
- * the linty content is highlighted and a tooltip is displayed that explains
57
- * what the problem is.
58
- *
59
- * 3) The hoverable area is also an HTML <a> tag. Clicking on it opens
60
- * a new tab and links to additional details about the specific lint rule.
61
- *
62
- * The CSS required to position the circles in the right margin is tricky
63
- * and it does not always work perfectly. When lint occurs on a block element
64
- * that has a right margin (like anything blockquoted) the circle will appear
65
- * to the left of where it belongs. And if there is more
66
- **/
67
- class Lint extends React.Component<Props, State> {
68
- _positionTimeout: number | undefined;
69
-
70
- state: State = {
71
- tooltipAbove: true,
72
- };
73
-
74
- componentDidMount() {
75
- // TODO(somewhatabstract): Use WB timing
76
- // eslint-disable-next-line no-restricted-syntax
77
- this._positionTimeout = window.setTimeout(this.getPosition);
78
- }
79
-
80
- componentWillUnmount() {
81
- // TODO(somewhatabstract): Use WB timing
82
- // eslint-disable-next-line no-restricted-syntax
83
- window.clearTimeout(this._positionTimeout);
84
- }
85
-
86
- // We can't call setState in componentDidMount without risking a render
87
- // thrash, and we can't call getBoundingClientRect in render, so we
88
- // borrow a timeout approach from learnstorm-dashboard.jsx and set our
89
- // state once the component has mounted and we can get what we need.
90
- getPosition: () => void = () => {
91
- // @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2339 - Property 'getBoundingClientRect' does not exist on type 'Element | Text'.
92
- const rect = ReactDOM.findDOMNode(this).getBoundingClientRect();
93
- // TODO(scottgrant): This is a magic number! We don't know the size
94
- // of the tooltip at this point, so we're arbitrarily choosing a
95
- // point at which to flip the tooltip's position.
96
- this.setState({tooltipAbove: rect.top > 100});
97
- };
98
-
99
- // Render the <a> element that holds the indicator icon and the tooltip
100
- // We pass different styles for the inline and block cases
101
- renderLink: (arg1: any) => React.ReactElement = (style) => {
102
- const tooltipAbove = this.state.tooltipAbove;
103
-
104
- let severityStyle;
105
- let warningText;
106
- let warningTextStyle;
107
- if (this.props.severity === Severity.Error) {
108
- severityStyle = styles.indicatorError;
109
- warningText = "Error";
110
- warningTextStyle = styles.publishBlockingError;
111
- } else if (this.props.severity === Severity.Warning) {
112
- severityStyle = styles.indicatorWarning;
113
- warningText = "Warning";
114
- warningTextStyle = styles.warning;
115
- } else {
116
- severityStyle = styles.indicatorGuideline;
117
- warningText = "Recommendation";
118
- warningTextStyle = styles.warning;
119
- }
120
-
121
- return (
122
- <a
123
- href={`https://khanacademy.org/r/linter-rules#${this.props.ruleName}`}
124
- target="lint-help-window"
125
- className={css(style)}
126
- >
127
- <span className={css(styles.indicator, severityStyle)}>
128
- {this.props.severity === 1 && (
129
- <InlineIcon {...exclamationIcon} />
130
- )}
131
- </span>
132
- <div
133
- className={css(
134
- styles.tooltip,
135
- tooltipAbove && styles.tooltipAbove,
136
- )}
137
- >
138
- {this.props.message.split("\n\n").map((m, i) => (
139
- <p key={i} className={css(styles.tooltipParagraph)}>
140
- <span className={css(warningTextStyle)}>
141
- {warningText}:{" "}
142
- </span>
143
- {m}
144
- </p>
145
- ))}
146
- <div
147
- className={css(
148
- styles.tail,
149
- tooltipAbove && styles.tailAbove,
150
- )}
151
- />
152
- </div>
153
- </a>
154
- );
155
- };
156
-
157
- // The main render method surrounds linty content with a block or
158
- // inline container and the link element that displays the indicator
159
- // and holds the tooltip.
160
- render(): React.ReactNode {
161
- const {children, inline, blockHighlight, insideTable} = this.props;
162
-
163
- if (insideTable) {
164
- // If we're inside a table, then linty nodes just get
165
- // a simple wrapper that allows them to be highlighted
166
- if (inline) {
167
- return <span data-lint-inside-table="true">{children}</span>;
168
- }
169
- return <div data-lint-inside-table="true">{children}</div>;
170
- }
171
- if (blockHighlight) {
172
- return (
173
- <span
174
- className={css(
175
- styles.lintContainer,
176
- styles.lintContainerBlock,
177
- )}
178
- >
179
- {this.renderLink(styles.radioWidgetHoverTarget)}
180
- <span>{children}</span>
181
- </span>
182
- );
183
- }
184
- if (inline) {
185
- return (
186
- <span className={css(styles.lintContainer)}>
187
- {this.renderLink(styles.inlineHoverTarget)}
188
- <span>{children}</span>
189
- </span>
190
- );
191
- }
192
- return (
193
- <div className={css(styles.lintContainer)}>
194
- {this.renderLink(styles.hoverTarget)}
195
- <div>{children}</div>
196
- </div>
197
- );
198
- }
199
- }
200
-
201
- const styles = StyleSheet.create({
202
- // This is the class of the outermost element.
203
- // We use relative positioning so that the lint indicator can be
204
- // positioned absolutely relative to the position of the linty container.
205
- lintContainer: {
206
- position: "relative",
207
- },
208
-
209
- // Some elements that might be inline with bad parent styling are treated
210
- // as block elements so they render and are visible.
211
- lintContainerBlock: {
212
- display: "block",
213
- },
214
-
215
- // This is the main class for block lint. It is applied to the link element
216
- // that is also the hover target.
217
- hoverTarget: {
218
- // Absolute positioning relative to the lintContainer element
219
- position: "absolute",
220
- // Top of the hover target is aligned with the top of the linty block
221
- top: 0,
222
-
223
- // We want the hover target in the right margin. It is 24px wide, but
224
- // we have to offset it another 16px because of margins in the
225
- // Perseus content. I'm not sure where the 16px margin is set
226
- // so if that changes, this number will also have to be changed.
227
- // This is the part of the CSS that doesn't work right when
228
- // applied to things like blockquotes that have different right
229
- // margins.
230
- right: -40,
231
-
232
- // The hover target is a 24x24 block element.
233
- display: "block",
234
- width: 24,
235
- height: 24,
236
-
237
- // The indicator is in a span inside the hover target.
238
- // This style changes its color on hover
239
- ":hover > span": {
240
- backgroundColor: constants.warningColorHover,
241
- },
242
-
243
- // The tooltip is in a div element inside the hover target.
244
- // This style displays it on hover
245
- ":hover div": {
246
- display: "block",
247
- },
248
-
249
- // The linty content is in a <div> sibling that follows the
250
- // hover target. This style highlights it on hover. We do an outline
251
- // rather than a border so we don't affect the layout. We could also
252
- // set the background color, but we don't because we can't reliably
253
- // set the text color of this block element. We could use
254
- // filter: invert(100%) if we want more visual change on hover here.
255
- ":hover ~ div": {
256
- outline: "1px solid " + constants.warningColor,
257
- },
258
-
259
- // If the div sibling is a table, then we may be displaying
260
- // lint warnings about errors inside that table. In that case
261
- // we want to highlight any linty descendants of the table
262
- ":hover ~ div div[data-lint-inside-table]": {
263
- outline: "1px solid " + constants.warningColor,
264
- },
265
-
266
- ":hover ~ div span[data-lint-inside-table]": {
267
- backgroundColor: constants.warningColor,
268
- color: constants.white,
269
- },
270
- },
271
-
272
- // This is how we position the hover target for inline lint.
273
- inlineHoverTarget: {
274
- // For inline lint we position the hover target with a float:right
275
- // We can't use absolute positioning as we do in the block case
276
- // because the horizontal position is not predictable in the
277
- // inline case.
278
- float: "right",
279
-
280
- // We still have to make the hover target relative so that the
281
- // tooltip can be positioned relative to it.
282
- position: "relative",
283
-
284
- // See the comment above about the extra 16px of offset needed here.
285
- marginRight: -40,
286
-
287
- // The hover target is a 24x24 block. Same as the block case
288
- display: "block",
289
- width: 24,
290
- height: 24,
291
-
292
- // The indicator is in a span inside the hover target.
293
- // This style changes its color on hover.
294
- // This is the same as the block case.
295
- ":hover > span": {
296
- backgroundColor: constants.warningColorHover,
297
- },
298
-
299
- // The tooltip is in a div element inside the hover target.
300
- // This style displays it on hover. This is the same as the block case.
301
- ":hover div": {
302
- display: "block",
303
- },
304
-
305
- // The linty content is in a <span> sibling that follows the
306
- // hover target. This style highlights it on hover. In this case
307
- // we can just set the foreground and background color to really
308
- // draw attention to the linty content.
309
- ":hover ~ span": {
310
- backgroundColor: constants.warningColor,
311
- color: constants.white,
312
- },
313
- },
314
-
315
- radioWidgetHoverTarget: {
316
- // These lint targets appear in radio checkboxes, and are not able to
317
- // position a lint icon in the right-most gutter thanks to a parent
318
- // overflow rule. We position these icons to the left of the block
319
- // where there is some room.
320
- position: "absolute",
321
- left: -40,
322
-
323
- // The hover target is a 24x24 block. Same as the block case
324
- display: "block",
325
- width: 24,
326
- height: 24,
327
-
328
- // By specifying a fixed minimum width, the tooltip will hover in a
329
- // readable position above and to the right.
330
- minWidth: 264,
331
-
332
- // The indicator is in a span inside the hover target.
333
- // This style changes its color on hover.
334
- // This is the same as the block case.
335
- ":hover > span": {
336
- backgroundColor: constants.warningColorHover,
337
- },
338
-
339
- // The tooltip is in a div element inside the hover target.
340
- // This style displays it on hover. This is the same as the block case.
341
- // We specify a fixed-width because of some parent styling.
342
- ":hover > div": {
343
- display: "block",
344
- padding: 8,
345
- width: 280,
346
- },
347
-
348
- // Move the tooltip tail to an appropriate position relative to the
349
- // tooltip.
350
- ":hover > div > div": {
351
- left: 8,
352
- },
353
-
354
- // The linty content is in a <span> sibling that follows the
355
- // hover target. This style highlights it on hover. In this case
356
- // we can just set the foreground and background color to really
357
- // draw attention to the linty content.
358
- ":hover ~ span": {
359
- backgroundColor: constants.warningColor,
360
- color: constants.white,
361
- },
362
- },
363
-
364
- // This is the class for the lint indicator in the margin.
365
- indicator: {
366
- alignItems: "center",
367
- borderRadius: 4,
368
- color: "white",
369
- display: "flex",
370
- fontSize: 12,
371
- height: 8,
372
- justifyContent: "center",
373
- margin: 8,
374
- width: 8,
375
- },
376
- indicatorError: {
377
- backgroundColor: "#be2612",
378
- borderRadius: 8,
379
- height: 16,
380
- width: 16,
381
- },
382
- indicatorWarning: {
383
- backgroundColor: "#f86700",
384
- },
385
- indicatorGuideline: {
386
- backgroundColor: "#ffbe26",
387
- },
388
-
389
- // These are the styles for the tooltip
390
- tooltip: {
391
- // Absolute positioning relative to the lint indicator circle.
392
- position: "absolute",
393
- right: -12,
394
-
395
- // The tooltip is hidden by default; only displayed on hover
396
- display: "none",
397
-
398
- // When it is displayed, it goes on top!
399
- zIndex: 1000,
400
-
401
- // These styles control what the tooltip looks like
402
- color: constants.white,
403
- backgroundColor: constants.gray17,
404
- opacity: 0.9,
405
- fontFamily: constants.baseFontFamily,
406
- fontSize: "12px",
407
- lineHeight: "15px",
408
- width: "320px",
409
- borderRadius: "4px",
410
- },
411
- // If we're going to render the tooltip above the warning circle, we use
412
- // the previous rules in tooltip, but change the position slightly.
413
- tooltipAbove: {
414
- bottom: 32,
415
- },
416
-
417
- // We give the tooltip a little triangular "tail" that points down at
418
- // the lint indicator circle. This is inside the tooltip and positioned
419
- // relative to it. It also shares the opacity of the tooltip. We're using
420
- // the standard CSS trick for drawing triangles with a thick border.
421
- tail: {
422
- position: "absolute",
423
- top: -12,
424
- right: 16,
425
- width: 0,
426
- height: 0,
427
-
428
- // This is the CSS triangle trick
429
- borderLeft: "8px solid transparent",
430
- borderRight: "8px solid transparent",
431
- borderBottom: "12px solid " + constants.gray17,
432
- },
433
- tailAbove: {
434
- bottom: -12,
435
- borderBottom: "none",
436
- borderTop: "12px solid " + constants.gray17,
437
- top: "auto",
438
- },
439
-
440
- // Each warning in the tooltip is its own <p>. They are 12 pixels from
441
- // the edges of the tooltip and 12 pixels from each other.
442
- tooltipParagraph: {
443
- margin: 12,
444
- },
445
-
446
- // The text "Warning" inside the tooltip is highlighted like this
447
- warning: {
448
- color: constants.warningColor,
449
- fontFamily: constants.boldFontFamily,
450
- },
451
-
452
- // The text "Publish-blocking error" instide the tooltip is highlighted
453
- // like this
454
- publishBlockingError: {
455
- color: constants.publishBlockingErrorColor,
456
- },
457
- });
458
-
459
- export default Lint;