@khanacademy/math-input 4.2.0 → 4.3.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 (68) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/components/input/mathquill-types.d.ts +2 -0
  3. package/dist/components/input/mathquill-types.js.flow +2 -0
  4. package/dist/components/keypad/index.d.ts +8 -16
  5. package/dist/components/keypad/index.js.flow +10 -22
  6. package/dist/components/keypad/keypad-button.d.ts +12 -0
  7. package/dist/components/keypad/keypad-button.js.flow +18 -0
  8. package/dist/components/keypad/keypad-pages/extras-page.d.ts +9 -0
  9. package/dist/components/keypad/{operators-page/basic-relations-buttons.js.flow → keypad-pages/extras-page.js.flow} +3 -3
  10. package/dist/components/keypad/keypad-pages/geometry-page.d.ts +7 -0
  11. package/dist/components/keypad/{operators-page/logarithms-buttons.js.flow → keypad-pages/geometry-page.js.flow} +1 -3
  12. package/dist/components/keypad/keypad-pages/numbers-page.d.ts +7 -0
  13. package/dist/components/keypad/{operators-page/pre-algebra-buttons.js.flow → keypad-pages/numbers-page.js.flow} +1 -3
  14. package/dist/components/keypad/keypad-pages/operators-page.d.ts +11 -0
  15. package/dist/components/keypad/{operators-page/advanced-relations-buttons.js.flow → keypad-pages/operators-page.js.flow} +5 -3
  16. package/dist/components/keypad/shared-keys.d.ts +9 -0
  17. package/dist/components/keypad/{numbers-page/types.js.flow → shared-keys.js.flow} +4 -1
  18. package/dist/es/index.js +321 -465
  19. package/dist/es/index.js.map +1 -1
  20. package/dist/index.js +319 -488
  21. package/dist/index.js.map +1 -1
  22. package/package.json +2 -3
  23. package/src/components/input/__tests__/test-math-wrapper.ts +2 -5
  24. package/src/components/input/mathquill-types.ts +6 -0
  25. package/src/components/keypad/__tests__/keypad-button.test.tsx +4 -2
  26. package/src/components/keypad/index.tsx +73 -49
  27. package/src/components/keypad/{button.stories.tsx → keypad-button.stories.tsx} +2 -1
  28. package/src/components/keypad/keypad-button.tsx +128 -0
  29. package/src/components/keypad/keypad-mathquill.stories.tsx +9 -3
  30. package/src/components/keypad/keypad-pages/extras-page.tsx +34 -0
  31. package/src/components/keypad/keypad-pages/geometry-page.tsx +33 -0
  32. package/src/components/keypad/keypad-pages/numbers-page.tsx +84 -0
  33. package/src/components/keypad/keypad-pages/operators-page.tsx +116 -0
  34. package/src/components/keypad/shared-keys.tsx +78 -0
  35. package/tsconfig-build.tsbuildinfo +1 -1
  36. package/dist/components/keypad/button.d.ts +0 -12
  37. package/dist/components/keypad/button.js.flow +0 -18
  38. package/dist/components/keypad/extras-page/index.d.ts +0 -10
  39. package/dist/components/keypad/extras-page/index.js.flow +0 -15
  40. package/dist/components/keypad/geometry-page/index.d.ts +0 -9
  41. package/dist/components/keypad/geometry-page/index.js.flow +0 -14
  42. package/dist/components/keypad/keypad-page-items.d.ts +0 -26
  43. package/dist/components/keypad/keypad-page-items.js.flow +0 -40
  44. package/dist/components/keypad/numbers-page/index.d.ts +0 -10
  45. package/dist/components/keypad/numbers-page/index.js.flow +0 -18
  46. package/dist/components/keypad/numbers-page/types.d.ts +0 -4
  47. package/dist/components/keypad/operators-page/advanced-relations-buttons.d.ts +0 -8
  48. package/dist/components/keypad/operators-page/basic-relations-buttons.d.ts +0 -8
  49. package/dist/components/keypad/operators-page/index.d.ts +0 -10
  50. package/dist/components/keypad/operators-page/index.js.flow +0 -18
  51. package/dist/components/keypad/operators-page/logarithms-buttons.d.ts +0 -8
  52. package/dist/components/keypad/operators-page/pre-algebra-buttons.d.ts +0 -8
  53. package/dist/components/keypad/operators-page/types.d.ts +0 -6
  54. package/dist/components/keypad/operators-page/types.js.flow +0 -12
  55. package/src/components/keypad/__tests__/Button.test.tsx +0 -51
  56. package/src/components/keypad/button.tsx +0 -108
  57. package/src/components/keypad/extras-page/index.tsx +0 -27
  58. package/src/components/keypad/geometry-page/index.tsx +0 -89
  59. package/src/components/keypad/keypad-page-items.tsx +0 -118
  60. package/src/components/keypad/numbers-page/index.tsx +0 -136
  61. package/src/components/keypad/numbers-page/types.ts +0 -4
  62. package/src/components/keypad/operators-page/advanced-relations-buttons.tsx +0 -33
  63. package/src/components/keypad/operators-page/basic-relations-buttons.tsx +0 -33
  64. package/src/components/keypad/operators-page/index.tsx +0 -94
  65. package/src/components/keypad/operators-page/logarithms-buttons.tsx +0 -33
  66. package/src/components/keypad/operators-page/pre-algebra-buttons.tsx +0 -37
  67. package/src/components/keypad/operators-page/types.ts +0 -6
  68. /package/src/components/keypad/{keypad-pages.stories.tsx → keypad-pages/keypad-pages.stories.tsx} +0 -0
package/dist/es/index.js CHANGED
@@ -4,7 +4,6 @@ import { getDecimalSeparator } from '@khanacademy/wonder-blocks-i18n';
4
4
  import { entries } from '@khanacademy/wonder-stuff-core';
5
5
  import { StyleSheet, css } from 'aphrodite';
6
6
  import * as React from 'react';
7
- import React__default from 'react';
8
7
  import ReactDOM from 'react-dom';
9
8
  import $ from 'jquery';
10
9
  import MathQuill from 'mathquill';
@@ -7329,88 +7328,6 @@ class ProvidedKeypad extends React.Component {
7329
7328
  }
7330
7329
  }
7331
7330
 
7332
- const styles$1 = StyleSheet.create({
7333
- base: {
7334
- display: "flex",
7335
- justifyContent: "center",
7336
- alignItems: "center",
7337
- boxShadow: "0px 1px 0px rgba(33, 36, 44, 0.32)",
7338
- boxSizing: "border-box",
7339
- background: Color.white,
7340
- borderRadius: 4,
7341
- border: `1px solid transparent`,
7342
- flex: 1,
7343
- minHeight: 42,
7344
- minWidth: 42,
7345
- padding: 1
7346
- },
7347
- hovered: {
7348
- border: `1px solid ${Color.blue}`,
7349
- padding: 1,
7350
- boxShadow: "none"
7351
- },
7352
- focused: {
7353
- border: `2px solid ${Color.blue}`,
7354
- padding: 0,
7355
- boxShadow: "none"
7356
- },
7357
- pressed: {
7358
- border: "2px solid #1B50B3",
7359
- padding: 0,
7360
- background: `linear-gradient(0deg, rgba(24, 101, 242, 0.32), rgba(24, 101, 242, 0.32)), ${Color.white}`,
7361
- boxShadow: "none"
7362
- },
7363
- outerBoxBase: {
7364
- padding: 1,
7365
- height: "100%",
7366
- width: "100%",
7367
- boxSizing: "border-box",
7368
- borderRadius: 7,
7369
- border: "2px solid transparent"
7370
- },
7371
- outerBoxHover: {
7372
- border: `2px solid ${Color.blue}`
7373
- },
7374
- outerBoxPressed: {
7375
- border: "2px solid #1B50B3"
7376
- },
7377
- clickable: {
7378
- width: "100%",
7379
- height: "100%",
7380
- boxSizing: "border-box"
7381
- }
7382
- });
7383
- class Button extends React.Component {
7384
- render() {
7385
- const {
7386
- onPress,
7387
- ariaLabel,
7388
- children,
7389
- style,
7390
- tintColor
7391
- } = this.props;
7392
- return /*#__PURE__*/React.createElement(View$1, {
7393
- style: style
7394
- }, /*#__PURE__*/React.createElement(Clickable, {
7395
- onClick: onPress,
7396
- style: styles$1.clickable,
7397
- "aria-label": ariaLabel
7398
- }, ({
7399
- hovered,
7400
- focused,
7401
- pressed
7402
- }) => {
7403
- return /*#__PURE__*/React.createElement(View$1, {
7404
- style: [styles$1.outerBoxBase, hovered && styles$1.outerBoxHover, pressed && styles$1.outerBoxPressed]
7405
- }, /*#__PURE__*/React.createElement(View$1, {
7406
- style: [styles$1.base, tintColor != null ? {
7407
- background: tintColor
7408
- } : undefined, hovered && styles$1.hovered, focused && styles$1.focused, pressed && styles$1.pressed]
7409
- }, children));
7410
- }));
7411
- }
7412
- }
7413
-
7414
7331
  /*
7415
7332
  The SVGs in this file should be treated as binary assets. If, in the future,
7416
7333
  we need to make changes to update the color or size or shape of the glyph
@@ -8169,386 +8086,300 @@ function ButtonAsset({
8169
8086
  }
8170
8087
  }
8171
8088
 
8172
- const KeypadPageContainer = ({
8173
- children
8174
- }) => /*#__PURE__*/React.createElement(View$1, {
8175
- style: {
8176
- backgroundColor: "#DBDCDD",
8177
- width: "100%",
8178
- height: 192,
8179
- display: "grid",
8180
- gridTemplateColumns: "repeat(6, 1fr)",
8181
- gridTemplateRows: "repeat(4, 1fr)"
8182
- }
8183
- }, children);
8184
8089
  const KeypadButton = ({
8090
+ coord,
8185
8091
  keyConfig,
8186
8092
  onClickKey,
8187
- tintColor,
8188
- style
8189
- }) => /*#__PURE__*/React.createElement(Button, {
8190
- onPress: () => onClickKey(keyConfig.id),
8191
- tintColor: tintColor,
8192
- style: style,
8193
- ariaLabel: keyConfig.ariaLabel
8194
- }, /*#__PURE__*/React.createElement(ButtonAsset, {
8195
- id: keyConfig.id
8196
- }));
8197
- const SecondaryKeypadButton = ({
8198
- keyConfig,
8199
- onClickKey,
8200
- style
8201
- }) => /*#__PURE__*/React.createElement(KeypadButton, {
8202
- keyConfig: keyConfig,
8203
- onClickKey: onClickKey,
8204
- style: style,
8205
- tintColor: "#F6F6F7"
8206
- });
8207
- const KeypadActionButton = ({
8208
- keyConfig,
8209
- onClickKey,
8210
- style
8211
- }) => /*#__PURE__*/React.createElement(KeypadButton, {
8212
- keyConfig: keyConfig,
8213
- onClickKey: onClickKey,
8214
- style: style,
8215
- tintColor: "#DBDCDD"
8216
- });
8217
-
8218
- /**
8219
- * A placeholder button for the keypad. Optional count prop to render multiple
8220
- * buttons. Defaults to 1.
8221
- */
8222
- const PlaceHolderButtons = ({
8223
- count: _count = 1
8224
- }) => /*#__PURE__*/React.createElement(React.Fragment, null, Array.from({
8225
- length: _count
8226
- }).map((_, index) => /*#__PURE__*/React.createElement(View$1, {
8227
- key: index,
8228
- style: {
8093
+ style,
8094
+ secondary,
8095
+ action
8096
+ }) => {
8097
+ const tintColor = secondary ? "#F6F6F7" : action ? "#DBDCDD" : undefined;
8098
+ return /*#__PURE__*/React.createElement(View$1, {
8099
+ style: _extends({
8100
+ gridColumn: coord[0] + 1,
8101
+ gridRow: coord[1] + 1
8102
+ }, style)
8103
+ }, /*#__PURE__*/React.createElement(Clickable, {
8104
+ onClick: () => onClickKey(keyConfig.id),
8105
+ style: styles$1.clickable,
8106
+ "aria-label": keyConfig.ariaLabel
8107
+ }, ({
8108
+ hovered,
8109
+ focused,
8110
+ pressed
8111
+ }) => {
8112
+ return /*#__PURE__*/React.createElement(View$1, {
8113
+ style: [styles$1.outerBoxBase, hovered && styles$1.outerBoxHover, pressed && styles$1.outerBoxPressed]
8114
+ }, /*#__PURE__*/React.createElement(View$1, {
8115
+ style: [styles$1.base, tintColor != null ? {
8116
+ background: tintColor
8117
+ } : undefined, hovered && styles$1.hovered, focused && styles$1.focused, pressed && styles$1.pressed]
8118
+ }, /*#__PURE__*/React.createElement(ButtonAsset, {
8119
+ id: keyConfig.id
8120
+ })));
8121
+ }));
8122
+ };
8123
+ const styles$1 = StyleSheet.create({
8124
+ base: {
8125
+ display: "flex",
8126
+ justifyContent: "center",
8127
+ alignItems: "center",
8128
+ boxShadow: "0px 1px 0px rgba(33, 36, 44, 0.32)",
8129
+ boxSizing: "border-box",
8130
+ background: Color.white,
8131
+ borderRadius: 4,
8132
+ border: `1px solid transparent`,
8133
+ flex: 1,
8134
+ minHeight: 42,
8135
+ minWidth: 42,
8136
+ padding: 1
8137
+ },
8138
+ hovered: {
8139
+ border: `1px solid ${Color.blue}`,
8140
+ padding: 1,
8141
+ boxShadow: "none"
8142
+ },
8143
+ focused: {
8144
+ border: `2px solid ${Color.blue}`,
8145
+ padding: 0,
8146
+ boxShadow: "none"
8147
+ },
8148
+ pressed: {
8149
+ border: "2px solid #1B50B3",
8150
+ padding: 0,
8151
+ background: `linear-gradient(0deg, rgba(24, 101, 242, 0.32), rgba(24, 101, 242, 0.32)), ${Color.white}`,
8152
+ boxShadow: "none"
8153
+ },
8154
+ outerBoxBase: {
8155
+ padding: 1,
8229
8156
  height: "100%",
8230
8157
  width: "100%",
8231
8158
  boxSizing: "border-box",
8232
8159
  borderRadius: 7,
8233
- border: "4px solid transparent"
8234
- }
8235
- }, /*#__PURE__*/React.createElement(View$1, {
8236
- style: {
8237
- background: "rgba(33, 36, 44, 0.04)",
8160
+ border: "2px solid transparent"
8161
+ },
8162
+ outerBoxHover: {
8163
+ border: `2px solid ${Color.blue}`
8164
+ },
8165
+ outerBoxPressed: {
8166
+ border: "2px solid #1B50B3"
8167
+ },
8168
+ clickable: {
8238
8169
  width: "100%",
8239
8170
  height: "100%",
8240
- borderRadius: 4,
8241
- border: `1px solid transparent`
8171
+ boxSizing: "border-box"
8242
8172
  }
8243
- }))));
8173
+ });
8244
8174
 
8245
- class ExtrasPage extends React.Component {
8246
- render() {
8247
- const {
8248
- extraKeys,
8249
- onClickKey
8250
- } = this.props;
8251
- return /*#__PURE__*/React.createElement(KeypadPageContainer, null, extraKeys.map(key => /*#__PURE__*/React.createElement(KeypadButton, {
8175
+ const columns = 4;
8176
+ function ExtrasPage(props) {
8177
+ const {
8178
+ extraKeys,
8179
+ onClickKey
8180
+ } = props;
8181
+ return /*#__PURE__*/React.createElement(React.Fragment, null, extraKeys.map((key, i) => {
8182
+ // Map 1D array to Cartesian coordinates
8183
+ const coordX = i % columns;
8184
+ const coordY = i / columns;
8185
+ return /*#__PURE__*/React.createElement(KeypadButton, {
8252
8186
  key: key,
8253
8187
  keyConfig: KeyConfigs[key],
8254
- onClickKey: onClickKey
8255
- })));
8256
- }
8188
+ onClickKey: onClickKey,
8189
+ coord: [coordX, coordY]
8190
+ });
8191
+ }));
8257
8192
  }
8258
8193
 
8259
- class GeometryPage extends React.Component {
8260
- render() {
8261
- const {
8262
- onClickKey
8263
- } = this.props;
8264
- return /*#__PURE__*/React.createElement(KeypadPageContainer, null, /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8265
- keyConfig: KeyConfigs.SIN,
8266
- onClickKey: onClickKey
8267
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8268
- keyConfig: KeyConfigs.COS,
8269
- onClickKey: onClickKey
8270
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8271
- keyConfig: KeyConfigs.TAN,
8272
- onClickKey: onClickKey
8273
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8274
- keyConfig: KeyConfigs.LEFT_PAREN,
8275
- onClickKey: onClickKey,
8276
- style: {
8277
- gridColumn: 5
8278
- }
8279
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8280
- keyConfig: KeyConfigs.RIGHT_PAREN,
8281
- onClickKey: onClickKey,
8282
- style: {
8283
- gridColumn: 6
8284
- }
8285
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8286
- keyConfig: KeyConfigs.x,
8287
- onClickKey: onClickKey,
8288
- style: {
8289
- gridColumn: 5
8290
- }
8291
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8292
- keyConfig: KeyConfigs.FRAC_INCLUSIVE,
8293
- onClickKey: onClickKey,
8294
- style: {
8295
- gridColumn: 6
8296
- }
8297
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8298
- keyConfig: KeyConfigs.PI,
8299
- onClickKey: onClickKey,
8300
- style: {
8301
- gridColumn: 5
8302
- }
8303
- }), /*#__PURE__*/React.createElement(KeypadActionButton, {
8304
- keyConfig: KeyConfigs.BACKSPACE,
8305
- style: {
8306
- gridColumn: "6"
8307
- },
8308
- onClickKey: onClickKey
8309
- }), /*#__PURE__*/React.createElement(KeypadActionButton, {
8310
- keyConfig: KeyConfigs.DISMISS,
8311
- style: {
8312
- gridColumn: "6"
8313
- },
8314
- onClickKey: onClickKey
8315
- }));
8316
- }
8194
+ function GeometryPage(props) {
8195
+ const {
8196
+ onClickKey
8197
+ } = props;
8198
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(KeypadButton, {
8199
+ keyConfig: KeyConfigs.SIN,
8200
+ onClickKey: onClickKey,
8201
+ coord: [0, 0]
8202
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8203
+ keyConfig: KeyConfigs.COS,
8204
+ onClickKey: onClickKey,
8205
+ coord: [1, 0]
8206
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8207
+ keyConfig: KeyConfigs.TAN,
8208
+ onClickKey: onClickKey,
8209
+ coord: [2, 0]
8210
+ }));
8317
8211
  }
8318
8212
 
8319
- class NumbersPage extends React.Component {
8320
- render() {
8321
- const {
8322
- onClickKey
8323
- } = this.props;
8324
- return /*#__PURE__*/React.createElement(KeypadPageContainer, null, /*#__PURE__*/React.createElement(KeypadButton, {
8325
- keyConfig: KeyConfigs.NUM_7,
8326
- onClickKey: onClickKey
8327
- }), /*#__PURE__*/React.createElement(KeypadButton, {
8328
- keyConfig: KeyConfigs.NUM_8,
8329
- onClickKey: onClickKey
8330
- }), /*#__PURE__*/React.createElement(KeypadButton, {
8331
- keyConfig: KeyConfigs.NUM_9,
8332
- onClickKey: onClickKey
8333
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8334
- keyConfig: KeyConfigs.DIVIDE,
8335
- style: this.props.divisionKey ? {
8336
- gridColumn: "4",
8337
- gridRow: "1"
8338
- } : {
8339
- display: "none"
8340
- },
8341
- onClickKey: onClickKey
8342
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8343
- keyConfig: this.props.multiplicationDot ? KeyConfigs.CDOT : KeyConfigs.TIMES,
8344
- style: this.props.divisionKey && {
8345
- gridColumn: "4",
8346
- gridRow: "2"
8347
- },
8348
- onClickKey: onClickKey
8349
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8350
- keyConfig: KeyConfigs.LEFT_PAREN,
8351
- onClickKey: onClickKey
8352
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8353
- keyConfig: KeyConfigs.RIGHT_PAREN,
8354
- onClickKey: onClickKey
8355
- }), /*#__PURE__*/React.createElement(KeypadButton, {
8356
- keyConfig: KeyConfigs.NUM_4,
8357
- onClickKey: onClickKey
8358
- }), /*#__PURE__*/React.createElement(KeypadButton, {
8359
- keyConfig: KeyConfigs.NUM_5,
8360
- onClickKey: onClickKey
8361
- }), /*#__PURE__*/React.createElement(KeypadButton, {
8362
- keyConfig: KeyConfigs.NUM_6,
8363
- onClickKey: onClickKey
8364
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8365
- keyConfig: KeyConfigs.MINUS,
8366
- style: this.props.divisionKey && {
8367
- gridColumn: "4",
8368
- gridRow: "3"
8369
- },
8370
- onClickKey: onClickKey
8371
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8372
- keyConfig: KeyConfigs.FRAC_INCLUSIVE,
8373
- onClickKey: onClickKey,
8374
- style: {
8375
- gridColumn: "5 / 7"
8376
- }
8377
- }), /*#__PURE__*/React.createElement(KeypadButton, {
8378
- keyConfig: KeyConfigs.NUM_1,
8379
- onClickKey: onClickKey
8380
- }), /*#__PURE__*/React.createElement(KeypadButton, {
8381
- keyConfig: KeyConfigs.NUM_2,
8382
- onClickKey: onClickKey
8383
- }), /*#__PURE__*/React.createElement(KeypadButton, {
8384
- keyConfig: KeyConfigs.NUM_3,
8385
- onClickKey: onClickKey
8386
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8387
- keyConfig: KeyConfigs.PLUS,
8388
- style: this.props.divisionKey ? {
8389
- gridColumn: "4",
8390
- gridRow: "4"
8391
- } : {
8392
- gridColumn: "4",
8393
- gridRowStart: "3",
8394
- gridRowEnd: "5"
8395
- },
8396
- onClickKey: onClickKey
8397
- }), /*#__PURE__*/React.createElement(KeypadActionButton, {
8398
- keyConfig: KeyConfigs.BACKSPACE,
8399
- style: {
8400
- gridColumn: "6"
8401
- },
8402
- onClickKey: onClickKey
8403
- }), /*#__PURE__*/React.createElement(KeypadButton, {
8404
- keyConfig: KeyConfigs.NUM_0,
8405
- onClickKey: onClickKey
8406
- }), /*#__PURE__*/React.createElement(KeypadButton, {
8407
- keyConfig: KeyConfigs.DECIMAL,
8408
- onClickKey: onClickKey
8409
- }), /*#__PURE__*/React.createElement(KeypadButton, {
8410
- keyConfig: KeyConfigs.NEGATIVE,
8411
- onClickKey: onClickKey
8412
- }), /*#__PURE__*/React.createElement(KeypadActionButton, {
8413
- keyConfig: KeyConfigs.DISMISS,
8414
- style: {
8415
- gridColumn: "6"
8416
- },
8417
- onClickKey: onClickKey
8418
- }));
8419
- }
8213
+ function NumbersPage(props) {
8214
+ const {
8215
+ onClickKey
8216
+ } = props;
8217
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(KeypadButton, {
8218
+ keyConfig: KeyConfigs.NUM_7,
8219
+ onClickKey: onClickKey,
8220
+ coord: [0, 0]
8221
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8222
+ keyConfig: KeyConfigs.NUM_8,
8223
+ onClickKey: onClickKey,
8224
+ coord: [1, 0]
8225
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8226
+ keyConfig: KeyConfigs.NUM_9,
8227
+ onClickKey: onClickKey,
8228
+ coord: [2, 0]
8229
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8230
+ keyConfig: KeyConfigs.NUM_4,
8231
+ onClickKey: onClickKey,
8232
+ coord: [0, 1]
8233
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8234
+ keyConfig: KeyConfigs.NUM_5,
8235
+ onClickKey: onClickKey,
8236
+ coord: [1, 1]
8237
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8238
+ keyConfig: KeyConfigs.NUM_6,
8239
+ onClickKey: onClickKey,
8240
+ coord: [2, 1]
8241
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8242
+ keyConfig: KeyConfigs.NUM_1,
8243
+ onClickKey: onClickKey,
8244
+ coord: [0, 2]
8245
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8246
+ keyConfig: KeyConfigs.NUM_2,
8247
+ onClickKey: onClickKey,
8248
+ coord: [1, 2]
8249
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8250
+ keyConfig: KeyConfigs.NUM_3,
8251
+ onClickKey: onClickKey,
8252
+ coord: [2, 2]
8253
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8254
+ keyConfig: KeyConfigs.NUM_0,
8255
+ onClickKey: onClickKey,
8256
+ coord: [0, 3]
8257
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8258
+ keyConfig: KeyConfigs.DECIMAL,
8259
+ onClickKey: onClickKey,
8260
+ coord: [1, 3]
8261
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8262
+ keyConfig: KeyConfigs.NEGATIVE,
8263
+ onClickKey: onClickKey,
8264
+ coord: [2, 3]
8265
+ }));
8420
8266
  }
8421
8267
 
8422
- const AdvancedRelations = ({
8423
- onClickKey,
8424
- placeholder
8425
- }) => placeholder ? /*#__PURE__*/React__default.createElement(PlaceHolderButtons, {
8426
- count: 3
8427
- }) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SecondaryKeypadButton, {
8428
- keyConfig: KeyConfigs.NEQ,
8429
- onClickKey: onClickKey
8430
- }), /*#__PURE__*/React__default.createElement(SecondaryKeypadButton, {
8431
- keyConfig: KeyConfigs.LEQ,
8432
- onClickKey: onClickKey
8433
- }), /*#__PURE__*/React__default.createElement(SecondaryKeypadButton, {
8434
- keyConfig: KeyConfigs.GEQ,
8435
- onClickKey: onClickKey
8436
- }));
8437
-
8438
- const BasicRelations = ({
8439
- onClickKey,
8440
- placeholder
8441
- }) => placeholder ? /*#__PURE__*/React__default.createElement(PlaceHolderButtons, {
8442
- count: 3
8443
- }) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SecondaryKeypadButton, {
8444
- keyConfig: KeyConfigs.EQUAL,
8445
- onClickKey: onClickKey
8446
- }), /*#__PURE__*/React__default.createElement(SecondaryKeypadButton, {
8447
- keyConfig: KeyConfigs.LT,
8448
- onClickKey: onClickKey
8449
- }), /*#__PURE__*/React__default.createElement(SecondaryKeypadButton, {
8450
- keyConfig: KeyConfigs.GT,
8451
- onClickKey: onClickKey
8452
- }));
8453
-
8454
- const Logarithms = ({
8455
- onClickKey,
8456
- placeholder
8457
- }) => placeholder ? /*#__PURE__*/React__default.createElement(PlaceHolderButtons, {
8458
- count: 3
8459
- }) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SecondaryKeypadButton, {
8460
- keyConfig: KeyConfigs.LOG,
8461
- onClickKey: onClickKey
8462
- }), /*#__PURE__*/React__default.createElement(SecondaryKeypadButton, {
8463
- keyConfig: KeyConfigs.LOG_N,
8464
- onClickKey: onClickKey
8465
- }), /*#__PURE__*/React__default.createElement(SecondaryKeypadButton, {
8466
- keyConfig: KeyConfigs.LN,
8467
- onClickKey: onClickKey
8468
- }));
8469
-
8470
- const PreAlgebra = ({
8471
- onClickKey,
8472
- placeholder
8473
- }) => placeholder ? /*#__PURE__*/React__default.createElement(PlaceHolderButtons, {
8474
- count: 4
8475
- }) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SecondaryKeypadButton, {
8476
- keyConfig: KeyConfigs.EXP_2,
8477
- onClickKey: onClickKey
8478
- }), /*#__PURE__*/React__default.createElement(SecondaryKeypadButton, {
8479
- keyConfig: KeyConfigs.EXP,
8480
- onClickKey: onClickKey
8481
- }), /*#__PURE__*/React__default.createElement(SecondaryKeypadButton, {
8482
- keyConfig: KeyConfigs.SQRT,
8483
- onClickKey: onClickKey
8484
- }), /*#__PURE__*/React__default.createElement(SecondaryKeypadButton, {
8485
- keyConfig: KeyConfigs.RADICAL,
8486
- onClickKey: onClickKey
8487
- }));
8488
-
8489
- class OperatorsPage extends React.Component {
8490
- render() {
8491
- const {
8492
- onClickKey
8493
- } = this.props;
8494
- return /*#__PURE__*/React.createElement(KeypadPageContainer, null, /*#__PURE__*/React.createElement(PreAlgebra, {
8495
- onClickKey: onClickKey,
8496
- placeholder: !this.props.preAlgebra
8497
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8498
- keyConfig: KeyConfigs.LEFT_PAREN,
8499
- onClickKey: onClickKey
8500
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8501
- keyConfig: KeyConfigs.RIGHT_PAREN,
8502
- onClickKey: onClickKey
8503
- }), /*#__PURE__*/React.createElement(Logarithms, {
8504
- onClickKey: onClickKey,
8505
- placeholder: !this.props.logarithms
8506
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8507
- keyConfig: KeyConfigs.x,
8508
- onClickKey: onClickKey,
8509
- style: {
8510
- gridColumn: 5
8511
- }
8512
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8513
- keyConfig: KeyConfigs.FRAC_INCLUSIVE,
8514
- onClickKey: onClickKey,
8515
- style: {
8516
- gridColumn: 6
8517
- }
8518
- }), /*#__PURE__*/React.createElement(BasicRelations, {
8519
- onClickKey: onClickKey,
8520
- placeholder: !this.props.basicRelations
8521
- }), /*#__PURE__*/React.createElement(SecondaryKeypadButton, {
8522
- keyConfig: KeyConfigs.PI,
8523
- onClickKey: onClickKey,
8524
- style: {
8525
- gridColumn: 5
8526
- }
8527
- }), /*#__PURE__*/React.createElement(KeypadActionButton, {
8528
- keyConfig: KeyConfigs.BACKSPACE,
8529
- style: {
8530
- gridColumn: 6
8531
- },
8532
- onClickKey: onClickKey
8533
- }), /*#__PURE__*/React.createElement(AdvancedRelations, {
8534
- onClickKey: onClickKey,
8535
- placeholder: !this.props.advancedRelations
8536
- }), /*#__PURE__*/React.createElement(KeypadActionButton, {
8537
- keyConfig: KeyConfigs.DISMISS,
8538
- style: {
8539
- gridColumn: "6"
8540
- },
8541
- onClickKey: onClickKey
8542
- }));
8543
- }
8268
+ function OperatorsPage(props) {
8269
+ const {
8270
+ onClickKey,
8271
+ preAlgebra,
8272
+ logarithms,
8273
+ basicRelations,
8274
+ advancedRelations
8275
+ } = props;
8276
+ return /*#__PURE__*/React.createElement(React.Fragment, null, preAlgebra && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(KeypadButton, {
8277
+ keyConfig: KeyConfigs.EXP_2,
8278
+ onClickKey: onClickKey,
8279
+ coord: [0, 0]
8280
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8281
+ keyConfig: KeyConfigs.EXP,
8282
+ onClickKey: onClickKey,
8283
+ coord: [1, 0]
8284
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8285
+ keyConfig: KeyConfigs.SQRT,
8286
+ onClickKey: onClickKey,
8287
+ coord: [2, 0]
8288
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8289
+ keyConfig: KeyConfigs.RADICAL,
8290
+ onClickKey: onClickKey,
8291
+ coord: [3, 0]
8292
+ })), logarithms && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(KeypadButton, {
8293
+ keyConfig: KeyConfigs.LOG,
8294
+ onClickKey: onClickKey,
8295
+ coord: [0, 1]
8296
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8297
+ keyConfig: KeyConfigs.LOG_N,
8298
+ onClickKey: onClickKey,
8299
+ coord: [1, 1]
8300
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8301
+ keyConfig: KeyConfigs.LN,
8302
+ onClickKey: onClickKey,
8303
+ coord: [2, 1]
8304
+ })), basicRelations && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(KeypadButton, {
8305
+ keyConfig: KeyConfigs.EQUAL,
8306
+ onClickKey: onClickKey,
8307
+ coord: [0, 2]
8308
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8309
+ keyConfig: KeyConfigs.LT,
8310
+ onClickKey: onClickKey,
8311
+ coord: [1, 2]
8312
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8313
+ keyConfig: KeyConfigs.GT,
8314
+ onClickKey: onClickKey,
8315
+ coord: [2, 2]
8316
+ })), advancedRelations && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(KeypadButton, {
8317
+ keyConfig: KeyConfigs.NEQ,
8318
+ onClickKey: onClickKey,
8319
+ coord: [0, 3]
8320
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8321
+ keyConfig: KeyConfigs.LEQ,
8322
+ onClickKey: onClickKey,
8323
+ coord: [1, 3]
8324
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8325
+ keyConfig: KeyConfigs.GEQ,
8326
+ onClickKey: onClickKey,
8327
+ coord: [2, 3]
8328
+ })));
8329
+ }
8330
+
8331
+ function SharedKeys(props) {
8332
+ const {
8333
+ onClickKey,
8334
+ divisionKey,
8335
+ multiplicationDot
8336
+ } = props;
8337
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(KeypadButton, {
8338
+ keyConfig: KeyConfigs.PLUS,
8339
+ onClickKey: onClickKey,
8340
+ coord: [4, 0],
8341
+ secondary: true
8342
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8343
+ keyConfig: KeyConfigs.MINUS,
8344
+ onClickKey: onClickKey,
8345
+ coord: [5, 0],
8346
+ secondary: true
8347
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8348
+ keyConfig: multiplicationDot ? KeyConfigs.CDOT : KeyConfigs.TIMES,
8349
+ onClickKey: onClickKey,
8350
+ coord: [4, 1],
8351
+ secondary: true
8352
+ }), divisionKey && /*#__PURE__*/React.createElement(KeypadButton, {
8353
+ keyConfig: KeyConfigs.DIVIDE,
8354
+ onClickKey: onClickKey,
8355
+ coord: [5, 1],
8356
+ secondary: true
8357
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8358
+ keyConfig: KeyConfigs.LEFT_PAREN,
8359
+ onClickKey: onClickKey,
8360
+ coord: [4, 2],
8361
+ secondary: true
8362
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8363
+ keyConfig: KeyConfigs.RIGHT_PAREN,
8364
+ onClickKey: onClickKey,
8365
+ coord: [5, 2],
8366
+ secondary: true
8367
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8368
+ keyConfig: KeyConfigs.FRAC_INCLUSIVE,
8369
+ onClickKey: onClickKey,
8370
+ coord: [4, 3],
8371
+ secondary: true
8372
+ }), /*#__PURE__*/React.createElement(KeypadButton, {
8373
+ keyConfig: KeyConfigs.BACKSPACE,
8374
+ onClickKey: onClickKey,
8375
+ coord: [5, 3],
8376
+ action: true
8377
+ }));
8544
8378
  }
8545
8379
 
8546
8380
  function allPages(props) {
8547
8381
  var _props$extraKeys;
8548
8382
  const pages = ["Numbers"];
8549
- if ((_props$extraKeys = props.extraKeys) != null && _props$extraKeys.length) {
8550
- pages.push("Extras");
8551
- }
8552
8383
  if (
8553
8384
  // OperatorsButtonSets
8554
8385
  props.preAlgebra || props.logarithms || props.basicRelations || props.advancedRelations) {
@@ -8557,38 +8388,63 @@ function allPages(props) {
8557
8388
  if (props.trigonometry) {
8558
8389
  pages.push("Geometry");
8559
8390
  }
8391
+ if ((_props$extraKeys = props.extraKeys) != null && _props$extraKeys.length) {
8392
+ pages.push("Extras");
8393
+ }
8560
8394
  return pages;
8561
8395
  }
8562
- class Keypad extends React.Component {
8563
- constructor(...args) {
8564
- super(...args);
8565
- this.state = {
8566
- selectedPage: "Numbers"
8567
- };
8568
- }
8569
- render() {
8570
- const {
8571
- selectedPage
8572
- } = this.state;
8573
- const availablePages = allPages(this.props);
8574
- return /*#__PURE__*/React.createElement(View$1, null, /*#__PURE__*/React.createElement(Tabbar, {
8575
- items: availablePages,
8576
- selectedItem: selectedPage,
8577
- onSelectItem: tabbarItem => {
8578
- this.setState({
8579
- selectedPage: tabbarItem
8580
- });
8581
- },
8582
- style: styles.tabbar
8583
- }), selectedPage === "Numbers" && /*#__PURE__*/React.createElement(NumbersPage, this.props), selectedPage === "Extras" && /*#__PURE__*/React.createElement(ExtrasPage, this.props), selectedPage === "Operators" && /*#__PURE__*/React.createElement(OperatorsPage, this.props), selectedPage === "Geometry" && /*#__PURE__*/React.createElement(GeometryPage, this.props));
8584
- }
8396
+ function Keypad(props) {
8397
+ const [selectedPage, setSelectedPage] = React.useState("Numbers");
8398
+ const availablePages = allPages(props);
8399
+ const {
8400
+ onClickKey,
8401
+ extraKeys = [],
8402
+ multiplicationDot,
8403
+ divisionKey,
8404
+ preAlgebra,
8405
+ logarithms,
8406
+ basicRelations,
8407
+ advancedRelations
8408
+ } = props;
8409
+ return /*#__PURE__*/React.createElement(View$1, null, /*#__PURE__*/React.createElement(Tabbar, {
8410
+ items: availablePages,
8411
+ selectedItem: selectedPage,
8412
+ onSelectItem: tabbarItem => {
8413
+ setSelectedPage(tabbarItem);
8414
+ },
8415
+ style: styles.tabbar
8416
+ }), /*#__PURE__*/React.createElement(View$1, {
8417
+ style: styles.grid
8418
+ }, selectedPage === "Numbers" && /*#__PURE__*/React.createElement(NumbersPage, {
8419
+ onClickKey: onClickKey
8420
+ }), selectedPage === "Extras" && /*#__PURE__*/React.createElement(ExtrasPage, {
8421
+ onClickKey: onClickKey,
8422
+ extraKeys: extraKeys
8423
+ }), selectedPage === "Operators" && /*#__PURE__*/React.createElement(OperatorsPage, {
8424
+ onClickKey: onClickKey,
8425
+ preAlgebra: preAlgebra,
8426
+ logarithms: logarithms,
8427
+ basicRelations: basicRelations,
8428
+ advancedRelations: advancedRelations
8429
+ }), selectedPage === "Geometry" && /*#__PURE__*/React.createElement(GeometryPage, {
8430
+ onClickKey: onClickKey
8431
+ }), /*#__PURE__*/React.createElement(SharedKeys, {
8432
+ onClickKey: onClickKey,
8433
+ multiplicationDot: multiplicationDot,
8434
+ divisionKey: divisionKey
8435
+ })));
8585
8436
  }
8586
- Keypad.defaultProps = {
8587
- extraKeys: []
8588
- };
8589
8437
  const styles = StyleSheet.create({
8590
8438
  tabbar: {
8591
8439
  background: Color.white
8440
+ },
8441
+ grid: {
8442
+ display: "grid",
8443
+ gridTemplateColumns: "repeat(6, 1fr)",
8444
+ gridTemplateRows: "repeat(4, 1fr)",
8445
+ backgroundColor: "#DBDCDD",
8446
+ maxHeight: 200,
8447
+ maxWidth: 300
8592
8448
  }
8593
8449
  });
8594
8450