@khanacademy/perseus 11.6.0 → 12.0.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.
- package/CHANGELOG.md +35 -0
- package/dist/components/math-input.d.ts +38 -11
- package/dist/components/tex-buttons.d.ts +2 -1
- package/dist/es/index.css +5 -6
- package/dist/es/index.js +1454 -1371
- package/dist/es/index.js.map +1 -1
- package/dist/index.css +5 -6
- package/dist/index.d.ts +2 -8
- package/dist/index.js +1475 -1390
- package/dist/index.js.map +1 -1
- package/dist/item-renderer.d.ts +3 -0
- package/dist/perseus-types.d.ts +2 -1
- package/dist/perseus-version.d.ts +8 -0
- package/dist/strings.js +3 -0
- package/dist/version.d.ts +1 -11
- package/dist/widgets/expression.d.ts +15 -14
- package/package.json +9 -9
- package/src/__tests__/mock-asset-loading-widget.tsx +1 -2
- package/src/components/__stories__/graphie.stories.tsx +2 -2
- package/src/components/__stories__/math-input.stories.tsx +17 -4
- package/src/components/__tests__/math-input.test.tsx +95 -8
- package/src/components/math-input.tsx +274 -96
- package/src/components/tex-buttons.tsx +2 -2
- package/src/index.ts +2 -5
- package/src/item-renderer.tsx +3 -0
- package/src/item-version.ts +2 -2
- package/src/perseus-types.ts +11 -1
- package/src/perseus-version.ts +9 -0
- package/src/styles/perseus-renderer.less +5 -6
- package/src/styles/widgets/expression.less +0 -6
- package/src/version.ts +9 -10
- package/src/widgets/__stories__/expression.stories.tsx +24 -13
- package/src/widgets/__tests__/expression.test.tsx +4 -77
- package/src/widgets/expression.tsx +99 -94
- package/tsconfig-build.json +1 -0
- package/tsconfig-build.tsbuildinfo +1 -1
package/dist/es/index.js
CHANGED
|
@@ -1,45 +1,35 @@
|
|
|
1
1
|
import * as KAS from '@khanacademy/kas';
|
|
2
|
-
import { keyTranslator, createMathField, mathQuillInstance, KeypadInput, KeypadType, keypadElementPropType, MobileKeypad } from '@khanacademy/math-input';
|
|
2
|
+
import { keyTranslator, CursorContext, createMathField, mathQuillInstance, getCursorContext, DesktopKeypad, KeypadInput, KeypadType, KeyArray, keypadElementPropType, MobileKeypad } from '@khanacademy/math-input';
|
|
3
3
|
import * as PerseusLinter from '@khanacademy/perseus-linter';
|
|
4
4
|
import { linterContextDefault, Rule, linterContextProps } from '@khanacademy/perseus-linter';
|
|
5
|
+
import { View, RenderStateRoot, Text } from '@khanacademy/wonder-blocks-core';
|
|
5
6
|
import * as i18n from '@khanacademy/wonder-blocks-i18n';
|
|
7
|
+
import Tooltip$1 from '@khanacademy/wonder-blocks-tooltip';
|
|
6
8
|
import classNames from 'classnames';
|
|
7
9
|
import * as React from 'react';
|
|
8
10
|
import { useState, useEffect, useRef } from 'react';
|
|
9
11
|
import _, { debounce } from 'underscore';
|
|
12
|
+
import Clickable from '@khanacademy/wonder-blocks-clickable';
|
|
13
|
+
import Color, { fade } from '@khanacademy/wonder-blocks-color';
|
|
14
|
+
import { Popover, PopoverContentCore, PopoverContent } from '@khanacademy/wonder-blocks-popover';
|
|
15
|
+
import Spacing from '@khanacademy/wonder-blocks-spacing';
|
|
16
|
+
import { StyleSheet, css } from 'aphrodite';
|
|
10
17
|
import $ from 'jquery';
|
|
18
|
+
import PropTypes from 'prop-types';
|
|
11
19
|
import * as ReactDOM from 'react-dom';
|
|
12
20
|
import ReactDOM__default from 'react-dom';
|
|
13
|
-
import PropTypes from 'prop-types';
|
|
14
21
|
import { number, point, vector as vector$1, line, ray } from '@khanacademy/kmath';
|
|
15
|
-
import Spacing from '@khanacademy/wonder-blocks-spacing';
|
|
16
|
-
import { StyleSheet, css } from 'aphrodite';
|
|
17
22
|
import { CircularSpinner } from '@khanacademy/wonder-blocks-progress-spinner';
|
|
18
|
-
import { RenderStateRoot, View, Text } from '@khanacademy/wonder-blocks-core';
|
|
19
23
|
import SimpleMarkdown from '@khanacademy/simple-markdown';
|
|
20
24
|
import { pureMarkdownRules } from '@khanacademy/pure-markdown';
|
|
21
25
|
import { TextField } from '@khanacademy/wonder-blocks-form';
|
|
22
26
|
import Button from '@khanacademy/wonder-blocks-button';
|
|
23
|
-
import Clickable from '@khanacademy/wonder-blocks-clickable';
|
|
24
|
-
import Color from '@khanacademy/wonder-blocks-color';
|
|
25
27
|
import { Strut } from '@khanacademy/wonder-blocks-layout';
|
|
26
|
-
import { Popover, PopoverContent, PopoverContentCore } from '@khanacademy/wonder-blocks-popover';
|
|
27
28
|
import { OptionItem, SingleSelect } from '@khanacademy/wonder-blocks-dropdown';
|
|
28
29
|
import debounce$1 from 'lodash.debounce';
|
|
29
30
|
import createReactClass from 'create-react-class';
|
|
30
|
-
import Tooltip$1 from '@khanacademy/wonder-blocks-tooltip';
|
|
31
31
|
import Link from '@khanacademy/wonder-blocks-link';
|
|
32
|
-
|
|
33
|
-
var version = {
|
|
34
|
-
apiVersion: {
|
|
35
|
-
major: 12,
|
|
36
|
-
minor: 0
|
|
37
|
-
},
|
|
38
|
-
itemDataVersion: {
|
|
39
|
-
major: 0,
|
|
40
|
-
minor: 1
|
|
41
|
-
}
|
|
42
|
-
};
|
|
32
|
+
import { addLibraryVersionToPerseusDebug } from '@khanacademy/perseus-core';
|
|
43
33
|
|
|
44
34
|
function _extends() {
|
|
45
35
|
_extends = Object.assign || function (target) {
|
|
@@ -59,317 +49,6 @@ function _extends() {
|
|
|
59
49
|
return _extends.apply(this, arguments);
|
|
60
50
|
}
|
|
61
51
|
|
|
62
|
-
/**
|
|
63
|
-
* A stripped version of Icon.jsx from webapp. Takes an SVG icon and renders it
|
|
64
|
-
* inline like Font Awesome did.
|
|
65
|
-
*
|
|
66
|
-
* If you are looking for an icon that we've used before you should look in
|
|
67
|
-
* webapp's `icon-paths.js` which is a reference file for all the SVG paths
|
|
68
|
-
* that we've used. You'll need to copy the object from that file into
|
|
69
|
-
* whichever file you're using the icon and explicitly pass it in to the
|
|
70
|
-
* <InlineIcon/> React component.
|
|
71
|
-
*
|
|
72
|
-
* We assume that the viewBox is cropped and aligned to (0, 0), but icons can
|
|
73
|
-
* be defined differently. At some point we might want to add these attributes
|
|
74
|
-
* to `icon-paths.js`, but for now this is a fairly safe assumption.
|
|
75
|
-
*
|
|
76
|
-
* Sample usage:
|
|
77
|
-
*
|
|
78
|
-
* const editIcon = {
|
|
79
|
-
* path: "M41.209 53.753l5.39 0l0 5.39l3.136 0l6.468-6.517-8.477-8.526-6.517 6.517l0 3.136zm33.173-34.937q-.882-.882-1.862.049l-19.6 19.6q-.931.98-.049 1.862t1.862-.049l19.6-19.6q.931-.98.049-1.862zm-38.563 45.668l0-16.121l37.632-37.632 16.17 16.121-37.632 37.632l-16.17 0zm43.022-12.397l0 10.633q-.049 6.713-4.753 11.417t-11.368 4.704l-46.599 0q-6.713 0-11.417-4.753t-4.704-11.368l0-46.599q0-6.664 4.753-11.417t11.368-4.704l46.599 0q3.528 0 6.566 1.372.833.392.98 1.323t-.49 1.617l-2.744 2.744q-.784.784-1.96.441t-2.352-.343l-46.599 0q-3.675 0-6.321 2.646t-2.646 6.321l0 46.599q0 3.675 2.646 6.321t6.321 2.646l46.599 0q3.675 0 6.321-2.646t2.646-6.321l0-7.056q0-.735.49-1.225l3.577-3.577q.833-.833 1.96-.392t1.127 1.617zm7.203-51.646q2.254 0 3.773 1.568l8.526 8.526q1.568 1.568 1.568 3.822t-1.568 3.773l-5.145 5.145-16.121-16.121 5.145-5.145q1.568-1.568 3.822-1.568z",
|
|
80
|
-
* width: 100,
|
|
81
|
-
* height: 78.912,
|
|
82
|
-
* };
|
|
83
|
-
* <InlineIcon {...editIcon} />
|
|
84
|
-
*
|
|
85
|
-
*/
|
|
86
|
-
const InlineIcon = ({
|
|
87
|
-
path,
|
|
88
|
-
width,
|
|
89
|
-
height,
|
|
90
|
-
style: _style = {},
|
|
91
|
-
title
|
|
92
|
-
}) => /*#__PURE__*/React.createElement("svg", {
|
|
93
|
-
role: "img",
|
|
94
|
-
"aria-hidden": !title,
|
|
95
|
-
style: _extends({
|
|
96
|
-
verticalAlign: "middle"
|
|
97
|
-
}, _style),
|
|
98
|
-
width: `${width / height}em`,
|
|
99
|
-
height: "1em",
|
|
100
|
-
viewBox: `0 0 ${width} ${height}`
|
|
101
|
-
}, !!title && /*#__PURE__*/React.createElement("title", null, title), /*#__PURE__*/React.createElement("path", {
|
|
102
|
-
d: path,
|
|
103
|
-
fill: "currentColor"
|
|
104
|
-
}));
|
|
105
|
-
|
|
106
|
-
let _dependencies = null;
|
|
107
|
-
const setDependencies = dependencies => {
|
|
108
|
-
_dependencies = dependencies;
|
|
109
|
-
};
|
|
110
|
-
const getDependencies = () => {
|
|
111
|
-
if (_dependencies) {
|
|
112
|
-
return _dependencies;
|
|
113
|
-
}
|
|
114
|
-
throw new Error(["Perseus has not been provided required dependencies.", "setDependencies(dependencies) must be called first.", "Make sure Perseus is being imported from javascript/perseus/perseus.js."].join("\n"));
|
|
115
|
-
};
|
|
116
|
-
const DependenciesContext = /*#__PURE__*/React.createContext({
|
|
117
|
-
analytics: {
|
|
118
|
-
onAnalyticsEvent: async () => {}
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* useDependencies provides easy access to the current Perseus dependencies.
|
|
124
|
-
*/
|
|
125
|
-
const useDependencies = () => {
|
|
126
|
-
const deps = React.useContext(DependenciesContext);
|
|
127
|
-
return deps;
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
var dependencies = /*#__PURE__*/Object.freeze({
|
|
131
|
-
__proto__: null,
|
|
132
|
-
setDependencies: setDependencies,
|
|
133
|
-
getDependencies: getDependencies,
|
|
134
|
-
DependenciesContext: DependenciesContext,
|
|
135
|
-
useDependencies: useDependencies
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
/* eslint-disable @khanacademy/ts-no-error-suppressions */
|
|
139
|
-
const prettyBig = {
|
|
140
|
-
fontSize: "150%"
|
|
141
|
-
};
|
|
142
|
-
const slightlyBig = {
|
|
143
|
-
fontSize: "120%"
|
|
144
|
-
};
|
|
145
|
-
const symbStyle = {
|
|
146
|
-
fontSize: "130%"
|
|
147
|
-
};
|
|
148
|
-
// These are functions because we want to generate a new component for each use
|
|
149
|
-
// on the page rather than reusing an instance (which will cause an error).
|
|
150
|
-
// Also, it's useful for things which might look different depending on the
|
|
151
|
-
// props.
|
|
152
|
-
|
|
153
|
-
const basic = [() => [/*#__PURE__*/React.createElement("span", {
|
|
154
|
-
key: "plus",
|
|
155
|
-
style: slightlyBig
|
|
156
|
-
}, "+"), "PLUS", i18n._("Plus")], () => [/*#__PURE__*/React.createElement("span", {
|
|
157
|
-
key: "minus",
|
|
158
|
-
style: prettyBig
|
|
159
|
-
}, "-"), "MINUS", i18n._("Minus")],
|
|
160
|
-
// TODO(joel) - display as \cdot when appropriate
|
|
161
|
-
props => {
|
|
162
|
-
const {
|
|
163
|
-
TeX
|
|
164
|
-
} = getDependencies();
|
|
165
|
-
if (props.convertDotToTimes) {
|
|
166
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
167
|
-
key: "times",
|
|
168
|
-
style: prettyBig
|
|
169
|
-
}, i18n.doNotTranslate("\\times")), "TIMES", i18n._("Multiply")];
|
|
170
|
-
}
|
|
171
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
172
|
-
key: "times",
|
|
173
|
-
style: prettyBig
|
|
174
|
-
}, i18n.doNotTranslate("\\cdot")), "CDOT", i18n._("Multiply")];
|
|
175
|
-
}, () => {
|
|
176
|
-
const {
|
|
177
|
-
TeX
|
|
178
|
-
} = getDependencies();
|
|
179
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
180
|
-
key: "frac",
|
|
181
|
-
style: prettyBig
|
|
182
|
-
}, i18n.doNotTranslate("\\frac{x}{y}")), "FRAC", i18n._("Fraction, excluding the current expression")];
|
|
183
|
-
}];
|
|
184
|
-
const buttonSets = {
|
|
185
|
-
basic,
|
|
186
|
-
"basic+div": basic.concat([() => {
|
|
187
|
-
const {
|
|
188
|
-
TeX
|
|
189
|
-
} = getDependencies();
|
|
190
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
191
|
-
key: "div"
|
|
192
|
-
}, i18n.doNotTranslate("\\div")), "DIVIDE", i18n._("Divide")];
|
|
193
|
-
}]),
|
|
194
|
-
trig: [() => {
|
|
195
|
-
const {
|
|
196
|
-
TeX
|
|
197
|
-
} = getDependencies();
|
|
198
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
199
|
-
key: "sin"
|
|
200
|
-
}, i18n.doNotTranslate("\\sin")), "SIN", i18n._("Sine")];
|
|
201
|
-
}, () => {
|
|
202
|
-
const {
|
|
203
|
-
TeX
|
|
204
|
-
} = getDependencies();
|
|
205
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
206
|
-
key: "cos"
|
|
207
|
-
}, i18n.doNotTranslate("\\cos")), "COS", i18n._("Cosine")];
|
|
208
|
-
}, () => {
|
|
209
|
-
const {
|
|
210
|
-
TeX
|
|
211
|
-
} = getDependencies();
|
|
212
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
213
|
-
key: "tan"
|
|
214
|
-
}, i18n.doNotTranslate("\\tan")), "TAN", i18n._("Tangent")];
|
|
215
|
-
}, () => {
|
|
216
|
-
const {
|
|
217
|
-
TeX
|
|
218
|
-
} = getDependencies();
|
|
219
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
220
|
-
key: "theta",
|
|
221
|
-
style: symbStyle
|
|
222
|
-
}, i18n.doNotTranslate("\\theta")), "THETA", i18n._("Theta")];
|
|
223
|
-
}, () => {
|
|
224
|
-
const {
|
|
225
|
-
TeX
|
|
226
|
-
} = getDependencies();
|
|
227
|
-
return [/*#__PURE__*/React.createElement("span", {
|
|
228
|
-
key: "phi"
|
|
229
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
230
|
-
className: "perseus-sr-only"
|
|
231
|
-
}, i18n.doNotTranslate("phi")), /*#__PURE__*/React.createElement(TeX, {
|
|
232
|
-
key: "pi",
|
|
233
|
-
style: symbStyle
|
|
234
|
-
}, i18n.doNotTranslate("\\phi"))), "PHI", i18n._("Phi")];
|
|
235
|
-
}],
|
|
236
|
-
prealgebra: [() => {
|
|
237
|
-
const {
|
|
238
|
-
TeX
|
|
239
|
-
} = getDependencies();
|
|
240
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
241
|
-
key: "sqrt"
|
|
242
|
-
}, i18n.doNotTranslate("\\sqrt{x}")), "SQRT", i18n._("Square root")];
|
|
243
|
-
},
|
|
244
|
-
// TODO(joel) - how does desmos do this?
|
|
245
|
-
() => {
|
|
246
|
-
const {
|
|
247
|
-
TeX
|
|
248
|
-
} = getDependencies();
|
|
249
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
250
|
-
key: "nthroot"
|
|
251
|
-
}, i18n.doNotTranslate("\\sqrt[3]{x}")), "NTHROOT3", i18n._("Cube root")];
|
|
252
|
-
}, () => {
|
|
253
|
-
const {
|
|
254
|
-
TeX
|
|
255
|
-
} = getDependencies();
|
|
256
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
257
|
-
key: "pow",
|
|
258
|
-
style: slightlyBig
|
|
259
|
-
}, i18n.doNotTranslate("a^b")), "POW", i18n._("Exponent")];
|
|
260
|
-
}, () => {
|
|
261
|
-
const {
|
|
262
|
-
TeX
|
|
263
|
-
} = getDependencies();
|
|
264
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
265
|
-
key: "pi",
|
|
266
|
-
style: slightlyBig
|
|
267
|
-
}, i18n.doNotTranslate("\\pi")), "PI", i18n._("Pi")];
|
|
268
|
-
}],
|
|
269
|
-
logarithms: [() => {
|
|
270
|
-
const {
|
|
271
|
-
TeX
|
|
272
|
-
} = getDependencies();
|
|
273
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
274
|
-
key: "log"
|
|
275
|
-
}, i18n.doNotTranslate("\\log")), "LOG", i18n._("Logarithm with base 10")];
|
|
276
|
-
}, () => {
|
|
277
|
-
const {
|
|
278
|
-
TeX
|
|
279
|
-
} = getDependencies();
|
|
280
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
281
|
-
key: "ln"
|
|
282
|
-
}, i18n.doNotTranslate("\\ln")), "LN", i18n._("Natural logarithm")];
|
|
283
|
-
}, () => {
|
|
284
|
-
const {
|
|
285
|
-
TeX
|
|
286
|
-
} = getDependencies();
|
|
287
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
288
|
-
key: "log_b"
|
|
289
|
-
}, i18n.doNotTranslate("\\log_b")), "LOG_B", i18n._("Logarithm with custom base")];
|
|
290
|
-
}],
|
|
291
|
-
"basic relations": [() => {
|
|
292
|
-
const {
|
|
293
|
-
TeX
|
|
294
|
-
} = getDependencies();
|
|
295
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
296
|
-
key: "eq"
|
|
297
|
-
}, "="), "EQUAL", i18n._("Equals sign")];
|
|
298
|
-
}, () => {
|
|
299
|
-
const {
|
|
300
|
-
TeX
|
|
301
|
-
} = getDependencies();
|
|
302
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
303
|
-
key: "lt"
|
|
304
|
-
}, i18n.doNotTranslate("\\lt")), "LT", i18n._("Less than sign")];
|
|
305
|
-
}, () => {
|
|
306
|
-
const {
|
|
307
|
-
TeX
|
|
308
|
-
} = getDependencies();
|
|
309
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
310
|
-
key: "gt"
|
|
311
|
-
}, i18n.doNotTranslate("\\gt")), "GT", i18n._("Greater than sign")];
|
|
312
|
-
}],
|
|
313
|
-
"advanced relations": [() => {
|
|
314
|
-
const {
|
|
315
|
-
TeX
|
|
316
|
-
} = getDependencies();
|
|
317
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
318
|
-
key: "neq"
|
|
319
|
-
}, i18n.doNotTranslate("\\neq")), "NEQ", i18n._("Not-equals sign")];
|
|
320
|
-
}, () => {
|
|
321
|
-
const {
|
|
322
|
-
TeX
|
|
323
|
-
} = getDependencies();
|
|
324
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
325
|
-
key: "leq"
|
|
326
|
-
}, i18n.doNotTranslate("\\leq")), "LEQ", i18n._("Less than or equal to sign")];
|
|
327
|
-
}, () => {
|
|
328
|
-
const {
|
|
329
|
-
TeX
|
|
330
|
-
} = getDependencies();
|
|
331
|
-
return [/*#__PURE__*/React.createElement(TeX, {
|
|
332
|
-
key: "geq"
|
|
333
|
-
}, i18n.doNotTranslate("\\geq")), "GEQ", i18n._("Greater than or equal to sign")];
|
|
334
|
-
}]
|
|
335
|
-
};
|
|
336
|
-
const buttonSetsPropType = PropTypes.arrayOf(PropTypes.oneOf(_(buttonSets).keys()));
|
|
337
|
-
class TexButtons extends React.Component {
|
|
338
|
-
render() {
|
|
339
|
-
// Always show buttonSets in the same order. Note: Technically it's ok
|
|
340
|
-
// for _.keys() to return the keys in an arbitrary order, but in
|
|
341
|
-
// practice, they will be ordered as listed above.
|
|
342
|
-
const sortedButtonSets = _.sortBy(this.props.sets, setName =>
|
|
343
|
-
// @ts-expect-error - TS2345 - Argument of type 'string | number' is not assignable to parameter of type 'string'.
|
|
344
|
-
_.keys(buttonSets).indexOf(setName));
|
|
345
|
-
const buttons = _(sortedButtonSets).map(setName => buttonSets[setName]);
|
|
346
|
-
const buttonRows = _(buttons).map(row => row.map(symbGen => {
|
|
347
|
-
// create a (component, thing we should send to mathquill) pair
|
|
348
|
-
const symbol = symbGen(this.props);
|
|
349
|
-
return /*#__PURE__*/React.createElement("button", {
|
|
350
|
-
onClick: () => this.props.onInsert(symbol[1]),
|
|
351
|
-
className: "tex-button"
|
|
352
|
-
// @ts-expect-error - TS2533 - Object is possibly 'null' or 'undefined'. | TS2339 - Property 'key' does not exist on type 'boolean | ReactChild | ReactFragment | ReactPortal'.
|
|
353
|
-
,
|
|
354
|
-
key: symbol[0].key,
|
|
355
|
-
type: "button",
|
|
356
|
-
"aria-label": symbol[2]
|
|
357
|
-
}, symbol[0]);
|
|
358
|
-
}));
|
|
359
|
-
const buttonPopup = _(buttonRows).map((row, i) => {
|
|
360
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
361
|
-
className: "clearfix tex-button-row",
|
|
362
|
-
key: this.props.sets[i]
|
|
363
|
-
}, row);
|
|
364
|
-
});
|
|
365
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
366
|
-
className: `${this.props.className || ""} preview-measure`
|
|
367
|
-
}, buttonPopup);
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
TexButtons.buttonSets = buttonSets;
|
|
371
|
-
TexButtons.buttonSetsType = buttonSetsPropType;
|
|
372
|
-
|
|
373
52
|
const customKeyTranslator = _extends({}, keyTranslator, {
|
|
374
53
|
// If there's something in the input that can become part of a
|
|
375
54
|
// fraction, typing "/" puts it in the numerator. If not, typing
|
|
@@ -391,57 +70,9 @@ class MathInput extends React.Component {
|
|
|
391
70
|
this.__mathFieldWrapperRef = null;
|
|
392
71
|
this.__mathField = null;
|
|
393
72
|
this.state = {
|
|
394
|
-
focused: false
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
this.setState({
|
|
398
|
-
focused: true
|
|
399
|
-
});
|
|
400
|
-
// TODO(joel) fix properly - we should probably allow onFocus handlers
|
|
401
|
-
// to this property, but we need to work correctly with them.
|
|
402
|
-
// if (this.props.onFocus) {
|
|
403
|
-
// this.props.onFocus();
|
|
404
|
-
// }
|
|
405
|
-
};
|
|
406
|
-
this.handleMouseDown = event => {
|
|
407
|
-
// @ts-expect-error - TS2531 - Object is possibly 'null'. | TS2345 - Argument of type 'EventTarget | null' is not assignable to parameter of type 'Node | null'.
|
|
408
|
-
const focused = ReactDOM__default.findDOMNode(this).contains(event.target);
|
|
409
|
-
this.mouseDown = focused;
|
|
410
|
-
if (!focused) {
|
|
411
|
-
this.setState({
|
|
412
|
-
focused: false
|
|
413
|
-
});
|
|
414
|
-
}
|
|
415
|
-
};
|
|
416
|
-
this.handleMouseUp = () => {
|
|
417
|
-
// this mouse click started in the buttons div so we should focus the
|
|
418
|
-
// input
|
|
419
|
-
if (this.mouseDown) {
|
|
420
|
-
this.focus();
|
|
421
|
-
}
|
|
422
|
-
this.mouseDown = false;
|
|
423
|
-
};
|
|
424
|
-
this.handleBlur = e => {
|
|
425
|
-
// TODO(michaelpolyak): Consider trapping focus within the button group.
|
|
426
|
-
// Focusing back on the input when TAB out of the last button in the
|
|
427
|
-
// group. This will probably require ESCAPE key handling to enable to
|
|
428
|
-
// close (blur) the button group in order to focus on next page element.
|
|
429
|
-
if (!this.mouseDown &&
|
|
430
|
-
// @ts-expect-error - TS2531 - Object is possibly 'null'.
|
|
431
|
-
!ReactDOM__default.findDOMNode(this).contains(e.relatedTarget)) {
|
|
432
|
-
this.setState({
|
|
433
|
-
focused: false
|
|
434
|
-
});
|
|
435
|
-
}
|
|
436
|
-
};
|
|
437
|
-
this._shouldShowButtons = () => {
|
|
438
|
-
if (this.props.buttonsVisible === "always") {
|
|
439
|
-
return true;
|
|
440
|
-
}
|
|
441
|
-
if (this.props.buttonsVisible === "never") {
|
|
442
|
-
return false;
|
|
443
|
-
}
|
|
444
|
-
return this.state.focused;
|
|
73
|
+
focused: false,
|
|
74
|
+
keypadOpen: this.props.buttonsVisible === "always" ? true : false,
|
|
75
|
+
cursorContext: CursorContext.NONE
|
|
445
76
|
};
|
|
446
77
|
this.insert = value => {
|
|
447
78
|
const input = this.mathField();
|
|
@@ -503,6 +134,9 @@ class MathInput extends React.Component {
|
|
|
503
134
|
if (this.props.value !== value) {
|
|
504
135
|
this.props.onChange(value);
|
|
505
136
|
}
|
|
137
|
+
this.setState({
|
|
138
|
+
cursorContext: getCursorContext(mathField)
|
|
139
|
+
});
|
|
506
140
|
},
|
|
507
141
|
enter: () => {
|
|
508
142
|
// NOTE(kevinb): This isn't how answers to exercises are
|
|
@@ -535,34 +169,50 @@ class MathInput extends React.Component {
|
|
|
535
169
|
focused: true
|
|
536
170
|
});
|
|
537
171
|
};
|
|
538
|
-
this.blur = () => {
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
172
|
+
this.blur = () => this.setState({
|
|
173
|
+
focused: false
|
|
174
|
+
});
|
|
175
|
+
this.handleKeypadPress = (key, e) => {
|
|
176
|
+
const translator = keyTranslator[key];
|
|
177
|
+
const mathField = this.mathField();
|
|
178
|
+
if (mathField) {
|
|
179
|
+
if (translator) {
|
|
180
|
+
translator(mathField, key);
|
|
181
|
+
}
|
|
182
|
+
this.setState({
|
|
183
|
+
cursorContext: getCursorContext(mathField)
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// We want to prevent taking focus from input when clicking on keypad
|
|
188
|
+
// Clickable handles "onClick" differently than react;
|
|
189
|
+
// a keyboard event is "keydown" type.
|
|
190
|
+
// In react without WonderBlocks, "enter" or "space" keydown events
|
|
191
|
+
// are also "click" events, differentiated by "detail".
|
|
192
|
+
if (e.type === "click") {
|
|
193
|
+
this.focus();
|
|
194
|
+
}
|
|
544
195
|
};
|
|
545
196
|
}
|
|
546
197
|
componentDidMount() {
|
|
547
|
-
var _this$
|
|
548
|
-
window.addEventListener("mousedown", this.handleMouseDown);
|
|
549
|
-
window.addEventListener("mouseup", this.handleMouseUp);
|
|
550
|
-
|
|
198
|
+
var _this$mathField2;
|
|
551
199
|
// Ideally, we would be able to pass an initial value directly into
|
|
552
200
|
// the constructor
|
|
553
|
-
(_this$
|
|
201
|
+
(_this$mathField2 = this.mathField()) == null ? void 0 : _this$mathField2.latex(this.props.value);
|
|
554
202
|
}
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
203
|
+
openKeypad() {
|
|
204
|
+
if (this.props.buttonsVisible === "never") {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
this.setState({
|
|
208
|
+
keypadOpen: true
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
closeKeypad() {
|
|
212
|
+
this.setState({
|
|
213
|
+
keypadOpen: false
|
|
214
|
+
});
|
|
558
215
|
}
|
|
559
|
-
|
|
560
|
-
// handlers:
|
|
561
|
-
// keep track of two related bits of state:
|
|
562
|
-
// * this.state.focused - whether the buttons are currently shown
|
|
563
|
-
// * this.mouseDown - whether a mouse click is active that started in the
|
|
564
|
-
// buttons div
|
|
565
|
-
|
|
566
216
|
render() {
|
|
567
217
|
let className = classNames({
|
|
568
218
|
"perseus-math-input": true,
|
|
@@ -574,440 +224,195 @@ class MathInput extends React.Component {
|
|
|
574
224
|
if (this.props.className) {
|
|
575
225
|
className = className + " " + this.props.className;
|
|
576
226
|
}
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
// @ts-expect-error - TS2322 - Type 'Element' is not assignable to type 'null'.
|
|
580
|
-
buttons = /*#__PURE__*/React.createElement(TexButtons, {
|
|
581
|
-
sets: this.props.buttonSets,
|
|
582
|
-
className: "math-input-buttons absolute",
|
|
583
|
-
convertDotToTimes: this.props.convertDotToTimes,
|
|
584
|
-
onInsert: this.insert
|
|
585
|
-
});
|
|
586
|
-
}
|
|
587
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
588
|
-
style: {
|
|
589
|
-
display: "inline-block"
|
|
590
|
-
}
|
|
227
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
228
|
+
style: [styles$A.outerWrapper, this.state.focused && styles$A.wrapperFocused, this.props.hasError && styles$A.wrapperError]
|
|
591
229
|
}, /*#__PURE__*/React.createElement("div", {
|
|
592
230
|
style: {
|
|
593
|
-
display: "
|
|
231
|
+
display: "flex",
|
|
232
|
+
padding: 1
|
|
233
|
+
},
|
|
234
|
+
onClick: () => {
|
|
235
|
+
const mathField = this.mathField();
|
|
236
|
+
if (!mathField) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
this.setState({
|
|
240
|
+
cursorContext: getCursorContext(mathField)
|
|
241
|
+
});
|
|
594
242
|
}
|
|
595
243
|
}, /*#__PURE__*/React.createElement("span", {
|
|
596
244
|
className: className,
|
|
597
245
|
ref: ref => this.__mathFieldWrapperRef = ref,
|
|
598
246
|
"aria-label": this.props.labelText,
|
|
599
|
-
onFocus: this.
|
|
600
|
-
onBlur: this.
|
|
601
|
-
})
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
247
|
+
onFocus: () => this.focus(),
|
|
248
|
+
onBlur: () => this.blur()
|
|
249
|
+
}), /*#__PURE__*/React.createElement(Popover, {
|
|
250
|
+
opened: this.state.keypadOpen,
|
|
251
|
+
onClose: () => this.closeKeypad(),
|
|
252
|
+
dismissEnabled: true,
|
|
253
|
+
content: () => {
|
|
254
|
+
var _this$props$keypadBut, _this$props;
|
|
255
|
+
return /*#__PURE__*/React.createElement(PopoverContentCore, {
|
|
256
|
+
closeButtonVisible: true,
|
|
257
|
+
style: styles$A.popoverContent
|
|
258
|
+
}, /*#__PURE__*/React.createElement(DesktopKeypad, _extends({
|
|
259
|
+
onAnalyticsEvent: this.props.analytics.onAnalyticsEvent,
|
|
260
|
+
extraKeys: this.props.extraKeys,
|
|
261
|
+
onClickKey: this.handleKeypadPress,
|
|
262
|
+
cursorContext: this.state.cursorContext,
|
|
263
|
+
convertDotToTimes: this.props.convertDotToTimes
|
|
264
|
+
}, (_this$props$keypadBut = this.props.keypadButtonSets) != null ? _this$props$keypadBut : mapButtonSets((_this$props = this.props) == null ? void 0 : _this$props.buttonSets))));
|
|
265
|
+
}
|
|
266
|
+
}, this.props.buttonsVisible === "never" ? /*#__PURE__*/React.createElement(MathInputIcon, {
|
|
267
|
+
hovered: false,
|
|
268
|
+
focused: false,
|
|
269
|
+
active: false
|
|
270
|
+
}) : /*#__PURE__*/React.createElement(Clickable, {
|
|
271
|
+
"aria-label": this.state.keypadOpen ? i18n._("close math keypad") : i18n._("open math keypad"),
|
|
272
|
+
"aria-checked": this.state.keypadOpen,
|
|
273
|
+
role: "switch",
|
|
274
|
+
onClick: () => this.state.keypadOpen ? this.closeKeypad() : this.openKeypad()
|
|
275
|
+
}, props => /*#__PURE__*/React.createElement(MathInputIcon, _extends({
|
|
276
|
+
active: this.state.keypadOpen
|
|
277
|
+
}, props))))));
|
|
607
278
|
}
|
|
608
279
|
}
|
|
609
280
|
MathInput.defaultProps = {
|
|
610
281
|
value: "",
|
|
611
|
-
convertDotToTimes: false
|
|
612
|
-
buttonsVisible: "focused"
|
|
282
|
+
convertDotToTimes: false
|
|
613
283
|
};
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
284
|
+
const MathInputIcon = ({
|
|
285
|
+
hovered,
|
|
286
|
+
focused,
|
|
287
|
+
active
|
|
288
|
+
}) => {
|
|
289
|
+
let color;
|
|
290
|
+
switch (true) {
|
|
291
|
+
case focused || active:
|
|
292
|
+
color = Color.white;
|
|
293
|
+
break;
|
|
294
|
+
case hovered:
|
|
295
|
+
color = Color.blue;
|
|
296
|
+
break;
|
|
297
|
+
default:
|
|
298
|
+
color = Color.offBlack;
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
const dynamicClass = active || focused ? styles$A.iconActive : styles$A.iconInactive;
|
|
302
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
303
|
+
style: [styles$A.iconContainer, dynamicClass]
|
|
304
|
+
}, /*#__PURE__*/React.createElement("svg", {
|
|
305
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
306
|
+
width: "16",
|
|
307
|
+
height: "16",
|
|
308
|
+
fill: color,
|
|
309
|
+
viewBox: "0 0 256 256"
|
|
310
|
+
}, /*#__PURE__*/React.createElement("path", {
|
|
311
|
+
d: "M112,72a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16h64A8,8,0,0,1,112,72Zm-8,104H80V152a8,8,0,0,0-16,0v24H40a8,8,0,0,0,0,16H64v24a8,8,0,0,0,16,0V192h24a8,8,0,0,0,0-16Zm48,0h64a8,8,0,0,0,0-16H152a8,8,0,0,0,0,16Zm64,16H152a8,8,0,0,0,0,16h64a8,8,0,0,0,0-16Zm-61.66-90.34a8,8,0,0,0,11.32,0L184,83.31l18.34,18.35a8,8,0,0,0,11.32-11.32L195.31,72l18.35-18.34a8,8,0,0,0-11.32-11.32L184,60.69,165.66,42.34a8,8,0,0,0-11.32,11.32L172.69,72,154.34,90.34A8,8,0,0,0,154.34,101.66Z"
|
|
312
|
+
})));
|
|
313
|
+
};
|
|
314
|
+
const mapButtonSets = buttonSets => {
|
|
315
|
+
const keypadButtonSets = {};
|
|
316
|
+
if (!buttonSets) {
|
|
317
|
+
return keypadButtonSets;
|
|
643
318
|
}
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
319
|
+
buttonSets.forEach(buttonSet => {
|
|
320
|
+
switch (buttonSet) {
|
|
321
|
+
case "advanced relations":
|
|
322
|
+
keypadButtonSets.advancedRelations = true;
|
|
323
|
+
break;
|
|
324
|
+
case "basic relations":
|
|
325
|
+
keypadButtonSets.basicRelations = true;
|
|
326
|
+
break;
|
|
327
|
+
case "basic+div":
|
|
328
|
+
keypadButtonSets.divisionKey = true;
|
|
329
|
+
break;
|
|
330
|
+
case "logarithms":
|
|
331
|
+
keypadButtonSets.logarithms = true;
|
|
332
|
+
break;
|
|
333
|
+
case "prealgebra":
|
|
334
|
+
keypadButtonSets.preAlgebra = true;
|
|
335
|
+
break;
|
|
336
|
+
case "trig":
|
|
337
|
+
keypadButtonSets.trigonometry = true;
|
|
338
|
+
break;
|
|
656
339
|
}
|
|
657
340
|
});
|
|
341
|
+
return keypadButtonSets;
|
|
658
342
|
};
|
|
659
|
-
const
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
//const isRight = (this.props.horizontalDirection === "right");
|
|
664
|
-
const isTop = props.verticalDirection === "top";
|
|
665
|
-
const frontTopOffset = isTop ? 0 : 1;
|
|
666
|
-
const borderTopOffset = isTop ? 0 : -1;
|
|
667
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
668
|
-
style: {
|
|
669
|
-
display: "block",
|
|
670
|
-
position: props.position,
|
|
671
|
-
visibility: props.visibility,
|
|
672
|
-
left: props.left,
|
|
673
|
-
top: props["top"],
|
|
674
|
-
width: props.width + 2,
|
|
675
|
-
height: props.height + 1,
|
|
676
|
-
marginTop: -1,
|
|
677
|
-
marginBottom: -2,
|
|
678
|
-
zIndex: zIndex
|
|
679
|
-
}
|
|
680
|
-
}, /*#__PURE__*/React.createElement(Triangle, {
|
|
681
|
-
horizontalDirection: props.horizontalDirection,
|
|
682
|
-
verticalDirection: props.verticalDirection,
|
|
683
|
-
color: props.border,
|
|
684
|
-
left: 0,
|
|
685
|
-
top: borderTopOffset,
|
|
686
|
-
width: props.width + 2 // one extra for the diagonal
|
|
687
|
-
,
|
|
688
|
-
height: props.height + 2
|
|
689
|
-
}), /*#__PURE__*/React.createElement(Triangle, {
|
|
690
|
-
horizontalDirection: props.horizontalDirection,
|
|
691
|
-
verticalDirection: props.verticalDirection,
|
|
692
|
-
color: props.color,
|
|
693
|
-
left: 1,
|
|
694
|
-
top: frontTopOffset,
|
|
695
|
-
width: props.width,
|
|
696
|
-
height: props.height
|
|
697
|
-
}));
|
|
698
|
-
};
|
|
699
|
-
TooltipArrow.defaultProps = {
|
|
700
|
-
position: "relative",
|
|
701
|
-
visibility: "visible",
|
|
702
|
-
left: 0,
|
|
703
|
-
top: 0
|
|
343
|
+
const inputFocused = {
|
|
344
|
+
borderWidth: 2,
|
|
345
|
+
borderColor: Color.blue,
|
|
346
|
+
margin: -1
|
|
704
347
|
};
|
|
705
|
-
const
|
|
706
|
-
|
|
707
|
-
|
|
348
|
+
const styles$A = StyleSheet.create({
|
|
349
|
+
iconContainer: {
|
|
350
|
+
display: "flex",
|
|
351
|
+
justifyContent: "center",
|
|
352
|
+
height: "100%",
|
|
353
|
+
padding: Spacing.xxxSmall_4,
|
|
354
|
+
borderRadius: 1
|
|
708
355
|
},
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
}
|
|
712
|
-
};
|
|
713
|
-
const HORIZONTAL_CORNERS = {
|
|
714
|
-
left: {
|
|
715
|
-
targetLeft: 0
|
|
356
|
+
iconInactive: {
|
|
357
|
+
backgroundColor: Color.offBlack8
|
|
716
358
|
},
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
}
|
|
720
|
-
};
|
|
721
|
-
const HORIZONTAL_ALIGNMNENTS = {
|
|
722
|
-
left: {
|
|
723
|
-
tooltipLeft: 0,
|
|
724
|
-
arrowLeft: arrowSize => 0
|
|
359
|
+
iconActive: {
|
|
360
|
+
backgroundColor: Color.offBlack64
|
|
725
361
|
},
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
}
|
|
742
|
-
UNSAFE_componentWillReceiveProps() {
|
|
743
|
-
// If the contents have changed, reset our measure of the height
|
|
744
|
-
this.setState({
|
|
745
|
-
height: null
|
|
746
|
-
});
|
|
747
|
-
}
|
|
748
|
-
componentDidUpdate() {
|
|
749
|
-
this._updateHeight();
|
|
750
|
-
}
|
|
751
|
-
_renderToolTipDiv(isTooltipAbove) {
|
|
752
|
-
const settings = Object.assign({}, HORIZONTAL_CORNERS[this.props.horizontalPosition], HORIZONTAL_ALIGNMNENTS[this.props.horizontalAlign], VERTICAL_CORNERS[this.props.verticalPosition]);
|
|
753
|
-
let arrowAbove;
|
|
754
|
-
let arrowBelow;
|
|
755
|
-
if (isTooltipAbove) {
|
|
756
|
-
// We put an absolutely positioned arrow in the correct place
|
|
757
|
-
arrowAbove = /*#__PURE__*/React.createElement(TooltipArrow, {
|
|
758
|
-
verticalDirection: VerticalDirection.Top,
|
|
759
|
-
horizontalDirection: this.props.horizontalAlign,
|
|
760
|
-
position: "absolute",
|
|
761
|
-
color: "white",
|
|
762
|
-
border: this.props.borderColor,
|
|
763
|
-
left: settings.arrowLeft(this.props.arrowSize),
|
|
764
|
-
top: -this.props.arrowSize + 2,
|
|
765
|
-
width: this.props.arrowSize,
|
|
766
|
-
height: this.props.arrowSize,
|
|
767
|
-
zIndex: zIndex
|
|
768
|
-
});
|
|
769
|
-
|
|
770
|
-
// And we use a visibility: hidden arrow below to shift up the
|
|
771
|
-
// content by the correct amount
|
|
772
|
-
arrowBelow = /*#__PURE__*/React.createElement(TooltipArrow, {
|
|
773
|
-
verticalDirection: VerticalDirection.Top,
|
|
774
|
-
horizontalDirection: this.props.horizontalAlign,
|
|
775
|
-
visibility: "hidden",
|
|
776
|
-
color: "white",
|
|
777
|
-
border: this.props.borderColor,
|
|
778
|
-
left: settings.arrowLeft(this.props.arrowSize),
|
|
779
|
-
top: -1,
|
|
780
|
-
width: this.props.arrowSize,
|
|
781
|
-
height: this.props.arrowSize,
|
|
782
|
-
zIndex: zIndex
|
|
783
|
-
});
|
|
784
|
-
} else {
|
|
785
|
-
arrowAbove = /*#__PURE__*/React.createElement(TooltipArrow, {
|
|
786
|
-
verticalDirection: VerticalDirection.Bottom,
|
|
787
|
-
horizontalDirection: this.props.horizontalAlign,
|
|
788
|
-
color: "white",
|
|
789
|
-
border: this.props.borderColor,
|
|
790
|
-
left: settings.arrowLeft(this.props.arrowSize),
|
|
791
|
-
top: -1,
|
|
792
|
-
width: this.props.arrowSize,
|
|
793
|
-
height: this.props.arrowSize,
|
|
794
|
-
zIndex: zIndex
|
|
795
|
-
});
|
|
796
|
-
arrowBelow = null;
|
|
797
|
-
}
|
|
798
|
-
|
|
799
|
-
/* A positioned div below the input to be the parent for our
|
|
800
|
-
tooltip */
|
|
801
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
802
|
-
style: {
|
|
803
|
-
position: "relative",
|
|
804
|
-
height: 0,
|
|
805
|
-
display: this.props.show ? "block" : "none"
|
|
806
|
-
}
|
|
807
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
808
|
-
// eslint-disable-next-line react/no-string-refs
|
|
809
|
-
ref: "tooltipContainer",
|
|
810
|
-
className: "tooltipContainer",
|
|
811
|
-
style: {
|
|
812
|
-
position: "absolute",
|
|
813
|
-
// height must start out undefined, not null, so that
|
|
814
|
-
// we can measure the actual height with jquery.
|
|
815
|
-
// This is used to position the tooltip with top: -100%
|
|
816
|
-
// when in verticalPosition: "top" mode
|
|
817
|
-
height: this.state.height || undefined,
|
|
818
|
-
left: settings.targetLeft
|
|
819
|
-
}
|
|
820
|
-
}, arrowAbove, /*#__PURE__*/React.createElement("div", {
|
|
821
|
-
className: this.props.className
|
|
822
|
-
// eslint-disable-next-line react/no-string-refs
|
|
823
|
-
,
|
|
824
|
-
ref: "tooltipContent",
|
|
825
|
-
style: {
|
|
826
|
-
position: "relative",
|
|
827
|
-
top: settings["top"],
|
|
828
|
-
left: settings.tooltipLeft,
|
|
829
|
-
border: "1px solid " + this.props.borderColor,
|
|
830
|
-
boxShadow: "0 1px 3px " + this.props.borderColor,
|
|
831
|
-
zIndex: zIndex - 1
|
|
832
|
-
}
|
|
833
|
-
}, this.props.children.slice(1)), arrowBelow));
|
|
834
|
-
}
|
|
835
|
-
_updateHeight() {
|
|
836
|
-
const tooltipContainer = ReactDOM__default.findDOMNode(
|
|
837
|
-
// eslint-disable-next-line react/no-string-refs
|
|
838
|
-
this.refs.tooltipContainer);
|
|
839
|
-
const height = tooltipContainer.offsetHeight;
|
|
840
|
-
if (height !== this.state.height) {
|
|
841
|
-
this.setState({
|
|
842
|
-
height
|
|
843
|
-
});
|
|
362
|
+
outerWrapper: {
|
|
363
|
+
display: "inline-block",
|
|
364
|
+
borderStyle: "solid",
|
|
365
|
+
borderWidth: 1,
|
|
366
|
+
borderColor: Color.offBlack50,
|
|
367
|
+
borderRadius: 3,
|
|
368
|
+
background: Color.white,
|
|
369
|
+
":hover": inputFocused
|
|
370
|
+
},
|
|
371
|
+
wrapperFocused: inputFocused,
|
|
372
|
+
wrapperError: {
|
|
373
|
+
borderColor: Color.red,
|
|
374
|
+
background: fade(Color.red, 0.08),
|
|
375
|
+
":hover": {
|
|
376
|
+
borderColor: Color.red
|
|
844
377
|
}
|
|
378
|
+
},
|
|
379
|
+
popoverContent: {
|
|
380
|
+
padding: 0,
|
|
381
|
+
paddingBottom: Spacing.xxSmall_6,
|
|
382
|
+
maxWidth: "initial"
|
|
845
383
|
}
|
|
846
|
-
|
|
847
|
-
const isTooltipAbove = this.props.verticalPosition === "top";
|
|
384
|
+
});
|
|
848
385
|
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
386
|
+
let _dependencies = null;
|
|
387
|
+
const setDependencies = dependencies => {
|
|
388
|
+
_dependencies = dependencies;
|
|
389
|
+
};
|
|
390
|
+
const getDependencies = () => {
|
|
391
|
+
if (_dependencies) {
|
|
392
|
+
return _dependencies;
|
|
853
393
|
}
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
// Sorry. // Apology-Oriented-Programming
|
|
857
|
-
Tooltip.defaultProps = {
|
|
858
|
-
className: "",
|
|
859
|
-
arrowSize: 10,
|
|
860
|
-
borderColor: "#ccc",
|
|
861
|
-
verticalPosition: VerticalDirection.Bottom,
|
|
862
|
-
horizontalPosition: HorizontalDirection.Left,
|
|
863
|
-
horizontalAlign: HorizontalDirection.Left,
|
|
864
|
-
targetContainerStyle: {}
|
|
394
|
+
throw new Error(["Perseus has not been provided required dependencies.", "setDependencies(dependencies) must be called first.", "Make sure Perseus is being imported from javascript/perseus/perseus.js."].join("\n"));
|
|
865
395
|
};
|
|
396
|
+
const DependenciesContext = /*#__PURE__*/React.createContext({
|
|
397
|
+
analytics: {
|
|
398
|
+
onAnalyticsEvent: async () => {}
|
|
399
|
+
}
|
|
400
|
+
});
|
|
866
401
|
|
|
867
402
|
/**
|
|
868
|
-
*
|
|
869
|
-
*
|
|
870
|
-
* These paths are taken directly from webapp's `icon-paths.js`. Unlike the
|
|
871
|
-
* webapp equivalent, these can be directly required within Perseus files since
|
|
872
|
-
* this is all bundled together anyway.
|
|
403
|
+
* useDependencies provides easy access to the current Perseus dependencies.
|
|
873
404
|
*/
|
|
874
|
-
|
|
875
|
-
const
|
|
876
|
-
|
|
877
|
-
width: 24,
|
|
878
|
-
height: 24
|
|
879
|
-
};
|
|
880
|
-
const iconCheckMedium = {
|
|
881
|
-
path: "M6.072 10.4l6.175-7.058a1 1 0 1 1 1.506 1.317L6.769 12.64a1 1 0 0 1-1.55-.054L2.203 8.604a1 1 0 1 1 1.594-1.208L6.072 10.4z",
|
|
882
|
-
width: 16,
|
|
883
|
-
height: 16
|
|
884
|
-
};
|
|
885
|
-
const iconChevronDown = {
|
|
886
|
-
path: "M99.669 13.048q0 3.36-2.352 5.712l-41.664 41.664q-2.408 2.408-5.88 2.408t-5.712-2.408l-41.664-41.664q-2.408-2.24-2.408-5.712t2.408-5.88l4.76-4.816q2.52-2.352 5.88-2.352t5.656 2.352l31.136 31.136 31.08-31.136q2.352-2.352 5.712-2.352t5.88 2.352l4.816 4.816q2.352 2.52 2.352 5.88z",
|
|
887
|
-
width: 100,
|
|
888
|
-
height: 63.034
|
|
889
|
-
};
|
|
890
|
-
const iconChevronRight = {
|
|
891
|
-
path: "M62.808 49.728q0 3.36-2.352 5.88l-41.72 41.664q-2.352 2.408-5.768 2.408t-5.768-2.408l-4.872-4.76q-2.352-2.52-2.352-5.88t2.352-5.712l31.08-31.136-31.08-31.024q-2.352-2.52-2.352-5.88t2.352-5.712l4.872-4.76q2.296-2.408 5.768-2.408t5.768 2.408l41.72 41.664q2.352 2.296 2.352 5.656z",
|
|
892
|
-
width: 63.034,
|
|
893
|
-
height: 100
|
|
894
|
-
};
|
|
895
|
-
const iconCircle = {
|
|
896
|
-
path: "M100.035 50.046q.057 13.623-6.669 25.137t-18.24 18.183-25.08 6.669-25.137-6.726q-11.514-6.726-18.183-18.183-6.726-11.571-6.726-25.137t6.726-25.08 18.24-18.24 25.08-6.669q13.566 0 25.08 6.726 11.514 6.669 18.24 18.183t6.669 25.137z",
|
|
897
|
-
width: 100,
|
|
898
|
-
height: 100
|
|
899
|
-
};
|
|
900
|
-
const iconCircleArrowDown = {
|
|
901
|
-
path: "M50.046 83.676q1.767 0 2.907-1.14l29.526-29.526q1.197-1.197 1.197-2.907t-1.197-2.964l-5.928-5.928q-1.197-1.14-2.964-1.14t-2.907 1.14l-12.312 12.312l0-32.661q0-1.71-1.254-2.964t-2.907-1.254l-8.322 0q-1.71 0-2.964 1.254t-1.254 2.964l0 32.661l-12.312-12.312q-1.197-1.254-2.907-1.254t-2.907 1.254l-5.928 5.928q-1.197 1.197-1.197 2.964t1.197 2.907l29.469 29.526q1.197 1.14 2.964 1.14zm49.989-33.63q.057 13.623-6.669 25.137t-18.24 18.183-25.08 6.669-25.137-6.726q-11.514-6.726-18.183-18.183-6.726-11.571-6.726-25.137t6.726-25.08 18.24-18.24 25.08-6.669q13.566 0 25.08 6.726 11.514 6.669 18.24 18.183t6.669 25.137z",
|
|
902
|
-
width: 100,
|
|
903
|
-
height: 100
|
|
904
|
-
};
|
|
905
|
-
const iconCircleArrowUp = {
|
|
906
|
-
path: "M54.207 83.391q1.653 0 2.907-1.254t1.254-2.907l0-32.718l12.312 12.312q1.254 1.254 2.964 1.254t2.907-1.254l5.928-5.928q1.197-1.197 1.14-2.964 0-1.767-1.14-2.907l-29.526-29.526q-1.197-1.14-2.907-1.14t-2.964 1.14l-29.469 29.526q-1.197 1.254-1.197 2.964t1.197 2.907l5.928 5.928q1.197 1.197 2.907 1.197t2.907-1.197l12.312-12.312l0 32.718q0 1.653 1.254 2.907t2.964 1.254l8.322 0zm45.828-33.345q.057 13.623-6.669 25.137t-18.24 18.183-25.08 6.669-25.137-6.726q-11.514-6.726-18.183-18.183-6.726-11.571-6.726-25.137t6.726-25.08 18.24-18.24 25.08-6.669q13.566 0 25.08 6.726 11.514 6.669 18.24 18.183t6.669 25.137z",
|
|
907
|
-
width: 100,
|
|
908
|
-
height: 100
|
|
909
|
-
};
|
|
910
|
-
const iconCircleThin = {
|
|
911
|
-
path: "M50.046 8.322q-8.493 0-16.188 3.306-15.561 6.669-22.173 22.23-3.363 7.695-3.363 16.188t3.306 16.188 8.949 13.281q5.586 5.586 13.281 8.892t16.188 3.306 16.188-3.306 13.281-8.892 8.892-13.281 3.306-16.188-3.306-16.188-8.892-13.281-13.281-8.949q-7.695-3.306-16.188-3.306zm0 91.713q-13.623 0-25.137-6.726t-18.183-18.183q-6.726-11.571-6.726-25.137t6.726-25.08 18.24-18.24 25.08-6.669q13.566 0 25.08 6.726 11.514 6.669 18.24 18.183t6.726 25.137-6.726 25.137-18.24 18.126q-11.514 6.726-25.08 6.726z",
|
|
912
|
-
width: 100,
|
|
913
|
-
height: 99.944
|
|
914
|
-
};
|
|
915
|
-
const iconDesktop = {
|
|
916
|
-
path: "M94.208 52.119l0-43.746q0-.69-.506-1.15t-1.196-.506l-84.088 0q-.69 0-1.196.506t-.506 1.15l0 43.746q0 .69.506 1.196t1.196.506l84.088 0q.69 0 1.196-.506t.506-1.196zm6.716-43.746l0 57.224q0 3.45-2.484 5.934t-5.934 2.484l-28.566 0q0 3.128 2.53 7.774.828 1.61.828 2.622t-1.012 2.07q-1.012 1.012-2.346.966l-26.91 0q-1.38 0-2.392-1.012t-1.012-2.024q0-1.058 1.656-4.14t1.748-6.256l-28.612 0q-3.45 0-5.934-2.484t-2.484-5.934l0-57.224q0-3.45 2.484-5.934t5.934-2.438l84.088 0q3.45 0 5.98 2.438 2.438 2.484 2.438 5.934z",
|
|
917
|
-
width: 100,
|
|
918
|
-
height: 86.648
|
|
919
|
-
};
|
|
920
|
-
const iconDropdownArrow = {
|
|
921
|
-
path: "M9 9.8c0 .5.7 1.7 1.5 2.8 1.5 1.9 1.5 1.9 3 0C15.7 9.7 15.4 9 12 9c-1.6 0-3 .4-3 .8z",
|
|
922
|
-
width: 24,
|
|
923
|
-
height: 24
|
|
924
|
-
};
|
|
925
|
-
const iconExclamationSign = {
|
|
926
|
-
path: "M58.368 81.225l0-12.369q0-.912-.57-1.539t-1.425-.627l-12.54 0q-.855-.057-1.482.627t-.684 1.539l0 12.369q-.057.855.627 1.482t1.539.684l12.54 0q.855 0 1.425-.627t.57-1.539zm1.026-62.871q0-1.596-2.223-1.71l-14.307 0q-2.109 0-2.223 1.71l1.14 40.47q0 .627.627 1.14t1.539.456l12.084 0q.912-.057 1.539-.513t.684-1.083zm-9.348-18.354q13.566 0 25.08 6.726 11.514 6.669 18.24 18.183t6.726 25.137-6.726 25.137-18.24 18.183-25.08 6.669-25.137-6.726q-11.514-6.726-18.183-18.183-6.726-11.571-6.726-25.137t6.726-25.08 18.24-18.24 25.08-6.669z",
|
|
927
|
-
width: 100,
|
|
928
|
-
height: 99.944
|
|
929
|
-
};
|
|
930
|
-
// Grabbed from https://github.com/encharm/Font-Awesome-SVG-PNG
|
|
931
|
-
const iconGear = {
|
|
932
|
-
path: "M1152 896q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm512-109v222q0 12-8 23t-20 13l-185 28q-19 54-39 91 35 50 107 138 10 12 10 25t-9 23q-27 37-99 108t-94 71q-12 0-26-9l-138-108q-44 23-91 38-16 136-29 186-7 28-36 28h-222q-14 0-24.5-8.5t-11.5-21.5l-28-184q-49-16-90-37l-141 107q-10 9-25 9-14 0-25-11-126-114-165-168-7-10-7-23 0-12 8-23 15-21 51-66.5t54-70.5q-27-50-41-99l-183-27q-13-2-21-12.5t-8-23.5v-222q0-12 8-23t19-13l186-28q14-46 39-92-40-57-107-138-10-12-10-24 0-10 9-23 26-36 98.5-107.5t94.5-71.5q13 0 26 10l138 107q44-23 91-38 16-136 29-186 7-28 36-28h222q14 0 24.5 8.5t11.5 21.5l28 184q49 16 90 37l142-107q9-9 24-9 13 0 25 10 129 119 165 170 7 8 7 22 0 12-8 23-15 21-51 66.5t-54 70.5q26 50 41 98l183 28q13 2 21 12.5t8 23.5z",
|
|
933
|
-
width: 1792,
|
|
934
|
-
height: 1792
|
|
935
|
-
};
|
|
936
|
-
const iconMobilePhone = {
|
|
937
|
-
path: "M36.04 89.557q0-2.584-1.836-4.42t-4.42-1.836-4.352 1.836q-1.836 1.836-1.836 4.42t1.836 4.352 4.42 1.836q2.652-.068 4.42-1.836t1.768-4.352zm16.184-12.444l0-54.74q0-1.088-.748-1.768t-1.768-.68l-39.78 0q-1.088 0-1.768.748t-.68 1.7l0 54.74q0 1.02.748 1.768t1.7.68l39.78 0q1.02-.068 1.768-.748t.748-1.7zm-14.892-65.892q0-1.224-1.292-1.292l-12.444 0q-1.224.068-1.224 1.292t1.224 1.224l12.444 0q1.292 0 1.292-1.224zm22.372-1.292l0 79.628q0 3.944-2.992 6.936t-7.004 2.992l-39.78 0q-4.012 0-7.004-2.924-2.924-2.924-2.924-7.004l0-79.628q0-4.012 2.924-6.936t7.004-2.992l39.78 0q4.012-.068 7.004 2.924t2.992 7.004z",
|
|
938
|
-
width: 60.013,
|
|
939
|
-
height: 100
|
|
940
|
-
};
|
|
941
|
-
const iconOk = {
|
|
942
|
-
path: "M37.964 76.048q-2.576 0-4.368-1.792l-31.864-31.864q-1.792-1.792-1.792-4.368t1.792-4.368l8.736-8.68q1.792-1.792 4.368-1.792t4.312 1.792l18.816 18.872 42-42.056q1.792-1.792 4.368-1.792t4.312 1.792l8.736 8.736q1.792 1.792 1.792 4.368t-1.792 4.312l-55.048 55.048q-1.792 1.792-4.368 1.792z",
|
|
943
|
-
width: 100,
|
|
944
|
-
height: 76.637
|
|
945
|
-
};
|
|
946
|
-
const iconPlus = {
|
|
947
|
-
path: "M99.758 43.09l0 13.578q0 2.852-1.984 4.836t-4.836 1.984l-29.45 0l0 29.45q0 2.852-1.984 4.836t-4.836 1.984l-13.578 0q-2.852 0-4.836-1.984t-1.984-4.836l0-29.45l-29.45 0q-2.852 0-4.836-1.984t-1.984-4.836l0-13.578q0-2.852 1.984-4.836t4.836-1.984l29.45 0l0-29.45q0-2.852 1.984-4.836t4.836-1.984l13.578 0q2.852 0 4.836 1.984t1.984 4.836l0 29.45l29.45 0q2.852 0 4.836 1.984t1.984 4.836z",
|
|
948
|
-
width: 100,
|
|
949
|
-
height: 100
|
|
950
|
-
};
|
|
951
|
-
const iconRemove = {
|
|
952
|
-
path: "M100.464 80.808q0 3.404-2.368 5.772l-11.47 11.544q-2.368 2.368-5.772 2.368t-5.698-2.368l-24.864-24.864-24.864 24.864q-2.368 2.368-5.772 2.368t-5.772-2.368l-11.47-11.544q-2.368-2.368-2.368-5.772t2.368-5.698l24.864-24.864-24.864-24.864q-2.368-2.368-2.368-5.772t2.368-5.772l11.47-11.47q2.368-2.368 5.772-2.368t5.772 2.368l24.864 24.864 24.864-24.864q2.294-2.368 5.698-2.368t5.772 2.368l11.47 11.47q2.368 2.368 2.368 5.772t-2.368 5.772l-24.864 24.864 24.864 24.864q2.368 2.294 2.368 5.698z",
|
|
953
|
-
width: 100,
|
|
954
|
-
height: 100
|
|
955
|
-
};
|
|
956
|
-
const iconStar = {
|
|
957
|
-
path: "M15.1052249,9.55978547 L22.0028147,9.55978545 C23.6568673,9.55978545 23.9349557,10.3753626 22.6181351,11.3858845 L16.9943688,15.7015366 L19.2518801,22.8294455 C19.7526645,24.4106317 19.0984455,24.8825885 17.769353,23.8673293 L12.0490577,19.4977438 L6.5116497,23.8422153 C5.20921411,24.8640642 4.53299569,24.4067544 5.00266927,22.8160582 L7.10332364,15.7015366 L1.42794544,11.3634306 C0.110226041,10.3562014 0.383967283,9.54239221 2.0409646,9.54574013 L8.9924676,9.55978547 L11.1485117,2.72669438 C11.6458693,1.15043244 12.4548928,1.15900049 12.9494787,2.72669438 L15.1052249,9.55978547 Z",
|
|
958
|
-
width: 24,
|
|
959
|
-
height: 24
|
|
960
|
-
};
|
|
961
|
-
const iconTryAgain = {
|
|
962
|
-
path: "M3.74890556,17.9799506 C2.19251241,16.1970909 1.10103636,13.4971457 1.13090903,11.1491783 C1.17160478,7.95052637 4.01704076,0.865059407 11.7028044,0.865059407 C19.388568,0.865059407 22.3026521,7.35203035 22.3026521,11.5879453 C22.3026521,15.8238603 19.386629,20.5574509 13.6832464,21.7131548 L13.6757539,17.3722171 C17.0812986,16.2190517 18.331158,14.1944123 18.3311578,11.5879451 C18.3311574,8.16554692 15.6664205,5.03476549 11.7028048,5.20494205 C7.73918903,5.37511861 5.59244567,8.66930079 5.59244567,11.1491783 C5.59244567,12.9090077 6.11128139,14.1753512 6.93640437,15.3053215 L8.14052356,14.2949456 C8.98559348,13.5858477 9.6994861,13.9070448 9.73489556,15.0076413 L9.91284941,20.5388014 C9.94832683,21.6415103 9.09967118,22.3514475 8.02194403,22.1254594 L2.60571602,20.9897332 C1.5259204,20.7633114 1.34338662,19.9984207 2.18070755,19.295825 L3.74890556,17.9799506 Z",
|
|
963
|
-
width: 23,
|
|
964
|
-
height: 23
|
|
965
|
-
};
|
|
966
|
-
const iconTablet = {
|
|
967
|
-
path: "M45.322 90.706q0-1.86-1.302-3.224-1.364-1.364-3.224-1.364t-3.224 1.364-1.302 3.224q0 1.86 1.364 3.224 1.302 1.364 3.162 1.302 1.86.062 3.224-1.302t1.302-3.224zm27.218-11.346l0-68.014q0-.93-.682-1.612t-1.55-.682l-58.962 0q-.93 0-1.612.682t-.682 1.612l0 68.014q0 .93.682 1.612t1.612.62l58.962 0q.992-.062 1.612-.682t.62-1.55zm9.114-68.014l0 77.066q0 4.65-3.348 7.998t-7.998 3.348l-58.962 0q-4.65 0-7.998-3.348t-3.348-7.998l0-77.066q0-4.65 3.348-7.998t7.998-3.348l58.962 0q4.65 0 7.998 3.348t3.348 7.998z",
|
|
968
|
-
width: 81.852,
|
|
969
|
-
height: 100
|
|
970
|
-
};
|
|
971
|
-
const iconTrash = {
|
|
972
|
-
path: "M31.293 37.506q2.052 0 2.052 2.109l0 37.506q0 1.995-2.052 2.109l-4.218 0q-.912-.057-1.482-.627t-.57-1.482l0-37.506q0-2.109 2.052-2.109l4.218 0zm18.753 2.109l0 37.506q0 .912-.57 1.482t-1.539.627l-4.161 0q-1.995 0-2.109-2.109l0-37.506q.057-.912.627-1.482t1.482-.627l4.161 0q.969.057 1.539.627t.57 1.482zm14.592-2.109q2.052 0 2.052 2.109l0 37.506q0 1.995-2.052 2.109l-4.161 0q-.969-.057-1.539-.627t-.57-1.482l0-37.506q0-2.109 2.109-2.109l4.161 0zm10.431 49.248l0-61.731l-58.368 0l0 61.731q.057 2.679.969 3.819t1.083 1.14l54.207 0q.171 0 1.14-1.083t.969-3.876zm-43.776-70.11l29.184 0l-3.135-7.581q-.456-.57-1.14-.741l-20.634 0q-.627.114-1.083.741zm-31.293 2.109q0-1.995 2.109-2.109l20.121 0l4.56-10.83q.969-2.394 3.477-4.104 2.565-1.71 5.187-1.71l20.805 0q2.622 0 5.187 1.71t3.477 4.104l4.56 10.83l20.178 0q.912.057 1.482.627t.57 1.482l0 4.161q0 1.995-2.052 2.109l-6.27 0l0 61.731q0 5.415-3.078 9.348t-7.353 3.933l-54.207 0q-4.275 0-7.353-3.819t-3.078-9.177l0-62.016l-6.213 0q-.969 0-1.539-.57t-.57-1.539l0-4.161z",
|
|
973
|
-
width: 91.681,
|
|
974
|
-
height: 100
|
|
975
|
-
};
|
|
976
|
-
const iconUndo = {
|
|
977
|
-
path: "M10,6.6C10,7.2,9.8,8,9.3,9.1c0,0,0,0.1-0.1,0.1S9.2,9.3,9.2,9.4c0,0,0,0.1-0.1,0.1C9,9.6,9,9.6,8.9,9.6 c-0.1,0-0.1,0-0.1-0.1c0,0,0-0.1,0-0.1c0,0,0-0.1,0-0.1s0-0.1,0-0.1c0-0.3,0-0.5,0-0.7c0-0.4,0-0.7-0.1-1C8.6,7.1,8.5,6.9,8.4,6.7S8.2,6.3,8,6.1C7.8,5.9,7.6,5.8,7.4,5.7S6.9,5.5,6.7,5.5S6.1,5.4,5.8,5.4c-0.3,0-0.6,0-1,0H3.6v1.4c0,0.1,0,0.2-0.1,0.3C3.4,7.1,3.3,7.1,3.2,7.1C3.1,7.1,3,7.1,3,7L0.1,4.1C0,4.1,0,4,0,3.9s0-0.2,0.1-0.3L3,0.8C3,0.7,3.1,0.7,3.2,0.7c0.1,0,0.2,0,0.3,0.1C3.5,0.9,3.6,0.9,3.6,1v1.4h1.2c2.6,0,4.3,0.7,4.9,2.2C9.9,5.2,10,5.8,10,6.6z",
|
|
978
|
-
width: 10,
|
|
979
|
-
height: 10
|
|
980
|
-
};
|
|
981
|
-
const iconMinus = {
|
|
982
|
-
path: `M8,13 L16,13 C16.5522847,13 17,12.5522847 17,12 C17,11.4477153 16.5522847,11 16,11 L8,11 C7.44771525,11 7,11.4477153 7,12 C7,12.5522847 7.44771525,13 8,13 Z`,
|
|
983
|
-
width: 24,
|
|
984
|
-
height: 24
|
|
405
|
+
const useDependencies = () => {
|
|
406
|
+
const deps = React.useContext(DependenciesContext);
|
|
407
|
+
return deps;
|
|
985
408
|
};
|
|
986
409
|
|
|
987
|
-
var
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
iconCircle: iconCircle,
|
|
994
|
-
iconCircleArrowDown: iconCircleArrowDown,
|
|
995
|
-
iconCircleArrowUp: iconCircleArrowUp,
|
|
996
|
-
iconCircleThin: iconCircleThin,
|
|
997
|
-
iconDesktop: iconDesktop,
|
|
998
|
-
iconDropdownArrow: iconDropdownArrow,
|
|
999
|
-
iconExclamationSign: iconExclamationSign,
|
|
1000
|
-
iconGear: iconGear,
|
|
1001
|
-
iconMobilePhone: iconMobilePhone,
|
|
1002
|
-
iconOk: iconOk,
|
|
1003
|
-
iconPlus: iconPlus,
|
|
1004
|
-
iconRemove: iconRemove,
|
|
1005
|
-
iconStar: iconStar,
|
|
1006
|
-
iconTryAgain: iconTryAgain,
|
|
1007
|
-
iconTablet: iconTablet,
|
|
1008
|
-
iconTrash: iconTrash,
|
|
1009
|
-
iconUndo: iconUndo,
|
|
1010
|
-
iconMinus: iconMinus
|
|
410
|
+
var dependencies = /*#__PURE__*/Object.freeze({
|
|
411
|
+
__proto__: null,
|
|
412
|
+
setDependencies: setDependencies,
|
|
413
|
+
getDependencies: getDependencies,
|
|
414
|
+
DependenciesContext: DependenciesContext,
|
|
415
|
+
useDependencies: useDependencies
|
|
1011
416
|
});
|
|
1012
417
|
|
|
1013
418
|
// TODO(LP-11481): Change the primary API we use for logging in Perseus to use
|
|
@@ -1187,9 +592,9 @@ const propTypes = {
|
|
|
1187
592
|
};
|
|
1188
593
|
|
|
1189
594
|
var changeable = /*#__PURE__*/Object.freeze({
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
595
|
+
__proto__: null,
|
|
596
|
+
change: change,
|
|
597
|
+
propTypes: propTypes
|
|
1193
598
|
});
|
|
1194
599
|
|
|
1195
600
|
/* eslint-disable @khanacademy/ts-no-error-suppressions */
|
|
@@ -1531,6 +936,26 @@ const ClassNames = {
|
|
|
1531
936
|
MOBILE: "perseus-mobile"
|
|
1532
937
|
};
|
|
1533
938
|
|
|
939
|
+
/*
|
|
940
|
+
* A11y (Accessibility) style rules
|
|
941
|
+
* These are used to mark up areas on the site that should only be readable
|
|
942
|
+
* when using a screen reader.
|
|
943
|
+
*/
|
|
944
|
+
var a11y = StyleSheet.create({
|
|
945
|
+
// Make content only visible to screen readers.
|
|
946
|
+
// Both collegeboard.org and Bootstrap 3 use this exact implementation.
|
|
947
|
+
srOnly: {
|
|
948
|
+
border: 0,
|
|
949
|
+
clip: "rect(0,0,0,0)",
|
|
950
|
+
height: 1,
|
|
951
|
+
margin: -1,
|
|
952
|
+
overflow: "hidden",
|
|
953
|
+
padding: 0,
|
|
954
|
+
position: "absolute",
|
|
955
|
+
width: 1
|
|
956
|
+
}
|
|
957
|
+
});
|
|
958
|
+
|
|
1534
959
|
const KhanMath = {
|
|
1535
960
|
// Simplify formulas before display
|
|
1536
961
|
cleanMath: function (expr) {
|
|
@@ -2445,6 +1870,7 @@ const KhanAnswerTypes = {
|
|
|
2445
1870
|
}
|
|
2446
1871
|
};
|
|
2447
1872
|
|
|
1873
|
+
const ERROR_TITLE = i18n._("Oops!");
|
|
2448
1874
|
const ERROR_MESSAGE = i18n._("Sorry, I don't understand that!");
|
|
2449
1875
|
const insertBraces = value => {
|
|
2450
1876
|
// HACK(alex): Make sure that all LaTeX super/subscripts are wrapped
|
|
@@ -2479,53 +1905,48 @@ class Expression extends React.Component {
|
|
|
2479
1905
|
constructor(..._args) {
|
|
2480
1906
|
super(..._args);
|
|
2481
1907
|
this._isMounted = false;
|
|
2482
|
-
this.errorTimeout = null;
|
|
2483
1908
|
this.displayName = "Expression";
|
|
2484
1909
|
this.state = {
|
|
1910
|
+
invalid: false,
|
|
2485
1911
|
showErrorTooltip: false,
|
|
2486
|
-
|
|
1912
|
+
showErrorStyle: false
|
|
2487
1913
|
};
|
|
2488
1914
|
this.componentDidMount = () => {
|
|
1915
|
+
document.addEventListener("mousedown", this._handleMouseDown);
|
|
1916
|
+
|
|
2489
1917
|
// TODO(scottgrant): This is a hack to remove the deprecated call to
|
|
2490
1918
|
// this.isMounted() but is still considered an anti-pattern.
|
|
2491
1919
|
this._isMounted = true;
|
|
2492
1920
|
};
|
|
2493
1921
|
this.componentDidUpdate = prevProps => {
|
|
2494
1922
|
if (!_.isEqual(this.props.value, prevProps.value) || !_.isEqual(this.props.functions, prevProps.functions)) {
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
this.
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
this.errorTimeout = setTimeout(() => {
|
|
2510
|
-
const apiResult = this.props.apiOptions.onInputError(null,
|
|
2511
|
-
// reserved for some widget identifier
|
|
2512
|
-
this.props.value, ERROR_MESSAGE);
|
|
2513
|
-
if (apiResult !== false) {
|
|
2514
|
-
this.setState({
|
|
2515
|
-
showErrorTooltip: true
|
|
2516
|
-
});
|
|
2517
|
-
}
|
|
2518
|
-
}, 2000);
|
|
1923
|
+
this.setState({
|
|
1924
|
+
invalid: false,
|
|
1925
|
+
showErrorTooltip: false,
|
|
1926
|
+
showErrorStyle: false
|
|
1927
|
+
});
|
|
1928
|
+
if (!this.parse(this.props.value, this.props).parsed) {
|
|
1929
|
+
const apiResult = this.props.apiOptions.onInputError(null,
|
|
1930
|
+
// reserved for some widget identifier
|
|
1931
|
+
this.props.value, ERROR_MESSAGE);
|
|
1932
|
+
if (apiResult !== false) {
|
|
1933
|
+
this.setState({
|
|
1934
|
+
invalid: true
|
|
1935
|
+
});
|
|
1936
|
+
}
|
|
2519
1937
|
}
|
|
2520
1938
|
}
|
|
2521
1939
|
};
|
|
2522
1940
|
this.componentWillUnmount = () => {
|
|
2523
|
-
// TODO(jeff, CP-3128): Use Wonder Blocks Timing API.
|
|
2524
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
2525
|
-
// @ts-expect-error - TS2769 - No overload matches this call.
|
|
2526
|
-
clearTimeout(this.errorTimeout);
|
|
2527
1941
|
this._isMounted = false;
|
|
2528
1942
|
};
|
|
1943
|
+
this._handleMouseDown = () => {
|
|
1944
|
+
if (this._isMounted && this.state.showErrorTooltip) {
|
|
1945
|
+
this.setState({
|
|
1946
|
+
showErrorTooltip: false
|
|
1947
|
+
});
|
|
1948
|
+
}
|
|
1949
|
+
};
|
|
2529
1950
|
this.simpleValidate = (rubric, onInputError) => {
|
|
2530
1951
|
onInputError = onInputError || function () {};
|
|
2531
1952
|
const result = Expression.validate(this.getUserInput(), rubric, onInputError);
|
|
@@ -2552,7 +1973,8 @@ class Expression extends React.Component {
|
|
|
2552
1973
|
this.props.trackInteraction();
|
|
2553
1974
|
};
|
|
2554
1975
|
this._handleFocus = () => {
|
|
2555
|
-
|
|
1976
|
+
var _this$props$analytics;
|
|
1977
|
+
(_this$props$analytics = this.props.analytics) == null ? void 0 : _this$props$analytics.onAnalyticsEvent({
|
|
2556
1978
|
type: "perseus:expression-focused",
|
|
2557
1979
|
payload: null
|
|
2558
1980
|
});
|
|
@@ -2761,7 +2183,8 @@ class Expression extends React.Component {
|
|
|
2761
2183
|
this.refs.input.insert(keyPressed);
|
|
2762
2184
|
}
|
|
2763
2185
|
sendExpressionEvaluatedEvent(result) {
|
|
2764
|
-
|
|
2186
|
+
var _this$props$analytics2;
|
|
2187
|
+
(_this$props$analytics2 = this.props.analytics) == null ? void 0 : _this$props$analytics2.onAnalyticsEvent({
|
|
2765
2188
|
type: "perseus:expression-evaluated",
|
|
2766
2189
|
payload: {
|
|
2767
2190
|
result,
|
|
@@ -2770,6 +2193,7 @@ class Expression extends React.Component {
|
|
|
2770
2193
|
});
|
|
2771
2194
|
}
|
|
2772
2195
|
render() {
|
|
2196
|
+
var _this$props$keypadCon, _this$props$analytics3;
|
|
2773
2197
|
if (this.props.apiOptions.customKeypad) {
|
|
2774
2198
|
return /*#__PURE__*/React.createElement(KeypadInput
|
|
2775
2199
|
// eslint-disable-next-line react/no-string-refs
|
|
@@ -2792,47 +2216,27 @@ class Expression extends React.Component {
|
|
|
2792
2216
|
onBlur: this._handleBlur
|
|
2793
2217
|
});
|
|
2794
2218
|
}
|
|
2795
|
-
// TODO(alex): Style this tooltip to be more consistent with other
|
|
2796
|
-
// tooltips on the site; align to left middle (once possible)
|
|
2797
|
-
const errorTooltip = /*#__PURE__*/React.createElement("span", {
|
|
2798
|
-
className: "error-tooltip",
|
|
2799
|
-
role: "tooltip"
|
|
2800
|
-
}, /*#__PURE__*/React.createElement(Tooltip, {
|
|
2801
|
-
className: "error-text-container",
|
|
2802
|
-
horizontalPosition: HorizontalDirection.Right,
|
|
2803
|
-
horizontalAlign: HorizontalDirection.Left,
|
|
2804
|
-
verticalPosition: VerticalDirection.Top,
|
|
2805
|
-
arrowSize: 10,
|
|
2806
|
-
borderColor: "#fcc335",
|
|
2807
|
-
show: this.state.showErrorText
|
|
2808
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
2809
|
-
className: "error-icon",
|
|
2810
|
-
"data-test-id": "test-error-icon",
|
|
2811
|
-
onMouseEnter: () => {
|
|
2812
|
-
this.setState({
|
|
2813
|
-
showErrorText: true
|
|
2814
|
-
});
|
|
2815
|
-
},
|
|
2816
|
-
onMouseLeave: () => {
|
|
2817
|
-
this.setState({
|
|
2818
|
-
showErrorText: false
|
|
2819
|
-
});
|
|
2820
|
-
},
|
|
2821
|
-
onClick: () => {
|
|
2822
|
-
// TODO(alex): Better error feedback for mobile
|
|
2823
|
-
this.setState({
|
|
2824
|
-
showErrorText: !this.state.showErrorText
|
|
2825
|
-
});
|
|
2826
|
-
}
|
|
2827
|
-
}, /*#__PURE__*/React.createElement(InlineIcon, iconExclamationSign)), /*#__PURE__*/React.createElement("div", {
|
|
2828
|
-
className: "error-text"
|
|
2829
|
-
}, ERROR_MESSAGE)));
|
|
2830
2219
|
const className = classNames({
|
|
2831
2220
|
"perseus-widget-expression": true,
|
|
2832
2221
|
"show-error-tooltip": this.state.showErrorTooltip
|
|
2833
2222
|
});
|
|
2834
2223
|
return /*#__PURE__*/React.createElement("div", {
|
|
2835
|
-
className: className
|
|
2224
|
+
className: className,
|
|
2225
|
+
onBlur: () => this.state.invalid && this.setState({
|
|
2226
|
+
showErrorTooltip: true,
|
|
2227
|
+
showErrorStyle: true
|
|
2228
|
+
}),
|
|
2229
|
+
onFocus: () => this.setState({
|
|
2230
|
+
showErrorTooltip: false
|
|
2231
|
+
})
|
|
2232
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
2233
|
+
style: a11y.srOnly,
|
|
2234
|
+
role: "alert"
|
|
2235
|
+
}, this.state.showErrorTooltip && ERROR_TITLE + " " + ERROR_MESSAGE), /*#__PURE__*/React.createElement(Tooltip$1, {
|
|
2236
|
+
forceAnchorFocusivity: false,
|
|
2237
|
+
opened: this.state.showErrorTooltip,
|
|
2238
|
+
title: ERROR_TITLE,
|
|
2239
|
+
content: ERROR_MESSAGE
|
|
2836
2240
|
}, /*#__PURE__*/React.createElement(MathInput
|
|
2837
2241
|
// eslint-disable-next-line react/no-string-refs
|
|
2838
2242
|
, {
|
|
@@ -2841,11 +2245,15 @@ class Expression extends React.Component {
|
|
|
2841
2245
|
value: this.props.value,
|
|
2842
2246
|
onChange: this.changeAndTrack,
|
|
2843
2247
|
convertDotToTimes: this.props.times,
|
|
2844
|
-
buttonsVisible: this.props.buttonsVisible || "focused",
|
|
2845
2248
|
buttonSets: this.props.buttonSets,
|
|
2846
2249
|
onFocus: this._handleFocus,
|
|
2847
|
-
onBlur: this._handleBlur
|
|
2848
|
-
|
|
2250
|
+
onBlur: this._handleBlur,
|
|
2251
|
+
hasError: this.state.showErrorStyle,
|
|
2252
|
+
extraKeys: (_this$props$keypadCon = this.props.keypadConfiguration) == null ? void 0 : _this$props$keypadCon.extraKeys,
|
|
2253
|
+
analytics: (_this$props$analytics3 = this.props.analytics) != null ? _this$props$analytics3 : {
|
|
2254
|
+
onAnalyticsEvent: async function () {}
|
|
2255
|
+
}
|
|
2256
|
+
})));
|
|
2849
2257
|
}
|
|
2850
2258
|
}
|
|
2851
2259
|
|
|
@@ -2888,11 +2296,18 @@ const keypadConfigurationForProps = widgetOptions => {
|
|
|
2888
2296
|
// and Theta, so we special-case.
|
|
2889
2297
|
const isGreek = symbol => symbol === "pi" || symbol === "theta";
|
|
2890
2298
|
const toKey = symbol => isGreek(symbol) ? symbol.toUpperCase() : symbol;
|
|
2299
|
+
const isKey = key => KeyArray.includes(key);
|
|
2891
2300
|
for (const variable of expr.getVars()) {
|
|
2892
|
-
|
|
2301
|
+
const maybeKey = toKey(variable);
|
|
2302
|
+
if (isKey(maybeKey)) {
|
|
2303
|
+
uniqueExtraVariables[maybeKey] = true;
|
|
2304
|
+
}
|
|
2893
2305
|
}
|
|
2894
2306
|
for (const constant of expr.getConsts()) {
|
|
2895
|
-
|
|
2307
|
+
const maybeKey = toKey(constant);
|
|
2308
|
+
if (isKey(maybeKey)) {
|
|
2309
|
+
uniqueExtraConstants[maybeKey] = true;
|
|
2310
|
+
}
|
|
2896
2311
|
}
|
|
2897
2312
|
}
|
|
2898
2313
|
}
|
|
@@ -4352,60 +3767,60 @@ const articleMaxWidthInPx = 688;
|
|
|
4352
3767
|
const articleMaxWidthTableInPx = 512;
|
|
4353
3768
|
|
|
4354
3769
|
var constants$1 = /*#__PURE__*/Object.freeze({
|
|
4355
|
-
|
|
4356
|
-
|
|
4357
|
-
|
|
4358
|
-
|
|
4359
|
-
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
|
|
4366
|
-
|
|
4367
|
-
|
|
4368
|
-
|
|
4369
|
-
|
|
4370
|
-
|
|
4371
|
-
|
|
4372
|
-
|
|
4373
|
-
|
|
4374
|
-
|
|
4375
|
-
|
|
4376
|
-
|
|
4377
|
-
|
|
4378
|
-
|
|
4379
|
-
|
|
4380
|
-
|
|
4381
|
-
|
|
4382
|
-
|
|
4383
|
-
|
|
4384
|
-
|
|
4385
|
-
|
|
4386
|
-
|
|
4387
|
-
|
|
4388
|
-
|
|
4389
|
-
|
|
4390
|
-
|
|
4391
|
-
|
|
4392
|
-
|
|
4393
|
-
|
|
4394
|
-
|
|
4395
|
-
|
|
4396
|
-
|
|
4397
|
-
|
|
4398
|
-
|
|
4399
|
-
|
|
4400
|
-
|
|
4401
|
-
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
|
|
4405
|
-
|
|
4406
|
-
|
|
4407
|
-
|
|
4408
|
-
|
|
3770
|
+
__proto__: null,
|
|
3771
|
+
baseFontFamily: baseFontFamily$1,
|
|
3772
|
+
boldFontFamily: boldFontFamily,
|
|
3773
|
+
green: green$1,
|
|
3774
|
+
kaGreen: kaGreen$1,
|
|
3775
|
+
blue: blue$1,
|
|
3776
|
+
gray: gray$1,
|
|
3777
|
+
red: red$1,
|
|
3778
|
+
grayLight: grayLight$1,
|
|
3779
|
+
grayLighter: grayLighter$1,
|
|
3780
|
+
learnstormBlue: learnstormBlue$1,
|
|
3781
|
+
white: white$1,
|
|
3782
|
+
gray98: gray98,
|
|
3783
|
+
gray97: gray97,
|
|
3784
|
+
gray95: gray95,
|
|
3785
|
+
gray90: gray90,
|
|
3786
|
+
gray85: gray85,
|
|
3787
|
+
gray76: gray76,
|
|
3788
|
+
gray68: gray68,
|
|
3789
|
+
gray41: gray41,
|
|
3790
|
+
gray25: gray25,
|
|
3791
|
+
gray17: gray17,
|
|
3792
|
+
black: black$1,
|
|
3793
|
+
warning1: warning1,
|
|
3794
|
+
warning3: warning3,
|
|
3795
|
+
pureSmMin: pureSmMin$2,
|
|
3796
|
+
pureMdMin: pureMdMin$2,
|
|
3797
|
+
pureLgMin: pureLgMin$2,
|
|
3798
|
+
pureXlMin: pureXlMin$2,
|
|
3799
|
+
pureXsMax: pureXsMax$2,
|
|
3800
|
+
pureSmMax: pureSmMax$2,
|
|
3801
|
+
pureMdMax: pureMdMax$2,
|
|
3802
|
+
pureLgMax: pureLgMax$2,
|
|
3803
|
+
tableBackgroundAccent: tableBackgroundAccent$1,
|
|
3804
|
+
zIndexScratchPad: zIndexScratchPad,
|
|
3805
|
+
zIndexAboveScratchpad: zIndexAboveScratchpad$1,
|
|
3806
|
+
zIndexInteractiveComponent: zIndexInteractiveComponent$1,
|
|
3807
|
+
zIndexCurrentlyDragging: zIndexCurrentlyDragging,
|
|
3808
|
+
zIndexCalculator: zIndexCalculator,
|
|
3809
|
+
phoneMargin: phoneMargin,
|
|
3810
|
+
negativePhoneMargin: negativePhoneMargin,
|
|
3811
|
+
hintBorderWidth: hintBorderWidth,
|
|
3812
|
+
baseUnitPx: baseUnitPx,
|
|
3813
|
+
interactiveSizes: interactiveSizes$1,
|
|
3814
|
+
circleSize: circleSize$1,
|
|
3815
|
+
radioMarginWidth: radioMarginWidth$1,
|
|
3816
|
+
warningColor: warningColor,
|
|
3817
|
+
warningColorHover: warningColorHover,
|
|
3818
|
+
warningColorActive: warningColorActive,
|
|
3819
|
+
publishBlockingErrorColor: publishBlockingErrorColor,
|
|
3820
|
+
radioBorderColor: radioBorderColor$1,
|
|
3821
|
+
checkedColor: checkedColor$1,
|
|
3822
|
+
articleMaxWidthInPx: articleMaxWidthInPx,
|
|
3823
|
+
articleMaxWidthTableInPx: articleMaxWidthTableInPx
|
|
4409
3824
|
});
|
|
4410
3825
|
|
|
4411
3826
|
/**
|
|
@@ -14959,6 +14374,196 @@ _.extend(MovableLine$4.prototype, {
|
|
|
14959
14374
|
}
|
|
14960
14375
|
});
|
|
14961
14376
|
|
|
14377
|
+
/**
|
|
14378
|
+
* A stripped version of Icon.jsx from webapp. Takes an SVG icon and renders it
|
|
14379
|
+
* inline like Font Awesome did.
|
|
14380
|
+
*
|
|
14381
|
+
* If you are looking for an icon that we've used before you should look in
|
|
14382
|
+
* webapp's `icon-paths.js` which is a reference file for all the SVG paths
|
|
14383
|
+
* that we've used. You'll need to copy the object from that file into
|
|
14384
|
+
* whichever file you're using the icon and explicitly pass it in to the
|
|
14385
|
+
* <InlineIcon/> React component.
|
|
14386
|
+
*
|
|
14387
|
+
* We assume that the viewBox is cropped and aligned to (0, 0), but icons can
|
|
14388
|
+
* be defined differently. At some point we might want to add these attributes
|
|
14389
|
+
* to `icon-paths.js`, but for now this is a fairly safe assumption.
|
|
14390
|
+
*
|
|
14391
|
+
* Sample usage:
|
|
14392
|
+
*
|
|
14393
|
+
* const editIcon = {
|
|
14394
|
+
* path: "M41.209 53.753l5.39 0l0 5.39l3.136 0l6.468-6.517-8.477-8.526-6.517 6.517l0 3.136zm33.173-34.937q-.882-.882-1.862.049l-19.6 19.6q-.931.98-.049 1.862t1.862-.049l19.6-19.6q.931-.98.049-1.862zm-38.563 45.668l0-16.121l37.632-37.632 16.17 16.121-37.632 37.632l-16.17 0zm43.022-12.397l0 10.633q-.049 6.713-4.753 11.417t-11.368 4.704l-46.599 0q-6.713 0-11.417-4.753t-4.704-11.368l0-46.599q0-6.664 4.753-11.417t11.368-4.704l46.599 0q3.528 0 6.566 1.372.833.392.98 1.323t-.49 1.617l-2.744 2.744q-.784.784-1.96.441t-2.352-.343l-46.599 0q-3.675 0-6.321 2.646t-2.646 6.321l0 46.599q0 3.675 2.646 6.321t6.321 2.646l46.599 0q3.675 0 6.321-2.646t2.646-6.321l0-7.056q0-.735.49-1.225l3.577-3.577q.833-.833 1.96-.392t1.127 1.617zm7.203-51.646q2.254 0 3.773 1.568l8.526 8.526q1.568 1.568 1.568 3.822t-1.568 3.773l-5.145 5.145-16.121-16.121 5.145-5.145q1.568-1.568 3.822-1.568z",
|
|
14395
|
+
* width: 100,
|
|
14396
|
+
* height: 78.912,
|
|
14397
|
+
* };
|
|
14398
|
+
* <InlineIcon {...editIcon} />
|
|
14399
|
+
*
|
|
14400
|
+
*/
|
|
14401
|
+
const InlineIcon = ({
|
|
14402
|
+
path,
|
|
14403
|
+
width,
|
|
14404
|
+
height,
|
|
14405
|
+
style: _style = {},
|
|
14406
|
+
title
|
|
14407
|
+
}) => /*#__PURE__*/React.createElement("svg", {
|
|
14408
|
+
role: "img",
|
|
14409
|
+
"aria-hidden": !title,
|
|
14410
|
+
style: _extends({
|
|
14411
|
+
verticalAlign: "middle"
|
|
14412
|
+
}, _style),
|
|
14413
|
+
width: `${width / height}em`,
|
|
14414
|
+
height: "1em",
|
|
14415
|
+
viewBox: `0 0 ${width} ${height}`
|
|
14416
|
+
}, !!title && /*#__PURE__*/React.createElement("title", null, title), /*#__PURE__*/React.createElement("path", {
|
|
14417
|
+
d: path,
|
|
14418
|
+
fill: "currentColor"
|
|
14419
|
+
}));
|
|
14420
|
+
|
|
14421
|
+
/**
|
|
14422
|
+
* Icon paths to be used with `inline-icon.jsx`.
|
|
14423
|
+
*
|
|
14424
|
+
* These paths are taken directly from webapp's `icon-paths.js`. Unlike the
|
|
14425
|
+
* webapp equivalent, these can be directly required within Perseus files since
|
|
14426
|
+
* this is all bundled together anyway.
|
|
14427
|
+
*/
|
|
14428
|
+
|
|
14429
|
+
const iconCheck = {
|
|
14430
|
+
path: `M8.70710678,12.2928932 C8.31658249,11.9023689 7.68341751,11.9023689 7.29289322,12.2928932 C6.90236893,12.6834175 6.90236893,13.3165825 7.29289322,13.7071068 L9.82842712,16.2426407 C10.2207367,16.6349502 10.8574274,16.6328935 11.2471942,16.2380576 L16.7116603,10.7025237 C17.0996535,10.3094846 17.0955629,9.67633279 16.7025237,9.28833966 C16.3094846,8.90034653 15.6763328,8.90443714 15.2883397,9.29747629 L10.5309507,14.1167372 L8.70710678,12.2928932 Z`,
|
|
14431
|
+
width: 24,
|
|
14432
|
+
height: 24
|
|
14433
|
+
};
|
|
14434
|
+
const iconCheckMedium = {
|
|
14435
|
+
path: "M6.072 10.4l6.175-7.058a1 1 0 1 1 1.506 1.317L6.769 12.64a1 1 0 0 1-1.55-.054L2.203 8.604a1 1 0 1 1 1.594-1.208L6.072 10.4z",
|
|
14436
|
+
width: 16,
|
|
14437
|
+
height: 16
|
|
14438
|
+
};
|
|
14439
|
+
const iconChevronDown = {
|
|
14440
|
+
path: "M99.669 13.048q0 3.36-2.352 5.712l-41.664 41.664q-2.408 2.408-5.88 2.408t-5.712-2.408l-41.664-41.664q-2.408-2.24-2.408-5.712t2.408-5.88l4.76-4.816q2.52-2.352 5.88-2.352t5.656 2.352l31.136 31.136 31.08-31.136q2.352-2.352 5.712-2.352t5.88 2.352l4.816 4.816q2.352 2.52 2.352 5.88z",
|
|
14441
|
+
width: 100,
|
|
14442
|
+
height: 63.034
|
|
14443
|
+
};
|
|
14444
|
+
const iconChevronRight = {
|
|
14445
|
+
path: "M62.808 49.728q0 3.36-2.352 5.88l-41.72 41.664q-2.352 2.408-5.768 2.408t-5.768-2.408l-4.872-4.76q-2.352-2.52-2.352-5.88t2.352-5.712l31.08-31.136-31.08-31.024q-2.352-2.52-2.352-5.88t2.352-5.712l4.872-4.76q2.296-2.408 5.768-2.408t5.768 2.408l41.72 41.664q2.352 2.296 2.352 5.656z",
|
|
14446
|
+
width: 63.034,
|
|
14447
|
+
height: 100
|
|
14448
|
+
};
|
|
14449
|
+
const iconCircle = {
|
|
14450
|
+
path: "M100.035 50.046q.057 13.623-6.669 25.137t-18.24 18.183-25.08 6.669-25.137-6.726q-11.514-6.726-18.183-18.183-6.726-11.571-6.726-25.137t6.726-25.08 18.24-18.24 25.08-6.669q13.566 0 25.08 6.726 11.514 6.669 18.24 18.183t6.669 25.137z",
|
|
14451
|
+
width: 100,
|
|
14452
|
+
height: 100
|
|
14453
|
+
};
|
|
14454
|
+
const iconCircleArrowDown = {
|
|
14455
|
+
path: "M50.046 83.676q1.767 0 2.907-1.14l29.526-29.526q1.197-1.197 1.197-2.907t-1.197-2.964l-5.928-5.928q-1.197-1.14-2.964-1.14t-2.907 1.14l-12.312 12.312l0-32.661q0-1.71-1.254-2.964t-2.907-1.254l-8.322 0q-1.71 0-2.964 1.254t-1.254 2.964l0 32.661l-12.312-12.312q-1.197-1.254-2.907-1.254t-2.907 1.254l-5.928 5.928q-1.197 1.197-1.197 2.964t1.197 2.907l29.469 29.526q1.197 1.14 2.964 1.14zm49.989-33.63q.057 13.623-6.669 25.137t-18.24 18.183-25.08 6.669-25.137-6.726q-11.514-6.726-18.183-18.183-6.726-11.571-6.726-25.137t6.726-25.08 18.24-18.24 25.08-6.669q13.566 0 25.08 6.726 11.514 6.669 18.24 18.183t6.669 25.137z",
|
|
14456
|
+
width: 100,
|
|
14457
|
+
height: 100
|
|
14458
|
+
};
|
|
14459
|
+
const iconCircleArrowUp = {
|
|
14460
|
+
path: "M54.207 83.391q1.653 0 2.907-1.254t1.254-2.907l0-32.718l12.312 12.312q1.254 1.254 2.964 1.254t2.907-1.254l5.928-5.928q1.197-1.197 1.14-2.964 0-1.767-1.14-2.907l-29.526-29.526q-1.197-1.14-2.907-1.14t-2.964 1.14l-29.469 29.526q-1.197 1.254-1.197 2.964t1.197 2.907l5.928 5.928q1.197 1.197 2.907 1.197t2.907-1.197l12.312-12.312l0 32.718q0 1.653 1.254 2.907t2.964 1.254l8.322 0zm45.828-33.345q.057 13.623-6.669 25.137t-18.24 18.183-25.08 6.669-25.137-6.726q-11.514-6.726-18.183-18.183-6.726-11.571-6.726-25.137t6.726-25.08 18.24-18.24 25.08-6.669q13.566 0 25.08 6.726 11.514 6.669 18.24 18.183t6.669 25.137z",
|
|
14461
|
+
width: 100,
|
|
14462
|
+
height: 100
|
|
14463
|
+
};
|
|
14464
|
+
const iconCircleThin = {
|
|
14465
|
+
path: "M50.046 8.322q-8.493 0-16.188 3.306-15.561 6.669-22.173 22.23-3.363 7.695-3.363 16.188t3.306 16.188 8.949 13.281q5.586 5.586 13.281 8.892t16.188 3.306 16.188-3.306 13.281-8.892 8.892-13.281 3.306-16.188-3.306-16.188-8.892-13.281-13.281-8.949q-7.695-3.306-16.188-3.306zm0 91.713q-13.623 0-25.137-6.726t-18.183-18.183q-6.726-11.571-6.726-25.137t6.726-25.08 18.24-18.24 25.08-6.669q13.566 0 25.08 6.726 11.514 6.669 18.24 18.183t6.726 25.137-6.726 25.137-18.24 18.126q-11.514 6.726-25.08 6.726z",
|
|
14466
|
+
width: 100,
|
|
14467
|
+
height: 99.944
|
|
14468
|
+
};
|
|
14469
|
+
const iconDesktop = {
|
|
14470
|
+
path: "M94.208 52.119l0-43.746q0-.69-.506-1.15t-1.196-.506l-84.088 0q-.69 0-1.196.506t-.506 1.15l0 43.746q0 .69.506 1.196t1.196.506l84.088 0q.69 0 1.196-.506t.506-1.196zm6.716-43.746l0 57.224q0 3.45-2.484 5.934t-5.934 2.484l-28.566 0q0 3.128 2.53 7.774.828 1.61.828 2.622t-1.012 2.07q-1.012 1.012-2.346.966l-26.91 0q-1.38 0-2.392-1.012t-1.012-2.024q0-1.058 1.656-4.14t1.748-6.256l-28.612 0q-3.45 0-5.934-2.484t-2.484-5.934l0-57.224q0-3.45 2.484-5.934t5.934-2.438l84.088 0q3.45 0 5.98 2.438 2.438 2.484 2.438 5.934z",
|
|
14471
|
+
width: 100,
|
|
14472
|
+
height: 86.648
|
|
14473
|
+
};
|
|
14474
|
+
const iconDropdownArrow = {
|
|
14475
|
+
path: "M9 9.8c0 .5.7 1.7 1.5 2.8 1.5 1.9 1.5 1.9 3 0C15.7 9.7 15.4 9 12 9c-1.6 0-3 .4-3 .8z",
|
|
14476
|
+
width: 24,
|
|
14477
|
+
height: 24
|
|
14478
|
+
};
|
|
14479
|
+
const iconExclamationSign = {
|
|
14480
|
+
path: "M58.368 81.225l0-12.369q0-.912-.57-1.539t-1.425-.627l-12.54 0q-.855-.057-1.482.627t-.684 1.539l0 12.369q-.057.855.627 1.482t1.539.684l12.54 0q.855 0 1.425-.627t.57-1.539zm1.026-62.871q0-1.596-2.223-1.71l-14.307 0q-2.109 0-2.223 1.71l1.14 40.47q0 .627.627 1.14t1.539.456l12.084 0q.912-.057 1.539-.513t.684-1.083zm-9.348-18.354q13.566 0 25.08 6.726 11.514 6.669 18.24 18.183t6.726 25.137-6.726 25.137-18.24 18.183-25.08 6.669-25.137-6.726q-11.514-6.726-18.183-18.183-6.726-11.571-6.726-25.137t6.726-25.08 18.24-18.24 25.08-6.669z",
|
|
14481
|
+
width: 100,
|
|
14482
|
+
height: 99.944
|
|
14483
|
+
};
|
|
14484
|
+
// Grabbed from https://github.com/encharm/Font-Awesome-SVG-PNG
|
|
14485
|
+
const iconGear = {
|
|
14486
|
+
path: "M1152 896q0-106-75-181t-181-75-181 75-75 181 75 181 181 75 181-75 75-181zm512-109v222q0 12-8 23t-20 13l-185 28q-19 54-39 91 35 50 107 138 10 12 10 25t-9 23q-27 37-99 108t-94 71q-12 0-26-9l-138-108q-44 23-91 38-16 136-29 186-7 28-36 28h-222q-14 0-24.5-8.5t-11.5-21.5l-28-184q-49-16-90-37l-141 107q-10 9-25 9-14 0-25-11-126-114-165-168-7-10-7-23 0-12 8-23 15-21 51-66.5t54-70.5q-27-50-41-99l-183-27q-13-2-21-12.5t-8-23.5v-222q0-12 8-23t19-13l186-28q14-46 39-92-40-57-107-138-10-12-10-24 0-10 9-23 26-36 98.5-107.5t94.5-71.5q13 0 26 10l138 107q44-23 91-38 16-136 29-186 7-28 36-28h222q14 0 24.5 8.5t11.5 21.5l28 184q49 16 90 37l142-107q9-9 24-9 13 0 25 10 129 119 165 170 7 8 7 22 0 12-8 23-15 21-51 66.5t-54 70.5q26 50 41 98l183 28q13 2 21 12.5t8 23.5z",
|
|
14487
|
+
width: 1792,
|
|
14488
|
+
height: 1792
|
|
14489
|
+
};
|
|
14490
|
+
const iconMobilePhone = {
|
|
14491
|
+
path: "M36.04 89.557q0-2.584-1.836-4.42t-4.42-1.836-4.352 1.836q-1.836 1.836-1.836 4.42t1.836 4.352 4.42 1.836q2.652-.068 4.42-1.836t1.768-4.352zm16.184-12.444l0-54.74q0-1.088-.748-1.768t-1.768-.68l-39.78 0q-1.088 0-1.768.748t-.68 1.7l0 54.74q0 1.02.748 1.768t1.7.68l39.78 0q1.02-.068 1.768-.748t.748-1.7zm-14.892-65.892q0-1.224-1.292-1.292l-12.444 0q-1.224.068-1.224 1.292t1.224 1.224l12.444 0q1.292 0 1.292-1.224zm22.372-1.292l0 79.628q0 3.944-2.992 6.936t-7.004 2.992l-39.78 0q-4.012 0-7.004-2.924-2.924-2.924-2.924-7.004l0-79.628q0-4.012 2.924-6.936t7.004-2.992l39.78 0q4.012-.068 7.004 2.924t2.992 7.004z",
|
|
14492
|
+
width: 60.013,
|
|
14493
|
+
height: 100
|
|
14494
|
+
};
|
|
14495
|
+
const iconOk = {
|
|
14496
|
+
path: "M37.964 76.048q-2.576 0-4.368-1.792l-31.864-31.864q-1.792-1.792-1.792-4.368t1.792-4.368l8.736-8.68q1.792-1.792 4.368-1.792t4.312 1.792l18.816 18.872 42-42.056q1.792-1.792 4.368-1.792t4.312 1.792l8.736 8.736q1.792 1.792 1.792 4.368t-1.792 4.312l-55.048 55.048q-1.792 1.792-4.368 1.792z",
|
|
14497
|
+
width: 100,
|
|
14498
|
+
height: 76.637
|
|
14499
|
+
};
|
|
14500
|
+
const iconPlus = {
|
|
14501
|
+
path: "M99.758 43.09l0 13.578q0 2.852-1.984 4.836t-4.836 1.984l-29.45 0l0 29.45q0 2.852-1.984 4.836t-4.836 1.984l-13.578 0q-2.852 0-4.836-1.984t-1.984-4.836l0-29.45l-29.45 0q-2.852 0-4.836-1.984t-1.984-4.836l0-13.578q0-2.852 1.984-4.836t4.836-1.984l29.45 0l0-29.45q0-2.852 1.984-4.836t4.836-1.984l13.578 0q2.852 0 4.836 1.984t1.984 4.836l0 29.45l29.45 0q2.852 0 4.836 1.984t1.984 4.836z",
|
|
14502
|
+
width: 100,
|
|
14503
|
+
height: 100
|
|
14504
|
+
};
|
|
14505
|
+
const iconRemove = {
|
|
14506
|
+
path: "M100.464 80.808q0 3.404-2.368 5.772l-11.47 11.544q-2.368 2.368-5.772 2.368t-5.698-2.368l-24.864-24.864-24.864 24.864q-2.368 2.368-5.772 2.368t-5.772-2.368l-11.47-11.544q-2.368-2.368-2.368-5.772t2.368-5.698l24.864-24.864-24.864-24.864q-2.368-2.368-2.368-5.772t2.368-5.772l11.47-11.47q2.368-2.368 5.772-2.368t5.772 2.368l24.864 24.864 24.864-24.864q2.294-2.368 5.698-2.368t5.772 2.368l11.47 11.47q2.368 2.368 2.368 5.772t-2.368 5.772l-24.864 24.864 24.864 24.864q2.368 2.294 2.368 5.698z",
|
|
14507
|
+
width: 100,
|
|
14508
|
+
height: 100
|
|
14509
|
+
};
|
|
14510
|
+
const iconStar = {
|
|
14511
|
+
path: "M15.1052249,9.55978547 L22.0028147,9.55978545 C23.6568673,9.55978545 23.9349557,10.3753626 22.6181351,11.3858845 L16.9943688,15.7015366 L19.2518801,22.8294455 C19.7526645,24.4106317 19.0984455,24.8825885 17.769353,23.8673293 L12.0490577,19.4977438 L6.5116497,23.8422153 C5.20921411,24.8640642 4.53299569,24.4067544 5.00266927,22.8160582 L7.10332364,15.7015366 L1.42794544,11.3634306 C0.110226041,10.3562014 0.383967283,9.54239221 2.0409646,9.54574013 L8.9924676,9.55978547 L11.1485117,2.72669438 C11.6458693,1.15043244 12.4548928,1.15900049 12.9494787,2.72669438 L15.1052249,9.55978547 Z",
|
|
14512
|
+
width: 24,
|
|
14513
|
+
height: 24
|
|
14514
|
+
};
|
|
14515
|
+
const iconTryAgain = {
|
|
14516
|
+
path: "M3.74890556,17.9799506 C2.19251241,16.1970909 1.10103636,13.4971457 1.13090903,11.1491783 C1.17160478,7.95052637 4.01704076,0.865059407 11.7028044,0.865059407 C19.388568,0.865059407 22.3026521,7.35203035 22.3026521,11.5879453 C22.3026521,15.8238603 19.386629,20.5574509 13.6832464,21.7131548 L13.6757539,17.3722171 C17.0812986,16.2190517 18.331158,14.1944123 18.3311578,11.5879451 C18.3311574,8.16554692 15.6664205,5.03476549 11.7028048,5.20494205 C7.73918903,5.37511861 5.59244567,8.66930079 5.59244567,11.1491783 C5.59244567,12.9090077 6.11128139,14.1753512 6.93640437,15.3053215 L8.14052356,14.2949456 C8.98559348,13.5858477 9.6994861,13.9070448 9.73489556,15.0076413 L9.91284941,20.5388014 C9.94832683,21.6415103 9.09967118,22.3514475 8.02194403,22.1254594 L2.60571602,20.9897332 C1.5259204,20.7633114 1.34338662,19.9984207 2.18070755,19.295825 L3.74890556,17.9799506 Z",
|
|
14517
|
+
width: 23,
|
|
14518
|
+
height: 23
|
|
14519
|
+
};
|
|
14520
|
+
const iconTablet = {
|
|
14521
|
+
path: "M45.322 90.706q0-1.86-1.302-3.224-1.364-1.364-3.224-1.364t-3.224 1.364-1.302 3.224q0 1.86 1.364 3.224 1.302 1.364 3.162 1.302 1.86.062 3.224-1.302t1.302-3.224zm27.218-11.346l0-68.014q0-.93-.682-1.612t-1.55-.682l-58.962 0q-.93 0-1.612.682t-.682 1.612l0 68.014q0 .93.682 1.612t1.612.62l58.962 0q.992-.062 1.612-.682t.62-1.55zm9.114-68.014l0 77.066q0 4.65-3.348 7.998t-7.998 3.348l-58.962 0q-4.65 0-7.998-3.348t-3.348-7.998l0-77.066q0-4.65 3.348-7.998t7.998-3.348l58.962 0q4.65 0 7.998 3.348t3.348 7.998z",
|
|
14522
|
+
width: 81.852,
|
|
14523
|
+
height: 100
|
|
14524
|
+
};
|
|
14525
|
+
const iconTrash = {
|
|
14526
|
+
path: "M31.293 37.506q2.052 0 2.052 2.109l0 37.506q0 1.995-2.052 2.109l-4.218 0q-.912-.057-1.482-.627t-.57-1.482l0-37.506q0-2.109 2.052-2.109l4.218 0zm18.753 2.109l0 37.506q0 .912-.57 1.482t-1.539.627l-4.161 0q-1.995 0-2.109-2.109l0-37.506q.057-.912.627-1.482t1.482-.627l4.161 0q.969.057 1.539.627t.57 1.482zm14.592-2.109q2.052 0 2.052 2.109l0 37.506q0 1.995-2.052 2.109l-4.161 0q-.969-.057-1.539-.627t-.57-1.482l0-37.506q0-2.109 2.109-2.109l4.161 0zm10.431 49.248l0-61.731l-58.368 0l0 61.731q.057 2.679.969 3.819t1.083 1.14l54.207 0q.171 0 1.14-1.083t.969-3.876zm-43.776-70.11l29.184 0l-3.135-7.581q-.456-.57-1.14-.741l-20.634 0q-.627.114-1.083.741zm-31.293 2.109q0-1.995 2.109-2.109l20.121 0l4.56-10.83q.969-2.394 3.477-4.104 2.565-1.71 5.187-1.71l20.805 0q2.622 0 5.187 1.71t3.477 4.104l4.56 10.83l20.178 0q.912.057 1.482.627t.57 1.482l0 4.161q0 1.995-2.052 2.109l-6.27 0l0 61.731q0 5.415-3.078 9.348t-7.353 3.933l-54.207 0q-4.275 0-7.353-3.819t-3.078-9.177l0-62.016l-6.213 0q-.969 0-1.539-.57t-.57-1.539l0-4.161z",
|
|
14527
|
+
width: 91.681,
|
|
14528
|
+
height: 100
|
|
14529
|
+
};
|
|
14530
|
+
const iconUndo = {
|
|
14531
|
+
path: "M10,6.6C10,7.2,9.8,8,9.3,9.1c0,0,0,0.1-0.1,0.1S9.2,9.3,9.2,9.4c0,0,0,0.1-0.1,0.1C9,9.6,9,9.6,8.9,9.6 c-0.1,0-0.1,0-0.1-0.1c0,0,0-0.1,0-0.1c0,0,0-0.1,0-0.1s0-0.1,0-0.1c0-0.3,0-0.5,0-0.7c0-0.4,0-0.7-0.1-1C8.6,7.1,8.5,6.9,8.4,6.7S8.2,6.3,8,6.1C7.8,5.9,7.6,5.8,7.4,5.7S6.9,5.5,6.7,5.5S6.1,5.4,5.8,5.4c-0.3,0-0.6,0-1,0H3.6v1.4c0,0.1,0,0.2-0.1,0.3C3.4,7.1,3.3,7.1,3.2,7.1C3.1,7.1,3,7.1,3,7L0.1,4.1C0,4.1,0,4,0,3.9s0-0.2,0.1-0.3L3,0.8C3,0.7,3.1,0.7,3.2,0.7c0.1,0,0.2,0,0.3,0.1C3.5,0.9,3.6,0.9,3.6,1v1.4h1.2c2.6,0,4.3,0.7,4.9,2.2C9.9,5.2,10,5.8,10,6.6z",
|
|
14532
|
+
width: 10,
|
|
14533
|
+
height: 10
|
|
14534
|
+
};
|
|
14535
|
+
const iconMinus = {
|
|
14536
|
+
path: `M8,13 L16,13 C16.5522847,13 17,12.5522847 17,12 C17,11.4477153 16.5522847,11 16,11 L8,11 C7.44771525,11 7,11.4477153 7,12 C7,12.5522847 7.44771525,13 8,13 Z`,
|
|
14537
|
+
width: 24,
|
|
14538
|
+
height: 24
|
|
14539
|
+
};
|
|
14540
|
+
|
|
14541
|
+
var iconPaths = /*#__PURE__*/Object.freeze({
|
|
14542
|
+
__proto__: null,
|
|
14543
|
+
iconCheck: iconCheck,
|
|
14544
|
+
iconCheckMedium: iconCheckMedium,
|
|
14545
|
+
iconChevronDown: iconChevronDown,
|
|
14546
|
+
iconChevronRight: iconChevronRight,
|
|
14547
|
+
iconCircle: iconCircle,
|
|
14548
|
+
iconCircleArrowDown: iconCircleArrowDown,
|
|
14549
|
+
iconCircleArrowUp: iconCircleArrowUp,
|
|
14550
|
+
iconCircleThin: iconCircleThin,
|
|
14551
|
+
iconDesktop: iconDesktop,
|
|
14552
|
+
iconDropdownArrow: iconDropdownArrow,
|
|
14553
|
+
iconExclamationSign: iconExclamationSign,
|
|
14554
|
+
iconGear: iconGear,
|
|
14555
|
+
iconMobilePhone: iconMobilePhone,
|
|
14556
|
+
iconOk: iconOk,
|
|
14557
|
+
iconPlus: iconPlus,
|
|
14558
|
+
iconRemove: iconRemove,
|
|
14559
|
+
iconStar: iconStar,
|
|
14560
|
+
iconTryAgain: iconTryAgain,
|
|
14561
|
+
iconTablet: iconTablet,
|
|
14562
|
+
iconTrash: iconTrash,
|
|
14563
|
+
iconUndo: iconUndo,
|
|
14564
|
+
iconMinus: iconMinus
|
|
14565
|
+
});
|
|
14566
|
+
|
|
14962
14567
|
/* eslint-disable @babel/no-invalid-this */
|
|
14963
14568
|
const add$1 = {
|
|
14964
14569
|
constrain: function () {
|
|
@@ -18703,10 +18308,10 @@ const getInteractiveBoxFromSizeClass = sizeClass => {
|
|
|
18703
18308
|
};
|
|
18704
18309
|
|
|
18705
18310
|
var sizingUtils = /*#__PURE__*/Object.freeze({
|
|
18706
|
-
|
|
18707
|
-
|
|
18708
|
-
|
|
18709
|
-
|
|
18311
|
+
__proto__: null,
|
|
18312
|
+
containerSizeClass: containerSizeClass,
|
|
18313
|
+
getClassFromWidth: getClassFromWidth,
|
|
18314
|
+
getInteractiveBoxFromSizeClass: getInteractiveBoxFromSizeClass
|
|
18710
18315
|
});
|
|
18711
18316
|
|
|
18712
18317
|
const DEFAULT_ALIGNMENT$1 = "block";
|
|
@@ -19043,28 +18648,28 @@ const isLintable = type => {
|
|
|
19043
18648
|
};
|
|
19044
18649
|
|
|
19045
18650
|
var widgets$1 = /*#__PURE__*/Object.freeze({
|
|
19046
|
-
|
|
19047
|
-
|
|
19048
|
-
|
|
19049
|
-
|
|
19050
|
-
|
|
19051
|
-
|
|
19052
|
-
|
|
19053
|
-
|
|
19054
|
-
|
|
19055
|
-
|
|
19056
|
-
|
|
19057
|
-
|
|
19058
|
-
|
|
19059
|
-
|
|
19060
|
-
|
|
19061
|
-
|
|
19062
|
-
|
|
19063
|
-
|
|
19064
|
-
|
|
19065
|
-
|
|
19066
|
-
|
|
19067
|
-
|
|
18651
|
+
__proto__: null,
|
|
18652
|
+
registerWidget: registerWidget,
|
|
18653
|
+
registerWidgets: registerWidgets,
|
|
18654
|
+
registerEditors: registerEditors,
|
|
18655
|
+
getWidget: getWidget,
|
|
18656
|
+
getEditor: getEditor,
|
|
18657
|
+
getTransform: getTransform,
|
|
18658
|
+
getVersion: getVersion,
|
|
18659
|
+
getVersionVector: getVersionVector,
|
|
18660
|
+
getPublicWidgets: getPublicWidgets,
|
|
18661
|
+
isAccessible: isAccessible,
|
|
18662
|
+
getAllWidgetTypes: getAllWidgetTypes,
|
|
18663
|
+
upgradeWidgetInfoToLatestVersion: upgradeWidgetInfoToLatestVersion,
|
|
18664
|
+
getRendererPropsForWidgetInfo: getRendererPropsForWidgetInfo,
|
|
18665
|
+
traverseChildWidgets: traverseChildWidgets$4,
|
|
18666
|
+
getSupportedAlignments: getSupportedAlignments,
|
|
18667
|
+
getDefaultAlignment: getDefaultAlignment,
|
|
18668
|
+
validateAlignments: validateAlignments,
|
|
18669
|
+
supportsStaticMode: supportsStaticMode,
|
|
18670
|
+
getStaticTransform: getStaticTransform,
|
|
18671
|
+
getTracking: getTracking,
|
|
18672
|
+
isLintable: isLintable
|
|
19068
18673
|
});
|
|
19069
18674
|
|
|
19070
18675
|
class WidgetContainer extends React.Component {
|
|
@@ -20829,6 +20434,258 @@ TextInput.defaultProps = {
|
|
|
20829
20434
|
disabled: false
|
|
20830
20435
|
};
|
|
20831
20436
|
|
|
20437
|
+
/* eslint-disable react/no-unsafe */
|
|
20438
|
+
const zIndex = 10;
|
|
20439
|
+
let HorizontalDirection = /*#__PURE__*/function (HorizontalDirection) {
|
|
20440
|
+
HorizontalDirection["Left"] = "left";
|
|
20441
|
+
HorizontalDirection["Right"] = "right";
|
|
20442
|
+
return HorizontalDirection;
|
|
20443
|
+
}({});
|
|
20444
|
+
let VerticalDirection = /*#__PURE__*/function (VerticalDirection) {
|
|
20445
|
+
VerticalDirection["Top"] = "top";
|
|
20446
|
+
VerticalDirection["Bottom"] = "bottom";
|
|
20447
|
+
return VerticalDirection;
|
|
20448
|
+
}({});
|
|
20449
|
+
const Triangle = props => {
|
|
20450
|
+
let borderLeft;
|
|
20451
|
+
let borderRight;
|
|
20452
|
+
let borderTop;
|
|
20453
|
+
let borderBottom;
|
|
20454
|
+
const hBorder = `${props.width}px solid transparent`;
|
|
20455
|
+
if (props.horizontalDirection === "right") {
|
|
20456
|
+
borderLeft = hBorder;
|
|
20457
|
+
} else {
|
|
20458
|
+
borderRight = hBorder;
|
|
20459
|
+
}
|
|
20460
|
+
const vBorder = `${props.height}px solid ${props.color}`;
|
|
20461
|
+
if (props.verticalDirection === "top") {
|
|
20462
|
+
borderTop = vBorder;
|
|
20463
|
+
} else {
|
|
20464
|
+
borderBottom = vBorder;
|
|
20465
|
+
}
|
|
20466
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
20467
|
+
style: {
|
|
20468
|
+
display: "block",
|
|
20469
|
+
height: 0,
|
|
20470
|
+
width: 0,
|
|
20471
|
+
position: "absolute",
|
|
20472
|
+
left: props.left,
|
|
20473
|
+
top: props["top"],
|
|
20474
|
+
borderLeft: borderLeft,
|
|
20475
|
+
borderRight: borderRight,
|
|
20476
|
+
borderTop: borderTop,
|
|
20477
|
+
borderBottom: borderBottom
|
|
20478
|
+
}
|
|
20479
|
+
});
|
|
20480
|
+
};
|
|
20481
|
+
const TooltipArrow = props => {
|
|
20482
|
+
// TODO(aria): Think about adding a box-shadow to the triangle here
|
|
20483
|
+
// See http://css-tricks.com/triangle-with-shadow/
|
|
20484
|
+
|
|
20485
|
+
//const isRight = (this.props.horizontalDirection === "right");
|
|
20486
|
+
const isTop = props.verticalDirection === "top";
|
|
20487
|
+
const frontTopOffset = isTop ? 0 : 1;
|
|
20488
|
+
const borderTopOffset = isTop ? 0 : -1;
|
|
20489
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
20490
|
+
style: {
|
|
20491
|
+
display: "block",
|
|
20492
|
+
position: props.position,
|
|
20493
|
+
visibility: props.visibility,
|
|
20494
|
+
left: props.left,
|
|
20495
|
+
top: props["top"],
|
|
20496
|
+
width: props.width + 2,
|
|
20497
|
+
height: props.height + 1,
|
|
20498
|
+
marginTop: -1,
|
|
20499
|
+
marginBottom: -2,
|
|
20500
|
+
zIndex: zIndex
|
|
20501
|
+
}
|
|
20502
|
+
}, /*#__PURE__*/React.createElement(Triangle, {
|
|
20503
|
+
horizontalDirection: props.horizontalDirection,
|
|
20504
|
+
verticalDirection: props.verticalDirection,
|
|
20505
|
+
color: props.border,
|
|
20506
|
+
left: 0,
|
|
20507
|
+
top: borderTopOffset,
|
|
20508
|
+
width: props.width + 2 // one extra for the diagonal
|
|
20509
|
+
,
|
|
20510
|
+
height: props.height + 2
|
|
20511
|
+
}), /*#__PURE__*/React.createElement(Triangle, {
|
|
20512
|
+
horizontalDirection: props.horizontalDirection,
|
|
20513
|
+
verticalDirection: props.verticalDirection,
|
|
20514
|
+
color: props.color,
|
|
20515
|
+
left: 1,
|
|
20516
|
+
top: frontTopOffset,
|
|
20517
|
+
width: props.width,
|
|
20518
|
+
height: props.height
|
|
20519
|
+
}));
|
|
20520
|
+
};
|
|
20521
|
+
TooltipArrow.defaultProps = {
|
|
20522
|
+
position: "relative",
|
|
20523
|
+
visibility: "visible",
|
|
20524
|
+
left: 0,
|
|
20525
|
+
top: 0
|
|
20526
|
+
};
|
|
20527
|
+
const VERTICAL_CORNERS = {
|
|
20528
|
+
top: {
|
|
20529
|
+
top: "-100%"
|
|
20530
|
+
},
|
|
20531
|
+
bottom: {
|
|
20532
|
+
top: 0
|
|
20533
|
+
}
|
|
20534
|
+
};
|
|
20535
|
+
const HORIZONTAL_CORNERS = {
|
|
20536
|
+
left: {
|
|
20537
|
+
targetLeft: 0
|
|
20538
|
+
},
|
|
20539
|
+
right: {
|
|
20540
|
+
targetLeft: "100%"
|
|
20541
|
+
}
|
|
20542
|
+
};
|
|
20543
|
+
const HORIZONTAL_ALIGNMNENTS = {
|
|
20544
|
+
left: {
|
|
20545
|
+
tooltipLeft: 0,
|
|
20546
|
+
arrowLeft: arrowSize => 0
|
|
20547
|
+
},
|
|
20548
|
+
right: {
|
|
20549
|
+
tooltipLeft: "-100%",
|
|
20550
|
+
arrowLeft: arrowSize => -arrowSize - 2
|
|
20551
|
+
}
|
|
20552
|
+
};
|
|
20553
|
+
class Tooltip extends React.Component {
|
|
20554
|
+
constructor(...args) {
|
|
20555
|
+
super(...args);
|
|
20556
|
+
this.state = {
|
|
20557
|
+
height: null // used for offsetting "top" positioned tooltips
|
|
20558
|
+
};
|
|
20559
|
+
}
|
|
20560
|
+
|
|
20561
|
+
componentDidMount() {
|
|
20562
|
+
this._updateHeight();
|
|
20563
|
+
}
|
|
20564
|
+
UNSAFE_componentWillReceiveProps() {
|
|
20565
|
+
// If the contents have changed, reset our measure of the height
|
|
20566
|
+
this.setState({
|
|
20567
|
+
height: null
|
|
20568
|
+
});
|
|
20569
|
+
}
|
|
20570
|
+
componentDidUpdate() {
|
|
20571
|
+
this._updateHeight();
|
|
20572
|
+
}
|
|
20573
|
+
_renderToolTipDiv(isTooltipAbove) {
|
|
20574
|
+
const settings = Object.assign({}, HORIZONTAL_CORNERS[this.props.horizontalPosition], HORIZONTAL_ALIGNMNENTS[this.props.horizontalAlign], VERTICAL_CORNERS[this.props.verticalPosition]);
|
|
20575
|
+
let arrowAbove;
|
|
20576
|
+
let arrowBelow;
|
|
20577
|
+
if (isTooltipAbove) {
|
|
20578
|
+
// We put an absolutely positioned arrow in the correct place
|
|
20579
|
+
arrowAbove = /*#__PURE__*/React.createElement(TooltipArrow, {
|
|
20580
|
+
verticalDirection: VerticalDirection.Top,
|
|
20581
|
+
horizontalDirection: this.props.horizontalAlign,
|
|
20582
|
+
position: "absolute",
|
|
20583
|
+
color: "white",
|
|
20584
|
+
border: this.props.borderColor,
|
|
20585
|
+
left: settings.arrowLeft(this.props.arrowSize),
|
|
20586
|
+
top: -this.props.arrowSize + 2,
|
|
20587
|
+
width: this.props.arrowSize,
|
|
20588
|
+
height: this.props.arrowSize,
|
|
20589
|
+
zIndex: zIndex
|
|
20590
|
+
});
|
|
20591
|
+
|
|
20592
|
+
// And we use a visibility: hidden arrow below to shift up the
|
|
20593
|
+
// content by the correct amount
|
|
20594
|
+
arrowBelow = /*#__PURE__*/React.createElement(TooltipArrow, {
|
|
20595
|
+
verticalDirection: VerticalDirection.Top,
|
|
20596
|
+
horizontalDirection: this.props.horizontalAlign,
|
|
20597
|
+
visibility: "hidden",
|
|
20598
|
+
color: "white",
|
|
20599
|
+
border: this.props.borderColor,
|
|
20600
|
+
left: settings.arrowLeft(this.props.arrowSize),
|
|
20601
|
+
top: -1,
|
|
20602
|
+
width: this.props.arrowSize,
|
|
20603
|
+
height: this.props.arrowSize,
|
|
20604
|
+
zIndex: zIndex
|
|
20605
|
+
});
|
|
20606
|
+
} else {
|
|
20607
|
+
arrowAbove = /*#__PURE__*/React.createElement(TooltipArrow, {
|
|
20608
|
+
verticalDirection: VerticalDirection.Bottom,
|
|
20609
|
+
horizontalDirection: this.props.horizontalAlign,
|
|
20610
|
+
color: "white",
|
|
20611
|
+
border: this.props.borderColor,
|
|
20612
|
+
left: settings.arrowLeft(this.props.arrowSize),
|
|
20613
|
+
top: -1,
|
|
20614
|
+
width: this.props.arrowSize,
|
|
20615
|
+
height: this.props.arrowSize,
|
|
20616
|
+
zIndex: zIndex
|
|
20617
|
+
});
|
|
20618
|
+
arrowBelow = null;
|
|
20619
|
+
}
|
|
20620
|
+
|
|
20621
|
+
/* A positioned div below the input to be the parent for our
|
|
20622
|
+
tooltip */
|
|
20623
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
20624
|
+
style: {
|
|
20625
|
+
position: "relative",
|
|
20626
|
+
height: 0,
|
|
20627
|
+
display: this.props.show ? "block" : "none"
|
|
20628
|
+
}
|
|
20629
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
20630
|
+
// eslint-disable-next-line react/no-string-refs
|
|
20631
|
+
ref: "tooltipContainer",
|
|
20632
|
+
className: "tooltipContainer",
|
|
20633
|
+
style: {
|
|
20634
|
+
position: "absolute",
|
|
20635
|
+
// height must start out undefined, not null, so that
|
|
20636
|
+
// we can measure the actual height with jquery.
|
|
20637
|
+
// This is used to position the tooltip with top: -100%
|
|
20638
|
+
// when in verticalPosition: "top" mode
|
|
20639
|
+
height: this.state.height || undefined,
|
|
20640
|
+
left: settings.targetLeft
|
|
20641
|
+
}
|
|
20642
|
+
}, arrowAbove, /*#__PURE__*/React.createElement("div", {
|
|
20643
|
+
className: this.props.className
|
|
20644
|
+
// eslint-disable-next-line react/no-string-refs
|
|
20645
|
+
,
|
|
20646
|
+
ref: "tooltipContent",
|
|
20647
|
+
style: {
|
|
20648
|
+
position: "relative",
|
|
20649
|
+
top: settings["top"],
|
|
20650
|
+
left: settings.tooltipLeft,
|
|
20651
|
+
border: "1px solid " + this.props.borderColor,
|
|
20652
|
+
boxShadow: "0 1px 3px " + this.props.borderColor,
|
|
20653
|
+
zIndex: zIndex - 1
|
|
20654
|
+
}
|
|
20655
|
+
}, this.props.children.slice(1)), arrowBelow));
|
|
20656
|
+
}
|
|
20657
|
+
_updateHeight() {
|
|
20658
|
+
const tooltipContainer = ReactDOM__default.findDOMNode(
|
|
20659
|
+
// eslint-disable-next-line react/no-string-refs
|
|
20660
|
+
this.refs.tooltipContainer);
|
|
20661
|
+
const height = tooltipContainer.offsetHeight;
|
|
20662
|
+
if (height !== this.state.height) {
|
|
20663
|
+
this.setState({
|
|
20664
|
+
height
|
|
20665
|
+
});
|
|
20666
|
+
}
|
|
20667
|
+
}
|
|
20668
|
+
render() {
|
|
20669
|
+
const isTooltipAbove = this.props.verticalPosition === "top";
|
|
20670
|
+
|
|
20671
|
+
/* We wrap the entire output in a span so that it displays inline */
|
|
20672
|
+
return /*#__PURE__*/React.createElement("span", null, isTooltipAbove && this._renderToolTipDiv(isTooltipAbove), /*#__PURE__*/React.createElement("div", {
|
|
20673
|
+
style: this.props.targetContainerStyle
|
|
20674
|
+
}, this.props.children[0]), !isTooltipAbove && this._renderToolTipDiv());
|
|
20675
|
+
}
|
|
20676
|
+
}
|
|
20677
|
+
|
|
20678
|
+
// Sorry. // Apology-Oriented-Programming
|
|
20679
|
+
Tooltip.defaultProps = {
|
|
20680
|
+
className: "",
|
|
20681
|
+
arrowSize: 10,
|
|
20682
|
+
borderColor: "#ccc",
|
|
20683
|
+
verticalPosition: VerticalDirection.Bottom,
|
|
20684
|
+
horizontalPosition: HorizontalDirection.Left,
|
|
20685
|
+
horizontalAlign: HorizontalDirection.Left,
|
|
20686
|
+
targetContainerStyle: {}
|
|
20687
|
+
};
|
|
20688
|
+
|
|
20832
20689
|
/* eslint-disable react/sort-comp */
|
|
20833
20690
|
const {
|
|
20834
20691
|
captureScratchpadTouchStart: captureScratchpadTouchStart$3
|
|
@@ -24618,26 +24475,6 @@ var Explanation$1 = {
|
|
|
24618
24475
|
isLintable: true
|
|
24619
24476
|
};
|
|
24620
24477
|
|
|
24621
|
-
/*
|
|
24622
|
-
* A11y (Accessibility) style rules
|
|
24623
|
-
* These are used to mark up areas on the site that should only be readable
|
|
24624
|
-
* when using a screen reader.
|
|
24625
|
-
*/
|
|
24626
|
-
var a11y = StyleSheet.create({
|
|
24627
|
-
// Make content only visible to screen readers.
|
|
24628
|
-
// Both collegeboard.org and Bootstrap 3 use this exact implementation.
|
|
24629
|
-
srOnly: {
|
|
24630
|
-
border: 0,
|
|
24631
|
-
clip: "rect(0,0,0,0)",
|
|
24632
|
-
height: 1,
|
|
24633
|
-
margin: -1,
|
|
24634
|
-
overflow: "hidden",
|
|
24635
|
-
padding: 0,
|
|
24636
|
-
position: "absolute",
|
|
24637
|
-
width: 1
|
|
24638
|
-
}
|
|
24639
|
-
});
|
|
24640
|
-
|
|
24641
24478
|
class GradedGroupAnswerBar extends React.Component {
|
|
24642
24479
|
render() {
|
|
24643
24480
|
const {
|
|
@@ -25878,19 +25715,19 @@ const typeToButton = type => {
|
|
|
25878
25715
|
};
|
|
25879
25716
|
|
|
25880
25717
|
var util = /*#__PURE__*/Object.freeze({
|
|
25881
|
-
|
|
25882
|
-
|
|
25883
|
-
|
|
25884
|
-
|
|
25885
|
-
|
|
25886
|
-
|
|
25887
|
-
|
|
25888
|
-
|
|
25889
|
-
|
|
25890
|
-
|
|
25891
|
-
|
|
25892
|
-
|
|
25893
|
-
|
|
25718
|
+
__proto__: null,
|
|
25719
|
+
DEFAULT_BACKGROUND_IMAGE: DEFAULT_BACKGROUND_IMAGE,
|
|
25720
|
+
allTypes: allTypes,
|
|
25721
|
+
functionForType: functionForType,
|
|
25722
|
+
validate: validate$2,
|
|
25723
|
+
getEquationString: getEquationString,
|
|
25724
|
+
pointsFromNormalized: pointsFromNormalized,
|
|
25725
|
+
maybePointsFromNormalized: maybePointsFromNormalized,
|
|
25726
|
+
defaultPlotProps: defaultPlotProps,
|
|
25727
|
+
chooseType: chooseType,
|
|
25728
|
+
getGridAndSnapSteps: getGridAndSnapSteps,
|
|
25729
|
+
DEFAULT_GRAPHER_PROPS: DEFAULT_GRAPHER_PROPS,
|
|
25730
|
+
typeToButton: typeToButton
|
|
25894
25731
|
});
|
|
25895
25732
|
|
|
25896
25733
|
// @ts-expect-error - TS2339 - Property 'MovablePoint' does not exist on type 'typeof Graphie'.
|
|
@@ -30119,349 +29956,349 @@ const pureMdMax = "1023px";
|
|
|
30119
29956
|
const pureLgMax = "1199px";
|
|
30120
29957
|
|
|
30121
29958
|
var globalConstants = /*#__PURE__*/Object.freeze({
|
|
30122
|
-
|
|
30123
|
-
|
|
30124
|
-
|
|
30125
|
-
|
|
30126
|
-
|
|
30127
|
-
|
|
30128
|
-
|
|
30129
|
-
|
|
30130
|
-
|
|
30131
|
-
|
|
30132
|
-
|
|
30133
|
-
|
|
30134
|
-
|
|
30135
|
-
|
|
30136
|
-
|
|
30137
|
-
|
|
30138
|
-
|
|
30139
|
-
|
|
30140
|
-
|
|
30141
|
-
|
|
30142
|
-
|
|
30143
|
-
|
|
30144
|
-
|
|
30145
|
-
|
|
30146
|
-
|
|
30147
|
-
|
|
30148
|
-
|
|
30149
|
-
|
|
30150
|
-
|
|
30151
|
-
|
|
30152
|
-
|
|
30153
|
-
|
|
30154
|
-
|
|
30155
|
-
|
|
30156
|
-
|
|
30157
|
-
|
|
30158
|
-
|
|
30159
|
-
|
|
30160
|
-
|
|
30161
|
-
|
|
30162
|
-
|
|
30163
|
-
|
|
30164
|
-
|
|
30165
|
-
|
|
30166
|
-
|
|
30167
|
-
|
|
30168
|
-
|
|
30169
|
-
|
|
30170
|
-
|
|
30171
|
-
|
|
30172
|
-
|
|
30173
|
-
|
|
30174
|
-
|
|
30175
|
-
|
|
30176
|
-
|
|
30177
|
-
|
|
30178
|
-
|
|
30179
|
-
|
|
30180
|
-
|
|
30181
|
-
|
|
30182
|
-
|
|
30183
|
-
|
|
30184
|
-
|
|
30185
|
-
|
|
30186
|
-
|
|
30187
|
-
|
|
30188
|
-
|
|
30189
|
-
|
|
30190
|
-
|
|
30191
|
-
|
|
30192
|
-
|
|
30193
|
-
|
|
30194
|
-
|
|
30195
|
-
|
|
30196
|
-
|
|
30197
|
-
|
|
30198
|
-
|
|
30199
|
-
|
|
30200
|
-
|
|
30201
|
-
|
|
30202
|
-
|
|
30203
|
-
|
|
30204
|
-
|
|
30205
|
-
|
|
30206
|
-
|
|
30207
|
-
|
|
30208
|
-
|
|
30209
|
-
|
|
30210
|
-
|
|
30211
|
-
|
|
30212
|
-
|
|
30213
|
-
|
|
30214
|
-
|
|
30215
|
-
|
|
30216
|
-
|
|
30217
|
-
|
|
30218
|
-
|
|
30219
|
-
|
|
30220
|
-
|
|
30221
|
-
|
|
30222
|
-
|
|
30223
|
-
|
|
30224
|
-
|
|
30225
|
-
|
|
30226
|
-
|
|
30227
|
-
|
|
30228
|
-
|
|
30229
|
-
|
|
30230
|
-
|
|
30231
|
-
|
|
30232
|
-
|
|
30233
|
-
|
|
30234
|
-
|
|
30235
|
-
|
|
30236
|
-
|
|
30237
|
-
|
|
30238
|
-
|
|
30239
|
-
|
|
30240
|
-
|
|
30241
|
-
|
|
30242
|
-
|
|
30243
|
-
|
|
30244
|
-
|
|
30245
|
-
|
|
30246
|
-
|
|
30247
|
-
|
|
30248
|
-
|
|
30249
|
-
|
|
30250
|
-
|
|
30251
|
-
|
|
30252
|
-
|
|
30253
|
-
|
|
30254
|
-
|
|
30255
|
-
|
|
30256
|
-
|
|
30257
|
-
|
|
30258
|
-
|
|
30259
|
-
|
|
30260
|
-
|
|
30261
|
-
|
|
30262
|
-
|
|
30263
|
-
|
|
30264
|
-
|
|
30265
|
-
|
|
30266
|
-
|
|
30267
|
-
|
|
30268
|
-
|
|
30269
|
-
|
|
30270
|
-
|
|
30271
|
-
|
|
30272
|
-
|
|
30273
|
-
|
|
30274
|
-
|
|
30275
|
-
|
|
30276
|
-
|
|
30277
|
-
|
|
30278
|
-
|
|
30279
|
-
|
|
30280
|
-
|
|
30281
|
-
|
|
30282
|
-
|
|
30283
|
-
|
|
30284
|
-
|
|
30285
|
-
|
|
30286
|
-
|
|
30287
|
-
|
|
30288
|
-
|
|
30289
|
-
|
|
30290
|
-
|
|
30291
|
-
|
|
30292
|
-
|
|
30293
|
-
|
|
30294
|
-
|
|
30295
|
-
|
|
30296
|
-
|
|
30297
|
-
|
|
30298
|
-
|
|
30299
|
-
|
|
30300
|
-
|
|
30301
|
-
|
|
30302
|
-
|
|
30303
|
-
|
|
30304
|
-
|
|
30305
|
-
|
|
30306
|
-
|
|
30307
|
-
|
|
30308
|
-
|
|
30309
|
-
|
|
30310
|
-
|
|
30311
|
-
|
|
30312
|
-
|
|
30313
|
-
|
|
30314
|
-
|
|
30315
|
-
|
|
30316
|
-
|
|
30317
|
-
|
|
30318
|
-
|
|
30319
|
-
|
|
30320
|
-
|
|
30321
|
-
|
|
30322
|
-
|
|
30323
|
-
|
|
30324
|
-
|
|
30325
|
-
|
|
30326
|
-
|
|
30327
|
-
|
|
30328
|
-
|
|
30329
|
-
|
|
30330
|
-
|
|
30331
|
-
|
|
30332
|
-
|
|
30333
|
-
|
|
30334
|
-
|
|
30335
|
-
|
|
30336
|
-
|
|
30337
|
-
|
|
30338
|
-
|
|
30339
|
-
|
|
30340
|
-
|
|
30341
|
-
|
|
30342
|
-
|
|
30343
|
-
|
|
30344
|
-
|
|
30345
|
-
|
|
30346
|
-
|
|
30347
|
-
|
|
30348
|
-
|
|
30349
|
-
|
|
30350
|
-
|
|
30351
|
-
|
|
30352
|
-
|
|
30353
|
-
|
|
30354
|
-
|
|
30355
|
-
|
|
30356
|
-
|
|
30357
|
-
|
|
30358
|
-
|
|
30359
|
-
|
|
30360
|
-
|
|
30361
|
-
|
|
30362
|
-
|
|
30363
|
-
|
|
30364
|
-
|
|
30365
|
-
|
|
30366
|
-
|
|
30367
|
-
|
|
30368
|
-
|
|
30369
|
-
|
|
30370
|
-
|
|
30371
|
-
|
|
30372
|
-
|
|
30373
|
-
|
|
30374
|
-
|
|
30375
|
-
|
|
30376
|
-
|
|
30377
|
-
|
|
30378
|
-
|
|
30379
|
-
|
|
30380
|
-
|
|
30381
|
-
|
|
30382
|
-
|
|
30383
|
-
|
|
30384
|
-
|
|
30385
|
-
|
|
30386
|
-
|
|
30387
|
-
|
|
30388
|
-
|
|
30389
|
-
|
|
30390
|
-
|
|
30391
|
-
|
|
30392
|
-
|
|
30393
|
-
|
|
30394
|
-
|
|
30395
|
-
|
|
30396
|
-
|
|
30397
|
-
|
|
30398
|
-
|
|
30399
|
-
|
|
30400
|
-
|
|
30401
|
-
|
|
30402
|
-
|
|
30403
|
-
|
|
30404
|
-
|
|
30405
|
-
|
|
30406
|
-
|
|
30407
|
-
|
|
30408
|
-
|
|
30409
|
-
|
|
30410
|
-
|
|
30411
|
-
|
|
30412
|
-
|
|
30413
|
-
|
|
30414
|
-
|
|
30415
|
-
|
|
30416
|
-
|
|
30417
|
-
|
|
30418
|
-
|
|
30419
|
-
|
|
30420
|
-
|
|
30421
|
-
|
|
30422
|
-
|
|
30423
|
-
|
|
30424
|
-
|
|
30425
|
-
|
|
30426
|
-
|
|
30427
|
-
|
|
30428
|
-
|
|
30429
|
-
|
|
30430
|
-
|
|
30431
|
-
|
|
30432
|
-
|
|
30433
|
-
|
|
30434
|
-
|
|
30435
|
-
|
|
30436
|
-
|
|
30437
|
-
|
|
30438
|
-
|
|
30439
|
-
|
|
30440
|
-
|
|
30441
|
-
|
|
30442
|
-
|
|
30443
|
-
|
|
30444
|
-
|
|
30445
|
-
|
|
30446
|
-
|
|
30447
|
-
|
|
30448
|
-
|
|
30449
|
-
|
|
30450
|
-
|
|
30451
|
-
|
|
30452
|
-
|
|
30453
|
-
|
|
30454
|
-
|
|
30455
|
-
|
|
30456
|
-
|
|
30457
|
-
|
|
30458
|
-
|
|
30459
|
-
|
|
30460
|
-
|
|
30461
|
-
|
|
30462
|
-
|
|
30463
|
-
|
|
30464
|
-
|
|
29959
|
+
__proto__: null,
|
|
29960
|
+
black: black,
|
|
29961
|
+
grayDarker: grayDarker,
|
|
29962
|
+
grayDark: grayDark,
|
|
29963
|
+
gray: gray,
|
|
29964
|
+
grayLight: grayLight,
|
|
29965
|
+
grayLighter: grayLighter,
|
|
29966
|
+
white: white,
|
|
29967
|
+
blue: blue,
|
|
29968
|
+
blueDark: blueDark,
|
|
29969
|
+
green: green,
|
|
29970
|
+
red: red,
|
|
29971
|
+
yellow: yellow,
|
|
29972
|
+
orange: orange,
|
|
29973
|
+
pink: pink,
|
|
29974
|
+
purple: purple,
|
|
29975
|
+
bodyBackground: bodyBackground,
|
|
29976
|
+
textColor: textColor,
|
|
29977
|
+
linkColor: linkColor,
|
|
29978
|
+
linkColorHover: linkColorHover,
|
|
29979
|
+
sansFontFamily: sansFontFamily,
|
|
29980
|
+
serifFontFamily: serifFontFamily,
|
|
29981
|
+
monoFontFamily: monoFontFamily,
|
|
29982
|
+
baseFontSize: baseFontSize,
|
|
29983
|
+
baseFontFamily: baseFontFamily,
|
|
29984
|
+
baseLineHeight: baseLineHeight,
|
|
29985
|
+
altFontFamily: altFontFamily,
|
|
29986
|
+
headingsFontFamily: headingsFontFamily,
|
|
29987
|
+
headingsFontWeight: headingsFontWeight,
|
|
29988
|
+
headingsColor: headingsColor,
|
|
29989
|
+
fontSizeLarge: fontSizeLarge,
|
|
29990
|
+
fontSizeSmall: fontSizeSmall,
|
|
29991
|
+
fontSizeMini: fontSizeMini,
|
|
29992
|
+
paddingLarge: paddingLarge,
|
|
29993
|
+
paddingSmall: paddingSmall,
|
|
29994
|
+
paddingMini: paddingMini,
|
|
29995
|
+
baseBorderRadius: baseBorderRadius,
|
|
29996
|
+
borderRadiusLarge: borderRadiusLarge,
|
|
29997
|
+
borderRadiusSmall: borderRadiusSmall,
|
|
29998
|
+
tableBackground: tableBackground,
|
|
29999
|
+
tableBackgroundAccent: tableBackgroundAccent,
|
|
30000
|
+
tableBackgroundHover: tableBackgroundHover,
|
|
30001
|
+
tableBorder: tableBorder,
|
|
30002
|
+
btnBackground: btnBackground,
|
|
30003
|
+
btnBackgroundHighlight: btnBackgroundHighlight,
|
|
30004
|
+
btnBorder: btnBorder,
|
|
30005
|
+
btnPrimaryBackground: btnPrimaryBackground,
|
|
30006
|
+
btnPrimaryBackgroundHighlight: btnPrimaryBackgroundHighlight,
|
|
30007
|
+
btnInfoBackground: btnInfoBackground,
|
|
30008
|
+
btnInfoBackgroundHighlight: btnInfoBackgroundHighlight,
|
|
30009
|
+
btnSuccessBackground: btnSuccessBackground,
|
|
30010
|
+
btnSuccessBackgroundHighlight: btnSuccessBackgroundHighlight,
|
|
30011
|
+
btnWarningBackground: btnWarningBackground,
|
|
30012
|
+
btnWarningBackgroundHighlight: btnWarningBackgroundHighlight,
|
|
30013
|
+
btnDangerBackground: btnDangerBackground,
|
|
30014
|
+
btnDangerBackgroundHighlight: btnDangerBackgroundHighlight,
|
|
30015
|
+
btnInverseBackground: btnInverseBackground,
|
|
30016
|
+
btnInverseBackgroundHighlight: btnInverseBackgroundHighlight,
|
|
30017
|
+
inputBackground: inputBackground,
|
|
30018
|
+
inputBorder: inputBorder,
|
|
30019
|
+
inputBorderRadius: inputBorderRadius,
|
|
30020
|
+
inputDisabledBackground: inputDisabledBackground,
|
|
30021
|
+
formActionsBackground: formActionsBackground,
|
|
30022
|
+
inputHeight: inputHeight,
|
|
30023
|
+
dropdownBackground: dropdownBackground,
|
|
30024
|
+
dropdownBorder: dropdownBorder,
|
|
30025
|
+
dropdownDividerTop: dropdownDividerTop,
|
|
30026
|
+
dropdownDividerBottom: dropdownDividerBottom,
|
|
30027
|
+
dropdownLinkColor: dropdownLinkColor,
|
|
30028
|
+
dropdownLinkColorHover: dropdownLinkColorHover,
|
|
30029
|
+
dropdownLinkColorActive: dropdownLinkColorActive,
|
|
30030
|
+
dropdownLinkBackgroundActive: dropdownLinkBackgroundActive,
|
|
30031
|
+
dropdownLinkBackgroundHover: dropdownLinkBackgroundHover,
|
|
30032
|
+
zindexDropdown: zindexDropdown,
|
|
30033
|
+
zindexPopover: zindexPopover,
|
|
30034
|
+
zindexTooltip: zindexTooltip,
|
|
30035
|
+
zindexFixedNavbar: zindexFixedNavbar,
|
|
30036
|
+
zindexHeader: zindexHeader,
|
|
30037
|
+
zindexModalBackdrop: zindexModalBackdrop,
|
|
30038
|
+
zindexModal: zindexModal,
|
|
30039
|
+
zindexAboveModal: zindexAboveModal,
|
|
30040
|
+
iconSpritePath: iconSpritePath,
|
|
30041
|
+
iconWhiteSpritePath: iconWhiteSpritePath,
|
|
30042
|
+
placeholderText: placeholderText,
|
|
30043
|
+
hrBorder: hrBorder,
|
|
30044
|
+
horizontalComponentOffset: horizontalComponentOffset,
|
|
30045
|
+
wellBackground: wellBackground,
|
|
30046
|
+
navbarCollapseWidth: navbarCollapseWidth,
|
|
30047
|
+
navbarCollapseDesktopWidth: navbarCollapseDesktopWidth,
|
|
30048
|
+
navbarHeight: navbarHeight,
|
|
30049
|
+
navbarBackgroundHighlight: navbarBackgroundHighlight,
|
|
30050
|
+
navbarBackground: navbarBackground,
|
|
30051
|
+
navbarBorder: navbarBorder,
|
|
30052
|
+
navbarText: navbarText,
|
|
30053
|
+
navbarLinkColor: navbarLinkColor,
|
|
30054
|
+
navbarLinkColorHover: navbarLinkColorHover,
|
|
30055
|
+
navbarLinkColorActive: navbarLinkColorActive,
|
|
30056
|
+
navbarLinkBackgroundHover: navbarLinkBackgroundHover,
|
|
30057
|
+
navbarLinkBackgroundActive: navbarLinkBackgroundActive,
|
|
30058
|
+
navbarBrandColor: navbarBrandColor,
|
|
30059
|
+
navbarInverseBackground: navbarInverseBackground,
|
|
30060
|
+
navbarInverseBackgroundHighlight: navbarInverseBackgroundHighlight,
|
|
30061
|
+
navbarInverseBorder: navbarInverseBorder,
|
|
30062
|
+
navbarInverseText: navbarInverseText,
|
|
30063
|
+
navbarInverseLinkColor: navbarInverseLinkColor,
|
|
30064
|
+
navbarInverseLinkColorHover: navbarInverseLinkColorHover,
|
|
30065
|
+
navbarInverseLinkColorActive: navbarInverseLinkColorActive,
|
|
30066
|
+
navbarInverseLinkBackgroundHover: navbarInverseLinkBackgroundHover,
|
|
30067
|
+
navbarInverseLinkBackgroundActive: navbarInverseLinkBackgroundActive,
|
|
30068
|
+
navbarInverseSearchBackground: navbarInverseSearchBackground,
|
|
30069
|
+
navbarInverseSearchBackgroundFocus: navbarInverseSearchBackgroundFocus,
|
|
30070
|
+
navbarInverseSearchBorder: navbarInverseSearchBorder,
|
|
30071
|
+
navbarInverseSearchPlaceholderColor: navbarInverseSearchPlaceholderColor,
|
|
30072
|
+
navbarInverseBrandColor: navbarInverseBrandColor,
|
|
30073
|
+
paginationBackground: paginationBackground,
|
|
30074
|
+
paginationBorder: paginationBorder,
|
|
30075
|
+
paginationActiveBackground: paginationActiveBackground,
|
|
30076
|
+
heroUnitBackground: heroUnitBackground,
|
|
30077
|
+
heroUnitHeadingColor: heroUnitHeadingColor,
|
|
30078
|
+
heroUnitLeadColor: heroUnitLeadColor,
|
|
30079
|
+
warningText: warningText,
|
|
30080
|
+
warningBackground: warningBackground,
|
|
30081
|
+
warningBorder: warningBorder,
|
|
30082
|
+
errorText: errorText,
|
|
30083
|
+
errorBackground: errorBackground,
|
|
30084
|
+
errorBorder: errorBorder,
|
|
30085
|
+
successText: successText,
|
|
30086
|
+
successBackground: successBackground,
|
|
30087
|
+
successBorder: successBorder,
|
|
30088
|
+
infoText: infoText,
|
|
30089
|
+
infoBackground: infoBackground,
|
|
30090
|
+
infoBorder: infoBorder,
|
|
30091
|
+
tooltipColor: tooltipColor,
|
|
30092
|
+
tooltipBackground: tooltipBackground,
|
|
30093
|
+
tooltipArrowWidth: tooltipArrowWidth,
|
|
30094
|
+
tooltipArrowColor: tooltipArrowColor,
|
|
30095
|
+
popoverBackground: popoverBackground,
|
|
30096
|
+
popoverArrowWidth: popoverArrowWidth,
|
|
30097
|
+
popoverArrowColor: popoverArrowColor,
|
|
30098
|
+
popoverTitleBackground: popoverTitleBackground,
|
|
30099
|
+
popoverArrowOuterWidth: popoverArrowOuterWidth,
|
|
30100
|
+
popoverArrowOuterColor: popoverArrowOuterColor,
|
|
30101
|
+
gridColumns: gridColumns,
|
|
30102
|
+
gridColumnWidth: gridColumnWidth,
|
|
30103
|
+
gridGutterWidth: gridGutterWidth,
|
|
30104
|
+
gridRowWidth: gridRowWidth,
|
|
30105
|
+
gridColumnWidth1200: gridColumnWidth1200,
|
|
30106
|
+
gridGutterWidth1200: gridGutterWidth1200,
|
|
30107
|
+
gridRowWidth1200: gridRowWidth1200,
|
|
30108
|
+
gridColumnWidth768: gridColumnWidth768,
|
|
30109
|
+
gridGutterWidth768: gridGutterWidth768,
|
|
30110
|
+
gridRowWidth768: gridRowWidth768,
|
|
30111
|
+
fluidGridColumnWidth: fluidGridColumnWidth,
|
|
30112
|
+
fluidGridGutterWidth: fluidGridGutterWidth,
|
|
30113
|
+
fluidGridColumnWidth1200: fluidGridColumnWidth1200,
|
|
30114
|
+
fluidGridGutterWidth1200: fluidGridGutterWidth1200,
|
|
30115
|
+
fluidGridColumnWidth768: fluidGridColumnWidth768,
|
|
30116
|
+
fluidGridGutterWidth768: fluidGridGutterWidth768,
|
|
30117
|
+
kaGreen: kaGreen,
|
|
30118
|
+
kaGreenLight: kaGreenLight,
|
|
30119
|
+
kaBlue: kaBlue,
|
|
30120
|
+
kaBlueLight: kaBlueLight,
|
|
30121
|
+
grayExtraDark: grayExtraDark,
|
|
30122
|
+
grayExtraLight: grayExtraLight,
|
|
30123
|
+
graySuperLight: graySuperLight,
|
|
30124
|
+
whiteDark: whiteDark,
|
|
30125
|
+
dark: dark,
|
|
30126
|
+
blueDarkUnsaturated: blueDarkUnsaturated,
|
|
30127
|
+
blueDarkSaturated: blueDarkSaturated,
|
|
30128
|
+
blueLight: blueLight,
|
|
30129
|
+
greenLight: greenLight,
|
|
30130
|
+
greenDark: greenDark,
|
|
30131
|
+
yellowGreen: yellowGreen,
|
|
30132
|
+
okGreen: okGreen,
|
|
30133
|
+
alertRed: alertRed,
|
|
30134
|
+
coral: coral,
|
|
30135
|
+
grayBlue: grayBlue,
|
|
30136
|
+
lightPageBackground: lightPageBackground,
|
|
30137
|
+
yclaBlue: yclaBlue,
|
|
30138
|
+
yclaTeal: yclaTeal,
|
|
30139
|
+
yclaTealDark: yclaTealDark,
|
|
30140
|
+
yclaGreenDark: yclaGreenDark,
|
|
30141
|
+
yclaGreen: yclaGreen,
|
|
30142
|
+
learnstormBlue: learnstormBlue,
|
|
30143
|
+
homepageBlue: homepageBlue,
|
|
30144
|
+
backgroundBlue: backgroundBlue,
|
|
30145
|
+
teacherSignupBlue: teacherSignupBlue,
|
|
30146
|
+
homepageGreen: homepageGreen,
|
|
30147
|
+
streakColor: streakColor,
|
|
30148
|
+
facebookColor: facebookColor,
|
|
30149
|
+
blueGoogleColor: blueGoogleColor,
|
|
30150
|
+
redGoogleColor: redGoogleColor,
|
|
30151
|
+
homepageColor: homepageColor,
|
|
30152
|
+
lightTextColor: lightTextColor,
|
|
30153
|
+
fontSizeTiny: fontSizeTiny,
|
|
30154
|
+
fontSizeNormal: fontSizeNormal,
|
|
30155
|
+
fontSizeMedium: fontSizeMedium,
|
|
30156
|
+
fontSizeExtraLarge: fontSizeExtraLarge,
|
|
30157
|
+
fontSizeHuge: fontSizeHuge,
|
|
30158
|
+
fontSizeBakana: fontSizeBakana,
|
|
30159
|
+
fontSizeBananas: fontSizeBananas,
|
|
30160
|
+
fixedWidthFontFamily: fixedWidthFontFamily,
|
|
30161
|
+
contentPadding: contentPadding,
|
|
30162
|
+
primaryButtonBackground: primaryButtonBackground,
|
|
30163
|
+
primaryButtonBorder: primaryButtonBorder,
|
|
30164
|
+
buttonTextColor: buttonTextColor,
|
|
30165
|
+
buttonBorderRadius: buttonBorderRadius,
|
|
30166
|
+
basicBorderColor: basicBorderColor,
|
|
30167
|
+
minContainerWidth: minContainerWidth,
|
|
30168
|
+
maxContainerWidth: maxContainerWidth,
|
|
30169
|
+
formHintColor: formHintColor,
|
|
30170
|
+
guidelineExampleText: guidelineExampleText,
|
|
30171
|
+
hoverCardWidth: hoverCardWidth,
|
|
30172
|
+
menuHighlightColor: menuHighlightColor,
|
|
30173
|
+
menuHighlightBorderColor: menuHighlightBorderColor,
|
|
30174
|
+
menuActiveTextColor: menuActiveTextColor,
|
|
30175
|
+
menuInactiveTextColor: menuInactiveTextColor,
|
|
30176
|
+
menuSubheaderTextColor: menuSubheaderTextColor,
|
|
30177
|
+
menuBorderColor: menuBorderColor,
|
|
30178
|
+
unreadBackgroundColor: unreadBackgroundColor,
|
|
30179
|
+
menuLineHeight: menuLineHeight,
|
|
30180
|
+
menuSubheaderLineHeight: menuSubheaderLineHeight,
|
|
30181
|
+
menuSubheaderFontSize: menuSubheaderFontSize,
|
|
30182
|
+
notificationBarColor: notificationBarColor,
|
|
30183
|
+
modalBodyTopPadding: modalBodyTopPadding,
|
|
30184
|
+
modalDialogPadding: modalDialogPadding,
|
|
30185
|
+
modalSectionPadding: modalSectionPadding,
|
|
30186
|
+
mathDomain1: mathDomain1,
|
|
30187
|
+
mathDomain2: mathDomain2,
|
|
30188
|
+
mathDomain3: mathDomain3,
|
|
30189
|
+
mathDomain4: mathDomain4,
|
|
30190
|
+
partnerContentDomain1: partnerContentDomain1,
|
|
30191
|
+
partnerContentDomain2: partnerContentDomain2,
|
|
30192
|
+
partnerContentDomain3: partnerContentDomain3,
|
|
30193
|
+
partnerContentDomain4: partnerContentDomain4,
|
|
30194
|
+
csDomain1: csDomain1,
|
|
30195
|
+
csDomain2: csDomain2,
|
|
30196
|
+
csDomain3: csDomain3,
|
|
30197
|
+
csDomain4: csDomain4,
|
|
30198
|
+
economicsDomain1: economicsDomain1,
|
|
30199
|
+
economicsDomain2: economicsDomain2,
|
|
30200
|
+
economicsDomain3: economicsDomain3,
|
|
30201
|
+
economicsDomain4: economicsDomain4,
|
|
30202
|
+
collegeCareersMoreDomain1: collegeCareersMoreDomain1,
|
|
30203
|
+
collegeCareersMoreDomain2: collegeCareersMoreDomain2,
|
|
30204
|
+
collegeCareersMoreDomain3: collegeCareersMoreDomain3,
|
|
30205
|
+
collegeCareersMoreDomain4: collegeCareersMoreDomain4,
|
|
30206
|
+
humanitiesDomain1: humanitiesDomain1,
|
|
30207
|
+
humanitiesDomain2: humanitiesDomain2,
|
|
30208
|
+
humanitiesDomain3: humanitiesDomain3,
|
|
30209
|
+
humanitiesDomain4: humanitiesDomain4,
|
|
30210
|
+
gtpDomain1: gtpDomain1,
|
|
30211
|
+
gtpDomain2: gtpDomain2,
|
|
30212
|
+
gtpDomain3: gtpDomain3,
|
|
30213
|
+
gtpDomain4: gtpDomain4,
|
|
30214
|
+
scienceDomain1: scienceDomain1,
|
|
30215
|
+
scienceDomain2: scienceDomain2,
|
|
30216
|
+
scienceDomain3: scienceDomain3,
|
|
30217
|
+
scienceDomain4: scienceDomain4,
|
|
30218
|
+
testPrepDomain1: testPrepDomain1,
|
|
30219
|
+
testPrepDomain2: testPrepDomain2,
|
|
30220
|
+
testPrepDomain3: testPrepDomain3,
|
|
30221
|
+
testPrepDomain4: testPrepDomain4,
|
|
30222
|
+
defaultDomain1: defaultDomain1,
|
|
30223
|
+
defaultDomain2: defaultDomain2,
|
|
30224
|
+
defaultDomain3: defaultDomain3,
|
|
30225
|
+
defaultDomain4: defaultDomain4,
|
|
30226
|
+
defaultDomainColor: defaultDomainColor,
|
|
30227
|
+
defaultSubjectColor: defaultSubjectColor,
|
|
30228
|
+
defaultTopicColor: defaultTopicColor,
|
|
30229
|
+
defaultHoverColor: defaultHoverColor,
|
|
30230
|
+
defaultLinkColor: defaultLinkColor,
|
|
30231
|
+
defaultLinkHoverColor: defaultLinkHoverColor,
|
|
30232
|
+
scienceDomainColor: scienceDomainColor,
|
|
30233
|
+
scienceSubjectColor: scienceSubjectColor,
|
|
30234
|
+
scienceTopicColor: scienceTopicColor,
|
|
30235
|
+
scienceHoverColor: scienceHoverColor,
|
|
30236
|
+
scienceLinkColor: scienceLinkColor,
|
|
30237
|
+
scienceLinkHoverColor: scienceLinkHoverColor,
|
|
30238
|
+
humanitiesDomainColor: humanitiesDomainColor,
|
|
30239
|
+
humanitiesSubjectColor: humanitiesSubjectColor,
|
|
30240
|
+
humanitiesTopicColor: humanitiesTopicColor,
|
|
30241
|
+
humanitiesHoverColor: humanitiesHoverColor,
|
|
30242
|
+
humanitiesLinkColor: humanitiesLinkColor,
|
|
30243
|
+
humanitiesLinkHoverColor: humanitiesLinkHoverColor,
|
|
30244
|
+
economicsDomainColor: economicsDomainColor,
|
|
30245
|
+
economicsSubjectColor: economicsSubjectColor,
|
|
30246
|
+
economicsTopicColor: economicsTopicColor,
|
|
30247
|
+
economicsHoverColor: economicsHoverColor,
|
|
30248
|
+
economicsLinkColor: economicsLinkColor,
|
|
30249
|
+
economicsLinkHoverColor: economicsLinkHoverColor,
|
|
30250
|
+
csDomainColor: csDomainColor,
|
|
30251
|
+
csSubjectColor: csSubjectColor,
|
|
30252
|
+
csTopicColor: csTopicColor,
|
|
30253
|
+
csHoverColor: csHoverColor,
|
|
30254
|
+
csLinkColor: csLinkColor,
|
|
30255
|
+
csLinkHoverColor: csLinkHoverColor,
|
|
30256
|
+
partnerContentDomainColor: partnerContentDomainColor,
|
|
30257
|
+
partnerContentSubjectColor: partnerContentSubjectColor,
|
|
30258
|
+
partnerContentTopicColor: partnerContentTopicColor,
|
|
30259
|
+
partnerContentHoverColor: partnerContentHoverColor,
|
|
30260
|
+
partnerContentLinkColor: partnerContentLinkColor,
|
|
30261
|
+
partnerContentLinkHoverColor: partnerContentLinkHoverColor,
|
|
30262
|
+
essayDomainColor: essayDomainColor,
|
|
30263
|
+
mathDomainColor: mathDomainColor,
|
|
30264
|
+
mathSubjectColor: mathSubjectColor,
|
|
30265
|
+
mathTopicColor: mathTopicColor,
|
|
30266
|
+
mathHoverColor: mathHoverColor,
|
|
30267
|
+
mathLinkColor: mathLinkColor,
|
|
30268
|
+
mathLinkHoverColor: mathLinkHoverColor,
|
|
30269
|
+
testPrepDomainColor: testPrepDomainColor,
|
|
30270
|
+
testPrepSubjectColor: testPrepSubjectColor,
|
|
30271
|
+
testPrepTopicColor: testPrepTopicColor,
|
|
30272
|
+
testPrepHoverColor: testPrepHoverColor,
|
|
30273
|
+
testPrepLinkColor: testPrepLinkColor,
|
|
30274
|
+
testPrepLinkHoverColor: testPrepLinkHoverColor,
|
|
30275
|
+
collegeCareersMoreDomainColor: collegeCareersMoreDomainColor,
|
|
30276
|
+
collegeCareersMoreSubjectColor: collegeCareersMoreSubjectColor,
|
|
30277
|
+
collegeCareersMoreTopicColor: collegeCareersMoreTopicColor,
|
|
30278
|
+
collegeCareersMoreHoverColor: collegeCareersMoreHoverColor,
|
|
30279
|
+
collegeCareersMoreLinkColor: collegeCareersMoreLinkColor,
|
|
30280
|
+
collegeCareersMoreLinkHoverColor: collegeCareersMoreLinkHoverColor,
|
|
30281
|
+
colorProficient: colorProficient,
|
|
30282
|
+
colorPracticed: colorPracticed,
|
|
30283
|
+
colorMastery1: colorMastery1,
|
|
30284
|
+
colorMastery2: colorMastery2,
|
|
30285
|
+
colorMastery3: colorMastery3,
|
|
30286
|
+
colorSuggested: colorSuggested,
|
|
30287
|
+
colorReview: colorReview,
|
|
30288
|
+
colorNotStarted: colorNotStarted,
|
|
30289
|
+
colorStarted: colorStarted,
|
|
30290
|
+
colorStruggling: colorStruggling,
|
|
30291
|
+
colorPersonal: colorPersonal,
|
|
30292
|
+
colorPractice: colorPractice,
|
|
30293
|
+
colorEnergyPoints: colorEnergyPoints,
|
|
30294
|
+
pureSmMin: pureSmMin,
|
|
30295
|
+
pureMdMin: pureMdMin,
|
|
30296
|
+
pureLgMin: pureLgMin,
|
|
30297
|
+
pureXlMin: pureXlMin,
|
|
30298
|
+
pureXsMax: pureXsMax,
|
|
30299
|
+
pureSmMax: pureSmMax,
|
|
30300
|
+
pureMdMax: pureMdMax,
|
|
30301
|
+
pureLgMax: pureLgMax
|
|
30465
30302
|
});
|
|
30466
30303
|
|
|
30467
30304
|
const colors$1 = {
|
|
@@ -30736,11 +30573,11 @@ const typography = {
|
|
|
30736
30573
|
};
|
|
30737
30574
|
|
|
30738
30575
|
var globalStyles = /*#__PURE__*/Object.freeze({
|
|
30739
|
-
|
|
30740
|
-
|
|
30741
|
-
|
|
30742
|
-
|
|
30743
|
-
|
|
30576
|
+
__proto__: null,
|
|
30577
|
+
colors: colors$1,
|
|
30578
|
+
borderRadius: borderRadius,
|
|
30579
|
+
fonts: fonts,
|
|
30580
|
+
typography: typography
|
|
30744
30581
|
});
|
|
30745
30582
|
|
|
30746
30583
|
class AnswerChoice extends React.Component {
|
|
@@ -43903,11 +43740,25 @@ const init = function init(options) {
|
|
|
43903
43740
|
});
|
|
43904
43741
|
};
|
|
43905
43742
|
|
|
43743
|
+
// This file is processed by a Rollup plugin (replace) to inject the production
|
|
43744
|
+
const libName = "@khanacademy/perseus";
|
|
43745
|
+
const libVersion = "12.0.0";
|
|
43746
|
+
addLibraryVersionToPerseusDebug(libName, libVersion);
|
|
43747
|
+
|
|
43748
|
+
const apiVersion = {
|
|
43749
|
+
major: 12,
|
|
43750
|
+
minor: 0
|
|
43751
|
+
};
|
|
43752
|
+
const itemDataVersion = {
|
|
43753
|
+
major: 0,
|
|
43754
|
+
minor: 1
|
|
43755
|
+
};
|
|
43756
|
+
|
|
43906
43757
|
var allWidgets = [...basicWidgets, ...extraWidgets];
|
|
43907
43758
|
|
|
43908
43759
|
registerWidgets(allWidgets);
|
|
43909
43760
|
const ItemVersion = getVersionVector();
|
|
43910
|
-
ItemVersion["::renderer::"] =
|
|
43761
|
+
ItemVersion["::renderer::"] = itemDataVersion;
|
|
43911
43762
|
|
|
43912
43763
|
class ArticleRenderer extends React.Component {
|
|
43913
43764
|
constructor(props) {
|
|
@@ -44462,6 +44313,9 @@ const ProvideKeypad = {
|
|
|
44462
44313
|
const {
|
|
44463
44314
|
mapObject: mapObject$1
|
|
44464
44315
|
} = objective_;
|
|
44316
|
+
/**
|
|
44317
|
+
* @depreciated use ServerItemRenderer
|
|
44318
|
+
*/
|
|
44465
44319
|
class ItemRenderer extends React.Component {
|
|
44466
44320
|
// @ts-expect-error - TS2564 - Property 'questionRenderer' has no initializer and is not definitely assigned in the constructor.
|
|
44467
44321
|
|
|
@@ -45604,24 +45458,257 @@ RangeInput.defaultProps = {
|
|
|
45604
45458
|
placeholder: [null, null]
|
|
45605
45459
|
};
|
|
45606
45460
|
|
|
45461
|
+
/* eslint-disable @khanacademy/ts-no-error-suppressions */
|
|
45462
|
+
const prettyBig = {
|
|
45463
|
+
fontSize: "150%"
|
|
45464
|
+
};
|
|
45465
|
+
const slightlyBig = {
|
|
45466
|
+
fontSize: "120%"
|
|
45467
|
+
};
|
|
45468
|
+
const symbStyle = {
|
|
45469
|
+
fontSize: "130%"
|
|
45470
|
+
};
|
|
45471
|
+
// These are functions because we want to generate a new component for each use
|
|
45472
|
+
// on the page rather than reusing an instance (which will cause an error).
|
|
45473
|
+
// Also, it's useful for things which might look different depending on the
|
|
45474
|
+
// props.
|
|
45475
|
+
|
|
45476
|
+
const basic = [() => [/*#__PURE__*/React.createElement("span", {
|
|
45477
|
+
key: "plus",
|
|
45478
|
+
style: slightlyBig
|
|
45479
|
+
}, "+"), "PLUS", i18n._("Plus")], () => [/*#__PURE__*/React.createElement("span", {
|
|
45480
|
+
key: "minus",
|
|
45481
|
+
style: prettyBig
|
|
45482
|
+
}, "-"), "MINUS", i18n._("Minus")],
|
|
45483
|
+
// TODO(joel) - display as \cdot when appropriate
|
|
45484
|
+
props => {
|
|
45485
|
+
const {
|
|
45486
|
+
TeX
|
|
45487
|
+
} = getDependencies();
|
|
45488
|
+
if (props.convertDotToTimes) {
|
|
45489
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45490
|
+
key: "times",
|
|
45491
|
+
style: prettyBig
|
|
45492
|
+
}, i18n.doNotTranslate("\\times")), "TIMES", i18n._("Multiply")];
|
|
45493
|
+
}
|
|
45494
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45495
|
+
key: "times",
|
|
45496
|
+
style: prettyBig
|
|
45497
|
+
}, i18n.doNotTranslate("\\cdot")), "CDOT", i18n._("Multiply")];
|
|
45498
|
+
}, () => {
|
|
45499
|
+
const {
|
|
45500
|
+
TeX
|
|
45501
|
+
} = getDependencies();
|
|
45502
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45503
|
+
key: "frac",
|
|
45504
|
+
style: prettyBig
|
|
45505
|
+
}, i18n.doNotTranslate("\\frac{x}{y}")), "FRAC", i18n._("Fraction, excluding the current expression")];
|
|
45506
|
+
}];
|
|
45507
|
+
const buttonSets = {
|
|
45508
|
+
basic,
|
|
45509
|
+
"basic+div": basic.concat([() => {
|
|
45510
|
+
const {
|
|
45511
|
+
TeX
|
|
45512
|
+
} = getDependencies();
|
|
45513
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45514
|
+
key: "div"
|
|
45515
|
+
}, i18n.doNotTranslate("\\div")), "DIVIDE", i18n._("Divide")];
|
|
45516
|
+
}]),
|
|
45517
|
+
trig: [() => {
|
|
45518
|
+
const {
|
|
45519
|
+
TeX
|
|
45520
|
+
} = getDependencies();
|
|
45521
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45522
|
+
key: "sin"
|
|
45523
|
+
}, i18n.doNotTranslate("\\sin")), "SIN", i18n._("Sine")];
|
|
45524
|
+
}, () => {
|
|
45525
|
+
const {
|
|
45526
|
+
TeX
|
|
45527
|
+
} = getDependencies();
|
|
45528
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45529
|
+
key: "cos"
|
|
45530
|
+
}, i18n.doNotTranslate("\\cos")), "COS", i18n._("Cosine")];
|
|
45531
|
+
}, () => {
|
|
45532
|
+
const {
|
|
45533
|
+
TeX
|
|
45534
|
+
} = getDependencies();
|
|
45535
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45536
|
+
key: "tan"
|
|
45537
|
+
}, i18n.doNotTranslate("\\tan")), "TAN", i18n._("Tangent")];
|
|
45538
|
+
}, () => {
|
|
45539
|
+
const {
|
|
45540
|
+
TeX
|
|
45541
|
+
} = getDependencies();
|
|
45542
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45543
|
+
key: "theta",
|
|
45544
|
+
style: symbStyle
|
|
45545
|
+
}, i18n.doNotTranslate("\\theta")), "THETA", i18n._("Theta")];
|
|
45546
|
+
}, () => {
|
|
45547
|
+
const {
|
|
45548
|
+
TeX
|
|
45549
|
+
} = getDependencies();
|
|
45550
|
+
return [/*#__PURE__*/React.createElement("span", {
|
|
45551
|
+
key: "phi"
|
|
45552
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
45553
|
+
className: "perseus-sr-only"
|
|
45554
|
+
}, i18n.doNotTranslate("phi")), /*#__PURE__*/React.createElement(TeX, {
|
|
45555
|
+
key: "pi",
|
|
45556
|
+
style: symbStyle
|
|
45557
|
+
}, i18n.doNotTranslate("\\phi"))), "PHI", i18n._("Phi")];
|
|
45558
|
+
}],
|
|
45559
|
+
prealgebra: [() => {
|
|
45560
|
+
const {
|
|
45561
|
+
TeX
|
|
45562
|
+
} = getDependencies();
|
|
45563
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45564
|
+
key: "sqrt"
|
|
45565
|
+
}, i18n.doNotTranslate("\\sqrt{x}")), "SQRT", i18n._("Square root")];
|
|
45566
|
+
},
|
|
45567
|
+
// TODO(joel) - how does desmos do this?
|
|
45568
|
+
() => {
|
|
45569
|
+
const {
|
|
45570
|
+
TeX
|
|
45571
|
+
} = getDependencies();
|
|
45572
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45573
|
+
key: "nthroot"
|
|
45574
|
+
}, i18n.doNotTranslate("\\sqrt[3]{x}")), "NTHROOT3", i18n._("Cube root")];
|
|
45575
|
+
}, () => {
|
|
45576
|
+
const {
|
|
45577
|
+
TeX
|
|
45578
|
+
} = getDependencies();
|
|
45579
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45580
|
+
key: "pow",
|
|
45581
|
+
style: slightlyBig
|
|
45582
|
+
}, i18n.doNotTranslate("a^b")), "POW", i18n._("Exponent")];
|
|
45583
|
+
}, () => {
|
|
45584
|
+
const {
|
|
45585
|
+
TeX
|
|
45586
|
+
} = getDependencies();
|
|
45587
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45588
|
+
key: "pi",
|
|
45589
|
+
style: slightlyBig
|
|
45590
|
+
}, i18n.doNotTranslate("\\pi")), "PI", i18n._("Pi")];
|
|
45591
|
+
}],
|
|
45592
|
+
logarithms: [() => {
|
|
45593
|
+
const {
|
|
45594
|
+
TeX
|
|
45595
|
+
} = getDependencies();
|
|
45596
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45597
|
+
key: "log"
|
|
45598
|
+
}, i18n.doNotTranslate("\\log")), "LOG", i18n._("Logarithm with base 10")];
|
|
45599
|
+
}, () => {
|
|
45600
|
+
const {
|
|
45601
|
+
TeX
|
|
45602
|
+
} = getDependencies();
|
|
45603
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45604
|
+
key: "ln"
|
|
45605
|
+
}, i18n.doNotTranslate("\\ln")), "LN", i18n._("Natural logarithm")];
|
|
45606
|
+
}, () => {
|
|
45607
|
+
const {
|
|
45608
|
+
TeX
|
|
45609
|
+
} = getDependencies();
|
|
45610
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45611
|
+
key: "log_b"
|
|
45612
|
+
}, i18n.doNotTranslate("\\log_b")), "LOG_B", i18n._("Logarithm with custom base")];
|
|
45613
|
+
}],
|
|
45614
|
+
"basic relations": [() => {
|
|
45615
|
+
const {
|
|
45616
|
+
TeX
|
|
45617
|
+
} = getDependencies();
|
|
45618
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45619
|
+
key: "eq"
|
|
45620
|
+
}, "="), "EQUAL", i18n._("Equals sign")];
|
|
45621
|
+
}, () => {
|
|
45622
|
+
const {
|
|
45623
|
+
TeX
|
|
45624
|
+
} = getDependencies();
|
|
45625
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45626
|
+
key: "lt"
|
|
45627
|
+
}, i18n.doNotTranslate("\\lt")), "LT", i18n._("Less than sign")];
|
|
45628
|
+
}, () => {
|
|
45629
|
+
const {
|
|
45630
|
+
TeX
|
|
45631
|
+
} = getDependencies();
|
|
45632
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45633
|
+
key: "gt"
|
|
45634
|
+
}, i18n.doNotTranslate("\\gt")), "GT", i18n._("Greater than sign")];
|
|
45635
|
+
}],
|
|
45636
|
+
"advanced relations": [() => {
|
|
45637
|
+
const {
|
|
45638
|
+
TeX
|
|
45639
|
+
} = getDependencies();
|
|
45640
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45641
|
+
key: "neq"
|
|
45642
|
+
}, i18n.doNotTranslate("\\neq")), "NEQ", i18n._("Not-equals sign")];
|
|
45643
|
+
}, () => {
|
|
45644
|
+
const {
|
|
45645
|
+
TeX
|
|
45646
|
+
} = getDependencies();
|
|
45647
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45648
|
+
key: "leq"
|
|
45649
|
+
}, i18n.doNotTranslate("\\leq")), "LEQ", i18n._("Less than or equal to sign")];
|
|
45650
|
+
}, () => {
|
|
45651
|
+
const {
|
|
45652
|
+
TeX
|
|
45653
|
+
} = getDependencies();
|
|
45654
|
+
return [/*#__PURE__*/React.createElement(TeX, {
|
|
45655
|
+
key: "geq"
|
|
45656
|
+
}, i18n.doNotTranslate("\\geq")), "GEQ", i18n._("Greater than or equal to sign")];
|
|
45657
|
+
}]
|
|
45658
|
+
};
|
|
45659
|
+
const buttonSetsPropType = PropTypes.arrayOf(PropTypes.oneOf(_(buttonSets).keys()));
|
|
45660
|
+
class TexButtons extends React.Component {
|
|
45661
|
+
render() {
|
|
45662
|
+
// Always show buttonSets in the same order. Note: Technically it's ok
|
|
45663
|
+
// for _.keys() to return the keys in an arbitrary order, but in
|
|
45664
|
+
// practice, they will be ordered as listed above.
|
|
45665
|
+
const sortedButtonSets = _.sortBy(this.props.sets, setName => _.keys(buttonSets).indexOf(setName));
|
|
45666
|
+
const buttons = _(sortedButtonSets).map(setName => buttonSets[setName]);
|
|
45667
|
+
const buttonRows = _(buttons).map(row => row.map(symbGen => {
|
|
45668
|
+
// create a (component, thing we should send to mathquill) pair
|
|
45669
|
+
const symbol = symbGen(this.props);
|
|
45670
|
+
return /*#__PURE__*/React.createElement("button", {
|
|
45671
|
+
onClick: () => this.props.onInsert(symbol[1]),
|
|
45672
|
+
className: "tex-button"
|
|
45673
|
+
// @ts-expect-error - TS2533 - Object is possibly 'null' or 'undefined'. | TS2339 - Property 'key' does not exist on type 'boolean | ReactChild | ReactFragment | ReactPortal'.
|
|
45674
|
+
,
|
|
45675
|
+
key: symbol[0].key,
|
|
45676
|
+
type: "button",
|
|
45677
|
+
"aria-label": symbol[2]
|
|
45678
|
+
}, symbol[0]);
|
|
45679
|
+
}));
|
|
45680
|
+
const buttonPopup = _(buttonRows).map((row, i) => {
|
|
45681
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
45682
|
+
className: "clearfix tex-button-row",
|
|
45683
|
+
key: this.props.sets[i]
|
|
45684
|
+
}, row);
|
|
45685
|
+
});
|
|
45686
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
45687
|
+
className: `${this.props.className || ""} preview-measure`
|
|
45688
|
+
}, buttonPopup);
|
|
45689
|
+
}
|
|
45690
|
+
}
|
|
45691
|
+
TexButtons.buttonSets = buttonSets;
|
|
45692
|
+
TexButtons.buttonSetsType = buttonSetsPropType;
|
|
45693
|
+
|
|
45607
45694
|
var components = /*#__PURE__*/Object.freeze({
|
|
45608
|
-
|
|
45609
|
-
|
|
45610
|
-
|
|
45611
|
-
|
|
45612
|
-
|
|
45613
|
-
|
|
45614
|
-
|
|
45615
|
-
|
|
45616
|
-
|
|
45617
|
-
|
|
45618
|
-
|
|
45619
|
-
|
|
45620
|
-
|
|
45621
|
-
|
|
45622
|
-
|
|
45623
|
-
|
|
45624
|
-
|
|
45695
|
+
__proto__: null,
|
|
45696
|
+
ButtonGroup: ButtonGroup,
|
|
45697
|
+
Graph: Graph,
|
|
45698
|
+
Graphie: Graphie,
|
|
45699
|
+
HUD: HUD,
|
|
45700
|
+
Icon: Icon,
|
|
45701
|
+
InfoTip: InfoTip,
|
|
45702
|
+
InlineIcon: InlineIcon,
|
|
45703
|
+
MathInput: MathInput,
|
|
45704
|
+
MultiButtonGroup: MultiButtonGroup,
|
|
45705
|
+
NumberInput: NumberInput,
|
|
45706
|
+
PropCheckBox: PropCheckBox,
|
|
45707
|
+
RangeInput: RangeInput,
|
|
45708
|
+
SvgImage: SvgImage,
|
|
45709
|
+
TextInput: TextInput,
|
|
45710
|
+
TexButtons: TexButtons,
|
|
45711
|
+
TextListEditor: TextListEditor
|
|
45625
45712
|
});
|
|
45626
45713
|
|
|
45627
45714
|
const devices = {
|
|
@@ -45640,10 +45727,10 @@ const lintGutterWidth = 36;
|
|
|
45640
45727
|
const perseusFrameBorderWidth = 1;
|
|
45641
45728
|
|
|
45642
45729
|
var constants = /*#__PURE__*/Object.freeze({
|
|
45643
|
-
|
|
45644
|
-
|
|
45645
|
-
|
|
45646
|
-
|
|
45730
|
+
__proto__: null,
|
|
45731
|
+
devices: devices,
|
|
45732
|
+
lintGutterWidth: lintGutterWidth,
|
|
45733
|
+
perseusFrameBorderWidth: perseusFrameBorderWidth
|
|
45647
45734
|
});
|
|
45648
45735
|
|
|
45649
45736
|
// TODO(FEI-4010): Remove `Perseus` prefix for all types here
|
|
@@ -46808,9 +46895,5 @@ const EditorJsonify = {
|
|
|
46808
46895
|
}
|
|
46809
46896
|
};
|
|
46810
46897
|
|
|
46811
|
-
|
|
46812
|
-
const apiVersion = version.apiVersion;
|
|
46813
|
-
const itemDataVersion = version.itemDataVersion;
|
|
46814
|
-
|
|
46815
|
-
export { ApiOptions, ArrowPicker, ArticleRenderer, BaseRadio, Categorizer$1 as Categorizer, changeable as Changeable, ClassNames, ColorPicker, DashPicker, dependencies as Dependencies, EditorJsonify, ElementContainer, Errors, Expression, util as GrapherUtil, Grapher$1 as GrapherWidget, HintRenderer, HintsRenderer, InputNumber$1 as InputNumber, InteractiveGraph$1 as InteractiveGraphWidget, ItemRenderer, JiptParagraphs, KhanColors, KhanMath, context as LoadingContext, Log, Matrix$1 as MatrixWidget, MultiItems, NumericInput$1 as NumericInput, PerseusError, PerseusExpressionAnswerFormConsidered, PerseusMarkdown, Plotter$1 as PlotterWidget, Radio, Renderer, ref as ServerItemRenderer, sizingUtils as SizingUtils, Table$1 as TableWidget, Transformer$1 as TransformerWidget, Util, denylist as WIDGET_PROP_DENYLIST, WidgetJsonifyDeprecated, widgets$1 as Widgets, apiVersion, buildEmptyItemTreeForShape, buildMapper, components, constants, displaySigFigs, globalConstants, globalStyles, iconPaths as icons, init, interactiveSizes$1 as interactiveSizes, isItemRenderableByVersion, itemDataVersion, itemToTree, ItemVersion as itemVersion, mediaQueries, preprocessTex, registerAllWidgetsForTesting, shapes, traverse, violatingWidgets, allWidgets as widgets };
|
|
46898
|
+
export { ApiOptions, ArrowPicker, ArticleRenderer, BaseRadio, Categorizer$1 as Categorizer, changeable as Changeable, ClassNames, ColorPicker, DashPicker, dependencies as Dependencies, EditorJsonify, ElementContainer, Errors, Expression, util as GrapherUtil, Grapher$1 as GrapherWidget, HintRenderer, HintsRenderer, InputNumber$1 as InputNumber, InteractiveGraph$1 as InteractiveGraphWidget, ItemRenderer, JiptParagraphs, KhanColors, KhanMath, context as LoadingContext, Log, Matrix$1 as MatrixWidget, MultiItems, NumericInput$1 as NumericInput, PerseusError, PerseusExpressionAnswerFormConsidered, PerseusMarkdown, Plotter$1 as PlotterWidget, Radio, Renderer, ref as ServerItemRenderer, sizingUtils as SizingUtils, Table$1 as TableWidget, Transformer$1 as TransformerWidget, Util, denylist as WIDGET_PROP_DENYLIST, WidgetJsonifyDeprecated, widgets$1 as Widgets, apiVersion, buildEmptyItemTreeForShape, buildMapper, components, constants, displaySigFigs, globalConstants, globalStyles, iconPaths as icons, init, interactiveSizes$1 as interactiveSizes, isItemRenderableByVersion, itemDataVersion, itemToTree, ItemVersion as itemVersion, libVersion, mediaQueries, preprocessTex, registerAllWidgetsForTesting, shapes, traverse, violatingWidgets, allWidgets as widgets };
|
|
46816
46899
|
//# sourceMappingURL=index.js.map
|