@magmamath/students-features 1.7.7 → 1.7.8
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/dist/commonjs/features/keyboard/components/Keyboard.js +1 -1
- package/dist/commonjs/features/keyboard/components/Keyboard.js.map +1 -1
- package/dist/commonjs/features/keyboard/constants/groups/basic.constants.js +6 -6
- package/dist/commonjs/features/keyboard/constants/groups/basic.constants.js.map +1 -1
- package/dist/commonjs/features/keyboard/constants/groups/basicPlus.constants.js +13 -10
- package/dist/commonjs/features/keyboard/constants/groups/basicPlus.constants.js.map +1 -1
- package/dist/commonjs/features/keyboard/constants/groups/basicPlusPlus.constants.js +13 -10
- package/dist/commonjs/features/keyboard/constants/groups/basicPlusPlus.constants.js.map +1 -1
- package/dist/commonjs/features/keyboard/constants/groups/numpad.constants.js +44 -86
- package/dist/commonjs/features/keyboard/constants/groups/numpad.constants.js.map +1 -1
- package/dist/commonjs/features/keyboard/constants/keyboard.helpers.js +81 -60
- package/dist/commonjs/features/keyboard/constants/keyboard.helpers.js.map +1 -1
- package/dist/commonjs/features/keyboard/types/types.js +7 -1
- package/dist/commonjs/features/keyboard/types/types.js.map +1 -1
- package/dist/module/features/keyboard/components/Keyboard.js +1 -1
- package/dist/module/features/keyboard/components/Keyboard.js.map +1 -1
- package/dist/module/features/keyboard/constants/groups/basic.constants.js +6 -6
- package/dist/module/features/keyboard/constants/groups/basic.constants.js.map +1 -1
- package/dist/module/features/keyboard/constants/groups/basicPlus.constants.js +13 -10
- package/dist/module/features/keyboard/constants/groups/basicPlus.constants.js.map +1 -1
- package/dist/module/features/keyboard/constants/groups/basicPlusPlus.constants.js +13 -10
- package/dist/module/features/keyboard/constants/groups/basicPlusPlus.constants.js.map +1 -1
- package/dist/module/features/keyboard/constants/groups/numpad.constants.js +45 -87
- package/dist/module/features/keyboard/constants/groups/numpad.constants.js.map +1 -1
- package/dist/module/features/keyboard/constants/keyboard.helpers.js +62 -41
- package/dist/module/features/keyboard/constants/keyboard.helpers.js.map +1 -1
- package/dist/module/features/keyboard/types/types.js +6 -0
- package/dist/module/features/keyboard/types/types.js.map +1 -1
- package/dist/typescript/commonjs/features/keyboard/components/Keyboard.d.ts +2 -1
- package/dist/typescript/commonjs/features/keyboard/components/Keyboard.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/keyboard/constants/__tests__/keyboard.characterization.test.d.ts +2 -0
- package/dist/typescript/commonjs/features/keyboard/constants/__tests__/keyboard.characterization.test.d.ts.map +1 -0
- package/dist/typescript/commonjs/features/keyboard/constants/groups/basic.constants.d.ts +2 -2
- package/dist/typescript/commonjs/features/keyboard/constants/groups/basic.constants.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/keyboard/constants/groups/basicPlus.constants.d.ts +2 -2
- package/dist/typescript/commonjs/features/keyboard/constants/groups/basicPlus.constants.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/keyboard/constants/groups/basicPlusPlus.constants.d.ts +2 -2
- package/dist/typescript/commonjs/features/keyboard/constants/groups/basicPlusPlus.constants.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/keyboard/constants/groups/numpad.constants.d.ts +2 -2
- package/dist/typescript/commonjs/features/keyboard/constants/groups/numpad.constants.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/keyboard/constants/keyboard.helpers.d.ts +2 -2
- package/dist/typescript/commonjs/features/keyboard/constants/keyboard.helpers.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/keyboard/types/types.d.ts +14 -0
- package/dist/typescript/commonjs/features/keyboard/types/types.d.ts.map +1 -1
- package/dist/typescript/module/features/keyboard/components/Keyboard.d.ts +2 -1
- package/dist/typescript/module/features/keyboard/components/Keyboard.d.ts.map +1 -1
- package/dist/typescript/module/features/keyboard/constants/__tests__/keyboard.characterization.test.d.ts +2 -0
- package/dist/typescript/module/features/keyboard/constants/__tests__/keyboard.characterization.test.d.ts.map +1 -0
- package/dist/typescript/module/features/keyboard/constants/groups/basic.constants.d.ts +2 -2
- package/dist/typescript/module/features/keyboard/constants/groups/basic.constants.d.ts.map +1 -1
- package/dist/typescript/module/features/keyboard/constants/groups/basicPlus.constants.d.ts +2 -2
- package/dist/typescript/module/features/keyboard/constants/groups/basicPlus.constants.d.ts.map +1 -1
- package/dist/typescript/module/features/keyboard/constants/groups/basicPlusPlus.constants.d.ts +2 -2
- package/dist/typescript/module/features/keyboard/constants/groups/basicPlusPlus.constants.d.ts.map +1 -1
- package/dist/typescript/module/features/keyboard/constants/groups/numpad.constants.d.ts +2 -2
- package/dist/typescript/module/features/keyboard/constants/groups/numpad.constants.d.ts.map +1 -1
- package/dist/typescript/module/features/keyboard/constants/keyboard.helpers.d.ts +2 -2
- package/dist/typescript/module/features/keyboard/constants/keyboard.helpers.d.ts.map +1 -1
- package/dist/typescript/module/features/keyboard/types/types.d.ts +14 -0
- package/dist/typescript/module/features/keyboard/types/types.d.ts.map +1 -1
- package/package.json +8 -3
- package/src/features/keyboard/components/Keyboard.tsx +6 -2
- package/src/features/keyboard/constants/__tests__/__snapshots__/keyboard.characterization.test.ts.snap +17012 -0
- package/src/features/keyboard/constants/__tests__/keyboard.characterization.test.ts +50 -0
- package/src/features/keyboard/constants/groups/basic.constants.ts +10 -22
- package/src/features/keyboard/constants/groups/basicPlus.constants.ts +8 -51
- package/src/features/keyboard/constants/groups/basicPlusPlus.constants.ts +8 -63
- package/src/features/keyboard/constants/groups/numpad.constants.ts +17 -35
- package/src/features/keyboard/constants/keyboard.helpers.ts +83 -42
- package/src/features/keyboard/types/types.ts +17 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import {
|
|
2
|
+
KeyboardConfig,
|
|
3
|
+
KeyboardCurrencyVariant,
|
|
4
|
+
KeyboardPreset,
|
|
5
|
+
KeyboardTimeVariant,
|
|
6
|
+
MultiplicationSymbol,
|
|
7
|
+
} from '@magmamath/frontend-config'
|
|
8
|
+
import { resolveKeyboard } from '../keyboard.helpers'
|
|
9
|
+
import { KeyboardKey, ResolvedKeyboard } from '../../types/types'
|
|
10
|
+
|
|
11
|
+
const keyId = (key: KeyboardKey) => ({
|
|
12
|
+
m: key.mathliveValue,
|
|
13
|
+
k: key.katexValue,
|
|
14
|
+
l: key.label ?? null,
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
const serialize = (kb: ResolvedKeyboard) => ({
|
|
18
|
+
operators: Object.fromEntries(
|
|
19
|
+
Object.entries(kb.operators).map(([type, group]) => [type, group.keys.map(keyId)]),
|
|
20
|
+
),
|
|
21
|
+
units: Object.fromEntries(
|
|
22
|
+
Object.entries(kb.units).map(([type, group]) => [type, group.keys.map((row) => row.map(keyId))]),
|
|
23
|
+
),
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
const config = (overrides: Partial<KeyboardConfig> = {}): KeyboardConfig => ({
|
|
27
|
+
preset: KeyboardPreset.DOT_MIXED,
|
|
28
|
+
currencyVariant: KeyboardCurrencyVariant.DOLLAR_CENT,
|
|
29
|
+
timeVariant: KeyboardTimeVariant.H24,
|
|
30
|
+
...overrides,
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
const PRESETS = Object.values(KeyboardPreset)
|
|
34
|
+
const MULTIPLICATION = [MultiplicationSymbol.TIMES, MultiplicationSymbol.CDOT, undefined] as const
|
|
35
|
+
|
|
36
|
+
describe('resolveKeyboard characterization', () => {
|
|
37
|
+
describe.each(PRESETS)('preset %s', (preset) => {
|
|
38
|
+
it.each(MULTIPLICATION)('multiplication %s', (symbol) => {
|
|
39
|
+
expect(serialize(resolveKeyboard(config({ preset }), symbol))).toMatchSnapshot()
|
|
40
|
+
})
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
it.each(Object.values(KeyboardCurrencyVariant))('currency variant %s', (currencyVariant) => {
|
|
44
|
+
expect(serialize(resolveKeyboard(config({ currencyVariant }), MultiplicationSymbol.TIMES))).toMatchSnapshot()
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
it.each(Object.values(KeyboardTimeVariant))('time variant %s', (timeVariant) => {
|
|
48
|
+
expect(serialize(resolveKeyboard(config({ timeVariant }), MultiplicationSymbol.TIMES))).toMatchSnapshot()
|
|
49
|
+
})
|
|
50
|
+
})
|
|
@@ -1,25 +1,13 @@
|
|
|
1
1
|
import { MATH_BASIC_OPERATORS } from '../keys'
|
|
2
|
-
import {
|
|
2
|
+
import { KeySlot, LayoutGroup } from '../../types/types'
|
|
3
3
|
|
|
4
|
-
export const KEYBOARD_BASIC:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
],
|
|
14
|
-
},
|
|
15
|
-
COMMA: {
|
|
16
|
-
keys: [
|
|
17
|
-
MATH_BASIC_OPERATORS.ADDITION,
|
|
18
|
-
MATH_BASIC_OPERATORS.SUBTRACTION,
|
|
19
|
-
MATH_BASIC_OPERATORS.EQUALS,
|
|
20
|
-
MATH_BASIC_OPERATORS.C_DOT,
|
|
21
|
-
MATH_BASIC_OPERATORS.DIVISION,
|
|
22
|
-
MATH_BASIC_OPERATORS.DOT,
|
|
23
|
-
],
|
|
24
|
-
},
|
|
4
|
+
export const KEYBOARD_BASIC: LayoutGroup = {
|
|
5
|
+
keys: [
|
|
6
|
+
MATH_BASIC_OPERATORS.ADDITION,
|
|
7
|
+
MATH_BASIC_OPERATORS.SUBTRACTION,
|
|
8
|
+
MATH_BASIC_OPERATORS.EQUALS,
|
|
9
|
+
{ slot: KeySlot.MULTIPLICATION },
|
|
10
|
+
MATH_BASIC_OPERATORS.DIVISION,
|
|
11
|
+
{ slot: KeySlot.LIST_SEPARATOR },
|
|
12
|
+
],
|
|
25
13
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { MATH_BASIC_OPERATORS, MATH_TEXT_SYMBOLS } from '../keys'
|
|
2
|
-
import {
|
|
2
|
+
import { KeySlot, LayoutGroups } from '../../types/types'
|
|
3
3
|
|
|
4
|
-
export const KEYBOARD_BASIC_PLUS:
|
|
5
|
-
|
|
4
|
+
export const KEYBOARD_BASIC_PLUS: LayoutGroups = {
|
|
5
|
+
DESKTOP: {
|
|
6
6
|
keys: [
|
|
7
7
|
MATH_BASIC_OPERATORS.ADDITION,
|
|
8
8
|
MATH_BASIC_OPERATORS.SUBTRACTION,
|
|
@@ -10,9 +10,9 @@ export const KEYBOARD_BASIC_PLUS: KeyboardGroups = {
|
|
|
10
10
|
MATH_BASIC_OPERATORS.ROUND_BRACKET_LEFT,
|
|
11
11
|
MATH_BASIC_OPERATORS.ROUND_BRACKET_RIGHT,
|
|
12
12
|
MATH_BASIC_OPERATORS.FRACTION,
|
|
13
|
-
|
|
13
|
+
{ slot: KeySlot.MULTIPLICATION },
|
|
14
14
|
MATH_BASIC_OPERATORS.DIVISION,
|
|
15
|
-
|
|
15
|
+
{ slot: KeySlot.LIST_SEPARATOR },
|
|
16
16
|
MATH_BASIC_OPERATORS.PERCENT,
|
|
17
17
|
MATH_BASIC_OPERATORS.SQUARE_POWER,
|
|
18
18
|
MATH_BASIC_OPERATORS.SQUARE_ROOT,
|
|
@@ -24,7 +24,7 @@ export const KEYBOARD_BASIC_PLUS: KeyboardGroups = {
|
|
|
24
24
|
MATH_BASIC_OPERATORS.NTH_ROOT,
|
|
25
25
|
],
|
|
26
26
|
},
|
|
27
|
-
|
|
27
|
+
MOBILE: {
|
|
28
28
|
keys: [
|
|
29
29
|
MATH_BASIC_OPERATORS.ADDITION,
|
|
30
30
|
MATH_BASIC_OPERATORS.SUBTRACTION,
|
|
@@ -32,52 +32,9 @@ export const KEYBOARD_BASIC_PLUS: KeyboardGroups = {
|
|
|
32
32
|
MATH_BASIC_OPERATORS.ROUND_BRACKET_LEFT,
|
|
33
33
|
MATH_BASIC_OPERATORS.ROUND_BRACKET_RIGHT,
|
|
34
34
|
MATH_BASIC_OPERATORS.FRACTION,
|
|
35
|
-
|
|
35
|
+
{ slot: KeySlot.MULTIPLICATION },
|
|
36
36
|
MATH_BASIC_OPERATORS.DIVISION,
|
|
37
|
-
|
|
38
|
-
MATH_BASIC_OPERATORS.PERCENT,
|
|
39
|
-
MATH_BASIC_OPERATORS.SQUARE_POWER,
|
|
40
|
-
MATH_BASIC_OPERATORS.SQUARE_ROOT,
|
|
41
|
-
MATH_TEXT_SYMBOLS.X,
|
|
42
|
-
MATH_TEXT_SYMBOLS.Y,
|
|
43
|
-
MATH_TEXT_SYMBOLS.Z,
|
|
44
|
-
MATH_BASIC_OPERATORS.PERMILLE,
|
|
45
|
-
MATH_BASIC_OPERATORS.NTH_POWER,
|
|
46
|
-
MATH_BASIC_OPERATORS.NTH_ROOT,
|
|
47
|
-
],
|
|
48
|
-
},
|
|
49
|
-
MOBILE_DOT: {
|
|
50
|
-
keys: [
|
|
51
|
-
MATH_BASIC_OPERATORS.ADDITION,
|
|
52
|
-
MATH_BASIC_OPERATORS.SUBTRACTION,
|
|
53
|
-
MATH_BASIC_OPERATORS.EQUALS,
|
|
54
|
-
MATH_BASIC_OPERATORS.ROUND_BRACKET_LEFT,
|
|
55
|
-
MATH_BASIC_OPERATORS.ROUND_BRACKET_RIGHT,
|
|
56
|
-
MATH_BASIC_OPERATORS.FRACTION,
|
|
57
|
-
MATH_BASIC_OPERATORS.MULTIPLICATION,
|
|
58
|
-
MATH_BASIC_OPERATORS.DIVISION,
|
|
59
|
-
MATH_BASIC_OPERATORS.COMMA,
|
|
60
|
-
MATH_BASIC_OPERATORS.PERCENT,
|
|
61
|
-
MATH_BASIC_OPERATORS.SQUARE_POWER,
|
|
62
|
-
MATH_BASIC_OPERATORS.SQUARE_ROOT,
|
|
63
|
-
MATH_TEXT_SYMBOLS.X,
|
|
64
|
-
MATH_TEXT_SYMBOLS.Y,
|
|
65
|
-
MATH_TEXT_SYMBOLS.Z,
|
|
66
|
-
MATH_BASIC_OPERATORS.PERMILLE,
|
|
67
|
-
MATH_BASIC_OPERATORS.NTH_POWER,
|
|
68
|
-
],
|
|
69
|
-
},
|
|
70
|
-
MOBILE_COMMA: {
|
|
71
|
-
keys: [
|
|
72
|
-
MATH_BASIC_OPERATORS.ADDITION,
|
|
73
|
-
MATH_BASIC_OPERATORS.SUBTRACTION,
|
|
74
|
-
MATH_BASIC_OPERATORS.EQUALS,
|
|
75
|
-
MATH_BASIC_OPERATORS.ROUND_BRACKET_LEFT,
|
|
76
|
-
MATH_BASIC_OPERATORS.ROUND_BRACKET_RIGHT,
|
|
77
|
-
MATH_BASIC_OPERATORS.FRACTION,
|
|
78
|
-
MATH_BASIC_OPERATORS.C_DOT,
|
|
79
|
-
MATH_BASIC_OPERATORS.DIVISION,
|
|
80
|
-
MATH_BASIC_OPERATORS.DOT,
|
|
37
|
+
{ slot: KeySlot.LIST_SEPARATOR },
|
|
81
38
|
MATH_BASIC_OPERATORS.PERCENT,
|
|
82
39
|
MATH_BASIC_OPERATORS.SQUARE_POWER,
|
|
83
40
|
MATH_BASIC_OPERATORS.SQUARE_ROOT,
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
MATH_SYMBOLS,
|
|
5
5
|
MATH_TEXT_SYMBOLS,
|
|
6
6
|
} from '../keys'
|
|
7
|
-
import {
|
|
7
|
+
import { KeySlot, LayoutGroups } from '../../types/types'
|
|
8
8
|
|
|
9
|
-
export const KEYBOARD_BASIC_PLUS_PLUS:
|
|
10
|
-
|
|
9
|
+
export const KEYBOARD_BASIC_PLUS_PLUS: LayoutGroups = {
|
|
10
|
+
DESKTOP: {
|
|
11
11
|
keys: [
|
|
12
12
|
MATH_BASIC_OPERATORS.ADDITION,
|
|
13
13
|
MATH_BASIC_OPERATORS.SUBTRACTION,
|
|
@@ -18,7 +18,7 @@ export const KEYBOARD_BASIC_PLUS_PLUS: KeyboardGroups = {
|
|
|
18
18
|
MATH_BASIC_OPERATORS.SQUARE_ROOT,
|
|
19
19
|
MATH_SYMBOLS.PI,
|
|
20
20
|
MATH_GEOMETRY_SYMBOLS.RADIAN,
|
|
21
|
-
|
|
21
|
+
{ slot: KeySlot.MULTIPLICATION },
|
|
22
22
|
MATH_BASIC_OPERATORS.FRACTION,
|
|
23
23
|
MATH_BASIC_OPERATORS.SLASH,
|
|
24
24
|
MATH_BASIC_OPERATORS.PLUS_MINUS,
|
|
@@ -27,7 +27,7 @@ export const KEYBOARD_BASIC_PLUS_PLUS: KeyboardGroups = {
|
|
|
27
27
|
MATH_BASIC_OPERATORS.NTH_ROOT,
|
|
28
28
|
MATH_SYMBOLS.THETA,
|
|
29
29
|
MATH_GEOMETRY_SYMBOLS.DEGREE,
|
|
30
|
-
|
|
30
|
+
{ slot: KeySlot.LIST_SEPARATOR },
|
|
31
31
|
MATH_TEXT_SYMBOLS.X,
|
|
32
32
|
MATH_TEXT_SYMBOLS.Y,
|
|
33
33
|
MATH_TEXT_SYMBOLS.Z,
|
|
@@ -38,62 +38,7 @@ export const KEYBOARD_BASIC_PLUS_PLUS: KeyboardGroups = {
|
|
|
38
38
|
MATH_BASIC_OPERATORS.GREATER_THAN,
|
|
39
39
|
],
|
|
40
40
|
},
|
|
41
|
-
|
|
42
|
-
keys: [
|
|
43
|
-
MATH_BASIC_OPERATORS.ADDITION,
|
|
44
|
-
MATH_BASIC_OPERATORS.SUBTRACTION,
|
|
45
|
-
MATH_BASIC_OPERATORS.EQUALS,
|
|
46
|
-
MATH_BASIC_OPERATORS.ROUND_BRACKET_LEFT,
|
|
47
|
-
MATH_BASIC_OPERATORS.ROUND_BRACKET_RIGHT,
|
|
48
|
-
MATH_BASIC_OPERATORS.SQUARE_POWER,
|
|
49
|
-
MATH_BASIC_OPERATORS.SQUARE_ROOT,
|
|
50
|
-
MATH_SYMBOLS.PI,
|
|
51
|
-
MATH_GEOMETRY_SYMBOLS.RADIAN,
|
|
52
|
-
MATH_BASIC_OPERATORS.C_DOT,
|
|
53
|
-
MATH_BASIC_OPERATORS.FRACTION,
|
|
54
|
-
MATH_BASIC_OPERATORS.SLASH,
|
|
55
|
-
MATH_BASIC_OPERATORS.PLUS_MINUS,
|
|
56
|
-
MATH_BASIC_OPERATORS.PERCENT,
|
|
57
|
-
MATH_BASIC_OPERATORS.NTH_POWER,
|
|
58
|
-
MATH_BASIC_OPERATORS.NTH_ROOT,
|
|
59
|
-
MATH_SYMBOLS.THETA,
|
|
60
|
-
MATH_GEOMETRY_SYMBOLS.DEGREE,
|
|
61
|
-
MATH_BASIC_OPERATORS.DOT,
|
|
62
|
-
MATH_TEXT_SYMBOLS.X,
|
|
63
|
-
MATH_TEXT_SYMBOLS.Y,
|
|
64
|
-
MATH_TEXT_SYMBOLS.Z,
|
|
65
|
-
MATH_BASIC_OPERATORS.PERMILLE,
|
|
66
|
-
MATH_BASIC_OPERATORS.LESS_THAN,
|
|
67
|
-
MATH_BASIC_OPERATORS.LESS_THAN_OR_EQUAL,
|
|
68
|
-
MATH_BASIC_OPERATORS.GREATER_THAN_OR_EQUAL,
|
|
69
|
-
MATH_BASIC_OPERATORS.GREATER_THAN,
|
|
70
|
-
],
|
|
71
|
-
},
|
|
72
|
-
MOBILE_DOT: {
|
|
73
|
-
keys: [
|
|
74
|
-
MATH_BASIC_OPERATORS.ADDITION,
|
|
75
|
-
MATH_BASIC_OPERATORS.SUBTRACTION,
|
|
76
|
-
MATH_BASIC_OPERATORS.EQUALS,
|
|
77
|
-
MATH_BASIC_OPERATORS.ROUND_BRACKET_LEFT,
|
|
78
|
-
MATH_BASIC_OPERATORS.ROUND_BRACKET_RIGHT,
|
|
79
|
-
MATH_SYMBOLS.PI,
|
|
80
|
-
MATH_GEOMETRY_SYMBOLS.RADIAN,
|
|
81
|
-
MATH_BASIC_OPERATORS.MULTIPLICATION,
|
|
82
|
-
MATH_BASIC_OPERATORS.FRACTION,
|
|
83
|
-
MATH_BASIC_OPERATORS.COMMA,
|
|
84
|
-
MATH_BASIC_OPERATORS.SQUARE_POWER,
|
|
85
|
-
MATH_BASIC_OPERATORS.SQUARE_ROOT,
|
|
86
|
-
MATH_SYMBOLS.THETA,
|
|
87
|
-
MATH_GEOMETRY_SYMBOLS.DEGREE,
|
|
88
|
-
MATH_TEXT_SYMBOLS.X,
|
|
89
|
-
MATH_TEXT_SYMBOLS.Y,
|
|
90
|
-
MATH_TEXT_SYMBOLS.Z,
|
|
91
|
-
MATH_BASIC_OPERATORS.NTH_POWER,
|
|
92
|
-
MATH_BASIC_OPERATORS.LESS_THAN,
|
|
93
|
-
MATH_BASIC_OPERATORS.GREATER_THAN,
|
|
94
|
-
],
|
|
95
|
-
},
|
|
96
|
-
MOBILE_COMMA: {
|
|
41
|
+
MOBILE: {
|
|
97
42
|
keys: [
|
|
98
43
|
MATH_BASIC_OPERATORS.ADDITION,
|
|
99
44
|
MATH_BASIC_OPERATORS.SUBTRACTION,
|
|
@@ -102,9 +47,9 @@ export const KEYBOARD_BASIC_PLUS_PLUS: KeyboardGroups = {
|
|
|
102
47
|
MATH_BASIC_OPERATORS.ROUND_BRACKET_RIGHT,
|
|
103
48
|
MATH_SYMBOLS.PI,
|
|
104
49
|
MATH_GEOMETRY_SYMBOLS.RADIAN,
|
|
105
|
-
|
|
50
|
+
{ slot: KeySlot.MULTIPLICATION },
|
|
106
51
|
MATH_BASIC_OPERATORS.FRACTION,
|
|
107
|
-
|
|
52
|
+
{ slot: KeySlot.LIST_SEPARATOR },
|
|
108
53
|
MATH_BASIC_OPERATORS.SQUARE_POWER,
|
|
109
54
|
MATH_BASIC_OPERATORS.SQUARE_ROOT,
|
|
110
55
|
MATH_SYMBOLS.THETA,
|
|
@@ -1,37 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { MATH_SPECIAL_OPERATORS } from '../keys'
|
|
2
|
+
import { KeySlot, LayoutGroup } from '../../types/types'
|
|
3
3
|
|
|
4
|
-
export const KEYBOARD_NUMPAD:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
],
|
|
20
|
-
},
|
|
21
|
-
COMMA: {
|
|
22
|
-
keys: [
|
|
23
|
-
{ label: '1', mathliveValue: '1', katexValue: '1' },
|
|
24
|
-
{ label: '2', mathliveValue: '2', katexValue: '2' },
|
|
25
|
-
{ label: '3', mathliveValue: '3', katexValue: '3' },
|
|
26
|
-
MATH_SPECIAL_OPERATORS.BACKSPACE,
|
|
27
|
-
{ label: '4', mathliveValue: '4', katexValue: '4' },
|
|
28
|
-
{ label: '5', mathliveValue: '5', katexValue: '5' },
|
|
29
|
-
{ label: '6', mathliveValue: '6', katexValue: '6' },
|
|
30
|
-
MATH_BASIC_OPERATORS.COMMA,
|
|
31
|
-
{ label: '7', mathliveValue: '7', katexValue: '7' },
|
|
32
|
-
{ label: '8', mathliveValue: '8', katexValue: '8' },
|
|
33
|
-
{ label: '9', mathliveValue: '9', katexValue: '9' },
|
|
34
|
-
{ label: '0', mathliveValue: '0', katexValue: '0' },
|
|
35
|
-
],
|
|
36
|
-
},
|
|
4
|
+
export const KEYBOARD_NUMPAD: LayoutGroup = {
|
|
5
|
+
keys: [
|
|
6
|
+
{ label: '1', mathliveValue: '1', katexValue: '1' },
|
|
7
|
+
{ label: '2', mathliveValue: '2', katexValue: '2' },
|
|
8
|
+
{ label: '3', mathliveValue: '3', katexValue: '3' },
|
|
9
|
+
MATH_SPECIAL_OPERATORS.BACKSPACE,
|
|
10
|
+
{ label: '4', mathliveValue: '4', katexValue: '4' },
|
|
11
|
+
{ label: '5', mathliveValue: '5', katexValue: '5' },
|
|
12
|
+
{ label: '6', mathliveValue: '6', katexValue: '6' },
|
|
13
|
+
{ slot: KeySlot.DECIMAL_SEPARATOR },
|
|
14
|
+
{ label: '7', mathliveValue: '7', katexValue: '7' },
|
|
15
|
+
{ label: '8', mathliveValue: '8', katexValue: '8' },
|
|
16
|
+
{ label: '9', mathliveValue: '9', katexValue: '9' },
|
|
17
|
+
{ label: '0', mathliveValue: '0', katexValue: '0' },
|
|
18
|
+
],
|
|
37
19
|
}
|
|
@@ -3,14 +3,22 @@ import {
|
|
|
3
3
|
KeyboardCurrencyVariant,
|
|
4
4
|
KeyboardPreset,
|
|
5
5
|
KeyboardTimeVariant,
|
|
6
|
+
MultiplicationSymbol,
|
|
7
|
+
NumberDecimalSeparator,
|
|
6
8
|
} from '@magmamath/frontend-config'
|
|
7
9
|
import {
|
|
8
10
|
KeyboardGroup,
|
|
11
|
+
KeyboardKey,
|
|
9
12
|
KeyboardRowsGroup,
|
|
10
13
|
KeyboardType,
|
|
11
14
|
KeyboardUnitsGroupType,
|
|
15
|
+
KeySlot,
|
|
16
|
+
KeySlotRef,
|
|
17
|
+
LayoutGroup,
|
|
18
|
+
LayoutKey,
|
|
12
19
|
ResolvedKeyboard,
|
|
13
20
|
} from '../types/types'
|
|
21
|
+
import { MATH_BASIC_OPERATORS } from './keys'
|
|
14
22
|
import {
|
|
15
23
|
KEYBOARD_ALGEBRA,
|
|
16
24
|
KEYBOARD_AREA,
|
|
@@ -28,27 +36,57 @@ import {
|
|
|
28
36
|
KEYBOARD_WEIGHT,
|
|
29
37
|
} from './groups'
|
|
30
38
|
|
|
31
|
-
type
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
type SlotBinding = Record<KeySlot, KeyboardKey>
|
|
40
|
+
|
|
41
|
+
const PRESET_SEPARATOR: Record<KeyboardPreset, NumberDecimalSeparator> = {
|
|
42
|
+
[KeyboardPreset.DOT_MIXED]: NumberDecimalSeparator.DOT,
|
|
43
|
+
[KeyboardPreset.DOT_MIXED_ALT]: NumberDecimalSeparator.DOT,
|
|
44
|
+
[KeyboardPreset.COMMA_METRIC]: NumberDecimalSeparator.COMMA,
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const MULTIPLICATION_KEYS: Record<MultiplicationSymbol, KeyboardKey> = {
|
|
48
|
+
[MultiplicationSymbol.TIMES]: MATH_BASIC_OPERATORS.MULTIPLICATION,
|
|
49
|
+
[MultiplicationSymbol.CDOT]: MATH_BASIC_OPERATORS.C_DOT,
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const DEFAULT_MULTIPLICATION_SYMBOL: Record<NumberDecimalSeparator, MultiplicationSymbol> = {
|
|
53
|
+
[NumberDecimalSeparator.DOT]: MultiplicationSymbol.TIMES,
|
|
54
|
+
[NumberDecimalSeparator.COMMA]: MultiplicationSymbol.CDOT,
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const DECIMAL_SEPARATOR_KEYS: Record<NumberDecimalSeparator, KeyboardKey> = {
|
|
58
|
+
[NumberDecimalSeparator.DOT]: MATH_BASIC_OPERATORS.DOT,
|
|
59
|
+
[NumberDecimalSeparator.COMMA]: MATH_BASIC_OPERATORS.COMMA,
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const LIST_SEPARATOR_KEYS: Record<NumberDecimalSeparator, KeyboardKey> = {
|
|
63
|
+
[NumberDecimalSeparator.DOT]: MATH_BASIC_OPERATORS.COMMA,
|
|
64
|
+
[NumberDecimalSeparator.COMMA]: MATH_BASIC_OPERATORS.DOT,
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const buildBinding = (
|
|
68
|
+
separator: NumberDecimalSeparator,
|
|
69
|
+
multiplicationSymbol?: MultiplicationSymbol,
|
|
70
|
+
): SlotBinding => ({
|
|
71
|
+
[KeySlot.MULTIPLICATION]: MULTIPLICATION_KEYS[multiplicationSymbol ?? DEFAULT_MULTIPLICATION_SYMBOL[separator]],
|
|
72
|
+
[KeySlot.DECIMAL_SEPARATOR]: DECIMAL_SEPARATOR_KEYS[separator],
|
|
73
|
+
[KeySlot.LIST_SEPARATOR]: LIST_SEPARATOR_KEYS[separator],
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
const isSlot = (key: LayoutKey): key is KeySlotRef => 'slot' in key
|
|
77
|
+
|
|
78
|
+
const resolveGroup = (group: LayoutGroup, binding: SlotBinding): KeyboardGroup => ({
|
|
79
|
+
...group,
|
|
80
|
+
keys: group.keys.map((key) => (isSlot(key) ? binding[key.slot] : key)),
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
type PresetUnits = {
|
|
84
|
+
basicUnits: KeyboardGroup
|
|
36
85
|
units: Record<KeyboardUnitsGroupType, KeyboardRowsGroup>
|
|
37
86
|
}
|
|
38
87
|
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
[KeyboardType.Basic]: KEYBOARD_BASIC.DOT,
|
|
42
|
-
[KeyboardType.BasicPlus]: KEYBOARD_BASIC_PLUS.DOT,
|
|
43
|
-
[KeyboardType.BasicPlusMobile]: KEYBOARD_BASIC_PLUS.MOBILE_DOT,
|
|
44
|
-
[KeyboardType.BasicPlusPlus]: KEYBOARD_BASIC_PLUS_PLUS.DOT,
|
|
45
|
-
[KeyboardType.BasicPlusPlusMobile]: KEYBOARD_BASIC_PLUS_PLUS.MOBILE_DOT,
|
|
46
|
-
[KeyboardType.BasicUnits]: { keys: KEYBOARD_LENGTH.MIXED.keys[0] },
|
|
47
|
-
[KeyboardType.AlgebraAdvanced]: KEYBOARD_ALGEBRA,
|
|
48
|
-
[KeyboardType.Geometry]: KEYBOARD_GEOMETRY,
|
|
49
|
-
[KeyboardType.Numpad]: KEYBOARD_NUMPAD.DOT,
|
|
50
|
-
[KeyboardType.Underlined]: KEYBOARD_UNDERLINED,
|
|
51
|
-
},
|
|
88
|
+
const DOT_MIXED_UNITS: PresetUnits = {
|
|
89
|
+
basicUnits: { keys: KEYBOARD_LENGTH.MIXED.keys[0] },
|
|
52
90
|
units: {
|
|
53
91
|
[KeyboardUnitsGroupType.LENGTH]: KEYBOARD_LENGTH.MIXED,
|
|
54
92
|
[KeyboardUnitsGroupType.AREA]: KEYBOARD_AREA.MIXED,
|
|
@@ -58,19 +96,8 @@ const PRESET_DOT_MIXED: KeyboardPresetConfig = {
|
|
|
58
96
|
},
|
|
59
97
|
}
|
|
60
98
|
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
[KeyboardType.Basic]: KEYBOARD_BASIC.COMMA,
|
|
64
|
-
[KeyboardType.BasicPlus]: KEYBOARD_BASIC_PLUS.COMMA,
|
|
65
|
-
[KeyboardType.BasicPlusMobile]: KEYBOARD_BASIC_PLUS.MOBILE_COMMA,
|
|
66
|
-
[KeyboardType.BasicPlusPlus]: KEYBOARD_BASIC_PLUS_PLUS.COMMA,
|
|
67
|
-
[KeyboardType.BasicPlusPlusMobile]: KEYBOARD_BASIC_PLUS_PLUS.MOBILE_COMMA,
|
|
68
|
-
[KeyboardType.BasicUnits]: { keys: KEYBOARD_LENGTH.METRIC.keys[0] },
|
|
69
|
-
[KeyboardType.AlgebraAdvanced]: KEYBOARD_ALGEBRA,
|
|
70
|
-
[KeyboardType.Geometry]: KEYBOARD_GEOMETRY,
|
|
71
|
-
[KeyboardType.Numpad]: KEYBOARD_NUMPAD.COMMA,
|
|
72
|
-
[KeyboardType.Underlined]: KEYBOARD_UNDERLINED,
|
|
73
|
-
},
|
|
99
|
+
const COMMA_METRIC_UNITS: PresetUnits = {
|
|
100
|
+
basicUnits: { keys: KEYBOARD_LENGTH.METRIC.keys[0] },
|
|
74
101
|
units: {
|
|
75
102
|
[KeyboardUnitsGroupType.LENGTH]: KEYBOARD_LENGTH.METRIC,
|
|
76
103
|
[KeyboardUnitsGroupType.AREA]: KEYBOARD_AREA.METRIC,
|
|
@@ -80,18 +107,18 @@ const PRESET_COMMA_METRIC: KeyboardPresetConfig = {
|
|
|
80
107
|
},
|
|
81
108
|
}
|
|
82
109
|
|
|
83
|
-
const
|
|
84
|
-
|
|
110
|
+
const DOT_MIXED_ALT_UNITS: PresetUnits = {
|
|
111
|
+
basicUnits: DOT_MIXED_UNITS.basicUnits,
|
|
85
112
|
units: {
|
|
86
|
-
...
|
|
113
|
+
...DOT_MIXED_UNITS.units,
|
|
87
114
|
[KeyboardUnitsGroupType.VOLUME]: KEYBOARD_VOLUME.MIXED_ALT,
|
|
88
115
|
},
|
|
89
116
|
}
|
|
90
117
|
|
|
91
|
-
const
|
|
92
|
-
[KeyboardPreset.DOT_MIXED]:
|
|
93
|
-
[KeyboardPreset.DOT_MIXED_ALT]:
|
|
94
|
-
[KeyboardPreset.COMMA_METRIC]:
|
|
118
|
+
const PRESET_UNITS_MAP: Record<KeyboardPreset, PresetUnits> = {
|
|
119
|
+
[KeyboardPreset.DOT_MIXED]: DOT_MIXED_UNITS,
|
|
120
|
+
[KeyboardPreset.DOT_MIXED_ALT]: DOT_MIXED_ALT_UNITS,
|
|
121
|
+
[KeyboardPreset.COMMA_METRIC]: COMMA_METRIC_UNITS,
|
|
95
122
|
}
|
|
96
123
|
|
|
97
124
|
const CURRENCY_MAP: Record<KeyboardCurrencyVariant, KeyboardGroup> = {
|
|
@@ -109,15 +136,29 @@ const TIME_MAP: Record<KeyboardTimeVariant, KeyboardGroup> = {
|
|
|
109
136
|
[KeyboardTimeVariant.H24]: KEYBOARD_TIME.H24,
|
|
110
137
|
}
|
|
111
138
|
|
|
112
|
-
export const resolveKeyboard = (
|
|
113
|
-
|
|
139
|
+
export const resolveKeyboard = (
|
|
140
|
+
config: KeyboardConfig,
|
|
141
|
+
multiplicationSymbol?: MultiplicationSymbol,
|
|
142
|
+
): ResolvedKeyboard => {
|
|
143
|
+
const separator = PRESET_SEPARATOR[config.preset]
|
|
144
|
+
const binding = buildBinding(separator, multiplicationSymbol)
|
|
145
|
+
const presetUnits = PRESET_UNITS_MAP[config.preset]
|
|
114
146
|
|
|
115
147
|
return {
|
|
116
148
|
operators: {
|
|
117
|
-
|
|
149
|
+
[KeyboardType.Basic]: resolveGroup(KEYBOARD_BASIC, binding),
|
|
150
|
+
[KeyboardType.BasicPlus]: resolveGroup(KEYBOARD_BASIC_PLUS.DESKTOP, binding),
|
|
151
|
+
[KeyboardType.BasicPlusMobile]: resolveGroup(KEYBOARD_BASIC_PLUS.MOBILE, binding),
|
|
152
|
+
[KeyboardType.BasicPlusPlus]: resolveGroup(KEYBOARD_BASIC_PLUS_PLUS.DESKTOP, binding),
|
|
153
|
+
[KeyboardType.BasicPlusPlusMobile]: resolveGroup(KEYBOARD_BASIC_PLUS_PLUS.MOBILE, binding),
|
|
154
|
+
[KeyboardType.BasicUnits]: presetUnits.basicUnits,
|
|
155
|
+
[KeyboardType.AlgebraAdvanced]: resolveGroup(KEYBOARD_ALGEBRA, binding),
|
|
156
|
+
[KeyboardType.Geometry]: resolveGroup(KEYBOARD_GEOMETRY, binding),
|
|
157
|
+
[KeyboardType.Numpad]: resolveGroup(KEYBOARD_NUMPAD, binding),
|
|
158
|
+
[KeyboardType.Underlined]: resolveGroup(KEYBOARD_UNDERLINED, binding),
|
|
118
159
|
[KeyboardType.BasicCurrency]: CURRENCY_MAP[config.currencyVariant],
|
|
119
160
|
[KeyboardType.BasicTime]: TIME_MAP[config.timeVariant],
|
|
120
161
|
},
|
|
121
|
-
units:
|
|
162
|
+
units: presetUnits.units,
|
|
122
163
|
}
|
|
123
164
|
}
|
|
@@ -38,6 +38,23 @@ export enum KeyboardUnitsGroupType {
|
|
|
38
38
|
|
|
39
39
|
export type MathOperatorsGroup = Record<string, KeyboardKey>
|
|
40
40
|
|
|
41
|
+
export enum KeySlot {
|
|
42
|
+
MULTIPLICATION = 'MULTIPLICATION',
|
|
43
|
+
DECIMAL_SEPARATOR = 'DECIMAL_SEPARATOR',
|
|
44
|
+
LIST_SEPARATOR = 'LIST_SEPARATOR',
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export type KeySlotRef = { slot: KeySlot }
|
|
48
|
+
|
|
49
|
+
export type LayoutKey = KeyboardKey | KeySlotRef
|
|
50
|
+
|
|
51
|
+
export type LayoutGroup = {
|
|
52
|
+
keys: LayoutKey[]
|
|
53
|
+
numOfRows?: number
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export type LayoutGroups = Record<string, LayoutGroup>
|
|
57
|
+
|
|
41
58
|
export type KeyboardGroup = {
|
|
42
59
|
keys: KeyboardKey[]
|
|
43
60
|
numOfRows?: number
|