@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,7 +0,0 @@
1
- import { KeypadType } from "../enums";
2
- declare const defaultKeypadType = KeypadType.EXPRESSION;
3
- declare const keypadForType: {
4
- readonly FRACTION: import("../types").KeypadLayout;
5
- readonly EXPRESSION: import("../types").KeypadLayout;
6
- };
7
- export { keypadForType, defaultKeypadType };
@@ -1,14 +0,0 @@
1
- /**
2
- * Flowtype definitions for data
3
- * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.21.0
5
- * @flow
6
- */
7
- import * as $Flowgen$Import$_2e__2e__2f_types from "../types";
8
- import { KeypadType } from "../enums";
9
- declare var defaultKeypadType: KeypadType.EXPRESSION;
10
- declare var keypadForType: {|
11
- +FRACTION: $Flowgen$Import$_2e__2e__2f_types.KeypadLayout,
12
- +EXPRESSION: $Flowgen$Import$_2e__2e__2f_types.KeypadLayout,
13
- |};
14
- declare export { keypadForType, defaultKeypadType };
@@ -1,86 +0,0 @@
1
- /**
2
- * A system for tracking gesture velocity in a single dimension.
3
- *
4
- * Velocity is computed by smoothing linearly over the gestures that have
5
- * occurred in the last 100 milliseconds.
6
- */
7
-
8
- import now from "performance-now";
9
-
10
- type Event = {
11
- x: number;
12
- t: number;
13
- };
14
-
15
- class VelocityTracker {
16
- options: {
17
- velocityTimeout: number;
18
- };
19
- _events: Array<Event>;
20
-
21
- constructor(options?) {
22
- this.options = {
23
- velocityTimeout: 100,
24
- ...options,
25
- };
26
- this._events = [];
27
- }
28
-
29
- /**
30
- * Pushes an event with the given displacement onto the event buffer,
31
- * associating it with a timestamp. Note that, as this method computes the
32
- * timestamp for the event at calltime, it should be called immediately
33
- * after the event occurs.
34
- *
35
- * @param {number} x - the cumulative displacement of the event
36
- */
37
- push(x: number) {
38
- this._events.push({
39
- x,
40
- t: now(),
41
- });
42
- }
43
-
44
- /**
45
- * Compute the velocity with respect to the events that have been tracked
46
- * by the system. Velocity is computed by smoothing linearly over recent
47
- * displacement values.
48
- *
49
- * Note that, for performance reasons, a call to `getVelocity` will clear
50
- * out the event buffer. As such, repeated calls will not return the same
51
- * value (in particular, a second call in quick succession will return 0).
52
- *
53
- * @returns {number} the velocity associated with the tracker
54
- */
55
- getVelocity(): number {
56
- const events = this._getEvents();
57
-
58
- if (events.length < 2) {
59
- return 0;
60
- } else {
61
- const current = events[events.length - 1];
62
- const first = events[0];
63
- const dt = current.t - first.t;
64
- return (current.x - first.x) / dt;
65
- }
66
- }
67
-
68
- /**
69
- * Filter the tracked events to exclude any events that occurred too far in
70
- * the past, and reset the event buffer.
71
- *
72
- * @returns {number[]} an array of displacements corresponding to events
73
- * that occurred in the past `velocityTimeout`
74
- * milliseconds
75
- */
76
- _getEvents(): ReadonlyArray<Event> {
77
- const threshold = now() - this.options.velocityTimeout;
78
- const recentEvents = this._events.filter((event) => {
79
- return event.t > threshold;
80
- });
81
- this._events = [];
82
- return recentEvents;
83
- }
84
- }
85
-
86
- export default VelocityTracker;
@@ -1,125 +0,0 @@
1
- import VelocityTracker from "../components/velocity-tracker";
2
- import KeyConfigs from "../data/key-configs";
3
- import {KeyType} from "../enums";
4
-
5
- import {defaultKeypadType, keypadForType} from "./shared";
6
-
7
- import type {Action} from "./actions";
8
- import type {PagerState} from "./types";
9
-
10
- // We default to the right-most page. This is done so-as to enforce a
11
- // consistent orientation between the view pager layout and the flattened
12
- // layout, where our default page appears on the far right.
13
- const getDefaultPage = (numPages) => numPages - 1;
14
-
15
- const initialPagerState = {
16
- animateToPosition: false,
17
- currentPage: getDefaultPage(keypadForType[defaultKeypadType].numPages),
18
- // The cumulative differential in the horizontal direction for the
19
- // current swipe.
20
- dx: 0,
21
- numPages: keypadForType[defaultKeypadType].numPages,
22
- pageWidthPx: 0,
23
- velocityTracker: new VelocityTracker(),
24
- } as const;
25
-
26
- const pagerReducer = function (
27
- state: PagerState = initialPagerState,
28
- action: Action,
29
- ): PagerState {
30
- switch (action.type) {
31
- case "ConfigureKeypad":
32
- const {keypadType} = action.configuration;
33
- const {numPages} = keypadForType[keypadType];
34
- return {
35
- ...state,
36
- numPages,
37
- animateToPosition: false,
38
- currentPage: getDefaultPage(numPages),
39
- dx: 0,
40
- };
41
-
42
- case "SetPageSize":
43
- return {
44
- ...state,
45
- pageWidthPx: action.pageWidthPx,
46
- };
47
-
48
- case "PressKey":
49
- const keyConfig = KeyConfigs[action.key];
50
-
51
- // Reset the keypad page if the user performs a math operation.
52
- if (
53
- keyConfig.type === KeyType.VALUE ||
54
- keyConfig.type === KeyType.OPERATOR
55
- ) {
56
- return {
57
- ...state,
58
- animateToPosition: true,
59
- // We start at the right-most page.
60
- currentPage: getDefaultPage(state.numPages),
61
- dx: 0,
62
- };
63
- }
64
- return state;
65
-
66
- case "OnSwipeChange":
67
- state.velocityTracker.push(action.dx);
68
-
69
- return {
70
- ...state,
71
- animateToPosition: false,
72
- dx: action.dx,
73
- };
74
-
75
- case "OnSwipeEnd":
76
- const {pageWidthPx, velocityTracker} = state;
77
- const {dx} = action;
78
- const velocity = velocityTracker.getVelocity();
79
-
80
- // NOTE(charlie): These will need refinement. The velocity comes
81
- // from Framer.
82
- const minFlingVelocity = 0.1;
83
- const minFlingDistance = 10;
84
-
85
- const shouldPageRight =
86
- dx < -pageWidthPx / 2 ||
87
- (velocity < -minFlingVelocity && dx < -minFlingDistance);
88
-
89
- const shouldPageLeft =
90
- dx > pageWidthPx / 2 ||
91
- (velocity > minFlingVelocity && dx > minFlingDistance);
92
-
93
- if (shouldPageRight) {
94
- const nextPage = Math.min(
95
- state.currentPage + 1,
96
- state.numPages - 1,
97
- );
98
- return {
99
- ...state,
100
- animateToPosition: true,
101
- currentPage: nextPage,
102
- dx: 0,
103
- };
104
- } else if (shouldPageLeft) {
105
- const prevPage = Math.max(state.currentPage - 1, 0);
106
- return {
107
- ...state,
108
- animateToPosition: true,
109
- currentPage: prevPage,
110
- dx: 0,
111
- };
112
- }
113
-
114
- return {
115
- ...state,
116
- animateToPosition: true,
117
- dx: 0,
118
- };
119
-
120
- default:
121
- return state;
122
- }
123
- };
124
-
125
- export default pagerReducer;