@khanacademy/perseus 7.2.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/article-renderer.d.ts +26 -40
  3. package/dist/components/math-input.d.ts +1 -1
  4. package/dist/components/sortable.d.ts +1 -1
  5. package/dist/components/tex-buttons.d.ts +1 -1
  6. package/dist/es/index.css +61 -61
  7. package/dist/es/index.js +1189 -1308
  8. package/dist/es/index.js.map +1 -1
  9. package/dist/hints-renderer.d.ts +1 -1
  10. package/dist/index.css +61 -61
  11. package/dist/index.js +1180 -1269
  12. package/dist/index.js.map +1 -1
  13. package/dist/mixins/provide-keypad.d.ts +15 -12
  14. package/dist/perseus-api.d.ts +1 -1
  15. package/dist/types.d.ts +3 -2
  16. package/dist/widgets/expression.d.ts +1 -1
  17. package/dist/widgets/graded-group.d.ts +1 -1
  18. package/dist/widgets/interactive-graph.d.ts +1 -1
  19. package/dist/widgets/plotter.d.ts +47 -13
  20. package/dist/widgets/sequence.d.ts +1 -1
  21. package/dist/widgets/table.d.ts +8 -1
  22. package/dist/widgets.d.ts +1 -1
  23. package/package.json +33 -33
  24. package/src/__testdata__/article-renderer.testdata.ts +3 -1
  25. package/src/__testdata__/item-renderer.testdata.ts +1 -1
  26. package/src/__testdata__/renderer.testdata.ts +1 -1
  27. package/src/__tests__/item-renderer.test.tsx +2 -2
  28. package/src/__tests__/mock-asset-loading-widget.tsx +1 -1
  29. package/src/__tests__/perseus-markdown.test.ts +17 -17
  30. package/src/__tests__/renderer-api.test.tsx +21 -21
  31. package/src/__tests__/renderer.test.tsx +13 -13
  32. package/src/__tests__/server-item-renderer.test.tsx +3 -3
  33. package/src/__tests__/tex-wrangler.test.ts +1 -1
  34. package/src/article-renderer.tsx +39 -38
  35. package/src/components/__stories__/image-loader.stories.tsx +1 -0
  36. package/src/components/__tests__/number-input.test.tsx +4 -4
  37. package/src/components/__tests__/sortable.test.tsx +2 -2
  38. package/src/components/fixed-to-responsive.tsx +1 -1
  39. package/src/components/graph.tsx +12 -11
  40. package/src/components/graphie-classes.ts +7 -7
  41. package/src/components/graphie.tsx +14 -14
  42. package/src/components/highlighting/highlightable-content.tsx +1 -1
  43. package/src/components/highlighting/ui/highlight-renderer.tsx +1 -1
  44. package/src/components/highlighting/ui/util.ts +2 -2
  45. package/src/components/highlighting/word-indexer.tsx +4 -4
  46. package/src/components/icon.tsx +2 -1
  47. package/src/components/image-loader.tsx +5 -4
  48. package/src/components/input-with-examples.tsx +2 -2
  49. package/src/components/lint.tsx +1 -1
  50. package/src/components/math-input.tsx +5 -5
  51. package/src/components/math-output.tsx +1 -1
  52. package/src/components/multi-button-group.tsx +1 -1
  53. package/src/components/number-input.tsx +11 -10
  54. package/src/components/prop-check-box.tsx +1 -1
  55. package/src/components/simple-keypad-input.tsx +4 -4
  56. package/src/components/sortable.tsx +43 -41
  57. package/src/components/svg-image.tsx +13 -12
  58. package/src/components/tex-buttons.tsx +5 -3
  59. package/src/components/text-input.tsx +9 -8
  60. package/src/components/text-list-editor.tsx +12 -11
  61. package/src/components/visibility-observer/create-visibility-observer.ts +1 -1
  62. package/src/components/visibility-observer/visibility-observer.tsx +2 -2
  63. package/src/components/zoomable-tex.tsx +3 -3
  64. package/src/components/zoomable.tsx +9 -8
  65. package/src/hint-renderer.tsx +3 -3
  66. package/src/hints-renderer.tsx +12 -11
  67. package/src/index.ts +1 -0
  68. package/src/init.ts +1 -1
  69. package/src/interaction-tracker.ts +4 -4
  70. package/src/interactive2/__tests__/movable-point.test.ts +1 -1
  71. package/src/interactive2/interactive-util.ts +6 -6
  72. package/src/interactive2/movable-helper-methods.ts +2 -2
  73. package/src/interactive2/movable-line-options.ts +37 -37
  74. package/src/interactive2/movable-line.ts +2 -2
  75. package/src/interactive2/movable-point-options.ts +29 -29
  76. package/src/interactive2/movable-point.tsx +2 -2
  77. package/src/interactive2/movable-polygon-options.ts +45 -45
  78. package/src/interactive2/movable-polygon.ts +2 -2
  79. package/src/interactive2/movable.ts +2 -2
  80. package/src/interactive2/objective_.ts +1 -1
  81. package/src/interactive2/wrapped-defaults.ts +2 -2
  82. package/src/interactive2/wrapped-ellipse.ts +9 -9
  83. package/src/interactive2/wrapped-line.ts +8 -8
  84. package/src/interactive2/wrapped-path.ts +5 -5
  85. package/src/item-renderer.tsx +6 -5
  86. package/src/mixins/changeable.ts +2 -2
  87. package/src/mixins/editor-jsonify.ts +1 -1
  88. package/src/mixins/provide-keypad.tsx +24 -37
  89. package/src/mixins/widget-jsonify-deprecated.ts +1 -1
  90. package/src/multi-items/__tests__/items.test.ts +1 -1
  91. package/src/multi-items/__tests__/multi-renderer.test.tsx +7 -7
  92. package/src/multi-items/__tests__/trees.test.ts +12 -12
  93. package/src/multi-items/item-types.ts +2 -2
  94. package/src/multi-items/items.ts +1 -1
  95. package/src/multi-items/multi-renderer.tsx +15 -14
  96. package/src/multi-items/prop-type-builders.ts +2 -2
  97. package/src/multi-items/tree-types.ts +4 -4
  98. package/src/multi-items/trees.ts +16 -16
  99. package/src/perseus-env.ts +2 -2
  100. package/src/perseus-markdown.tsx +5 -5
  101. package/src/renderer.tsx +39 -38
  102. package/src/server-item-renderer.tsx +6 -5
  103. package/src/sigfigs.ts +1 -1
  104. package/src/styles/articles.less +8 -4
  105. package/src/styles/perseus-renderer.less +47 -38
  106. package/src/styles/util.less +1 -1
  107. package/src/styles/variables.boostrap.less +158 -182
  108. package/src/styles/variables.less +20 -20
  109. package/src/styles/variables.shared.less +162 -168
  110. package/src/styles/widgets/categorizer.less +1 -2
  111. package/src/styles/widgets/expression.less +7 -4
  112. package/src/styles/widgets/grapher.less +2 -1
  113. package/src/styles/widgets/image.less +3 -2
  114. package/src/styles/widgets/interactive-graph.less +4 -2
  115. package/src/styles/widgets/label-image.less +2 -1
  116. package/src/styles/widgets/matrix.less +11 -7
  117. package/src/styles/widgets/orderer.less +2 -1
  118. package/src/styles/widgets/passage.less +2 -1
  119. package/src/styles/widgets/plotter.less +4 -3
  120. package/src/styles/widgets/radio.less +4 -2
  121. package/src/styles/widgets/sortable.less +1 -1
  122. package/src/styles/widgets/table.less +2 -1
  123. package/src/styles/widgets/transformer.less +2 -1
  124. package/src/styles/widgets/unit.less +2 -1
  125. package/src/traversal.ts +1 -1
  126. package/src/types.ts +3 -3
  127. package/src/util/answer-types.ts +14 -14
  128. package/src/util/geometry.ts +7 -7
  129. package/src/util/graphie.ts +32 -32
  130. package/src/util/interactive.ts +118 -118
  131. package/src/util/math.ts +4 -4
  132. package/src/util/react-render.tsx +1 -1
  133. package/src/util/scroll-utils.ts +2 -2
  134. package/src/util/tex.ts +3 -3
  135. package/src/util.ts +15 -15
  136. package/src/widget-container.tsx +1 -1
  137. package/src/widgets/__stories__/plotter.stories.tsx +27 -0
  138. package/src/widgets/__stories__/test-keypad-context-wrapper.tsx +3 -3
  139. package/src/widgets/__testdata__/numeric-input.testdata.ts +1 -1
  140. package/src/widgets/__testdata__/plotter.testdata.ts +36 -0
  141. package/src/widgets/__tests__/__snapshots__/plotter.test.tsx.snap +863 -0
  142. package/src/widgets/__tests__/__snapshots__/video.test.ts.snap +2 -2
  143. package/src/widgets/__tests__/expression.test.ts +4 -3
  144. package/src/widgets/__tests__/grapher.cypress.ts +32 -32
  145. package/src/widgets/__tests__/group.test.tsx +1 -1
  146. package/src/widgets/__tests__/interactive-graph.cypress.ts +40 -40
  147. package/src/widgets/__tests__/interactive-graph.test.ts +1 -1
  148. package/src/widgets/__tests__/numeric-input.test.ts +1 -1
  149. package/src/widgets/__tests__/passage.test.tsx +2 -2
  150. package/src/widgets/__tests__/plotter.test.tsx +66 -0
  151. package/src/widgets/__tests__/radio/base-radio.test.tsx +7 -7
  152. package/src/widgets/__tests__/renderQuestion.tsx +3 -3
  153. package/src/widgets/categorizer.tsx +5 -4
  154. package/src/widgets/cs-program.tsx +2 -2
  155. package/src/widgets/dropdown.tsx +1 -1
  156. package/src/widgets/expression.tsx +10 -9
  157. package/src/widgets/graded-group-set.tsx +6 -5
  158. package/src/widgets/graded-group.tsx +19 -19
  159. package/src/widgets/grapher/util.tsx +6 -6
  160. package/src/widgets/grapher.tsx +10 -10
  161. package/src/widgets/group.tsx +3 -3
  162. package/src/widgets/iframe.tsx +2 -2
  163. package/src/widgets/image.tsx +1 -1
  164. package/src/widgets/input-number.tsx +4 -4
  165. package/src/widgets/interaction.tsx +78 -77
  166. package/src/widgets/interactive-graph.tsx +109 -107
  167. package/src/widgets/label-image/marker.tsx +3 -2
  168. package/src/widgets/label-image.test.ts +1 -1
  169. package/src/widgets/label-image.tsx +7 -7
  170. package/src/widgets/lights-puzzle.tsx +2 -2
  171. package/src/widgets/matcher.tsx +7 -6
  172. package/src/widgets/matrix.tsx +20 -20
  173. package/src/widgets/measurer.tsx +3 -3
  174. package/src/widgets/molecule/__tests__/layout.test.ts +4 -4
  175. package/src/widgets/molecule/__tests__/parser.test.ts +14 -14
  176. package/src/widgets/molecule/smiles-parser.ts +3 -3
  177. package/src/widgets/molecule.tsx +4 -4
  178. package/src/widgets/number-line.tsx +11 -11
  179. package/src/widgets/numeric-input.tsx +11 -11
  180. package/src/widgets/orderer.tsx +39 -38
  181. package/src/widgets/passage/__tests__/passage-markdown.test.ts +1 -1
  182. package/src/widgets/passage/passage-markdown.tsx +4 -4
  183. package/src/widgets/passage-ref-target.tsx +2 -1
  184. package/src/widgets/passage-ref.tsx +4 -6
  185. package/src/widgets/passage.tsx +11 -11
  186. package/src/widgets/plotter.tsx +117 -107
  187. package/src/widgets/radio/base-radio.tsx +12 -11
  188. package/src/widgets/radio/choice-icon/choice-icon.tsx +3 -2
  189. package/src/widgets/radio/choice.tsx +1 -1
  190. package/src/widgets/radio/option-status.tsx +1 -1
  191. package/src/widgets/radio/widget.tsx +6 -6
  192. package/src/widgets/radio.ts +1 -1
  193. package/src/widgets/reaction-diagram.tsx +8 -8
  194. package/src/widgets/sequence.tsx +2 -2
  195. package/src/widgets/simulator.tsx +14 -14
  196. package/src/widgets/sorter.tsx +5 -4
  197. package/src/widgets/table.tsx +8 -8
  198. package/src/widgets/transformer.tsx +93 -92
  199. package/src/widgets/unit.tsx +17 -17
  200. package/src/widgets/video-transcript-link.test.tsx +3 -3
  201. package/src/widgets/video-transcript-link.tsx +1 -1
  202. package/src/widgets/video.tsx +1 -1
  203. package/src/widgets.ts +5 -5
  204. package/src/zoom.ts +22 -22
  205. package/tsconfig-build.tsbuildinfo +1 -1
  206. package/dist/a11y.js.flow +0 -11
  207. package/dist/all-widgets.js.flow +0 -33
  208. package/dist/article-renderer.js.flow +0 -73
  209. package/dist/asset-context.js.flow +0 -15
  210. package/dist/basic-widgets.js.flow +0 -33
  211. package/dist/components/button-group.js.flow +0 -33
  212. package/dist/components/constants.js.flow +0 -13
  213. package/dist/components/fixed-to-responsive.js.flow +0 -34
  214. package/dist/components/graph.js.flow +0 -66
  215. package/dist/components/graphie-classes.js.flow +0 -19
  216. package/dist/components/graphie-movables.js.flow +0 -22
  217. package/dist/components/graphie.js.flow +0 -69
  218. package/dist/components/highlighting/highlightable-content.js.flow +0 -56
  219. package/dist/components/highlighting/highlights.js.flow +0 -54
  220. package/dist/components/highlighting/ranges.js.flow +0 -60
  221. package/dist/components/highlighting/types.js.flow +0 -70
  222. package/dist/components/highlighting/ui/highlight-renderer.js.flow +0 -43
  223. package/dist/components/highlighting/ui/highlight-set-renderer.js.flow +0 -41
  224. package/dist/components/highlighting/ui/highlight-tooltip.js.flow +0 -22
  225. package/dist/components/highlighting/ui/highlighting-ui.js.flow +0 -30
  226. package/dist/components/highlighting/ui/selection-tracker.js.flow +0 -54
  227. package/dist/components/highlighting/ui/types.js.flow +0 -22
  228. package/dist/components/highlighting/ui/util.js.flow +0 -42
  229. package/dist/components/highlighting/word-indexer.js.flow +0 -21
  230. package/dist/components/hud.js.flow +0 -14
  231. package/dist/components/icon.js.flow +0 -31
  232. package/dist/components/image-loader.js.flow +0 -49
  233. package/dist/components/info-tip/info-tip.js.flow +0 -20
  234. package/dist/components/info-tip.js.flow +0 -18
  235. package/dist/components/inline-icon.js.flow +0 -39
  236. package/dist/components/input-with-examples.js.flow +0 -58
  237. package/dist/components/lint.js.flow +0 -58
  238. package/dist/components/math-input.js.flow +0 -49
  239. package/dist/components/math-output.js.flow +0 -33
  240. package/dist/components/multi-button-group.js.flow +0 -35
  241. package/dist/components/number-input.js.flow +0 -42
  242. package/dist/components/prop-check-box.js.flow +0 -8
  243. package/dist/components/range-input.js.flow +0 -20
  244. package/dist/components/simple-keypad-input.js.flow +0 -16
  245. package/dist/components/sortable.js.flow +0 -91
  246. package/dist/components/stub-tag-editor.js.flow +0 -18
  247. package/dist/components/svg-image.js.flow +0 -85
  248. package/dist/components/tex-buttons.js.flow +0 -26
  249. package/dist/components/tex.js.flow +0 -25
  250. package/dist/components/text-input.js.flow +0 -39
  251. package/dist/components/text-list-editor.js.flow +0 -22
  252. package/dist/components/tooltip.js.flow +0 -51
  253. package/dist/components/visibility-observer/create-visibility-observer.js.flow +0 -23
  254. package/dist/components/visibility-observer/get-scroll-parent.js.flow +0 -7
  255. package/dist/components/visibility-observer/visibility-observer.js.flow +0 -36
  256. package/dist/components/zoomable-tex.js.flow +0 -18
  257. package/dist/components/zoomable.js.flow +0 -70
  258. package/dist/components.js.flow +0 -22
  259. package/dist/definition-context.js.flow +0 -25
  260. package/dist/dependencies.js.flow +0 -9
  261. package/dist/error-boundary.js.flow +0 -19
  262. package/dist/extra-widgets.js.flow +0 -33
  263. package/dist/hint-renderer.js.flow +0 -32
  264. package/dist/hints-renderer.js.flow +0 -41
  265. package/dist/icon-paths.js.flow +0 -123
  266. package/dist/index.js.flow +0 -134
  267. package/dist/init.js.flow +0 -20
  268. package/dist/interaction-tracker.js.flow +0 -35
  269. package/dist/interactive2/interactive-util.js.flow +0 -50
  270. package/dist/interactive2/movable-helper-methods.js.flow +0 -15
  271. package/dist/interactive2/movable-line-options.js.flow +0 -44
  272. package/dist/interactive2/movable-line.js.flow +0 -8
  273. package/dist/interactive2/movable-point-options.js.flow +0 -44
  274. package/dist/interactive2/movable-point.js.flow +0 -8
  275. package/dist/interactive2/movable-polygon-options.js.flow +0 -47
  276. package/dist/interactive2/movable-polygon.js.flow +0 -8
  277. package/dist/interactive2/movable.js.flow +0 -8
  278. package/dist/interactive2/objective_.js.flow +0 -25
  279. package/dist/interactive2/types.js.flow +0 -8
  280. package/dist/interactive2/wrapped-defaults.js.flow +0 -11
  281. package/dist/interactive2/wrapped-ellipse.js.flow +0 -14
  282. package/dist/interactive2/wrapped-line.js.flow +0 -14
  283. package/dist/interactive2/wrapped-path.js.flow +0 -13
  284. package/dist/interactive2.js.flow +0 -16
  285. package/dist/item-renderer.js.flow +0 -132
  286. package/dist/item-version.js.flow +0 -11
  287. package/dist/jipt-paragraphs.js.flow +0 -14
  288. package/dist/loading-context.js.flow +0 -12
  289. package/dist/logging/log.js.flow +0 -62
  290. package/dist/mixins/changeable.js.flow +0 -33
  291. package/dist/mixins/editor-jsonify.js.flow +0 -10
  292. package/dist/mixins/provide-keypad.js.flow +0 -33
  293. package/dist/mixins/widget-jsonify-deprecated.js.flow +0 -11
  294. package/dist/mixins/widget-prop-denylist.js.flow +0 -20
  295. package/dist/multi-items/item-types.js.flow +0 -55
  296. package/dist/multi-items/items.js.flow +0 -66
  297. package/dist/multi-items/multi-renderer.js.flow +0 -213
  298. package/dist/multi-items/prop-type-builders.js.flow +0 -22
  299. package/dist/multi-items/shape-types.js.flow +0 -60
  300. package/dist/multi-items/shapes.js.flow +0 -25
  301. package/dist/multi-items/tree-types.js.flow +0 -45
  302. package/dist/multi-items/trees.js.flow +0 -147
  303. package/dist/multi-items.js.flow +0 -36
  304. package/dist/perseus-api.js.flow +0 -151
  305. package/dist/perseus-env.js.flow +0 -6
  306. package/dist/perseus-error.js.flow +0 -16
  307. package/dist/perseus-markdown.js.flow +0 -20
  308. package/dist/perseus-types.js.flow +0 -1041
  309. package/dist/question-paragraph.js.flow +0 -17
  310. package/dist/renderability.js.flow +0 -19
  311. package/dist/renderer.js.flow +0 -325
  312. package/dist/server-item-renderer.js.flow +0 -132
  313. package/dist/sigfigs.js.flow +0 -41
  314. package/dist/styles/constants.js.flow +0 -62
  315. package/dist/styles/global-constants.js.flow +0 -348
  316. package/dist/styles/global-styles.js.flow +0 -53
  317. package/dist/styles/media-queries.js.flow +0 -35
  318. package/dist/styles/shared.js.flow +0 -8
  319. package/dist/tex-wrangler.js.flow +0 -13
  320. package/dist/translation-linter.js.flow +0 -32
  321. package/dist/traversal.js.flow +0 -26
  322. package/dist/types.js.flow +0 -318
  323. package/dist/util/a11y.js.flow +0 -8
  324. package/dist/util/answer-types.js.flow +0 -49
  325. package/dist/util/colors.js.flow +0 -95
  326. package/dist/util/fix-passage-refs.js.flow +0 -8
  327. package/dist/util/geometry.js.flow +0 -37
  328. package/dist/util/graph-utils.js.flow +0 -9
  329. package/dist/util/graphie.js.flow +0 -8
  330. package/dist/util/interactive.js.flow +0 -11
  331. package/dist/util/katex-preprocess.js.flow +0 -12
  332. package/dist/util/math.js.flow +0 -62
  333. package/dist/util/mobile-native-utils.js.flow +0 -12
  334. package/dist/util/react-render.js.flow +0 -12
  335. package/dist/util/register-all-widgets-for-testing.js.flow +0 -7
  336. package/dist/util/scroll-utils.js.flow +0 -19
  337. package/dist/util/sizing-utils.js.flow +0 -20
  338. package/dist/util/tex.js.flow +0 -17
  339. package/dist/util/url-utils.js.flow +0 -11
  340. package/dist/util.graphie.js.flow +0 -14
  341. package/dist/util.js.flow +0 -319
  342. package/dist/version.js.flow +0 -17
  343. package/dist/widget-container.js.flow +0 -33
  344. package/dist/widgets/categorizer.js.flow +0 -70
  345. package/dist/widgets/cs-program.js.flow +0 -54
  346. package/dist/widgets/definition.js.flow +0 -57
  347. package/dist/widgets/dropdown.js.flow +0 -63
  348. package/dist/widgets/explanation.js.flow +0 -58
  349. package/dist/widgets/expression.js.flow +0 -116
  350. package/dist/widgets/graded-group-answer-bar.js.flow +0 -24
  351. package/dist/widgets/graded-group-set.js.flow +0 -65
  352. package/dist/widgets/graded-group.js.flow +0 -78
  353. package/dist/widgets/grapher/util.js.flow +0 -38
  354. package/dist/widgets/grapher.js.flow +0 -102
  355. package/dist/widgets/group.js.flow +0 -60
  356. package/dist/widgets/iframe.js.flow +0 -53
  357. package/dist/widgets/image.js.flow +0 -73
  358. package/dist/widgets/input-number.js.flow +0 -94
  359. package/dist/widgets/interaction/arrow-picker.js.flow +0 -21
  360. package/dist/widgets/interaction/color-picker.js.flow +0 -23
  361. package/dist/widgets/interaction/dash-picker.js.flow +0 -21
  362. package/dist/widgets/interaction/element-container.js.flow +0 -28
  363. package/dist/widgets/interaction.js.flow +0 -60
  364. package/dist/widgets/interactive-graph.js.flow +0 -239
  365. package/dist/widgets/label-image/answer-choices.js.flow +0 -55
  366. package/dist/widgets/label-image/marker.js.flow +0 -31
  367. package/dist/widgets/label-image/types.js.flow +0 -23
  368. package/dist/widgets/label-image.js.flow +0 -142
  369. package/dist/widgets/lights-puzzle.js.flow +0 -58
  370. package/dist/widgets/matcher.js.flow +0 -106
  371. package/dist/widgets/matrix.js.flow +0 -80
  372. package/dist/widgets/measurer.js.flow +0 -30
  373. package/dist/widgets/molecule/molecule-drawing.js.flow +0 -11
  374. package/dist/widgets/molecule/molecule-layout.js.flow +0 -96
  375. package/dist/widgets/molecule/smiles-parser.js.flow +0 -26
  376. package/dist/widgets/molecule.js.flow +0 -60
  377. package/dist/widgets/number-line.js.flow +0 -102
  378. package/dist/widgets/numeric-input.js.flow +0 -105
  379. package/dist/widgets/orderer.js.flow +0 -81
  380. package/dist/widgets/passage/passage-markdown.js.flow +0 -33
  381. package/dist/widgets/passage-ref-target.js.flow +0 -52
  382. package/dist/widgets/passage-ref.js.flow +0 -85
  383. package/dist/widgets/passage.js.flow +0 -157
  384. package/dist/widgets/plotter.js.flow +0 -78
  385. package/dist/widgets/radio/base-radio.js.flow +0 -50
  386. package/dist/widgets/radio/choice-a11y-text.js.flow +0 -14
  387. package/dist/widgets/radio/choice-icon/choice-icon.js.flow +0 -22
  388. package/dist/widgets/radio/choice-icon/cross-out-line.js.flow +0 -16
  389. package/dist/widgets/radio/choice-icon/shared-styles.js.flow +0 -11
  390. package/dist/widgets/radio/choice-none-above.js.flow +0 -16
  391. package/dist/widgets/radio/choice.js.flow +0 -29
  392. package/dist/widgets/radio/choice.jsx.fixture.js.flow +0 -7
  393. package/dist/widgets/radio/focus-ring.js.flow +0 -22
  394. package/dist/widgets/radio/option-status.js.flow +0 -16
  395. package/dist/widgets/radio/util.js.flow +0 -12
  396. package/dist/widgets/radio/widget.js.flow +0 -80
  397. package/dist/widgets/radio.js.flow +0 -31
  398. package/dist/widgets/reaction-diagram.js.flow +0 -46
  399. package/dist/widgets/sequence.js.flow +0 -53
  400. package/dist/widgets/simulator.js.flow +0 -107
  401. package/dist/widgets/sorter.js.flow +0 -102
  402. package/dist/widgets/table.js.flow +0 -67
  403. package/dist/widgets/transformer.js.flow +0 -127
  404. package/dist/widgets/unit.js.flow +0 -93
  405. package/dist/widgets/video-transcript-link.js.flow +0 -15
  406. package/dist/widgets/video.js.flow +0 -57
  407. package/dist/widgets.js.flow +0 -108
  408. package/dist/zoom.js.flow +0 -7
  409. package/src/multi-items/item-types.js.flow +0 -55
@@ -2,300 +2,276 @@
2
2
  // Variables
3
3
  // --------------------------------------------------
4
4
 
5
-
6
5
  // Global values
7
6
  // --------------------------------------------------
8
7
 
9
-
10
8
  // Grays
11
9
  // -------------------------
12
- @black: #000;
13
- @grayDarker: #222;
14
- @grayDark: #333;
15
- @gray: #555;
16
- @grayLight: #999;
17
- @grayLighter: #eee;
18
- @white: #fff;
19
-
10
+ @black: #000;
11
+ @grayDarker: #222;
12
+ @grayDark: #333;
13
+ @gray: #555;
14
+ @grayLight: #999;
15
+ @grayLighter: #eee;
16
+ @white: #fff;
20
17
 
21
18
  // Accent colors
22
19
  // -------------------------
23
- @blue: #049cdb;
24
- @blueDark: #0064cd;
25
- @green: #46a546;
26
- @red: #9d261d;
27
- @yellow: #ffc40d;
28
- @orange: #f89406;
29
- @pink: #c3325f;
30
- @purple: #7a43b6;
31
-
20
+ @blue: #049cdb;
21
+ @blueDark: #0064cd;
22
+ @green: #46a546;
23
+ @red: #9d261d;
24
+ @yellow: #ffc40d;
25
+ @orange: #f89406;
26
+ @pink: #c3325f;
27
+ @purple: #7a43b6;
32
28
 
33
29
  // Scaffolding
34
30
  // -------------------------
35
- @bodyBackground: @white;
36
- @textColor: @grayDark;
37
-
31
+ @bodyBackground: @white;
32
+ @textColor: @grayDark;
38
33
 
39
34
  // Links
40
35
  // -------------------------
41
- @linkColor: #08c;
42
- @linkColorHover: darken(@linkColor, 15%);
43
-
36
+ @linkColor: #08c;
37
+ @linkColorHover: darken(@linkColor, 15%);
44
38
 
45
39
  // Typography
46
40
  // -------------------------
47
- @sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif;
48
- @serifFontFamily: Georgia, "Times New Roman", Times, serif;
49
- @monoFontFamily: Monaco, Menlo, Consolas, "Courier New", monospace;
50
-
51
- @baseFontSize: 14px;
52
- @baseFontFamily: @sansFontFamily;
53
- @baseLineHeight: 20px;
54
- @altFontFamily: @serifFontFamily;
41
+ @sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif;
42
+ @serifFontFamily: Georgia, "Times New Roman", Times, serif;
43
+ @monoFontFamily: Monaco, Menlo, Consolas, "Courier New", monospace;
55
44
 
56
- @headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily
57
- @headingsFontWeight: bold; // instead of browser default, bold
58
- @headingsColor: inherit; // empty to use BS default, @textColor
45
+ @baseFontSize: 14px;
46
+ @baseFontFamily: @sansFontFamily;
47
+ @baseLineHeight: 20px;
48
+ @altFontFamily: @serifFontFamily;
59
49
 
50
+ @headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily
51
+ @headingsFontWeight: bold; // instead of browser default, bold
52
+ @headingsColor: inherit; // empty to use BS default, @textColor
60
53
 
61
54
  // Component sizing
62
55
  // -------------------------
63
56
  // Based on 14px font-size and 20px line-height
64
57
 
65
- @fontSizeLarge: @baseFontSize * 1.25; // ~18px
66
- @fontSizeSmall: @baseFontSize * 0.85; // ~12px
67
- @fontSizeMini: @baseFontSize * 0.75; // ~11px
58
+ @fontSizeLarge: @baseFontSize * 1.25; // ~18px
59
+ @fontSizeSmall: @baseFontSize * 0.85; // ~12px
60
+ @fontSizeMini: @baseFontSize * 0.75; // ~11px
68
61
 
69
- @paddingLarge: 11px 19px; // 44px
70
- @paddingSmall: 2px 10px; // 26px
71
- @paddingMini: 0 6px; // 22px
72
-
73
- @baseBorderRadius: 4px;
74
- @borderRadiusLarge: 6px;
75
- @borderRadiusSmall: 3px;
62
+ @paddingLarge: 11px 19px; // 44px
63
+ @paddingSmall: 2px 10px; // 26px
64
+ @paddingMini: 0 6px; // 22px
76
65
 
66
+ @baseBorderRadius: 4px;
67
+ @borderRadiusLarge: 6px;
68
+ @borderRadiusSmall: 3px;
77
69
 
78
70
  // Tables
79
71
  // -------------------------
80
- @tableBackground: transparent; // overall background-color
81
- @tableBackgroundAccent: #f9f9f9; // for striping
82
- @tableBackgroundHover: #f5f5f5; // for hover
83
- @tableBorder: #ddd; // table and cell border
72
+ @tableBackground: transparent; // overall background-color
73
+ @tableBackgroundAccent: #f9f9f9; // for striping
74
+ @tableBackgroundHover: #f5f5f5; // for hover
75
+ @tableBorder: #ddd; // table and cell border
84
76
 
85
77
  // Buttons
86
78
  // -------------------------
87
- @btnBackground: @white;
88
- @btnBackgroundHighlight: darken(@white, 10%);
89
- @btnBorder: #ccc;
90
-
91
- @btnPrimaryBackground: @linkColor;
92
- @btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 20%);
79
+ @btnBackground: @white;
80
+ @btnBackgroundHighlight: darken(@white, 10%);
81
+ @btnBorder: #ccc;
93
82
 
94
- @btnInfoBackground: #5bc0de;
95
- @btnInfoBackgroundHighlight: #2f96b4;
83
+ @btnPrimaryBackground: @linkColor;
84
+ @btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 20%);
96
85
 
97
- @btnSuccessBackground: #62c462;
98
- @btnSuccessBackgroundHighlight: #51a351;
86
+ @btnInfoBackground: #5bc0de;
87
+ @btnInfoBackgroundHighlight: #2f96b4;
99
88
 
100
- @btnWarningBackground: lighten(@orange, 15%);
101
- @btnWarningBackgroundHighlight: @orange;
89
+ @btnSuccessBackground: #62c462;
90
+ @btnSuccessBackgroundHighlight: #51a351;
102
91
 
103
- @btnDangerBackground: #ee5f5b;
104
- @btnDangerBackgroundHighlight: #bd362f;
92
+ @btnWarningBackground: lighten(@orange, 15%);
93
+ @btnWarningBackgroundHighlight: @orange;
105
94
 
106
- @btnInverseBackground: #444;
107
- @btnInverseBackgroundHighlight: @grayDarker;
95
+ @btnDangerBackground: #ee5f5b;
96
+ @btnDangerBackgroundHighlight: #bd362f;
108
97
 
98
+ @btnInverseBackground: #444;
99
+ @btnInverseBackgroundHighlight: @grayDarker;
109
100
 
110
101
  // Forms
111
102
  // -------------------------
112
- @inputBackground: @white;
113
- @inputBorder: #ccc;
114
- @inputBorderRadius: @baseBorderRadius;
115
- @inputDisabledBackground: @grayLighter;
116
- @formActionsBackground: #f5f5f5;
117
- @inputHeight: @baseLineHeight + 10px; // base line-height + 8px vertical padding + 2px top/bottom border
118
-
103
+ @inputBackground: @white;
104
+ @inputBorder: #ccc;
105
+ @inputBorderRadius: @baseBorderRadius;
106
+ @inputDisabledBackground: @grayLighter;
107
+ @formActionsBackground: #f5f5f5;
108
+ @inputHeight: @baseLineHeight + 10px; // base line-height + 8px vertical padding + 2px top/bottom border
119
109
 
120
110
  // Dropdowns
121
111
  // -------------------------
122
- @dropdownBackground: @white;
123
- @dropdownBorder: rgba(0,0,0,.2);
124
- @dropdownDividerTop: #e5e5e5;
125
- @dropdownDividerBottom: @white;
126
-
127
- @dropdownLinkColor: @grayDark;
128
- @dropdownLinkColorHover: @white;
129
- @dropdownLinkColorActive: @white;
130
-
131
- @dropdownLinkBackgroundActive: @linkColor;
132
- @dropdownLinkBackgroundHover: @dropdownLinkBackgroundActive;
112
+ @dropdownBackground: @white;
113
+ @dropdownBorder: rgba(0, 0, 0, 0.2);
114
+ @dropdownDividerTop: #e5e5e5;
115
+ @dropdownDividerBottom: @white;
133
116
 
117
+ @dropdownLinkColor: @grayDark;
118
+ @dropdownLinkColorHover: @white;
119
+ @dropdownLinkColorActive: @white;
134
120
 
121
+ @dropdownLinkBackgroundActive: @linkColor;
122
+ @dropdownLinkBackgroundHover: @dropdownLinkBackgroundActive;
135
123
 
136
124
  // COMPONENT VARIABLES
137
125
  // --------------------------------------------------
138
126
 
139
-
140
127
  // Z-index master list
141
128
  // -------------------------
142
129
  // Used for a bird's eye view of components dependent on the z-axis
143
130
  // Try to avoid customizing these :)
144
- @zindexDropdown: 1000;
145
- @zindexPopover: 1010;
146
- @zindexTooltip: 1030;
147
- @zindexFixedNavbar: 1030;
148
- @zindexModalBackdrop: 1040;
149
- @zindexModal: 1050;
150
-
131
+ @zindexDropdown: 1000;
132
+ @zindexPopover: 1010;
133
+ @zindexTooltip: 1030;
134
+ @zindexFixedNavbar: 1030;
135
+ @zindexModalBackdrop: 1040;
136
+ @zindexModal: 1050;
151
137
 
152
138
  // Sprite icons path
153
139
  // -------------------------
154
- @iconSpritePath: "../img/glyphicons-halflings.png";
155
- @iconWhiteSpritePath: "../img/glyphicons-halflings-white.png";
156
-
140
+ @iconSpritePath: "../img/glyphicons-halflings.png";
141
+ @iconWhiteSpritePath: "../img/glyphicons-halflings-white.png";
157
142
 
158
143
  // Input placeholder text color
159
144
  // -------------------------
160
- @placeholderText: @grayLight;
161
-
145
+ @placeholderText: @grayLight;
162
146
 
163
147
  // Hr border color
164
148
  // -------------------------
165
- @hrBorder: @grayLighter;
166
-
149
+ @hrBorder: @grayLighter;
167
150
 
168
151
  // Horizontal forms & lists
169
152
  // -------------------------
170
- @horizontalComponentOffset: 180px;
171
-
153
+ @horizontalComponentOffset: 180px;
172
154
 
173
155
  // Wells
174
156
  // -------------------------
175
- @wellBackground: #f5f5f5;
176
-
157
+ @wellBackground: #f5f5f5;
177
158
 
178
159
  // Navbar
179
160
  // -------------------------
180
- @navbarCollapseWidth: 979px;
181
- @navbarCollapseDesktopWidth: @navbarCollapseWidth + 1;
161
+ @navbarCollapseWidth: 979px;
162
+ @navbarCollapseDesktopWidth: @navbarCollapseWidth + 1;
182
163
 
183
- @navbarHeight: 40px;
184
- @navbarBackgroundHighlight: #ffffff;
185
- @navbarBackground: darken(@navbarBackgroundHighlight, 5%);
186
- @navbarBorder: darken(@navbarBackground, 12%);
164
+ @navbarHeight: 40px;
165
+ @navbarBackgroundHighlight: #ffffff;
166
+ @navbarBackground: darken(@navbarBackgroundHighlight, 5%);
167
+ @navbarBorder: darken(@navbarBackground, 12%);
187
168
 
188
- @navbarText: #777;
189
- @navbarLinkColor: #777;
190
- @navbarLinkColorHover: @grayDark;
191
- @navbarLinkColorActive: @gray;
192
- @navbarLinkBackgroundHover: transparent;
193
- @navbarLinkBackgroundActive: darken(@navbarBackground, 5%);
169
+ @navbarText: #777;
170
+ @navbarLinkColor: #777;
171
+ @navbarLinkColorHover: @grayDark;
172
+ @navbarLinkColorActive: @gray;
173
+ @navbarLinkBackgroundHover: transparent;
174
+ @navbarLinkBackgroundActive: darken(@navbarBackground, 5%);
194
175
 
195
- @navbarBrandColor: @navbarLinkColor;
176
+ @navbarBrandColor: @navbarLinkColor;
196
177
 
197
178
  // Inverted navbar
198
- @navbarInverseBackground: #111111;
199
- @navbarInverseBackgroundHighlight: #222222;
200
- @navbarInverseBorder: #252525;
201
-
202
- @navbarInverseText: @grayLight;
203
- @navbarInverseLinkColor: @grayLight;
204
- @navbarInverseLinkColorHover: @white;
205
- @navbarInverseLinkColorActive: @navbarInverseLinkColorHover;
206
- @navbarInverseLinkBackgroundHover: transparent;
207
- @navbarInverseLinkBackgroundActive: @navbarInverseBackground;
179
+ @navbarInverseBackground: #111111;
180
+ @navbarInverseBackgroundHighlight: #222222;
181
+ @navbarInverseBorder: #252525;
208
182
 
209
- @navbarInverseSearchBackground: lighten(@navbarInverseBackground, 25%);
210
- @navbarInverseSearchBackgroundFocus: @white;
211
- @navbarInverseSearchBorder: @navbarInverseBackground;
212
- @navbarInverseSearchPlaceholderColor: #ccc;
183
+ @navbarInverseText: @grayLight;
184
+ @navbarInverseLinkColor: @grayLight;
185
+ @navbarInverseLinkColorHover: @white;
186
+ @navbarInverseLinkColorActive: @navbarInverseLinkColorHover;
187
+ @navbarInverseLinkBackgroundHover: transparent;
188
+ @navbarInverseLinkBackgroundActive: @navbarInverseBackground;
213
189
 
214
- @navbarInverseBrandColor: @navbarInverseLinkColor;
190
+ @navbarInverseSearchBackground: lighten(@navbarInverseBackground, 25%);
191
+ @navbarInverseSearchBackgroundFocus: @white;
192
+ @navbarInverseSearchBorder: @navbarInverseBackground;
193
+ @navbarInverseSearchPlaceholderColor: #ccc;
215
194
 
195
+ @navbarInverseBrandColor: @navbarInverseLinkColor;
216
196
 
217
197
  // Pagination
218
198
  // -------------------------
219
- @paginationBackground: #fff;
220
- @paginationBorder: #ddd;
221
- @paginationActiveBackground: #f5f5f5;
222
-
199
+ @paginationBackground: #fff;
200
+ @paginationBorder: #ddd;
201
+ @paginationActiveBackground: #f5f5f5;
223
202
 
224
203
  // Hero unit
225
204
  // -------------------------
226
- @heroUnitBackground: @grayLighter;
227
- @heroUnitHeadingColor: inherit;
228
- @heroUnitLeadColor: inherit;
229
-
205
+ @heroUnitBackground: @grayLighter;
206
+ @heroUnitHeadingColor: inherit;
207
+ @heroUnitLeadColor: inherit;
230
208
 
231
209
  // Form states and alerts
232
210
  // -------------------------
233
- @warningText: #c09853;
234
- @warningBackground: #fcf8e3;
235
- @warningBorder: darken(spin(@warningBackground, -10), 3%);
236
-
237
- @errorText: #b94a48;
238
- @errorBackground: #f2dede;
239
- @errorBorder: darken(spin(@errorBackground, -10), 3%);
211
+ @warningText: #c09853;
212
+ @warningBackground: #fcf8e3;
213
+ @warningBorder: darken(spin(@warningBackground, -10), 3%);
240
214
 
241
- @successText: #468847;
242
- @successBackground: #dff0d8;
243
- @successBorder: darken(spin(@successBackground, -10), 5%);
215
+ @errorText: #b94a48;
216
+ @errorBackground: #f2dede;
217
+ @errorBorder: darken(spin(@errorBackground, -10), 3%);
244
218
 
245
- @infoText: #3a87ad;
246
- @infoBackground: #d9edf7;
247
- @infoBorder: darken(spin(@infoBackground, -10), 7%);
219
+ @successText: #468847;
220
+ @successBackground: #dff0d8;
221
+ @successBorder: darken(spin(@successBackground, -10), 5%);
248
222
 
223
+ @infoText: #3a87ad;
224
+ @infoBackground: #d9edf7;
225
+ @infoBorder: darken(spin(@infoBackground, -10), 7%);
249
226
 
250
227
  // Tooltips and popovers
251
228
  // -------------------------
252
- @tooltipColor: #fff;
253
- @tooltipBackground: #000;
254
- @tooltipArrowWidth: 5px;
255
- @tooltipArrowColor: @tooltipBackground;
229
+ @tooltipColor: #fff;
230
+ @tooltipBackground: #000;
231
+ @tooltipArrowWidth: 5px;
232
+ @tooltipArrowColor: @tooltipBackground;
256
233
 
257
- @popoverBackground: #fff;
258
- @popoverArrowWidth: 10px;
259
- @popoverArrowColor: #fff;
260
- @popoverTitleBackground: darken(@popoverBackground, 3%);
234
+ @popoverBackground: #fff;
235
+ @popoverArrowWidth: 10px;
236
+ @popoverArrowColor: #fff;
237
+ @popoverTitleBackground: darken(@popoverBackground, 3%);
261
238
 
262
239
  // Special enhancement for popovers
263
- @popoverArrowOuterWidth: @popoverArrowWidth + 1;
264
- @popoverArrowOuterColor: rgba(0,0,0,.25);
265
-
266
-
240
+ @popoverArrowOuterWidth: @popoverArrowWidth + 1;
241
+ @popoverArrowOuterColor: rgba(0, 0, 0, 0.25);
267
242
 
268
243
  // GRID
269
244
  // --------------------------------------------------
270
245
 
271
-
272
246
  // Default 940px grid
273
247
  // -------------------------
274
- @gridColumns: 12;
275
- @gridColumnWidth: 60px;
276
- @gridGutterWidth: 20px;
277
- @gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1));
248
+ @gridColumns: 12;
249
+ @gridColumnWidth: 60px;
250
+ @gridGutterWidth: 20px;
251
+ @gridRowWidth: (@gridColumns * @gridColumnWidth) +
252
+ (@gridGutterWidth * (@gridColumns - 1));
278
253
 
279
254
  // 1200px min
280
- @gridColumnWidth1200: 70px;
281
- @gridGutterWidth1200: 30px;
282
- @gridRowWidth1200: (@gridColumns * @gridColumnWidth1200) + (@gridGutterWidth1200 * (@gridColumns - 1));
255
+ @gridColumnWidth1200: 70px;
256
+ @gridGutterWidth1200: 30px;
257
+ @gridRowWidth1200: (@gridColumns * @gridColumnWidth1200) +
258
+ (@gridGutterWidth1200 * (@gridColumns - 1));
283
259
 
284
260
  // 768px-979px
285
- @gridColumnWidth768: 42px;
286
- @gridGutterWidth768: 20px;
287
- @gridRowWidth768: (@gridColumns * @gridColumnWidth768) + (@gridGutterWidth768 * (@gridColumns - 1));
288
-
261
+ @gridColumnWidth768: 42px;
262
+ @gridGutterWidth768: 20px;
263
+ @gridRowWidth768: (@gridColumns * @gridColumnWidth768) +
264
+ (@gridGutterWidth768 * (@gridColumns - 1));
289
265
 
290
266
  // Fluid grid
291
267
  // -------------------------
292
- @fluidGridColumnWidth: percentage(@gridColumnWidth/@gridRowWidth);
293
- @fluidGridGutterWidth: percentage(@gridGutterWidth/@gridRowWidth);
268
+ @fluidGridColumnWidth: percentage(@gridColumnWidth / @gridRowWidth);
269
+ @fluidGridGutterWidth: percentage(@gridGutterWidth / @gridRowWidth);
294
270
 
295
271
  // 1200px min
296
- @fluidGridColumnWidth1200: percentage(@gridColumnWidth1200/@gridRowWidth1200);
297
- @fluidGridGutterWidth1200: percentage(@gridGutterWidth1200/@gridRowWidth1200);
272
+ @fluidGridColumnWidth1200: percentage(@gridColumnWidth1200 / @gridRowWidth1200);
273
+ @fluidGridGutterWidth1200: percentage(@gridGutterWidth1200 / @gridRowWidth1200);
298
274
 
299
275
  // 768px-979px
300
- @fluidGridColumnWidth768: percentage(@gridColumnWidth768/@gridRowWidth768);
301
- @fluidGridGutterWidth768: percentage(@gridGutterWidth768/@gridRowWidth768);
276
+ @fluidGridColumnWidth768: percentage(@gridColumnWidth768 / @gridRowWidth768);
277
+ @fluidGridGutterWidth768: percentage(@gridGutterWidth768 / @gridRowWidth768);
@@ -1,30 +1,30 @@
1
1
  // Steal from webapp/stylesheets/shared-package/variables.less
2
- @baseFontFamily: "Proxima Nova", sans-serif;
3
- @boldFontFamily: "Proxima Nova Semibold", sans-serif;
4
- @green: #76a005;
5
- @kaGreen: #71b307;
6
- @blue: #1c758a;
7
- @gray: #aaa;
8
- @red: #ffbaba;
9
- @grayLight: #aaa;
10
- @grayLighter: #ddd;
11
- @learnstormBlue: #4898fc;
2
+ @baseFontFamily: "Proxima Nova", sans-serif;
3
+ @boldFontFamily: "Proxima Nova Semibold", sans-serif;
4
+ @green: #76a005;
5
+ @kaGreen: #71b307;
6
+ @blue: #1c758a;
7
+ @gray: #aaa;
8
+ @red: #ffbaba;
9
+ @grayLight: #aaa;
10
+ @grayLighter: #ddd;
11
+ @learnstormBlue: #4898fc;
12
12
  @gray76: #babec2;
13
13
 
14
14
  // Steal from webapp/javascript/shared-styles-package/global-styles.js
15
15
  // TODO(charlie): DRY this up. How can we keep our global palette in sync across
16
16
  // repos?
17
- @white: #FFFFFF;
18
- @gray98: #FAFAFA;
19
- @gray97: #F6F7F7;
20
- @gray95: #F0F1F2;
21
- @gray90: #E3E5E6;
22
- @gray85: #D6D8DA;
23
- @gray76: #BABEC2;
24
- @gray68: #888D93;
17
+ @white: #ffffff;
18
+ @gray98: #fafafa;
19
+ @gray97: #f6f7f7;
20
+ @gray95: #f0f1f2;
21
+ @gray90: #e3e5e6;
22
+ @gray85: #d6d8da;
23
+ @gray76: #babec2;
24
+ @gray68: #888d93;
25
25
  @gray41: #626569;
26
- @gray25: #3B3E40;
27
- @gray17: #21242C;
26
+ @gray25: #3b3e40;
27
+ @gray17: #21242c;
28
28
 
29
29
  // Media query breakpoints
30
30
  // --------------------------------------------------