@khanacademy/perseus 4.0.2 → 6.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 (249) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/dist/components/fixed-to-responsive.d.ts +27 -1
  3. package/dist/components/fixed-to-responsive.js.flow +27 -1
  4. package/dist/components/graph.d.ts +42 -26
  5. package/dist/components/graph.js.flow +42 -28
  6. package/dist/components/graphie.d.ts +34 -22
  7. package/dist/components/graphie.js.flow +37 -24
  8. package/dist/components/highlighting/highlightable-content.d.ts +4 -4
  9. package/dist/components/highlighting/highlightable-content.js.flow +4 -7
  10. package/dist/components/highlighting/ui/highlight-renderer.d.ts +6 -6
  11. package/dist/components/highlighting/ui/highlight-renderer.js.flow +6 -8
  12. package/dist/components/highlighting/ui/highlight-set-renderer.d.ts +5 -5
  13. package/dist/components/highlighting/ui/highlight-set-renderer.js.flow +5 -8
  14. package/dist/components/highlighting/ui/highlight-tooltip.d.ts +2 -2
  15. package/dist/components/highlighting/ui/highlight-tooltip.js.flow +2 -4
  16. package/dist/components/highlighting/ui/highlighting-ui.d.ts +2 -2
  17. package/dist/components/highlighting/ui/highlighting-ui.js.flow +2 -2
  18. package/dist/components/highlighting/ui/selection-tracker.d.ts +5 -5
  19. package/dist/components/highlighting/ui/selection-tracker.js.flow +5 -7
  20. package/dist/components/highlighting/word-indexer.d.ts +2 -2
  21. package/dist/components/highlighting/word-indexer.js.flow +2 -2
  22. package/dist/components/hud.d.ts +8 -14
  23. package/dist/components/hud.js.flow +7 -14
  24. package/dist/components/inline-icon.d.ts +27 -3
  25. package/dist/components/inline-icon.js.flow +26 -3
  26. package/dist/components/lint.d.ts +41 -13
  27. package/dist/components/lint.js.flow +42 -13
  28. package/dist/components/math-output.d.ts +15 -11
  29. package/dist/components/math-output.js.flow +15 -11
  30. package/dist/components/simple-keypad-input.d.ts +1 -1
  31. package/dist/components/simple-keypad-input.js.flow +1 -1
  32. package/dist/components/sortable.d.ts +17 -9
  33. package/dist/components/sortable.js.flow +22 -9
  34. package/dist/components/svg-image.d.ts +5 -3
  35. package/dist/components/svg-image.js.flow +5 -3
  36. package/dist/components/tex-buttons.d.ts +2 -2
  37. package/dist/components/tex-buttons.js.flow +2 -2
  38. package/dist/components/tooltip.d.ts +45 -4
  39. package/dist/components/tooltip.js.flow +44 -31
  40. package/dist/error-boundary.d.ts +4 -4
  41. package/dist/error-boundary.js.flow +4 -6
  42. package/dist/es/index.css +0 -3
  43. package/dist/es/index.js +484 -658
  44. package/dist/es/index.js.map +1 -1
  45. package/dist/index.css +0 -3
  46. package/dist/index.js +488 -655
  47. package/dist/index.js.map +1 -1
  48. package/dist/perseus-types.d.ts +11 -10
  49. package/dist/perseus-types.js.flow +11 -10
  50. package/dist/renderer.d.ts +2 -2
  51. package/dist/renderer.js.flow +1 -3
  52. package/dist/styles/shared.d.ts +0 -1
  53. package/dist/styles/shared.js.flow +0 -1
  54. package/dist/types.d.ts +0 -10
  55. package/dist/types.js.flow +0 -13
  56. package/dist/util/a11y.d.ts +0 -1
  57. package/dist/util/a11y.js.flow +0 -1
  58. package/dist/util/interactive.d.ts +2 -0
  59. package/dist/util/interactive.js.flow +2 -0
  60. package/dist/util.d.ts +3 -3
  61. package/dist/util.js.flow +4 -3
  62. package/dist/widgets/__stories__/test-keypad-context-wrapper.d.ts +2 -2
  63. package/dist/widgets/__stories__/test-keypad-context-wrapper.js.flow +2 -4
  64. package/dist/widgets/expression.d.ts +2 -2
  65. package/dist/widgets/expression.js.flow +2 -2
  66. package/dist/widgets/grapher.d.ts +1 -1
  67. package/dist/widgets/grapher.js.flow +12 -3
  68. package/dist/widgets/interaction/element-container.d.ts +5 -4
  69. package/dist/widgets/interaction/element-container.js.flow +6 -11
  70. package/dist/widgets/label-image/marker.d.ts +4 -4
  71. package/dist/widgets/label-image/marker.js.flow +4 -6
  72. package/dist/widgets/matcher.d.ts +7 -3
  73. package/dist/widgets/matcher.js.flow +7 -3
  74. package/dist/widgets/number-line.d.ts +1 -1
  75. package/dist/widgets/number-line.js.flow +1 -1
  76. package/dist/widgets/numeric-input.d.ts +0 -2
  77. package/dist/widgets/numeric-input.js.flow +0 -4
  78. package/dist/widgets/radio/base-radio.d.ts +7 -1
  79. package/dist/widgets/radio/base-radio.js.flow +7 -1
  80. package/dist/widgets/radio/choice-icon/choice-icon.d.ts +1 -1
  81. package/dist/widgets/radio/choice-icon/choice-icon.js.flow +1 -1
  82. package/dist/widgets/radio/choice-icon/cross-out-line.d.ts +2 -2
  83. package/dist/widgets/radio/choice-icon/cross-out-line.js.flow +2 -2
  84. package/dist/widgets/radio/focus-ring.d.ts +8 -1
  85. package/dist/widgets/radio/focus-ring.js.flow +8 -1
  86. package/dist/widgets/radio/option-status.d.ts +2 -2
  87. package/dist/widgets/radio/option-status.js.flow +2 -2
  88. package/dist/widgets/video-transcript-link.d.ts +1 -1
  89. package/dist/widgets/video-transcript-link.js.flow +1 -1
  90. package/package.json +4 -4
  91. package/src/__stories__/item-renderer.stories.tsx +2 -6
  92. package/src/__stories__/server-item-renderer.stories.tsx +2 -6
  93. package/src/__tests__/__snapshots__/item-renderer.test.tsx.snap +151 -159
  94. package/src/__tests__/__snapshots__/renderer.test.tsx.snap +358 -394
  95. package/src/__tests__/__snapshots__/server-item-renderer.test.tsx.snap +169 -189
  96. package/src/components/__stories__/button-group.stories.tsx +2 -6
  97. package/src/components/__stories__/fixed-to-responsive.stories.tsx +14 -16
  98. package/src/components/__stories__/graph.stories.tsx +3 -5
  99. package/src/components/__stories__/graphie.stories.tsx +3 -5
  100. package/src/components/__stories__/hud.stories.tsx +2 -6
  101. package/src/components/__stories__/icon.stories.tsx +1 -1
  102. package/src/components/__stories__/image-loader.stories.tsx +4 -4
  103. package/src/components/__stories__/info-tip.stories.tsx +2 -6
  104. package/src/components/__stories__/inline-icon.stories.tsx +4 -8
  105. package/src/components/__stories__/input-with-examples.stories.tsx +6 -10
  106. package/src/components/__stories__/lint.stories.tsx +62 -27
  107. package/src/components/__stories__/math-input.stories.tsx +4 -8
  108. package/src/components/__stories__/math-output.stories.tsx +3 -5
  109. package/src/components/__stories__/multi-button-group.stories.tsx +2 -6
  110. package/src/components/__stories__/number-input.stories.tsx +6 -8
  111. package/src/components/__stories__/prop-check-box.stories.tsx +9 -9
  112. package/src/components/__stories__/range-input.stories.tsx +4 -6
  113. package/src/components/__stories__/simple-keypad-input.stories.tsx +2 -4
  114. package/src/components/__stories__/sortable.stories.tsx +20 -20
  115. package/src/components/__stories__/stub-tag-editor.stories.tsx +5 -9
  116. package/src/components/__stories__/svg-image.stories.tsx +10 -18
  117. package/src/components/__stories__/tex.stories.tsx +1 -3
  118. package/src/components/__stories__/text-buttons.stories.tsx +10 -22
  119. package/src/components/__stories__/text-input.stories.tsx +4 -10
  120. package/src/components/__stories__/text-list-editor.stories.tsx +1 -3
  121. package/src/components/__stories__/tooltip.stories.tsx +52 -0
  122. package/src/components/__stories__/zoomable-tex.stories.tsx +6 -4
  123. package/src/components/__stories__/zoomable.stories.tsx +1 -3
  124. package/src/components/__tests__/__snapshots__/sortable.test.tsx.snap +114 -30
  125. package/src/components/__tests__/__snapshots__/sorter.test.tsx.snap +172 -204
  126. package/src/components/__tests__/sortable.test.tsx +54 -16
  127. package/src/components/__tests__/sorter.test.tsx +12 -9
  128. package/src/components/fixed-to-responsive.tsx +43 -38
  129. package/src/components/graph.tsx +95 -81
  130. package/src/components/graphie.tsx +62 -32
  131. package/src/components/highlighting/highlightable-content.tsx +4 -7
  132. package/src/components/highlighting/ui/highlight-renderer.tsx +6 -9
  133. package/src/components/highlighting/ui/highlight-set-renderer.tsx +5 -8
  134. package/src/components/highlighting/ui/highlight-tooltip.tsx +2 -2
  135. package/src/components/highlighting/ui/highlighting-ui.tsx +2 -2
  136. package/src/components/highlighting/ui/selection-tracker.tsx +5 -8
  137. package/src/components/highlighting/word-indexer.tsx +2 -2
  138. package/src/components/hud.tsx +104 -115
  139. package/src/components/inline-icon.tsx +17 -34
  140. package/src/components/input-with-examples.tsx +4 -4
  141. package/src/components/lint.tsx +47 -41
  142. package/src/components/math-output.tsx +17 -11
  143. package/src/components/simple-keypad-input.tsx +4 -4
  144. package/src/components/sortable.tsx +134 -94
  145. package/src/components/svg-image.tsx +10 -11
  146. package/src/components/tex-buttons.tsx +2 -2
  147. package/src/components/tooltip.tsx +189 -171
  148. package/src/components/visibility-observer/__stories__/visibility-observer.stories.tsx +1 -3
  149. package/src/error-boundary.tsx +4 -7
  150. package/src/interactive2/types.ts +2 -2
  151. package/src/multi-items/__stories__/multi-renderer.stories.tsx +1 -1
  152. package/src/multi-items/__tests__/__snapshots__/multi-renderer.test.tsx.snap +708 -764
  153. package/src/multi-items/__tests__/multi-renderer.test.tsx +2 -3
  154. package/src/perseus-types.ts +13 -12
  155. package/src/renderer.tsx +11 -22
  156. package/src/types.ts +0 -18
  157. package/src/util/graphie.ts +3 -3
  158. package/src/util/interactive.ts +18 -5
  159. package/src/util/tex.ts +13 -77
  160. package/src/util.ts +3 -4
  161. package/src/widgets/__stories__/categorizer.stories.tsx +1 -1
  162. package/src/widgets/__stories__/cs-program.stories.tsx +1 -1
  163. package/src/widgets/__stories__/definition.stories.tsx +3 -7
  164. package/src/widgets/__stories__/dropdown.stories.tsx +1 -1
  165. package/src/widgets/__stories__/explanation.stories.tsx +2 -2
  166. package/src/widgets/__stories__/expression.stories.tsx +5 -11
  167. package/src/widgets/__stories__/graded-group-set.stories.tsx +1 -1
  168. package/src/widgets/__stories__/graded-group.stories.tsx +1 -1
  169. package/src/widgets/__stories__/grapher.stories.tsx +7 -21
  170. package/src/widgets/__stories__/group.stories.tsx +1 -1
  171. package/src/widgets/__stories__/iframe.stories.tsx +1 -1
  172. package/src/widgets/__stories__/image.stories.tsx +1 -1
  173. package/src/widgets/__stories__/input-number.stories.tsx +3 -12
  174. package/src/widgets/__stories__/interaction.stories.tsx +1 -1
  175. package/src/widgets/__stories__/interactive-graph.stories.tsx +9 -9
  176. package/src/widgets/__stories__/matcher.stories.tsx +1 -1
  177. package/src/widgets/__stories__/matrix.stories.tsx +1 -1
  178. package/src/widgets/__stories__/number-line.stories.tsx +1 -1
  179. package/src/widgets/__stories__/numeric-input.stories.tsx +3 -5
  180. package/src/widgets/__stories__/orderer.stories.tsx +1 -1
  181. package/src/widgets/__stories__/passage-ref.stories.tsx +2 -2
  182. package/src/widgets/__stories__/passage.stories.tsx +3 -9
  183. package/src/widgets/__stories__/radio.stories.tsx +3 -5
  184. package/src/widgets/__stories__/sorter.stories.tsx +1 -1
  185. package/src/widgets/__stories__/test-keypad-context-wrapper.tsx +2 -4
  186. package/src/widgets/__stories__/transformer.stories.tsx +1 -1
  187. package/src/widgets/__stories__/unit.stories.tsx +1 -3
  188. package/src/widgets/__stories__/video-transcript-link.stories.tsx +2 -6
  189. package/src/widgets/__stories__/video.stories.tsx +1 -1
  190. package/src/widgets/__testdata__/group.testdata.ts +0 -2
  191. package/src/widgets/__tests__/__snapshots__/categorizer.test.ts.snap +717 -773
  192. package/src/widgets/__tests__/__snapshots__/cs-program.test.ts.snap +28 -36
  193. package/src/widgets/__tests__/__snapshots__/definition.test.ts.snap +52 -60
  194. package/src/widgets/__tests__/__snapshots__/dropdown.test.ts.snap +100 -108
  195. package/src/widgets/__tests__/__snapshots__/explanation.test.ts.snap +212 -260
  196. package/src/widgets/__tests__/__snapshots__/graded-group-set-jipt.test.ts.snap +613 -641
  197. package/src/widgets/__tests__/__snapshots__/graded-group-set.test.ts.snap +249 -261
  198. package/src/widgets/__tests__/__snapshots__/graded-group.test.ts.snap +671 -735
  199. package/src/widgets/__tests__/__snapshots__/grapher.test.ts.snap +2676 -2684
  200. package/src/widgets/__tests__/__snapshots__/group.test.tsx.snap +938 -1002
  201. package/src/widgets/__tests__/__snapshots__/iframe.test.ts.snap +28 -36
  202. package/src/widgets/__tests__/__snapshots__/image.test.ts.snap +227 -255
  203. package/src/widgets/__tests__/__snapshots__/input-number.test.ts.snap +353 -357
  204. package/src/widgets/__tests__/__snapshots__/interaction.test.ts.snap +255 -259
  205. package/src/widgets/__tests__/__snapshots__/interactive-graph.test.ts.snap +2401 -2433
  206. package/src/widgets/__tests__/__snapshots__/matcher.test.tsx.snap +600 -756
  207. package/src/widgets/__tests__/__snapshots__/matrix.test.ts.snap +420 -428
  208. package/src/widgets/__tests__/__snapshots__/number-line.test.ts.snap +762 -770
  209. package/src/widgets/__tests__/__snapshots__/numeric-input.test.ts.snap +373 -393
  210. package/src/widgets/__tests__/__snapshots__/orderer.test.ts.snap +116 -148
  211. package/src/widgets/__tests__/__snapshots__/passage-ref.test.ts.snap +289 -301
  212. package/src/widgets/__tests__/__snapshots__/passage.test.tsx.snap +1679 -1711
  213. package/src/widgets/__tests__/__snapshots__/radio.test.ts.snap +2692 -2960
  214. package/src/widgets/__tests__/__snapshots__/video.test.ts.snap +90 -98
  215. package/src/widgets/__tests__/group.test.tsx +0 -2
  216. package/src/widgets/__tests__/matcher.test.tsx +33 -9
  217. package/src/widgets/__tests__/radio/focus-ring.test.tsx +0 -1
  218. package/src/widgets/expression.tsx +12 -9
  219. package/src/widgets/grapher.tsx +3 -3
  220. package/src/widgets/image.tsx +2 -2
  221. package/src/widgets/interaction/element-container.tsx +7 -8
  222. package/src/widgets/interactive-graph.tsx +5 -5
  223. package/src/widgets/label-image/__stories__/answer-choices.stories.tsx +2 -4
  224. package/src/widgets/label-image/__stories__/marker.stories.tsx +9 -19
  225. package/src/widgets/label-image/marker.tsx +4 -4
  226. package/src/widgets/matcher.tsx +43 -24
  227. package/src/widgets/number-line.tsx +1 -1
  228. package/src/widgets/numeric-input.tsx +0 -3
  229. package/src/widgets/passage/passage-markdown.tsx +2 -2
  230. package/src/widgets/radio/__stories__/base-radio.stories.tsx +11 -19
  231. package/src/widgets/radio/__stories__/choice-icon.stories.tsx +9 -11
  232. package/src/widgets/radio/__stories__/choice-none-above.stories.tsx +1 -1
  233. package/src/widgets/radio/__stories__/choice.stories.tsx +4 -4
  234. package/src/widgets/radio/__stories__/focus-ring.stories.tsx +1 -1
  235. package/src/widgets/radio/__stories__/option-status.stories.tsx +2 -4
  236. package/src/widgets/radio/base-radio.tsx +1 -1
  237. package/src/widgets/radio/choice-icon/choice-icon.tsx +5 -5
  238. package/src/widgets/radio/choice-icon/cross-out-line.tsx +1 -3
  239. package/src/widgets/radio/choice-none-above.tsx +2 -2
  240. package/src/widgets/radio/choice.tsx +1 -3
  241. package/src/widgets/radio/focus-ring.tsx +1 -1
  242. package/src/widgets/radio/option-status.tsx +2 -4
  243. package/src/widgets/radio/widget.tsx +0 -1
  244. package/src/widgets/reaction-diagram.tsx +2 -2
  245. package/src/widgets/simulator.tsx +4 -6
  246. package/src/widgets/video-transcript-link.tsx +1 -1
  247. package/{tsconfig.json → tsconfig-build.json} +6 -6
  248. package/tsconfig-build.tsbuildinfo +1 -0
  249. package/tsconfig.tsbuildinfo +0 -1
@@ -2,296 +2,264 @@
2
2
 
3
3
  exports[`sorter widget should snapshot on mobile: first mobile render 1`] = `
4
4
  <div>
5
- <span
6
- class="mock-KatexProvider"
5
+ <div
6
+ class="perseus-renderer perseus-renderer-responsive"
7
7
  >
8
8
  <div
9
- class="perseus-renderer perseus-renderer-responsive"
9
+ class="paragraph"
10
+ data-perseus-paragraph-index="0"
10
11
  >
11
12
  <div
12
13
  class="paragraph"
13
- data-perseus-paragraph-index="0"
14
14
  >
15
- <div
16
- class="paragraph"
17
- >
18
- <strong>
19
- Arrange the following measurements in order from smallest to largest.
20
- </strong>
21
- </div>
15
+ <strong>
16
+ Arrange the following measurements in order from smallest to largest.
17
+ </strong>
22
18
  </div>
19
+ </div>
20
+ <div
21
+ class="paragraph"
22
+ data-perseus-paragraph-index="1"
23
+ >
23
24
  <div
24
25
  class="paragraph"
25
- data-perseus-paragraph-index="1"
26
26
  >
27
27
  <div
28
- class="paragraph"
28
+ class="perseus-widget-container widget-nohighlight widget-block"
29
29
  >
30
30
  <div
31
- class="perseus-widget-container widget-nohighlight widget-block"
31
+ class="perseus-widget-sorter perseus-clearfix"
32
32
  >
33
- <div
34
- class="perseus-widget-sorter perseus-clearfix"
33
+ <ul
34
+ class="sortable_13d4756 perseus-sortable"
35
35
  >
36
- <ul
37
- class="sortable_13d4756 perseus-sortable"
36
+ <li
37
+ class="card_1s6cuhy-o_O-draggable_12to336-o_O-horizontalCard_9um937 perseus-interactive perseus-sortable-draggable"
38
+ style="position: static; margin: 0px 8px 0px 0px;"
38
39
  >
39
- <li
40
- class="card_1s6cuhy-o_O-draggable_12to336-o_O-horizontalCard_9um937 perseus-interactive perseus-sortable-draggable"
41
- style="position: static; margin: 0px 8px 0px 0px;"
40
+ <div
41
+ class="perseus-renderer perseus-renderer-responsive"
42
42
  >
43
- <span
44
- class="mock-KatexProvider"
43
+ <div
44
+ class="paragraph"
45
+ data-perseus-paragraph-index="0"
45
46
  >
46
47
  <div
47
- class="perseus-renderer perseus-renderer-responsive"
48
+ class="paragraph"
48
49
  >
49
- <div
50
- class="paragraph"
51
- data-perseus-paragraph-index="0"
50
+ <span
51
+ style="white-space: nowrap;"
52
52
  >
53
- <div
54
- class="paragraph"
53
+ <span />
54
+ <span
55
+ class="tex-mock"
55
56
  >
56
- <span
57
- style="white-space: nowrap;"
58
- >
59
- <span />
60
- <span
61
- class="tex-mock"
62
- >
63
- 15
64
- </span>
65
- <span />
66
- </span>
67
- grams
68
- </div>
69
- </div>
57
+ 15
58
+ </span>
59
+ <span />
60
+ </span>
61
+ grams
70
62
  </div>
71
- </span>
72
- </li>
73
- <li
74
- class="card_1s6cuhy-o_O-draggable_12to336-o_O-horizontalCard_9um937 perseus-interactive perseus-sortable-draggable"
75
- style="position: static; margin: 0px 8px 0px 0px;"
63
+ </div>
64
+ </div>
65
+ </li>
66
+ <li
67
+ class="card_1s6cuhy-o_O-draggable_12to336-o_O-horizontalCard_9um937 perseus-interactive perseus-sortable-draggable"
68
+ style="position: static; margin: 0px 8px 0px 0px;"
69
+ >
70
+ <div
71
+ class="perseus-renderer perseus-renderer-responsive"
76
72
  >
77
- <span
78
- class="mock-KatexProvider"
73
+ <div
74
+ class="paragraph"
75
+ data-perseus-paragraph-index="0"
79
76
  >
80
77
  <div
81
- class="perseus-renderer perseus-renderer-responsive"
78
+ class="paragraph"
82
79
  >
83
- <div
84
- class="paragraph"
85
- data-perseus-paragraph-index="0"
80
+ <span
81
+ style="white-space: nowrap;"
86
82
  >
87
- <div
88
- class="paragraph"
83
+ <span />
84
+ <span
85
+ class="tex-mock"
89
86
  >
90
- <span
91
- style="white-space: nowrap;"
92
- >
93
- <span />
94
- <span
95
- class="tex-mock"
96
- >
97
- 0.005
98
- </span>
99
- <span />
100
- </span>
101
- kilograms
102
- </div>
103
- </div>
87
+ 0.005
88
+ </span>
89
+ <span />
90
+ </span>
91
+ kilograms
104
92
  </div>
105
- </span>
106
- </li>
107
- <li
108
- class="card_1s6cuhy-o_O-draggable_12to336-o_O-horizontalCard_9um937 perseus-interactive perseus-sortable-draggable"
109
- style="position: static; margin: 0px;"
93
+ </div>
94
+ </div>
95
+ </li>
96
+ <li
97
+ class="card_1s6cuhy-o_O-draggable_12to336-o_O-horizontalCard_9um937 perseus-interactive perseus-sortable-draggable"
98
+ style="position: static; margin: 0px;"
99
+ >
100
+ <div
101
+ class="perseus-renderer perseus-renderer-responsive"
110
102
  >
111
- <span
112
- class="mock-KatexProvider"
103
+ <div
104
+ class="paragraph"
105
+ data-perseus-paragraph-index="0"
113
106
  >
114
107
  <div
115
- class="perseus-renderer perseus-renderer-responsive"
108
+ class="paragraph"
116
109
  >
117
- <div
118
- class="paragraph"
119
- data-perseus-paragraph-index="0"
110
+ <span
111
+ style="white-space: nowrap;"
120
112
  >
121
- <div
122
- class="paragraph"
113
+ <span />
114
+ <span
115
+ class="tex-mock"
123
116
  >
124
- <span
125
- style="white-space: nowrap;"
126
- >
127
- <span />
128
- <span
129
- class="tex-mock"
130
- >
131
- 55
132
- </span>
133
- <span />
134
- </span>
135
- grams
136
- </div>
137
- </div>
117
+ 55
118
+ </span>
119
+ <span />
120
+ </span>
121
+ grams
138
122
  </div>
139
- </span>
140
- </li>
141
- </ul>
142
- </div>
123
+ </div>
124
+ </div>
125
+ </li>
126
+ </ul>
143
127
  </div>
144
128
  </div>
145
129
  </div>
146
130
  </div>
147
- </span>
131
+ </div>
148
132
  </div>
149
133
  `;
150
134
 
151
135
  exports[`sorter widget should snapshot: first render 1`] = `
152
136
  <div>
153
- <span
154
- class="mock-KatexProvider"
137
+ <div
138
+ class="perseus-renderer perseus-renderer-responsive"
155
139
  >
156
140
  <div
157
- class="perseus-renderer perseus-renderer-responsive"
141
+ class="paragraph"
142
+ data-perseus-paragraph-index="0"
158
143
  >
159
144
  <div
160
145
  class="paragraph"
161
- data-perseus-paragraph-index="0"
162
146
  >
163
- <div
164
- class="paragraph"
165
- >
166
- <strong>
167
- Arrange the following measurements in order from smallest to largest.
168
- </strong>
169
- </div>
147
+ <strong>
148
+ Arrange the following measurements in order from smallest to largest.
149
+ </strong>
170
150
  </div>
151
+ </div>
152
+ <div
153
+ class="paragraph"
154
+ data-perseus-paragraph-index="1"
155
+ >
171
156
  <div
172
157
  class="paragraph"
173
- data-perseus-paragraph-index="1"
174
158
  >
175
159
  <div
176
- class="paragraph"
160
+ class="perseus-widget-container widget-nohighlight widget-block"
177
161
  >
178
162
  <div
179
- class="perseus-widget-container widget-nohighlight widget-block"
163
+ class="perseus-widget-sorter perseus-clearfix"
180
164
  >
181
- <div
182
- class="perseus-widget-sorter perseus-clearfix"
165
+ <ul
166
+ class="sortable_13d4756 perseus-sortable"
183
167
  >
184
- <ul
185
- class="sortable_13d4756 perseus-sortable"
168
+ <li
169
+ class="card_1s6cuhy-o_O-draggable_12to336-o_O-horizontalCard_9um937 perseus-interactive perseus-sortable-draggable"
170
+ style="position: static; margin: 0px 5px 0px 0px;"
186
171
  >
187
- <li
188
- class="card_1s6cuhy-o_O-draggable_12to336-o_O-horizontalCard_9um937 perseus-interactive perseus-sortable-draggable"
189
- style="position: static; margin: 0px 5px 0px 0px;"
172
+ <div
173
+ class="perseus-renderer perseus-renderer-responsive"
190
174
  >
191
- <span
192
- class="mock-KatexProvider"
175
+ <div
176
+ class="paragraph"
177
+ data-perseus-paragraph-index="0"
193
178
  >
194
179
  <div
195
- class="perseus-renderer perseus-renderer-responsive"
180
+ class="paragraph"
196
181
  >
197
- <div
198
- class="paragraph"
199
- data-perseus-paragraph-index="0"
182
+ <span
183
+ style="white-space: nowrap;"
200
184
  >
201
- <div
202
- class="paragraph"
185
+ <span />
186
+ <span
187
+ class="tex-mock"
203
188
  >
204
- <span
205
- style="white-space: nowrap;"
206
- >
207
- <span />
208
- <span
209
- class="tex-mock"
210
- >
211
- 15
212
- </span>
213
- <span />
214
- </span>
215
- grams
216
- </div>
217
- </div>
189
+ 15
190
+ </span>
191
+ <span />
192
+ </span>
193
+ grams
218
194
  </div>
219
- </span>
220
- </li>
221
- <li
222
- class="card_1s6cuhy-o_O-draggable_12to336-o_O-horizontalCard_9um937 perseus-interactive perseus-sortable-draggable"
223
- style="position: static; margin: 0px 5px 0px 0px;"
195
+ </div>
196
+ </div>
197
+ </li>
198
+ <li
199
+ class="card_1s6cuhy-o_O-draggable_12to336-o_O-horizontalCard_9um937 perseus-interactive perseus-sortable-draggable"
200
+ style="position: static; margin: 0px 5px 0px 0px;"
201
+ >
202
+ <div
203
+ class="perseus-renderer perseus-renderer-responsive"
224
204
  >
225
- <span
226
- class="mock-KatexProvider"
205
+ <div
206
+ class="paragraph"
207
+ data-perseus-paragraph-index="0"
227
208
  >
228
209
  <div
229
- class="perseus-renderer perseus-renderer-responsive"
210
+ class="paragraph"
230
211
  >
231
- <div
232
- class="paragraph"
233
- data-perseus-paragraph-index="0"
212
+ <span
213
+ style="white-space: nowrap;"
234
214
  >
235
- <div
236
- class="paragraph"
215
+ <span />
216
+ <span
217
+ class="tex-mock"
237
218
  >
238
- <span
239
- style="white-space: nowrap;"
240
- >
241
- <span />
242
- <span
243
- class="tex-mock"
244
- >
245
- 0.005
246
- </span>
247
- <span />
248
- </span>
249
- kilograms
250
- </div>
251
- </div>
219
+ 0.005
220
+ </span>
221
+ <span />
222
+ </span>
223
+ kilograms
252
224
  </div>
253
- </span>
254
- </li>
255
- <li
256
- class="card_1s6cuhy-o_O-draggable_12to336-o_O-horizontalCard_9um937 perseus-interactive perseus-sortable-draggable"
257
- style="position: static; margin: 0px;"
225
+ </div>
226
+ </div>
227
+ </li>
228
+ <li
229
+ class="card_1s6cuhy-o_O-draggable_12to336-o_O-horizontalCard_9um937 perseus-interactive perseus-sortable-draggable"
230
+ style="position: static; margin: 0px;"
231
+ >
232
+ <div
233
+ class="perseus-renderer perseus-renderer-responsive"
258
234
  >
259
- <span
260
- class="mock-KatexProvider"
235
+ <div
236
+ class="paragraph"
237
+ data-perseus-paragraph-index="0"
261
238
  >
262
239
  <div
263
- class="perseus-renderer perseus-renderer-responsive"
240
+ class="paragraph"
264
241
  >
265
- <div
266
- class="paragraph"
267
- data-perseus-paragraph-index="0"
242
+ <span
243
+ style="white-space: nowrap;"
268
244
  >
269
- <div
270
- class="paragraph"
245
+ <span />
246
+ <span
247
+ class="tex-mock"
271
248
  >
272
- <span
273
- style="white-space: nowrap;"
274
- >
275
- <span />
276
- <span
277
- class="tex-mock"
278
- >
279
- 55
280
- </span>
281
- <span />
282
- </span>
283
- grams
284
- </div>
285
- </div>
249
+ 55
250
+ </span>
251
+ <span />
252
+ </span>
253
+ grams
286
254
  </div>
287
- </span>
288
- </li>
289
- </ul>
290
- </div>
255
+ </div>
256
+ </div>
257
+ </li>
258
+ </ul>
291
259
  </div>
292
260
  </div>
293
261
  </div>
294
262
  </div>
295
- </span>
263
+ </div>
296
264
  </div>
297
265
  `;
@@ -4,7 +4,7 @@ import "@testing-library/jest-dom"; // Imports custom mathers
4
4
 
5
5
  import {testDependencies} from "../../../../../testing/test-dependencies";
6
6
  import * as Dependencies from "../../dependencies";
7
- import Sortable from "../sortable";
7
+ import Sortable, {Layout} from "../sortable";
8
8
 
9
9
  describe("Sortable", () => {
10
10
  beforeEach(() => {
@@ -17,15 +17,53 @@ describe("Sortable", () => {
17
17
  // Arrange and Act
18
18
  const {container} = render(
19
19
  <Sortable
20
- layout="horizontal"
20
+ layout={Layout.HORIZONTAL}
21
21
  options={["a", "b", "c"]}
22
- waitForKatexLoad={false}
22
+ waitForTexRendererToLoad={false}
23
23
  />,
24
24
  );
25
25
 
26
26
  // Assert
27
27
  expect(container).toMatchSnapshot("first render");
28
28
  });
29
+
30
+ it("renders a spinner while waiting for the TeX renderer to load", () => {
31
+ let simulateFakeTeXRendering = () => {};
32
+ function FakeTeX({
33
+ children,
34
+ onRender,
35
+ }: {
36
+ children: string;
37
+ onRender?: () => unknown;
38
+ }) {
39
+ simulateFakeTeXRendering = onRender || simulateFakeTeXRendering;
40
+ return <div className="fake-tex">{children}</div>;
41
+ }
42
+ jest.spyOn(Dependencies, "getDependencies").mockReturnValue({
43
+ ...testDependencies,
44
+ TeX: FakeTeX,
45
+ });
46
+
47
+ // Act
48
+ const {container} = render(
49
+ <Sortable
50
+ waitForTexRendererToLoad={true}
51
+ layout={Layout.HORIZONTAL}
52
+ options={["a", "b", "c"]}
53
+ />,
54
+ );
55
+
56
+ // Assert
57
+ expect(container).toMatchSnapshot("first render: displays a spinner");
58
+
59
+ // Act
60
+ simulateFakeTeXRendering();
61
+
62
+ // Assert
63
+ expect(container).toMatchSnapshot(
64
+ "second render: displays the sortable",
65
+ );
66
+ });
29
67
  });
30
68
 
31
69
  describe("moveOptionToIndex", () => {
@@ -41,9 +79,9 @@ describe("moveOptionToIndex", () => {
41
79
  render(
42
80
  <Sortable
43
81
  ref={(r) => (sortable = r)}
44
- layout="horizontal"
82
+ layout={Layout.HORIZONTAL}
45
83
  options={["a", "b", "c"]}
46
- waitForKatexLoad={false}
84
+ waitForTexRendererToLoad={false}
47
85
  />,
48
86
  );
49
87
 
@@ -64,9 +102,9 @@ describe("moveOptionToIndex", () => {
64
102
  render(
65
103
  <Sortable
66
104
  ref={(r) => (sortable = r)}
67
- layout="horizontal"
105
+ layout={Layout.HORIZONTAL}
68
106
  options={["a", "b", "c"]}
69
- waitForKatexLoad={false}
107
+ waitForTexRendererToLoad={false}
70
108
  />,
71
109
  );
72
110
 
@@ -85,9 +123,9 @@ describe("moveOptionToIndex", () => {
85
123
  render(
86
124
  <Sortable
87
125
  ref={(r) => (sortable = r)}
88
- layout="horizontal"
126
+ layout={Layout.HORIZONTAL}
89
127
  options={["a", "b", "c"]}
90
- waitForKatexLoad={false}
128
+ waitForTexRendererToLoad={false}
91
129
  />,
92
130
  );
93
131
 
@@ -106,9 +144,9 @@ describe("moveOptionToIndex", () => {
106
144
  render(
107
145
  <Sortable
108
146
  ref={(r) => (sortable = r)}
109
- layout="horizontal"
147
+ layout={Layout.HORIZONTAL}
110
148
  options={["a", "b", "c"]}
111
- waitForKatexLoad={false}
149
+ waitForTexRendererToLoad={false}
112
150
  />,
113
151
  );
114
152
 
@@ -147,7 +185,7 @@ describe("Sortable.itemsFromProps", () => {
147
185
  "height": 0,
148
186
  "key": 0,
149
187
  "option": "a",
150
- "type": "static",
188
+ "state": "static",
151
189
  "width": 0,
152
190
  },
153
191
  {
@@ -155,7 +193,7 @@ describe("Sortable.itemsFromProps", () => {
155
193
  "height": 0,
156
194
  "key": 1,
157
195
  "option": "b",
158
- "type": "static",
196
+ "state": "static",
159
197
  "width": 0,
160
198
  },
161
199
  {
@@ -163,7 +201,7 @@ describe("Sortable.itemsFromProps", () => {
163
201
  "height": 0,
164
202
  "key": 2,
165
203
  "option": "c",
166
- "type": "static",
204
+ "state": "static",
167
205
  "width": 0,
168
206
  },
169
207
  ]
@@ -182,7 +220,7 @@ describe("Sortable.itemsFromProps", () => {
182
220
 
183
221
  // Assert
184
222
  items.forEach((item) => {
185
- expect(item.type).toBe("disabled");
223
+ expect(item.state).toBe("disabled");
186
224
  });
187
225
  });
188
226
  it("sets the item type to static if disabled is false", () => {
@@ -197,7 +235,7 @@ describe("Sortable.itemsFromProps", () => {
197
235
 
198
236
  // Assert
199
237
  items.forEach((item) => {
200
- expect(item.type).toBe("static");
238
+ expect(item.state).toBe("static");
201
239
  });
202
240
  });
203
241
  });
@@ -1,4 +1,3 @@
1
- import getRenderA11yString from "katex/dist/contrib/render-a11y-string";
2
1
  import * as React from "react";
3
2
  import "@testing-library/jest-dom";
4
3
 
@@ -22,15 +21,19 @@ describe("sorter widget", () => {
22
21
 
23
22
  jest.spyOn(Dependencies, "getDependencies").mockReturnValue({
24
23
  ...testDependencies,
25
- getKaTeX: () => {
26
- return Promise.resolve({});
24
+ TeX: ({
25
+ children,
26
+ // alias onRender to onLoad to quiet the overzealous testing-library linter
27
+ onRender: onLoad,
28
+ }: {
29
+ children: React.ReactNode;
30
+ onRender?: () => unknown;
31
+ }) => {
32
+ React.useLayoutEffect(() => {
33
+ onLoad?.();
34
+ }, [onLoad]);
35
+ return <span className="tex-mock">{children}</span>;
27
36
  },
28
- TeX: ({children}: {children: React.ReactNode}) => (
29
- <span className="tex-mock">{children}</span>
30
- ),
31
- // @ts-expect-error [FEI-5003] - TS2322 - Type 'Promise<any>' is not assignable to type '() => Promise<katexA11y>'.
32
- getRenderA11yString: Promise.resolve(getRenderA11yString),
33
- shouldUseFutureKaTeX: (flag: boolean) => {},
34
37
  });
35
38
  });
36
39