@khanacademy/perseus-editor 11.4.1 → 11.6.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/components/util.d.ts +1 -0
- package/dist/components/widget-editor.d.ts +1 -1
- package/dist/content-preview.d.ts +24 -0
- package/dist/es/index.js +1847 -1641
- package/dist/es/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +502 -274
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var perseusCore = require('@khanacademy/perseus-core');
|
|
6
6
|
var perseus = require('@khanacademy/perseus');
|
|
7
|
-
var React = require('react');
|
|
7
|
+
var React$1 = require('react');
|
|
8
8
|
var _ = require('underscore');
|
|
9
9
|
var createReactClass = require('create-react-class');
|
|
10
10
|
var Clickable = require('@khanacademy/wonder-blocks-clickable');
|
|
@@ -13,17 +13,19 @@ var aphrodite = require('aphrodite');
|
|
|
13
13
|
var $ = require('jquery');
|
|
14
14
|
var PropTypes = require('prop-types');
|
|
15
15
|
var wonderBlocksCore = require('@khanacademy/wonder-blocks-core');
|
|
16
|
+
var Switch = require('@khanacademy/wonder-blocks-switch');
|
|
16
17
|
var wonderBlocksIcon = require('@khanacademy/wonder-blocks-icon');
|
|
17
18
|
var caretRight = require('@phosphor-icons/core/bold/caret-right-bold.svg');
|
|
18
19
|
var classNames = require('classnames');
|
|
19
20
|
var wonderBlocksForm = require('@khanacademy/wonder-blocks-form');
|
|
21
|
+
var keypadContext = require('@khanacademy/keypad-context');
|
|
22
|
+
var mathInput = require('@khanacademy/math-input');
|
|
20
23
|
var ReactDOM = require('react-dom');
|
|
21
24
|
var kmath = require('@khanacademy/kmath');
|
|
22
25
|
var KAS = require('@khanacademy/kas');
|
|
23
26
|
var Button = require('@khanacademy/wonder-blocks-button');
|
|
24
27
|
var wonderBlocksTypography = require('@khanacademy/wonder-blocks-typography');
|
|
25
28
|
var wonderStuffCore = require('@khanacademy/wonder-stuff-core');
|
|
26
|
-
var mathInput = require('@khanacademy/math-input');
|
|
27
29
|
var wonderBlocksDropdown = require('@khanacademy/wonder-blocks-dropdown');
|
|
28
30
|
var wonderBlocksAccordion = require('@khanacademy/wonder-blocks-accordion');
|
|
29
31
|
var IconButton = require('@khanacademy/wonder-blocks-icon-button');
|
|
@@ -32,7 +34,10 @@ var caretDoubleUpIcon = require('@phosphor-icons/core/bold/caret-double-up-bold.
|
|
|
32
34
|
var caretDownIcon = require('@phosphor-icons/core/bold/caret-down-bold.svg');
|
|
33
35
|
var caretUpIcon = require('@phosphor-icons/core/bold/caret-up-bold.svg');
|
|
34
36
|
var trashIcon = require('@phosphor-icons/core/bold/trash-bold.svg');
|
|
35
|
-
var
|
|
37
|
+
var arrowFatDown = require('@phosphor-icons/core/regular/arrow-fat-down.svg');
|
|
38
|
+
var arrowFatLeft = require('@phosphor-icons/core/regular/arrow-fat-left.svg');
|
|
39
|
+
var arrowFatRight = require('@phosphor-icons/core/regular/arrow-fat-right.svg');
|
|
40
|
+
var arrowFatUp = require('@phosphor-icons/core/regular/arrow-fat-up.svg');
|
|
36
41
|
var minusCircle = require('@phosphor-icons/core/regular/minus-circle.svg');
|
|
37
42
|
var plusCircle = require('@phosphor-icons/core/regular/plus-circle.svg');
|
|
38
43
|
var Banner = require('@khanacademy/wonder-blocks-banner');
|
|
@@ -58,12 +63,13 @@ function _interopNamespace(e) {
|
|
|
58
63
|
return Object.freeze(n);
|
|
59
64
|
}
|
|
60
65
|
|
|
61
|
-
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
66
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React$1);
|
|
62
67
|
var ___default = /*#__PURE__*/_interopDefaultLegacy(_);
|
|
63
68
|
var createReactClass__default = /*#__PURE__*/_interopDefaultLegacy(createReactClass);
|
|
64
69
|
var Clickable__default = /*#__PURE__*/_interopDefaultLegacy(Clickable);
|
|
65
70
|
var $__default = /*#__PURE__*/_interopDefaultLegacy($);
|
|
66
71
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
72
|
+
var Switch__default = /*#__PURE__*/_interopDefaultLegacy(Switch);
|
|
67
73
|
var caretRight__default = /*#__PURE__*/_interopDefaultLegacy(caretRight);
|
|
68
74
|
var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
|
|
69
75
|
var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
|
|
@@ -75,7 +81,10 @@ var caretDoubleUpIcon__default = /*#__PURE__*/_interopDefaultLegacy(caretDoubleU
|
|
|
75
81
|
var caretDownIcon__default = /*#__PURE__*/_interopDefaultLegacy(caretDownIcon);
|
|
76
82
|
var caretUpIcon__default = /*#__PURE__*/_interopDefaultLegacy(caretUpIcon);
|
|
77
83
|
var trashIcon__default = /*#__PURE__*/_interopDefaultLegacy(trashIcon);
|
|
78
|
-
var
|
|
84
|
+
var arrowFatDown__default = /*#__PURE__*/_interopDefaultLegacy(arrowFatDown);
|
|
85
|
+
var arrowFatLeft__default = /*#__PURE__*/_interopDefaultLegacy(arrowFatLeft);
|
|
86
|
+
var arrowFatRight__default = /*#__PURE__*/_interopDefaultLegacy(arrowFatRight);
|
|
87
|
+
var arrowFatUp__default = /*#__PURE__*/_interopDefaultLegacy(arrowFatUp);
|
|
79
88
|
var minusCircle__default = /*#__PURE__*/_interopDefaultLegacy(minusCircle);
|
|
80
89
|
var plusCircle__default = /*#__PURE__*/_interopDefaultLegacy(plusCircle);
|
|
81
90
|
var Banner__default = /*#__PURE__*/_interopDefaultLegacy(Banner);
|
|
@@ -83,7 +92,7 @@ var arrowCounterClockwise__default = /*#__PURE__*/_interopDefaultLegacy(arrowCou
|
|
|
83
92
|
|
|
84
93
|
// This file is processed by a Rollup plugin (replace) to inject the production
|
|
85
94
|
const libName = "@khanacademy/perseus-editor";
|
|
86
|
-
const libVersion = "11.
|
|
95
|
+
const libVersion = "11.6.0";
|
|
87
96
|
perseusCore.addLibraryVersionToPerseusDebug(libName, libVersion);
|
|
88
97
|
|
|
89
98
|
function _extends() {
|
|
@@ -278,13 +287,13 @@ class SectionControlButton extends React__namespace.Component {
|
|
|
278
287
|
role: "button",
|
|
279
288
|
hideDefaultFocusRing: true,
|
|
280
289
|
"aria-label": title,
|
|
281
|
-
style: styles$
|
|
290
|
+
style: styles$T.button
|
|
282
291
|
}, _ref => {
|
|
283
292
|
return /*#__PURE__*/React__namespace.createElement(InlineIcon$a, icon);
|
|
284
293
|
});
|
|
285
294
|
}
|
|
286
295
|
}
|
|
287
|
-
const styles$
|
|
296
|
+
const styles$T = aphrodite.StyleSheet.create({
|
|
288
297
|
button: {
|
|
289
298
|
backgroundColor: wonderBlocksTokens.color.gold,
|
|
290
299
|
margin: 2,
|
|
@@ -20606,6 +20615,111 @@ const DragTarget = createReactClass__default["default"]({
|
|
|
20606
20615
|
}
|
|
20607
20616
|
});
|
|
20608
20617
|
|
|
20618
|
+
const mediaDefaultSpecLargeMarginWidth = wonderBlocksTokens.spacing.large_24;
|
|
20619
|
+
const MEDIA_DEFAULT_SPEC = {
|
|
20620
|
+
small: {
|
|
20621
|
+
query: "(max-width: 767px)",
|
|
20622
|
+
totalColumns: 4,
|
|
20623
|
+
gutterWidth: wonderBlocksTokens.spacing.medium_16,
|
|
20624
|
+
marginWidth: wonderBlocksTokens.spacing.medium_16
|
|
20625
|
+
},
|
|
20626
|
+
medium: {
|
|
20627
|
+
query: "(min-width: 768px) and (max-width: 1023px)",
|
|
20628
|
+
totalColumns: 8,
|
|
20629
|
+
gutterWidth: wonderBlocksTokens.spacing.xLarge_32,
|
|
20630
|
+
marginWidth: wonderBlocksTokens.spacing.large_24
|
|
20631
|
+
},
|
|
20632
|
+
large: {
|
|
20633
|
+
query: "(min-width: 1024px)",
|
|
20634
|
+
totalColumns: 12,
|
|
20635
|
+
gutterWidth: wonderBlocksTokens.spacing.xLarge_32,
|
|
20636
|
+
marginWidth: mediaDefaultSpecLargeMarginWidth,
|
|
20637
|
+
maxWidth: 1120 + mediaDefaultSpecLargeMarginWidth * 2
|
|
20638
|
+
}
|
|
20639
|
+
};
|
|
20640
|
+
({
|
|
20641
|
+
large: {
|
|
20642
|
+
query: "(min-width: 1px)",
|
|
20643
|
+
totalColumns: 12,
|
|
20644
|
+
gutterWidth: wonderBlocksTokens.spacing.xLarge_32,
|
|
20645
|
+
marginWidth: wonderBlocksTokens.spacing.medium_16
|
|
20646
|
+
}
|
|
20647
|
+
});
|
|
20648
|
+
({
|
|
20649
|
+
small: {
|
|
20650
|
+
query: "(max-width: 767px)",
|
|
20651
|
+
totalColumns: 4,
|
|
20652
|
+
gutterWidth: wonderBlocksTokens.spacing.medium_16,
|
|
20653
|
+
marginWidth: wonderBlocksTokens.spacing.medium_16
|
|
20654
|
+
},
|
|
20655
|
+
large: {
|
|
20656
|
+
query: "(min-width: 768px)",
|
|
20657
|
+
totalColumns: 12,
|
|
20658
|
+
gutterWidth: wonderBlocksTokens.spacing.xLarge_32,
|
|
20659
|
+
marginWidth: wonderBlocksTokens.spacing.xxLarge_48
|
|
20660
|
+
}
|
|
20661
|
+
});
|
|
20662
|
+
|
|
20663
|
+
const defaultContext = {
|
|
20664
|
+
ssrSize: "large",
|
|
20665
|
+
mediaSpec: MEDIA_DEFAULT_SPEC
|
|
20666
|
+
};
|
|
20667
|
+
const MediaLayoutContext = React__namespace.createContext(defaultContext);
|
|
20668
|
+
MediaLayoutContext.displayName = "MediaLayoutContext";
|
|
20669
|
+
|
|
20670
|
+
class Spring extends React__namespace.Component {
|
|
20671
|
+
render() {
|
|
20672
|
+
const {
|
|
20673
|
+
style
|
|
20674
|
+
} = this.props;
|
|
20675
|
+
return React__namespace.createElement(wonderBlocksCore.View, {
|
|
20676
|
+
"aria-hidden": "true",
|
|
20677
|
+
style: [styles$S.grow, style]
|
|
20678
|
+
});
|
|
20679
|
+
}
|
|
20680
|
+
}
|
|
20681
|
+
const styles$S = aphrodite.StyleSheet.create({
|
|
20682
|
+
grow: {
|
|
20683
|
+
flexGrow: 1
|
|
20684
|
+
}
|
|
20685
|
+
});
|
|
20686
|
+
|
|
20687
|
+
class Strut extends React__namespace.Component {
|
|
20688
|
+
render() {
|
|
20689
|
+
const {
|
|
20690
|
+
size,
|
|
20691
|
+
style
|
|
20692
|
+
} = this.props;
|
|
20693
|
+
return React__namespace.createElement(wonderBlocksCore.View, {
|
|
20694
|
+
"aria-hidden": "true",
|
|
20695
|
+
style: [strutStyle(size), style]
|
|
20696
|
+
});
|
|
20697
|
+
}
|
|
20698
|
+
}
|
|
20699
|
+
const strutStyle = size => {
|
|
20700
|
+
return {
|
|
20701
|
+
width: size,
|
|
20702
|
+
MsFlexBasis: size,
|
|
20703
|
+
MsFlexPreferredSize: size,
|
|
20704
|
+
WebkitFlexBasis: size,
|
|
20705
|
+
flexBasis: size,
|
|
20706
|
+
flexShrink: 0
|
|
20707
|
+
};
|
|
20708
|
+
};
|
|
20709
|
+
|
|
20710
|
+
const Spacing = {
|
|
20711
|
+
xxxxSmall_2: 2,
|
|
20712
|
+
xxxSmall_4: 4,
|
|
20713
|
+
xxSmall_6: 6,
|
|
20714
|
+
xSmall_8: 8,
|
|
20715
|
+
small_12: 12,
|
|
20716
|
+
medium_16: 16,
|
|
20717
|
+
large_24: 24,
|
|
20718
|
+
xLarge_32: 32,
|
|
20719
|
+
xxLarge_48: 48,
|
|
20720
|
+
xxxLarge_64: 64
|
|
20721
|
+
};
|
|
20722
|
+
|
|
20609
20723
|
const {
|
|
20610
20724
|
InlineIcon: InlineIcon$9
|
|
20611
20725
|
} = perseus.components;
|
|
@@ -20665,11 +20779,11 @@ class WidgetEditor extends React__namespace.Component {
|
|
|
20665
20779
|
};
|
|
20666
20780
|
this.props.onChange(newWidgetInfo, cb, silent);
|
|
20667
20781
|
};
|
|
20668
|
-
|
|
20669
|
-
|
|
20670
|
-
|
|
20671
|
-
static:
|
|
20672
|
-
}
|
|
20782
|
+
_setStatic = value => {
|
|
20783
|
+
const newWidgetInfo = {
|
|
20784
|
+
...this.state.widgetInfo,
|
|
20785
|
+
static: value
|
|
20786
|
+
};
|
|
20673
20787
|
this.props.onChange(newWidgetInfo);
|
|
20674
20788
|
};
|
|
20675
20789
|
_handleAlignmentChange = e => {
|
|
@@ -20717,13 +20831,10 @@ class WidgetEditor extends React__namespace.Component {
|
|
|
20717
20831
|
className: "perseus-widget-editor-title-id",
|
|
20718
20832
|
href: "#",
|
|
20719
20833
|
onClick: this._toggleWidget
|
|
20720
|
-
}, this.props.id, this.state.showWidget ? /*#__PURE__*/React__namespace.createElement(InlineIcon$9, iconChevronDown$1) : /*#__PURE__*/React__namespace.createElement(InlineIcon$9, iconChevronRight)), supportsStaticMode && /*#__PURE__*/React__namespace.createElement(
|
|
20721
|
-
|
|
20722
|
-
|
|
20723
|
-
|
|
20724
|
-
onClick: this._toggleStatic,
|
|
20725
|
-
className: "simple-button--small",
|
|
20726
|
-
value: widgetInfo.static ? "Unset as static" : "Set as static"
|
|
20834
|
+
}, this.props.id, this.state.showWidget ? /*#__PURE__*/React__namespace.createElement(InlineIcon$9, iconChevronDown$1) : /*#__PURE__*/React__namespace.createElement(InlineIcon$9, iconChevronRight)), supportsStaticMode && /*#__PURE__*/React__namespace.createElement(LabeledSwitch$1, {
|
|
20835
|
+
label: "Static",
|
|
20836
|
+
checked: !!widgetInfo.static,
|
|
20837
|
+
onChange: this._setStatic
|
|
20727
20838
|
}), supportedAlignments.length > 1 && /*#__PURE__*/React__namespace.createElement("select", {
|
|
20728
20839
|
className: "alignment",
|
|
20729
20840
|
value: widgetInfo.alignment,
|
|
@@ -20746,6 +20857,21 @@ class WidgetEditor extends React__namespace.Component {
|
|
|
20746
20857
|
}, widgetInfo.options))));
|
|
20747
20858
|
}
|
|
20748
20859
|
}
|
|
20860
|
+
function LabeledSwitch$1(props) {
|
|
20861
|
+
const {
|
|
20862
|
+
label,
|
|
20863
|
+
...switchProps
|
|
20864
|
+
} = props;
|
|
20865
|
+
const ids = wonderBlocksCore.useUniqueIdWithMock();
|
|
20866
|
+
const id = ids.get("switch");
|
|
20867
|
+
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement("label", {
|
|
20868
|
+
htmlFor: id
|
|
20869
|
+
}, label), /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
20870
|
+
size: Spacing.xxSmall_6
|
|
20871
|
+
}), /*#__PURE__*/React__namespace.createElement(Switch__default["default"], _extends({
|
|
20872
|
+
id: id
|
|
20873
|
+
}, switchProps)));
|
|
20874
|
+
}
|
|
20749
20875
|
|
|
20750
20876
|
class WidgetSelect extends React__namespace.Component {
|
|
20751
20877
|
shouldComponentUpdate() {
|
|
@@ -20789,13 +20915,13 @@ class WidgetSelect extends React__namespace.Component {
|
|
|
20789
20915
|
* that collapse a region.
|
|
20790
20916
|
*/
|
|
20791
20917
|
function ToggleableCaret(props) {
|
|
20792
|
-
const iconStyle = props.isExpanded ? styles$
|
|
20918
|
+
const iconStyle = props.isExpanded ? styles$R.expanded : styles$R.collapsed;
|
|
20793
20919
|
return /*#__PURE__*/React__namespace.createElement(wonderBlocksIcon.PhosphorIcon, {
|
|
20794
20920
|
icon: caretRight__default["default"],
|
|
20795
20921
|
style: iconStyle
|
|
20796
20922
|
});
|
|
20797
20923
|
}
|
|
20798
|
-
const styles$
|
|
20924
|
+
const styles$R = aphrodite.StyleSheet.create({
|
|
20799
20925
|
collapsed: {
|
|
20800
20926
|
transition: ".15s"
|
|
20801
20927
|
},
|
|
@@ -20825,16 +20951,16 @@ class TexErrorView extends React__namespace.Component {
|
|
|
20825
20951
|
showErrors
|
|
20826
20952
|
} = this.state;
|
|
20827
20953
|
return /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
20828
|
-
style: styles$
|
|
20954
|
+
style: styles$Q.errorContainer
|
|
20829
20955
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
20830
|
-
style: styles$
|
|
20956
|
+
style: styles$Q.title,
|
|
20831
20957
|
onClick: this.handleToggleTexErrors
|
|
20832
20958
|
}, /*#__PURE__*/React__namespace.createElement(ToggleableCaret, {
|
|
20833
20959
|
isExpanded: showErrors
|
|
20834
20960
|
}), "\xA0 TeX Errors (", errorList.length, ")"), showErrors && /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
20835
|
-
style: styles$
|
|
20961
|
+
style: styles$Q.errorExplanation
|
|
20836
20962
|
}, "If your math doesn't display correctly, these errors might help you troubleshoot. Message #content-kitchen for help."), showErrors && errorList.map((e, index) => /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
20837
|
-
style: styles$
|
|
20963
|
+
style: styles$Q.error,
|
|
20838
20964
|
key: index
|
|
20839
20965
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
20840
20966
|
style: {
|
|
@@ -20843,7 +20969,7 @@ class TexErrorView extends React__namespace.Component {
|
|
|
20843
20969
|
}, e.math), /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, null, e.message))));
|
|
20844
20970
|
}
|
|
20845
20971
|
}
|
|
20846
|
-
const styles$
|
|
20972
|
+
const styles$Q = aphrodite.StyleSheet.create({
|
|
20847
20973
|
title: {
|
|
20848
20974
|
backgroundColor: "#eee",
|
|
20849
20975
|
fontSize: "1.25em",
|
|
@@ -23920,7 +24046,7 @@ class ItemExtrasEditor extends React__namespace.Component {
|
|
|
23920
24046
|
}
|
|
23921
24047
|
}
|
|
23922
24048
|
const ItemExtraCheckbox = props => /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
23923
|
-
style: [styles$
|
|
24049
|
+
style: [styles$P.checkbox, props.indent ? styles$P.indented : undefined]
|
|
23924
24050
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksForm.Checkbox, {
|
|
23925
24051
|
label: /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
23926
24052
|
style: {
|
|
@@ -23930,7 +24056,7 @@ const ItemExtraCheckbox = props => /*#__PURE__*/React__namespace.createElement(w
|
|
|
23930
24056
|
checked: props.checked,
|
|
23931
24057
|
onChange: newCheckedState => props.onChange(newCheckedState)
|
|
23932
24058
|
}));
|
|
23933
|
-
const styles$
|
|
24059
|
+
const styles$P = aphrodite.StyleSheet.create({
|
|
23934
24060
|
indented: {
|
|
23935
24061
|
marginInlineStart: wonderBlocksTokens.spacing.large_24
|
|
23936
24062
|
}
|
|
@@ -24357,6 +24483,64 @@ var i18n = {
|
|
|
24357
24483
|
findImagesInItemData: findImagesInItemData
|
|
24358
24484
|
};
|
|
24359
24485
|
|
|
24486
|
+
/**
|
|
24487
|
+
* The `ContentPreview` component provides a simple preview system for Perseus
|
|
24488
|
+
* Content. Due to how Persus styles are built, the preview styling matches the
|
|
24489
|
+
* current device based on the viewport width (using `@media` queries for
|
|
24490
|
+
* `min-width` and `max-width`).
|
|
24491
|
+
*
|
|
24492
|
+
* The preview will render the mobile variant (styling and layout) when the
|
|
24493
|
+
* `previewDevice` is phone or tablet. Note that the styling cannot be matched
|
|
24494
|
+
* 100% due to the above `@media` query limitation.
|
|
24495
|
+
*/
|
|
24496
|
+
function ContentPreview(_ref) {
|
|
24497
|
+
let {
|
|
24498
|
+
question,
|
|
24499
|
+
apiOptions,
|
|
24500
|
+
seamless,
|
|
24501
|
+
linterContext,
|
|
24502
|
+
legacyPerseusLint,
|
|
24503
|
+
previewDevice,
|
|
24504
|
+
strings
|
|
24505
|
+
} = _ref;
|
|
24506
|
+
const isMobile = previewDevice !== "desktop";
|
|
24507
|
+
const className = isMobile ? "perseus-mobile" : "";
|
|
24508
|
+
return /*#__PURE__*/React.createElement(wonderBlocksCore.View, {
|
|
24509
|
+
className: `framework-perseus ${className}`,
|
|
24510
|
+
style: [styles$O.container, !seamless ? styles$O.gutter : undefined]
|
|
24511
|
+
}, /*#__PURE__*/React.createElement(keypadContext.StatefulKeypadContextProvider, null, /*#__PURE__*/React.createElement(keypadContext.KeypadContext.Consumer, null, _ref2 => {
|
|
24512
|
+
let {
|
|
24513
|
+
setKeypadActive,
|
|
24514
|
+
keypadElement,
|
|
24515
|
+
setKeypadElement
|
|
24516
|
+
} = _ref2;
|
|
24517
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(perseus.Renderer, _extends({
|
|
24518
|
+
strings: strings,
|
|
24519
|
+
apiOptions: {
|
|
24520
|
+
...apiOptions,
|
|
24521
|
+
isMobile
|
|
24522
|
+
},
|
|
24523
|
+
keypadElement: keypadElement,
|
|
24524
|
+
linterContext: linterContext,
|
|
24525
|
+
legacyPerseusLint: legacyPerseusLint
|
|
24526
|
+
}, question)), /*#__PURE__*/React.createElement(mathInput.MobileKeypad, {
|
|
24527
|
+
onAnalyticsEvent: () => Promise.resolve(),
|
|
24528
|
+
onDismiss: () => setKeypadActive(false),
|
|
24529
|
+
onElementMounted: setKeypadElement
|
|
24530
|
+
}));
|
|
24531
|
+
})));
|
|
24532
|
+
}
|
|
24533
|
+
const styles$O = aphrodite.StyleSheet.create({
|
|
24534
|
+
container: {
|
|
24535
|
+
padding: wonderBlocksTokens.spacing.xxxSmall_4,
|
|
24536
|
+
containerType: "inline-size",
|
|
24537
|
+
containerName: "perseus-root"
|
|
24538
|
+
},
|
|
24539
|
+
gutter: {
|
|
24540
|
+
marginRight: perseus.constants.lintGutterWidth
|
|
24541
|
+
}
|
|
24542
|
+
});
|
|
24543
|
+
|
|
24360
24544
|
var isObject = function (obj) {
|
|
24361
24545
|
return obj === Object(obj);
|
|
24362
24546
|
};
|
|
@@ -26346,98 +26530,6 @@ class ExplanationEditor extends React__namespace.Component {
|
|
|
26346
26530
|
}
|
|
26347
26531
|
}
|
|
26348
26532
|
|
|
26349
|
-
const mediaDefaultSpecLargeMarginWidth = wonderBlocksTokens.spacing.large_24;
|
|
26350
|
-
const MEDIA_DEFAULT_SPEC = {
|
|
26351
|
-
small: {
|
|
26352
|
-
query: "(max-width: 767px)",
|
|
26353
|
-
totalColumns: 4,
|
|
26354
|
-
gutterWidth: wonderBlocksTokens.spacing.medium_16,
|
|
26355
|
-
marginWidth: wonderBlocksTokens.spacing.medium_16
|
|
26356
|
-
},
|
|
26357
|
-
medium: {
|
|
26358
|
-
query: "(min-width: 768px) and (max-width: 1023px)",
|
|
26359
|
-
totalColumns: 8,
|
|
26360
|
-
gutterWidth: wonderBlocksTokens.spacing.xLarge_32,
|
|
26361
|
-
marginWidth: wonderBlocksTokens.spacing.large_24
|
|
26362
|
-
},
|
|
26363
|
-
large: {
|
|
26364
|
-
query: "(min-width: 1024px)",
|
|
26365
|
-
totalColumns: 12,
|
|
26366
|
-
gutterWidth: wonderBlocksTokens.spacing.xLarge_32,
|
|
26367
|
-
marginWidth: mediaDefaultSpecLargeMarginWidth,
|
|
26368
|
-
maxWidth: 1120 + mediaDefaultSpecLargeMarginWidth * 2
|
|
26369
|
-
}
|
|
26370
|
-
};
|
|
26371
|
-
({
|
|
26372
|
-
large: {
|
|
26373
|
-
query: "(min-width: 1px)",
|
|
26374
|
-
totalColumns: 12,
|
|
26375
|
-
gutterWidth: wonderBlocksTokens.spacing.xLarge_32,
|
|
26376
|
-
marginWidth: wonderBlocksTokens.spacing.medium_16
|
|
26377
|
-
}
|
|
26378
|
-
});
|
|
26379
|
-
({
|
|
26380
|
-
small: {
|
|
26381
|
-
query: "(max-width: 767px)",
|
|
26382
|
-
totalColumns: 4,
|
|
26383
|
-
gutterWidth: wonderBlocksTokens.spacing.medium_16,
|
|
26384
|
-
marginWidth: wonderBlocksTokens.spacing.medium_16
|
|
26385
|
-
},
|
|
26386
|
-
large: {
|
|
26387
|
-
query: "(min-width: 768px)",
|
|
26388
|
-
totalColumns: 12,
|
|
26389
|
-
gutterWidth: wonderBlocksTokens.spacing.xLarge_32,
|
|
26390
|
-
marginWidth: wonderBlocksTokens.spacing.xxLarge_48
|
|
26391
|
-
}
|
|
26392
|
-
});
|
|
26393
|
-
|
|
26394
|
-
const defaultContext = {
|
|
26395
|
-
ssrSize: "large",
|
|
26396
|
-
mediaSpec: MEDIA_DEFAULT_SPEC
|
|
26397
|
-
};
|
|
26398
|
-
const MediaLayoutContext = React__namespace.createContext(defaultContext);
|
|
26399
|
-
MediaLayoutContext.displayName = "MediaLayoutContext";
|
|
26400
|
-
|
|
26401
|
-
class Spring extends React__namespace.Component {
|
|
26402
|
-
render() {
|
|
26403
|
-
const {
|
|
26404
|
-
style
|
|
26405
|
-
} = this.props;
|
|
26406
|
-
return React__namespace.createElement(wonderBlocksCore.View, {
|
|
26407
|
-
"aria-hidden": "true",
|
|
26408
|
-
style: [styles$L.grow, style]
|
|
26409
|
-
});
|
|
26410
|
-
}
|
|
26411
|
-
}
|
|
26412
|
-
const styles$L = aphrodite.StyleSheet.create({
|
|
26413
|
-
grow: {
|
|
26414
|
-
flexGrow: 1
|
|
26415
|
-
}
|
|
26416
|
-
});
|
|
26417
|
-
|
|
26418
|
-
class Strut extends React__namespace.Component {
|
|
26419
|
-
render() {
|
|
26420
|
-
const {
|
|
26421
|
-
size,
|
|
26422
|
-
style
|
|
26423
|
-
} = this.props;
|
|
26424
|
-
return React__namespace.createElement(wonderBlocksCore.View, {
|
|
26425
|
-
"aria-hidden": "true",
|
|
26426
|
-
style: [strutStyle(size), style]
|
|
26427
|
-
});
|
|
26428
|
-
}
|
|
26429
|
-
}
|
|
26430
|
-
const strutStyle = size => {
|
|
26431
|
-
return {
|
|
26432
|
-
width: size,
|
|
26433
|
-
MsFlexBasis: size,
|
|
26434
|
-
MsFlexPreferredSize: size,
|
|
26435
|
-
WebkitFlexBasis: size,
|
|
26436
|
-
flexBasis: size,
|
|
26437
|
-
flexShrink: 0
|
|
26438
|
-
};
|
|
26439
|
-
};
|
|
26440
|
-
|
|
26441
26533
|
const PT = PropTypes__default["default"];
|
|
26442
26534
|
|
|
26443
26535
|
/**
|
|
@@ -26611,7 +26703,7 @@ const SortableItem = createReactClass__default["default"]({
|
|
|
26611
26703
|
}
|
|
26612
26704
|
return /*#__PURE__*/React__namespace.createElement("li", {
|
|
26613
26705
|
draggable: this.props.draggable,
|
|
26614
|
-
className: [dragState, aphrodite.css(styles$
|
|
26706
|
+
className: [dragState, aphrodite.css(styles$L.sortableListItem)].join(" "),
|
|
26615
26707
|
onDragStart: this.handleDragStart,
|
|
26616
26708
|
onDrop: this.handleDrop,
|
|
26617
26709
|
onDragEnter: this.handleDragEnter,
|
|
@@ -26619,7 +26711,7 @@ const SortableItem = createReactClass__default["default"]({
|
|
|
26619
26711
|
}, this.props.component);
|
|
26620
26712
|
}
|
|
26621
26713
|
});
|
|
26622
|
-
const styles$
|
|
26714
|
+
const styles$L = aphrodite.StyleSheet.create({
|
|
26623
26715
|
sortableListItem: {
|
|
26624
26716
|
margin: "5px 0"
|
|
26625
26717
|
}
|
|
@@ -26739,13 +26831,13 @@ class ExpressionEditor extends React__namespace.Component {
|
|
|
26739
26831
|
onChange: this.handleToggleDiv
|
|
26740
26832
|
}));
|
|
26741
26833
|
return /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.HeadingSmall, null, "Global Options"), /*#__PURE__*/React__namespace.createElement("div", {
|
|
26742
|
-
className: aphrodite.css(styles$
|
|
26834
|
+
className: aphrodite.css(styles$K.paddedY)
|
|
26743
26835
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksForm.LabeledTextField, {
|
|
26744
26836
|
label: "Visible label",
|
|
26745
26837
|
value: this.props.visibleLabel || "",
|
|
26746
26838
|
onChange: this.change("visibleLabel")
|
|
26747
26839
|
}), /*#__PURE__*/React__namespace.createElement(InfoTip$i, null, /*#__PURE__*/React__namespace.createElement("p", null, "Optional visible text; strongly encouraged to help learners using dictation software, but can be omitted if the surrounding content provides enough context."))), /*#__PURE__*/React__namespace.createElement("div", {
|
|
26748
|
-
className: aphrodite.css(styles$
|
|
26840
|
+
className: aphrodite.css(styles$K.paddedY)
|
|
26749
26841
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksForm.LabeledTextField, {
|
|
26750
26842
|
label: "Aria label",
|
|
26751
26843
|
value: this.props.ariaLabel || "",
|
|
@@ -26754,13 +26846,13 @@ class ExpressionEditor extends React__namespace.Component {
|
|
|
26754
26846
|
href: "https://www.w3.org/WAI/tips/designing/#ensure-that-form-elements-include-clearly-associated-labels",
|
|
26755
26847
|
target: "_blank"
|
|
26756
26848
|
}, "this article.")))), /*#__PURE__*/React__namespace.createElement("div", {
|
|
26757
|
-
className: aphrodite.css(styles$
|
|
26849
|
+
className: aphrodite.css(styles$K.paddedY)
|
|
26758
26850
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksForm.LabeledTextField, {
|
|
26759
26851
|
label: "Function variables",
|
|
26760
26852
|
value: this.state.functionsInternal,
|
|
26761
26853
|
onChange: this.handleFunctions
|
|
26762
26854
|
}), /*#__PURE__*/React__namespace.createElement(InfoTip$i, null, /*#__PURE__*/React__namespace.createElement("p", null, "Single-letter variables listed here will be interpreted as functions. This let us know that f(x) means \"f of x\" and not \"f times x\"."))), /*#__PURE__*/React__namespace.createElement("div", {
|
|
26763
|
-
className: aphrodite.css(styles$
|
|
26855
|
+
className: aphrodite.css(styles$K.paddedY)
|
|
26764
26856
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksForm.Checkbox, {
|
|
26765
26857
|
label: "Use \xD7 instead of \u22C5 for multiplication",
|
|
26766
26858
|
checked: this.props.times,
|
|
@@ -26770,7 +26862,7 @@ class ExpressionEditor extends React__namespace.Component {
|
|
|
26770
26862
|
});
|
|
26771
26863
|
}
|
|
26772
26864
|
}), /*#__PURE__*/React__namespace.createElement(InfoTip$i, null, /*#__PURE__*/React__namespace.createElement("p", null, "For pre-algebra problems this option displays multiplication as \\times instead of \\cdot in both the rendered output and the acceptable formats examples."))), /*#__PURE__*/React__namespace.createElement("div", {
|
|
26773
|
-
className: aphrodite.css(styles$
|
|
26865
|
+
className: aphrodite.css(styles$K.paddedY)
|
|
26774
26866
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.HeadingXSmall, null, "Button Sets"), buttonSetChoices), /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.HeadingSmall, null, "Answers"), /*#__PURE__*/React__namespace.createElement("p", {
|
|
26775
26867
|
style: {
|
|
26776
26868
|
margin: "4px 0"
|
|
@@ -26958,18 +27050,18 @@ class AnswerOption extends React__namespace.Component {
|
|
|
26958
27050
|
color: "destructive",
|
|
26959
27051
|
light: true
|
|
26960
27052
|
}, "Delete");
|
|
26961
|
-
const answerStatusCss = aphrodite.css(styles$
|
|
27053
|
+
const answerStatusCss = aphrodite.css(styles$K.answerStatus, this.props.considered === "wrong" && styles$K.answerStatusWrong, this.props.considered === "correct" && styles$K.answerStatusCorrect, this.props.considered === "ungraded" && styles$K.answerStatusUngraded);
|
|
26962
27054
|
return /*#__PURE__*/React__namespace.createElement("div", {
|
|
26963
|
-
className: aphrodite.css(styles$
|
|
27055
|
+
className: aphrodite.css(styles$K.answerOption)
|
|
26964
27056
|
}, /*#__PURE__*/React__namespace.createElement("div", {
|
|
26965
|
-
className: aphrodite.css(styles$
|
|
27057
|
+
className: aphrodite.css(styles$K.answerHandle)
|
|
26966
27058
|
}), /*#__PURE__*/React__namespace.createElement("div", {
|
|
26967
|
-
className: aphrodite.css(styles$
|
|
27059
|
+
className: aphrodite.css(styles$K.answerBody)
|
|
26968
27060
|
}, /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement("button", {
|
|
26969
27061
|
onClick: this.toggleConsidered,
|
|
26970
27062
|
className: answerStatusCss
|
|
26971
27063
|
}, this.props.considered), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement(perseus.Expression, this.props.expressionProps))), /*#__PURE__*/React__namespace.createElement("div", {
|
|
26972
|
-
className: aphrodite.css(styles$
|
|
27064
|
+
className: aphrodite.css(styles$K.paddedY, styles$K.paddedX)
|
|
26973
27065
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksForm.Checkbox, {
|
|
26974
27066
|
label: "Answer expression must have the same form.",
|
|
26975
27067
|
checked: this.props.form,
|
|
@@ -26979,7 +27071,7 @@ class AnswerOption extends React__namespace.Component {
|
|
|
26979
27071
|
});
|
|
26980
27072
|
}
|
|
26981
27073
|
}), /*#__PURE__*/React__namespace.createElement(InfoTip$i, null, /*#__PURE__*/React__namespace.createElement("p", null, "The student's answer must be in the same form. Commutativity and excess negative signs are ignored."))), /*#__PURE__*/React__namespace.createElement("div", {
|
|
26982
|
-
className: aphrodite.css(styles$
|
|
27074
|
+
className: aphrodite.css(styles$K.paddedY, styles$K.paddedX)
|
|
26983
27075
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksForm.Checkbox, {
|
|
26984
27076
|
label: "Answer expression must be fully expanded and simplified.",
|
|
26985
27077
|
checked: this.props.simplify,
|
|
@@ -26989,7 +27081,7 @@ class AnswerOption extends React__namespace.Component {
|
|
|
26989
27081
|
});
|
|
26990
27082
|
}
|
|
26991
27083
|
}), /*#__PURE__*/React__namespace.createElement(InfoTip$i, null, /*#__PURE__*/React__namespace.createElement("p", null, "The student's answer must be fully expanded and simplified. Answering this equation (x^2+2x+1) with this factored equation (x+1)^2 will render this response \"Your answer is not fully expanded and simplified.\""))), /*#__PURE__*/React__namespace.createElement("div", {
|
|
26992
|
-
className: aphrodite.css(styles$
|
|
27084
|
+
className: aphrodite.css(styles$K.buttonRow, styles$K.paddedY)
|
|
26993
27085
|
}, removeButton)));
|
|
26994
27086
|
}
|
|
26995
27087
|
handleImSure = () => {
|
|
@@ -27012,7 +27104,7 @@ class AnswerOption extends React__namespace.Component {
|
|
|
27012
27104
|
});
|
|
27013
27105
|
};
|
|
27014
27106
|
}
|
|
27015
|
-
const styles$
|
|
27107
|
+
const styles$K = aphrodite.StyleSheet.create({
|
|
27016
27108
|
paddedX: {
|
|
27017
27109
|
paddingLeft: wonderBlocksTokens.spacing.xSmall_8,
|
|
27018
27110
|
paddingRight: wonderBlocksTokens.spacing.xSmall_8
|
|
@@ -27114,10 +27206,10 @@ class GradedGroupEditor extends React__namespace.Component {
|
|
|
27114
27206
|
}, /*#__PURE__*/React__namespace.createElement("div", {
|
|
27115
27207
|
className: "perseus-widget-row"
|
|
27116
27208
|
}, /*#__PURE__*/React__namespace.createElement("label", {
|
|
27117
|
-
className: aphrodite.css(styles$
|
|
27209
|
+
className: aphrodite.css(styles$J.title)
|
|
27118
27210
|
}, "Title:", " ", /*#__PURE__*/React__namespace.createElement(TextInput$6, {
|
|
27119
27211
|
value: this.props.title,
|
|
27120
|
-
className: aphrodite.css(styles$
|
|
27212
|
+
className: aphrodite.css(styles$J.input)
|
|
27121
27213
|
// @ts-expect-error - TS2554 - Expected 3 arguments, but got 1.
|
|
27122
27214
|
,
|
|
27123
27215
|
onChange: this.change("title")
|
|
@@ -27142,7 +27234,7 @@ class GradedGroupEditor extends React__namespace.Component {
|
|
|
27142
27234
|
}, /*#__PURE__*/React__namespace.createElement(InlineIcon$3, iconPlus$1), " Add a hint"), this.props.hint && /*#__PURE__*/React__namespace.createElement("div", {
|
|
27143
27235
|
className: "perseus-hint-editor"
|
|
27144
27236
|
}, /*#__PURE__*/React__namespace.createElement("div", {
|
|
27145
|
-
className: aphrodite.css(styles$
|
|
27237
|
+
className: aphrodite.css(styles$J.hintsTitle)
|
|
27146
27238
|
}, "Hint"), /*#__PURE__*/React__namespace.createElement(Editor, {
|
|
27147
27239
|
ref: this.hintEditor,
|
|
27148
27240
|
content: this.props.hint ? this.props.hint.content : "",
|
|
@@ -27174,7 +27266,7 @@ class GradedGroupEditor extends React__namespace.Component {
|
|
|
27174
27266
|
};
|
|
27175
27267
|
};
|
|
27176
27268
|
}
|
|
27177
|
-
const styles$
|
|
27269
|
+
const styles$J = aphrodite.StyleSheet.create({
|
|
27178
27270
|
title: {
|
|
27179
27271
|
fontSize: 18,
|
|
27180
27272
|
fontWeight: "bold"
|
|
@@ -28521,13 +28613,13 @@ class InputNumberEditor extends React__namespace.Component {
|
|
|
28521
28613
|
* it's just the input itself for use writing TeX.
|
|
28522
28614
|
*/
|
|
28523
28615
|
function MathquillInput(props) {
|
|
28524
|
-
const mathFieldWrapperRef = React.useRef(null);
|
|
28525
|
-
const mathFieldInstance = React.useRef();
|
|
28616
|
+
const mathFieldWrapperRef = React$1.useRef(null);
|
|
28617
|
+
const mathFieldInstance = React$1.useRef();
|
|
28526
28618
|
const {
|
|
28527
28619
|
locale,
|
|
28528
28620
|
strings
|
|
28529
28621
|
} = mathInput.useMathInputI18n();
|
|
28530
|
-
React.useEffect(() => {
|
|
28622
|
+
React$1.useEffect(() => {
|
|
28531
28623
|
// If we have the mount for the input, but not the input
|
|
28532
28624
|
// make a new Mathquill input
|
|
28533
28625
|
if (mathFieldWrapperRef.current && !mathFieldInstance.current) {
|
|
@@ -28561,13 +28653,13 @@ function MathquillInput(props) {
|
|
|
28561
28653
|
}
|
|
28562
28654
|
});
|
|
28563
28655
|
return /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
28564
|
-
style: styles$
|
|
28656
|
+
style: styles$I.outerWrapper
|
|
28565
28657
|
}, /*#__PURE__*/React__namespace.createElement("span", {
|
|
28566
28658
|
ref: mathFieldWrapperRef,
|
|
28567
28659
|
className: "perseus-math-input mq-editable-field mq-math-mode"
|
|
28568
28660
|
}));
|
|
28569
28661
|
}
|
|
28570
|
-
const styles$
|
|
28662
|
+
const styles$I = aphrodite.StyleSheet.create({
|
|
28571
28663
|
outerWrapper: {
|
|
28572
28664
|
display: "inline-block",
|
|
28573
28665
|
borderStyle: "solid",
|
|
@@ -29637,16 +29729,16 @@ const LabeledRow = props => {
|
|
|
29637
29729
|
style
|
|
29638
29730
|
} = props;
|
|
29639
29731
|
return /*#__PURE__*/React__namespace.createElement("label", {
|
|
29640
|
-
className: aphrodite.css(styles$
|
|
29732
|
+
className: aphrodite.css(styles$H.label)
|
|
29641
29733
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
29642
|
-
style: [styles$
|
|
29734
|
+
style: [styles$H.row, style]
|
|
29643
29735
|
}, labelSide === "start" || /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelSmall, {
|
|
29644
|
-
style: styles$
|
|
29736
|
+
style: styles$H.spaceEnd
|
|
29645
29737
|
}, label), children, labelSide === "end" && /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelSmall, {
|
|
29646
|
-
style: styles$
|
|
29738
|
+
style: styles$H.spaceStart
|
|
29647
29739
|
}, label)));
|
|
29648
29740
|
};
|
|
29649
|
-
const styles$
|
|
29741
|
+
const styles$H = aphrodite.StyleSheet.create({
|
|
29650
29742
|
label: {
|
|
29651
29743
|
width: "fit-content"
|
|
29652
29744
|
},
|
|
@@ -29672,11 +29764,11 @@ function Heading(_ref) {
|
|
|
29672
29764
|
onToggle
|
|
29673
29765
|
} = _ref;
|
|
29674
29766
|
return /*#__PURE__*/React__namespace.createElement(Clickable__default["default"], {
|
|
29675
|
-
style: [styles$
|
|
29767
|
+
style: [styles$G.container, !isCollapsible && styles$G.notClickable],
|
|
29676
29768
|
disabled: !isCollapsible,
|
|
29677
29769
|
onClick: () => isCollapsible && onToggle?.(!isOpen)
|
|
29678
29770
|
}, () => /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
29679
|
-
style: styles$
|
|
29771
|
+
style: styles$G.heading
|
|
29680
29772
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelLarge, {
|
|
29681
29773
|
style: {
|
|
29682
29774
|
fontSize: 14,
|
|
@@ -29686,7 +29778,7 @@ function Heading(_ref) {
|
|
|
29686
29778
|
isExpanded: isOpen
|
|
29687
29779
|
})));
|
|
29688
29780
|
}
|
|
29689
|
-
const styles$
|
|
29781
|
+
const styles$G = aphrodite.StyleSheet.create({
|
|
29690
29782
|
container: {
|
|
29691
29783
|
marginTop: wonderBlocksTokens.spacing.small_12,
|
|
29692
29784
|
// NOTE(jeremy): This is the inverse of the @editorPadding CSS
|
|
@@ -29904,6 +29996,17 @@ const getQuadraticEquation = startCoords => {
|
|
|
29904
29996
|
const c = (p2[0] * p3[0] * (p2[0] - p3[0]) * p1[1] + p3[0] * p1[0] * (p3[0] - p1[0]) * p2[1] + p1[0] * p2[0] * (p1[0] - p2[0]) * p3[1]) / denom;
|
|
29905
29997
|
return "y = " + a.toFixed(3) + "x^2 + " + b.toFixed(3) + "x + " + c.toFixed(3);
|
|
29906
29998
|
};
|
|
29999
|
+
const findAngle = (point1, point2) => {
|
|
30000
|
+
const x = point1[0] - point2[0];
|
|
30001
|
+
const y = point1[1] - point2[1];
|
|
30002
|
+
return (180 + Math.atan2(-y, -x) * 180 / Math.PI + 360) % 360;
|
|
30003
|
+
};
|
|
30004
|
+
const getAngleEquation = startCoords => {
|
|
30005
|
+
const [point1, vertex, point2] = startCoords;
|
|
30006
|
+
const angle = findAngle(point2, vertex) - findAngle(point1, vertex);
|
|
30007
|
+
const roundedAngle = angle.toFixed(0);
|
|
30008
|
+
return `${roundedAngle}\u00B0 angle at (${vertex[0]}, ${vertex[1]})`;
|
|
30009
|
+
};
|
|
29907
30010
|
const shouldShowStartCoordsUI = (flags, graph) => {
|
|
29908
30011
|
// TODO(LEMS-2228): Remove flags once this is fully released
|
|
29909
30012
|
const startCoordsUiPhase1Types = ["linear", "linear-system", "ray", "segment", "circle"];
|
|
@@ -29949,17 +30052,17 @@ const LockedFigureSelect = props => {
|
|
|
29949
30052
|
const figureTypes = ["point", "line", "vector", "ellipse", "polygon"];
|
|
29950
30053
|
const figureTypesCurrent = props.showM2bFeatures ? [...figureTypes, "function"] : figureTypes;
|
|
29951
30054
|
return /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
29952
|
-
style: styles$
|
|
30055
|
+
style: styles$F.container
|
|
29953
30056
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksDropdown.ActionMenu, {
|
|
29954
30057
|
menuText: "Add locked figure",
|
|
29955
|
-
style: styles$
|
|
30058
|
+
style: styles$F.addElementSelect
|
|
29956
30059
|
}, figureTypesCurrent.map(figureType => /*#__PURE__*/React__namespace.createElement(wonderBlocksDropdown.ActionItem, {
|
|
29957
30060
|
key: `${id}-${figureType}`,
|
|
29958
30061
|
label: figureType,
|
|
29959
30062
|
onClick: () => onChange(figureType)
|
|
29960
30063
|
}))));
|
|
29961
30064
|
};
|
|
29962
|
-
const styles$
|
|
30065
|
+
const styles$F = aphrodite.StyleSheet.create({
|
|
29963
30066
|
container: {
|
|
29964
30067
|
marginTop: wonderBlocksTokens.spacing.xSmall_8
|
|
29965
30068
|
},
|
|
@@ -30029,18 +30132,18 @@ const AngleInput = props => {
|
|
|
30029
30132
|
}
|
|
30030
30133
|
return /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelMedium, {
|
|
30031
30134
|
tag: "label",
|
|
30032
|
-
style: styles$
|
|
30135
|
+
style: styles$E.row
|
|
30033
30136
|
}, "angle (degrees)", /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30034
30137
|
size: wonderBlocksTokens.spacing.xxSmall_6
|
|
30035
30138
|
}), /*#__PURE__*/React__namespace.createElement(ScrolllessNumberTextField, {
|
|
30036
30139
|
value: angleInput,
|
|
30037
30140
|
onChange: handleAngleChange,
|
|
30038
|
-
style: styles$
|
|
30141
|
+
style: styles$E.textField
|
|
30039
30142
|
}), /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30040
30143
|
size: wonderBlocksTokens.spacing.xxSmall_6
|
|
30041
30144
|
}));
|
|
30042
30145
|
};
|
|
30043
|
-
const styles$
|
|
30146
|
+
const styles$E = aphrodite.StyleSheet.create({
|
|
30044
30147
|
row: {
|
|
30045
30148
|
display: "flex",
|
|
30046
30149
|
flexDirection: "row",
|
|
@@ -30089,30 +30192,30 @@ const CoordinatePairInput = props => {
|
|
|
30089
30192
|
onChange(newCoords);
|
|
30090
30193
|
}
|
|
30091
30194
|
return /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30092
|
-
style: [styles$
|
|
30195
|
+
style: [styles$D.row, style]
|
|
30093
30196
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelMedium, {
|
|
30094
30197
|
tag: "label",
|
|
30095
|
-
style: styles$
|
|
30198
|
+
style: styles$D.row
|
|
30096
30199
|
}, labels ? labels[0] : "x coord", /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30097
30200
|
size: wonderBlocksTokens.spacing.xxSmall_6
|
|
30098
30201
|
}), /*#__PURE__*/React__namespace.createElement(ScrolllessNumberTextField, {
|
|
30099
30202
|
value: coordState[0],
|
|
30100
30203
|
onChange: newValue => handleCoordChange(newValue, 0),
|
|
30101
|
-
style: [styles$
|
|
30204
|
+
style: [styles$D.textField, error ? styles$D.errorField : undefined]
|
|
30102
30205
|
})), /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30103
30206
|
size: wonderBlocksTokens.spacing.medium_16
|
|
30104
30207
|
}), /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelMedium, {
|
|
30105
30208
|
tag: "label",
|
|
30106
|
-
style: styles$
|
|
30209
|
+
style: styles$D.row
|
|
30107
30210
|
}, labels ? labels[1] : "y coord", /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30108
30211
|
size: wonderBlocksTokens.spacing.xxSmall_6
|
|
30109
30212
|
}), /*#__PURE__*/React__namespace.createElement(ScrolllessNumberTextField, {
|
|
30110
30213
|
value: coordState[1],
|
|
30111
30214
|
onChange: newValue => handleCoordChange(newValue, 1),
|
|
30112
|
-
style: [styles$
|
|
30215
|
+
style: [styles$D.textField, error ? styles$D.errorField : undefined]
|
|
30113
30216
|
})));
|
|
30114
30217
|
};
|
|
30115
|
-
const styles$
|
|
30218
|
+
const styles$D = aphrodite.StyleSheet.create({
|
|
30116
30219
|
row: {
|
|
30117
30220
|
display: "flex",
|
|
30118
30221
|
flexDirection: "row",
|
|
@@ -30145,14 +30248,14 @@ const PerseusEditorAccordion = props => {
|
|
|
30145
30248
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksAccordion.AccordionSection, {
|
|
30146
30249
|
expanded: expanded,
|
|
30147
30250
|
onToggle: onToggle,
|
|
30148
|
-
style: [styles$
|
|
30149
|
-
headerStyle: styles$
|
|
30251
|
+
style: [styles$C.container, containerStyle],
|
|
30252
|
+
headerStyle: styles$C.accordionHeader,
|
|
30150
30253
|
header: header
|
|
30151
30254
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30152
|
-
style: [styles$
|
|
30255
|
+
style: [styles$C.accordionPanel, panelStyle]
|
|
30153
30256
|
}, children)));
|
|
30154
30257
|
};
|
|
30155
|
-
const styles$
|
|
30258
|
+
const styles$C = aphrodite.StyleSheet.create({
|
|
30156
30259
|
container: {
|
|
30157
30260
|
backgroundColor: wonderBlocksTokens.color.fadedBlue8,
|
|
30158
30261
|
marginTop: wonderBlocksTokens.spacing.xSmall_8
|
|
@@ -30183,13 +30286,13 @@ const ColorSwatch = props => {
|
|
|
30183
30286
|
"aria-label":
|
|
30184
30287
|
// Don't include an aria label for decorative circles.
|
|
30185
30288
|
!decorative ? `${color}, ${filled ? "filled" : "open"}` : undefined,
|
|
30186
|
-
style: [styles$
|
|
30289
|
+
style: [styles$B.colorSwatch, {
|
|
30187
30290
|
border: `4px solid ${perseus.lockedFigureColors[color]}`,
|
|
30188
30291
|
backgroundColor: filled ? perseus.lockedFigureColors[color] : wonderBlocksTokens.color.white
|
|
30189
30292
|
}]
|
|
30190
30293
|
});
|
|
30191
30294
|
};
|
|
30192
|
-
const styles$
|
|
30295
|
+
const styles$B = aphrodite.StyleSheet.create({
|
|
30193
30296
|
colorSwatch: {
|
|
30194
30297
|
// Add a white outline so that the color swatch is visible when
|
|
30195
30298
|
// the dropdown option is highlighted with its blue background.
|
|
@@ -30208,10 +30311,10 @@ const ColorSelect = props => {
|
|
|
30208
30311
|
onChange
|
|
30209
30312
|
} = props;
|
|
30210
30313
|
return /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30211
|
-
style: [styles$
|
|
30314
|
+
style: [styles$A.row, style]
|
|
30212
30315
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelMedium, {
|
|
30213
30316
|
tag: "label",
|
|
30214
|
-
style: styles$
|
|
30317
|
+
style: styles$A.row
|
|
30215
30318
|
}, "color", /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30216
30319
|
size: wonderBlocksTokens.spacing.xxSmall_6
|
|
30217
30320
|
}), /*#__PURE__*/React__namespace.createElement(wonderBlocksDropdown.SingleSelect, {
|
|
@@ -30230,7 +30333,7 @@ const ColorSelect = props => {
|
|
|
30230
30333
|
})
|
|
30231
30334
|
})))));
|
|
30232
30335
|
};
|
|
30233
|
-
const styles$
|
|
30336
|
+
const styles$A = aphrodite.StyleSheet.create({
|
|
30234
30337
|
row: {
|
|
30235
30338
|
display: "flex",
|
|
30236
30339
|
flexDirection: "row",
|
|
@@ -30249,17 +30352,17 @@ const EllipseSwatch = props => {
|
|
|
30249
30352
|
} = props;
|
|
30250
30353
|
return /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30251
30354
|
"aria-label": `${color}, stroke ${strokeStyle}, fill ${fillStyle}`,
|
|
30252
|
-
style: [styles$
|
|
30355
|
+
style: [styles$z.container, {
|
|
30253
30356
|
border: `4px ${strokeStyle} ${perseus.lockedFigureColors[color]}`
|
|
30254
30357
|
}]
|
|
30255
30358
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30256
|
-
style: [styles$
|
|
30359
|
+
style: [styles$z.innerCircle, {
|
|
30257
30360
|
backgroundColor: perseus.lockedFigureColors[color],
|
|
30258
30361
|
opacity: fillStyle === "white" ? 0 : perseus.lockedFigureFillStyles[fillStyle]
|
|
30259
30362
|
}]
|
|
30260
30363
|
}));
|
|
30261
30364
|
};
|
|
30262
|
-
const styles$
|
|
30365
|
+
const styles$z = aphrodite.StyleSheet.create({
|
|
30263
30366
|
container: {
|
|
30264
30367
|
// Add a white outline so that the color swatch is visible when
|
|
30265
30368
|
// the dropdown option is highlighted with its blue background.
|
|
@@ -30285,7 +30388,7 @@ const LineStrokeSelect = props => {
|
|
|
30285
30388
|
} = props;
|
|
30286
30389
|
return /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelMedium, {
|
|
30287
30390
|
tag: "label",
|
|
30288
|
-
style: styles$
|
|
30391
|
+
style: styles$y.lineStrokeSelect
|
|
30289
30392
|
}, "stroke", /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30290
30393
|
size: wonderBlocksTokens.spacing.xxxSmall_4
|
|
30291
30394
|
}), /*#__PURE__*/React__namespace.createElement(wonderBlocksDropdown.SingleSelect, {
|
|
@@ -30302,7 +30405,7 @@ const LineStrokeSelect = props => {
|
|
|
30302
30405
|
label: "dashed"
|
|
30303
30406
|
})));
|
|
30304
30407
|
};
|
|
30305
|
-
const styles$
|
|
30408
|
+
const styles$y = aphrodite.StyleSheet.create({
|
|
30306
30409
|
lineStrokeSelect: {
|
|
30307
30410
|
display: "flex",
|
|
30308
30411
|
flexDirection: "row",
|
|
@@ -30324,40 +30427,40 @@ const LockedFigureSettingsActions = props => {
|
|
|
30324
30427
|
onRemove
|
|
30325
30428
|
} = props;
|
|
30326
30429
|
return /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30327
|
-
style: styles$
|
|
30430
|
+
style: styles$x.container
|
|
30328
30431
|
}, /*#__PURE__*/React__namespace.createElement(Button__default["default"], {
|
|
30329
30432
|
startIcon: trashIcon__default["default"],
|
|
30330
30433
|
"aria-label": `Delete locked ${figureType}`,
|
|
30331
30434
|
onClick: onRemove,
|
|
30332
30435
|
kind: "tertiary",
|
|
30333
|
-
style: styles$
|
|
30436
|
+
style: styles$x.deleteButton
|
|
30334
30437
|
}, "Delete"), /*#__PURE__*/React__namespace.createElement(Spring, null), /*#__PURE__*/React__namespace.createElement(IconButton__default["default"], {
|
|
30335
30438
|
icon: caretDoubleUpIcon__default["default"],
|
|
30336
30439
|
size: "small",
|
|
30337
30440
|
"aria-label": `Move locked ${figureType} to the back`,
|
|
30338
30441
|
onClick: () => onMove("back"),
|
|
30339
|
-
style: styles$
|
|
30442
|
+
style: styles$x.iconButton
|
|
30340
30443
|
}), /*#__PURE__*/React__namespace.createElement(IconButton__default["default"], {
|
|
30341
30444
|
icon: caretUpIcon__default["default"],
|
|
30342
30445
|
size: "small",
|
|
30343
30446
|
"aria-label": `Move locked ${figureType} backward`,
|
|
30344
30447
|
onClick: () => onMove("backward"),
|
|
30345
|
-
style: styles$
|
|
30448
|
+
style: styles$x.iconButton
|
|
30346
30449
|
}), /*#__PURE__*/React__namespace.createElement(IconButton__default["default"], {
|
|
30347
30450
|
icon: caretDownIcon__default["default"],
|
|
30348
30451
|
size: "small",
|
|
30349
30452
|
"aria-label": `Move locked ${figureType} forward`,
|
|
30350
30453
|
onClick: () => onMove("forward"),
|
|
30351
|
-
style: styles$
|
|
30454
|
+
style: styles$x.iconButton
|
|
30352
30455
|
}), /*#__PURE__*/React__namespace.createElement(IconButton__default["default"], {
|
|
30353
30456
|
icon: caretDoubleDownIcon__default["default"],
|
|
30354
30457
|
size: "small",
|
|
30355
30458
|
"aria-label": `Move locked ${figureType} to the front`,
|
|
30356
30459
|
onClick: () => onMove("front"),
|
|
30357
|
-
style: styles$
|
|
30460
|
+
style: styles$x.iconButton
|
|
30358
30461
|
}));
|
|
30359
30462
|
};
|
|
30360
|
-
const styles$
|
|
30463
|
+
const styles$x = aphrodite.StyleSheet.create({
|
|
30361
30464
|
container: {
|
|
30362
30465
|
width: "100%",
|
|
30363
30466
|
flexDirection: "row",
|
|
@@ -30404,7 +30507,7 @@ const LockedEllipseSettings = props => {
|
|
|
30404
30507
|
/*#__PURE__*/
|
|
30405
30508
|
// Summary: Ellipse, center, radius, color (opacity, dashed)
|
|
30406
30509
|
React__namespace.createElement(wonderBlocksCore.View, {
|
|
30407
|
-
style: styles$
|
|
30510
|
+
style: styles$w.row
|
|
30408
30511
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelLarge, null, `Ellipse (${center[0]}, ${center[1]}), radius ${radius[0]}, ${radius[1]}`), /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30409
30512
|
size: wonderBlocksTokens.spacing.xSmall_8
|
|
30410
30513
|
}), /*#__PURE__*/React__namespace.createElement(EllipseSwatch, {
|
|
@@ -30413,19 +30516,19 @@ const LockedEllipseSettings = props => {
|
|
|
30413
30516
|
strokeStyle: strokeStyle
|
|
30414
30517
|
}))
|
|
30415
30518
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30416
|
-
style: styles$
|
|
30519
|
+
style: styles$w.row
|
|
30417
30520
|
}, /*#__PURE__*/React__namespace.createElement(CoordinatePairInput, {
|
|
30418
30521
|
coord: center,
|
|
30419
|
-
style: styles$
|
|
30522
|
+
style: styles$w.spaceUnder,
|
|
30420
30523
|
onChange: newCoords => onChangeProps({
|
|
30421
30524
|
center: newCoords
|
|
30422
30525
|
})
|
|
30423
30526
|
}), /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30424
|
-
style: styles$
|
|
30527
|
+
style: styles$w.spaceUnder
|
|
30425
30528
|
}, /*#__PURE__*/React__namespace.createElement(InfoTip$d, null, "The coordinates for the center of the ellipse."))), /*#__PURE__*/React__namespace.createElement(CoordinatePairInput, {
|
|
30426
30529
|
coord: radius,
|
|
30427
30530
|
labels: ["x radius", "y radius"],
|
|
30428
|
-
style: styles$
|
|
30531
|
+
style: styles$w.spaceUnder,
|
|
30429
30532
|
onChange: newCoords => onChangeProps({
|
|
30430
30533
|
radius: newCoords
|
|
30431
30534
|
})
|
|
@@ -30437,7 +30540,7 @@ const LockedEllipseSettings = props => {
|
|
|
30437
30540
|
}), /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30438
30541
|
size: wonderBlocksTokens.spacing.xSmall_8
|
|
30439
30542
|
}), /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30440
|
-
style: [styles$
|
|
30543
|
+
style: [styles$w.row, styles$w.spaceUnder]
|
|
30441
30544
|
}, /*#__PURE__*/React__namespace.createElement(ColorSelect, {
|
|
30442
30545
|
selectedValue: color,
|
|
30443
30546
|
onChange: handleColorChange
|
|
@@ -30445,7 +30548,7 @@ const LockedEllipseSettings = props => {
|
|
|
30445
30548
|
size: wonderBlocksTokens.spacing.medium_16
|
|
30446
30549
|
}), /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelMedium, {
|
|
30447
30550
|
tag: "label",
|
|
30448
|
-
style: [styles$
|
|
30551
|
+
style: [styles$w.row, styles$w.truncatedWidth]
|
|
30449
30552
|
}, "fill", /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30450
30553
|
size: wonderBlocksTokens.spacing.xxSmall_6
|
|
30451
30554
|
}), /*#__PURE__*/React__namespace.createElement(wonderBlocksDropdown.SingleSelect, {
|
|
@@ -30471,7 +30574,7 @@ const LockedEllipseSettings = props => {
|
|
|
30471
30574
|
onRemove: onRemove
|
|
30472
30575
|
}));
|
|
30473
30576
|
};
|
|
30474
|
-
const styles$
|
|
30577
|
+
const styles$w = aphrodite.StyleSheet.create({
|
|
30475
30578
|
row: {
|
|
30476
30579
|
display: "flex",
|
|
30477
30580
|
flexDirection: "row",
|
|
@@ -30492,15 +30595,15 @@ const LineSwatch = props => {
|
|
|
30492
30595
|
lineStyle
|
|
30493
30596
|
} = props;
|
|
30494
30597
|
return /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30495
|
-
style: styles$
|
|
30598
|
+
style: styles$v.container
|
|
30496
30599
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30497
30600
|
"aria-label": `${color}, ${lineStyle}`,
|
|
30498
|
-
style: [styles$
|
|
30601
|
+
style: [styles$v.lineSwatch, {
|
|
30499
30602
|
border: `5px ${lineStyle} ${perseus.lockedFigureColors[color]}`
|
|
30500
30603
|
}]
|
|
30501
30604
|
}));
|
|
30502
30605
|
};
|
|
30503
|
-
const styles$
|
|
30606
|
+
const styles$v = aphrodite.StyleSheet.create({
|
|
30504
30607
|
container: {
|
|
30505
30608
|
backgroundColor: wonderBlocksTokens.color.white,
|
|
30506
30609
|
justifyContent: "center",
|
|
@@ -30535,8 +30638,8 @@ const LockedFunctionSettings = props => {
|
|
|
30535
30638
|
// Tracking the string value of domain constraints to handle interim state of
|
|
30536
30639
|
// entering a negative value, as well as representing Infinity as an empty string.
|
|
30537
30640
|
// This variable is used when specifying the values of the input fields.
|
|
30538
|
-
const [domainEntries, setDomainEntries] = React.useState([domain && domain[0] !== -Infinity ? domain[0].toString() : "", domain && domain[1] !== Infinity ? domain[1].toString() : ""]);
|
|
30539
|
-
React.useEffect(() => {
|
|
30641
|
+
const [domainEntries, setDomainEntries] = React$1.useState([domain && domain[0] !== -Infinity ? domain[0].toString() : "", domain && domain[1] !== Infinity ? domain[1].toString() : ""]);
|
|
30642
|
+
React$1.useEffect(() => {
|
|
30540
30643
|
// "useEffect" used to maintain parity between domain constraints and their string representation.
|
|
30541
30644
|
setDomainEntries([domain && domain[0] !== -Infinity ? domain[0].toString() : "", domain && domain[1] !== Infinity ? domain[1].toString() : ""]);
|
|
30542
30645
|
}, [domain]);
|
|
@@ -30574,9 +30677,9 @@ const LockedFunctionSettings = props => {
|
|
|
30574
30677
|
expanded: props.expanded,
|
|
30575
30678
|
onToggle: props.onToggle,
|
|
30576
30679
|
header: /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30577
|
-
style: styles$
|
|
30680
|
+
style: styles$u.row
|
|
30578
30681
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelLarge, {
|
|
30579
|
-
style: styles$
|
|
30682
|
+
style: styles$u.accordionHeader
|
|
30580
30683
|
}, lineLabel), /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30581
30684
|
size: wonderBlocksTokens.spacing.xSmall_8
|
|
30582
30685
|
}), /*#__PURE__*/React__namespace.createElement(LineSwatch, {
|
|
@@ -30584,7 +30687,7 @@ const LockedFunctionSettings = props => {
|
|
|
30584
30687
|
lineStyle: strokeStyle
|
|
30585
30688
|
}))
|
|
30586
30689
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30587
|
-
style: [styles$
|
|
30690
|
+
style: [styles$u.row, styles$u.spaceUnder]
|
|
30588
30691
|
}, /*#__PURE__*/React__namespace.createElement(ColorSelect, {
|
|
30589
30692
|
selectedValue: lineColor,
|
|
30590
30693
|
onChange: newValue => {
|
|
@@ -30598,14 +30701,14 @@ const LockedFunctionSettings = props => {
|
|
|
30598
30701
|
handlePropChange("strokeStyle", newValue);
|
|
30599
30702
|
}
|
|
30600
30703
|
})), /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30601
|
-
style: [styles$
|
|
30704
|
+
style: [styles$u.row, styles$u.rowSpace]
|
|
30602
30705
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksDropdown.SingleSelect, {
|
|
30603
30706
|
selectedValue: directionalAxis,
|
|
30604
30707
|
onChange: newValue => {
|
|
30605
30708
|
handlePropChange("directionalAxis", newValue);
|
|
30606
30709
|
},
|
|
30607
30710
|
"aria-label": "equation prefix",
|
|
30608
|
-
style: styles$
|
|
30711
|
+
style: styles$u.equationPrefix
|
|
30609
30712
|
// Placeholder is required, but never gets used.
|
|
30610
30713
|
,
|
|
30611
30714
|
placeholder: ""
|
|
@@ -30624,17 +30727,17 @@ const LockedFunctionSettings = props => {
|
|
|
30624
30727
|
onChange: newValue => {
|
|
30625
30728
|
handlePropChange("equation", newValue);
|
|
30626
30729
|
},
|
|
30627
|
-
style: [styles$
|
|
30730
|
+
style: [styles$u.textField]
|
|
30628
30731
|
})), /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30629
|
-
style: [styles$
|
|
30732
|
+
style: [styles$u.row, styles$u.rowSpace]
|
|
30630
30733
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelMedium, {
|
|
30631
30734
|
tag: "label",
|
|
30632
|
-
style: styles$
|
|
30735
|
+
style: styles$u.domainMin
|
|
30633
30736
|
}, "domain min", /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30634
30737
|
size: wonderBlocksTokens.spacing.xxSmall_6
|
|
30635
30738
|
}), /*#__PURE__*/React__namespace.createElement(wonderBlocksForm.TextField, {
|
|
30636
30739
|
type: "number",
|
|
30637
|
-
style: styles$
|
|
30740
|
+
style: styles$u.domainMinField,
|
|
30638
30741
|
value: domainEntries[0],
|
|
30639
30742
|
onChange: newValue => {
|
|
30640
30743
|
handleDomainChange(0, newValue);
|
|
@@ -30644,12 +30747,12 @@ const LockedFunctionSettings = props => {
|
|
|
30644
30747
|
}), /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelMedium, {
|
|
30645
30748
|
tag: "label",
|
|
30646
30749
|
"aria-label": "domain max",
|
|
30647
|
-
style: styles$
|
|
30750
|
+
style: styles$u.domainMax
|
|
30648
30751
|
}, "max", /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30649
30752
|
size: wonderBlocksTokens.spacing.xxSmall_6
|
|
30650
30753
|
}), /*#__PURE__*/React__namespace.createElement(wonderBlocksForm.TextField, {
|
|
30651
30754
|
type: "number",
|
|
30652
|
-
style: styles$
|
|
30755
|
+
style: styles$u.domainMaxField,
|
|
30653
30756
|
value: domainEntries[1],
|
|
30654
30757
|
onChange: newValue => {
|
|
30655
30758
|
handleDomainChange(1, newValue);
|
|
@@ -30660,7 +30763,7 @@ const LockedFunctionSettings = props => {
|
|
|
30660
30763
|
onRemove: onRemove
|
|
30661
30764
|
}));
|
|
30662
30765
|
};
|
|
30663
|
-
const styles$
|
|
30766
|
+
const styles$u = aphrodite.StyleSheet.create({
|
|
30664
30767
|
accordionHeader: {
|
|
30665
30768
|
textOverflow: "ellipsis",
|
|
30666
30769
|
// A maximum width needs to be specified in order for the ellipsis to work.
|
|
@@ -30725,7 +30828,7 @@ const LabeledSwitch = props => {
|
|
|
30725
30828
|
const ids = wonderBlocksCore.useUniqueIdWithMock();
|
|
30726
30829
|
const switchId = ids.get("switch");
|
|
30727
30830
|
return /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30728
|
-
style: [styles$
|
|
30831
|
+
style: [styles$t.row, style]
|
|
30729
30832
|
}, /*#__PURE__*/React__namespace.createElement(Switch__default["default"], {
|
|
30730
30833
|
id: switchId,
|
|
30731
30834
|
checked: checked,
|
|
@@ -30737,7 +30840,7 @@ const LabeledSwitch = props => {
|
|
|
30737
30840
|
htmlFor: switchId
|
|
30738
30841
|
}, label));
|
|
30739
30842
|
};
|
|
30740
|
-
const styles$
|
|
30843
|
+
const styles$t = aphrodite.StyleSheet.create({
|
|
30741
30844
|
row: {
|
|
30742
30845
|
flexDirection: "row",
|
|
30743
30846
|
alignItems: "center"
|
|
@@ -30771,13 +30874,13 @@ const DefiningPointSettings = props => {
|
|
|
30771
30874
|
return /*#__PURE__*/React__namespace.createElement(PerseusEditorAccordion, {
|
|
30772
30875
|
expanded: expanded,
|
|
30773
30876
|
onToggle: onToggle,
|
|
30774
|
-
containerStyle: styles$
|
|
30775
|
-
panelStyle: styles$
|
|
30877
|
+
containerStyle: styles$s.container,
|
|
30878
|
+
panelStyle: styles$s.accordionPanel,
|
|
30776
30879
|
header:
|
|
30777
30880
|
/*#__PURE__*/
|
|
30778
30881
|
// Summary: Point, coords, color (filled/open)
|
|
30779
30882
|
React__namespace.createElement(wonderBlocksCore.View, {
|
|
30780
|
-
style: styles$
|
|
30883
|
+
style: styles$s.row
|
|
30781
30884
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelLarge, null, `${label || "Point"} (${coord[0]}, ${coord[1]})`), /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30782
30885
|
size: wonderBlocksTokens.spacing.xSmall_8
|
|
30783
30886
|
}), showPoint && /*#__PURE__*/React__namespace.createElement(ColorSwatch, {
|
|
@@ -30787,7 +30890,7 @@ const DefiningPointSettings = props => {
|
|
|
30787
30890
|
}, /*#__PURE__*/React__namespace.createElement(CoordinatePairInput, {
|
|
30788
30891
|
coord: coord,
|
|
30789
30892
|
error: !!error,
|
|
30790
|
-
style: styles$
|
|
30893
|
+
style: styles$s.spaceUnder,
|
|
30791
30894
|
onChange: newCoords => {
|
|
30792
30895
|
onChangeProps({
|
|
30793
30896
|
coord: newCoords
|
|
@@ -30796,12 +30899,12 @@ const DefiningPointSettings = props => {
|
|
|
30796
30899
|
}), onTogglePoint && /*#__PURE__*/React__namespace.createElement(LabeledSwitch, {
|
|
30797
30900
|
label: "show point on graph",
|
|
30798
30901
|
checked: !!showPoint,
|
|
30799
|
-
style: showPoint && styles$
|
|
30902
|
+
style: showPoint && styles$s.spaceUnder,
|
|
30800
30903
|
onChange: onTogglePoint
|
|
30801
30904
|
}), showPoint && /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement(ColorSelect, {
|
|
30802
30905
|
selectedValue: pointColor,
|
|
30803
30906
|
onChange: handleColorChange,
|
|
30804
|
-
style: styles$
|
|
30907
|
+
style: styles$s.spaceUnder
|
|
30805
30908
|
}), /*#__PURE__*/React__namespace.createElement(LabeledSwitch, {
|
|
30806
30909
|
label: "open point",
|
|
30807
30910
|
checked: !filled,
|
|
@@ -30812,7 +30915,7 @@ const DefiningPointSettings = props => {
|
|
|
30812
30915
|
}
|
|
30813
30916
|
})));
|
|
30814
30917
|
};
|
|
30815
|
-
const styles$
|
|
30918
|
+
const styles$s = aphrodite.StyleSheet.create({
|
|
30816
30919
|
container: {
|
|
30817
30920
|
marginTop: wonderBlocksTokens.spacing.xSmall_8,
|
|
30818
30921
|
marginBottom: 0,
|
|
@@ -30880,7 +30983,7 @@ const LockedLineSettings = props => {
|
|
|
30880
30983
|
expanded: props.expanded,
|
|
30881
30984
|
onToggle: props.onToggle,
|
|
30882
30985
|
header: /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30883
|
-
style: styles$
|
|
30986
|
+
style: styles$r.row
|
|
30884
30987
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelLarge, null, lineLabel), /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30885
30988
|
size: wonderBlocksTokens.spacing.xSmall_8
|
|
30886
30989
|
}), /*#__PURE__*/React__namespace.createElement(LineSwatch, {
|
|
@@ -30889,7 +30992,7 @@ const LockedLineSettings = props => {
|
|
|
30889
30992
|
}))
|
|
30890
30993
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelMedium, {
|
|
30891
30994
|
tag: "label",
|
|
30892
|
-
style: [styles$
|
|
30995
|
+
style: [styles$r.row, styles$r.spaceUnder]
|
|
30893
30996
|
}, "kind", /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30894
30997
|
size: wonderBlocksTokens.spacing.xxxSmall_4
|
|
30895
30998
|
}), /*#__PURE__*/React__namespace.createElement(wonderBlocksDropdown.SingleSelect, {
|
|
@@ -30910,7 +31013,7 @@ const LockedLineSettings = props => {
|
|
|
30910
31013
|
value: "segment",
|
|
30911
31014
|
label: "segment"
|
|
30912
31015
|
}))), /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
30913
|
-
style: styles$
|
|
31016
|
+
style: styles$r.row
|
|
30914
31017
|
}, /*#__PURE__*/React__namespace.createElement(ColorSelect, {
|
|
30915
31018
|
selectedValue: lineColor,
|
|
30916
31019
|
onChange: handleColorChange
|
|
@@ -30922,7 +31025,7 @@ const LockedLineSettings = props => {
|
|
|
30922
31025
|
lineStyle: value
|
|
30923
31026
|
})
|
|
30924
31027
|
})), isInvalid && /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelMedium, {
|
|
30925
|
-
style: styles$
|
|
31028
|
+
style: styles$r.errorText
|
|
30926
31029
|
}, lengthZeroStr), /*#__PURE__*/React__namespace.createElement(DefiningPointSettings, _extends({
|
|
30927
31030
|
label: "Point 1",
|
|
30928
31031
|
showPoint: showPoint1,
|
|
@@ -30947,7 +31050,7 @@ const LockedLineSettings = props => {
|
|
|
30947
31050
|
onRemove: onRemove
|
|
30948
31051
|
}));
|
|
30949
31052
|
};
|
|
30950
|
-
const styles$
|
|
31053
|
+
const styles$r = aphrodite.StyleSheet.create({
|
|
30951
31054
|
row: {
|
|
30952
31055
|
display: "flex",
|
|
30953
31056
|
flexDirection: "row",
|
|
@@ -30988,7 +31091,7 @@ const LockedPointSettings = props => {
|
|
|
30988
31091
|
/*#__PURE__*/
|
|
30989
31092
|
// Summary: Point, coords, color (filled/open)
|
|
30990
31093
|
React__namespace.createElement(wonderBlocksCore.View, {
|
|
30991
|
-
style: styles$
|
|
31094
|
+
style: styles$q.row
|
|
30992
31095
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelLarge, null, `Point (${coord[0]}, ${coord[1]})`), /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
30993
31096
|
size: wonderBlocksTokens.spacing.xSmall_8
|
|
30994
31097
|
}), /*#__PURE__*/React__namespace.createElement(ColorSwatch, {
|
|
@@ -30997,7 +31100,7 @@ const LockedPointSettings = props => {
|
|
|
30997
31100
|
}))
|
|
30998
31101
|
}, /*#__PURE__*/React__namespace.createElement(CoordinatePairInput, {
|
|
30999
31102
|
coord: coord,
|
|
31000
|
-
style: styles$
|
|
31103
|
+
style: styles$q.spaceUnder,
|
|
31001
31104
|
onChange: newCoord => {
|
|
31002
31105
|
onChangeProps({
|
|
31003
31106
|
coord: newCoord
|
|
@@ -31006,7 +31109,7 @@ const LockedPointSettings = props => {
|
|
|
31006
31109
|
}), /*#__PURE__*/React__namespace.createElement(ColorSelect, {
|
|
31007
31110
|
selectedValue: pointColor,
|
|
31008
31111
|
onChange: handleColorChange,
|
|
31009
|
-
style: styles$
|
|
31112
|
+
style: styles$q.spaceUnder
|
|
31010
31113
|
}), /*#__PURE__*/React__namespace.createElement(LabeledSwitch, {
|
|
31011
31114
|
label: "open point",
|
|
31012
31115
|
checked: !filled,
|
|
@@ -31021,7 +31124,7 @@ const LockedPointSettings = props => {
|
|
|
31021
31124
|
onRemove: onRemove
|
|
31022
31125
|
}));
|
|
31023
31126
|
};
|
|
31024
|
-
const styles$
|
|
31127
|
+
const styles$q = aphrodite.StyleSheet.create({
|
|
31025
31128
|
row: {
|
|
31026
31129
|
flexDirection: "row",
|
|
31027
31130
|
alignItems: "center"
|
|
@@ -31039,17 +31142,17 @@ const PolygonSwatch = props => {
|
|
|
31039
31142
|
} = props;
|
|
31040
31143
|
return /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
31041
31144
|
"aria-label": `${color}, stroke ${strokeStyle}, fill ${fillStyle}`,
|
|
31042
|
-
style: [styles$
|
|
31145
|
+
style: [styles$p.container, {
|
|
31043
31146
|
border: `4px ${strokeStyle} ${perseus.lockedFigureColors[color]}`
|
|
31044
31147
|
}]
|
|
31045
31148
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
31046
|
-
style: [styles$
|
|
31149
|
+
style: [styles$p.innerSquare, {
|
|
31047
31150
|
backgroundColor: perseus.lockedFigureColors[color],
|
|
31048
31151
|
opacity: fillStyle === "white" ? 0 : perseus.lockedFigureFillStyles[fillStyle]
|
|
31049
31152
|
}]
|
|
31050
31153
|
}));
|
|
31051
31154
|
};
|
|
31052
|
-
const styles$
|
|
31155
|
+
const styles$p = aphrodite.StyleSheet.create({
|
|
31053
31156
|
container: {
|
|
31054
31157
|
// Add a white outline so that the color swatch is visible when
|
|
31055
31158
|
// the dropdown option is highlighted with its blue background.
|
|
@@ -31084,6 +31187,42 @@ const LockedPolygonSettings = props => {
|
|
|
31084
31187
|
color: newValue
|
|
31085
31188
|
});
|
|
31086
31189
|
}
|
|
31190
|
+
function handlePolygonMove(movement) {
|
|
31191
|
+
switch (movement) {
|
|
31192
|
+
case "up":
|
|
31193
|
+
onChangeProps({
|
|
31194
|
+
points: points.map(_ref => {
|
|
31195
|
+
let [x, y] = _ref;
|
|
31196
|
+
return [x, y + 1];
|
|
31197
|
+
})
|
|
31198
|
+
});
|
|
31199
|
+
break;
|
|
31200
|
+
case "down":
|
|
31201
|
+
onChangeProps({
|
|
31202
|
+
points: points.map(_ref2 => {
|
|
31203
|
+
let [x, y] = _ref2;
|
|
31204
|
+
return [x, y - 1];
|
|
31205
|
+
})
|
|
31206
|
+
});
|
|
31207
|
+
break;
|
|
31208
|
+
case "left":
|
|
31209
|
+
onChangeProps({
|
|
31210
|
+
points: points.map(_ref3 => {
|
|
31211
|
+
let [x, y] = _ref3;
|
|
31212
|
+
return [x - 1, y];
|
|
31213
|
+
})
|
|
31214
|
+
});
|
|
31215
|
+
break;
|
|
31216
|
+
case "right":
|
|
31217
|
+
onChangeProps({
|
|
31218
|
+
points: points.map(_ref4 => {
|
|
31219
|
+
let [x, y] = _ref4;
|
|
31220
|
+
return [x + 1, y];
|
|
31221
|
+
})
|
|
31222
|
+
});
|
|
31223
|
+
break;
|
|
31224
|
+
}
|
|
31225
|
+
}
|
|
31087
31226
|
return /*#__PURE__*/React__namespace.createElement(PerseusEditorAccordion, {
|
|
31088
31227
|
expanded: expanded,
|
|
31089
31228
|
onToggle: onToggle,
|
|
@@ -31091,7 +31230,7 @@ const LockedPolygonSettings = props => {
|
|
|
31091
31230
|
/*#__PURE__*/
|
|
31092
31231
|
// Summary: Polygon, number of sides, style swatch
|
|
31093
31232
|
React__namespace.createElement(wonderBlocksCore.View, {
|
|
31094
|
-
style: styles$
|
|
31233
|
+
style: styles$o.row
|
|
31095
31234
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelLarge, null, `Polygon, ${points.length} sides`), /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
31096
31235
|
size: wonderBlocksTokens.spacing.xSmall_8
|
|
31097
31236
|
}), /*#__PURE__*/React__namespace.createElement(PolygonSwatch, {
|
|
@@ -31100,7 +31239,7 @@ const LockedPolygonSettings = props => {
|
|
|
31100
31239
|
strokeStyle: strokeStyle
|
|
31101
31240
|
}))
|
|
31102
31241
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
31103
|
-
style: [styles$
|
|
31242
|
+
style: [styles$o.row, styles$o.spaceUnder]
|
|
31104
31243
|
}, /*#__PURE__*/React__namespace.createElement(ColorSelect, {
|
|
31105
31244
|
selectedValue: color,
|
|
31106
31245
|
onChange: handleColorChange
|
|
@@ -31108,7 +31247,7 @@ const LockedPolygonSettings = props => {
|
|
|
31108
31247
|
size: wonderBlocksTokens.spacing.medium_16
|
|
31109
31248
|
}), /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelMedium, {
|
|
31110
31249
|
tag: "label",
|
|
31111
|
-
style: [styles$
|
|
31250
|
+
style: [styles$o.row, styles$o.truncatedWidth]
|
|
31112
31251
|
}, "fill", /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
31113
31252
|
size: wonderBlocksTokens.spacing.xxSmall_6
|
|
31114
31253
|
}), /*#__PURE__*/React__namespace.createElement(wonderBlocksDropdown.SingleSelect, {
|
|
@@ -31134,17 +31273,17 @@ const LockedPolygonSettings = props => {
|
|
|
31134
31273
|
onChange: newValue => onChangeProps({
|
|
31135
31274
|
showVertices: newValue
|
|
31136
31275
|
}),
|
|
31137
|
-
style: styles$
|
|
31276
|
+
style: styles$o.spaceUnder
|
|
31138
31277
|
}), /*#__PURE__*/React__namespace.createElement(PerseusEditorAccordion, {
|
|
31139
31278
|
header: /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelLarge, null, "Points"),
|
|
31140
31279
|
expanded: true,
|
|
31141
|
-
containerStyle: styles$
|
|
31142
|
-
panelStyle: styles$
|
|
31280
|
+
containerStyle: styles$o.pointAccordionContainer,
|
|
31281
|
+
panelStyle: styles$o.pointAccordionPanel
|
|
31143
31282
|
}, points.map((point, index) => {
|
|
31144
31283
|
const pointLabel = String.fromCharCode(65 + index);
|
|
31145
31284
|
return /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
31146
31285
|
key: `locked-polygon-point-index-${index}`,
|
|
31147
|
-
style: [styles$
|
|
31286
|
+
style: [styles$o.row, styles$o.spaceUnder]
|
|
31148
31287
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelLarge, null, `${pointLabel}:`), /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
31149
31288
|
size: wonderBlocksTokens.spacing.medium_16
|
|
31150
31289
|
}), /*#__PURE__*/React__namespace.createElement(CoordinatePairInput, {
|
|
@@ -31172,9 +31311,11 @@ const LockedPolygonSettings = props => {
|
|
|
31172
31311
|
points: newPoints
|
|
31173
31312
|
});
|
|
31174
31313
|
},
|
|
31175
|
-
style: styles$
|
|
31314
|
+
style: styles$o.icon
|
|
31176
31315
|
}));
|
|
31177
|
-
}), /*#__PURE__*/React__namespace.createElement(
|
|
31316
|
+
}), /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
31317
|
+
style: [styles$o.row, styles$o.polygonActionsContainer]
|
|
31318
|
+
}, /*#__PURE__*/React__namespace.createElement(Button__default["default"], {
|
|
31178
31319
|
kind: "tertiary",
|
|
31179
31320
|
startIcon: plusCircle__default["default"],
|
|
31180
31321
|
onClick: () => {
|
|
@@ -31182,13 +31323,41 @@ const LockedPolygonSettings = props => {
|
|
|
31182
31323
|
points: [...points, [0, 0]]
|
|
31183
31324
|
});
|
|
31184
31325
|
}
|
|
31185
|
-
}, "Add point")), /*#__PURE__*/React__namespace.createElement(
|
|
31326
|
+
}, "Add point"), /*#__PURE__*/React__namespace.createElement(Spring, null), /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
31327
|
+
style: styles$o.movementButtonsContainer
|
|
31328
|
+
}, /*#__PURE__*/React__namespace.createElement(IconButton__default["default"], {
|
|
31329
|
+
"aria-label": "Move polygon up",
|
|
31330
|
+
style: styles$o.iconButton,
|
|
31331
|
+
size: "small",
|
|
31332
|
+
icon: arrowFatUp__default["default"],
|
|
31333
|
+
onClick: () => handlePolygonMove("up")
|
|
31334
|
+
}), /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
31335
|
+
style: styles$o.row
|
|
31336
|
+
}, /*#__PURE__*/React__namespace.createElement(IconButton__default["default"], {
|
|
31337
|
+
"aria-label": "Move polygon left",
|
|
31338
|
+
style: styles$o.iconButton,
|
|
31339
|
+
size: "small",
|
|
31340
|
+
icon: arrowFatLeft__default["default"],
|
|
31341
|
+
onClick: () => handlePolygonMove("left")
|
|
31342
|
+
}), /*#__PURE__*/React__namespace.createElement(IconButton__default["default"], {
|
|
31343
|
+
"aria-label": "Move polygon down",
|
|
31344
|
+
style: styles$o.iconButton,
|
|
31345
|
+
size: "small",
|
|
31346
|
+
icon: arrowFatDown__default["default"],
|
|
31347
|
+
onClick: () => handlePolygonMove("down")
|
|
31348
|
+
}), /*#__PURE__*/React__namespace.createElement(IconButton__default["default"], {
|
|
31349
|
+
"aria-label": "Move polygon right",
|
|
31350
|
+
style: styles$o.iconButton,
|
|
31351
|
+
size: "small",
|
|
31352
|
+
icon: arrowFatRight__default["default"],
|
|
31353
|
+
onClick: () => handlePolygonMove("right")
|
|
31354
|
+
}))))), /*#__PURE__*/React__namespace.createElement(LockedFigureSettingsActions, {
|
|
31186
31355
|
figureType: props.type,
|
|
31187
31356
|
onMove: onMove,
|
|
31188
31357
|
onRemove: onRemove
|
|
31189
31358
|
}));
|
|
31190
31359
|
};
|
|
31191
|
-
const styles$
|
|
31360
|
+
const styles$o = aphrodite.StyleSheet.create({
|
|
31192
31361
|
row: {
|
|
31193
31362
|
display: "flex",
|
|
31194
31363
|
flexDirection: "row",
|
|
@@ -31203,6 +31372,18 @@ const styles$n = aphrodite.StyleSheet.create({
|
|
|
31203
31372
|
icon: {
|
|
31204
31373
|
marginInlineStart: wonderBlocksTokens.spacing.xxxSmall_4
|
|
31205
31374
|
},
|
|
31375
|
+
polygonActionsContainer: {
|
|
31376
|
+
width: "100%"
|
|
31377
|
+
},
|
|
31378
|
+
iconButton: {
|
|
31379
|
+
margin: 0
|
|
31380
|
+
},
|
|
31381
|
+
movementButtonsContainer: {
|
|
31382
|
+
display: "flex",
|
|
31383
|
+
flexDirection: "column",
|
|
31384
|
+
alignItems: "center",
|
|
31385
|
+
minWidth: "fit-content"
|
|
31386
|
+
},
|
|
31206
31387
|
spaceUnder: {
|
|
31207
31388
|
marginBottom: wonderBlocksTokens.spacing.xSmall_8
|
|
31208
31389
|
},
|
|
@@ -31250,7 +31431,7 @@ const LockedVectorSettings = props => {
|
|
|
31250
31431
|
expanded: props.expanded,
|
|
31251
31432
|
onToggle: props.onToggle,
|
|
31252
31433
|
header: /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
31253
|
-
style: styles$
|
|
31434
|
+
style: styles$n.row
|
|
31254
31435
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelLarge, null, lineLabel), /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
31255
31436
|
size: wonderBlocksTokens.spacing.xSmall_8
|
|
31256
31437
|
}), /*#__PURE__*/React__namespace.createElement(LineSwatch, {
|
|
@@ -31258,19 +31439,19 @@ const LockedVectorSettings = props => {
|
|
|
31258
31439
|
lineStyle: "solid"
|
|
31259
31440
|
}))
|
|
31260
31441
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
31261
|
-
style: [styles$
|
|
31442
|
+
style: [styles$n.row, styles$n.spaceUnder]
|
|
31262
31443
|
}, /*#__PURE__*/React__namespace.createElement(ColorSelect, {
|
|
31263
31444
|
selectedValue: lineColor,
|
|
31264
31445
|
onChange: handleColorChange
|
|
31265
31446
|
})), isInvalid && /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelMedium, {
|
|
31266
|
-
style: styles$
|
|
31447
|
+
style: styles$n.errorText
|
|
31267
31448
|
}, lengthErrorMessage), /*#__PURE__*/React__namespace.createElement(PerseusEditorAccordion, {
|
|
31268
31449
|
expanded: true // Initial state is expanded
|
|
31269
31450
|
,
|
|
31270
|
-
containerStyle: styles$
|
|
31271
|
-
panelStyle: styles$
|
|
31451
|
+
containerStyle: styles$n.container,
|
|
31452
|
+
panelStyle: styles$n.accordionPanel,
|
|
31272
31453
|
header: /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
31273
|
-
style: styles$
|
|
31454
|
+
style: styles$n.row
|
|
31274
31455
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelLarge, null, `Tail (${tail[0]}, ${tail[1]})`))
|
|
31275
31456
|
}, /*#__PURE__*/React__namespace.createElement(CoordinatePairInput, {
|
|
31276
31457
|
coord: tail,
|
|
@@ -31281,10 +31462,10 @@ const LockedVectorSettings = props => {
|
|
|
31281
31462
|
})), /*#__PURE__*/React__namespace.createElement(PerseusEditorAccordion, {
|
|
31282
31463
|
expanded: true // Initial state is expanded
|
|
31283
31464
|
,
|
|
31284
|
-
containerStyle: styles$
|
|
31285
|
-
panelStyle: styles$
|
|
31465
|
+
containerStyle: styles$n.container,
|
|
31466
|
+
panelStyle: styles$n.accordionPanel,
|
|
31286
31467
|
header: /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
31287
|
-
style: styles$
|
|
31468
|
+
style: styles$n.row
|
|
31288
31469
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelLarge, null, `Tip (${tip[0]}, ${tip[1]})`))
|
|
31289
31470
|
}, /*#__PURE__*/React__namespace.createElement(CoordinatePairInput, {
|
|
31290
31471
|
coord: tip,
|
|
@@ -31298,7 +31479,7 @@ const LockedVectorSettings = props => {
|
|
|
31298
31479
|
onRemove: onRemove
|
|
31299
31480
|
}));
|
|
31300
31481
|
};
|
|
31301
|
-
const styles$
|
|
31482
|
+
const styles$n = aphrodite.StyleSheet.create({
|
|
31302
31483
|
accordionPanel: {
|
|
31303
31484
|
paddingBottom: wonderBlocksTokens.spacing.medium_16
|
|
31304
31485
|
},
|
|
@@ -31465,7 +31646,7 @@ const LockedFiguresSection = props => {
|
|
|
31465
31646
|
onRemove: () => removeLockedFigure(index)
|
|
31466
31647
|
}));
|
|
31467
31648
|
}), /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
31468
|
-
style: styles$
|
|
31649
|
+
style: styles$m.buttonContainer
|
|
31469
31650
|
}, /*#__PURE__*/React__namespace.createElement(LockedFigureSelect, {
|
|
31470
31651
|
showM2bFeatures: props.showM2bFeatures,
|
|
31471
31652
|
id: `${uniqueId}-select`,
|
|
@@ -31475,10 +31656,10 @@ const LockedFiguresSection = props => {
|
|
|
31475
31656
|
}), showExpandButton && /*#__PURE__*/React__namespace.createElement(Button__default["default"], {
|
|
31476
31657
|
kind: "secondary",
|
|
31477
31658
|
onClick: () => toggleExpanded(allCollapsed),
|
|
31478
|
-
style: styles$
|
|
31659
|
+
style: styles$m.button
|
|
31479
31660
|
}, buttonLabel))));
|
|
31480
31661
|
};
|
|
31481
|
-
const styles$
|
|
31662
|
+
const styles$m = aphrodite.StyleSheet.create({
|
|
31482
31663
|
buttonContainer: {
|
|
31483
31664
|
flexDirection: "row",
|
|
31484
31665
|
alignItems: "center"
|
|
@@ -31514,7 +31695,7 @@ const GraphPointsCountSelector = _ref => {
|
|
|
31514
31695
|
// Never uses placeholder, always has value
|
|
31515
31696
|
,
|
|
31516
31697
|
placeholder: "",
|
|
31517
|
-
style: styles$
|
|
31698
|
+
style: styles$l.singleSelectShort
|
|
31518
31699
|
}, [...[...Array(7).keys()].map(n => /*#__PURE__*/React__namespace.createElement(wonderBlocksDropdown.OptionItem, {
|
|
31519
31700
|
key: n,
|
|
31520
31701
|
value: `${n}`,
|
|
@@ -31525,7 +31706,7 @@ const GraphPointsCountSelector = _ref => {
|
|
|
31525
31706
|
label: "unlimited"
|
|
31526
31707
|
})]);
|
|
31527
31708
|
};
|
|
31528
|
-
const styles$
|
|
31709
|
+
const styles$l = aphrodite.StyleSheet.create({
|
|
31529
31710
|
singleSelectShort: {
|
|
31530
31711
|
// Non-standard spacing, but it's the smallest we can go
|
|
31531
31712
|
// without running into styling issues with the dropdown.
|
|
@@ -31538,7 +31719,7 @@ const GraphTypeSelector = props => {
|
|
|
31538
31719
|
selectedValue: props.graphType,
|
|
31539
31720
|
onChange: props.onChange,
|
|
31540
31721
|
placeholder: "Select a graph type",
|
|
31541
|
-
style: styles$
|
|
31722
|
+
style: styles$k.singleSelectShort
|
|
31542
31723
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksDropdown.OptionItem, {
|
|
31543
31724
|
value: "linear",
|
|
31544
31725
|
label: "Linear function"
|
|
@@ -31571,7 +31752,7 @@ const GraphTypeSelector = props => {
|
|
|
31571
31752
|
label: "Angle"
|
|
31572
31753
|
}));
|
|
31573
31754
|
};
|
|
31574
|
-
const styles$
|
|
31755
|
+
const styles$k = aphrodite.StyleSheet.create({
|
|
31575
31756
|
singleSelectShort: {
|
|
31576
31757
|
// Non-standard spacing, but it's the smallest we can go
|
|
31577
31758
|
// without running into styling issues with the dropdown.
|
|
@@ -32003,10 +32184,10 @@ class InteractiveGraphSettings extends React__namespace.Component {
|
|
|
32003
32184
|
}
|
|
32004
32185
|
}))), /*#__PURE__*/React__namespace.createElement(LabeledRow, {
|
|
32005
32186
|
label: "Background image URL:",
|
|
32006
|
-
style: styles$
|
|
32187
|
+
style: styles$j.resetSpaceTop
|
|
32007
32188
|
}, /*#__PURE__*/React__namespace.createElement("input", {
|
|
32008
32189
|
type: "text",
|
|
32009
|
-
className: aphrodite.css(styles$
|
|
32190
|
+
className: aphrodite.css(styles$j.backgroundUrlInput),
|
|
32010
32191
|
ref: this.bgUrlRef,
|
|
32011
32192
|
value: this.state.backgroundImage.url || "",
|
|
32012
32193
|
onChange: e => {
|
|
@@ -32022,9 +32203,9 @@ class InteractiveGraphSettings extends React__namespace.Component {
|
|
|
32022
32203
|
onKeyPress: this.changeBackgroundUrl,
|
|
32023
32204
|
onBlur: this.changeBackgroundUrl
|
|
32024
32205
|
}), /*#__PURE__*/React__namespace.createElement(InfoTip$c, null, /*#__PURE__*/React__namespace.createElement("p", null, "Create an image in graphie, or use the \"Add image\" function to create a background."))), /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
32025
|
-
style: styles$
|
|
32206
|
+
style: styles$j.protractorSection
|
|
32026
32207
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
32027
|
-
style: styles$
|
|
32208
|
+
style: styles$j.checkboxRow
|
|
32028
32209
|
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksForm.Checkbox, {
|
|
32029
32210
|
label: "Show protractor",
|
|
32030
32211
|
checked: this.props.showProtractor,
|
|
@@ -32033,7 +32214,7 @@ class InteractiveGraphSettings extends React__namespace.Component {
|
|
|
32033
32214
|
showProtractor: value
|
|
32034
32215
|
});
|
|
32035
32216
|
},
|
|
32036
|
-
style: styles$
|
|
32217
|
+
style: styles$j.resetSpaceTop
|
|
32037
32218
|
})), this.props.showProtractor && /*#__PURE__*/React__namespace.createElement(Banner__default["default"], {
|
|
32038
32219
|
layout: "floating",
|
|
32039
32220
|
text: "The protractor is not accessible. Please consider an alternate approach.",
|
|
@@ -32041,7 +32222,7 @@ class InteractiveGraphSettings extends React__namespace.Component {
|
|
|
32041
32222
|
}))));
|
|
32042
32223
|
}
|
|
32043
32224
|
}
|
|
32044
|
-
const styles$
|
|
32225
|
+
const styles$j = aphrodite.StyleSheet.create({
|
|
32045
32226
|
resetSpaceTop: {
|
|
32046
32227
|
marginTop: 0
|
|
32047
32228
|
},
|
|
@@ -32080,14 +32261,14 @@ const SegmentCountSelector = _ref => {
|
|
|
32080
32261
|
const num = +newValue;
|
|
32081
32262
|
onChange(num);
|
|
32082
32263
|
},
|
|
32083
|
-
style: styles$
|
|
32264
|
+
style: styles$i.singleSelectShort
|
|
32084
32265
|
}, ___default["default"].range(1, 7).map(n => /*#__PURE__*/React__namespace.createElement(wonderBlocksDropdown.OptionItem, {
|
|
32085
32266
|
key: n,
|
|
32086
32267
|
value: `${n}`,
|
|
32087
32268
|
label: `${n} segment${n > 1 ? "s" : ""}`
|
|
32088
32269
|
})));
|
|
32089
32270
|
};
|
|
32090
|
-
const styles$
|
|
32271
|
+
const styles$i = aphrodite.StyleSheet.create({
|
|
32091
32272
|
singleSelectShort: {
|
|
32092
32273
|
// Non-standard spacing, but it's the smallest we can go
|
|
32093
32274
|
// without running into styling issues with the dropdown.
|
|
@@ -32097,14 +32278,60 @@ const styles$h = aphrodite.StyleSheet.create({
|
|
|
32097
32278
|
|
|
32098
32279
|
const StartCoordsAngle = props => {
|
|
32099
32280
|
const {
|
|
32100
|
-
startCoords
|
|
32281
|
+
startCoords,
|
|
32282
|
+
onChange
|
|
32101
32283
|
} = props;
|
|
32102
|
-
return /*#__PURE__*/React__namespace.createElement(
|
|
32103
|
-
|
|
32104
|
-
|
|
32105
|
-
|
|
32106
|
-
}))
|
|
32284
|
+
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
32285
|
+
style: styles$h.equationSection
|
|
32286
|
+
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelMedium, null, "Starting equation:"), /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.BodyMonospace, {
|
|
32287
|
+
style: styles$h.equationBody
|
|
32288
|
+
}, getAngleEquation(startCoords))), /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
32289
|
+
style: styles$h.tile
|
|
32290
|
+
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelLarge, null, "Point 1:"), /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
32291
|
+
size: wonderBlocksTokens.spacing.small_12
|
|
32292
|
+
}), /*#__PURE__*/React__namespace.createElement(CoordinatePairInput, {
|
|
32293
|
+
coord: startCoords[0],
|
|
32294
|
+
labels: ["x", "y"],
|
|
32295
|
+
onChange: value => onChange([value, startCoords[1], startCoords[2]])
|
|
32296
|
+
})), /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
32297
|
+
style: styles$h.tile
|
|
32298
|
+
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelLarge, null, "Vertex:"), /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
32299
|
+
size: wonderBlocksTokens.spacing.small_12
|
|
32300
|
+
}), /*#__PURE__*/React__namespace.createElement(CoordinatePairInput, {
|
|
32301
|
+
coord: startCoords[1],
|
|
32302
|
+
labels: ["x", "y"],
|
|
32303
|
+
onChange: value => onChange([startCoords[0], value, startCoords[2]])
|
|
32304
|
+
})), /*#__PURE__*/React__namespace.createElement(wonderBlocksCore.View, {
|
|
32305
|
+
style: styles$h.tile
|
|
32306
|
+
}, /*#__PURE__*/React__namespace.createElement(wonderBlocksTypography.LabelLarge, null, "Point 2:"), /*#__PURE__*/React__namespace.createElement(Strut, {
|
|
32307
|
+
size: wonderBlocksTokens.spacing.small_12
|
|
32308
|
+
}), /*#__PURE__*/React__namespace.createElement(CoordinatePairInput, {
|
|
32309
|
+
coord: startCoords[2],
|
|
32310
|
+
labels: ["x", "y"],
|
|
32311
|
+
onChange: value => onChange([startCoords[0], startCoords[1], value])
|
|
32312
|
+
})));
|
|
32107
32313
|
};
|
|
32314
|
+
const styles$h = aphrodite.StyleSheet.create({
|
|
32315
|
+
tile: {
|
|
32316
|
+
backgroundColor: wonderBlocksTokens.color.fadedBlue8,
|
|
32317
|
+
marginTop: wonderBlocksTokens.spacing.xSmall_8,
|
|
32318
|
+
padding: wonderBlocksTokens.spacing.small_12,
|
|
32319
|
+
borderRadius: wonderBlocksTokens.spacing.xSmall_8,
|
|
32320
|
+
flexDirection: "row",
|
|
32321
|
+
alignItems: "center"
|
|
32322
|
+
},
|
|
32323
|
+
equationSection: {
|
|
32324
|
+
marginTop: wonderBlocksTokens.spacing.small_12
|
|
32325
|
+
},
|
|
32326
|
+
equationBody: {
|
|
32327
|
+
backgroundColor: wonderBlocksTokens.color.fadedOffBlack8,
|
|
32328
|
+
border: `1px solid ${wonderBlocksTokens.color.fadedOffBlack32}`,
|
|
32329
|
+
marginTop: wonderBlocksTokens.spacing.xSmall_8,
|
|
32330
|
+
paddingLeft: wonderBlocksTokens.spacing.xSmall_8,
|
|
32331
|
+
paddingRight: wonderBlocksTokens.spacing.xSmall_8,
|
|
32332
|
+
fontSize: wonderBlocksTokens.font.size.xSmall
|
|
32333
|
+
}
|
|
32334
|
+
});
|
|
32108
32335
|
|
|
32109
32336
|
const StartCoordsCircle = props => {
|
|
32110
32337
|
const {
|
|
@@ -36993,6 +37220,7 @@ exports.AllEditors = AllEditors;
|
|
|
36993
37220
|
exports.AllWidgets = AllWidgets;
|
|
36994
37221
|
exports.ArticleDiff = ArticleDiff;
|
|
36995
37222
|
exports.ArticleEditor = ArticleEditor;
|
|
37223
|
+
exports.ContentPreview = ContentPreview;
|
|
36996
37224
|
exports.DeviceFramer = DeviceFramer;
|
|
36997
37225
|
exports.Editor = Editor;
|
|
36998
37226
|
exports.EditorPage = EditorPage;
|