@khanacademy/math-input 8.1.1 → 8.1.3

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 (45) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/components/input/mathquill-types.d.ts +1 -1
  3. package/dist/components/input/mathquill-types.js.flow +4 -1
  4. package/dist/components/keypad/mobile-keypad.d.ts +2 -2
  5. package/dist/components/keypad/mobile-keypad.js.flow +1 -1
  6. package/dist/components/keypad-legacy/compute-layout-parameters.d.ts +6 -17
  7. package/dist/components/keypad-legacy/compute-layout-parameters.js.flow +13 -22
  8. package/dist/components/keypad-legacy/keypad-container.d.ts +2 -1
  9. package/dist/components/keypad-legacy/keypad-container.js.flow +7 -1
  10. package/dist/components/keypad-legacy/store/actions.d.ts +5 -3
  11. package/dist/components/keypad-legacy/store/actions.js.flow +8 -4
  12. package/dist/components/keypad-legacy/store/types.d.ts +14 -14
  13. package/dist/components/keypad-legacy/store/types.js.flow +14 -14
  14. package/dist/components/prop-types.d.ts +12 -0
  15. package/dist/components/prop-types.js.flow +17 -0
  16. package/dist/es/index.css +1 -1
  17. package/dist/es/index.js +133 -132
  18. package/dist/es/index.js.map +1 -1
  19. package/dist/fake-react-native-web/view.d.ts +1 -0
  20. package/dist/fake-react-native-web/view.js.flow +1 -0
  21. package/dist/index.css +1 -1
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.js +131 -134
  24. package/dist/index.js.flow +1 -0
  25. package/dist/index.js.map +1 -1
  26. package/index.html +17 -16
  27. package/less/echo.less +1 -1
  28. package/less/overrides.less +1 -1
  29. package/package.json +1 -1
  30. package/src/components/input/math-input.tsx +1 -0
  31. package/src/components/input/mathquill-types.ts +4 -1
  32. package/src/components/keypad/keypad-button.tsx +5 -3
  33. package/src/components/keypad/mobile-keypad.tsx +12 -2
  34. package/src/components/keypad-legacy/compute-layout-parameters.ts +127 -78
  35. package/src/components/keypad-legacy/keypad-button.tsx +2 -2
  36. package/src/components/keypad-legacy/keypad-container.tsx +30 -4
  37. package/src/components/keypad-legacy/store/actions.ts +12 -6
  38. package/src/components/keypad-legacy/store/layout-reducer.test.ts +171 -0
  39. package/src/components/keypad-legacy/store/layout-reducer.ts +46 -51
  40. package/src/components/keypad-legacy/store/types.ts +16 -14
  41. package/src/components/{prop-types.js → prop-types.ts} +1 -0
  42. package/src/fake-react-native-web/view.tsx +2 -0
  43. package/src/full-math-input.stories.tsx +2 -2
  44. package/src/index.ts +1 -0
  45. package/tsconfig-build.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @khanacademy/math-input
2
2
 
3
+ ## 8.1.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 302ca7f7: Fix type for parameters of `moveOutOf` event.
8
+
9
+ ## 8.1.2
10
+
11
+ ### Patch Changes
12
+
13
+ - ea9dac75: Bugfix: allow legacy keypad to be positioned absolutely in column
14
+ - 30a99b82: Allow v2 keypad to receive style prop like v1 keypad
15
+ - 3fa556a3: Fixes bug where mouse hover causes grid to expand
16
+
3
17
  ## 8.1.1
4
18
 
5
19
  ### Patch Changes
@@ -148,7 +148,7 @@ export type MathFieldConfig = {
148
148
  handlers?: {
149
149
  edit?: (mathField: MathFieldInterface) => void;
150
150
  enter?: (mathField: MathFieldInterface) => void;
151
- moveOutOf?: (mathField: MathFieldInterface) => void;
151
+ moveOutOf?: (direction: MathQuillDirection, mathField: MathFieldInterface) => void;
152
152
  upOutOf?: (mathField: MathFieldInterface) => void;
153
153
  downOutOf?: (mathField: MathFieldInterface) => void;
154
154
  deleteOutOf?: (direction: MathQuillDirection, mathField: MathFieldInterface) => void;
@@ -171,7 +171,10 @@ export type MathFieldConfig = {|
171
171
  handlers?: {|
172
172
  edit?: (mathField: MathFieldInterface) => void,
173
173
  enter?: (mathField: MathFieldInterface) => void,
174
- moveOutOf?: (mathField: MathFieldInterface) => void,
174
+ moveOutOf?: (
175
+ direction: MathQuillDirection,
176
+ mathField: MathFieldInterface
177
+ ) => void,
175
178
  upOutOf?: (mathField: MathFieldInterface) => void,
176
179
  downOutOf?: (mathField: MathFieldInterface) => void,
177
180
  deleteOutOf?: (
@@ -1,8 +1,8 @@
1
1
  import { StyleType } from "@khanacademy/wonder-blocks-core";
2
2
  import * as React from "react";
3
3
  import ReactDOM from "react-dom";
4
- import Key from "../../data/keys";
5
- import { Cursor, KeypadConfiguration, KeyHandler, KeypadAPI } from "../../types";
4
+ import type Key from "../../data/keys";
5
+ import type { Cursor, KeypadConfiguration, KeyHandler, KeypadAPI } from "../../types";
6
6
  /**
7
7
  * This is the v2 equivalent of v1's ProvidedKeypad. It follows the same
8
8
  * external API so that it can be hot-swapped with the v1 keypad and
@@ -8,7 +8,7 @@ import { StyleType } from "@khanacademy/wonder-blocks-core";
8
8
  import * as React from "react";
9
9
  import ReactDOM from "react-dom";
10
10
  import Key from "../../data/keys";
11
- import {
11
+ import type {
12
12
  Cursor,
13
13
  KeypadConfiguration,
14
14
  KeyHandler,
@@ -18,22 +18,11 @@
18
18
  * to be conservative in our measurements and make things smaller than they
19
19
  * might need to be.
20
20
  */
21
- import { LayoutMode } from "../../enums";
22
- export declare const computeLayoutParameters: ({ numColumns, numMaxVisibleRows, numPages }: {
23
- numColumns: any;
24
- numMaxVisibleRows: any;
25
- numPages: any;
26
- }, { pageWidthPx, pageHeightPx }: {
27
- pageWidthPx: any;
28
- pageHeightPx: any;
29
- }, { deviceOrientation, deviceType }: {
30
- deviceOrientation: any;
31
- deviceType: any;
32
- }, { navigationPadEnabled, paginationEnabled, toolbarEnabled }: {
33
- navigationPadEnabled: any;
34
- paginationEnabled: any;
35
- toolbarEnabled: any;
36
- }) => {
37
- buttonDimensions: any;
21
+ import { DeviceOrientation, LayoutMode } from "../../enums";
22
+ import { GridDimensions, WidthHeight } from "./store/types";
23
+ type ComputedLayoutProperty = {
24
+ buttonDimensions: WidthHeight;
38
25
  layoutMode: LayoutMode;
39
26
  };
27
+ export declare const computeLayoutParameters: (gridDimensions: GridDimensions, pageDimensions: WidthHeight, containerDimensions: WidthHeight, deviceOrientation: DeviceOrientation, navigationPadEnabled: boolean, paginationEnabled: boolean, toolbarEnabled: boolean) => ComputedLayoutProperty;
28
+ export {};
@@ -4,27 +4,18 @@
4
4
  * Flowgen v1.21.0
5
5
  * @flow
6
6
  */
7
- import { LayoutMode } from "../../enums";
8
- declare export var computeLayoutParameters: (
9
- x: {|
10
- numColumns: any,
11
- numMaxVisibleRows: any,
12
- numPages: any,
13
- |},
14
- x: {|
15
- pageWidthPx: any,
16
- pageHeightPx: any,
17
- |},
18
- x: {|
19
- deviceOrientation: any,
20
- deviceType: any,
21
- |},
22
- x: {|
23
- navigationPadEnabled: any,
24
- paginationEnabled: any,
25
- toolbarEnabled: any,
26
- |}
27
- ) => {|
28
- buttonDimensions: any,
7
+ import { DeviceOrientation, LayoutMode } from "../../enums";
8
+ import { GridDimensions, WidthHeight } from "./store/types";
9
+ declare type ComputedLayoutProperty = {|
10
+ buttonDimensions: WidthHeight,
29
11
  layoutMode: LayoutMode,
30
12
  |};
13
+ declare export var computeLayoutParameters: (
14
+ gridDimensions: GridDimensions,
15
+ pageDimensions: WidthHeight,
16
+ containerDimensions: WidthHeight,
17
+ deviceOrientation: DeviceOrientation,
18
+ navigationPadEnabled: boolean,
19
+ paginationEnabled: boolean,
20
+ toolbarEnabled: boolean
21
+ ) => ComputedLayoutProperty;
@@ -11,7 +11,7 @@ interface ReduxProps {
11
11
  interface Props extends ReduxProps {
12
12
  onDismiss?: () => void;
13
13
  onElementMounted: (element: any) => void;
14
- onPageSizeChange?: (width: number, height: number) => void;
14
+ onPageSizeChange?: (pageWidth: number, pageHeight: number, containerWidth: number, containerHeight: number) => void;
15
15
  style?: StyleType;
16
16
  }
17
17
  type State = {
@@ -19,6 +19,7 @@ type State = {
19
19
  viewportWidth: string | number;
20
20
  };
21
21
  declare class KeypadContainer extends React.Component<Props, State> {
22
+ _containerRef: React.RefObject<HTMLDivElement>;
22
23
  _resizeTimeout: number | null | undefined;
23
24
  hasMounted: boolean | undefined;
24
25
  state: {
@@ -18,7 +18,12 @@ declare interface ReduxProps {
18
18
  declare type Props = {
19
19
  onDismiss?: () => void,
20
20
  onElementMounted: (element: any) => void,
21
- onPageSizeChange?: (width: number, height: number) => void,
21
+ onPageSizeChange?: (
22
+ pageWidth: number,
23
+ pageHeight: number,
24
+ containerWidth: number,
25
+ containerHeight: number
26
+ ) => void,
22
27
  style?: StyleType,
23
28
  } & ReduxProps;
24
29
  declare type State = {|
@@ -26,6 +31,7 @@ declare type State = {|
26
31
  viewportWidth: string | number,
27
32
  |};
28
33
  declare class KeypadContainer extends React.Component<Props, State> {
34
+ _containerRef: React.RefObject<HTMLDivElement>;
29
35
  _resizeTimeout: number | null | void;
30
36
  hasMounted: boolean | void;
31
37
  state: {|
@@ -18,10 +18,12 @@ type ConfigureKeypadAction = {
18
18
  export declare const configureKeypad: (configuration: KeypadConfiguration) => ConfigureKeypadAction;
19
19
  type SetPageSizeAction = {
20
20
  type: "SetPageSize";
21
- pageWidthPx: number;
22
- pageHeightPx: number;
21
+ pageWidth: number;
22
+ pageHeight: number;
23
+ containerWidth: number;
24
+ containerHeight: number;
23
25
  };
24
- export declare const setPageSize: (pageWidthPx: number, pageHeightPx: number) => SetPageSizeAction;
26
+ export declare const setPageSize: (pageWidth: number, pageHeight: number, containerWidth: number, containerHeight: number) => SetPageSizeAction;
25
27
  type RemoveEchoAction = {
26
28
  type: "RemoveEcho";
27
29
  animationId: string;
@@ -32,12 +32,16 @@ declare export var configureKeypad: (
32
32
  ) => ConfigureKeypadAction;
33
33
  declare type SetPageSizeAction = {|
34
34
  type: "SetPageSize",
35
- pageWidthPx: number,
36
- pageHeightPx: number,
35
+ pageWidth: number,
36
+ pageHeight: number,
37
+ containerWidth: number,
38
+ containerHeight: number,
37
39
  |};
38
40
  declare export var setPageSize: (
39
- pageWidthPx: number,
40
- pageHeightPx: number
41
+ pageWidth: number,
42
+ pageHeight: number,
43
+ containerWidth: number,
44
+ containerHeight: number
41
45
  ) => SetPageSizeAction;
42
46
  declare type RemoveEchoAction = {|
43
47
  type: "RemoveEcho",
@@ -19,21 +19,21 @@ export interface GestureState {
19
19
  export interface EchoState {
20
20
  echoes: ReadonlyArray<Echo>;
21
21
  }
22
+ export type GridDimensions = {
23
+ numRows: number;
24
+ numColumns: number;
25
+ numMaxVisibleRows: number;
26
+ numPages: number;
27
+ };
28
+ export type WidthHeight = {
29
+ width: number;
30
+ height: number;
31
+ };
22
32
  export interface LayoutState {
23
- gridDimensions: {
24
- numRows: number;
25
- numColumns: number;
26
- numMaxVisibleRows: number;
27
- numPages: number;
28
- };
29
- buttonDimensions: {
30
- widthPx: number;
31
- heightPx: number;
32
- };
33
- pageDimensions: {
34
- pageWidthPx: number;
35
- pageHeightPx: number;
36
- };
33
+ gridDimensions: GridDimensions;
34
+ buttonDimensions: WidthHeight;
35
+ containerDimensions: WidthHeight;
36
+ pageDimensions: WidthHeight;
37
37
  layoutMode: LayoutMode;
38
38
  paginationEnabled: boolean;
39
39
  navigationPadEnabled: boolean;
@@ -25,21 +25,21 @@ export interface GestureState {
25
25
  export interface EchoState {
26
26
  echoes: $ReadOnlyArray<Echo>;
27
27
  }
28
+ export type GridDimensions = {|
29
+ numRows: number,
30
+ numColumns: number,
31
+ numMaxVisibleRows: number,
32
+ numPages: number,
33
+ |};
34
+ export type WidthHeight = {|
35
+ width: number,
36
+ height: number,
37
+ |};
28
38
  export interface LayoutState {
29
- gridDimensions: {|
30
- numRows: number,
31
- numColumns: number,
32
- numMaxVisibleRows: number,
33
- numPages: number,
34
- |};
35
- buttonDimensions: {|
36
- widthPx: number,
37
- heightPx: number,
38
- |};
39
- pageDimensions: {|
40
- pageWidthPx: number,
41
- pageHeightPx: number,
42
- |};
39
+ gridDimensions: GridDimensions;
40
+ buttonDimensions: WidthHeight;
41
+ containerDimensions: WidthHeight;
42
+ pageDimensions: WidthHeight;
43
43
  layoutMode: LayoutMode;
44
44
  paginationEnabled: boolean;
45
45
  navigationPadEnabled: boolean;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * React PropTypes that may be shared between components.
3
+ */
4
+ import PropTypes from "prop-types";
5
+ export declare const keypadElementPropType: PropTypes.Requireable<PropTypes.InferProps<{
6
+ activate: PropTypes.Validator<(...args: any[]) => any>;
7
+ dismiss: PropTypes.Validator<(...args: any[]) => any>;
8
+ configure: PropTypes.Validator<(...args: any[]) => any>;
9
+ setCursor: PropTypes.Validator<(...args: any[]) => any>;
10
+ setKeyHandler: PropTypes.Validator<(...args: any[]) => any>;
11
+ getDOMNode: PropTypes.Validator<(...args: any[]) => any>;
12
+ }>>;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Flowtype definitions for data
3
+ * Generated by Flowgen from a Typescript Definition
4
+ * Flowgen v1.21.0
5
+ * @flow
6
+ */
7
+ import PropTypes from "prop-types";
8
+ declare export var keypadElementPropType: PropTypes.Requireable<
9
+ PropTypes.InferProps<{|
10
+ activate: PropTypes.Validator<(...args: any[]) => any>,
11
+ dismiss: PropTypes.Validator<(...args: any[]) => any>,
12
+ configure: PropTypes.Validator<(...args: any[]) => any>,
13
+ setCursor: PropTypes.Validator<(...args: any[]) => any>,
14
+ setKeyHandler: PropTypes.Validator<(...args: any[]) => any>,
15
+ getDOMNode: PropTypes.Validator<(...args: any[]) => any>,
16
+ |}>
17
+ >;
package/dist/es/index.css CHANGED
@@ -102,7 +102,7 @@
102
102
  border-color: white;
103
103
  }
104
104
  .keypad-input .mq-hasCursor:empty:not(.mq-root-block):after {
105
- content: 'c';
105
+ content: "c";
106
106
  }
107
107
  .keypad-input .mq-math-mode .mq-selection .mq-non-leaf,
108
108
  .keypad-input .mq-editable-field .mq-selection .mq-non-leaf {