@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,33 +1,91 @@
1
1
  import {action} from "@storybook/addon-actions";
2
- import {withKnobs} from "@storybook/addon-knobs";
3
2
  import {INITIAL_VIEWPORTS} from "@storybook/addon-viewport";
3
+ import {ComponentStory} from "@storybook/react";
4
4
  import * as React from "react";
5
5
 
6
- import Keypad from "./index";
6
+ import Keypad, {Props as KeypadProps} from "./index";
7
+
8
+ const opsPage = "Operators Page";
9
+ const numsPage = "Numbers Page";
10
+ const geoPage = "Geometry Page";
7
11
 
8
12
  export default {
9
13
  title: "Full Keypad",
10
- decorators: [withKnobs],
11
14
  parameters: {
12
15
  backgrounds: {
13
16
  values: [{name: "light background", value: "white", default: true}],
14
17
  },
15
18
  viewport: {defaultViewport: "iphone6", viewports: INITIAL_VIEWPORTS},
16
19
  },
20
+ component: Keypad,
21
+ args: {
22
+ advancedRelations: false,
23
+ basicRelations: false,
24
+ divisionKey: false,
25
+ logarithms: false,
26
+ multiplicationDot: false,
27
+ preAlgebra: false,
28
+ trigonometry: false,
29
+ },
30
+ argTypes: {
31
+ advancedRelations: {
32
+ control: "boolean",
33
+ table: {
34
+ category: opsPage,
35
+ },
36
+ },
37
+ basicRelations: {
38
+ control: "boolean",
39
+ table: {
40
+ category: opsPage,
41
+ },
42
+ },
43
+ divisionKey: {
44
+ control: "boolean",
45
+ table: {
46
+ category: numsPage,
47
+ },
48
+ },
49
+ logarithms: {
50
+ control: "boolean",
51
+ table: {
52
+ category: opsPage,
53
+ },
54
+ },
55
+ multiplicationDot: {
56
+ control: "boolean",
57
+ table: {
58
+ category: numsPage,
59
+ },
60
+ },
61
+ preAlgebra: {
62
+ control: "boolean",
63
+ table: {
64
+ category: opsPage,
65
+ },
66
+ },
67
+ trigonometry: {
68
+ control: "boolean",
69
+ table: {
70
+ category: geoPage,
71
+ },
72
+ },
73
+ },
17
74
  };
18
75
 
19
- export const PreAlgebra = (): React.ReactElement => (
20
- <Keypad
21
- onClickKey={action("onClickKey")}
22
- preAlgebra={true}
23
- trigonometry={false}
24
- />
25
- );
76
+ const Template: ComponentStory<typeof Keypad> = (
77
+ args: KeypadProps,
78
+ ): React.ReactElement => <Keypad {...args} onClickKey={action("onClickKey")} />;
79
+
80
+ export const Default = Template.bind({});
26
81
 
27
- export const Trigonometry = (): React.ReactElement => (
28
- <Keypad
29
- onClickKey={action("onClickKey")}
30
- preAlgebra={true}
31
- trigonometry={true}
32
- />
33
- );
82
+ export const PreAlgebra = Template.bind({});
83
+ PreAlgebra.args = {
84
+ preAlgebra: true,
85
+ };
86
+
87
+ export const Trigonometry = Template.bind({});
88
+ Trigonometry.args = {
89
+ preAlgebra: true,
90
+ trigonometry: true,
91
+ };
@@ -1,19 +1,20 @@
1
1
  import * as React from "react";
2
2
 
3
- import Keys from "../../data/key-configs";
4
-
3
+ import Keys from "../../../data/key-configs";
5
4
  import {
6
5
  KeypadPageContainer,
7
6
  KeypadButton,
8
7
  SecondaryKeypadButton,
9
8
  KeypadActionButton,
10
- } from "./keypad-page-items";
9
+ } from "../keypad-page-items";
10
+
11
+ import {NumbersPageOptions} from "./types";
11
12
 
12
13
  type Props = {
13
14
  onClickKey: (keyConfig: string) => void;
14
- };
15
+ } & NumbersPageOptions;
15
16
 
16
- export default class NumericInputPage extends React.Component<Props> {
17
+ export default class NumbersPage extends React.Component<Props> {
17
18
  render(): React.ReactNode {
18
19
  const {onClickKey} = this.props;
19
20
  return (
@@ -23,7 +24,29 @@ export default class NumericInputPage extends React.Component<Props> {
23
24
  <KeypadButton keyConfig={Keys.NUM_8} onClickKey={onClickKey} />
24
25
  <KeypadButton keyConfig={Keys.NUM_9} onClickKey={onClickKey} />
25
26
  <SecondaryKeypadButton
26
- keyConfig={Keys.TIMES}
27
+ keyConfig={Keys.DIVIDE}
28
+ style={
29
+ this.props.divisionKey
30
+ ? {
31
+ gridColumn: "4",
32
+ gridRow: "1",
33
+ }
34
+ : {
35
+ display: "none",
36
+ }
37
+ }
38
+ onClickKey={onClickKey}
39
+ />
40
+ <SecondaryKeypadButton
41
+ keyConfig={
42
+ this.props.multiplicationDot ? Keys.CDOT : Keys.TIMES
43
+ }
44
+ style={
45
+ this.props.divisionKey && {
46
+ gridColumn: "4",
47
+ gridRow: "2",
48
+ }
49
+ }
27
50
  onClickKey={onClickKey}
28
51
  />
29
52
  <SecondaryKeypadButton
@@ -42,6 +65,12 @@ export default class NumericInputPage extends React.Component<Props> {
42
65
 
43
66
  <SecondaryKeypadButton
44
67
  keyConfig={Keys.MINUS}
68
+ style={
69
+ this.props.divisionKey && {
70
+ gridColumn: "4",
71
+ gridRow: "3",
72
+ }
73
+ }
45
74
  onClickKey={onClickKey}
46
75
  />
47
76
 
@@ -59,11 +88,18 @@ export default class NumericInputPage extends React.Component<Props> {
59
88
 
60
89
  <SecondaryKeypadButton
61
90
  keyConfig={Keys.PLUS}
62
- style={{
63
- gridColumn: "4",
64
- gridRowStart: "3",
65
- gridRowEnd: "5",
66
- }}
91
+ style={
92
+ this.props.divisionKey
93
+ ? {
94
+ gridColumn: "4",
95
+ gridRow: "4",
96
+ }
97
+ : {
98
+ gridColumn: "4",
99
+ gridRowStart: "3",
100
+ gridRowEnd: "5",
101
+ }
102
+ }
67
103
  onClickKey={onClickKey}
68
104
  />
69
105
 
@@ -0,0 +1,4 @@
1
+ export type NumbersPageOptions = {
2
+ multiplicationDot?: boolean;
3
+ divisionKey?: boolean;
4
+ };
@@ -0,0 +1,32 @@
1
+ import React from "react";
2
+
3
+ import Keys from "../../../data/key-configs";
4
+ import {PlaceHolderButtons, SecondaryKeypadButton} from "../keypad-page-items";
5
+
6
+ type Props = {
7
+ onClickKey: (keyConfig: string) => void;
8
+ placeholder?: boolean;
9
+ };
10
+
11
+ export const AdvancedRelations = ({
12
+ onClickKey,
13
+ placeholder,
14
+ }: Props): React.ReactElement =>
15
+ placeholder ? (
16
+ <PlaceHolderButtons count={3} />
17
+ ) : (
18
+ <React.Fragment>
19
+ <SecondaryKeypadButton
20
+ keyConfig={Keys.NEQ}
21
+ onClickKey={onClickKey}
22
+ />
23
+ <SecondaryKeypadButton
24
+ keyConfig={Keys.LEQ}
25
+ onClickKey={onClickKey}
26
+ />
27
+ <SecondaryKeypadButton
28
+ keyConfig={Keys.GEQ}
29
+ onClickKey={onClickKey}
30
+ />
31
+ </React.Fragment>
32
+ );
@@ -0,0 +1,32 @@
1
+ import React from "react";
2
+
3
+ import Keys from "../../../data/key-configs";
4
+ import {PlaceHolderButtons, SecondaryKeypadButton} from "../keypad-page-items";
5
+
6
+ type Props = {
7
+ onClickKey: (keyConfig: string) => void;
8
+ placeholder?: boolean;
9
+ };
10
+
11
+ export const BasicRelations = ({
12
+ onClickKey,
13
+ placeholder,
14
+ }: Props): React.ReactElement =>
15
+ placeholder ? (
16
+ <PlaceHolderButtons count={3} />
17
+ ) : (
18
+ <React.Fragment>
19
+ <SecondaryKeypadButton
20
+ keyConfig={Keys.EQUAL}
21
+ onClickKey={onClickKey}
22
+ />
23
+ <SecondaryKeypadButton
24
+ keyConfig={Keys.LT}
25
+ onClickKey={onClickKey}
26
+ />
27
+ <SecondaryKeypadButton
28
+ keyConfig={Keys.GT}
29
+ onClickKey={onClickKey}
30
+ />
31
+ </React.Fragment>
32
+ );
@@ -1,39 +1,31 @@
1
1
  import * as React from "react";
2
2
 
3
- import Keys from "../../data/key-configs";
4
-
3
+ import Keys from "../../../data/key-configs";
5
4
  import {
6
5
  KeypadPageContainer,
7
6
  SecondaryKeypadButton,
8
7
  KeypadActionButton,
9
- PlaceHolderButton,
10
- } from "./keypad-page-items";
8
+ } from "../keypad-page-items";
9
+
10
+ import {AdvancedRelations} from "./advanced-relations-buttons";
11
+ import {BasicRelations} from "./basic-relations-buttons";
12
+ import {Logarithms} from "./logarithms-buttons";
13
+ import {PreAlgebra} from "./pre-algebra-buttons";
14
+ import {OperatorsButtonSets} from "./types";
11
15
 
12
16
  type Props = {
13
17
  onClickKey: (keyConfig: string) => void;
14
- };
18
+ } & OperatorsButtonSets;
15
19
 
16
- export default class PreAlgebraPage extends React.Component<Props> {
20
+ export default class OperatorsPage extends React.Component<Props> {
17
21
  render(): React.ReactNode {
18
22
  const {onClickKey} = this.props;
19
23
  return (
20
24
  <KeypadPageContainer>
21
25
  {/* Row 1 */}
22
- <SecondaryKeypadButton
23
- keyConfig={Keys.EXP_2}
24
- onClickKey={onClickKey}
25
- />
26
- <SecondaryKeypadButton
27
- keyConfig={Keys.EXP}
28
- onClickKey={onClickKey}
29
- />
30
- <SecondaryKeypadButton
31
- keyConfig={Keys.SQRT}
32
- onClickKey={onClickKey}
33
- />
34
- <SecondaryKeypadButton
35
- keyConfig={Keys.RADICAL}
26
+ <PreAlgebra
36
27
  onClickKey={onClickKey}
28
+ placeholder={!this.props.preAlgebra}
37
29
  />
38
30
 
39
31
  <SecondaryKeypadButton
@@ -45,9 +37,10 @@ export default class PreAlgebraPage extends React.Component<Props> {
45
37
  onClickKey={onClickKey}
46
38
  />
47
39
  {/* Row 2 */}
48
- <PlaceHolderButton />
49
- <PlaceHolderButton />
50
- <PlaceHolderButton />
40
+ <Logarithms
41
+ onClickKey={onClickKey}
42
+ placeholder={!this.props.logarithms}
43
+ />
51
44
  <SecondaryKeypadButton
52
45
  keyConfig={Keys.X}
53
46
  onClickKey={onClickKey}
@@ -63,9 +56,11 @@ export default class PreAlgebraPage extends React.Component<Props> {
63
56
  }}
64
57
  />
65
58
  {/* Row 3 */}
66
- <PlaceHolderButton />
67
- <PlaceHolderButton />
68
- <PlaceHolderButton />
59
+ {/* TODO: implement relatons buttons */}
60
+ <BasicRelations
61
+ onClickKey={onClickKey}
62
+ placeholder={!this.props.basicRelations}
63
+ />
69
64
  <SecondaryKeypadButton
70
65
  keyConfig={Keys.PI}
71
66
  onClickKey={onClickKey}
@@ -81,9 +76,10 @@ export default class PreAlgebraPage extends React.Component<Props> {
81
76
  onClickKey={onClickKey}
82
77
  />
83
78
  {/* Row 4 */}
84
- <PlaceHolderButton />
85
- <PlaceHolderButton />
86
- <PlaceHolderButton />
79
+ <AdvancedRelations
80
+ onClickKey={onClickKey}
81
+ placeholder={!this.props.advancedRelations}
82
+ />
87
83
  <KeypadActionButton
88
84
  keyConfig={Keys.DISMISS}
89
85
  style={{
@@ -0,0 +1,32 @@
1
+ import React from "react";
2
+
3
+ import Keys from "../../../data/key-configs";
4
+ import {PlaceHolderButtons, SecondaryKeypadButton} from "../keypad-page-items";
5
+
6
+ type Props = {
7
+ onClickKey: (keyConfig: string) => void;
8
+ placeholder?: boolean;
9
+ };
10
+
11
+ export const Logarithms = ({
12
+ onClickKey,
13
+ placeholder,
14
+ }: Props): React.ReactElement =>
15
+ placeholder ? (
16
+ <PlaceHolderButtons count={3} />
17
+ ) : (
18
+ <React.Fragment>
19
+ <SecondaryKeypadButton
20
+ keyConfig={Keys.LOG}
21
+ onClickKey={onClickKey}
22
+ />
23
+ <SecondaryKeypadButton
24
+ keyConfig={Keys.LOG_N}
25
+ onClickKey={onClickKey}
26
+ />
27
+ <SecondaryKeypadButton
28
+ keyConfig={Keys.LN}
29
+ onClickKey={onClickKey}
30
+ />
31
+ </React.Fragment>
32
+ );
@@ -0,0 +1,36 @@
1
+ import React from "react";
2
+
3
+ import Keys from "../../../data/key-configs";
4
+ import {PlaceHolderButtons, SecondaryKeypadButton} from "../keypad-page-items";
5
+
6
+ type Props = {
7
+ onClickKey: (keyConfig: string) => void;
8
+ placeholder?: boolean;
9
+ };
10
+
11
+ export const PreAlgebra = ({
12
+ onClickKey,
13
+ placeholder,
14
+ }: Props): React.ReactElement =>
15
+ placeholder ? (
16
+ <PlaceHolderButtons count={4} />
17
+ ) : (
18
+ <React.Fragment>
19
+ <SecondaryKeypadButton
20
+ keyConfig={Keys.EXP_2}
21
+ onClickKey={onClickKey}
22
+ />
23
+ <SecondaryKeypadButton
24
+ keyConfig={Keys.EXP}
25
+ onClickKey={onClickKey}
26
+ />
27
+ <SecondaryKeypadButton
28
+ keyConfig={Keys.SQRT}
29
+ onClickKey={onClickKey}
30
+ />
31
+ <SecondaryKeypadButton
32
+ keyConfig={Keys.RADICAL}
33
+ onClickKey={onClickKey}
34
+ />
35
+ </React.Fragment>
36
+ );
@@ -0,0 +1,6 @@
1
+ export type OperatorsButtonSets = {
2
+ preAlgebra?: boolean;
3
+ logarithms?: boolean;
4
+ basicRelations?: boolean;
5
+ advancedRelations?: boolean;
6
+ };
@@ -8,7 +8,6 @@ describe("<TwoPageKeyPage />", () => {
8
8
  // Arrange
9
9
  const wrapper = mount(
10
10
  <TwoPageKeypad
11
- currentPage={1}
12
11
  leftPage={<p>Left Page</p>}
13
12
  rightPage={<p>Right Page</p>}
14
13
  />,
@@ -23,7 +22,6 @@ describe("<TwoPageKeyPage />", () => {
23
22
  // Arrange
24
23
  const wrapper = mount(
25
24
  <TwoPageKeypad
26
- currentPage={0}
27
25
  leftPage={<p>Left Page</p>}
28
26
  rightPage={<p>Right Page</p>}
29
27
  />,
@@ -19,14 +19,13 @@
19
19
  * might need to be.
20
20
  */
21
21
 
22
- import {DeviceType, DeviceOrientation, LayoutMode} from "../enums";
23
-
22
+ import {DeviceType, DeviceOrientation, LayoutMode} from "../../enums";
24
23
  import {
25
24
  pageIndicatorHeightPx,
26
25
  toolbarHeightPx,
27
26
  navigationPadWidthPx,
28
27
  innerBorderWidthPx,
29
- } from "./common-style";
28
+ } from "../common-style";
30
29
 
31
30
  const minButtonHeight = 48;
32
31
  const maxButtonSize = 64;
@@ -5,9 +5,8 @@
5
5
  import {StyleSheet} from "aphrodite";
6
6
  import * as React from "react";
7
7
 
8
- import {View} from "../fake-react-native-web/index";
9
-
10
- import {offBlack} from "./common-style";
8
+ import {View} from "../../fake-react-native-web/index";
9
+ import {offBlack} from "../common-style";
11
10
 
12
11
  import type {StyleType} from "@khanacademy/wonder-blocks-core";
13
12
 
@@ -5,18 +5,17 @@
5
5
  import * as React from "react";
6
6
  import {TransitionGroup, CSSTransition} from "react-transition-group";
7
7
 
8
- import KeyConfigs from "../data/key-configs";
9
- import Keys from "../data/keys";
10
- import {KeyType, EchoAnimationType} from "../enums";
8
+ import KeyConfigs from "../../data/key-configs";
9
+ import Keys from "../../data/keys";
10
+ import {KeyType, EchoAnimationType} from "../../enums";
11
11
 
12
12
  import KeypadButton from "./keypad-button";
13
13
  import * as zIndexes from "./z-indexes";
14
14
 
15
- import type {Border, Bound} from "../types";
15
+ import type {Bound, Echo as EchoType} from "../../types";
16
16
 
17
17
  type EchoProps = {
18
18
  animationDurationMs: number;
19
- borders: Border;
20
19
  id: Keys;
21
20
  initialBounds: Bound;
22
21
  onAnimationFinish: () => void;
@@ -34,7 +33,7 @@ class Echo extends React.Component<EchoProps> {
34
33
  }
35
34
 
36
35
  render() {
37
- const {borders, id, initialBounds} = this.props;
36
+ const {id, initialBounds} = this.props;
38
37
  const {icon} = KeyConfigs[id];
39
38
 
40
39
  const containerStyle: any = {
@@ -51,26 +50,14 @@ class Echo extends React.Component<EchoProps> {
51
50
  // applied via StyleSheet, will override our inlines.
52
51
  return (
53
52
  <div style={containerStyle}>
54
- <KeypadButton
55
- icon={icon}
56
- type={KeyType.ECHO}
57
- borders={borders}
58
- />
53
+ <KeypadButton icon={icon} type={KeyType.ECHO} />
59
54
  </div>
60
55
  );
61
56
  }
62
57
  }
63
58
 
64
- type EchoPropType = {
65
- animationId: string;
66
- animationType: EchoAnimationType;
67
- borders: Border;
68
- id: Keys;
69
- initialBounds: Bound;
70
- };
71
-
72
59
  type EchoManagerProps = {
73
- echoes: ReadonlyArray<EchoPropType>;
60
+ echoes: ReadonlyArray<EchoType>;
74
61
  onAnimationFinish?: (animationId: string) => void;
75
62
  };
76
63
 
@@ -5,12 +5,12 @@
5
5
  import * as React from "react";
6
6
  import {connect} from "react-redux";
7
7
 
8
- import KeyConfigs from "../data/key-configs";
8
+ import KeyConfigs from "../../data/key-configs";
9
9
 
10
10
  import GestureManager from "./gesture-manager";
11
11
  import KeypadButton from "./keypad-button";
12
12
 
13
- import type {State} from "../store/types";
13
+ import type {State} from "./store/types";
14
14
 
15
15
  interface ReduxProps {
16
16
  gestureManager: GestureManager;
@@ -6,25 +6,24 @@ import {StyleSheet} from "aphrodite";
6
6
  import * as React from "react";
7
7
  import {connect} from "react-redux";
8
8
 
9
- import KeyConfigs from "../data/key-configs";
10
- import {BorderStyles} from "../enums";
11
- import {View} from "../fake-react-native-web/index";
9
+ import KeyConfigs from "../../data/key-configs";
10
+ import {BorderStyles} from "../../enums";
11
+ import {View} from "../../fake-react-native-web/index";
12
+ import {valueGrey, controlGrey} from "../common-style";
13
+ import {CursorContext} from "../input/cursor-contexts";
12
14
 
13
- import {valueGrey, controlGrey} from "./common-style";
14
- import {CursorContext} from "./input/cursor-contexts";
15
15
  import ManyKeypadButton from "./many-keypad-button";
16
16
  import Styles from "./styles";
17
17
  import TouchableKeypadButton from "./touchable-keypad-button";
18
18
  import TwoPageKeypad from "./two-page-keypad";
19
19
 
20
- import type {State} from "../store/types";
21
- import type {KeypadLayout} from "../types";
20
+ import type {KeypadLayout} from "../../types";
21
+ import type {State} from "./store/types";
22
22
 
23
23
  const {row, column, oneColumn, fullWidth, roundedTopLeft, roundedTopRight} =
24
24
  Styles;
25
25
 
26
26
  interface ReduxProps {
27
- currentPage: number;
28
27
  cursorContext?: CursorContext;
29
28
  dynamicJumpOut: boolean;
30
29
  }
@@ -48,7 +47,6 @@ export const expressionKeypadLayout: KeypadLayout = {
48
47
  class ExpressionKeypad extends React.Component<Props> {
49
48
  render() {
50
49
  const {
51
- currentPage,
52
50
  cursorContext,
53
51
  dynamicJumpOut,
54
52
  extraKeys,
@@ -286,13 +284,7 @@ class ExpressionKeypad extends React.Component<Props> {
286
284
  </View>
287
285
  );
288
286
 
289
- return (
290
- <TwoPageKeypad
291
- currentPage={currentPage}
292
- rightPage={rightPage}
293
- leftPage={leftPage}
294
- />
295
- );
287
+ return <TwoPageKeypad rightPage={rightPage} leftPage={leftPage} />;
296
288
  }
297
289
  }
298
290
 
@@ -313,7 +305,6 @@ const styles = StyleSheet.create({
313
305
 
314
306
  const mapStateToProps = (state: State): ReduxProps => {
315
307
  return {
316
- currentPage: state.pager.currentPage,
317
308
  cursorContext: state.input.cursor?.context,
318
309
  dynamicJumpOut: !state.layout.navigationPadEnabled,
319
310
  };
@@ -6,17 +6,17 @@
6
6
  import * as React from "react";
7
7
  import {connect} from "react-redux";
8
8
 
9
- import KeyConfigs from "../data/key-configs";
10
- import {BorderStyles} from "../enums";
11
- import {View} from "../fake-react-native-web/index";
9
+ import KeyConfigs from "../../data/key-configs";
10
+ import {BorderStyles} from "../../enums";
11
+ import {View} from "../../fake-react-native-web/index";
12
+ import {CursorContext} from "../input/cursor-contexts";
12
13
 
13
- import {CursorContext} from "./input/cursor-contexts";
14
14
  import Keypad from "./keypad";
15
15
  import Styles from "./styles";
16
16
  import TouchableKeypadButton from "./touchable-keypad-button";
17
17
 
18
- import type {State} from "../store/types";
19
- import type {KeypadLayout} from "../types";
18
+ import type {KeypadLayout} from "../../types";
19
+ import type {State} from "./store/types";
20
20
 
21
21
  const {row, roundedTopLeft, roundedTopRight} = Styles;
22
22
 
@@ -198,8 +198,8 @@ class GestureManager {
198
198
  * intercepting touch events
199
199
  * @param {object} borders - an opaque object describing the node's borders
200
200
  */
201
- registerDOMNode(id, domNode, childIds, borders) {
202
- this.nodeManager.registerDOMNode(id, domNode, childIds, borders);
201
+ registerDOMNode(id, domNode, childIds) {
202
+ this.nodeManager.registerDOMNode(id, domNode, childIds);
203
203
  this.popoverStateMachine.registerPopover(id, childIds);
204
204
  }
205
205