@khanacademy/perseus 32.0.0 → 33.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/dist/es/index.js +81 -199
- package/dist/es/index.js.map +1 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.js +79 -203
- package/dist/index.js.map +1 -1
- package/dist/perseus-types.d.ts +11 -9
- package/dist/util.d.ts +0 -1
- package/dist/widgets/interactive-graph.d.ts +0 -2
- package/dist/widgets/interactive-graphs/interactive-graph-question-builder.d.ts +4 -0
- package/dist/widgets/interactive-graphs/mafs-graph.d.ts +2 -0
- package/dist/widgets/interactive-graphs/stateful-mafs-graph.d.ts +2 -0
- package/package.json +1 -1
- package/dist/widgets/interaction/arrow-picker.d.ts +0 -12
- package/dist/widgets/interaction/color-picker.d.ts +0 -14
- package/dist/widgets/interaction/dash-picker.d.ts +0 -12
- package/dist/widgets/interaction/element-container.d.ts +0 -22
package/dist/es/index.js
CHANGED
|
@@ -3161,45 +3161,6 @@ function constrainedTickStepsFromTickSteps(tickSteps, ranges) {
|
|
|
3161
3161
|
return [constrainTickStep(tickSteps[0], ranges[0]), constrainTickStep(tickSteps[1], ranges[1])];
|
|
3162
3162
|
}
|
|
3163
3163
|
|
|
3164
|
-
/**
|
|
3165
|
-
* Transparently update deprecated props so that the code to deal
|
|
3166
|
-
* with them only lives in one place: (Widget).deprecatedProps
|
|
3167
|
-
*
|
|
3168
|
-
* For example, if a boolean `foo` was deprecated in favor of a
|
|
3169
|
-
* number 'bar':
|
|
3170
|
-
* deprecatedProps: {
|
|
3171
|
-
* foo: function(props) {
|
|
3172
|
-
* return {bar: props.foo ? 1 : 0};
|
|
3173
|
-
* }
|
|
3174
|
-
* }
|
|
3175
|
-
*/
|
|
3176
|
-
const DeprecationMixin$1 = {
|
|
3177
|
-
// This lifecycle stage is only called before first render
|
|
3178
|
-
// TODO(jangmi, CP-3288): Remove usage of `UNSAFE_componentWillMount`
|
|
3179
|
-
UNSAFE_componentWillMount: function () {
|
|
3180
|
-
const newProps = {};
|
|
3181
|
-
_.each(this.deprecatedProps, function (func, prop) {
|
|
3182
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
3183
|
-
if (_.has(this.props, prop)) {
|
|
3184
|
-
// @ts-expect-error - TS2683 - 'this' implicitly has type 'any' because it does not have a type annotation.
|
|
3185
|
-
_.extend(newProps, func(this.props));
|
|
3186
|
-
}
|
|
3187
|
-
}, this);
|
|
3188
|
-
if (!_.isEmpty(newProps)) {
|
|
3189
|
-
// Set new props directly so that widget renders correctly
|
|
3190
|
-
// when it first mounts, even though these will be overwritten
|
|
3191
|
-
// almost immediately afterwards...
|
|
3192
|
-
_.extend(this.props, newProps);
|
|
3193
|
-
|
|
3194
|
-
// ...when we propagate the new props upwards and they come
|
|
3195
|
-
// back down again.
|
|
3196
|
-
// TODO(jeff, CP-3128): Use Wonder Blocks Timing API
|
|
3197
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
3198
|
-
setTimeout(this.props.onChange, 0, newProps);
|
|
3199
|
-
}
|
|
3200
|
-
}
|
|
3201
|
-
};
|
|
3202
|
-
|
|
3203
3164
|
/**
|
|
3204
3165
|
* Approximate equality on numbers and primitives.
|
|
3205
3166
|
*/
|
|
@@ -3547,7 +3508,6 @@ const Util = {
|
|
|
3547
3508
|
gridStepFromTickStep,
|
|
3548
3509
|
tickStepFromNumTicks,
|
|
3549
3510
|
constrainedTickStepsFromTickSteps,
|
|
3550
|
-
DeprecationMixin: DeprecationMixin$1,
|
|
3551
3511
|
eq: eq$3,
|
|
3552
3512
|
deepEq: deepEq$5,
|
|
3553
3513
|
parseQueryString,
|
|
@@ -10075,11 +10035,36 @@ const setLabelMargins = function setLabelMargins(span, size) {
|
|
|
10075
10035
|
marginTop: -height / 2 - y * scale
|
|
10076
10036
|
});
|
|
10077
10037
|
} else {
|
|
10038
|
+
var _$container$css, _$container$width, _$span$css;
|
|
10039
|
+
const $container = $span.closest(".svg-image");
|
|
10040
|
+
// Ensuring that the line-height of the text doesn't throw off placement of the text element.
|
|
10041
|
+
// Inherited line-height values can really mess up placement.
|
|
10042
|
+
$container.css("line-height", "normal");
|
|
10043
|
+
|
|
10044
|
+
// The 'max-width' value is the same as the expected (100% scale) width of the graphie.
|
|
10045
|
+
// We are using jQuery to get this information since we don't have a way to pass it to this function.
|
|
10046
|
+
const expectedWidth = (_$container$css = $container.css("max-width")) != null ? _$container$css : "0px";
|
|
10047
|
+
// We can calculate the true scale of the graphie by taking actual width and dividing by the expected width.
|
|
10048
|
+
// NOTE: Using 'slice' to remove the "px" unit from the end of the expected width value.
|
|
10049
|
+
const scale = ((_$container$width = $container.width()) != null ? _$container$width : 0) / parseInt(expectedWidth.replace(/px$/, "")) * 100;
|
|
10050
|
+
|
|
10051
|
+
// Any padding needs to be scaled accordingly.
|
|
10052
|
+
const currentPadding = (_$span$css = $span.css("padding")) != null ? _$span$css : "0px";
|
|
10053
|
+
const newPadding = Math.round(parseInt(currentPadding.slice(0, -2)) * scale) / 100;
|
|
10054
|
+
|
|
10055
|
+
// "multipliers" basically move the position of the text by using 1, 0, -1
|
|
10056
|
+
// 'margin-left' and 'margin-top' are used to position the text.
|
|
10057
|
+
// Margin and font size need to be scaled accordingly.
|
|
10078
10058
|
const multipliers = labelDirections[direction || "center"];
|
|
10079
|
-
|
|
10080
|
-
marginLeft: Math.round(width * multipliers[0]),
|
|
10081
|
-
marginTop: Math.round(height * multipliers[1])
|
|
10082
|
-
|
|
10059
|
+
const styling = {
|
|
10060
|
+
marginLeft: Math.round(width * multipliers[0] * scale) / 100,
|
|
10061
|
+
marginTop: Math.round(height * multipliers[1] * scale) / 100,
|
|
10062
|
+
padding: `${newPadding}px`
|
|
10063
|
+
};
|
|
10064
|
+
if (scale !== 1) {
|
|
10065
|
+
styling["fontSize"] = `${Math.round(scale * 100) / 100}%`;
|
|
10066
|
+
}
|
|
10067
|
+
$span.css(styling);
|
|
10083
10068
|
}
|
|
10084
10069
|
};
|
|
10085
10070
|
const GraphUtils = {
|
|
@@ -17271,9 +17256,16 @@ class SvgImage extends React.Component {
|
|
|
17271
17256
|
// without coordinates. They don't seem to have any content, so
|
|
17272
17257
|
// it seems fine to just ignore them (rather than error), but
|
|
17273
17258
|
// we should figure out why this is happening.
|
|
17274
|
-
|
|
17259
|
+
|
|
17260
|
+
// 'styling' - When a default scale (1) is used,
|
|
17261
|
+
// setting the font size to 100% is redundant.
|
|
17262
|
+
// Also, setting the font size to 100% can counteract other scale-based styling.
|
|
17263
|
+
// Therefore, when the scale is not applicable,
|
|
17264
|
+
// we set the value to 'null' so that no additional styling will be set.
|
|
17265
|
+
const styling = this.props.scale !== 1 ? {
|
|
17275
17266
|
"font-size": 100 * this.props.scale + "%"
|
|
17276
|
-
}
|
|
17267
|
+
} : null;
|
|
17268
|
+
const label = graphie.label(labelData.coordinates, labelData.content, labelData.alignment, labelData.typesetAsMath, styling);
|
|
17277
17269
|
|
|
17278
17270
|
// Convert absolute positioning css from pixels to percentages
|
|
17279
17271
|
// TODO(alex): Dynamically resize font-size as well. This
|
|
@@ -32034,10 +32026,14 @@ const MafsGraph = props => {
|
|
|
32034
32026
|
state,
|
|
32035
32027
|
dispatch,
|
|
32036
32028
|
labels,
|
|
32037
|
-
readOnly
|
|
32029
|
+
readOnly,
|
|
32030
|
+
fullGraphAriaLabel,
|
|
32031
|
+
fullGraphAriaDescription
|
|
32038
32032
|
} = props;
|
|
32039
32033
|
const [width, height] = props.box;
|
|
32040
32034
|
const tickStep = props.step;
|
|
32035
|
+
const uniqueId = React.useId();
|
|
32036
|
+
const descriptionId = `interactive-graph-description-${uniqueId}`;
|
|
32041
32037
|
const graphRef = React.useRef(null);
|
|
32042
32038
|
return /*#__PURE__*/React.createElement(GraphConfigContext.Provider, {
|
|
32043
32039
|
value: {
|
|
@@ -32073,9 +32069,19 @@ const MafsGraph = props => {
|
|
|
32073
32069
|
(_graphRef$current = graphRef.current) == null || _graphRef$current.focus();
|
|
32074
32070
|
}
|
|
32075
32071
|
},
|
|
32072
|
+
"aria-label": fullGraphAriaLabel,
|
|
32073
|
+
"aria-describedby": fullGraphAriaDescription ? descriptionId : undefined,
|
|
32076
32074
|
ref: graphRef,
|
|
32077
32075
|
tabIndex: 0
|
|
32078
|
-
}, /*#__PURE__*/React.createElement(
|
|
32076
|
+
}, fullGraphAriaDescription && /*#__PURE__*/React.createElement(View, {
|
|
32077
|
+
id: descriptionId,
|
|
32078
|
+
tabIndex: -1,
|
|
32079
|
+
style: {
|
|
32080
|
+
width: 0,
|
|
32081
|
+
height: 0,
|
|
32082
|
+
overflow: "hidden"
|
|
32083
|
+
}
|
|
32084
|
+
}, fullGraphAriaDescription), /*#__PURE__*/React.createElement(LegacyGrid, {
|
|
32079
32085
|
box: props.box,
|
|
32080
32086
|
backgroundImage: props.backgroundImage
|
|
32081
32087
|
}), props.showLabelsFlag && props.lockedFigures && /*#__PURE__*/React.createElement(GraphLockedLabelsLayer, {
|
|
@@ -33316,9 +33322,6 @@ const StatefulMafsGraph = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
33316
33322
|
}));
|
|
33317
33323
|
});
|
|
33318
33324
|
|
|
33319
|
-
const {
|
|
33320
|
-
DeprecationMixin
|
|
33321
|
-
} = Util;
|
|
33322
33325
|
const TRASH_ICON_URI = "https://ka-perseus-graphie.s3.amazonaws.com/b1452c0d79fd0f7ff4c3af9488474a0a0decb361.png";
|
|
33323
33326
|
const defaultBackgroundImage = {
|
|
33324
33327
|
url: null
|
|
@@ -33347,13 +33350,6 @@ function capitalize(str) {
|
|
|
33347
33350
|
function numSteps(range, step) {
|
|
33348
33351
|
return Math.floor((range[1] - range[0]) / step);
|
|
33349
33352
|
}
|
|
33350
|
-
const deprecatedProps = {
|
|
33351
|
-
showGraph: function (props) {
|
|
33352
|
-
return {
|
|
33353
|
-
markings: props.showGraph ? "graph" : "none"
|
|
33354
|
-
};
|
|
33355
|
-
}
|
|
33356
|
-
};
|
|
33357
33353
|
const _getShouldShowInstructions = props => {
|
|
33358
33354
|
return _isClickToAddPoints(props) && (
|
|
33359
33355
|
// @ts-expect-error - TS2339 - Property 'coords' does not exist on type 'PerseusGraphType'. | TS2339 - Property 'coords' does not exist on type 'PerseusGraphType'.
|
|
@@ -33406,7 +33402,6 @@ class LegacyInteractiveGraph extends React.Component {
|
|
|
33406
33402
|
// @ts-expect-error - TS2339 - Property 'coords' does not exist on type 'PerseusGraphType'. | TS2339 - Property 'coords' does not exist on type 'PerseusGraphType'.
|
|
33407
33403
|
props.graph.coords == null || props.graph.coords.length === 0);
|
|
33408
33404
|
};
|
|
33409
|
-
this.deprecatedProps = deprecatedProps;
|
|
33410
33405
|
this.setGraphie = newGraphie => {
|
|
33411
33406
|
this.graphie = newGraphie;
|
|
33412
33407
|
this.setupGraphie();
|
|
@@ -34479,10 +34474,6 @@ class LegacyInteractiveGraph extends React.Component {
|
|
|
34479
34474
|
};
|
|
34480
34475
|
this.focus = $.noop;
|
|
34481
34476
|
}
|
|
34482
|
-
// TODO(jangmi, CP-3288): Remove usage of `UNSAFE_componentWillMount`
|
|
34483
|
-
UNSAFE_componentWillMount() {
|
|
34484
|
-
DeprecationMixin.UNSAFE_componentWillMount.call(this);
|
|
34485
|
-
}
|
|
34486
34477
|
componentDidMount() {
|
|
34487
34478
|
if (this.refs.graph) {
|
|
34488
34479
|
// eslint-disable-next-line react/no-string-refs
|
|
@@ -43161,7 +43152,7 @@ class PhetSimulation extends React.Component {
|
|
|
43161
43152
|
// http://www.html5rocks.com/en/tutorials/security/sandboxed-iframes/
|
|
43162
43153
|
const sandboxProperties = "allow-same-origin allow-scripts";
|
|
43163
43154
|
return /*#__PURE__*/React.createElement(View, {
|
|
43164
|
-
style: styles$6.
|
|
43155
|
+
style: styles$6.widgetContainer
|
|
43165
43156
|
}, this.state.banner !== null &&
|
|
43166
43157
|
/*#__PURE__*/
|
|
43167
43158
|
// TODO(anna): Make this banner focusable
|
|
@@ -43173,18 +43164,16 @@ class PhetSimulation extends React.Component {
|
|
|
43173
43164
|
layout: "floating",
|
|
43174
43165
|
kind: this.state.banner.kind,
|
|
43175
43166
|
text: this.state.banner.message
|
|
43176
|
-
})), /*#__PURE__*/React.createElement(
|
|
43167
|
+
})), /*#__PURE__*/React.createElement(View, {
|
|
43168
|
+
style: styles$6.iframeContainer
|
|
43169
|
+
}, /*#__PURE__*/React.createElement("iframe", {
|
|
43177
43170
|
ref: this.iframeRef,
|
|
43178
43171
|
title: this.props.description,
|
|
43179
43172
|
sandbox: sandboxProperties,
|
|
43180
|
-
|
|
43181
|
-
height: 225,
|
|
43182
|
-
width: "100%",
|
|
43183
|
-
borderWidth: 0
|
|
43184
|
-
},
|
|
43173
|
+
className: css(styles$6.iframeResponsive),
|
|
43185
43174
|
src: (_this$state$url = this.state.url) == null ? void 0 : _this$state$url.toString(),
|
|
43186
43175
|
allow: "fullscreen"
|
|
43187
|
-
}), /*#__PURE__*/React.createElement(IconButton, {
|
|
43176
|
+
})), /*#__PURE__*/React.createElement(IconButton, {
|
|
43188
43177
|
icon: cornersOutIcon,
|
|
43189
43178
|
onClick: () => {
|
|
43190
43179
|
var _this$iframeRef$curre;
|
|
@@ -43216,14 +43205,29 @@ const makeSafeUrl = (urlString, locale) => {
|
|
|
43216
43205
|
return url;
|
|
43217
43206
|
};
|
|
43218
43207
|
const styles$6 = StyleSheet.create({
|
|
43219
|
-
|
|
43208
|
+
widgetContainer: {
|
|
43220
43209
|
borderRadius: borderRadiusLarge,
|
|
43221
43210
|
borderWidth: 1,
|
|
43222
43211
|
borderColor: basicBorderColor,
|
|
43223
43212
|
padding: spacing.medium_16,
|
|
43224
|
-
paddingBottom: 0
|
|
43225
|
-
|
|
43226
|
-
|
|
43213
|
+
paddingBottom: 0
|
|
43214
|
+
},
|
|
43215
|
+
iframeContainer: {
|
|
43216
|
+
position: "relative",
|
|
43217
|
+
overflow: "hidden",
|
|
43218
|
+
width: "100%",
|
|
43219
|
+
// 16:9 aspect ratio
|
|
43220
|
+
paddingTop: "56.25%"
|
|
43221
|
+
},
|
|
43222
|
+
iframeResponsive: {
|
|
43223
|
+
borderWidth: 0,
|
|
43224
|
+
position: "absolute",
|
|
43225
|
+
top: 0,
|
|
43226
|
+
left: 0,
|
|
43227
|
+
bottom: 0,
|
|
43228
|
+
right: 0,
|
|
43229
|
+
width: "100%",
|
|
43230
|
+
height: "100%"
|
|
43227
43231
|
}
|
|
43228
43232
|
});
|
|
43229
43233
|
var PhetSimulation$1 = {
|
|
@@ -44737,7 +44741,7 @@ const init = function init(options) {
|
|
|
44737
44741
|
|
|
44738
44742
|
// This file is processed by a Rollup plugin (replace) to inject the production
|
|
44739
44743
|
const libName = "@khanacademy/perseus";
|
|
44740
|
-
const libVersion = "
|
|
44744
|
+
const libVersion = "33.0.0";
|
|
44741
44745
|
addLibraryVersionToPerseusDebug(libName, libVersion);
|
|
44742
44746
|
|
|
44743
44747
|
const apiVersion = {
|
|
@@ -45621,128 +45625,6 @@ const ref = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.cre
|
|
|
45621
45625
|
ref: ref
|
|
45622
45626
|
}))));
|
|
45623
45627
|
|
|
45624
|
-
class ArrowPicker extends React.Component {
|
|
45625
|
-
render() {
|
|
45626
|
-
return /*#__PURE__*/React.createElement(ButtonGroup, {
|
|
45627
|
-
value: this.props.value,
|
|
45628
|
-
allowEmpty: false,
|
|
45629
|
-
buttons: [{
|
|
45630
|
-
value: "",
|
|
45631
|
-
content: /*#__PURE__*/React.createElement("span", null, "\u2014")
|
|
45632
|
-
}, {
|
|
45633
|
-
value: "->",
|
|
45634
|
-
content: /*#__PURE__*/React.createElement("span", null, "\u2192")
|
|
45635
|
-
}
|
|
45636
|
-
/*
|
|
45637
|
-
TODO(eater): fix khan-exercises so these are supported
|
|
45638
|
-
{value: "<-", content: <span>←</span>},
|
|
45639
|
-
{value: "<->", content: <span>↔</span>}
|
|
45640
|
-
*/],
|
|
45641
|
-
|
|
45642
|
-
onChange: this.props.onChange
|
|
45643
|
-
});
|
|
45644
|
-
}
|
|
45645
|
-
}
|
|
45646
|
-
ArrowPicker.defaultProps = {
|
|
45647
|
-
value: ""
|
|
45648
|
-
};
|
|
45649
|
-
|
|
45650
|
-
const COLORS = [KhanColors.BLACK, KhanColors.BLUE, KhanColors.GREEN, KhanColors.PINK, KhanColors.PURPLE, KhanColors.RED, KhanColors.GRAY];
|
|
45651
|
-
const LIGHT_COLORS = [KhanColors.LIGHT_BLUE, KhanColors.LIGHT_ORANGE, KhanColors.LIGHT_PINK, KhanColors.LIGHT_GREEN, KhanColors.LIGHT_PURPLE, KhanColors.LIGHT_RED, "#fff"];
|
|
45652
|
-
class ColorPicker extends React.Component {
|
|
45653
|
-
render() {
|
|
45654
|
-
const colors = this.props.lightColors ? LIGHT_COLORS : COLORS;
|
|
45655
|
-
return /*#__PURE__*/React.createElement(ButtonGroup, {
|
|
45656
|
-
value: this.props.value,
|
|
45657
|
-
allowEmpty: false,
|
|
45658
|
-
buttons: _.map(colors, color => {
|
|
45659
|
-
return {
|
|
45660
|
-
value: color,
|
|
45661
|
-
content: /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("span", {
|
|
45662
|
-
className: "colorpicker-circle",
|
|
45663
|
-
style: {
|
|
45664
|
-
background: color
|
|
45665
|
-
}
|
|
45666
|
-
}), "\xA0")
|
|
45667
|
-
};
|
|
45668
|
-
}),
|
|
45669
|
-
onChange: this.props.onChange
|
|
45670
|
-
});
|
|
45671
|
-
}
|
|
45672
|
-
}
|
|
45673
|
-
ColorPicker.defaultProps = {
|
|
45674
|
-
value: KhanColors.BLACK,
|
|
45675
|
-
lightColors: false
|
|
45676
|
-
};
|
|
45677
|
-
|
|
45678
|
-
class DashPicker extends React.Component {
|
|
45679
|
-
render() {
|
|
45680
|
-
return /*#__PURE__*/React.createElement(ButtonGroup, {
|
|
45681
|
-
value: this.props.value,
|
|
45682
|
-
allowEmpty: false,
|
|
45683
|
-
buttons: [{
|
|
45684
|
-
value: "",
|
|
45685
|
-
content: /*#__PURE__*/React.createElement("span", null, "\u2014")
|
|
45686
|
-
}, {
|
|
45687
|
-
value: "-",
|
|
45688
|
-
content: /*#__PURE__*/React.createElement("span", null, "\u2013\u2013\u2013")
|
|
45689
|
-
}, {
|
|
45690
|
-
value: "- ",
|
|
45691
|
-
content: /*#__PURE__*/React.createElement("span", null, "\u2013\xA0\xA0\u2013")
|
|
45692
|
-
}, {
|
|
45693
|
-
value: ".",
|
|
45694
|
-
content: /*#__PURE__*/React.createElement("span", null, "\xB7\xB7\xB7\xB7")
|
|
45695
|
-
}, {
|
|
45696
|
-
value: ". ",
|
|
45697
|
-
content: /*#__PURE__*/React.createElement("span", null, "\xB7 \xB7 \xB7")
|
|
45698
|
-
}],
|
|
45699
|
-
onChange: this.props.onChange
|
|
45700
|
-
});
|
|
45701
|
-
}
|
|
45702
|
-
}
|
|
45703
|
-
DashPicker.defaultProps = {
|
|
45704
|
-
value: ""
|
|
45705
|
-
};
|
|
45706
|
-
|
|
45707
|
-
/* eslint-disable jsx-a11y/anchor-is-valid */
|
|
45708
|
-
class ElementContainer extends React.Component {
|
|
45709
|
-
constructor(props) {
|
|
45710
|
-
super(props);
|
|
45711
|
-
this.toggle = e => {
|
|
45712
|
-
e.preventDefault();
|
|
45713
|
-
this.setState({
|
|
45714
|
-
show: !this.state.show
|
|
45715
|
-
});
|
|
45716
|
-
};
|
|
45717
|
-
this.state = {
|
|
45718
|
-
show: props.initiallyVisible
|
|
45719
|
-
};
|
|
45720
|
-
}
|
|
45721
|
-
render() {
|
|
45722
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
45723
|
-
className: "perseus-interaction-element"
|
|
45724
|
-
}, /*#__PURE__*/React.createElement("a", {
|
|
45725
|
-
href: "#",
|
|
45726
|
-
className: "perseus-interaction-element-title " + (this.state.show ? "open" : "closed"),
|
|
45727
|
-
onClick: this.toggle
|
|
45728
|
-
}, this.state.show ? /*#__PURE__*/React.createElement(InlineIcon, iconChevronDown) : /*#__PURE__*/React.createElement(InlineIcon, iconChevronRight), this.props.title), /*#__PURE__*/React.createElement("div", {
|
|
45729
|
-
className: "perseus-interaction-element-content " + (this.state.show ? "enter" : "leave")
|
|
45730
|
-
}, this.props.children, (this.props.onUp != null || this.props.onDown != null || this.props.onDelete != null) && /*#__PURE__*/React.createElement("div", {
|
|
45731
|
-
className: "edit-controls"
|
|
45732
|
-
}, this.props.onUp != null && /*#__PURE__*/React.createElement("button", {
|
|
45733
|
-
onClick: this.props.onUp
|
|
45734
|
-
}, /*#__PURE__*/React.createElement(InlineIcon, iconCircleArrowUp)), this.props.onDown != null && /*#__PURE__*/React.createElement("button", {
|
|
45735
|
-
onClick: this.props.onDown
|
|
45736
|
-
}, /*#__PURE__*/React.createElement(InlineIcon, iconCircleArrowDown)), this.props.onDelete != null && /*#__PURE__*/React.createElement("button", {
|
|
45737
|
-
onClick: this.props.onDelete
|
|
45738
|
-
}, /*#__PURE__*/React.createElement(InlineIcon, iconTrash)))));
|
|
45739
|
-
}
|
|
45740
|
-
}
|
|
45741
|
-
ElementContainer.defaultProps = {
|
|
45742
|
-
initiallyVisible: false,
|
|
45743
|
-
title: "More"
|
|
45744
|
-
};
|
|
45745
|
-
|
|
45746
45628
|
const devices = {
|
|
45747
45629
|
PHONE: "phone",
|
|
45748
45630
|
TABLET: "tablet",
|
|
@@ -48322,5 +48204,5 @@ const EditorJsonify = {
|
|
|
48322
48204
|
}
|
|
48323
48205
|
};
|
|
48324
48206
|
|
|
48325
|
-
export { ApiOptions,
|
|
48207
|
+
export { ApiOptions, ArticleRenderer, BaseRadio, Categorizer$1 as Categorizer, changeable as Changeable, ClassNames, dependencies as Dependencies, EditorJsonify, Expression, util as GrapherUtil, Grapher$1 as GrapherWidget, HintRenderer, HintsRenderer, InputNumber$1 as InputNumber, InteractiveGraph$1 as InteractiveGraphWidget, ItemExtras, JiptParagraphs, KhanColors, KhanMath, context as LoadingContext, Log, Matrix$1 as MatrixWidget, MultiItems, NumericInput$1 as NumericInput, PerseusExpressionAnswerFormConsidered, PerseusI18nContext, PerseusI18nContextProvider, PerseusMarkdown, Plotter$1 as PlotterWidget, QUESTION_WIDGETS, Radio, Renderer, ref as ServerItemRenderer, sizingUtils as SizingUtils, Table$1 as TableWidget, Util, denylist as WIDGET_PROP_DENYLIST, WidgetJsonifyDeprecated, widgets$1 as Widgets, addWidget, apiVersion, buildEmptyItemTreeForShape, buildMapper, components, constants, contentHasWidgetType, convertWidgetNameToEnum, displaySigFigs, generateTestCategorizerWidget, generateTestExpressionWidget, generateTestInteractiveGraphWidget, generateTestNumericInputWidget, generateTestPerseusItem, generateTestRadioWidget, genericPerseusItemData, getAngleCoords, getAnswerFromUserInput, getAnswersFromWidgets, getCircleCoords, getCorrectAnswerForWidgetId, getLineCoords, getLinearSystemCoords, getPointCoords, getPolygonCoords, getQuadraticCoords, getSegmentCoords, getSinusoidCoords, getValidWidgetIds, getWidgetFromWidgetMap, getWidgetIdsFromContent, getWidgetIdsFromContentByType, getWidgetTypeByWidgetId, getWidgetsFromWidgetMap, getWidgetsMapFromItemData, globalConstants, globalStyles, iconPaths as icons, init, injectWidgets, interactiveSizes$1 as interactiveSizes, isItemRenderableByVersion, isWidgetIdInContent, isWrongAnswerSupported, itemDataVersion, itemToTree, ItemVersion as itemVersion, libVersion, lockedFigureColors, lockedFigureFillStyles, makeSafeUrl, mediaQueries, parsePerseusItem, plotterPlotTypes, preprocessTex, registerAllWidgetsForTesting, shapes, shouldHaveIndividualAnswer, traverse, usePerseusI18n, violatingWidgets, allWidgets as widgets };
|
|
48326
48208
|
//# sourceMappingURL=index.js.map
|