@khanacademy/math-input 2.0.0 → 3.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 (225) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/components/input/math-input.d.ts +1 -1
  3. package/dist/components/input/math-input.js.flow +1 -1
  4. package/dist/components/keypad/button.d.ts +1 -2
  5. package/dist/components/keypad/button.js.flow +1 -1
  6. package/dist/components/keypad/{pre-algebra-page.d.ts → geometry-page/index.d.ts} +1 -1
  7. package/dist/components/keypad/{pre-algebra-page.js.flow → geometry-page/index.js.flow} +1 -1
  8. package/dist/components/keypad/index.d.ts +5 -4
  9. package/dist/components/keypad/index.js.flow +9 -4
  10. package/dist/components/keypad/keypad-page-items.d.ts +8 -2
  11. package/dist/components/keypad/keypad-page-items.js.flow +8 -2
  12. package/dist/components/keypad/{numeric-input-page.d.ts → numbers-page/index.d.ts} +3 -2
  13. package/dist/components/keypad/numbers-page/index.js.flow +17 -0
  14. package/dist/components/keypad/numbers-page/types.d.ts +4 -0
  15. package/dist/components/keypad/numbers-page/types.js.flow +10 -0
  16. package/dist/components/keypad/operators-page/advanced-relations-buttons.d.ts +7 -0
  17. package/dist/components/keypad/{numeric-input-page.js.flow → operators-page/advanced-relations-buttons.js.flow} +3 -4
  18. package/dist/components/keypad/operators-page/basic-relations-buttons.d.ts +7 -0
  19. package/dist/components/keypad/{trigonometry-page.js.flow → operators-page/basic-relations-buttons.js.flow} +3 -6
  20. package/dist/components/keypad/operators-page/index.d.ts +9 -0
  21. package/dist/components/keypad/operators-page/index.js.flow +17 -0
  22. package/dist/components/keypad/operators-page/logarithms-buttons.d.ts +7 -0
  23. package/dist/components/keypad/operators-page/logarithms-buttons.js.flow +12 -0
  24. package/dist/components/keypad/operators-page/pre-algebra-buttons.d.ts +7 -0
  25. package/dist/components/keypad/operators-page/pre-algebra-buttons.js.flow +12 -0
  26. package/dist/components/keypad/operators-page/types.d.ts +6 -0
  27. package/dist/components/keypad/operators-page/types.js.flow +12 -0
  28. package/dist/components/{compute-layout-parameters.d.ts → keypad-legacy/compute-layout-parameters.d.ts} +1 -1
  29. package/dist/components/{compute-layout-parameters.js.flow → keypad-legacy/compute-layout-parameters.js.flow} +1 -1
  30. package/dist/components/{echo-manager.d.ts → keypad-legacy/echo-manager.d.ts} +2 -11
  31. package/dist/components/{echo-manager.js.flow → keypad-legacy/echo-manager.js.flow} +2 -11
  32. package/dist/components/{expression-keypad.d.ts → keypad-legacy/expression-keypad.d.ts} +3 -4
  33. package/dist/components/{expression-keypad.js.flow → keypad-legacy/expression-keypad.js.flow} +3 -4
  34. package/dist/components/{fraction-keypad.d.ts → keypad-legacy/fraction-keypad.d.ts} +2 -2
  35. package/dist/components/{fraction-keypad.js.flow → keypad-legacy/fraction-keypad.js.flow} +2 -2
  36. package/dist/components/{gesture-manager.d.ts → keypad-legacy/gesture-manager.d.ts} +1 -1
  37. package/dist/components/{gesture-manager.js.flow → keypad-legacy/gesture-manager.js.flow} +1 -1
  38. package/dist/components/{gesture-state-machine.d.ts → keypad-legacy/gesture-state-machine.d.ts} +1 -1
  39. package/dist/components/{gesture-state-machine.js.flow → keypad-legacy/gesture-state-machine.js.flow} +1 -1
  40. package/dist/components/{icon.d.ts → keypad-legacy/icon.d.ts} +1 -1
  41. package/dist/components/{icon.js.flow → keypad-legacy/icon.js.flow} +1 -1
  42. package/dist/components/{keypad-button.d.ts → keypad-legacy/keypad-button.d.ts} +4 -4
  43. package/dist/components/{keypad-button.js.flow → keypad-legacy/keypad-button.js.flow} +4 -4
  44. package/dist/components/{keypad-container.d.ts → keypad-legacy/keypad-container.d.ts} +2 -2
  45. package/dist/components/{keypad-container.js.flow → keypad-legacy/keypad-container.js.flow} +3 -3
  46. package/dist/components/{keypad.d.ts → keypad-legacy/keypad.d.ts} +3 -3
  47. package/dist/components/{keypad.js.flow → keypad-legacy/keypad.js.flow} +3 -3
  48. package/dist/components/{multi-symbol-grid.d.ts → keypad-legacy/multi-symbol-grid.d.ts} +1 -1
  49. package/dist/components/{multi-symbol-grid.js.flow → keypad-legacy/multi-symbol-grid.js.flow} +1 -1
  50. package/dist/components/{multi-symbol-popover.d.ts → keypad-legacy/multi-symbol-popover.d.ts} +1 -1
  51. package/dist/components/{multi-symbol-popover.js.flow → keypad-legacy/multi-symbol-popover.js.flow} +1 -1
  52. package/dist/components/{node-manager.d.ts → keypad-legacy/node-manager.d.ts} +3 -4
  53. package/dist/components/{node-manager.js.flow → keypad-legacy/node-manager.js.flow} +3 -5
  54. package/dist/components/{popover-manager.d.ts → keypad-legacy/popover-manager.d.ts} +1 -1
  55. package/dist/components/{popover-manager.js.flow → keypad-legacy/popover-manager.js.flow} +1 -1
  56. package/dist/components/{popover-state-machine.d.ts → keypad-legacy/popover-state-machine.d.ts} +1 -1
  57. package/dist/components/{popover-state-machine.js.flow → keypad-legacy/popover-state-machine.js.flow} +1 -1
  58. package/dist/components/{provided-keypad.d.ts → keypad-legacy/provided-keypad.d.ts} +1 -1
  59. package/dist/components/{provided-keypad.js.flow → keypad-legacy/provided-keypad.js.flow} +1 -1
  60. package/dist/{store → components/keypad-legacy/store}/actions.d.ts +4 -5
  61. package/dist/{store → components/keypad-legacy/store}/actions.js.flow +5 -8
  62. package/dist/{store → components/keypad-legacy/store}/index.d.ts +0 -1
  63. package/dist/{store → components/keypad-legacy/store}/index.js.flow +0 -1
  64. package/dist/components/keypad-legacy/store/shared.d.ts +7 -0
  65. package/dist/components/keypad-legacy/store/shared.js.flow +14 -0
  66. package/dist/{store → components/keypad-legacy/store}/types.d.ts +4 -14
  67. package/dist/{store → components/keypad-legacy/store}/types.js.flow +4 -14
  68. package/dist/components/keypad-legacy/touchable-keypad-button.d.ts +37 -0
  69. package/dist/components/keypad-legacy/touchable-keypad-button.js.flow +64 -0
  70. package/dist/components/{two-page-keypad.d.ts → keypad-legacy/two-page-keypad.d.ts} +0 -1
  71. package/dist/components/{two-page-keypad.js.flow → keypad-legacy/two-page-keypad.js.flow} +0 -1
  72. package/dist/data/key-configs.d.ts +3 -1
  73. package/dist/data/key-configs.js.flow +3 -1
  74. package/dist/data/keys.d.ts +1 -3
  75. package/dist/data/keys.js.flow +0 -2
  76. package/dist/es/index.js +4991 -4299
  77. package/dist/es/index.js.map +1 -1
  78. package/dist/index.d.ts +2 -1
  79. package/dist/index.js +4784 -4073
  80. package/dist/index.js.flow +2 -1
  81. package/dist/index.js.map +1 -1
  82. package/dist/types.d.ts +13 -9
  83. package/dist/types.js.flow +19 -15
  84. package/package.json +1 -1
  85. package/src/components/input/math-input.tsx +1 -1
  86. package/src/components/keypad/button-assets.tsx +65 -40
  87. package/src/components/keypad/button.stories.tsx +61 -13
  88. package/src/components/keypad/button.tsx +1 -1
  89. package/src/components/keypad/{trigonometry-page.tsx → geometry-page/index.tsx} +3 -4
  90. package/src/components/keypad/index.tsx +19 -14
  91. package/src/components/keypad/keypad-page-items.tsx +34 -21
  92. package/src/components/keypad/keypad-pages.stories.tsx +5 -5
  93. package/src/components/keypad/keypad.stories.tsx +75 -17
  94. package/src/components/keypad/{numeric-input-page.tsx → numbers-page/index.tsx} +47 -11
  95. package/src/components/keypad/numbers-page/types.ts +4 -0
  96. package/src/components/keypad/operators-page/advanced-relations-buttons.tsx +32 -0
  97. package/src/components/keypad/operators-page/basic-relations-buttons.tsx +32 -0
  98. package/src/components/keypad/{pre-algebra-page.tsx → operators-page/index.tsx} +25 -29
  99. package/src/components/keypad/operators-page/logarithms-buttons.tsx +32 -0
  100. package/src/components/keypad/operators-page/pre-algebra-buttons.tsx +36 -0
  101. package/src/components/keypad/operators-page/types.ts +6 -0
  102. package/src/components/{__tests__ → keypad-legacy/__tests__}/two-page-keypad.test.tsx +0 -2
  103. package/src/components/{compute-layout-parameters.ts → keypad-legacy/compute-layout-parameters.ts} +2 -3
  104. package/src/components/{corner-decal.tsx → keypad-legacy/corner-decal.tsx} +2 -3
  105. package/src/components/{echo-manager.tsx → keypad-legacy/echo-manager.tsx} +7 -20
  106. package/src/components/{empty-keypad-button.tsx → keypad-legacy/empty-keypad-button.tsx} +2 -2
  107. package/src/components/{expression-keypad.tsx → keypad-legacy/expression-keypad.tsx} +8 -17
  108. package/src/components/{fraction-keypad.tsx → keypad-legacy/fraction-keypad.tsx} +6 -6
  109. package/src/components/{gesture-manager.ts → keypad-legacy/gesture-manager.ts} +2 -2
  110. package/src/components/{gesture-state-machine.ts → keypad-legacy/gesture-state-machine.ts} +1 -1
  111. package/src/components/{icon.tsx → keypad-legacy/icon.tsx} +3 -3
  112. package/src/components/{keypad-button.tsx → keypad-legacy/keypad-button.tsx} +12 -9
  113. package/src/components/{keypad-container.tsx → keypad-legacy/keypad-container.tsx} +6 -6
  114. package/src/components/{keypad.tsx → keypad-legacy/keypad.tsx} +5 -5
  115. package/src/components/{many-keypad-button.tsx → keypad-legacy/many-keypad-button.tsx} +5 -5
  116. package/src/components/{math-icon.tsx → keypad-legacy/math-icon.tsx} +2 -2
  117. package/src/components/{multi-symbol-grid.tsx → keypad-legacy/multi-symbol-grid.tsx} +4 -4
  118. package/src/components/{multi-symbol-popover.tsx → keypad-legacy/multi-symbol-popover.tsx} +3 -4
  119. package/src/components/{navigation-pad.tsx → keypad-legacy/navigation-pad.tsx} +5 -5
  120. package/src/components/{node-manager.ts → keypad-legacy/node-manager.ts} +2 -10
  121. package/src/components/{popover-manager.tsx → keypad-legacy/popover-manager.tsx} +2 -2
  122. package/src/components/{popover-state-machine.ts → keypad-legacy/popover-state-machine.ts} +1 -1
  123. package/src/components/{provided-keypad.tsx → keypad-legacy/provided-keypad.tsx} +4 -5
  124. package/src/{store → components/keypad-legacy/store}/actions.ts +5 -8
  125. package/src/{store → components/keypad-legacy/store}/echo-reducer.ts +2 -3
  126. package/src/{store → components/keypad-legacy/store}/index.ts +4 -11
  127. package/src/{store → components/keypad-legacy/store}/input-reducer.ts +4 -4
  128. package/src/{store → components/keypad-legacy/store}/keypad-reducer.ts +2 -2
  129. package/src/{store → components/keypad-legacy/store}/layout-reducer.ts +3 -3
  130. package/src/{store → components/keypad-legacy/store}/shared.ts +3 -3
  131. package/src/{store → components/keypad-legacy/store}/types.ts +14 -18
  132. package/src/components/{styles.ts → keypad-legacy/styles.ts} +1 -1
  133. package/src/components/{text-icon.tsx → keypad-legacy/text-icon.tsx} +2 -2
  134. package/src/components/{touchable-keypad-button.tsx → keypad-legacy/touchable-keypad-button.tsx} +39 -20
  135. package/src/components/{two-page-keypad.tsx → keypad-legacy/two-page-keypad.tsx} +5 -6
  136. package/src/data/key-configs.ts +10 -15
  137. package/src/data/keys.ts +1 -6
  138. package/src/index.ts +3 -1
  139. package/src/math-input.stories.tsx +2 -2
  140. package/src/types.ts +15 -8
  141. package/tsconfig-build.tsbuildinfo +1 -1
  142. package/dist/components/keypad/trigonometry-page.d.ts +0 -8
  143. package/dist/components/touchable-keypad-button.d.ts +0 -30
  144. package/dist/components/touchable-keypad-button.js.flow +0 -35
  145. package/dist/components/velocity-tracker.d.ts +0 -48
  146. package/dist/components/velocity-tracker.js.flow +0 -54
  147. package/dist/store/pager-reducer.d.ts +0 -4
  148. package/dist/store/pager-reducer.js.flow +0 -13
  149. package/dist/store/shared.d.ts +0 -7
  150. package/dist/store/shared.js.flow +0 -14
  151. package/src/components/velocity-tracker.ts +0 -86
  152. package/src/store/pager-reducer.ts +0 -125
  153. /package/dist/components/{corner-decal.d.ts → keypad-legacy/corner-decal.d.ts} +0 -0
  154. /package/dist/components/{corner-decal.js.flow → keypad-legacy/corner-decal.js.flow} +0 -0
  155. /package/dist/components/{empty-keypad-button.d.ts → keypad-legacy/empty-keypad-button.d.ts} +0 -0
  156. /package/dist/components/{empty-keypad-button.js.flow → keypad-legacy/empty-keypad-button.js.flow} +0 -0
  157. /package/dist/components/{many-keypad-button.d.ts → keypad-legacy/many-keypad-button.d.ts} +0 -0
  158. /package/dist/components/{many-keypad-button.js.flow → keypad-legacy/many-keypad-button.js.flow} +0 -0
  159. /package/dist/components/{math-icon.d.ts → keypad-legacy/math-icon.d.ts} +0 -0
  160. /package/dist/components/{math-icon.js.flow → keypad-legacy/math-icon.js.flow} +0 -0
  161. /package/dist/components/{navigation-pad.d.ts → keypad-legacy/navigation-pad.d.ts} +0 -0
  162. /package/dist/components/{navigation-pad.js.flow → keypad-legacy/navigation-pad.js.flow} +0 -0
  163. /package/dist/{store → components/keypad-legacy/store}/echo-reducer.d.ts +0 -0
  164. /package/dist/{store → components/keypad-legacy/store}/echo-reducer.js.flow +0 -0
  165. /package/dist/{store → components/keypad-legacy/store}/input-reducer.d.ts +0 -0
  166. /package/dist/{store → components/keypad-legacy/store}/input-reducer.js.flow +0 -0
  167. /package/dist/{store → components/keypad-legacy/store}/keypad-reducer.d.ts +0 -0
  168. /package/dist/{store → components/keypad-legacy/store}/keypad-reducer.js.flow +0 -0
  169. /package/dist/{store → components/keypad-legacy/store}/layout-reducer.d.ts +0 -0
  170. /package/dist/{store → components/keypad-legacy/store}/layout-reducer.js.flow +0 -0
  171. /package/dist/components/{styles.d.ts → keypad-legacy/styles.d.ts} +0 -0
  172. /package/dist/components/{styles.js.flow → keypad-legacy/styles.js.flow} +0 -0
  173. /package/dist/components/{svg-icon.d.ts → keypad-legacy/svg-icon.d.ts} +0 -0
  174. /package/dist/components/{svg-icon.js.flow → keypad-legacy/svg-icon.js.flow} +0 -0
  175. /package/dist/components/{text-icon.d.ts → keypad-legacy/text-icon.d.ts} +0 -0
  176. /package/dist/components/{text-icon.js.flow → keypad-legacy/text-icon.js.flow} +0 -0
  177. /package/dist/components/{z-indexes.d.ts → keypad-legacy/z-indexes.d.ts} +0 -0
  178. /package/dist/components/{z-indexes.js.flow → keypad-legacy/z-indexes.js.flow} +0 -0
  179. /package/src/components/{__tests__ → keypad-legacy/__tests__}/gesture-state-machine.test.ts +0 -0
  180. /package/src/components/{__tests__ → keypad-legacy/__tests__}/node-manager.test.ts +0 -0
  181. /package/src/components/{iconography → keypad-legacy/iconography}/arrow.js +0 -0
  182. /package/src/components/{iconography → keypad-legacy/iconography}/backspace.js +0 -0
  183. /package/src/components/{iconography → keypad-legacy/iconography}/cdot.js +0 -0
  184. /package/src/components/{iconography → keypad-legacy/iconography}/cos.js +0 -0
  185. /package/src/components/{iconography → keypad-legacy/iconography}/cube-root.js +0 -0
  186. /package/src/components/{iconography → keypad-legacy/iconography}/dismiss.js +0 -0
  187. /package/src/components/{iconography → keypad-legacy/iconography}/divide.js +0 -0
  188. /package/src/components/{iconography → keypad-legacy/iconography}/down.js +0 -0
  189. /package/src/components/{iconography → keypad-legacy/iconography}/equal.js +0 -0
  190. /package/src/components/{iconography → keypad-legacy/iconography}/exp-2.js +0 -0
  191. /package/src/components/{iconography → keypad-legacy/iconography}/exp-3.js +0 -0
  192. /package/src/components/{iconography → keypad-legacy/iconography}/exp.js +0 -0
  193. /package/src/components/{iconography → keypad-legacy/iconography}/frac.js +0 -0
  194. /package/src/components/{iconography → keypad-legacy/iconography}/geq.js +0 -0
  195. /package/src/components/{iconography → keypad-legacy/iconography}/gt.js +0 -0
  196. /package/src/components/{iconography → keypad-legacy/iconography}/index.js +0 -0
  197. /package/src/components/{iconography → keypad-legacy/iconography}/jump-into-numerator.js +0 -0
  198. /package/src/components/{iconography → keypad-legacy/iconography}/jump-out-base.js +0 -0
  199. /package/src/components/{iconography → keypad-legacy/iconography}/jump-out-denominator.js +0 -0
  200. /package/src/components/{iconography → keypad-legacy/iconography}/jump-out-exponent.js +0 -0
  201. /package/src/components/{iconography → keypad-legacy/iconography}/jump-out-numerator.js +0 -0
  202. /package/src/components/{iconography → keypad-legacy/iconography}/jump-out-parentheses.js +0 -0
  203. /package/src/components/{iconography → keypad-legacy/iconography}/left-paren.js +0 -0
  204. /package/src/components/{iconography → keypad-legacy/iconography}/left.js +0 -0
  205. /package/src/components/{iconography → keypad-legacy/iconography}/leq.js +0 -0
  206. /package/src/components/{iconography → keypad-legacy/iconography}/ln.js +0 -0
  207. /package/src/components/{iconography → keypad-legacy/iconography}/log-n.js +0 -0
  208. /package/src/components/{iconography → keypad-legacy/iconography}/log.js +0 -0
  209. /package/src/components/{iconography → keypad-legacy/iconography}/lt.js +0 -0
  210. /package/src/components/{iconography → keypad-legacy/iconography}/minus.js +0 -0
  211. /package/src/components/{iconography → keypad-legacy/iconography}/neq.js +0 -0
  212. /package/src/components/{iconography → keypad-legacy/iconography}/parens.js +0 -0
  213. /package/src/components/{iconography → keypad-legacy/iconography}/percent.js +0 -0
  214. /package/src/components/{iconography → keypad-legacy/iconography}/period.js +0 -0
  215. /package/src/components/{iconography → keypad-legacy/iconography}/plus.js +0 -0
  216. /package/src/components/{iconography → keypad-legacy/iconography}/radical.js +0 -0
  217. /package/src/components/{iconography → keypad-legacy/iconography}/right-paren.js +0 -0
  218. /package/src/components/{iconography → keypad-legacy/iconography}/right.js +0 -0
  219. /package/src/components/{iconography → keypad-legacy/iconography}/sin.js +0 -0
  220. /package/src/components/{iconography → keypad-legacy/iconography}/sqrt.js +0 -0
  221. /package/src/components/{iconography → keypad-legacy/iconography}/tan.js +0 -0
  222. /package/src/components/{iconography → keypad-legacy/iconography}/times.js +0 -0
  223. /package/src/components/{iconography → keypad-legacy/iconography}/up.js +0 -0
  224. /package/src/components/{svg-icon.tsx → keypad-legacy/svg-icon.tsx} +0 -0
  225. /package/src/components/{z-indexes.ts → keypad-legacy/z-indexes.ts} +0 -0
@@ -1,4 +1,4 @@
1
- import Keys from "../data/keys";
1
+ import Keys from "../../data/keys";
2
2
 
3
3
  /**
4
4
  * The state machine that backs our gesture system. In particular, this state
@@ -5,14 +5,14 @@
5
5
  import {StyleSheet} from "aphrodite";
6
6
  import * as React from "react";
7
7
 
8
- import {IconType} from "../enums";
8
+ import {IconType} from "../../enums";
9
+ import {offBlack} from "../common-style";
9
10
 
10
- import {offBlack} from "./common-style";
11
11
  import MathIcon from "./math-icon";
12
12
  import SvgIcon from "./svg-icon";
13
13
  import TextIcon from "./text-icon";
14
14
 
15
- import type {IconConfig} from "../types";
15
+ import type {IconConfig} from "../../types";
16
16
  import type {StyleType} from "@khanacademy/wonder-blocks-core";
17
17
 
18
18
  const focusedColor = "#FFF";
@@ -6,9 +6,8 @@ import {StyleSheet, css} from "aphrodite";
6
6
  import * as React from "react";
7
7
  import {connect} from "react-redux";
8
8
 
9
- import {BorderDirection, BorderStyles, KeyType} from "../enums";
10
- import {View} from "../fake-react-native-web/index";
11
-
9
+ import {BorderDirection, BorderStyles, KeyType} from "../../enums";
10
+ import {View} from "../../fake-react-native-web/index";
12
11
  import {
13
12
  wonderBlocksBlue,
14
13
  innerBorderColor,
@@ -18,13 +17,14 @@ import {
18
17
  operatorGrey,
19
18
  controlGrey,
20
19
  emptyGrey,
21
- } from "./common-style";
20
+ } from "../common-style";
21
+
22
22
  import CornerDecal from "./corner-decal";
23
23
  import Icon from "./icon";
24
24
  import MultiSymbolGrid from "./multi-symbol-grid";
25
25
 
26
- import type {State} from "../store/types";
27
- import type {Border, KeyConfig, IconConfig} from "../types";
26
+ import type {Border, NonManyKeyConfig, IconConfig} from "../../types";
27
+ import type {State} from "./store/types";
28
28
  import type {StyleType} from "@khanacademy/wonder-blocks-core";
29
29
 
30
30
  interface ReduxProps {
@@ -35,7 +35,7 @@ interface ReduxProps {
35
35
  interface Props extends ReduxProps {
36
36
  ariaLabel?: string;
37
37
  borders: Border;
38
- childKeys: ReadonlyArray<KeyConfig>;
38
+ childKeys: ReadonlyArray<NonManyKeyConfig>;
39
39
  disabled: boolean;
40
40
  focused: boolean;
41
41
  popoverEnabled: boolean;
@@ -229,7 +229,7 @@ class KeypadButton extends React.PureComponent<Props> {
229
229
  };
230
230
  const icons = childKeys.map((keyConfig) => {
231
231
  return keyConfig.icon;
232
- });
232
+ }) as ReadonlyArray<IconConfig>;
233
233
  return (
234
234
  <View
235
235
  style={buttonStyle}
@@ -256,7 +256,10 @@ class KeypadButton extends React.PureComponent<Props> {
256
256
  <View style={buttonStyle} {...eventHandlers} {...a11yMarkup}>
257
257
  {maybeFocusBox}
258
258
  <View style={iconWrapperStyle}>
259
- <Icon icon={icon} focused={renderFocused} />
259
+ <Icon
260
+ icon={icon as IconConfig}
261
+ focused={renderFocused}
262
+ />
260
263
  </View>
261
264
  {maybeCornerDecal}
262
265
  </View>
@@ -2,23 +2,23 @@ import {StyleSheet} from "aphrodite";
2
2
  import * as React from "react";
3
3
  import {connect} from "react-redux";
4
4
 
5
- import {LayoutMode, KeypadType} from "../enums";
6
- import {View} from "../fake-react-native-web/index";
7
- import {setPageSize} from "../store/actions";
8
-
5
+ import {LayoutMode, KeypadType} from "../../enums";
6
+ import {View} from "../../fake-react-native-web/index";
9
7
  import {
10
8
  innerBorderColor,
11
9
  innerBorderStyle,
12
10
  innerBorderWidthPx,
13
11
  compactKeypadBorderRadiusPx,
14
- } from "./common-style";
12
+ } from "../common-style";
13
+
15
14
  import ExpressionKeypad from "./expression-keypad";
16
15
  import FractionKeypad from "./fraction-keypad";
17
16
  import NavigationPad from "./navigation-pad";
17
+ import {setPageSize} from "./store/actions";
18
18
  import Styles from "./styles";
19
19
  import * as zIndexes from "./z-indexes";
20
20
 
21
- import type {State as ReduxState} from "../store/types";
21
+ import type {State as ReduxState} from "./store/types";
22
22
  import type {StyleType} from "@khanacademy/wonder-blocks-core";
23
23
 
24
24
  const {row, centered, fullWidth} = Styles;
@@ -7,14 +7,14 @@ import * as React from "react";
7
7
  import ReactDOM from "react-dom";
8
8
  import {connect} from "react-redux";
9
9
 
10
- import {View} from "../fake-react-native-web/index";
11
- import {removeEcho} from "../store/actions";
10
+ import {View} from "../../fake-react-native-web/index";
12
11
 
13
12
  import EchoManager from "./echo-manager";
14
13
  import PopoverManager from "./popover-manager";
14
+ import {removeEcho} from "./store/actions";
15
15
 
16
- import type {State} from "../store/types";
17
- import type {Popover, Echo} from "../types";
16
+ import type {Bound, Popover, Echo} from "../../types";
17
+ import type {State} from "./store/types";
18
18
  import type {StyleType} from "@khanacademy/wonder-blocks-core";
19
19
 
20
20
  interface ReduxProps {
@@ -33,7 +33,7 @@ interface Props extends ReduxProps {
33
33
  class Keypad extends React.Component<Props> {
34
34
  _isMounted: boolean | undefined;
35
35
  _resizeTimeout: number | null | undefined;
36
- _container: DOMRect | null | undefined;
36
+ _container: Bound | null | undefined;
37
37
 
38
38
  componentDidMount() {
39
39
  this._isMounted = true;
@@ -5,9 +5,9 @@
5
5
 
6
6
  import * as React from "react";
7
7
 
8
- import KeyConfigs from "../data/key-configs";
9
- import Keys from "../data/keys";
10
- import {KeyType} from "../enums";
8
+ import KeyConfigs from "../../data/key-configs";
9
+ import {KeyType} from "../../enums";
10
+ import {KeyConfig} from "../../types";
11
11
 
12
12
  import EmptyKeypadButton from "./empty-keypad-button";
13
13
  import TouchableKeypadButton from "./touchable-keypad-button";
@@ -33,8 +33,8 @@ class ManyKeypadButton extends React.Component<Props> {
33
33
  const keyConfig = KeyConfigs[keys[0]];
34
34
  return <TouchableKeypadButton keyConfig={keyConfig} {...rest} />;
35
35
  } else {
36
- const keyConfig = {
37
- id: Keys.MANY,
36
+ const keyConfig: KeyConfig = {
37
+ id: "MANY",
38
38
  type: KeyType.MANY,
39
39
  childKeyIds: keys,
40
40
  };
@@ -7,9 +7,9 @@ import katex from "katex";
7
7
  import * as React from "react";
8
8
  import ReactDOM from "react-dom";
9
9
 
10
- import {View} from "../fake-react-native-web/index";
10
+ import {View} from "../../fake-react-native-web/index";
11
+ import {iconSizeHeightPx, iconSizeWidthPx} from "../common-style";
11
12
 
12
- import {iconSizeHeightPx, iconSizeWidthPx} from "./common-style";
13
13
  import Styles from "./styles";
14
14
 
15
15
  import type {StyleType} from "@khanacademy/wonder-blocks-core";
@@ -6,11 +6,11 @@
6
6
  import {StyleSheet} from "aphrodite";
7
7
  import * as React from "react";
8
8
 
9
- import {IconType} from "../enums";
10
- import {View} from "../fake-react-native-web/index";
11
- import {IconConfig} from "../types";
9
+ import {IconType} from "../../enums";
10
+ import {View} from "../../fake-react-native-web/index";
11
+ import {IconConfig} from "../../types";
12
+ import {iconSizeHeightPx, iconSizeWidthPx} from "../common-style";
12
13
 
13
- import {iconSizeHeightPx, iconSizeWidthPx} from "./common-style";
14
14
  import Icon from "./icon";
15
15
  import Styles from "./styles";
16
16
 
@@ -5,9 +5,9 @@
5
5
  import {StyleSheet} from "aphrodite";
6
6
  import * as React from "react";
7
7
 
8
- import {BorderStyles} from "../enums";
9
- import {View} from "../fake-react-native-web/index";
10
- import {KeyConfig} from "../types";
8
+ import {BorderStyles} from "../../enums";
9
+ import {View} from "../../fake-react-native-web/index";
10
+ import {KeyConfig} from "../../types";
11
11
 
12
12
  import TouchableKeypadButton from "./touchable-keypad-button";
13
13
  import * as zIndexes from "./z-indexes";
@@ -27,7 +27,6 @@ class MultiSymbolPopover extends React.Component<Prop> {
27
27
  {keys.map((key) => {
28
28
  return (
29
29
  <TouchableKeypadButton
30
- key={key.id}
31
30
  keyConfig={key}
32
31
  borders={BorderStyles.NONE}
33
32
  />
@@ -6,16 +6,16 @@
6
6
  import {StyleSheet} from "aphrodite";
7
7
  import * as React from "react";
8
8
 
9
- import KeyConfigs from "../data/key-configs";
10
- import {BorderStyles} from "../enums";
11
- import {View} from "../fake-react-native-web/index";
12
-
9
+ import KeyConfigs from "../../data/key-configs";
10
+ import {BorderStyles} from "../../enums";
11
+ import {View} from "../../fake-react-native-web/index";
13
12
  import {
14
13
  navigationPadWidthPx,
15
14
  controlGrey,
16
15
  valueGrey,
17
16
  offBlack16,
18
- } from "./common-style";
17
+ } from "../common-style";
18
+
19
19
  import Styles from "./styles";
20
20
  import TouchableKeypadButton from "./touchable-keypad-button";
21
21
 
@@ -1,4 +1,4 @@
1
- import type {Border, LayoutProps} from "../types";
1
+ import {LayoutProps, Bound} from "../../types";
2
2
  /**
3
3
  * A manager for our node-to-ID system. In particular, this class is
4
4
  * responsible for maintaing a mapping between DOM nodes and node IDs, and
@@ -9,18 +9,13 @@ import type {Border, LayoutProps} from "../types";
9
9
 
10
10
  class NodeManager {
11
11
  _nodesById: Record<string, HTMLElement>;
12
- _bordersById: Record<string, Border>;
13
12
  _orderedIds: ReadonlyArray<string>;
14
- _cachedBoundingBoxesById: Record<string, DOMRect>;
13
+ _cachedBoundingBoxesById: Record<string, Bound>;
15
14
 
16
15
  constructor() {
17
16
  // A mapping from IDs to DOM nodes.
18
17
  this._nodesById = {};
19
18
 
20
- // A mapping from IDs to the borders around the DOM nodes, which can be
21
- // useful for layout purposes.
22
- this._bordersById = {};
23
-
24
19
  // An ordered list of IDs, where DOM nodes that are "higher" on the
25
20
  // page come earlier in the list. Note that an ID may be present in
26
21
  // this ordered list but not be registered to a DOM node (i.e., if it
@@ -53,10 +48,8 @@ class NodeManager {
53
48
  id: string,
54
49
  domNode: HTMLElement,
55
50
  childIds: ReadonlyArray<string>,
56
- borders: Border,
57
51
  ) {
58
52
  this._nodesById[id] = domNode;
59
- this._bordersById[id] = borders;
60
53
 
61
54
  // Make sure that any children appear first.
62
55
  // TODO(charlie): This is a very simplistic system that wouldn't
@@ -133,7 +126,6 @@ class NodeManager {
133
126
 
134
127
  return {
135
128
  initialBounds: this._cachedBoundingBoxesById[id],
136
- borders: this._bordersById[id],
137
129
  };
138
130
  }
139
131
  }
@@ -6,11 +6,11 @@
6
6
  import * as React from "react";
7
7
  import {CSSTransition} from "react-transition-group";
8
8
 
9
- import KeyConfigs from "../data/key-configs";
9
+ import KeyConfigs from "../../data/key-configs";
10
10
 
11
11
  import MultiSymbolPopover from "./multi-symbol-popover";
12
12
 
13
- import type {Popover, KeyConfig} from "../types";
13
+ import type {Popover, KeyConfig} from "../../types";
14
14
 
15
15
  // NOTE(charlie): These must be kept in sync with the transition durations and
16
16
  // classnames specified in popover.less.
@@ -1,4 +1,4 @@
1
- import type {ActiveNodesObj} from "../types";
1
+ import type {ActiveNodesObj} from "../../types";
2
2
 
3
3
  /**
4
4
  * A state machine for the popover state. In particular, this class manages the
@@ -2,18 +2,17 @@ import * as React from "react";
2
2
  import ReactDOM from "react-dom";
3
3
  import {Provider} from "react-redux";
4
4
 
5
+ import KeypadContainer from "./keypad-container";
5
6
  import {
6
7
  activateKeypad,
7
8
  dismissKeypad,
8
9
  configureKeypad,
9
10
  setCursor,
10
11
  setKeyHandler,
11
- } from "../store/actions";
12
- import {createStore} from "../store/index";
13
-
14
- import KeypadContainer from "./keypad-container";
12
+ } from "./store/actions";
13
+ import {createStore} from "./store/index";
15
14
 
16
- import type {Cursor, KeypadConfiguration, KeyHandler} from "../types";
15
+ import type {Cursor, KeypadConfiguration, KeyHandler} from "../../types";
17
16
  import type {StyleType} from "@khanacademy/wonder-blocks-core";
18
17
 
19
18
  type Props = {
@@ -1,12 +1,12 @@
1
- import Keys from "../data/keys";
1
+ import Keys from "../../../data/keys";
2
2
 
3
3
  import type {
4
+ Bound,
4
5
  KeypadConfiguration,
5
6
  KeyHandler,
6
7
  Cursor,
7
8
  ActiveNodesObj,
8
- Border,
9
- } from "../types";
9
+ } from "../../../types";
10
10
 
11
11
  // naming convention: verb + noun
12
12
  // the noun should be one of the other properties in the object that's
@@ -145,21 +145,18 @@ export const setActiveNodes = (
145
145
  type PressKeyAction = {
146
146
  type: "PressKey";
147
147
  key: Keys;
148
- borders: Border;
149
- initialBounds: DOMRect;
148
+ initialBounds: Bound;
150
149
  inPopover: boolean;
151
150
  };
152
151
 
153
152
  export const pressKey = (
154
153
  key: Keys,
155
- borders: Border,
156
- initialBounds: DOMRect,
154
+ initialBounds: Bound,
157
155
  inPopover: any,
158
156
  ): PressKeyAction => {
159
157
  return {
160
158
  type: "PressKey",
161
159
  key,
162
- borders,
163
160
  initialBounds,
164
161
  inPopover,
165
162
  };
@@ -1,5 +1,5 @@
1
- import KeyConfigs from "../data/key-configs";
2
- import {EchoAnimationType, KeyType} from "../enums";
1
+ import KeyConfigs from "../../../data/key-configs";
2
+ import {EchoAnimationType, KeyType} from "../../../enums";
3
3
 
4
4
  import type {Action} from "./actions";
5
5
  import type {EchoState} from "./types";
@@ -35,7 +35,6 @@ const echoReducer = function (
35
35
  animationType: action.inPopover
36
36
  ? EchoAnimationType.LONG_FADE_ONLY
37
37
  : EchoAnimationType.FADE_ONLY,
38
- borders: action.borders,
39
38
  id: keyConfig.id,
40
39
  initialBounds: action.initialBounds,
41
40
  },
@@ -1,17 +1,16 @@
1
1
  import * as Redux from "redux";
2
2
 
3
- import GestureManager from "../components/gesture-manager";
4
- import Keys from "../data/keys";
3
+ import Keys from "../../../data/keys";
4
+ import GestureManager from "../gesture-manager";
5
5
 
6
6
  import {onSwipeChange, onSwipeEnd, setActiveNodes, pressKey} from "./actions";
7
7
  import echoReducer from "./echo-reducer";
8
8
  import inputReducer from "./input-reducer";
9
9
  import keypadReducer from "./keypad-reducer";
10
10
  import layoutReducer from "./layout-reducer";
11
- import pagerReducer from "./pager-reducer";
12
11
  import {defaultKeypadType, keypadForType} from "./shared";
13
12
 
14
- import type {LayoutProps, ActiveNodesObj} from "../types";
13
+ import type {LayoutProps, ActiveNodesObj} from "../../../types";
15
14
  import type {Action} from "./actions";
16
15
  import type {GestureState} from "./types";
17
16
 
@@ -39,12 +38,7 @@ export const createStore = () => {
39
38
  inPopover: boolean,
40
39
  ) => {
41
40
  store.dispatch(
42
- pressKey(
43
- key,
44
- layoutProps.borders,
45
- layoutProps.initialBounds,
46
- inPopover,
47
- ),
41
+ pressKey(key, layoutProps.initialBounds, inPopover),
48
42
  );
49
43
  },
50
44
  },
@@ -107,7 +101,6 @@ export const createStore = () => {
107
101
  const reducer = Redux.combineReducers({
108
102
  input: inputReducer,
109
103
  keypad: keypadReducer,
110
- pager: pagerReducer,
111
104
  gestures: gestureReducer,
112
105
  echoes: echoReducer,
113
106
  layout: layoutReducer,
@@ -1,8 +1,8 @@
1
- import {CursorContext} from "../components/input/cursor-contexts";
2
- import KeyConfigs from "../data/key-configs";
3
- import {KeyType} from "../enums";
1
+ import KeyConfigs from "../../../data/key-configs";
2
+ import {KeyType} from "../../../enums";
3
+ import {CursorContext} from "../../input/cursor-contexts";
4
4
 
5
- import type {Cursor, KeyHandler} from "../types";
5
+ import type {Cursor, KeyHandler} from "../../../types";
6
6
  import type {Action} from "./actions";
7
7
  import type {InputState} from "./types";
8
8
 
@@ -1,5 +1,5 @@
1
- import KeyConfigs from "../data/key-configs";
2
- import Keys from "../data/keys";
1
+ import KeyConfigs from "../../../data/key-configs";
2
+ import Keys from "../../../data/keys";
3
3
 
4
4
  import {defaultKeypadType} from "./shared";
5
5
 
@@ -1,6 +1,6 @@
1
- import {tabletCutoffPx} from "../components/common-style";
2
- import {computeLayoutParameters} from "../components/compute-layout-parameters";
3
- import {DeviceOrientation, DeviceType, LayoutMode} from "../enums";
1
+ import {DeviceOrientation, DeviceType, LayoutMode} from "../../../enums";
2
+ import {tabletCutoffPx} from "../../common-style";
3
+ import {computeLayoutParameters} from "../compute-layout-parameters";
4
4
 
5
5
  import {defaultKeypadType, keypadForType} from "./shared";
6
6
 
@@ -1,6 +1,6 @@
1
- import {expressionKeypadLayout} from "../components/expression-keypad";
2
- import {fractionKeypadLayout} from "../components/fraction-keypad";
3
- import {KeypadType} from "../enums";
1
+ import {KeypadType} from "../../../enums";
2
+ import {expressionKeypadLayout} from "../expression-keypad";
3
+ import {fractionKeypadLayout} from "../fraction-keypad";
4
4
 
5
5
  const defaultKeypadType = KeypadType.EXPRESSION;
6
6
 
@@ -1,9 +1,8 @@
1
- import GestureManager from "../components/gesture-manager";
2
- import VelocityTracker from "../components/velocity-tracker";
3
- import Keys from "../data/keys";
4
- import {LayoutMode, KeypadType} from "../enums";
1
+ import Keys from "../../../data/keys";
2
+ import {LayoutMode, KeypadType} from "../../../enums";
3
+ import GestureManager from "../gesture-manager";
5
4
 
6
- import type {Cursor, KeyHandler, Popover, Echo} from "../types";
5
+ import type {Cursor, KeyHandler, Popover, Echo} from "../../../types";
7
6
 
8
7
  // Interaction between keypad and input
9
8
  export interface InputState {
@@ -29,28 +28,26 @@ export interface KeypadState {
29
28
  active: boolean;
30
29
  }
31
30
 
32
- // Pagination for keypad types with multiple pages
33
- export interface PagerState {
34
- animateToPosition: boolean;
35
- // On keypad types with multiple pages
36
- // which page we are on
37
- currentPage: number;
38
- dx: number;
39
- numPages: number;
40
- pageWidthPx: number;
41
- velocityTracker: VelocityTracker;
42
- }
43
-
31
+ // Handles things like:
32
+ // long-press: to open multikey popover
33
+ // swipe: for pagination
34
+ // press: regular pushing of a button
44
35
  export interface GestureState {
36
+ // The current multikey popover?
45
37
  popover: Popover | null;
38
+ // ?? Maybe which key is currently focused?
46
39
  focus: Keys | null;
40
+ // Complex object that interprets touches as actions
47
41
  gestureManager: GestureManager;
48
42
  }
49
43
 
44
+ // Manages the animations for pressing keys
50
45
  export interface EchoState {
46
+ // Which echoes are in the process of animating
51
47
  echoes: ReadonlyArray<Echo>;
52
48
  }
53
49
 
50
+ // Layout (size, where to put buttons, etc)
54
51
  export interface LayoutState {
55
52
  gridDimensions: {
56
53
  numRows: number;
@@ -74,7 +71,6 @@ export interface LayoutState {
74
71
  export interface State {
75
72
  input: InputState;
76
73
  keypad: KeypadState;
77
- pager: PagerState;
78
74
  gestures: GestureState;
79
75
  echoes: EchoState;
80
76
  layout: LayoutState;
@@ -4,7 +4,7 @@
4
4
 
5
5
  import {StyleSheet} from "aphrodite";
6
6
 
7
- import {compactKeypadBorderRadiusPx} from "./common-style";
7
+ import {compactKeypadBorderRadiusPx} from "../common-style";
8
8
 
9
9
  export default StyleSheet.create({
10
10
  row: {
@@ -5,9 +5,9 @@
5
5
  import {StyleSheet} from "aphrodite";
6
6
  import * as React from "react";
7
7
 
8
- import {View, Text} from "../fake-react-native-web/index";
8
+ import {View, Text} from "../../fake-react-native-web/index";
9
+ import {iconSizeHeightPx, iconSizeWidthPx} from "../common-style";
9
10
 
10
- import {iconSizeHeightPx, iconSizeWidthPx} from "./common-style";
11
11
  import Styles from "./styles";
12
12
 
13
13
  import type {StyleType} from "@khanacademy/wonder-blocks-core";