@khanacademy/perseus 7.1.1 → 7.2.1
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 +18 -0
- package/dist/es/index.css +61 -61
- package/dist/es/index.js +100 -168
- package/dist/es/index.js.map +1 -1
- package/dist/index.css +61 -61
- package/dist/index.js +89 -126
- package/dist/index.js.map +1 -1
- package/dist/util.d.ts +7 -12
- package/dist/util.graphie.d.ts +6 -0
- package/dist/util.graphie.js.flow +14 -0
- package/dist/util.js.flow +7 -12
- package/dist/widgets/plotter.d.ts +47 -13
- package/dist/widgets/plotter.js.flow +47 -13
- package/package.json +2 -2
- package/src/__tests__/item-renderer.test.tsx +1 -1
- package/src/components/__stories__/image-loader.stories.tsx +1 -0
- package/src/components/graph.tsx +1 -0
- package/src/components/icon.tsx +1 -0
- package/src/components/image-loader.tsx +1 -0
- package/src/components/number-input.tsx +1 -0
- package/src/components/sortable.tsx +1 -0
- package/src/components/svg-image.tsx +1 -0
- package/src/components/tex-buttons.tsx +1 -0
- package/src/components/text-input.tsx +1 -0
- package/src/components/text-list-editor.tsx +1 -0
- package/src/components/zoomable.tsx +1 -0
- package/src/hints-renderer.tsx +1 -0
- package/src/index.ts +1 -0
- package/src/item-renderer.tsx +1 -0
- package/src/mixins/provide-keypad.tsx +1 -0
- package/src/multi-items/multi-renderer.tsx +1 -0
- package/src/renderer.tsx +1 -0
- package/src/server-item-renderer.tsx +1 -0
- package/src/styles/articles.less +8 -4
- package/src/styles/perseus-renderer.less +47 -38
- package/src/styles/util.less +1 -1
- package/src/styles/variables.boostrap.less +158 -182
- package/src/styles/variables.less +20 -20
- package/src/styles/variables.shared.less +162 -168
- package/src/styles/widgets/categorizer.less +1 -2
- package/src/styles/widgets/expression.less +7 -4
- package/src/styles/widgets/grapher.less +2 -1
- package/src/styles/widgets/image.less +3 -2
- package/src/styles/widgets/interactive-graph.less +4 -2
- package/src/styles/widgets/label-image.less +2 -1
- package/src/styles/widgets/matrix.less +11 -7
- package/src/styles/widgets/orderer.less +2 -1
- package/src/styles/widgets/passage.less +2 -1
- package/src/styles/widgets/plotter.less +4 -3
- package/src/styles/widgets/radio.less +4 -2
- package/src/styles/widgets/sortable.less +1 -1
- package/src/styles/widgets/table.less +2 -1
- package/src/styles/widgets/transformer.less +2 -1
- package/src/styles/widgets/unit.less +2 -1
- package/src/util.graphie.test.ts +45 -0
- package/src/util.graphie.ts +59 -0
- package/src/util.ts +8 -63
- package/src/widgets/__stories__/plotter.stories.tsx +27 -0
- package/src/widgets/__testdata__/plotter.testdata.ts +36 -0
- package/src/widgets/__tests__/__snapshots__/plotter.test.tsx.snap +863 -0
- package/src/widgets/__tests__/plotter.test.tsx +65 -0
- package/src/widgets/categorizer.tsx +1 -0
- package/src/widgets/graded-group-set.tsx +1 -0
- package/src/widgets/graded-group.tsx +1 -0
- package/src/widgets/interaction.tsx +1 -0
- package/src/widgets/label-image/marker.tsx +1 -0
- package/src/widgets/matcher.tsx +1 -0
- package/src/widgets/orderer.tsx +1 -0
- package/src/widgets/passage-ref-target.tsx +1 -0
- package/src/widgets/plotter.tsx +108 -98
- package/src/widgets/radio/base-radio.tsx +1 -0
- package/src/widgets/radio/choice-icon/choice-icon.tsx +1 -0
- package/src/widgets/sorter.tsx +1 -0
- package/src/widgets/transformer.tsx +1 -0
- package/tsconfig-build.tsbuildinfo +1 -1
package/dist/util.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as GraphieUtil from "./util.graphie";
|
|
1
2
|
import type { Range } from "./perseus-types";
|
|
2
3
|
import type { Widget, PerseusScore } from "./types";
|
|
3
4
|
import type { KEScore } from "@khanacademy/perseus-core";
|
|
@@ -171,13 +172,7 @@ declare function extractPointerLocation(event: any): Position | null | undefined
|
|
|
171
172
|
* avoid sending the touch to the mobile scratchpad
|
|
172
173
|
*/
|
|
173
174
|
declare function captureScratchpadTouchStart(e: TouchEvent): void;
|
|
174
|
-
declare function getImageSizeModern(url: string): Promise<[number, number]>;
|
|
175
175
|
declare function getImageSize(url: string, callback: (width: number, height: number) => void): void;
|
|
176
|
-
declare function getRealImageUrl(url: string): string;
|
|
177
|
-
declare function isLabeledSVG(url: string): boolean;
|
|
178
|
-
declare function getBaseUrl(url: string): string;
|
|
179
|
-
declare function getSvgUrl(url: string): string;
|
|
180
|
-
declare function getDataUrl(url: string): string;
|
|
181
176
|
/**
|
|
182
177
|
* Gets the word right before where the textarea cursor is
|
|
183
178
|
*
|
|
@@ -234,12 +229,12 @@ declare const Util: {
|
|
|
234
229
|
readonly supportsPassiveEvents: () => boolean;
|
|
235
230
|
readonly captureScratchpadTouchStart: typeof captureScratchpadTouchStart;
|
|
236
231
|
readonly getImageSize: typeof getImageSize;
|
|
237
|
-
readonly getImageSizeModern: typeof getImageSizeModern;
|
|
238
|
-
readonly getRealImageUrl: typeof getRealImageUrl;
|
|
239
|
-
readonly isLabeledSVG: typeof isLabeledSVG;
|
|
240
|
-
readonly getBaseUrl: typeof getBaseUrl;
|
|
241
|
-
readonly getSvgUrl: typeof getSvgUrl;
|
|
242
|
-
readonly getDataUrl: typeof getDataUrl;
|
|
232
|
+
readonly getImageSizeModern: typeof GraphieUtil.getImageSizeModern;
|
|
233
|
+
readonly getRealImageUrl: typeof GraphieUtil.getRealImageUrl;
|
|
234
|
+
readonly isLabeledSVG: typeof GraphieUtil.isLabeledSVG;
|
|
235
|
+
readonly getBaseUrl: typeof GraphieUtil.getBaseUrl;
|
|
236
|
+
readonly getSvgUrl: typeof GraphieUtil.getSvgUrl;
|
|
237
|
+
readonly getDataUrl: typeof GraphieUtil.getDataUrl;
|
|
243
238
|
readonly textarea: {
|
|
244
239
|
readonly getWordBeforeCursor: typeof getWordBeforeCursor;
|
|
245
240
|
readonly moveCursor: typeof moveCursor;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function getRealImageUrl(graphieUrl: string): string;
|
|
2
|
+
export declare function isLabeledSVG(graphieUrl: string): boolean;
|
|
3
|
+
export declare function getBaseUrl(graphieUrl: string): string;
|
|
4
|
+
export declare function getSvgUrl(graphieUrl: string): string;
|
|
5
|
+
export declare function getDataUrl(graphieUrl: string): string;
|
|
6
|
+
export declare function getImageSizeModern(url: string): Promise<[number, number]>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flowtype definitions for data
|
|
3
|
+
* Generated by Flowgen from a Typescript Definition
|
|
4
|
+
* Flowgen v1.21.0
|
|
5
|
+
* @flow
|
|
6
|
+
*/
|
|
7
|
+
declare export function getRealImageUrl(graphieUrl: string): string;
|
|
8
|
+
declare export function isLabeledSVG(graphieUrl: string): boolean;
|
|
9
|
+
declare export function getBaseUrl(graphieUrl: string): string;
|
|
10
|
+
declare export function getSvgUrl(graphieUrl: string): string;
|
|
11
|
+
declare export function getDataUrl(graphieUrl: string): string;
|
|
12
|
+
declare export function getImageSizeModern(
|
|
13
|
+
url: string
|
|
14
|
+
): Promise<[number, number]>;
|
package/dist/util.js.flow
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Flowgen v1.21.0
|
|
5
5
|
* @flow
|
|
6
6
|
*/
|
|
7
|
+
import * as GraphieUtil from "./util.graphie";
|
|
7
8
|
import type { Range } from "./perseus-types";
|
|
8
9
|
import type { Widget, PerseusScore } from "./types";
|
|
9
10
|
import type { KEScore } from "@khanacademy/perseus-core";
|
|
@@ -236,16 +237,10 @@ declare function extractPointerLocation(event: any): Position | null | void;
|
|
|
236
237
|
* avoid sending the touch to the mobile scratchpad
|
|
237
238
|
*/
|
|
238
239
|
declare function captureScratchpadTouchStart(e: TouchEvent): void;
|
|
239
|
-
declare function getImageSizeModern(url: string): Promise<[number, number]>;
|
|
240
240
|
declare function getImageSize(
|
|
241
241
|
url: string,
|
|
242
242
|
callback: (width: number, height: number) => void
|
|
243
243
|
): void;
|
|
244
|
-
declare function getRealImageUrl(url: string): string;
|
|
245
|
-
declare function isLabeledSVG(url: string): boolean;
|
|
246
|
-
declare function getBaseUrl(url: string): string;
|
|
247
|
-
declare function getSvgUrl(url: string): string;
|
|
248
|
-
declare function getDataUrl(url: string): string;
|
|
249
244
|
|
|
250
245
|
/**
|
|
251
246
|
* Gets the word right before where the textarea cursor is
|
|
@@ -308,12 +303,12 @@ declare var Util: {|
|
|
|
308
303
|
+supportsPassiveEvents: () => boolean,
|
|
309
304
|
+captureScratchpadTouchStart: typeof captureScratchpadTouchStart,
|
|
310
305
|
+getImageSize: typeof getImageSize,
|
|
311
|
-
+getImageSizeModern: typeof getImageSizeModern,
|
|
312
|
-
+getRealImageUrl: typeof getRealImageUrl,
|
|
313
|
-
+isLabeledSVG: typeof isLabeledSVG,
|
|
314
|
-
+getBaseUrl: typeof getBaseUrl,
|
|
315
|
-
+getSvgUrl: typeof getSvgUrl,
|
|
316
|
-
+getDataUrl: typeof getDataUrl,
|
|
306
|
+
+getImageSizeModern: typeof GraphieUtil.getImageSizeModern,
|
|
307
|
+
+getRealImageUrl: typeof GraphieUtil.getRealImageUrl,
|
|
308
|
+
+isLabeledSVG: typeof GraphieUtil.isLabeledSVG,
|
|
309
|
+
+getBaseUrl: typeof GraphieUtil.getBaseUrl,
|
|
310
|
+
+getSvgUrl: typeof GraphieUtil.getSvgUrl,
|
|
311
|
+
+getDataUrl: typeof GraphieUtil.getDataUrl,
|
|
317
312
|
+textarea: {|
|
|
318
313
|
+getWordBeforeCursor: typeof getWordBeforeCursor,
|
|
319
314
|
+moveCursor: typeof moveCursor,
|
|
@@ -1,25 +1,58 @@
|
|
|
1
|
-
import PropTypes from "prop-types";
|
|
2
1
|
import * as React from "react";
|
|
3
|
-
|
|
2
|
+
import type { APIOptions } from "../types";
|
|
3
|
+
declare const plotTypes: string[];
|
|
4
|
+
type PlotType = typeof plotTypes[number];
|
|
5
|
+
type Props = {
|
|
6
|
+
type: PlotType;
|
|
7
|
+
labels: ReadonlyArray<string>;
|
|
8
|
+
categories: ReadonlyArray<string | number>;
|
|
9
|
+
scaleY: number;
|
|
10
|
+
maxY: number;
|
|
11
|
+
snapsPerLine: number;
|
|
12
|
+
picSize: number;
|
|
13
|
+
picBoxHeight: number;
|
|
14
|
+
picUrl: string;
|
|
15
|
+
plotDimensions: ReadonlyArray<number>;
|
|
16
|
+
labelInterval: number;
|
|
17
|
+
starting: Array<number>;
|
|
18
|
+
static: boolean;
|
|
19
|
+
markings: any;
|
|
20
|
+
onChange: any;
|
|
21
|
+
trackInteraction: () => void;
|
|
22
|
+
apiOptions: APIOptions;
|
|
23
|
+
};
|
|
24
|
+
type DefaultProps = {
|
|
25
|
+
type: Props["type"];
|
|
26
|
+
labels: Props["labels"];
|
|
27
|
+
categories: Props["categories"];
|
|
28
|
+
scaleY: Props["scaleY"];
|
|
29
|
+
maxY: Props["maxY"];
|
|
30
|
+
snapsPerLine: Props["snapsPerLine"];
|
|
31
|
+
picSize: Props["picSize"];
|
|
32
|
+
picBoxHeight: Props["picBoxHeight"];
|
|
33
|
+
picUrl: Props["picUrl"];
|
|
34
|
+
plotDimensions: Props["plotDimensions"];
|
|
35
|
+
labelInterval: Props["labelInterval"];
|
|
36
|
+
};
|
|
37
|
+
type State = {
|
|
38
|
+
values: Array<number>;
|
|
39
|
+
categoryHeights: Record<string, number>;
|
|
40
|
+
};
|
|
41
|
+
export declare class Plotter extends React.Component<Props, State> {
|
|
4
42
|
shouldSetupGraphie: boolean;
|
|
5
43
|
_isMounted: boolean;
|
|
6
44
|
horizHairline: any;
|
|
7
45
|
hairlineRange: any;
|
|
8
46
|
graphie: any;
|
|
9
|
-
static
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
47
|
+
static defaultProps: DefaultProps;
|
|
48
|
+
state: State;
|
|
49
|
+
componentDidMount(): void;
|
|
50
|
+
UNSAFE_componentWillReceiveProps(nextProps: Props): void;
|
|
51
|
+
componentDidUpdate(prevProps: Props, prevState: State): void;
|
|
52
|
+
componentWillUnmount(): void;
|
|
15
53
|
DOT_PLOT_POINT_SIZE: () => number;
|
|
16
54
|
DOT_PLOT_POINT_PADDING: () => number;
|
|
17
55
|
DOT_TICK_POINT_SIZE: () => number;
|
|
18
|
-
render(): React.ReactNode;
|
|
19
|
-
componentDidUpdate(prevProps: any, prevState: any): void;
|
|
20
|
-
componentDidMount(): void;
|
|
21
|
-
UNSAFE_componentWillReceiveProps(nextProps: any): void;
|
|
22
|
-
componentWillUnmount(): void;
|
|
23
56
|
setupGraphie: (arg1: any) => void;
|
|
24
57
|
showHairlines: (arg1: any) => void;
|
|
25
58
|
hideHairlines: () => void;
|
|
@@ -44,6 +77,7 @@ declare class Plotter extends React.Component<any, any> {
|
|
|
44
77
|
drawPicHeights: (arg1: any, arg2: any) => void;
|
|
45
78
|
getUserInput: () => any;
|
|
46
79
|
simpleValidate: (arg1: any) => any;
|
|
80
|
+
render(): React.ReactNode;
|
|
47
81
|
}
|
|
48
82
|
declare const _default: Readonly<{
|
|
49
83
|
name: string;
|
|
@@ -5,28 +5,61 @@
|
|
|
5
5
|
* @flow
|
|
6
6
|
*/
|
|
7
7
|
import * as $Flowgen$Import$_2e__2e__2f_types from "../types";
|
|
8
|
-
import PropTypes from "prop-types";
|
|
9
8
|
import * as React from "react";
|
|
10
|
-
|
|
9
|
+
import type { APIOptions } from "../types";
|
|
10
|
+
declare var plotTypes: string[];
|
|
11
|
+
declare type PlotType = $ElementType<typeof plotTypes, number>;
|
|
12
|
+
declare type Props = {|
|
|
13
|
+
type: PlotType,
|
|
14
|
+
labels: $ReadOnlyArray<string>,
|
|
15
|
+
categories: $ReadOnlyArray<string | number>,
|
|
16
|
+
scaleY: number,
|
|
17
|
+
maxY: number,
|
|
18
|
+
snapsPerLine: number,
|
|
19
|
+
picSize: number,
|
|
20
|
+
picBoxHeight: number,
|
|
21
|
+
picUrl: string,
|
|
22
|
+
plotDimensions: $ReadOnlyArray<number>,
|
|
23
|
+
labelInterval: number,
|
|
24
|
+
starting: Array<number>,
|
|
25
|
+
static: boolean,
|
|
26
|
+
markings: any,
|
|
27
|
+
onChange: any,
|
|
28
|
+
trackInteraction: () => void,
|
|
29
|
+
apiOptions: APIOptions,
|
|
30
|
+
|};
|
|
31
|
+
declare type DefaultProps = {|
|
|
32
|
+
type: $PropertyType<Props, "type">,
|
|
33
|
+
labels: $PropertyType<Props, "labels">,
|
|
34
|
+
categories: $PropertyType<Props, "categories">,
|
|
35
|
+
scaleY: $PropertyType<Props, "scaleY">,
|
|
36
|
+
maxY: $PropertyType<Props, "maxY">,
|
|
37
|
+
snapsPerLine: $PropertyType<Props, "snapsPerLine">,
|
|
38
|
+
picSize: $PropertyType<Props, "picSize">,
|
|
39
|
+
picBoxHeight: $PropertyType<Props, "picBoxHeight">,
|
|
40
|
+
picUrl: $PropertyType<Props, "picUrl">,
|
|
41
|
+
plotDimensions: $PropertyType<Props, "plotDimensions">,
|
|
42
|
+
labelInterval: $PropertyType<Props, "labelInterval">,
|
|
43
|
+
|};
|
|
44
|
+
declare type State = {|
|
|
45
|
+
values: Array<number>,
|
|
46
|
+
categoryHeights: { [key: string]: number },
|
|
47
|
+
|};
|
|
48
|
+
declare export class Plotter extends React.Component<Props, State> {
|
|
11
49
|
shouldSetupGraphie: boolean;
|
|
12
50
|
_isMounted: boolean;
|
|
13
51
|
horizHairline: any;
|
|
14
52
|
hairlineRange: any;
|
|
15
53
|
graphie: any;
|
|
16
|
-
static
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
54
|
+
static defaultProps: DefaultProps;
|
|
55
|
+
state: State;
|
|
56
|
+
componentDidMount(): void;
|
|
57
|
+
UNSAFE_componentWillReceiveProps(nextProps: Props): void;
|
|
58
|
+
componentDidUpdate(prevProps: Props, prevState: State): void;
|
|
59
|
+
componentWillUnmount(): void;
|
|
22
60
|
DOT_PLOT_POINT_SIZE: () => number;
|
|
23
61
|
DOT_PLOT_POINT_PADDING: () => number;
|
|
24
62
|
DOT_TICK_POINT_SIZE: () => number;
|
|
25
|
-
render(): React.Node;
|
|
26
|
-
componentDidUpdate(prevProps: any, prevState: any): void;
|
|
27
|
-
componentDidMount(): void;
|
|
28
|
-
UNSAFE_componentWillReceiveProps(nextProps: any): void;
|
|
29
|
-
componentWillUnmount(): void;
|
|
30
63
|
setupGraphie: (arg1: any) => void;
|
|
31
64
|
showHairlines: (arg1: any) => void;
|
|
32
65
|
hideHairlines: () => void;
|
|
@@ -52,6 +85,7 @@ declare class Plotter extends React.Component<any, any> {
|
|
|
52
85
|
drawPicHeights: (arg1: any, arg2: any) => void;
|
|
53
86
|
getUserInput: () => any;
|
|
54
87
|
simpleValidate: (arg1: any) => any;
|
|
88
|
+
render(): React.Node;
|
|
55
89
|
}
|
|
56
90
|
declare var _default: $ReadOnly<{|
|
|
57
91
|
name: string,
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Core Perseus API (includes renderers and widgets)",
|
|
4
4
|
"author": "Khan Academy",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"version": "7.
|
|
6
|
+
"version": "7.2.1",
|
|
7
7
|
"publishConfig": {
|
|
8
8
|
"access": "public"
|
|
9
9
|
},
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@khanacademy/kas": "^0.3.1",
|
|
25
25
|
"@khanacademy/kmath": "^0.1.1",
|
|
26
|
-
"@khanacademy/math-input": "^8.1.
|
|
26
|
+
"@khanacademy/math-input": "^8.1.2",
|
|
27
27
|
"@khanacademy/perseus-core": "0.1.1",
|
|
28
28
|
"@khanacademy/perseus-linter": "^0.3.1",
|
|
29
29
|
"@khanacademy/pure-markdown": "^0.2.3",
|
|
@@ -309,7 +309,7 @@ describe("item renderer", () => {
|
|
|
309
309
|
renderer.focus();
|
|
310
310
|
|
|
311
311
|
// Assert
|
|
312
|
-
expect(screen.getByLabelText("
|
|
312
|
+
expect(screen.getByLabelText("7")).toBeVisible();
|
|
313
313
|
});
|
|
314
314
|
|
|
315
315
|
it("should provide current and previous focus paths on focus change to, and away from, a single widget", () => {
|
package/src/components/graph.tsx
CHANGED
package/src/components/icon.tsx
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @khanacademy/ts-no-error-suppressions */
|
|
1
2
|
/* eslint-disable @babel/no-invalid-this, react/no-unsafe, react/sort-comp */
|
|
2
3
|
import * as PerseusLinter from "@khanacademy/perseus-linter";
|
|
3
4
|
import {CircularSpinner} from "@khanacademy/wonder-blocks-progress-spinner";
|
package/src/hints-renderer.tsx
CHANGED
package/src/index.ts
CHANGED
package/src/item-renderer.tsx
CHANGED
package/src/renderer.tsx
CHANGED
package/src/styles/articles.less
CHANGED
|
@@ -58,7 +58,8 @@
|
|
|
58
58
|
// inline, so we rely on the "actual paragraph" check above
|
|
59
59
|
// (a .paragraph that contains another .paragraph instead of a
|
|
60
60
|
// .perseus-block-math).
|
|
61
|
-
.katex,
|
|
61
|
+
.katex,
|
|
62
|
+
mjx-container {
|
|
62
63
|
font-size: 100%;
|
|
63
64
|
}
|
|
64
65
|
|
|
@@ -243,7 +244,8 @@
|
|
|
243
244
|
.paragraph {
|
|
244
245
|
.text(@choiceTextSize, @choiceLineHeight, @gray17);
|
|
245
246
|
|
|
246
|
-
.katex,
|
|
247
|
+
.katex,
|
|
248
|
+
mjx-container {
|
|
247
249
|
color: @gray17;
|
|
248
250
|
}
|
|
249
251
|
}
|
|
@@ -391,7 +393,8 @@
|
|
|
391
393
|
.paragraph {
|
|
392
394
|
.text(@choiceTextSize, @choiceLineHeight, @gray17);
|
|
393
395
|
|
|
394
|
-
.katex,
|
|
396
|
+
.katex,
|
|
397
|
+
mjx-container {
|
|
395
398
|
color: @gray17;
|
|
396
399
|
}
|
|
397
400
|
}
|
|
@@ -418,7 +421,8 @@
|
|
|
418
421
|
|
|
419
422
|
.math(@blockMathTextSize; @blockMathLineHeight;
|
|
420
423
|
@inlineMathTextSize; @inlineMathLineHeight) {
|
|
421
|
-
.katex,
|
|
424
|
+
.katex,
|
|
425
|
+
mjx-container {
|
|
422
426
|
font-size: @inlineMathTextSize;
|
|
423
427
|
line-height: @inlineMathLineHeight;
|
|
424
428
|
color: @gray17;
|