@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.
- package/CHANGELOG.md +14 -0
- package/dist/components/input/mathquill-types.d.ts +1 -1
- package/dist/components/input/mathquill-types.js.flow +4 -1
- package/dist/components/keypad/mobile-keypad.d.ts +2 -2
- package/dist/components/keypad/mobile-keypad.js.flow +1 -1
- package/dist/components/keypad-legacy/compute-layout-parameters.d.ts +6 -17
- package/dist/components/keypad-legacy/compute-layout-parameters.js.flow +13 -22
- package/dist/components/keypad-legacy/keypad-container.d.ts +2 -1
- package/dist/components/keypad-legacy/keypad-container.js.flow +7 -1
- package/dist/components/keypad-legacy/store/actions.d.ts +5 -3
- package/dist/components/keypad-legacy/store/actions.js.flow +8 -4
- package/dist/components/keypad-legacy/store/types.d.ts +14 -14
- package/dist/components/keypad-legacy/store/types.js.flow +14 -14
- package/dist/components/prop-types.d.ts +12 -0
- package/dist/components/prop-types.js.flow +17 -0
- package/dist/es/index.css +1 -1
- package/dist/es/index.js +133 -132
- package/dist/es/index.js.map +1 -1
- package/dist/fake-react-native-web/view.d.ts +1 -0
- package/dist/fake-react-native-web/view.js.flow +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +131 -134
- package/dist/index.js.flow +1 -0
- package/dist/index.js.map +1 -1
- package/index.html +17 -16
- package/less/echo.less +1 -1
- package/less/overrides.less +1 -1
- package/package.json +1 -1
- package/src/components/input/math-input.tsx +1 -0
- package/src/components/input/mathquill-types.ts +4 -1
- package/src/components/keypad/keypad-button.tsx +5 -3
- package/src/components/keypad/mobile-keypad.tsx +12 -2
- package/src/components/keypad-legacy/compute-layout-parameters.ts +127 -78
- package/src/components/keypad-legacy/keypad-button.tsx +2 -2
- package/src/components/keypad-legacy/keypad-container.tsx +30 -4
- package/src/components/keypad-legacy/store/actions.ts +12 -6
- package/src/components/keypad-legacy/store/layout-reducer.test.ts +171 -0
- package/src/components/keypad-legacy/store/layout-reducer.ts +46 -51
- package/src/components/keypad-legacy/store/types.ts +16 -14
- package/src/components/{prop-types.js → prop-types.ts} +1 -0
- package/src/fake-react-native-web/view.tsx +2 -0
- package/src/full-math-input.stories.tsx +2 -2
- package/src/index.ts +1 -0
- 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?: (
|
|
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
|
|
@@ -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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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?: (
|
|
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?: (
|
|
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
|
-
|
|
22
|
-
|
|
21
|
+
pageWidth: number;
|
|
22
|
+
pageHeight: number;
|
|
23
|
+
containerWidth: number;
|
|
24
|
+
containerHeight: number;
|
|
23
25
|
};
|
|
24
|
-
export declare const setPageSize: (
|
|
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
|
-
|
|
36
|
-
|
|
35
|
+
pageWidth: number,
|
|
36
|
+
pageHeight: number,
|
|
37
|
+
containerWidth: number,
|
|
38
|
+
containerHeight: number,
|
|
37
39
|
|};
|
|
38
40
|
declare export var setPageSize: (
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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:
|
|
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 {
|