@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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/components/input/cursor-contexts.ts","../../../../node_modules/@babel/runtime/helpers/esm/extends.js","../../src/fake-react-native-web/text.tsx","../../src/fake-react-native-web/view.tsx","../../src/components/common-style.ts","../../src/components/input/cursor-handle.tsx","../../src/components/input/drag-listener.ts","../../src/components/input/mathquill-instance.ts","../../src/components/input/mathquill-types.ts","../../src/components/input/mathquill-helpers.ts","../../src/components/key-handlers/handle-backspace.ts","../../src/enums.ts","../../src/utils.ts","../../src/components/key-handlers/handle-arrow.ts","../../src/components/key-handlers/handle-exponent.ts","../../src/components/key-handlers/handle-jump-out.ts","../../src/components/key-handlers/key-translator.ts","../../src/components/input/math-wrapper.ts","../../src/components/input/scroll-into-view.ts","../../src/components/input/math-input.tsx","../../src/components/prop-types.js","../../src/data/key-configs.ts","../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../src/components/keypad-legacy/corner-decal.tsx","../../src/components/keypad-legacy/styles.ts","../../src/components/keypad-legacy/math-icon.tsx","../../src/components/keypad-legacy/iconography/cos.js","../../src/components/keypad-legacy/iconography/log.js","../../src/components/keypad-legacy/iconography/equal.js","../../src/components/keypad-legacy/iconography/backspace.js","../../src/components/keypad-legacy/iconography/sqrt.js","../../src/components/keypad-legacy/iconography/exp.js","../../src/components/keypad-legacy/iconography/neq.js","../../src/components/keypad-legacy/iconography/geq.js","../../src/components/keypad-legacy/iconography/ln.js","../../src/components/keypad-legacy/iconography/dismiss.js","../../src/components/keypad-legacy/iconography/sin.js","../../src/components/keypad-legacy/iconography/lt.js","../../src/components/keypad-legacy/iconography/cube-root.js","../../src/components/keypad-legacy/iconography/plus.js","../../src/components/keypad-legacy/iconography/tan.js","../../src/components/keypad-legacy/iconography/arrow.js","../../src/components/keypad-legacy/iconography/left.js","../../src/components/keypad-legacy/iconography/up.js","../../src/components/keypad-legacy/iconography/down.js","../../src/components/keypad-legacy/iconography/left-paren.js","../../src/components/keypad-legacy/iconography/right-paren.js","../../src/components/keypad-legacy/iconography/gt.js","../../src/components/keypad-legacy/iconography/divide.js","../../src/components/keypad-legacy/iconography/period.js","../../src/components/keypad-legacy/iconography/percent.js","../../src/components/keypad-legacy/iconography/times.js","../../src/components/keypad-legacy/iconography/exp-3.js","../../src/components/keypad-legacy/iconography/exp-2.js","../../src/components/keypad-legacy/iconography/right.js","../../src/components/keypad-legacy/iconography/cdot.js","../../src/components/keypad-legacy/iconography/log-n.js","../../src/components/keypad-legacy/iconography/leq.js","../../src/components/keypad-legacy/iconography/minus.js","../../src/components/keypad-legacy/iconography/radical.js","../../src/components/keypad-legacy/iconography/frac.js","../../src/components/keypad-legacy/iconography/jump-out-parentheses.js","../../src/components/keypad-legacy/iconography/jump-out-exponent.js","../../src/components/keypad-legacy/iconography/jump-out-base.js","../../src/components/keypad-legacy/iconography/jump-into-numerator.js","../../src/components/keypad-legacy/iconography/jump-out-numerator.js","../../src/components/keypad-legacy/iconography/jump-out-denominator.js","../../src/components/keypad-legacy/iconography/index.js","../../src/components/keypad-legacy/svg-icon.tsx","../../src/components/keypad-legacy/text-icon.tsx","../../src/components/keypad-legacy/icon.tsx","../../src/components/keypad-legacy/multi-symbol-grid.tsx","../../src/components/keypad-legacy/keypad-button.tsx","../../src/components/keypad-legacy/empty-keypad-button.tsx","../../src/components/keypad-legacy/touchable-keypad-button.tsx","../../src/components/keypad-legacy/many-keypad-button.tsx","../../src/components/tabbar/icons.tsx","../../src/components/tabbar/item.tsx","../../src/components/tabbar/tabbar.tsx","../../src/components/keypad-legacy/z-indexes.ts","../../src/components/keypad-legacy/echo-manager.tsx","../../src/components/keypad-legacy/multi-symbol-popover.tsx","../../src/components/keypad-legacy/popover-manager.tsx","../../src/components/keypad-legacy/store/actions.ts","../../src/components/keypad-legacy/keypad.tsx","../../src/components/keypad-legacy/two-page-keypad.tsx","../../src/components/keypad-legacy/expression-keypad.tsx","../../src/components/keypad-legacy/fraction-keypad.tsx","../../src/components/keypad-legacy/navigation-pad.tsx","../../src/components/keypad-legacy/keypad-container.tsx","../../src/components/keypad-legacy/gesture-state-machine.ts","../../src/components/keypad-legacy/node-manager.ts","../../src/components/keypad-legacy/popover-state-machine.ts","../../src/components/keypad-legacy/gesture-manager.ts","../../src/components/keypad-legacy/store/echo-reducer.ts","../../src/components/keypad-legacy/store/input-reducer.ts","../../src/components/keypad-legacy/store/shared.ts","../../src/components/keypad-legacy/store/keypad-reducer.ts","../../src/components/keypad-legacy/compute-layout-parameters.ts","../../src/components/keypad-legacy/store/layout-reducer.ts","../../src/components/keypad-legacy/store/index.ts","../../src/components/keypad-legacy/provided-keypad.tsx","../../src/components/keypad/button.tsx","../../src/components/keypad/button-assets.tsx","../../src/components/keypad/keypad-page-items.tsx","../../src/components/keypad/extras-page/index.tsx","../../src/components/keypad/geometry-page/index.tsx","../../src/components/keypad/numbers-page/index.tsx","../../src/components/keypad/operators-page/advanced-relations-buttons.tsx","../../src/components/keypad/operators-page/basic-relations-buttons.tsx","../../src/components/keypad/operators-page/logarithms-buttons.tsx","../../src/components/keypad/operators-page/pre-algebra-buttons.tsx","../../src/components/keypad/operators-page/index.tsx","../../src/components/keypad/index.tsx"],"sourcesContent":["/**\n * Enum that defines the various contexts in which a cursor can exist. The\n * active context is determined first by looking at the cursor's siblings (e.g.,\n * for the `BEFORE_FRACTION` context), and then at its direct parent. Though a\n * cursor could in theory be nested in multiple contexts, we only care about the\n * immediate context.\n *\n * TODO(charlie): Add a context to represent being inside of a radical. Right\n * now, we show the dismiss button rather than allowing the user to jump out of\n * the radical.\n */\n\nexport enum CursorContext {\n // The cursor is not in any of the other viable contexts.\n NONE = \"NONE\",\n\n // The cursor is within a set of parentheses.\n IN_PARENS = \"IN_PARENS\",\n\n // The cursor is within a superscript (e.g., an exponent).\n IN_SUPER_SCRIPT = \"IN_SUPER_SCRIPT\",\n\n // The cursor is within a subscript (e.g., the base of a custom logarithm).\n IN_SUB_SCRIPT = \"IN_SUB_SCRIPT\",\n\n // The cursor is in the numerator of a fraction.\n IN_NUMERATOR = \"IN_NUMERATOR\",\n\n // The cursor is in the denominator of a fraction.\n IN_DENOMINATOR = \"IN_DENOMINATOR\",\n\n // The cursor is sitting before a fraction; that is, the cursor is within\n // what looks to be a mixed number preceding a fraction. This will only be\n // the case when the only math between the cursor and the fraction to its\n // write is non-leaf math (numbers and variables).\n BEFORE_FRACTION = \"BEFORE_FRACTION\",\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import {StyleSheet, css} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\nimport type {CSSProperties} from \"aphrodite\";\n\ntype Props = {\n children: React.ReactNode;\n // The `dynamicStyle` prop is provided for animating dynamic\n // properties, as creating Aphrodite StyleSheets in animation loops is\n // expensive. `dynamicStyle` should be a raw style object, rather than\n // a StyleSheet.\n dynamicStyle?: CSSProperties;\n numberOfLines?: number;\n style?: StyleType;\n};\n\nclass Text extends React.Component<Props> {\n render(): React.ReactNode {\n const {numberOfLines, style} = this.props;\n\n const className = css(\n styles.initial,\n ...(Array.isArray(style) ? style : [style]),\n numberOfLines === 1 && styles.singleLineStyle,\n );\n\n return (\n <span className={className} style={this.props.dynamicStyle}>\n {this.props.children}\n </span>\n );\n }\n}\n\n// https://github.com/necolas/react-native-web/blob/master/src/components/Text/index.js\nconst styles = StyleSheet.create({\n initial: {\n color: \"inherit\",\n display: \"inline\",\n font: \"inherit\",\n margin: 0,\n padding: 0,\n textDecorationLine: \"none\",\n wordWrap: \"break-word\",\n },\n singleLineStyle: {\n maxWidth: \"100%\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n});\n\nexport default Text;\n","import {StyleSheet, css} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\nimport type {CSSProperties} from \"aphrodite\";\n\ntype Props = {\n ariaLabel?: string;\n children?: React.ReactNode;\n // The `dynamicStyle` prop is provided for animating dynamic\n // properties, as creating Aphrodite StyleSheets in animation loops is\n // expensive. `dynamicStyle` should be a raw style object, rather than\n // a StyleSheet.\n dynamicStyle?: CSSProperties;\n // The `extraClassName` prop should almost never be used. It gives the\n // client a way to provide an additional CSS class name, to augment\n // the class name generated by Aphrodite. (Right now, it's only used to\n // disable some externally-applied CSS that would otherwise be far too\n // difficult to override with inline styles.)\n extraClassName?: string;\n numberOfLines?: number;\n onClick?: (arg1: React.SyntheticEvent<HTMLDivElement>) => void;\n onTouchCancel?: (arg1: React.TouchEvent<HTMLDivElement>) => void;\n onTouchEnd?: (arg1: React.TouchEvent<HTMLDivElement>) => void;\n onTouchMove?: (arg1: React.TouchEvent<HTMLDivElement>) => void;\n onTouchStart?: (arg1: React.TouchEvent<HTMLDivElement>) => void;\n role?: string;\n style?: StyleType;\n};\n\nclass View extends React.Component<Props> {\n static styles = StyleSheet.create({\n // From: https://github.com/necolas/react-native-web/blob/master/src/components/View/index.js\n // eslint-disable-next-line react-native/no-unused-styles\n initial: {\n alignItems: \"stretch\",\n borderWidth: 0,\n borderStyle: \"solid\",\n boxSizing: \"border-box\",\n display: \"flex\",\n flexBasis: \"auto\",\n flexDirection: \"column\",\n margin: 0,\n padding: 0,\n position: \"relative\",\n // button and anchor reset\n backgroundColor: \"transparent\",\n color: \"inherit\",\n font: \"inherit\",\n textAlign: \"inherit\",\n textDecorationLine: \"none\",\n // list reset\n listStyle: \"none\",\n // fix flexbox bugs\n maxWidth: \"100%\",\n minHeight: 0,\n minWidth: 0,\n },\n });\n\n render(): React.ReactNode {\n const className =\n css(\n View.styles.initial,\n ...(Array.isArray(this.props.style)\n ? this.props.style\n : [this.props.style]),\n ) +\n (this.props.extraClassName ? ` ${this.props.extraClassName}` : \"\");\n\n return (\n <div\n className={className}\n style={this.props.dynamicStyle}\n onClick={this.props.onClick}\n onTouchCancel={this.props.onTouchCancel}\n onTouchEnd={this.props.onTouchEnd}\n onTouchMove={this.props.onTouchMove}\n onTouchStart={this.props.onTouchStart}\n aria-label={this.props.ariaLabel}\n role={this.props.role}\n >\n {this.props.children}\n </div>\n );\n }\n}\n\nexport default View;\n","/**\n * Common parameters used to style components.\n */\nimport Color from \"@khanacademy/wonder-blocks-color\";\n\nexport const wonderBlocksBlue = Color.blue;\nexport const offBlack = Color.offBlack;\nexport const offBlack32 = Color.offBlack32;\nexport const offBlack16 = Color.offBlack16;\nexport const offBlack8 = Color.offBlack8;\n\nexport const iconSizeHeightPx = 48;\nexport const iconSizeWidthPx = 48;\nexport const compactKeypadBorderRadiusPx = 4;\nexport const cursorHandleRadiusPx = 11;\n\n// The amount to multiply the radius by to get the distance from the\n// center to the tip of the cursor handle. The cursor is a circle with\n// one quadrant replace with a square. The hypotenuse of the square is\n// 1.045 times the radius of the circle.\nexport const cursorHandleDistanceMultiplier = 1.045;\n\n// Keypad button colors\nexport const valueGrey = \"#FFF\";\nexport const operatorGrey = \"#FAFAFA\";\nexport const controlGrey = \"#F6F7F7\";\nexport const emptyGrey = \"#F0F1F2\";\n\n// Constants defining any borders between elements in the keypad.\nexport const innerBorderColor = offBlack16;\nexport const innerBorderStyle = \"solid\";\nexport const innerBorderWidthPx = 1;\n\n// The width at which a device is classified as a \"tablet\" for the purposes\n// of the keypad layout.\nexport const tabletCutoffPx = 600;\n\n// The dimensions that define various components in the tree, which may be\n// needed outside of those components in order to determine various layout\n// parameters.\nexport const pageIndicatorHeightPx = 16;\nexport const navigationPadWidthPx = 192;\n// HACK(charlie): This should be injected by webapp somehow.\n// TODO(charlie): Add a link to the webapp location as soon as the footer\n// has settled down.\nexport const toolbarHeightPx = 60;\n","/**\n * Renders the green tear-shaped handle under the cursor.\n */\n\nimport * as React from \"react\";\n\nimport {\n cursorHandleRadiusPx,\n cursorHandleDistanceMultiplier,\n} from \"../common-style\";\n\nconst touchTargetRadiusPx = 2 * cursorHandleRadiusPx;\nconst touchTargetHeightPx = 2 * touchTargetRadiusPx;\nconst touchTargetWidthPx = 2 * touchTargetRadiusPx;\n\nconst cursorRadiusPx = cursorHandleRadiusPx;\nconst cursorHeightPx = cursorHandleDistanceMultiplier * (cursorRadiusPx * 4);\nconst cursorWidthPx = 4 * cursorRadiusPx;\n\ntype Props = {\n animateIntoPosition: boolean;\n onTouchCancel: (arg1: React.TouchEvent<HTMLSpanElement>) => void;\n onTouchEnd: (arg1: React.TouchEvent<HTMLSpanElement>) => void;\n onTouchMove: (arg1: React.TouchEvent<HTMLSpanElement>) => void;\n onTouchStart: (arg1: React.TouchEvent<HTMLSpanElement>) => void;\n visible: boolean;\n x: number;\n y: number;\n};\n\ntype DefaultProps = {\n animateIntoPosition: Props[\"animateIntoPosition\"];\n visible: Props[\"visible\"];\n x: Props[\"x\"];\n y: Props[\"y\"];\n};\n\nclass CursorHandle extends React.Component<Props> {\n static defaultProps: DefaultProps = {\n animateIntoPosition: false,\n visible: false,\n x: 0,\n y: 0,\n };\n\n render(): React.ReactNode {\n const {x, y, animateIntoPosition} = this.props;\n\n const animationStyle = animateIntoPosition\n ? {\n transitionDuration: \"100ms\",\n transitionProperty: \"transform\",\n }\n : {};\n const transformString = `translate(${x}px, ${y}px)`;\n\n const outerStyle = {\n position: \"absolute\",\n // This is essentially webapp's interactiveComponent + 1.\n // TODO(charlie): Pull in those styles somehow to avoid breakages.\n zIndex: 4,\n left: -touchTargetWidthPx / 2,\n top: 0,\n transform: transformString,\n width: touchTargetWidthPx,\n height: touchTargetHeightPx,\n // Touch events that start on the cursor shouldn't be allowed to\n // produce page scrolls.\n touchAction: \"none\",\n ...animationStyle,\n } as const;\n\n return (\n <span\n style={outerStyle}\n onTouchStart={this.props.onTouchStart}\n onTouchMove={this.props.onTouchMove}\n onTouchEnd={this.props.onTouchEnd}\n onTouchCancel={this.props.onTouchCancel}\n >\n <svg\n fill=\"none\"\n width={cursorWidthPx}\n height={cursorHeightPx}\n viewBox={`0 0 ${cursorWidthPx} ${cursorHeightPx}`}\n >\n <filter\n id=\"math-input_cursor\"\n colorInterpolationFilters=\"sRGB\"\n filterUnits=\"userSpaceOnUse\"\n height={cursorHeightPx * 0.87} // ~40\n width={cursorWidthPx * 0.82} // ~36\n x=\"4\"\n y=\"0\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n />\n <feOffset dy=\"4\" />\n <feGaussianBlur stdDeviation=\"4\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.129412 0 0 0 0 0.141176 0 0 0 0 0.172549 0 0 0 0.08 0\"\n />\n <feBlend\n in2=\"BackgroundImageFix\"\n mode=\"normal\"\n result=\"effect1_dropShadow\"\n />\n <feBlend\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow\"\n mode=\"normal\"\n result=\"shape\"\n />\n </filter>\n <g filter=\"url(#math-input_cursor)\">\n <path\n d=\"m22 4-7.07 7.0284c-1.3988 1.3901-2.3515 3.1615-2.7376 5.09-.3861 1.9284-.1883 3.9274.5685 5.7441s2.0385 3.3694 3.6831 4.4619c1.6445 1.0925 3.5781 1.6756 5.556 1.6756s3.9115-.5831 5.556-1.6756c1.6446-1.0925 2.9263-2.6452 3.6831-4.4619s.9546-3.8157.5685-5.7441c-.3861-1.9285-1.3388-3.6999-2.7376-5.09z\"\n fill=\"#1865f2\"\n />\n </g>\n <path\n d=\"m14.9301 10.4841 7.0699-7.06989 7.0699 7.06989.0001.0001c1.3988 1.3984 2.3515 3.1802 2.7376 5.1201s.1883 3.9507-.5685 5.7782c-.7568 1.8274-2.0385 3.3894-3.6831 4.4883-1.6445 1.099-3.5781 1.6855-5.556 1.6855s-3.9115-.5865-5.556-1.6855c-1.6446-1.0989-2.9263-2.6609-3.6831-4.4883-.7568-1.8275-.9546-3.8383-.5685-5.7782s1.3388-3.7217 2.7376-5.1201z\"\n stroke=\"#fff\"\n strokeWidth=\"2\"\n />\n </svg>\n </span>\n );\n }\n}\n\nexport default CursorHandle;\n","/**\n * A gesture recognizer that detects 'drags', crudely defined as either scrolls\n * or touches that move a sufficient distance.\n */\n\n// The 'slop' factor, after which we consider the use to be dragging. The value\n// is taken from the Android SDK. It won't be robust to page zoom and the like,\n// but it should be good enough for our purposes.\nconst touchSlopPx = 8;\n\nclass DragListener {\n _scrollListener: () => void;\n _moveListener: (evt: TouchEvent) => void;\n _endAndCancelListener: (evt: TouchEvent) => void;\n\n constructor(onDrag, initialEvent) {\n // We detect drags in two ways. First, by listening for the window\n // scroll event (we consider any legitimate scroll to be a drag).\n this._scrollListener = () => {\n onDrag();\n };\n\n // And second, by listening for touch moves and tracking the each\n // finger's displacement. This allows us to track, e.g., when the user\n // scrolls within an individual view.\n const touchLocationsById = {};\n for (let i = 0; i < initialEvent.changedTouches.length; i++) {\n const touch = initialEvent.changedTouches[i];\n touchLocationsById[touch.identifier] = [\n touch.clientX,\n touch.clientY,\n ];\n }\n\n this._moveListener = (evt) => {\n for (let i = 0; i < evt.changedTouches.length; i++) {\n const touch = evt.changedTouches[i];\n const initialTouchLocation =\n touchLocationsById[touch.identifier];\n if (initialTouchLocation) {\n const touchLocation = [touch.clientX, touch.clientY];\n const dx = touchLocation[0] - initialTouchLocation[0];\n const dy = touchLocation[1] - initialTouchLocation[1];\n\n const squaredDist = dx * dx + dy * dy;\n const squaredTouchSlop = touchSlopPx * touchSlopPx;\n\n if (squaredDist > squaredTouchSlop) {\n onDrag();\n }\n }\n }\n };\n\n // Clean-up any terminated gestures, since some browsers reuse\n // identifiers.\n this._endAndCancelListener = (evt) => {\n for (let i = 0; i < evt.changedTouches.length; i++) {\n delete touchLocationsById[evt.changedTouches[i].identifier];\n }\n };\n }\n\n attach() {\n window.addEventListener(\"scroll\", this._scrollListener);\n window.addEventListener(\"touchmove\", this._moveListener);\n window.addEventListener(\"touchend\", this._endAndCancelListener);\n window.addEventListener(\"touchcancel\", this._endAndCancelListener);\n }\n\n detach() {\n window.removeEventListener(\"scroll\", this._scrollListener);\n window.removeEventListener(\"touchmove\", this._moveListener);\n window.removeEventListener(\"touchend\", this._endAndCancelListener);\n window.removeEventListener(\"touchcancel\", this._endAndCancelListener);\n }\n}\n\nexport default DragListener;\n","import MathQuill from \"mathquill\";\n\nimport {MathQuillInterface, MathFieldConfig} from \"./mathquill-types\";\n\n// We only need one MathQuill instance (referred to as MQ in the docs)\n// and that contains some MQ constants and the MathField constructor\nexport const mathQuillInstance = MathQuill.getInterface(\n 2,\n) as MathQuillInterface;\n\nfunction createBaseConfig(): MathFieldConfig {\n return {\n // LaTeX commands that, when typed, are immediately replaced by the\n // appropriate symbol. This does not include ln, log, or any of the\n // trig functions; those are always interpreted as commands.\n autoCommands: \"pi theta phi sqrt nthroot\",\n\n // Pop the cursor out of super/subscripts on arithmetic operators\n // or (in)equalities.\n charsThatBreakOutOfSupSub: \"+-*/=<>≠≤≥\",\n\n // Prevent excessive super/subscripts or fractions from being\n // created without operands, e.g. when somebody holds down a key\n supSubsRequireOperand: true,\n\n // The name of this option is somewhat misleading, as tabbing in\n // MathQuill breaks you out of a nested context (fraction/script)\n // if you're in one, but moves focus to the next input if you're\n // not. Spaces (with this option enabled) are just ignored in the\n // latter case.\n //\n // TODO(alex): In order to allow inputting mixed numbers, we will\n // have to accept spaces in certain cases. The desired behavior is\n // still to escape nested contexts if currently in one, but to\n // insert a space if not (we don't expect mixed numbers in nested\n // contexts). We should also limit to one consecutive space.\n spaceBehavesLikeTab: true,\n };\n}\n\n/**\n * Creates a new [MathField](http://docs.mathquill.com/en/latest/Api_Methods/#mqmathfieldhtml_element-config)\n * instance within the given `container`.\n *\n * An optional configuration callback can be provided to customize\n * the created MathField. A default configuration is passed to this\n * callback which can then be adjusted as needed. The configuration\n * returned from this callback is used to create the MathField.\n * This allows callers to do minimal configuration as only configs\n * that vary from the default need to be provided.\n */\nexport function createMathField(\n container: HTMLDivElement | HTMLSpanElement,\n configCallback?: (baseConfig: MathFieldConfig) => MathFieldConfig,\n) {\n const baseConfig = createBaseConfig();\n const config = configCallback ? configCallback(baseConfig) : baseConfig;\n\n return mathQuillInstance.MathField(container, config);\n}\n","import Key from \"../../data/keys\";\n\nexport interface MathQuillInterface {\n L: \"L\";\n R: \"R\";\n MathField: (\n mount: HTMLDivElement | HTMLSpanElement,\n config: MathFieldConfig,\n ) => MathFieldInterface;\n}\n\ntype MathQuillDir = \"L\" | \"R\";\n\nexport type MathFieldConfig = {\n spaceBehavesLikeTab?: boolean;\n leftRightIntoCmdGoes?: string;\n restrictMismatchedBrackets?: boolean;\n sumStartsWithNEquals?: boolean;\n supSubsRequireOperand?: boolean;\n charsThatBreakOutOfSupSub?: string;\n autoSubscriptNumerals?: boolean;\n autoCommands?: string;\n autoOperatorNames?: string;\n maxDepth?: number;\n substituteTextarea?: () => HTMLElement;\n handlers?: {\n edit?: (mathField: MathFieldInterface) => void;\n upOutOf?: (mathField: MathFieldInterface) => void;\n moveOutOf?: (dir: MathQuillDir, mathField: MathFieldInterface) => void;\n };\n};\n\nexport interface MathFieldInterface {\n // Puts the focus on the editable field.\n // http://docs.mathquill.com/en/latest/Api_Methods/#focus\n focus: () => MathFieldInterface;\n // Removes focus from the editable field.\n // http://docs.mathquill.com/en/latest/Api_Methods/#blur\n blur: () => MathFieldInterface;\n // Write LaTeX\n // https://docs.mathquill.com/en/latest/Api_Methods/#writelatex_string\n write: (input: string) => MathFieldInterface;\n // Enter a LaTeX command\n // https://docs.mathquill.com/en/latest/Api_Methods/#cmdlatex_string\n cmd: (input: string) => MathFieldInterface;\n // Simulates keystrokes given a string like \"Ctrl-Home Del\"\n // https://docs.mathquill.com/en/latest/Api_Methods/#keystrokekeys\n keystroke: (input: string) => MathFieldInterface;\n // Simulates typing text, one character at a time\n // https://docs.mathquill.com/en/latest/Api_Methods/#typedtexttext\n typedText: (input: string) => MathFieldInterface;\n // () => {}: Gets the contents as LaTeX\n // (string) => {}: Sets the contents as LaTeX\n // https://docs.mathquill.com/en/latest/Api_Methods/#latex\n latex: (input?: string) => string;\n // Moves the cursor to the end of the mathfield in the direction specified\n // https://docs.mathquill.com/en/latest/Api_Methods/#movetodirenddirection\n moveToDirEnd: (direction: \"L\" | \"R\") => void;\n // Selects the contents\n // https://docs.mathquill.com/en/latest/Api_Methods/#select\n select: () => void;\n // Clears the selection\n // https://docs.mathquill.com/en/latest/Api_Methods/#clearselection\n clearSelection: () => void;\n // This isn't part of the MathQuill public API\n // I don't know what it is and it feels wrong using it\n __controller: any;\n}\n\nexport enum MathFieldActionType {\n WRITE = \"write\",\n CMD = \"cmd\",\n KEYSTROKE = \"keystroke\",\n MQ_END = 0,\n}\n\n// The MathQuill MathField Cursor\n// it's not part of the public API for MathQuill,\n// we reach into the internals to get it\nexport type MathFieldCursor = any;\n\nexport type MathFieldUpdaterCallback = (\n mathField: MathFieldInterface,\n key: Key,\n) => void;\n","import {CursorContext} from \"./cursor-contexts\";\nimport {mathQuillInstance} from \"./mathquill-instance\";\nimport {\n MathFieldActionType,\n MathFieldCursor,\n MathFieldInterface,\n} from \"./mathquill-types\";\n\nconst Numerals = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\nconst GreekLetters = [\"\\\\theta\", \"\\\\pi\"];\nconst Letters = [\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n];\n\n// We only consider numerals, variables, and Greek Letters to be proper\n// leaf nodes.\nconst ValidLeaves = [\n ...Numerals,\n ...GreekLetters,\n ...Letters.map((letter) => letter.toLowerCase()),\n ...Letters.map((letter) => letter.toUpperCase()),\n];\n\nexport function getCursor(mathField: MathFieldInterface): MathFieldCursor {\n return mathField.__controller.cursor;\n}\n\nexport function isFraction(node): boolean {\n return node.jQ && node.jQ.hasClass(\"mq-fraction\");\n}\n\nexport function isNumerator(node): boolean {\n return node.jQ && node.jQ.hasClass(\"mq-numerator\");\n}\n\nexport function isDenominator(node): boolean {\n return node.jQ && node.jQ.hasClass(\"mq-denominator\");\n}\n\nexport function isSubScript(node): boolean {\n // NOTE(charlie): MyScript has a structure whereby its superscripts seem\n // to be represented as a parent node with 'mq-sup-only' containing a\n // single child with 'mq-sup'.\n return (\n node.jQ &&\n (node.jQ.hasClass(\"mq-sub-only\") || node.jQ.hasClass(\"mq-sub\"))\n );\n}\n\nexport function isSuperScript(node): boolean {\n // NOTE(charlie): MyScript has a structure whereby its superscripts seem\n // to be represented as a parent node with 'mq-sup-only' containing a\n // single child with 'mq-sup'.\n return (\n node.jQ &&\n (node.jQ.hasClass(\"mq-sup-only\") || node.jQ.hasClass(\"mq-sup\"))\n );\n}\n\nexport function isParens(node): boolean {\n return node && node.ctrlSeq === \"\\\\left(\";\n}\n\nexport function isLeaf(node): boolean {\n return node && node.ctrlSeq && ValidLeaves.includes(node.ctrlSeq.trim());\n}\n\nexport function isSquareRoot(node): boolean {\n return (\n node.blocks &&\n node.blocks[0].jQ &&\n node.blocks[0].jQ.hasClass(\"mq-sqrt-stem\")\n );\n}\n\nexport function isNthRoot(node): boolean {\n return (\n node.blocks &&\n node.blocks[0].jQ &&\n node.blocks[0].jQ.hasClass(\"mq-nthroot\")\n );\n}\n\nexport function isNthRootIndex(node): boolean {\n return node.jQ && node.jQ.hasClass(\"mq-nthroot\");\n}\n\nexport function isInsideLogIndex(cursor: MathFieldCursor): boolean {\n const grandparent = cursor.parent.parent;\n\n if (grandparent && grandparent.jQ.hasClass(\"mq-supsub\")) {\n const command = maybeFindCommandBeforeParens(grandparent);\n\n if (command && command.name === \"\\\\log\") {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isInsideEmptyNode(cursor: MathFieldCursor): boolean {\n return (\n cursor[mathQuillInstance.L] === MathFieldActionType.MQ_END &&\n cursor[mathQuillInstance.R] === MathFieldActionType.MQ_END\n );\n}\n\nexport function selectNode(node, cursor) {\n cursor.insLeftOf(node);\n cursor.startSelection();\n cursor.insRightOf(node);\n cursor.select();\n cursor.endSelection();\n}\n\n/**\n * Return the start node, end node, and full name of the command of which\n * the initial node is a part, or `null` if the node is not part of a\n * command.\n *\n * @param {node} initialNode - the node to included as part of the command\n * @returns {null|object} - `null` or an object containing the start node\n * (`startNode`), end node (`endNode`), and full\n * name (`name`) of the command\n */\nexport function maybeFindCommand(initialNode) {\n if (!initialNode) {\n return null;\n }\n\n // MathQuill stores commands as separate characters so that\n // users can delete commands one character at a time. We iterate over\n // the nodes from right to left until we hit a sequence starting with a\n // '\\\\', which signifies the start of a command; then we iterate from\n // left to right until we hit a '\\\\left(', which signifies the end of a\n // command. If we encounter any character that doesn't belong in a\n // command, we return null. We match a single character at a time.\n // Ex) ['\\\\l', 'o', 'g ', '\\\\left(', ...]\n const commandCharRegex = /^[a-z]$/;\n const commandStartRegex = /^\\\\[a-z]$/;\n const commandEndSeq = \"\\\\left(\";\n\n // Note: We allowlist the set of valid commands, since relying solely on\n // a command being prefixed with a backslash leads to undesired\n // behavior. For example, Greek symbols, left parentheses, and square\n // roots all get treated as commands.\n const validCommands = [\"\\\\log\", \"\\\\ln\", \"\\\\cos\", \"\\\\sin\", \"\\\\tan\"];\n\n let name = \"\";\n let startNode;\n let endNode;\n\n // Collect the portion of the command from the current node, leftwards\n // until the start of the command.\n let node = initialNode;\n while (node !== 0) {\n const ctrlSeq = node.ctrlSeq.trim();\n if (commandCharRegex.test(ctrlSeq)) {\n name = ctrlSeq + name;\n } else if (commandStartRegex.test(ctrlSeq)) {\n name = ctrlSeq + name;\n startNode = node;\n break;\n } else {\n break;\n }\n\n node = node[mathQuillInstance.L];\n }\n\n // If we hit the start of a command, then grab the rest of it by\n // iterating rightwards to compute the full name of the command, along\n // with its terminal node.\n if (startNode) {\n // Next, iterate from the start to the right.\n node = initialNode[mathQuillInstance.R];\n while (node !== 0) {\n const ctrlSeq = node.ctrlSeq.trim();\n if (commandCharRegex.test(ctrlSeq)) {\n // If we have a single character, add it to the command\n // name.\n name = name + ctrlSeq;\n } else if (ctrlSeq === commandEndSeq) {\n // If we hit the command end delimiter (the left\n // parentheses surrounding its arguments), stop.\n endNode = node;\n break;\n }\n\n node = node[mathQuillInstance.R];\n }\n if (validCommands.includes(name)) {\n return {name, startNode, endNode};\n } else {\n return null;\n }\n } else {\n return null;\n }\n}\n\n/**\n * Return the start node, end node, and full name of the command to the left\n * of `\\\\left(`, or `null` if there is no command.\n *\n * @param {node} leftParenNode - node where .ctrlSeq == `\\\\left(`\n * @returns {null|object} - `null` or an object containing the start node\n * (`startNode`), end node (`endNode`), and full\n * name (`name`) of the command\n */\nexport function maybeFindCommandBeforeParens(leftParenNode) {\n return maybeFindCommand(leftParenNode[mathQuillInstance.L]);\n}\n\nexport function contextForCursor(cursor: MathFieldCursor): CursorContext {\n // First, try to find any fraction to the right, unimpeded.\n let visitor = cursor;\n while (visitor[mathQuillInstance.R] !== MathFieldActionType.MQ_END) {\n if (isFraction(visitor[mathQuillInstance.R])) {\n return CursorContext.BEFORE_FRACTION;\n } else if (!isLeaf(visitor[mathQuillInstance.R])) {\n break;\n }\n visitor = visitor[mathQuillInstance.R];\n }\n\n // If that didn't work, check if the parent or grandparent is a special\n // context, so that we can jump outwards.\n if (isParens(cursor.parent && cursor.parent.parent)) {\n return CursorContext.IN_PARENS;\n } else if (isNumerator(cursor.parent)) {\n return CursorContext.IN_NUMERATOR;\n } else if (isDenominator(cursor.parent)) {\n return CursorContext.IN_DENOMINATOR;\n } else if (isSubScript(cursor.parent)) {\n return CursorContext.IN_SUB_SCRIPT;\n } else if (isSuperScript(cursor.parent)) {\n return CursorContext.IN_SUPER_SCRIPT;\n } else {\n return CursorContext.NONE;\n }\n}\n","import {\n isFraction,\n isSquareRoot,\n isNthRoot,\n isNthRootIndex,\n isInsideLogIndex,\n isInsideEmptyNode,\n selectNode,\n getCursor,\n maybeFindCommandBeforeParens,\n} from \"../input/mathquill-helpers\";\nimport {mathQuillInstance} from \"../input/mathquill-instance\";\nimport {\n MathFieldActionType,\n MathFieldInterface,\n MathFieldCursor,\n} from \"../input/mathquill-types\";\n\nfunction handleBackspaceInNthRoot(\n mathField: MathFieldInterface,\n cursor: MathFieldCursor,\n) {\n const isAtLeftEnd =\n cursor[mathQuillInstance.L] === MathFieldActionType.MQ_END;\n\n const isRootEmpty = isInsideEmptyNode(cursor.parent.parent.blocks[0].ends);\n\n if (isAtLeftEnd) {\n selectNode(cursor.parent.parent, cursor);\n\n if (isRootEmpty) {\n mathField.keystroke(\"Backspace\");\n }\n } else {\n mathField.keystroke(\"Backspace\");\n }\n}\n\nfunction handleBackspaceInRootIndex(\n mathField: MathFieldInterface,\n cursor: MathFieldCursor,\n) {\n if (isInsideEmptyNode(cursor)) {\n // When deleting the index in a nthroot, we change from the nthroot\n // to a sqrt, e.g. \\sqrt[|]{35x-5} => |\\sqrt{35x-5}. If there's no\n // content under the root, then we delete the whole thing.\n\n const grandparent = cursor.parent.parent;\n const latex = grandparent.latex();\n const reinsertionPoint = grandparent[mathQuillInstance.L];\n\n selectNode(grandparent, cursor);\n\n const rootIsEmpty = grandparent.blocks[1].jQ.text() === \"\";\n\n if (rootIsEmpty) {\n // If there is not content under the root then simply delete\n // the whole thing.\n mathField.keystroke(\"Backspace\");\n } else {\n // Replace the nthroot with a sqrt if there was content under\n // the root.\n\n // Start by deleting the selection.\n mathField.keystroke(\"Backspace\");\n\n // Replace the nth-root with a sqrt.\n mathField.write(latex.replace(/^\\\\sqrt\\[\\]/, \"\\\\sqrt\"));\n\n // Adjust the cursor to be to the left the sqrt.\n if (reinsertionPoint === MathFieldActionType.MQ_END) {\n mathField.moveToDirEnd(mathQuillInstance.L);\n } else {\n cursor.insRightOf(reinsertionPoint);\n }\n }\n } else {\n if (cursor[mathQuillInstance.L] !== MathFieldActionType.MQ_END) {\n // If the cursor is not at the leftmost position inside the\n // root's index, delete a character.\n mathField.keystroke(\"Backspace\");\n } else {\n // TODO(kevinb) verify that we want this behavior after testing\n // Do nothing because we haven't completely deleted the\n // index of the radical.\n }\n }\n}\n\nfunction handleBackspaceInLogIndex(\n mathField: MathFieldInterface,\n cursor: MathFieldCursor,\n) {\n if (isInsideEmptyNode(cursor)) {\n const grandparent = cursor.parent.parent;\n const command = maybeFindCommandBeforeParens(grandparent);\n\n cursor.insLeftOf(command?.startNode);\n cursor.startSelection();\n\n if (grandparent[mathQuillInstance.R] !== MathFieldActionType.MQ_END) {\n cursor.insRightOf(grandparent[mathQuillInstance.R]);\n } else {\n cursor.insRightOf(grandparent);\n }\n\n cursor.select();\n cursor.endSelection();\n\n const isLogBodyEmpty =\n grandparent[mathQuillInstance.R].contentjQ.text() === \"\";\n\n if (isLogBodyEmpty) {\n // If there's no content inside the log's parens then delete the\n // whole thing.\n mathField.keystroke(\"Backspace\");\n }\n } else {\n mathField.keystroke(\"Backspace\");\n }\n}\n\nfunction handleBackspaceOutsideParens(cursor: MathFieldCursor) {\n // In this case the node with '\\\\left(' for its ctrlSeq\n // is the parent of the expression contained within the\n // parentheses.\n //\n // Handle selecting an expression before deleting:\n // (x+1)| => |(x+1)|\n // \\log(x+1)| => |\\log(x+1)|\n\n const leftNode = cursor[mathQuillInstance.L];\n const rightNode = cursor[mathQuillInstance.R];\n const command = maybeFindCommandBeforeParens(leftNode);\n\n if (command && command.startNode) {\n // There's a command before the parens so we select it as well as\n // the parens.\n cursor.insLeftOf(command.startNode);\n cursor.startSelection();\n if (rightNode === MathFieldActionType.MQ_END) {\n cursor.insAtRightEnd(cursor.parent);\n } else {\n cursor.insLeftOf(rightNode);\n }\n cursor.select();\n cursor.endSelection();\n } else {\n cursor.startSelection();\n cursor.insLeftOf(leftNode); // left of \\\\left(\n cursor.select();\n cursor.endSelection();\n }\n}\n\nfunction handleBackspaceInsideParens(\n mathField: MathFieldInterface,\n cursor: MathFieldCursor,\n) {\n // Handle situations when the cursor is inside parens or a\n // command that uses parens, e.g. \\log() or \\tan()\n //\n // MathQuill represents log(x+1) in roughly the following way\n // [l, o, g, \\\\left[parent:[x, +, 1]]]\n //\n // If the cursor is inside the parentheses it's next to one of:\n // x, +, or 1. This makes sub_sub_expr its parent and sub_expr\n // it's parent.\n //\n // Interestingly parent doesn't have any nodes to the left or\n // right of it (even though the corresponding DOM node has\n // ( and ) characters on either side.\n //\n // The grandparent's ctrlSeq is `\\\\left(`. The `\\\\right)` isn't\n // stored anywhere. NOTE(kevinb): I believe this is because\n // MathQuill knows what the close paren should be and does the\n // right thing at render time.\n //\n // This conditional branch handles the following cases:\n // - \\log(x+1|) => \\log(x+|)\n // - \\log(|x+1) => |\\log(x+1)|\n // - \\log(|) => |\n\n if (cursor[mathQuillInstance.L] !== MathFieldActionType.MQ_END) {\n // This command contains math and there's some math to\n // the left of the cursor that we should delete normally\n // before doing anything special.\n mathField.keystroke(\"Backspace\");\n return;\n }\n\n const grandparent = cursor.parent.parent;\n\n // If the cursors is inside the parens at the start but the command\n // has a subscript as is the case in log_n then move the cursor into\n // the subscript, e.g. \\log_{5}(|x+1) => \\log_{5|}(x+1)\n\n if (grandparent[mathQuillInstance.L].sub) {\n // if there is a subscript\n if (grandparent[mathQuillInstance.L].sub.jQ.text()) {\n // and it contains text\n // move the cursor to the right end of the subscript\n cursor.insAtRightEnd(grandparent[mathQuillInstance.L].sub);\n return;\n }\n }\n\n // Determine if the parens are empty before we modify the\n // cursor's position.\n const isEmpty = isInsideEmptyNode(cursor);\n\n // Insert the cursor to the left of the command if there is one\n // or before the '\\\\left(` if there isn't\n const command = maybeFindCommandBeforeParens(grandparent);\n\n cursor.insLeftOf((command && command.startNode) || grandparent);\n cursor.startSelection();\n cursor.insRightOf(grandparent);\n cursor.select();\n cursor.endSelection();\n\n // Delete the selection, but only if the parens were empty to\n // begin with.\n if (isEmpty) {\n mathField.keystroke(\"Backspace\");\n }\n}\n\nfunction handleBackspaceAfterLigaturedSymbol(mathField: MathFieldInterface) {\n mathField.keystroke(\"Backspace\");\n mathField.keystroke(\"Backspace\");\n}\n\n/**\n * Selects and deletes part of the expression based on the cursor location.\n * See inline comments for precise behavior of different cases.\n */\nfunction handleBackspace(mathField: MathFieldInterface) {\n const cursor = getCursor(mathField);\n if (!cursor.selection) {\n const parent = cursor.parent;\n const grandparent = parent.parent;\n const leftNode = cursor[mathQuillInstance.L];\n\n if (isFraction(leftNode)) {\n selectNode(leftNode, cursor);\n } else if (isSquareRoot(leftNode)) {\n selectNode(leftNode, cursor);\n } else if (isNthRoot(leftNode)) {\n selectNode(leftNode, cursor);\n } else if (isNthRootIndex(parent)) {\n handleBackspaceInRootIndex(mathField, cursor);\n } else if (leftNode.ctrlSeq === \"\\\\left(\") {\n handleBackspaceOutsideParens(cursor);\n } else if (grandparent.ctrlSeq === \"\\\\left(\") {\n handleBackspaceInsideParens(mathField, cursor);\n } else if (isInsideLogIndex(cursor)) {\n handleBackspaceInLogIndex(mathField, cursor);\n } else if (\n leftNode.ctrlSeq === \"\\\\ge \" ||\n leftNode.ctrlSeq === \"\\\\le \"\n ) {\n handleBackspaceAfterLigaturedSymbol(mathField);\n } else if (\n isNthRoot(grandparent) &&\n leftNode === MathFieldActionType.MQ_END\n ) {\n handleBackspaceInNthRoot(mathField, cursor);\n } else {\n mathField.keystroke(\"Backspace\");\n }\n } else {\n mathField.keystroke(\"Backspace\");\n }\n}\n\nexport default handleBackspace;\n","/**\n * Constants that are shared between multiple files.\n */\n\nexport enum KeypadType {\n FRACTION = \"FRACTION\",\n EXPRESSION = \"EXPRESSION\",\n}\n\nexport const KeyTypes = [\n \"EMPTY\",\n // For numerals, variables, and any other characters that themselves\n // compose 'values'.\n \"VALUE\",\n // For buttons that insert or adjust math in an input.\n \"OPERATOR\",\n // For buttons that move the cursor in an input (including via\n // deletion).\n \"INPUT_NAVIGATION\",\n // For buttons that modify the broader keypad state (e.g., by changing\n // the visible pane).\n \"KEYPAD_NAVIGATION\",\n // For buttons that house multiple buttons and have no action\n // themselves.\n \"MANY\",\n // For the echo animation that appears on press.\n \"ECHO\",\n];\nexport type KeyType = typeof KeyTypes[number];\n\nexport enum DeviceOrientation {\n LANDSCAPE = \"LANDSCAPE\",\n PORTRAIT = \"PORTRAIT\",\n}\n\nexport enum DeviceType {\n PHONE = \"PHONE\",\n TABLET = \"TABLET\",\n}\n\nexport enum LayoutMode {\n FULLSCREEN = \"FULLSCREEN\",\n COMPACT = \"COMPACT\",\n}\n\nexport enum BorderDirection {\n LEFT = \"LEFT\",\n BOTTOM = \"BOTTOM\",\n}\n\nexport const BorderStyles: {\n [style: string]: ReadonlyArray<BorderDirection>;\n} = {\n LEFT: [BorderDirection.LEFT],\n BOTTOM: [BorderDirection.BOTTOM],\n ALL: [BorderDirection.LEFT, BorderDirection.BOTTOM],\n NONE: [],\n};\n\nexport enum IconType {\n MATH = \"MATH\",\n SVG = \"SVG\",\n TEXT = \"TEXT\",\n}\n\nexport enum DecimalSeparator {\n COMMA = \"COMMA\",\n PERIOD = \"PERIOD\",\n}\n\nexport enum EchoAnimationType {\n SLIDE_AND_FADE = \"SLIDE_AND_FADE\",\n FADE_ONLY = \"FADE_ONLY\",\n LONG_FADE_ONLY = \"LONG_FADE_ONLY\",\n}\n","import {getDecimalSeparator} from \"@khanacademy/wonder-blocks-i18n\";\n\nimport {DecimalSeparator} from \"./enums\";\n\n// NOTES(kevinb):\n// - In order to get the correct decimal separator for the current locale,\n// the locale must bet set using `setLocale(kaLocale)` which can be\n// imported from wonder-blocks-i18n.\n// - Some languages/locales use different decimal separators than the ones\n// listed here. Much of the Arab world uses U+066C.\nexport const decimalSeparator: string =\n getDecimalSeparator() === \",\"\n ? DecimalSeparator.COMMA\n : DecimalSeparator.PERIOD;\n","import Key from \"../../data/keys\";\nimport {\n maybeFindCommand,\n maybeFindCommandBeforeParens,\n getCursor,\n} from \"../input/mathquill-helpers\";\nimport {mathQuillInstance} from \"../input/mathquill-instance\";\nimport {\n MathFieldInterface,\n MathFieldActionType,\n MathFieldCursor,\n} from \"../input/mathquill-types\";\n\nfunction handleLeftArrow(\n mathField: MathFieldInterface,\n cursor: MathFieldCursor,\n) {\n // If we're inside a function, and just after the left parentheses, we\n // need to skip the entire function name, rather than move the cursor\n // inside of it. For example, when hitting left from within the\n // parentheses in `cos()`, we want to place the cursor to the left of\n // the entire expression, rather than between the `s` and the left\n // parenthesis.\n // From the cursor's perspective, this requires that our left node is\n // the ActionType.MQ_END node, that our grandparent is the left parenthesis, and\n // the nodes to the left of our grandparent comprise a valid function\n // name.\n if (cursor[mathQuillInstance.L] === MathFieldActionType.MQ_END) {\n const parent = cursor.parent;\n const grandparent = parent.parent;\n if (grandparent.ctrlSeq === \"\\\\left(\") {\n const command = maybeFindCommandBeforeParens(grandparent);\n if (command) {\n cursor.insLeftOf(command.startNode);\n return;\n }\n }\n }\n\n // Otherwise, we default to the standard MathQull left behavior.\n mathField.keystroke(\"Left\");\n}\n\nfunction handleRightArrow(\n mathField: MathFieldInterface,\n cursor: MathFieldCursor,\n) {\n const command = maybeFindCommand(cursor[mathQuillInstance.R]);\n if (command) {\n // Similarly, if a function is to our right, then we need to place\n // the cursor at the start of its parenthetical content, which is\n // done by putting it to the left of ites parentheses and then\n // moving right once.\n cursor.insLeftOf(command.endNode);\n mathField.keystroke(\"Right\");\n } else {\n // Otherwise, we default to the standard MathQull right behavior.\n mathField.keystroke(\"Right\");\n }\n}\n\nexport default function handleArrow(mathField: MathFieldInterface, key: Key) {\n const cursor = getCursor(mathField);\n\n if (key === \"LEFT\") {\n handleLeftArrow(mathField, cursor);\n } else if (key === \"RIGHT\") {\n handleRightArrow(mathField, cursor);\n }\n}\n","import Key from \"../../data/keys\";\nimport {getCursor} from \"../input/mathquill-helpers\";\nimport {mathQuillInstance} from \"../input/mathquill-instance\";\nimport {\n MathFieldInterface,\n MathFieldActionType,\n} from \"../input/mathquill-types\";\n\nconst ArithmeticOperators = [\"+\", \"-\", \"\\\\cdot\", \"\\\\times\", \"\\\\div\"];\nconst EqualityOperators = [\"=\", \"\\\\neq\", \"<\", \"\\\\leq\", \">\", \"\\\\geq\"];\n\nexport default function handleExponent(\n mathField: MathFieldInterface,\n key: Key,\n) {\n const cursor = getCursor(mathField);\n // If there's an invalid operator preceding the cursor (anything that\n // knowingly cannot be raised to a power), add an empty set of\n // parentheses and apply the exponent to that.\n const invalidPrefixes = [...ArithmeticOperators, ...EqualityOperators];\n\n const precedingNode = cursor[mathQuillInstance.L];\n const shouldPrefixWithParens =\n precedingNode === MathFieldActionType.MQ_END ||\n invalidPrefixes.includes(precedingNode.ctrlSeq.trim());\n if (shouldPrefixWithParens) {\n mathField.write(\"\\\\left(\\\\right)\");\n }\n\n // Insert the appropriate exponent operator.\n switch (key) {\n case \"EXP\":\n mathField.cmd(\"^\");\n break;\n\n case \"EXP_2\":\n case \"EXP_3\":\n mathField.write(`^${key === \"EXP_2\" ? 2 : 3}`);\n\n // If we enter a square or a cube, we should leave the cursor\n // within the newly inserted parens, if they exist. This takes\n // exactly four left strokes, since the cursor by default would\n // end up to the right of the exponent.\n if (shouldPrefixWithParens) {\n mathField.keystroke(\"Left\");\n mathField.keystroke(\"Left\");\n mathField.keystroke(\"Left\");\n mathField.keystroke(\"Left\");\n }\n break;\n\n default:\n throw new Error(`Invalid exponent key: ${key}`);\n }\n}\n","import Key from \"../../data/keys\";\nimport {CursorContext} from \"../input/cursor-contexts\";\nimport {\n isFraction,\n isParens,\n contextForCursor,\n getCursor,\n} from \"../input/mathquill-helpers\";\nimport {mathQuillInstance} from \"../input/mathquill-instance\";\nimport {\n MathFieldInterface,\n MathFieldActionType,\n} from \"../input/mathquill-types\";\n\nconst KeysForJumpContext = {\n [CursorContext.IN_PARENS]: \"JUMP_OUT_PARENTHESES\",\n [CursorContext.IN_SUPER_SCRIPT]: \"JUMP_OUT_EXPONENT\",\n [CursorContext.IN_SUB_SCRIPT]: \"JUMP_OUT_BASE\",\n [CursorContext.BEFORE_FRACTION]: \"JUMP_INTO_NUMERATOR\",\n [CursorContext.IN_NUMERATOR]: \"JUMP_OUT_NUMERATOR\",\n [CursorContext.IN_DENOMINATOR]: \"JUMP_OUT_DENOMINATOR\",\n};\n\n/**\n * Advances the cursor to the next logical position.\n */\nfunction handleJumpOut(mathField: MathFieldInterface, key: Key): void {\n const cursor = getCursor(mathField);\n const context = contextForCursor(cursor);\n\n // Validate that the current cursor context matches the key's intent.\n if (KeysForJumpContext[context] !== key) {\n // If we don't have a valid cursor context, yet the user was able\n // to trigger a jump-out key, that's a broken invariant. Rather\n // than throw an error (which would kick the user out of the\n // exercise), we do nothing, as a fallback strategy. The user can\n // still move the cursor manually.\n return;\n }\n\n switch (context) {\n case CursorContext.IN_PARENS:\n // Insert at the end of the parentheses, and then navigate right\n // once more to get 'beyond' the parentheses.\n cursor.insRightOf(cursor.parent.parent);\n break;\n\n case CursorContext.BEFORE_FRACTION:\n // Find the nearest fraction to the right of the cursor.\n let fractionNode;\n let visitor = cursor;\n while (\n visitor[mathQuillInstance.R] !== MathFieldActionType.MQ_END\n ) {\n if (isFraction(visitor[mathQuillInstance.R])) {\n fractionNode = visitor[mathQuillInstance.R];\n }\n visitor = visitor[mathQuillInstance.R];\n }\n\n // Jump into it!\n cursor.insLeftOf(fractionNode);\n mathField.keystroke(\"Right\");\n break;\n\n case CursorContext.IN_NUMERATOR:\n // HACK(charlie): I can't find a better way to do this. The goal\n // is to place the cursor at the start of the matching\n // denominator. So, we identify the appropriate node, and\n // continue rightwards until we find ourselves inside of it.\n // It's possible that there are cases in which we don't reach\n // the denominator, though I can't think of any.\n const siblingDenominator = cursor.parent.parent.blocks[1];\n while (cursor.parent !== siblingDenominator) {\n mathField.keystroke(\"Right\");\n }\n break;\n\n case CursorContext.IN_DENOMINATOR:\n cursor.insRightOf(cursor.parent.parent);\n break;\n\n case CursorContext.IN_SUB_SCRIPT:\n // Insert just beyond the superscript.\n cursor.insRightOf(cursor.parent.parent);\n\n // Navigate right once more, if we're right before parens. This\n // is to handle the standard case in which the subscript is the\n // base of a custom log.\n if (isParens(cursor[mathQuillInstance.R])) {\n mathField.keystroke(\"Right\");\n }\n break;\n\n case CursorContext.IN_SUPER_SCRIPT:\n // Insert just beyond the superscript.\n cursor.insRightOf(cursor.parent.parent);\n break;\n\n default:\n throw new Error(\n `Attempted to 'Jump Out' from node, but found no ` +\n `appropriate cursor context: ${context}`,\n );\n }\n}\n\nexport default handleJumpOut;\n","import Key from \"../../data/keys\";\nimport {DecimalSeparator} from \"../../enums\";\nimport {decimalSeparator} from \"../../utils\";\nimport {mathQuillInstance} from \"../input/mathquill-instance\";\nimport {\n MathFieldInterface,\n MathFieldUpdaterCallback,\n} from \"../input/mathquill-types\";\n\nimport handleArrow from \"./handle-arrow\";\nimport handleExponent from \"./handle-exponent\";\nimport handleJumpOut from \"./handle-jump-out\";\n\nenum ActionType {\n WRITE = \"write\",\n CMD = \"cmd\",\n KEYSTROKE = \"keystroke\",\n MQ_END = 0,\n}\n\nconst decimalSymbol = decimalSeparator === DecimalSeparator.COMMA ? \",\" : \".\";\n\nfunction buildGenericCallback(\n str: string,\n type: ActionType = ActionType.WRITE,\n): MathFieldUpdaterCallback {\n return function (mathQuill: MathFieldInterface) {\n switch (type) {\n case ActionType.WRITE: {\n mathQuill.write(str);\n return;\n }\n case ActionType.CMD: {\n mathQuill.cmd(str);\n return;\n }\n case ActionType.KEYSTROKE: {\n mathQuill.keystroke(str);\n return;\n }\n }\n };\n}\n\nfunction buildNormalFunctionCallback(command: string) {\n return function (mathField: MathFieldInterface) {\n mathField.write(`\\\\${command}\\\\left(\\\\right)`);\n mathField.keystroke(\"Left\");\n };\n}\n\nconst keyToMathquillMap: Record<Key, MathFieldUpdaterCallback> = {\n EXP: handleExponent,\n EXP_2: handleExponent,\n EXP_3: handleExponent,\n\n JUMP_OUT_PARENTHESES: handleJumpOut,\n JUMP_OUT_EXPONENT: handleJumpOut,\n JUMP_OUT_BASE: handleJumpOut,\n JUMP_INTO_NUMERATOR: handleJumpOut,\n JUMP_OUT_NUMERATOR: handleJumpOut,\n JUMP_OUT_DENOMINATOR: handleJumpOut,\n\n LEFT: handleArrow,\n RIGHT: handleArrow,\n\n LOG: buildNormalFunctionCallback(\"log\"),\n LN: buildNormalFunctionCallback(\"ln\"),\n SIN: buildNormalFunctionCallback(\"sin\"),\n COS: buildNormalFunctionCallback(\"cos\"),\n TAN: buildNormalFunctionCallback(\"tan\"),\n\n CDOT: buildGenericCallback(\"\\\\cdot\"),\n DECIMAL: buildGenericCallback(decimalSymbol),\n DIVIDE: buildGenericCallback(\"\\\\div\"),\n EQUAL: buildGenericCallback(\"=\"),\n GEQ: buildGenericCallback(\"\\\\geq\"),\n GT: buildGenericCallback(\">\"),\n LEQ: buildGenericCallback(\"\\\\leq\"),\n LT: buildGenericCallback(\"<\"),\n MINUS: buildGenericCallback(\"-\"),\n NEGATIVE: buildGenericCallback(\"-\"),\n NEQ: buildGenericCallback(\"\\\\neq\"),\n PERCENT: buildGenericCallback(\"%\"),\n PERIOD: buildGenericCallback(\".\"),\n PLUS: buildGenericCallback(\"+\"),\n TIMES: buildGenericCallback(\"\\\\times\"),\n\n // The `FRAC_EXCLUSIVE` variant is handled manually, since we may need to do\n // some additional navigation depending on the cursor position.\n FRAC_INCLUSIVE: buildGenericCallback(\"/\", ActionType.CMD),\n FRAC: buildGenericCallback(\"\\\\frac\", ActionType.CMD),\n LEFT_PAREN: buildGenericCallback(\"(\", ActionType.CMD),\n RIGHT_PAREN: buildGenericCallback(\")\", ActionType.CMD),\n SQRT: buildGenericCallback(\"sqrt\", ActionType.CMD),\n PHI: buildGenericCallback(\"\\\\phi\", ActionType.CMD),\n PI: buildGenericCallback(\"pi\", ActionType.CMD),\n THETA: buildGenericCallback(\"theta\", ActionType.CMD),\n RADICAL: buildGenericCallback(\"nthroot\", ActionType.CMD),\n\n BACKSPACE: buildGenericCallback(\"Backspace\", ActionType.KEYSTROKE),\n UP: buildGenericCallback(\"Up\", ActionType.KEYSTROKE),\n DOWN: buildGenericCallback(\"Down\", ActionType.KEYSTROKE),\n\n CUBE_ROOT: (mathQuill) => {\n mathQuill.write(\"\\\\sqrt[3]{}\");\n mathQuill.keystroke(\"Left\"); // under the root\n },\n\n FRAC_EXCLUSIVE: (mathQuill) => {\n const cursor = mathQuill.__controller.cursor;\n // If there's nothing to the left of the cursor, then we want to\n // leave the cursor to the left of the fraction after creating it.\n const shouldNavigateLeft =\n cursor[mathQuillInstance.L] === ActionType.MQ_END;\n mathQuill.cmd(\"\\\\frac\");\n if (shouldNavigateLeft) {\n mathQuill.keystroke(\"Left\");\n }\n },\n\n LOG_B: (mathQuill) => {\n mathQuill.typedText(\"log_\");\n mathQuill.keystroke(\"Right\");\n mathQuill.typedText(\"(\");\n mathQuill.keystroke(\"Left\");\n mathQuill.keystroke(\"Left\");\n },\n\n LOG_N: (mathQuill) => {\n mathQuill.write(\"log_{ }\\\\left(\\\\right)\");\n mathQuill.keystroke(\"Left\"); // into parentheses\n mathQuill.keystroke(\"Left\"); // out of parentheses\n mathQuill.keystroke(\"Left\"); // into index\n },\n\n NTHROOT3: (mathQuill) => {\n mathQuill.typedText(\"nthroot3\");\n mathQuill.keystroke(\"Right\");\n },\n\n POW: (mathQuill) => {\n const contents = mathQuill.latex();\n mathQuill.typedText(\"^\");\n\n // If the input hasn't changed (for example, if we're\n // attempting to add an exponent on an empty input or an empty\n // denominator), insert our own \"a^b\"\n if (mathQuill.latex() === contents) {\n mathQuill.typedText(\"a^b\");\n }\n },\n\n // These need to be overwritten by the consumer\n // if they're going to be used\n DISMISS: () => {},\n NOOP: () => {},\n MANY: () => {},\n\n NUM_0: buildGenericCallback(\"0\"),\n NUM_1: buildGenericCallback(\"1\"),\n NUM_2: buildGenericCallback(\"2\"),\n NUM_3: buildGenericCallback(\"3\"),\n NUM_4: buildGenericCallback(\"4\"),\n NUM_5: buildGenericCallback(\"5\"),\n NUM_6: buildGenericCallback(\"6\"),\n NUM_7: buildGenericCallback(\"7\"),\n NUM_8: buildGenericCallback(\"8\"),\n NUM_9: buildGenericCallback(\"9\"),\n a: buildGenericCallback(\"a\"),\n b: buildGenericCallback(\"b\"),\n c: buildGenericCallback(\"c\"),\n d: buildGenericCallback(\"d\"),\n e: buildGenericCallback(\"e\"),\n f: buildGenericCallback(\"f\"),\n g: buildGenericCallback(\"g\"),\n h: buildGenericCallback(\"h\"),\n i: buildGenericCallback(\"i\"),\n j: buildGenericCallback(\"j\"),\n k: buildGenericCallback(\"k\"),\n l: buildGenericCallback(\"l\"),\n m: buildGenericCallback(\"m\"),\n n: buildGenericCallback(\"n\"),\n o: buildGenericCallback(\"o\"),\n p: buildGenericCallback(\"p\"),\n q: buildGenericCallback(\"q\"),\n r: buildGenericCallback(\"r\"),\n s: buildGenericCallback(\"s\"),\n t: buildGenericCallback(\"t\"),\n u: buildGenericCallback(\"u\"),\n v: buildGenericCallback(\"v\"),\n w: buildGenericCallback(\"w\"),\n x: buildGenericCallback(\"x\"),\n y: buildGenericCallback(\"y\"),\n z: buildGenericCallback(\"z\"),\n A: buildGenericCallback(\"A\"),\n B: buildGenericCallback(\"B\"),\n C: buildGenericCallback(\"C\"),\n D: buildGenericCallback(\"D\"),\n E: buildGenericCallback(\"E\"),\n F: buildGenericCallback(\"F\"),\n G: buildGenericCallback(\"G\"),\n H: buildGenericCallback(\"H\"),\n I: buildGenericCallback(\"I\"),\n J: buildGenericCallback(\"J\"),\n K: buildGenericCallback(\"K\"),\n L: buildGenericCallback(\"L\"),\n M: buildGenericCallback(\"M\"),\n N: buildGenericCallback(\"N\"),\n O: buildGenericCallback(\"O\"),\n P: buildGenericCallback(\"P\"),\n Q: buildGenericCallback(\"Q\"),\n R: buildGenericCallback(\"R\"),\n S: buildGenericCallback(\"S\"),\n T: buildGenericCallback(\"T\"),\n U: buildGenericCallback(\"U\"),\n V: buildGenericCallback(\"V\"),\n W: buildGenericCallback(\"W\"),\n X: buildGenericCallback(\"X\"),\n Y: buildGenericCallback(\"Y\"),\n Z: buildGenericCallback(\"Z\"),\n};\n\nexport default keyToMathquillMap;\n","// Notes about MathQuill\n//\n// MathQuill's stores its layout as nested linked lists. Each node in the\n// list has MQ.L '-1' and MQ.R '1' properties that define links to\n// the left and right nodes respectively. They also have\n//\n// ctrlSeq: contains the latex code snippet that defines that node.\n// jQ: jQuery object for the DOM node(s) for this MathQuill node.\n// ends: pointers to the nodes at the ends of the container.\n// parent: parent node.\n// blocks: an array containing one or more nodes that make up the node.\n// sub?: subscript node if there is one as is the case in log_n\n//\n// All of the code below is super fragile. Please be especially careful\n// when upgrading MathQuill.\n\nimport $ from \"jquery\";\n\nimport Key from \"../../data/keys\";\nimport {Cursor} from \"../../types\";\nimport handleBackspace from \"../key-handlers/handle-backspace\";\nimport keyTranslator from \"../key-handlers/key-translator\";\n\nimport {\n getCursor,\n contextForCursor,\n maybeFindCommand,\n} from \"./mathquill-helpers\";\nimport {createMathField, mathQuillInstance} from \"./mathquill-instance\";\nimport {\n MathFieldInterface,\n MathFieldCursor,\n MathFieldUpdaterCallback,\n} from \"./mathquill-types\";\n\nconst mobileKeyTranslator: Record<Key, MathFieldUpdaterCallback> = {\n ...keyTranslator,\n // note(Matthew): our mobile backspace logic is really complicated\n // and for some reason doesn't really work in the desktop experience.\n // So we default to the basic backspace functionality in the\n // key translator and overwrite it with the complicated logic here\n // until we can unify the experiences (if we even want to).\n // https://khanacademy.atlassian.net/browse/LC-906\n BACKSPACE: handleBackspace,\n};\n\n/**\n * This file contains a wrapper around MathQuill so that we can provide a\n * more regular interface for the functionality we need while insulating us\n * from MathQuill changes.\n */\nclass MathWrapper {\n mathField: MathFieldInterface; // MathQuill MathField input\n callbacks: any;\n\n constructor(element, callbacks = {}) {\n this.mathField = createMathField(element, () => {\n return {\n // use a span instead of a textarea so that we don't bring up the\n // native keyboard on mobile when selecting the input\n substituteTextarea: function () {\n return document.createElement(\"span\");\n },\n };\n });\n this.callbacks = callbacks;\n }\n\n focus() {\n // HACK(charlie): We shouldn't reaching into MathQuill internals like\n // this, but it's the easiest way to allow us to manage the focus state\n // ourselves.\n const controller = this.mathField.__controller;\n controller.cursor.show();\n\n // Set MathQuill's internal state to reflect the focus, otherwise it\n // will consistently try to hide the cursor on key-press and introduce\n // layout jank.\n controller.blurred = false;\n }\n\n blur() {\n const controller = this.mathField.__controller;\n controller.cursor.hide();\n controller.blurred = true;\n }\n\n /**\n * Handle a key press and return the resulting cursor state.\n *\n * @param {Key} key - an enum representing the key that was pressed\n * @returns {object} a cursor object, consisting of a cursor context\n */\n pressKey(key: Key): Cursor {\n const cursor = this.getCursor();\n const translator = mobileKeyTranslator[key];\n\n if (translator) {\n translator(this.mathField, key);\n }\n\n if (!cursor.selection) {\n // don't show the cursor for selections\n cursor.show();\n }\n\n if (this.callbacks.onSelectionChanged) {\n this.callbacks.onSelectionChanged(cursor.selection);\n }\n\n // NOTE(charlie): It's insufficient to do this as an `edited` handler\n // on the MathField, as that handler isn't triggered on navigation\n // events.\n return {\n context: this.contextForCursor(cursor),\n };\n }\n\n /**\n * Place the cursor beside the node located at the given coordinates.\n *\n * @param {number} x - the x coordinate in the viewport\n * @param {number} y - the y coordinate in the viewport\n * @param {Node} hitNode - the node next to which the cursor should be\n * placed; if provided, the coordinates will be used\n * to determine on which side of the node the cursor\n * should be placed\n */\n setCursorPosition(x: number, y: number, hitNode: HTMLElement) {\n const el = hitNode || document.elementFromPoint(x, y);\n\n if (el) {\n const cursor = this.getCursor();\n\n if (el.hasAttribute(\"mq-root-block\")) {\n // If we're in the empty area place the cursor at the right\n // end of the expression.\n cursor.insAtRightEnd(this.mathField.__controller.root);\n } else {\n // Otherwise place beside the element at x, y.\n const controller = this.mathField.__controller;\n\n const pageX = x - document.body.scrollLeft;\n const pageY = y - document.body.scrollTop;\n controller.seek($(el), pageX, pageY).cursor.startSelection();\n\n // Unless that would leave us mid-command, in which case, we\n // need to adjust and place the cursor inside the parens\n // following the command.\n const command = maybeFindCommand(cursor[mathQuillInstance.L]);\n if (command && command.endNode) {\n // NOTE(charlie): endNode should definitely be \\left(.\n cursor.insLeftOf(command.endNode);\n this.mathField.keystroke(\"Right\");\n }\n }\n\n if (this.callbacks.onCursorMove) {\n this.callbacks.onCursorMove({\n context: this.contextForCursor(cursor),\n });\n }\n }\n }\n\n // note(Matthew): extracted this logic to share it elsewhere,\n // but it's part of the public MathWrapper API\n getCursor() {\n return getCursor(this.mathField);\n }\n\n // note(Matthew): extracted this logic to keep this file focused,\n // but it's part of the public MathWrapper API\n contextForCursor(cursor: MathFieldCursor) {\n return contextForCursor(cursor);\n }\n\n getSelection() {\n return this.getCursor().selection;\n }\n\n getContent() {\n return this.mathField.latex();\n }\n\n setContent(latex: string) {\n this.mathField.latex(latex);\n }\n\n isEmpty() {\n const cursor = this.getCursor();\n return cursor.parent.id === 1 && cursor[1] === 0 && cursor[-1] === 0;\n }\n}\n\nexport default MathWrapper;\n","/**\n * A single function used to scroll a DOM node into view, optionally taking into\n * account that it may be obscured by the custom keypad. The logic makes the\n * strong assumption that the keypad will be anchored to the bottom of the page\n * in calculating its height, as this method may be called before the keypad has\n * animated into view.\n *\n * TODO(charlie): Move this scroll logic out of our components and into a higher\n * level in the component tree--perhaps even into webapp, beyond Perseus.\n */\n\nimport {toolbarHeightPx} from \"../common-style\";\n\nexport const scrollIntoView = (containerNode, keypadNode) => {\n // TODO(charlie): There's no need for us to be reading the keypad bounds\n // here, since they're pre-determined by logic in the store. We should\n // instead pass around an object that knows the bounds.\n const containerBounds = containerNode.getBoundingClientRect();\n const containerBottomPx = containerBounds.bottom;\n const containerTopPx = containerBounds.top;\n\n // Get the element that scrolls the document.\n const scrollNode = document.scrollingElement;\n\n const desiredMarginPx = 16;\n\n if (keypadNode) {\n // NOTE(charlie): We can't use the bounding rect of the keypad,\n // as it is likely in the process of animating in. Instead, to\n // calculate its top, we make the strong assumption that the\n // keypad will end up anchored at the bottom of the page, but above the\n // toolbar, and use its height, which is known at this point. Note that,\n // in the native apps (where the toolbar is rendered natively), this\n // will result in us leaving excess space between the input and the\n // keypad, but that seems okay.\n const pageHeightPx = window.innerHeight;\n const keypadHeightPx = keypadNode.clientHeight;\n const keypadTopPx = pageHeightPx - (keypadHeightPx + toolbarHeightPx);\n\n if (containerBottomPx > keypadTopPx) {\n // If the input would be obscured by the keypad, scroll such that\n // the bottom of the input is just above the top of the keypad,\n // taking care not to scroll the input out of view.\n const scrollOffset = Math.min(\n containerBottomPx - keypadTopPx + desiredMarginPx,\n containerTopPx,\n );\n\n if (scrollNode) {\n scrollNode.scrollTop += scrollOffset;\n }\n return;\n }\n }\n\n // Alternatively, if the input is out of the viewport or nearly out\n // of the viewport, scroll it into view. We can do this regardless\n // of whether the keypad has been provided.\n if (scrollNode && containerTopPx < desiredMarginPx) {\n scrollNode.scrollTop -= containerBounds.height + desiredMarginPx;\n }\n};\n","import Color from \"@khanacademy/wonder-blocks-color\";\nimport * as i18n from \"@khanacademy/wonder-blocks-i18n\";\nimport {entries} from \"@khanacademy/wonder-stuff-core\";\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport {View} from \"../../fake-react-native-web/index\";\nimport {\n cursorHandleRadiusPx,\n cursorHandleDistanceMultiplier,\n wonderBlocksBlue,\n offBlack,\n} from \"../common-style\";\nimport ProvidedKeypad from \"../keypad-legacy/provided-keypad\";\n\nimport CursorHandle from \"./cursor-handle\";\nimport DragListener from \"./drag-listener\";\nimport MathWrapper from \"./math-wrapper\";\nimport {scrollIntoView} from \"./scroll-into-view\";\n\nimport type {Cursor} from \"../../types\";\n\nconst constrainingFrictionFactor = 0.8;\n\ntype Props = {\n keypadElement: ProvidedKeypad;\n onBlur: () => void;\n onChange: (value: string, callback: any) => void;\n onFocus: () => void;\n style: any;\n value: string;\n};\n\ntype DefaultProps = {\n style: Props[\"style\"];\n value: Props[\"value\"];\n};\n\ntype HandleState = {\n animateIntoPosition?: boolean;\n visible: boolean;\n x?: number;\n y?: number;\n};\n\ntype State = {\n focused: boolean;\n handle: HandleState;\n};\n\n// eslint-disable-next-line react/no-unsafe\nclass MathInput extends React.Component<Props, State> {\n didTouchOutside: boolean | null | undefined;\n didScroll: boolean | null | undefined;\n mathField: any;\n // @ts-expect-error [FEI-5003] - TS2564 - Property 'recordTouchStartOutside' has no initializer and is not definitely assigned in the constructor.\n recordTouchStartOutside: (arg1: any) => void;\n // @ts-expect-error [FEI-5003] - TS2564 - Property 'blurOnTouchEndOutside' has no initializer and is not definitely assigned in the constructor.\n blurOnTouchEndOutside: (arg1: any) => void;\n dragListener: any;\n inputRef: HTMLDivElement | null | undefined;\n _isMounted: boolean | null | undefined;\n _mathContainer: any;\n // @ts-expect-error [FEI-5003] - TS2564 - Property '_container' has no initializer and is not definitely assigned in the constructor.\n _container: HTMLDivElement;\n _root: any;\n // @ts-expect-error [FEI-5003] - TS2564 - Property '_containerBounds' has no initializer and is not definitely assigned in the constructor.\n _containerBounds: ClientRect;\n _keypadBounds: ClientRect | null | undefined;\n\n static defaultProps: DefaultProps = {\n style: {},\n value: \"\",\n };\n\n state: State = {\n focused: false,\n handle: {\n animateIntoPosition: false,\n visible: false,\n x: 0,\n y: 0,\n },\n };\n\n componentDidMount() {\n this._isMounted = true;\n\n this.mathField = new MathWrapper(this._mathContainer, {\n onCursorMove: (cursor: Cursor) => {\n // TODO(charlie): It's not great that there is so much coupling\n // between this keypad and the input behavior. We should wrap\n // this `MathInput` component in an intermediary component\n // that translates accesses on the keypad into vanilla props,\n // to make this input keypad-agnostic.\n this.props.keypadElement &&\n this.props.keypadElement.setCursor(cursor);\n },\n });\n\n // NOTE(charlie): MathQuill binds this handler to manage its\n // drag-to-select behavior. For reasons that I can't explain, the event\n // itself gets triggered even if you tap slightly outside of the\n // bound container (maybe 5px outside of any boundary). As a result, the\n // cursor appears when tapping at those locations, even though the input\n // itself doesn't receive any touch start or mouse down event and, as\n // such, doesn't focus itself. This makes for a confusing UX, as the\n // cursor appears, but the keypad does not and the input otherwise\n // treats itself as unfocused. Thankfully, we don't need this behavior--\n // we manage all of the cursor interactions ourselves--so we can safely\n // unbind the handler.\n this.mathField.mathField.__controller.container.unbind(\n \"mousedown.mathquill\",\n );\n\n this.mathField.setContent(this.props.value);\n\n this._updateInputPadding();\n\n this._container = ReactDOM.findDOMNode(this) as HTMLDivElement;\n this._root = this._container.querySelector(\".mq-root-block\");\n this._root.addEventListener(\"scroll\", this._handleScroll);\n\n // Record the initial scroll displacement on touch start. This allows\n // us to detect whether a touch event was a scroll and only blur the\n // input on non-scrolls--blurring the input on scroll makes for a\n // frustrating user experience.\n this.recordTouchStartOutside = (evt: any) => {\n if (this.state.focused) {\n // Only blur if the touch is both outside of the input, and\n // above or to the left or right of the keypad (if it has been\n // provided). The reasoning for not blurring when touches occur\n // below the keypad is that the keypad may be anchored above\n // the 'Check answer' bottom bar, in which case, we don't want\n // to dismiss the keypad on check.\n // TODO(charlie): Inject this logic.\n if (!this._container.contains(evt.target)) {\n let touchDidStartInOrBelowKeypad = false;\n if (\n this.props.keypadElement &&\n this.props.keypadElement.getDOMNode()\n ) {\n const bounds = this._getKeypadBounds();\n for (let i = 0; i < evt.changedTouches.length; i++) {\n const [x, y] = [\n evt.changedTouches[i].clientX,\n evt.changedTouches[i].clientY,\n ];\n if (\n (bounds.left <= x &&\n bounds.right >= x &&\n bounds.top <= y &&\n bounds.bottom >= y) ||\n bounds.bottom < y\n ) {\n touchDidStartInOrBelowKeypad = true;\n break;\n }\n }\n }\n\n if (!touchDidStartInOrBelowKeypad) {\n this.didTouchOutside = true;\n\n if (this.dragListener) {\n this.dragListener.detach();\n }\n\n this.dragListener = new DragListener(() => {\n this.didScroll = true;\n this.dragListener.detach();\n }, evt);\n this.dragListener.attach();\n }\n }\n }\n };\n\n this.blurOnTouchEndOutside = (evt) => {\n // If the user didn't scroll, blur the input.\n // TODO(charlie): Verify that the touch that ended actually started\n // outside the keypad. Right now, you can touch down on the keypad,\n // touch elsewhere, release the finger on the keypad, and trigger a\n // dismissal. This code needs to be generalized to handle\n // multi-touch.\n if (this.state.focused && this.didTouchOutside && !this.didScroll) {\n this.blur();\n }\n\n this.didTouchOutside = false;\n this.didScroll = false;\n\n if (this.dragListener) {\n this.dragListener.detach();\n }\n };\n\n window.addEventListener(\"touchstart\", this.recordTouchStartOutside);\n window.addEventListener(\"touchend\", this.blurOnTouchEndOutside);\n window.addEventListener(\"touchcancel\", this.blurOnTouchEndOutside);\n\n // HACK(benkomalo): if the window resizes, the keypad bounds can\n // change. That's a bit peeking into the internals of the keypad\n // itself, since we know bounds can change only when the viewport\n // changes, but seems like a rare enough thing to get wrong that it's\n // not worth wiring up extra things for the technical \"purity\" of\n // having the keypad notify of changes to us.\n window.addEventListener(\"resize\", this._clearKeypadBoundsCache);\n window.addEventListener(\n \"orientationchange\",\n this._clearKeypadBoundsCache,\n );\n }\n\n UNSAFE_componentWillReceiveProps(props: Props) {\n if (this.props.keypadElement !== props.keypadElement) {\n this._clearKeypadBoundsCache();\n }\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.mathField.getContent() !== this.props.value) {\n this.mathField.setContent(this.props.value);\n }\n\n if (prevState.focused !== this.state.focused) {\n this._updateInputPadding();\n }\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n\n window.removeEventListener(\"touchstart\", this.recordTouchStartOutside);\n window.removeEventListener(\"touchend\", this.blurOnTouchEndOutside);\n window.removeEventListener(\"touchcancel\", this.blurOnTouchEndOutside);\n // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.\n window.removeEventListener(\"resize\", this._clearKeypadBoundsCache());\n window.removeEventListener(\n \"orientationchange\",\n // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.\n this._clearKeypadBoundsCache(),\n );\n }\n\n _clearKeypadBoundsCache: () => void = () => {\n this._keypadBounds = null;\n };\n\n _cacheKeypadBounds: (arg1: any) => void = (keypadNode) => {\n this._keypadBounds = keypadNode.getBoundingClientRect();\n };\n\n _updateInputPadding: () => void = () => {\n this._container = ReactDOM.findDOMNode(this) as HTMLDivElement;\n this._root = this._container.querySelector(\".mq-root-block\");\n\n const padding = this.getInputInnerPadding();\n // NOTE(diedra): This overrides the default 2px padding from Mathquil.\n this._root.style.padding =\n `${padding.paddingTop}px ${padding.paddingRight}px` +\n ` ${padding.paddingBottom}px ${padding.paddingLeft}px`;\n this._root.style.fontSize = `${fontSizePt}pt`;\n };\n\n /** Gets and cache they bounds of the keypadElement */\n _getKeypadBounds: () => any = () => {\n if (!this._keypadBounds) {\n const node = this.props.keypadElement.getDOMNode();\n this._cacheKeypadBounds(node);\n }\n return this._keypadBounds;\n };\n\n _updateCursorHandle: (arg1?: boolean) => void = (animateIntoPosition) => {\n const containerBounds = this._container.getBoundingClientRect();\n const cursor: any = this._container.querySelector(\".mq-cursor\");\n const cursorBounds = cursor.getBoundingClientRect();\n\n const cursorWidth = cursorBounds.width;\n const gapBelowCursor = 2;\n\n const inputInnerPadding = this.getInputInnerPadding();\n\n // The cursor should never be further right or left than the edge of the\n // container's values.\n const furthestRightCursorBound =\n containerBounds.right -\n cursorWidth -\n inputInnerPadding.paddingRight;\n const furthestLeftCursorBound =\n containerBounds.left + cursorWidth + inputInnerPadding.paddingLeft;\n\n let cursorBoundsLeft = cursorBounds.left;\n if (cursorBounds.left > furthestRightCursorBound) {\n cursorBoundsLeft = furthestRightCursorBound;\n } else if (cursorBounds.left < furthestLeftCursorBound) {\n cursorBoundsLeft = furthestLeftCursorBound;\n }\n\n this.setState({\n handle: {\n visible: true,\n animateIntoPosition,\n // We subtract containerBounds' left/top to correct for the\n // position of the container within the page.\n x: cursorBoundsLeft + cursorWidth / 2 - containerBounds.left,\n y: cursorBounds.bottom + gapBelowCursor - containerBounds.top,\n },\n });\n };\n\n _hideCursorHandle: () => void = () => {\n this.setState({\n handle: {\n visible: false,\n x: 0,\n y: 0,\n },\n });\n };\n\n _handleScroll: () => void = () => {\n // If animateIntoPosition is false, the user is currently manually positioning\n // the cursor. This is important because the user can scroll the input field\n // with the curor handle, and we don't want to override that ability.\n // But we do want to hide the handle is the user is just scrolling the input field\n // normally, because the handle will not move with the scroll.\n if (this.state.handle.animateIntoPosition !== false) {\n this._hideCursorHandle();\n }\n };\n\n blur: () => void = () => {\n this.mathField.blur();\n this.props.onBlur && this.props.onBlur();\n this.setState({focused: false, handle: {visible: false}});\n };\n\n focus: () => void = () => {\n // Pass this component's handleKey method to the keypad so it can call\n // it whenever it needs to trigger a keypress action.\n this.props.keypadElement.setKeyHandler((key) => {\n const cursor = this.mathField.pressKey(key);\n\n // Trigger an `onChange` if the value in the input changed, and hide\n // the cursor handle whenever the user types a key. If the value\n // changed as a result of a keypress, we need to be careful not to\n // call `setState` until after `onChange` has resolved.\n const hideCursor = () => {\n this.setState({\n handle: {\n visible: false,\n },\n });\n };\n const value = this.mathField.getContent();\n if (this.props.value !== value) {\n this.props.onChange(value, hideCursor);\n } else {\n hideCursor();\n }\n\n return cursor;\n });\n\n this.mathField.focus();\n this.props.onFocus && this.props.onFocus();\n this.setState({focused: true}, () => {\n // NOTE(charlie): We use `setTimeout` to allow for a layout pass to\n // occur. Otherwise, the keypad is measured incorrectly. Ideally,\n // we'd use requestAnimationFrame here, but it's unsupported on\n // Android Browser 4.3.\n setTimeout(() => {\n if (this._isMounted) {\n // TODO(benkomalo): the keypad is animating at this point,\n // so we can't call _cacheKeypadBounds(), even though\n // it'd be nice to do so. It should probably be the case\n // that the higher level controller tells us when the\n // keypad is settled (then scrollIntoView wouldn't have\n // to make assumptions about that either).\n const maybeKeypadNode =\n this.props.keypadElement &&\n this.props.keypadElement.getDOMNode();\n scrollIntoView(this._container, maybeKeypadNode);\n }\n });\n });\n };\n\n /**\n * Tries to determine which DOM node to place the cursor next to based on\n * where the user drags the cursor handle. If it finds a node it will\n * place the cursor next to it, update the handle to be under the cursor,\n * and return true. If it doesn't find a node, it returns false.\n *\n * It searches for nodes by doing it tests at the following points:\n *\n * (x - dx, y), (x, y), (x + dx, y)\n *\n * If it doesn't find any nodes from the rendered math it will update y\n * by adding dy.\n *\n * The algorithm ends its search when y goes outside the bounds of\n * containerBounds.\n *\n * @param {DOMRect} containerBounds - bounds of the container node\n * @param {number} x - the initial x coordinate in the viewport\n * @param {number} y - the initial y coordinate in the viewport\n * @param {number} dx - horizontal spacing between elementFromPoint calls\n * @param {number} dy - vertical spacing between elementFromPoint calls,\n * sign determines direction.\n * @returns {boolean} - true if a node was hit, false otherwise.\n */\n _findHitNode: (\n arg1: ClientRect,\n arg2: number,\n arg3: number,\n arg4: number,\n arg5: number,\n ) => boolean = (containerBounds, x, y, dx, dy) => {\n while (y >= containerBounds.top && y <= containerBounds.bottom) {\n y += dy;\n\n const points = [\n [x - dx, y],\n [x, y],\n [x + dx, y],\n ];\n\n const elements = points\n // @ts-expect-error [FEI-5003] - TS2556 - A spread argument must either have a tuple type or be passed to a rest parameter.\n .map((point) => document.elementFromPoint(...point))\n // We exclude the root container itself and any nodes marked\n // as non-leaf which are fractions, parens, and roots. The\n // children of those nodes are included in the list because\n // those are the items we care about placing the cursor next\n // to.\n //\n // MathQuill's mq-non-leaf is not applied to all non-leaf nodes\n // so the naming is a bit confusing. Although fractions are\n // included, neither mq-numerator nor mq-denominator nodes are\n // and neither are subscripts or superscripts.\n .filter(\n (element) =>\n element &&\n this._root.contains(element) &&\n ((!element.classList.contains(\"mq-root-block\") &&\n !element.classList.contains(\"mq-non-leaf\")) ||\n element.classList.contains(\"mq-empty\") ||\n element.classList.contains(\"mq-hasCursor\")),\n );\n\n let hitNode = null;\n\n // Contains only DOMNodes without child elements. These should\n // contain some amount of text though.\n const leafElements: ReadonlyArray<null | HTMLElement> = [];\n\n // Contains only DOMNodes with child elements.\n const nonLeafElements: ReadonlyArray<null | HTMLElement> = [];\n\n let max = 0;\n const counts: {\n [key: string]: number;\n } = {};\n const elementsById: Record<string, any> = {};\n\n for (const element of elements) {\n // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'.\n const id = element.getAttribute(\"mathquill-command-id\");\n if (id != null) {\n // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'Element | null' is not assignable to parameter of type 'HTMLElement | null'.\n leafElements.push(element);\n\n counts[id] = (counts[id] || 0) + 1;\n elementsById[id] = element;\n } else {\n // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'Element | null' is not assignable to parameter of type 'HTMLElement | null'.\n nonLeafElements.push(element);\n }\n }\n\n // When determining which DOMNode to place the cursor beside, we\n // prefer leaf nodes. Hitting a leaf node is a good sign that the\n // cursor is really close to some piece of math that has been\n // rendered because leaf nodes contain text. Non-leaf nodes may\n // contain a lot of whitespace so the cursor may be further away\n // from actual text within the expression.\n //\n // Since we're doing three hit tests per loop it's possible that\n // we hit multiple leaf nodes at the same time. In this case we\n // we prefer the DOMNode with the most hits.\n // TODO(kevinb) consider preferring nodes hit by [x, y].\n for (const [id, count] of entries(counts)) {\n if (count > max) {\n max = count;\n hitNode = elementsById[id];\n }\n }\n\n // It's possible that two non-leaf nodes are right beside each\n // other. We don't bother counting the number of hits for each,\n // b/c this seems like an unlikely situation. Also, ignoring the\n // hit count in the situation should not have serious effects on\n // the overall accuracy of the algorithm.\n if (hitNode == null && nonLeafElements.length > 0) {\n // @ts-expect-error [FEI-5003] - TS2322 - Type 'HTMLElement | null' is not assignable to type 'null'.\n hitNode = nonLeafElements[0];\n }\n\n if (hitNode !== null) {\n this.mathField.setCursorPosition(x, y, hitNode);\n return true;\n }\n }\n\n return false;\n };\n\n /**\n * Inserts the cursor at the DOM node closest to the given coordinates,\n * based on hit-tests conducted using #_findHitNode.\n *\n * @param {number} x - the x coordinate in the viewport\n * @param {number} y - the y coordinate in the viewport\n */\n _insertCursorAtClosestNode: (arg1: number, arg2: number) => void = (\n x,\n y,\n ) => {\n const cursor = this.mathField.getCursor();\n\n // Pre-emptively check if the input has any child nodes; if not, the\n // input is empty, so we throw the cursor at the start.\n if (!this._root.hasChildNodes()) {\n cursor.insAtLeftEnd(this.mathField.mathField.__controller.root);\n return;\n }\n\n // NOTE(diedra): The adding and subtracting of 10 or 15 pixels here accounts\n // for the padding that surrounds the input values.\n if (y > this._containerBounds.bottom) {\n y = this._containerBounds.bottom - 10;\n } else if (y < this._containerBounds.top) {\n y = this._containerBounds.top + 10;\n }\n if (x > this._containerBounds.right) {\n x = this._containerBounds.right - 15;\n } else if (x < this._containerBounds.left) {\n x = this._containerBounds.left + 15;\n }\n\n let dy;\n\n // Vertical spacing between hit tests\n // dy is negative because we're moving upwards.\n dy = -8;\n\n // Horizontal spacing between hit tests\n // Note: This value depends on the font size. If the gap is too small\n // we end up placing the cursor at the end of the expression when we\n // shouldn't.\n const dx = 5;\n\n if (this._findHitNode(this._containerBounds, x, y, dx, dy)) {\n return;\n }\n\n // If we haven't found anything start from the top.\n y = this._containerBounds.top;\n\n // dy is positive b/c we're going downwards.\n dy = 8;\n\n if (this._findHitNode(this._containerBounds, x, y, dx, dy)) {\n return;\n }\n\n const firstChildBounds = this._root.firstChild.getBoundingClientRect();\n const lastChildBounds = this._root.lastChild.getBoundingClientRect();\n\n const left = firstChildBounds.left;\n const right = lastChildBounds.right;\n\n // We've exhausted all of the options. We're likely either to the right\n // or left of all of the math, so we place the cursor at the end to\n // which it's closest.\n if (Math.abs(x - right) < Math.abs(x - left)) {\n cursor.insAtRightEnd(this.mathField.mathField.__controller.root);\n } else {\n cursor.insAtLeftEnd(this.mathField.mathField.__controller.root);\n }\n // In that event, we need to update the cursor context ourselves.\n this.props.keypadElement &&\n this.props.keypadElement.setCursor({\n context: this.mathField.contextForCursor(cursor),\n });\n };\n\n handleTouchStart: (arg1: React.TouchEvent<HTMLDivElement>) => void = (\n e,\n ) => {\n e.stopPropagation();\n\n // Hide the cursor handle on touch start, if the handle itself isn't\n // handling the touch event.\n this._hideCursorHandle();\n\n // Cache the container bounds, so as to avoid re-computing. If we don't\n // have any content, then it's not necessary, since the cursor can't be\n // moved anyway.\n if (this.mathField.getContent() !== \"\") {\n this._containerBounds = this._container.getBoundingClientRect();\n\n // Make the cursor visible and set the handle-less cursor's\n // location.\n const touch = e.changedTouches[0];\n this._insertCursorAtClosestNode(touch.clientX, touch.clientY);\n }\n\n // Trigger a focus event, if we're not already focused.\n if (!this.state.focused) {\n this.focus();\n }\n };\n\n handleTouchMove: (arg1: React.TouchEvent<HTMLDivElement>) => void = (e) => {\n e.stopPropagation();\n\n // Update the handle-less cursor's location on move, if there's any\n // content in the box. Note that if the user touched outside the keypad\n // (e.g., with a different finger) during this touch interaction, we\n // may have blurred, in which case we should ignore the touch (since\n // the cursor is no longer visible and the input is no longer\n // highlighted).\n if (this.mathField.getContent() !== \"\" && this.state.focused) {\n const touch = e.changedTouches[0];\n this._insertCursorAtClosestNode(touch.clientX, touch.clientY);\n }\n };\n\n handleTouchEnd: (arg1: React.TouchEvent<HTMLDivElement>) => void = (e) => {\n e.stopPropagation();\n\n // And on touch-end, reveal the cursor, unless the input is empty. Note\n // that if the user touched outside the keypad (e.g., with a different\n // finger) during this touch interaction, we may have blurred, in which\n // case we should ignore the touch (since the cursor is no longer\n // visible and the input is no longer highlighted).\n if (this.mathField.getContent() !== \"\" && this.state.focused) {\n this._updateCursorHandle();\n }\n };\n\n /**\n * When a touch starts in the cursor handle, we track it so as to avoid\n * handling any touch events ourself.\n *\n * @param {TouchEvent} e - the raw touch event from the browser\n */\n onCursorHandleTouchStart: (\n arg1: React.TouchEvent<HTMLSpanElement>,\n ) => void = (e) => {\n // NOTE(charlie): The cursor handle is a child of this view, so whenever\n // it receives a touch event, that event would also typically be bubbled\n // up to our own handlers. However, we want the cursor to handle its own\n // touch events, and for this view to only handle touch events that\n // don't affect the cursor. As such, we `stopPropagation` on any touch\n // events that are being handled by the cursor, so as to avoid handling\n // them in our own touch handlers.\n e.stopPropagation();\n\n e.preventDefault();\n\n // Cache the container bounds, so as to avoid re-computing.\n this._containerBounds = this._container.getBoundingClientRect();\n };\n\n _constrainToBound: (\n arg1: number,\n arg2: number,\n arg3: number,\n arg4: number,\n ) => number = (value, min, max, friction) => {\n if (value < min) {\n return min + (value - min) * friction;\n } else if (value > max) {\n return max + (value - max) * friction;\n } else {\n return value;\n }\n };\n\n /**\n * When the user moves the cursor handle update the position of the cursor\n * and the handle.\n *\n * @param {TouchEvent} e - the raw touch event from the browser\n */\n onCursorHandleTouchMove: (arg1: React.TouchEvent<HTMLSpanElement>) => void =\n (e) => {\n e.stopPropagation();\n\n const x = e.changedTouches[0].clientX;\n const y = e.changedTouches[0].clientY;\n\n const relativeX = x - this._containerBounds.left;\n const relativeY =\n y -\n 2 * cursorHandleRadiusPx * cursorHandleDistanceMultiplier -\n this._containerBounds.top;\n\n // We subtract the containerBounds left/top to correct for the\n // MathInput's position on the page. On top of that, we subtract an\n // additional 2 x {height of the cursor} so that the bottom of the\n // cursor tracks the user's finger, to make it visible under their\n // touch.\n this.setState({\n handle: {\n animateIntoPosition: false,\n visible: true,\n // TODO(charlie): Use clientX and clientY to avoid the need for\n // scroll offsets. This likely also means that the cursor\n // detection doesn't work when scrolled, since we're not\n // offsetting those values.\n x: this._constrainToBound(\n relativeX,\n 0,\n this._containerBounds.width,\n constrainingFrictionFactor,\n ),\n y: this._constrainToBound(\n relativeY,\n 0,\n this._containerBounds.height,\n constrainingFrictionFactor,\n ),\n },\n });\n\n // Use a y-coordinate that's just above where the user is actually\n // touching because they're dragging the handle which is a little\n // below where the cursor actually is.\n const distanceAboveFingerToTrySelecting = 22;\n const adjustedY = y - distanceAboveFingerToTrySelecting;\n\n this._insertCursorAtClosestNode(x, adjustedY);\n };\n\n /**\n * When the user releases the cursor handle, animate it back into place.\n *\n * @param {TouchEvent} e - the raw touch event from the browser\n */\n onCursorHandleTouchEnd: (arg1: React.TouchEvent<HTMLSpanElement>) => void =\n (e) => {\n e.stopPropagation();\n\n this._updateCursorHandle(true);\n };\n\n /**\n * If the gesture is cancelled mid-drag, simply hide it.\n *\n * @param {TouchEvent} e - the raw touch event from the browser\n */\n onCursorHandleTouchCancel: (\n arg1: React.TouchEvent<HTMLSpanElement>,\n ) => void = (e) => {\n e.stopPropagation();\n\n this._updateCursorHandle(true);\n };\n\n domKeyToMathQuillKey: (arg1: string) => string | null | undefined = (\n key,\n ) => {\n const keyMap = {\n \"+\": \"PLUS\",\n \"-\": \"MINUS\",\n \"*\": \"TIMES\",\n \"/\": \"DIVIDE\",\n \".\": \"DECIMAL\",\n \"%\": \"PERCENT\",\n \"=\": \"EQUAL\",\n \">\": \"GT\",\n \"<\": \"LT\",\n \"^\": \"EXP\",\n } as const;\n\n // Numbers\n if ([\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"].includes(key)) {\n return `NUM_${key}`;\n }\n\n // Movement keys\n else if (key === \"Backspace\") {\n return \"BACKSPACE\";\n }\n\n // Operators\n else if (key in keyMap) {\n return keyMap[key];\n }\n\n // The key pressed doesn't map to any of the math input operators\n return null;\n };\n\n handleKeyUp: (arg1: React.KeyboardEvent<HTMLDivElement>) => void = (\n event,\n ) => {\n const mathQuillKey = this.domKeyToMathQuillKey(event.key);\n\n if (mathQuillKey) {\n this.mathField.pressKey(mathQuillKey);\n\n // TODO(diedra): If the new value being added is off-screen to the right\n // due to the max-width of the text box, scroll the box to show the newest\n // value\n const value = this.mathField.getContent();\n if (this.props.value !== value) {\n this.mathField.setContent(this.props.value);\n this.props.onChange(value, false);\n this._hideCursorHandle();\n }\n }\n };\n\n getBorderWidthPx: () => number = () => {\n // TODO(diedra): Move these to the common style package.\n const normalBorderWidthPx = 1;\n const focusedBorderWidthPx = 2;\n\n return this.state.focused ? focusedBorderWidthPx : normalBorderWidthPx;\n };\n\n // Calculate the appropriate padding based on the border width (which is\n // considered 'padding', since we're using 'border-box') and the fact\n // that MathQuill automatically applies 2px of padding to the inner\n // input.\n getInputInnerPadding: () => {\n paddingTop: number;\n paddingRight: number;\n paddingBottom: number;\n paddingLeft: number;\n } = () => {\n const paddingInset = totalDesiredPadding - this.getBorderWidthPx();\n\n // Now, translate that to the appropriate padding for each direction.\n // The complication here is that we want numerals to be centered within\n // the input. However, Symbola (MathQuill's font of choice) renders\n // numerals with approximately 3px of padding below and 1px of padding\n // above (to make room for ascenders and descenders). So we ignore those\n // padding values for the vertical directions.\n const symbolaPaddingBottom = 3;\n const symbolaPaddingTop = 1;\n const padding = {\n paddingTop: paddingInset - symbolaPaddingTop,\n paddingRight: paddingInset,\n paddingBottom: paddingInset - symbolaPaddingBottom,\n paddingLeft: paddingInset,\n } as const;\n\n return padding;\n };\n\n render(): React.ReactNode {\n const {focused, handle} = this.state;\n const {style} = this.props;\n\n const innerStyle = {\n ...inlineStyles.innerContainer,\n borderWidth: this.getBorderWidthPx(),\n ...(focused\n ? {\n borderColor: wonderBlocksBlue,\n }\n : {}),\n ...style,\n } as const;\n\n // NOTE(diedra): This label explicitly refers to tapping because this field\n // is currently only seen if the user is using a mobile device.\n // We added the tapping instructions because there is currently a bug where\n // Android users need to use two fingers to tap the input field to make the\n // keyboard appear. It should only require one finger, which is how iOS works.\n // TODO(diedra): Fix the bug that is causing Android to require a two finger tap\n // to the open the keyboard, and then remove the second half of this label.\n const ariaLabel =\n i18n._(\"Math input box\") +\n \" \" +\n i18n._(\"Tap with one or two fingers to open keyboard\");\n\n return (\n <View\n style={styles.input}\n onTouchStart={this.handleTouchStart}\n onTouchMove={this.handleTouchMove}\n onTouchEnd={this.handleTouchEnd}\n onClick={(e) => e.stopPropagation()}\n role={\"textbox\"}\n ariaLabel={ariaLabel}\n >\n {/* NOTE(charlie): This is used purely to namespace the styles in\n overrides.css. */}\n <div\n className=\"keypad-input\"\n // @ts-expect-error [FEI-5003] - TS2322 - Type 'string' is not assignable to type 'number | undefined'.\n tabIndex={\"0\"}\n ref={(node) => {\n this.inputRef = node;\n }}\n onKeyUp={this.handleKeyUp}\n >\n {/* NOTE(charlie): This element must be styled with inline\n styles rather than with Aphrodite classes, as MathQuill\n modifies the class names on the DOM node. */}\n <div\n ref={(node) => {\n this._mathContainer = ReactDOM.findDOMNode(node);\n }}\n style={innerStyle}\n />\n </div>\n {focused && handle.visible && (\n <CursorHandle\n {...handle}\n onTouchStart={this.onCursorHandleTouchStart}\n onTouchMove={this.onCursorHandleTouchMove}\n onTouchEnd={this.onCursorHandleTouchEnd}\n onTouchCancel={this.onCursorHandleTouchCancel}\n />\n )}\n </View>\n );\n }\n}\n\nconst fontSizePt = 18;\nconst inputMaxWidth = 128;\n\n// The height of numerals in Symbola (rendered at 18pt) is about 20px (though\n// they render at 24px due to padding for ascenders and descenders). We want our\n// box to be laid out such that there's 12px of padding between a numeral and the\n// edge of the input, so we use this 20px number as our 'base height' and\n// account for the ascender and descender padding when computing the additional\n// padding in our `render` method.\nconst numeralHeightPx = 20;\nconst totalDesiredPadding = 12;\nconst minHeightPx = numeralHeightPx + totalDesiredPadding * 2;\nconst minWidthPx = 64;\n\nconst styles = StyleSheet.create({\n input: {\n position: \"relative\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n maxWidth: inputMaxWidth,\n },\n});\n\nconst inlineStyles = {\n // Styles for the inner, MathQuill-ified input element. It's important that\n // these are done with regular inline styles rather than Aphrodite classes\n // as MathQuill adds CSS class names to the element outside of the typical\n // React flow; assigning a class to the element can thus disrupt MathQuill\n // behavior. For example, if the client provided new styles to be applied\n // on focus and the styles here were applied with Aphrodite, then Aphrodite\n // would merge the provided styles with the base styles here, producing a\n // new CSS class name that we would apply to the element, clobbering any CSS\n // class names that MathQuill had applied itself.\n innerContainer: {\n backgroundColor: \"white\",\n minHeight: minHeightPx,\n minWidth: minWidthPx,\n maxWidth: inputMaxWidth,\n boxSizing: \"border-box\",\n position: \"relative\",\n borderStyle: \"solid\",\n borderColor: Color.offBlack50,\n borderRadius: 4,\n color: offBlack,\n },\n} as const;\n\nexport default MathInput;\n","/**\n * React PropTypes that may be shared between components.\n */\n\nimport PropTypes from \"prop-types\";\n\n// NOTE(jared): This is no longer guaranteed to be React element\n// NOTE(matthewc): only seems to be used in Perseus\nexport const keypadElementPropType = PropTypes.shape({\n activate: PropTypes.func.isRequired,\n dismiss: PropTypes.func.isRequired,\n configure: PropTypes.func.isRequired,\n setCursor: PropTypes.func.isRequired,\n setKeyHandler: PropTypes.func.isRequired,\n getDOMNode: PropTypes.func.isRequired,\n});\n","/**\n * This file contains configuration settings for the buttons in the keypad.\n */\nimport * as i18n from \"@khanacademy/wonder-blocks-i18n\";\n\nimport {DecimalSeparator, IconType, KeyType} from \"../enums\";\nimport {KeyConfig} from \"../types\";\nimport {decimalSeparator} from \"../utils\";\n\nimport Key from \"./keys\";\n\ntype KeyConfigMapper = (args: {\n key: Key;\n keyType?: KeyType;\n iconType?: IconType;\n ariaLabel?: string;\n data?: string;\n}) => KeyConfig;\n\nconst getDefaultOperatorFields: KeyConfigMapper = ({\n key,\n keyType = \"OPERATOR\",\n iconType = IconType.SVG,\n ariaLabel = key,\n data = key,\n}) => ({\n id: key,\n type: keyType,\n ariaLabel,\n icon: {\n type: iconType,\n data,\n },\n});\n\nconst getDefaultValueFields: KeyConfigMapper = ({\n key,\n keyType = \"VALUE\",\n iconType = IconType.MATH,\n ariaLabel = key,\n data = key,\n}) => ({\n id: key,\n type: keyType,\n ariaLabel,\n icon: {\n type: iconType,\n data,\n },\n});\n\nconst getDefaultNumberFields: KeyConfigMapper = ({\n key,\n data = key.replace(\"NUM_\", \"\"),\n keyType = \"VALUE\",\n iconType = IconType.TEXT,\n ariaLabel = data,\n}) => ({\n id: key,\n type: keyType,\n ariaLabel,\n icon: {\n type: iconType,\n data,\n },\n});\n\nconst KeyConfigs: {\n [key in Key]: KeyConfig;\n} = {\n // Basic math\n PLUS: {\n ...getDefaultOperatorFields({\n key: \"PLUS\",\n // I18N: A label for a 'plus' sign.\n ariaLabel: i18n._(\"Plus\"),\n }),\n },\n MINUS: {\n ...getDefaultOperatorFields({\n key: \"MINUS\",\n // I18N: A label for a 'minus' sign.\n ariaLabel: i18n._(\"Minus\"),\n }),\n },\n NEGATIVE: {\n ...getDefaultOperatorFields({\n key: \"NEGATIVE\",\n // I18N: A label for a 'negative' sign.\n ariaLabel: i18n._(\"Negative\"),\n }),\n },\n TIMES: {\n ...getDefaultOperatorFields({\n key: \"TIMES\",\n // I18N: A label for a 'multiply' sign.\n ariaLabel: i18n._(\"Multiply\"),\n }),\n },\n DIVIDE: {\n ...getDefaultOperatorFields({\n key: \"DIVIDE\",\n // I18N: A label for a 'divide' sign.\n ariaLabel: i18n._(\"Divide\"),\n }),\n },\n DECIMAL: {\n ...getDefaultOperatorFields({\n key: \"DECIMAL\",\n keyType: \"VALUE\",\n // I18N: A label for a 'decimal' sign (represented as '.' or ',').\n ariaLabel: i18n._(\"Decimal\"),\n }),\n icon:\n decimalSeparator === DecimalSeparator.COMMA\n ? {\n // TODO(charlie): Get an SVG icon for the comma, or verify with\n // design that the text-rendered version is acceptable.\n type: IconType.TEXT,\n data: \",\",\n }\n : {\n type: IconType.SVG,\n data: \"PERIOD\",\n },\n },\n PERIOD: {\n ...getDefaultOperatorFields({\n key: \"PERIOD\",\n keyType: \"VALUE\",\n ariaLabel: \".\",\n }),\n },\n PERCENT: {\n ...getDefaultOperatorFields({\n key: \"PERCENT\",\n // I18N: A label for a 'percent' sign (represented as '%').\n ariaLabel: i18n._(\"Percent\"),\n }),\n },\n CDOT: {\n ...getDefaultOperatorFields({\n key: \"CDOT\",\n // I18N: A label for a 'centered dot' multiplication sign (represented as '⋅').\n ariaLabel: i18n._(\"Multiply\"),\n }),\n },\n EQUAL: {\n ...getDefaultOperatorFields({\n key: \"EQUAL\",\n // I18N: A label for an 'equals' sign (represented as '=').\n ariaLabel: i18n._(\"Equals sign\"),\n }),\n },\n NEQ: {\n ...getDefaultOperatorFields({\n key: \"NEQ\",\n // I18N: A label for a 'not-equals' sign (represented as '≠').\n ariaLabel: i18n._(\"Not-equals sign\"),\n }),\n },\n GT: {\n ...getDefaultOperatorFields({\n key: \"GT\",\n // I18N: A label for a 'greater than' sign (represented as '>').\n ariaLabel: i18n._(\"Greater than sign\"),\n }),\n },\n LT: {\n ...getDefaultOperatorFields({\n key: \"LT\",\n // I18N: A label for a 'less than' sign (represented as '<').\n ariaLabel: i18n._(\"Less than sign\"),\n }),\n },\n GEQ: {\n ...getDefaultOperatorFields({\n key: \"GEQ\",\n // I18N: A label for a 'greater than or equal to' sign (represented as '≥').\n ariaLabel: i18n._(\"Greater than or equal to sign\"),\n }),\n },\n LEQ: {\n ...getDefaultOperatorFields({\n key: \"LEQ\",\n // I18N: A label for a 'less than or equal to' sign (represented as '≤').\n ariaLabel: i18n._(\"Less than or equal to sign\"),\n }),\n },\n // mobile native\n FRAC_INCLUSIVE: {\n ...getDefaultOperatorFields({\n key: \"FRAC_INCLUSIVE\",\n // I18N: A label for a button that creates a new fraction and puts the\n // current expression in the numerator of that fraction.\n ariaLabel: i18n._(\"Fraction, with current expression in numerator\"),\n }),\n },\n // mobile native\n FRAC_EXCLUSIVE: {\n ...getDefaultOperatorFields({\n key: \"FRAC_EXCLUSIVE\",\n // I18N: A label for a button that creates a new fraction next to the\n // cursor.\n ariaLabel: i18n._(\"Fraction, excluding the current expression\"),\n }),\n },\n // mobile web\n FRAC: {\n ...getDefaultOperatorFields({\n key: \"FRAC\",\n // I18N: A label for a button that creates a new fraction next to the\n // cursor.\n ariaLabel: i18n._(\"Fraction, excluding the current expression\"),\n }),\n },\n EXP: {\n ...getDefaultOperatorFields({\n key: \"EXP\",\n // I18N: A label for a button that will allow the user to input a\n // custom exponent.\n ariaLabel: i18n._(\"Custom exponent\"),\n }),\n },\n EXP_2: {\n ...getDefaultOperatorFields({\n key: \"EXP_2\",\n // I18N: A label for a button that will square (take to the second\n // power) some math.\n ariaLabel: i18n._(\"Square\"),\n }),\n },\n EXP_3: {\n ...getDefaultOperatorFields({\n key: \"EXP_3\",\n // I18N: A label for a button that will cube (take to the third power)\n // some math.\n ariaLabel: i18n._(\"Cube\"),\n }),\n },\n SQRT: {\n ...getDefaultOperatorFields({\n key: \"SQRT\",\n // I18N: A label for a button that will allow the user to input a\n // square root.\n ariaLabel: i18n._(\"Square root\"),\n }),\n },\n CUBE_ROOT: {\n ...getDefaultOperatorFields({\n key: \"CUBE_ROOT\",\n // I18N: A label for a button that will allow the user to input a\n // cube root.\n ariaLabel: i18n._(\"Cube root\"),\n }),\n },\n RADICAL: {\n ...getDefaultOperatorFields({\n key: \"RADICAL\",\n // I18N: A label for a button that will allow the user to input a\n // radical with a custom root.\n ariaLabel: i18n._(\"Radical with custom root\"),\n }),\n },\n LEFT_PAREN: {\n ...getDefaultOperatorFields({\n key: \"LEFT_PAREN\",\n // I18N: A label for a button that will allow the user to input a\n // left parenthesis (i.e. '(')\n ariaLabel: i18n._(\"Left parenthesis\"),\n }),\n },\n RIGHT_PAREN: {\n ...getDefaultOperatorFields({\n key: \"RIGHT_PAREN\",\n // I18N: A label for a button that will allow the user to input a\n // right parenthesis (i.e. ')')\n ariaLabel: i18n._(\"Right parenthesis\"),\n }),\n },\n LN: {\n ...getDefaultOperatorFields({\n key: \"LN\",\n // I18N: A label for a button that will allow the user to input a\n // natural logarithm.\n ariaLabel: i18n._(\"Natural logarithm\"),\n }),\n },\n LOG: {\n ...getDefaultOperatorFields({\n key: \"LOG\",\n // I18N: A label for a button that will allow the user to input a\n // logarithm with base 10.\n ariaLabel: i18n._(\"Logarithm with base 10\"),\n }),\n },\n LOG_N: {\n ...getDefaultOperatorFields({\n key: \"LOG_N\",\n // I18N: A label for a button that will allow the user to input a\n // logarithm with a custom base.\n ariaLabel: i18n._(\"Logarithm with custom base\"),\n }),\n },\n SIN: {\n ...getDefaultOperatorFields({\n key: \"SIN\",\n // I18N: A label for a button that will allow the user to input a\n // sine function.\n ariaLabel: i18n._(\"Sine\"),\n }),\n },\n COS: {\n ...getDefaultOperatorFields({\n key: \"COS\",\n // I18N: A label for a button that will allow the user to input a\n // cosine function.\n ariaLabel: i18n._(\"Cosine\"),\n }),\n },\n TAN: {\n ...getDefaultOperatorFields({\n key: \"TAN\",\n // I18N: A label for a button that will allow the user to input a\n // tangent function.\n ariaLabel: i18n._(\"Tangent\"),\n }),\n },\n PI: {\n ...getDefaultValueFields({\n key: \"PI\",\n data: \"\\\\pi\",\n // I18N: A label for a button that will allow the user to input the\n // mathematical constant pi (i.e., π)\n ariaLabel: i18n._(\"Pi\"),\n }),\n },\n THETA: {\n ...getDefaultValueFields({\n key: \"THETA\",\n data: \"\\\\theta\",\n // I18N: A label for a button that will allow the user to input the\n // mathematical constant theta (i.e., θ)\n ariaLabel: i18n._(\"Theta\"),\n }),\n },\n NOOP: {\n ...getDefaultOperatorFields({\n key: \"NOOP\",\n keyType: \"EMPTY\",\n }),\n },\n // Input navigation\n UP: {\n ...getDefaultOperatorFields({\n key: \"UP\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\"Up arrow\"),\n }),\n },\n RIGHT: {\n ...getDefaultOperatorFields({\n key: \"RIGHT\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\"Right arrow\"),\n }),\n },\n DOWN: {\n ...getDefaultOperatorFields({\n key: \"DOWN\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\"Down arrow\"),\n }),\n },\n LEFT: {\n ...getDefaultOperatorFields({\n key: \"LEFT\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\"Left arrow\"),\n }),\n },\n JUMP_OUT_PARENTHESES: {\n ...getDefaultOperatorFields({\n key: \"JUMP_OUT_PARENTHESES\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\"Navigate right out of a set of parentheses\"),\n }),\n },\n JUMP_OUT_EXPONENT: {\n ...getDefaultOperatorFields({\n key: \"JUMP_OUT_EXPONENT\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\"Navigate right out of an exponent\"),\n }),\n },\n JUMP_OUT_BASE: {\n ...getDefaultOperatorFields({\n key: \"JUMP_OUT_BASE\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\"Navigate right out of a base\"),\n }),\n },\n JUMP_INTO_NUMERATOR: {\n ...getDefaultOperatorFields({\n key: \"JUMP_INTO_NUMERATOR\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\n \"Navigate right into the numerator of a fraction\",\n ),\n }),\n },\n JUMP_OUT_NUMERATOR: {\n ...getDefaultOperatorFields({\n key: \"JUMP_OUT_NUMERATOR\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\n \"Navigate right out of the numerator and into the denominator\",\n ),\n }),\n },\n JUMP_OUT_DENOMINATOR: {\n ...getDefaultOperatorFields({\n key: \"JUMP_OUT_DENOMINATOR\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\n \"Navigate right out of the denominator of a fraction\",\n ),\n }),\n },\n BACKSPACE: {\n ...getDefaultOperatorFields({\n key: \"BACKSPACE\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\"Delete\"),\n }),\n },\n\n // Keypad navigation\n DISMISS: {\n ...getDefaultOperatorFields({\n key: \"DISMISS\",\n keyType: \"KEYPAD_NAVIGATION\",\n // I18N: A label for a button that will dismiss/hide a keypad.\n ariaLabel: i18n._(\"Dismiss\"),\n }),\n },\n\n // TODO(charlie): Use the numeral color for the 'Many' key.\n MANY: {\n ...getDefaultOperatorFields({\n key: \"MANY\",\n keyType: \"MANY\",\n }),\n },\n\n // NUMBERS\n NUM_0: {\n ...getDefaultNumberFields({\n key: \"NUM_0\",\n }),\n },\n NUM_1: {\n ...getDefaultNumberFields({\n key: \"NUM_1\",\n }),\n },\n NUM_2: {\n ...getDefaultNumberFields({\n key: \"NUM_2\",\n }),\n },\n NUM_3: {\n ...getDefaultNumberFields({\n key: \"NUM_3\",\n }),\n },\n NUM_4: {\n ...getDefaultNumberFields({\n key: \"NUM_4\",\n }),\n },\n NUM_5: {\n ...getDefaultNumberFields({\n key: \"NUM_5\",\n }),\n },\n NUM_6: {\n ...getDefaultNumberFields({\n key: \"NUM_6\",\n }),\n },\n NUM_7: {\n ...getDefaultNumberFields({\n key: \"NUM_7\",\n }),\n },\n NUM_8: {\n ...getDefaultNumberFields({\n key: \"NUM_8\",\n }),\n },\n NUM_9: {\n ...getDefaultNumberFields({\n key: \"NUM_9\",\n }),\n },\n\n // LETTERS\n A: {\n ...getDefaultValueFields({\n key: \"A\",\n }),\n },\n B: {\n ...getDefaultValueFields({\n key: \"B\",\n }),\n },\n C: {\n ...getDefaultValueFields({\n key: \"C\",\n }),\n },\n D: {\n ...getDefaultValueFields({\n key: \"D\",\n }),\n },\n E: {\n ...getDefaultValueFields({\n key: \"E\",\n }),\n },\n F: {\n ...getDefaultValueFields({\n key: \"F\",\n }),\n },\n G: {\n ...getDefaultValueFields({\n key: \"G\",\n }),\n },\n H: {\n ...getDefaultValueFields({\n key: \"H\",\n }),\n },\n I: {\n ...getDefaultValueFields({\n key: \"I\",\n }),\n },\n J: {\n ...getDefaultValueFields({\n key: \"J\",\n }),\n },\n K: {\n ...getDefaultValueFields({\n key: \"K\",\n }),\n },\n L: {\n ...getDefaultValueFields({\n key: \"L\",\n }),\n },\n M: {\n ...getDefaultValueFields({\n key: \"M\",\n }),\n },\n N: {\n ...getDefaultValueFields({\n key: \"N\",\n }),\n },\n O: {\n ...getDefaultValueFields({\n key: \"O\",\n }),\n },\n P: {\n ...getDefaultValueFields({\n key: \"P\",\n }),\n },\n Q: {\n ...getDefaultValueFields({\n key: \"Q\",\n }),\n },\n R: {\n ...getDefaultValueFields({\n key: \"R\",\n }),\n },\n S: {\n ...getDefaultValueFields({\n key: \"S\",\n }),\n },\n T: {\n ...getDefaultValueFields({\n key: \"T\",\n }),\n },\n U: {\n ...getDefaultValueFields({\n key: \"U\",\n }),\n },\n V: {\n ...getDefaultValueFields({\n key: \"V\",\n }),\n },\n W: {\n ...getDefaultValueFields({\n key: \"W\",\n }),\n },\n X: {\n ...getDefaultValueFields({\n key: \"X\",\n }),\n },\n Y: {\n ...getDefaultValueFields({\n key: \"Y\",\n }),\n },\n Z: {\n ...getDefaultValueFields({\n key: \"Z\",\n }),\n },\n a: {\n ...getDefaultValueFields({\n key: \"a\",\n }),\n },\n b: {\n ...getDefaultValueFields({\n key: \"b\",\n }),\n },\n c: {\n ...getDefaultValueFields({\n key: \"c\",\n }),\n },\n d: {\n ...getDefaultValueFields({\n key: \"d\",\n }),\n },\n e: {\n ...getDefaultValueFields({\n key: \"e\",\n }),\n },\n f: {\n ...getDefaultValueFields({\n key: \"f\",\n }),\n },\n g: {\n ...getDefaultValueFields({\n key: \"g\",\n }),\n },\n h: {\n ...getDefaultValueFields({\n key: \"h\",\n }),\n },\n i: {\n ...getDefaultValueFields({\n key: \"i\",\n }),\n },\n j: {\n ...getDefaultValueFields({\n key: \"j\",\n }),\n },\n k: {\n ...getDefaultValueFields({\n key: \"k\",\n }),\n },\n l: {\n ...getDefaultValueFields({\n key: \"l\",\n }),\n },\n m: {\n ...getDefaultValueFields({\n key: \"m\",\n }),\n },\n n: {\n ...getDefaultValueFields({\n key: \"n\",\n }),\n },\n o: {\n ...getDefaultValueFields({\n key: \"o\",\n }),\n },\n p: {\n ...getDefaultValueFields({\n key: \"p\",\n }),\n },\n q: {\n ...getDefaultValueFields({\n key: \"q\",\n }),\n },\n r: {\n ...getDefaultValueFields({\n key: \"r\",\n }),\n },\n s: {\n ...getDefaultValueFields({\n key: \"s\",\n }),\n },\n t: {\n ...getDefaultValueFields({\n key: \"t\",\n }),\n },\n u: {\n ...getDefaultValueFields({\n key: \"u\",\n }),\n },\n v: {\n ...getDefaultValueFields({\n key: \"v\",\n }),\n },\n w: {\n ...getDefaultValueFields({\n key: \"w\",\n }),\n },\n x: {\n ...getDefaultValueFields({\n key: \"x\",\n }),\n },\n y: {\n ...getDefaultValueFields({\n key: \"y\",\n }),\n },\n z: {\n ...getDefaultValueFields({\n key: \"z\",\n }),\n },\n PHI: {\n ...getDefaultValueFields({\n key: \"PHI\",\n }),\n },\n NTHROOT3: {\n ...getDefaultValueFields({\n key: \"NTHROOT3\",\n }),\n },\n POW: {\n ...getDefaultValueFields({\n key: \"POW\",\n }),\n },\n LOG_B: {\n ...getDefaultValueFields({\n key: \"LOG_B\",\n }),\n },\n};\n\nexport default KeyConfigs;\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","/**\n * A small triangular decal to sit in the corner of a parent component.\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport {View} from \"../../fake-react-native-web/index\";\nimport {offBlack} from \"../common-style\";\n\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\ntype Props = {\n style: StyleType;\n};\n\nclass CornerDecal extends React.Component<Props> {\n render() {\n const {style} = this.props;\n\n const containerStyle = [\n styles.container,\n ...(Array.isArray(style) ? style : [style]),\n ];\n\n return (\n <View style={containerStyle}>\n <svg\n width={triangleSizePx}\n height={triangleSizePx}\n viewBox=\"4 4 8 8\"\n >\n <path\n fill={offBlack}\n opacity=\"0.3\"\n d=\"M5.29289322,5.70710678 L10.2928932,10.7071068 C10.9228581,11.3370716 12,10.8909049 12,10 L12,5 C12,4.44771525 11.5522847,4 11,4 L6,4 C5.10909515,4 4.66292836,5.07714192 5.29289322,5.70710678 Z\" // @Nolint\n />\n </svg>\n </View>\n );\n }\n}\n\nconst triangleSizePx = 7;\n\nconst styles = StyleSheet.create({\n container: {\n position: \"absolute\",\n top: 0,\n right: 0,\n width: triangleSizePx,\n height: triangleSizePx,\n },\n});\n\nexport default CornerDecal;\n","/**\n * Common styles shared across components.\n */\n\nimport {StyleSheet} from \"aphrodite\";\n\nimport {compactKeypadBorderRadiusPx} from \"../common-style\";\n\nexport default StyleSheet.create({\n row: {\n flexDirection: \"row\",\n },\n column: {\n flexDirection: \"column\",\n },\n oneColumn: {\n flexGrow: 1,\n },\n fullWidth: {\n width: \"100%\",\n },\n stretch: {\n alignItems: \"stretch\",\n },\n centered: {\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n centeredText: {\n textAlign: \"center\",\n },\n roundedTopLeft: {\n borderTopLeftRadius: compactKeypadBorderRadiusPx,\n },\n roundedTopRight: {\n borderTopRightRadius: compactKeypadBorderRadiusPx,\n },\n});\n","/**\n * A component that renders an icon with math (via KaTeX).\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport katex from \"katex\";\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport {View} from \"../../fake-react-native-web/index\";\nimport {iconSizeHeightPx, iconSizeWidthPx} from \"../common-style\";\n\nimport Styles from \"./styles\";\n\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\nconst {row, centered} = Styles;\n\ntype Props = {\n math: string;\n style: StyleType;\n};\n\nclass MathIcon extends React.Component<Props> {\n componentDidMount() {\n this._renderMath();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.math !== this.props.math) {\n this._renderMath();\n }\n }\n\n _renderMath = () => {\n const {math} = this.props;\n katex.render(math, ReactDOM.findDOMNode(this));\n };\n\n render() {\n const {style} = this.props;\n\n const containerStyle = [\n row,\n centered,\n styles.size,\n styles.base,\n ...(Array.isArray(style) ? style : [style]),\n ];\n\n return <View style={containerStyle} />;\n }\n}\n\nconst styles = StyleSheet.create({\n size: {\n height: iconSizeHeightPx,\n width: iconSizeWidthPx,\n },\n\n base: {\n fontSize: 25,\n },\n});\n\nexport default MathIcon;\n","/**\n * An autogenerated component that renders the COS iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Cos extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M13 12h24v24H13z\" />\n <path\n d=\"M18.182 29.168c1.386 0 2.226-.602 2.674-1.232l-1.162-1.078a1.707 1.707 0 0 1-1.428.728c-1.078 0-1.834-.798-1.834-1.974s.756-1.96 1.834-1.96c.616 0 1.106.252 1.428.728l1.162-1.092c-.448-.616-1.288-1.218-2.674-1.218-2.086 0-3.584 1.47-3.584 3.542 0 2.086 1.498 3.556 3.584 3.556zm6.972 0c2.24 0 3.584-1.624 3.584-3.556 0-1.918-1.344-3.542-3.584-3.542-2.226 0-3.57 1.624-3.57 3.542 0 1.932 1.344 3.556 3.57 3.556zm0-1.582c-1.106 0-1.722-.91-1.722-1.974 0-1.05.616-1.96 1.722-1.96 1.106 0 1.736.91 1.736 1.96 0 1.064-.63 1.974-1.736 1.974zm7.336 1.582c1.876 0 2.926-.938 2.926-2.17 0-2.73-4.004-1.89-4.004-2.898 0-.378.42-.672 1.064-.672.826 0 1.596.35 2.002.784l.714-1.218c-.672-.532-1.582-.924-2.73-.924-1.778 0-2.772.994-2.772 2.128 0 2.66 4.018 1.75 4.018 2.87 0 .42-.364.728-1.134.728-.84 0-1.848-.462-2.338-.924l-.77 1.246c.714.658 1.848 1.05 3.024 1.05z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Cos;\n","/**\n * An autogenerated component that renders the LOG iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Log extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M16.776 29v-9.338h-1.778V29h1.778zm4.9.168c2.24 0 3.584-1.624 3.584-3.556 0-1.918-1.344-3.542-3.584-3.542-2.226 0-3.57 1.624-3.57 3.542 0 1.932 1.344 3.556 3.57 3.556zm0-1.582c-1.106 0-1.722-.91-1.722-1.974 0-1.05.616-1.96 1.722-1.96 1.106 0 1.736.91 1.736 1.96 0 1.064-.63 1.974-1.736 1.974zm7.672 4.158c1.666 0 3.654-.63 3.654-3.206v-6.3H31.21v.868c-.546-.686-1.274-1.036-2.086-1.036-1.708 0-2.982 1.232-2.982 3.444 0 2.254 1.288 3.444 2.982 3.444.826 0 1.554-.392 2.086-1.064v.686c0 1.33-1.008 1.708-1.862 1.708-.854 0-1.568-.238-2.114-.84l-.798 1.288c.854.742 1.75 1.008 2.912 1.008zm.336-4.368c-1.008 0-1.708-.7-1.708-1.862 0-1.162.7-1.862 1.708-1.862.588 0 1.232.322 1.526.77v2.184c-.294.434-.938.77-1.526.77z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Log;\n","/**\n * An autogenerated component that renders the EQUAL iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Equal extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M16 21h17M16 27h17\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Equal;\n","/**\n * An autogenerated component that renders the BACKSPACE iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport * as React from \"react\";\n\nconst Backspace = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M13 24l6 6h14V18H19l-6 6zm-1.414-1.414l6-6A2 2 0 0 1 19 16h14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H19a2 2 0 0 1-1.414-.586l-6-6a2 2 0 0 1 0-2.828z\"\n fill=\"#888D93\"\n />\n <path\n d=\"M23 21l6 6M29 21l-6 6\"\n stroke=\"#888D93\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n};\n\nexport default Backspace;\n","/**\n * An autogenerated component that renders the SQRT iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Sqrt extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M14 29l4 6 9-14h7\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Sqrt;\n","/**\n * An autogenerated component that renders the EXP iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Exp extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M28 16.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM30 18h4v4h-4v-4zM14 21c0-.552.456-1 1.002-1h9.996A1 1 0 0 1 26 21v14c0 .552-.456 1-1.002 1h-9.996A1 1 0 0 1 14 35V21zm2 1h8v12h-8V22z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Exp;\n","/**\n * An autogenerated component that renders the NEQ iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Neq extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M19 33l10-18M16 21h17M16 27h17\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Neq;\n","/**\n * An autogenerated component that renders the GEQ iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Geq extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M16 33h16M16 30l16-6-16-6\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Geq;\n","/**\n * An autogenerated component that renders the LN iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Ln extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M20.836 29v-9.338h-1.778V29h1.778zm8.106 0v-4.774c0-1.316-.714-2.156-2.198-2.156-1.106 0-1.932.532-2.366 1.05v-.882H22.6V29h1.778v-4.55c.294-.406.84-.798 1.54-.798.756 0 1.246.322 1.246 1.26V29h1.778z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Ln;\n","/**\n * An autogenerated component that renders the DISMISS iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport * as React from \"react\";\n\nconst Dismiss = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M18 21l6 6 6-6\"\n strokeLinecap=\"round\"\n strokeWidth=\"2\"\n stroke=\"#71B307\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n};\n\nexport default Dismiss;\n","/**\n * An autogenerated component that renders the SIN iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Sin extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M18.655 29.168c1.876 0 2.926-.938 2.926-2.17 0-2.73-4.004-1.89-4.004-2.898 0-.378.42-.672 1.064-.672.826 0 1.596.35 2.002.784l.714-1.218c-.672-.532-1.582-.924-2.73-.924-1.778 0-2.772.994-2.772 2.128 0 2.66 4.018 1.75 4.018 2.87 0 .42-.364.728-1.134.728-.84 0-1.848-.462-2.338-.924l-.77 1.246c.714.658 1.848 1.05 3.024 1.05zm5.124-7.658c.588 0 1.064-.476 1.064-1.064 0-.588-.476-1.05-1.064-1.05a1.06 1.06 0 0 0-1.064 1.05c0 .588.49 1.064 1.064 1.064zm.896 7.49v-6.762h-1.778V29h1.778zm8.106 0v-4.774c0-1.316-.714-2.156-2.198-2.156-1.106 0-1.932.532-2.366 1.05v-.882h-1.778V29h1.778v-4.55c.294-.406.84-.798 1.54-.798.756 0 1.246.322 1.246 1.26V29h1.778z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Sin;\n","/**\n * An autogenerated component that renders the LT iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Lt extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M32 30l-16-6 16-6\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Lt;\n","/**\n * An autogenerated component that renders the CUBE_ROOT iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass CubeRoot extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M17.91 23.12c1.66 0 2.76-.81 2.76-1.98 0-.96-.86-1.51-1.57-1.58.79-.13 1.46-.72 1.46-1.5 0-1.1-.95-1.83-2.65-1.83-1.23 0-2.11.45-2.67 1.08l.83 1.08c.47-.42 1.05-.64 1.66-.64.64 0 1.12.19 1.12.61 0 .35-.39.52-1.08.52-.25 0-.77 0-.9-.01v1.53c.1-.01.61-.01.9-.01.91 0 1.19.18 1.19.56 0 .37-.38.65-1.12.65-.58 0-1.34-.23-1.82-.7l-.87 1.17c.52.6 1.48 1.05 2.76 1.05z\"\n fill={this.props.color}\n />\n <path\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M14 29l4 6 9-14h7\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default CubeRoot;\n","/**\n * An autogenerated component that renders the PLUS iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Plus extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M19 24h10M24 29V19\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Plus;\n","/**\n * An autogenerated component that renders the TAN iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Tan extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M16.93 29.168c.742 0 1.218-.196 1.484-.434l-.378-1.344c-.098.098-.35.196-.616.196-.392 0-.616-.322-.616-.742v-3.052h1.372v-1.554h-1.372V20.39h-1.792v1.848h-1.12v1.554h1.12v3.528c0 1.204.672 1.848 1.918 1.848zM25.232 29v-4.368c0-1.946-1.414-2.562-2.954-2.562-1.064 0-2.128.336-2.954 1.064l.672 1.19c.574-.532 1.246-.798 1.974-.798.896 0 1.484.448 1.484 1.134v.91c-.448-.532-1.246-.826-2.142-.826-1.078 0-2.352.602-2.352 2.184 0 1.512 1.274 2.24 2.352 2.24.882 0 1.68-.322 2.142-.868v.7h1.778zm-3.206-1.036c-.7 0-1.274-.364-1.274-.994 0-.658.574-1.022 1.274-1.022.574 0 1.134.196 1.428.588v.84c-.294.392-.854.588-1.428.588zM33.338 29v-4.774c0-1.316-.714-2.156-2.198-2.156-1.106 0-1.932.532-2.366 1.05v-.882h-1.778V29h1.778v-4.55c.294-.406.84-.798 1.54-.798.756 0 1.246.322 1.246 1.26V29h1.778z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Tan;\n","/**\n * An arrow icon, used by the other navigational keys.\n */\nimport * as React from \"react\";\n\nconst Arrow = (props) => {\n return (\n <g fill=\"none\" fillRule=\"evenodd\" {...props}>\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n stroke=\"#888D93\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M22 18l-6 6 6 6M16 24h16\"\n />\n </g>\n );\n};\n\nexport default Arrow;\n","/**\n * An component that renders the LEFT iconograpy in SVG.\n */\nimport * as React from \"react\";\n\nimport Arrow from \"./arrow\";\n\nconst Left = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <Arrow />\n </svg>\n );\n};\n\nexport default Left;\n","/**\n * A component that renders the UP iconograpy in SVG.\n */\nimport * as React from \"react\";\n\nimport Arrow from \"./arrow\";\n\nconst Up = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <Arrow transform=\"rotate(90 24 24)\" />\n </svg>\n );\n};\n\nexport default Up;\n","/**\n * A component that renders the DOWN iconograpy in SVG.\n */\nimport * as React from \"react\";\n\nimport Arrow from \"./arrow\";\n\nconst Down = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <Arrow transform=\"rotate(270 24 24)\" />\n </svg>\n );\n};\n\nexport default Down;\n","/**\n * An autogenerated component that renders the LEFT_PAREN iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass LeftParen extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M26 14c-4 6-4 14 0 20\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default LeftParen;\n","/**\n * An autogenerated component that renders the RIGHT_PAREN iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass RightParen extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M23 14c4 6 4 14 0 20\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default RightParen;\n","/**\n * An autogenerated component that renders the GT iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Gt extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M16 30l16-6-16-6\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Gt;\n","/**\n * An autogenerated component that renders the DIVIDE iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Divide extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M19 24h10\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle fill={this.props.color} cx=\"24\" cy=\"19.5\" r=\"1.5\" />\n <circle fill={this.props.color} cx=\"24\" cy=\"28.5\" r=\"1.5\" />\n </g>\n </svg>\n );\n }\n}\n\nexport default Divide;\n","/**\n * An autogenerated component that renders the PERIOD iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Period extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <circle fill={this.props.color} cx=\"24\" cy=\"30\" r=\"2\" />\n </g>\n </svg>\n );\n }\n}\n\nexport default Period;\n","/**\n * An autogenerated component that renders the PERCENT iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Percent extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <g transform=\"translate(12 12)\">\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <path\n d=\"M16 4L8 20\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle\n stroke={this.props.color}\n strokeWidth=\"2\"\n cx=\"7\"\n cy=\"7\"\n r=\"3\"\n />\n <circle\n stroke={this.props.color}\n strokeWidth=\"2\"\n cx=\"17\"\n cy=\"17\"\n r=\"3\"\n />\n </g>\n </g>\n </svg>\n );\n }\n}\n\nexport default Percent;\n","/**\n * An autogenerated component that renders the TIMES iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Times extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M20 20l8 8M28 20l-8 8\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Times;\n","/**\n * An autogenerated component that renders the EXP_3 iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Exp3 extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M14 21c0-.552.456-1 1.002-1h9.996A1 1 0 0 1 26 21v14c0 .552-.456 1-1.002 1h-9.996A1 1 0 0 1 14 35V21zm2 1h8v12h-8V22zM30.92 23.12c1.66 0 2.76-.81 2.76-1.98 0-.96-.86-1.51-1.57-1.58.79-.13 1.46-.72 1.46-1.5 0-1.1-.95-1.83-2.65-1.83-1.23 0-2.11.45-2.67 1.08l.83 1.08c.47-.42 1.05-.64 1.66-.64.64 0 1.12.19 1.12.61 0 .35-.39.52-1.08.52-.25 0-.77 0-.9-.01v1.53c.1-.01.61-.01.9-.01.91 0 1.19.18 1.19.56 0 .37-.38.65-1.12.65-.58 0-1.34-.23-1.82-.7l-.87 1.17c.52.6 1.48 1.05 2.76 1.05z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Exp3;\n","/**\n * An autogenerated component that renders the EXP_2 iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Exp2 extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M14 21c0-.552.456-1 1.002-1h9.996A1 1 0 0 1 26 21v14c0 .552-.456 1-1.002 1h-9.996A1 1 0 0 1 14 35V21zm2 1h8v12h-8V22zM33.67 23v-1.5h-2.44c1.66-1.16 2.39-2.03 2.39-3.05 0-1.34-1.13-2.22-2.7-2.22-.93 0-1.99.33-2.7 1.11l.95 1.14c.48-.45 1.04-.73 1.78-.73.49 0 .92.24.92.7 0 .66-.54 1.12-3.43 3.21V23h5.23z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Exp2;\n","/**\n * A component that renders the RIGHT iconograpy in SVG.\n */\nimport * as React from \"react\";\n\nimport Arrow from \"./arrow\";\n\nconst Right = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <Arrow transform=\"rotate(180 24 24)\" />\n </svg>\n );\n};\n\nexport default Right;\n","/**\n * An autogenerated component that renders the CDOT iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Cdot extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <g transform=\"translate(12 12)\">\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <circle fill={this.props.color} cx=\"12\" cy=\"12\" r=\"3\" />\n </g>\n </g>\n </svg>\n );\n }\n}\n\nexport default Cdot;\n","/**\n * An autogenerated component that renders the LOG_N iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass LogN extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M30 28.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM32 30h4v4h-4v-4zM12.776 29v-9.338h-1.778V29h1.778zm4.9.168c2.24 0 3.584-1.624 3.584-3.556 0-1.918-1.344-3.542-3.584-3.542-2.226 0-3.57 1.624-3.57 3.542 0 1.932 1.344 3.556 3.57 3.556zm0-1.582c-1.106 0-1.722-.91-1.722-1.974 0-1.05.616-1.96 1.722-1.96 1.106 0 1.736.91 1.736 1.96 0 1.064-.63 1.974-1.736 1.974zm7.672 4.158c1.666 0 3.654-.63 3.654-3.206v-6.3H27.21v.868c-.546-.686-1.274-1.036-2.086-1.036-1.708 0-2.982 1.232-2.982 3.444 0 2.254 1.288 3.444 2.982 3.444.826 0 1.554-.392 2.086-1.064v.686c0 1.33-1.008 1.708-1.862 1.708-.854 0-1.568-.238-2.114-.84l-.798 1.288c.854.742 1.75 1.008 2.912 1.008zm.336-4.368c-1.008 0-1.708-.7-1.708-1.862 0-1.162.7-1.862 1.708-1.862.588 0 1.232.322 1.526.77v2.184c-.294.434-.938.77-1.526.77z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default LogN;\n","/**\n * An autogenerated component that renders the LEQ iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Leq extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M16 33h16M32 30l-16-6 16-6\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Leq;\n","/**\n * An autogenerated component that renders the MINUS iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Minus extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M19 24h10\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Minus;\n","/**\n * An autogenerated component that renders the RADICAL iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Radical extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M13 16.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM15 18h4v4h-4v-4z\"\n fill={this.props.color}\n />\n <path\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M14 29l4 6 9-14h7\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Radical;\n","/**\n * An autogenerated component that renders the FRAC iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass FracInclusive extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <g transform=\"translate(12 12)\">\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <path\n d=\"M8 16.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997H8.997c-.55 0-.997-.453-.997-.997v-6.006zM10 18h4v4h-4v-4z\"\n fill={this.props.color}\n />\n <rect\n fill={this.props.color}\n x=\"2\"\n y=\"11\"\n width=\"20\"\n height=\"2\"\n rx=\"1\"\n />\n <path\n d=\"M8 .997C8 .447 8.453 0 8.997 0h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997H8.997C8.447 8 8 7.547 8 7.003V.997zM10 2h4v4h-4V2z\"\n fill={this.props.color}\n />\n </g>\n </g>\n </svg>\n );\n }\n}\n\nexport default FracInclusive;\n","/**\n * An autogenerated component that renders the JUMP_OUT_PARENTHESES iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport * as React from \"react\";\n\nconst JumpOutParentheses = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M24 18c3 3 3 9 0 12M18 18c-3 3-3 9 0 12\"\n stroke=\"#888D93\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n stroke=\"#78C008\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M32 27l3-3-3-3M22 24h12\"\n />\n </g>\n </svg>\n );\n};\n\nexport default JumpOutParentheses;\n","/**\n * An autogenerated component that renders the JUMP_OUT_EXPONENT iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport * as React from \"react\";\n\nconst JumpOutExponent = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M35 19v16M23 19l8 8M31 23v4h-4\"\n stroke=\"#78C008\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 12.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM14 14h4v4h-4v-4z\"\n fill=\"#888D93\"\n />\n </g>\n </svg>\n );\n};\n\nexport default JumpOutExponent;\n","/**\n * An autogenerated component that renders the JUMP_OUT_BASE iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport * as React from \"react\";\n\nconst JumpOutBase = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M12 28.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM14 30h4v4h-4v-4z\"\n fill=\"#888D93\"\n />\n <path\n d=\"M35 13v16M23 29l8-8M27 21h4v4\"\n stroke=\"#78C008\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n};\n\nexport default JumpOutBase;\n","/**\n * An autogenerated component that renders the JUMP_INTO_NUMERATOR iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport * as React from \"react\";\n\nconst JumpIntoNumerator = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M13 16v16M17 22l6-6M23 20v-4h-4\"\n stroke=\"#78C008\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M26 27.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM28 29h4v4h-4v-4z\"\n fill=\"#888D93\"\n />\n <path\n d=\"M35 24H25\"\n stroke=\"#888D93\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M26 13.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM28 15h4v4h-4v-4z\"\n fill=\"#78C008\"\n />\n </g>\n </svg>\n );\n};\n\nexport default JumpIntoNumerator;\n","/**\n * An autogenerated component that renders the JUMP_OUT_NUMERATOR iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport * as React from \"react\";\n\nconst JumpOutNumerator = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n stroke=\"#78C008\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M33 29l-3 3-3-3M30 18v14\"\n />\n <path\n d=\"M16 27.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM18 29h4v4h-4v-4z\"\n fill=\"#78C008\"\n />\n <path\n d=\"M25 24H15\"\n stroke=\"#888D93\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16 13.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM18 15h4v4h-4v-4z\"\n fill=\"#888D93\"\n />\n </g>\n </svg>\n );\n};\n\nexport default JumpOutNumerator;\n","/**\n * An autogenerated component that renders the JUMP_OUT_DENOMINATOR iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport * as React from \"react\";\n\nconst JumpOutDenominator = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path d=\"M0 0h48v48H0z\" />\n <path d=\"M12 12h24v24H12z\" />\n <path\n d=\"M35 16v16m-4-4v-4h-4m-2 6l6-6\"\n stroke=\"#78C008\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 27.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM16 29h4v4h-4v-4z\"\n fill=\"#888D93\"\n />\n <path\n d=\"M23 24H13\"\n stroke=\"#888D93\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 13.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM16 15h4v4h-4v-4z\"\n fill=\"#888D93\"\n />\n </g>\n </svg>\n );\n};\n\nexport default JumpOutDenominator;\n","/**\n * A directory of autogenerated icon components.\n */\n\nexport {default as COS} from \"./cos\";\nexport {default as LOG} from \"./log\";\nexport {default as EQUAL} from \"./equal\";\nexport {default as BACKSPACE} from \"./backspace\";\nexport {default as SQRT} from \"./sqrt\";\nexport {default as EXP} from \"./exp\";\nexport {default as NEQ} from \"./neq\";\nexport {default as GEQ} from \"./geq\";\nexport {default as LN} from \"./ln\";\nexport {default as DISMISS} from \"./dismiss\";\nexport {default as SIN} from \"./sin\";\nexport {default as LT} from \"./lt\";\nexport {default as CUBE_ROOT} from \"./cube-root\";\nexport {default as PLUS} from \"./plus\";\nexport {default as TAN} from \"./tan\";\nexport {default as LEFT} from \"./left\";\nexport {default as UP} from \"./up\";\nexport {default as DOWN} from \"./down\";\nexport {default as LEFT_PAREN} from \"./left-paren\";\nexport {default as RIGHT_PAREN} from \"./right-paren\";\nexport {default as GT} from \"./gt\";\nexport {default as DIVIDE} from \"./divide\";\nexport {default as PERIOD} from \"./period\";\nexport {default as PERCENT} from \"./percent\";\nexport {default as TIMES} from \"./times\";\nexport {default as EXP_3} from \"./exp-3\";\nexport {default as EXP_2} from \"./exp-2\";\nexport {default as RIGHT} from \"./right\";\nexport {default as CDOT} from \"./cdot\";\nexport {default as LOG_N} from \"./log-n\";\nexport {default as LEQ} from \"./leq\";\nexport {default as MINUS} from \"./minus\";\nexport {default as NEGATIVE} from \"./minus\";\nexport {default as RADICAL} from \"./radical\";\nexport {default as FRAC} from \"./frac\";\nexport {default as JUMP_OUT_PARENTHESES} from \"./jump-out-parentheses\";\nexport {default as JUMP_OUT_EXPONENT} from \"./jump-out-exponent\";\nexport {default as JUMP_OUT_BASE} from \"./jump-out-base\";\nexport {default as JUMP_INTO_NUMERATOR} from \"./jump-into-numerator\";\nexport {default as JUMP_OUT_NUMERATOR} from \"./jump-out-numerator\";\nexport {default as JUMP_OUT_DENOMINATOR} from \"./jump-out-denominator\";\n","/**\n * A component that renders a single SVG icon.\n */\n\nimport * as React from \"react\";\n\nimport * as Iconography from \"./iconography/index\";\n\ntype Props = {\n color: string;\n name: string;\n};\n\nclass SvgIcon extends React.Component<Props> {\n render() {\n const {color, name} = this.props;\n\n // eslint-disable-next-line import/namespace\n const SvgForName = Iconography[name];\n return <SvgForName color={color} />;\n }\n}\n\nexport default SvgIcon;\n","/**\n * A component that renders a text-based icon.\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport {View, Text} from \"../../fake-react-native-web/index\";\nimport {iconSizeHeightPx, iconSizeWidthPx} from \"../common-style\";\n\nimport Styles from \"./styles\";\n\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\nconst {row, centered} = Styles;\n\ntype Props = {\n character: string;\n style?: StyleType;\n};\n\nclass TextIcon extends React.Component<Props> {\n render() {\n const {character, style} = this.props;\n\n const containerStyle = [\n row,\n centered,\n styles.size,\n styles.base,\n ...(Array.isArray(style) ? style : [style]),\n ];\n return (\n <View style={containerStyle}>\n <Text>{character}</Text>\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n size: {\n height: iconSizeHeightPx,\n width: iconSizeWidthPx,\n },\n\n base: {\n fontFamily: \"Proxima Nova\",\n fontSize: 25,\n },\n});\n\nexport default TextIcon;\n","/**\n * A component that renders an icon for a symbol with the given name.\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport {IconType} from \"../../enums\";\nimport {offBlack} from \"../common-style\";\n\nimport MathIcon from \"./math-icon\";\nimport SvgIcon from \"./svg-icon\";\nimport TextIcon from \"./text-icon\";\n\nimport type {IconConfig} from \"../../types\";\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\nconst focusedColor = \"#FFF\";\nconst unfocusedColor = offBlack;\n\ntype Props = {\n focused: boolean;\n icon: IconConfig;\n style?: StyleType;\n};\n\nclass Icon extends React.PureComponent<Props> {\n render() {\n const {focused, icon, style} = this.props;\n\n const styleWithFocus: StyleType = [\n focused ? styles.focused : styles.unfocused,\n ...(Array.isArray(style) ? style : [style]),\n ];\n\n switch (icon.type) {\n case IconType.MATH:\n return <MathIcon math={icon.data} style={styleWithFocus} />;\n\n case IconType.SVG:\n // TODO(charlie): Support passing style objects to `SvgIcon`.\n // This will require migrating the individual icons to use\n // `currentColor` and accept a `className` prop, rather than\n // relying on an explicit color prop.\n return (\n <SvgIcon\n name={icon.data}\n color={focused ? focusedColor : unfocusedColor}\n />\n );\n\n case IconType.TEXT:\n return (\n <TextIcon character={icon.data} style={styleWithFocus} />\n );\n default:\n throw new Error(\"No icon or symbol provided\");\n }\n }\n}\n\nconst styles = StyleSheet.create({\n unfocused: {\n color: unfocusedColor,\n },\n\n focused: {\n color: focusedColor,\n },\n});\n\nexport default Icon;\n","/**\n * A grid of symbols, rendered as text and positioned based on the number of\n * symbols provided. Up to four symbols will be shown.\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport {IconType} from \"../../enums\";\nimport {View} from \"../../fake-react-native-web/index\";\nimport {IconConfig} from \"../../types\";\nimport {iconSizeHeightPx, iconSizeWidthPx} from \"../common-style\";\n\nimport Icon from \"./icon\";\nimport Styles from \"./styles\";\n\nconst {row, column, centered, fullWidth} = Styles;\n\ntype Props = {\n focused: boolean;\n icons: ReadonlyArray<IconConfig>;\n};\n\nclass MultiSymbolGrid extends React.Component<Props> {\n render() {\n const {focused, icons} = this.props;\n\n // Validate that we only received math-based icons. Right now, this\n // component only supports math icons (and it should only be passed\n // variables and Greek letters, which are always rendered as math).\n // Supporting other types of icons is possible but would require\n // some styles coercion and doesn't seem worthwhile right now.\n icons.forEach((icon) => {\n if (icon.type !== IconType.MATH) {\n throw new Error(\n `Received invalid icon: type=${icon.type}, ` +\n `data=${icon.data}`,\n );\n }\n });\n\n if (icons.length === 1) {\n return <Icon icon={icons[0]} focused={focused} />;\n } else {\n const primaryIconStyle = styles.base;\n const secondaryIconStyle = [styles.base, styles.secondary];\n\n if (icons.length === 2) {\n return (\n <View style={[row, styles.size]}>\n <View\n style={[\n column,\n centered,\n fullWidth,\n styles.middleLeft,\n ]}\n >\n <Icon\n style={primaryIconStyle}\n icon={icons[0]}\n focused={focused}\n />\n </View>\n <View\n style={[\n column,\n centered,\n fullWidth,\n styles.middleRight,\n ]}\n >\n <Icon\n style={secondaryIconStyle}\n icon={icons[1]}\n focused={focused}\n />\n </View>\n </View>\n );\n } else if (icons.length >= 3) {\n return (\n <View style={[column, styles.size]}>\n <View style={row}>\n <View style={[centered, fullWidth, styles.topLeft]}>\n <Icon\n style={primaryIconStyle}\n icon={icons[0]}\n focused={focused}\n />\n </View>\n <View\n style={[centered, fullWidth, styles.topRight]}\n >\n <Icon\n style={secondaryIconStyle}\n icon={icons[1]}\n focused={focused}\n />\n </View>\n </View>\n <View style={row}>\n <View\n style={[centered, fullWidth, styles.bottomLeft]}\n >\n <Icon\n style={secondaryIconStyle}\n icon={icons[2]}\n focused={focused}\n />\n </View>\n <View\n style={[\n centered,\n fullWidth,\n styles.bottomRight,\n ]}\n >\n {icons[3] && (\n <Icon\n style={secondaryIconStyle}\n icon={icons[3]}\n focused={focused}\n />\n )}\n </View>\n </View>\n </View>\n );\n }\n }\n\n throw new Error(`Invalid number of icons: ${icons.length}`);\n }\n}\n\nconst verticalInsetPx = 2;\nconst horizontalInsetPx = 4;\n\nconst styles = StyleSheet.create({\n size: {\n height: iconSizeHeightPx,\n width: iconSizeWidthPx,\n },\n\n // For the three- and four-icon layouts.\n bottomLeft: {\n marginBottom: verticalInsetPx,\n marginLeft: horizontalInsetPx,\n },\n topLeft: {\n marginTop: verticalInsetPx,\n marginLeft: horizontalInsetPx,\n },\n topRight: {\n marginTop: verticalInsetPx,\n marginRight: horizontalInsetPx,\n },\n bottomRight: {\n marginBottom: verticalInsetPx,\n marginRight: horizontalInsetPx,\n },\n\n // For the two-icon layout.\n middleLeft: {\n marginLeft: horizontalInsetPx,\n },\n middleRight: {\n marginRight: horizontalInsetPx,\n },\n\n base: {\n fontSize: 18,\n },\n\n secondary: {\n opacity: 0.3,\n },\n});\n\nexport default MultiSymbolGrid;\n","/**\n * A component that renders a keypad button.\n */\n\nimport {StyleSheet, css} from \"aphrodite\";\nimport * as React from \"react\";\nimport {connect} from \"react-redux\";\n\nimport {BorderDirection, BorderStyles, KeyType, KeyTypes} from \"../../enums\";\nimport {View} from \"../../fake-react-native-web/index\";\nimport {\n wonderBlocksBlue,\n innerBorderColor,\n innerBorderStyle,\n innerBorderWidthPx,\n valueGrey,\n operatorGrey,\n controlGrey,\n emptyGrey,\n} from \"../common-style\";\n\nimport CornerDecal from \"./corner-decal\";\nimport Icon from \"./icon\";\nimport MultiSymbolGrid from \"./multi-symbol-grid\";\n\nimport type {Border, NonManyKeyConfig, IconConfig} from \"../../types\";\nimport type {State} from \"./store/types\";\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\ninterface ReduxProps {\n heightPx: number;\n widthPx: number;\n}\n\ninterface Props extends ReduxProps {\n ariaLabel?: string;\n borders: Border;\n childKeys: ReadonlyArray<NonManyKeyConfig>;\n disabled: boolean;\n focused: boolean;\n popoverEnabled: boolean;\n type: KeyType;\n icon?: IconConfig;\n style?: StyleType;\n onTouchCancel?: (evt: React.TouchEvent<HTMLDivElement>) => void;\n onTouchEnd?: (evt: React.TouchEvent<HTMLDivElement>) => void;\n onTouchMove?: (evt: React.TouchEvent<HTMLDivElement>) => void;\n onTouchStart?: (evt: React.TouchEvent<HTMLDivElement>) => void;\n // NOTE(matthewc)[LC-754] this is a normal React thing, but TS\n // gets mad if I don't explicitly set it as a prop\n ref?: (any) => void;\n}\n\n// eslint-disable-next-line react/no-unsafe\nclass KeypadButton extends React.PureComponent<Props> {\n buttonSizeStyle: StyleType | undefined;\n\n static defaultProps = {\n borders: BorderStyles.ALL,\n childKeys: [],\n disabled: false,\n focused: false,\n popoverEnabled: false,\n };\n\n UNSAFE_componentWillMount() {\n this.buttonSizeStyle = styleForButtonDimensions(\n this.props.heightPx,\n this.props.widthPx,\n );\n }\n\n componentDidMount() {\n this._preInjectStyles();\n }\n\n UNSAFE_componentWillUpdate(newProps, newState) {\n // Only recompute the Aphrodite StyleSheet when the button height has\n // changed. Though it is safe to recompute the StyleSheet (since\n // they're content-addressable), it saves us a bunch of hashing and\n // other work to cache it here.\n if (\n newProps.heightPx !== this.props.heightPx ||\n newProps.widthPx !== this.props.widthPx\n ) {\n this.buttonSizeStyle = styleForButtonDimensions(\n newProps.heightPx,\n newProps.widthPx,\n );\n\n this._preInjectStyles();\n }\n }\n\n _preInjectStyles = () => {\n // HACK(charlie): Pre-inject all of the possible styles for the button.\n // This avoids a flickering effect in the echo animation whereby the\n // echoes vary in size as they animate. Note that we need to account for\n // the \"initial\" styles that `View` will include, as these styles are\n // applied to `View` components and Aphrodite will consolidate the style\n // object. This method must be called whenever a property that\n // influences the possible outcomes of `this._getFocusStyle` and\n // `this._getButtonStyle` changes (such as `this.buttonSizeStyle`).\n for (const type of KeyTypes) {\n css(View.styles.initial, ...this._getFocusStyle(type));\n\n for (const borders of Object.values(BorderStyles)) {\n css(\n View.styles.initial,\n ...this._getButtonStyle(type, borders),\n );\n }\n }\n };\n\n _getFocusStyle = (type: KeyType) => {\n let focusBackgroundStyle;\n if (type === \"INPUT_NAVIGATION\" || type === \"KEYPAD_NAVIGATION\") {\n focusBackgroundStyle = styles.light;\n } else {\n focusBackgroundStyle = styles.bright;\n }\n\n return [styles.focusBox, focusBackgroundStyle];\n };\n\n _getButtonStyle = (type, borders, style?) => {\n // Select the appropriate style for the button.\n let backgroundStyle;\n switch (type) {\n case \"EMPTY\":\n backgroundStyle = styles.empty;\n break;\n\n case \"MANY\":\n case \"VALUE\":\n backgroundStyle = styles.value;\n break;\n\n case \"OPERATOR\":\n backgroundStyle = styles.operator;\n break;\n\n case \"INPUT_NAVIGATION\":\n case \"KEYPAD_NAVIGATION\":\n backgroundStyle = styles.control;\n break;\n\n case \"ECHO\":\n backgroundStyle = null;\n break;\n }\n\n const borderStyle = [];\n if (borders.includes(BorderDirection.LEFT)) {\n // @ts-expect-error TS2345\n borderStyle.push(styles.leftBorder);\n }\n if (borders.includes(BorderDirection.BOTTOM)) {\n // @ts-expect-error TS2345\n borderStyle.push(styles.bottomBorder);\n }\n\n return [\n styles.buttonBase,\n backgroundStyle,\n ...borderStyle,\n type === \"ECHO\" && styles.echo,\n this.buttonSizeStyle,\n // React Native allows you to set the 'style' props on user defined\n // components.\n // See: https://facebook.github.io/react-native/docs/style.html\n ...(Array.isArray(style) ? style : [style]),\n ];\n };\n\n render() {\n const {\n ariaLabel,\n borders,\n childKeys,\n disabled,\n focused,\n icon,\n onTouchCancel,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n popoverEnabled,\n style,\n type,\n } = this.props;\n\n // We render in the focus state if the key is focused, or if it's an\n // echo.\n const renderFocused =\n (!disabled && focused) || popoverEnabled || type === \"ECHO\";\n const buttonStyle = this._getButtonStyle(type, borders, style);\n const focusStyle = this._getFocusStyle(type);\n const iconWrapperStyle = [\n styles.iconWrapper,\n disabled ? styles.disabled : undefined,\n ];\n\n const eventHandlers = {\n onTouchCancel,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n };\n\n const maybeFocusBox = renderFocused && <View style={focusStyle} />;\n const maybeCornerDecal = !renderFocused &&\n !disabled &&\n childKeys &&\n childKeys.length > 0 && <CornerDecal style={styles.decalInset} />;\n\n if (type === \"EMPTY\") {\n return <View style={buttonStyle} {...eventHandlers} />;\n } else if (type === \"MANY\") {\n // TODO(charlie): Make the long-press interaction accessible. See\n // the TODO in key-configs.js for more.\n const manyButtonA11yMarkup = {\n role: \"button\",\n ariaLabel: childKeys[0].ariaLabel,\n };\n const icons = childKeys.map((keyConfig) => {\n return keyConfig.icon;\n }) as ReadonlyArray<IconConfig>;\n return (\n <View\n style={buttonStyle}\n {...eventHandlers}\n {...manyButtonA11yMarkup}\n >\n {maybeFocusBox}\n <View style={iconWrapperStyle}>\n <MultiSymbolGrid\n icons={icons}\n focused={renderFocused}\n />\n </View>\n {maybeCornerDecal}\n </View>\n );\n } else {\n const a11yMarkup = {\n role: \"button\",\n ariaLabel: ariaLabel,\n };\n\n return (\n <View style={buttonStyle} {...eventHandlers} {...a11yMarkup}>\n {maybeFocusBox}\n <View style={iconWrapperStyle}>\n <Icon\n icon={icon as IconConfig}\n focused={renderFocused}\n />\n </View>\n {maybeCornerDecal}\n </View>\n );\n }\n }\n}\n\nconst focusInsetPx = 4;\nconst focusBoxZIndex = 0;\n\nconst styles = StyleSheet.create({\n buttonBase: {\n flex: 1,\n cursor: \"pointer\",\n // Make the text unselectable\n userSelect: \"none\",\n justifyContent: \"center\",\n alignItems: \"center\",\n // Borders are made selectively visible.\n borderColor: innerBorderColor,\n borderStyle: innerBorderStyle,\n boxSizing: \"border-box\",\n },\n\n decalInset: {\n top: focusInsetPx,\n right: focusInsetPx,\n },\n\n // Overrides for the echo state, where we want to render the borders for\n // layout purposes, but we don't want them to be visible.\n echo: {\n borderColor: \"transparent\",\n },\n\n // Background colors and other base styles that may vary between key types.\n value: {\n backgroundColor: valueGrey,\n },\n operator: {\n backgroundColor: operatorGrey,\n },\n control: {\n backgroundColor: controlGrey,\n },\n empty: {\n backgroundColor: emptyGrey,\n cursor: \"default\",\n },\n\n bright: {\n backgroundColor: wonderBlocksBlue,\n },\n light: {\n backgroundColor: \"rgba(33, 36, 44, 0.1)\",\n },\n\n iconWrapper: {\n zIndex: focusBoxZIndex + 1,\n },\n\n focusBox: {\n position: \"absolute\",\n zIndex: focusBoxZIndex,\n left: focusInsetPx,\n right: focusInsetPx,\n bottom: focusInsetPx,\n top: focusInsetPx,\n borderRadius: 1,\n },\n\n disabled: {\n opacity: 0.3,\n },\n\n // Styles used to render the appropriate borders. Buttons are only allowed\n // to render left and bottom borders, to simplify layout.\n leftBorder: {\n borderLeftWidth: innerBorderWidthPx,\n },\n bottomBorder: {\n borderBottomWidth: innerBorderWidthPx,\n },\n});\n\nconst styleForButtonDimensions = (heightPx, widthPx) => {\n return StyleSheet.create({\n // eslint-disable-next-line react-native/no-unused-styles\n buttonSize: {\n height: heightPx,\n width: widthPx,\n maxWidth: widthPx,\n },\n }).buttonSize;\n};\n\nconst mapStateToProps = (state: State): ReduxProps => {\n return {\n heightPx: state.layout.buttonDimensions.heightPx,\n widthPx: state.layout.buttonDimensions.widthPx,\n };\n};\n\nexport default connect(mapStateToProps, null, null, {forwardRef: true})(\n KeypadButton,\n);\n","/**\n * A keypad button containing no symbols and triggering no actions on click.\n */\n\nimport * as React from \"react\";\nimport {connect} from \"react-redux\";\n\nimport KeyConfigs from \"../../data/key-configs\";\n\nimport GestureManager from \"./gesture-manager\";\nimport KeypadButton from \"./keypad-button\";\n\nimport type {State} from \"./store/types\";\n\ninterface ReduxProps {\n gestureManager: GestureManager;\n}\n\nclass EmptyKeypadButton extends React.Component<ReduxProps> {\n render() {\n const {gestureManager, ...rest} = this.props;\n\n // Register touch events on the button, but don't register its DOM node\n // or compute focus state or anything like that. We want the gesture\n // manager to know about touch events that start on empty buttons, but\n // we don't need it to know about their DOM nodes, as it doesn't need\n // to focus them or trigger presses.\n return (\n <KeypadButton\n onTouchStart={(evt: React.TouchEvent<HTMLDivElement>) =>\n gestureManager.onTouchStart(evt)\n }\n onTouchEnd={(evt: React.TouchEvent<HTMLDivElement>) =>\n gestureManager.onTouchEnd(evt)\n }\n onTouchMove={(evt: React.TouchEvent<HTMLDivElement>) =>\n gestureManager.onTouchMove(evt)\n }\n onTouchCancel={(evt: React.TouchEvent<HTMLDivElement>) =>\n gestureManager.onTouchCancel(evt)\n }\n {...KeyConfigs.NOOP}\n {...rest}\n />\n );\n }\n}\n\nconst mapStateToProps = (state: State): ReduxProps => {\n const {gestures} = state;\n return {\n gestureManager: gestures.gestureManager,\n };\n};\n\nexport default connect(mapStateToProps, null, null, {forwardRef: true})(\n EmptyKeypadButton,\n);\n","/**\n * A touchable wrapper around the base KeypadButton component. This button is\n * responsible for keeping our button ID system (which will be used to handle\n * touch events globally) opaque to the KeypadButton.\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {connect} from \"react-redux\";\n\nimport KeyConfigs from \"../../data/key-configs\";\nimport Key from \"../../data/keys\";\nimport {KeyType} from \"../../enums\";\n\nimport GestureManager from \"./gesture-manager\";\nimport KeypadButton from \"./keypad-button\";\n\nimport type {Border, IconConfig, KeyConfig} from \"../../types\";\nimport type {State} from \"./store/types\";\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\ninterface SharedProps {\n borders?: Border;\n disabled?: boolean;\n style?: StyleType;\n}\n\ninterface OwnProps extends SharedProps {\n keyConfig: KeyConfig;\n}\n\ninterface Props extends SharedProps {\n childKeyIds?: ReadonlyArray<string>;\n gestureManager: GestureManager;\n id: Key;\n focused: boolean;\n popoverEnabled: boolean;\n childKeys?: ReadonlyArray<KeyConfig>;\n ariaLabel?: string;\n icon?: IconConfig;\n type: KeyType;\n}\n\nclass TouchableKeypadButton extends React.Component<Props> {\n shouldComponentUpdate(newProps: Props) {\n // We take advantage of a few different properties of our key\n // configuration system. Namely, we know that the other props flow\n // directly from the ID, and thus don't need to be checked. If a key has\n // a custom style, we bail out (this should be rare).\n return (\n newProps.id !== this.props.id ||\n newProps.gestureManager !== this.props.gestureManager ||\n newProps.focused !== this.props.focused ||\n newProps.disabled !== this.props.disabled ||\n newProps.popoverEnabled !== this.props.popoverEnabled ||\n newProps.type !== this.props.type ||\n !!newProps.style\n );\n }\n\n componentWillUnmount() {\n const {gestureManager, id} = this.props;\n gestureManager.unregisterDOMNode(id);\n }\n\n render() {\n const {\n borders,\n childKeyIds,\n disabled,\n gestureManager,\n id,\n style,\n ...rest\n } = this.props;\n\n // Only bind the relevant event handlers if the key is enabled.\n const eventHandlers = disabled\n ? {\n onTouchStart: (evt) => evt.preventDefault(),\n }\n : {\n onTouchStart: (evt) => gestureManager.onTouchStart(evt, id),\n onTouchEnd: (evt) => gestureManager.onTouchEnd(evt),\n onTouchMove: (evt) => gestureManager.onTouchMove(evt),\n onTouchCancel: (evt) => gestureManager.onTouchCancel(evt),\n };\n\n const styleWithAddons = [\n ...(Array.isArray(style) ? style : [style]),\n styles.preventScrolls,\n ];\n\n return (\n <KeypadButton\n ref={(node) =>\n gestureManager.registerDOMNode(\n id,\n ReactDOM.findDOMNode(node),\n childKeyIds,\n )\n }\n borders={borders}\n disabled={disabled}\n style={styleWithAddons}\n {...eventHandlers}\n {...rest}\n />\n );\n }\n}\n\nconst extractProps = (keyConfig: KeyConfig) => {\n const {ariaLabel, icon, type} = keyConfig;\n return {ariaLabel, icon, type};\n};\n\nconst mapStateToProps = (state: State, ownProps: OwnProps): Props => {\n const {gestures} = state;\n\n const {keyConfig, ...rest} = ownProps;\n const {id, type} = keyConfig;\n\n const childKeyIds =\n \"childKeyIds\" in keyConfig ? keyConfig.childKeyIds : undefined;\n\n const childKeys: readonly KeyConfig[] | undefined = childKeyIds\n ? childKeyIds.map((id) => KeyConfigs[id])\n : undefined;\n\n // Override with the default child props, if the key is a multi-symbol key\n // (but not a many-symbol key, which operates under different rules).\n const useFirstChildProps =\n type !== \"MANY\" && childKeys && childKeys.length > 0;\n\n return {\n ...rest,\n childKeyIds: childKeyIds,\n gestureManager: gestures.gestureManager,\n id: id,\n\n // Add in some gesture state.\n focused: gestures.focus === id,\n popoverEnabled: gestures.popover?.parentId === id,\n\n // Pass down the child keys and any extracted props.\n childKeys,\n ...extractProps(useFirstChildProps ? childKeys[0] : keyConfig),\n };\n};\n\nconst styles = StyleSheet.create({\n preventScrolls: {\n // Touch events that start in the touchable buttons shouldn't be\n // allowed to produce page scrolls.\n touchAction: \"none\",\n },\n});\n\nexport default connect(mapStateToProps, null, null, {forwardRef: true})(\n TouchableKeypadButton,\n);\n","/**\n * A keypad button that displays an arbitrary number of symbols, with no\n * 'default' symbol.\n */\n\nimport * as React from \"react\";\n\nimport KeyConfigs from \"../../data/key-configs\";\nimport {IconType} from \"../../enums\";\nimport {KeyConfig} from \"../../types\";\n\nimport EmptyKeypadButton from \"./empty-keypad-button\";\nimport TouchableKeypadButton from \"./touchable-keypad-button\";\n\ntype Props = {\n keys: ReadonlyArray<string>;\n};\n\nclass ManyKeypadButton extends React.Component<Props> {\n static defaultProps = {\n keys: [],\n };\n\n render() {\n const {keys, ...rest} = this.props;\n\n // If we have no extra symbols, render an empty button. If we have just\n // one, render a standard button. Otherwise, capture them all in a\n // single button.\n if (keys.length === 0) {\n return <EmptyKeypadButton />;\n } else if (keys.length === 1) {\n const keyConfig = KeyConfigs[keys[0]];\n return <TouchableKeypadButton keyConfig={keyConfig} {...rest} />;\n } else {\n const keyConfig: KeyConfig = {\n id: \"MANY\",\n type: \"MANY\",\n childKeyIds: keys,\n ariaLabel: keys\n .map((key) => KeyConfigs[key].ariaLabel)\n .join(\", \"),\n icon: {\n type: IconType.SVG,\n data: \"many\",\n },\n };\n return <TouchableKeypadButton keyConfig={keyConfig} {...rest} />;\n }\n }\n}\n\nexport default ManyKeypadButton;\n","import * as React from \"react\";\n\nimport type {TabbarItemType} from \"./types\";\n\ntype Props = {\n tintColor: string;\n type: TabbarItemType;\n};\n\nconst IconAsset = function ({tintColor, type}: Props): React.ReactElement {\n switch (type) {\n case \"Geometry\": {\n return (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.57584 7.09442C7.92723 6.92984 8.3421 6.98339 8.64018 7.23179L26.6402 22.2318C26.9636 22.5013 27.0836 22.9446 26.9403 23.3404C26.7969 23.7363 26.421 24 26 24H8C7.44772 24 7 23.5523 7 23V8.00001C7 7.61199 7.22446 7.259 7.57584 7.09442ZM9 10.1351V17H13C13.5523 17 14 17.4477 14 18V22H23.238L9 10.1351ZM12 22V19H9V22H12Z\"\n fill={tintColor}\n />\n </svg>\n );\n }\n case \"Operators\": {\n return (\n <svg\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M29 6H30V7H29V6ZM27 6C27 4.89543 27.8954 4 29 4H30C31.1046 4 32 4.89543 32 6V7C32 8.10457 31.1046 9 30 9H29C27.8954 9 27 8.10457 27 7V6ZM11.1318 6.50386C11.3098 6.19229 11.6411 6 12 6H14C14.5523 6 15 6.44772 15 7C15 7.55228 14.5523 8 14 8H12.5803L8.86824 14.4961C8.68527 14.8163 8.34091 15.0098 7.97225 14.9996C7.6036 14.9894 7.2705 14.7771 7.10557 14.4472L5.10557 10.4472C4.85858 9.95324 5.05881 9.35256 5.55279 9.10557C6.04676 8.85858 6.64744 9.05881 6.89443 9.55279L8.0588 11.8815L11.1318 6.50386ZM7.70676 16.2925C8.09748 16.6829 8.09779 17.316 7.70745 17.7068C7.28543 18.1292 6.84383 18.7303 6.51157 19.3658C6.17039 20.0184 6 20.601 6 21C6 21.3789 6.17235 21.9897 6.51638 22.6649C6.85315 23.3259 7.28488 23.9121 7.66786 24.2557C8.07892 24.6246 8.11314 25.2568 7.74429 25.6679C7.37544 26.0789 6.7432 26.1131 6.33214 25.7443C5.7161 25.1915 5.14783 24.3844 4.73434 23.5728C4.32813 22.7755 3.99999 21.8345 4 21C4.00001 20.1391 4.3301 19.2217 4.73917 18.4392C5.15715 17.6397 5.71554 16.8708 6.29255 16.2932C6.68288 15.9025 7.31605 15.9022 7.70676 16.2925ZM11.2932 16.2925C11.684 15.9022 12.3171 15.9025 12.7075 16.2932C13.2845 16.8708 13.8428 17.6397 14.2608 18.4392C14.6699 19.2217 15 20.1391 15 21C15 21.8345 14.6719 22.7755 14.2657 23.5728C13.8522 24.3844 13.2839 25.1915 12.6679 25.7443C12.2568 26.1131 11.6246 26.0789 11.2557 25.6679C10.8869 25.2568 10.9211 24.6246 11.3321 24.2557C11.7151 23.9121 12.1469 23.3259 12.4836 22.6649C12.8276 21.9897 13 21.3789 13 21C13 20.601 12.8296 20.0184 12.4884 19.3658C12.1562 18.7303 11.7146 18.1292 11.2925 17.7068C10.9022 17.316 10.9025 16.6829 11.2932 16.2925ZM27.9363 17.6489C28.1302 18.166 27.8682 18.7424 27.3511 18.9363L21.848 21L27.3511 23.0637C27.8682 23.2576 28.1302 23.834 27.9363 24.3511C27.7424 24.8682 27.166 25.1302 26.6489 24.9363L18.6489 21.9363C18.2586 21.79 18 21.4168 18 21C18 20.5832 18.2586 20.21 18.6489 20.0637L26.6489 17.0637C27.166 16.8698 27.7424 17.1318 27.9363 17.6489ZM21 8V13H24V8H21ZM20 6C19.4477 6 19 6.44772 19 7V14C19 14.5523 19.4477 15 20 15H25C25.5523 15 26 14.5523 26 14V7C26 6.44772 25.5523 6 25 6H20Z\"\n fill={tintColor}\n />\n </svg>\n );\n }\n case \"Numbers\": {\n return (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10.4123 19.5794V21.0004H4.71434V19.5794H6.73034V14.0214C6.73034 13.9001 6.73267 13.7764 6.73734 13.6504C6.742 13.5244 6.749 13.3961 6.75834 13.2654L5.42834 14.3714C5.335 14.4414 5.244 14.4858 5.15534 14.5044C5.06667 14.5231 4.98267 14.5254 4.90334 14.5114C4.824 14.4928 4.754 14.4648 4.69334 14.4274C4.63267 14.3854 4.586 14.3434 4.55334 14.3014L3.94434 13.4824L7.06634 10.8364H8.65534V19.5794H10.4123ZM18.7924 19.2294C19.0024 19.2294 19.1658 19.2878 19.2824 19.4044C19.4038 19.5211 19.4644 19.6751 19.4644 19.8664V21.0004H12.4224V20.3704C12.4224 20.2491 12.4481 20.1184 12.4994 19.9784C12.5508 19.8338 12.6371 19.7031 12.7584 19.5864L15.7684 16.5694C16.0251 16.3128 16.2514 16.0678 16.4474 15.8344C16.6434 15.5964 16.8068 15.3654 16.9374 15.1414C17.0681 14.9128 17.1661 14.6818 17.2314 14.4484C17.2968 14.2151 17.3294 13.9701 17.3294 13.7134C17.3294 13.2608 17.2128 12.9178 16.9794 12.6844C16.7461 12.4464 16.4171 12.3274 15.9924 12.3274C15.8058 12.3274 15.6331 12.3554 15.4744 12.4114C15.3204 12.4628 15.1804 12.5351 15.0544 12.6284C14.9331 12.7218 14.8281 12.8314 14.7394 12.9574C14.6508 13.0834 14.5854 13.2211 14.5434 13.3704C14.4594 13.6038 14.3451 13.7601 14.2004 13.8394C14.0604 13.9141 13.8598 13.9304 13.5984 13.8884L12.5764 13.7064C12.6511 13.2118 12.7911 12.7778 12.9964 12.4044C13.2018 12.0311 13.4584 11.7208 13.7664 11.4734C14.0744 11.2261 14.4268 11.0418 14.8234 10.9204C15.2201 10.7944 15.6471 10.7314 16.1044 10.7314C16.5851 10.7314 17.0214 10.8038 17.4134 10.9484C17.8101 11.0884 18.1484 11.2868 18.4284 11.5434C18.7084 11.7954 18.9254 12.1011 19.0794 12.4604C19.2334 12.8198 19.3104 13.2164 19.3104 13.6504C19.3104 14.0238 19.2568 14.3691 19.1494 14.6864C19.0421 15.0038 18.8951 15.3071 18.7084 15.5964C18.5264 15.8811 18.3141 16.1588 18.0714 16.4294C17.8288 16.7001 17.5721 16.9731 17.3014 17.2484L15.1454 19.4534C15.3834 19.3834 15.6191 19.3298 15.8524 19.2924C16.0858 19.2504 16.3051 19.2294 16.5104 19.2294H18.7924ZM21.4535 13.7064C21.5282 13.2118 21.6682 12.7778 21.8735 12.4044C22.0789 12.0311 22.3355 11.7208 22.6435 11.4734C22.9515 11.2261 23.3015 11.0418 23.6935 10.9204C24.0902 10.7944 24.5172 10.7314 24.9745 10.7314C25.4599 10.7314 25.8939 10.8014 26.2765 10.9414C26.6639 11.0768 26.9905 11.2634 27.2565 11.5014C27.5225 11.7394 27.7255 12.0171 27.8655 12.3344C28.0102 12.6518 28.0825 12.9924 28.0825 13.3564C28.0825 13.6784 28.0475 13.9631 27.9775 14.2104C27.9122 14.4531 27.8119 14.6654 27.6765 14.8474C27.5459 15.0294 27.3825 15.1834 27.1865 15.3094C26.9952 15.4354 26.7735 15.5404 26.5215 15.6244C27.6882 16.0071 28.2715 16.7841 28.2715 17.9554C28.2715 18.4734 28.1759 18.9308 27.9845 19.3274C27.7932 19.7194 27.5365 20.0484 27.2145 20.3144C26.8925 20.5804 26.5169 20.7811 26.0875 20.9164C25.6629 21.0471 25.2172 21.1124 24.7505 21.1124C24.2559 21.1124 23.8195 21.0564 23.4415 20.9444C23.0635 20.8324 22.7299 20.6644 22.4405 20.4404C22.1559 20.2164 21.9109 19.9364 21.7055 19.6004C21.5002 19.2598 21.3205 18.8631 21.1665 18.4104L22.0205 18.0604C22.2445 17.9671 22.4522 17.9414 22.6435 17.9834C22.8395 18.0254 22.9795 18.1281 23.0635 18.2914C23.1569 18.4688 23.2549 18.6321 23.3575 18.7814C23.4649 18.9308 23.5839 19.0614 23.7145 19.1734C23.8452 19.2808 23.9922 19.3648 24.1555 19.4254C24.3235 19.4861 24.5149 19.5164 24.7295 19.5164C25.0002 19.5164 25.2359 19.4721 25.4365 19.3834C25.6372 19.2948 25.8052 19.1804 25.9405 19.0404C26.0759 18.8958 26.1762 18.7348 26.2415 18.5574C26.3115 18.3754 26.3465 18.1958 26.3465 18.0184C26.3465 17.7851 26.3255 17.5751 26.2835 17.3884C26.2415 17.1971 26.1435 17.0361 25.9895 16.9054C25.8402 16.7701 25.6162 16.6674 25.3175 16.5974C25.0235 16.5228 24.6222 16.4854 24.1135 16.4854V15.1274C24.5382 15.1274 24.8859 15.0924 25.1565 15.0224C25.4272 14.9524 25.6395 14.8544 25.7935 14.7284C25.9475 14.6024 26.0525 14.4508 26.1085 14.2734C26.1692 14.0961 26.1995 13.9024 26.1995 13.6924C26.1995 13.2491 26.0829 12.9108 25.8495 12.6774C25.6209 12.4441 25.2942 12.3274 24.8695 12.3274C24.6829 12.3274 24.5102 12.3554 24.3515 12.4114C24.1975 12.4628 24.0575 12.5351 23.9315 12.6284C23.8102 12.7218 23.7052 12.8314 23.6165 12.9574C23.5279 13.0834 23.4625 13.2211 23.4205 13.3704C23.3319 13.6038 23.2175 13.7601 23.0775 13.8394C22.9375 13.9141 22.7345 13.9304 22.4685 13.8884L21.4535 13.7064Z\"\n fill={tintColor}\n />\n </svg>\n );\n }\n case \"Extras\": {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M232,172a36,36,0,0,1-72,0V72H96V200a8,8,0,0,1-16,0V72H72a40,40,0,0,0-40,40,8,8,0,0,1-16,0A56.06,56.06,0,0,1,72,56H224a8,8,0,0,1,0,16H176V172a20,20,0,0,0,40,0,8,8,0,0,1,16,0Z\" />\n </svg>\n );\n }\n default: {\n // type as never;\n throw new Error(\"Invalid icon type\");\n }\n }\n};\n\nexport default IconAsset;\n","import Clickable from \"@khanacademy/wonder-blocks-clickable\";\nimport Color from \"@khanacademy/wonder-blocks-color\";\nimport {View} from \"@khanacademy/wonder-blocks-core\";\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport IconAsset from \"./icons\";\n\nimport type {TabbarItemType} from \"./types\";\n\nconst styles = StyleSheet.create({\n base: {\n display: \"flex\",\n width: 44,\n height: 38,\n boxSizing: \"border-box\",\n borderRadius: 3,\n border: `1px solid transparent`,\n marginRight: 1,\n marginLeft: 1,\n },\n hovered: {\n background: `linear-gradient(0deg, rgba(24, 101, 242, 0.32), rgba(24, 101, 242, 0.32)), ${Color.white}`,\n border: \"1px solid #1865F2\",\n },\n pressed: {\n background: \"#1B50B3\",\n },\n focused: {\n outline: \"none\",\n border: `2px solid ${Color.blue}`,\n },\n innerBox: {\n boxSizing: \"border-box\",\n border: `1px solid transparent`,\n borderRadius: 2,\n display: \"flex\",\n flex: 1,\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n innerBoxPressed: {\n border: `1px solid ${Color.white}`,\n },\n activeIndicator: {\n position: \"absolute\",\n boxSizing: \"border-box\",\n bottom: 3,\n width: 36,\n height: 3,\n marginLeft: 3,\n },\n});\n\nfunction imageTintColor(\n itemState: ItemState,\n hovered: boolean,\n focused: boolean,\n pressed: boolean,\n): string {\n if (itemState === \"disabled\") {\n return Color.offBlack64;\n } else if (pressed) {\n return Color.white;\n } else if (itemState === \"active\") {\n return Color.blue;\n } else if (hovered) {\n return Color.blue;\n }\n return Color.offBlack64;\n}\nexport type ItemState = \"active\" | \"inactive\" | \"disabled\";\ntype Props = {\n onClick: () => void;\n itemState: ItemState;\n itemType: TabbarItemType;\n};\n\nclass TabbarItem extends React.Component<Props> {\n render(): React.ReactNode {\n const {onClick, itemType, itemState} = this.props;\n return (\n <Clickable\n onClick={onClick}\n disabled={itemState === \"disabled\"}\n aria-label={itemType}\n >\n {({hovered, focused, pressed}) => {\n const tintColor = imageTintColor(\n itemState,\n hovered,\n focused,\n pressed,\n );\n\n return (\n <View\n style={[\n styles.base,\n itemState !== \"disabled\" &&\n hovered &&\n styles.hovered,\n focused && styles.focused,\n pressed && styles.pressed,\n ]}\n >\n <View\n style={[\n styles.innerBox,\n pressed && styles.innerBoxPressed,\n ]}\n >\n <IconAsset\n type={itemType}\n tintColor={tintColor}\n />\n </View>\n {itemState === \"active\" && (\n <View\n style={[\n styles.activeIndicator,\n {\n backgroundColor: tintColor,\n },\n ]}\n />\n )}\n </View>\n );\n }}\n </Clickable>\n );\n }\n}\n\nexport const TabbarItemForTesting = TabbarItem;\n\nexport default TabbarItem;\n","import {View, StyleType} from \"@khanacademy/wonder-blocks-core\";\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport TabbarItem from \"./item\";\nimport {TabbarItemType} from \"./types\";\n\nconst styles = StyleSheet.create({\n tabbar: {\n display: \"flex\",\n flexDirection: \"row\",\n paddingTop: 2,\n paddingBottom: 2,\n },\n});\n\ntype Props = {\n items: ReadonlyArray<TabbarItemType>;\n selectedItem: TabbarItemType;\n onSelectItem: (item: TabbarItemType) => void;\n style?: StyleType;\n};\n\nfunction Tabbar(props: Props): React.ReactElement {\n const {items, selectedItem, onSelectItem, style} = props;\n\n return (\n <View style={[styles.tabbar, style]}>\n {items.map((item) => (\n <TabbarItem\n key={`tabbar-item-${item}`}\n itemState={item === selectedItem ? \"active\" : \"inactive\"}\n itemType={item}\n onClick={() => {\n onSelectItem(item);\n }}\n />\n ))}\n </View>\n );\n}\n\nexport default Tabbar;\n","/**\n * This file contains all of the z-index values used throughout the math-input\n * component and its children.\n */\n\nexport const popover = 1;\nexport const echo = 2;\nexport const keypad = 1060;\n","/**\n * A component that renders and animates the selection state effect effect.\n */\n\nimport * as React from \"react\";\nimport {TransitionGroup, CSSTransition} from \"react-transition-group\";\n\nimport KeyConfigs from \"../../data/key-configs\";\nimport Key from \"../../data/keys\";\nimport {EchoAnimationType} from \"../../enums\";\n\nimport KeypadButton from \"./keypad-button\";\nimport * as zIndexes from \"./z-indexes\";\n\nimport type {Bound, Echo as EchoType} from \"../../types\";\n\ntype EchoProps = {\n animationDurationMs: number;\n id: Key;\n initialBounds: Bound;\n onAnimationFinish: () => void;\n};\n\nclass Echo extends React.Component<EchoProps> {\n componentDidMount() {\n // NOTE(charlie): This is somewhat unfortunate, as the component is\n // encoding information about its own animation, of which it should be\n // ignorant. However, there doesn't seem to be a cleaner way to make\n // this happen, and at least here, all the animation context is\n // colocated in this file.\n const {animationDurationMs, onAnimationFinish} = this.props;\n setTimeout(() => onAnimationFinish(), animationDurationMs);\n }\n\n render() {\n const {id, initialBounds} = this.props;\n const {icon} = KeyConfigs[id];\n\n const containerStyle: any = {\n zIndex: zIndexes.echo,\n position: \"absolute\",\n pointerEvents: \"none\",\n ...initialBounds,\n };\n\n // NOTE(charlie): In some browsers, Aphrodite doesn't seem to flush its\n // styles quickly enough, so there's a flickering effect on the first\n // animation. Thus, it's much safer to do the styles purely inline.\n // <View> makes this difficult because some of its defaults, which are\n // applied via StyleSheet, will override our inlines.\n return (\n <div style={containerStyle}>\n <KeypadButton icon={icon} type={\"ECHO\"} />\n </div>\n );\n }\n}\n\ntype EchoManagerProps = {\n echoes: ReadonlyArray<EchoType>;\n onAnimationFinish?: (animationId: string) => void;\n};\n\nclass EchoManager extends React.Component<EchoManagerProps> {\n _animationConfigForType = (animationType) => {\n // NOTE(charlie): These must be kept in sync with the transition\n // durations and classnames specified in echo.css.\n let animationDurationMs;\n let animationTransitionName;\n\n switch (animationType) {\n case EchoAnimationType.SLIDE_AND_FADE:\n animationDurationMs = 400;\n animationTransitionName = \"echo-slide-and-fade\";\n break;\n\n case EchoAnimationType.FADE_ONLY:\n animationDurationMs = 300;\n animationTransitionName = \"echo-fade-only\";\n break;\n\n case EchoAnimationType.LONG_FADE_ONLY:\n animationDurationMs = 400;\n animationTransitionName = \"echo-long-fade-only\";\n break;\n\n default:\n throw new Error(\n `Invalid echo animation type: ${animationType}`,\n );\n }\n\n return {\n animationDurationMs,\n animationTransitionName,\n };\n };\n\n render() {\n const {echoes, onAnimationFinish} = this.props;\n\n return (\n <span>\n {Object.keys(EchoAnimationType).map((animationType) => {\n // Collect the relevant parameters for the animation type, and\n // filter for the appropriate echoes.\n const {animationDurationMs, animationTransitionName} =\n this._animationConfigForType(animationType);\n const echoesForType = echoes.filter((echo) => {\n return echo.animationType === animationType;\n });\n\n // TODO(charlie): Manage this animation with Aphrodite styles.\n // Right now, there's a bug in the autoprefixer that breaks CSS\n // transitions on mobile Safari.\n // See: https://github.com/Khan/aphrodite/issues/68.\n // As such, we have to do this with a stylesheet.\n return (\n <TransitionGroup key={animationType}>\n {echoesForType.map((echo) => {\n const {animationId} = echo;\n return (\n <CSSTransition\n classNames={animationTransitionName}\n enter={true}\n exit={false}\n timeout={{\n enter: animationDurationMs,\n }}\n key={animationId}\n >\n <Echo\n animationDurationMs={\n animationDurationMs\n }\n onAnimationFinish={() =>\n onAnimationFinish?.(animationId)\n }\n {...echo}\n />\n </CSSTransition>\n );\n })}\n </TransitionGroup>\n );\n })}\n </span>\n );\n }\n}\n\nexport default EchoManager;\n","/**\n * A popover that renders a set of keys floating above the page.\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport {BorderStyles} from \"../../enums\";\nimport {View} from \"../../fake-react-native-web/index\";\nimport {KeyConfig} from \"../../types\";\n\nimport TouchableKeypadButton from \"./touchable-keypad-button\";\nimport * as zIndexes from \"./z-indexes\";\n\ntype Prop = {\n keys: ReadonlyArray<KeyConfig>;\n};\n\nclass MultiSymbolPopover extends React.Component<Prop> {\n render() {\n const {keys} = this.props;\n\n // TODO(charlie): We have to require this lazily because of a cyclic\n // dependence in our components.\n return (\n <View style={styles.container}>\n {keys.map((key) => {\n return (\n <TouchableKeypadButton\n keyConfig={key}\n borders={BorderStyles.NONE}\n />\n );\n })}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"column-reverse\",\n position: \"relative\",\n width: \"100%\",\n borderRadius: 2,\n boxShadow: \"0 2px 6px rgba(0, 0, 0, 0.3)\",\n zIndex: zIndexes.popover,\n },\n\n // eslint-disable-next-line react-native/no-unused-styles\n popoverButton: {\n backgroundColor: \"#FFF\",\n borderWidth: 0,\n },\n});\n\nexport default MultiSymbolPopover;\n","/**\n * A component that renders and animates the popovers that appear over the\n * multi-functional keys.\n */\n\nimport * as React from \"react\";\nimport {CSSTransition} from \"react-transition-group\";\n\nimport KeyConfigs from \"../../data/key-configs\";\n\nimport MultiSymbolPopover from \"./multi-symbol-popover\";\n\nimport type {Popover, KeyConfig} from \"../../types\";\n\n// NOTE(charlie): These must be kept in sync with the transition durations and\n// classnames specified in popover.less.\nconst animationTransitionName = \"popover\";\nconst animationDurationMs = 200;\n\ntype Props = {\n // TODO(matthewc) should be something like Bound, but couldn't fix errors\n bounds: any;\n childKeys: ReadonlyArray<KeyConfig>;\n};\n\n// A container component used to position a popover absolutely at a specific\n// position.\nclass PopoverContainer extends React.Component<Props> {\n render() {\n const {bounds, childKeys} = this.props;\n\n const containerStyle = {\n position: \"absolute\",\n ...bounds,\n };\n\n return (\n <div style={containerStyle}>\n <MultiSymbolPopover keys={childKeys} />\n </div>\n );\n }\n}\n\ntype PopoverManagerProps = {\n popover: Popover | null;\n};\n\nclass PopoverManager extends React.Component<PopoverManagerProps> {\n render() {\n const {popover} = this.props;\n\n return popover ? (\n <CSSTransition\n in={true}\n classNames={animationTransitionName}\n enter={true}\n exit={false}\n timeout={{\n enter: animationDurationMs,\n }}\n >\n <PopoverContainer\n key={popover.childKeyIds[0]}\n bounds={popover.bounds}\n childKeys={popover.childKeyIds.map((id) => KeyConfigs[id])}\n />\n </CSSTransition>\n ) : null;\n }\n}\n\nexport default PopoverManager;\n","import Key from \"../../../data/keys\";\n\nimport type {\n Bound,\n KeypadConfiguration,\n KeyHandler,\n Cursor,\n ActiveNodesObj,\n} from \"../../../types\";\n\n// naming convention: verb + noun\n// the noun should be one of the other properties in the object that's\n// being dispatched\n\ntype DismissKeypadAction = {\n type: \"DismissKeypad\";\n};\n\nexport const dismissKeypad = (): DismissKeypadAction => {\n return {\n type: \"DismissKeypad\",\n };\n};\n\ntype ActivateKeypadAction = {\n type: \"ActivateKeypad\";\n};\n\nexport const activateKeypad = (): ActivateKeypadAction => {\n return {\n type: \"ActivateKeypad\",\n };\n};\n\n/**\n * Configure the keypad with the provided configuration parameters.\n */\ntype ConfigureKeypadAction = {\n type: \"ConfigureKeypad\";\n configuration: KeypadConfiguration;\n};\n\nexport const configureKeypad = (\n configuration: KeypadConfiguration,\n): ConfigureKeypadAction => {\n return {\n type: \"ConfigureKeypad\",\n configuration,\n };\n};\n\ntype SetPageSizeAction = {\n type: \"SetPageSize\";\n pageWidthPx: number;\n pageHeightPx: number;\n};\n\nexport const setPageSize = (\n pageWidthPx: number,\n pageHeightPx: number,\n): SetPageSizeAction => {\n return {\n type: \"SetPageSize\",\n pageWidthPx,\n pageHeightPx,\n };\n};\n\ntype RemoveEchoAction = {\n type: \"RemoveEcho\";\n animationId: string;\n};\n\nexport const removeEcho = (animationId: string): RemoveEchoAction => {\n return {\n type: \"RemoveEcho\",\n animationId,\n };\n};\n\n// Input-related actions.\ntype SetKeyHandlerAction = {\n type: \"SetKeyHandler\";\n keyHandler: KeyHandler;\n};\n\nexport const setKeyHandler = (keyHandler: KeyHandler): SetKeyHandlerAction => {\n return {\n type: \"SetKeyHandler\",\n keyHandler,\n };\n};\n\ntype SetCursorAction = {\n type: \"SetCursor\";\n cursor: Cursor;\n};\n\nexport const setCursor = (cursor: Cursor): SetCursorAction => {\n return {\n type: \"SetCursor\",\n cursor,\n };\n};\n\n// Gesture actions\ntype SetActiveNodesAction = {\n type: \"SetActiveNodes\";\n activeNodes: any;\n};\n\nexport const setActiveNodes = (\n activeNodes: ActiveNodesObj,\n): SetActiveNodesAction => {\n return {\n type: \"SetActiveNodes\",\n activeNodes,\n };\n};\n\ntype PressKeyAction = {\n type: \"PressKey\";\n key: Key;\n initialBounds: Bound;\n inPopover: boolean;\n};\n\nexport const pressKey = (\n key: Key,\n initialBounds: Bound,\n inPopover: any,\n): PressKeyAction => {\n return {\n type: \"PressKey\",\n key,\n initialBounds,\n inPopover,\n };\n};\n\nexport type Action =\n | DismissKeypadAction\n | ActivateKeypadAction\n | ConfigureKeypadAction\n | SetPageSizeAction\n | RemoveEchoAction\n | SetKeyHandlerAction\n | SetCursorAction\n | SetActiveNodesAction\n | PressKeyAction;\n","/**\n * A keypad component that acts as a container for rows or columns of buttons,\n * and manages the rendering of echo animations on top of those buttons.\n */\n\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {connect} from \"react-redux\";\n\nimport {View} from \"../../fake-react-native-web/index\";\n\nimport EchoManager from \"./echo-manager\";\nimport PopoverManager from \"./popover-manager\";\nimport {removeEcho} from \"./store/actions\";\n\nimport type {Bound, Popover, Echo} from \"../../types\";\nimport type {State} from \"./store/types\";\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\ninterface ReduxProps {\n active: boolean;\n echoes: ReadonlyArray<Echo>;\n popover: Popover | null;\n}\n\ninterface Props extends ReduxProps {\n children: React.ReactNode;\n style?: StyleType;\n removeEcho?: (animationId: string) => void;\n}\n\n// eslint-disable-next-line react/no-unsafe\nclass Keypad extends React.Component<Props> {\n _isMounted: boolean | undefined;\n _resizeTimeout: number | null | undefined;\n _container: Bound | null | undefined;\n\n componentDidMount() {\n this._isMounted = true;\n\n window.addEventListener(\"resize\", this._onResize);\n this._updateSizeAndPosition();\n }\n\n UNSAFE_componentWillReceiveProps(newProps) {\n if (!this._container && (newProps.popover || newProps.echoes.length)) {\n this._computeContainer();\n }\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n\n window.removeEventListener(\"resize\", this._onResize);\n }\n\n _computeContainer = () => {\n const domNode = ReactDOM.findDOMNode(this) as Element;\n this._container = domNode.getBoundingClientRect();\n };\n\n _updateSizeAndPosition = () => {\n // Mark the container for recalculation next time the keypad is\n // opened.\n // TODO(charlie): Since we're not recalculating the container\n // immediately, if you were to resize the page while a popover were\n // active, you'd likely get unexpected behavior. This seems very\n // difficult to do and, as such, incredibly unlikely, but we may\n // want to reconsider the caching here.\n this._container = null;\n };\n\n _onResize = () => {\n // Whenever the page resizes, we need to recompute the container's\n // bounding box. This is the only time that the bounding box can change.\n\n // Throttle resize events -- taken from:\n // https://developer.mozilla.org/en-US/docs/Web/Events/resize\n if (this._resizeTimeout == null) {\n this._resizeTimeout = window.setTimeout(() => {\n this._resizeTimeout = null;\n\n if (this._isMounted) {\n this._updateSizeAndPosition();\n }\n }, 66);\n }\n };\n\n render() {\n const {children, echoes, removeEcho, popover, style} = this.props;\n\n // Translate the echo boxes, as they'll be positioned absolutely to\n // this relative container.\n const relativeEchoes = echoes.map((echo) => {\n const {initialBounds, ...rest} = echo;\n return {\n ...rest,\n initialBounds: {\n // @ts-expect-error TS2533\n top: initialBounds.top - this._container.top,\n // @ts-expect-error TS2533\n right: initialBounds.right - this._container.left,\n // @ts-expect-error TS2533\n bottom: initialBounds.bottom - this._container.top,\n // @ts-expect-error TS2533\n left: initialBounds.left - this._container.left,\n width: initialBounds.width,\n height: initialBounds.height,\n },\n };\n });\n\n // Translate the popover bounds from page-absolute to keypad-relative.\n // Note that we only need three bounds, since popovers are anchored to\n // the bottom left corners of the keys over which they appear.\n const relativePopover = popover && {\n ...popover,\n bounds: {\n bottom:\n // @ts-expect-error TS2533\n this._container.height -\n // @ts-expect-error TS2533\n (popover.bounds.bottom - this._container.top),\n // @ts-expect-error TS2533\n left: popover.bounds.left - this._container.left,\n width: popover.bounds.width,\n },\n };\n\n return (\n <View style={style}>\n {children}\n <EchoManager\n echoes={relativeEchoes}\n onAnimationFinish={removeEcho}\n />\n <PopoverManager popover={relativePopover} />\n </View>\n );\n }\n}\n\nconst mapStateToProps = (state: State): ReduxProps => {\n return {\n echoes: state.echoes.echoes,\n active: state.keypad.active,\n popover: state.gestures.popover,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n removeEcho: (animationId) => {\n dispatch(removeEcho(animationId));\n },\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps, null, {\n forwardRef: true,\n})(Keypad);\n","/**\n * A keypad with two pages of keys.\n */\n\nimport Color from \"@khanacademy/wonder-blocks-color\";\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\nimport {connect} from \"react-redux\";\n\nimport {View} from \"../../fake-react-native-web/index\";\nimport {\n innerBorderColor,\n innerBorderStyle,\n innerBorderWidthPx,\n offBlack16,\n} from \"../common-style\";\nimport Tabbar from \"../tabbar/tabbar\";\nimport {TabbarItemType} from \"../tabbar/types\";\n\nimport Keypad from \"./keypad\";\nimport {State as ReduxState} from \"./store/types\";\nimport Styles from \"./styles\";\n\nconst {column, row, fullWidth} = Styles;\n\ninterface ReduxProps {\n paginationEnabled: boolean;\n}\n\ninterface Props extends ReduxProps {\n leftPage: React.ReactNode;\n rightPage: React.ReactNode;\n}\n\ntype State = {\n selectedPage: TabbarItemType;\n};\n\nclass TwoPageKeypad extends React.Component<Props, State> {\n state: State = {\n selectedPage: \"Numbers\",\n };\n\n render() {\n const {leftPage, paginationEnabled, rightPage} = this.props;\n\n const {selectedPage} = this.state;\n\n if (paginationEnabled) {\n return (\n <Keypad style={[column, styles.keypad]}>\n <Tabbar\n items={[\"Numbers\", \"Operators\"]}\n selectedItem={selectedPage}\n onSelectItem={(selectedItem) => {\n this.setState({selectedPage: selectedItem});\n }}\n style={styles.tabbar}\n />\n <View style={styles.borderTop}>\n {selectedPage === \"Numbers\" && rightPage}\n {selectedPage === \"Operators\" && leftPage}\n </View>\n </Keypad>\n );\n } else {\n return (\n <Keypad style={styles.keypad}>\n <View style={row}>\n <View style={fullWidth}>{leftPage}</View>\n <View style={[styles.borderLeft, fullWidth]}>\n {rightPage}\n </View>\n </View>\n </Keypad>\n );\n }\n }\n}\n\nconst styles = StyleSheet.create({\n keypad: {\n // Set the background to light grey, so that when the user drags the\n // keypad pages past the edges, there's a grey backdrop.\n backgroundColor: offBlack16,\n },\n\n borderTop: {\n borderTop:\n `${innerBorderWidthPx}px ${innerBorderStyle} ` +\n `${innerBorderColor}`,\n },\n borderLeft: {\n borderLeft:\n `${innerBorderWidthPx}px ${innerBorderStyle} ` +\n `${innerBorderColor}`,\n boxSizing: \"content-box\",\n },\n tabbar: {\n background: Color.offWhite,\n borderTop: `1px solid ${Color.offBlack50}`,\n borderBottom: `1px solid ${Color.offBlack50}`,\n },\n});\n\nconst mapStateToProps = (state: ReduxState): ReduxProps => {\n return {\n paginationEnabled: state.layout.paginationEnabled,\n };\n};\n\nexport default connect(mapStateToProps, null, null, {forwardRef: true})(\n TwoPageKeypad,\n);\n","/**\n * A keypad that includes all of the expression symbols.\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\nimport {connect} from \"react-redux\";\n\nimport KeyConfigs from \"../../data/key-configs\";\nimport {BorderStyles} from \"../../enums\";\nimport {View} from \"../../fake-react-native-web/index\";\nimport {valueGrey, controlGrey} from \"../common-style\";\nimport {CursorContext} from \"../input/cursor-contexts\";\n\nimport ManyKeypadButton from \"./many-keypad-button\";\nimport Styles from \"./styles\";\nimport TouchableKeypadButton from \"./touchable-keypad-button\";\nimport TwoPageKeypad from \"./two-page-keypad\";\n\nimport type {KeypadLayout} from \"../../types\";\nimport type {State} from \"./store/types\";\n\nconst {row, column, oneColumn, fullWidth, roundedTopLeft, roundedTopRight} =\n Styles;\n\ninterface ReduxProps {\n cursorContext?: CursorContext;\n dynamicJumpOut: boolean;\n}\n\ninterface Props extends ReduxProps {\n extraKeys?: ReadonlyArray<string>;\n roundTopLeft: boolean;\n roundTopRight: boolean;\n}\n\nexport const expressionKeypadLayout: KeypadLayout = {\n rows: 4,\n columns: 5,\n numPages: 2,\n // Since we include a two-key popover in the top-right, when the popover\n // is visible, the keypad will expand to fill the equivalent of five\n // rows vertically.\n maxVisibleRows: 4,\n};\n\nclass ExpressionKeypad extends React.Component<Props> {\n render() {\n const {\n cursorContext,\n dynamicJumpOut,\n extraKeys,\n roundTopLeft,\n roundTopRight,\n } = this.props;\n\n let dismissOrJumpOutKey;\n if (dynamicJumpOut) {\n switch (cursorContext) {\n case CursorContext.IN_PARENS:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_PARENTHESES;\n break;\n\n case CursorContext.IN_SUPER_SCRIPT:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_EXPONENT;\n break;\n\n case CursorContext.IN_SUB_SCRIPT:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_BASE;\n break;\n\n case CursorContext.BEFORE_FRACTION:\n dismissOrJumpOutKey = KeyConfigs.JUMP_INTO_NUMERATOR;\n break;\n\n case CursorContext.IN_NUMERATOR:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_NUMERATOR;\n break;\n\n case CursorContext.IN_DENOMINATOR:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_DENOMINATOR;\n break;\n\n case CursorContext.NONE:\n default:\n dismissOrJumpOutKey = KeyConfigs.DISMISS;\n break;\n }\n } else {\n dismissOrJumpOutKey = KeyConfigs.DISMISS;\n }\n\n const rightPageStyle = [\n row,\n fullWidth,\n styles.rightPage,\n roundTopRight && roundedTopRight,\n ];\n const rightPage = (\n <View style={rightPageStyle}>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_7}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_4}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_1}\n borders={BorderStyles.BOTTOM}\n />\n <ManyKeypadButton keys={extraKeys} />\n </View>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_8}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_5}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_2}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_0}\n borders={BorderStyles.LEFT}\n />\n </View>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_9}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_6}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_3}\n borders={BorderStyles.BOTTOM}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.DECIMAL}\n borders={BorderStyles.LEFT}\n />\n </View>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.DIVIDE}\n borders={BorderStyles.LEFT}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.TIMES}\n borders={BorderStyles.LEFT}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.MINUS}\n borders={BorderStyles.LEFT}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.PLUS}\n borders={BorderStyles.LEFT}\n />\n </View>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.FRAC}\n style={roundTopRight && roundedTopRight}\n />\n <TouchableKeypadButton keyConfig={KeyConfigs.CDOT} />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.BACKSPACE}\n borders={BorderStyles.LEFT}\n />\n <TouchableKeypadButton\n keyConfig={dismissOrJumpOutKey}\n borders={BorderStyles.LEFT}\n />\n </View>\n </View>\n );\n\n const leftPageStyle = [\n row,\n fullWidth,\n styles.leftPage,\n roundTopLeft && roundedTopLeft,\n ];\n const leftPage = (\n <View style={leftPageStyle}>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.EXP_2}\n borders={BorderStyles.NONE}\n style={roundTopLeft && roundedTopLeft}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.SQRT}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.LOG}\n borders={BorderStyles.BOTTOM}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.SIN}\n borders={BorderStyles.NONE}\n />\n </View>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.EXP_3}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.CUBE_ROOT}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.LN}\n borders={BorderStyles.BOTTOM}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.COS}\n borders={BorderStyles.NONE}\n />\n </View>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.EXP}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.RADICAL}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.LOG_N}\n borders={BorderStyles.BOTTOM}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.TAN}\n borders={BorderStyles.NONE}\n />\n </View>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.GEQ}\n borders={BorderStyles.LEFT}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.EQUAL}\n borders={BorderStyles.LEFT}\n />\n <TouchableKeypadButton keyConfig={KeyConfigs.LEQ} />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.LEFT_PAREN}\n borders={BorderStyles.LEFT}\n />\n </View>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.GT}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NEQ}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.LT}\n borders={BorderStyles.BOTTOM}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.RIGHT_PAREN}\n borders={BorderStyles.NONE}\n />\n </View>\n </View>\n );\n\n return <TwoPageKeypad rightPage={rightPage} leftPage={leftPage} />;\n }\n}\n\nconst styles = StyleSheet.create({\n // NOTE(charlie): These backgrounds are applied to as to fill in some\n // unfortunate 'cracks' in the layout. However, not all keys in the first\n // page use this background color (namely, the 'command' keys, backspace and\n // dismiss).\n // TODO(charlie): Apply the proper background between the 'command' keys.\n rightPage: {\n backgroundColor: valueGrey,\n },\n\n leftPage: {\n backgroundColor: controlGrey,\n },\n});\n\nconst mapStateToProps = (state: State): ReduxProps => {\n return {\n cursorContext: state.input.cursor?.context,\n dynamicJumpOut: !state.layout.navigationPadEnabled,\n };\n};\n\nexport default connect(mapStateToProps, null, null, {forwardRef: true})(\n ExpressionKeypad,\n);\n","/**\n * A keypad that includes the digits, as well as the symbols required to deal\n * with fractions, decimals, and percents.\n */\n\nimport * as React from \"react\";\nimport {connect} from \"react-redux\";\n\nimport KeyConfigs from \"../../data/key-configs\";\nimport {BorderStyles} from \"../../enums\";\nimport {View} from \"../../fake-react-native-web/index\";\nimport {CursorContext} from \"../input/cursor-contexts\";\n\nimport Keypad from \"./keypad\";\nimport Styles from \"./styles\";\nimport TouchableKeypadButton from \"./touchable-keypad-button\";\n\nimport type {KeypadLayout} from \"../../types\";\nimport type {State} from \"./store/types\";\n\nconst {row, roundedTopLeft, roundedTopRight} = Styles;\n\ninterface ReduxProps {\n cursorContext?: CursorContext;\n dynamicJumpOut: boolean;\n}\n\ninterface Props extends ReduxProps {\n roundTopLeft: boolean;\n roundTopRight: boolean;\n}\n\nexport const fractionKeypadLayout: KeypadLayout = {\n rows: 4,\n columns: 4,\n numPages: 1,\n // Since we include a two-key popover in the top-right, when the popover\n // is visible, the keypad will expand to fill the equivalent of five\n // rows vertically.\n maxVisibleRows: 5,\n};\n\nclass FractionKeypad extends React.Component<Props> {\n render() {\n const {cursorContext, dynamicJumpOut, roundTopLeft, roundTopRight} =\n this.props;\n\n let dismissOrJumpOutKey;\n if (dynamicJumpOut) {\n switch (cursorContext) {\n case CursorContext.IN_PARENS:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_PARENTHESES;\n break;\n\n case CursorContext.IN_SUPER_SCRIPT:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_EXPONENT;\n break;\n\n case CursorContext.IN_SUB_SCRIPT:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_BASE;\n break;\n\n case CursorContext.BEFORE_FRACTION:\n dismissOrJumpOutKey = KeyConfigs.JUMP_INTO_NUMERATOR;\n break;\n\n case CursorContext.IN_NUMERATOR:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_NUMERATOR;\n break;\n\n case CursorContext.IN_DENOMINATOR:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_DENOMINATOR;\n break;\n\n case CursorContext.NONE:\n default:\n dismissOrJumpOutKey = KeyConfigs.DISMISS;\n break;\n }\n } else {\n dismissOrJumpOutKey = KeyConfigs.DISMISS;\n }\n\n return (\n <Keypad>\n <View style={row}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_7}\n borders={BorderStyles.NONE}\n style={roundTopLeft && roundedTopLeft}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_8}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_9}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.FRAC}\n disabled={\n // NOTE(charlie): It's only sufficient to use\n // `IN_NUMERATOR` and `IN_DENOMINATOR` here because we\n // don't support parentheses in this keypad. If we did,\n // then when the cursor was inside a parenthetical\n // expression in a numerator or denominator, this check\n // would fail.\n cursorContext === CursorContext.IN_NUMERATOR ||\n cursorContext === CursorContext.IN_DENOMINATOR\n }\n style={roundTopRight && roundedTopRight}\n />\n </View>\n <View style={row}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_4}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_5}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_6}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton keyConfig={KeyConfigs.PERCENT} />\n </View>\n <View style={row}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_1}\n borders={BorderStyles.BOTTOM}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_2}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_3}\n borders={BorderStyles.BOTTOM}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.BACKSPACE}\n borders={BorderStyles.LEFT}\n />\n </View>\n <View style={row}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NEGATIVE}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_0}\n borders={BorderStyles.LEFT}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.DECIMAL}\n borders={BorderStyles.LEFT}\n />\n <TouchableKeypadButton\n keyConfig={dismissOrJumpOutKey}\n borders={BorderStyles.LEFT}\n />\n </View>\n </Keypad>\n );\n }\n}\n\nconst mapStateToProps = (state: State): ReduxProps => {\n return {\n cursorContext: state.input.cursor?.context,\n dynamicJumpOut: !state.layout.navigationPadEnabled,\n };\n};\n\nexport default connect(mapStateToProps, null, null, {forwardRef: true})(\n FractionKeypad,\n);\n","/**\n * A component that renders a navigation pad, which consists of an arrow for\n * each possible direction.\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport KeyConfigs from \"../../data/key-configs\";\nimport {BorderStyles} from \"../../enums\";\nimport {View} from \"../../fake-react-native-web/index\";\nimport {\n navigationPadWidthPx,\n controlGrey,\n valueGrey,\n offBlack16,\n} from \"../common-style\";\n\nimport Styles from \"./styles\";\nimport TouchableKeypadButton from \"./touchable-keypad-button\";\n\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\nconst {row, column, centered, stretch, roundedTopLeft} = Styles;\n\ntype Props = {\n roundTopLeft: boolean;\n style: StyleType;\n};\n\nclass NavigationPad extends React.Component<Props> {\n render() {\n // TODO(charlie): Disable the navigational arrows depending on the\n // cursor context.\n const {roundTopLeft, style} = this.props;\n\n const containerStyle = [\n column,\n centered,\n styles.container,\n roundTopLeft && roundedTopLeft,\n ...(Array.isArray(style) ? style : [style]),\n ];\n\n return (\n <View style={containerStyle}>\n <View style={[row, centered]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.UP}\n borders={BorderStyles.NONE}\n style={[styles.navigationKey, styles.topArrow]}\n />\n </View>\n <View style={[row, centered, stretch]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.LEFT}\n borders={BorderStyles.NONE}\n style={[styles.navigationKey, styles.leftArrow]}\n />\n <View style={styles.horizontalSpacer} />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.RIGHT}\n borders={BorderStyles.NONE}\n style={[styles.navigationKey, styles.rightArrow]}\n />\n </View>\n <View style={[row, centered]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.DOWN}\n borders={BorderStyles.NONE}\n style={[styles.navigationKey, styles.bottomArrow]}\n />\n </View>\n </View>\n );\n }\n}\n\nconst buttonSizePx = 48;\nconst borderRadiusPx = 4;\nconst borderWidthPx = 1;\n\nconst styles = StyleSheet.create({\n container: {\n backgroundColor: controlGrey,\n width: navigationPadWidthPx,\n },\n\n navigationKey: {\n borderColor: offBlack16,\n backgroundColor: valueGrey,\n width: buttonSizePx,\n height: buttonSizePx,\n\n // Override the default box-sizing so that our buttons are\n // `buttonSizePx` exclusive of their borders.\n boxSizing: \"content-box\",\n },\n\n topArrow: {\n borderTopWidth: borderWidthPx,\n borderLeftWidth: borderWidthPx,\n borderRightWidth: borderWidthPx,\n borderTopLeftRadius: borderRadiusPx,\n borderTopRightRadius: borderRadiusPx,\n },\n\n rightArrow: {\n borderTopWidth: borderWidthPx,\n borderRightWidth: borderWidthPx,\n borderBottomWidth: borderWidthPx,\n borderTopRightRadius: borderRadiusPx,\n borderBottomRightRadius: borderRadiusPx,\n },\n\n bottomArrow: {\n borderBottomWidth: borderWidthPx,\n borderLeftWidth: borderWidthPx,\n borderRightWidth: borderWidthPx,\n borderBottomLeftRadius: borderRadiusPx,\n borderBottomRightRadius: borderRadiusPx,\n },\n\n leftArrow: {\n borderTopWidth: borderWidthPx,\n borderBottomWidth: borderWidthPx,\n borderLeftWidth: borderWidthPx,\n borderTopLeftRadius: borderRadiusPx,\n borderBottomLeftRadius: borderRadiusPx,\n },\n\n horizontalSpacer: {\n background: valueGrey,\n // No need to set a height -- the spacer will be stretched by its\n // parent.\n width: buttonSizePx,\n },\n});\n\nexport default NavigationPad;\n","import {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\nimport {connect} from \"react-redux\";\n\nimport {LayoutMode, KeypadType} from \"../../enums\";\nimport {View} from \"../../fake-react-native-web/index\";\nimport {\n innerBorderColor,\n innerBorderStyle,\n innerBorderWidthPx,\n compactKeypadBorderRadiusPx,\n} from \"../common-style\";\n\nimport ExpressionKeypad from \"./expression-keypad\";\nimport FractionKeypad from \"./fraction-keypad\";\nimport NavigationPad from \"./navigation-pad\";\nimport {setPageSize} from \"./store/actions\";\nimport Styles from \"./styles\";\nimport * as zIndexes from \"./z-indexes\";\n\nimport type {State as ReduxState} from \"./store/types\";\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\nconst {row, centered, fullWidth} = Styles;\n\ninterface ReduxProps {\n active?: boolean;\n extraKeys?: ReadonlyArray<string>;\n keypadType?: KeypadType;\n layoutMode?: LayoutMode;\n navigationPadEnabled?: boolean;\n}\n\ninterface Props extends ReduxProps {\n onDismiss?: () => void;\n onElementMounted: (element: any) => void;\n onPageSizeChange?: (width: number, height: number) => void;\n style?: StyleType;\n}\n\ntype State = {\n hasBeenActivated: boolean;\n viewportWidth: string | number;\n};\n\n// eslint-disable-next-line react/no-unsafe\nclass KeypadContainer extends React.Component<Props, State> {\n _resizeTimeout: number | null | undefined;\n hasMounted: boolean | undefined;\n\n state = {\n hasBeenActivated: false,\n viewportWidth: \"100vw\",\n };\n\n UNSAFE_componentWillMount() {\n if (this.props.active) {\n this.setState({\n hasBeenActivated: this.props.active,\n });\n }\n }\n\n componentDidMount() {\n // Relay the initial size metrics.\n this._onResize();\n\n // And update it on resize.\n window.addEventListener(\"resize\", this._throttleResizeHandler);\n window.addEventListener(\n \"orientationchange\",\n this._throttleResizeHandler,\n );\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!this.state.hasBeenActivated && nextProps.active) {\n this.setState({\n hasBeenActivated: true,\n });\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.active && !this.props.active) {\n this.props.onDismiss && this.props.onDismiss();\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this._throttleResizeHandler);\n window.removeEventListener(\n \"orientationchange\",\n this._throttleResizeHandler,\n );\n }\n\n _throttleResizeHandler = () => {\n // Throttle the resize callbacks.\n // https://developer.mozilla.org/en-US/docs/Web/Events/resize\n if (this._resizeTimeout == null) {\n this._resizeTimeout = window.setTimeout(() => {\n this._resizeTimeout = null;\n\n this._onResize();\n }, 66);\n }\n };\n\n _onResize = () => {\n // Whenever the page resizes, we need to force an update, as the button\n // heights and keypad width are computed based on horizontal space.\n this.setState({\n viewportWidth: window.innerWidth,\n });\n this.props.onPageSizeChange?.(window.innerWidth, window.innerHeight);\n };\n\n renderKeypad = () => {\n const {extraKeys, keypadType, layoutMode, navigationPadEnabled} =\n this.props;\n\n const keypadProps = {\n extraKeys,\n // HACK(charlie): In order to properly round the corners of the\n // compact keypad, we need to instruct some of our child views to\n // crop themselves. At least we're colocating all the layout\n // information in this component, though.\n roundTopLeft:\n layoutMode === LayoutMode.COMPACT && !navigationPadEnabled,\n roundTopRight: layoutMode === LayoutMode.COMPACT,\n };\n\n // Select the appropriate keyboard given the type.\n // TODO(charlie): In the future, we might want to move towards a\n // data-driven approach to defining keyboard layouts, and have a\n // generic keyboard that takes some \"keyboard data\" and renders it.\n // However, the keyboards differ pretty heavily right now and it's not\n // clear what that format would look like exactly. Plus, there aren't\n // very many of them. So to keep us moving, we'll just hardcode.\n switch (keypadType) {\n case KeypadType.FRACTION:\n return <FractionKeypad {...keypadProps} />;\n\n case KeypadType.EXPRESSION:\n return <ExpressionKeypad {...keypadProps} />;\n\n default:\n throw new Error(\"Invalid keypad type: \" + keypadType);\n }\n };\n\n render() {\n const {\n active,\n layoutMode,\n navigationPadEnabled,\n onElementMounted,\n style,\n } = this.props;\n const {hasBeenActivated} = this.state;\n\n // NOTE(charlie): We render the transforms as pure inline styles to\n // avoid an Aphrodite bug in mobile Safari.\n // See: https://github.com/Khan/aphrodite/issues/68.\n let dynamicStyle = {\n ...(active ? inlineStyles.active : inlineStyles.hidden),\n };\n\n if (!active && !hasBeenActivated) {\n dynamicStyle = {\n ...dynamicStyle,\n ...inlineStyles.invisible,\n };\n }\n\n const keypadContainerStyle = [\n row,\n centered,\n fullWidth,\n styles.keypadContainer,\n ...(Array.isArray(style) ? style : [style]),\n ];\n\n const keypadStyle = [\n row,\n styles.keypadBorder,\n layoutMode === LayoutMode.FULLSCREEN\n ? styles.fullscreen\n : styles.compact,\n ];\n\n // TODO(charlie): When the keypad is shorter than the width of the\n // screen, add a border on its left and right edges, and round out the\n // corners.\n return (\n <View\n style={keypadContainerStyle}\n dynamicStyle={dynamicStyle}\n extraClassName=\"keypad-container\"\n >\n <View\n style={keypadStyle}\n ref={(element) => {\n if (!this.hasMounted && element) {\n this.hasMounted = true;\n onElementMounted(element);\n }\n }}\n >\n {navigationPadEnabled && (\n <NavigationPad\n roundTopLeft={layoutMode === LayoutMode.COMPACT}\n style={styles.navigationPadContainer}\n />\n )}\n <View style={styles.keypadLayout}>\n {this.renderKeypad()}\n </View>\n </View>\n </View>\n );\n }\n}\n\nconst keypadAnimationDurationMs = 300;\nconst borderWidthPx = 1;\n\nconst styles = StyleSheet.create({\n keypadContainer: {\n bottom: 0,\n left: 0,\n right: 0,\n position: \"fixed\",\n transition: `${keypadAnimationDurationMs}ms ease-out`,\n transitionProperty: \"transform\",\n zIndex: zIndexes.keypad,\n },\n\n keypadBorder: {\n boxShadow: \"0 1px 4px 0 rgba(0, 0, 0, 0.1)\",\n borderColor: \"rgba(0, 0, 0, 0.2)\",\n borderStyle: \"solid\",\n },\n\n fullscreen: {\n borderTopWidth: borderWidthPx,\n },\n\n compact: {\n borderTopRightRadius: compactKeypadBorderRadiusPx,\n borderTopLeftRadius: compactKeypadBorderRadiusPx,\n\n borderTopWidth: borderWidthPx,\n borderRightWidth: borderWidthPx,\n borderLeftWidth: borderWidthPx,\n },\n\n navigationPadContainer: {\n // Add a separator between the navigation pad and the keypad.\n borderRight:\n `${innerBorderWidthPx}px ${innerBorderStyle} ` +\n `${innerBorderColor}`,\n boxSizing: \"content-box\",\n },\n\n // Defer to the navigation pad, such that the navigation pad is always\n // rendered at full-width, and the keypad takes up just the remaining space.\n // TODO(charlie): Avoid shrinking the keys and, instead, make the keypad\n // scrollable.\n keypadLayout: {\n flexGrow: 1,\n // Avoid unitless flex-basis, per: https://philipwalton.com/articles/normalizing-cross-browser-flexbox-bugs/\n flexBasis: \"0%\",\n },\n});\n\n// Note: these don't go through an autoprefixer/aphrodite.\nconst inlineStyles = {\n // If the keypad is yet to have ever been activated, we keep it invisible\n // so as to avoid, e.g., the keypad flashing at the bottom of the page\n // during the initial render.\n invisible: {\n visibility: \"hidden\",\n },\n\n hidden: {\n transform: \"translate3d(0, 100%, 0)\",\n },\n\n active: {\n transform: \"translate3d(0, 0, 0)\",\n },\n};\n\nconst mapStateToProps = (state: ReduxState): ReduxProps => {\n return {\n extraKeys: state.keypad.extraKeys,\n keypadType: state.keypad.keypadType,\n active: state.keypad.active,\n layoutMode: state.layout.layoutMode,\n navigationPadEnabled: state.layout.navigationPadEnabled,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n onPageSizeChange: (pageWidthPx, pageHeightPx) => {\n dispatch(setPageSize(pageWidthPx, pageHeightPx));\n },\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps, null, {\n forwardRef: true,\n})(KeypadContainer);\n","import Key from \"../../data/keys\";\n\n/**\n * The state machine that backs our gesture system. In particular, this state\n * machine manages the interplay between focuses, touch ups, and swiping.\n * It is entirely ignorant of the existence of popovers and the positions of\n * DOM nodes, operating solely on IDs. The state machine does accommodate for\n * multi-touch interactions, tracking gesture state on a per-touch basis.\n */\n\n// exported for tests\nexport type Handlers = {\n onFocus: (id: string) => void;\n onBlur: () => void;\n onTrigger: (id: string) => void;\n onLongPress: (id: string) => void;\n onSwipeChange?: (x: number) => void;\n onSwipeEnd?: (x: number) => void;\n onTouchEnd: (id: string) => void;\n};\n\ntype Options = {\n longPressWaitTimeMs: number;\n swipeThresholdPx: number;\n holdIntervalMs: number;\n};\n\ntype TouchState = {\n activeNodeId: Key;\n pressAndHoldIntervalId: number | null;\n longPressTimeoutId: number | null;\n swipeLocked: boolean;\n startX: number;\n};\n\ntype TouchStateMap = Record<Key, TouchState>;\n\ntype SwipeState = {\n touchId: Key;\n startX: number;\n};\n\nconst defaultOptions: Options = {\n longPressWaitTimeMs: 50,\n swipeThresholdPx: 20,\n holdIntervalMs: 250,\n};\n\nclass GestureStateMachine {\n handlers: Handlers;\n options: Options;\n swipeDisabledNodeIds: ReadonlyArray<Key>;\n multiPressableKeys: ReadonlyArray<Key>;\n touchState: Partial<TouchStateMap>;\n swipeState: SwipeState | null;\n\n constructor(\n handlers: Handlers,\n options: Partial<Options>,\n swipeDisabledNodeIds?: ReadonlyArray<Key>,\n multiPressableKeys?: ReadonlyArray<Key>,\n ) {\n this.handlers = handlers;\n this.options = {\n ...defaultOptions,\n ...options,\n };\n this.swipeDisabledNodeIds = swipeDisabledNodeIds || [];\n this.multiPressableKeys = multiPressableKeys || [];\n\n // TODO(charlie): Add types for this file. It's not great that we're now\n // passing around these opaque state objects.\n this.touchState = {};\n this.swipeState = null;\n }\n\n _maybeCancelLongPressForTouch(touchId) {\n const {longPressTimeoutId} = this.touchState[touchId];\n if (longPressTimeoutId) {\n clearTimeout(longPressTimeoutId);\n this.touchState[touchId] = {\n ...this.touchState[touchId],\n longPressTimeoutId: null,\n };\n }\n }\n\n _maybeCancelPressAndHoldForTouch(touchId) {\n const {pressAndHoldIntervalId} = this.touchState[touchId];\n if (pressAndHoldIntervalId) {\n // If there was an interval set to detect holds, clear it out.\n clearInterval(pressAndHoldIntervalId);\n this.touchState[touchId] = {\n ...this.touchState[touchId],\n pressAndHoldIntervalId: null,\n };\n }\n }\n\n _cleanupTouchEvent(touchId) {\n this._maybeCancelLongPressForTouch(touchId);\n this._maybeCancelPressAndHoldForTouch(touchId);\n delete this.touchState[touchId];\n }\n\n /**\n * Handle a focus event on the node with the given identifier, which may be\n * `null` to indicate that the user has dragged their finger off of any\n * registered nodes, but is still in the middle of a gesture.\n *\n * @param {string|null} id - the identifier of the newly focused node, or\n * `null` if no node is focused\n * @param {number} touchId - a unique identifier associated with the touch\n */\n _onFocus(id, touchId) {\n // If we're in the middle of a long-press, cancel it.\n this._maybeCancelLongPressForTouch(touchId);\n\n // Reset any existing hold-detecting interval.\n this._maybeCancelPressAndHoldForTouch(touchId);\n\n // Set the focused node ID and handle the focus event.\n // Note: we can call `onFocus` with `null` IDs. The semantics of an\n // `onFocus` with a `null` ID differs from that of `onBlur`. The former\n // indicates that a gesture that can focus future nodes is still in\n // progress, but that no node is currently focused. The latter\n // indicates that the gesture has ended and nothing will be focused.\n this.touchState[touchId] = {\n ...this.touchState[touchId],\n activeNodeId: id,\n };\n this.handlers.onFocus(id);\n\n if (id) {\n // Handle logic for repeating button presses.\n if (this.multiPressableKeys.includes(id)) {\n // Start by triggering a click, iOS style.\n this.handlers.onTrigger(id);\n\n // Set up a new hold detector for the current button.\n this.touchState[touchId] = {\n ...this.touchState[touchId],\n pressAndHoldIntervalId: setInterval(() => {\n // On every cycle, trigger the click handler.\n this.handlers.onTrigger(id);\n }, this.options.holdIntervalMs),\n };\n } else {\n // Set up a new hold detector for the current button.\n this.touchState[touchId] = {\n ...this.touchState[touchId],\n longPressTimeoutId: setTimeout(() => {\n this.handlers.onLongPress(id);\n this.touchState[touchId] = {\n ...this.touchState[touchId],\n longPressTimeoutId: null,\n };\n }, this.options.longPressWaitTimeMs),\n };\n }\n }\n }\n\n /**\n * Clear out all active gesture information.\n */\n _onSwipeStart() {\n for (const activeTouchId of Object.keys(this.touchState)) {\n this._maybeCancelLongPressForTouch(activeTouchId);\n this._maybeCancelPressAndHoldForTouch(activeTouchId);\n }\n this.touchState = {};\n this.handlers.onBlur();\n }\n\n /**\n * A function that returns the identifier of the node over which the touch\n * event occurred. This is provided as a piece of lazy computation, as\n * computing the DOM node for a given point is expensive, and the state\n * machine won't always need that information. For example, if the user is\n * swiping, then `onTouchMove` needs to be performant and doesn't care about\n * the node over which the touch occurred.\n *\n * @typedef idComputation\n * @returns {DOMNode} - the identifier of the node over which the touch\n * occurred\n */\n\n /**\n * Handle a touch-start event on the node with the given identifer.\n *\n * @param {idComputation} getId - a function that returns identifier of the\n * node over which the start event occurred\n * @param {number} touchId - a unique identifier associated with the touch\n */\n onTouchStart(getId, touchId, pageX) {\n // Ignore any touch events that start mid-swipe.\n if (this.swipeState) {\n return;\n }\n\n if (this.touchState[touchId]) {\n // It turns out we can get multiple touch starts with no\n // intervening move, end, or cancel events in Android WebViews.\n // TODO(benkomalo): it's not entirely clear why this happens, but\n // it seems to happen with the backspace button. It may be related\n // to FastClick (https://github.com/ftlabs/fastclick/issues/71)\n // though I haven't verified, and it's probably good to be robust\n // here anyways.\n return;\n }\n\n const startingNodeId = getId();\n this.touchState[touchId] = {\n swipeLocked: this.swipeDisabledNodeIds.includes(startingNodeId),\n startX: pageX,\n };\n\n this._onFocus(startingNodeId, touchId);\n }\n\n /**\n * Handle a touch-move event on the node with the given identifer.\n *\n * @param {idComputation} getId - a function that returns identifier of the\n * node over which the move event occurred\n * @param {number} touchId - a unique identifier associated with the touch\n * @param {number} pageX - the x coordinate of the touch\n * @param {boolean} swipeEnabled - whether the system should allow for\n * transitions into a swiping state\n */\n onTouchMove(getId, touchId, pageX, swipeEnabled) {\n if (this.swipeState) {\n // Only respect the finger that started a swipe. Any other lingering\n // gestures are ignored.\n if (this.swipeState.touchId === touchId) {\n this.handlers.onSwipeChange?.(pageX - this.swipeState.startX);\n }\n } else if (this.touchState[touchId]) {\n // It could be touch events started outside the keypad and\n // moved into it; ignore them.\n const {activeNodeId, startX, swipeLocked} =\n this.touchState[touchId];\n\n const dx = pageX - startX;\n const shouldBeginSwiping =\n swipeEnabled &&\n !swipeLocked &&\n Math.abs(dx) > this.options.swipeThresholdPx;\n\n if (shouldBeginSwiping) {\n this._onSwipeStart();\n\n // Trigger the swipe.\n this.swipeState = {\n touchId,\n startX,\n };\n this.handlers.onSwipeChange?.(pageX - this.swipeState.startX);\n } else {\n const id = getId();\n if (id !== activeNodeId) {\n this._onFocus(id, touchId);\n }\n }\n }\n }\n\n /**\n * Handle a touch-end event on the node with the given identifer.\n *\n * @param {idComputation} getId - a function that returns identifier of the\n * node over which the end event occurred\n * @param {number} touchId - a unique identifier associated with the touch\n * @param {number} pageX - the x coordinate of the touch\n */\n onTouchEnd(getId, touchId, pageX) {\n if (this.swipeState) {\n // Only respect the finger that started a swipe. Any other lingering\n // gestures are ignored.\n if (this.swipeState.touchId === touchId) {\n this.handlers.onSwipeEnd?.(pageX - this.swipeState.startX);\n this.swipeState = null;\n }\n } else if (this.touchState[touchId]) {\n // It could be touch events started outside the keypad and\n // moved into it; ignore them.\n const {activeNodeId, pressAndHoldIntervalId} =\n this.touchState[touchId];\n\n this._cleanupTouchEvent(touchId);\n\n const didPressAndHold = !!pressAndHoldIntervalId;\n if (didPressAndHold) {\n // We don't trigger a touch end if there was a press and hold,\n // because the key has been triggered at least once and calling\n // the onTouchEnd handler would add an extra trigger.\n this.handlers.onBlur();\n } else {\n // Trigger a touch-end. There's no need to notify clients of a\n // blur as clients are responsible for handling any cleanup in\n // their touch-end handlers.\n this.handlers.onTouchEnd(activeNodeId);\n }\n }\n }\n\n /**\n * Handle a touch-cancel event.\n */\n onTouchCancel(touchId) {\n // If a touch is cancelled and we're swiping, end the swipe with no\n // displacement.\n if (this.swipeState) {\n if (this.swipeState.touchId === touchId) {\n this.handlers.onSwipeEnd?.(0);\n this.swipeState = null;\n }\n } else if (this.touchState[touchId]) {\n // Otherwise, trigger a full blur. We don't want to trigger a\n // touch-up, since the cancellation means that the user probably\n // didn't release over a key intentionally.\n this._cleanupTouchEvent(touchId);\n this.handlers.onBlur();\n }\n }\n}\n\nexport default GestureStateMachine;\n","import {LayoutProps, Bound} from \"../../types\";\n/**\n * A manager for our node-to-ID system. In particular, this class is\n * responsible for maintaing a mapping between DOM nodes and node IDs, and\n * translating touch events from the raw positions at which they occur to the\n * nodes over which they are occurring. This differs from browser behavior, in\n * which touch events are only sent to the node in which a touch started.\n */\n\nclass NodeManager {\n _nodesById: Record<string, HTMLElement>;\n _orderedIds: ReadonlyArray<string>;\n _cachedBoundingBoxesById: Record<string, Bound>;\n\n constructor() {\n // A mapping from IDs to DOM nodes.\n this._nodesById = {};\n\n // An ordered list of IDs, where DOM nodes that are \"higher\" on the\n // page come earlier in the list. Note that an ID may be present in\n // this ordered list but not be registered to a DOM node (i.e., if it\n // is registered as a child of another DOM node, but hasn't appeared in\n // the DOM yet).\n this._orderedIds = [];\n\n // Cache bounding boxes aggressively, re-computing on page resize. Our\n // caching here makes the strict assumption that if a node is reasonably\n // assumed to be on-screen, its bounds won't change. For example, if we\n // see that a touch occurred within the bounds of a node, we cache those\n // bounds.\n // TODO(charlie): It'd be great if we could pre-compute these when the\n // page is idle and the keypad is visible (i.e., the nodes are in their\n // proper positions).\n this._cachedBoundingBoxesById = {};\n window.addEventListener(\"resize\", () => {\n this._cachedBoundingBoxesById = {};\n });\n }\n\n /**\n * Register a DOM node with a given identifier.\n *\n * @param {string} id - the identifier of the given node\n * @param {node} domNode - the DOM node linked to the identifier\n * @param {object} borders - an opaque object describing the node's borders\n */\n registerDOMNode(\n id: string,\n domNode: HTMLElement,\n childIds: ReadonlyArray<string>,\n ) {\n this._nodesById[id] = domNode;\n\n // Make sure that any children appear first.\n // TODO(charlie): This is a very simplistic system that wouldn't\n // properly handle multiple levels of nesting.\n const allIds = [...(childIds || []), id, ...this._orderedIds];\n\n // De-dupe the list of IDs.\n const orderedIds = [];\n const seenIds = {};\n for (const id of allIds) {\n if (!seenIds[id]) {\n // @ts-expect-error TS2345\n orderedIds.push(id);\n seenIds[id] = true;\n }\n }\n\n this._orderedIds = orderedIds;\n }\n\n /**\n * Unregister the DOM node with the given identifier.\n *\n * @param {string} id - the identifier of the node to unregister\n */\n unregisterDOMNode(id: string) {\n delete this._nodesById[id];\n }\n\n /**\n * Return the identifier of the topmost node located at the given\n * coordinates.\n *\n * @param {number} x - the x coordinate at which to search for a node\n * @param {number} y - the y coordinate at which to search for a node\n * @returns {null|string} - null or the identifier of the topmost node at\n * the given coordinates\n */\n idForCoords(x: number, y: number): string | void {\n for (const id of this._orderedIds) {\n const domNode = this._nodesById[id];\n if (domNode) {\n const bounds = domNode.getBoundingClientRect();\n if (\n bounds.left <= x &&\n bounds.right > x &&\n bounds.top <= y &&\n bounds.bottom > y\n ) {\n this._cachedBoundingBoxesById[id] = bounds;\n return id;\n }\n }\n }\n }\n\n /**\n * Return the necessary layout information, including the bounds and border\n * values, for the node with the given identifier.\n *\n * @param {string} id - the identifier of the node for which to return the\n * layout information\n * @returns {object} - the bounding client rect for the given node, along\n * with its borders\n */\n layoutPropsForId(id: string): LayoutProps {\n if (!this._cachedBoundingBoxesById[id]) {\n const node = this._nodesById[id];\n\n this._cachedBoundingBoxesById[id] = node\n ? node.getBoundingClientRect()\n : new DOMRect();\n }\n\n return {\n initialBounds: this._cachedBoundingBoxesById[id],\n };\n }\n}\n\nexport default NodeManager;\n","import type {ActiveNodesObj} from \"../../types\";\n\n/**\n * A state machine for the popover state. In particular, this class manages the\n * mapping of parent nodes to their children, and translates touch events that\n * traverse various nodes to actions that are conditioned on whether a popover\n * is present.\n */\n\ntype Handlers = {\n onActiveNodesChanged: (activeNodes: ActiveNodesObj) => void;\n onClick: (keyId: string, domNodeId: string, inPopover: boolean) => void;\n};\n\nclass PopoverStateMachine {\n handlers: Handlers;\n popovers: Record<string, ReadonlyArray<string>>;\n activePopover: string | null;\n\n constructor(handlers) {\n this.handlers = handlers;\n\n this.activePopover = null;\n this.popovers = {};\n }\n\n /**\n * Register a popover container as containing a set of children.\n *\n * @param {string} id - the identifier of the popover container\n * @param {string[]} childIds - the identifiers of the nodes contained in\n * the popover container\n */\n registerPopover(id, childIds) {\n this.popovers[id] = childIds;\n }\n\n /**\n * Unregister a popover container.\n *\n * @param {string} id - the identifier of the popover container to\n * unregister\n */\n unregisterPopover(id) {\n delete this.popovers[id];\n }\n\n /**\n * @returns {boolean} - whether a popover is active and visible\n */\n isPopoverVisible() {\n return this.activePopover != null;\n }\n\n /**\n * Blur the active nodes.\n */\n onBlur() {\n this.activePopover = null;\n this.handlers.onActiveNodesChanged({\n popover: null,\n focus: null,\n });\n }\n\n /**\n * Handle a focus event on the node with the given identifier.\n *\n * @param {string} id - the identifier of the node that was focused\n */\n onFocus(id) {\n if (this.activePopover) {\n // If we have a popover that is currently active, we focus this\n // node if it's in the popover, and remove any highlight otherwise.\n if (this._isNodeInsidePopover(this.activePopover, id)) {\n this.handlers.onActiveNodesChanged({\n popover: {\n parentId: this.activePopover,\n childIds: this.popovers[this.activePopover],\n },\n focus: id,\n });\n } else {\n this.handlers.onActiveNodesChanged({\n popover: {\n parentId: this.activePopover,\n childIds: this.popovers[this.activePopover],\n },\n focus: null,\n });\n }\n } else {\n this.activePopover = null;\n this.handlers.onActiveNodesChanged({\n popover: null,\n focus: id,\n });\n }\n }\n\n /**\n * Handle a long press event on the node with the given identifier.\n *\n * @param {string} id - the identifier of the node that was long-pressed\n */\n onLongPress(id) {\n // We only care about long presses if they occur on a popover, and we\n // don't already have a popover active.\n if (!this.activePopover && this.popovers[id]) {\n // NOTE(charlie): There's an assumption here that focusing the\n // first child is the correct behavior for a newly focused popover.\n // This relies on the fact that the children are rendered\n // bottom-up. If that rendering changes, this logic will need to\n // change as well.\n this.activePopover = id;\n this.handlers.onActiveNodesChanged({\n popover: {\n parentId: id,\n childIds: this.popovers[id],\n },\n focus: this._defaultNodeForPopover(this.activePopover),\n });\n }\n }\n\n /**\n * Handle the trigger (click or hold) of the node with the given identifier.\n *\n * @param {string} id - the identifier of the node that was triggered\n */\n onTrigger(id) {\n this.handlers.onClick(id, id, false);\n }\n\n /**\n * Handle a touch-end event on the node with the given identifier.\n *\n * @param {string} id - the identifier of the node over which the touch\n * ended\n */\n onTouchEnd(id) {\n const inPopover = !!this.activePopover;\n if (inPopover) {\n // If we have a popover that is currently active, we trigger a\n // click on this node if and only if it's in the popover, with the\n // exception that, if the node passed back _is_ the active popover,\n // then we trigger its default node. This latter case should only\n // be triggered if the user were to tap down on a popover-enabled\n // node, hold for long enough for the popover to appear, and then\n // release without ever moving their finger, in which case, the\n // underlying gesture system would have no idea that the popover's\n // first child node was now focused.\n if (this._isNodeInsidePopover(this.activePopover, id)) {\n this.handlers.onClick(id, id, inPopover);\n } else if (this.activePopover === id) {\n const keyId = this._defaultNodeForPopover(id);\n this.handlers.onClick(keyId, keyId, inPopover);\n }\n } else if (this.popovers[id]) {\n // Otherwise, if the node is itself a popover revealer, trigger the\n // clicking of its default node, but pass back the popover node ID\n // for layout purposes.\n const keyId = this._defaultNodeForPopover(id);\n const domNodeId = id;\n this.handlers.onClick(keyId, domNodeId, inPopover);\n } else if (id != null) {\n // Finally, if we have no active popover, and we touched up over a\n // valid key, trigger a click.\n this.onTrigger(id);\n }\n\n this.onBlur();\n }\n\n _isNodeInsidePopover(popover, id) {\n return this.popovers[popover].includes(id);\n }\n\n _defaultNodeForPopover(popover) {\n return this.popovers[popover][0];\n }\n}\n\nexport default PopoverStateMachine;\n","/**\n * A high-level manager for our gesture system. In particular, this class\n * connects our various bits of logic for managing gestures and interactions,\n * and links them together.\n */\nimport * as React from \"react\";\n\nimport Key from \"../../data/keys\";\nimport {ActiveNodesObj, LayoutProps} from \"../../types\";\n\nimport GestureStateMachine from \"./gesture-state-machine\";\nimport NodeManager from \"./node-manager\";\nimport PopoverStateMachine from \"./popover-state-machine\";\n\nconst coordsForEvent = (evt) => {\n return [evt.changedTouches[0].clientX, evt.changedTouches[0].clientY];\n};\n\ntype Options = {\n swipeEnabled: boolean;\n};\n\ntype Handlers = {\n onSwipeChange?: (dx: number) => void;\n onSwipeEnd?: (dx: number) => void;\n onActiveNodesChanged: (activeNodes: ActiveNodesObj) => void;\n onClick: (key: Key, layoutProps: LayoutProps, inPopover: boolean) => void;\n};\n\nclass GestureManager {\n swipeEnabled: boolean;\n trackEvents: boolean;\n nodeManager: NodeManager;\n popoverStateMachine: PopoverStateMachine;\n gestureStateMachine: GestureStateMachine;\n\n constructor(\n options: Options,\n handlers: Handlers,\n disabledSwipeKeys: ReadonlyArray<Key>,\n multiPressableKeys: ReadonlyArray<Key>,\n ) {\n const {swipeEnabled} = options;\n\n this.swipeEnabled = swipeEnabled;\n\n // Events aren't tracked until event tracking is enabled.\n this.trackEvents = false;\n\n this.nodeManager = new NodeManager();\n this.popoverStateMachine = new PopoverStateMachine({\n onActiveNodesChanged: (activeNodes) => {\n const {popover, ...rest} = activeNodes;\n handlers.onActiveNodesChanged({\n popover: popover && {\n parentId: popover.parentId,\n bounds: this.nodeManager.layoutPropsForId(\n popover.parentId,\n ).initialBounds,\n childKeyIds: popover.childIds,\n },\n ...rest,\n });\n },\n /**\n * `onClick` takes two arguments:\n *\n * @param {string} keyId - the identifier key that should initiate\n * a click\n * @param {string} domNodeId - the identifier of the DOM node on\n * which the click should be considered\n * to have occurred\n * @param {bool} inPopover - whether the key was contained within a\n * popover\n *\n * These two parameters will often be equivalent. They will differ,\n * though, when a popover button is itself clicked, in which case\n * we need to mimic the effects of clicking on its 'primary' child\n * key, but animate the click on the popover button.\n */\n onClick: (keyId, domNodeId, inPopover) => {\n handlers.onClick(\n keyId,\n this.nodeManager.layoutPropsForId(domNodeId),\n inPopover,\n );\n },\n });\n this.gestureStateMachine = new GestureStateMachine(\n {\n onFocus: (id) => {\n this.popoverStateMachine.onFocus(id);\n },\n onLongPress: (id) => {\n this.popoverStateMachine.onLongPress(id);\n },\n onTouchEnd: (id) => {\n this.popoverStateMachine.onTouchEnd(id);\n },\n onBlur: () => {\n this.popoverStateMachine.onBlur();\n },\n onSwipeChange: handlers.onSwipeChange,\n onSwipeEnd: handlers.onSwipeEnd,\n onTrigger: (id) => {\n this.popoverStateMachine.onTrigger(id);\n },\n },\n {},\n disabledSwipeKeys,\n multiPressableKeys,\n );\n }\n\n /**\n * Handle a touch-start event that originated in a node registered with the\n * gesture system.\n *\n * @param {React.TouchEvent<HTMLDivElement>} evt - the raw touch event from the browser\n * @param {string} id - the identifier of the DOM node in which the touch\n * occurred\n */\n onTouchStart(\n evt: React.TouchEvent<HTMLDivElement>,\n id?: string | undefined,\n ) {\n if (!this.trackEvents) {\n return;\n }\n\n const [x] = coordsForEvent(evt);\n\n // TODO(charlie): It doesn't seem to be guaranteed that every touch\n // event on `changedTouches` originates from the node through which this\n // touch event was sent. In that case, we'd be inappropriately reporting\n // the starting node ID.\n for (let i = 0; i < evt.changedTouches.length; i++) {\n this.gestureStateMachine.onTouchStart(\n () => id,\n evt.changedTouches[i].identifier,\n x,\n );\n }\n\n // If an event started in a view that we're managing, we'll handle it\n // all the way through.\n evt.preventDefault();\n }\n\n /**\n * Handle a touch-move event that originated in a node registered with the\n * gesture system.\n *\n * @param {React.TouchEvent<HTMLDivElement>} evt - the raw touch event from the browser\n */\n onTouchMove(evt: React.TouchEvent<HTMLDivElement>) {\n if (!this.trackEvents) {\n return;\n }\n\n const swipeLocked = this.popoverStateMachine.isPopoverVisible();\n const swipeEnabled = this.swipeEnabled && !swipeLocked;\n const [x, y] = coordsForEvent(evt);\n for (let i = 0; i < evt.changedTouches.length; i++) {\n this.gestureStateMachine.onTouchMove(\n () => this.nodeManager.idForCoords(x, y),\n evt.changedTouches[i].identifier,\n x,\n swipeEnabled,\n );\n }\n }\n\n /**\n * Handle a touch-end event that originated in a node registered with the\n * gesture system.\n *\n * @param {React.TouchEvent<HTMLDivElement>} evt - the raw touch event from the browser\n */\n onTouchEnd(evt: React.TouchEvent<HTMLDivElement>) {\n if (!this.trackEvents) {\n return;\n }\n\n const [x, y] = coordsForEvent(evt);\n for (let i = 0; i < evt.changedTouches.length; i++) {\n this.gestureStateMachine.onTouchEnd(\n () => this.nodeManager.idForCoords(x, y),\n evt.changedTouches[i].identifier,\n x,\n );\n }\n }\n\n /**\n * Handle a touch-cancel event that originated in a node registered with the\n * gesture system.\n *\n * @param {React.TouchEvent<HTMLDivElement>} evt - the raw touch event from the browser\n */\n onTouchCancel(evt: React.TouchEvent<HTMLDivElement>) {\n if (!this.trackEvents) {\n return;\n }\n\n for (let i = 0; i < evt.changedTouches.length; i++) {\n this.gestureStateMachine.onTouchCancel(\n evt.changedTouches[i].identifier,\n );\n }\n }\n\n /**\n * Register a DOM node with a given identifier.\n *\n * @param {string} id - the identifier of the given node\n * @param {node} domNode - the DOM node linked to the identifier\n * @param {string[]} childIds - the identifiers of any DOM nodes that\n * should be considered children of this node,\n * in that they should take priority when\n * intercepting touch events\n * @param {object} borders - an opaque object describing the node's borders\n */\n registerDOMNode(id, domNode, childIds) {\n this.nodeManager.registerDOMNode(id, domNode, childIds);\n this.popoverStateMachine.registerPopover(id, childIds);\n }\n\n /**\n * Unregister the DOM node with the given identifier.\n *\n * @param {string} id - the identifier of the node to unregister\n */\n unregisterDOMNode(id) {\n this.nodeManager.unregisterDOMNode(id);\n this.popoverStateMachine.unregisterPopover(id);\n }\n\n /**\n * Enable event tracking for the gesture manager.\n */\n enableEventTracking() {\n this.trackEvents = true;\n }\n\n /**\n * Disable event tracking for the gesture manager. When called, the gesture\n * manager will drop any events received by managed nodes.\n */\n disableEventTracking() {\n this.trackEvents = false;\n }\n}\n\nexport default GestureManager;\n","import KeyConfigs from \"../../../data/key-configs\";\nimport {EchoAnimationType} from \"../../../enums\";\n\nimport type {Action} from \"./actions\";\nimport type {EchoState} from \"./types\";\n\n// Used to generate unique animation IDs for the echo animations. The actual\n// values are irrelevant as long as they are unique.\nlet _lastAnimationId = 0;\n\nconst initialEchoState = {\n echoes: [],\n} as const;\n\nconst echoReducer = function (\n state: EchoState = initialEchoState,\n action: Action,\n): EchoState {\n switch (action.type) {\n case \"PressKey\":\n const keyConfig = KeyConfigs[action.key];\n\n // Add in the echo animation if the user performs a math\n // operation.\n if (keyConfig.type === \"VALUE\" || keyConfig.type === \"OPERATOR\") {\n return {\n ...state,\n echoes: [\n ...state.echoes,\n {\n animationId: \"\" + _lastAnimationId++,\n animationType: action.inPopover\n ? EchoAnimationType.LONG_FADE_ONLY\n : EchoAnimationType.FADE_ONLY,\n id: keyConfig.id,\n initialBounds: action.initialBounds,\n },\n ],\n };\n }\n return state;\n\n case \"RemoveEcho\":\n const remainingEchoes = state.echoes.filter((echo) => {\n return echo.animationId !== action.animationId;\n });\n return {\n ...state,\n echoes: remainingEchoes,\n };\n\n default:\n return state;\n }\n};\n\nexport default echoReducer;\n","import KeyConfigs from \"../../../data/key-configs\";\nimport {CursorContext} from \"../../input/cursor-contexts\";\n\nimport type {Cursor, KeyHandler} from \"../../../types\";\nimport type {Action} from \"./actions\";\nimport type {InputState} from \"./types\";\n\nconst initialInputState: {\n keyHandler: KeyHandler | null;\n cursor: Cursor;\n} = {\n keyHandler: null,\n cursor: {\n context: CursorContext.NONE,\n },\n};\n\nconst inputReducer = function (\n state: InputState = initialInputState,\n action: Action,\n): InputState {\n switch (action.type) {\n case \"SetKeyHandler\":\n return {\n ...state,\n keyHandler: action.keyHandler,\n };\n\n case \"PressKey\":\n const keyConfig = KeyConfigs[action.key];\n if (keyConfig.type !== \"KEYPAD_NAVIGATION\") {\n // This is probably an anti-pattern but it works for the\n // case where we don't actually control the state but we\n // still want to communicate with the other object\n return {\n ...state,\n cursor: state.keyHandler?.(keyConfig.id),\n };\n }\n\n // TODO(kevinb) get state from MathQuill and store it?\n return state;\n\n case \"SetCursor\":\n return {\n ...state,\n cursor: action.cursor,\n };\n\n default:\n return state;\n }\n};\n\nexport default inputReducer;\n","import {KeypadType} from \"../../../enums\";\nimport {expressionKeypadLayout} from \"../expression-keypad\";\nimport {fractionKeypadLayout} from \"../fraction-keypad\";\n\nconst defaultKeypadType = KeypadType.EXPRESSION;\n\nconst keypadForType = {\n [KeypadType.FRACTION]: fractionKeypadLayout,\n [KeypadType.EXPRESSION]: expressionKeypadLayout,\n} as const;\n\nexport {keypadForType, defaultKeypadType};\n","import KeyConfigs from \"../../../data/key-configs\";\n\nimport {defaultKeypadType} from \"./shared\";\n\nimport type {Action} from \"./actions\";\nimport type {KeypadState} from \"./types\";\n\nconst initialKeypadState = {\n extraKeys: [\"x\", \"y\", \"THETA\", \"PI\"] as const,\n keypadType: defaultKeypadType,\n active: false,\n} as const;\n\nconst keypadReducer = function (\n state: KeypadState = initialKeypadState,\n action: Action,\n): KeypadState {\n switch (action.type) {\n case \"DismissKeypad\":\n return {\n ...state,\n active: false,\n };\n\n case \"ActivateKeypad\":\n return {\n ...state,\n active: true,\n };\n\n case \"ConfigureKeypad\":\n return {\n ...state,\n // Default `extraKeys` to the empty array.\n extraKeys: [],\n ...action.configuration,\n };\n\n case \"PressKey\":\n const keyConfig = KeyConfigs[action.key];\n // NOTE(charlie): Our keypad system operates by triggering key\n // presses with key IDs in a dumb manner, such that the keys\n // don't know what they can do--instead, the store is\n // responsible for interpreting key presses and triggering the\n // right actions when they occur. Hence, we figure off a\n // dismissal here rather than dispatching a dismiss action in\n // the first place.\n if (keyConfig.id === \"DISMISS\") {\n return keypadReducer(state, {type: \"DismissKeypad\"});\n }\n return state;\n\n default:\n return state;\n }\n};\n\nexport default keypadReducer;\n","/**\n * An algorithm for computing the appropriate layout parameters for the keypad,\n * including the size of the buttons and whether or not to render fullscreen,\n * taking into account a number of factors including the size of the screen, the\n * orientation of the screen, the presence of browser chrome, the presence of\n * other exercise-related chrome, the size of the input box, the parameters that\n * define the keypad (i.e., the number of rows, columns, and pages), and so\n * forth.\n *\n * The computations herein make some strong assumptions about the sizes of\n * various other elements and the situations under which they will be visible\n * (e.g., browser chrome). However, this is just a heuristic--it's not crucial\n * that our buttons are sized in a pixel-perfect manner, but rather, that we\n * make a balanced use of space.\n *\n * Note that one goal of the algorithm is to avoid resizing the keypad in the\n * face of dynamic browser chrome. In order to avoid that awkwardness, we tend\n * to be conservative in our measurements and make things smaller than they\n * might need to be.\n */\n\nimport {DeviceType, DeviceOrientation, LayoutMode} from \"../../enums\";\nimport {\n pageIndicatorHeightPx,\n toolbarHeightPx,\n navigationPadWidthPx,\n innerBorderWidthPx,\n} from \"../common-style\";\n\nconst minButtonHeight = 48;\nconst maxButtonSize = 64;\nconst minSpaceAboveKeypad = 32;\n\n// These values are taken from an iPhone 5, but should be consistent with the\n// iPhone 4 as well. Regardless, these are meant to be representative of the\n// possible types of browser chrome that could appear in various context, rather\n// than pixel-perfect for every device.\nconst safariNavBarWhenShrunk = 44;\nconst safariNavBarWhenExpanded = 64;\nconst safariToolbar = 44;\n\n// In mobile Safari, the browser chrome is completely hidden in landscape,\n// though a shrunken navbar and full-sized toolbar on scroll. In portrait, the\n// shrunken navbar is always visible, but expands on scroll (and the toolbar\n// appears as well).\nconst maxLandscapeBrowserChrome = safariNavBarWhenShrunk + safariToolbar;\nconst maxPortraitBrowserChrome =\n safariToolbar + (safariNavBarWhenExpanded - safariNavBarWhenShrunk);\n\n// This represents the 'worst case' aspect ratio that we care about (for\n// portrait layouts). It's taken from the iPhone 4. The height is computed by\n// taking the height of the device and removing the persistent, shrunken navbar.\n// (We don't need to account for the expanded navbar, since we include the\n// difference when reserving space above the keypad.)\nconst worstCaseAspectRatio = 320 / (480 - safariNavBarWhenShrunk);\n\nexport const computeLayoutParameters = (\n {numColumns, numMaxVisibleRows, numPages},\n {pageWidthPx, pageHeightPx},\n {deviceOrientation, deviceType},\n {navigationPadEnabled, paginationEnabled, toolbarEnabled},\n) => {\n // First, compute some values that will be used in multiple computations.\n const effectiveNumColumns = paginationEnabled\n ? numColumns\n : numColumns * numPages;\n\n // Then, compute the button dimensions based on the provided parameters.\n let buttonDimensions;\n if (deviceType === DeviceType.PHONE) {\n const isLandscape = deviceOrientation === DeviceOrientation.LANDSCAPE;\n\n // In many cases, the browser chrome will already have been factored\n // into `pageHeightPx`. But we have no way of knowing if that's\n // the case or not. As such, we take a conservative approach and\n // assume that the chrome is _never_ included in `pageHeightPx`.\n const browserChromeHeight = isLandscape\n ? maxLandscapeBrowserChrome\n : maxPortraitBrowserChrome;\n\n // Count up all the space that we need to reserve on the page.\n // Namely, we need to account for:\n // 1. Space between the keypad and the top of the page.\n // 2. The presence of the exercise toolbar.\n // 3. The presence of the view pager indicator.\n // 4. Any browser chrome that may appear later.\n const reservedSpace =\n minSpaceAboveKeypad +\n browserChromeHeight +\n (toolbarEnabled ? toolbarHeightPx : 0) +\n (paginationEnabled ? pageIndicatorHeightPx : 0);\n\n // Next, compute the effective width and height. We can use the page\n // width as the effective width. For the height, though, we take\n // another conservative measure when in portrait by assuming that\n // the device has the worst possible aspect ratio. In other words,\n // we ignore the device height in portrait and assume the worst.\n // This prevents the keypad from changing size when browser chrome\n // appears and disappears.\n const effectiveWidth = pageWidthPx;\n const effectiveHeight = isLandscape\n ? pageHeightPx\n : pageWidthPx / worstCaseAspectRatio;\n const maxKeypadHeight = effectiveHeight - reservedSpace;\n\n // Finally, compute the button height and width. In computing the\n // height, accommodate for the maximum number of rows that will ever be\n // visible (since the toggling of popovers can increase the number of\n // visible rows).\n const buttonHeightPx = Math.max(\n Math.min(maxKeypadHeight / numMaxVisibleRows, maxButtonSize),\n minButtonHeight,\n );\n\n let buttonWidthPx;\n if (numPages > 1) {\n const effectiveNumColumns = paginationEnabled\n ? numColumns\n : numColumns * numPages;\n buttonWidthPx = effectiveWidth / effectiveNumColumns;\n } else {\n buttonWidthPx = isLandscape\n ? maxButtonSize\n : effectiveWidth / numColumns;\n }\n\n buttonDimensions = {\n widthPx: buttonWidthPx,\n heightPx: buttonHeightPx,\n };\n } else if (deviceType === DeviceType.TABLET) {\n buttonDimensions = {\n widthPx: maxButtonSize,\n heightPx: maxButtonSize,\n };\n } else {\n throw new Error(\"Invalid device type: \" + deviceType);\n }\n\n // Finally, determine whether the keypad should be rendered in the\n // fullscreen layout by determining its resultant width.\n const numSeparators =\n (navigationPadEnabled ? 1 : 0) +\n (!paginationEnabled ? numPages - 1 : 0);\n const keypadWidth =\n effectiveNumColumns * buttonDimensions.widthPx +\n (navigationPadEnabled ? navigationPadWidthPx : 0) +\n numSeparators * innerBorderWidthPx;\n return {\n buttonDimensions,\n layoutMode:\n keypadWidth >= pageWidthPx\n ? LayoutMode.FULLSCREEN\n : LayoutMode.COMPACT,\n };\n};\n","import {DeviceOrientation, DeviceType, LayoutMode} from \"../../../enums\";\nimport {tabletCutoffPx} from \"../../common-style\";\nimport {computeLayoutParameters} from \"../compute-layout-parameters\";\n\nimport {defaultKeypadType, keypadForType} from \"./shared\";\n\nimport type {Action} from \"./actions\";\nimport type {LayoutState} from \"./types\";\n\nconst initialLayoutState = {\n gridDimensions: {\n numRows: keypadForType[defaultKeypadType].rows,\n numColumns: keypadForType[defaultKeypadType].columns,\n numMaxVisibleRows: keypadForType[defaultKeypadType].maxVisibleRows,\n numPages: keypadForType[defaultKeypadType].numPages,\n },\n buttonDimensions: {\n widthPx: 48,\n heightPx: 48,\n },\n pageDimensions: {\n pageWidthPx: 0,\n pageHeightPx: 0,\n },\n layoutMode: LayoutMode.FULLSCREEN,\n paginationEnabled: false,\n navigationPadEnabled: false,\n} as const;\n\n/**\n * Compute the additional layout state based on the provided page and grid\n * dimensions.\n */\nconst layoutParametersForDimensions = (\n pageDimensions:\n | {\n pageHeightPx: never;\n pageWidthPx: never;\n }\n | {\n pageHeightPx: number;\n pageWidthPx: number;\n },\n gridDimensions,\n) => {\n const {pageWidthPx, pageHeightPx} = pageDimensions;\n\n // Determine the device type and orientation.\n const deviceOrientation =\n pageWidthPx > pageHeightPx\n ? DeviceOrientation.LANDSCAPE\n : DeviceOrientation.PORTRAIT;\n const deviceType =\n Math.min(pageWidthPx, pageHeightPx) > tabletCutoffPx\n ? DeviceType.TABLET\n : DeviceType.PHONE;\n\n // Using that information, make some decisions (or assumptions)\n // about the resulting layout.\n const navigationPadEnabled = deviceType === DeviceType.TABLET;\n const paginationEnabled =\n deviceType === DeviceType.PHONE &&\n deviceOrientation === DeviceOrientation.PORTRAIT;\n\n const deviceInfo = {deviceOrientation, deviceType} as const;\n const layoutOptions = {\n navigationPadEnabled,\n paginationEnabled,\n // HACK(charlie): It's not great that we're making assumptions about\n // the toolbar (which is rendered by webapp, and should always be\n // visible and anchored to the bottom of the page for phone and\n // tablet exercises). But this is primarily a heuristic (the goal is\n // to preserve a 'good' amount of space between the top of the\n // keypad and the top of the page) so we afford to have some margin\n // of error.\n toolbarEnabled: true,\n } as const;\n\n return {\n ...computeLayoutParameters(\n gridDimensions,\n pageDimensions,\n deviceInfo,\n layoutOptions,\n ),\n // Pass along some of the layout information, so that other\n // components in the heirarchy can adapt appropriately.\n navigationPadEnabled,\n paginationEnabled,\n };\n};\n\nconst layoutReducer = function (\n state: LayoutState = initialLayoutState,\n action: Action,\n): LayoutState {\n switch (action.type) {\n case \"ConfigureKeypad\":\n const {keypadType} = action.configuration;\n const gridDimensions = {\n numRows: keypadForType[keypadType].rows,\n numColumns: keypadForType[keypadType].columns,\n numMaxVisibleRows: keypadForType[keypadType].maxVisibleRows,\n numPages: keypadForType[keypadType].numPages,\n } as const;\n\n return {\n ...state,\n ...layoutParametersForDimensions(\n state.pageDimensions,\n gridDimensions,\n ),\n gridDimensions,\n };\n\n case \"SetPageSize\":\n const {pageWidthPx, pageHeightPx} = action;\n const pageDimensions = {pageWidthPx, pageHeightPx} as const;\n\n return {\n ...state,\n ...layoutParametersForDimensions(\n pageDimensions,\n state.gridDimensions,\n ),\n pageDimensions,\n };\n\n default:\n return state;\n }\n};\n\nexport default layoutReducer;\n","import * as Redux from \"redux\";\n\nimport Key from \"../../../data/keys\";\nimport GestureManager from \"../gesture-manager\";\n\nimport {setActiveNodes, pressKey} from \"./actions\";\nimport echoReducer from \"./echo-reducer\";\nimport inputReducer from \"./input-reducer\";\nimport keypadReducer from \"./keypad-reducer\";\nimport layoutReducer from \"./layout-reducer\";\nimport {defaultKeypadType, keypadForType} from \"./shared\";\n\nimport type {LayoutProps, ActiveNodesObj} from \"../../../types\";\nimport type {Action} from \"./actions\";\nimport type {GestureState} from \"./types\";\n\nexport const createStore = () => {\n // TODO(matthewc)[LC-752]: gestureReducer can't be moved from this file\n // because it depends on `store` being in scope (see note below)\n const createGestureManager = (swipeEnabled: boolean) => {\n return new GestureManager(\n {\n swipeEnabled,\n },\n {\n onActiveNodesChanged: (activeNodes: ActiveNodesObj) => {\n store.dispatch(setActiveNodes(activeNodes));\n },\n onClick: (\n key: Key,\n layoutProps: LayoutProps,\n inPopover: boolean,\n ) => {\n store.dispatch(\n pressKey(key, layoutProps.initialBounds, inPopover),\n );\n },\n },\n [],\n [\"BACKSPACE\", \"UP\", \"RIGHT\", \"DOWN\", \"LEFT\"],\n );\n };\n\n const initialGestureState = {\n popover: null,\n focus: null,\n gestureManager: createGestureManager(\n keypadForType[defaultKeypadType].numPages > 1,\n ),\n } as const;\n\n const gestureReducer = function (\n state: GestureState = initialGestureState,\n action: Action,\n ): GestureState {\n switch (action.type) {\n case \"DismissKeypad\":\n // NOTE(charlie): In the past, we enforced the \"gesture manager\n // will not receive any events when the keypad is hidden\"\n // assumption by assuming that the keypad would be hidden when\n // dismissed and, as such, that none of its managed DOM nodes\n // would be able to receive touch events. However, on mobile\n // Safari, we're seeing that some of the keys receive touch\n // events even when off-screen, inexplicably. So, to guard\n // against that bug and make the contract explicit, we enable\n // and disable event tracking on activation and dismissal.\n state.gestureManager.disableEventTracking();\n return state;\n\n case \"ActivateKeypad\":\n state.gestureManager.enableEventTracking();\n return state;\n\n case \"SetActiveNodes\":\n return {\n ...state,\n ...action.activeNodes,\n };\n\n case \"ConfigureKeypad\":\n const {keypadType} = action.configuration;\n const {numPages} = keypadForType[keypadType];\n const swipeEnabled = numPages > 1;\n return {\n popover: null,\n focus: null,\n gestureManager: createGestureManager(swipeEnabled),\n };\n\n default:\n return state;\n }\n };\n\n const reducer = Redux.combineReducers({\n input: inputReducer,\n keypad: keypadReducer,\n gestures: gestureReducer,\n echoes: echoReducer,\n layout: layoutReducer,\n });\n\n // TODO(charlie): This non-inlined return is necessary so as to allow the\n // gesture manager to dispatch actions on the store in its callbacks. We\n // should come up with a better pattern to remove the two-way dependency.\n // eslint-disable-next-line import/no-deprecated\n const store = Redux.createStore(reducer);\n\n return store;\n};\n","import * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {Provider} from \"react-redux\";\n\nimport KeypadContainer from \"./keypad-container\";\nimport {\n activateKeypad,\n dismissKeypad,\n configureKeypad,\n setCursor,\n setKeyHandler,\n} from \"./store/actions\";\nimport {createStore} from \"./store/index\";\n\nimport type {Cursor, KeypadConfiguration, KeyHandler} from \"../../types\";\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\ntype Props = {\n onElementMounted?: (arg1: any) => void;\n onDismiss?: () => void;\n style?: StyleType;\n};\n\nclass ProvidedKeypad extends React.Component<Props> {\n store: any;\n\n constructor(props) {\n super(props);\n this.store = createStore();\n }\n\n activate: () => void = () => {\n this.store.dispatch(activateKeypad());\n };\n\n dismiss: () => void = () => {\n this.store.dispatch(dismissKeypad());\n };\n\n configure: (configuration: KeypadConfiguration, cb: () => void) => void = (\n configuration,\n cb,\n ) => {\n this.store.dispatch(configureKeypad(configuration));\n\n // HACK(charlie): In Perseus, triggering a focus causes the keypad to\n // animate into view and re-configure. We'd like to provide the option\n // to re-render the re-configured keypad before animating it into view,\n // to avoid jank in the animation. As such, we support passing a\n // callback into `configureKeypad`. However, implementing this properly\n // would require middleware, etc., so we just hack it on with\n // `setTimeout` for now.\n setTimeout(() => cb && cb());\n };\n\n setCursor: (cursor: Cursor) => void = (cursor) => {\n this.store.dispatch(setCursor(cursor));\n };\n\n setKeyHandler: (keyHandler: KeyHandler) => void = (keyHandler) => {\n this.store.dispatch(setKeyHandler(keyHandler));\n };\n\n getDOMNode: () => ReturnType<typeof ReactDOM.findDOMNode> = () => {\n return ReactDOM.findDOMNode(this);\n };\n\n render(): React.ReactNode {\n const {onElementMounted, onDismiss, style} = this.props;\n\n return (\n <Provider store={this.store}>\n <KeypadContainer\n onElementMounted={(element) => {\n // Append the dispatch methods that we want to expose\n // externally to the returned React element.\n const elementWithDispatchMethods = {\n ...element,\n activate: this.activate,\n dismiss: this.dismiss,\n configure: this.configure,\n setCursor: this.setCursor,\n setKeyHandler: this.setKeyHandler,\n getDOMNode: this.getDOMNode,\n } as const;\n onElementMounted &&\n onElementMounted(elementWithDispatchMethods);\n }}\n onDismiss={onDismiss}\n style={style}\n />\n </Provider>\n );\n }\n}\n\nexport default ProvidedKeypad;\n","import Clickable from \"@khanacademy/wonder-blocks-clickable\";\nimport Color from \"@khanacademy/wonder-blocks-color\";\nimport {View} from \"@khanacademy/wonder-blocks-core\";\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\nconst styles = StyleSheet.create({\n base: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n boxShadow: \"0px 1px 0px rgba(33, 36, 44, 0.32)\",\n boxSizing: \"border-box\",\n background: Color.white,\n borderRadius: 4,\n border: `1px solid transparent`,\n flex: 1,\n minHeight: 42,\n minWidth: 42,\n padding: 1,\n },\n hovered: {\n border: `1px solid ${Color.blue}`,\n padding: 1,\n boxShadow: \"none\",\n },\n focused: {\n border: `2px solid ${Color.blue}`,\n padding: 0,\n boxShadow: \"none\",\n },\n pressed: {\n border: \"2px solid #1B50B3\",\n padding: 0,\n background: `linear-gradient(0deg, rgba(24, 101, 242, 0.32), rgba(24, 101, 242, 0.32)), ${Color.white}`,\n boxShadow: \"none\",\n },\n outerBoxBase: {\n padding: 1,\n height: \"100%\",\n width: \"100%\",\n boxSizing: \"border-box\",\n borderRadius: 7,\n border: \"2px solid transparent\",\n },\n outerBoxHover: {\n border: `2px solid ${Color.blue}`,\n },\n outerBoxPressed: {\n border: \"2px solid #1B50B3\",\n },\n clickable: {\n width: \"100%\",\n height: \"100%\",\n boxSizing: \"border-box\",\n },\n});\n\nexport type Props = {\n onPress: () => void;\n children: React.ReactNode;\n ariaLabel: string;\n style?: StyleType;\n tintColor?: string;\n};\n\nexport default class Button extends React.Component<Props> {\n render(): React.ReactNode {\n const {onPress, ariaLabel, children, style, tintColor} = this.props;\n return (\n <View style={style}>\n <Clickable\n onClick={onPress}\n style={styles.clickable}\n aria-label={ariaLabel}\n >\n {({hovered, focused, pressed}) => {\n return (\n <View\n style={[\n styles.outerBoxBase,\n hovered && styles.outerBoxHover,\n pressed && styles.outerBoxPressed,\n ]}\n >\n <View\n style={[\n styles.base,\n tintColor != null\n ? {background: tintColor}\n : undefined,\n hovered && styles.hovered,\n focused && styles.focused,\n pressed && styles.pressed,\n ]}\n >\n {children}\n </View>\n </View>\n );\n }}\n </Clickable>\n </View>\n );\n }\n}\n","/*\nThe SVGs in this file should be treated as binary assets. If, in the future,\nwe need to make changes to update the color or size or shape of the glyph\nthen we should take the new asset, copy it, and paste it under the right\nheader.\n\nThis makes it as easy as possible for a designer to make an update to an\nasset.\n\nIn the future it would be great if these were included from files so that\nno copying and pasting is necessary.\n*/\nimport * as React from \"react\";\n\nimport Key from \"../../data/keys\";\n\ntype Props = {id: Key};\n\nexport default function ButtonAsset({id}: Props): React.ReactElement {\n switch (id) {\n case \"NUM_0\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M26.2991 20.36C26.2991 21.872 26.1351 23.18 25.8071 24.284C25.4871 25.388 25.0431 26.304 24.4751 27.032C23.9071 27.76 23.2391 28.3 22.4711 28.652C21.7031 29.004 20.8751 29.18 19.9871 29.18C19.0991 29.18 18.2711 29.004 17.5031 28.652C16.7351 28.3 16.0671 27.76 15.4991 27.032C14.9391 26.304 14.4991 25.388 14.1791 24.284C13.8591 23.18 13.6991 21.872 13.6991 20.36C13.6991 18.848 13.8591 17.54 14.1791 16.436C14.4991 15.324 14.9391 14.408 15.4991 13.688C16.0671 12.96 16.7351 12.42 17.5031 12.068C18.2711 11.708 19.0991 11.528 19.9871 11.528C20.8751 11.528 21.7031 11.708 22.4711 12.068C23.2391 12.42 23.9071 12.96 24.4751 13.688C25.0431 14.408 25.4871 15.324 25.8071 16.436C26.1351 17.54 26.2991 18.848 26.2991 20.36ZM23.6351 20.36C23.6351 19.08 23.5311 18.016 23.3231 17.168C23.1231 16.312 22.8551 15.628 22.5191 15.116C22.1831 14.604 21.7951 14.24 21.3551 14.024C20.9151 13.808 20.4591 13.7 19.9871 13.7C19.5071 13.7 19.0471 13.808 18.6071 14.024C18.1751 14.24 17.7911 14.604 17.4551 15.116C17.1191 15.628 16.8511 16.312 16.6511 17.168C16.4511 18.016 16.3511 19.08 16.3511 20.36C16.3511 21.64 16.4511 22.708 16.6511 23.564C16.8511 24.412 17.1191 25.092 17.4551 25.604C17.7911 26.116 18.1751 26.48 18.6071 26.696C19.0471 26.912 19.5071 27.02 19.9871 27.02C20.4591 27.02 20.9151 26.912 21.3551 26.696C21.7951 26.48 22.1831 26.116 22.5191 25.604C22.8551 25.092 23.1231 24.412 23.3231 23.564C23.5311 22.708 23.6351 21.64 23.6351 20.36Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_1\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M25.3631 27.044V29H15.9431V27.044H19.5431V16.22C19.5431 15.836 19.5551 15.444 19.5791 15.044L16.8071 17.384C16.6871 17.48 16.5631 17.544 16.4351 17.576C16.3151 17.6 16.1991 17.6 16.0871 17.576C15.9831 17.552 15.8871 17.516 15.7991 17.468C15.7191 17.412 15.6551 17.352 15.6071 17.288L14.8031 16.16L20.0111 11.684H22.1111V27.044H25.3631Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_2\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M24.8471 26.564C25.1271 26.564 25.3471 26.648 25.5071 26.816C25.6671 26.976 25.7471 27.184 25.7471 27.44V29H14.0591V28.124C14.0591 27.948 14.0951 27.764 14.1671 27.572C14.2391 27.38 14.3551 27.204 14.5151 27.044L19.8911 21.656C20.3471 21.2 20.7511 20.764 21.1031 20.348C21.4631 19.932 21.7671 19.516 22.0151 19.1C22.2711 18.684 22.4631 18.264 22.5911 17.84C22.7271 17.408 22.7951 16.956 22.7951 16.484C22.7951 16.028 22.7231 15.628 22.5791 15.284C22.4431 14.932 22.2511 14.644 22.0031 14.42C21.7631 14.188 21.4711 14.016 21.1271 13.904C20.7911 13.784 20.4191 13.724 20.0111 13.724C19.6191 13.724 19.2551 13.78 18.9191 13.892C18.5911 14.004 18.2951 14.16 18.0311 14.36C17.7751 14.56 17.5591 14.8 17.3831 15.08C17.2151 15.352 17.0911 15.652 17.0111 15.98C16.8911 16.308 16.7351 16.528 16.5431 16.64C16.3591 16.752 16.0871 16.776 15.7271 16.712L14.3711 16.472C14.4911 15.656 14.7151 14.94 15.0431 14.324C15.3791 13.708 15.7991 13.196 16.3031 12.788C16.8071 12.372 17.3831 12.06 18.0311 11.852C18.6871 11.636 19.3951 11.528 20.1551 11.528C20.9231 11.528 21.6271 11.644 22.2671 11.876C22.9151 12.1 23.4711 12.424 23.9351 12.848C24.4071 13.264 24.7751 13.772 25.0391 14.372C25.3031 14.972 25.4351 15.648 25.4351 16.4C25.4351 17.04 25.3391 17.632 25.1471 18.176C24.9631 18.72 24.7111 19.24 24.3911 19.736C24.0711 20.232 23.6951 20.716 23.2631 21.188C22.8391 21.652 22.3911 22.124 21.9191 22.604L17.7431 26.876C18.0871 26.78 18.4311 26.704 18.7751 26.648C19.1271 26.592 19.4591 26.564 19.7711 26.564H24.8471Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_3\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M14.4551 16.472C14.5751 15.656 14.7991 14.94 15.1271 14.324C15.4631 13.708 15.8831 13.196 16.3871 12.788C16.8911 12.372 17.4671 12.06 18.1151 11.852C18.7711 11.636 19.4791 11.528 20.2391 11.528C21.0071 11.528 21.7031 11.64 22.3271 11.864C22.9591 12.08 23.4991 12.384 23.9471 12.776C24.4031 13.168 24.7511 13.636 24.9911 14.18C25.2391 14.724 25.3631 15.32 25.3631 15.968C25.3631 16.52 25.2951 17.008 25.1591 17.432C25.0311 17.848 24.8431 18.216 24.5951 18.536C24.3551 18.856 24.0591 19.124 23.7071 19.34C23.3551 19.556 22.9591 19.736 22.5191 19.88C23.5911 20.192 24.3951 20.692 24.9311 21.38C25.4671 22.06 25.7351 22.916 25.7351 23.948C25.7351 24.78 25.5791 25.52 25.2671 26.168C24.9551 26.816 24.5311 27.364 23.9951 27.812C23.4671 28.26 22.8471 28.604 22.1351 28.844C21.4311 29.076 20.6831 29.192 19.8911 29.192C19.0031 29.192 18.2351 29.088 17.5871 28.88C16.9391 28.664 16.3791 28.36 15.9071 27.968C15.4431 27.568 15.0551 27.088 14.7431 26.528C14.4311 25.968 14.1671 25.34 13.9511 24.644L15.0671 24.176C15.3631 24.048 15.6431 24.012 15.9071 24.068C16.1791 24.124 16.3751 24.272 16.4951 24.512C16.6231 24.768 16.7671 25.044 16.9271 25.34C17.0871 25.628 17.2911 25.896 17.5391 26.144C17.7951 26.384 18.1071 26.588 18.4751 26.756C18.8511 26.916 19.3111 26.996 19.8551 26.996C20.4071 26.996 20.8871 26.908 21.2951 26.732C21.7111 26.548 22.0551 26.316 22.3271 26.036C22.6071 25.748 22.8151 25.428 22.9511 25.076C23.0871 24.724 23.1551 24.376 23.1551 24.032C23.1551 23.6 23.1031 23.204 22.9991 22.844C22.8951 22.476 22.6911 22.164 22.3871 21.908C22.0911 21.652 21.6671 21.452 21.1151 21.308C20.5711 21.156 19.8551 21.08 18.9671 21.08V19.22C19.6951 19.212 20.3071 19.14 20.8031 19.004C21.3071 18.86 21.7071 18.668 22.0031 18.428C22.3071 18.18 22.5231 17.884 22.6511 17.54C22.7871 17.196 22.8551 16.82 22.8551 16.412C22.8551 15.972 22.7871 15.584 22.6511 15.248C22.5151 14.912 22.3231 14.632 22.0751 14.408C21.8351 14.176 21.5471 14.004 21.2111 13.892C20.8751 13.78 20.5031 13.724 20.0951 13.724C19.7031 13.724 19.3391 13.78 19.0031 13.892C18.6751 14.004 18.3791 14.16 18.1151 14.36C17.8591 14.56 17.6431 14.8 17.4671 15.08C17.2911 15.352 17.1631 15.652 17.0831 15.98C16.9711 16.308 16.8191 16.528 16.6271 16.64C16.4431 16.752 16.1711 16.776 15.8111 16.712L14.4551 16.472Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_4\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M21.6911 22.616V16.304C21.6911 15.8 21.7271 15.248 21.7991 14.648L15.9911 22.616H21.6911ZM26.3231 22.616V24.104C26.3231 24.248 26.2751 24.372 26.1791 24.476C26.0911 24.58 25.9551 24.632 25.7711 24.632H23.9351V29H21.6911V24.632H14.2151C14.0311 24.632 13.8711 24.58 13.7351 24.476C13.6071 24.364 13.5231 24.228 13.4831 24.068L13.2191 22.748L21.5111 11.708H23.9351V22.616H26.3231Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_5\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M17.6591 18.104C18.0751 18.016 18.4711 17.952 18.8471 17.912C19.2311 17.872 19.5991 17.852 19.9511 17.852C20.8551 17.852 21.6511 17.988 22.3391 18.26C23.0351 18.524 23.6151 18.892 24.0791 19.364C24.5511 19.836 24.9031 20.392 25.1351 21.032C25.3751 21.664 25.4951 22.352 25.4951 23.096C25.4951 24.016 25.3351 24.852 25.0151 25.604C24.6951 26.356 24.2511 27 23.6831 27.536C23.1151 28.064 22.4431 28.472 21.6671 28.76C20.8991 29.048 20.0671 29.192 19.1711 29.192C18.6431 29.192 18.1391 29.14 17.6591 29.036C17.1871 28.932 16.7431 28.792 16.3271 28.616C15.9111 28.432 15.5271 28.224 15.1751 27.992C14.8231 27.752 14.5071 27.504 14.2271 27.248L15.0191 26.144C15.1871 25.904 15.4111 25.784 15.6911 25.784C15.8671 25.784 16.0591 25.848 16.2671 25.976C16.4751 26.104 16.7151 26.244 16.9871 26.396C17.2671 26.54 17.5951 26.676 17.9711 26.804C18.3471 26.932 18.7951 26.996 19.3151 26.996C19.8831 26.996 20.3911 26.904 20.8391 26.72C21.2871 26.536 21.6631 26.28 21.9671 25.952C22.2791 25.616 22.5151 25.216 22.6751 24.752C22.8351 24.288 22.9151 23.78 22.9151 23.228C22.9151 22.724 22.8391 22.272 22.6871 21.872C22.5431 21.472 22.3231 21.132 22.0271 20.852C21.7391 20.572 21.3751 20.36 20.9351 20.216C20.4951 20.064 19.9871 19.988 19.4111 19.988C18.9871 19.988 18.5511 20.024 18.1031 20.096C17.6631 20.168 17.2151 20.28 16.7591 20.432L15.1511 19.976L16.5671 11.72H24.9311V12.836C24.9311 13.204 24.8151 13.504 24.5831 13.736C24.3511 13.968 23.9631 14.084 23.4191 14.084H18.3551L17.6591 18.104Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_6\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.9751 27.056C20.4951 27.056 20.9711 26.972 21.4031 26.804C21.8351 26.628 22.2031 26.388 22.5071 26.084C22.8191 25.78 23.0591 25.42 23.2271 25.004C23.3951 24.588 23.4791 24.136 23.4791 23.648C23.4791 23.12 23.3951 22.648 23.2271 22.232C23.0671 21.808 22.8351 21.452 22.5311 21.164C22.2351 20.876 21.8751 20.656 21.4511 20.504C21.0351 20.344 20.5751 20.264 20.0711 20.264C19.5511 20.264 19.0791 20.352 18.6551 20.528C18.2391 20.704 17.8831 20.944 17.5871 21.248C17.2911 21.552 17.0631 21.908 16.9031 22.316C16.7431 22.724 16.6631 23.156 16.6631 23.612C16.6631 24.124 16.7351 24.592 16.8791 25.016C17.0231 25.44 17.2351 25.804 17.5151 26.108C17.7951 26.404 18.1391 26.636 18.5471 26.804C18.9631 26.972 19.4391 27.056 19.9751 27.056ZM19.0271 18.08C18.8991 18.24 18.7751 18.392 18.6551 18.536C18.5431 18.68 18.4311 18.824 18.3191 18.968C18.6871 18.76 19.0911 18.596 19.5311 18.476C19.9711 18.356 20.4431 18.296 20.9471 18.296C21.6191 18.296 22.2631 18.408 22.8791 18.632C23.4951 18.848 24.0351 19.176 24.4991 19.616C24.9711 20.048 25.3471 20.588 25.6271 21.236C25.9071 21.876 26.0471 22.616 26.0471 23.456C26.0471 24.256 25.8991 25.004 25.6031 25.7C25.3151 26.396 24.9071 27.004 24.3791 27.524C23.8511 28.036 23.2151 28.444 22.4711 28.748C21.7351 29.044 20.9191 29.192 20.0231 29.192C19.1271 29.192 18.3191 29.048 17.5991 28.76C16.8791 28.472 16.2631 28.068 15.7511 27.548C15.2471 27.02 14.8591 26.388 14.5871 25.652C14.3151 24.916 14.1791 24.096 14.1791 23.192C14.1791 22.408 14.3471 21.588 14.6831 20.732C15.0191 19.876 15.5391 18.976 16.2431 18.032L20.4911 12.332C20.6191 12.164 20.8031 12.02 21.0431 11.9C21.2911 11.78 21.5671 11.72 21.8711 11.72H24.1511L19.0271 18.08Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_7\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M26.0831 11.72V12.86C26.0831 13.196 26.0471 13.468 25.9751 13.676C25.9031 13.884 25.8311 14.06 25.7591 14.204L18.9311 28.1C18.8111 28.356 18.6391 28.572 18.4151 28.748C18.1991 28.916 17.9111 29 17.5511 29H15.6911L22.6511 15.332C22.7791 15.084 22.9071 14.86 23.0351 14.66C23.1631 14.46 23.3071 14.268 23.4671 14.084H14.8391C14.6791 14.084 14.5391 14.024 14.4191 13.904C14.2991 13.776 14.2391 13.632 14.2391 13.472V11.72H26.0831Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_8\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.9991 27.152C20.5191 27.152 20.9831 27.08 21.3911 26.936C21.7991 26.784 22.1391 26.576 22.4111 26.312C22.6911 26.04 22.9031 25.72 23.0471 25.352C23.1911 24.984 23.2631 24.584 23.2631 24.152C23.2631 23.624 23.1791 23.168 23.0111 22.784C22.8511 22.4 22.6231 22.084 22.3271 21.836C22.0391 21.58 21.6951 21.392 21.2951 21.272C20.8951 21.144 20.4631 21.08 19.9991 21.08C19.5351 21.08 19.1031 21.144 18.7031 21.272C18.3031 21.392 17.9551 21.58 17.6591 21.836C17.3711 22.084 17.1431 22.4 16.9751 22.784C16.8151 23.168 16.7351 23.624 16.7351 24.152C16.7351 24.584 16.8071 24.984 16.9511 25.352C17.0951 25.72 17.3031 26.04 17.5751 26.312C17.8551 26.576 18.1991 26.784 18.6071 26.936C19.0151 27.08 19.4791 27.152 19.9991 27.152ZM19.9991 13.508C19.5271 13.508 19.1111 13.58 18.7511 13.724C18.3991 13.868 18.1071 14.06 17.8751 14.3C17.6431 14.54 17.4671 14.824 17.3471 15.152C17.2351 15.472 17.1791 15.812 17.1791 16.172C17.1791 16.532 17.2271 16.884 17.3231 17.228C17.4271 17.572 17.5871 17.88 17.8031 18.152C18.0271 18.416 18.3191 18.628 18.6791 18.788C19.0391 18.948 19.4791 19.028 19.9991 19.028C20.5191 19.028 20.9591 18.948 21.3191 18.788C21.6791 18.628 21.9671 18.416 22.1831 18.152C22.4071 17.88 22.5671 17.572 22.6631 17.228C22.7671 16.884 22.8191 16.532 22.8191 16.172C22.8191 15.812 22.7591 15.472 22.6391 15.152C22.5271 14.824 22.3511 14.54 22.1111 14.3C21.8791 14.06 21.5871 13.868 21.2351 13.724C20.8831 13.58 20.4711 13.508 19.9991 13.508ZM22.7231 19.988C23.7871 20.316 24.5831 20.836 25.1111 21.548C25.6471 22.26 25.9151 23.144 25.9151 24.2C25.9151 24.96 25.7711 25.648 25.4831 26.264C25.1951 26.88 24.7911 27.404 24.2711 27.836C23.7511 28.268 23.1271 28.604 22.3991 28.844C21.6791 29.076 20.8791 29.192 19.9991 29.192C19.1191 29.192 18.3151 29.076 17.5871 28.844C16.8671 28.604 16.2471 28.268 15.7271 27.836C15.2071 27.404 14.8031 26.88 14.5151 26.264C14.2271 25.648 14.0831 24.96 14.0831 24.2C14.0831 23.144 14.3471 22.26 14.8751 21.548C15.4111 20.836 16.2111 20.316 17.2751 19.988C16.4111 19.644 15.7591 19.144 15.3191 18.488C14.8871 17.832 14.6711 17.044 14.6711 16.124C14.6711 15.476 14.7991 14.872 15.0551 14.312C15.3111 13.752 15.6711 13.268 16.1351 12.86C16.6071 12.444 17.1711 12.12 17.8271 11.888C18.4831 11.648 19.2071 11.528 19.9991 11.528C20.7911 11.528 21.5111 11.648 22.1591 11.888C22.8151 12.12 23.3751 12.444 23.8391 12.86C24.3111 13.268 24.6751 13.752 24.9311 14.312C25.1951 14.872 25.3271 15.476 25.3271 16.124C25.3271 17.044 25.1071 17.832 24.6671 18.488C24.2351 19.144 23.5871 19.644 22.7231 19.988Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_9\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M16.7351 16.856C16.7351 17.88 17.0071 18.668 17.5511 19.22C18.1031 19.764 18.8711 20.036 19.8551 20.036C20.3831 20.036 20.8471 19.952 21.2471 19.784C21.6551 19.616 21.9991 19.392 22.2791 19.112C22.5591 18.824 22.7711 18.492 22.9151 18.116C23.0591 17.732 23.1311 17.324 23.1311 16.892C23.1311 16.388 23.0511 15.94 22.8911 15.548C22.7391 15.148 22.5191 14.808 22.2311 14.528C21.9511 14.248 21.6151 14.036 21.2231 13.892C20.8311 13.74 20.4031 13.664 19.9391 13.664C19.4511 13.664 19.0111 13.744 18.6191 13.904C18.2271 14.064 17.8911 14.288 17.6111 14.576C17.3311 14.856 17.1151 15.192 16.9631 15.584C16.8111 15.968 16.7351 16.392 16.7351 16.856ZM21.1631 22.22C21.3231 22.02 21.4711 21.832 21.6071 21.656C21.7431 21.472 21.8711 21.288 21.9911 21.104C21.5751 21.4 21.1111 21.628 20.5991 21.788C20.0871 21.94 19.5431 22.016 18.9671 22.016C18.3431 22.016 17.7431 21.912 17.1671 21.704C16.5911 21.488 16.0791 21.172 15.6311 20.756C15.1831 20.332 14.8231 19.812 14.5511 19.196C14.2871 18.572 14.1551 17.856 14.1551 17.048C14.1551 16.288 14.2951 15.572 14.5751 14.9C14.8631 14.228 15.2631 13.644 15.7751 13.148C16.2871 12.644 16.8991 12.248 17.6111 11.96C18.3231 11.672 19.1111 11.528 19.9751 11.528C20.8311 11.528 21.6071 11.668 22.3031 11.948C22.9991 12.22 23.5911 12.608 24.0791 13.112C24.5671 13.608 24.9431 14.204 25.2071 14.9C25.4711 15.588 25.6031 16.348 25.6031 17.18C25.6031 17.7 25.5551 18.192 25.4591 18.656C25.3711 19.12 25.2391 19.572 25.0631 20.012C24.8951 20.444 24.6871 20.872 24.4391 21.296C24.1991 21.712 23.9271 22.136 23.6231 22.568L19.5551 28.4C19.4351 28.576 19.2551 28.72 19.0151 28.832C18.7831 28.944 18.5191 29 18.2231 29H15.8591L21.1631 22.22Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"LEFT_PAREN\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M22 10C17 16 17 24 22 30\"\n stroke=\"#21242C\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n case \"RIGHT_PAREN\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19 10C24 16 24 24 19 30\"\n stroke=\"#21242C\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n case \"MINUS\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128Z\" />\n </svg>\n );\n case \"PLUS\":\n return (\n // Phosphor Icons - Plus Bold\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z\" />{\" \"}\n </svg>\n );\n case \"TIMES\":\n return (\n // Phosphor Icons - X Bold\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"#000000\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\" />\n </svg>\n );\n\n case \"BACKSPACE\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M216,40H68.53a16.08,16.08,0,0,0-13.72,7.77L9.14,123.88a8,8,0,0,0,0,8.24l45.67,76.11A16.08,16.08,0,0,0,68.53,216H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM61.67,204.12,68.53,200h0ZM216,200H68.53l-43.2-72,43.2-72H216ZM106.34,146.34,124.69,128l-18.35-18.34a8,8,0,0,1,11.32-11.32L136,116.69l18.34-18.35a8,8,0,0,1,11.32,11.32L147.31,128l18.35,18.34a8,8,0,0,1-11.32,11.32L136,139.31l-18.34,18.35a8,8,0,0,1-11.32-11.32Z\" />\n </svg>\n );\n case \"DISMISS\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path\n // flip to point down\n transform=\"scale(1,-1) translate(0, -260)\"\n d=\"M205.66,125.66a8,8,0,0,1-11.32,0L128,59.31,61.66,125.66a8,8,0,0,1-11.32-11.32l72-72a8,8,0,0,1,11.32,0l72,72A8,8,0,0,1,205.66,125.66Z\"\n />\n </svg>\n );\n case \"FRAC\":\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <g transform=\"translate(12 12)\">\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <path\n d=\"M8 16.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997H8.997c-.55 0-.997-.453-.997-.997v-6.006zM10 18h4v4h-4v-4z\"\n fill=\"currentColor\"\n />\n <rect\n fill=\"currentColor\"\n x=\"2\"\n y=\"11\"\n width=\"20\"\n height=\"2\"\n rx=\"1\"\n />\n <path\n d=\"M8 .997C8 .447 8.453 0 8.997 0h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997H8.997C8.447 8 8 7.547 8 7.003V.997zM10 2h4v4h-4V2z\"\n fill=\"currentColor\"\n />\n </g>\n </g>\n </svg>\n );\n case \"FRAC_INCLUSIVE\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16 10C16 9.44772 16.4477 9 17 9H23C23.5523 9 24 9.44772 24 10V16C24 16.5523 23.5523 17 23 17H17C16.4477 17 16 16.5523 16 16V10ZM18 11H22V15H18V11ZM14 20C14 19.4477 14.4477 19 15 19H25C25.5523 19 26 19.4477 26 20C26 20.5523 25.5523 21 25 21H15C14.4477 21 14 20.5523 14 20ZM17 23C16.4477 23 16 23.4477 16 24V30C16 30.5523 16.4477 31 17 31H23C23.5523 31 24 30.5523 24 30V24C24 23.4477 23.5523 23 23 23H17ZM22 25H18V29H22V25Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NEGATIVE\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12.9571 13.2929C13.3476 13.6834 13.3476 14.3166 12.9571 14.7071C11.6871 15.9771 11 17.9485 11 20C11 22.0515 11.6871 24.0229 12.9571 25.2929C13.3476 25.6834 13.3476 26.3166 12.9571 26.7071C12.5666 27.0976 11.9334 27.0976 11.5429 26.7071C9.81292 24.9771 9 22.4485 9 20C9 17.5515 9.81292 15.0229 11.5429 13.2929C11.9334 12.9024 12.5666 12.9024 12.9571 13.2929ZM14 20C14 19.4477 14.4477 19 15 19H25C25.5523 19 26 19.4477 26 20C26 20.5523 25.5523 21 25 21H15C14.4477 21 14 20.5523 14 20ZM28.4571 13.2929C28.0666 12.9024 27.4334 12.9024 27.0429 13.2929C26.6524 13.6834 26.6524 14.3166 27.0429 14.7071C28.3129 15.9771 29 17.9485 29 20C29 22.0515 28.3129 24.0229 27.0429 25.2929C26.6524 25.6834 26.6524 26.3166 27.0429 26.7071C27.4334 27.0976 28.0666 27.0976 28.4571 26.7071C30.1871 24.9771 31 22.4485 31 20C31 17.5515 30.1871 15.0229 28.4571 13.2929Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n // TODO(ned): Per the notes in `KeyConfigs`, shouldn't this be a comma\n // that we replace with the period icon for i18n? Duplicating for now.\n case \"DECIMAL\":\n case \"PERIOD\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128Z\"\n // moves decimal down to baseline of number icons,\n // otherwise indistinguishable from cdot\n transform=\"translate(0 80)\"\n />\n </svg>\n );\n case \"RADICAL\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.00012 9C9.00012 8.44772 9.44784 8 10.0001 8H16.0001C16.5524 8 17.0001 8.44772 17.0001 9V15C17.0001 15.5523 16.5524 16 16.0001 16H10.0001C9.44784 16 9.00012 15.5523 9.00012 15V9ZM11.0001 10H15.0001V14H11.0001V10ZM23.0001 12C22.6598 12 22.3429 12.173 22.1589 12.4592L13.9849 25.1744L10.8322 20.4453C10.5258 19.9858 9.90493 19.8616 9.44541 20.1679C8.98588 20.4743 8.8617 21.0952 9.16806 21.5547L13.1681 27.5547C13.3552 27.8354 13.6711 28.0028 14.0084 28C14.3457 27.9972 14.6589 27.8245 14.8413 27.5408L23.5461 14H30.0001C30.5524 14 31.0001 13.5523 31.0001 13C31.0001 12.4477 30.5524 12 30.0001 12H23.0001Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"SQRT\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M240,72V96a8,8,0,0,1-16,0V80H125.55L79.49,202.81a8,8,0,0,1-15,0l-48-128a8,8,0,1,1,15-5.62L72,177.22l40.51-108A8,8,0,0,1,120,64H232A8,8,0,0,1,240,72Z\" />\n </svg>\n );\n case \"CUBE_ROOT\":\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g\n fill=\"none\"\n fillRule=\"evenodd\"\n transform=\"translate(0, -4)\"\n >\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M17.91 23.12c1.66 0 2.76-.81 2.76-1.98 0-.96-.86-1.51-1.57-1.58.79-.13 1.46-.72 1.46-1.5 0-1.1-.95-1.83-2.65-1.83-1.23 0-2.11.45-2.67 1.08l.83 1.08c.47-.42 1.05-.64 1.66-.64.64 0 1.12.19 1.12.61 0 .35-.39.52-1.08.52-.25 0-.77 0-.9-.01v1.53c.1-.01.61-.01.9-.01.91 0 1.19.18 1.19.56 0 .37-.38.65-1.12.65-.58 0-1.34-.23-1.82-.7l-.87 1.17c.52.6 1.48 1.05 2.76 1.05z\"\n fill=\"currentColor\"\n />\n <path\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M14 29l4 6 9-14h7\"\n />\n </g>\n </svg>\n );\n case \"EXP\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#21242C\"\n d=\"M28 8C28 7.44772 28.4477 7 29 7H35C35.5523 7 36 7.44772 36 8V14C36 14.5523 35.5523 15 35 15H29C28.4477 15 28 14.5523 28 14V8ZM30 9H34V13H30V9ZM14 13C14 12.4477 14.4477 12 15 12H25C25.5523 12 26 12.4477 26 13V27C26 27.5523 25.5523 28 25 28H15C14.4477 28 14 27.5523 14 27V13ZM16 14H24V26H16V14Z\"\n />\n </svg>\n );\n case \"EXP_2\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M33.5791 13.7461C33.4874 13.6545 33.3591 13.6086 33.1941 13.6086H31.4011C31.2397 13.6086 31.0674 13.6251 30.8841 13.6581C30.7007 13.6875 30.5156 13.7296 30.3286 13.7846L32.0226 12.0521C32.2352 11.8358 32.4369 11.6213 32.6276 11.4086C32.8182 11.196 32.9851 10.9778 33.1281 10.7541C33.2747 10.5268 33.3902 10.2885 33.4746 10.0391C33.5589 9.78981 33.6011 9.51847 33.6011 9.22514C33.6011 8.88414 33.5406 8.57247 33.4196 8.29014C33.2986 8.00781 33.1281 7.76764 32.9081 7.56964C32.6881 7.36797 32.4222 7.21214 32.1106 7.10214C31.8026 6.98847 31.4597 6.93164 31.0821 6.93164C30.7227 6.93164 30.3872 6.98114 30.0756 7.08014C29.7639 7.17547 29.4871 7.32031 29.2451 7.51464C29.0031 7.70897 28.8014 7.95281 28.6401 8.24614C28.4787 8.53947 28.3687 8.88047 28.3101 9.26914L29.1131 9.41214C29.3184 9.44514 29.4761 9.43231 29.5861 9.37364C29.6997 9.31131 29.7896 9.18847 29.8556 9.00514C29.8886 8.88781 29.9399 8.77964 30.0096 8.68064C30.0792 8.58164 30.1617 8.49547 30.2571 8.42214C30.3561 8.34881 30.4661 8.29197 30.5871 8.25164C30.7117 8.20764 30.8474 8.18564 30.9941 8.18564C31.3277 8.18564 31.5862 8.27914 31.7696 8.46614C31.9529 8.64947 32.0446 8.91897 32.0446 9.27464C32.0446 9.47631 32.0189 9.66881 31.9676 9.85214C31.9162 10.0355 31.8392 10.217 31.7366 10.3966C31.6339 10.5726 31.5056 10.7541 31.3516 10.9411C31.1976 11.1245 31.0197 11.317 30.8181 11.5186L28.4531 13.8891C28.3577 13.9808 28.2899 14.0835 28.2496 14.1971C28.2092 14.3071 28.1891 14.4098 28.1891 14.5051V15.0001H33.7221V14.1091C33.7221 13.9588 33.6744 13.8378 33.5791 13.7461ZM14 13.0001C14 12.4479 14.4477 12.0001 15 12.0001H25C25.5523 12.0001 26 12.4479 26 13.0001V27.0001C26 27.5524 25.5523 28.0001 25 28.0001H15C14.4477 28.0001 14 27.5524 14 27.0001V13.0001ZM16 14.0001H24V26.0001H16V14.0001Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"EXP_3\":\n return (\n <svg\n width=\"42\"\n height=\"42\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n transform=\"translate(0, -8)\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#21242C\"\n d=\"M14 21c0-.552.456-1 1.002-1h9.996A1 1 0 0 1 26 21v14c0 .552-.456 1-1.002 1h-9.996A1 1 0 0 1 14 35V21zm2 1h8v12h-8V22zM30.92 23.12c1.66 0 2.76-.81 2.76-1.98 0-.96-.86-1.51-1.57-1.58.79-.13 1.46-.72 1.46-1.5 0-1.1-.95-1.83-2.65-1.83-1.23 0-2.11.45-2.67 1.08l.83 1.08c.47-.42 1.05-.64 1.66-.64.64 0 1.12.19 1.12.61 0 .35-.39.52-1.08.52-.25 0-.77 0-.9-.01v1.53c.1-.01.61-.01.9-.01.91 0 1.19.18 1.19.56 0 .37-.38.65-1.12.65-.58 0-1.34-.23-1.82-.7l-.87 1.17c.52.6 1.48 1.05 2.76 1.05z\"\n />\n </svg>\n );\n case \"TAN\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.1573 26.128C11.4426 26.128 10.8933 25.928 10.5093 25.528C10.1306 25.1227 9.94131 24.5653 9.94131 23.856V19.272H9.10131C8.99465 19.272 8.90398 19.2373 8.82931 19.168C8.75465 19.0987 8.71731 18.9947 8.71731 18.856V18.072L10.0373 17.856L10.4533 15.616C10.48 15.5093 10.5306 15.4267 10.6053 15.368C10.68 15.3093 10.776 15.28 10.8933 15.28H11.9173V17.864H14.1093V19.272H11.9173V23.72C11.9173 23.976 11.9786 24.176 12.1013 24.32C12.2293 24.464 12.4026 24.536 12.6213 24.536C12.744 24.536 12.8453 24.5227 12.9253 24.496C13.0106 24.464 13.0826 24.432 13.1413 24.4C13.2053 24.368 13.2613 24.3387 13.3093 24.312C13.3573 24.28 13.4053 24.264 13.4533 24.264C13.512 24.264 13.56 24.28 13.5973 24.312C13.6346 24.3387 13.6746 24.3813 13.7173 24.44L14.3093 25.4C14.0213 25.64 13.6906 25.8213 13.3173 25.944C12.944 26.0667 12.5573 26.128 12.1573 26.128ZM19.7104 22.496C19.1398 22.5227 18.6598 22.5733 18.2704 22.648C17.8811 22.7173 17.5691 22.808 17.3344 22.92C17.0998 23.032 16.9318 23.1627 16.8304 23.312C16.7291 23.4613 16.6784 23.624 16.6784 23.8C16.6784 24.1467 16.7798 24.3947 16.9824 24.544C17.1904 24.6933 17.4598 24.768 17.7904 24.768C18.1958 24.768 18.5451 24.696 18.8384 24.552C19.1371 24.4027 19.4278 24.1787 19.7104 23.88V22.496ZM15.1824 18.936C16.1264 18.072 17.2624 17.64 18.5904 17.64C19.0704 17.64 19.4998 17.72 19.8784 17.88C20.2571 18.0347 20.5771 18.2533 20.8384 18.536C21.0998 18.8133 21.2971 19.1467 21.4304 19.536C21.5691 19.9253 21.6384 20.352 21.6384 20.816V26H20.7424C20.5558 26 20.4118 25.9733 20.3104 25.92C20.2091 25.8613 20.1291 25.7467 20.0704 25.576L19.8944 24.984C19.6864 25.1707 19.4838 25.336 19.2864 25.48C19.0891 25.6187 18.8838 25.736 18.6704 25.832C18.4571 25.928 18.2278 26 17.9824 26.048C17.7424 26.1013 17.4758 26.128 17.1824 26.128C16.8358 26.128 16.5158 26.0827 16.2224 25.992C15.9291 25.896 15.6758 25.7547 15.4624 25.568C15.2491 25.3813 15.0838 25.1493 14.9664 24.872C14.8491 24.5947 14.7904 24.272 14.7904 23.904C14.7904 23.696 14.8251 23.4907 14.8944 23.288C14.9638 23.08 15.0758 22.8827 15.2304 22.696C15.3904 22.5093 15.5958 22.3333 15.8464 22.168C16.0971 22.0027 16.4038 21.8587 16.7664 21.736C17.1344 21.6133 17.5611 21.5147 18.0464 21.44C18.5318 21.36 19.0864 21.312 19.7104 21.296V20.816C19.7104 20.2667 19.5931 19.8613 19.3584 19.6C19.1238 19.3333 18.7851 19.2 18.3424 19.2C18.0224 19.2 17.7558 19.2373 17.5424 19.312C17.3344 19.3867 17.1504 19.472 16.9904 19.568C16.8304 19.6587 16.6838 19.7413 16.5504 19.816C16.4224 19.8907 16.2784 19.928 16.1184 19.928C15.9798 19.928 15.8624 19.8933 15.7664 19.824C15.6704 19.7493 15.5931 19.664 15.5344 19.568L15.1824 18.936ZM25.3474 18.8C25.5128 18.6347 25.6861 18.4827 25.8674 18.344C26.0541 18.2 26.2488 18.08 26.4514 17.984C26.6594 17.8827 26.8808 17.8053 27.1154 17.752C27.3501 17.6933 27.6061 17.664 27.8834 17.664C28.3314 17.664 28.7288 17.7413 29.0754 17.896C29.4221 18.0453 29.7101 18.2587 29.9394 18.536C30.1741 18.808 30.3501 19.136 30.4674 19.52C30.5901 19.8987 30.6514 20.3173 30.6514 20.776V26H28.6754V20.776C28.6754 20.2747 28.5608 19.888 28.3314 19.616C28.1021 19.3387 27.7528 19.2 27.2834 19.2C26.9421 19.2 26.6221 19.2773 26.3234 19.432C26.0248 19.5867 25.7421 19.7973 25.4754 20.064V26H23.4994V17.792H24.7074C24.9634 17.792 25.1314 17.912 25.2114 18.152L25.3474 18.8Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"COS\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M14.9576 19.528C14.8989 19.6027 14.8402 19.6613 14.7816 19.704C14.7282 19.7467 14.6482 19.768 14.5416 19.768C14.4402 19.768 14.3416 19.7387 14.2456 19.68C14.1496 19.616 14.0349 19.5467 13.9016 19.472C13.7682 19.392 13.6082 19.3227 13.4216 19.264C13.2402 19.2 13.0136 19.168 12.7416 19.168C12.3949 19.168 12.0909 19.232 11.8296 19.36C11.5682 19.4827 11.3496 19.6613 11.1736 19.896C11.0029 20.1307 10.8749 20.416 10.7896 20.752C10.7042 21.0827 10.6616 21.4587 10.6616 21.88C10.6616 22.3173 10.7069 22.7067 10.7976 23.048C10.8936 23.3893 11.0296 23.6773 11.2056 23.912C11.3816 24.1413 11.5949 24.3173 11.8456 24.44C12.0962 24.5573 12.3789 24.616 12.6936 24.616C13.0082 24.616 13.2616 24.5787 13.4536 24.504C13.6509 24.424 13.8162 24.3387 13.9496 24.248C14.0829 24.152 14.1976 24.0667 14.2936 23.992C14.3949 23.912 14.5069 23.872 14.6296 23.872C14.7896 23.872 14.9096 23.9333 14.9896 24.056L15.5576 24.776C15.3389 25.032 15.1016 25.248 14.8456 25.424C14.5896 25.5947 14.3229 25.7333 14.0456 25.84C13.7736 25.9413 13.4909 26.0133 13.1976 26.056C12.9096 26.0987 12.6216 26.12 12.3336 26.12C11.8269 26.12 11.3496 26.0267 10.9016 25.84C10.4536 25.648 10.0616 25.3707 9.72556 25.008C9.38956 24.6453 9.1229 24.2027 8.92556 23.68C8.73356 23.152 8.63756 22.552 8.63756 21.88C8.63756 21.2773 8.7229 20.72 8.89356 20.208C9.06956 19.6907 9.32556 19.2453 9.66156 18.872C9.99756 18.4933 10.4136 18.1973 10.9096 17.984C11.4056 17.7707 11.9762 17.664 12.6216 17.664C13.2349 17.664 13.7709 17.7627 14.2296 17.96C14.6936 18.1573 15.1096 18.44 15.4776 18.808L14.9576 19.528ZM20.2877 17.664C20.8957 17.664 21.4477 17.7627 21.9437 17.96C22.445 18.1573 22.8717 18.4373 23.2237 18.8C23.581 19.1627 23.8557 19.6053 24.0477 20.128C24.2397 20.6507 24.3357 21.2347 24.3357 21.88C24.3357 22.5307 24.2397 23.1173 24.0477 23.64C23.8557 24.1627 23.581 24.608 23.2237 24.976C22.8717 25.344 22.445 25.6267 21.9437 25.824C21.4477 26.0213 20.8957 26.12 20.2877 26.12C19.6744 26.12 19.117 26.0213 18.6157 25.824C18.1144 25.6267 17.685 25.344 17.3277 24.976C16.9757 24.608 16.701 24.1627 16.5037 23.64C16.3117 23.1173 16.2157 22.5307 16.2157 21.88C16.2157 21.2347 16.3117 20.6507 16.5037 20.128C16.701 19.6053 16.9757 19.1627 17.3277 18.8C17.685 18.4373 18.1144 18.1573 18.6157 17.96C19.117 17.7627 19.6744 17.664 20.2877 17.664ZM20.2877 24.6C20.9704 24.6 21.4744 24.3707 21.7997 23.912C22.1304 23.4533 22.2957 22.7813 22.2957 21.896C22.2957 21.0107 22.1304 20.336 21.7997 19.872C21.4744 19.408 20.9704 19.176 20.2877 19.176C19.5944 19.176 19.0797 19.4107 18.7437 19.88C18.413 20.344 18.2477 21.016 18.2477 21.896C18.2477 22.776 18.413 23.448 18.7437 23.912C19.0797 24.3707 19.5944 24.6 20.2877 24.6ZM30.8512 19.392C30.7979 19.4773 30.7419 19.5387 30.6832 19.576C30.6245 19.608 30.5499 19.624 30.4592 19.624C30.3632 19.624 30.2592 19.5973 30.1472 19.544C30.0405 19.4907 29.9152 19.432 29.7712 19.368C29.6272 19.2987 29.4619 19.2373 29.2752 19.184C29.0939 19.1307 28.8779 19.104 28.6272 19.104C28.2379 19.104 27.9312 19.1867 27.7072 19.352C27.4885 19.5173 27.3792 19.7333 27.3792 20C27.3792 20.176 27.4352 20.3253 27.5472 20.448C27.6645 20.5653 27.8165 20.6693 28.0032 20.76C28.1952 20.8507 28.4112 20.9333 28.6512 21.008C28.8912 21.0773 29.1339 21.1547 29.3792 21.24C29.6299 21.3253 29.8752 21.424 30.1152 21.536C30.3552 21.6427 30.5685 21.7813 30.7552 21.952C30.9472 22.1173 31.0992 22.3173 31.2112 22.552C31.3285 22.7867 31.3872 23.0693 31.3872 23.4C31.3872 23.7947 31.3152 24.16 31.1712 24.496C31.0325 24.8267 30.8245 25.1147 30.5472 25.36C30.2699 25.6 29.9259 25.7893 29.5152 25.928C29.1099 26.0613 28.6405 26.128 28.1072 26.128C27.8245 26.128 27.5472 26.1013 27.2752 26.048C27.0085 26 26.7499 25.9307 26.4992 25.84C26.2539 25.7493 26.0245 25.6427 25.8112 25.52C25.6032 25.3973 25.4192 25.264 25.2592 25.12L25.7152 24.368C25.7739 24.2773 25.8432 24.208 25.9232 24.16C26.0032 24.112 26.1045 24.088 26.2272 24.088C26.3499 24.088 26.4645 24.1227 26.5712 24.192C26.6832 24.2613 26.8112 24.336 26.9552 24.416C27.0992 24.496 27.2672 24.5707 27.4592 24.64C27.6565 24.7093 27.9045 24.744 28.2032 24.744C28.4379 24.744 28.6379 24.7173 28.8032 24.664C28.9739 24.6053 29.1125 24.5307 29.2192 24.44C29.3312 24.3493 29.4112 24.2453 29.4592 24.128C29.5125 24.0053 29.5392 23.88 29.5392 23.752C29.5392 23.56 29.4805 23.4027 29.3632 23.28C29.2512 23.1573 29.0992 23.0507 28.9072 22.96C28.7205 22.8693 28.5045 22.7893 28.2592 22.72C28.0192 22.6453 27.7712 22.5653 27.5152 22.48C27.2645 22.3947 27.0165 22.296 26.7712 22.184C26.5312 22.0667 26.3152 21.92 26.1232 21.744C25.9365 21.568 25.7845 21.352 25.6672 21.096C25.5552 20.84 25.4992 20.5307 25.4992 20.168C25.4992 19.832 25.5659 19.512 25.6992 19.208C25.8325 18.904 26.0272 18.64 26.2832 18.416C26.5445 18.1867 26.8672 18.0053 27.2512 17.872C27.6405 17.7333 28.0885 17.664 28.5952 17.664C29.1605 17.664 29.6752 17.7573 30.1392 17.944C30.6032 18.1307 30.9899 18.376 31.2992 18.68L30.8512 19.392Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"SIN\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M16.4215 19.392C16.3682 19.4773 16.3122 19.5387 16.2535 19.576C16.1948 19.608 16.1202 19.624 16.0295 19.624C15.9335 19.624 15.8295 19.5973 15.7175 19.544C15.6108 19.4907 15.4855 19.432 15.3415 19.368C15.1975 19.2987 15.0322 19.2373 14.8455 19.184C14.6642 19.1307 14.4482 19.104 14.1975 19.104C13.8082 19.104 13.5015 19.1867 13.2775 19.352C13.0588 19.5173 12.9495 19.7333 12.9495 20C12.9495 20.176 13.0055 20.3253 13.1175 20.448C13.2348 20.5653 13.3868 20.6693 13.5735 20.76C13.7655 20.8507 13.9815 20.9333 14.2215 21.008C14.4615 21.0773 14.7042 21.1547 14.9495 21.24C15.2002 21.3253 15.4455 21.424 15.6855 21.536C15.9255 21.6427 16.1388 21.7813 16.3255 21.952C16.5175 22.1173 16.6695 22.3173 16.7815 22.552C16.8988 22.7867 16.9575 23.0693 16.9575 23.4C16.9575 23.7947 16.8855 24.16 16.7415 24.496C16.6028 24.8267 16.3948 25.1147 16.1175 25.36C15.8402 25.6 15.4962 25.7893 15.0855 25.928C14.6802 26.0613 14.2108 26.128 13.6775 26.128C13.3948 26.128 13.1175 26.1013 12.8455 26.048C12.5788 26 12.3202 25.9307 12.0695 25.84C11.8242 25.7493 11.5948 25.6427 11.3815 25.52C11.1735 25.3973 10.9895 25.264 10.8295 25.12L11.2855 24.368C11.3442 24.2773 11.4135 24.208 11.4935 24.16C11.5735 24.112 11.6748 24.088 11.7975 24.088C11.9202 24.088 12.0348 24.1227 12.1415 24.192C12.2535 24.2613 12.3815 24.336 12.5255 24.416C12.6695 24.496 12.8375 24.5707 13.0295 24.64C13.2268 24.7093 13.4748 24.744 13.7735 24.744C14.0082 24.744 14.2082 24.7173 14.3735 24.664C14.5442 24.6053 14.6828 24.5307 14.7895 24.44C14.9015 24.3493 14.9815 24.2453 15.0295 24.128C15.0828 24.0053 15.1095 23.88 15.1095 23.752C15.1095 23.56 15.0508 23.4027 14.9335 23.28C14.8215 23.1573 14.6695 23.0507 14.4775 22.96C14.2908 22.8693 14.0748 22.7893 13.8295 22.72C13.5895 22.6453 13.3415 22.5653 13.0855 22.48C12.8348 22.3947 12.5868 22.296 12.3415 22.184C12.1015 22.0667 11.8855 21.92 11.6935 21.744C11.5068 21.568 11.3548 21.352 11.2375 21.096C11.1255 20.84 11.0695 20.5307 11.0695 20.168C11.0695 19.832 11.1362 19.512 11.2695 19.208C11.4028 18.904 11.5975 18.64 11.8535 18.416C12.1148 18.1867 12.4375 18.0053 12.8215 17.872C13.2108 17.7333 13.6588 17.664 14.1655 17.664C14.7308 17.664 15.2455 17.7573 15.7095 17.944C16.1735 18.1307 16.5602 18.376 16.8695 18.68L16.4215 19.392ZM20.4928 17.792V26H18.5088V17.792H20.4928ZM20.7648 15.4C20.7648 15.5707 20.7301 15.7307 20.6608 15.88C20.5914 16.0293 20.4981 16.16 20.3808 16.272C20.2688 16.384 20.1354 16.4747 19.9808 16.544C19.8261 16.608 19.6608 16.64 19.4848 16.64C19.3141 16.64 19.1514 16.608 18.9968 16.544C18.8474 16.4747 18.7168 16.384 18.6048 16.272C18.4928 16.16 18.4021 16.0293 18.3328 15.88C18.2688 15.7307 18.2368 15.5707 18.2368 15.4C18.2368 15.224 18.2688 15.0587 18.3328 14.904C18.4021 14.7493 18.4928 14.616 18.6048 14.504C18.7168 14.392 18.8474 14.304 18.9968 14.24C19.1514 14.1707 19.3141 14.136 19.4848 14.136C19.6608 14.136 19.8261 14.1707 19.9808 14.24C20.1354 14.304 20.2688 14.392 20.3808 14.504C20.4981 14.616 20.5914 14.7493 20.6608 14.904C20.7301 15.0587 20.7648 15.224 20.7648 15.4ZM24.3553 18.8C24.5206 18.6347 24.6939 18.4827 24.8753 18.344C25.0619 18.2 25.2566 18.08 25.4593 17.984C25.6673 17.8827 25.8886 17.8053 26.1233 17.752C26.3579 17.6933 26.6139 17.664 26.8913 17.664C27.3393 17.664 27.7366 17.7413 28.0833 17.896C28.4299 18.0453 28.7179 18.2587 28.9473 18.536C29.1819 18.808 29.3579 19.136 29.4753 19.52C29.5979 19.8987 29.6593 20.3173 29.6593 20.776V26H27.6833V20.776C27.6833 20.2747 27.5686 19.888 27.3393 19.616C27.1099 19.3387 26.7606 19.2 26.2913 19.2C25.9499 19.2 25.6299 19.2773 25.3313 19.432C25.0326 19.5867 24.7499 19.7973 24.4833 20.064V26H22.5073V17.792H23.7153C23.9713 17.792 24.1393 17.912 24.2193 18.152L24.3553 18.8Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"DIVIDE\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM128,80a16,16,0,1,0-16-16A16,16,0,0,0,128,80Zm0,96a16,16,0,1,0,16,16A16,16,0,0,0,128,176Z\" />\n </svg>\n );\n case \"EQUAL\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M224,160a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,160ZM40,104H216a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16Z\" />\n </svg>\n );\n case \"GT\":\n return (\n <svg width=\"44\" height=\"44\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M16 30l16-6-16-6\"\n />\n </g>\n </svg>\n );\n case \"LT\":\n return (\n <svg width=\"44\" height=\"44\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M32 30l-16-6 16-6\"\n />\n </g>\n </svg>\n );\n case \"GEQ\":\n return (\n <svg width=\"44\" height=\"44\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M16 33h16M16 30l16-6-16-6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n case \"LEQ\":\n return (\n <svg width=\"44\" height=\"44\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M16 33h16M32 30l-16-6 16-6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n case \"NEQ\":\n return (\n <svg width=\"44\" height=\"44\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M19 33l10-18M16 21h17M16 27h17\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n case \"LN\":\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M20.836 29v-9.338h-1.778V29h1.778zm8.106 0v-4.774c0-1.316-.714-2.156-2.198-2.156-1.106 0-1.932.532-2.366 1.05v-.882H22.6V29h1.778v-4.55c.294-.406.84-.798 1.54-.798.756 0 1.246.322 1.246 1.26V29h1.778z\"\n fill=\"currentColor\"\n />\n </g>\n </svg>\n );\n case \"LOG\":\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M16.776 29v-9.338h-1.778V29h1.778zm4.9.168c2.24 0 3.584-1.624 3.584-3.556 0-1.918-1.344-3.542-3.584-3.542-2.226 0-3.57 1.624-3.57 3.542 0 1.932 1.344 3.556 3.57 3.556zm0-1.582c-1.106 0-1.722-.91-1.722-1.974 0-1.05.616-1.96 1.722-1.96 1.106 0 1.736.91 1.736 1.96 0 1.064-.63 1.974-1.736 1.974zm7.672 4.158c1.666 0 3.654-.63 3.654-3.206v-6.3H31.21v.868c-.546-.686-1.274-1.036-2.086-1.036-1.708 0-2.982 1.232-2.982 3.444 0 2.254 1.288 3.444 2.982 3.444.826 0 1.554-.392 2.086-1.064v.686c0 1.33-1.008 1.708-1.862 1.708-.854 0-1.568-.238-2.114-.84l-.798 1.288c.854.742 1.75 1.008 2.912 1.008zm.336-4.368c-1.008 0-1.708-.7-1.708-1.862 0-1.162.7-1.862 1.708-1.862.588 0 1.232.322 1.526.77v2.184c-.294.434-.938.77-1.526.77z\"\n fill=\"currentColor\"\n />\n </g>\n </svg>\n );\n case \"LOG_N\":\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M30 28.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM32 30h4v4h-4v-4zM12.776 29v-9.338h-1.778V29h1.778zm4.9.168c2.24 0 3.584-1.624 3.584-3.556 0-1.918-1.344-3.542-3.584-3.542-2.226 0-3.57 1.624-3.57 3.542 0 1.932 1.344 3.556 3.57 3.556zm0-1.582c-1.106 0-1.722-.91-1.722-1.974 0-1.05.616-1.96 1.722-1.96 1.106 0 1.736.91 1.736 1.96 0 1.064-.63 1.974-1.736 1.974zm7.672 4.158c1.666 0 3.654-.63 3.654-3.206v-6.3H27.21v.868c-.546-.686-1.274-1.036-2.086-1.036-1.708 0-2.982 1.232-2.982 3.444 0 2.254 1.288 3.444 2.982 3.444.826 0 1.554-.392 2.086-1.064v.686c0 1.33-1.008 1.708-1.862 1.708-.854 0-1.568-.238-2.114-.84l-.798 1.288c.854.742 1.75 1.008 2.912 1.008zm.336-4.368c-1.008 0-1.708-.7-1.708-1.862 0-1.162.7-1.862 1.708-1.862.588 0 1.232.322 1.526.77v2.184c-.294.434-.938.77-1.526.77z\"\n fill=\"currentColor\"\n />\n </g>\n </svg>\n );\n case \"PERCENT\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M205.66,61.64l-144,144a8,8,0,0,1-11.32-11.32l144-144a8,8,0,0,1,11.32,11.31ZM50.54,101.44a36,36,0,0,1,50.92-50.91h0a36,36,0,0,1-50.92,50.91ZM56,76A20,20,0,1,0,90.14,61.84h0A20,20,0,0,0,56,76ZM216,180a36,36,0,1,1-10.54-25.46h0A35.76,35.76,0,0,1,216,180Zm-16,0a20,20,0,1,0-5.86,14.14A19.87,19.87,0,0,0,200,180Z\" />\n </svg>\n );\n case \"CDOT\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128Z\" />\n </svg>\n );\n case \"PI\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M232,172a36,36,0,0,1-72,0V72H96V200a8,8,0,0,1-16,0V72H72a40,40,0,0,0-40,40,8,8,0,0,1-16,0A56.06,56.06,0,0,1,72,56H224a8,8,0,0,1,0,16H176V172a20,20,0,0,0,40,0,8,8,0,0,1,16,0Z\" />\n </svg>\n );\n case \"a\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 384 512\"\n >\n <path d=\"M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7l-120 288-40 96c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L93.3 384H290.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-40-96-120-288zM264 320H120l72-172.8L264 320z\" />\n </svg>\n );\n case \"b\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 320 512\"\n >\n <path d=\"M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64H192c70.7 0 128-57.3 128-128c0-46.5-24.8-87.3-62-109.7c18.7-22.3 30-51 30-82.3c0-70.7-57.3-128-128-128H64zm96 192H64V96h96c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288h96 32c35.3 0 64 28.7 64 64s-28.7 64-64 64H64V288z\" />\n </svg>\n );\n case \"c\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 384 512\"\n >\n <path d=\"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3s155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8s221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\" />\n </svg>\n );\n case \"x\":\n // MATHEMATICAL ITALIC SMALL CHI\n // https://en.wikipedia.org/wiki/Chi_(letter)#Mathematical_chi\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <text\n fontSize=\"200px\"\n x=\"50%\"\n y=\"50%\"\n dominantBaseline=\"middle\"\n textAnchor=\"middle\"\n >\n 𝜒\n </text>\n </svg>\n );\n case \"X\":\n // MATHEMATICAL ITALIC CAPITAL CHI\n // https://en.wikipedia.org/wiki/Chi_(letter)#Mathematical_chi\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <text\n fontSize=\"200px\"\n x=\"50%\"\n y=\"50%\"\n dominantBaseline=\"middle\"\n textAnchor=\"middle\"\n >\n 𝛸\n </text>\n </svg>\n );\n\n /**\n * ANYTHING BELOW IS NOT YET HANDLED\n */\n case \"MANY\":\n case \"FRAC_EXCLUSIVE\":\n case \"THETA\":\n case \"NOOP\":\n case \"UP\":\n case \"DOWN\":\n case \"LEFT\":\n case \"RIGHT\":\n case \"JUMP_OUT_PARENTHESES\":\n case \"JUMP_OUT_EXPONENT\":\n case \"JUMP_OUT_BASE\":\n case \"JUMP_INTO_NUMERATOR\":\n case \"JUMP_OUT_NUMERATOR\":\n case \"JUMP_OUT_DENOMINATOR\":\n case \"PHI\":\n case \"NTHROOT3\":\n case \"POW\":\n case \"LOG_B\":\n case \"d\":\n case \"e\":\n case \"f\":\n case \"g\":\n case \"h\":\n case \"i\":\n case \"j\":\n case \"k\":\n case \"l\":\n case \"m\":\n case \"n\":\n case \"o\":\n case \"p\":\n case \"q\":\n case \"r\":\n case \"s\":\n case \"t\":\n case \"u\":\n case \"v\":\n case \"w\":\n case \"y\":\n case \"z\":\n case \"A\":\n case \"B\":\n case \"C\":\n case \"D\":\n case \"E\":\n case \"F\":\n case \"G\":\n case \"H\":\n case \"I\":\n case \"J\":\n case \"K\":\n case \"L\":\n case \"M\":\n case \"N\":\n case \"O\":\n case \"P\":\n case \"Q\":\n case \"R\":\n case \"S\":\n case \"T\":\n case \"U\":\n case \"V\":\n case \"W\":\n case \"Y\":\n case \"Z\":\n // placeholder\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"black\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <text\n y=\"20\"\n textLength=\"100%\"\n lengthAdjust=\"spacingAndGlyphs\"\n >\n {id}\n </text>\n <text\n y=\"35\"\n textLength=\"100%\"\n lengthAdjust=\"spacingAndGlyphs\"\n fill=\"red\"\n >\n placeholder\n </text>\n </svg>\n );\n default:\n // this line forces an exhaustive check of all keys;\n // if a key is not handled, the compiler will complain.\n const unhandledKey: never = id;\n throw new Error(`Unhandled key: ${unhandledKey}`);\n }\n}\n","import {View} from \"@khanacademy/wonder-blocks-core\";\nimport * as React from \"react\";\n\nimport {KeyConfig, ClickKeyCallback} from \"../../types\";\n\nimport Button from \"./button\";\nimport ButtonAsset from \"./button-assets\";\n\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\ntype KeypadPageContainerProps = {\n children: React.ReactNode;\n};\n\nexport const KeypadPageContainer = ({\n children,\n}: KeypadPageContainerProps): React.ReactElement => (\n <View\n style={{\n backgroundColor: \"#DBDCDD\",\n width: \"100%\",\n height: 192,\n\n display: \"grid\",\n gridTemplateColumns: \"repeat(6, 1fr)\",\n gridTemplateRows: \"repeat(4, 1fr)\",\n }}\n >\n {children}\n </View>\n);\n\ntype SharedButtonProps = {\n keyConfig: KeyConfig;\n style?: StyleType;\n onClickKey: ClickKeyCallback;\n};\n\nexport type KeypadButtonProps = SharedButtonProps & {\n tintColor?: string;\n};\n\nexport const KeypadButton = ({\n keyConfig,\n onClickKey,\n tintColor,\n style,\n}: KeypadButtonProps): React.ReactElement => (\n <Button\n onPress={() => onClickKey(keyConfig.id)}\n tintColor={tintColor}\n style={style}\n ariaLabel={keyConfig.ariaLabel}\n >\n <ButtonAsset id={keyConfig.id} />\n </Button>\n);\n\nexport const SecondaryKeypadButton = ({\n keyConfig,\n onClickKey,\n style,\n}: SharedButtonProps): React.ReactElement => (\n <KeypadButton\n keyConfig={keyConfig}\n onClickKey={onClickKey}\n style={style}\n tintColor={\"#F6F6F7\"}\n />\n);\n\nexport const KeypadActionButton = ({\n keyConfig,\n onClickKey,\n style,\n}: SharedButtonProps): React.ReactElement => (\n <KeypadButton\n keyConfig={keyConfig}\n onClickKey={onClickKey}\n style={style}\n tintColor={\"#DBDCDD\"}\n />\n);\n\n/**\n * A placeholder button for the keypad. Optional count prop to render multiple\n * buttons. Defaults to 1.\n */\nexport const PlaceHolderButtons = ({\n count = 1,\n}: {\n count?: number;\n}): React.ReactElement => (\n <React.Fragment>\n {Array.from({length: count}).map((_, index) => (\n <View\n key={index}\n style={{\n height: \"100%\",\n width: \"100%\",\n boxSizing: \"border-box\",\n borderRadius: 7,\n border: \"4px solid transparent\",\n }}\n >\n <View\n style={{\n background: \"rgba(33, 36, 44, 0.04)\",\n width: \"100%\",\n height: \"100%\",\n borderRadius: 4,\n border: `1px solid transparent`,\n }}\n />\n </View>\n ))}\n </React.Fragment>\n);\n","import * as React from \"react\";\n\nimport Keys from \"../../../data/key-configs\";\nimport Key from \"../../../data/keys\";\nimport {KeypadPageContainer, KeypadButton} from \"../keypad-page-items\";\n\ntype Props = {\n extraKeys: ReadonlyArray<Key>;\n onClickKey: (keyConfig: string) => void;\n};\n\nexport default class ExtrasPage extends React.Component<Props> {\n render(): React.ReactNode {\n const {extraKeys, onClickKey} = this.props;\n return (\n <KeypadPageContainer>\n {extraKeys.map((key) => (\n <KeypadButton\n key={key}\n keyConfig={Keys[key]}\n onClickKey={onClickKey}\n />\n ))}\n </KeypadPageContainer>\n );\n }\n}\n","import * as React from \"react\";\n\nimport Keys from \"../../../data/key-configs\";\nimport {ClickKeyCallback} from \"../../../types\";\nimport {\n KeypadPageContainer,\n SecondaryKeypadButton,\n KeypadActionButton,\n} from \"../keypad-page-items\";\n\ntype Props = {\n onClickKey: ClickKeyCallback;\n};\n\nexport default class GeometryPage extends React.Component<Props> {\n render(): React.ReactNode {\n const {onClickKey} = this.props;\n return (\n <KeypadPageContainer>\n {/* Row 1 */}\n <SecondaryKeypadButton\n keyConfig={Keys.SIN}\n onClickKey={onClickKey}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.COS}\n onClickKey={onClickKey}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.TAN}\n onClickKey={onClickKey}\n />\n\n <SecondaryKeypadButton\n keyConfig={Keys.LEFT_PAREN}\n onClickKey={onClickKey}\n style={{\n gridColumn: 5,\n }}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.RIGHT_PAREN}\n onClickKey={onClickKey}\n style={{\n gridColumn: 6,\n }}\n />\n {/* Row 2 */}\n <SecondaryKeypadButton\n keyConfig={Keys.x}\n onClickKey={onClickKey}\n style={{\n gridColumn: 5,\n }}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.FRAC_INCLUSIVE}\n onClickKey={onClickKey}\n style={{\n gridColumn: 6,\n }}\n />\n {/* Row 3 */}\n <SecondaryKeypadButton\n keyConfig={Keys.PI}\n onClickKey={onClickKey}\n style={{\n gridColumn: 5,\n }}\n />\n <KeypadActionButton\n keyConfig={Keys.BACKSPACE}\n style={{\n gridColumn: \"6\",\n }}\n onClickKey={onClickKey}\n />\n {/* Row 4 */}\n <KeypadActionButton\n keyConfig={Keys.DISMISS}\n style={{\n gridColumn: \"6\",\n }}\n onClickKey={onClickKey}\n />\n </KeypadPageContainer>\n );\n }\n}\n","import * as React from \"react\";\n\nimport Keys from \"../../../data/key-configs\";\nimport {ClickKeyCallback} from \"../../../types\";\nimport {\n KeypadPageContainer,\n KeypadButton,\n SecondaryKeypadButton,\n KeypadActionButton,\n} from \"../keypad-page-items\";\n\nimport {NumbersPageOptions} from \"./types\";\n\ntype Props = {\n onClickKey: ClickKeyCallback;\n} & NumbersPageOptions;\n\nexport default class NumbersPage extends React.Component<Props> {\n render(): React.ReactNode {\n const {onClickKey} = this.props;\n return (\n <KeypadPageContainer>\n {/* Row 1 */}\n <KeypadButton keyConfig={Keys.NUM_7} onClickKey={onClickKey} />\n <KeypadButton keyConfig={Keys.NUM_8} onClickKey={onClickKey} />\n <KeypadButton keyConfig={Keys.NUM_9} onClickKey={onClickKey} />\n <SecondaryKeypadButton\n keyConfig={Keys.DIVIDE}\n style={\n this.props.divisionKey\n ? {\n gridColumn: \"4\",\n gridRow: \"1\",\n }\n : {\n display: \"none\",\n }\n }\n onClickKey={onClickKey}\n />\n <SecondaryKeypadButton\n keyConfig={\n this.props.multiplicationDot ? Keys.CDOT : Keys.TIMES\n }\n style={\n this.props.divisionKey && {\n gridColumn: \"4\",\n gridRow: \"2\",\n }\n }\n onClickKey={onClickKey}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.LEFT_PAREN}\n onClickKey={onClickKey}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.RIGHT_PAREN}\n onClickKey={onClickKey}\n />\n\n {/* Row 2 */}\n <KeypadButton keyConfig={Keys.NUM_4} onClickKey={onClickKey} />\n <KeypadButton keyConfig={Keys.NUM_5} onClickKey={onClickKey} />\n <KeypadButton keyConfig={Keys.NUM_6} onClickKey={onClickKey} />\n\n <SecondaryKeypadButton\n keyConfig={Keys.MINUS}\n style={\n this.props.divisionKey && {\n gridColumn: \"4\",\n gridRow: \"3\",\n }\n }\n onClickKey={onClickKey}\n />\n\n <SecondaryKeypadButton\n keyConfig={Keys.FRAC_INCLUSIVE}\n onClickKey={onClickKey}\n style={{\n gridColumn: \"5 / 7\",\n }}\n />\n {/* Row 3 */}\n <KeypadButton keyConfig={Keys.NUM_1} onClickKey={onClickKey} />\n <KeypadButton keyConfig={Keys.NUM_2} onClickKey={onClickKey} />\n <KeypadButton keyConfig={Keys.NUM_3} onClickKey={onClickKey} />\n\n <SecondaryKeypadButton\n keyConfig={Keys.PLUS}\n style={\n this.props.divisionKey\n ? {\n gridColumn: \"4\",\n gridRow: \"4\",\n }\n : {\n gridColumn: \"4\",\n gridRowStart: \"3\",\n gridRowEnd: \"5\",\n }\n }\n onClickKey={onClickKey}\n />\n\n <KeypadActionButton\n keyConfig={Keys.BACKSPACE}\n style={{\n gridColumn: \"6\",\n }}\n onClickKey={onClickKey}\n />\n\n {/* Row 4 */}\n <KeypadButton keyConfig={Keys.NUM_0} onClickKey={onClickKey} />\n <KeypadButton\n keyConfig={Keys.DECIMAL}\n onClickKey={onClickKey}\n />\n <KeypadButton\n keyConfig={Keys.NEGATIVE}\n onClickKey={onClickKey}\n />\n\n <KeypadActionButton\n keyConfig={Keys.DISMISS}\n style={{\n gridColumn: \"6\",\n }}\n onClickKey={onClickKey}\n />\n </KeypadPageContainer>\n );\n }\n}\n","import React from \"react\";\n\nimport Keys from \"../../../data/key-configs\";\nimport {ClickKeyCallback} from \"../../../types\";\nimport {PlaceHolderButtons, SecondaryKeypadButton} from \"../keypad-page-items\";\n\ntype Props = {\n onClickKey: ClickKeyCallback;\n placeholder?: boolean;\n};\n\nexport const AdvancedRelations = ({\n onClickKey,\n placeholder,\n}: Props): React.ReactElement =>\n placeholder ? (\n <PlaceHolderButtons count={3} />\n ) : (\n <React.Fragment>\n <SecondaryKeypadButton\n keyConfig={Keys.NEQ}\n onClickKey={onClickKey}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.LEQ}\n onClickKey={onClickKey}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.GEQ}\n onClickKey={onClickKey}\n />\n </React.Fragment>\n );\n","import React from \"react\";\n\nimport Keys from \"../../../data/key-configs\";\nimport {ClickKeyCallback} from \"../../../types\";\nimport {PlaceHolderButtons, SecondaryKeypadButton} from \"../keypad-page-items\";\n\ntype Props = {\n onClickKey: ClickKeyCallback;\n placeholder?: boolean;\n};\n\nexport const BasicRelations = ({\n onClickKey,\n placeholder,\n}: Props): React.ReactElement =>\n placeholder ? (\n <PlaceHolderButtons count={3} />\n ) : (\n <React.Fragment>\n <SecondaryKeypadButton\n keyConfig={Keys.EQUAL}\n onClickKey={onClickKey}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.LT}\n onClickKey={onClickKey}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.GT}\n onClickKey={onClickKey}\n />\n </React.Fragment>\n );\n","import React from \"react\";\n\nimport Keys from \"../../../data/key-configs\";\nimport {ClickKeyCallback} from \"../../../types\";\nimport {PlaceHolderButtons, SecondaryKeypadButton} from \"../keypad-page-items\";\n\ntype Props = {\n onClickKey: ClickKeyCallback;\n placeholder?: boolean;\n};\n\nexport const Logarithms = ({\n onClickKey,\n placeholder,\n}: Props): React.ReactElement =>\n placeholder ? (\n <PlaceHolderButtons count={3} />\n ) : (\n <React.Fragment>\n <SecondaryKeypadButton\n keyConfig={Keys.LOG}\n onClickKey={onClickKey}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.LOG_N}\n onClickKey={onClickKey}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.LN}\n onClickKey={onClickKey}\n />\n </React.Fragment>\n );\n","import React from \"react\";\n\nimport Keys from \"../../../data/key-configs\";\nimport {ClickKeyCallback} from \"../../../types\";\nimport {PlaceHolderButtons, SecondaryKeypadButton} from \"../keypad-page-items\";\n\ntype Props = {\n onClickKey: ClickKeyCallback;\n placeholder?: boolean;\n};\n\nexport const PreAlgebra = ({\n onClickKey,\n placeholder,\n}: Props): React.ReactElement =>\n placeholder ? (\n <PlaceHolderButtons count={4} />\n ) : (\n <React.Fragment>\n <SecondaryKeypadButton\n keyConfig={Keys.EXP_2}\n onClickKey={onClickKey}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.EXP}\n onClickKey={onClickKey}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.SQRT}\n onClickKey={onClickKey}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.RADICAL}\n onClickKey={onClickKey}\n />\n </React.Fragment>\n );\n","import * as React from \"react\";\n\nimport Keys from \"../../../data/key-configs\";\nimport {ClickKeyCallback} from \"../../../types\";\nimport {\n KeypadPageContainer,\n SecondaryKeypadButton,\n KeypadActionButton,\n} from \"../keypad-page-items\";\n\nimport {AdvancedRelations} from \"./advanced-relations-buttons\";\nimport {BasicRelations} from \"./basic-relations-buttons\";\nimport {Logarithms} from \"./logarithms-buttons\";\nimport {PreAlgebra} from \"./pre-algebra-buttons\";\nimport {OperatorsButtonSets} from \"./types\";\n\ntype Props = {\n onClickKey: ClickKeyCallback;\n} & OperatorsButtonSets;\n\nexport default class OperatorsPage extends React.Component<Props> {\n render(): React.ReactNode {\n const {onClickKey} = this.props;\n return (\n <KeypadPageContainer>\n {/* Row 1 */}\n <PreAlgebra\n onClickKey={onClickKey}\n placeholder={!this.props.preAlgebra}\n />\n\n <SecondaryKeypadButton\n keyConfig={Keys.LEFT_PAREN}\n onClickKey={onClickKey}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.RIGHT_PAREN}\n onClickKey={onClickKey}\n />\n {/* Row 2 */}\n <Logarithms\n onClickKey={onClickKey}\n placeholder={!this.props.logarithms}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.x}\n onClickKey={onClickKey}\n style={{\n gridColumn: 5,\n }}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.FRAC_INCLUSIVE}\n onClickKey={onClickKey}\n style={{\n gridColumn: 6,\n }}\n />\n {/* Row 3 */}\n {/* TODO: implement relatons buttons */}\n <BasicRelations\n onClickKey={onClickKey}\n placeholder={!this.props.basicRelations}\n />\n <SecondaryKeypadButton\n keyConfig={Keys.PI}\n onClickKey={onClickKey}\n style={{\n gridColumn: 5,\n }}\n />\n <KeypadActionButton\n keyConfig={Keys.BACKSPACE}\n style={{\n gridColumn: 6,\n }}\n onClickKey={onClickKey}\n />\n {/* Row 4 */}\n <AdvancedRelations\n onClickKey={onClickKey}\n placeholder={!this.props.advancedRelations}\n />\n <KeypadActionButton\n keyConfig={Keys.DISMISS}\n style={{\n gridColumn: \"6\",\n }}\n onClickKey={onClickKey}\n />\n </KeypadPageContainer>\n );\n }\n}\n","import Color from \"@khanacademy/wonder-blocks-color\";\nimport {View} from \"@khanacademy/wonder-blocks-core\";\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport Key from \"../../data/keys\";\nimport {ClickKeyCallback} from \"../../types\";\nimport Tabbar from \"../tabbar/tabbar\";\nimport {TabbarItemType} from \"../tabbar/types\";\n\nimport ExtrasPage from \"./extras-page\";\nimport GeometryPage from \"./geometry-page\";\nimport NumbersPage from \"./numbers-page\";\nimport {NumbersPageOptions} from \"./numbers-page/types\";\nimport OperatorsPage from \"./operators-page\";\nimport {OperatorsButtonSets} from \"./operators-page/types\";\n\nexport type Props = {\n onClickKey: ClickKeyCallback;\n trigonometry?: boolean;\n extraKeys: ReadonlyArray<Key>;\n} & OperatorsButtonSets &\n NumbersPageOptions;\n\ntype State = {\n selectedPage: TabbarItemType;\n};\n\ntype DefaultProps = {\n extraKeys: Props[\"extraKeys\"];\n};\n\nfunction allPages(props: Props): ReadonlyArray<TabbarItemType> {\n const pages: Array<TabbarItemType> = [\"Numbers\"];\n\n if (props.extraKeys?.length) {\n pages.push(\"Extras\");\n }\n\n if (\n // OperatorsButtonSets\n props.preAlgebra ||\n props.logarithms ||\n props.basicRelations ||\n props.advancedRelations\n ) {\n pages.push(\"Operators\");\n }\n\n if (props.trigonometry) {\n pages.push(\"Geometry\");\n }\n\n return pages;\n}\n\nexport default class Keypad extends React.Component<Props, State> {\n state: State = {\n selectedPage: \"Numbers\",\n };\n\n static defaultProps: DefaultProps = {\n extraKeys: [],\n };\n\n render(): React.ReactNode {\n const {selectedPage} = this.state;\n\n const availablePages = allPages(this.props);\n\n return (\n <View>\n <Tabbar\n items={availablePages}\n selectedItem={selectedPage}\n onSelectItem={(tabbarItem: TabbarItemType) => {\n this.setState({selectedPage: tabbarItem});\n }}\n style={styles.tabbar}\n />\n {selectedPage === \"Numbers\" && <NumbersPage {...this.props} />}\n {selectedPage === \"Extras\" && <ExtrasPage {...this.props} />}\n {selectedPage === \"Operators\" && (\n <OperatorsPage {...this.props} />\n )}\n {selectedPage === \"Geometry\" && (\n <GeometryPage {...this.props} />\n )}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n tabbar: {\n background: Color.white,\n },\n});\n"],"names":["CursorContext","Text","React","Component","render","numberOfLines","style","props","className","css","styles","initial","Array","isArray","singleLineStyle","createElement","dynamicStyle","children","StyleSheet","create","color","display","font","margin","padding","textDecorationLine","wordWrap","maxWidth","overflow","textOverflow","whiteSpace","View","extraClassName","onClick","onTouchCancel","onTouchEnd","onTouchMove","onTouchStart","ariaLabel","role","alignItems","borderWidth","borderStyle","boxSizing","flexBasis","flexDirection","position","backgroundColor","textAlign","listStyle","minHeight","minWidth","wonderBlocksBlue","Color","blue","offBlack","offBlack32","offBlack16","offBlack8","iconSizeHeightPx","iconSizeWidthPx","compactKeypadBorderRadiusPx","cursorHandleRadiusPx","cursorHandleDistanceMultiplier","valueGrey","operatorGrey","controlGrey","emptyGrey","innerBorderColor","innerBorderStyle","innerBorderWidthPx","tabletCutoffPx","pageIndicatorHeightPx","navigationPadWidthPx","toolbarHeightPx","touchTargetRadiusPx","touchTargetHeightPx","touchTargetWidthPx","cursorRadiusPx","cursorHeightPx","cursorWidthPx","CursorHandle","x","y","animateIntoPosition","animationStyle","transitionDuration","transitionProperty","transformString","outerStyle","_extends","zIndex","left","top","transform","width","height","touchAction","fill","viewBox","id","colorInterpolationFilters","filterUnits","floodOpacity","result","in","type","values","dy","stdDeviation","in2","mode","filter","d","stroke","strokeWidth","defaultProps","visible","touchSlopPx","DragListener","constructor","onDrag","initialEvent","_scrollListener","_moveListener","_endAndCancelListener","touchLocationsById","i","changedTouches","length","touch","identifier","clientX","clientY","evt","initialTouchLocation","touchLocation","dx","squaredDist","squaredTouchSlop","attach","window","addEventListener","detach","removeEventListener","mathQuillInstance","MathQuill","getInterface","createBaseConfig","autoCommands","charsThatBreakOutOfSupSub","supSubsRequireOperand","spaceBehavesLikeTab","createMathField","container","configCallback","baseConfig","config","MathField","MathFieldActionType","Numerals","GreekLetters","Letters","ValidLeaves","map","letter","toLowerCase","toUpperCase","getCursor","mathField","__controller","cursor","isFraction","node","jQ","hasClass","isNumerator","isDenominator","isSubScript","isSuperScript","isParens","ctrlSeq","isLeaf","includes","trim","isSquareRoot","blocks","isNthRoot","isNthRootIndex","isInsideLogIndex","grandparent","parent","command","maybeFindCommandBeforeParens","name","isInsideEmptyNode","L","MQ_END","R","selectNode","insLeftOf","startSelection","insRightOf","select","endSelection","maybeFindCommand","initialNode","commandCharRegex","commandStartRegex","commandEndSeq","validCommands","startNode","endNode","test","leftParenNode","contextForCursor","visitor","BEFORE_FRACTION","IN_PARENS","IN_NUMERATOR","IN_DENOMINATOR","IN_SUB_SCRIPT","IN_SUPER_SCRIPT","NONE","handleBackspaceInNthRoot","isAtLeftEnd","isRootEmpty","ends","keystroke","handleBackspaceInRootIndex","latex","reinsertionPoint","rootIsEmpty","text","write","replace","moveToDirEnd","handleBackspaceInLogIndex","isLogBodyEmpty","contentjQ","handleBackspaceOutsideParens","leftNode","rightNode","insAtRightEnd","handleBackspaceInsideParens","sub","isEmpty","handleBackspaceAfterLigaturedSymbol","handleBackspace","selection","KeypadType","KeyTypes","DeviceOrientation","DeviceType","LayoutMode","BorderDirection","BorderStyles","LEFT","BOTTOM","ALL","IconType","DecimalSeparator","EchoAnimationType","decimalSeparator","getDecimalSeparator","COMMA","PERIOD","handleLeftArrow","handleRightArrow","handleArrow","key","ArithmeticOperators","EqualityOperators","handleExponent","invalidPrefixes","precedingNode","shouldPrefixWithParens","cmd","Error","KeysForJumpContext","handleJumpOut","context","fractionNode","siblingDenominator","ActionType","decimalSymbol","buildGenericCallback","str","WRITE","mathQuill","CMD","KEYSTROKE","buildNormalFunctionCallback","keyToMathquillMap","EXP","EXP_2","EXP_3","JUMP_OUT_PARENTHESES","JUMP_OUT_EXPONENT","JUMP_OUT_BASE","JUMP_INTO_NUMERATOR","JUMP_OUT_NUMERATOR","JUMP_OUT_DENOMINATOR","RIGHT","LOG","LN","SIN","COS","TAN","CDOT","DECIMAL","DIVIDE","EQUAL","GEQ","GT","LEQ","LT","MINUS","NEGATIVE","NEQ","PERCENT","PLUS","TIMES","FRAC_INCLUSIVE","FRAC","LEFT_PAREN","RIGHT_PAREN","SQRT","PHI","PI","THETA","RADICAL","BACKSPACE","UP","DOWN","CUBE_ROOT","FRAC_EXCLUSIVE","shouldNavigateLeft","LOG_B","typedText","LOG_N","NTHROOT3","POW","contents","DISMISS","NOOP","MANY","NUM_0","NUM_1","NUM_2","NUM_3","NUM_4","NUM_5","NUM_6","NUM_7","NUM_8","NUM_9","a","b","c","e","f","g","h","j","k","l","m","n","o","p","q","r","s","t","u","v","w","z","A","B","C","D","E","F","G","H","I","J","K","M","N","O","P","Q","S","T","U","V","W","X","Y","Z","mobileKeyTranslator","keyTranslator","MathWrapper","element","callbacks","substituteTextarea","document","focus","controller","show","blurred","blur","hide","pressKey","translator","onSelectionChanged","setCursorPosition","hitNode","el","elementFromPoint","hasAttribute","root","pageX","body","scrollLeft","pageY","scrollTop","seek","$","onCursorMove","getSelection","getContent","setContent","scrollIntoView","containerNode","keypadNode","containerBounds","getBoundingClientRect","containerBottomPx","bottom","containerTopPx","scrollNode","scrollingElement","desiredMarginPx","pageHeightPx","innerHeight","keypadHeightPx","clientHeight","keypadTopPx","scrollOffset","Math","min","constrainingFrictionFactor","MathInput","args","didTouchOutside","didScroll","recordTouchStartOutside","blurOnTouchEndOutside","dragListener","inputRef","_isMounted","_mathContainer","_container","_root","_containerBounds","_keypadBounds","state","focused","handle","_clearKeypadBoundsCache","_cacheKeypadBounds","_updateInputPadding","ReactDOM","findDOMNode","querySelector","getInputInnerPadding","paddingTop","paddingRight","paddingBottom","paddingLeft","fontSize","fontSizePt","_getKeypadBounds","keypadElement","getDOMNode","_updateCursorHandle","cursorBounds","cursorWidth","gapBelowCursor","inputInnerPadding","furthestRightCursorBound","right","furthestLeftCursorBound","cursorBoundsLeft","setState","_hideCursorHandle","_handleScroll","onBlur","setKeyHandler","hideCursor","value","onChange","onFocus","setTimeout","maybeKeypadNode","_findHitNode","points","elements","point","contains","classList","nonLeafElements","max","counts","elementsById","getAttribute","push","count","entries","_insertCursorAtClosestNode","hasChildNodes","insAtLeftEnd","firstChildBounds","firstChild","lastChildBounds","lastChild","abs","setCursor","handleTouchStart","stopPropagation","handleTouchMove","handleTouchEnd","onCursorHandleTouchStart","preventDefault","_constrainToBound","friction","onCursorHandleTouchMove","relativeX","relativeY","distanceAboveFingerToTrySelecting","adjustedY","onCursorHandleTouchEnd","onCursorHandleTouchCancel","domKeyToMathQuillKey","keyMap","handleKeyUp","event","mathQuillKey","getBorderWidthPx","normalBorderWidthPx","focusedBorderWidthPx","paddingInset","totalDesiredPadding","symbolaPaddingBottom","symbolaPaddingTop","componentDidMount","unbind","target","touchDidStartInOrBelowKeypad","bounds","UNSAFE_componentWillReceiveProps","componentDidUpdate","prevProps","prevState","componentWillUnmount","innerStyle","inlineStyles","innerContainer","borderColor","i18n","_","input","tabIndex","ref","onKeyUp","inputMaxWidth","numeralHeightPx","minHeightPx","minWidthPx","verticalAlign","offBlack50","borderRadius","keypadElementPropType","PropTypes","shape","activate","func","isRequired","dismiss","configure","getDefaultOperatorFields","keyType","iconType","SVG","data","icon","getDefaultValueFields","MATH","getDefaultNumberFields","TEXT","KeyConfigs","CornerDecal","containerStyle","triangleSizePx","opacity","row","column","oneColumn","flexGrow","fullWidth","stretch","centered","justifyContent","centeredText","roundedTopLeft","borderTopLeftRadius","roundedTopRight","borderTopRightRadius","Styles","MathIcon","_renderMath","math","katex","size","base","Cos","fillRule","propTypes","string","Log","Equal","strokeLinecap","strokeLinejoin","Backspace","Sqrt","Exp","Neq","Geq","Ln","Dismiss","Sin","Lt","CubeRoot","Plus","Tan","Arrow","Left","Up","Down","LeftParen","RightParen","Gt","Divide","cx","cy","Period","Percent","Times","Exp3","Exp2","Right","Cdot","LogN","Leq","Minus","Radical","FracInclusive","rx","JumpOutParentheses","JumpOutExponent","JumpOutBase","JumpIntoNumerator","JumpOutNumerator","JumpOutDenominator","SvgIcon","SvgForName","Iconography","TextIcon","character","fontFamily","focusedColor","unfocusedColor","Icon","PureComponent","styleWithFocus","unfocused","MultiSymbolGrid","icons","forEach","primaryIconStyle","secondaryIconStyle","secondary","middleLeft","middleRight","topLeft","topRight","bottomLeft","bottomRight","verticalInsetPx","horizontalInsetPx","marginBottom","marginLeft","marginTop","marginRight","KeypadButton","buttonSizeStyle","_preInjectStyles","_getFocusStyle","borders","Object","_getButtonStyle","focusBackgroundStyle","light","bright","focusBox","backgroundStyle","empty","operator","control","leftBorder","bottomBorder","buttonBase","echo","UNSAFE_componentWillMount","styleForButtonDimensions","heightPx","widthPx","UNSAFE_componentWillUpdate","newProps","newState","childKeys","disabled","popoverEnabled","renderFocused","buttonStyle","focusStyle","iconWrapperStyle","iconWrapper","undefined","eventHandlers","maybeFocusBox","maybeCornerDecal","decalInset","manyButtonA11yMarkup","keyConfig","a11yMarkup","focusInsetPx","focusBoxZIndex","flex","userSelect","borderLeftWidth","borderBottomWidth","buttonSize","mapStateToProps","layout","buttonDimensions","connect","forwardRef","EmptyKeypadButton","_this$props","gestureManager","rest","_objectWithoutPropertiesLoose","_excluded","gestures","TouchableKeypadButton","shouldComponentUpdate","unregisterDOMNode","childKeyIds","styleWithAddons","preventScrolls","registerDOMNode","extractProps","ownProps","_gestures$popover","_excluded2","useFirstChildProps","popover","parentId","ManyKeypadButton","keys","join","IconAsset","tintColor","xmlns","clipRule","border","hovered","background","white","pressed","outline","innerBox","innerBoxPressed","activeIndicator","imageTintColor","itemState","offBlack64","TabbarItem","itemType","Clickable","tabbar","Tabbar","items","selectedItem","onSelectItem","item","keypad","Echo","animationDurationMs","onAnimationFinish","initialBounds","zIndexes","pointerEvents","EchoManager","_animationConfigForType","animationType","animationTransitionName","SLIDE_AND_FADE","FADE_ONLY","LONG_FADE_ONLY","echoes","echoesForType","TransitionGroup","animationId","CSSTransition","classNames","enter","exit","timeout","MultiSymbolPopover","boxShadow","popoverButton","PopoverContainer","PopoverManager","dismissKeypad","activateKeypad","configureKeypad","configuration","setPageSize","pageWidthPx","removeEcho","keyHandler","setActiveNodes","activeNodes","inPopover","Keypad","_resizeTimeout","_computeContainer","domNode","_updateSizeAndPosition","_onResize","relativeEchoes","relativePopover","active","mapDispatchToProps","dispatch","TwoPageKeypad","selectedPage","leftPage","paginationEnabled","rightPage","borderTop","borderLeft","offWhite","borderBottom","expressionKeypadLayout","rows","columns","numPages","maxVisibleRows","ExpressionKeypad","cursorContext","dynamicJumpOut","extraKeys","roundTopLeft","roundTopRight","dismissOrJumpOutKey","rightPageStyle","leftPageStyle","_state$input$cursor","navigationPadEnabled","fractionKeypadLayout","FractionKeypad","NavigationPad","navigationKey","topArrow","leftArrow","horizontalSpacer","rightArrow","bottomArrow","buttonSizePx","borderRadiusPx","borderWidthPx","borderTopWidth","borderRightWidth","borderBottomRightRadius","borderBottomLeftRadius","KeypadContainer","hasMounted","hasBeenActivated","viewportWidth","_throttleResizeHandler","_this$props$onPageSiz","innerWidth","onPageSizeChange","call","renderKeypad","keypadType","layoutMode","keypadProps","COMPACT","FRACTION","EXPRESSION","nextProps","onDismiss","onElementMounted","hidden","invisible","keypadContainerStyle","keypadContainer","keypadStyle","keypadBorder","FULLSCREEN","fullscreen","compact","navigationPadContainer","keypadLayout","keypadAnimationDurationMs","transition","borderRight","visibility","defaultOptions","longPressWaitTimeMs","swipeThresholdPx","holdIntervalMs","GestureStateMachine","handlers","options","swipeDisabledNodeIds","multiPressableKeys","touchState","swipeState","_maybeCancelLongPressForTouch","touchId","longPressTimeoutId","clearTimeout","_maybeCancelPressAndHoldForTouch","pressAndHoldIntervalId","clearInterval","_cleanupTouchEvent","_onFocus","activeNodeId","onTrigger","setInterval","onLongPress","_onSwipeStart","activeTouchId","getId","startingNodeId","swipeLocked","startX","swipeEnabled","_this$handlers$onSwip","_this$handlers","onSwipeChange","shouldBeginSwiping","_this$handlers$onSwip2","_this$handlers2","_this$handlers$onSwip3","_this$handlers3","onSwipeEnd","didPressAndHold","_this$handlers$onSwip4","_this$handlers4","NodeManager","_nodesById","_orderedIds","_cachedBoundingBoxesById","childIds","allIds","orderedIds","seenIds","idForCoords","layoutPropsForId","DOMRect","PopoverStateMachine","popovers","activePopover","registerPopover","unregisterPopover","isPopoverVisible","onActiveNodesChanged","_isNodeInsidePopover","_defaultNodeForPopover","keyId","domNodeId","coordsForEvent","GestureManager","disabledSwipeKeys","trackEvents","nodeManager","popoverStateMachine","gestureStateMachine","enableEventTracking","disableEventTracking","_lastAnimationId","initialEchoState","echoReducer","action","remainingEchoes","initialInputState","inputReducer","defaultKeypadType","keypadForType","initialKeypadState","keypadReducer","minButtonHeight","maxButtonSize","minSpaceAboveKeypad","safariNavBarWhenShrunk","safariNavBarWhenExpanded","safariToolbar","maxLandscapeBrowserChrome","maxPortraitBrowserChrome","worstCaseAspectRatio","computeLayoutParameters","numColumns","numMaxVisibleRows","deviceOrientation","deviceType","toolbarEnabled","effectiveNumColumns","PHONE","isLandscape","LANDSCAPE","browserChromeHeight","reservedSpace","effectiveWidth","effectiveHeight","maxKeypadHeight","buttonHeightPx","buttonWidthPx","TABLET","numSeparators","keypadWidth","initialLayoutState","gridDimensions","numRows","pageDimensions","layoutParametersForDimensions","PORTRAIT","deviceInfo","layoutOptions","layoutReducer","createStore","createGestureManager","store","layoutProps","initialGestureState","gestureReducer","reducer","Redux","combineReducers","ProvidedKeypad","cb","Provider","elementWithDispatchMethods","outerBoxBase","outerBoxHover","outerBoxPressed","clickable","Button","onPress","ButtonAsset","dominantBaseline","textAnchor","textLength","lengthAdjust","unhandledKey","KeypadPageContainer","gridTemplateColumns","gridTemplateRows","onClickKey","SecondaryKeypadButton","KeypadActionButton","PlaceHolderButtons","Fragment","from","index","ExtrasPage","Keys","GeometryPage","gridColumn","NumbersPage","divisionKey","gridRow","multiplicationDot","gridRowStart","gridRowEnd","AdvancedRelations","placeholder","BasicRelations","Logarithms","PreAlgebra","OperatorsPage","preAlgebra","logarithms","basicRelations","advancedRelations","allPages","_props$extraKeys","pages","trigonometry","availablePages","tabbarItem"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/components/input/cursor-contexts.ts","../../../../node_modules/@babel/runtime/helpers/esm/extends.js","../../src/fake-react-native-web/text.tsx","../../src/fake-react-native-web/view.tsx","../../src/components/common-style.ts","../../src/components/input/cursor-handle.tsx","../../src/components/input/drag-listener.ts","../../src/components/input/mathquill-instance.ts","../../src/components/input/mathquill-types.ts","../../src/components/input/mathquill-helpers.ts","../../src/components/key-handlers/handle-backspace.ts","../../src/enums.ts","../../src/utils.ts","../../src/components/key-handlers/handle-arrow.ts","../../src/components/key-handlers/handle-exponent.ts","../../src/components/key-handlers/handle-jump-out.ts","../../src/components/key-handlers/key-translator.ts","../../src/components/input/math-wrapper.ts","../../src/components/input/scroll-into-view.ts","../../src/components/input/math-input.tsx","../../src/components/prop-types.js","../../src/data/key-configs.ts","../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../src/components/keypad-legacy/corner-decal.tsx","../../src/components/keypad-legacy/styles.ts","../../src/components/keypad-legacy/math-icon.tsx","../../src/components/keypad-legacy/iconography/cos.js","../../src/components/keypad-legacy/iconography/log.js","../../src/components/keypad-legacy/iconography/equal.js","../../src/components/keypad-legacy/iconography/backspace.js","../../src/components/keypad-legacy/iconography/sqrt.js","../../src/components/keypad-legacy/iconography/exp.js","../../src/components/keypad-legacy/iconography/neq.js","../../src/components/keypad-legacy/iconography/geq.js","../../src/components/keypad-legacy/iconography/ln.js","../../src/components/keypad-legacy/iconography/dismiss.js","../../src/components/keypad-legacy/iconography/sin.js","../../src/components/keypad-legacy/iconography/lt.js","../../src/components/keypad-legacy/iconography/cube-root.js","../../src/components/keypad-legacy/iconography/plus.js","../../src/components/keypad-legacy/iconography/tan.js","../../src/components/keypad-legacy/iconography/arrow.js","../../src/components/keypad-legacy/iconography/left.js","../../src/components/keypad-legacy/iconography/up.js","../../src/components/keypad-legacy/iconography/down.js","../../src/components/keypad-legacy/iconography/left-paren.js","../../src/components/keypad-legacy/iconography/right-paren.js","../../src/components/keypad-legacy/iconography/gt.js","../../src/components/keypad-legacy/iconography/divide.js","../../src/components/keypad-legacy/iconography/period.js","../../src/components/keypad-legacy/iconography/percent.js","../../src/components/keypad-legacy/iconography/times.js","../../src/components/keypad-legacy/iconography/exp-3.js","../../src/components/keypad-legacy/iconography/exp-2.js","../../src/components/keypad-legacy/iconography/right.js","../../src/components/keypad-legacy/iconography/cdot.js","../../src/components/keypad-legacy/iconography/log-n.js","../../src/components/keypad-legacy/iconography/leq.js","../../src/components/keypad-legacy/iconography/minus.js","../../src/components/keypad-legacy/iconography/radical.js","../../src/components/keypad-legacy/iconography/frac.js","../../src/components/keypad-legacy/iconography/jump-out-parentheses.js","../../src/components/keypad-legacy/iconography/jump-out-exponent.js","../../src/components/keypad-legacy/iconography/jump-out-base.js","../../src/components/keypad-legacy/iconography/jump-into-numerator.js","../../src/components/keypad-legacy/iconography/jump-out-numerator.js","../../src/components/keypad-legacy/iconography/jump-out-denominator.js","../../src/components/keypad-legacy/iconography/index.js","../../src/components/keypad-legacy/svg-icon.tsx","../../src/components/keypad-legacy/text-icon.tsx","../../src/components/keypad-legacy/icon.tsx","../../src/components/keypad-legacy/multi-symbol-grid.tsx","../../src/components/keypad-legacy/keypad-button.tsx","../../src/components/keypad-legacy/empty-keypad-button.tsx","../../src/components/keypad-legacy/touchable-keypad-button.tsx","../../src/components/keypad-legacy/many-keypad-button.tsx","../../src/components/tabbar/icons.tsx","../../src/components/tabbar/item.tsx","../../src/components/tabbar/tabbar.tsx","../../src/components/keypad-legacy/z-indexes.ts","../../src/components/keypad-legacy/echo-manager.tsx","../../src/components/keypad-legacy/multi-symbol-popover.tsx","../../src/components/keypad-legacy/popover-manager.tsx","../../src/components/keypad-legacy/store/actions.ts","../../src/components/keypad-legacy/keypad.tsx","../../src/components/keypad-legacy/two-page-keypad.tsx","../../src/components/keypad-legacy/expression-keypad.tsx","../../src/components/keypad-legacy/fraction-keypad.tsx","../../src/components/keypad-legacy/navigation-pad.tsx","../../src/components/keypad-legacy/keypad-container.tsx","../../src/components/keypad-legacy/gesture-state-machine.ts","../../src/components/keypad-legacy/node-manager.ts","../../src/components/keypad-legacy/popover-state-machine.ts","../../src/components/keypad-legacy/gesture-manager.ts","../../src/components/keypad-legacy/store/echo-reducer.ts","../../src/components/keypad-legacy/store/input-reducer.ts","../../src/components/keypad-legacy/store/shared.ts","../../src/components/keypad-legacy/store/keypad-reducer.ts","../../src/components/keypad-legacy/compute-layout-parameters.ts","../../src/components/keypad-legacy/store/layout-reducer.ts","../../src/components/keypad-legacy/store/index.ts","../../src/components/keypad-legacy/provided-keypad.tsx","../../src/components/keypad/button-assets.tsx","../../src/components/keypad/keypad-button.tsx","../../src/components/keypad/keypad-pages/extras-page.tsx","../../src/components/keypad/keypad-pages/geometry-page.tsx","../../src/components/keypad/keypad-pages/numbers-page.tsx","../../src/components/keypad/keypad-pages/operators-page.tsx","../../src/components/keypad/shared-keys.tsx","../../src/components/keypad/index.tsx"],"sourcesContent":["/**\n * Enum that defines the various contexts in which a cursor can exist. The\n * active context is determined first by looking at the cursor's siblings (e.g.,\n * for the `BEFORE_FRACTION` context), and then at its direct parent. Though a\n * cursor could in theory be nested in multiple contexts, we only care about the\n * immediate context.\n *\n * TODO(charlie): Add a context to represent being inside of a radical. Right\n * now, we show the dismiss button rather than allowing the user to jump out of\n * the radical.\n */\n\nexport enum CursorContext {\n // The cursor is not in any of the other viable contexts.\n NONE = \"NONE\",\n\n // The cursor is within a set of parentheses.\n IN_PARENS = \"IN_PARENS\",\n\n // The cursor is within a superscript (e.g., an exponent).\n IN_SUPER_SCRIPT = \"IN_SUPER_SCRIPT\",\n\n // The cursor is within a subscript (e.g., the base of a custom logarithm).\n IN_SUB_SCRIPT = \"IN_SUB_SCRIPT\",\n\n // The cursor is in the numerator of a fraction.\n IN_NUMERATOR = \"IN_NUMERATOR\",\n\n // The cursor is in the denominator of a fraction.\n IN_DENOMINATOR = \"IN_DENOMINATOR\",\n\n // The cursor is sitting before a fraction; that is, the cursor is within\n // what looks to be a mixed number preceding a fraction. This will only be\n // the case when the only math between the cursor and the fraction to its\n // write is non-leaf math (numbers and variables).\n BEFORE_FRACTION = \"BEFORE_FRACTION\",\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import {StyleSheet, css} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\nimport type {CSSProperties} from \"aphrodite\";\n\ntype Props = {\n children: React.ReactNode;\n // The `dynamicStyle` prop is provided for animating dynamic\n // properties, as creating Aphrodite StyleSheets in animation loops is\n // expensive. `dynamicStyle` should be a raw style object, rather than\n // a StyleSheet.\n dynamicStyle?: CSSProperties;\n numberOfLines?: number;\n style?: StyleType;\n};\n\nclass Text extends React.Component<Props> {\n render(): React.ReactNode {\n const {numberOfLines, style} = this.props;\n\n const className = css(\n styles.initial,\n ...(Array.isArray(style) ? style : [style]),\n numberOfLines === 1 && styles.singleLineStyle,\n );\n\n return (\n <span className={className} style={this.props.dynamicStyle}>\n {this.props.children}\n </span>\n );\n }\n}\n\n// https://github.com/necolas/react-native-web/blob/master/src/components/Text/index.js\nconst styles = StyleSheet.create({\n initial: {\n color: \"inherit\",\n display: \"inline\",\n font: \"inherit\",\n margin: 0,\n padding: 0,\n textDecorationLine: \"none\",\n wordWrap: \"break-word\",\n },\n singleLineStyle: {\n maxWidth: \"100%\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n});\n\nexport default Text;\n","import {StyleSheet, css} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\nimport type {CSSProperties} from \"aphrodite\";\n\ntype Props = {\n ariaLabel?: string;\n children?: React.ReactNode;\n // The `dynamicStyle` prop is provided for animating dynamic\n // properties, as creating Aphrodite StyleSheets in animation loops is\n // expensive. `dynamicStyle` should be a raw style object, rather than\n // a StyleSheet.\n dynamicStyle?: CSSProperties;\n // The `extraClassName` prop should almost never be used. It gives the\n // client a way to provide an additional CSS class name, to augment\n // the class name generated by Aphrodite. (Right now, it's only used to\n // disable some externally-applied CSS that would otherwise be far too\n // difficult to override with inline styles.)\n extraClassName?: string;\n numberOfLines?: number;\n onClick?: (arg1: React.SyntheticEvent<HTMLDivElement>) => void;\n onTouchCancel?: (arg1: React.TouchEvent<HTMLDivElement>) => void;\n onTouchEnd?: (arg1: React.TouchEvent<HTMLDivElement>) => void;\n onTouchMove?: (arg1: React.TouchEvent<HTMLDivElement>) => void;\n onTouchStart?: (arg1: React.TouchEvent<HTMLDivElement>) => void;\n role?: string;\n style?: StyleType;\n};\n\nclass View extends React.Component<Props> {\n static styles = StyleSheet.create({\n // From: https://github.com/necolas/react-native-web/blob/master/src/components/View/index.js\n // eslint-disable-next-line react-native/no-unused-styles\n initial: {\n alignItems: \"stretch\",\n borderWidth: 0,\n borderStyle: \"solid\",\n boxSizing: \"border-box\",\n display: \"flex\",\n flexBasis: \"auto\",\n flexDirection: \"column\",\n margin: 0,\n padding: 0,\n position: \"relative\",\n // button and anchor reset\n backgroundColor: \"transparent\",\n color: \"inherit\",\n font: \"inherit\",\n textAlign: \"inherit\",\n textDecorationLine: \"none\",\n // list reset\n listStyle: \"none\",\n // fix flexbox bugs\n maxWidth: \"100%\",\n minHeight: 0,\n minWidth: 0,\n },\n });\n\n render(): React.ReactNode {\n const className =\n css(\n View.styles.initial,\n ...(Array.isArray(this.props.style)\n ? this.props.style\n : [this.props.style]),\n ) +\n (this.props.extraClassName ? ` ${this.props.extraClassName}` : \"\");\n\n return (\n <div\n className={className}\n style={this.props.dynamicStyle}\n onClick={this.props.onClick}\n onTouchCancel={this.props.onTouchCancel}\n onTouchEnd={this.props.onTouchEnd}\n onTouchMove={this.props.onTouchMove}\n onTouchStart={this.props.onTouchStart}\n aria-label={this.props.ariaLabel}\n role={this.props.role}\n >\n {this.props.children}\n </div>\n );\n }\n}\n\nexport default View;\n","/**\n * Common parameters used to style components.\n */\nimport Color from \"@khanacademy/wonder-blocks-color\";\n\nexport const wonderBlocksBlue = Color.blue;\nexport const offBlack = Color.offBlack;\nexport const offBlack32 = Color.offBlack32;\nexport const offBlack16 = Color.offBlack16;\nexport const offBlack8 = Color.offBlack8;\n\nexport const iconSizeHeightPx = 48;\nexport const iconSizeWidthPx = 48;\nexport const compactKeypadBorderRadiusPx = 4;\nexport const cursorHandleRadiusPx = 11;\n\n// The amount to multiply the radius by to get the distance from the\n// center to the tip of the cursor handle. The cursor is a circle with\n// one quadrant replace with a square. The hypotenuse of the square is\n// 1.045 times the radius of the circle.\nexport const cursorHandleDistanceMultiplier = 1.045;\n\n// Keypad button colors\nexport const valueGrey = \"#FFF\";\nexport const operatorGrey = \"#FAFAFA\";\nexport const controlGrey = \"#F6F7F7\";\nexport const emptyGrey = \"#F0F1F2\";\n\n// Constants defining any borders between elements in the keypad.\nexport const innerBorderColor = offBlack16;\nexport const innerBorderStyle = \"solid\";\nexport const innerBorderWidthPx = 1;\n\n// The width at which a device is classified as a \"tablet\" for the purposes\n// of the keypad layout.\nexport const tabletCutoffPx = 600;\n\n// The dimensions that define various components in the tree, which may be\n// needed outside of those components in order to determine various layout\n// parameters.\nexport const pageIndicatorHeightPx = 16;\nexport const navigationPadWidthPx = 192;\n// HACK(charlie): This should be injected by webapp somehow.\n// TODO(charlie): Add a link to the webapp location as soon as the footer\n// has settled down.\nexport const toolbarHeightPx = 60;\n","/**\n * Renders the green tear-shaped handle under the cursor.\n */\n\nimport * as React from \"react\";\n\nimport {\n cursorHandleRadiusPx,\n cursorHandleDistanceMultiplier,\n} from \"../common-style\";\n\nconst touchTargetRadiusPx = 2 * cursorHandleRadiusPx;\nconst touchTargetHeightPx = 2 * touchTargetRadiusPx;\nconst touchTargetWidthPx = 2 * touchTargetRadiusPx;\n\nconst cursorRadiusPx = cursorHandleRadiusPx;\nconst cursorHeightPx = cursorHandleDistanceMultiplier * (cursorRadiusPx * 4);\nconst cursorWidthPx = 4 * cursorRadiusPx;\n\ntype Props = {\n animateIntoPosition: boolean;\n onTouchCancel: (arg1: React.TouchEvent<HTMLSpanElement>) => void;\n onTouchEnd: (arg1: React.TouchEvent<HTMLSpanElement>) => void;\n onTouchMove: (arg1: React.TouchEvent<HTMLSpanElement>) => void;\n onTouchStart: (arg1: React.TouchEvent<HTMLSpanElement>) => void;\n visible: boolean;\n x: number;\n y: number;\n};\n\ntype DefaultProps = {\n animateIntoPosition: Props[\"animateIntoPosition\"];\n visible: Props[\"visible\"];\n x: Props[\"x\"];\n y: Props[\"y\"];\n};\n\nclass CursorHandle extends React.Component<Props> {\n static defaultProps: DefaultProps = {\n animateIntoPosition: false,\n visible: false,\n x: 0,\n y: 0,\n };\n\n render(): React.ReactNode {\n const {x, y, animateIntoPosition} = this.props;\n\n const animationStyle = animateIntoPosition\n ? {\n transitionDuration: \"100ms\",\n transitionProperty: \"transform\",\n }\n : {};\n const transformString = `translate(${x}px, ${y}px)`;\n\n const outerStyle = {\n position: \"absolute\",\n // This is essentially webapp's interactiveComponent + 1.\n // TODO(charlie): Pull in those styles somehow to avoid breakages.\n zIndex: 4,\n left: -touchTargetWidthPx / 2,\n top: 0,\n transform: transformString,\n width: touchTargetWidthPx,\n height: touchTargetHeightPx,\n // Touch events that start on the cursor shouldn't be allowed to\n // produce page scrolls.\n touchAction: \"none\",\n ...animationStyle,\n } as const;\n\n return (\n <span\n style={outerStyle}\n onTouchStart={this.props.onTouchStart}\n onTouchMove={this.props.onTouchMove}\n onTouchEnd={this.props.onTouchEnd}\n onTouchCancel={this.props.onTouchCancel}\n >\n <svg\n fill=\"none\"\n width={cursorWidthPx}\n height={cursorHeightPx}\n viewBox={`0 0 ${cursorWidthPx} ${cursorHeightPx}`}\n >\n <filter\n id=\"math-input_cursor\"\n colorInterpolationFilters=\"sRGB\"\n filterUnits=\"userSpaceOnUse\"\n height={cursorHeightPx * 0.87} // ~40\n width={cursorWidthPx * 0.82} // ~36\n x=\"4\"\n y=\"0\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n />\n <feOffset dy=\"4\" />\n <feGaussianBlur stdDeviation=\"4\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.129412 0 0 0 0 0.141176 0 0 0 0 0.172549 0 0 0 0.08 0\"\n />\n <feBlend\n in2=\"BackgroundImageFix\"\n mode=\"normal\"\n result=\"effect1_dropShadow\"\n />\n <feBlend\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow\"\n mode=\"normal\"\n result=\"shape\"\n />\n </filter>\n <g filter=\"url(#math-input_cursor)\">\n <path\n d=\"m22 4-7.07 7.0284c-1.3988 1.3901-2.3515 3.1615-2.7376 5.09-.3861 1.9284-.1883 3.9274.5685 5.7441s2.0385 3.3694 3.6831 4.4619c1.6445 1.0925 3.5781 1.6756 5.556 1.6756s3.9115-.5831 5.556-1.6756c1.6446-1.0925 2.9263-2.6452 3.6831-4.4619s.9546-3.8157.5685-5.7441c-.3861-1.9285-1.3388-3.6999-2.7376-5.09z\"\n fill=\"#1865f2\"\n />\n </g>\n <path\n d=\"m14.9301 10.4841 7.0699-7.06989 7.0699 7.06989.0001.0001c1.3988 1.3984 2.3515 3.1802 2.7376 5.1201s.1883 3.9507-.5685 5.7782c-.7568 1.8274-2.0385 3.3894-3.6831 4.4883-1.6445 1.099-3.5781 1.6855-5.556 1.6855s-3.9115-.5865-5.556-1.6855c-1.6446-1.0989-2.9263-2.6609-3.6831-4.4883-.7568-1.8275-.9546-3.8383-.5685-5.7782s1.3388-3.7217 2.7376-5.1201z\"\n stroke=\"#fff\"\n strokeWidth=\"2\"\n />\n </svg>\n </span>\n );\n }\n}\n\nexport default CursorHandle;\n","/**\n * A gesture recognizer that detects 'drags', crudely defined as either scrolls\n * or touches that move a sufficient distance.\n */\n\n// The 'slop' factor, after which we consider the use to be dragging. The value\n// is taken from the Android SDK. It won't be robust to page zoom and the like,\n// but it should be good enough for our purposes.\nconst touchSlopPx = 8;\n\nclass DragListener {\n _scrollListener: () => void;\n _moveListener: (evt: TouchEvent) => void;\n _endAndCancelListener: (evt: TouchEvent) => void;\n\n constructor(onDrag, initialEvent) {\n // We detect drags in two ways. First, by listening for the window\n // scroll event (we consider any legitimate scroll to be a drag).\n this._scrollListener = () => {\n onDrag();\n };\n\n // And second, by listening for touch moves and tracking the each\n // finger's displacement. This allows us to track, e.g., when the user\n // scrolls within an individual view.\n const touchLocationsById = {};\n for (let i = 0; i < initialEvent.changedTouches.length; i++) {\n const touch = initialEvent.changedTouches[i];\n touchLocationsById[touch.identifier] = [\n touch.clientX,\n touch.clientY,\n ];\n }\n\n this._moveListener = (evt) => {\n for (let i = 0; i < evt.changedTouches.length; i++) {\n const touch = evt.changedTouches[i];\n const initialTouchLocation =\n touchLocationsById[touch.identifier];\n if (initialTouchLocation) {\n const touchLocation = [touch.clientX, touch.clientY];\n const dx = touchLocation[0] - initialTouchLocation[0];\n const dy = touchLocation[1] - initialTouchLocation[1];\n\n const squaredDist = dx * dx + dy * dy;\n const squaredTouchSlop = touchSlopPx * touchSlopPx;\n\n if (squaredDist > squaredTouchSlop) {\n onDrag();\n }\n }\n }\n };\n\n // Clean-up any terminated gestures, since some browsers reuse\n // identifiers.\n this._endAndCancelListener = (evt) => {\n for (let i = 0; i < evt.changedTouches.length; i++) {\n delete touchLocationsById[evt.changedTouches[i].identifier];\n }\n };\n }\n\n attach() {\n window.addEventListener(\"scroll\", this._scrollListener);\n window.addEventListener(\"touchmove\", this._moveListener);\n window.addEventListener(\"touchend\", this._endAndCancelListener);\n window.addEventListener(\"touchcancel\", this._endAndCancelListener);\n }\n\n detach() {\n window.removeEventListener(\"scroll\", this._scrollListener);\n window.removeEventListener(\"touchmove\", this._moveListener);\n window.removeEventListener(\"touchend\", this._endAndCancelListener);\n window.removeEventListener(\"touchcancel\", this._endAndCancelListener);\n }\n}\n\nexport default DragListener;\n","import MathQuill from \"mathquill\";\n\nimport {MathQuillInterface, MathFieldConfig} from \"./mathquill-types\";\n\n// We only need one MathQuill instance (referred to as MQ in the docs)\n// and that contains some MQ constants and the MathField constructor\nexport const mathQuillInstance = MathQuill.getInterface(\n 2,\n) as MathQuillInterface;\n\nfunction createBaseConfig(): MathFieldConfig {\n return {\n // LaTeX commands that, when typed, are immediately replaced by the\n // appropriate symbol. This does not include ln, log, or any of the\n // trig functions; those are always interpreted as commands.\n autoCommands: \"pi theta phi sqrt nthroot\",\n\n // Pop the cursor out of super/subscripts on arithmetic operators\n // or (in)equalities.\n charsThatBreakOutOfSupSub: \"+-*/=<>≠≤≥\",\n\n // Prevent excessive super/subscripts or fractions from being\n // created without operands, e.g. when somebody holds down a key\n supSubsRequireOperand: true,\n\n // The name of this option is somewhat misleading, as tabbing in\n // MathQuill breaks you out of a nested context (fraction/script)\n // if you're in one, but moves focus to the next input if you're\n // not. Spaces (with this option enabled) are just ignored in the\n // latter case.\n //\n // TODO(alex): In order to allow inputting mixed numbers, we will\n // have to accept spaces in certain cases. The desired behavior is\n // still to escape nested contexts if currently in one, but to\n // insert a space if not (we don't expect mixed numbers in nested\n // contexts). We should also limit to one consecutive space.\n spaceBehavesLikeTab: true,\n };\n}\n\n/**\n * Creates a new [MathField](http://docs.mathquill.com/en/latest/Api_Methods/#mqmathfieldhtml_element-config)\n * instance within the given `container`.\n *\n * An optional configuration callback can be provided to customize\n * the created MathField. A default configuration is passed to this\n * callback which can then be adjusted as needed. The configuration\n * returned from this callback is used to create the MathField.\n * This allows callers to do minimal configuration as only configs\n * that vary from the default need to be provided.\n */\nexport function createMathField(\n container: HTMLDivElement | HTMLSpanElement,\n configCallback?: (baseConfig: MathFieldConfig) => MathFieldConfig,\n) {\n const baseConfig = createBaseConfig();\n const config = configCallback ? configCallback(baseConfig) : baseConfig;\n\n return mathQuillInstance.MathField(container, config);\n}\n","import Key from \"../../data/keys\";\n\nexport interface MathQuillInterface {\n L: \"L\";\n R: \"R\";\n MathField: (\n mount: HTMLDivElement | HTMLSpanElement,\n config: MathFieldConfig,\n ) => MathFieldInterface;\n}\n\ntype MathQuillDir = \"L\" | \"R\";\n\nexport type MathFieldConfig = {\n spaceBehavesLikeTab?: boolean;\n leftRightIntoCmdGoes?: string;\n restrictMismatchedBrackets?: boolean;\n sumStartsWithNEquals?: boolean;\n supSubsRequireOperand?: boolean;\n charsThatBreakOutOfSupSub?: string;\n autoSubscriptNumerals?: boolean;\n autoCommands?: string;\n autoOperatorNames?: string;\n maxDepth?: number;\n substituteTextarea?: () => HTMLElement;\n handlers?: {\n edit?: (mathField: MathFieldInterface) => void;\n upOutOf?: (mathField: MathFieldInterface) => void;\n moveOutOf?: (dir: MathQuillDir, mathField: MathFieldInterface) => void;\n };\n};\n\nexport interface MathFieldInterface {\n // Puts the focus on the editable field.\n // http://docs.mathquill.com/en/latest/Api_Methods/#focus\n focus: () => MathFieldInterface;\n // Removes focus from the editable field.\n // http://docs.mathquill.com/en/latest/Api_Methods/#blur\n blur: () => MathFieldInterface;\n // Write LaTeX\n // https://docs.mathquill.com/en/latest/Api_Methods/#writelatex_string\n write: (input: string) => MathFieldInterface;\n // Enter a LaTeX command\n // https://docs.mathquill.com/en/latest/Api_Methods/#cmdlatex_string\n cmd: (input: string) => MathFieldInterface;\n // Simulates keystrokes given a string like \"Ctrl-Home Del\"\n // https://docs.mathquill.com/en/latest/Api_Methods/#keystrokekeys\n keystroke: (input: string) => MathFieldInterface;\n // Simulates typing text, one character at a time\n // https://docs.mathquill.com/en/latest/Api_Methods/#typedtexttext\n typedText: (input: string) => MathFieldInterface;\n // () => {}: Gets the contents as LaTeX\n // (string) => {}: Sets the contents as LaTeX\n // https://docs.mathquill.com/en/latest/Api_Methods/#latex\n latex: (input?: string) => string;\n // Moves the cursor to the end of the mathfield in the direction specified\n // https://docs.mathquill.com/en/latest/Api_Methods/#movetodirenddirection\n moveToDirEnd: (direction: \"L\" | \"R\") => void;\n // Selects the contents\n // https://docs.mathquill.com/en/latest/Api_Methods/#select\n select: () => void;\n // Clears the selection\n // https://docs.mathquill.com/en/latest/Api_Methods/#clearselection\n clearSelection: () => void;\n // Custom helper in our MathQuill fork\n // check to see if cursor is on right end\n cursorAtRightEnd: () => boolean;\n // Custom helper in our MathQuill fork\n // check to see if cursor is on left end\n cursorAtLeftEnd: () => boolean;\n // This isn't part of the MathQuill public API\n // I don't know what it is and it feels wrong using it\n __controller: any;\n}\n\nexport enum MathFieldActionType {\n WRITE = \"write\",\n CMD = \"cmd\",\n KEYSTROKE = \"keystroke\",\n MQ_END = 0,\n}\n\n// The MathQuill MathField Cursor\n// it's not part of the public API for MathQuill,\n// we reach into the internals to get it\nexport type MathFieldCursor = any;\n\nexport type MathFieldUpdaterCallback = (\n mathField: MathFieldInterface,\n key: Key,\n) => void;\n","import {CursorContext} from \"./cursor-contexts\";\nimport {mathQuillInstance} from \"./mathquill-instance\";\nimport {\n MathFieldActionType,\n MathFieldCursor,\n MathFieldInterface,\n} from \"./mathquill-types\";\n\nconst Numerals = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\nconst GreekLetters = [\"\\\\theta\", \"\\\\pi\"];\nconst Letters = [\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n];\n\n// We only consider numerals, variables, and Greek Letters to be proper\n// leaf nodes.\nconst ValidLeaves = [\n ...Numerals,\n ...GreekLetters,\n ...Letters.map((letter) => letter.toLowerCase()),\n ...Letters.map((letter) => letter.toUpperCase()),\n];\n\nexport function getCursor(mathField: MathFieldInterface): MathFieldCursor {\n return mathField.__controller.cursor;\n}\n\nexport function isFraction(node): boolean {\n return node.jQ && node.jQ.hasClass(\"mq-fraction\");\n}\n\nexport function isNumerator(node): boolean {\n return node.jQ && node.jQ.hasClass(\"mq-numerator\");\n}\n\nexport function isDenominator(node): boolean {\n return node.jQ && node.jQ.hasClass(\"mq-denominator\");\n}\n\nexport function isSubScript(node): boolean {\n // NOTE(charlie): MyScript has a structure whereby its superscripts seem\n // to be represented as a parent node with 'mq-sup-only' containing a\n // single child with 'mq-sup'.\n return (\n node.jQ &&\n (node.jQ.hasClass(\"mq-sub-only\") || node.jQ.hasClass(\"mq-sub\"))\n );\n}\n\nexport function isSuperScript(node): boolean {\n // NOTE(charlie): MyScript has a structure whereby its superscripts seem\n // to be represented as a parent node with 'mq-sup-only' containing a\n // single child with 'mq-sup'.\n return (\n node.jQ &&\n (node.jQ.hasClass(\"mq-sup-only\") || node.jQ.hasClass(\"mq-sup\"))\n );\n}\n\nexport function isParens(node): boolean {\n return node && node.ctrlSeq === \"\\\\left(\";\n}\n\nexport function isLeaf(node): boolean {\n return node && node.ctrlSeq && ValidLeaves.includes(node.ctrlSeq.trim());\n}\n\nexport function isSquareRoot(node): boolean {\n return (\n node.blocks &&\n node.blocks[0].jQ &&\n node.blocks[0].jQ.hasClass(\"mq-sqrt-stem\")\n );\n}\n\nexport function isNthRoot(node): boolean {\n return (\n node.blocks &&\n node.blocks[0].jQ &&\n node.blocks[0].jQ.hasClass(\"mq-nthroot\")\n );\n}\n\nexport function isNthRootIndex(node): boolean {\n return node.jQ && node.jQ.hasClass(\"mq-nthroot\");\n}\n\nexport function isInsideLogIndex(cursor: MathFieldCursor): boolean {\n const grandparent = cursor.parent.parent;\n\n if (grandparent && grandparent.jQ.hasClass(\"mq-supsub\")) {\n const command = maybeFindCommandBeforeParens(grandparent);\n\n if (command && command.name === \"\\\\log\") {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isInsideEmptyNode(cursor: MathFieldCursor): boolean {\n return (\n cursor[mathQuillInstance.L] === MathFieldActionType.MQ_END &&\n cursor[mathQuillInstance.R] === MathFieldActionType.MQ_END\n );\n}\n\nexport function selectNode(node, cursor) {\n cursor.insLeftOf(node);\n cursor.startSelection();\n cursor.insRightOf(node);\n cursor.select();\n cursor.endSelection();\n}\n\n/**\n * Return the start node, end node, and full name of the command of which\n * the initial node is a part, or `null` if the node is not part of a\n * command.\n *\n * @param {node} initialNode - the node to included as part of the command\n * @returns {null|object} - `null` or an object containing the start node\n * (`startNode`), end node (`endNode`), and full\n * name (`name`) of the command\n */\nexport function maybeFindCommand(initialNode) {\n if (!initialNode) {\n return null;\n }\n\n // MathQuill stores commands as separate characters so that\n // users can delete commands one character at a time. We iterate over\n // the nodes from right to left until we hit a sequence starting with a\n // '\\\\', which signifies the start of a command; then we iterate from\n // left to right until we hit a '\\\\left(', which signifies the end of a\n // command. If we encounter any character that doesn't belong in a\n // command, we return null. We match a single character at a time.\n // Ex) ['\\\\l', 'o', 'g ', '\\\\left(', ...]\n const commandCharRegex = /^[a-z]$/;\n const commandStartRegex = /^\\\\[a-z]$/;\n const commandEndSeq = \"\\\\left(\";\n\n // Note: We allowlist the set of valid commands, since relying solely on\n // a command being prefixed with a backslash leads to undesired\n // behavior. For example, Greek symbols, left parentheses, and square\n // roots all get treated as commands.\n const validCommands = [\"\\\\log\", \"\\\\ln\", \"\\\\cos\", \"\\\\sin\", \"\\\\tan\"];\n\n let name = \"\";\n let startNode;\n let endNode;\n\n // Collect the portion of the command from the current node, leftwards\n // until the start of the command.\n let node = initialNode;\n while (node !== 0) {\n const ctrlSeq = node.ctrlSeq.trim();\n if (commandCharRegex.test(ctrlSeq)) {\n name = ctrlSeq + name;\n } else if (commandStartRegex.test(ctrlSeq)) {\n name = ctrlSeq + name;\n startNode = node;\n break;\n } else {\n break;\n }\n\n node = node[mathQuillInstance.L];\n }\n\n // If we hit the start of a command, then grab the rest of it by\n // iterating rightwards to compute the full name of the command, along\n // with its terminal node.\n if (startNode) {\n // Next, iterate from the start to the right.\n node = initialNode[mathQuillInstance.R];\n while (node !== 0) {\n const ctrlSeq = node.ctrlSeq.trim();\n if (commandCharRegex.test(ctrlSeq)) {\n // If we have a single character, add it to the command\n // name.\n name = name + ctrlSeq;\n } else if (ctrlSeq === commandEndSeq) {\n // If we hit the command end delimiter (the left\n // parentheses surrounding its arguments), stop.\n endNode = node;\n break;\n }\n\n node = node[mathQuillInstance.R];\n }\n if (validCommands.includes(name)) {\n return {name, startNode, endNode};\n } else {\n return null;\n }\n } else {\n return null;\n }\n}\n\n/**\n * Return the start node, end node, and full name of the command to the left\n * of `\\\\left(`, or `null` if there is no command.\n *\n * @param {node} leftParenNode - node where .ctrlSeq == `\\\\left(`\n * @returns {null|object} - `null` or an object containing the start node\n * (`startNode`), end node (`endNode`), and full\n * name (`name`) of the command\n */\nexport function maybeFindCommandBeforeParens(leftParenNode) {\n return maybeFindCommand(leftParenNode[mathQuillInstance.L]);\n}\n\nexport function contextForCursor(cursor: MathFieldCursor): CursorContext {\n // First, try to find any fraction to the right, unimpeded.\n let visitor = cursor;\n while (visitor[mathQuillInstance.R] !== MathFieldActionType.MQ_END) {\n if (isFraction(visitor[mathQuillInstance.R])) {\n return CursorContext.BEFORE_FRACTION;\n } else if (!isLeaf(visitor[mathQuillInstance.R])) {\n break;\n }\n visitor = visitor[mathQuillInstance.R];\n }\n\n // If that didn't work, check if the parent or grandparent is a special\n // context, so that we can jump outwards.\n if (isParens(cursor.parent && cursor.parent.parent)) {\n return CursorContext.IN_PARENS;\n } else if (isNumerator(cursor.parent)) {\n return CursorContext.IN_NUMERATOR;\n } else if (isDenominator(cursor.parent)) {\n return CursorContext.IN_DENOMINATOR;\n } else if (isSubScript(cursor.parent)) {\n return CursorContext.IN_SUB_SCRIPT;\n } else if (isSuperScript(cursor.parent)) {\n return CursorContext.IN_SUPER_SCRIPT;\n } else {\n return CursorContext.NONE;\n }\n}\n","import {\n isFraction,\n isSquareRoot,\n isNthRoot,\n isNthRootIndex,\n isInsideLogIndex,\n isInsideEmptyNode,\n selectNode,\n getCursor,\n maybeFindCommandBeforeParens,\n} from \"../input/mathquill-helpers\";\nimport {mathQuillInstance} from \"../input/mathquill-instance\";\nimport {\n MathFieldActionType,\n MathFieldInterface,\n MathFieldCursor,\n} from \"../input/mathquill-types\";\n\nfunction handleBackspaceInNthRoot(\n mathField: MathFieldInterface,\n cursor: MathFieldCursor,\n) {\n const isAtLeftEnd =\n cursor[mathQuillInstance.L] === MathFieldActionType.MQ_END;\n\n const isRootEmpty = isInsideEmptyNode(cursor.parent.parent.blocks[0].ends);\n\n if (isAtLeftEnd) {\n selectNode(cursor.parent.parent, cursor);\n\n if (isRootEmpty) {\n mathField.keystroke(\"Backspace\");\n }\n } else {\n mathField.keystroke(\"Backspace\");\n }\n}\n\nfunction handleBackspaceInRootIndex(\n mathField: MathFieldInterface,\n cursor: MathFieldCursor,\n) {\n if (isInsideEmptyNode(cursor)) {\n // When deleting the index in a nthroot, we change from the nthroot\n // to a sqrt, e.g. \\sqrt[|]{35x-5} => |\\sqrt{35x-5}. If there's no\n // content under the root, then we delete the whole thing.\n\n const grandparent = cursor.parent.parent;\n const latex = grandparent.latex();\n const reinsertionPoint = grandparent[mathQuillInstance.L];\n\n selectNode(grandparent, cursor);\n\n const rootIsEmpty = grandparent.blocks[1].jQ.text() === \"\";\n\n if (rootIsEmpty) {\n // If there is not content under the root then simply delete\n // the whole thing.\n mathField.keystroke(\"Backspace\");\n } else {\n // Replace the nthroot with a sqrt if there was content under\n // the root.\n\n // Start by deleting the selection.\n mathField.keystroke(\"Backspace\");\n\n // Replace the nth-root with a sqrt.\n mathField.write(latex.replace(/^\\\\sqrt\\[\\]/, \"\\\\sqrt\"));\n\n // Adjust the cursor to be to the left the sqrt.\n if (reinsertionPoint === MathFieldActionType.MQ_END) {\n mathField.moveToDirEnd(mathQuillInstance.L);\n } else {\n cursor.insRightOf(reinsertionPoint);\n }\n }\n } else {\n if (cursor[mathQuillInstance.L] !== MathFieldActionType.MQ_END) {\n // If the cursor is not at the leftmost position inside the\n // root's index, delete a character.\n mathField.keystroke(\"Backspace\");\n } else {\n // TODO(kevinb) verify that we want this behavior after testing\n // Do nothing because we haven't completely deleted the\n // index of the radical.\n }\n }\n}\n\nfunction handleBackspaceInLogIndex(\n mathField: MathFieldInterface,\n cursor: MathFieldCursor,\n) {\n if (isInsideEmptyNode(cursor)) {\n const grandparent = cursor.parent.parent;\n const command = maybeFindCommandBeforeParens(grandparent);\n\n cursor.insLeftOf(command?.startNode);\n cursor.startSelection();\n\n if (grandparent[mathQuillInstance.R] !== MathFieldActionType.MQ_END) {\n cursor.insRightOf(grandparent[mathQuillInstance.R]);\n } else {\n cursor.insRightOf(grandparent);\n }\n\n cursor.select();\n cursor.endSelection();\n\n const isLogBodyEmpty =\n grandparent[mathQuillInstance.R].contentjQ.text() === \"\";\n\n if (isLogBodyEmpty) {\n // If there's no content inside the log's parens then delete the\n // whole thing.\n mathField.keystroke(\"Backspace\");\n }\n } else {\n mathField.keystroke(\"Backspace\");\n }\n}\n\nfunction handleBackspaceOutsideParens(cursor: MathFieldCursor) {\n // In this case the node with '\\\\left(' for its ctrlSeq\n // is the parent of the expression contained within the\n // parentheses.\n //\n // Handle selecting an expression before deleting:\n // (x+1)| => |(x+1)|\n // \\log(x+1)| => |\\log(x+1)|\n\n const leftNode = cursor[mathQuillInstance.L];\n const rightNode = cursor[mathQuillInstance.R];\n const command = maybeFindCommandBeforeParens(leftNode);\n\n if (command && command.startNode) {\n // There's a command before the parens so we select it as well as\n // the parens.\n cursor.insLeftOf(command.startNode);\n cursor.startSelection();\n if (rightNode === MathFieldActionType.MQ_END) {\n cursor.insAtRightEnd(cursor.parent);\n } else {\n cursor.insLeftOf(rightNode);\n }\n cursor.select();\n cursor.endSelection();\n } else {\n cursor.startSelection();\n cursor.insLeftOf(leftNode); // left of \\\\left(\n cursor.select();\n cursor.endSelection();\n }\n}\n\nfunction handleBackspaceInsideParens(\n mathField: MathFieldInterface,\n cursor: MathFieldCursor,\n) {\n // Handle situations when the cursor is inside parens or a\n // command that uses parens, e.g. \\log() or \\tan()\n //\n // MathQuill represents log(x+1) in roughly the following way\n // [l, o, g, \\\\left[parent:[x, +, 1]]]\n //\n // If the cursor is inside the parentheses it's next to one of:\n // x, +, or 1. This makes sub_sub_expr its parent and sub_expr\n // it's parent.\n //\n // Interestingly parent doesn't have any nodes to the left or\n // right of it (even though the corresponding DOM node has\n // ( and ) characters on either side.\n //\n // The grandparent's ctrlSeq is `\\\\left(`. The `\\\\right)` isn't\n // stored anywhere. NOTE(kevinb): I believe this is because\n // MathQuill knows what the close paren should be and does the\n // right thing at render time.\n //\n // This conditional branch handles the following cases:\n // - \\log(x+1|) => \\log(x+|)\n // - \\log(|x+1) => |\\log(x+1)|\n // - \\log(|) => |\n\n if (cursor[mathQuillInstance.L] !== MathFieldActionType.MQ_END) {\n // This command contains math and there's some math to\n // the left of the cursor that we should delete normally\n // before doing anything special.\n mathField.keystroke(\"Backspace\");\n return;\n }\n\n const grandparent = cursor.parent.parent;\n\n // If the cursors is inside the parens at the start but the command\n // has a subscript as is the case in log_n then move the cursor into\n // the subscript, e.g. \\log_{5}(|x+1) => \\log_{5|}(x+1)\n\n if (grandparent[mathQuillInstance.L].sub) {\n // if there is a subscript\n if (grandparent[mathQuillInstance.L].sub.jQ.text()) {\n // and it contains text\n // move the cursor to the right end of the subscript\n cursor.insAtRightEnd(grandparent[mathQuillInstance.L].sub);\n return;\n }\n }\n\n // Determine if the parens are empty before we modify the\n // cursor's position.\n const isEmpty = isInsideEmptyNode(cursor);\n\n // Insert the cursor to the left of the command if there is one\n // or before the '\\\\left(` if there isn't\n const command = maybeFindCommandBeforeParens(grandparent);\n\n cursor.insLeftOf((command && command.startNode) || grandparent);\n cursor.startSelection();\n cursor.insRightOf(grandparent);\n cursor.select();\n cursor.endSelection();\n\n // Delete the selection, but only if the parens were empty to\n // begin with.\n if (isEmpty) {\n mathField.keystroke(\"Backspace\");\n }\n}\n\nfunction handleBackspaceAfterLigaturedSymbol(mathField: MathFieldInterface) {\n mathField.keystroke(\"Backspace\");\n mathField.keystroke(\"Backspace\");\n}\n\n/**\n * Selects and deletes part of the expression based on the cursor location.\n * See inline comments for precise behavior of different cases.\n */\nfunction handleBackspace(mathField: MathFieldInterface) {\n const cursor = getCursor(mathField);\n if (!cursor.selection) {\n const parent = cursor.parent;\n const grandparent = parent.parent;\n const leftNode = cursor[mathQuillInstance.L];\n\n if (isFraction(leftNode)) {\n selectNode(leftNode, cursor);\n } else if (isSquareRoot(leftNode)) {\n selectNode(leftNode, cursor);\n } else if (isNthRoot(leftNode)) {\n selectNode(leftNode, cursor);\n } else if (isNthRootIndex(parent)) {\n handleBackspaceInRootIndex(mathField, cursor);\n } else if (leftNode.ctrlSeq === \"\\\\left(\") {\n handleBackspaceOutsideParens(cursor);\n } else if (grandparent.ctrlSeq === \"\\\\left(\") {\n handleBackspaceInsideParens(mathField, cursor);\n } else if (isInsideLogIndex(cursor)) {\n handleBackspaceInLogIndex(mathField, cursor);\n } else if (\n leftNode.ctrlSeq === \"\\\\ge \" ||\n leftNode.ctrlSeq === \"\\\\le \"\n ) {\n handleBackspaceAfterLigaturedSymbol(mathField);\n } else if (\n isNthRoot(grandparent) &&\n leftNode === MathFieldActionType.MQ_END\n ) {\n handleBackspaceInNthRoot(mathField, cursor);\n } else {\n mathField.keystroke(\"Backspace\");\n }\n } else {\n mathField.keystroke(\"Backspace\");\n }\n}\n\nexport default handleBackspace;\n","/**\n * Constants that are shared between multiple files.\n */\n\nexport enum KeypadType {\n FRACTION = \"FRACTION\",\n EXPRESSION = \"EXPRESSION\",\n}\n\nexport const KeyTypes = [\n \"EMPTY\",\n // For numerals, variables, and any other characters that themselves\n // compose 'values'.\n \"VALUE\",\n // For buttons that insert or adjust math in an input.\n \"OPERATOR\",\n // For buttons that move the cursor in an input (including via\n // deletion).\n \"INPUT_NAVIGATION\",\n // For buttons that modify the broader keypad state (e.g., by changing\n // the visible pane).\n \"KEYPAD_NAVIGATION\",\n // For buttons that house multiple buttons and have no action\n // themselves.\n \"MANY\",\n // For the echo animation that appears on press.\n \"ECHO\",\n];\nexport type KeyType = typeof KeyTypes[number];\n\nexport enum DeviceOrientation {\n LANDSCAPE = \"LANDSCAPE\",\n PORTRAIT = \"PORTRAIT\",\n}\n\nexport enum DeviceType {\n PHONE = \"PHONE\",\n TABLET = \"TABLET\",\n}\n\nexport enum LayoutMode {\n FULLSCREEN = \"FULLSCREEN\",\n COMPACT = \"COMPACT\",\n}\n\nexport enum BorderDirection {\n LEFT = \"LEFT\",\n BOTTOM = \"BOTTOM\",\n}\n\nexport const BorderStyles: {\n [style: string]: ReadonlyArray<BorderDirection>;\n} = {\n LEFT: [BorderDirection.LEFT],\n BOTTOM: [BorderDirection.BOTTOM],\n ALL: [BorderDirection.LEFT, BorderDirection.BOTTOM],\n NONE: [],\n};\n\nexport enum IconType {\n MATH = \"MATH\",\n SVG = \"SVG\",\n TEXT = \"TEXT\",\n}\n\nexport enum DecimalSeparator {\n COMMA = \"COMMA\",\n PERIOD = \"PERIOD\",\n}\n\nexport enum EchoAnimationType {\n SLIDE_AND_FADE = \"SLIDE_AND_FADE\",\n FADE_ONLY = \"FADE_ONLY\",\n LONG_FADE_ONLY = \"LONG_FADE_ONLY\",\n}\n","import {getDecimalSeparator} from \"@khanacademy/wonder-blocks-i18n\";\n\nimport {DecimalSeparator} from \"./enums\";\n\n// NOTES(kevinb):\n// - In order to get the correct decimal separator for the current locale,\n// the locale must bet set using `setLocale(kaLocale)` which can be\n// imported from wonder-blocks-i18n.\n// - Some languages/locales use different decimal separators than the ones\n// listed here. Much of the Arab world uses U+066C.\nexport const decimalSeparator: string =\n getDecimalSeparator() === \",\"\n ? DecimalSeparator.COMMA\n : DecimalSeparator.PERIOD;\n","import Key from \"../../data/keys\";\nimport {\n maybeFindCommand,\n maybeFindCommandBeforeParens,\n getCursor,\n} from \"../input/mathquill-helpers\";\nimport {mathQuillInstance} from \"../input/mathquill-instance\";\nimport {\n MathFieldInterface,\n MathFieldActionType,\n MathFieldCursor,\n} from \"../input/mathquill-types\";\n\nfunction handleLeftArrow(\n mathField: MathFieldInterface,\n cursor: MathFieldCursor,\n) {\n // If we're inside a function, and just after the left parentheses, we\n // need to skip the entire function name, rather than move the cursor\n // inside of it. For example, when hitting left from within the\n // parentheses in `cos()`, we want to place the cursor to the left of\n // the entire expression, rather than between the `s` and the left\n // parenthesis.\n // From the cursor's perspective, this requires that our left node is\n // the ActionType.MQ_END node, that our grandparent is the left parenthesis, and\n // the nodes to the left of our grandparent comprise a valid function\n // name.\n if (cursor[mathQuillInstance.L] === MathFieldActionType.MQ_END) {\n const parent = cursor.parent;\n const grandparent = parent.parent;\n if (grandparent.ctrlSeq === \"\\\\left(\") {\n const command = maybeFindCommandBeforeParens(grandparent);\n if (command) {\n cursor.insLeftOf(command.startNode);\n return;\n }\n }\n }\n\n // Otherwise, we default to the standard MathQull left behavior.\n mathField.keystroke(\"Left\");\n}\n\nfunction handleRightArrow(\n mathField: MathFieldInterface,\n cursor: MathFieldCursor,\n) {\n const command = maybeFindCommand(cursor[mathQuillInstance.R]);\n if (command) {\n // Similarly, if a function is to our right, then we need to place\n // the cursor at the start of its parenthetical content, which is\n // done by putting it to the left of ites parentheses and then\n // moving right once.\n cursor.insLeftOf(command.endNode);\n mathField.keystroke(\"Right\");\n } else {\n // Otherwise, we default to the standard MathQull right behavior.\n mathField.keystroke(\"Right\");\n }\n}\n\nexport default function handleArrow(mathField: MathFieldInterface, key: Key) {\n const cursor = getCursor(mathField);\n\n if (key === \"LEFT\") {\n handleLeftArrow(mathField, cursor);\n } else if (key === \"RIGHT\") {\n handleRightArrow(mathField, cursor);\n }\n}\n","import Key from \"../../data/keys\";\nimport {getCursor} from \"../input/mathquill-helpers\";\nimport {mathQuillInstance} from \"../input/mathquill-instance\";\nimport {\n MathFieldInterface,\n MathFieldActionType,\n} from \"../input/mathquill-types\";\n\nconst ArithmeticOperators = [\"+\", \"-\", \"\\\\cdot\", \"\\\\times\", \"\\\\div\"];\nconst EqualityOperators = [\"=\", \"\\\\neq\", \"<\", \"\\\\leq\", \">\", \"\\\\geq\"];\n\nexport default function handleExponent(\n mathField: MathFieldInterface,\n key: Key,\n) {\n const cursor = getCursor(mathField);\n // If there's an invalid operator preceding the cursor (anything that\n // knowingly cannot be raised to a power), add an empty set of\n // parentheses and apply the exponent to that.\n const invalidPrefixes = [...ArithmeticOperators, ...EqualityOperators];\n\n const precedingNode = cursor[mathQuillInstance.L];\n const shouldPrefixWithParens =\n precedingNode === MathFieldActionType.MQ_END ||\n invalidPrefixes.includes(precedingNode.ctrlSeq.trim());\n if (shouldPrefixWithParens) {\n mathField.write(\"\\\\left(\\\\right)\");\n }\n\n // Insert the appropriate exponent operator.\n switch (key) {\n case \"EXP\":\n mathField.cmd(\"^\");\n break;\n\n case \"EXP_2\":\n case \"EXP_3\":\n mathField.write(`^${key === \"EXP_2\" ? 2 : 3}`);\n\n // If we enter a square or a cube, we should leave the cursor\n // within the newly inserted parens, if they exist. This takes\n // exactly four left strokes, since the cursor by default would\n // end up to the right of the exponent.\n if (shouldPrefixWithParens) {\n mathField.keystroke(\"Left\");\n mathField.keystroke(\"Left\");\n mathField.keystroke(\"Left\");\n mathField.keystroke(\"Left\");\n }\n break;\n\n default:\n throw new Error(`Invalid exponent key: ${key}`);\n }\n}\n","import Key from \"../../data/keys\";\nimport {CursorContext} from \"../input/cursor-contexts\";\nimport {\n isFraction,\n isParens,\n contextForCursor,\n getCursor,\n} from \"../input/mathquill-helpers\";\nimport {mathQuillInstance} from \"../input/mathquill-instance\";\nimport {\n MathFieldInterface,\n MathFieldActionType,\n} from \"../input/mathquill-types\";\n\nconst KeysForJumpContext = {\n [CursorContext.IN_PARENS]: \"JUMP_OUT_PARENTHESES\",\n [CursorContext.IN_SUPER_SCRIPT]: \"JUMP_OUT_EXPONENT\",\n [CursorContext.IN_SUB_SCRIPT]: \"JUMP_OUT_BASE\",\n [CursorContext.BEFORE_FRACTION]: \"JUMP_INTO_NUMERATOR\",\n [CursorContext.IN_NUMERATOR]: \"JUMP_OUT_NUMERATOR\",\n [CursorContext.IN_DENOMINATOR]: \"JUMP_OUT_DENOMINATOR\",\n};\n\n/**\n * Advances the cursor to the next logical position.\n */\nfunction handleJumpOut(mathField: MathFieldInterface, key: Key): void {\n const cursor = getCursor(mathField);\n const context = contextForCursor(cursor);\n\n // Validate that the current cursor context matches the key's intent.\n if (KeysForJumpContext[context] !== key) {\n // If we don't have a valid cursor context, yet the user was able\n // to trigger a jump-out key, that's a broken invariant. Rather\n // than throw an error (which would kick the user out of the\n // exercise), we do nothing, as a fallback strategy. The user can\n // still move the cursor manually.\n return;\n }\n\n switch (context) {\n case CursorContext.IN_PARENS:\n // Insert at the end of the parentheses, and then navigate right\n // once more to get 'beyond' the parentheses.\n cursor.insRightOf(cursor.parent.parent);\n break;\n\n case CursorContext.BEFORE_FRACTION:\n // Find the nearest fraction to the right of the cursor.\n let fractionNode;\n let visitor = cursor;\n while (\n visitor[mathQuillInstance.R] !== MathFieldActionType.MQ_END\n ) {\n if (isFraction(visitor[mathQuillInstance.R])) {\n fractionNode = visitor[mathQuillInstance.R];\n }\n visitor = visitor[mathQuillInstance.R];\n }\n\n // Jump into it!\n cursor.insLeftOf(fractionNode);\n mathField.keystroke(\"Right\");\n break;\n\n case CursorContext.IN_NUMERATOR:\n // HACK(charlie): I can't find a better way to do this. The goal\n // is to place the cursor at the start of the matching\n // denominator. So, we identify the appropriate node, and\n // continue rightwards until we find ourselves inside of it.\n // It's possible that there are cases in which we don't reach\n // the denominator, though I can't think of any.\n const siblingDenominator = cursor.parent.parent.blocks[1];\n while (cursor.parent !== siblingDenominator) {\n mathField.keystroke(\"Right\");\n }\n break;\n\n case CursorContext.IN_DENOMINATOR:\n cursor.insRightOf(cursor.parent.parent);\n break;\n\n case CursorContext.IN_SUB_SCRIPT:\n // Insert just beyond the superscript.\n cursor.insRightOf(cursor.parent.parent);\n\n // Navigate right once more, if we're right before parens. This\n // is to handle the standard case in which the subscript is the\n // base of a custom log.\n if (isParens(cursor[mathQuillInstance.R])) {\n mathField.keystroke(\"Right\");\n }\n break;\n\n case CursorContext.IN_SUPER_SCRIPT:\n // Insert just beyond the superscript.\n cursor.insRightOf(cursor.parent.parent);\n break;\n\n default:\n throw new Error(\n `Attempted to 'Jump Out' from node, but found no ` +\n `appropriate cursor context: ${context}`,\n );\n }\n}\n\nexport default handleJumpOut;\n","import Key from \"../../data/keys\";\nimport {DecimalSeparator} from \"../../enums\";\nimport {decimalSeparator} from \"../../utils\";\nimport {mathQuillInstance} from \"../input/mathquill-instance\";\nimport {\n MathFieldInterface,\n MathFieldUpdaterCallback,\n} from \"../input/mathquill-types\";\n\nimport handleArrow from \"./handle-arrow\";\nimport handleExponent from \"./handle-exponent\";\nimport handleJumpOut from \"./handle-jump-out\";\n\nenum ActionType {\n WRITE = \"write\",\n CMD = \"cmd\",\n KEYSTROKE = \"keystroke\",\n MQ_END = 0,\n}\n\nconst decimalSymbol = decimalSeparator === DecimalSeparator.COMMA ? \",\" : \".\";\n\nfunction buildGenericCallback(\n str: string,\n type: ActionType = ActionType.WRITE,\n): MathFieldUpdaterCallback {\n return function (mathQuill: MathFieldInterface) {\n switch (type) {\n case ActionType.WRITE: {\n mathQuill.write(str);\n return;\n }\n case ActionType.CMD: {\n mathQuill.cmd(str);\n return;\n }\n case ActionType.KEYSTROKE: {\n mathQuill.keystroke(str);\n return;\n }\n }\n };\n}\n\nfunction buildNormalFunctionCallback(command: string) {\n return function (mathField: MathFieldInterface) {\n mathField.write(`\\\\${command}\\\\left(\\\\right)`);\n mathField.keystroke(\"Left\");\n };\n}\n\nconst keyToMathquillMap: Record<Key, MathFieldUpdaterCallback> = {\n EXP: handleExponent,\n EXP_2: handleExponent,\n EXP_3: handleExponent,\n\n JUMP_OUT_PARENTHESES: handleJumpOut,\n JUMP_OUT_EXPONENT: handleJumpOut,\n JUMP_OUT_BASE: handleJumpOut,\n JUMP_INTO_NUMERATOR: handleJumpOut,\n JUMP_OUT_NUMERATOR: handleJumpOut,\n JUMP_OUT_DENOMINATOR: handleJumpOut,\n\n LEFT: handleArrow,\n RIGHT: handleArrow,\n\n LOG: buildNormalFunctionCallback(\"log\"),\n LN: buildNormalFunctionCallback(\"ln\"),\n SIN: buildNormalFunctionCallback(\"sin\"),\n COS: buildNormalFunctionCallback(\"cos\"),\n TAN: buildNormalFunctionCallback(\"tan\"),\n\n CDOT: buildGenericCallback(\"\\\\cdot\"),\n DECIMAL: buildGenericCallback(decimalSymbol),\n DIVIDE: buildGenericCallback(\"\\\\div\"),\n EQUAL: buildGenericCallback(\"=\"),\n GEQ: buildGenericCallback(\"\\\\geq\"),\n GT: buildGenericCallback(\">\"),\n LEQ: buildGenericCallback(\"\\\\leq\"),\n LT: buildGenericCallback(\"<\"),\n MINUS: buildGenericCallback(\"-\"),\n NEGATIVE: buildGenericCallback(\"-\"),\n NEQ: buildGenericCallback(\"\\\\neq\"),\n PERCENT: buildGenericCallback(\"%\"),\n PERIOD: buildGenericCallback(\".\"),\n PLUS: buildGenericCallback(\"+\"),\n TIMES: buildGenericCallback(\"\\\\times\"),\n\n // The `FRAC_EXCLUSIVE` variant is handled manually, since we may need to do\n // some additional navigation depending on the cursor position.\n FRAC_INCLUSIVE: buildGenericCallback(\"/\", ActionType.CMD),\n FRAC: buildGenericCallback(\"\\\\frac\", ActionType.CMD),\n LEFT_PAREN: buildGenericCallback(\"(\", ActionType.CMD),\n RIGHT_PAREN: buildGenericCallback(\")\", ActionType.CMD),\n SQRT: buildGenericCallback(\"sqrt\", ActionType.CMD),\n PHI: buildGenericCallback(\"\\\\phi\", ActionType.CMD),\n PI: buildGenericCallback(\"pi\", ActionType.CMD),\n THETA: buildGenericCallback(\"theta\", ActionType.CMD),\n RADICAL: buildGenericCallback(\"nthroot\", ActionType.CMD),\n\n BACKSPACE: buildGenericCallback(\"Backspace\", ActionType.KEYSTROKE),\n UP: buildGenericCallback(\"Up\", ActionType.KEYSTROKE),\n DOWN: buildGenericCallback(\"Down\", ActionType.KEYSTROKE),\n\n CUBE_ROOT: (mathQuill) => {\n mathQuill.write(\"\\\\sqrt[3]{}\");\n mathQuill.keystroke(\"Left\"); // under the root\n },\n\n FRAC_EXCLUSIVE: (mathQuill) => {\n const cursor = mathQuill.__controller.cursor;\n // If there's nothing to the left of the cursor, then we want to\n // leave the cursor to the left of the fraction after creating it.\n const shouldNavigateLeft =\n cursor[mathQuillInstance.L] === ActionType.MQ_END;\n mathQuill.cmd(\"\\\\frac\");\n if (shouldNavigateLeft) {\n mathQuill.keystroke(\"Left\");\n }\n },\n\n LOG_B: (mathQuill) => {\n mathQuill.typedText(\"log_\");\n mathQuill.keystroke(\"Right\");\n mathQuill.typedText(\"(\");\n mathQuill.keystroke(\"Left\");\n mathQuill.keystroke(\"Left\");\n },\n\n LOG_N: (mathQuill) => {\n mathQuill.write(\"log_{ }\\\\left(\\\\right)\");\n mathQuill.keystroke(\"Left\"); // into parentheses\n mathQuill.keystroke(\"Left\"); // out of parentheses\n mathQuill.keystroke(\"Left\"); // into index\n },\n\n NTHROOT3: (mathQuill) => {\n mathQuill.typedText(\"nthroot3\");\n mathQuill.keystroke(\"Right\");\n },\n\n POW: (mathQuill) => {\n const contents = mathQuill.latex();\n mathQuill.typedText(\"^\");\n\n // If the input hasn't changed (for example, if we're\n // attempting to add an exponent on an empty input or an empty\n // denominator), insert our own \"a^b\"\n if (mathQuill.latex() === contents) {\n mathQuill.typedText(\"a^b\");\n }\n },\n\n // These need to be overwritten by the consumer\n // if they're going to be used\n DISMISS: () => {},\n NOOP: () => {},\n MANY: () => {},\n\n NUM_0: buildGenericCallback(\"0\"),\n NUM_1: buildGenericCallback(\"1\"),\n NUM_2: buildGenericCallback(\"2\"),\n NUM_3: buildGenericCallback(\"3\"),\n NUM_4: buildGenericCallback(\"4\"),\n NUM_5: buildGenericCallback(\"5\"),\n NUM_6: buildGenericCallback(\"6\"),\n NUM_7: buildGenericCallback(\"7\"),\n NUM_8: buildGenericCallback(\"8\"),\n NUM_9: buildGenericCallback(\"9\"),\n a: buildGenericCallback(\"a\"),\n b: buildGenericCallback(\"b\"),\n c: buildGenericCallback(\"c\"),\n d: buildGenericCallback(\"d\"),\n e: buildGenericCallback(\"e\"),\n f: buildGenericCallback(\"f\"),\n g: buildGenericCallback(\"g\"),\n h: buildGenericCallback(\"h\"),\n i: buildGenericCallback(\"i\"),\n j: buildGenericCallback(\"j\"),\n k: buildGenericCallback(\"k\"),\n l: buildGenericCallback(\"l\"),\n m: buildGenericCallback(\"m\"),\n n: buildGenericCallback(\"n\"),\n o: buildGenericCallback(\"o\"),\n p: buildGenericCallback(\"p\"),\n q: buildGenericCallback(\"q\"),\n r: buildGenericCallback(\"r\"),\n s: buildGenericCallback(\"s\"),\n t: buildGenericCallback(\"t\"),\n u: buildGenericCallback(\"u\"),\n v: buildGenericCallback(\"v\"),\n w: buildGenericCallback(\"w\"),\n x: buildGenericCallback(\"x\"),\n y: buildGenericCallback(\"y\"),\n z: buildGenericCallback(\"z\"),\n A: buildGenericCallback(\"A\"),\n B: buildGenericCallback(\"B\"),\n C: buildGenericCallback(\"C\"),\n D: buildGenericCallback(\"D\"),\n E: buildGenericCallback(\"E\"),\n F: buildGenericCallback(\"F\"),\n G: buildGenericCallback(\"G\"),\n H: buildGenericCallback(\"H\"),\n I: buildGenericCallback(\"I\"),\n J: buildGenericCallback(\"J\"),\n K: buildGenericCallback(\"K\"),\n L: buildGenericCallback(\"L\"),\n M: buildGenericCallback(\"M\"),\n N: buildGenericCallback(\"N\"),\n O: buildGenericCallback(\"O\"),\n P: buildGenericCallback(\"P\"),\n Q: buildGenericCallback(\"Q\"),\n R: buildGenericCallback(\"R\"),\n S: buildGenericCallback(\"S\"),\n T: buildGenericCallback(\"T\"),\n U: buildGenericCallback(\"U\"),\n V: buildGenericCallback(\"V\"),\n W: buildGenericCallback(\"W\"),\n X: buildGenericCallback(\"X\"),\n Y: buildGenericCallback(\"Y\"),\n Z: buildGenericCallback(\"Z\"),\n};\n\nexport default keyToMathquillMap;\n","// Notes about MathQuill\n//\n// MathQuill's stores its layout as nested linked lists. Each node in the\n// list has MQ.L '-1' and MQ.R '1' properties that define links to\n// the left and right nodes respectively. They also have\n//\n// ctrlSeq: contains the latex code snippet that defines that node.\n// jQ: jQuery object for the DOM node(s) for this MathQuill node.\n// ends: pointers to the nodes at the ends of the container.\n// parent: parent node.\n// blocks: an array containing one or more nodes that make up the node.\n// sub?: subscript node if there is one as is the case in log_n\n//\n// All of the code below is super fragile. Please be especially careful\n// when upgrading MathQuill.\n\nimport $ from \"jquery\";\n\nimport Key from \"../../data/keys\";\nimport {Cursor} from \"../../types\";\nimport handleBackspace from \"../key-handlers/handle-backspace\";\nimport keyTranslator from \"../key-handlers/key-translator\";\n\nimport {\n getCursor,\n contextForCursor,\n maybeFindCommand,\n} from \"./mathquill-helpers\";\nimport {createMathField, mathQuillInstance} from \"./mathquill-instance\";\nimport {\n MathFieldInterface,\n MathFieldCursor,\n MathFieldUpdaterCallback,\n} from \"./mathquill-types\";\n\nconst mobileKeyTranslator: Record<Key, MathFieldUpdaterCallback> = {\n ...keyTranslator,\n // note(Matthew): our mobile backspace logic is really complicated\n // and for some reason doesn't really work in the desktop experience.\n // So we default to the basic backspace functionality in the\n // key translator and overwrite it with the complicated logic here\n // until we can unify the experiences (if we even want to).\n // https://khanacademy.atlassian.net/browse/LC-906\n BACKSPACE: handleBackspace,\n};\n\n/**\n * This file contains a wrapper around MathQuill so that we can provide a\n * more regular interface for the functionality we need while insulating us\n * from MathQuill changes.\n */\nclass MathWrapper {\n mathField: MathFieldInterface; // MathQuill MathField input\n callbacks: any;\n\n constructor(element, callbacks = {}) {\n this.mathField = createMathField(element, () => {\n return {\n // use a span instead of a textarea so that we don't bring up the\n // native keyboard on mobile when selecting the input\n substituteTextarea: function () {\n return document.createElement(\"span\");\n },\n };\n });\n this.callbacks = callbacks;\n }\n\n focus() {\n // HACK(charlie): We shouldn't reaching into MathQuill internals like\n // this, but it's the easiest way to allow us to manage the focus state\n // ourselves.\n const controller = this.mathField.__controller;\n controller.cursor.show();\n\n // Set MathQuill's internal state to reflect the focus, otherwise it\n // will consistently try to hide the cursor on key-press and introduce\n // layout jank.\n controller.blurred = false;\n }\n\n blur() {\n const controller = this.mathField.__controller;\n controller.cursor.hide();\n controller.blurred = true;\n }\n\n /**\n * Handle a key press and return the resulting cursor state.\n *\n * @param {Key} key - an enum representing the key that was pressed\n * @returns {object} a cursor object, consisting of a cursor context\n */\n pressKey(key: Key): Cursor {\n const cursor = this.getCursor();\n const translator = mobileKeyTranslator[key];\n\n if (translator) {\n translator(this.mathField, key);\n }\n\n if (!cursor.selection) {\n // don't show the cursor for selections\n cursor.show();\n }\n\n if (this.callbacks.onSelectionChanged) {\n this.callbacks.onSelectionChanged(cursor.selection);\n }\n\n // NOTE(charlie): It's insufficient to do this as an `edited` handler\n // on the MathField, as that handler isn't triggered on navigation\n // events.\n return {\n context: this.contextForCursor(cursor),\n };\n }\n\n /**\n * Place the cursor beside the node located at the given coordinates.\n *\n * @param {number} x - the x coordinate in the viewport\n * @param {number} y - the y coordinate in the viewport\n * @param {Node} hitNode - the node next to which the cursor should be\n * placed; if provided, the coordinates will be used\n * to determine on which side of the node the cursor\n * should be placed\n */\n setCursorPosition(x: number, y: number, hitNode: HTMLElement) {\n const el = hitNode || document.elementFromPoint(x, y);\n\n if (el) {\n const cursor = this.getCursor();\n\n if (el.hasAttribute(\"mq-root-block\")) {\n // If we're in the empty area place the cursor at the right\n // end of the expression.\n cursor.insAtRightEnd(this.mathField.__controller.root);\n } else {\n // Otherwise place beside the element at x, y.\n const controller = this.mathField.__controller;\n\n const pageX = x - document.body.scrollLeft;\n const pageY = y - document.body.scrollTop;\n controller.seek($(el), pageX, pageY).cursor.startSelection();\n\n // Unless that would leave us mid-command, in which case, we\n // need to adjust and place the cursor inside the parens\n // following the command.\n const command = maybeFindCommand(cursor[mathQuillInstance.L]);\n if (command && command.endNode) {\n // NOTE(charlie): endNode should definitely be \\left(.\n cursor.insLeftOf(command.endNode);\n this.mathField.keystroke(\"Right\");\n }\n }\n\n if (this.callbacks.onCursorMove) {\n this.callbacks.onCursorMove({\n context: this.contextForCursor(cursor),\n });\n }\n }\n }\n\n // note(Matthew): extracted this logic to share it elsewhere,\n // but it's part of the public MathWrapper API\n getCursor() {\n return getCursor(this.mathField);\n }\n\n // note(Matthew): extracted this logic to keep this file focused,\n // but it's part of the public MathWrapper API\n contextForCursor(cursor: MathFieldCursor) {\n return contextForCursor(cursor);\n }\n\n getSelection() {\n return this.getCursor().selection;\n }\n\n getContent() {\n return this.mathField.latex();\n }\n\n setContent(latex: string) {\n this.mathField.latex(latex);\n }\n\n isEmpty() {\n const cursor = this.getCursor();\n return cursor.parent.id === 1 && cursor[1] === 0 && cursor[-1] === 0;\n }\n}\n\nexport default MathWrapper;\n","/**\n * A single function used to scroll a DOM node into view, optionally taking into\n * account that it may be obscured by the custom keypad. The logic makes the\n * strong assumption that the keypad will be anchored to the bottom of the page\n * in calculating its height, as this method may be called before the keypad has\n * animated into view.\n *\n * TODO(charlie): Move this scroll logic out of our components and into a higher\n * level in the component tree--perhaps even into webapp, beyond Perseus.\n */\n\nimport {toolbarHeightPx} from \"../common-style\";\n\nexport const scrollIntoView = (containerNode, keypadNode) => {\n // TODO(charlie): There's no need for us to be reading the keypad bounds\n // here, since they're pre-determined by logic in the store. We should\n // instead pass around an object that knows the bounds.\n const containerBounds = containerNode.getBoundingClientRect();\n const containerBottomPx = containerBounds.bottom;\n const containerTopPx = containerBounds.top;\n\n // Get the element that scrolls the document.\n const scrollNode = document.scrollingElement;\n\n const desiredMarginPx = 16;\n\n if (keypadNode) {\n // NOTE(charlie): We can't use the bounding rect of the keypad,\n // as it is likely in the process of animating in. Instead, to\n // calculate its top, we make the strong assumption that the\n // keypad will end up anchored at the bottom of the page, but above the\n // toolbar, and use its height, which is known at this point. Note that,\n // in the native apps (where the toolbar is rendered natively), this\n // will result in us leaving excess space between the input and the\n // keypad, but that seems okay.\n const pageHeightPx = window.innerHeight;\n const keypadHeightPx = keypadNode.clientHeight;\n const keypadTopPx = pageHeightPx - (keypadHeightPx + toolbarHeightPx);\n\n if (containerBottomPx > keypadTopPx) {\n // If the input would be obscured by the keypad, scroll such that\n // the bottom of the input is just above the top of the keypad,\n // taking care not to scroll the input out of view.\n const scrollOffset = Math.min(\n containerBottomPx - keypadTopPx + desiredMarginPx,\n containerTopPx,\n );\n\n if (scrollNode) {\n scrollNode.scrollTop += scrollOffset;\n }\n return;\n }\n }\n\n // Alternatively, if the input is out of the viewport or nearly out\n // of the viewport, scroll it into view. We can do this regardless\n // of whether the keypad has been provided.\n if (scrollNode && containerTopPx < desiredMarginPx) {\n scrollNode.scrollTop -= containerBounds.height + desiredMarginPx;\n }\n};\n","import Color from \"@khanacademy/wonder-blocks-color\";\nimport * as i18n from \"@khanacademy/wonder-blocks-i18n\";\nimport {entries} from \"@khanacademy/wonder-stuff-core\";\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport {View} from \"../../fake-react-native-web/index\";\nimport {\n cursorHandleRadiusPx,\n cursorHandleDistanceMultiplier,\n wonderBlocksBlue,\n offBlack,\n} from \"../common-style\";\nimport ProvidedKeypad from \"../keypad-legacy/provided-keypad\";\n\nimport CursorHandle from \"./cursor-handle\";\nimport DragListener from \"./drag-listener\";\nimport MathWrapper from \"./math-wrapper\";\nimport {scrollIntoView} from \"./scroll-into-view\";\n\nimport type {Cursor} from \"../../types\";\n\nconst constrainingFrictionFactor = 0.8;\n\ntype Props = {\n keypadElement: ProvidedKeypad;\n onBlur: () => void;\n onChange: (value: string, callback: any) => void;\n onFocus: () => void;\n style: any;\n value: string;\n};\n\ntype DefaultProps = {\n style: Props[\"style\"];\n value: Props[\"value\"];\n};\n\ntype HandleState = {\n animateIntoPosition?: boolean;\n visible: boolean;\n x?: number;\n y?: number;\n};\n\ntype State = {\n focused: boolean;\n handle: HandleState;\n};\n\n// eslint-disable-next-line react/no-unsafe\nclass MathInput extends React.Component<Props, State> {\n didTouchOutside: boolean | null | undefined;\n didScroll: boolean | null | undefined;\n mathField: any;\n // @ts-expect-error [FEI-5003] - TS2564 - Property 'recordTouchStartOutside' has no initializer and is not definitely assigned in the constructor.\n recordTouchStartOutside: (arg1: any) => void;\n // @ts-expect-error [FEI-5003] - TS2564 - Property 'blurOnTouchEndOutside' has no initializer and is not definitely assigned in the constructor.\n blurOnTouchEndOutside: (arg1: any) => void;\n dragListener: any;\n inputRef: HTMLDivElement | null | undefined;\n _isMounted: boolean | null | undefined;\n _mathContainer: any;\n // @ts-expect-error [FEI-5003] - TS2564 - Property '_container' has no initializer and is not definitely assigned in the constructor.\n _container: HTMLDivElement;\n _root: any;\n // @ts-expect-error [FEI-5003] - TS2564 - Property '_containerBounds' has no initializer and is not definitely assigned in the constructor.\n _containerBounds: ClientRect;\n _keypadBounds: ClientRect | null | undefined;\n\n static defaultProps: DefaultProps = {\n style: {},\n value: \"\",\n };\n\n state: State = {\n focused: false,\n handle: {\n animateIntoPosition: false,\n visible: false,\n x: 0,\n y: 0,\n },\n };\n\n componentDidMount() {\n this._isMounted = true;\n\n this.mathField = new MathWrapper(this._mathContainer, {\n onCursorMove: (cursor: Cursor) => {\n // TODO(charlie): It's not great that there is so much coupling\n // between this keypad and the input behavior. We should wrap\n // this `MathInput` component in an intermediary component\n // that translates accesses on the keypad into vanilla props,\n // to make this input keypad-agnostic.\n this.props.keypadElement &&\n this.props.keypadElement.setCursor(cursor);\n },\n });\n\n // NOTE(charlie): MathQuill binds this handler to manage its\n // drag-to-select behavior. For reasons that I can't explain, the event\n // itself gets triggered even if you tap slightly outside of the\n // bound container (maybe 5px outside of any boundary). As a result, the\n // cursor appears when tapping at those locations, even though the input\n // itself doesn't receive any touch start or mouse down event and, as\n // such, doesn't focus itself. This makes for a confusing UX, as the\n // cursor appears, but the keypad does not and the input otherwise\n // treats itself as unfocused. Thankfully, we don't need this behavior--\n // we manage all of the cursor interactions ourselves--so we can safely\n // unbind the handler.\n this.mathField.mathField.__controller.container.unbind(\n \"mousedown.mathquill\",\n );\n\n this.mathField.setContent(this.props.value);\n\n this._updateInputPadding();\n\n this._container = ReactDOM.findDOMNode(this) as HTMLDivElement;\n this._root = this._container.querySelector(\".mq-root-block\");\n this._root.addEventListener(\"scroll\", this._handleScroll);\n\n // Record the initial scroll displacement on touch start. This allows\n // us to detect whether a touch event was a scroll and only blur the\n // input on non-scrolls--blurring the input on scroll makes for a\n // frustrating user experience.\n this.recordTouchStartOutside = (evt: any) => {\n if (this.state.focused) {\n // Only blur if the touch is both outside of the input, and\n // above or to the left or right of the keypad (if it has been\n // provided). The reasoning for not blurring when touches occur\n // below the keypad is that the keypad may be anchored above\n // the 'Check answer' bottom bar, in which case, we don't want\n // to dismiss the keypad on check.\n // TODO(charlie): Inject this logic.\n if (!this._container.contains(evt.target)) {\n let touchDidStartInOrBelowKeypad = false;\n if (\n this.props.keypadElement &&\n this.props.keypadElement.getDOMNode()\n ) {\n const bounds = this._getKeypadBounds();\n for (let i = 0; i < evt.changedTouches.length; i++) {\n const [x, y] = [\n evt.changedTouches[i].clientX,\n evt.changedTouches[i].clientY,\n ];\n if (\n (bounds.left <= x &&\n bounds.right >= x &&\n bounds.top <= y &&\n bounds.bottom >= y) ||\n bounds.bottom < y\n ) {\n touchDidStartInOrBelowKeypad = true;\n break;\n }\n }\n }\n\n if (!touchDidStartInOrBelowKeypad) {\n this.didTouchOutside = true;\n\n if (this.dragListener) {\n this.dragListener.detach();\n }\n\n this.dragListener = new DragListener(() => {\n this.didScroll = true;\n this.dragListener.detach();\n }, evt);\n this.dragListener.attach();\n }\n }\n }\n };\n\n this.blurOnTouchEndOutside = (evt) => {\n // If the user didn't scroll, blur the input.\n // TODO(charlie): Verify that the touch that ended actually started\n // outside the keypad. Right now, you can touch down on the keypad,\n // touch elsewhere, release the finger on the keypad, and trigger a\n // dismissal. This code needs to be generalized to handle\n // multi-touch.\n if (this.state.focused && this.didTouchOutside && !this.didScroll) {\n this.blur();\n }\n\n this.didTouchOutside = false;\n this.didScroll = false;\n\n if (this.dragListener) {\n this.dragListener.detach();\n }\n };\n\n window.addEventListener(\"touchstart\", this.recordTouchStartOutside);\n window.addEventListener(\"touchend\", this.blurOnTouchEndOutside);\n window.addEventListener(\"touchcancel\", this.blurOnTouchEndOutside);\n\n // HACK(benkomalo): if the window resizes, the keypad bounds can\n // change. That's a bit peeking into the internals of the keypad\n // itself, since we know bounds can change only when the viewport\n // changes, but seems like a rare enough thing to get wrong that it's\n // not worth wiring up extra things for the technical \"purity\" of\n // having the keypad notify of changes to us.\n window.addEventListener(\"resize\", this._clearKeypadBoundsCache);\n window.addEventListener(\n \"orientationchange\",\n this._clearKeypadBoundsCache,\n );\n }\n\n UNSAFE_componentWillReceiveProps(props: Props) {\n if (this.props.keypadElement !== props.keypadElement) {\n this._clearKeypadBoundsCache();\n }\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (this.mathField.getContent() !== this.props.value) {\n this.mathField.setContent(this.props.value);\n }\n\n if (prevState.focused !== this.state.focused) {\n this._updateInputPadding();\n }\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n\n window.removeEventListener(\"touchstart\", this.recordTouchStartOutside);\n window.removeEventListener(\"touchend\", this.blurOnTouchEndOutside);\n window.removeEventListener(\"touchcancel\", this.blurOnTouchEndOutside);\n // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.\n window.removeEventListener(\"resize\", this._clearKeypadBoundsCache());\n window.removeEventListener(\n \"orientationchange\",\n // @ts-expect-error [FEI-5003] - TS2769 - No overload matches this call.\n this._clearKeypadBoundsCache(),\n );\n }\n\n _clearKeypadBoundsCache: () => void = () => {\n this._keypadBounds = null;\n };\n\n _cacheKeypadBounds: (arg1: any) => void = (keypadNode) => {\n this._keypadBounds = keypadNode.getBoundingClientRect();\n };\n\n _updateInputPadding: () => void = () => {\n this._container = ReactDOM.findDOMNode(this) as HTMLDivElement;\n this._root = this._container.querySelector(\".mq-root-block\");\n\n const padding = this.getInputInnerPadding();\n // NOTE(diedra): This overrides the default 2px padding from Mathquil.\n this._root.style.padding =\n `${padding.paddingTop}px ${padding.paddingRight}px` +\n ` ${padding.paddingBottom}px ${padding.paddingLeft}px`;\n this._root.style.fontSize = `${fontSizePt}pt`;\n };\n\n /** Gets and cache they bounds of the keypadElement */\n _getKeypadBounds: () => any = () => {\n if (!this._keypadBounds) {\n const node = this.props.keypadElement.getDOMNode();\n this._cacheKeypadBounds(node);\n }\n return this._keypadBounds;\n };\n\n _updateCursorHandle: (arg1?: boolean) => void = (animateIntoPosition) => {\n const containerBounds = this._container.getBoundingClientRect();\n const cursor: any = this._container.querySelector(\".mq-cursor\");\n const cursorBounds = cursor.getBoundingClientRect();\n\n const cursorWidth = cursorBounds.width;\n const gapBelowCursor = 2;\n\n const inputInnerPadding = this.getInputInnerPadding();\n\n // The cursor should never be further right or left than the edge of the\n // container's values.\n const furthestRightCursorBound =\n containerBounds.right -\n cursorWidth -\n inputInnerPadding.paddingRight;\n const furthestLeftCursorBound =\n containerBounds.left + cursorWidth + inputInnerPadding.paddingLeft;\n\n let cursorBoundsLeft = cursorBounds.left;\n if (cursorBounds.left > furthestRightCursorBound) {\n cursorBoundsLeft = furthestRightCursorBound;\n } else if (cursorBounds.left < furthestLeftCursorBound) {\n cursorBoundsLeft = furthestLeftCursorBound;\n }\n\n this.setState({\n handle: {\n visible: true,\n animateIntoPosition,\n // We subtract containerBounds' left/top to correct for the\n // position of the container within the page.\n x: cursorBoundsLeft + cursorWidth / 2 - containerBounds.left,\n y: cursorBounds.bottom + gapBelowCursor - containerBounds.top,\n },\n });\n };\n\n _hideCursorHandle: () => void = () => {\n this.setState({\n handle: {\n visible: false,\n x: 0,\n y: 0,\n },\n });\n };\n\n _handleScroll: () => void = () => {\n // If animateIntoPosition is false, the user is currently manually positioning\n // the cursor. This is important because the user can scroll the input field\n // with the curor handle, and we don't want to override that ability.\n // But we do want to hide the handle is the user is just scrolling the input field\n // normally, because the handle will not move with the scroll.\n if (this.state.handle.animateIntoPosition !== false) {\n this._hideCursorHandle();\n }\n };\n\n blur: () => void = () => {\n this.mathField.blur();\n this.props.onBlur && this.props.onBlur();\n this.setState({focused: false, handle: {visible: false}});\n };\n\n focus: () => void = () => {\n // Pass this component's handleKey method to the keypad so it can call\n // it whenever it needs to trigger a keypress action.\n this.props.keypadElement.setKeyHandler((key) => {\n const cursor = this.mathField.pressKey(key);\n\n // Trigger an `onChange` if the value in the input changed, and hide\n // the cursor handle whenever the user types a key. If the value\n // changed as a result of a keypress, we need to be careful not to\n // call `setState` until after `onChange` has resolved.\n const hideCursor = () => {\n this.setState({\n handle: {\n visible: false,\n },\n });\n };\n const value = this.mathField.getContent();\n if (this.props.value !== value) {\n this.props.onChange(value, hideCursor);\n } else {\n hideCursor();\n }\n\n return cursor;\n });\n\n this.mathField.focus();\n this.props.onFocus && this.props.onFocus();\n this.setState({focused: true}, () => {\n // NOTE(charlie): We use `setTimeout` to allow for a layout pass to\n // occur. Otherwise, the keypad is measured incorrectly. Ideally,\n // we'd use requestAnimationFrame here, but it's unsupported on\n // Android Browser 4.3.\n setTimeout(() => {\n if (this._isMounted) {\n // TODO(benkomalo): the keypad is animating at this point,\n // so we can't call _cacheKeypadBounds(), even though\n // it'd be nice to do so. It should probably be the case\n // that the higher level controller tells us when the\n // keypad is settled (then scrollIntoView wouldn't have\n // to make assumptions about that either).\n const maybeKeypadNode =\n this.props.keypadElement &&\n this.props.keypadElement.getDOMNode();\n scrollIntoView(this._container, maybeKeypadNode);\n }\n });\n });\n };\n\n /**\n * Tries to determine which DOM node to place the cursor next to based on\n * where the user drags the cursor handle. If it finds a node it will\n * place the cursor next to it, update the handle to be under the cursor,\n * and return true. If it doesn't find a node, it returns false.\n *\n * It searches for nodes by doing it tests at the following points:\n *\n * (x - dx, y), (x, y), (x + dx, y)\n *\n * If it doesn't find any nodes from the rendered math it will update y\n * by adding dy.\n *\n * The algorithm ends its search when y goes outside the bounds of\n * containerBounds.\n *\n * @param {DOMRect} containerBounds - bounds of the container node\n * @param {number} x - the initial x coordinate in the viewport\n * @param {number} y - the initial y coordinate in the viewport\n * @param {number} dx - horizontal spacing between elementFromPoint calls\n * @param {number} dy - vertical spacing between elementFromPoint calls,\n * sign determines direction.\n * @returns {boolean} - true if a node was hit, false otherwise.\n */\n _findHitNode: (\n arg1: ClientRect,\n arg2: number,\n arg3: number,\n arg4: number,\n arg5: number,\n ) => boolean = (containerBounds, x, y, dx, dy) => {\n while (y >= containerBounds.top && y <= containerBounds.bottom) {\n y += dy;\n\n const points = [\n [x - dx, y],\n [x, y],\n [x + dx, y],\n ];\n\n const elements = points\n // @ts-expect-error [FEI-5003] - TS2556 - A spread argument must either have a tuple type or be passed to a rest parameter.\n .map((point) => document.elementFromPoint(...point))\n // We exclude the root container itself and any nodes marked\n // as non-leaf which are fractions, parens, and roots. The\n // children of those nodes are included in the list because\n // those are the items we care about placing the cursor next\n // to.\n //\n // MathQuill's mq-non-leaf is not applied to all non-leaf nodes\n // so the naming is a bit confusing. Although fractions are\n // included, neither mq-numerator nor mq-denominator nodes are\n // and neither are subscripts or superscripts.\n .filter(\n (element) =>\n element &&\n this._root.contains(element) &&\n ((!element.classList.contains(\"mq-root-block\") &&\n !element.classList.contains(\"mq-non-leaf\")) ||\n element.classList.contains(\"mq-empty\") ||\n element.classList.contains(\"mq-hasCursor\")),\n );\n\n let hitNode = null;\n\n // Contains only DOMNodes without child elements. These should\n // contain some amount of text though.\n const leafElements: ReadonlyArray<null | HTMLElement> = [];\n\n // Contains only DOMNodes with child elements.\n const nonLeafElements: ReadonlyArray<null | HTMLElement> = [];\n\n let max = 0;\n const counts: {\n [key: string]: number;\n } = {};\n const elementsById: Record<string, any> = {};\n\n for (const element of elements) {\n // @ts-expect-error [FEI-5003] - TS2531 - Object is possibly 'null'.\n const id = element.getAttribute(\"mathquill-command-id\");\n if (id != null) {\n // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'Element | null' is not assignable to parameter of type 'HTMLElement | null'.\n leafElements.push(element);\n\n counts[id] = (counts[id] || 0) + 1;\n elementsById[id] = element;\n } else {\n // @ts-expect-error [FEI-5003] - TS2345 - Argument of type 'Element | null' is not assignable to parameter of type 'HTMLElement | null'.\n nonLeafElements.push(element);\n }\n }\n\n // When determining which DOMNode to place the cursor beside, we\n // prefer leaf nodes. Hitting a leaf node is a good sign that the\n // cursor is really close to some piece of math that has been\n // rendered because leaf nodes contain text. Non-leaf nodes may\n // contain a lot of whitespace so the cursor may be further away\n // from actual text within the expression.\n //\n // Since we're doing three hit tests per loop it's possible that\n // we hit multiple leaf nodes at the same time. In this case we\n // we prefer the DOMNode with the most hits.\n // TODO(kevinb) consider preferring nodes hit by [x, y].\n for (const [id, count] of entries(counts)) {\n if (count > max) {\n max = count;\n hitNode = elementsById[id];\n }\n }\n\n // It's possible that two non-leaf nodes are right beside each\n // other. We don't bother counting the number of hits for each,\n // b/c this seems like an unlikely situation. Also, ignoring the\n // hit count in the situation should not have serious effects on\n // the overall accuracy of the algorithm.\n if (hitNode == null && nonLeafElements.length > 0) {\n // @ts-expect-error [FEI-5003] - TS2322 - Type 'HTMLElement | null' is not assignable to type 'null'.\n hitNode = nonLeafElements[0];\n }\n\n if (hitNode !== null) {\n this.mathField.setCursorPosition(x, y, hitNode);\n return true;\n }\n }\n\n return false;\n };\n\n /**\n * Inserts the cursor at the DOM node closest to the given coordinates,\n * based on hit-tests conducted using #_findHitNode.\n *\n * @param {number} x - the x coordinate in the viewport\n * @param {number} y - the y coordinate in the viewport\n */\n _insertCursorAtClosestNode: (arg1: number, arg2: number) => void = (\n x,\n y,\n ) => {\n const cursor = this.mathField.getCursor();\n\n // Pre-emptively check if the input has any child nodes; if not, the\n // input is empty, so we throw the cursor at the start.\n if (!this._root.hasChildNodes()) {\n cursor.insAtLeftEnd(this.mathField.mathField.__controller.root);\n return;\n }\n\n // NOTE(diedra): The adding and subtracting of 10 or 15 pixels here accounts\n // for the padding that surrounds the input values.\n if (y > this._containerBounds.bottom) {\n y = this._containerBounds.bottom - 10;\n } else if (y < this._containerBounds.top) {\n y = this._containerBounds.top + 10;\n }\n if (x > this._containerBounds.right) {\n x = this._containerBounds.right - 15;\n } else if (x < this._containerBounds.left) {\n x = this._containerBounds.left + 15;\n }\n\n let dy;\n\n // Vertical spacing between hit tests\n // dy is negative because we're moving upwards.\n dy = -8;\n\n // Horizontal spacing between hit tests\n // Note: This value depends on the font size. If the gap is too small\n // we end up placing the cursor at the end of the expression when we\n // shouldn't.\n const dx = 5;\n\n if (this._findHitNode(this._containerBounds, x, y, dx, dy)) {\n return;\n }\n\n // If we haven't found anything start from the top.\n y = this._containerBounds.top;\n\n // dy is positive b/c we're going downwards.\n dy = 8;\n\n if (this._findHitNode(this._containerBounds, x, y, dx, dy)) {\n return;\n }\n\n const firstChildBounds = this._root.firstChild.getBoundingClientRect();\n const lastChildBounds = this._root.lastChild.getBoundingClientRect();\n\n const left = firstChildBounds.left;\n const right = lastChildBounds.right;\n\n // We've exhausted all of the options. We're likely either to the right\n // or left of all of the math, so we place the cursor at the end to\n // which it's closest.\n if (Math.abs(x - right) < Math.abs(x - left)) {\n cursor.insAtRightEnd(this.mathField.mathField.__controller.root);\n } else {\n cursor.insAtLeftEnd(this.mathField.mathField.__controller.root);\n }\n // In that event, we need to update the cursor context ourselves.\n this.props.keypadElement &&\n this.props.keypadElement.setCursor({\n context: this.mathField.contextForCursor(cursor),\n });\n };\n\n handleTouchStart: (arg1: React.TouchEvent<HTMLDivElement>) => void = (\n e,\n ) => {\n e.stopPropagation();\n\n // Hide the cursor handle on touch start, if the handle itself isn't\n // handling the touch event.\n this._hideCursorHandle();\n\n // Cache the container bounds, so as to avoid re-computing. If we don't\n // have any content, then it's not necessary, since the cursor can't be\n // moved anyway.\n if (this.mathField.getContent() !== \"\") {\n this._containerBounds = this._container.getBoundingClientRect();\n\n // Make the cursor visible and set the handle-less cursor's\n // location.\n const touch = e.changedTouches[0];\n this._insertCursorAtClosestNode(touch.clientX, touch.clientY);\n }\n\n // Trigger a focus event, if we're not already focused.\n if (!this.state.focused) {\n this.focus();\n }\n };\n\n handleTouchMove: (arg1: React.TouchEvent<HTMLDivElement>) => void = (e) => {\n e.stopPropagation();\n\n // Update the handle-less cursor's location on move, if there's any\n // content in the box. Note that if the user touched outside the keypad\n // (e.g., with a different finger) during this touch interaction, we\n // may have blurred, in which case we should ignore the touch (since\n // the cursor is no longer visible and the input is no longer\n // highlighted).\n if (this.mathField.getContent() !== \"\" && this.state.focused) {\n const touch = e.changedTouches[0];\n this._insertCursorAtClosestNode(touch.clientX, touch.clientY);\n }\n };\n\n handleTouchEnd: (arg1: React.TouchEvent<HTMLDivElement>) => void = (e) => {\n e.stopPropagation();\n\n // And on touch-end, reveal the cursor, unless the input is empty. Note\n // that if the user touched outside the keypad (e.g., with a different\n // finger) during this touch interaction, we may have blurred, in which\n // case we should ignore the touch (since the cursor is no longer\n // visible and the input is no longer highlighted).\n if (this.mathField.getContent() !== \"\" && this.state.focused) {\n this._updateCursorHandle();\n }\n };\n\n /**\n * When a touch starts in the cursor handle, we track it so as to avoid\n * handling any touch events ourself.\n *\n * @param {TouchEvent} e - the raw touch event from the browser\n */\n onCursorHandleTouchStart: (\n arg1: React.TouchEvent<HTMLSpanElement>,\n ) => void = (e) => {\n // NOTE(charlie): The cursor handle is a child of this view, so whenever\n // it receives a touch event, that event would also typically be bubbled\n // up to our own handlers. However, we want the cursor to handle its own\n // touch events, and for this view to only handle touch events that\n // don't affect the cursor. As such, we `stopPropagation` on any touch\n // events that are being handled by the cursor, so as to avoid handling\n // them in our own touch handlers.\n e.stopPropagation();\n\n e.preventDefault();\n\n // Cache the container bounds, so as to avoid re-computing.\n this._containerBounds = this._container.getBoundingClientRect();\n };\n\n _constrainToBound: (\n arg1: number,\n arg2: number,\n arg3: number,\n arg4: number,\n ) => number = (value, min, max, friction) => {\n if (value < min) {\n return min + (value - min) * friction;\n } else if (value > max) {\n return max + (value - max) * friction;\n } else {\n return value;\n }\n };\n\n /**\n * When the user moves the cursor handle update the position of the cursor\n * and the handle.\n *\n * @param {TouchEvent} e - the raw touch event from the browser\n */\n onCursorHandleTouchMove: (arg1: React.TouchEvent<HTMLSpanElement>) => void =\n (e) => {\n e.stopPropagation();\n\n const x = e.changedTouches[0].clientX;\n const y = e.changedTouches[0].clientY;\n\n const relativeX = x - this._containerBounds.left;\n const relativeY =\n y -\n 2 * cursorHandleRadiusPx * cursorHandleDistanceMultiplier -\n this._containerBounds.top;\n\n // We subtract the containerBounds left/top to correct for the\n // MathInput's position on the page. On top of that, we subtract an\n // additional 2 x {height of the cursor} so that the bottom of the\n // cursor tracks the user's finger, to make it visible under their\n // touch.\n this.setState({\n handle: {\n animateIntoPosition: false,\n visible: true,\n // TODO(charlie): Use clientX and clientY to avoid the need for\n // scroll offsets. This likely also means that the cursor\n // detection doesn't work when scrolled, since we're not\n // offsetting those values.\n x: this._constrainToBound(\n relativeX,\n 0,\n this._containerBounds.width,\n constrainingFrictionFactor,\n ),\n y: this._constrainToBound(\n relativeY,\n 0,\n this._containerBounds.height,\n constrainingFrictionFactor,\n ),\n },\n });\n\n // Use a y-coordinate that's just above where the user is actually\n // touching because they're dragging the handle which is a little\n // below where the cursor actually is.\n const distanceAboveFingerToTrySelecting = 22;\n const adjustedY = y - distanceAboveFingerToTrySelecting;\n\n this._insertCursorAtClosestNode(x, adjustedY);\n };\n\n /**\n * When the user releases the cursor handle, animate it back into place.\n *\n * @param {TouchEvent} e - the raw touch event from the browser\n */\n onCursorHandleTouchEnd: (arg1: React.TouchEvent<HTMLSpanElement>) => void =\n (e) => {\n e.stopPropagation();\n\n this._updateCursorHandle(true);\n };\n\n /**\n * If the gesture is cancelled mid-drag, simply hide it.\n *\n * @param {TouchEvent} e - the raw touch event from the browser\n */\n onCursorHandleTouchCancel: (\n arg1: React.TouchEvent<HTMLSpanElement>,\n ) => void = (e) => {\n e.stopPropagation();\n\n this._updateCursorHandle(true);\n };\n\n domKeyToMathQuillKey: (arg1: string) => string | null | undefined = (\n key,\n ) => {\n const keyMap = {\n \"+\": \"PLUS\",\n \"-\": \"MINUS\",\n \"*\": \"TIMES\",\n \"/\": \"DIVIDE\",\n \".\": \"DECIMAL\",\n \"%\": \"PERCENT\",\n \"=\": \"EQUAL\",\n \">\": \"GT\",\n \"<\": \"LT\",\n \"^\": \"EXP\",\n } as const;\n\n // Numbers\n if ([\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"].includes(key)) {\n return `NUM_${key}`;\n }\n\n // Movement keys\n else if (key === \"Backspace\") {\n return \"BACKSPACE\";\n }\n\n // Operators\n else if (key in keyMap) {\n return keyMap[key];\n }\n\n // The key pressed doesn't map to any of the math input operators\n return null;\n };\n\n handleKeyUp: (arg1: React.KeyboardEvent<HTMLDivElement>) => void = (\n event,\n ) => {\n const mathQuillKey = this.domKeyToMathQuillKey(event.key);\n\n if (mathQuillKey) {\n this.mathField.pressKey(mathQuillKey);\n\n // TODO(diedra): If the new value being added is off-screen to the right\n // due to the max-width of the text box, scroll the box to show the newest\n // value\n const value = this.mathField.getContent();\n if (this.props.value !== value) {\n this.mathField.setContent(this.props.value);\n this.props.onChange(value, false);\n this._hideCursorHandle();\n }\n }\n };\n\n getBorderWidthPx: () => number = () => {\n // TODO(diedra): Move these to the common style package.\n const normalBorderWidthPx = 1;\n const focusedBorderWidthPx = 2;\n\n return this.state.focused ? focusedBorderWidthPx : normalBorderWidthPx;\n };\n\n // Calculate the appropriate padding based on the border width (which is\n // considered 'padding', since we're using 'border-box') and the fact\n // that MathQuill automatically applies 2px of padding to the inner\n // input.\n getInputInnerPadding: () => {\n paddingTop: number;\n paddingRight: number;\n paddingBottom: number;\n paddingLeft: number;\n } = () => {\n const paddingInset = totalDesiredPadding - this.getBorderWidthPx();\n\n // Now, translate that to the appropriate padding for each direction.\n // The complication here is that we want numerals to be centered within\n // the input. However, Symbola (MathQuill's font of choice) renders\n // numerals with approximately 3px of padding below and 1px of padding\n // above (to make room for ascenders and descenders). So we ignore those\n // padding values for the vertical directions.\n const symbolaPaddingBottom = 3;\n const symbolaPaddingTop = 1;\n const padding = {\n paddingTop: paddingInset - symbolaPaddingTop,\n paddingRight: paddingInset,\n paddingBottom: paddingInset - symbolaPaddingBottom,\n paddingLeft: paddingInset,\n } as const;\n\n return padding;\n };\n\n render(): React.ReactNode {\n const {focused, handle} = this.state;\n const {style} = this.props;\n\n const innerStyle = {\n ...inlineStyles.innerContainer,\n borderWidth: this.getBorderWidthPx(),\n ...(focused\n ? {\n borderColor: wonderBlocksBlue,\n }\n : {}),\n ...style,\n } as const;\n\n // NOTE(diedra): This label explicitly refers to tapping because this field\n // is currently only seen if the user is using a mobile device.\n // We added the tapping instructions because there is currently a bug where\n // Android users need to use two fingers to tap the input field to make the\n // keyboard appear. It should only require one finger, which is how iOS works.\n // TODO(diedra): Fix the bug that is causing Android to require a two finger tap\n // to the open the keyboard, and then remove the second half of this label.\n const ariaLabel =\n i18n._(\"Math input box\") +\n \" \" +\n i18n._(\"Tap with one or two fingers to open keyboard\");\n\n return (\n <View\n style={styles.input}\n onTouchStart={this.handleTouchStart}\n onTouchMove={this.handleTouchMove}\n onTouchEnd={this.handleTouchEnd}\n onClick={(e) => e.stopPropagation()}\n role={\"textbox\"}\n ariaLabel={ariaLabel}\n >\n {/* NOTE(charlie): This is used purely to namespace the styles in\n overrides.css. */}\n <div\n className=\"keypad-input\"\n // @ts-expect-error [FEI-5003] - TS2322 - Type 'string' is not assignable to type 'number | undefined'.\n tabIndex={\"0\"}\n ref={(node) => {\n this.inputRef = node;\n }}\n onKeyUp={this.handleKeyUp}\n >\n {/* NOTE(charlie): This element must be styled with inline\n styles rather than with Aphrodite classes, as MathQuill\n modifies the class names on the DOM node. */}\n <div\n ref={(node) => {\n this._mathContainer = ReactDOM.findDOMNode(node);\n }}\n style={innerStyle}\n />\n </div>\n {focused && handle.visible && (\n <CursorHandle\n {...handle}\n onTouchStart={this.onCursorHandleTouchStart}\n onTouchMove={this.onCursorHandleTouchMove}\n onTouchEnd={this.onCursorHandleTouchEnd}\n onTouchCancel={this.onCursorHandleTouchCancel}\n />\n )}\n </View>\n );\n }\n}\n\nconst fontSizePt = 18;\nconst inputMaxWidth = 128;\n\n// The height of numerals in Symbola (rendered at 18pt) is about 20px (though\n// they render at 24px due to padding for ascenders and descenders). We want our\n// box to be laid out such that there's 12px of padding between a numeral and the\n// edge of the input, so we use this 20px number as our 'base height' and\n// account for the ascender and descender padding when computing the additional\n// padding in our `render` method.\nconst numeralHeightPx = 20;\nconst totalDesiredPadding = 12;\nconst minHeightPx = numeralHeightPx + totalDesiredPadding * 2;\nconst minWidthPx = 64;\n\nconst styles = StyleSheet.create({\n input: {\n position: \"relative\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n maxWidth: inputMaxWidth,\n },\n});\n\nconst inlineStyles = {\n // Styles for the inner, MathQuill-ified input element. It's important that\n // these are done with regular inline styles rather than Aphrodite classes\n // as MathQuill adds CSS class names to the element outside of the typical\n // React flow; assigning a class to the element can thus disrupt MathQuill\n // behavior. For example, if the client provided new styles to be applied\n // on focus and the styles here were applied with Aphrodite, then Aphrodite\n // would merge the provided styles with the base styles here, producing a\n // new CSS class name that we would apply to the element, clobbering any CSS\n // class names that MathQuill had applied itself.\n innerContainer: {\n backgroundColor: \"white\",\n minHeight: minHeightPx,\n minWidth: minWidthPx,\n maxWidth: inputMaxWidth,\n boxSizing: \"border-box\",\n position: \"relative\",\n borderStyle: \"solid\",\n borderColor: Color.offBlack50,\n borderRadius: 4,\n color: offBlack,\n },\n} as const;\n\nexport default MathInput;\n","/**\n * React PropTypes that may be shared between components.\n */\n\nimport PropTypes from \"prop-types\";\n\n// NOTE(jared): This is no longer guaranteed to be React element\n// NOTE(matthewc): only seems to be used in Perseus\nexport const keypadElementPropType = PropTypes.shape({\n activate: PropTypes.func.isRequired,\n dismiss: PropTypes.func.isRequired,\n configure: PropTypes.func.isRequired,\n setCursor: PropTypes.func.isRequired,\n setKeyHandler: PropTypes.func.isRequired,\n getDOMNode: PropTypes.func.isRequired,\n});\n","/**\n * This file contains configuration settings for the buttons in the keypad.\n */\nimport * as i18n from \"@khanacademy/wonder-blocks-i18n\";\n\nimport {DecimalSeparator, IconType, KeyType} from \"../enums\";\nimport {KeyConfig} from \"../types\";\nimport {decimalSeparator} from \"../utils\";\n\nimport Key from \"./keys\";\n\ntype KeyConfigMapper = (args: {\n key: Key;\n keyType?: KeyType;\n iconType?: IconType;\n ariaLabel?: string;\n data?: string;\n}) => KeyConfig;\n\nconst getDefaultOperatorFields: KeyConfigMapper = ({\n key,\n keyType = \"OPERATOR\",\n iconType = IconType.SVG,\n ariaLabel = key,\n data = key,\n}) => ({\n id: key,\n type: keyType,\n ariaLabel,\n icon: {\n type: iconType,\n data,\n },\n});\n\nconst getDefaultValueFields: KeyConfigMapper = ({\n key,\n keyType = \"VALUE\",\n iconType = IconType.MATH,\n ariaLabel = key,\n data = key,\n}) => ({\n id: key,\n type: keyType,\n ariaLabel,\n icon: {\n type: iconType,\n data,\n },\n});\n\nconst getDefaultNumberFields: KeyConfigMapper = ({\n key,\n data = key.replace(\"NUM_\", \"\"),\n keyType = \"VALUE\",\n iconType = IconType.TEXT,\n ariaLabel = data,\n}) => ({\n id: key,\n type: keyType,\n ariaLabel,\n icon: {\n type: iconType,\n data,\n },\n});\n\nconst KeyConfigs: {\n [key in Key]: KeyConfig;\n} = {\n // Basic math\n PLUS: {\n ...getDefaultOperatorFields({\n key: \"PLUS\",\n // I18N: A label for a 'plus' sign.\n ariaLabel: i18n._(\"Plus\"),\n }),\n },\n MINUS: {\n ...getDefaultOperatorFields({\n key: \"MINUS\",\n // I18N: A label for a 'minus' sign.\n ariaLabel: i18n._(\"Minus\"),\n }),\n },\n NEGATIVE: {\n ...getDefaultOperatorFields({\n key: \"NEGATIVE\",\n // I18N: A label for a 'negative' sign.\n ariaLabel: i18n._(\"Negative\"),\n }),\n },\n TIMES: {\n ...getDefaultOperatorFields({\n key: \"TIMES\",\n // I18N: A label for a 'multiply' sign.\n ariaLabel: i18n._(\"Multiply\"),\n }),\n },\n DIVIDE: {\n ...getDefaultOperatorFields({\n key: \"DIVIDE\",\n // I18N: A label for a 'divide' sign.\n ariaLabel: i18n._(\"Divide\"),\n }),\n },\n DECIMAL: {\n ...getDefaultOperatorFields({\n key: \"DECIMAL\",\n keyType: \"VALUE\",\n // I18N: A label for a 'decimal' sign (represented as '.' or ',').\n ariaLabel: i18n._(\"Decimal\"),\n }),\n icon:\n decimalSeparator === DecimalSeparator.COMMA\n ? {\n // TODO(charlie): Get an SVG icon for the comma, or verify with\n // design that the text-rendered version is acceptable.\n type: IconType.TEXT,\n data: \",\",\n }\n : {\n type: IconType.SVG,\n data: \"PERIOD\",\n },\n },\n PERIOD: {\n ...getDefaultOperatorFields({\n key: \"PERIOD\",\n keyType: \"VALUE\",\n ariaLabel: \".\",\n }),\n },\n PERCENT: {\n ...getDefaultOperatorFields({\n key: \"PERCENT\",\n // I18N: A label for a 'percent' sign (represented as '%').\n ariaLabel: i18n._(\"Percent\"),\n }),\n },\n CDOT: {\n ...getDefaultOperatorFields({\n key: \"CDOT\",\n // I18N: A label for a 'centered dot' multiplication sign (represented as '⋅').\n ariaLabel: i18n._(\"Multiply\"),\n }),\n },\n EQUAL: {\n ...getDefaultOperatorFields({\n key: \"EQUAL\",\n // I18N: A label for an 'equals' sign (represented as '=').\n ariaLabel: i18n._(\"Equals sign\"),\n }),\n },\n NEQ: {\n ...getDefaultOperatorFields({\n key: \"NEQ\",\n // I18N: A label for a 'not-equals' sign (represented as '≠').\n ariaLabel: i18n._(\"Not-equals sign\"),\n }),\n },\n GT: {\n ...getDefaultOperatorFields({\n key: \"GT\",\n // I18N: A label for a 'greater than' sign (represented as '>').\n ariaLabel: i18n._(\"Greater than sign\"),\n }),\n },\n LT: {\n ...getDefaultOperatorFields({\n key: \"LT\",\n // I18N: A label for a 'less than' sign (represented as '<').\n ariaLabel: i18n._(\"Less than sign\"),\n }),\n },\n GEQ: {\n ...getDefaultOperatorFields({\n key: \"GEQ\",\n // I18N: A label for a 'greater than or equal to' sign (represented as '≥').\n ariaLabel: i18n._(\"Greater than or equal to sign\"),\n }),\n },\n LEQ: {\n ...getDefaultOperatorFields({\n key: \"LEQ\",\n // I18N: A label for a 'less than or equal to' sign (represented as '≤').\n ariaLabel: i18n._(\"Less than or equal to sign\"),\n }),\n },\n // mobile native\n FRAC_INCLUSIVE: {\n ...getDefaultOperatorFields({\n key: \"FRAC_INCLUSIVE\",\n // I18N: A label for a button that creates a new fraction and puts the\n // current expression in the numerator of that fraction.\n ariaLabel: i18n._(\"Fraction, with current expression in numerator\"),\n }),\n },\n // mobile native\n FRAC_EXCLUSIVE: {\n ...getDefaultOperatorFields({\n key: \"FRAC_EXCLUSIVE\",\n // I18N: A label for a button that creates a new fraction next to the\n // cursor.\n ariaLabel: i18n._(\"Fraction, excluding the current expression\"),\n }),\n },\n // mobile web\n FRAC: {\n ...getDefaultOperatorFields({\n key: \"FRAC\",\n // I18N: A label for a button that creates a new fraction next to the\n // cursor.\n ariaLabel: i18n._(\"Fraction, excluding the current expression\"),\n }),\n },\n EXP: {\n ...getDefaultOperatorFields({\n key: \"EXP\",\n // I18N: A label for a button that will allow the user to input a\n // custom exponent.\n ariaLabel: i18n._(\"Custom exponent\"),\n }),\n },\n EXP_2: {\n ...getDefaultOperatorFields({\n key: \"EXP_2\",\n // I18N: A label for a button that will square (take to the second\n // power) some math.\n ariaLabel: i18n._(\"Square\"),\n }),\n },\n EXP_3: {\n ...getDefaultOperatorFields({\n key: \"EXP_3\",\n // I18N: A label for a button that will cube (take to the third power)\n // some math.\n ariaLabel: i18n._(\"Cube\"),\n }),\n },\n SQRT: {\n ...getDefaultOperatorFields({\n key: \"SQRT\",\n // I18N: A label for a button that will allow the user to input a\n // square root.\n ariaLabel: i18n._(\"Square root\"),\n }),\n },\n CUBE_ROOT: {\n ...getDefaultOperatorFields({\n key: \"CUBE_ROOT\",\n // I18N: A label for a button that will allow the user to input a\n // cube root.\n ariaLabel: i18n._(\"Cube root\"),\n }),\n },\n RADICAL: {\n ...getDefaultOperatorFields({\n key: \"RADICAL\",\n // I18N: A label for a button that will allow the user to input a\n // radical with a custom root.\n ariaLabel: i18n._(\"Radical with custom root\"),\n }),\n },\n LEFT_PAREN: {\n ...getDefaultOperatorFields({\n key: \"LEFT_PAREN\",\n // I18N: A label for a button that will allow the user to input a\n // left parenthesis (i.e. '(')\n ariaLabel: i18n._(\"Left parenthesis\"),\n }),\n },\n RIGHT_PAREN: {\n ...getDefaultOperatorFields({\n key: \"RIGHT_PAREN\",\n // I18N: A label for a button that will allow the user to input a\n // right parenthesis (i.e. ')')\n ariaLabel: i18n._(\"Right parenthesis\"),\n }),\n },\n LN: {\n ...getDefaultOperatorFields({\n key: \"LN\",\n // I18N: A label for a button that will allow the user to input a\n // natural logarithm.\n ariaLabel: i18n._(\"Natural logarithm\"),\n }),\n },\n LOG: {\n ...getDefaultOperatorFields({\n key: \"LOG\",\n // I18N: A label for a button that will allow the user to input a\n // logarithm with base 10.\n ariaLabel: i18n._(\"Logarithm with base 10\"),\n }),\n },\n LOG_N: {\n ...getDefaultOperatorFields({\n key: \"LOG_N\",\n // I18N: A label for a button that will allow the user to input a\n // logarithm with a custom base.\n ariaLabel: i18n._(\"Logarithm with custom base\"),\n }),\n },\n SIN: {\n ...getDefaultOperatorFields({\n key: \"SIN\",\n // I18N: A label for a button that will allow the user to input a\n // sine function.\n ariaLabel: i18n._(\"Sine\"),\n }),\n },\n COS: {\n ...getDefaultOperatorFields({\n key: \"COS\",\n // I18N: A label for a button that will allow the user to input a\n // cosine function.\n ariaLabel: i18n._(\"Cosine\"),\n }),\n },\n TAN: {\n ...getDefaultOperatorFields({\n key: \"TAN\",\n // I18N: A label for a button that will allow the user to input a\n // tangent function.\n ariaLabel: i18n._(\"Tangent\"),\n }),\n },\n PI: {\n ...getDefaultValueFields({\n key: \"PI\",\n data: \"\\\\pi\",\n // I18N: A label for a button that will allow the user to input the\n // mathematical constant pi (i.e., π)\n ariaLabel: i18n._(\"Pi\"),\n }),\n },\n THETA: {\n ...getDefaultValueFields({\n key: \"THETA\",\n data: \"\\\\theta\",\n // I18N: A label for a button that will allow the user to input the\n // mathematical constant theta (i.e., θ)\n ariaLabel: i18n._(\"Theta\"),\n }),\n },\n NOOP: {\n ...getDefaultOperatorFields({\n key: \"NOOP\",\n keyType: \"EMPTY\",\n }),\n },\n // Input navigation\n UP: {\n ...getDefaultOperatorFields({\n key: \"UP\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\"Up arrow\"),\n }),\n },\n RIGHT: {\n ...getDefaultOperatorFields({\n key: \"RIGHT\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\"Right arrow\"),\n }),\n },\n DOWN: {\n ...getDefaultOperatorFields({\n key: \"DOWN\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\"Down arrow\"),\n }),\n },\n LEFT: {\n ...getDefaultOperatorFields({\n key: \"LEFT\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\"Left arrow\"),\n }),\n },\n JUMP_OUT_PARENTHESES: {\n ...getDefaultOperatorFields({\n key: \"JUMP_OUT_PARENTHESES\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\"Navigate right out of a set of parentheses\"),\n }),\n },\n JUMP_OUT_EXPONENT: {\n ...getDefaultOperatorFields({\n key: \"JUMP_OUT_EXPONENT\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\"Navigate right out of an exponent\"),\n }),\n },\n JUMP_OUT_BASE: {\n ...getDefaultOperatorFields({\n key: \"JUMP_OUT_BASE\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\"Navigate right out of a base\"),\n }),\n },\n JUMP_INTO_NUMERATOR: {\n ...getDefaultOperatorFields({\n key: \"JUMP_INTO_NUMERATOR\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\n \"Navigate right into the numerator of a fraction\",\n ),\n }),\n },\n JUMP_OUT_NUMERATOR: {\n ...getDefaultOperatorFields({\n key: \"JUMP_OUT_NUMERATOR\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\n \"Navigate right out of the numerator and into the denominator\",\n ),\n }),\n },\n JUMP_OUT_DENOMINATOR: {\n ...getDefaultOperatorFields({\n key: \"JUMP_OUT_DENOMINATOR\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\n \"Navigate right out of the denominator of a fraction\",\n ),\n }),\n },\n BACKSPACE: {\n ...getDefaultOperatorFields({\n key: \"BACKSPACE\",\n keyType: \"INPUT_NAVIGATION\",\n ariaLabel: i18n._(\"Delete\"),\n }),\n },\n\n // Keypad navigation\n DISMISS: {\n ...getDefaultOperatorFields({\n key: \"DISMISS\",\n keyType: \"KEYPAD_NAVIGATION\",\n // I18N: A label for a button that will dismiss/hide a keypad.\n ariaLabel: i18n._(\"Dismiss\"),\n }),\n },\n\n // TODO(charlie): Use the numeral color for the 'Many' key.\n MANY: {\n ...getDefaultOperatorFields({\n key: \"MANY\",\n keyType: \"MANY\",\n }),\n },\n\n // NUMBERS\n NUM_0: {\n ...getDefaultNumberFields({\n key: \"NUM_0\",\n }),\n },\n NUM_1: {\n ...getDefaultNumberFields({\n key: \"NUM_1\",\n }),\n },\n NUM_2: {\n ...getDefaultNumberFields({\n key: \"NUM_2\",\n }),\n },\n NUM_3: {\n ...getDefaultNumberFields({\n key: \"NUM_3\",\n }),\n },\n NUM_4: {\n ...getDefaultNumberFields({\n key: \"NUM_4\",\n }),\n },\n NUM_5: {\n ...getDefaultNumberFields({\n key: \"NUM_5\",\n }),\n },\n NUM_6: {\n ...getDefaultNumberFields({\n key: \"NUM_6\",\n }),\n },\n NUM_7: {\n ...getDefaultNumberFields({\n key: \"NUM_7\",\n }),\n },\n NUM_8: {\n ...getDefaultNumberFields({\n key: \"NUM_8\",\n }),\n },\n NUM_9: {\n ...getDefaultNumberFields({\n key: \"NUM_9\",\n }),\n },\n\n // LETTERS\n A: {\n ...getDefaultValueFields({\n key: \"A\",\n }),\n },\n B: {\n ...getDefaultValueFields({\n key: \"B\",\n }),\n },\n C: {\n ...getDefaultValueFields({\n key: \"C\",\n }),\n },\n D: {\n ...getDefaultValueFields({\n key: \"D\",\n }),\n },\n E: {\n ...getDefaultValueFields({\n key: \"E\",\n }),\n },\n F: {\n ...getDefaultValueFields({\n key: \"F\",\n }),\n },\n G: {\n ...getDefaultValueFields({\n key: \"G\",\n }),\n },\n H: {\n ...getDefaultValueFields({\n key: \"H\",\n }),\n },\n I: {\n ...getDefaultValueFields({\n key: \"I\",\n }),\n },\n J: {\n ...getDefaultValueFields({\n key: \"J\",\n }),\n },\n K: {\n ...getDefaultValueFields({\n key: \"K\",\n }),\n },\n L: {\n ...getDefaultValueFields({\n key: \"L\",\n }),\n },\n M: {\n ...getDefaultValueFields({\n key: \"M\",\n }),\n },\n N: {\n ...getDefaultValueFields({\n key: \"N\",\n }),\n },\n O: {\n ...getDefaultValueFields({\n key: \"O\",\n }),\n },\n P: {\n ...getDefaultValueFields({\n key: \"P\",\n }),\n },\n Q: {\n ...getDefaultValueFields({\n key: \"Q\",\n }),\n },\n R: {\n ...getDefaultValueFields({\n key: \"R\",\n }),\n },\n S: {\n ...getDefaultValueFields({\n key: \"S\",\n }),\n },\n T: {\n ...getDefaultValueFields({\n key: \"T\",\n }),\n },\n U: {\n ...getDefaultValueFields({\n key: \"U\",\n }),\n },\n V: {\n ...getDefaultValueFields({\n key: \"V\",\n }),\n },\n W: {\n ...getDefaultValueFields({\n key: \"W\",\n }),\n },\n X: {\n ...getDefaultValueFields({\n key: \"X\",\n }),\n },\n Y: {\n ...getDefaultValueFields({\n key: \"Y\",\n }),\n },\n Z: {\n ...getDefaultValueFields({\n key: \"Z\",\n }),\n },\n a: {\n ...getDefaultValueFields({\n key: \"a\",\n }),\n },\n b: {\n ...getDefaultValueFields({\n key: \"b\",\n }),\n },\n c: {\n ...getDefaultValueFields({\n key: \"c\",\n }),\n },\n d: {\n ...getDefaultValueFields({\n key: \"d\",\n }),\n },\n e: {\n ...getDefaultValueFields({\n key: \"e\",\n }),\n },\n f: {\n ...getDefaultValueFields({\n key: \"f\",\n }),\n },\n g: {\n ...getDefaultValueFields({\n key: \"g\",\n }),\n },\n h: {\n ...getDefaultValueFields({\n key: \"h\",\n }),\n },\n i: {\n ...getDefaultValueFields({\n key: \"i\",\n }),\n },\n j: {\n ...getDefaultValueFields({\n key: \"j\",\n }),\n },\n k: {\n ...getDefaultValueFields({\n key: \"k\",\n }),\n },\n l: {\n ...getDefaultValueFields({\n key: \"l\",\n }),\n },\n m: {\n ...getDefaultValueFields({\n key: \"m\",\n }),\n },\n n: {\n ...getDefaultValueFields({\n key: \"n\",\n }),\n },\n o: {\n ...getDefaultValueFields({\n key: \"o\",\n }),\n },\n p: {\n ...getDefaultValueFields({\n key: \"p\",\n }),\n },\n q: {\n ...getDefaultValueFields({\n key: \"q\",\n }),\n },\n r: {\n ...getDefaultValueFields({\n key: \"r\",\n }),\n },\n s: {\n ...getDefaultValueFields({\n key: \"s\",\n }),\n },\n t: {\n ...getDefaultValueFields({\n key: \"t\",\n }),\n },\n u: {\n ...getDefaultValueFields({\n key: \"u\",\n }),\n },\n v: {\n ...getDefaultValueFields({\n key: \"v\",\n }),\n },\n w: {\n ...getDefaultValueFields({\n key: \"w\",\n }),\n },\n x: {\n ...getDefaultValueFields({\n key: \"x\",\n }),\n },\n y: {\n ...getDefaultValueFields({\n key: \"y\",\n }),\n },\n z: {\n ...getDefaultValueFields({\n key: \"z\",\n }),\n },\n PHI: {\n ...getDefaultValueFields({\n key: \"PHI\",\n }),\n },\n NTHROOT3: {\n ...getDefaultValueFields({\n key: \"NTHROOT3\",\n }),\n },\n POW: {\n ...getDefaultValueFields({\n key: \"POW\",\n }),\n },\n LOG_B: {\n ...getDefaultValueFields({\n key: \"LOG_B\",\n }),\n },\n};\n\nexport default KeyConfigs;\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","/**\n * A small triangular decal to sit in the corner of a parent component.\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport {View} from \"../../fake-react-native-web/index\";\nimport {offBlack} from \"../common-style\";\n\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\ntype Props = {\n style: StyleType;\n};\n\nclass CornerDecal extends React.Component<Props> {\n render() {\n const {style} = this.props;\n\n const containerStyle = [\n styles.container,\n ...(Array.isArray(style) ? style : [style]),\n ];\n\n return (\n <View style={containerStyle}>\n <svg\n width={triangleSizePx}\n height={triangleSizePx}\n viewBox=\"4 4 8 8\"\n >\n <path\n fill={offBlack}\n opacity=\"0.3\"\n d=\"M5.29289322,5.70710678 L10.2928932,10.7071068 C10.9228581,11.3370716 12,10.8909049 12,10 L12,5 C12,4.44771525 11.5522847,4 11,4 L6,4 C5.10909515,4 4.66292836,5.07714192 5.29289322,5.70710678 Z\" // @Nolint\n />\n </svg>\n </View>\n );\n }\n}\n\nconst triangleSizePx = 7;\n\nconst styles = StyleSheet.create({\n container: {\n position: \"absolute\",\n top: 0,\n right: 0,\n width: triangleSizePx,\n height: triangleSizePx,\n },\n});\n\nexport default CornerDecal;\n","/**\n * Common styles shared across components.\n */\n\nimport {StyleSheet} from \"aphrodite\";\n\nimport {compactKeypadBorderRadiusPx} from \"../common-style\";\n\nexport default StyleSheet.create({\n row: {\n flexDirection: \"row\",\n },\n column: {\n flexDirection: \"column\",\n },\n oneColumn: {\n flexGrow: 1,\n },\n fullWidth: {\n width: \"100%\",\n },\n stretch: {\n alignItems: \"stretch\",\n },\n centered: {\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n centeredText: {\n textAlign: \"center\",\n },\n roundedTopLeft: {\n borderTopLeftRadius: compactKeypadBorderRadiusPx,\n },\n roundedTopRight: {\n borderTopRightRadius: compactKeypadBorderRadiusPx,\n },\n});\n","/**\n * A component that renders an icon with math (via KaTeX).\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport katex from \"katex\";\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport {View} from \"../../fake-react-native-web/index\";\nimport {iconSizeHeightPx, iconSizeWidthPx} from \"../common-style\";\n\nimport Styles from \"./styles\";\n\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\nconst {row, centered} = Styles;\n\ntype Props = {\n math: string;\n style: StyleType;\n};\n\nclass MathIcon extends React.Component<Props> {\n componentDidMount() {\n this._renderMath();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.math !== this.props.math) {\n this._renderMath();\n }\n }\n\n _renderMath = () => {\n const {math} = this.props;\n katex.render(math, ReactDOM.findDOMNode(this));\n };\n\n render() {\n const {style} = this.props;\n\n const containerStyle = [\n row,\n centered,\n styles.size,\n styles.base,\n ...(Array.isArray(style) ? style : [style]),\n ];\n\n return <View style={containerStyle} />;\n }\n}\n\nconst styles = StyleSheet.create({\n size: {\n height: iconSizeHeightPx,\n width: iconSizeWidthPx,\n },\n\n base: {\n fontSize: 25,\n },\n});\n\nexport default MathIcon;\n","/**\n * An autogenerated component that renders the COS iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Cos extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M13 12h24v24H13z\" />\n <path\n d=\"M18.182 29.168c1.386 0 2.226-.602 2.674-1.232l-1.162-1.078a1.707 1.707 0 0 1-1.428.728c-1.078 0-1.834-.798-1.834-1.974s.756-1.96 1.834-1.96c.616 0 1.106.252 1.428.728l1.162-1.092c-.448-.616-1.288-1.218-2.674-1.218-2.086 0-3.584 1.47-3.584 3.542 0 2.086 1.498 3.556 3.584 3.556zm6.972 0c2.24 0 3.584-1.624 3.584-3.556 0-1.918-1.344-3.542-3.584-3.542-2.226 0-3.57 1.624-3.57 3.542 0 1.932 1.344 3.556 3.57 3.556zm0-1.582c-1.106 0-1.722-.91-1.722-1.974 0-1.05.616-1.96 1.722-1.96 1.106 0 1.736.91 1.736 1.96 0 1.064-.63 1.974-1.736 1.974zm7.336 1.582c1.876 0 2.926-.938 2.926-2.17 0-2.73-4.004-1.89-4.004-2.898 0-.378.42-.672 1.064-.672.826 0 1.596.35 2.002.784l.714-1.218c-.672-.532-1.582-.924-2.73-.924-1.778 0-2.772.994-2.772 2.128 0 2.66 4.018 1.75 4.018 2.87 0 .42-.364.728-1.134.728-.84 0-1.848-.462-2.338-.924l-.77 1.246c.714.658 1.848 1.05 3.024 1.05z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Cos;\n","/**\n * An autogenerated component that renders the LOG iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Log extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M16.776 29v-9.338h-1.778V29h1.778zm4.9.168c2.24 0 3.584-1.624 3.584-3.556 0-1.918-1.344-3.542-3.584-3.542-2.226 0-3.57 1.624-3.57 3.542 0 1.932 1.344 3.556 3.57 3.556zm0-1.582c-1.106 0-1.722-.91-1.722-1.974 0-1.05.616-1.96 1.722-1.96 1.106 0 1.736.91 1.736 1.96 0 1.064-.63 1.974-1.736 1.974zm7.672 4.158c1.666 0 3.654-.63 3.654-3.206v-6.3H31.21v.868c-.546-.686-1.274-1.036-2.086-1.036-1.708 0-2.982 1.232-2.982 3.444 0 2.254 1.288 3.444 2.982 3.444.826 0 1.554-.392 2.086-1.064v.686c0 1.33-1.008 1.708-1.862 1.708-.854 0-1.568-.238-2.114-.84l-.798 1.288c.854.742 1.75 1.008 2.912 1.008zm.336-4.368c-1.008 0-1.708-.7-1.708-1.862 0-1.162.7-1.862 1.708-1.862.588 0 1.232.322 1.526.77v2.184c-.294.434-.938.77-1.526.77z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Log;\n","/**\n * An autogenerated component that renders the EQUAL iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Equal extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M16 21h17M16 27h17\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Equal;\n","/**\n * An autogenerated component that renders the BACKSPACE iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport * as React from \"react\";\n\nconst Backspace = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M13 24l6 6h14V18H19l-6 6zm-1.414-1.414l6-6A2 2 0 0 1 19 16h14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H19a2 2 0 0 1-1.414-.586l-6-6a2 2 0 0 1 0-2.828z\"\n fill=\"#888D93\"\n />\n <path\n d=\"M23 21l6 6M29 21l-6 6\"\n stroke=\"#888D93\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n};\n\nexport default Backspace;\n","/**\n * An autogenerated component that renders the SQRT iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Sqrt extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M14 29l4 6 9-14h7\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Sqrt;\n","/**\n * An autogenerated component that renders the EXP iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Exp extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M28 16.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM30 18h4v4h-4v-4zM14 21c0-.552.456-1 1.002-1h9.996A1 1 0 0 1 26 21v14c0 .552-.456 1-1.002 1h-9.996A1 1 0 0 1 14 35V21zm2 1h8v12h-8V22z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Exp;\n","/**\n * An autogenerated component that renders the NEQ iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Neq extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M19 33l10-18M16 21h17M16 27h17\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Neq;\n","/**\n * An autogenerated component that renders the GEQ iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Geq extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M16 33h16M16 30l16-6-16-6\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Geq;\n","/**\n * An autogenerated component that renders the LN iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Ln extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M20.836 29v-9.338h-1.778V29h1.778zm8.106 0v-4.774c0-1.316-.714-2.156-2.198-2.156-1.106 0-1.932.532-2.366 1.05v-.882H22.6V29h1.778v-4.55c.294-.406.84-.798 1.54-.798.756 0 1.246.322 1.246 1.26V29h1.778z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Ln;\n","/**\n * An autogenerated component that renders the DISMISS iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport * as React from \"react\";\n\nconst Dismiss = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M18 21l6 6 6-6\"\n strokeLinecap=\"round\"\n strokeWidth=\"2\"\n stroke=\"#71B307\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n};\n\nexport default Dismiss;\n","/**\n * An autogenerated component that renders the SIN iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Sin extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M18.655 29.168c1.876 0 2.926-.938 2.926-2.17 0-2.73-4.004-1.89-4.004-2.898 0-.378.42-.672 1.064-.672.826 0 1.596.35 2.002.784l.714-1.218c-.672-.532-1.582-.924-2.73-.924-1.778 0-2.772.994-2.772 2.128 0 2.66 4.018 1.75 4.018 2.87 0 .42-.364.728-1.134.728-.84 0-1.848-.462-2.338-.924l-.77 1.246c.714.658 1.848 1.05 3.024 1.05zm5.124-7.658c.588 0 1.064-.476 1.064-1.064 0-.588-.476-1.05-1.064-1.05a1.06 1.06 0 0 0-1.064 1.05c0 .588.49 1.064 1.064 1.064zm.896 7.49v-6.762h-1.778V29h1.778zm8.106 0v-4.774c0-1.316-.714-2.156-2.198-2.156-1.106 0-1.932.532-2.366 1.05v-.882h-1.778V29h1.778v-4.55c.294-.406.84-.798 1.54-.798.756 0 1.246.322 1.246 1.26V29h1.778z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Sin;\n","/**\n * An autogenerated component that renders the LT iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Lt extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M32 30l-16-6 16-6\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Lt;\n","/**\n * An autogenerated component that renders the CUBE_ROOT iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass CubeRoot extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M17.91 23.12c1.66 0 2.76-.81 2.76-1.98 0-.96-.86-1.51-1.57-1.58.79-.13 1.46-.72 1.46-1.5 0-1.1-.95-1.83-2.65-1.83-1.23 0-2.11.45-2.67 1.08l.83 1.08c.47-.42 1.05-.64 1.66-.64.64 0 1.12.19 1.12.61 0 .35-.39.52-1.08.52-.25 0-.77 0-.9-.01v1.53c.1-.01.61-.01.9-.01.91 0 1.19.18 1.19.56 0 .37-.38.65-1.12.65-.58 0-1.34-.23-1.82-.7l-.87 1.17c.52.6 1.48 1.05 2.76 1.05z\"\n fill={this.props.color}\n />\n <path\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M14 29l4 6 9-14h7\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default CubeRoot;\n","/**\n * An autogenerated component that renders the PLUS iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Plus extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M19 24h10M24 29V19\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Plus;\n","/**\n * An autogenerated component that renders the TAN iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Tan extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M16.93 29.168c.742 0 1.218-.196 1.484-.434l-.378-1.344c-.098.098-.35.196-.616.196-.392 0-.616-.322-.616-.742v-3.052h1.372v-1.554h-1.372V20.39h-1.792v1.848h-1.12v1.554h1.12v3.528c0 1.204.672 1.848 1.918 1.848zM25.232 29v-4.368c0-1.946-1.414-2.562-2.954-2.562-1.064 0-2.128.336-2.954 1.064l.672 1.19c.574-.532 1.246-.798 1.974-.798.896 0 1.484.448 1.484 1.134v.91c-.448-.532-1.246-.826-2.142-.826-1.078 0-2.352.602-2.352 2.184 0 1.512 1.274 2.24 2.352 2.24.882 0 1.68-.322 2.142-.868v.7h1.778zm-3.206-1.036c-.7 0-1.274-.364-1.274-.994 0-.658.574-1.022 1.274-1.022.574 0 1.134.196 1.428.588v.84c-.294.392-.854.588-1.428.588zM33.338 29v-4.774c0-1.316-.714-2.156-2.198-2.156-1.106 0-1.932.532-2.366 1.05v-.882h-1.778V29h1.778v-4.55c.294-.406.84-.798 1.54-.798.756 0 1.246.322 1.246 1.26V29h1.778z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Tan;\n","/**\n * An arrow icon, used by the other navigational keys.\n */\nimport * as React from \"react\";\n\nconst Arrow = (props) => {\n return (\n <g fill=\"none\" fillRule=\"evenodd\" {...props}>\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n stroke=\"#888D93\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M22 18l-6 6 6 6M16 24h16\"\n />\n </g>\n );\n};\n\nexport default Arrow;\n","/**\n * An component that renders the LEFT iconograpy in SVG.\n */\nimport * as React from \"react\";\n\nimport Arrow from \"./arrow\";\n\nconst Left = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <Arrow />\n </svg>\n );\n};\n\nexport default Left;\n","/**\n * A component that renders the UP iconograpy in SVG.\n */\nimport * as React from \"react\";\n\nimport Arrow from \"./arrow\";\n\nconst Up = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <Arrow transform=\"rotate(90 24 24)\" />\n </svg>\n );\n};\n\nexport default Up;\n","/**\n * A component that renders the DOWN iconograpy in SVG.\n */\nimport * as React from \"react\";\n\nimport Arrow from \"./arrow\";\n\nconst Down = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <Arrow transform=\"rotate(270 24 24)\" />\n </svg>\n );\n};\n\nexport default Down;\n","/**\n * An autogenerated component that renders the LEFT_PAREN iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass LeftParen extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M26 14c-4 6-4 14 0 20\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default LeftParen;\n","/**\n * An autogenerated component that renders the RIGHT_PAREN iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass RightParen extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M23 14c4 6 4 14 0 20\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default RightParen;\n","/**\n * An autogenerated component that renders the GT iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Gt extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M16 30l16-6-16-6\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Gt;\n","/**\n * An autogenerated component that renders the DIVIDE iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Divide extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M19 24h10\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle fill={this.props.color} cx=\"24\" cy=\"19.5\" r=\"1.5\" />\n <circle fill={this.props.color} cx=\"24\" cy=\"28.5\" r=\"1.5\" />\n </g>\n </svg>\n );\n }\n}\n\nexport default Divide;\n","/**\n * An autogenerated component that renders the PERIOD iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Period extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <circle fill={this.props.color} cx=\"24\" cy=\"30\" r=\"2\" />\n </g>\n </svg>\n );\n }\n}\n\nexport default Period;\n","/**\n * An autogenerated component that renders the PERCENT iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Percent extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <g transform=\"translate(12 12)\">\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <path\n d=\"M16 4L8 20\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle\n stroke={this.props.color}\n strokeWidth=\"2\"\n cx=\"7\"\n cy=\"7\"\n r=\"3\"\n />\n <circle\n stroke={this.props.color}\n strokeWidth=\"2\"\n cx=\"17\"\n cy=\"17\"\n r=\"3\"\n />\n </g>\n </g>\n </svg>\n );\n }\n}\n\nexport default Percent;\n","/**\n * An autogenerated component that renders the TIMES iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Times extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M20 20l8 8M28 20l-8 8\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Times;\n","/**\n * An autogenerated component that renders the EXP_3 iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Exp3 extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M14 21c0-.552.456-1 1.002-1h9.996A1 1 0 0 1 26 21v14c0 .552-.456 1-1.002 1h-9.996A1 1 0 0 1 14 35V21zm2 1h8v12h-8V22zM30.92 23.12c1.66 0 2.76-.81 2.76-1.98 0-.96-.86-1.51-1.57-1.58.79-.13 1.46-.72 1.46-1.5 0-1.1-.95-1.83-2.65-1.83-1.23 0-2.11.45-2.67 1.08l.83 1.08c.47-.42 1.05-.64 1.66-.64.64 0 1.12.19 1.12.61 0 .35-.39.52-1.08.52-.25 0-.77 0-.9-.01v1.53c.1-.01.61-.01.9-.01.91 0 1.19.18 1.19.56 0 .37-.38.65-1.12.65-.58 0-1.34-.23-1.82-.7l-.87 1.17c.52.6 1.48 1.05 2.76 1.05z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Exp3;\n","/**\n * An autogenerated component that renders the EXP_2 iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Exp2 extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M14 21c0-.552.456-1 1.002-1h9.996A1 1 0 0 1 26 21v14c0 .552-.456 1-1.002 1h-9.996A1 1 0 0 1 14 35V21zm2 1h8v12h-8V22zM33.67 23v-1.5h-2.44c1.66-1.16 2.39-2.03 2.39-3.05 0-1.34-1.13-2.22-2.7-2.22-.93 0-1.99.33-2.7 1.11l.95 1.14c.48-.45 1.04-.73 1.78-.73.49 0 .92.24.92.7 0 .66-.54 1.12-3.43 3.21V23h5.23z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Exp2;\n","/**\n * A component that renders the RIGHT iconograpy in SVG.\n */\nimport * as React from \"react\";\n\nimport Arrow from \"./arrow\";\n\nconst Right = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <Arrow transform=\"rotate(180 24 24)\" />\n </svg>\n );\n};\n\nexport default Right;\n","/**\n * An autogenerated component that renders the CDOT iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Cdot extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <g transform=\"translate(12 12)\">\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <circle fill={this.props.color} cx=\"12\" cy=\"12\" r=\"3\" />\n </g>\n </g>\n </svg>\n );\n }\n}\n\nexport default Cdot;\n","/**\n * An autogenerated component that renders the LOG_N iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass LogN extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M30 28.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM32 30h4v4h-4v-4zM12.776 29v-9.338h-1.778V29h1.778zm4.9.168c2.24 0 3.584-1.624 3.584-3.556 0-1.918-1.344-3.542-3.584-3.542-2.226 0-3.57 1.624-3.57 3.542 0 1.932 1.344 3.556 3.57 3.556zm0-1.582c-1.106 0-1.722-.91-1.722-1.974 0-1.05.616-1.96 1.722-1.96 1.106 0 1.736.91 1.736 1.96 0 1.064-.63 1.974-1.736 1.974zm7.672 4.158c1.666 0 3.654-.63 3.654-3.206v-6.3H27.21v.868c-.546-.686-1.274-1.036-2.086-1.036-1.708 0-2.982 1.232-2.982 3.444 0 2.254 1.288 3.444 2.982 3.444.826 0 1.554-.392 2.086-1.064v.686c0 1.33-1.008 1.708-1.862 1.708-.854 0-1.568-.238-2.114-.84l-.798 1.288c.854.742 1.75 1.008 2.912 1.008zm.336-4.368c-1.008 0-1.708-.7-1.708-1.862 0-1.162.7-1.862 1.708-1.862.588 0 1.232.322 1.526.77v2.184c-.294.434-.938.77-1.526.77z\"\n fill={this.props.color}\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default LogN;\n","/**\n * An autogenerated component that renders the LEQ iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Leq extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M16 33h16M32 30l-16-6 16-6\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Leq;\n","/**\n * An autogenerated component that renders the MINUS iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Minus extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M19 24h10\"\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Minus;\n","/**\n * An autogenerated component that renders the RADICAL iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass Radical extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M13 16.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM15 18h4v4h-4v-4z\"\n fill={this.props.color}\n />\n <path\n stroke={this.props.color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M14 29l4 6 9-14h7\"\n />\n </g>\n </svg>\n );\n }\n}\n\nexport default Radical;\n","/**\n * An autogenerated component that renders the FRAC iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport PropTypes from \"prop-types\";\nimport * as React from \"react\";\n\nclass FracInclusive extends React.Component {\n static propTypes = {\n color: PropTypes.string.isRequired,\n };\n\n render() {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <g transform=\"translate(12 12)\">\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <path\n d=\"M8 16.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997H8.997c-.55 0-.997-.453-.997-.997v-6.006zM10 18h4v4h-4v-4z\"\n fill={this.props.color}\n />\n <rect\n fill={this.props.color}\n x=\"2\"\n y=\"11\"\n width=\"20\"\n height=\"2\"\n rx=\"1\"\n />\n <path\n d=\"M8 .997C8 .447 8.453 0 8.997 0h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997H8.997C8.447 8 8 7.547 8 7.003V.997zM10 2h4v4h-4V2z\"\n fill={this.props.color}\n />\n </g>\n </g>\n </svg>\n );\n }\n}\n\nexport default FracInclusive;\n","/**\n * An autogenerated component that renders the JUMP_OUT_PARENTHESES iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport * as React from \"react\";\n\nconst JumpOutParentheses = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M24 18c3 3 3 9 0 12M18 18c-3 3-3 9 0 12\"\n stroke=\"#888D93\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n stroke=\"#78C008\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M32 27l3-3-3-3M22 24h12\"\n />\n </g>\n </svg>\n );\n};\n\nexport default JumpOutParentheses;\n","/**\n * An autogenerated component that renders the JUMP_OUT_EXPONENT iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport * as React from \"react\";\n\nconst JumpOutExponent = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M35 19v16M23 19l8 8M31 23v4h-4\"\n stroke=\"#78C008\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 12.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM14 14h4v4h-4v-4z\"\n fill=\"#888D93\"\n />\n </g>\n </svg>\n );\n};\n\nexport default JumpOutExponent;\n","/**\n * An autogenerated component that renders the JUMP_OUT_BASE iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport * as React from \"react\";\n\nconst JumpOutBase = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M12 28.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM14 30h4v4h-4v-4z\"\n fill=\"#888D93\"\n />\n <path\n d=\"M35 13v16M23 29l8-8M27 21h4v4\"\n stroke=\"#78C008\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n};\n\nexport default JumpOutBase;\n","/**\n * An autogenerated component that renders the JUMP_INTO_NUMERATOR iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport * as React from \"react\";\n\nconst JumpIntoNumerator = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M13 16v16M17 22l6-6M23 20v-4h-4\"\n stroke=\"#78C008\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M26 27.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM28 29h4v4h-4v-4z\"\n fill=\"#888D93\"\n />\n <path\n d=\"M35 24H25\"\n stroke=\"#888D93\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M26 13.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM28 15h4v4h-4v-4z\"\n fill=\"#78C008\"\n />\n </g>\n </svg>\n );\n};\n\nexport default JumpIntoNumerator;\n","/**\n * An autogenerated component that renders the JUMP_OUT_NUMERATOR iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport * as React from \"react\";\n\nconst JumpOutNumerator = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n stroke=\"#78C008\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M33 29l-3 3-3-3M30 18v14\"\n />\n <path\n d=\"M16 27.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM18 29h4v4h-4v-4z\"\n fill=\"#78C008\"\n />\n <path\n d=\"M25 24H15\"\n stroke=\"#888D93\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16 13.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM18 15h4v4h-4v-4z\"\n fill=\"#888D93\"\n />\n </g>\n </svg>\n );\n};\n\nexport default JumpOutNumerator;\n","/**\n * An autogenerated component that renders the JUMP_OUT_DENOMINATOR iconograpy in SVG.\n *\n * Generated with: https://gist.github.com/crm416/3c7abc88e520eaed72347af240b32590.\n */\nimport * as React from \"react\";\n\nconst JumpOutDenominator = () => {\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path d=\"M0 0h48v48H0z\" />\n <path d=\"M12 12h24v24H12z\" />\n <path\n d=\"M35 16v16m-4-4v-4h-4m-2 6l6-6\"\n stroke=\"#78C008\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 27.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM16 29h4v4h-4v-4z\"\n fill=\"#888D93\"\n />\n <path\n d=\"M23 24H13\"\n stroke=\"#888D93\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M14 13.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM16 15h4v4h-4v-4z\"\n fill=\"#888D93\"\n />\n </g>\n </svg>\n );\n};\n\nexport default JumpOutDenominator;\n","/**\n * A directory of autogenerated icon components.\n */\n\nexport {default as COS} from \"./cos\";\nexport {default as LOG} from \"./log\";\nexport {default as EQUAL} from \"./equal\";\nexport {default as BACKSPACE} from \"./backspace\";\nexport {default as SQRT} from \"./sqrt\";\nexport {default as EXP} from \"./exp\";\nexport {default as NEQ} from \"./neq\";\nexport {default as GEQ} from \"./geq\";\nexport {default as LN} from \"./ln\";\nexport {default as DISMISS} from \"./dismiss\";\nexport {default as SIN} from \"./sin\";\nexport {default as LT} from \"./lt\";\nexport {default as CUBE_ROOT} from \"./cube-root\";\nexport {default as PLUS} from \"./plus\";\nexport {default as TAN} from \"./tan\";\nexport {default as LEFT} from \"./left\";\nexport {default as UP} from \"./up\";\nexport {default as DOWN} from \"./down\";\nexport {default as LEFT_PAREN} from \"./left-paren\";\nexport {default as RIGHT_PAREN} from \"./right-paren\";\nexport {default as GT} from \"./gt\";\nexport {default as DIVIDE} from \"./divide\";\nexport {default as PERIOD} from \"./period\";\nexport {default as PERCENT} from \"./percent\";\nexport {default as TIMES} from \"./times\";\nexport {default as EXP_3} from \"./exp-3\";\nexport {default as EXP_2} from \"./exp-2\";\nexport {default as RIGHT} from \"./right\";\nexport {default as CDOT} from \"./cdot\";\nexport {default as LOG_N} from \"./log-n\";\nexport {default as LEQ} from \"./leq\";\nexport {default as MINUS} from \"./minus\";\nexport {default as NEGATIVE} from \"./minus\";\nexport {default as RADICAL} from \"./radical\";\nexport {default as FRAC} from \"./frac\";\nexport {default as JUMP_OUT_PARENTHESES} from \"./jump-out-parentheses\";\nexport {default as JUMP_OUT_EXPONENT} from \"./jump-out-exponent\";\nexport {default as JUMP_OUT_BASE} from \"./jump-out-base\";\nexport {default as JUMP_INTO_NUMERATOR} from \"./jump-into-numerator\";\nexport {default as JUMP_OUT_NUMERATOR} from \"./jump-out-numerator\";\nexport {default as JUMP_OUT_DENOMINATOR} from \"./jump-out-denominator\";\n","/**\n * A component that renders a single SVG icon.\n */\n\nimport * as React from \"react\";\n\nimport * as Iconography from \"./iconography/index\";\n\ntype Props = {\n color: string;\n name: string;\n};\n\nclass SvgIcon extends React.Component<Props> {\n render() {\n const {color, name} = this.props;\n\n // eslint-disable-next-line import/namespace\n const SvgForName = Iconography[name];\n return <SvgForName color={color} />;\n }\n}\n\nexport default SvgIcon;\n","/**\n * A component that renders a text-based icon.\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport {View, Text} from \"../../fake-react-native-web/index\";\nimport {iconSizeHeightPx, iconSizeWidthPx} from \"../common-style\";\n\nimport Styles from \"./styles\";\n\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\nconst {row, centered} = Styles;\n\ntype Props = {\n character: string;\n style?: StyleType;\n};\n\nclass TextIcon extends React.Component<Props> {\n render() {\n const {character, style} = this.props;\n\n const containerStyle = [\n row,\n centered,\n styles.size,\n styles.base,\n ...(Array.isArray(style) ? style : [style]),\n ];\n return (\n <View style={containerStyle}>\n <Text>{character}</Text>\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n size: {\n height: iconSizeHeightPx,\n width: iconSizeWidthPx,\n },\n\n base: {\n fontFamily: \"Proxima Nova\",\n fontSize: 25,\n },\n});\n\nexport default TextIcon;\n","/**\n * A component that renders an icon for a symbol with the given name.\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport {IconType} from \"../../enums\";\nimport {offBlack} from \"../common-style\";\n\nimport MathIcon from \"./math-icon\";\nimport SvgIcon from \"./svg-icon\";\nimport TextIcon from \"./text-icon\";\n\nimport type {IconConfig} from \"../../types\";\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\nconst focusedColor = \"#FFF\";\nconst unfocusedColor = offBlack;\n\ntype Props = {\n focused: boolean;\n icon: IconConfig;\n style?: StyleType;\n};\n\nclass Icon extends React.PureComponent<Props> {\n render() {\n const {focused, icon, style} = this.props;\n\n const styleWithFocus: StyleType = [\n focused ? styles.focused : styles.unfocused,\n ...(Array.isArray(style) ? style : [style]),\n ];\n\n switch (icon.type) {\n case IconType.MATH:\n return <MathIcon math={icon.data} style={styleWithFocus} />;\n\n case IconType.SVG:\n // TODO(charlie): Support passing style objects to `SvgIcon`.\n // This will require migrating the individual icons to use\n // `currentColor` and accept a `className` prop, rather than\n // relying on an explicit color prop.\n return (\n <SvgIcon\n name={icon.data}\n color={focused ? focusedColor : unfocusedColor}\n />\n );\n\n case IconType.TEXT:\n return (\n <TextIcon character={icon.data} style={styleWithFocus} />\n );\n default:\n throw new Error(\"No icon or symbol provided\");\n }\n }\n}\n\nconst styles = StyleSheet.create({\n unfocused: {\n color: unfocusedColor,\n },\n\n focused: {\n color: focusedColor,\n },\n});\n\nexport default Icon;\n","/**\n * A grid of symbols, rendered as text and positioned based on the number of\n * symbols provided. Up to four symbols will be shown.\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport {IconType} from \"../../enums\";\nimport {View} from \"../../fake-react-native-web/index\";\nimport {IconConfig} from \"../../types\";\nimport {iconSizeHeightPx, iconSizeWidthPx} from \"../common-style\";\n\nimport Icon from \"./icon\";\nimport Styles from \"./styles\";\n\nconst {row, column, centered, fullWidth} = Styles;\n\ntype Props = {\n focused: boolean;\n icons: ReadonlyArray<IconConfig>;\n};\n\nclass MultiSymbolGrid extends React.Component<Props> {\n render() {\n const {focused, icons} = this.props;\n\n // Validate that we only received math-based icons. Right now, this\n // component only supports math icons (and it should only be passed\n // variables and Greek letters, which are always rendered as math).\n // Supporting other types of icons is possible but would require\n // some styles coercion and doesn't seem worthwhile right now.\n icons.forEach((icon) => {\n if (icon.type !== IconType.MATH) {\n throw new Error(\n `Received invalid icon: type=${icon.type}, ` +\n `data=${icon.data}`,\n );\n }\n });\n\n if (icons.length === 1) {\n return <Icon icon={icons[0]} focused={focused} />;\n } else {\n const primaryIconStyle = styles.base;\n const secondaryIconStyle = [styles.base, styles.secondary];\n\n if (icons.length === 2) {\n return (\n <View style={[row, styles.size]}>\n <View\n style={[\n column,\n centered,\n fullWidth,\n styles.middleLeft,\n ]}\n >\n <Icon\n style={primaryIconStyle}\n icon={icons[0]}\n focused={focused}\n />\n </View>\n <View\n style={[\n column,\n centered,\n fullWidth,\n styles.middleRight,\n ]}\n >\n <Icon\n style={secondaryIconStyle}\n icon={icons[1]}\n focused={focused}\n />\n </View>\n </View>\n );\n } else if (icons.length >= 3) {\n return (\n <View style={[column, styles.size]}>\n <View style={row}>\n <View style={[centered, fullWidth, styles.topLeft]}>\n <Icon\n style={primaryIconStyle}\n icon={icons[0]}\n focused={focused}\n />\n </View>\n <View\n style={[centered, fullWidth, styles.topRight]}\n >\n <Icon\n style={secondaryIconStyle}\n icon={icons[1]}\n focused={focused}\n />\n </View>\n </View>\n <View style={row}>\n <View\n style={[centered, fullWidth, styles.bottomLeft]}\n >\n <Icon\n style={secondaryIconStyle}\n icon={icons[2]}\n focused={focused}\n />\n </View>\n <View\n style={[\n centered,\n fullWidth,\n styles.bottomRight,\n ]}\n >\n {icons[3] && (\n <Icon\n style={secondaryIconStyle}\n icon={icons[3]}\n focused={focused}\n />\n )}\n </View>\n </View>\n </View>\n );\n }\n }\n\n throw new Error(`Invalid number of icons: ${icons.length}`);\n }\n}\n\nconst verticalInsetPx = 2;\nconst horizontalInsetPx = 4;\n\nconst styles = StyleSheet.create({\n size: {\n height: iconSizeHeightPx,\n width: iconSizeWidthPx,\n },\n\n // For the three- and four-icon layouts.\n bottomLeft: {\n marginBottom: verticalInsetPx,\n marginLeft: horizontalInsetPx,\n },\n topLeft: {\n marginTop: verticalInsetPx,\n marginLeft: horizontalInsetPx,\n },\n topRight: {\n marginTop: verticalInsetPx,\n marginRight: horizontalInsetPx,\n },\n bottomRight: {\n marginBottom: verticalInsetPx,\n marginRight: horizontalInsetPx,\n },\n\n // For the two-icon layout.\n middleLeft: {\n marginLeft: horizontalInsetPx,\n },\n middleRight: {\n marginRight: horizontalInsetPx,\n },\n\n base: {\n fontSize: 18,\n },\n\n secondary: {\n opacity: 0.3,\n },\n});\n\nexport default MultiSymbolGrid;\n","/**\n * A component that renders a keypad button.\n */\n\nimport {StyleSheet, css} from \"aphrodite\";\nimport * as React from \"react\";\nimport {connect} from \"react-redux\";\n\nimport {BorderDirection, BorderStyles, KeyType, KeyTypes} from \"../../enums\";\nimport {View} from \"../../fake-react-native-web/index\";\nimport {\n wonderBlocksBlue,\n innerBorderColor,\n innerBorderStyle,\n innerBorderWidthPx,\n valueGrey,\n operatorGrey,\n controlGrey,\n emptyGrey,\n} from \"../common-style\";\n\nimport CornerDecal from \"./corner-decal\";\nimport Icon from \"./icon\";\nimport MultiSymbolGrid from \"./multi-symbol-grid\";\n\nimport type {Border, NonManyKeyConfig, IconConfig} from \"../../types\";\nimport type {State} from \"./store/types\";\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\ninterface ReduxProps {\n heightPx: number;\n widthPx: number;\n}\n\ninterface Props extends ReduxProps {\n ariaLabel?: string;\n borders: Border;\n childKeys: ReadonlyArray<NonManyKeyConfig>;\n disabled: boolean;\n focused: boolean;\n popoverEnabled: boolean;\n type: KeyType;\n icon?: IconConfig;\n style?: StyleType;\n onTouchCancel?: (evt: React.TouchEvent<HTMLDivElement>) => void;\n onTouchEnd?: (evt: React.TouchEvent<HTMLDivElement>) => void;\n onTouchMove?: (evt: React.TouchEvent<HTMLDivElement>) => void;\n onTouchStart?: (evt: React.TouchEvent<HTMLDivElement>) => void;\n // NOTE(matthewc)[LC-754] this is a normal React thing, but TS\n // gets mad if I don't explicitly set it as a prop\n ref?: (any) => void;\n}\n\n// eslint-disable-next-line react/no-unsafe\nclass KeypadButton extends React.PureComponent<Props> {\n buttonSizeStyle: StyleType | undefined;\n\n static defaultProps = {\n borders: BorderStyles.ALL,\n childKeys: [],\n disabled: false,\n focused: false,\n popoverEnabled: false,\n };\n\n UNSAFE_componentWillMount() {\n this.buttonSizeStyle = styleForButtonDimensions(\n this.props.heightPx,\n this.props.widthPx,\n );\n }\n\n componentDidMount() {\n this._preInjectStyles();\n }\n\n UNSAFE_componentWillUpdate(newProps, newState) {\n // Only recompute the Aphrodite StyleSheet when the button height has\n // changed. Though it is safe to recompute the StyleSheet (since\n // they're content-addressable), it saves us a bunch of hashing and\n // other work to cache it here.\n if (\n newProps.heightPx !== this.props.heightPx ||\n newProps.widthPx !== this.props.widthPx\n ) {\n this.buttonSizeStyle = styleForButtonDimensions(\n newProps.heightPx,\n newProps.widthPx,\n );\n\n this._preInjectStyles();\n }\n }\n\n _preInjectStyles = () => {\n // HACK(charlie): Pre-inject all of the possible styles for the button.\n // This avoids a flickering effect in the echo animation whereby the\n // echoes vary in size as they animate. Note that we need to account for\n // the \"initial\" styles that `View` will include, as these styles are\n // applied to `View` components and Aphrodite will consolidate the style\n // object. This method must be called whenever a property that\n // influences the possible outcomes of `this._getFocusStyle` and\n // `this._getButtonStyle` changes (such as `this.buttonSizeStyle`).\n for (const type of KeyTypes) {\n css(View.styles.initial, ...this._getFocusStyle(type));\n\n for (const borders of Object.values(BorderStyles)) {\n css(\n View.styles.initial,\n ...this._getButtonStyle(type, borders),\n );\n }\n }\n };\n\n _getFocusStyle = (type: KeyType) => {\n let focusBackgroundStyle;\n if (type === \"INPUT_NAVIGATION\" || type === \"KEYPAD_NAVIGATION\") {\n focusBackgroundStyle = styles.light;\n } else {\n focusBackgroundStyle = styles.bright;\n }\n\n return [styles.focusBox, focusBackgroundStyle];\n };\n\n _getButtonStyle = (type, borders, style?) => {\n // Select the appropriate style for the button.\n let backgroundStyle;\n switch (type) {\n case \"EMPTY\":\n backgroundStyle = styles.empty;\n break;\n\n case \"MANY\":\n case \"VALUE\":\n backgroundStyle = styles.value;\n break;\n\n case \"OPERATOR\":\n backgroundStyle = styles.operator;\n break;\n\n case \"INPUT_NAVIGATION\":\n case \"KEYPAD_NAVIGATION\":\n backgroundStyle = styles.control;\n break;\n\n case \"ECHO\":\n backgroundStyle = null;\n break;\n }\n\n const borderStyle = [];\n if (borders.includes(BorderDirection.LEFT)) {\n // @ts-expect-error TS2345\n borderStyle.push(styles.leftBorder);\n }\n if (borders.includes(BorderDirection.BOTTOM)) {\n // @ts-expect-error TS2345\n borderStyle.push(styles.bottomBorder);\n }\n\n return [\n styles.buttonBase,\n backgroundStyle,\n ...borderStyle,\n type === \"ECHO\" && styles.echo,\n this.buttonSizeStyle,\n // React Native allows you to set the 'style' props on user defined\n // components.\n // See: https://facebook.github.io/react-native/docs/style.html\n ...(Array.isArray(style) ? style : [style]),\n ];\n };\n\n render() {\n const {\n ariaLabel,\n borders,\n childKeys,\n disabled,\n focused,\n icon,\n onTouchCancel,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n popoverEnabled,\n style,\n type,\n } = this.props;\n\n // We render in the focus state if the key is focused, or if it's an\n // echo.\n const renderFocused =\n (!disabled && focused) || popoverEnabled || type === \"ECHO\";\n const buttonStyle = this._getButtonStyle(type, borders, style);\n const focusStyle = this._getFocusStyle(type);\n const iconWrapperStyle = [\n styles.iconWrapper,\n disabled ? styles.disabled : undefined,\n ];\n\n const eventHandlers = {\n onTouchCancel,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n };\n\n const maybeFocusBox = renderFocused && <View style={focusStyle} />;\n const maybeCornerDecal = !renderFocused &&\n !disabled &&\n childKeys &&\n childKeys.length > 0 && <CornerDecal style={styles.decalInset} />;\n\n if (type === \"EMPTY\") {\n return <View style={buttonStyle} {...eventHandlers} />;\n } else if (type === \"MANY\") {\n // TODO(charlie): Make the long-press interaction accessible. See\n // the TODO in key-configs.js for more.\n const manyButtonA11yMarkup = {\n role: \"button\",\n ariaLabel: childKeys[0].ariaLabel,\n };\n const icons = childKeys.map((keyConfig) => {\n return keyConfig.icon;\n }) as ReadonlyArray<IconConfig>;\n return (\n <View\n style={buttonStyle}\n {...eventHandlers}\n {...manyButtonA11yMarkup}\n >\n {maybeFocusBox}\n <View style={iconWrapperStyle}>\n <MultiSymbolGrid\n icons={icons}\n focused={renderFocused}\n />\n </View>\n {maybeCornerDecal}\n </View>\n );\n } else {\n const a11yMarkup = {\n role: \"button\",\n ariaLabel: ariaLabel,\n };\n\n return (\n <View style={buttonStyle} {...eventHandlers} {...a11yMarkup}>\n {maybeFocusBox}\n <View style={iconWrapperStyle}>\n <Icon\n icon={icon as IconConfig}\n focused={renderFocused}\n />\n </View>\n {maybeCornerDecal}\n </View>\n );\n }\n }\n}\n\nconst focusInsetPx = 4;\nconst focusBoxZIndex = 0;\n\nconst styles = StyleSheet.create({\n buttonBase: {\n flex: 1,\n cursor: \"pointer\",\n // Make the text unselectable\n userSelect: \"none\",\n justifyContent: \"center\",\n alignItems: \"center\",\n // Borders are made selectively visible.\n borderColor: innerBorderColor,\n borderStyle: innerBorderStyle,\n boxSizing: \"border-box\",\n },\n\n decalInset: {\n top: focusInsetPx,\n right: focusInsetPx,\n },\n\n // Overrides for the echo state, where we want to render the borders for\n // layout purposes, but we don't want them to be visible.\n echo: {\n borderColor: \"transparent\",\n },\n\n // Background colors and other base styles that may vary between key types.\n value: {\n backgroundColor: valueGrey,\n },\n operator: {\n backgroundColor: operatorGrey,\n },\n control: {\n backgroundColor: controlGrey,\n },\n empty: {\n backgroundColor: emptyGrey,\n cursor: \"default\",\n },\n\n bright: {\n backgroundColor: wonderBlocksBlue,\n },\n light: {\n backgroundColor: \"rgba(33, 36, 44, 0.1)\",\n },\n\n iconWrapper: {\n zIndex: focusBoxZIndex + 1,\n },\n\n focusBox: {\n position: \"absolute\",\n zIndex: focusBoxZIndex,\n left: focusInsetPx,\n right: focusInsetPx,\n bottom: focusInsetPx,\n top: focusInsetPx,\n borderRadius: 1,\n },\n\n disabled: {\n opacity: 0.3,\n },\n\n // Styles used to render the appropriate borders. Buttons are only allowed\n // to render left and bottom borders, to simplify layout.\n leftBorder: {\n borderLeftWidth: innerBorderWidthPx,\n },\n bottomBorder: {\n borderBottomWidth: innerBorderWidthPx,\n },\n});\n\nconst styleForButtonDimensions = (heightPx, widthPx) => {\n return StyleSheet.create({\n // eslint-disable-next-line react-native/no-unused-styles\n buttonSize: {\n height: heightPx,\n width: widthPx,\n maxWidth: widthPx,\n },\n }).buttonSize;\n};\n\nconst mapStateToProps = (state: State): ReduxProps => {\n return {\n heightPx: state.layout.buttonDimensions.heightPx,\n widthPx: state.layout.buttonDimensions.widthPx,\n };\n};\n\nexport default connect(mapStateToProps, null, null, {forwardRef: true})(\n KeypadButton,\n);\n","/**\n * A keypad button containing no symbols and triggering no actions on click.\n */\n\nimport * as React from \"react\";\nimport {connect} from \"react-redux\";\n\nimport KeyConfigs from \"../../data/key-configs\";\n\nimport GestureManager from \"./gesture-manager\";\nimport KeypadButton from \"./keypad-button\";\n\nimport type {State} from \"./store/types\";\n\ninterface ReduxProps {\n gestureManager: GestureManager;\n}\n\nclass EmptyKeypadButton extends React.Component<ReduxProps> {\n render() {\n const {gestureManager, ...rest} = this.props;\n\n // Register touch events on the button, but don't register its DOM node\n // or compute focus state or anything like that. We want the gesture\n // manager to know about touch events that start on empty buttons, but\n // we don't need it to know about their DOM nodes, as it doesn't need\n // to focus them or trigger presses.\n return (\n <KeypadButton\n onTouchStart={(evt: React.TouchEvent<HTMLDivElement>) =>\n gestureManager.onTouchStart(evt)\n }\n onTouchEnd={(evt: React.TouchEvent<HTMLDivElement>) =>\n gestureManager.onTouchEnd(evt)\n }\n onTouchMove={(evt: React.TouchEvent<HTMLDivElement>) =>\n gestureManager.onTouchMove(evt)\n }\n onTouchCancel={(evt: React.TouchEvent<HTMLDivElement>) =>\n gestureManager.onTouchCancel(evt)\n }\n {...KeyConfigs.NOOP}\n {...rest}\n />\n );\n }\n}\n\nconst mapStateToProps = (state: State): ReduxProps => {\n const {gestures} = state;\n return {\n gestureManager: gestures.gestureManager,\n };\n};\n\nexport default connect(mapStateToProps, null, null, {forwardRef: true})(\n EmptyKeypadButton,\n);\n","/**\n * A touchable wrapper around the base KeypadButton component. This button is\n * responsible for keeping our button ID system (which will be used to handle\n * touch events globally) opaque to the KeypadButton.\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {connect} from \"react-redux\";\n\nimport KeyConfigs from \"../../data/key-configs\";\nimport Key from \"../../data/keys\";\nimport {KeyType} from \"../../enums\";\n\nimport GestureManager from \"./gesture-manager\";\nimport KeypadButton from \"./keypad-button\";\n\nimport type {Border, IconConfig, KeyConfig} from \"../../types\";\nimport type {State} from \"./store/types\";\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\ninterface SharedProps {\n borders?: Border;\n disabled?: boolean;\n style?: StyleType;\n}\n\ninterface OwnProps extends SharedProps {\n keyConfig: KeyConfig;\n}\n\ninterface Props extends SharedProps {\n childKeyIds?: ReadonlyArray<string>;\n gestureManager: GestureManager;\n id: Key;\n focused: boolean;\n popoverEnabled: boolean;\n childKeys?: ReadonlyArray<KeyConfig>;\n ariaLabel?: string;\n icon?: IconConfig;\n type: KeyType;\n}\n\nclass TouchableKeypadButton extends React.Component<Props> {\n shouldComponentUpdate(newProps: Props) {\n // We take advantage of a few different properties of our key\n // configuration system. Namely, we know that the other props flow\n // directly from the ID, and thus don't need to be checked. If a key has\n // a custom style, we bail out (this should be rare).\n return (\n newProps.id !== this.props.id ||\n newProps.gestureManager !== this.props.gestureManager ||\n newProps.focused !== this.props.focused ||\n newProps.disabled !== this.props.disabled ||\n newProps.popoverEnabled !== this.props.popoverEnabled ||\n newProps.type !== this.props.type ||\n !!newProps.style\n );\n }\n\n componentWillUnmount() {\n const {gestureManager, id} = this.props;\n gestureManager.unregisterDOMNode(id);\n }\n\n render() {\n const {\n borders,\n childKeyIds,\n disabled,\n gestureManager,\n id,\n style,\n ...rest\n } = this.props;\n\n // Only bind the relevant event handlers if the key is enabled.\n const eventHandlers = disabled\n ? {\n onTouchStart: (evt) => evt.preventDefault(),\n }\n : {\n onTouchStart: (evt) => gestureManager.onTouchStart(evt, id),\n onTouchEnd: (evt) => gestureManager.onTouchEnd(evt),\n onTouchMove: (evt) => gestureManager.onTouchMove(evt),\n onTouchCancel: (evt) => gestureManager.onTouchCancel(evt),\n };\n\n const styleWithAddons = [\n ...(Array.isArray(style) ? style : [style]),\n styles.preventScrolls,\n ];\n\n return (\n <KeypadButton\n ref={(node) =>\n gestureManager.registerDOMNode(\n id,\n ReactDOM.findDOMNode(node),\n childKeyIds,\n )\n }\n borders={borders}\n disabled={disabled}\n style={styleWithAddons}\n {...eventHandlers}\n {...rest}\n />\n );\n }\n}\n\nconst extractProps = (keyConfig: KeyConfig) => {\n const {ariaLabel, icon, type} = keyConfig;\n return {ariaLabel, icon, type};\n};\n\nconst mapStateToProps = (state: State, ownProps: OwnProps): Props => {\n const {gestures} = state;\n\n const {keyConfig, ...rest} = ownProps;\n const {id, type} = keyConfig;\n\n const childKeyIds =\n \"childKeyIds\" in keyConfig ? keyConfig.childKeyIds : undefined;\n\n const childKeys: readonly KeyConfig[] | undefined = childKeyIds\n ? childKeyIds.map((id) => KeyConfigs[id])\n : undefined;\n\n // Override with the default child props, if the key is a multi-symbol key\n // (but not a many-symbol key, which operates under different rules).\n const useFirstChildProps =\n type !== \"MANY\" && childKeys && childKeys.length > 0;\n\n return {\n ...rest,\n childKeyIds: childKeyIds,\n gestureManager: gestures.gestureManager,\n id: id,\n\n // Add in some gesture state.\n focused: gestures.focus === id,\n popoverEnabled: gestures.popover?.parentId === id,\n\n // Pass down the child keys and any extracted props.\n childKeys,\n ...extractProps(useFirstChildProps ? childKeys[0] : keyConfig),\n };\n};\n\nconst styles = StyleSheet.create({\n preventScrolls: {\n // Touch events that start in the touchable buttons shouldn't be\n // allowed to produce page scrolls.\n touchAction: \"none\",\n },\n});\n\nexport default connect(mapStateToProps, null, null, {forwardRef: true})(\n TouchableKeypadButton,\n);\n","/**\n * A keypad button that displays an arbitrary number of symbols, with no\n * 'default' symbol.\n */\n\nimport * as React from \"react\";\n\nimport KeyConfigs from \"../../data/key-configs\";\nimport {IconType} from \"../../enums\";\nimport {KeyConfig} from \"../../types\";\n\nimport EmptyKeypadButton from \"./empty-keypad-button\";\nimport TouchableKeypadButton from \"./touchable-keypad-button\";\n\ntype Props = {\n keys: ReadonlyArray<string>;\n};\n\nclass ManyKeypadButton extends React.Component<Props> {\n static defaultProps = {\n keys: [],\n };\n\n render() {\n const {keys, ...rest} = this.props;\n\n // If we have no extra symbols, render an empty button. If we have just\n // one, render a standard button. Otherwise, capture them all in a\n // single button.\n if (keys.length === 0) {\n return <EmptyKeypadButton />;\n } else if (keys.length === 1) {\n const keyConfig = KeyConfigs[keys[0]];\n return <TouchableKeypadButton keyConfig={keyConfig} {...rest} />;\n } else {\n const keyConfig: KeyConfig = {\n id: \"MANY\",\n type: \"MANY\",\n childKeyIds: keys,\n ariaLabel: keys\n .map((key) => KeyConfigs[key].ariaLabel)\n .join(\", \"),\n icon: {\n type: IconType.SVG,\n data: \"many\",\n },\n };\n return <TouchableKeypadButton keyConfig={keyConfig} {...rest} />;\n }\n }\n}\n\nexport default ManyKeypadButton;\n","import * as React from \"react\";\n\nimport type {TabbarItemType} from \"./types\";\n\ntype Props = {\n tintColor: string;\n type: TabbarItemType;\n};\n\nconst IconAsset = function ({tintColor, type}: Props): React.ReactElement {\n switch (type) {\n case \"Geometry\": {\n return (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.57584 7.09442C7.92723 6.92984 8.3421 6.98339 8.64018 7.23179L26.6402 22.2318C26.9636 22.5013 27.0836 22.9446 26.9403 23.3404C26.7969 23.7363 26.421 24 26 24H8C7.44772 24 7 23.5523 7 23V8.00001C7 7.61199 7.22446 7.259 7.57584 7.09442ZM9 10.1351V17H13C13.5523 17 14 17.4477 14 18V22H23.238L9 10.1351ZM12 22V19H9V22H12Z\"\n fill={tintColor}\n />\n </svg>\n );\n }\n case \"Operators\": {\n return (\n <svg\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M29 6H30V7H29V6ZM27 6C27 4.89543 27.8954 4 29 4H30C31.1046 4 32 4.89543 32 6V7C32 8.10457 31.1046 9 30 9H29C27.8954 9 27 8.10457 27 7V6ZM11.1318 6.50386C11.3098 6.19229 11.6411 6 12 6H14C14.5523 6 15 6.44772 15 7C15 7.55228 14.5523 8 14 8H12.5803L8.86824 14.4961C8.68527 14.8163 8.34091 15.0098 7.97225 14.9996C7.6036 14.9894 7.2705 14.7771 7.10557 14.4472L5.10557 10.4472C4.85858 9.95324 5.05881 9.35256 5.55279 9.10557C6.04676 8.85858 6.64744 9.05881 6.89443 9.55279L8.0588 11.8815L11.1318 6.50386ZM7.70676 16.2925C8.09748 16.6829 8.09779 17.316 7.70745 17.7068C7.28543 18.1292 6.84383 18.7303 6.51157 19.3658C6.17039 20.0184 6 20.601 6 21C6 21.3789 6.17235 21.9897 6.51638 22.6649C6.85315 23.3259 7.28488 23.9121 7.66786 24.2557C8.07892 24.6246 8.11314 25.2568 7.74429 25.6679C7.37544 26.0789 6.7432 26.1131 6.33214 25.7443C5.7161 25.1915 5.14783 24.3844 4.73434 23.5728C4.32813 22.7755 3.99999 21.8345 4 21C4.00001 20.1391 4.3301 19.2217 4.73917 18.4392C5.15715 17.6397 5.71554 16.8708 6.29255 16.2932C6.68288 15.9025 7.31605 15.9022 7.70676 16.2925ZM11.2932 16.2925C11.684 15.9022 12.3171 15.9025 12.7075 16.2932C13.2845 16.8708 13.8428 17.6397 14.2608 18.4392C14.6699 19.2217 15 20.1391 15 21C15 21.8345 14.6719 22.7755 14.2657 23.5728C13.8522 24.3844 13.2839 25.1915 12.6679 25.7443C12.2568 26.1131 11.6246 26.0789 11.2557 25.6679C10.8869 25.2568 10.9211 24.6246 11.3321 24.2557C11.7151 23.9121 12.1469 23.3259 12.4836 22.6649C12.8276 21.9897 13 21.3789 13 21C13 20.601 12.8296 20.0184 12.4884 19.3658C12.1562 18.7303 11.7146 18.1292 11.2925 17.7068C10.9022 17.316 10.9025 16.6829 11.2932 16.2925ZM27.9363 17.6489C28.1302 18.166 27.8682 18.7424 27.3511 18.9363L21.848 21L27.3511 23.0637C27.8682 23.2576 28.1302 23.834 27.9363 24.3511C27.7424 24.8682 27.166 25.1302 26.6489 24.9363L18.6489 21.9363C18.2586 21.79 18 21.4168 18 21C18 20.5832 18.2586 20.21 18.6489 20.0637L26.6489 17.0637C27.166 16.8698 27.7424 17.1318 27.9363 17.6489ZM21 8V13H24V8H21ZM20 6C19.4477 6 19 6.44772 19 7V14C19 14.5523 19.4477 15 20 15H25C25.5523 15 26 14.5523 26 14V7C26 6.44772 25.5523 6 25 6H20Z\"\n fill={tintColor}\n />\n </svg>\n );\n }\n case \"Numbers\": {\n return (\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10.4123 19.5794V21.0004H4.71434V19.5794H6.73034V14.0214C6.73034 13.9001 6.73267 13.7764 6.73734 13.6504C6.742 13.5244 6.749 13.3961 6.75834 13.2654L5.42834 14.3714C5.335 14.4414 5.244 14.4858 5.15534 14.5044C5.06667 14.5231 4.98267 14.5254 4.90334 14.5114C4.824 14.4928 4.754 14.4648 4.69334 14.4274C4.63267 14.3854 4.586 14.3434 4.55334 14.3014L3.94434 13.4824L7.06634 10.8364H8.65534V19.5794H10.4123ZM18.7924 19.2294C19.0024 19.2294 19.1658 19.2878 19.2824 19.4044C19.4038 19.5211 19.4644 19.6751 19.4644 19.8664V21.0004H12.4224V20.3704C12.4224 20.2491 12.4481 20.1184 12.4994 19.9784C12.5508 19.8338 12.6371 19.7031 12.7584 19.5864L15.7684 16.5694C16.0251 16.3128 16.2514 16.0678 16.4474 15.8344C16.6434 15.5964 16.8068 15.3654 16.9374 15.1414C17.0681 14.9128 17.1661 14.6818 17.2314 14.4484C17.2968 14.2151 17.3294 13.9701 17.3294 13.7134C17.3294 13.2608 17.2128 12.9178 16.9794 12.6844C16.7461 12.4464 16.4171 12.3274 15.9924 12.3274C15.8058 12.3274 15.6331 12.3554 15.4744 12.4114C15.3204 12.4628 15.1804 12.5351 15.0544 12.6284C14.9331 12.7218 14.8281 12.8314 14.7394 12.9574C14.6508 13.0834 14.5854 13.2211 14.5434 13.3704C14.4594 13.6038 14.3451 13.7601 14.2004 13.8394C14.0604 13.9141 13.8598 13.9304 13.5984 13.8884L12.5764 13.7064C12.6511 13.2118 12.7911 12.7778 12.9964 12.4044C13.2018 12.0311 13.4584 11.7208 13.7664 11.4734C14.0744 11.2261 14.4268 11.0418 14.8234 10.9204C15.2201 10.7944 15.6471 10.7314 16.1044 10.7314C16.5851 10.7314 17.0214 10.8038 17.4134 10.9484C17.8101 11.0884 18.1484 11.2868 18.4284 11.5434C18.7084 11.7954 18.9254 12.1011 19.0794 12.4604C19.2334 12.8198 19.3104 13.2164 19.3104 13.6504C19.3104 14.0238 19.2568 14.3691 19.1494 14.6864C19.0421 15.0038 18.8951 15.3071 18.7084 15.5964C18.5264 15.8811 18.3141 16.1588 18.0714 16.4294C17.8288 16.7001 17.5721 16.9731 17.3014 17.2484L15.1454 19.4534C15.3834 19.3834 15.6191 19.3298 15.8524 19.2924C16.0858 19.2504 16.3051 19.2294 16.5104 19.2294H18.7924ZM21.4535 13.7064C21.5282 13.2118 21.6682 12.7778 21.8735 12.4044C22.0789 12.0311 22.3355 11.7208 22.6435 11.4734C22.9515 11.2261 23.3015 11.0418 23.6935 10.9204C24.0902 10.7944 24.5172 10.7314 24.9745 10.7314C25.4599 10.7314 25.8939 10.8014 26.2765 10.9414C26.6639 11.0768 26.9905 11.2634 27.2565 11.5014C27.5225 11.7394 27.7255 12.0171 27.8655 12.3344C28.0102 12.6518 28.0825 12.9924 28.0825 13.3564C28.0825 13.6784 28.0475 13.9631 27.9775 14.2104C27.9122 14.4531 27.8119 14.6654 27.6765 14.8474C27.5459 15.0294 27.3825 15.1834 27.1865 15.3094C26.9952 15.4354 26.7735 15.5404 26.5215 15.6244C27.6882 16.0071 28.2715 16.7841 28.2715 17.9554C28.2715 18.4734 28.1759 18.9308 27.9845 19.3274C27.7932 19.7194 27.5365 20.0484 27.2145 20.3144C26.8925 20.5804 26.5169 20.7811 26.0875 20.9164C25.6629 21.0471 25.2172 21.1124 24.7505 21.1124C24.2559 21.1124 23.8195 21.0564 23.4415 20.9444C23.0635 20.8324 22.7299 20.6644 22.4405 20.4404C22.1559 20.2164 21.9109 19.9364 21.7055 19.6004C21.5002 19.2598 21.3205 18.8631 21.1665 18.4104L22.0205 18.0604C22.2445 17.9671 22.4522 17.9414 22.6435 17.9834C22.8395 18.0254 22.9795 18.1281 23.0635 18.2914C23.1569 18.4688 23.2549 18.6321 23.3575 18.7814C23.4649 18.9308 23.5839 19.0614 23.7145 19.1734C23.8452 19.2808 23.9922 19.3648 24.1555 19.4254C24.3235 19.4861 24.5149 19.5164 24.7295 19.5164C25.0002 19.5164 25.2359 19.4721 25.4365 19.3834C25.6372 19.2948 25.8052 19.1804 25.9405 19.0404C26.0759 18.8958 26.1762 18.7348 26.2415 18.5574C26.3115 18.3754 26.3465 18.1958 26.3465 18.0184C26.3465 17.7851 26.3255 17.5751 26.2835 17.3884C26.2415 17.1971 26.1435 17.0361 25.9895 16.9054C25.8402 16.7701 25.6162 16.6674 25.3175 16.5974C25.0235 16.5228 24.6222 16.4854 24.1135 16.4854V15.1274C24.5382 15.1274 24.8859 15.0924 25.1565 15.0224C25.4272 14.9524 25.6395 14.8544 25.7935 14.7284C25.9475 14.6024 26.0525 14.4508 26.1085 14.2734C26.1692 14.0961 26.1995 13.9024 26.1995 13.6924C26.1995 13.2491 26.0829 12.9108 25.8495 12.6774C25.6209 12.4441 25.2942 12.3274 24.8695 12.3274C24.6829 12.3274 24.5102 12.3554 24.3515 12.4114C24.1975 12.4628 24.0575 12.5351 23.9315 12.6284C23.8102 12.7218 23.7052 12.8314 23.6165 12.9574C23.5279 13.0834 23.4625 13.2211 23.4205 13.3704C23.3319 13.6038 23.2175 13.7601 23.0775 13.8394C22.9375 13.9141 22.7345 13.9304 22.4685 13.8884L21.4535 13.7064Z\"\n fill={tintColor}\n />\n </svg>\n );\n }\n case \"Extras\": {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M232,172a36,36,0,0,1-72,0V72H96V200a8,8,0,0,1-16,0V72H72a40,40,0,0,0-40,40,8,8,0,0,1-16,0A56.06,56.06,0,0,1,72,56H224a8,8,0,0,1,0,16H176V172a20,20,0,0,0,40,0,8,8,0,0,1,16,0Z\" />\n </svg>\n );\n }\n default: {\n // type as never;\n throw new Error(\"Invalid icon type\");\n }\n }\n};\n\nexport default IconAsset;\n","import Clickable from \"@khanacademy/wonder-blocks-clickable\";\nimport Color from \"@khanacademy/wonder-blocks-color\";\nimport {View} from \"@khanacademy/wonder-blocks-core\";\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport IconAsset from \"./icons\";\n\nimport type {TabbarItemType} from \"./types\";\n\nconst styles = StyleSheet.create({\n base: {\n display: \"flex\",\n width: 44,\n height: 38,\n boxSizing: \"border-box\",\n borderRadius: 3,\n border: `1px solid transparent`,\n marginRight: 1,\n marginLeft: 1,\n },\n hovered: {\n background: `linear-gradient(0deg, rgba(24, 101, 242, 0.32), rgba(24, 101, 242, 0.32)), ${Color.white}`,\n border: \"1px solid #1865F2\",\n },\n pressed: {\n background: \"#1B50B3\",\n },\n focused: {\n outline: \"none\",\n border: `2px solid ${Color.blue}`,\n },\n innerBox: {\n boxSizing: \"border-box\",\n border: `1px solid transparent`,\n borderRadius: 2,\n display: \"flex\",\n flex: 1,\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n innerBoxPressed: {\n border: `1px solid ${Color.white}`,\n },\n activeIndicator: {\n position: \"absolute\",\n boxSizing: \"border-box\",\n bottom: 3,\n width: 36,\n height: 3,\n marginLeft: 3,\n },\n});\n\nfunction imageTintColor(\n itemState: ItemState,\n hovered: boolean,\n focused: boolean,\n pressed: boolean,\n): string {\n if (itemState === \"disabled\") {\n return Color.offBlack64;\n } else if (pressed) {\n return Color.white;\n } else if (itemState === \"active\") {\n return Color.blue;\n } else if (hovered) {\n return Color.blue;\n }\n return Color.offBlack64;\n}\nexport type ItemState = \"active\" | \"inactive\" | \"disabled\";\ntype Props = {\n onClick: () => void;\n itemState: ItemState;\n itemType: TabbarItemType;\n};\n\nclass TabbarItem extends React.Component<Props> {\n render(): React.ReactNode {\n const {onClick, itemType, itemState} = this.props;\n return (\n <Clickable\n onClick={onClick}\n disabled={itemState === \"disabled\"}\n aria-label={itemType}\n >\n {({hovered, focused, pressed}) => {\n const tintColor = imageTintColor(\n itemState,\n hovered,\n focused,\n pressed,\n );\n\n return (\n <View\n style={[\n styles.base,\n itemState !== \"disabled\" &&\n hovered &&\n styles.hovered,\n focused && styles.focused,\n pressed && styles.pressed,\n ]}\n >\n <View\n style={[\n styles.innerBox,\n pressed && styles.innerBoxPressed,\n ]}\n >\n <IconAsset\n type={itemType}\n tintColor={tintColor}\n />\n </View>\n {itemState === \"active\" && (\n <View\n style={[\n styles.activeIndicator,\n {\n backgroundColor: tintColor,\n },\n ]}\n />\n )}\n </View>\n );\n }}\n </Clickable>\n );\n }\n}\n\nexport const TabbarItemForTesting = TabbarItem;\n\nexport default TabbarItem;\n","import {View, StyleType} from \"@khanacademy/wonder-blocks-core\";\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport TabbarItem from \"./item\";\nimport {TabbarItemType} from \"./types\";\n\nconst styles = StyleSheet.create({\n tabbar: {\n display: \"flex\",\n flexDirection: \"row\",\n paddingTop: 2,\n paddingBottom: 2,\n },\n});\n\ntype Props = {\n items: ReadonlyArray<TabbarItemType>;\n selectedItem: TabbarItemType;\n onSelectItem: (item: TabbarItemType) => void;\n style?: StyleType;\n};\n\nfunction Tabbar(props: Props): React.ReactElement {\n const {items, selectedItem, onSelectItem, style} = props;\n\n return (\n <View style={[styles.tabbar, style]}>\n {items.map((item) => (\n <TabbarItem\n key={`tabbar-item-${item}`}\n itemState={item === selectedItem ? \"active\" : \"inactive\"}\n itemType={item}\n onClick={() => {\n onSelectItem(item);\n }}\n />\n ))}\n </View>\n );\n}\n\nexport default Tabbar;\n","/**\n * This file contains all of the z-index values used throughout the math-input\n * component and its children.\n */\n\nexport const popover = 1;\nexport const echo = 2;\nexport const keypad = 1060;\n","/**\n * A component that renders and animates the selection state effect effect.\n */\n\nimport * as React from \"react\";\nimport {TransitionGroup, CSSTransition} from \"react-transition-group\";\n\nimport KeyConfigs from \"../../data/key-configs\";\nimport Key from \"../../data/keys\";\nimport {EchoAnimationType} from \"../../enums\";\n\nimport KeypadButton from \"./keypad-button\";\nimport * as zIndexes from \"./z-indexes\";\n\nimport type {Bound, Echo as EchoType} from \"../../types\";\n\ntype EchoProps = {\n animationDurationMs: number;\n id: Key;\n initialBounds: Bound;\n onAnimationFinish: () => void;\n};\n\nclass Echo extends React.Component<EchoProps> {\n componentDidMount() {\n // NOTE(charlie): This is somewhat unfortunate, as the component is\n // encoding information about its own animation, of which it should be\n // ignorant. However, there doesn't seem to be a cleaner way to make\n // this happen, and at least here, all the animation context is\n // colocated in this file.\n const {animationDurationMs, onAnimationFinish} = this.props;\n setTimeout(() => onAnimationFinish(), animationDurationMs);\n }\n\n render() {\n const {id, initialBounds} = this.props;\n const {icon} = KeyConfigs[id];\n\n const containerStyle: any = {\n zIndex: zIndexes.echo,\n position: \"absolute\",\n pointerEvents: \"none\",\n ...initialBounds,\n };\n\n // NOTE(charlie): In some browsers, Aphrodite doesn't seem to flush its\n // styles quickly enough, so there's a flickering effect on the first\n // animation. Thus, it's much safer to do the styles purely inline.\n // <View> makes this difficult because some of its defaults, which are\n // applied via StyleSheet, will override our inlines.\n return (\n <div style={containerStyle}>\n <KeypadButton icon={icon} type={\"ECHO\"} />\n </div>\n );\n }\n}\n\ntype EchoManagerProps = {\n echoes: ReadonlyArray<EchoType>;\n onAnimationFinish?: (animationId: string) => void;\n};\n\nclass EchoManager extends React.Component<EchoManagerProps> {\n _animationConfigForType = (animationType) => {\n // NOTE(charlie): These must be kept in sync with the transition\n // durations and classnames specified in echo.css.\n let animationDurationMs;\n let animationTransitionName;\n\n switch (animationType) {\n case EchoAnimationType.SLIDE_AND_FADE:\n animationDurationMs = 400;\n animationTransitionName = \"echo-slide-and-fade\";\n break;\n\n case EchoAnimationType.FADE_ONLY:\n animationDurationMs = 300;\n animationTransitionName = \"echo-fade-only\";\n break;\n\n case EchoAnimationType.LONG_FADE_ONLY:\n animationDurationMs = 400;\n animationTransitionName = \"echo-long-fade-only\";\n break;\n\n default:\n throw new Error(\n `Invalid echo animation type: ${animationType}`,\n );\n }\n\n return {\n animationDurationMs,\n animationTransitionName,\n };\n };\n\n render() {\n const {echoes, onAnimationFinish} = this.props;\n\n return (\n <span>\n {Object.keys(EchoAnimationType).map((animationType) => {\n // Collect the relevant parameters for the animation type, and\n // filter for the appropriate echoes.\n const {animationDurationMs, animationTransitionName} =\n this._animationConfigForType(animationType);\n const echoesForType = echoes.filter((echo) => {\n return echo.animationType === animationType;\n });\n\n // TODO(charlie): Manage this animation with Aphrodite styles.\n // Right now, there's a bug in the autoprefixer that breaks CSS\n // transitions on mobile Safari.\n // See: https://github.com/Khan/aphrodite/issues/68.\n // As such, we have to do this with a stylesheet.\n return (\n <TransitionGroup key={animationType}>\n {echoesForType.map((echo) => {\n const {animationId} = echo;\n return (\n <CSSTransition\n classNames={animationTransitionName}\n enter={true}\n exit={false}\n timeout={{\n enter: animationDurationMs,\n }}\n key={animationId}\n >\n <Echo\n animationDurationMs={\n animationDurationMs\n }\n onAnimationFinish={() =>\n onAnimationFinish?.(animationId)\n }\n {...echo}\n />\n </CSSTransition>\n );\n })}\n </TransitionGroup>\n );\n })}\n </span>\n );\n }\n}\n\nexport default EchoManager;\n","/**\n * A popover that renders a set of keys floating above the page.\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport {BorderStyles} from \"../../enums\";\nimport {View} from \"../../fake-react-native-web/index\";\nimport {KeyConfig} from \"../../types\";\n\nimport TouchableKeypadButton from \"./touchable-keypad-button\";\nimport * as zIndexes from \"./z-indexes\";\n\ntype Prop = {\n keys: ReadonlyArray<KeyConfig>;\n};\n\nclass MultiSymbolPopover extends React.Component<Prop> {\n render() {\n const {keys} = this.props;\n\n // TODO(charlie): We have to require this lazily because of a cyclic\n // dependence in our components.\n return (\n <View style={styles.container}>\n {keys.map((key) => {\n return (\n <TouchableKeypadButton\n keyConfig={key}\n borders={BorderStyles.NONE}\n />\n );\n })}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"column-reverse\",\n position: \"relative\",\n width: \"100%\",\n borderRadius: 2,\n boxShadow: \"0 2px 6px rgba(0, 0, 0, 0.3)\",\n zIndex: zIndexes.popover,\n },\n\n // eslint-disable-next-line react-native/no-unused-styles\n popoverButton: {\n backgroundColor: \"#FFF\",\n borderWidth: 0,\n },\n});\n\nexport default MultiSymbolPopover;\n","/**\n * A component that renders and animates the popovers that appear over the\n * multi-functional keys.\n */\n\nimport * as React from \"react\";\nimport {CSSTransition} from \"react-transition-group\";\n\nimport KeyConfigs from \"../../data/key-configs\";\n\nimport MultiSymbolPopover from \"./multi-symbol-popover\";\n\nimport type {Popover, KeyConfig} from \"../../types\";\n\n// NOTE(charlie): These must be kept in sync with the transition durations and\n// classnames specified in popover.less.\nconst animationTransitionName = \"popover\";\nconst animationDurationMs = 200;\n\ntype Props = {\n // TODO(matthewc) should be something like Bound, but couldn't fix errors\n bounds: any;\n childKeys: ReadonlyArray<KeyConfig>;\n};\n\n// A container component used to position a popover absolutely at a specific\n// position.\nclass PopoverContainer extends React.Component<Props> {\n render() {\n const {bounds, childKeys} = this.props;\n\n const containerStyle = {\n position: \"absolute\",\n ...bounds,\n };\n\n return (\n <div style={containerStyle}>\n <MultiSymbolPopover keys={childKeys} />\n </div>\n );\n }\n}\n\ntype PopoverManagerProps = {\n popover: Popover | null;\n};\n\nclass PopoverManager extends React.Component<PopoverManagerProps> {\n render() {\n const {popover} = this.props;\n\n return popover ? (\n <CSSTransition\n in={true}\n classNames={animationTransitionName}\n enter={true}\n exit={false}\n timeout={{\n enter: animationDurationMs,\n }}\n >\n <PopoverContainer\n key={popover.childKeyIds[0]}\n bounds={popover.bounds}\n childKeys={popover.childKeyIds.map((id) => KeyConfigs[id])}\n />\n </CSSTransition>\n ) : null;\n }\n}\n\nexport default PopoverManager;\n","import Key from \"../../../data/keys\";\n\nimport type {\n Bound,\n KeypadConfiguration,\n KeyHandler,\n Cursor,\n ActiveNodesObj,\n} from \"../../../types\";\n\n// naming convention: verb + noun\n// the noun should be one of the other properties in the object that's\n// being dispatched\n\ntype DismissKeypadAction = {\n type: \"DismissKeypad\";\n};\n\nexport const dismissKeypad = (): DismissKeypadAction => {\n return {\n type: \"DismissKeypad\",\n };\n};\n\ntype ActivateKeypadAction = {\n type: \"ActivateKeypad\";\n};\n\nexport const activateKeypad = (): ActivateKeypadAction => {\n return {\n type: \"ActivateKeypad\",\n };\n};\n\n/**\n * Configure the keypad with the provided configuration parameters.\n */\ntype ConfigureKeypadAction = {\n type: \"ConfigureKeypad\";\n configuration: KeypadConfiguration;\n};\n\nexport const configureKeypad = (\n configuration: KeypadConfiguration,\n): ConfigureKeypadAction => {\n return {\n type: \"ConfigureKeypad\",\n configuration,\n };\n};\n\ntype SetPageSizeAction = {\n type: \"SetPageSize\";\n pageWidthPx: number;\n pageHeightPx: number;\n};\n\nexport const setPageSize = (\n pageWidthPx: number,\n pageHeightPx: number,\n): SetPageSizeAction => {\n return {\n type: \"SetPageSize\",\n pageWidthPx,\n pageHeightPx,\n };\n};\n\ntype RemoveEchoAction = {\n type: \"RemoveEcho\";\n animationId: string;\n};\n\nexport const removeEcho = (animationId: string): RemoveEchoAction => {\n return {\n type: \"RemoveEcho\",\n animationId,\n };\n};\n\n// Input-related actions.\ntype SetKeyHandlerAction = {\n type: \"SetKeyHandler\";\n keyHandler: KeyHandler;\n};\n\nexport const setKeyHandler = (keyHandler: KeyHandler): SetKeyHandlerAction => {\n return {\n type: \"SetKeyHandler\",\n keyHandler,\n };\n};\n\ntype SetCursorAction = {\n type: \"SetCursor\";\n cursor: Cursor;\n};\n\nexport const setCursor = (cursor: Cursor): SetCursorAction => {\n return {\n type: \"SetCursor\",\n cursor,\n };\n};\n\n// Gesture actions\ntype SetActiveNodesAction = {\n type: \"SetActiveNodes\";\n activeNodes: any;\n};\n\nexport const setActiveNodes = (\n activeNodes: ActiveNodesObj,\n): SetActiveNodesAction => {\n return {\n type: \"SetActiveNodes\",\n activeNodes,\n };\n};\n\ntype PressKeyAction = {\n type: \"PressKey\";\n key: Key;\n initialBounds: Bound;\n inPopover: boolean;\n};\n\nexport const pressKey = (\n key: Key,\n initialBounds: Bound,\n inPopover: any,\n): PressKeyAction => {\n return {\n type: \"PressKey\",\n key,\n initialBounds,\n inPopover,\n };\n};\n\nexport type Action =\n | DismissKeypadAction\n | ActivateKeypadAction\n | ConfigureKeypadAction\n | SetPageSizeAction\n | RemoveEchoAction\n | SetKeyHandlerAction\n | SetCursorAction\n | SetActiveNodesAction\n | PressKeyAction;\n","/**\n * A keypad component that acts as a container for rows or columns of buttons,\n * and manages the rendering of echo animations on top of those buttons.\n */\n\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {connect} from \"react-redux\";\n\nimport {View} from \"../../fake-react-native-web/index\";\n\nimport EchoManager from \"./echo-manager\";\nimport PopoverManager from \"./popover-manager\";\nimport {removeEcho} from \"./store/actions\";\n\nimport type {Bound, Popover, Echo} from \"../../types\";\nimport type {State} from \"./store/types\";\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\ninterface ReduxProps {\n active: boolean;\n echoes: ReadonlyArray<Echo>;\n popover: Popover | null;\n}\n\ninterface Props extends ReduxProps {\n children: React.ReactNode;\n style?: StyleType;\n removeEcho?: (animationId: string) => void;\n}\n\n// eslint-disable-next-line react/no-unsafe\nclass Keypad extends React.Component<Props> {\n _isMounted: boolean | undefined;\n _resizeTimeout: number | null | undefined;\n _container: Bound | null | undefined;\n\n componentDidMount() {\n this._isMounted = true;\n\n window.addEventListener(\"resize\", this._onResize);\n this._updateSizeAndPosition();\n }\n\n UNSAFE_componentWillReceiveProps(newProps) {\n if (!this._container && (newProps.popover || newProps.echoes.length)) {\n this._computeContainer();\n }\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n\n window.removeEventListener(\"resize\", this._onResize);\n }\n\n _computeContainer = () => {\n const domNode = ReactDOM.findDOMNode(this) as Element;\n this._container = domNode.getBoundingClientRect();\n };\n\n _updateSizeAndPosition = () => {\n // Mark the container for recalculation next time the keypad is\n // opened.\n // TODO(charlie): Since we're not recalculating the container\n // immediately, if you were to resize the page while a popover were\n // active, you'd likely get unexpected behavior. This seems very\n // difficult to do and, as such, incredibly unlikely, but we may\n // want to reconsider the caching here.\n this._container = null;\n };\n\n _onResize = () => {\n // Whenever the page resizes, we need to recompute the container's\n // bounding box. This is the only time that the bounding box can change.\n\n // Throttle resize events -- taken from:\n // https://developer.mozilla.org/en-US/docs/Web/Events/resize\n if (this._resizeTimeout == null) {\n this._resizeTimeout = window.setTimeout(() => {\n this._resizeTimeout = null;\n\n if (this._isMounted) {\n this._updateSizeAndPosition();\n }\n }, 66);\n }\n };\n\n render() {\n const {children, echoes, removeEcho, popover, style} = this.props;\n\n // Translate the echo boxes, as they'll be positioned absolutely to\n // this relative container.\n const relativeEchoes = echoes.map((echo) => {\n const {initialBounds, ...rest} = echo;\n return {\n ...rest,\n initialBounds: {\n // @ts-expect-error TS2533\n top: initialBounds.top - this._container.top,\n // @ts-expect-error TS2533\n right: initialBounds.right - this._container.left,\n // @ts-expect-error TS2533\n bottom: initialBounds.bottom - this._container.top,\n // @ts-expect-error TS2533\n left: initialBounds.left - this._container.left,\n width: initialBounds.width,\n height: initialBounds.height,\n },\n };\n });\n\n // Translate the popover bounds from page-absolute to keypad-relative.\n // Note that we only need three bounds, since popovers are anchored to\n // the bottom left corners of the keys over which they appear.\n const relativePopover = popover && {\n ...popover,\n bounds: {\n bottom:\n // @ts-expect-error TS2533\n this._container.height -\n // @ts-expect-error TS2533\n (popover.bounds.bottom - this._container.top),\n // @ts-expect-error TS2533\n left: popover.bounds.left - this._container.left,\n width: popover.bounds.width,\n },\n };\n\n return (\n <View style={style}>\n {children}\n <EchoManager\n echoes={relativeEchoes}\n onAnimationFinish={removeEcho}\n />\n <PopoverManager popover={relativePopover} />\n </View>\n );\n }\n}\n\nconst mapStateToProps = (state: State): ReduxProps => {\n return {\n echoes: state.echoes.echoes,\n active: state.keypad.active,\n popover: state.gestures.popover,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n removeEcho: (animationId) => {\n dispatch(removeEcho(animationId));\n },\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps, null, {\n forwardRef: true,\n})(Keypad);\n","/**\n * A keypad with two pages of keys.\n */\n\nimport Color from \"@khanacademy/wonder-blocks-color\";\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\nimport {connect} from \"react-redux\";\n\nimport {View} from \"../../fake-react-native-web/index\";\nimport {\n innerBorderColor,\n innerBorderStyle,\n innerBorderWidthPx,\n offBlack16,\n} from \"../common-style\";\nimport Tabbar from \"../tabbar/tabbar\";\nimport {TabbarItemType} from \"../tabbar/types\";\n\nimport Keypad from \"./keypad\";\nimport {State as ReduxState} from \"./store/types\";\nimport Styles from \"./styles\";\n\nconst {column, row, fullWidth} = Styles;\n\ninterface ReduxProps {\n paginationEnabled: boolean;\n}\n\ninterface Props extends ReduxProps {\n leftPage: React.ReactNode;\n rightPage: React.ReactNode;\n}\n\ntype State = {\n selectedPage: TabbarItemType;\n};\n\nclass TwoPageKeypad extends React.Component<Props, State> {\n state: State = {\n selectedPage: \"Numbers\",\n };\n\n render() {\n const {leftPage, paginationEnabled, rightPage} = this.props;\n\n const {selectedPage} = this.state;\n\n if (paginationEnabled) {\n return (\n <Keypad style={[column, styles.keypad]}>\n <Tabbar\n items={[\"Numbers\", \"Operators\"]}\n selectedItem={selectedPage}\n onSelectItem={(selectedItem) => {\n this.setState({selectedPage: selectedItem});\n }}\n style={styles.tabbar}\n />\n <View style={styles.borderTop}>\n {selectedPage === \"Numbers\" && rightPage}\n {selectedPage === \"Operators\" && leftPage}\n </View>\n </Keypad>\n );\n } else {\n return (\n <Keypad style={styles.keypad}>\n <View style={row}>\n <View style={fullWidth}>{leftPage}</View>\n <View style={[styles.borderLeft, fullWidth]}>\n {rightPage}\n </View>\n </View>\n </Keypad>\n );\n }\n }\n}\n\nconst styles = StyleSheet.create({\n keypad: {\n // Set the background to light grey, so that when the user drags the\n // keypad pages past the edges, there's a grey backdrop.\n backgroundColor: offBlack16,\n },\n\n borderTop: {\n borderTop:\n `${innerBorderWidthPx}px ${innerBorderStyle} ` +\n `${innerBorderColor}`,\n },\n borderLeft: {\n borderLeft:\n `${innerBorderWidthPx}px ${innerBorderStyle} ` +\n `${innerBorderColor}`,\n boxSizing: \"content-box\",\n },\n tabbar: {\n background: Color.offWhite,\n borderTop: `1px solid ${Color.offBlack50}`,\n borderBottom: `1px solid ${Color.offBlack50}`,\n },\n});\n\nconst mapStateToProps = (state: ReduxState): ReduxProps => {\n return {\n paginationEnabled: state.layout.paginationEnabled,\n };\n};\n\nexport default connect(mapStateToProps, null, null, {forwardRef: true})(\n TwoPageKeypad,\n);\n","/**\n * A keypad that includes all of the expression symbols.\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\nimport {connect} from \"react-redux\";\n\nimport KeyConfigs from \"../../data/key-configs\";\nimport {BorderStyles} from \"../../enums\";\nimport {View} from \"../../fake-react-native-web/index\";\nimport {valueGrey, controlGrey} from \"../common-style\";\nimport {CursorContext} from \"../input/cursor-contexts\";\n\nimport ManyKeypadButton from \"./many-keypad-button\";\nimport Styles from \"./styles\";\nimport TouchableKeypadButton from \"./touchable-keypad-button\";\nimport TwoPageKeypad from \"./two-page-keypad\";\n\nimport type {KeypadLayout} from \"../../types\";\nimport type {State} from \"./store/types\";\n\nconst {row, column, oneColumn, fullWidth, roundedTopLeft, roundedTopRight} =\n Styles;\n\ninterface ReduxProps {\n cursorContext?: CursorContext;\n dynamicJumpOut: boolean;\n}\n\ninterface Props extends ReduxProps {\n extraKeys?: ReadonlyArray<string>;\n roundTopLeft: boolean;\n roundTopRight: boolean;\n}\n\nexport const expressionKeypadLayout: KeypadLayout = {\n rows: 4,\n columns: 5,\n numPages: 2,\n // Since we include a two-key popover in the top-right, when the popover\n // is visible, the keypad will expand to fill the equivalent of five\n // rows vertically.\n maxVisibleRows: 4,\n};\n\nclass ExpressionKeypad extends React.Component<Props> {\n render() {\n const {\n cursorContext,\n dynamicJumpOut,\n extraKeys,\n roundTopLeft,\n roundTopRight,\n } = this.props;\n\n let dismissOrJumpOutKey;\n if (dynamicJumpOut) {\n switch (cursorContext) {\n case CursorContext.IN_PARENS:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_PARENTHESES;\n break;\n\n case CursorContext.IN_SUPER_SCRIPT:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_EXPONENT;\n break;\n\n case CursorContext.IN_SUB_SCRIPT:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_BASE;\n break;\n\n case CursorContext.BEFORE_FRACTION:\n dismissOrJumpOutKey = KeyConfigs.JUMP_INTO_NUMERATOR;\n break;\n\n case CursorContext.IN_NUMERATOR:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_NUMERATOR;\n break;\n\n case CursorContext.IN_DENOMINATOR:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_DENOMINATOR;\n break;\n\n case CursorContext.NONE:\n default:\n dismissOrJumpOutKey = KeyConfigs.DISMISS;\n break;\n }\n } else {\n dismissOrJumpOutKey = KeyConfigs.DISMISS;\n }\n\n const rightPageStyle = [\n row,\n fullWidth,\n styles.rightPage,\n roundTopRight && roundedTopRight,\n ];\n const rightPage = (\n <View style={rightPageStyle}>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_7}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_4}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_1}\n borders={BorderStyles.BOTTOM}\n />\n <ManyKeypadButton keys={extraKeys} />\n </View>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_8}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_5}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_2}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_0}\n borders={BorderStyles.LEFT}\n />\n </View>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_9}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_6}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_3}\n borders={BorderStyles.BOTTOM}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.DECIMAL}\n borders={BorderStyles.LEFT}\n />\n </View>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.DIVIDE}\n borders={BorderStyles.LEFT}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.TIMES}\n borders={BorderStyles.LEFT}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.MINUS}\n borders={BorderStyles.LEFT}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.PLUS}\n borders={BorderStyles.LEFT}\n />\n </View>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.FRAC}\n style={roundTopRight && roundedTopRight}\n />\n <TouchableKeypadButton keyConfig={KeyConfigs.CDOT} />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.BACKSPACE}\n borders={BorderStyles.LEFT}\n />\n <TouchableKeypadButton\n keyConfig={dismissOrJumpOutKey}\n borders={BorderStyles.LEFT}\n />\n </View>\n </View>\n );\n\n const leftPageStyle = [\n row,\n fullWidth,\n styles.leftPage,\n roundTopLeft && roundedTopLeft,\n ];\n const leftPage = (\n <View style={leftPageStyle}>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.EXP_2}\n borders={BorderStyles.NONE}\n style={roundTopLeft && roundedTopLeft}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.SQRT}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.LOG}\n borders={BorderStyles.BOTTOM}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.SIN}\n borders={BorderStyles.NONE}\n />\n </View>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.EXP_3}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.CUBE_ROOT}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.LN}\n borders={BorderStyles.BOTTOM}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.COS}\n borders={BorderStyles.NONE}\n />\n </View>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.EXP}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.RADICAL}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.LOG_N}\n borders={BorderStyles.BOTTOM}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.TAN}\n borders={BorderStyles.NONE}\n />\n </View>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.GEQ}\n borders={BorderStyles.LEFT}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.EQUAL}\n borders={BorderStyles.LEFT}\n />\n <TouchableKeypadButton keyConfig={KeyConfigs.LEQ} />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.LEFT_PAREN}\n borders={BorderStyles.LEFT}\n />\n </View>\n <View style={[column, oneColumn]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.GT}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NEQ}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.LT}\n borders={BorderStyles.BOTTOM}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.RIGHT_PAREN}\n borders={BorderStyles.NONE}\n />\n </View>\n </View>\n );\n\n return <TwoPageKeypad rightPage={rightPage} leftPage={leftPage} />;\n }\n}\n\nconst styles = StyleSheet.create({\n // NOTE(charlie): These backgrounds are applied to as to fill in some\n // unfortunate 'cracks' in the layout. However, not all keys in the first\n // page use this background color (namely, the 'command' keys, backspace and\n // dismiss).\n // TODO(charlie): Apply the proper background between the 'command' keys.\n rightPage: {\n backgroundColor: valueGrey,\n },\n\n leftPage: {\n backgroundColor: controlGrey,\n },\n});\n\nconst mapStateToProps = (state: State): ReduxProps => {\n return {\n cursorContext: state.input.cursor?.context,\n dynamicJumpOut: !state.layout.navigationPadEnabled,\n };\n};\n\nexport default connect(mapStateToProps, null, null, {forwardRef: true})(\n ExpressionKeypad,\n);\n","/**\n * A keypad that includes the digits, as well as the symbols required to deal\n * with fractions, decimals, and percents.\n */\n\nimport * as React from \"react\";\nimport {connect} from \"react-redux\";\n\nimport KeyConfigs from \"../../data/key-configs\";\nimport {BorderStyles} from \"../../enums\";\nimport {View} from \"../../fake-react-native-web/index\";\nimport {CursorContext} from \"../input/cursor-contexts\";\n\nimport Keypad from \"./keypad\";\nimport Styles from \"./styles\";\nimport TouchableKeypadButton from \"./touchable-keypad-button\";\n\nimport type {KeypadLayout} from \"../../types\";\nimport type {State} from \"./store/types\";\n\nconst {row, roundedTopLeft, roundedTopRight} = Styles;\n\ninterface ReduxProps {\n cursorContext?: CursorContext;\n dynamicJumpOut: boolean;\n}\n\ninterface Props extends ReduxProps {\n roundTopLeft: boolean;\n roundTopRight: boolean;\n}\n\nexport const fractionKeypadLayout: KeypadLayout = {\n rows: 4,\n columns: 4,\n numPages: 1,\n // Since we include a two-key popover in the top-right, when the popover\n // is visible, the keypad will expand to fill the equivalent of five\n // rows vertically.\n maxVisibleRows: 5,\n};\n\nclass FractionKeypad extends React.Component<Props> {\n render() {\n const {cursorContext, dynamicJumpOut, roundTopLeft, roundTopRight} =\n this.props;\n\n let dismissOrJumpOutKey;\n if (dynamicJumpOut) {\n switch (cursorContext) {\n case CursorContext.IN_PARENS:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_PARENTHESES;\n break;\n\n case CursorContext.IN_SUPER_SCRIPT:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_EXPONENT;\n break;\n\n case CursorContext.IN_SUB_SCRIPT:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_BASE;\n break;\n\n case CursorContext.BEFORE_FRACTION:\n dismissOrJumpOutKey = KeyConfigs.JUMP_INTO_NUMERATOR;\n break;\n\n case CursorContext.IN_NUMERATOR:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_NUMERATOR;\n break;\n\n case CursorContext.IN_DENOMINATOR:\n dismissOrJumpOutKey = KeyConfigs.JUMP_OUT_DENOMINATOR;\n break;\n\n case CursorContext.NONE:\n default:\n dismissOrJumpOutKey = KeyConfigs.DISMISS;\n break;\n }\n } else {\n dismissOrJumpOutKey = KeyConfigs.DISMISS;\n }\n\n return (\n <Keypad>\n <View style={row}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_7}\n borders={BorderStyles.NONE}\n style={roundTopLeft && roundedTopLeft}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_8}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_9}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.FRAC}\n disabled={\n // NOTE(charlie): It's only sufficient to use\n // `IN_NUMERATOR` and `IN_DENOMINATOR` here because we\n // don't support parentheses in this keypad. If we did,\n // then when the cursor was inside a parenthetical\n // expression in a numerator or denominator, this check\n // would fail.\n cursorContext === CursorContext.IN_NUMERATOR ||\n cursorContext === CursorContext.IN_DENOMINATOR\n }\n style={roundTopRight && roundedTopRight}\n />\n </View>\n <View style={row}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_4}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_5}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_6}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton keyConfig={KeyConfigs.PERCENT} />\n </View>\n <View style={row}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_1}\n borders={BorderStyles.BOTTOM}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_2}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_3}\n borders={BorderStyles.BOTTOM}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.BACKSPACE}\n borders={BorderStyles.LEFT}\n />\n </View>\n <View style={row}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NEGATIVE}\n borders={BorderStyles.NONE}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.NUM_0}\n borders={BorderStyles.LEFT}\n />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.DECIMAL}\n borders={BorderStyles.LEFT}\n />\n <TouchableKeypadButton\n keyConfig={dismissOrJumpOutKey}\n borders={BorderStyles.LEFT}\n />\n </View>\n </Keypad>\n );\n }\n}\n\nconst mapStateToProps = (state: State): ReduxProps => {\n return {\n cursorContext: state.input.cursor?.context,\n dynamicJumpOut: !state.layout.navigationPadEnabled,\n };\n};\n\nexport default connect(mapStateToProps, null, null, {forwardRef: true})(\n FractionKeypad,\n);\n","/**\n * A component that renders a navigation pad, which consists of an arrow for\n * each possible direction.\n */\n\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport KeyConfigs from \"../../data/key-configs\";\nimport {BorderStyles} from \"../../enums\";\nimport {View} from \"../../fake-react-native-web/index\";\nimport {\n navigationPadWidthPx,\n controlGrey,\n valueGrey,\n offBlack16,\n} from \"../common-style\";\n\nimport Styles from \"./styles\";\nimport TouchableKeypadButton from \"./touchable-keypad-button\";\n\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\nconst {row, column, centered, stretch, roundedTopLeft} = Styles;\n\ntype Props = {\n roundTopLeft: boolean;\n style: StyleType;\n};\n\nclass NavigationPad extends React.Component<Props> {\n render() {\n // TODO(charlie): Disable the navigational arrows depending on the\n // cursor context.\n const {roundTopLeft, style} = this.props;\n\n const containerStyle = [\n column,\n centered,\n styles.container,\n roundTopLeft && roundedTopLeft,\n ...(Array.isArray(style) ? style : [style]),\n ];\n\n return (\n <View style={containerStyle}>\n <View style={[row, centered]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.UP}\n borders={BorderStyles.NONE}\n style={[styles.navigationKey, styles.topArrow]}\n />\n </View>\n <View style={[row, centered, stretch]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.LEFT}\n borders={BorderStyles.NONE}\n style={[styles.navigationKey, styles.leftArrow]}\n />\n <View style={styles.horizontalSpacer} />\n <TouchableKeypadButton\n keyConfig={KeyConfigs.RIGHT}\n borders={BorderStyles.NONE}\n style={[styles.navigationKey, styles.rightArrow]}\n />\n </View>\n <View style={[row, centered]}>\n <TouchableKeypadButton\n keyConfig={KeyConfigs.DOWN}\n borders={BorderStyles.NONE}\n style={[styles.navigationKey, styles.bottomArrow]}\n />\n </View>\n </View>\n );\n }\n}\n\nconst buttonSizePx = 48;\nconst borderRadiusPx = 4;\nconst borderWidthPx = 1;\n\nconst styles = StyleSheet.create({\n container: {\n backgroundColor: controlGrey,\n width: navigationPadWidthPx,\n },\n\n navigationKey: {\n borderColor: offBlack16,\n backgroundColor: valueGrey,\n width: buttonSizePx,\n height: buttonSizePx,\n\n // Override the default box-sizing so that our buttons are\n // `buttonSizePx` exclusive of their borders.\n boxSizing: \"content-box\",\n },\n\n topArrow: {\n borderTopWidth: borderWidthPx,\n borderLeftWidth: borderWidthPx,\n borderRightWidth: borderWidthPx,\n borderTopLeftRadius: borderRadiusPx,\n borderTopRightRadius: borderRadiusPx,\n },\n\n rightArrow: {\n borderTopWidth: borderWidthPx,\n borderRightWidth: borderWidthPx,\n borderBottomWidth: borderWidthPx,\n borderTopRightRadius: borderRadiusPx,\n borderBottomRightRadius: borderRadiusPx,\n },\n\n bottomArrow: {\n borderBottomWidth: borderWidthPx,\n borderLeftWidth: borderWidthPx,\n borderRightWidth: borderWidthPx,\n borderBottomLeftRadius: borderRadiusPx,\n borderBottomRightRadius: borderRadiusPx,\n },\n\n leftArrow: {\n borderTopWidth: borderWidthPx,\n borderBottomWidth: borderWidthPx,\n borderLeftWidth: borderWidthPx,\n borderTopLeftRadius: borderRadiusPx,\n borderBottomLeftRadius: borderRadiusPx,\n },\n\n horizontalSpacer: {\n background: valueGrey,\n // No need to set a height -- the spacer will be stretched by its\n // parent.\n width: buttonSizePx,\n },\n});\n\nexport default NavigationPad;\n","import {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\nimport {connect} from \"react-redux\";\n\nimport {LayoutMode, KeypadType} from \"../../enums\";\nimport {View} from \"../../fake-react-native-web/index\";\nimport {\n innerBorderColor,\n innerBorderStyle,\n innerBorderWidthPx,\n compactKeypadBorderRadiusPx,\n} from \"../common-style\";\n\nimport ExpressionKeypad from \"./expression-keypad\";\nimport FractionKeypad from \"./fraction-keypad\";\nimport NavigationPad from \"./navigation-pad\";\nimport {setPageSize} from \"./store/actions\";\nimport Styles from \"./styles\";\nimport * as zIndexes from \"./z-indexes\";\n\nimport type {State as ReduxState} from \"./store/types\";\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\nconst {row, centered, fullWidth} = Styles;\n\ninterface ReduxProps {\n active?: boolean;\n extraKeys?: ReadonlyArray<string>;\n keypadType?: KeypadType;\n layoutMode?: LayoutMode;\n navigationPadEnabled?: boolean;\n}\n\ninterface Props extends ReduxProps {\n onDismiss?: () => void;\n onElementMounted: (element: any) => void;\n onPageSizeChange?: (width: number, height: number) => void;\n style?: StyleType;\n}\n\ntype State = {\n hasBeenActivated: boolean;\n viewportWidth: string | number;\n};\n\n// eslint-disable-next-line react/no-unsafe\nclass KeypadContainer extends React.Component<Props, State> {\n _resizeTimeout: number | null | undefined;\n hasMounted: boolean | undefined;\n\n state = {\n hasBeenActivated: false,\n viewportWidth: \"100vw\",\n };\n\n UNSAFE_componentWillMount() {\n if (this.props.active) {\n this.setState({\n hasBeenActivated: this.props.active,\n });\n }\n }\n\n componentDidMount() {\n // Relay the initial size metrics.\n this._onResize();\n\n // And update it on resize.\n window.addEventListener(\"resize\", this._throttleResizeHandler);\n window.addEventListener(\n \"orientationchange\",\n this._throttleResizeHandler,\n );\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (!this.state.hasBeenActivated && nextProps.active) {\n this.setState({\n hasBeenActivated: true,\n });\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.active && !this.props.active) {\n this.props.onDismiss && this.props.onDismiss();\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this._throttleResizeHandler);\n window.removeEventListener(\n \"orientationchange\",\n this._throttleResizeHandler,\n );\n }\n\n _throttleResizeHandler = () => {\n // Throttle the resize callbacks.\n // https://developer.mozilla.org/en-US/docs/Web/Events/resize\n if (this._resizeTimeout == null) {\n this._resizeTimeout = window.setTimeout(() => {\n this._resizeTimeout = null;\n\n this._onResize();\n }, 66);\n }\n };\n\n _onResize = () => {\n // Whenever the page resizes, we need to force an update, as the button\n // heights and keypad width are computed based on horizontal space.\n this.setState({\n viewportWidth: window.innerWidth,\n });\n this.props.onPageSizeChange?.(window.innerWidth, window.innerHeight);\n };\n\n renderKeypad = () => {\n const {extraKeys, keypadType, layoutMode, navigationPadEnabled} =\n this.props;\n\n const keypadProps = {\n extraKeys,\n // HACK(charlie): In order to properly round the corners of the\n // compact keypad, we need to instruct some of our child views to\n // crop themselves. At least we're colocating all the layout\n // information in this component, though.\n roundTopLeft:\n layoutMode === LayoutMode.COMPACT && !navigationPadEnabled,\n roundTopRight: layoutMode === LayoutMode.COMPACT,\n };\n\n // Select the appropriate keyboard given the type.\n // TODO(charlie): In the future, we might want to move towards a\n // data-driven approach to defining keyboard layouts, and have a\n // generic keyboard that takes some \"keyboard data\" and renders it.\n // However, the keyboards differ pretty heavily right now and it's not\n // clear what that format would look like exactly. Plus, there aren't\n // very many of them. So to keep us moving, we'll just hardcode.\n switch (keypadType) {\n case KeypadType.FRACTION:\n return <FractionKeypad {...keypadProps} />;\n\n case KeypadType.EXPRESSION:\n return <ExpressionKeypad {...keypadProps} />;\n\n default:\n throw new Error(\"Invalid keypad type: \" + keypadType);\n }\n };\n\n render() {\n const {\n active,\n layoutMode,\n navigationPadEnabled,\n onElementMounted,\n style,\n } = this.props;\n const {hasBeenActivated} = this.state;\n\n // NOTE(charlie): We render the transforms as pure inline styles to\n // avoid an Aphrodite bug in mobile Safari.\n // See: https://github.com/Khan/aphrodite/issues/68.\n let dynamicStyle = {\n ...(active ? inlineStyles.active : inlineStyles.hidden),\n };\n\n if (!active && !hasBeenActivated) {\n dynamicStyle = {\n ...dynamicStyle,\n ...inlineStyles.invisible,\n };\n }\n\n const keypadContainerStyle = [\n row,\n centered,\n fullWidth,\n styles.keypadContainer,\n ...(Array.isArray(style) ? style : [style]),\n ];\n\n const keypadStyle = [\n row,\n styles.keypadBorder,\n layoutMode === LayoutMode.FULLSCREEN\n ? styles.fullscreen\n : styles.compact,\n ];\n\n // TODO(charlie): When the keypad is shorter than the width of the\n // screen, add a border on its left and right edges, and round out the\n // corners.\n return (\n <View\n style={keypadContainerStyle}\n dynamicStyle={dynamicStyle}\n extraClassName=\"keypad-container\"\n >\n <View\n style={keypadStyle}\n ref={(element) => {\n if (!this.hasMounted && element) {\n this.hasMounted = true;\n onElementMounted(element);\n }\n }}\n >\n {navigationPadEnabled && (\n <NavigationPad\n roundTopLeft={layoutMode === LayoutMode.COMPACT}\n style={styles.navigationPadContainer}\n />\n )}\n <View style={styles.keypadLayout}>\n {this.renderKeypad()}\n </View>\n </View>\n </View>\n );\n }\n}\n\nconst keypadAnimationDurationMs = 300;\nconst borderWidthPx = 1;\n\nconst styles = StyleSheet.create({\n keypadContainer: {\n bottom: 0,\n left: 0,\n right: 0,\n position: \"fixed\",\n transition: `${keypadAnimationDurationMs}ms ease-out`,\n transitionProperty: \"transform\",\n zIndex: zIndexes.keypad,\n },\n\n keypadBorder: {\n boxShadow: \"0 1px 4px 0 rgba(0, 0, 0, 0.1)\",\n borderColor: \"rgba(0, 0, 0, 0.2)\",\n borderStyle: \"solid\",\n },\n\n fullscreen: {\n borderTopWidth: borderWidthPx,\n },\n\n compact: {\n borderTopRightRadius: compactKeypadBorderRadiusPx,\n borderTopLeftRadius: compactKeypadBorderRadiusPx,\n\n borderTopWidth: borderWidthPx,\n borderRightWidth: borderWidthPx,\n borderLeftWidth: borderWidthPx,\n },\n\n navigationPadContainer: {\n // Add a separator between the navigation pad and the keypad.\n borderRight:\n `${innerBorderWidthPx}px ${innerBorderStyle} ` +\n `${innerBorderColor}`,\n boxSizing: \"content-box\",\n },\n\n // Defer to the navigation pad, such that the navigation pad is always\n // rendered at full-width, and the keypad takes up just the remaining space.\n // TODO(charlie): Avoid shrinking the keys and, instead, make the keypad\n // scrollable.\n keypadLayout: {\n flexGrow: 1,\n // Avoid unitless flex-basis, per: https://philipwalton.com/articles/normalizing-cross-browser-flexbox-bugs/\n flexBasis: \"0%\",\n },\n});\n\n// Note: these don't go through an autoprefixer/aphrodite.\nconst inlineStyles = {\n // If the keypad is yet to have ever been activated, we keep it invisible\n // so as to avoid, e.g., the keypad flashing at the bottom of the page\n // during the initial render.\n invisible: {\n visibility: \"hidden\",\n },\n\n hidden: {\n transform: \"translate3d(0, 100%, 0)\",\n },\n\n active: {\n transform: \"translate3d(0, 0, 0)\",\n },\n};\n\nconst mapStateToProps = (state: ReduxState): ReduxProps => {\n return {\n extraKeys: state.keypad.extraKeys,\n keypadType: state.keypad.keypadType,\n active: state.keypad.active,\n layoutMode: state.layout.layoutMode,\n navigationPadEnabled: state.layout.navigationPadEnabled,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n onPageSizeChange: (pageWidthPx, pageHeightPx) => {\n dispatch(setPageSize(pageWidthPx, pageHeightPx));\n },\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps, null, {\n forwardRef: true,\n})(KeypadContainer);\n","import Key from \"../../data/keys\";\n\n/**\n * The state machine that backs our gesture system. In particular, this state\n * machine manages the interplay between focuses, touch ups, and swiping.\n * It is entirely ignorant of the existence of popovers and the positions of\n * DOM nodes, operating solely on IDs. The state machine does accommodate for\n * multi-touch interactions, tracking gesture state on a per-touch basis.\n */\n\n// exported for tests\nexport type Handlers = {\n onFocus: (id: string) => void;\n onBlur: () => void;\n onTrigger: (id: string) => void;\n onLongPress: (id: string) => void;\n onSwipeChange?: (x: number) => void;\n onSwipeEnd?: (x: number) => void;\n onTouchEnd: (id: string) => void;\n};\n\ntype Options = {\n longPressWaitTimeMs: number;\n swipeThresholdPx: number;\n holdIntervalMs: number;\n};\n\ntype TouchState = {\n activeNodeId: Key;\n pressAndHoldIntervalId: number | null;\n longPressTimeoutId: number | null;\n swipeLocked: boolean;\n startX: number;\n};\n\ntype TouchStateMap = Record<Key, TouchState>;\n\ntype SwipeState = {\n touchId: Key;\n startX: number;\n};\n\nconst defaultOptions: Options = {\n longPressWaitTimeMs: 50,\n swipeThresholdPx: 20,\n holdIntervalMs: 250,\n};\n\nclass GestureStateMachine {\n handlers: Handlers;\n options: Options;\n swipeDisabledNodeIds: ReadonlyArray<Key>;\n multiPressableKeys: ReadonlyArray<Key>;\n touchState: Partial<TouchStateMap>;\n swipeState: SwipeState | null;\n\n constructor(\n handlers: Handlers,\n options: Partial<Options>,\n swipeDisabledNodeIds?: ReadonlyArray<Key>,\n multiPressableKeys?: ReadonlyArray<Key>,\n ) {\n this.handlers = handlers;\n this.options = {\n ...defaultOptions,\n ...options,\n };\n this.swipeDisabledNodeIds = swipeDisabledNodeIds || [];\n this.multiPressableKeys = multiPressableKeys || [];\n\n // TODO(charlie): Add types for this file. It's not great that we're now\n // passing around these opaque state objects.\n this.touchState = {};\n this.swipeState = null;\n }\n\n _maybeCancelLongPressForTouch(touchId) {\n const {longPressTimeoutId} = this.touchState[touchId];\n if (longPressTimeoutId) {\n clearTimeout(longPressTimeoutId);\n this.touchState[touchId] = {\n ...this.touchState[touchId],\n longPressTimeoutId: null,\n };\n }\n }\n\n _maybeCancelPressAndHoldForTouch(touchId) {\n const {pressAndHoldIntervalId} = this.touchState[touchId];\n if (pressAndHoldIntervalId) {\n // If there was an interval set to detect holds, clear it out.\n clearInterval(pressAndHoldIntervalId);\n this.touchState[touchId] = {\n ...this.touchState[touchId],\n pressAndHoldIntervalId: null,\n };\n }\n }\n\n _cleanupTouchEvent(touchId) {\n this._maybeCancelLongPressForTouch(touchId);\n this._maybeCancelPressAndHoldForTouch(touchId);\n delete this.touchState[touchId];\n }\n\n /**\n * Handle a focus event on the node with the given identifier, which may be\n * `null` to indicate that the user has dragged their finger off of any\n * registered nodes, but is still in the middle of a gesture.\n *\n * @param {string|null} id - the identifier of the newly focused node, or\n * `null` if no node is focused\n * @param {number} touchId - a unique identifier associated with the touch\n */\n _onFocus(id, touchId) {\n // If we're in the middle of a long-press, cancel it.\n this._maybeCancelLongPressForTouch(touchId);\n\n // Reset any existing hold-detecting interval.\n this._maybeCancelPressAndHoldForTouch(touchId);\n\n // Set the focused node ID and handle the focus event.\n // Note: we can call `onFocus` with `null` IDs. The semantics of an\n // `onFocus` with a `null` ID differs from that of `onBlur`. The former\n // indicates that a gesture that can focus future nodes is still in\n // progress, but that no node is currently focused. The latter\n // indicates that the gesture has ended and nothing will be focused.\n this.touchState[touchId] = {\n ...this.touchState[touchId],\n activeNodeId: id,\n };\n this.handlers.onFocus(id);\n\n if (id) {\n // Handle logic for repeating button presses.\n if (this.multiPressableKeys.includes(id)) {\n // Start by triggering a click, iOS style.\n this.handlers.onTrigger(id);\n\n // Set up a new hold detector for the current button.\n this.touchState[touchId] = {\n ...this.touchState[touchId],\n pressAndHoldIntervalId: setInterval(() => {\n // On every cycle, trigger the click handler.\n this.handlers.onTrigger(id);\n }, this.options.holdIntervalMs),\n };\n } else {\n // Set up a new hold detector for the current button.\n this.touchState[touchId] = {\n ...this.touchState[touchId],\n longPressTimeoutId: setTimeout(() => {\n this.handlers.onLongPress(id);\n this.touchState[touchId] = {\n ...this.touchState[touchId],\n longPressTimeoutId: null,\n };\n }, this.options.longPressWaitTimeMs),\n };\n }\n }\n }\n\n /**\n * Clear out all active gesture information.\n */\n _onSwipeStart() {\n for (const activeTouchId of Object.keys(this.touchState)) {\n this._maybeCancelLongPressForTouch(activeTouchId);\n this._maybeCancelPressAndHoldForTouch(activeTouchId);\n }\n this.touchState = {};\n this.handlers.onBlur();\n }\n\n /**\n * A function that returns the identifier of the node over which the touch\n * event occurred. This is provided as a piece of lazy computation, as\n * computing the DOM node for a given point is expensive, and the state\n * machine won't always need that information. For example, if the user is\n * swiping, then `onTouchMove` needs to be performant and doesn't care about\n * the node over which the touch occurred.\n *\n * @typedef idComputation\n * @returns {DOMNode} - the identifier of the node over which the touch\n * occurred\n */\n\n /**\n * Handle a touch-start event on the node with the given identifer.\n *\n * @param {idComputation} getId - a function that returns identifier of the\n * node over which the start event occurred\n * @param {number} touchId - a unique identifier associated with the touch\n */\n onTouchStart(getId, touchId, pageX) {\n // Ignore any touch events that start mid-swipe.\n if (this.swipeState) {\n return;\n }\n\n if (this.touchState[touchId]) {\n // It turns out we can get multiple touch starts with no\n // intervening move, end, or cancel events in Android WebViews.\n // TODO(benkomalo): it's not entirely clear why this happens, but\n // it seems to happen with the backspace button. It may be related\n // to FastClick (https://github.com/ftlabs/fastclick/issues/71)\n // though I haven't verified, and it's probably good to be robust\n // here anyways.\n return;\n }\n\n const startingNodeId = getId();\n this.touchState[touchId] = {\n swipeLocked: this.swipeDisabledNodeIds.includes(startingNodeId),\n startX: pageX,\n };\n\n this._onFocus(startingNodeId, touchId);\n }\n\n /**\n * Handle a touch-move event on the node with the given identifer.\n *\n * @param {idComputation} getId - a function that returns identifier of the\n * node over which the move event occurred\n * @param {number} touchId - a unique identifier associated with the touch\n * @param {number} pageX - the x coordinate of the touch\n * @param {boolean} swipeEnabled - whether the system should allow for\n * transitions into a swiping state\n */\n onTouchMove(getId, touchId, pageX, swipeEnabled) {\n if (this.swipeState) {\n // Only respect the finger that started a swipe. Any other lingering\n // gestures are ignored.\n if (this.swipeState.touchId === touchId) {\n this.handlers.onSwipeChange?.(pageX - this.swipeState.startX);\n }\n } else if (this.touchState[touchId]) {\n // It could be touch events started outside the keypad and\n // moved into it; ignore them.\n const {activeNodeId, startX, swipeLocked} =\n this.touchState[touchId];\n\n const dx = pageX - startX;\n const shouldBeginSwiping =\n swipeEnabled &&\n !swipeLocked &&\n Math.abs(dx) > this.options.swipeThresholdPx;\n\n if (shouldBeginSwiping) {\n this._onSwipeStart();\n\n // Trigger the swipe.\n this.swipeState = {\n touchId,\n startX,\n };\n this.handlers.onSwipeChange?.(pageX - this.swipeState.startX);\n } else {\n const id = getId();\n if (id !== activeNodeId) {\n this._onFocus(id, touchId);\n }\n }\n }\n }\n\n /**\n * Handle a touch-end event on the node with the given identifer.\n *\n * @param {idComputation} getId - a function that returns identifier of the\n * node over which the end event occurred\n * @param {number} touchId - a unique identifier associated with the touch\n * @param {number} pageX - the x coordinate of the touch\n */\n onTouchEnd(getId, touchId, pageX) {\n if (this.swipeState) {\n // Only respect the finger that started a swipe. Any other lingering\n // gestures are ignored.\n if (this.swipeState.touchId === touchId) {\n this.handlers.onSwipeEnd?.(pageX - this.swipeState.startX);\n this.swipeState = null;\n }\n } else if (this.touchState[touchId]) {\n // It could be touch events started outside the keypad and\n // moved into it; ignore them.\n const {activeNodeId, pressAndHoldIntervalId} =\n this.touchState[touchId];\n\n this._cleanupTouchEvent(touchId);\n\n const didPressAndHold = !!pressAndHoldIntervalId;\n if (didPressAndHold) {\n // We don't trigger a touch end if there was a press and hold,\n // because the key has been triggered at least once and calling\n // the onTouchEnd handler would add an extra trigger.\n this.handlers.onBlur();\n } else {\n // Trigger a touch-end. There's no need to notify clients of a\n // blur as clients are responsible for handling any cleanup in\n // their touch-end handlers.\n this.handlers.onTouchEnd(activeNodeId);\n }\n }\n }\n\n /**\n * Handle a touch-cancel event.\n */\n onTouchCancel(touchId) {\n // If a touch is cancelled and we're swiping, end the swipe with no\n // displacement.\n if (this.swipeState) {\n if (this.swipeState.touchId === touchId) {\n this.handlers.onSwipeEnd?.(0);\n this.swipeState = null;\n }\n } else if (this.touchState[touchId]) {\n // Otherwise, trigger a full blur. We don't want to trigger a\n // touch-up, since the cancellation means that the user probably\n // didn't release over a key intentionally.\n this._cleanupTouchEvent(touchId);\n this.handlers.onBlur();\n }\n }\n}\n\nexport default GestureStateMachine;\n","import {LayoutProps, Bound} from \"../../types\";\n/**\n * A manager for our node-to-ID system. In particular, this class is\n * responsible for maintaing a mapping between DOM nodes and node IDs, and\n * translating touch events from the raw positions at which they occur to the\n * nodes over which they are occurring. This differs from browser behavior, in\n * which touch events are only sent to the node in which a touch started.\n */\n\nclass NodeManager {\n _nodesById: Record<string, HTMLElement>;\n _orderedIds: ReadonlyArray<string>;\n _cachedBoundingBoxesById: Record<string, Bound>;\n\n constructor() {\n // A mapping from IDs to DOM nodes.\n this._nodesById = {};\n\n // An ordered list of IDs, where DOM nodes that are \"higher\" on the\n // page come earlier in the list. Note that an ID may be present in\n // this ordered list but not be registered to a DOM node (i.e., if it\n // is registered as a child of another DOM node, but hasn't appeared in\n // the DOM yet).\n this._orderedIds = [];\n\n // Cache bounding boxes aggressively, re-computing on page resize. Our\n // caching here makes the strict assumption that if a node is reasonably\n // assumed to be on-screen, its bounds won't change. For example, if we\n // see that a touch occurred within the bounds of a node, we cache those\n // bounds.\n // TODO(charlie): It'd be great if we could pre-compute these when the\n // page is idle and the keypad is visible (i.e., the nodes are in their\n // proper positions).\n this._cachedBoundingBoxesById = {};\n window.addEventListener(\"resize\", () => {\n this._cachedBoundingBoxesById = {};\n });\n }\n\n /**\n * Register a DOM node with a given identifier.\n *\n * @param {string} id - the identifier of the given node\n * @param {node} domNode - the DOM node linked to the identifier\n * @param {object} borders - an opaque object describing the node's borders\n */\n registerDOMNode(\n id: string,\n domNode: HTMLElement,\n childIds: ReadonlyArray<string>,\n ) {\n this._nodesById[id] = domNode;\n\n // Make sure that any children appear first.\n // TODO(charlie): This is a very simplistic system that wouldn't\n // properly handle multiple levels of nesting.\n const allIds = [...(childIds || []), id, ...this._orderedIds];\n\n // De-dupe the list of IDs.\n const orderedIds = [];\n const seenIds = {};\n for (const id of allIds) {\n if (!seenIds[id]) {\n // @ts-expect-error TS2345\n orderedIds.push(id);\n seenIds[id] = true;\n }\n }\n\n this._orderedIds = orderedIds;\n }\n\n /**\n * Unregister the DOM node with the given identifier.\n *\n * @param {string} id - the identifier of the node to unregister\n */\n unregisterDOMNode(id: string) {\n delete this._nodesById[id];\n }\n\n /**\n * Return the identifier of the topmost node located at the given\n * coordinates.\n *\n * @param {number} x - the x coordinate at which to search for a node\n * @param {number} y - the y coordinate at which to search for a node\n * @returns {null|string} - null or the identifier of the topmost node at\n * the given coordinates\n */\n idForCoords(x: number, y: number): string | void {\n for (const id of this._orderedIds) {\n const domNode = this._nodesById[id];\n if (domNode) {\n const bounds = domNode.getBoundingClientRect();\n if (\n bounds.left <= x &&\n bounds.right > x &&\n bounds.top <= y &&\n bounds.bottom > y\n ) {\n this._cachedBoundingBoxesById[id] = bounds;\n return id;\n }\n }\n }\n }\n\n /**\n * Return the necessary layout information, including the bounds and border\n * values, for the node with the given identifier.\n *\n * @param {string} id - the identifier of the node for which to return the\n * layout information\n * @returns {object} - the bounding client rect for the given node, along\n * with its borders\n */\n layoutPropsForId(id: string): LayoutProps {\n if (!this._cachedBoundingBoxesById[id]) {\n const node = this._nodesById[id];\n\n this._cachedBoundingBoxesById[id] = node\n ? node.getBoundingClientRect()\n : new DOMRect();\n }\n\n return {\n initialBounds: this._cachedBoundingBoxesById[id],\n };\n }\n}\n\nexport default NodeManager;\n","import type {ActiveNodesObj} from \"../../types\";\n\n/**\n * A state machine for the popover state. In particular, this class manages the\n * mapping of parent nodes to their children, and translates touch events that\n * traverse various nodes to actions that are conditioned on whether a popover\n * is present.\n */\n\ntype Handlers = {\n onActiveNodesChanged: (activeNodes: ActiveNodesObj) => void;\n onClick: (keyId: string, domNodeId: string, inPopover: boolean) => void;\n};\n\nclass PopoverStateMachine {\n handlers: Handlers;\n popovers: Record<string, ReadonlyArray<string>>;\n activePopover: string | null;\n\n constructor(handlers) {\n this.handlers = handlers;\n\n this.activePopover = null;\n this.popovers = {};\n }\n\n /**\n * Register a popover container as containing a set of children.\n *\n * @param {string} id - the identifier of the popover container\n * @param {string[]} childIds - the identifiers of the nodes contained in\n * the popover container\n */\n registerPopover(id, childIds) {\n this.popovers[id] = childIds;\n }\n\n /**\n * Unregister a popover container.\n *\n * @param {string} id - the identifier of the popover container to\n * unregister\n */\n unregisterPopover(id) {\n delete this.popovers[id];\n }\n\n /**\n * @returns {boolean} - whether a popover is active and visible\n */\n isPopoverVisible() {\n return this.activePopover != null;\n }\n\n /**\n * Blur the active nodes.\n */\n onBlur() {\n this.activePopover = null;\n this.handlers.onActiveNodesChanged({\n popover: null,\n focus: null,\n });\n }\n\n /**\n * Handle a focus event on the node with the given identifier.\n *\n * @param {string} id - the identifier of the node that was focused\n */\n onFocus(id) {\n if (this.activePopover) {\n // If we have a popover that is currently active, we focus this\n // node if it's in the popover, and remove any highlight otherwise.\n if (this._isNodeInsidePopover(this.activePopover, id)) {\n this.handlers.onActiveNodesChanged({\n popover: {\n parentId: this.activePopover,\n childIds: this.popovers[this.activePopover],\n },\n focus: id,\n });\n } else {\n this.handlers.onActiveNodesChanged({\n popover: {\n parentId: this.activePopover,\n childIds: this.popovers[this.activePopover],\n },\n focus: null,\n });\n }\n } else {\n this.activePopover = null;\n this.handlers.onActiveNodesChanged({\n popover: null,\n focus: id,\n });\n }\n }\n\n /**\n * Handle a long press event on the node with the given identifier.\n *\n * @param {string} id - the identifier of the node that was long-pressed\n */\n onLongPress(id) {\n // We only care about long presses if they occur on a popover, and we\n // don't already have a popover active.\n if (!this.activePopover && this.popovers[id]) {\n // NOTE(charlie): There's an assumption here that focusing the\n // first child is the correct behavior for a newly focused popover.\n // This relies on the fact that the children are rendered\n // bottom-up. If that rendering changes, this logic will need to\n // change as well.\n this.activePopover = id;\n this.handlers.onActiveNodesChanged({\n popover: {\n parentId: id,\n childIds: this.popovers[id],\n },\n focus: this._defaultNodeForPopover(this.activePopover),\n });\n }\n }\n\n /**\n * Handle the trigger (click or hold) of the node with the given identifier.\n *\n * @param {string} id - the identifier of the node that was triggered\n */\n onTrigger(id) {\n this.handlers.onClick(id, id, false);\n }\n\n /**\n * Handle a touch-end event on the node with the given identifier.\n *\n * @param {string} id - the identifier of the node over which the touch\n * ended\n */\n onTouchEnd(id) {\n const inPopover = !!this.activePopover;\n if (inPopover) {\n // If we have a popover that is currently active, we trigger a\n // click on this node if and only if it's in the popover, with the\n // exception that, if the node passed back _is_ the active popover,\n // then we trigger its default node. This latter case should only\n // be triggered if the user were to tap down on a popover-enabled\n // node, hold for long enough for the popover to appear, and then\n // release without ever moving their finger, in which case, the\n // underlying gesture system would have no idea that the popover's\n // first child node was now focused.\n if (this._isNodeInsidePopover(this.activePopover, id)) {\n this.handlers.onClick(id, id, inPopover);\n } else if (this.activePopover === id) {\n const keyId = this._defaultNodeForPopover(id);\n this.handlers.onClick(keyId, keyId, inPopover);\n }\n } else if (this.popovers[id]) {\n // Otherwise, if the node is itself a popover revealer, trigger the\n // clicking of its default node, but pass back the popover node ID\n // for layout purposes.\n const keyId = this._defaultNodeForPopover(id);\n const domNodeId = id;\n this.handlers.onClick(keyId, domNodeId, inPopover);\n } else if (id != null) {\n // Finally, if we have no active popover, and we touched up over a\n // valid key, trigger a click.\n this.onTrigger(id);\n }\n\n this.onBlur();\n }\n\n _isNodeInsidePopover(popover, id) {\n return this.popovers[popover].includes(id);\n }\n\n _defaultNodeForPopover(popover) {\n return this.popovers[popover][0];\n }\n}\n\nexport default PopoverStateMachine;\n","/**\n * A high-level manager for our gesture system. In particular, this class\n * connects our various bits of logic for managing gestures and interactions,\n * and links them together.\n */\nimport * as React from \"react\";\n\nimport Key from \"../../data/keys\";\nimport {ActiveNodesObj, LayoutProps} from \"../../types\";\n\nimport GestureStateMachine from \"./gesture-state-machine\";\nimport NodeManager from \"./node-manager\";\nimport PopoverStateMachine from \"./popover-state-machine\";\n\nconst coordsForEvent = (evt) => {\n return [evt.changedTouches[0].clientX, evt.changedTouches[0].clientY];\n};\n\ntype Options = {\n swipeEnabled: boolean;\n};\n\ntype Handlers = {\n onSwipeChange?: (dx: number) => void;\n onSwipeEnd?: (dx: number) => void;\n onActiveNodesChanged: (activeNodes: ActiveNodesObj) => void;\n onClick: (key: Key, layoutProps: LayoutProps, inPopover: boolean) => void;\n};\n\nclass GestureManager {\n swipeEnabled: boolean;\n trackEvents: boolean;\n nodeManager: NodeManager;\n popoverStateMachine: PopoverStateMachine;\n gestureStateMachine: GestureStateMachine;\n\n constructor(\n options: Options,\n handlers: Handlers,\n disabledSwipeKeys: ReadonlyArray<Key>,\n multiPressableKeys: ReadonlyArray<Key>,\n ) {\n const {swipeEnabled} = options;\n\n this.swipeEnabled = swipeEnabled;\n\n // Events aren't tracked until event tracking is enabled.\n this.trackEvents = false;\n\n this.nodeManager = new NodeManager();\n this.popoverStateMachine = new PopoverStateMachine({\n onActiveNodesChanged: (activeNodes) => {\n const {popover, ...rest} = activeNodes;\n handlers.onActiveNodesChanged({\n popover: popover && {\n parentId: popover.parentId,\n bounds: this.nodeManager.layoutPropsForId(\n popover.parentId,\n ).initialBounds,\n childKeyIds: popover.childIds,\n },\n ...rest,\n });\n },\n /**\n * `onClick` takes two arguments:\n *\n * @param {string} keyId - the identifier key that should initiate\n * a click\n * @param {string} domNodeId - the identifier of the DOM node on\n * which the click should be considered\n * to have occurred\n * @param {bool} inPopover - whether the key was contained within a\n * popover\n *\n * These two parameters will often be equivalent. They will differ,\n * though, when a popover button is itself clicked, in which case\n * we need to mimic the effects of clicking on its 'primary' child\n * key, but animate the click on the popover button.\n */\n onClick: (keyId, domNodeId, inPopover) => {\n handlers.onClick(\n keyId,\n this.nodeManager.layoutPropsForId(domNodeId),\n inPopover,\n );\n },\n });\n this.gestureStateMachine = new GestureStateMachine(\n {\n onFocus: (id) => {\n this.popoverStateMachine.onFocus(id);\n },\n onLongPress: (id) => {\n this.popoverStateMachine.onLongPress(id);\n },\n onTouchEnd: (id) => {\n this.popoverStateMachine.onTouchEnd(id);\n },\n onBlur: () => {\n this.popoverStateMachine.onBlur();\n },\n onSwipeChange: handlers.onSwipeChange,\n onSwipeEnd: handlers.onSwipeEnd,\n onTrigger: (id) => {\n this.popoverStateMachine.onTrigger(id);\n },\n },\n {},\n disabledSwipeKeys,\n multiPressableKeys,\n );\n }\n\n /**\n * Handle a touch-start event that originated in a node registered with the\n * gesture system.\n *\n * @param {React.TouchEvent<HTMLDivElement>} evt - the raw touch event from the browser\n * @param {string} id - the identifier of the DOM node in which the touch\n * occurred\n */\n onTouchStart(\n evt: React.TouchEvent<HTMLDivElement>,\n id?: string | undefined,\n ) {\n if (!this.trackEvents) {\n return;\n }\n\n const [x] = coordsForEvent(evt);\n\n // TODO(charlie): It doesn't seem to be guaranteed that every touch\n // event on `changedTouches` originates from the node through which this\n // touch event was sent. In that case, we'd be inappropriately reporting\n // the starting node ID.\n for (let i = 0; i < evt.changedTouches.length; i++) {\n this.gestureStateMachine.onTouchStart(\n () => id,\n evt.changedTouches[i].identifier,\n x,\n );\n }\n\n // If an event started in a view that we're managing, we'll handle it\n // all the way through.\n evt.preventDefault();\n }\n\n /**\n * Handle a touch-move event that originated in a node registered with the\n * gesture system.\n *\n * @param {React.TouchEvent<HTMLDivElement>} evt - the raw touch event from the browser\n */\n onTouchMove(evt: React.TouchEvent<HTMLDivElement>) {\n if (!this.trackEvents) {\n return;\n }\n\n const swipeLocked = this.popoverStateMachine.isPopoverVisible();\n const swipeEnabled = this.swipeEnabled && !swipeLocked;\n const [x, y] = coordsForEvent(evt);\n for (let i = 0; i < evt.changedTouches.length; i++) {\n this.gestureStateMachine.onTouchMove(\n () => this.nodeManager.idForCoords(x, y),\n evt.changedTouches[i].identifier,\n x,\n swipeEnabled,\n );\n }\n }\n\n /**\n * Handle a touch-end event that originated in a node registered with the\n * gesture system.\n *\n * @param {React.TouchEvent<HTMLDivElement>} evt - the raw touch event from the browser\n */\n onTouchEnd(evt: React.TouchEvent<HTMLDivElement>) {\n if (!this.trackEvents) {\n return;\n }\n\n const [x, y] = coordsForEvent(evt);\n for (let i = 0; i < evt.changedTouches.length; i++) {\n this.gestureStateMachine.onTouchEnd(\n () => this.nodeManager.idForCoords(x, y),\n evt.changedTouches[i].identifier,\n x,\n );\n }\n }\n\n /**\n * Handle a touch-cancel event that originated in a node registered with the\n * gesture system.\n *\n * @param {React.TouchEvent<HTMLDivElement>} evt - the raw touch event from the browser\n */\n onTouchCancel(evt: React.TouchEvent<HTMLDivElement>) {\n if (!this.trackEvents) {\n return;\n }\n\n for (let i = 0; i < evt.changedTouches.length; i++) {\n this.gestureStateMachine.onTouchCancel(\n evt.changedTouches[i].identifier,\n );\n }\n }\n\n /**\n * Register a DOM node with a given identifier.\n *\n * @param {string} id - the identifier of the given node\n * @param {node} domNode - the DOM node linked to the identifier\n * @param {string[]} childIds - the identifiers of any DOM nodes that\n * should be considered children of this node,\n * in that they should take priority when\n * intercepting touch events\n * @param {object} borders - an opaque object describing the node's borders\n */\n registerDOMNode(id, domNode, childIds) {\n this.nodeManager.registerDOMNode(id, domNode, childIds);\n this.popoverStateMachine.registerPopover(id, childIds);\n }\n\n /**\n * Unregister the DOM node with the given identifier.\n *\n * @param {string} id - the identifier of the node to unregister\n */\n unregisterDOMNode(id) {\n this.nodeManager.unregisterDOMNode(id);\n this.popoverStateMachine.unregisterPopover(id);\n }\n\n /**\n * Enable event tracking for the gesture manager.\n */\n enableEventTracking() {\n this.trackEvents = true;\n }\n\n /**\n * Disable event tracking for the gesture manager. When called, the gesture\n * manager will drop any events received by managed nodes.\n */\n disableEventTracking() {\n this.trackEvents = false;\n }\n}\n\nexport default GestureManager;\n","import KeyConfigs from \"../../../data/key-configs\";\nimport {EchoAnimationType} from \"../../../enums\";\n\nimport type {Action} from \"./actions\";\nimport type {EchoState} from \"./types\";\n\n// Used to generate unique animation IDs for the echo animations. The actual\n// values are irrelevant as long as they are unique.\nlet _lastAnimationId = 0;\n\nconst initialEchoState = {\n echoes: [],\n} as const;\n\nconst echoReducer = function (\n state: EchoState = initialEchoState,\n action: Action,\n): EchoState {\n switch (action.type) {\n case \"PressKey\":\n const keyConfig = KeyConfigs[action.key];\n\n // Add in the echo animation if the user performs a math\n // operation.\n if (keyConfig.type === \"VALUE\" || keyConfig.type === \"OPERATOR\") {\n return {\n ...state,\n echoes: [\n ...state.echoes,\n {\n animationId: \"\" + _lastAnimationId++,\n animationType: action.inPopover\n ? EchoAnimationType.LONG_FADE_ONLY\n : EchoAnimationType.FADE_ONLY,\n id: keyConfig.id,\n initialBounds: action.initialBounds,\n },\n ],\n };\n }\n return state;\n\n case \"RemoveEcho\":\n const remainingEchoes = state.echoes.filter((echo) => {\n return echo.animationId !== action.animationId;\n });\n return {\n ...state,\n echoes: remainingEchoes,\n };\n\n default:\n return state;\n }\n};\n\nexport default echoReducer;\n","import KeyConfigs from \"../../../data/key-configs\";\nimport {CursorContext} from \"../../input/cursor-contexts\";\n\nimport type {Cursor, KeyHandler} from \"../../../types\";\nimport type {Action} from \"./actions\";\nimport type {InputState} from \"./types\";\n\nconst initialInputState: {\n keyHandler: KeyHandler | null;\n cursor: Cursor;\n} = {\n keyHandler: null,\n cursor: {\n context: CursorContext.NONE,\n },\n};\n\nconst inputReducer = function (\n state: InputState = initialInputState,\n action: Action,\n): InputState {\n switch (action.type) {\n case \"SetKeyHandler\":\n return {\n ...state,\n keyHandler: action.keyHandler,\n };\n\n case \"PressKey\":\n const keyConfig = KeyConfigs[action.key];\n if (keyConfig.type !== \"KEYPAD_NAVIGATION\") {\n // This is probably an anti-pattern but it works for the\n // case where we don't actually control the state but we\n // still want to communicate with the other object\n return {\n ...state,\n cursor: state.keyHandler?.(keyConfig.id),\n };\n }\n\n // TODO(kevinb) get state from MathQuill and store it?\n return state;\n\n case \"SetCursor\":\n return {\n ...state,\n cursor: action.cursor,\n };\n\n default:\n return state;\n }\n};\n\nexport default inputReducer;\n","import {KeypadType} from \"../../../enums\";\nimport {expressionKeypadLayout} from \"../expression-keypad\";\nimport {fractionKeypadLayout} from \"../fraction-keypad\";\n\nconst defaultKeypadType = KeypadType.EXPRESSION;\n\nconst keypadForType = {\n [KeypadType.FRACTION]: fractionKeypadLayout,\n [KeypadType.EXPRESSION]: expressionKeypadLayout,\n} as const;\n\nexport {keypadForType, defaultKeypadType};\n","import KeyConfigs from \"../../../data/key-configs\";\n\nimport {defaultKeypadType} from \"./shared\";\n\nimport type {Action} from \"./actions\";\nimport type {KeypadState} from \"./types\";\n\nconst initialKeypadState = {\n extraKeys: [\"x\", \"y\", \"THETA\", \"PI\"] as const,\n keypadType: defaultKeypadType,\n active: false,\n} as const;\n\nconst keypadReducer = function (\n state: KeypadState = initialKeypadState,\n action: Action,\n): KeypadState {\n switch (action.type) {\n case \"DismissKeypad\":\n return {\n ...state,\n active: false,\n };\n\n case \"ActivateKeypad\":\n return {\n ...state,\n active: true,\n };\n\n case \"ConfigureKeypad\":\n return {\n ...state,\n // Default `extraKeys` to the empty array.\n extraKeys: [],\n ...action.configuration,\n };\n\n case \"PressKey\":\n const keyConfig = KeyConfigs[action.key];\n // NOTE(charlie): Our keypad system operates by triggering key\n // presses with key IDs in a dumb manner, such that the keys\n // don't know what they can do--instead, the store is\n // responsible for interpreting key presses and triggering the\n // right actions when they occur. Hence, we figure off a\n // dismissal here rather than dispatching a dismiss action in\n // the first place.\n if (keyConfig.id === \"DISMISS\") {\n return keypadReducer(state, {type: \"DismissKeypad\"});\n }\n return state;\n\n default:\n return state;\n }\n};\n\nexport default keypadReducer;\n","/**\n * An algorithm for computing the appropriate layout parameters for the keypad,\n * including the size of the buttons and whether or not to render fullscreen,\n * taking into account a number of factors including the size of the screen, the\n * orientation of the screen, the presence of browser chrome, the presence of\n * other exercise-related chrome, the size of the input box, the parameters that\n * define the keypad (i.e., the number of rows, columns, and pages), and so\n * forth.\n *\n * The computations herein make some strong assumptions about the sizes of\n * various other elements and the situations under which they will be visible\n * (e.g., browser chrome). However, this is just a heuristic--it's not crucial\n * that our buttons are sized in a pixel-perfect manner, but rather, that we\n * make a balanced use of space.\n *\n * Note that one goal of the algorithm is to avoid resizing the keypad in the\n * face of dynamic browser chrome. In order to avoid that awkwardness, we tend\n * to be conservative in our measurements and make things smaller than they\n * might need to be.\n */\n\nimport {DeviceType, DeviceOrientation, LayoutMode} from \"../../enums\";\nimport {\n pageIndicatorHeightPx,\n toolbarHeightPx,\n navigationPadWidthPx,\n innerBorderWidthPx,\n} from \"../common-style\";\n\nconst minButtonHeight = 48;\nconst maxButtonSize = 64;\nconst minSpaceAboveKeypad = 32;\n\n// These values are taken from an iPhone 5, but should be consistent with the\n// iPhone 4 as well. Regardless, these are meant to be representative of the\n// possible types of browser chrome that could appear in various context, rather\n// than pixel-perfect for every device.\nconst safariNavBarWhenShrunk = 44;\nconst safariNavBarWhenExpanded = 64;\nconst safariToolbar = 44;\n\n// In mobile Safari, the browser chrome is completely hidden in landscape,\n// though a shrunken navbar and full-sized toolbar on scroll. In portrait, the\n// shrunken navbar is always visible, but expands on scroll (and the toolbar\n// appears as well).\nconst maxLandscapeBrowserChrome = safariNavBarWhenShrunk + safariToolbar;\nconst maxPortraitBrowserChrome =\n safariToolbar + (safariNavBarWhenExpanded - safariNavBarWhenShrunk);\n\n// This represents the 'worst case' aspect ratio that we care about (for\n// portrait layouts). It's taken from the iPhone 4. The height is computed by\n// taking the height of the device and removing the persistent, shrunken navbar.\n// (We don't need to account for the expanded navbar, since we include the\n// difference when reserving space above the keypad.)\nconst worstCaseAspectRatio = 320 / (480 - safariNavBarWhenShrunk);\n\nexport const computeLayoutParameters = (\n {numColumns, numMaxVisibleRows, numPages},\n {pageWidthPx, pageHeightPx},\n {deviceOrientation, deviceType},\n {navigationPadEnabled, paginationEnabled, toolbarEnabled},\n) => {\n // First, compute some values that will be used in multiple computations.\n const effectiveNumColumns = paginationEnabled\n ? numColumns\n : numColumns * numPages;\n\n // Then, compute the button dimensions based on the provided parameters.\n let buttonDimensions;\n if (deviceType === DeviceType.PHONE) {\n const isLandscape = deviceOrientation === DeviceOrientation.LANDSCAPE;\n\n // In many cases, the browser chrome will already have been factored\n // into `pageHeightPx`. But we have no way of knowing if that's\n // the case or not. As such, we take a conservative approach and\n // assume that the chrome is _never_ included in `pageHeightPx`.\n const browserChromeHeight = isLandscape\n ? maxLandscapeBrowserChrome\n : maxPortraitBrowserChrome;\n\n // Count up all the space that we need to reserve on the page.\n // Namely, we need to account for:\n // 1. Space between the keypad and the top of the page.\n // 2. The presence of the exercise toolbar.\n // 3. The presence of the view pager indicator.\n // 4. Any browser chrome that may appear later.\n const reservedSpace =\n minSpaceAboveKeypad +\n browserChromeHeight +\n (toolbarEnabled ? toolbarHeightPx : 0) +\n (paginationEnabled ? pageIndicatorHeightPx : 0);\n\n // Next, compute the effective width and height. We can use the page\n // width as the effective width. For the height, though, we take\n // another conservative measure when in portrait by assuming that\n // the device has the worst possible aspect ratio. In other words,\n // we ignore the device height in portrait and assume the worst.\n // This prevents the keypad from changing size when browser chrome\n // appears and disappears.\n const effectiveWidth = pageWidthPx;\n const effectiveHeight = isLandscape\n ? pageHeightPx\n : pageWidthPx / worstCaseAspectRatio;\n const maxKeypadHeight = effectiveHeight - reservedSpace;\n\n // Finally, compute the button height and width. In computing the\n // height, accommodate for the maximum number of rows that will ever be\n // visible (since the toggling of popovers can increase the number of\n // visible rows).\n const buttonHeightPx = Math.max(\n Math.min(maxKeypadHeight / numMaxVisibleRows, maxButtonSize),\n minButtonHeight,\n );\n\n let buttonWidthPx;\n if (numPages > 1) {\n const effectiveNumColumns = paginationEnabled\n ? numColumns\n : numColumns * numPages;\n buttonWidthPx = effectiveWidth / effectiveNumColumns;\n } else {\n buttonWidthPx = isLandscape\n ? maxButtonSize\n : effectiveWidth / numColumns;\n }\n\n buttonDimensions = {\n widthPx: buttonWidthPx,\n heightPx: buttonHeightPx,\n };\n } else if (deviceType === DeviceType.TABLET) {\n buttonDimensions = {\n widthPx: maxButtonSize,\n heightPx: maxButtonSize,\n };\n } else {\n throw new Error(\"Invalid device type: \" + deviceType);\n }\n\n // Finally, determine whether the keypad should be rendered in the\n // fullscreen layout by determining its resultant width.\n const numSeparators =\n (navigationPadEnabled ? 1 : 0) +\n (!paginationEnabled ? numPages - 1 : 0);\n const keypadWidth =\n effectiveNumColumns * buttonDimensions.widthPx +\n (navigationPadEnabled ? navigationPadWidthPx : 0) +\n numSeparators * innerBorderWidthPx;\n return {\n buttonDimensions,\n layoutMode:\n keypadWidth >= pageWidthPx\n ? LayoutMode.FULLSCREEN\n : LayoutMode.COMPACT,\n };\n};\n","import {DeviceOrientation, DeviceType, LayoutMode} from \"../../../enums\";\nimport {tabletCutoffPx} from \"../../common-style\";\nimport {computeLayoutParameters} from \"../compute-layout-parameters\";\n\nimport {defaultKeypadType, keypadForType} from \"./shared\";\n\nimport type {Action} from \"./actions\";\nimport type {LayoutState} from \"./types\";\n\nconst initialLayoutState = {\n gridDimensions: {\n numRows: keypadForType[defaultKeypadType].rows,\n numColumns: keypadForType[defaultKeypadType].columns,\n numMaxVisibleRows: keypadForType[defaultKeypadType].maxVisibleRows,\n numPages: keypadForType[defaultKeypadType].numPages,\n },\n buttonDimensions: {\n widthPx: 48,\n heightPx: 48,\n },\n pageDimensions: {\n pageWidthPx: 0,\n pageHeightPx: 0,\n },\n layoutMode: LayoutMode.FULLSCREEN,\n paginationEnabled: false,\n navigationPadEnabled: false,\n} as const;\n\n/**\n * Compute the additional layout state based on the provided page and grid\n * dimensions.\n */\nconst layoutParametersForDimensions = (\n pageDimensions:\n | {\n pageHeightPx: never;\n pageWidthPx: never;\n }\n | {\n pageHeightPx: number;\n pageWidthPx: number;\n },\n gridDimensions,\n) => {\n const {pageWidthPx, pageHeightPx} = pageDimensions;\n\n // Determine the device type and orientation.\n const deviceOrientation =\n pageWidthPx > pageHeightPx\n ? DeviceOrientation.LANDSCAPE\n : DeviceOrientation.PORTRAIT;\n const deviceType =\n Math.min(pageWidthPx, pageHeightPx) > tabletCutoffPx\n ? DeviceType.TABLET\n : DeviceType.PHONE;\n\n // Using that information, make some decisions (or assumptions)\n // about the resulting layout.\n const navigationPadEnabled = deviceType === DeviceType.TABLET;\n const paginationEnabled =\n deviceType === DeviceType.PHONE &&\n deviceOrientation === DeviceOrientation.PORTRAIT;\n\n const deviceInfo = {deviceOrientation, deviceType} as const;\n const layoutOptions = {\n navigationPadEnabled,\n paginationEnabled,\n // HACK(charlie): It's not great that we're making assumptions about\n // the toolbar (which is rendered by webapp, and should always be\n // visible and anchored to the bottom of the page for phone and\n // tablet exercises). But this is primarily a heuristic (the goal is\n // to preserve a 'good' amount of space between the top of the\n // keypad and the top of the page) so we afford to have some margin\n // of error.\n toolbarEnabled: true,\n } as const;\n\n return {\n ...computeLayoutParameters(\n gridDimensions,\n pageDimensions,\n deviceInfo,\n layoutOptions,\n ),\n // Pass along some of the layout information, so that other\n // components in the heirarchy can adapt appropriately.\n navigationPadEnabled,\n paginationEnabled,\n };\n};\n\nconst layoutReducer = function (\n state: LayoutState = initialLayoutState,\n action: Action,\n): LayoutState {\n switch (action.type) {\n case \"ConfigureKeypad\":\n const {keypadType} = action.configuration;\n const gridDimensions = {\n numRows: keypadForType[keypadType].rows,\n numColumns: keypadForType[keypadType].columns,\n numMaxVisibleRows: keypadForType[keypadType].maxVisibleRows,\n numPages: keypadForType[keypadType].numPages,\n } as const;\n\n return {\n ...state,\n ...layoutParametersForDimensions(\n state.pageDimensions,\n gridDimensions,\n ),\n gridDimensions,\n };\n\n case \"SetPageSize\":\n const {pageWidthPx, pageHeightPx} = action;\n const pageDimensions = {pageWidthPx, pageHeightPx} as const;\n\n return {\n ...state,\n ...layoutParametersForDimensions(\n pageDimensions,\n state.gridDimensions,\n ),\n pageDimensions,\n };\n\n default:\n return state;\n }\n};\n\nexport default layoutReducer;\n","import * as Redux from \"redux\";\n\nimport Key from \"../../../data/keys\";\nimport GestureManager from \"../gesture-manager\";\n\nimport {setActiveNodes, pressKey} from \"./actions\";\nimport echoReducer from \"./echo-reducer\";\nimport inputReducer from \"./input-reducer\";\nimport keypadReducer from \"./keypad-reducer\";\nimport layoutReducer from \"./layout-reducer\";\nimport {defaultKeypadType, keypadForType} from \"./shared\";\n\nimport type {LayoutProps, ActiveNodesObj} from \"../../../types\";\nimport type {Action} from \"./actions\";\nimport type {GestureState} from \"./types\";\n\nexport const createStore = () => {\n // TODO(matthewc)[LC-752]: gestureReducer can't be moved from this file\n // because it depends on `store` being in scope (see note below)\n const createGestureManager = (swipeEnabled: boolean) => {\n return new GestureManager(\n {\n swipeEnabled,\n },\n {\n onActiveNodesChanged: (activeNodes: ActiveNodesObj) => {\n store.dispatch(setActiveNodes(activeNodes));\n },\n onClick: (\n key: Key,\n layoutProps: LayoutProps,\n inPopover: boolean,\n ) => {\n store.dispatch(\n pressKey(key, layoutProps.initialBounds, inPopover),\n );\n },\n },\n [],\n [\"BACKSPACE\", \"UP\", \"RIGHT\", \"DOWN\", \"LEFT\"],\n );\n };\n\n const initialGestureState = {\n popover: null,\n focus: null,\n gestureManager: createGestureManager(\n keypadForType[defaultKeypadType].numPages > 1,\n ),\n } as const;\n\n const gestureReducer = function (\n state: GestureState = initialGestureState,\n action: Action,\n ): GestureState {\n switch (action.type) {\n case \"DismissKeypad\":\n // NOTE(charlie): In the past, we enforced the \"gesture manager\n // will not receive any events when the keypad is hidden\"\n // assumption by assuming that the keypad would be hidden when\n // dismissed and, as such, that none of its managed DOM nodes\n // would be able to receive touch events. However, on mobile\n // Safari, we're seeing that some of the keys receive touch\n // events even when off-screen, inexplicably. So, to guard\n // against that bug and make the contract explicit, we enable\n // and disable event tracking on activation and dismissal.\n state.gestureManager.disableEventTracking();\n return state;\n\n case \"ActivateKeypad\":\n state.gestureManager.enableEventTracking();\n return state;\n\n case \"SetActiveNodes\":\n return {\n ...state,\n ...action.activeNodes,\n };\n\n case \"ConfigureKeypad\":\n const {keypadType} = action.configuration;\n const {numPages} = keypadForType[keypadType];\n const swipeEnabled = numPages > 1;\n return {\n popover: null,\n focus: null,\n gestureManager: createGestureManager(swipeEnabled),\n };\n\n default:\n return state;\n }\n };\n\n const reducer = Redux.combineReducers({\n input: inputReducer,\n keypad: keypadReducer,\n gestures: gestureReducer,\n echoes: echoReducer,\n layout: layoutReducer,\n });\n\n // TODO(charlie): This non-inlined return is necessary so as to allow the\n // gesture manager to dispatch actions on the store in its callbacks. We\n // should come up with a better pattern to remove the two-way dependency.\n // eslint-disable-next-line import/no-deprecated\n const store = Redux.createStore(reducer);\n\n return store;\n};\n","import * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {Provider} from \"react-redux\";\n\nimport KeypadContainer from \"./keypad-container\";\nimport {\n activateKeypad,\n dismissKeypad,\n configureKeypad,\n setCursor,\n setKeyHandler,\n} from \"./store/actions\";\nimport {createStore} from \"./store/index\";\n\nimport type {Cursor, KeypadConfiguration, KeyHandler} from \"../../types\";\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\ntype Props = {\n onElementMounted?: (arg1: any) => void;\n onDismiss?: () => void;\n style?: StyleType;\n};\n\nclass ProvidedKeypad extends React.Component<Props> {\n store: any;\n\n constructor(props) {\n super(props);\n this.store = createStore();\n }\n\n activate: () => void = () => {\n this.store.dispatch(activateKeypad());\n };\n\n dismiss: () => void = () => {\n this.store.dispatch(dismissKeypad());\n };\n\n configure: (configuration: KeypadConfiguration, cb: () => void) => void = (\n configuration,\n cb,\n ) => {\n this.store.dispatch(configureKeypad(configuration));\n\n // HACK(charlie): In Perseus, triggering a focus causes the keypad to\n // animate into view and re-configure. We'd like to provide the option\n // to re-render the re-configured keypad before animating it into view,\n // to avoid jank in the animation. As such, we support passing a\n // callback into `configureKeypad`. However, implementing this properly\n // would require middleware, etc., so we just hack it on with\n // `setTimeout` for now.\n setTimeout(() => cb && cb());\n };\n\n setCursor: (cursor: Cursor) => void = (cursor) => {\n this.store.dispatch(setCursor(cursor));\n };\n\n setKeyHandler: (keyHandler: KeyHandler) => void = (keyHandler) => {\n this.store.dispatch(setKeyHandler(keyHandler));\n };\n\n getDOMNode: () => ReturnType<typeof ReactDOM.findDOMNode> = () => {\n return ReactDOM.findDOMNode(this);\n };\n\n render(): React.ReactNode {\n const {onElementMounted, onDismiss, style} = this.props;\n\n return (\n <Provider store={this.store}>\n <KeypadContainer\n onElementMounted={(element) => {\n // Append the dispatch methods that we want to expose\n // externally to the returned React element.\n const elementWithDispatchMethods = {\n ...element,\n activate: this.activate,\n dismiss: this.dismiss,\n configure: this.configure,\n setCursor: this.setCursor,\n setKeyHandler: this.setKeyHandler,\n getDOMNode: this.getDOMNode,\n } as const;\n onElementMounted &&\n onElementMounted(elementWithDispatchMethods);\n }}\n onDismiss={onDismiss}\n style={style}\n />\n </Provider>\n );\n }\n}\n\nexport default ProvidedKeypad;\n","/*\nThe SVGs in this file should be treated as binary assets. If, in the future,\nwe need to make changes to update the color or size or shape of the glyph\nthen we should take the new asset, copy it, and paste it under the right\nheader.\n\nThis makes it as easy as possible for a designer to make an update to an\nasset.\n\nIn the future it would be great if these were included from files so that\nno copying and pasting is necessary.\n*/\nimport * as React from \"react\";\n\nimport Key from \"../../data/keys\";\n\ntype Props = {id: Key};\n\nexport default function ButtonAsset({id}: Props): React.ReactElement {\n switch (id) {\n case \"NUM_0\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M26.2991 20.36C26.2991 21.872 26.1351 23.18 25.8071 24.284C25.4871 25.388 25.0431 26.304 24.4751 27.032C23.9071 27.76 23.2391 28.3 22.4711 28.652C21.7031 29.004 20.8751 29.18 19.9871 29.18C19.0991 29.18 18.2711 29.004 17.5031 28.652C16.7351 28.3 16.0671 27.76 15.4991 27.032C14.9391 26.304 14.4991 25.388 14.1791 24.284C13.8591 23.18 13.6991 21.872 13.6991 20.36C13.6991 18.848 13.8591 17.54 14.1791 16.436C14.4991 15.324 14.9391 14.408 15.4991 13.688C16.0671 12.96 16.7351 12.42 17.5031 12.068C18.2711 11.708 19.0991 11.528 19.9871 11.528C20.8751 11.528 21.7031 11.708 22.4711 12.068C23.2391 12.42 23.9071 12.96 24.4751 13.688C25.0431 14.408 25.4871 15.324 25.8071 16.436C26.1351 17.54 26.2991 18.848 26.2991 20.36ZM23.6351 20.36C23.6351 19.08 23.5311 18.016 23.3231 17.168C23.1231 16.312 22.8551 15.628 22.5191 15.116C22.1831 14.604 21.7951 14.24 21.3551 14.024C20.9151 13.808 20.4591 13.7 19.9871 13.7C19.5071 13.7 19.0471 13.808 18.6071 14.024C18.1751 14.24 17.7911 14.604 17.4551 15.116C17.1191 15.628 16.8511 16.312 16.6511 17.168C16.4511 18.016 16.3511 19.08 16.3511 20.36C16.3511 21.64 16.4511 22.708 16.6511 23.564C16.8511 24.412 17.1191 25.092 17.4551 25.604C17.7911 26.116 18.1751 26.48 18.6071 26.696C19.0471 26.912 19.5071 27.02 19.9871 27.02C20.4591 27.02 20.9151 26.912 21.3551 26.696C21.7951 26.48 22.1831 26.116 22.5191 25.604C22.8551 25.092 23.1231 24.412 23.3231 23.564C23.5311 22.708 23.6351 21.64 23.6351 20.36Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_1\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M25.3631 27.044V29H15.9431V27.044H19.5431V16.22C19.5431 15.836 19.5551 15.444 19.5791 15.044L16.8071 17.384C16.6871 17.48 16.5631 17.544 16.4351 17.576C16.3151 17.6 16.1991 17.6 16.0871 17.576C15.9831 17.552 15.8871 17.516 15.7991 17.468C15.7191 17.412 15.6551 17.352 15.6071 17.288L14.8031 16.16L20.0111 11.684H22.1111V27.044H25.3631Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_2\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M24.8471 26.564C25.1271 26.564 25.3471 26.648 25.5071 26.816C25.6671 26.976 25.7471 27.184 25.7471 27.44V29H14.0591V28.124C14.0591 27.948 14.0951 27.764 14.1671 27.572C14.2391 27.38 14.3551 27.204 14.5151 27.044L19.8911 21.656C20.3471 21.2 20.7511 20.764 21.1031 20.348C21.4631 19.932 21.7671 19.516 22.0151 19.1C22.2711 18.684 22.4631 18.264 22.5911 17.84C22.7271 17.408 22.7951 16.956 22.7951 16.484C22.7951 16.028 22.7231 15.628 22.5791 15.284C22.4431 14.932 22.2511 14.644 22.0031 14.42C21.7631 14.188 21.4711 14.016 21.1271 13.904C20.7911 13.784 20.4191 13.724 20.0111 13.724C19.6191 13.724 19.2551 13.78 18.9191 13.892C18.5911 14.004 18.2951 14.16 18.0311 14.36C17.7751 14.56 17.5591 14.8 17.3831 15.08C17.2151 15.352 17.0911 15.652 17.0111 15.98C16.8911 16.308 16.7351 16.528 16.5431 16.64C16.3591 16.752 16.0871 16.776 15.7271 16.712L14.3711 16.472C14.4911 15.656 14.7151 14.94 15.0431 14.324C15.3791 13.708 15.7991 13.196 16.3031 12.788C16.8071 12.372 17.3831 12.06 18.0311 11.852C18.6871 11.636 19.3951 11.528 20.1551 11.528C20.9231 11.528 21.6271 11.644 22.2671 11.876C22.9151 12.1 23.4711 12.424 23.9351 12.848C24.4071 13.264 24.7751 13.772 25.0391 14.372C25.3031 14.972 25.4351 15.648 25.4351 16.4C25.4351 17.04 25.3391 17.632 25.1471 18.176C24.9631 18.72 24.7111 19.24 24.3911 19.736C24.0711 20.232 23.6951 20.716 23.2631 21.188C22.8391 21.652 22.3911 22.124 21.9191 22.604L17.7431 26.876C18.0871 26.78 18.4311 26.704 18.7751 26.648C19.1271 26.592 19.4591 26.564 19.7711 26.564H24.8471Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_3\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M14.4551 16.472C14.5751 15.656 14.7991 14.94 15.1271 14.324C15.4631 13.708 15.8831 13.196 16.3871 12.788C16.8911 12.372 17.4671 12.06 18.1151 11.852C18.7711 11.636 19.4791 11.528 20.2391 11.528C21.0071 11.528 21.7031 11.64 22.3271 11.864C22.9591 12.08 23.4991 12.384 23.9471 12.776C24.4031 13.168 24.7511 13.636 24.9911 14.18C25.2391 14.724 25.3631 15.32 25.3631 15.968C25.3631 16.52 25.2951 17.008 25.1591 17.432C25.0311 17.848 24.8431 18.216 24.5951 18.536C24.3551 18.856 24.0591 19.124 23.7071 19.34C23.3551 19.556 22.9591 19.736 22.5191 19.88C23.5911 20.192 24.3951 20.692 24.9311 21.38C25.4671 22.06 25.7351 22.916 25.7351 23.948C25.7351 24.78 25.5791 25.52 25.2671 26.168C24.9551 26.816 24.5311 27.364 23.9951 27.812C23.4671 28.26 22.8471 28.604 22.1351 28.844C21.4311 29.076 20.6831 29.192 19.8911 29.192C19.0031 29.192 18.2351 29.088 17.5871 28.88C16.9391 28.664 16.3791 28.36 15.9071 27.968C15.4431 27.568 15.0551 27.088 14.7431 26.528C14.4311 25.968 14.1671 25.34 13.9511 24.644L15.0671 24.176C15.3631 24.048 15.6431 24.012 15.9071 24.068C16.1791 24.124 16.3751 24.272 16.4951 24.512C16.6231 24.768 16.7671 25.044 16.9271 25.34C17.0871 25.628 17.2911 25.896 17.5391 26.144C17.7951 26.384 18.1071 26.588 18.4751 26.756C18.8511 26.916 19.3111 26.996 19.8551 26.996C20.4071 26.996 20.8871 26.908 21.2951 26.732C21.7111 26.548 22.0551 26.316 22.3271 26.036C22.6071 25.748 22.8151 25.428 22.9511 25.076C23.0871 24.724 23.1551 24.376 23.1551 24.032C23.1551 23.6 23.1031 23.204 22.9991 22.844C22.8951 22.476 22.6911 22.164 22.3871 21.908C22.0911 21.652 21.6671 21.452 21.1151 21.308C20.5711 21.156 19.8551 21.08 18.9671 21.08V19.22C19.6951 19.212 20.3071 19.14 20.8031 19.004C21.3071 18.86 21.7071 18.668 22.0031 18.428C22.3071 18.18 22.5231 17.884 22.6511 17.54C22.7871 17.196 22.8551 16.82 22.8551 16.412C22.8551 15.972 22.7871 15.584 22.6511 15.248C22.5151 14.912 22.3231 14.632 22.0751 14.408C21.8351 14.176 21.5471 14.004 21.2111 13.892C20.8751 13.78 20.5031 13.724 20.0951 13.724C19.7031 13.724 19.3391 13.78 19.0031 13.892C18.6751 14.004 18.3791 14.16 18.1151 14.36C17.8591 14.56 17.6431 14.8 17.4671 15.08C17.2911 15.352 17.1631 15.652 17.0831 15.98C16.9711 16.308 16.8191 16.528 16.6271 16.64C16.4431 16.752 16.1711 16.776 15.8111 16.712L14.4551 16.472Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_4\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M21.6911 22.616V16.304C21.6911 15.8 21.7271 15.248 21.7991 14.648L15.9911 22.616H21.6911ZM26.3231 22.616V24.104C26.3231 24.248 26.2751 24.372 26.1791 24.476C26.0911 24.58 25.9551 24.632 25.7711 24.632H23.9351V29H21.6911V24.632H14.2151C14.0311 24.632 13.8711 24.58 13.7351 24.476C13.6071 24.364 13.5231 24.228 13.4831 24.068L13.2191 22.748L21.5111 11.708H23.9351V22.616H26.3231Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_5\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M17.6591 18.104C18.0751 18.016 18.4711 17.952 18.8471 17.912C19.2311 17.872 19.5991 17.852 19.9511 17.852C20.8551 17.852 21.6511 17.988 22.3391 18.26C23.0351 18.524 23.6151 18.892 24.0791 19.364C24.5511 19.836 24.9031 20.392 25.1351 21.032C25.3751 21.664 25.4951 22.352 25.4951 23.096C25.4951 24.016 25.3351 24.852 25.0151 25.604C24.6951 26.356 24.2511 27 23.6831 27.536C23.1151 28.064 22.4431 28.472 21.6671 28.76C20.8991 29.048 20.0671 29.192 19.1711 29.192C18.6431 29.192 18.1391 29.14 17.6591 29.036C17.1871 28.932 16.7431 28.792 16.3271 28.616C15.9111 28.432 15.5271 28.224 15.1751 27.992C14.8231 27.752 14.5071 27.504 14.2271 27.248L15.0191 26.144C15.1871 25.904 15.4111 25.784 15.6911 25.784C15.8671 25.784 16.0591 25.848 16.2671 25.976C16.4751 26.104 16.7151 26.244 16.9871 26.396C17.2671 26.54 17.5951 26.676 17.9711 26.804C18.3471 26.932 18.7951 26.996 19.3151 26.996C19.8831 26.996 20.3911 26.904 20.8391 26.72C21.2871 26.536 21.6631 26.28 21.9671 25.952C22.2791 25.616 22.5151 25.216 22.6751 24.752C22.8351 24.288 22.9151 23.78 22.9151 23.228C22.9151 22.724 22.8391 22.272 22.6871 21.872C22.5431 21.472 22.3231 21.132 22.0271 20.852C21.7391 20.572 21.3751 20.36 20.9351 20.216C20.4951 20.064 19.9871 19.988 19.4111 19.988C18.9871 19.988 18.5511 20.024 18.1031 20.096C17.6631 20.168 17.2151 20.28 16.7591 20.432L15.1511 19.976L16.5671 11.72H24.9311V12.836C24.9311 13.204 24.8151 13.504 24.5831 13.736C24.3511 13.968 23.9631 14.084 23.4191 14.084H18.3551L17.6591 18.104Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_6\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.9751 27.056C20.4951 27.056 20.9711 26.972 21.4031 26.804C21.8351 26.628 22.2031 26.388 22.5071 26.084C22.8191 25.78 23.0591 25.42 23.2271 25.004C23.3951 24.588 23.4791 24.136 23.4791 23.648C23.4791 23.12 23.3951 22.648 23.2271 22.232C23.0671 21.808 22.8351 21.452 22.5311 21.164C22.2351 20.876 21.8751 20.656 21.4511 20.504C21.0351 20.344 20.5751 20.264 20.0711 20.264C19.5511 20.264 19.0791 20.352 18.6551 20.528C18.2391 20.704 17.8831 20.944 17.5871 21.248C17.2911 21.552 17.0631 21.908 16.9031 22.316C16.7431 22.724 16.6631 23.156 16.6631 23.612C16.6631 24.124 16.7351 24.592 16.8791 25.016C17.0231 25.44 17.2351 25.804 17.5151 26.108C17.7951 26.404 18.1391 26.636 18.5471 26.804C18.9631 26.972 19.4391 27.056 19.9751 27.056ZM19.0271 18.08C18.8991 18.24 18.7751 18.392 18.6551 18.536C18.5431 18.68 18.4311 18.824 18.3191 18.968C18.6871 18.76 19.0911 18.596 19.5311 18.476C19.9711 18.356 20.4431 18.296 20.9471 18.296C21.6191 18.296 22.2631 18.408 22.8791 18.632C23.4951 18.848 24.0351 19.176 24.4991 19.616C24.9711 20.048 25.3471 20.588 25.6271 21.236C25.9071 21.876 26.0471 22.616 26.0471 23.456C26.0471 24.256 25.8991 25.004 25.6031 25.7C25.3151 26.396 24.9071 27.004 24.3791 27.524C23.8511 28.036 23.2151 28.444 22.4711 28.748C21.7351 29.044 20.9191 29.192 20.0231 29.192C19.1271 29.192 18.3191 29.048 17.5991 28.76C16.8791 28.472 16.2631 28.068 15.7511 27.548C15.2471 27.02 14.8591 26.388 14.5871 25.652C14.3151 24.916 14.1791 24.096 14.1791 23.192C14.1791 22.408 14.3471 21.588 14.6831 20.732C15.0191 19.876 15.5391 18.976 16.2431 18.032L20.4911 12.332C20.6191 12.164 20.8031 12.02 21.0431 11.9C21.2911 11.78 21.5671 11.72 21.8711 11.72H24.1511L19.0271 18.08Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_7\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M26.0831 11.72V12.86C26.0831 13.196 26.0471 13.468 25.9751 13.676C25.9031 13.884 25.8311 14.06 25.7591 14.204L18.9311 28.1C18.8111 28.356 18.6391 28.572 18.4151 28.748C18.1991 28.916 17.9111 29 17.5511 29H15.6911L22.6511 15.332C22.7791 15.084 22.9071 14.86 23.0351 14.66C23.1631 14.46 23.3071 14.268 23.4671 14.084H14.8391C14.6791 14.084 14.5391 14.024 14.4191 13.904C14.2991 13.776 14.2391 13.632 14.2391 13.472V11.72H26.0831Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_8\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19.9991 27.152C20.5191 27.152 20.9831 27.08 21.3911 26.936C21.7991 26.784 22.1391 26.576 22.4111 26.312C22.6911 26.04 22.9031 25.72 23.0471 25.352C23.1911 24.984 23.2631 24.584 23.2631 24.152C23.2631 23.624 23.1791 23.168 23.0111 22.784C22.8511 22.4 22.6231 22.084 22.3271 21.836C22.0391 21.58 21.6951 21.392 21.2951 21.272C20.8951 21.144 20.4631 21.08 19.9991 21.08C19.5351 21.08 19.1031 21.144 18.7031 21.272C18.3031 21.392 17.9551 21.58 17.6591 21.836C17.3711 22.084 17.1431 22.4 16.9751 22.784C16.8151 23.168 16.7351 23.624 16.7351 24.152C16.7351 24.584 16.8071 24.984 16.9511 25.352C17.0951 25.72 17.3031 26.04 17.5751 26.312C17.8551 26.576 18.1991 26.784 18.6071 26.936C19.0151 27.08 19.4791 27.152 19.9991 27.152ZM19.9991 13.508C19.5271 13.508 19.1111 13.58 18.7511 13.724C18.3991 13.868 18.1071 14.06 17.8751 14.3C17.6431 14.54 17.4671 14.824 17.3471 15.152C17.2351 15.472 17.1791 15.812 17.1791 16.172C17.1791 16.532 17.2271 16.884 17.3231 17.228C17.4271 17.572 17.5871 17.88 17.8031 18.152C18.0271 18.416 18.3191 18.628 18.6791 18.788C19.0391 18.948 19.4791 19.028 19.9991 19.028C20.5191 19.028 20.9591 18.948 21.3191 18.788C21.6791 18.628 21.9671 18.416 22.1831 18.152C22.4071 17.88 22.5671 17.572 22.6631 17.228C22.7671 16.884 22.8191 16.532 22.8191 16.172C22.8191 15.812 22.7591 15.472 22.6391 15.152C22.5271 14.824 22.3511 14.54 22.1111 14.3C21.8791 14.06 21.5871 13.868 21.2351 13.724C20.8831 13.58 20.4711 13.508 19.9991 13.508ZM22.7231 19.988C23.7871 20.316 24.5831 20.836 25.1111 21.548C25.6471 22.26 25.9151 23.144 25.9151 24.2C25.9151 24.96 25.7711 25.648 25.4831 26.264C25.1951 26.88 24.7911 27.404 24.2711 27.836C23.7511 28.268 23.1271 28.604 22.3991 28.844C21.6791 29.076 20.8791 29.192 19.9991 29.192C19.1191 29.192 18.3151 29.076 17.5871 28.844C16.8671 28.604 16.2471 28.268 15.7271 27.836C15.2071 27.404 14.8031 26.88 14.5151 26.264C14.2271 25.648 14.0831 24.96 14.0831 24.2C14.0831 23.144 14.3471 22.26 14.8751 21.548C15.4111 20.836 16.2111 20.316 17.2751 19.988C16.4111 19.644 15.7591 19.144 15.3191 18.488C14.8871 17.832 14.6711 17.044 14.6711 16.124C14.6711 15.476 14.7991 14.872 15.0551 14.312C15.3111 13.752 15.6711 13.268 16.1351 12.86C16.6071 12.444 17.1711 12.12 17.8271 11.888C18.4831 11.648 19.2071 11.528 19.9991 11.528C20.7911 11.528 21.5111 11.648 22.1591 11.888C22.8151 12.12 23.3751 12.444 23.8391 12.86C24.3111 13.268 24.6751 13.752 24.9311 14.312C25.1951 14.872 25.3271 15.476 25.3271 16.124C25.3271 17.044 25.1071 17.832 24.6671 18.488C24.2351 19.144 23.5871 19.644 22.7231 19.988Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NUM_9\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M16.7351 16.856C16.7351 17.88 17.0071 18.668 17.5511 19.22C18.1031 19.764 18.8711 20.036 19.8551 20.036C20.3831 20.036 20.8471 19.952 21.2471 19.784C21.6551 19.616 21.9991 19.392 22.2791 19.112C22.5591 18.824 22.7711 18.492 22.9151 18.116C23.0591 17.732 23.1311 17.324 23.1311 16.892C23.1311 16.388 23.0511 15.94 22.8911 15.548C22.7391 15.148 22.5191 14.808 22.2311 14.528C21.9511 14.248 21.6151 14.036 21.2231 13.892C20.8311 13.74 20.4031 13.664 19.9391 13.664C19.4511 13.664 19.0111 13.744 18.6191 13.904C18.2271 14.064 17.8911 14.288 17.6111 14.576C17.3311 14.856 17.1151 15.192 16.9631 15.584C16.8111 15.968 16.7351 16.392 16.7351 16.856ZM21.1631 22.22C21.3231 22.02 21.4711 21.832 21.6071 21.656C21.7431 21.472 21.8711 21.288 21.9911 21.104C21.5751 21.4 21.1111 21.628 20.5991 21.788C20.0871 21.94 19.5431 22.016 18.9671 22.016C18.3431 22.016 17.7431 21.912 17.1671 21.704C16.5911 21.488 16.0791 21.172 15.6311 20.756C15.1831 20.332 14.8231 19.812 14.5511 19.196C14.2871 18.572 14.1551 17.856 14.1551 17.048C14.1551 16.288 14.2951 15.572 14.5751 14.9C14.8631 14.228 15.2631 13.644 15.7751 13.148C16.2871 12.644 16.8991 12.248 17.6111 11.96C18.3231 11.672 19.1111 11.528 19.9751 11.528C20.8311 11.528 21.6071 11.668 22.3031 11.948C22.9991 12.22 23.5911 12.608 24.0791 13.112C24.5671 13.608 24.9431 14.204 25.2071 14.9C25.4711 15.588 25.6031 16.348 25.6031 17.18C25.6031 17.7 25.5551 18.192 25.4591 18.656C25.3711 19.12 25.2391 19.572 25.0631 20.012C24.8951 20.444 24.6871 20.872 24.4391 21.296C24.1991 21.712 23.9271 22.136 23.6231 22.568L19.5551 28.4C19.4351 28.576 19.2551 28.72 19.0151 28.832C18.7831 28.944 18.5191 29 18.2231 29H15.8591L21.1631 22.22Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"LEFT_PAREN\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M22 10C17 16 17 24 22 30\"\n stroke=\"#21242C\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n case \"RIGHT_PAREN\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M19 10C24 16 24 24 19 30\"\n stroke=\"#21242C\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n case \"MINUS\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128Z\" />\n </svg>\n );\n case \"PLUS\":\n return (\n // Phosphor Icons - Plus Bold\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z\" />{\" \"}\n </svg>\n );\n case \"TIMES\":\n return (\n // Phosphor Icons - X Bold\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"#000000\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\" />\n </svg>\n );\n\n case \"BACKSPACE\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M216,40H68.53a16.08,16.08,0,0,0-13.72,7.77L9.14,123.88a8,8,0,0,0,0,8.24l45.67,76.11A16.08,16.08,0,0,0,68.53,216H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM61.67,204.12,68.53,200h0ZM216,200H68.53l-43.2-72,43.2-72H216ZM106.34,146.34,124.69,128l-18.35-18.34a8,8,0,0,1,11.32-11.32L136,116.69l18.34-18.35a8,8,0,0,1,11.32,11.32L147.31,128l18.35,18.34a8,8,0,0,1-11.32,11.32L136,139.31l-18.34,18.35a8,8,0,0,1-11.32-11.32Z\" />\n </svg>\n );\n case \"DISMISS\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path\n // flip to point down\n transform=\"scale(1,-1) translate(0, -260)\"\n d=\"M205.66,125.66a8,8,0,0,1-11.32,0L128,59.31,61.66,125.66a8,8,0,0,1-11.32-11.32l72-72a8,8,0,0,1,11.32,0l72,72A8,8,0,0,1,205.66,125.66Z\"\n />\n </svg>\n );\n case \"FRAC\":\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <g transform=\"translate(12 12)\">\n <path fill=\"none\" d=\"M0 0h24v24H0z\" />\n <path\n d=\"M8 16.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997H8.997c-.55 0-.997-.453-.997-.997v-6.006zM10 18h4v4h-4v-4z\"\n fill=\"currentColor\"\n />\n <rect\n fill=\"currentColor\"\n x=\"2\"\n y=\"11\"\n width=\"20\"\n height=\"2\"\n rx=\"1\"\n />\n <path\n d=\"M8 .997C8 .447 8.453 0 8.997 0h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997H8.997C8.447 8 8 7.547 8 7.003V.997zM10 2h4v4h-4V2z\"\n fill=\"currentColor\"\n />\n </g>\n </g>\n </svg>\n );\n case \"FRAC_INCLUSIVE\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16 10C16 9.44772 16.4477 9 17 9H23C23.5523 9 24 9.44772 24 10V16C24 16.5523 23.5523 17 23 17H17C16.4477 17 16 16.5523 16 16V10ZM18 11H22V15H18V11ZM14 20C14 19.4477 14.4477 19 15 19H25C25.5523 19 26 19.4477 26 20C26 20.5523 25.5523 21 25 21H15C14.4477 21 14 20.5523 14 20ZM17 23C16.4477 23 16 23.4477 16 24V30C16 30.5523 16.4477 31 17 31H23C23.5523 31 24 30.5523 24 30V24C24 23.4477 23.5523 23 23 23H17ZM22 25H18V29H22V25Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"NEGATIVE\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12.9571 13.2929C13.3476 13.6834 13.3476 14.3166 12.9571 14.7071C11.6871 15.9771 11 17.9485 11 20C11 22.0515 11.6871 24.0229 12.9571 25.2929C13.3476 25.6834 13.3476 26.3166 12.9571 26.7071C12.5666 27.0976 11.9334 27.0976 11.5429 26.7071C9.81292 24.9771 9 22.4485 9 20C9 17.5515 9.81292 15.0229 11.5429 13.2929C11.9334 12.9024 12.5666 12.9024 12.9571 13.2929ZM14 20C14 19.4477 14.4477 19 15 19H25C25.5523 19 26 19.4477 26 20C26 20.5523 25.5523 21 25 21H15C14.4477 21 14 20.5523 14 20ZM28.4571 13.2929C28.0666 12.9024 27.4334 12.9024 27.0429 13.2929C26.6524 13.6834 26.6524 14.3166 27.0429 14.7071C28.3129 15.9771 29 17.9485 29 20C29 22.0515 28.3129 24.0229 27.0429 25.2929C26.6524 25.6834 26.6524 26.3166 27.0429 26.7071C27.4334 27.0976 28.0666 27.0976 28.4571 26.7071C30.1871 24.9771 31 22.4485 31 20C31 17.5515 30.1871 15.0229 28.4571 13.2929Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n // TODO(ned): Per the notes in `KeyConfigs`, shouldn't this be a comma\n // that we replace with the period icon for i18n? Duplicating for now.\n case \"DECIMAL\":\n case \"PERIOD\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128Z\"\n // moves decimal down to baseline of number icons,\n // otherwise indistinguishable from cdot\n transform=\"translate(0 80)\"\n />\n </svg>\n );\n case \"RADICAL\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.00012 9C9.00012 8.44772 9.44784 8 10.0001 8H16.0001C16.5524 8 17.0001 8.44772 17.0001 9V15C17.0001 15.5523 16.5524 16 16.0001 16H10.0001C9.44784 16 9.00012 15.5523 9.00012 15V9ZM11.0001 10H15.0001V14H11.0001V10ZM23.0001 12C22.6598 12 22.3429 12.173 22.1589 12.4592L13.9849 25.1744L10.8322 20.4453C10.5258 19.9858 9.90493 19.8616 9.44541 20.1679C8.98588 20.4743 8.8617 21.0952 9.16806 21.5547L13.1681 27.5547C13.3552 27.8354 13.6711 28.0028 14.0084 28C14.3457 27.9972 14.6589 27.8245 14.8413 27.5408L23.5461 14H30.0001C30.5524 14 31.0001 13.5523 31.0001 13C31.0001 12.4477 30.5524 12 30.0001 12H23.0001Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"SQRT\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M240,72V96a8,8,0,0,1-16,0V80H125.55L79.49,202.81a8,8,0,0,1-15,0l-48-128a8,8,0,1,1,15-5.62L72,177.22l40.51-108A8,8,0,0,1,120,64H232A8,8,0,0,1,240,72Z\" />\n </svg>\n );\n case \"CUBE_ROOT\":\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g\n fill=\"none\"\n fillRule=\"evenodd\"\n transform=\"translate(0, -4)\"\n >\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M17.91 23.12c1.66 0 2.76-.81 2.76-1.98 0-.96-.86-1.51-1.57-1.58.79-.13 1.46-.72 1.46-1.5 0-1.1-.95-1.83-2.65-1.83-1.23 0-2.11.45-2.67 1.08l.83 1.08c.47-.42 1.05-.64 1.66-.64.64 0 1.12.19 1.12.61 0 .35-.39.52-1.08.52-.25 0-.77 0-.9-.01v1.53c.1-.01.61-.01.9-.01.91 0 1.19.18 1.19.56 0 .37-.38.65-1.12.65-.58 0-1.34-.23-1.82-.7l-.87 1.17c.52.6 1.48 1.05 2.76 1.05z\"\n fill=\"currentColor\"\n />\n <path\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M14 29l4 6 9-14h7\"\n />\n </g>\n </svg>\n );\n case \"EXP\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#21242C\"\n d=\"M28 8C28 7.44772 28.4477 7 29 7H35C35.5523 7 36 7.44772 36 8V14C36 14.5523 35.5523 15 35 15H29C28.4477 15 28 14.5523 28 14V8ZM30 9H34V13H30V9ZM14 13C14 12.4477 14.4477 12 15 12H25C25.5523 12 26 12.4477 26 13V27C26 27.5523 25.5523 28 25 28H15C14.4477 28 14 27.5523 14 27V13ZM16 14H24V26H16V14Z\"\n />\n </svg>\n );\n case \"EXP_2\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M33.5791 13.7461C33.4874 13.6545 33.3591 13.6086 33.1941 13.6086H31.4011C31.2397 13.6086 31.0674 13.6251 30.8841 13.6581C30.7007 13.6875 30.5156 13.7296 30.3286 13.7846L32.0226 12.0521C32.2352 11.8358 32.4369 11.6213 32.6276 11.4086C32.8182 11.196 32.9851 10.9778 33.1281 10.7541C33.2747 10.5268 33.3902 10.2885 33.4746 10.0391C33.5589 9.78981 33.6011 9.51847 33.6011 9.22514C33.6011 8.88414 33.5406 8.57247 33.4196 8.29014C33.2986 8.00781 33.1281 7.76764 32.9081 7.56964C32.6881 7.36797 32.4222 7.21214 32.1106 7.10214C31.8026 6.98847 31.4597 6.93164 31.0821 6.93164C30.7227 6.93164 30.3872 6.98114 30.0756 7.08014C29.7639 7.17547 29.4871 7.32031 29.2451 7.51464C29.0031 7.70897 28.8014 7.95281 28.6401 8.24614C28.4787 8.53947 28.3687 8.88047 28.3101 9.26914L29.1131 9.41214C29.3184 9.44514 29.4761 9.43231 29.5861 9.37364C29.6997 9.31131 29.7896 9.18847 29.8556 9.00514C29.8886 8.88781 29.9399 8.77964 30.0096 8.68064C30.0792 8.58164 30.1617 8.49547 30.2571 8.42214C30.3561 8.34881 30.4661 8.29197 30.5871 8.25164C30.7117 8.20764 30.8474 8.18564 30.9941 8.18564C31.3277 8.18564 31.5862 8.27914 31.7696 8.46614C31.9529 8.64947 32.0446 8.91897 32.0446 9.27464C32.0446 9.47631 32.0189 9.66881 31.9676 9.85214C31.9162 10.0355 31.8392 10.217 31.7366 10.3966C31.6339 10.5726 31.5056 10.7541 31.3516 10.9411C31.1976 11.1245 31.0197 11.317 30.8181 11.5186L28.4531 13.8891C28.3577 13.9808 28.2899 14.0835 28.2496 14.1971C28.2092 14.3071 28.1891 14.4098 28.1891 14.5051V15.0001H33.7221V14.1091C33.7221 13.9588 33.6744 13.8378 33.5791 13.7461ZM14 13.0001C14 12.4479 14.4477 12.0001 15 12.0001H25C25.5523 12.0001 26 12.4479 26 13.0001V27.0001C26 27.5524 25.5523 28.0001 25 28.0001H15C14.4477 28.0001 14 27.5524 14 27.0001V13.0001ZM16 14.0001H24V26.0001H16V14.0001Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"EXP_3\":\n return (\n <svg\n width=\"42\"\n height=\"42\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n transform=\"translate(0, -8)\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#21242C\"\n d=\"M14 21c0-.552.456-1 1.002-1h9.996A1 1 0 0 1 26 21v14c0 .552-.456 1-1.002 1h-9.996A1 1 0 0 1 14 35V21zm2 1h8v12h-8V22zM30.92 23.12c1.66 0 2.76-.81 2.76-1.98 0-.96-.86-1.51-1.57-1.58.79-.13 1.46-.72 1.46-1.5 0-1.1-.95-1.83-2.65-1.83-1.23 0-2.11.45-2.67 1.08l.83 1.08c.47-.42 1.05-.64 1.66-.64.64 0 1.12.19 1.12.61 0 .35-.39.52-1.08.52-.25 0-.77 0-.9-.01v1.53c.1-.01.61-.01.9-.01.91 0 1.19.18 1.19.56 0 .37-.38.65-1.12.65-.58 0-1.34-.23-1.82-.7l-.87 1.17c.52.6 1.48 1.05 2.76 1.05z\"\n />\n </svg>\n );\n case \"TAN\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.1573 26.128C11.4426 26.128 10.8933 25.928 10.5093 25.528C10.1306 25.1227 9.94131 24.5653 9.94131 23.856V19.272H9.10131C8.99465 19.272 8.90398 19.2373 8.82931 19.168C8.75465 19.0987 8.71731 18.9947 8.71731 18.856V18.072L10.0373 17.856L10.4533 15.616C10.48 15.5093 10.5306 15.4267 10.6053 15.368C10.68 15.3093 10.776 15.28 10.8933 15.28H11.9173V17.864H14.1093V19.272H11.9173V23.72C11.9173 23.976 11.9786 24.176 12.1013 24.32C12.2293 24.464 12.4026 24.536 12.6213 24.536C12.744 24.536 12.8453 24.5227 12.9253 24.496C13.0106 24.464 13.0826 24.432 13.1413 24.4C13.2053 24.368 13.2613 24.3387 13.3093 24.312C13.3573 24.28 13.4053 24.264 13.4533 24.264C13.512 24.264 13.56 24.28 13.5973 24.312C13.6346 24.3387 13.6746 24.3813 13.7173 24.44L14.3093 25.4C14.0213 25.64 13.6906 25.8213 13.3173 25.944C12.944 26.0667 12.5573 26.128 12.1573 26.128ZM19.7104 22.496C19.1398 22.5227 18.6598 22.5733 18.2704 22.648C17.8811 22.7173 17.5691 22.808 17.3344 22.92C17.0998 23.032 16.9318 23.1627 16.8304 23.312C16.7291 23.4613 16.6784 23.624 16.6784 23.8C16.6784 24.1467 16.7798 24.3947 16.9824 24.544C17.1904 24.6933 17.4598 24.768 17.7904 24.768C18.1958 24.768 18.5451 24.696 18.8384 24.552C19.1371 24.4027 19.4278 24.1787 19.7104 23.88V22.496ZM15.1824 18.936C16.1264 18.072 17.2624 17.64 18.5904 17.64C19.0704 17.64 19.4998 17.72 19.8784 17.88C20.2571 18.0347 20.5771 18.2533 20.8384 18.536C21.0998 18.8133 21.2971 19.1467 21.4304 19.536C21.5691 19.9253 21.6384 20.352 21.6384 20.816V26H20.7424C20.5558 26 20.4118 25.9733 20.3104 25.92C20.2091 25.8613 20.1291 25.7467 20.0704 25.576L19.8944 24.984C19.6864 25.1707 19.4838 25.336 19.2864 25.48C19.0891 25.6187 18.8838 25.736 18.6704 25.832C18.4571 25.928 18.2278 26 17.9824 26.048C17.7424 26.1013 17.4758 26.128 17.1824 26.128C16.8358 26.128 16.5158 26.0827 16.2224 25.992C15.9291 25.896 15.6758 25.7547 15.4624 25.568C15.2491 25.3813 15.0838 25.1493 14.9664 24.872C14.8491 24.5947 14.7904 24.272 14.7904 23.904C14.7904 23.696 14.8251 23.4907 14.8944 23.288C14.9638 23.08 15.0758 22.8827 15.2304 22.696C15.3904 22.5093 15.5958 22.3333 15.8464 22.168C16.0971 22.0027 16.4038 21.8587 16.7664 21.736C17.1344 21.6133 17.5611 21.5147 18.0464 21.44C18.5318 21.36 19.0864 21.312 19.7104 21.296V20.816C19.7104 20.2667 19.5931 19.8613 19.3584 19.6C19.1238 19.3333 18.7851 19.2 18.3424 19.2C18.0224 19.2 17.7558 19.2373 17.5424 19.312C17.3344 19.3867 17.1504 19.472 16.9904 19.568C16.8304 19.6587 16.6838 19.7413 16.5504 19.816C16.4224 19.8907 16.2784 19.928 16.1184 19.928C15.9798 19.928 15.8624 19.8933 15.7664 19.824C15.6704 19.7493 15.5931 19.664 15.5344 19.568L15.1824 18.936ZM25.3474 18.8C25.5128 18.6347 25.6861 18.4827 25.8674 18.344C26.0541 18.2 26.2488 18.08 26.4514 17.984C26.6594 17.8827 26.8808 17.8053 27.1154 17.752C27.3501 17.6933 27.6061 17.664 27.8834 17.664C28.3314 17.664 28.7288 17.7413 29.0754 17.896C29.4221 18.0453 29.7101 18.2587 29.9394 18.536C30.1741 18.808 30.3501 19.136 30.4674 19.52C30.5901 19.8987 30.6514 20.3173 30.6514 20.776V26H28.6754V20.776C28.6754 20.2747 28.5608 19.888 28.3314 19.616C28.1021 19.3387 27.7528 19.2 27.2834 19.2C26.9421 19.2 26.6221 19.2773 26.3234 19.432C26.0248 19.5867 25.7421 19.7973 25.4754 20.064V26H23.4994V17.792H24.7074C24.9634 17.792 25.1314 17.912 25.2114 18.152L25.3474 18.8Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"COS\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M14.9576 19.528C14.8989 19.6027 14.8402 19.6613 14.7816 19.704C14.7282 19.7467 14.6482 19.768 14.5416 19.768C14.4402 19.768 14.3416 19.7387 14.2456 19.68C14.1496 19.616 14.0349 19.5467 13.9016 19.472C13.7682 19.392 13.6082 19.3227 13.4216 19.264C13.2402 19.2 13.0136 19.168 12.7416 19.168C12.3949 19.168 12.0909 19.232 11.8296 19.36C11.5682 19.4827 11.3496 19.6613 11.1736 19.896C11.0029 20.1307 10.8749 20.416 10.7896 20.752C10.7042 21.0827 10.6616 21.4587 10.6616 21.88C10.6616 22.3173 10.7069 22.7067 10.7976 23.048C10.8936 23.3893 11.0296 23.6773 11.2056 23.912C11.3816 24.1413 11.5949 24.3173 11.8456 24.44C12.0962 24.5573 12.3789 24.616 12.6936 24.616C13.0082 24.616 13.2616 24.5787 13.4536 24.504C13.6509 24.424 13.8162 24.3387 13.9496 24.248C14.0829 24.152 14.1976 24.0667 14.2936 23.992C14.3949 23.912 14.5069 23.872 14.6296 23.872C14.7896 23.872 14.9096 23.9333 14.9896 24.056L15.5576 24.776C15.3389 25.032 15.1016 25.248 14.8456 25.424C14.5896 25.5947 14.3229 25.7333 14.0456 25.84C13.7736 25.9413 13.4909 26.0133 13.1976 26.056C12.9096 26.0987 12.6216 26.12 12.3336 26.12C11.8269 26.12 11.3496 26.0267 10.9016 25.84C10.4536 25.648 10.0616 25.3707 9.72556 25.008C9.38956 24.6453 9.1229 24.2027 8.92556 23.68C8.73356 23.152 8.63756 22.552 8.63756 21.88C8.63756 21.2773 8.7229 20.72 8.89356 20.208C9.06956 19.6907 9.32556 19.2453 9.66156 18.872C9.99756 18.4933 10.4136 18.1973 10.9096 17.984C11.4056 17.7707 11.9762 17.664 12.6216 17.664C13.2349 17.664 13.7709 17.7627 14.2296 17.96C14.6936 18.1573 15.1096 18.44 15.4776 18.808L14.9576 19.528ZM20.2877 17.664C20.8957 17.664 21.4477 17.7627 21.9437 17.96C22.445 18.1573 22.8717 18.4373 23.2237 18.8C23.581 19.1627 23.8557 19.6053 24.0477 20.128C24.2397 20.6507 24.3357 21.2347 24.3357 21.88C24.3357 22.5307 24.2397 23.1173 24.0477 23.64C23.8557 24.1627 23.581 24.608 23.2237 24.976C22.8717 25.344 22.445 25.6267 21.9437 25.824C21.4477 26.0213 20.8957 26.12 20.2877 26.12C19.6744 26.12 19.117 26.0213 18.6157 25.824C18.1144 25.6267 17.685 25.344 17.3277 24.976C16.9757 24.608 16.701 24.1627 16.5037 23.64C16.3117 23.1173 16.2157 22.5307 16.2157 21.88C16.2157 21.2347 16.3117 20.6507 16.5037 20.128C16.701 19.6053 16.9757 19.1627 17.3277 18.8C17.685 18.4373 18.1144 18.1573 18.6157 17.96C19.117 17.7627 19.6744 17.664 20.2877 17.664ZM20.2877 24.6C20.9704 24.6 21.4744 24.3707 21.7997 23.912C22.1304 23.4533 22.2957 22.7813 22.2957 21.896C22.2957 21.0107 22.1304 20.336 21.7997 19.872C21.4744 19.408 20.9704 19.176 20.2877 19.176C19.5944 19.176 19.0797 19.4107 18.7437 19.88C18.413 20.344 18.2477 21.016 18.2477 21.896C18.2477 22.776 18.413 23.448 18.7437 23.912C19.0797 24.3707 19.5944 24.6 20.2877 24.6ZM30.8512 19.392C30.7979 19.4773 30.7419 19.5387 30.6832 19.576C30.6245 19.608 30.5499 19.624 30.4592 19.624C30.3632 19.624 30.2592 19.5973 30.1472 19.544C30.0405 19.4907 29.9152 19.432 29.7712 19.368C29.6272 19.2987 29.4619 19.2373 29.2752 19.184C29.0939 19.1307 28.8779 19.104 28.6272 19.104C28.2379 19.104 27.9312 19.1867 27.7072 19.352C27.4885 19.5173 27.3792 19.7333 27.3792 20C27.3792 20.176 27.4352 20.3253 27.5472 20.448C27.6645 20.5653 27.8165 20.6693 28.0032 20.76C28.1952 20.8507 28.4112 20.9333 28.6512 21.008C28.8912 21.0773 29.1339 21.1547 29.3792 21.24C29.6299 21.3253 29.8752 21.424 30.1152 21.536C30.3552 21.6427 30.5685 21.7813 30.7552 21.952C30.9472 22.1173 31.0992 22.3173 31.2112 22.552C31.3285 22.7867 31.3872 23.0693 31.3872 23.4C31.3872 23.7947 31.3152 24.16 31.1712 24.496C31.0325 24.8267 30.8245 25.1147 30.5472 25.36C30.2699 25.6 29.9259 25.7893 29.5152 25.928C29.1099 26.0613 28.6405 26.128 28.1072 26.128C27.8245 26.128 27.5472 26.1013 27.2752 26.048C27.0085 26 26.7499 25.9307 26.4992 25.84C26.2539 25.7493 26.0245 25.6427 25.8112 25.52C25.6032 25.3973 25.4192 25.264 25.2592 25.12L25.7152 24.368C25.7739 24.2773 25.8432 24.208 25.9232 24.16C26.0032 24.112 26.1045 24.088 26.2272 24.088C26.3499 24.088 26.4645 24.1227 26.5712 24.192C26.6832 24.2613 26.8112 24.336 26.9552 24.416C27.0992 24.496 27.2672 24.5707 27.4592 24.64C27.6565 24.7093 27.9045 24.744 28.2032 24.744C28.4379 24.744 28.6379 24.7173 28.8032 24.664C28.9739 24.6053 29.1125 24.5307 29.2192 24.44C29.3312 24.3493 29.4112 24.2453 29.4592 24.128C29.5125 24.0053 29.5392 23.88 29.5392 23.752C29.5392 23.56 29.4805 23.4027 29.3632 23.28C29.2512 23.1573 29.0992 23.0507 28.9072 22.96C28.7205 22.8693 28.5045 22.7893 28.2592 22.72C28.0192 22.6453 27.7712 22.5653 27.5152 22.48C27.2645 22.3947 27.0165 22.296 26.7712 22.184C26.5312 22.0667 26.3152 21.92 26.1232 21.744C25.9365 21.568 25.7845 21.352 25.6672 21.096C25.5552 20.84 25.4992 20.5307 25.4992 20.168C25.4992 19.832 25.5659 19.512 25.6992 19.208C25.8325 18.904 26.0272 18.64 26.2832 18.416C26.5445 18.1867 26.8672 18.0053 27.2512 17.872C27.6405 17.7333 28.0885 17.664 28.5952 17.664C29.1605 17.664 29.6752 17.7573 30.1392 17.944C30.6032 18.1307 30.9899 18.376 31.2992 18.68L30.8512 19.392Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"SIN\":\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M16.4215 19.392C16.3682 19.4773 16.3122 19.5387 16.2535 19.576C16.1948 19.608 16.1202 19.624 16.0295 19.624C15.9335 19.624 15.8295 19.5973 15.7175 19.544C15.6108 19.4907 15.4855 19.432 15.3415 19.368C15.1975 19.2987 15.0322 19.2373 14.8455 19.184C14.6642 19.1307 14.4482 19.104 14.1975 19.104C13.8082 19.104 13.5015 19.1867 13.2775 19.352C13.0588 19.5173 12.9495 19.7333 12.9495 20C12.9495 20.176 13.0055 20.3253 13.1175 20.448C13.2348 20.5653 13.3868 20.6693 13.5735 20.76C13.7655 20.8507 13.9815 20.9333 14.2215 21.008C14.4615 21.0773 14.7042 21.1547 14.9495 21.24C15.2002 21.3253 15.4455 21.424 15.6855 21.536C15.9255 21.6427 16.1388 21.7813 16.3255 21.952C16.5175 22.1173 16.6695 22.3173 16.7815 22.552C16.8988 22.7867 16.9575 23.0693 16.9575 23.4C16.9575 23.7947 16.8855 24.16 16.7415 24.496C16.6028 24.8267 16.3948 25.1147 16.1175 25.36C15.8402 25.6 15.4962 25.7893 15.0855 25.928C14.6802 26.0613 14.2108 26.128 13.6775 26.128C13.3948 26.128 13.1175 26.1013 12.8455 26.048C12.5788 26 12.3202 25.9307 12.0695 25.84C11.8242 25.7493 11.5948 25.6427 11.3815 25.52C11.1735 25.3973 10.9895 25.264 10.8295 25.12L11.2855 24.368C11.3442 24.2773 11.4135 24.208 11.4935 24.16C11.5735 24.112 11.6748 24.088 11.7975 24.088C11.9202 24.088 12.0348 24.1227 12.1415 24.192C12.2535 24.2613 12.3815 24.336 12.5255 24.416C12.6695 24.496 12.8375 24.5707 13.0295 24.64C13.2268 24.7093 13.4748 24.744 13.7735 24.744C14.0082 24.744 14.2082 24.7173 14.3735 24.664C14.5442 24.6053 14.6828 24.5307 14.7895 24.44C14.9015 24.3493 14.9815 24.2453 15.0295 24.128C15.0828 24.0053 15.1095 23.88 15.1095 23.752C15.1095 23.56 15.0508 23.4027 14.9335 23.28C14.8215 23.1573 14.6695 23.0507 14.4775 22.96C14.2908 22.8693 14.0748 22.7893 13.8295 22.72C13.5895 22.6453 13.3415 22.5653 13.0855 22.48C12.8348 22.3947 12.5868 22.296 12.3415 22.184C12.1015 22.0667 11.8855 21.92 11.6935 21.744C11.5068 21.568 11.3548 21.352 11.2375 21.096C11.1255 20.84 11.0695 20.5307 11.0695 20.168C11.0695 19.832 11.1362 19.512 11.2695 19.208C11.4028 18.904 11.5975 18.64 11.8535 18.416C12.1148 18.1867 12.4375 18.0053 12.8215 17.872C13.2108 17.7333 13.6588 17.664 14.1655 17.664C14.7308 17.664 15.2455 17.7573 15.7095 17.944C16.1735 18.1307 16.5602 18.376 16.8695 18.68L16.4215 19.392ZM20.4928 17.792V26H18.5088V17.792H20.4928ZM20.7648 15.4C20.7648 15.5707 20.7301 15.7307 20.6608 15.88C20.5914 16.0293 20.4981 16.16 20.3808 16.272C20.2688 16.384 20.1354 16.4747 19.9808 16.544C19.8261 16.608 19.6608 16.64 19.4848 16.64C19.3141 16.64 19.1514 16.608 18.9968 16.544C18.8474 16.4747 18.7168 16.384 18.6048 16.272C18.4928 16.16 18.4021 16.0293 18.3328 15.88C18.2688 15.7307 18.2368 15.5707 18.2368 15.4C18.2368 15.224 18.2688 15.0587 18.3328 14.904C18.4021 14.7493 18.4928 14.616 18.6048 14.504C18.7168 14.392 18.8474 14.304 18.9968 14.24C19.1514 14.1707 19.3141 14.136 19.4848 14.136C19.6608 14.136 19.8261 14.1707 19.9808 14.24C20.1354 14.304 20.2688 14.392 20.3808 14.504C20.4981 14.616 20.5914 14.7493 20.6608 14.904C20.7301 15.0587 20.7648 15.224 20.7648 15.4ZM24.3553 18.8C24.5206 18.6347 24.6939 18.4827 24.8753 18.344C25.0619 18.2 25.2566 18.08 25.4593 17.984C25.6673 17.8827 25.8886 17.8053 26.1233 17.752C26.3579 17.6933 26.6139 17.664 26.8913 17.664C27.3393 17.664 27.7366 17.7413 28.0833 17.896C28.4299 18.0453 28.7179 18.2587 28.9473 18.536C29.1819 18.808 29.3579 19.136 29.4753 19.52C29.5979 19.8987 29.6593 20.3173 29.6593 20.776V26H27.6833V20.776C27.6833 20.2747 27.5686 19.888 27.3393 19.616C27.1099 19.3387 26.7606 19.2 26.2913 19.2C25.9499 19.2 25.6299 19.2773 25.3313 19.432C25.0326 19.5867 24.7499 19.7973 24.4833 20.064V26H22.5073V17.792H23.7153C23.9713 17.792 24.1393 17.912 24.2193 18.152L24.3553 18.8Z\"\n fill=\"#21242C\"\n />\n </svg>\n );\n case \"DIVIDE\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM128,80a16,16,0,1,0-16-16A16,16,0,0,0,128,80Zm0,96a16,16,0,1,0,16,16A16,16,0,0,0,128,176Z\" />\n </svg>\n );\n case \"EQUAL\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M224,160a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,160ZM40,104H216a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16Z\" />\n </svg>\n );\n case \"GT\":\n return (\n <svg width=\"44\" height=\"44\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M16 30l16-6-16-6\"\n />\n </g>\n </svg>\n );\n case \"LT\":\n return (\n <svg width=\"44\" height=\"44\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M32 30l-16-6 16-6\"\n />\n </g>\n </svg>\n );\n case \"GEQ\":\n return (\n <svg width=\"44\" height=\"44\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M16 33h16M16 30l16-6-16-6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n case \"LEQ\":\n return (\n <svg width=\"44\" height=\"44\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M16 33h16M32 30l-16-6 16-6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n case \"NEQ\":\n return (\n <svg width=\"44\" height=\"44\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path fill=\"none\" d=\"M12 12h24v24H12z\" />\n <path\n d=\"M19 33l10-18M16 21h17M16 27h17\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n case \"LN\":\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M20.836 29v-9.338h-1.778V29h1.778zm8.106 0v-4.774c0-1.316-.714-2.156-2.198-2.156-1.106 0-1.932.532-2.366 1.05v-.882H22.6V29h1.778v-4.55c.294-.406.84-.798 1.54-.798.756 0 1.246.322 1.246 1.26V29h1.778z\"\n fill=\"currentColor\"\n />\n </g>\n </svg>\n );\n case \"LOG\":\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M16.776 29v-9.338h-1.778V29h1.778zm4.9.168c2.24 0 3.584-1.624 3.584-3.556 0-1.918-1.344-3.542-3.584-3.542-2.226 0-3.57 1.624-3.57 3.542 0 1.932 1.344 3.556 3.57 3.556zm0-1.582c-1.106 0-1.722-.91-1.722-1.974 0-1.05.616-1.96 1.722-1.96 1.106 0 1.736.91 1.736 1.96 0 1.064-.63 1.974-1.736 1.974zm7.672 4.158c1.666 0 3.654-.63 3.654-3.206v-6.3H31.21v.868c-.546-.686-1.274-1.036-2.086-1.036-1.708 0-2.982 1.232-2.982 3.444 0 2.254 1.288 3.444 2.982 3.444.826 0 1.554-.392 2.086-1.064v.686c0 1.33-1.008 1.708-1.862 1.708-.854 0-1.568-.238-2.114-.84l-.798 1.288c.854.742 1.75 1.008 2.912 1.008zm.336-4.368c-1.008 0-1.708-.7-1.708-1.862 0-1.162.7-1.862 1.708-1.862.588 0 1.232.322 1.526.77v2.184c-.294.434-.938.77-1.526.77z\"\n fill=\"currentColor\"\n />\n </g>\n </svg>\n );\n case \"LOG_N\":\n return (\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"none\" d=\"M0 0h48v48H0z\" />\n <path\n d=\"M30 28.997c0-.55.453-.997.997-.997h6.006c.55 0 .997.453.997.997v6.006c0 .55-.453.997-.997.997h-6.006c-.55 0-.997-.453-.997-.997v-6.006zM32 30h4v4h-4v-4zM12.776 29v-9.338h-1.778V29h1.778zm4.9.168c2.24 0 3.584-1.624 3.584-3.556 0-1.918-1.344-3.542-3.584-3.542-2.226 0-3.57 1.624-3.57 3.542 0 1.932 1.344 3.556 3.57 3.556zm0-1.582c-1.106 0-1.722-.91-1.722-1.974 0-1.05.616-1.96 1.722-1.96 1.106 0 1.736.91 1.736 1.96 0 1.064-.63 1.974-1.736 1.974zm7.672 4.158c1.666 0 3.654-.63 3.654-3.206v-6.3H27.21v.868c-.546-.686-1.274-1.036-2.086-1.036-1.708 0-2.982 1.232-2.982 3.444 0 2.254 1.288 3.444 2.982 3.444.826 0 1.554-.392 2.086-1.064v.686c0 1.33-1.008 1.708-1.862 1.708-.854 0-1.568-.238-2.114-.84l-.798 1.288c.854.742 1.75 1.008 2.912 1.008zm.336-4.368c-1.008 0-1.708-.7-1.708-1.862 0-1.162.7-1.862 1.708-1.862.588 0 1.232.322 1.526.77v2.184c-.294.434-.938.77-1.526.77z\"\n fill=\"currentColor\"\n />\n </g>\n </svg>\n );\n case \"PERCENT\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M205.66,61.64l-144,144a8,8,0,0,1-11.32-11.32l144-144a8,8,0,0,1,11.32,11.31ZM50.54,101.44a36,36,0,0,1,50.92-50.91h0a36,36,0,0,1-50.92,50.91ZM56,76A20,20,0,1,0,90.14,61.84h0A20,20,0,0,0,56,76ZM216,180a36,36,0,1,1-10.54-25.46h0A35.76,35.76,0,0,1,216,180Zm-16,0a20,20,0,1,0-5.86,14.14A19.87,19.87,0,0,0,200,180Z\" />\n </svg>\n );\n case \"CDOT\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128Z\" />\n </svg>\n );\n case \"PI\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M232,172a36,36,0,0,1-72,0V72H96V200a8,8,0,0,1-16,0V72H72a40,40,0,0,0-40,40,8,8,0,0,1-16,0A56.06,56.06,0,0,1,72,56H224a8,8,0,0,1,0,16H176V172a20,20,0,0,0,40,0,8,8,0,0,1,16,0Z\" />\n </svg>\n );\n case \"a\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 384 512\"\n >\n <path d=\"M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7l-120 288-40 96c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L93.3 384H290.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-40-96-120-288zM264 320H120l72-172.8L264 320z\" />\n </svg>\n );\n case \"b\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 320 512\"\n >\n <path d=\"M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64H192c70.7 0 128-57.3 128-128c0-46.5-24.8-87.3-62-109.7c18.7-22.3 30-51 30-82.3c0-70.7-57.3-128-128-128H64zm96 192H64V96h96c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288h96 32c35.3 0 64 28.7 64 64s-28.7 64-64 64H64V288z\" />\n </svg>\n );\n case \"c\":\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 384 512\"\n >\n <path d=\"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3s155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8s221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\" />\n </svg>\n );\n case \"x\":\n // MATHEMATICAL ITALIC SMALL CHI\n // https://en.wikipedia.org/wiki/Chi_(letter)#Mathematical_chi\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <text\n fontSize=\"200px\"\n x=\"50%\"\n y=\"50%\"\n dominantBaseline=\"middle\"\n textAnchor=\"middle\"\n >\n 𝜒\n </text>\n </svg>\n );\n case \"X\":\n // MATHEMATICAL ITALIC CAPITAL CHI\n // https://en.wikipedia.org/wiki/Chi_(letter)#Mathematical_chi\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n fill=\"currentColor\"\n viewBox=\"0 0 256 256\"\n >\n <text\n fontSize=\"200px\"\n x=\"50%\"\n y=\"50%\"\n dominantBaseline=\"middle\"\n textAnchor=\"middle\"\n >\n 𝛸\n </text>\n </svg>\n );\n\n /**\n * ANYTHING BELOW IS NOT YET HANDLED\n */\n case \"MANY\":\n case \"FRAC_EXCLUSIVE\":\n case \"THETA\":\n case \"NOOP\":\n case \"UP\":\n case \"DOWN\":\n case \"LEFT\":\n case \"RIGHT\":\n case \"JUMP_OUT_PARENTHESES\":\n case \"JUMP_OUT_EXPONENT\":\n case \"JUMP_OUT_BASE\":\n case \"JUMP_INTO_NUMERATOR\":\n case \"JUMP_OUT_NUMERATOR\":\n case \"JUMP_OUT_DENOMINATOR\":\n case \"PHI\":\n case \"NTHROOT3\":\n case \"POW\":\n case \"LOG_B\":\n case \"d\":\n case \"e\":\n case \"f\":\n case \"g\":\n case \"h\":\n case \"i\":\n case \"j\":\n case \"k\":\n case \"l\":\n case \"m\":\n case \"n\":\n case \"o\":\n case \"p\":\n case \"q\":\n case \"r\":\n case \"s\":\n case \"t\":\n case \"u\":\n case \"v\":\n case \"w\":\n case \"y\":\n case \"z\":\n case \"A\":\n case \"B\":\n case \"C\":\n case \"D\":\n case \"E\":\n case \"F\":\n case \"G\":\n case \"H\":\n case \"I\":\n case \"J\":\n case \"K\":\n case \"L\":\n case \"M\":\n case \"N\":\n case \"O\":\n case \"P\":\n case \"Q\":\n case \"R\":\n case \"S\":\n case \"T\":\n case \"U\":\n case \"V\":\n case \"W\":\n case \"Y\":\n case \"Z\":\n // placeholder\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"black\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <text\n y=\"20\"\n textLength=\"100%\"\n lengthAdjust=\"spacingAndGlyphs\"\n >\n {id}\n </text>\n <text\n y=\"35\"\n textLength=\"100%\"\n lengthAdjust=\"spacingAndGlyphs\"\n fill=\"red\"\n >\n placeholder\n </text>\n </svg>\n );\n default:\n // this line forces an exhaustive check of all keys;\n // if a key is not handled, the compiler will complain.\n const unhandledKey: never = id;\n throw new Error(`Unhandled key: ${unhandledKey}`);\n }\n}\n","import Clickable from \"@khanacademy/wonder-blocks-clickable\";\nimport Color from \"@khanacademy/wonder-blocks-color\";\nimport {View} from \"@khanacademy/wonder-blocks-core\";\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport {KeyConfig, ClickKeyCallback} from \"../../types\";\n\nimport ButtonAsset from \"./button-assets\";\n\nimport type {StyleType} from \"@khanacademy/wonder-blocks-core\";\n\nexport type KeypadButtonProps = {\n // 0 indexed [x, y] position in keypad CSS grid\n coord: readonly [number, number];\n keyConfig: KeyConfig;\n onClickKey: ClickKeyCallback;\n // Apply action button styles\n action?: boolean;\n // Apply secondary button styles\n secondary?: boolean;\n style?: StyleType;\n};\n\nexport const KeypadButton = ({\n coord,\n keyConfig,\n onClickKey,\n style,\n secondary,\n action,\n}: KeypadButtonProps): React.ReactElement => {\n const tintColor = secondary ? \"#F6F6F7\" : action ? \"#DBDCDD\" : undefined;\n\n return (\n <View\n style={{\n gridColumn: coord[0] + 1,\n gridRow: coord[1] + 1,\n ...style,\n }}\n >\n <Clickable\n onClick={() => onClickKey(keyConfig.id)}\n style={styles.clickable}\n aria-label={keyConfig.ariaLabel}\n >\n {({hovered, focused, pressed}) => {\n return (\n <View\n style={[\n styles.outerBoxBase,\n hovered && styles.outerBoxHover,\n pressed && styles.outerBoxPressed,\n ]}\n >\n <View\n style={[\n styles.base,\n tintColor != null\n ? {background: tintColor}\n : undefined,\n hovered && styles.hovered,\n focused && styles.focused,\n pressed && styles.pressed,\n ]}\n >\n <ButtonAsset id={keyConfig.id} />\n </View>\n </View>\n );\n }}\n </Clickable>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n base: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n boxShadow: \"0px 1px 0px rgba(33, 36, 44, 0.32)\",\n boxSizing: \"border-box\",\n background: Color.white,\n borderRadius: 4,\n border: `1px solid transparent`,\n flex: 1,\n minHeight: 42,\n minWidth: 42,\n padding: 1,\n },\n hovered: {\n border: `1px solid ${Color.blue}`,\n padding: 1,\n boxShadow: \"none\",\n },\n focused: {\n border: `2px solid ${Color.blue}`,\n padding: 0,\n boxShadow: \"none\",\n },\n pressed: {\n border: \"2px solid #1B50B3\",\n padding: 0,\n background: `linear-gradient(0deg, rgba(24, 101, 242, 0.32), rgba(24, 101, 242, 0.32)), ${Color.white}`,\n boxShadow: \"none\",\n },\n outerBoxBase: {\n padding: 1,\n height: \"100%\",\n width: \"100%\",\n boxSizing: \"border-box\",\n borderRadius: 7,\n border: \"2px solid transparent\",\n },\n outerBoxHover: {\n border: `2px solid ${Color.blue}`,\n },\n outerBoxPressed: {\n border: \"2px solid #1B50B3\",\n },\n clickable: {\n width: \"100%\",\n height: \"100%\",\n boxSizing: \"border-box\",\n },\n});\n","import * as React from \"react\";\n\nimport Keys from \"../../../data/key-configs\";\nimport Key from \"../../../data/keys\";\nimport {ClickKeyCallback} from \"../../../types\";\nimport {KeypadButton} from \"../keypad-button\";\n\ntype Props = {\n extraKeys: ReadonlyArray<Key>;\n onClickKey: ClickKeyCallback;\n};\n\nconst columns = 4;\n\nexport default function ExtrasPage(props: Props) {\n const {extraKeys, onClickKey} = props;\n return (\n <>\n {extraKeys.map((key, i) => {\n // Map 1D array to Cartesian coordinates\n const coordX = i % columns;\n const coordY = i / columns;\n return (\n <KeypadButton\n key={key}\n keyConfig={Keys[key]}\n onClickKey={onClickKey}\n coord={[coordX, coordY]}\n />\n );\n })}\n </>\n );\n}\n","import * as React from \"react\";\n\nimport Keys from \"../../../data/key-configs\";\nimport {ClickKeyCallback} from \"../../../types\";\nimport {KeypadButton} from \"../keypad-button\";\n\ntype Props = {\n onClickKey: ClickKeyCallback;\n};\n\nexport default function GeometryPage(props: Props) {\n const {onClickKey} = props;\n return (\n <>\n {/* Row 1 */}\n <KeypadButton\n keyConfig={Keys.SIN}\n onClickKey={onClickKey}\n coord={[0, 0]}\n />\n <KeypadButton\n keyConfig={Keys.COS}\n onClickKey={onClickKey}\n coord={[1, 0]}\n />\n <KeypadButton\n keyConfig={Keys.TAN}\n onClickKey={onClickKey}\n coord={[2, 0]}\n />\n </>\n );\n}\n","import * as React from \"react\";\n\nimport Keys from \"../../../data/key-configs\";\nimport {ClickKeyCallback} from \"../../../types\";\nimport {KeypadButton} from \"../keypad-button\";\n\ntype Props = {\n onClickKey: ClickKeyCallback;\n};\n\nexport default function NumbersPage(props: Props) {\n const {onClickKey} = props;\n return (\n <>\n {/* Row 1 */}\n <KeypadButton\n keyConfig={Keys.NUM_7}\n onClickKey={onClickKey}\n coord={[0, 0]}\n />\n <KeypadButton\n keyConfig={Keys.NUM_8}\n onClickKey={onClickKey}\n coord={[1, 0]}\n />\n <KeypadButton\n keyConfig={Keys.NUM_9}\n onClickKey={onClickKey}\n coord={[2, 0]}\n />\n\n {/* Row 2 */}\n <KeypadButton\n keyConfig={Keys.NUM_4}\n onClickKey={onClickKey}\n coord={[0, 1]}\n />\n <KeypadButton\n keyConfig={Keys.NUM_5}\n onClickKey={onClickKey}\n coord={[1, 1]}\n />\n <KeypadButton\n keyConfig={Keys.NUM_6}\n onClickKey={onClickKey}\n coord={[2, 1]}\n />\n\n {/* Row 3 */}\n <KeypadButton\n keyConfig={Keys.NUM_1}\n onClickKey={onClickKey}\n coord={[0, 2]}\n />\n <KeypadButton\n keyConfig={Keys.NUM_2}\n onClickKey={onClickKey}\n coord={[1, 2]}\n />\n <KeypadButton\n keyConfig={Keys.NUM_3}\n onClickKey={onClickKey}\n coord={[2, 2]}\n />\n\n {/* Row 4 */}\n <KeypadButton\n keyConfig={Keys.NUM_0}\n onClickKey={onClickKey}\n coord={[0, 3]}\n />\n <KeypadButton\n keyConfig={Keys.DECIMAL}\n onClickKey={onClickKey}\n coord={[1, 3]}\n />\n <KeypadButton\n keyConfig={Keys.NEGATIVE}\n onClickKey={onClickKey}\n coord={[2, 3]}\n />\n </>\n );\n}\n","import * as React from \"react\";\n\nimport Keys from \"../../../data/key-configs\";\nimport {ClickKeyCallback} from \"../../../types\";\nimport {KeypadButton} from \"../keypad-button\";\n\ntype Props = {\n onClickKey: ClickKeyCallback;\n preAlgebra?: boolean;\n logarithms?: boolean;\n basicRelations?: boolean;\n advancedRelations?: boolean;\n};\n\nexport default function OperatorsPage(props: Props) {\n const {\n onClickKey,\n preAlgebra,\n logarithms,\n basicRelations,\n advancedRelations,\n } = props;\n\n return (\n <>\n {/* Row 1 */}\n {preAlgebra && (\n <>\n <KeypadButton\n keyConfig={Keys.EXP_2}\n onClickKey={onClickKey}\n coord={[0, 0]}\n />\n <KeypadButton\n keyConfig={Keys.EXP}\n onClickKey={onClickKey}\n coord={[1, 0]}\n />\n <KeypadButton\n keyConfig={Keys.SQRT}\n onClickKey={onClickKey}\n coord={[2, 0]}\n />\n <KeypadButton\n keyConfig={Keys.RADICAL}\n onClickKey={onClickKey}\n coord={[3, 0]}\n />\n </>\n )}\n\n {/* Row 2 */}\n {logarithms && (\n <>\n <KeypadButton\n keyConfig={Keys.LOG}\n onClickKey={onClickKey}\n coord={[0, 1]}\n />\n <KeypadButton\n keyConfig={Keys.LOG_N}\n onClickKey={onClickKey}\n coord={[1, 1]}\n />\n <KeypadButton\n keyConfig={Keys.LN}\n onClickKey={onClickKey}\n coord={[2, 1]}\n />\n </>\n )}\n\n {/* Row 3 */}\n {basicRelations && (\n <>\n <KeypadButton\n keyConfig={Keys.EQUAL}\n onClickKey={onClickKey}\n coord={[0, 2]}\n />\n <KeypadButton\n keyConfig={Keys.LT}\n onClickKey={onClickKey}\n coord={[1, 2]}\n />\n <KeypadButton\n keyConfig={Keys.GT}\n onClickKey={onClickKey}\n coord={[2, 2]}\n />\n </>\n )}\n\n {/* Row 4 */}\n {advancedRelations && (\n <>\n <KeypadButton\n keyConfig={Keys.NEQ}\n onClickKey={onClickKey}\n coord={[0, 3]}\n />\n <KeypadButton\n keyConfig={Keys.LEQ}\n onClickKey={onClickKey}\n coord={[1, 3]}\n />\n <KeypadButton\n keyConfig={Keys.GEQ}\n onClickKey={onClickKey}\n coord={[2, 3]}\n />\n </>\n )}\n </>\n );\n}\n","import * as React from \"react\";\n\nimport Keys from \"../../data/key-configs\";\nimport {ClickKeyCallback} from \"../../types\";\n\nimport {KeypadButton} from \"./keypad-button\";\n\ntype Props = {\n onClickKey: ClickKeyCallback;\n multiplicationDot?: boolean;\n divisionKey?: boolean;\n};\n\nexport default function SharedKeys(props: Props) {\n const {onClickKey, divisionKey, multiplicationDot} = props;\n\n return (\n <>\n {/* Row 1 */}\n <KeypadButton\n keyConfig={Keys.PLUS}\n onClickKey={onClickKey}\n coord={[4, 0]}\n secondary\n />\n <KeypadButton\n keyConfig={Keys.MINUS}\n onClickKey={onClickKey}\n coord={[5, 0]}\n secondary\n />\n\n {/* Row 2 */}\n <KeypadButton\n keyConfig={multiplicationDot ? Keys.CDOT : Keys.TIMES}\n onClickKey={onClickKey}\n coord={[4, 1]}\n secondary\n />\n {divisionKey && (\n <KeypadButton\n keyConfig={Keys.DIVIDE}\n onClickKey={onClickKey}\n coord={[5, 1]}\n secondary\n />\n )}\n\n {/* Row 3 */}\n <KeypadButton\n keyConfig={Keys.LEFT_PAREN}\n onClickKey={onClickKey}\n coord={[4, 2]}\n secondary\n />\n <KeypadButton\n keyConfig={Keys.RIGHT_PAREN}\n onClickKey={onClickKey}\n coord={[5, 2]}\n secondary\n />\n\n {/* Row 4 */}\n <KeypadButton\n keyConfig={Keys.FRAC_INCLUSIVE}\n onClickKey={onClickKey}\n coord={[4, 3]}\n secondary\n />\n <KeypadButton\n keyConfig={Keys.BACKSPACE}\n onClickKey={onClickKey}\n coord={[5, 3]}\n action\n />\n </>\n );\n}\n","import Color from \"@khanacademy/wonder-blocks-color\";\nimport {View} from \"@khanacademy/wonder-blocks-core\";\nimport {StyleSheet} from \"aphrodite\";\nimport * as React from \"react\";\n\nimport Key from \"../../data/keys\";\nimport {ClickKeyCallback} from \"../../types\";\nimport Tabbar from \"../tabbar/tabbar\";\nimport {TabbarItemType} from \"../tabbar/types\";\n\nimport ExtrasPage from \"./keypad-pages/extras-page\";\nimport GeometryPage from \"./keypad-pages/geometry-page\";\nimport NumbersPage from \"./keypad-pages/numbers-page\";\nimport OperatorsPage from \"./keypad-pages/operators-page\";\nimport SharedKeys from \"./shared-keys\";\n\nexport type Props = {\n onClickKey: ClickKeyCallback;\n trigonometry?: boolean;\n extraKeys: ReadonlyArray<Key>;\n multiplicationDot?: boolean;\n divisionKey?: boolean;\n preAlgebra?: boolean;\n logarithms?: boolean;\n basicRelations?: boolean;\n advancedRelations?: boolean;\n};\n\nfunction allPages(props: Props): ReadonlyArray<TabbarItemType> {\n const pages: Array<TabbarItemType> = [\"Numbers\"];\n\n if (\n // OperatorsButtonSets\n props.preAlgebra ||\n props.logarithms ||\n props.basicRelations ||\n props.advancedRelations\n ) {\n pages.push(\"Operators\");\n }\n\n if (props.trigonometry) {\n pages.push(\"Geometry\");\n }\n\n if (props.extraKeys?.length) {\n pages.push(\"Extras\");\n }\n\n return pages;\n}\n\nexport default function Keypad(props: Props) {\n const [selectedPage, setSelectedPage] =\n React.useState<TabbarItemType>(\"Numbers\");\n\n const availablePages = allPages(props);\n\n const {\n onClickKey,\n extraKeys = [],\n multiplicationDot,\n divisionKey,\n preAlgebra,\n logarithms,\n basicRelations,\n advancedRelations,\n } = props;\n\n return (\n <View>\n <Tabbar\n items={availablePages}\n selectedItem={selectedPage}\n onSelectItem={(tabbarItem: TabbarItemType) => {\n setSelectedPage(tabbarItem);\n }}\n style={styles.tabbar}\n />\n\n <View style={styles.grid}>\n {selectedPage === \"Numbers\" && (\n <NumbersPage onClickKey={onClickKey} />\n )}\n {selectedPage === \"Extras\" && (\n <ExtrasPage onClickKey={onClickKey} extraKeys={extraKeys} />\n )}\n {selectedPage === \"Operators\" && (\n <OperatorsPage\n onClickKey={onClickKey}\n preAlgebra={preAlgebra}\n logarithms={logarithms}\n basicRelations={basicRelations}\n advancedRelations={advancedRelations}\n />\n )}\n {selectedPage === \"Geometry\" && (\n <GeometryPage onClickKey={onClickKey} />\n )}\n <SharedKeys\n onClickKey={onClickKey}\n multiplicationDot={multiplicationDot}\n divisionKey={divisionKey}\n />\n </View>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n tabbar: {\n background: Color.white,\n },\n grid: {\n display: \"grid\",\n gridTemplateColumns: \"repeat(6, 1fr)\",\n gridTemplateRows: \"repeat(4, 1fr)\",\n backgroundColor: \"#DBDCDD\",\n maxHeight: 200,\n maxWidth: 300,\n },\n});\n"],"names":["CursorContext","Text","React","Component","render","numberOfLines","style","props","className","css","styles","initial","Array","isArray","singleLineStyle","createElement","dynamicStyle","children","StyleSheet","create","color","display","font","margin","padding","textDecorationLine","wordWrap","maxWidth","overflow","textOverflow","whiteSpace","View","extraClassName","onClick","onTouchCancel","onTouchEnd","onTouchMove","onTouchStart","ariaLabel","role","alignItems","borderWidth","borderStyle","boxSizing","flexBasis","flexDirection","position","backgroundColor","textAlign","listStyle","minHeight","minWidth","wonderBlocksBlue","Color","blue","offBlack","offBlack32","offBlack16","offBlack8","iconSizeHeightPx","iconSizeWidthPx","compactKeypadBorderRadiusPx","cursorHandleRadiusPx","cursorHandleDistanceMultiplier","valueGrey","operatorGrey","controlGrey","emptyGrey","innerBorderColor","innerBorderStyle","innerBorderWidthPx","tabletCutoffPx","pageIndicatorHeightPx","navigationPadWidthPx","toolbarHeightPx","touchTargetRadiusPx","touchTargetHeightPx","touchTargetWidthPx","cursorRadiusPx","cursorHeightPx","cursorWidthPx","CursorHandle","x","y","animateIntoPosition","animationStyle","transitionDuration","transitionProperty","transformString","outerStyle","_extends","zIndex","left","top","transform","width","height","touchAction","fill","viewBox","id","colorInterpolationFilters","filterUnits","floodOpacity","result","in","type","values","dy","stdDeviation","in2","mode","filter","d","stroke","strokeWidth","defaultProps","visible","touchSlopPx","DragListener","constructor","onDrag","initialEvent","_scrollListener","_moveListener","_endAndCancelListener","touchLocationsById","i","changedTouches","length","touch","identifier","clientX","clientY","evt","initialTouchLocation","touchLocation","dx","squaredDist","squaredTouchSlop","attach","window","addEventListener","detach","removeEventListener","mathQuillInstance","MathQuill","getInterface","createBaseConfig","autoCommands","charsThatBreakOutOfSupSub","supSubsRequireOperand","spaceBehavesLikeTab","createMathField","container","configCallback","baseConfig","config","MathField","MathFieldActionType","Numerals","GreekLetters","Letters","ValidLeaves","map","letter","toLowerCase","toUpperCase","getCursor","mathField","__controller","cursor","isFraction","node","jQ","hasClass","isNumerator","isDenominator","isSubScript","isSuperScript","isParens","ctrlSeq","isLeaf","includes","trim","isSquareRoot","blocks","isNthRoot","isNthRootIndex","isInsideLogIndex","grandparent","parent","command","maybeFindCommandBeforeParens","name","isInsideEmptyNode","L","MQ_END","R","selectNode","insLeftOf","startSelection","insRightOf","select","endSelection","maybeFindCommand","initialNode","commandCharRegex","commandStartRegex","commandEndSeq","validCommands","startNode","endNode","test","leftParenNode","contextForCursor","visitor","BEFORE_FRACTION","IN_PARENS","IN_NUMERATOR","IN_DENOMINATOR","IN_SUB_SCRIPT","IN_SUPER_SCRIPT","NONE","handleBackspaceInNthRoot","isAtLeftEnd","isRootEmpty","ends","keystroke","handleBackspaceInRootIndex","latex","reinsertionPoint","rootIsEmpty","text","write","replace","moveToDirEnd","handleBackspaceInLogIndex","isLogBodyEmpty","contentjQ","handleBackspaceOutsideParens","leftNode","rightNode","insAtRightEnd","handleBackspaceInsideParens","sub","isEmpty","handleBackspaceAfterLigaturedSymbol","handleBackspace","selection","KeypadType","KeyTypes","DeviceOrientation","DeviceType","LayoutMode","BorderDirection","BorderStyles","LEFT","BOTTOM","ALL","IconType","DecimalSeparator","EchoAnimationType","decimalSeparator","getDecimalSeparator","COMMA","PERIOD","handleLeftArrow","handleRightArrow","handleArrow","key","ArithmeticOperators","EqualityOperators","handleExponent","invalidPrefixes","precedingNode","shouldPrefixWithParens","cmd","Error","KeysForJumpContext","handleJumpOut","context","fractionNode","siblingDenominator","ActionType","decimalSymbol","buildGenericCallback","str","WRITE","mathQuill","CMD","KEYSTROKE","buildNormalFunctionCallback","keyToMathquillMap","EXP","EXP_2","EXP_3","JUMP_OUT_PARENTHESES","JUMP_OUT_EXPONENT","JUMP_OUT_BASE","JUMP_INTO_NUMERATOR","JUMP_OUT_NUMERATOR","JUMP_OUT_DENOMINATOR","RIGHT","LOG","LN","SIN","COS","TAN","CDOT","DECIMAL","DIVIDE","EQUAL","GEQ","GT","LEQ","LT","MINUS","NEGATIVE","NEQ","PERCENT","PLUS","TIMES","FRAC_INCLUSIVE","FRAC","LEFT_PAREN","RIGHT_PAREN","SQRT","PHI","PI","THETA","RADICAL","BACKSPACE","UP","DOWN","CUBE_ROOT","FRAC_EXCLUSIVE","shouldNavigateLeft","LOG_B","typedText","LOG_N","NTHROOT3","POW","contents","DISMISS","NOOP","MANY","NUM_0","NUM_1","NUM_2","NUM_3","NUM_4","NUM_5","NUM_6","NUM_7","NUM_8","NUM_9","a","b","c","e","f","g","h","j","k","l","m","n","o","p","q","r","s","t","u","v","w","z","A","B","C","D","E","F","G","H","I","J","K","M","N","O","P","Q","S","T","U","V","W","X","Y","Z","mobileKeyTranslator","keyTranslator","MathWrapper","element","callbacks","substituteTextarea","document","focus","controller","show","blurred","blur","hide","pressKey","translator","onSelectionChanged","setCursorPosition","hitNode","el","elementFromPoint","hasAttribute","root","pageX","body","scrollLeft","pageY","scrollTop","seek","$","onCursorMove","getSelection","getContent","setContent","scrollIntoView","containerNode","keypadNode","containerBounds","getBoundingClientRect","containerBottomPx","bottom","containerTopPx","scrollNode","scrollingElement","desiredMarginPx","pageHeightPx","innerHeight","keypadHeightPx","clientHeight","keypadTopPx","scrollOffset","Math","min","constrainingFrictionFactor","MathInput","args","didTouchOutside","didScroll","recordTouchStartOutside","blurOnTouchEndOutside","dragListener","inputRef","_isMounted","_mathContainer","_container","_root","_containerBounds","_keypadBounds","state","focused","handle","_clearKeypadBoundsCache","_cacheKeypadBounds","_updateInputPadding","ReactDOM","findDOMNode","querySelector","getInputInnerPadding","paddingTop","paddingRight","paddingBottom","paddingLeft","fontSize","fontSizePt","_getKeypadBounds","keypadElement","getDOMNode","_updateCursorHandle","cursorBounds","cursorWidth","gapBelowCursor","inputInnerPadding","furthestRightCursorBound","right","furthestLeftCursorBound","cursorBoundsLeft","setState","_hideCursorHandle","_handleScroll","onBlur","setKeyHandler","hideCursor","value","onChange","onFocus","setTimeout","maybeKeypadNode","_findHitNode","points","elements","point","contains","classList","nonLeafElements","max","counts","elementsById","getAttribute","push","count","entries","_insertCursorAtClosestNode","hasChildNodes","insAtLeftEnd","firstChildBounds","firstChild","lastChildBounds","lastChild","abs","setCursor","handleTouchStart","stopPropagation","handleTouchMove","handleTouchEnd","onCursorHandleTouchStart","preventDefault","_constrainToBound","friction","onCursorHandleTouchMove","relativeX","relativeY","distanceAboveFingerToTrySelecting","adjustedY","onCursorHandleTouchEnd","onCursorHandleTouchCancel","domKeyToMathQuillKey","keyMap","handleKeyUp","event","mathQuillKey","getBorderWidthPx","normalBorderWidthPx","focusedBorderWidthPx","paddingInset","totalDesiredPadding","symbolaPaddingBottom","symbolaPaddingTop","componentDidMount","unbind","target","touchDidStartInOrBelowKeypad","bounds","UNSAFE_componentWillReceiveProps","componentDidUpdate","prevProps","prevState","componentWillUnmount","innerStyle","inlineStyles","innerContainer","borderColor","i18n","_","input","tabIndex","ref","onKeyUp","inputMaxWidth","numeralHeightPx","minHeightPx","minWidthPx","verticalAlign","offBlack50","borderRadius","keypadElementPropType","PropTypes","shape","activate","func","isRequired","dismiss","configure","getDefaultOperatorFields","keyType","iconType","SVG","data","icon","getDefaultValueFields","MATH","getDefaultNumberFields","TEXT","KeyConfigs","CornerDecal","containerStyle","triangleSizePx","opacity","row","column","oneColumn","flexGrow","fullWidth","stretch","centered","justifyContent","centeredText","roundedTopLeft","borderTopLeftRadius","roundedTopRight","borderTopRightRadius","Styles","MathIcon","_renderMath","math","katex","size","base","Cos","fillRule","propTypes","string","Log","Equal","strokeLinecap","strokeLinejoin","Backspace","Sqrt","Exp","Neq","Geq","Ln","Dismiss","Sin","Lt","CubeRoot","Plus","Tan","Arrow","Left","Up","Down","LeftParen","RightParen","Gt","Divide","cx","cy","Period","Percent","Times","Exp3","Exp2","Right","Cdot","LogN","Leq","Minus","Radical","FracInclusive","rx","JumpOutParentheses","JumpOutExponent","JumpOutBase","JumpIntoNumerator","JumpOutNumerator","JumpOutDenominator","SvgIcon","SvgForName","Iconography","TextIcon","character","fontFamily","focusedColor","unfocusedColor","Icon","PureComponent","styleWithFocus","unfocused","MultiSymbolGrid","icons","forEach","primaryIconStyle","secondaryIconStyle","secondary","middleLeft","middleRight","topLeft","topRight","bottomLeft","bottomRight","verticalInsetPx","horizontalInsetPx","marginBottom","marginLeft","marginTop","marginRight","KeypadButton","buttonSizeStyle","_preInjectStyles","_getFocusStyle","borders","Object","_getButtonStyle","focusBackgroundStyle","light","bright","focusBox","backgroundStyle","empty","operator","control","leftBorder","bottomBorder","buttonBase","echo","UNSAFE_componentWillMount","styleForButtonDimensions","heightPx","widthPx","UNSAFE_componentWillUpdate","newProps","newState","childKeys","disabled","popoverEnabled","renderFocused","buttonStyle","focusStyle","iconWrapperStyle","iconWrapper","undefined","eventHandlers","maybeFocusBox","maybeCornerDecal","decalInset","manyButtonA11yMarkup","keyConfig","a11yMarkup","focusInsetPx","focusBoxZIndex","flex","userSelect","borderLeftWidth","borderBottomWidth","buttonSize","mapStateToProps","layout","buttonDimensions","connect","forwardRef","EmptyKeypadButton","_this$props","gestureManager","rest","_objectWithoutPropertiesLoose","_excluded","gestures","TouchableKeypadButton","shouldComponentUpdate","unregisterDOMNode","childKeyIds","styleWithAddons","preventScrolls","registerDOMNode","extractProps","ownProps","_gestures$popover","_excluded2","useFirstChildProps","popover","parentId","ManyKeypadButton","keys","join","IconAsset","tintColor","xmlns","clipRule","border","hovered","background","white","pressed","outline","innerBox","innerBoxPressed","activeIndicator","imageTintColor","itemState","offBlack64","TabbarItem","itemType","Clickable","tabbar","Tabbar","items","selectedItem","onSelectItem","item","keypad","Echo","animationDurationMs","onAnimationFinish","initialBounds","zIndexes","pointerEvents","EchoManager","_animationConfigForType","animationType","animationTransitionName","SLIDE_AND_FADE","FADE_ONLY","LONG_FADE_ONLY","echoes","echoesForType","TransitionGroup","animationId","CSSTransition","classNames","enter","exit","timeout","MultiSymbolPopover","boxShadow","popoverButton","PopoverContainer","PopoverManager","dismissKeypad","activateKeypad","configureKeypad","configuration","setPageSize","pageWidthPx","removeEcho","keyHandler","setActiveNodes","activeNodes","inPopover","Keypad","_resizeTimeout","_computeContainer","domNode","_updateSizeAndPosition","_onResize","relativeEchoes","relativePopover","active","mapDispatchToProps","dispatch","TwoPageKeypad","selectedPage","leftPage","paginationEnabled","rightPage","borderTop","borderLeft","offWhite","borderBottom","expressionKeypadLayout","rows","columns","numPages","maxVisibleRows","ExpressionKeypad","cursorContext","dynamicJumpOut","extraKeys","roundTopLeft","roundTopRight","dismissOrJumpOutKey","rightPageStyle","leftPageStyle","_state$input$cursor","navigationPadEnabled","fractionKeypadLayout","FractionKeypad","NavigationPad","navigationKey","topArrow","leftArrow","horizontalSpacer","rightArrow","bottomArrow","buttonSizePx","borderRadiusPx","borderWidthPx","borderTopWidth","borderRightWidth","borderBottomRightRadius","borderBottomLeftRadius","KeypadContainer","hasMounted","hasBeenActivated","viewportWidth","_throttleResizeHandler","_this$props$onPageSiz","innerWidth","onPageSizeChange","call","renderKeypad","keypadType","layoutMode","keypadProps","COMPACT","FRACTION","EXPRESSION","nextProps","onDismiss","onElementMounted","hidden","invisible","keypadContainerStyle","keypadContainer","keypadStyle","keypadBorder","FULLSCREEN","fullscreen","compact","navigationPadContainer","keypadLayout","keypadAnimationDurationMs","transition","borderRight","visibility","defaultOptions","longPressWaitTimeMs","swipeThresholdPx","holdIntervalMs","GestureStateMachine","handlers","options","swipeDisabledNodeIds","multiPressableKeys","touchState","swipeState","_maybeCancelLongPressForTouch","touchId","longPressTimeoutId","clearTimeout","_maybeCancelPressAndHoldForTouch","pressAndHoldIntervalId","clearInterval","_cleanupTouchEvent","_onFocus","activeNodeId","onTrigger","setInterval","onLongPress","_onSwipeStart","activeTouchId","getId","startingNodeId","swipeLocked","startX","swipeEnabled","_this$handlers$onSwip","_this$handlers","onSwipeChange","shouldBeginSwiping","_this$handlers$onSwip2","_this$handlers2","_this$handlers$onSwip3","_this$handlers3","onSwipeEnd","didPressAndHold","_this$handlers$onSwip4","_this$handlers4","NodeManager","_nodesById","_orderedIds","_cachedBoundingBoxesById","childIds","allIds","orderedIds","seenIds","idForCoords","layoutPropsForId","DOMRect","PopoverStateMachine","popovers","activePopover","registerPopover","unregisterPopover","isPopoverVisible","onActiveNodesChanged","_isNodeInsidePopover","_defaultNodeForPopover","keyId","domNodeId","coordsForEvent","GestureManager","disabledSwipeKeys","trackEvents","nodeManager","popoverStateMachine","gestureStateMachine","enableEventTracking","disableEventTracking","_lastAnimationId","initialEchoState","echoReducer","action","remainingEchoes","initialInputState","inputReducer","defaultKeypadType","keypadForType","initialKeypadState","keypadReducer","minButtonHeight","maxButtonSize","minSpaceAboveKeypad","safariNavBarWhenShrunk","safariNavBarWhenExpanded","safariToolbar","maxLandscapeBrowserChrome","maxPortraitBrowserChrome","worstCaseAspectRatio","computeLayoutParameters","numColumns","numMaxVisibleRows","deviceOrientation","deviceType","toolbarEnabled","effectiveNumColumns","PHONE","isLandscape","LANDSCAPE","browserChromeHeight","reservedSpace","effectiveWidth","effectiveHeight","maxKeypadHeight","buttonHeightPx","buttonWidthPx","TABLET","numSeparators","keypadWidth","initialLayoutState","gridDimensions","numRows","pageDimensions","layoutParametersForDimensions","PORTRAIT","deviceInfo","layoutOptions","layoutReducer","createStore","createGestureManager","store","layoutProps","initialGestureState","gestureReducer","reducer","Redux","combineReducers","ProvidedKeypad","cb","Provider","elementWithDispatchMethods","ButtonAsset","dominantBaseline","textAnchor","textLength","lengthAdjust","unhandledKey","coord","onClickKey","gridColumn","gridRow","clickable","outerBoxBase","outerBoxHover","outerBoxPressed","ExtrasPage","Fragment","coordX","coordY","Keys","GeometryPage","NumbersPage","OperatorsPage","preAlgebra","logarithms","basicRelations","advancedRelations","SharedKeys","divisionKey","multiplicationDot","allPages","_props$extraKeys","pages","trigonometry","setSelectedPage","useState","availablePages","tabbarItem","grid","gridTemplateColumns","gridTemplateRows","maxHeight"],"mappings":"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"}