@khanacademy/math-input 2.0.0 → 4.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 (264) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/dist/components/input/__tests__/test-math-wrapper.d.ts +1 -1
  3. package/dist/components/input/__tests__/test-math-wrapper.js.flow +1 -1
  4. package/dist/components/input/key-handlers/handle-arrow.d.ts +3 -0
  5. package/dist/components/input/key-handlers/handle-arrow.js.flow +12 -0
  6. package/dist/components/input/key-handlers/handle-backspace.d.ts +7 -0
  7. package/dist/components/input/key-handlers/handle-backspace.js.flow +14 -0
  8. package/dist/components/input/key-handlers/handle-exponent.d.ts +3 -0
  9. package/dist/components/input/key-handlers/handle-exponent.js.flow +12 -0
  10. package/dist/components/input/key-handlers/handle-jump-out.d.ts +7 -0
  11. package/dist/components/input/key-handlers/handle-jump-out.js.flow +14 -0
  12. package/dist/components/input/math-input.d.ts +1 -1
  13. package/dist/components/input/math-input.js.flow +1 -1
  14. package/dist/components/input/math-wrapper.d.ts +7 -78
  15. package/dist/components/input/math-wrapper.js.flow +16 -78
  16. package/dist/components/input/mathquill-helpers.d.ts +46 -0
  17. package/dist/components/input/mathquill-helpers.js.flow +56 -0
  18. package/dist/components/input/mathquill-instance.d.ts +3 -0
  19. package/dist/components/input/mathquill-instance.js.flow +9 -0
  20. package/dist/components/input/mathquill-types.d.ts +25 -0
  21. package/dist/components/input/mathquill-types.js.flow +34 -0
  22. package/dist/components/key-translator.d.ts +4 -0
  23. package/dist/components/key-translator.js.flow +10 -0
  24. package/dist/components/keypad/button-assets.d.ts +2 -2
  25. package/dist/components/keypad/button-assets.js.flow +2 -2
  26. package/dist/components/keypad/button.d.ts +1 -2
  27. package/dist/components/keypad/button.js.flow +1 -1
  28. package/dist/components/keypad/{pre-algebra-page.d.ts → geometry-page/index.d.ts} +1 -1
  29. package/dist/components/keypad/{pre-algebra-page.js.flow → geometry-page/index.js.flow} +1 -1
  30. package/dist/components/keypad/index.d.ts +5 -4
  31. package/dist/components/keypad/index.js.flow +9 -4
  32. package/dist/components/keypad/keypad-page-items.d.ts +9 -3
  33. package/dist/components/keypad/keypad-page-items.js.flow +9 -3
  34. package/dist/components/keypad/{numeric-input-page.d.ts → numbers-page/index.d.ts} +3 -2
  35. package/dist/components/keypad/numbers-page/index.js.flow +17 -0
  36. package/dist/components/keypad/numbers-page/types.d.ts +4 -0
  37. package/dist/components/keypad/numbers-page/types.js.flow +10 -0
  38. package/dist/components/keypad/operators-page/advanced-relations-buttons.d.ts +7 -0
  39. package/dist/components/keypad/{numeric-input-page.js.flow → operators-page/advanced-relations-buttons.js.flow} +3 -4
  40. package/dist/components/keypad/operators-page/basic-relations-buttons.d.ts +7 -0
  41. package/dist/components/keypad/{trigonometry-page.js.flow → operators-page/basic-relations-buttons.js.flow} +3 -6
  42. package/dist/components/keypad/operators-page/index.d.ts +9 -0
  43. package/dist/components/keypad/operators-page/index.js.flow +17 -0
  44. package/dist/components/keypad/operators-page/logarithms-buttons.d.ts +7 -0
  45. package/dist/components/keypad/operators-page/logarithms-buttons.js.flow +12 -0
  46. package/dist/components/keypad/operators-page/pre-algebra-buttons.d.ts +7 -0
  47. package/dist/components/keypad/operators-page/pre-algebra-buttons.js.flow +12 -0
  48. package/dist/components/keypad/operators-page/types.d.ts +6 -0
  49. package/dist/components/keypad/operators-page/types.js.flow +12 -0
  50. package/dist/components/{compute-layout-parameters.d.ts → keypad-legacy/compute-layout-parameters.d.ts} +1 -1
  51. package/dist/components/{compute-layout-parameters.js.flow → keypad-legacy/compute-layout-parameters.js.flow} +1 -1
  52. package/dist/components/{echo-manager.d.ts → keypad-legacy/echo-manager.d.ts} +2 -11
  53. package/dist/components/{echo-manager.js.flow → keypad-legacy/echo-manager.js.flow} +2 -11
  54. package/dist/components/{expression-keypad.d.ts → keypad-legacy/expression-keypad.d.ts} +3 -4
  55. package/dist/components/{expression-keypad.js.flow → keypad-legacy/expression-keypad.js.flow} +3 -4
  56. package/dist/components/{fraction-keypad.d.ts → keypad-legacy/fraction-keypad.d.ts} +2 -2
  57. package/dist/components/{fraction-keypad.js.flow → keypad-legacy/fraction-keypad.js.flow} +2 -2
  58. package/dist/components/{gesture-manager.d.ts → keypad-legacy/gesture-manager.d.ts} +22 -10
  59. package/dist/components/{gesture-manager.js.flow → keypad-legacy/gesture-manager.js.flow} +28 -13
  60. package/dist/components/{gesture-state-machine.d.ts → keypad-legacy/gesture-state-machine.d.ts} +9 -9
  61. package/dist/components/{gesture-state-machine.js.flow → keypad-legacy/gesture-state-machine.js.flow} +10 -10
  62. package/dist/components/{icon.d.ts → keypad-legacy/icon.d.ts} +1 -1
  63. package/dist/components/{icon.js.flow → keypad-legacy/icon.js.flow} +1 -1
  64. package/dist/components/{keypad-button.d.ts → keypad-legacy/keypad-button.d.ts} +6 -6
  65. package/dist/components/{keypad-button.js.flow → keypad-legacy/keypad-button.js.flow} +7 -7
  66. package/dist/components/{keypad-container.d.ts → keypad-legacy/keypad-container.d.ts} +2 -2
  67. package/dist/components/{keypad-container.js.flow → keypad-legacy/keypad-container.js.flow} +3 -3
  68. package/dist/components/{keypad.d.ts → keypad-legacy/keypad.d.ts} +3 -3
  69. package/dist/components/{keypad.js.flow → keypad-legacy/keypad.js.flow} +3 -3
  70. package/dist/components/{multi-symbol-grid.d.ts → keypad-legacy/multi-symbol-grid.d.ts} +1 -1
  71. package/dist/components/{multi-symbol-grid.js.flow → keypad-legacy/multi-symbol-grid.js.flow} +1 -1
  72. package/dist/components/{multi-symbol-popover.d.ts → keypad-legacy/multi-symbol-popover.d.ts} +1 -1
  73. package/dist/components/{multi-symbol-popover.js.flow → keypad-legacy/multi-symbol-popover.js.flow} +1 -1
  74. package/dist/components/{node-manager.d.ts → keypad-legacy/node-manager.d.ts} +3 -4
  75. package/dist/components/{node-manager.js.flow → keypad-legacy/node-manager.js.flow} +3 -5
  76. package/dist/components/{popover-manager.d.ts → keypad-legacy/popover-manager.d.ts} +1 -1
  77. package/dist/components/{popover-manager.js.flow → keypad-legacy/popover-manager.js.flow} +1 -1
  78. package/dist/components/{popover-state-machine.d.ts → keypad-legacy/popover-state-machine.d.ts} +1 -1
  79. package/dist/components/{popover-state-machine.js.flow → keypad-legacy/popover-state-machine.js.flow} +1 -1
  80. package/dist/components/{provided-keypad.d.ts → keypad-legacy/provided-keypad.d.ts} +1 -1
  81. package/dist/components/{provided-keypad.js.flow → keypad-legacy/provided-keypad.js.flow} +1 -1
  82. package/dist/{store → components/keypad-legacy/store}/actions.d.ts +6 -17
  83. package/dist/{store → components/keypad-legacy/store}/actions.js.flow +7 -22
  84. package/dist/{store → components/keypad-legacy/store}/index.d.ts +0 -1
  85. package/dist/{store → components/keypad-legacy/store}/index.js.flow +0 -1
  86. package/dist/components/keypad-legacy/store/shared.d.ts +7 -0
  87. package/dist/components/keypad-legacy/store/shared.js.flow +14 -0
  88. package/dist/{store → components/keypad-legacy/store}/types.d.ts +5 -15
  89. package/dist/{store → components/keypad-legacy/store}/types.js.flow +5 -15
  90. package/dist/components/keypad-legacy/touchable-keypad-button.d.ts +37 -0
  91. package/dist/components/keypad-legacy/touchable-keypad-button.js.flow +59 -0
  92. package/dist/components/{two-page-keypad.d.ts → keypad-legacy/two-page-keypad.d.ts} +0 -1
  93. package/dist/components/{two-page-keypad.js.flow → keypad-legacy/two-page-keypad.js.flow} +0 -1
  94. package/dist/data/key-configs.d.ts +4 -5
  95. package/dist/data/key-configs.js.flow +3 -6
  96. package/dist/data/keys.d.ts +2 -56
  97. package/dist/data/keys.js.flow +116 -57
  98. package/dist/enums.d.ts +2 -9
  99. package/dist/enums.js.flow +2 -11
  100. package/dist/es/index.js +6393 -5116
  101. package/dist/es/index.js.map +1 -1
  102. package/dist/index.d.ts +5 -3
  103. package/dist/index.js +6868 -5330
  104. package/dist/index.js.flow +6 -3
  105. package/dist/index.js.map +1 -1
  106. package/dist/strings.js +26 -10
  107. package/dist/types.d.ts +19 -17
  108. package/dist/types.js.flow +28 -23
  109. package/package.json +1 -1
  110. package/src/components/input/__tests__/context-tracking.test.ts +43 -44
  111. package/src/components/input/__tests__/mathquill.test.ts +133 -135
  112. package/src/components/input/key-handlers/handle-arrow.ts +70 -0
  113. package/src/components/input/key-handlers/handle-backspace.ts +275 -0
  114. package/src/components/input/key-handlers/handle-exponent.ts +52 -0
  115. package/src/components/input/key-handlers/handle-jump-out.ts +103 -0
  116. package/src/components/input/math-input.tsx +12 -13
  117. package/src/components/input/math-wrapper.ts +88 -837
  118. package/src/components/input/mathquill-helpers.ts +268 -0
  119. package/src/components/input/mathquill-instance.ts +5 -0
  120. package/src/components/input/mathquill-types.ts +55 -0
  121. package/src/components/key-translator.ts +209 -0
  122. package/src/components/keypad/button-assets.tsx +452 -116
  123. package/src/components/keypad/button.stories.tsx +61 -13
  124. package/src/components/keypad/button.tsx +1 -1
  125. package/src/components/keypad/{trigonometry-page.tsx → geometry-page/index.tsx} +4 -5
  126. package/src/components/keypad/index.tsx +19 -14
  127. package/src/components/keypad/keypad-mathquill.stories.tsx +69 -0
  128. package/src/components/keypad/keypad-page-items.tsx +36 -22
  129. package/src/components/keypad/keypad-pages.stories.tsx +5 -5
  130. package/src/components/keypad/keypad.stories.tsx +75 -17
  131. package/src/components/keypad/{numeric-input-page.tsx → numbers-page/index.tsx} +47 -11
  132. package/src/components/keypad/numbers-page/types.ts +4 -0
  133. package/src/components/keypad/operators-page/advanced-relations-buttons.tsx +32 -0
  134. package/src/components/keypad/operators-page/basic-relations-buttons.tsx +32 -0
  135. package/src/components/keypad/{pre-algebra-page.tsx → operators-page/index.tsx} +26 -30
  136. package/src/components/keypad/operators-page/logarithms-buttons.tsx +32 -0
  137. package/src/components/keypad/operators-page/pre-algebra-buttons.tsx +36 -0
  138. package/src/components/keypad/operators-page/types.ts +6 -0
  139. package/src/components/{__tests__ → keypad-legacy/__tests__}/two-page-keypad.test.tsx +0 -2
  140. package/src/components/{compute-layout-parameters.ts → keypad-legacy/compute-layout-parameters.ts} +2 -3
  141. package/src/components/{corner-decal.tsx → keypad-legacy/corner-decal.tsx} +2 -3
  142. package/src/components/{echo-manager.tsx → keypad-legacy/echo-manager.tsx} +8 -21
  143. package/src/components/{empty-keypad-button.tsx → keypad-legacy/empty-keypad-button.tsx} +8 -6
  144. package/src/components/{expression-keypad.tsx → keypad-legacy/expression-keypad.tsx} +8 -17
  145. package/src/components/{fraction-keypad.tsx → keypad-legacy/fraction-keypad.tsx} +6 -6
  146. package/src/components/{gesture-manager.ts → keypad-legacy/gesture-manager.ts} +34 -11
  147. package/src/components/{gesture-state-machine.ts → keypad-legacy/gesture-state-machine.ts} +14 -14
  148. package/src/components/{icon.tsx → keypad-legacy/icon.tsx} +3 -3
  149. package/src/components/{keypad-button.tsx → keypad-legacy/keypad-button.tsx} +26 -26
  150. package/src/components/{keypad-container.tsx → keypad-legacy/keypad-container.tsx} +6 -6
  151. package/src/components/{keypad.tsx → keypad-legacy/keypad.tsx} +5 -5
  152. package/src/components/{many-keypad-button.tsx → keypad-legacy/many-keypad-button.tsx} +13 -6
  153. package/src/components/{math-icon.tsx → keypad-legacy/math-icon.tsx} +2 -2
  154. package/src/components/{multi-symbol-grid.tsx → keypad-legacy/multi-symbol-grid.tsx} +4 -4
  155. package/src/components/{multi-symbol-popover.tsx → keypad-legacy/multi-symbol-popover.tsx} +3 -4
  156. package/src/components/{navigation-pad.tsx → keypad-legacy/navigation-pad.tsx} +5 -5
  157. package/src/components/{node-manager.ts → keypad-legacy/node-manager.ts} +2 -10
  158. package/src/components/{popover-manager.tsx → keypad-legacy/popover-manager.tsx} +2 -2
  159. package/src/components/{popover-state-machine.ts → keypad-legacy/popover-state-machine.ts} +1 -1
  160. package/src/components/{provided-keypad.tsx → keypad-legacy/provided-keypad.tsx} +4 -5
  161. package/src/{store → components/keypad-legacy/store}/actions.ts +7 -36
  162. package/src/{store → components/keypad-legacy/store}/echo-reducer.ts +3 -7
  163. package/src/{store → components/keypad-legacy/store}/index.ts +7 -20
  164. package/src/{store → components/keypad-legacy/store}/input-reducer.ts +4 -5
  165. package/src/{store → components/keypad-legacy/store}/keypad-reducer.ts +3 -4
  166. package/src/{store → components/keypad-legacy/store}/layout-reducer.ts +3 -3
  167. package/src/{store → components/keypad-legacy/store}/shared.ts +3 -3
  168. package/src/{store → components/keypad-legacy/store}/types.ts +15 -19
  169. package/src/components/{styles.ts → keypad-legacy/styles.ts} +1 -1
  170. package/src/components/{text-icon.tsx → keypad-legacy/text-icon.tsx} +2 -2
  171. package/src/components/{touchable-keypad-button.tsx → keypad-legacy/touchable-keypad-button.tsx} +35 -21
  172. package/src/components/{two-page-keypad.tsx → keypad-legacy/two-page-keypad.tsx} +5 -6
  173. package/src/components/tabbar/icons.tsx +0 -2
  174. package/src/data/key-configs.ts +751 -309
  175. package/src/data/keys.ts +118 -70
  176. package/src/enums.ts +10 -9
  177. package/src/index.ts +6 -3
  178. package/src/math-input.stories.tsx +3 -3
  179. package/src/types.ts +21 -16
  180. package/tsconfig-build.tsbuildinfo +1 -1
  181. package/dist/components/keypad/trigonometry-page.d.ts +0 -8
  182. package/dist/components/touchable-keypad-button.d.ts +0 -30
  183. package/dist/components/touchable-keypad-button.js.flow +0 -35
  184. package/dist/components/velocity-tracker.d.ts +0 -48
  185. package/dist/components/velocity-tracker.js.flow +0 -54
  186. package/dist/store/pager-reducer.d.ts +0 -4
  187. package/dist/store/pager-reducer.js.flow +0 -13
  188. package/dist/store/shared.d.ts +0 -7
  189. package/dist/store/shared.js.flow +0 -14
  190. package/src/components/velocity-tracker.ts +0 -86
  191. package/src/store/pager-reducer.ts +0 -125
  192. /package/dist/components/{corner-decal.d.ts → keypad-legacy/corner-decal.d.ts} +0 -0
  193. /package/dist/components/{corner-decal.js.flow → keypad-legacy/corner-decal.js.flow} +0 -0
  194. /package/dist/components/{empty-keypad-button.d.ts → keypad-legacy/empty-keypad-button.d.ts} +0 -0
  195. /package/dist/components/{empty-keypad-button.js.flow → keypad-legacy/empty-keypad-button.js.flow} +0 -0
  196. /package/dist/components/{many-keypad-button.d.ts → keypad-legacy/many-keypad-button.d.ts} +0 -0
  197. /package/dist/components/{many-keypad-button.js.flow → keypad-legacy/many-keypad-button.js.flow} +0 -0
  198. /package/dist/components/{math-icon.d.ts → keypad-legacy/math-icon.d.ts} +0 -0
  199. /package/dist/components/{math-icon.js.flow → keypad-legacy/math-icon.js.flow} +0 -0
  200. /package/dist/components/{navigation-pad.d.ts → keypad-legacy/navigation-pad.d.ts} +0 -0
  201. /package/dist/components/{navigation-pad.js.flow → keypad-legacy/navigation-pad.js.flow} +0 -0
  202. /package/dist/{store → components/keypad-legacy/store}/echo-reducer.d.ts +0 -0
  203. /package/dist/{store → components/keypad-legacy/store}/echo-reducer.js.flow +0 -0
  204. /package/dist/{store → components/keypad-legacy/store}/input-reducer.d.ts +0 -0
  205. /package/dist/{store → components/keypad-legacy/store}/input-reducer.js.flow +0 -0
  206. /package/dist/{store → components/keypad-legacy/store}/keypad-reducer.d.ts +0 -0
  207. /package/dist/{store → components/keypad-legacy/store}/keypad-reducer.js.flow +0 -0
  208. /package/dist/{store → components/keypad-legacy/store}/layout-reducer.d.ts +0 -0
  209. /package/dist/{store → components/keypad-legacy/store}/layout-reducer.js.flow +0 -0
  210. /package/dist/components/{styles.d.ts → keypad-legacy/styles.d.ts} +0 -0
  211. /package/dist/components/{styles.js.flow → keypad-legacy/styles.js.flow} +0 -0
  212. /package/dist/components/{svg-icon.d.ts → keypad-legacy/svg-icon.d.ts} +0 -0
  213. /package/dist/components/{svg-icon.js.flow → keypad-legacy/svg-icon.js.flow} +0 -0
  214. /package/dist/components/{text-icon.d.ts → keypad-legacy/text-icon.d.ts} +0 -0
  215. /package/dist/components/{text-icon.js.flow → keypad-legacy/text-icon.js.flow} +0 -0
  216. /package/dist/components/{z-indexes.d.ts → keypad-legacy/z-indexes.d.ts} +0 -0
  217. /package/dist/components/{z-indexes.js.flow → keypad-legacy/z-indexes.js.flow} +0 -0
  218. /package/src/components/{__tests__ → keypad-legacy/__tests__}/gesture-state-machine.test.ts +0 -0
  219. /package/src/components/{__tests__ → keypad-legacy/__tests__}/node-manager.test.ts +0 -0
  220. /package/src/components/{iconography → keypad-legacy/iconography}/arrow.js +0 -0
  221. /package/src/components/{iconography → keypad-legacy/iconography}/backspace.js +0 -0
  222. /package/src/components/{iconography → keypad-legacy/iconography}/cdot.js +0 -0
  223. /package/src/components/{iconography → keypad-legacy/iconography}/cos.js +0 -0
  224. /package/src/components/{iconography → keypad-legacy/iconography}/cube-root.js +0 -0
  225. /package/src/components/{iconography → keypad-legacy/iconography}/dismiss.js +0 -0
  226. /package/src/components/{iconography → keypad-legacy/iconography}/divide.js +0 -0
  227. /package/src/components/{iconography → keypad-legacy/iconography}/down.js +0 -0
  228. /package/src/components/{iconography → keypad-legacy/iconography}/equal.js +0 -0
  229. /package/src/components/{iconography → keypad-legacy/iconography}/exp-2.js +0 -0
  230. /package/src/components/{iconography → keypad-legacy/iconography}/exp-3.js +0 -0
  231. /package/src/components/{iconography → keypad-legacy/iconography}/exp.js +0 -0
  232. /package/src/components/{iconography → keypad-legacy/iconography}/frac.js +0 -0
  233. /package/src/components/{iconography → keypad-legacy/iconography}/geq.js +0 -0
  234. /package/src/components/{iconography → keypad-legacy/iconography}/gt.js +0 -0
  235. /package/src/components/{iconography → keypad-legacy/iconography}/index.js +0 -0
  236. /package/src/components/{iconography → keypad-legacy/iconography}/jump-into-numerator.js +0 -0
  237. /package/src/components/{iconography → keypad-legacy/iconography}/jump-out-base.js +0 -0
  238. /package/src/components/{iconography → keypad-legacy/iconography}/jump-out-denominator.js +0 -0
  239. /package/src/components/{iconography → keypad-legacy/iconography}/jump-out-exponent.js +0 -0
  240. /package/src/components/{iconography → keypad-legacy/iconography}/jump-out-numerator.js +0 -0
  241. /package/src/components/{iconography → keypad-legacy/iconography}/jump-out-parentheses.js +0 -0
  242. /package/src/components/{iconography → keypad-legacy/iconography}/left-paren.js +0 -0
  243. /package/src/components/{iconography → keypad-legacy/iconography}/left.js +0 -0
  244. /package/src/components/{iconography → keypad-legacy/iconography}/leq.js +0 -0
  245. /package/src/components/{iconography → keypad-legacy/iconography}/ln.js +0 -0
  246. /package/src/components/{iconography → keypad-legacy/iconography}/log-n.js +0 -0
  247. /package/src/components/{iconography → keypad-legacy/iconography}/log.js +0 -0
  248. /package/src/components/{iconography → keypad-legacy/iconography}/lt.js +0 -0
  249. /package/src/components/{iconography → keypad-legacy/iconography}/minus.js +0 -0
  250. /package/src/components/{iconography → keypad-legacy/iconography}/neq.js +0 -0
  251. /package/src/components/{iconography → keypad-legacy/iconography}/parens.js +0 -0
  252. /package/src/components/{iconography → keypad-legacy/iconography}/percent.js +0 -0
  253. /package/src/components/{iconography → keypad-legacy/iconography}/period.js +0 -0
  254. /package/src/components/{iconography → keypad-legacy/iconography}/plus.js +0 -0
  255. /package/src/components/{iconography → keypad-legacy/iconography}/radical.js +0 -0
  256. /package/src/components/{iconography → keypad-legacy/iconography}/right-paren.js +0 -0
  257. /package/src/components/{iconography → keypad-legacy/iconography}/right.js +0 -0
  258. /package/src/components/{iconography → keypad-legacy/iconography}/sin.js +0 -0
  259. /package/src/components/{iconography → keypad-legacy/iconography}/sqrt.js +0 -0
  260. /package/src/components/{iconography → keypad-legacy/iconography}/tan.js +0 -0
  261. /package/src/components/{iconography → keypad-legacy/iconography}/times.js +0 -0
  262. /package/src/components/{iconography → keypad-legacy/iconography}/up.js +0 -0
  263. /package/src/components/{svg-icon.tsx → keypad-legacy/svg-icon.tsx} +0 -0
  264. /package/src/components/{z-indexes.ts → keypad-legacy/z-indexes.ts} +0 -0
package/src/data/keys.ts CHANGED
@@ -1,72 +1,120 @@
1
- /**
2
- * This file contains constants for keypad buttons that aren't single
3
- * alphanumeric characters.
4
- */
1
+ type Key =
2
+ | "PLUS"
3
+ | "MINUS"
4
+ | "NEGATIVE"
5
+ | "TIMES"
6
+ | "DIVIDE"
7
+ | "DECIMAL"
8
+ | "PERIOD"
9
+ | "PERCENT"
10
+ | "CDOT"
11
+ | "EQUAL"
12
+ | "NEQ"
13
+ | "GT"
14
+ | "LT"
15
+ | "GEQ"
16
+ | "LEQ" // mobile native only
17
+ | "FRAC_INCLUSIVE" // mobile native only
18
+ | "FRAC_EXCLUSIVE" // mobile native only
19
+ | "FRAC"
20
+ | "EXP"
21
+ | "EXP_2"
22
+ | "EXP_3"
23
+ | "SQRT"
24
+ | "CUBE_ROOT"
25
+ | "RADICAL"
26
+ | "LEFT_PAREN"
27
+ | "RIGHT_PAREN"
28
+ | "LN"
29
+ | "LOG"
30
+ | "LOG_N"
31
+ | "SIN"
32
+ | "COS" // TODO(charlie): Add in additional Greek letters.
33
+ | "TAN"
34
+ | "PI"
35
+ | "THETA"
36
+ | "UP"
37
+ | "RIGHT"
38
+ | "DOWN"
39
+ | "LEFT"
40
+ | "BACKSPACE"
41
+ | "DISMISS"
42
+ | "JUMP_OUT_PARENTHESES"
43
+ | "JUMP_OUT_EXPONENT"
44
+ | "JUMP_OUT_BASE"
45
+ | "JUMP_INTO_NUMERATOR"
46
+ | "JUMP_OUT_NUMERATOR"
47
+ | "JUMP_OUT_DENOMINATOR" // Multi-functional keys.
48
+ | "NOOP" // mobile native only
49
+ | "MANY" // A custom key that captures an arbitrary number of symbols but has no 'default' symbol or action.
50
+ | "NUM_0"
51
+ | "NUM_1"
52
+ | "NUM_2"
53
+ | "NUM_3"
54
+ | "NUM_4"
55
+ | "NUM_5"
56
+ | "NUM_6"
57
+ | "NUM_7"
58
+ | "NUM_8"
59
+ | "NUM_9"
60
+ | "a"
61
+ | "b"
62
+ | "c"
63
+ | "d"
64
+ | "e"
65
+ | "f"
66
+ | "g"
67
+ | "h"
68
+ | "i"
69
+ | "j"
70
+ | "k"
71
+ | "l"
72
+ | "m"
73
+ | "n"
74
+ | "o"
75
+ | "p"
76
+ | "q"
77
+ | "r"
78
+ | "s"
79
+ | "t"
80
+ | "u"
81
+ | "v"
82
+ | "w"
83
+ | "x"
84
+ | "y"
85
+ | "z"
86
+ | "A"
87
+ | "B"
88
+ | "C"
89
+ | "D"
90
+ | "E"
91
+ | "F"
92
+ | "G"
93
+ | "H"
94
+ | "I"
95
+ | "J"
96
+ | "K"
97
+ | "L"
98
+ | "M"
99
+ | "N"
100
+ | "O"
101
+ | "P"
102
+ | "Q"
103
+ | "R"
104
+ | "S"
105
+ | "T"
106
+ | "U"
107
+ | "V"
108
+ | "W"
109
+ | "X"
110
+ | "Y"
111
+ | "Z"
5
112
 
6
- // TODO(charlie): There's duplication between this file and key-configs.js.
7
- // We should clean it up by removing this file and requiring clients to use the
8
- // `id` field on the key configurations.
9
- enum Keys {
10
- PLUS = "PLUS",
11
- MINUS = "MINUS",
12
- NEGATIVE = "NEGATIVE",
13
- TIMES = "TIMES",
14
- DIVIDE = "DIVIDE",
15
- DECIMAL = "DECIMAL",
16
- PERIOD = "PERIOD",
17
- PERCENT = "PERCENT",
18
- CDOT = "CDOT",
19
- EQUAL = "EQUAL",
20
- NEQ = "NEQ",
21
- GT = "GT",
22
- LT = "LT",
23
- GEQ = "GEQ",
24
- LEQ = "LEQ", // mobile native only
25
- FRAC_INCLUSIVE = "FRAC_INCLUSIVE", // mobile native only
26
- FRAC_EXCLUSIVE = "FRAC_EXCLUSIVE", // mobile native only
27
- FRAC = "FRAC",
28
- EXP = "EXP",
29
- EXP_2 = "EXP_2",
30
- EXP_3 = "EXP_3",
31
- SQRT = "SQRT",
32
- CUBE_ROOT = "CUBE_ROOT",
33
- RADICAL = "RADICAL",
34
- LEFT_PAREN = "LEFT_PAREN",
35
- RIGHT_PAREN = "RIGHT_PAREN",
36
- LN = "LN",
37
- LOG = "LOG",
38
- LOG_N = "LOG_N",
39
- SIN = "SIN",
40
- COS = "COS", // TODO(charlie): Add in additional Greek letters.
41
- TAN = "TAN",
113
+ // Currently only used by
114
+ // Perseus' Expression MathInput
115
+ | "PHI"
116
+ | "NTHROOT3"
117
+ | "POW"
118
+ | "LOG_B";
42
119
 
43
- PI = "PI",
44
- THETA = "THETA",
45
-
46
- UP = "UP",
47
- RIGHT = "RIGHT",
48
- DOWN = "DOWN",
49
- LEFT = "LEFT",
50
- BACKSPACE = "BACKSPACE",
51
- DISMISS = "DISMISS",
52
-
53
- JUMP_OUT_PARENTHESES = "JUMP_OUT_PARENTHESES",
54
- JUMP_OUT_EXPONENT = "JUMP_OUT_EXPONENT",
55
- JUMP_OUT_BASE = "JUMP_OUT_BASE",
56
- JUMP_INTO_NUMERATOR = "JUMP_INTO_NUMERATOR",
57
- JUMP_OUT_NUMERATOR = "JUMP_OUT_NUMERATOR",
58
- JUMP_OUT_DENOMINATOR = "JUMP_OUT_DENOMINATOR", // Multi-functional keys.
59
-
60
- NOOP = "NOOP", // mobile native only
61
-
62
- // Multi-functional keys.
63
- // A custom key that captures an arbitrary number of symbols but has no
64
- // 'default' symbol or action.
65
- FRAC_MULTI = "FRAC_MULTI", // mobile native only
66
-
67
- // A custom key that captures an arbitrary number of symbols but has no
68
- // 'default' symbol or action.
69
- MANY = "MANY",
70
- }
71
-
72
- export default Keys;
120
+ export default Key;
package/src/enums.ts CHANGED
@@ -7,25 +7,26 @@ export enum KeypadType {
7
7
  EXPRESSION = "EXPRESSION",
8
8
  }
9
9
 
10
- export enum KeyType {
11
- EMPTY = "EMPTY",
10
+ export const KeyTypes = [
11
+ "EMPTY",
12
12
  // For numerals, variables, and any other characters that themselves
13
13
  // compose 'values'.
14
- VALUE = "VALUE",
14
+ "VALUE",
15
15
  // For buttons that insert or adjust math in an input.
16
- OPERATOR = "OPERATOR",
16
+ "OPERATOR",
17
17
  // For buttons that move the cursor in an input (including via
18
18
  // deletion).
19
- INPUT_NAVIGATION = "INPUT_NAVIGATION",
19
+ "INPUT_NAVIGATION",
20
20
  // For buttons that modify the broader keypad state (e.g., by changing
21
21
  // the visible pane).
22
- KEYPAD_NAVIGATION = "KEYPAD_NAVIGATION",
22
+ "KEYPAD_NAVIGATION",
23
23
  // For buttons that house multiple buttons and have no action
24
24
  // themselves.
25
- MANY = "MANY",
25
+ "MANY",
26
26
  // For the echo animation that appears on press.
27
- ECHO = "ECHO",
28
- }
27
+ "ECHO",
28
+ ];
29
+ export type KeyType = typeof KeyTypes[number];
29
30
 
30
31
  export enum DeviceOrientation {
31
32
  LANDSCAPE = "LANDSCAPE",
package/src/index.ts CHANGED
@@ -7,7 +7,10 @@ import "../less/main.less";
7
7
  export {CursorContext} from "./components/input/cursor-contexts";
8
8
  export {default as KeypadInput} from "./components/input/math-input";
9
9
  export {keypadElementPropType} from "./components/prop-types";
10
- export {default as Keypad} from "./components/provided-keypad";
10
+ export {default as LegacyKeypad} from "./components/keypad-legacy/provided-keypad";
11
11
  export {default as KeyConfigs} from "./data/key-configs";
12
- export {default as Keys} from "./data/keys";
13
- export {KeyType, KeypadType} from "./enums";
12
+ export type {default as Keys} from "./data/keys";
13
+ export {type KeyType, KeypadType} from "./enums";
14
+
15
+ export {default as Keypad} from "./components/keypad/index";
16
+ export {default as keyTranslator} from "./components/key-translator";
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
 
3
- import {Keypad, KeypadInput, KeypadType} from "./index";
3
+ import {LegacyKeypad, KeypadInput, KeypadType} from "./index";
4
4
 
5
5
  export default {
6
6
  title: "Full MathInput",
@@ -10,7 +10,7 @@ export const Basic = () => {
10
10
  const [value, setValue] = React.useState("");
11
11
  const [keypadElement, setKeypadElement] = React.useState<any>(null);
12
12
  const [keypadType, setKeypadType] = React.useState<KeypadType>(
13
- KeypadType.FRACTION,
13
+ KeypadType.EXPRESSION,
14
14
  );
15
15
 
16
16
  React.useEffect(() => {
@@ -55,7 +55,7 @@ export const Basic = () => {
55
55
  }}
56
56
  />
57
57
 
58
- <Keypad
58
+ <LegacyKeypad
59
59
  onElementMounted={(node) => {
60
60
  if (node && !keypadElement) {
61
61
  setKeypadElement(node);
package/src/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- import Keys from "./data/keys";
1
+ import Key from "./data/keys";
2
2
  import {
3
3
  BorderDirection,
4
4
  EchoAnimationType,
@@ -11,27 +11,26 @@ import type {CursorContext} from "./components/input/cursor-contexts";
11
11
 
12
12
  export type Border = Partial<ReadonlyArray<BorderDirection>>;
13
13
 
14
- export type Bound = {
14
+ export interface Bound {
15
15
  top: number;
16
16
  right: number;
17
17
  bottom: number;
18
18
  left: number;
19
19
  height: number;
20
20
  width: number;
21
- };
21
+ }
22
22
 
23
23
  export type Popover = {
24
- parentId: Keys;
24
+ parentId: Key;
25
25
  bounds: Partial<Bound>;
26
- childKeyIds: Array<Keys>;
26
+ childKeyIds: Array<Key>;
27
27
  };
28
28
 
29
29
  export type Echo = {
30
30
  animationId: string;
31
31
  animationType: EchoAnimationType;
32
- borders: Border;
33
- id: Keys;
34
- initialBounds: DOMRect;
32
+ id: Key;
33
+ initialBounds: Bound;
35
34
  };
36
35
 
37
36
  export type IconConfig = {
@@ -39,20 +38,26 @@ export type IconConfig = {
39
38
  data: string;
40
39
  };
41
40
 
42
- export type KeyConfig = {
43
- ariaLabel: string;
44
- id: Keys;
45
- type: KeyType;
46
- childKeyIds: Array<Keys>;
41
+ export type NonManyKeyConfig = {
42
+ id: Key;
43
+ type: Exclude<KeyType, "MANY">;
47
44
  icon: IconConfig;
45
+ ariaLabel: string;
48
46
  };
49
47
 
48
+ export type ManyKeyConfig = Omit<NonManyKeyConfig, "type"> & {
49
+ type: Extract<KeyType, "MANY">;
50
+ childKeyIds: ReadonlyArray<string>;
51
+ };
52
+
53
+ export type KeyConfig = NonManyKeyConfig | ManyKeyConfig;
54
+
50
55
  export type KeypadConfiguration = {
51
56
  keypadType: KeypadType;
52
- extraKeys?: ReadonlyArray<Keys>;
57
+ extraKeys?: ReadonlyArray<Key>;
53
58
  };
54
59
 
55
- export type KeyHandler = (key: Keys) => Cursor;
60
+ export type KeyHandler = (key: Key) => Cursor;
56
61
 
57
62
  export type Cursor = {
58
63
  context: CursorContext;
@@ -78,4 +83,4 @@ export type ActiveNodesObj = {
78
83
  focus: string | null;
79
84
  };
80
85
 
81
- export type LayoutProps = {initialBounds: DOMRect; borders: Border};
86
+ export type LayoutProps = {initialBounds: Bound};