@pie-lib/render-ui 5.1.0-next.4 → 5.1.0-next.5
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/lib/assets/enableAudioAutoplayImage.js +8 -0
- package/lib/assets/enableAudioAutoplayImage.js.map +1 -0
- package/lib/collapsible/index.js +105 -0
- package/lib/collapsible/index.js.map +1 -0
- package/lib/color.js +200 -0
- package/lib/color.js.map +1 -0
- package/lib/feedback.js +112 -0
- package/lib/feedback.js.map +1 -0
- package/lib/has-media.js +22 -0
- package/lib/has-media.js.map +1 -0
- package/lib/has-text.js +22 -0
- package/lib/has-text.js.map +1 -0
- package/lib/html-and-math.js +54 -0
- package/lib/html-and-math.js.map +1 -0
- package/lib/index.js +106 -0
- package/lib/index.js.map +1 -0
- package/lib/input-container.js +59 -0
- package/lib/input-container.js.map +1 -0
- package/lib/preview-layout.js +65 -0
- package/lib/preview-layout.js.map +1 -0
- package/lib/preview-prompt.js +296 -0
- package/lib/preview-prompt.js.map +1 -0
- package/lib/purpose.js +22 -0
- package/lib/purpose.js.map +1 -0
- package/lib/readable.js +22 -0
- package/lib/readable.js.map +1 -0
- package/lib/response-indicators.js +102 -0
- package/lib/response-indicators.js.map +1 -0
- package/lib/ui-layout.js +125 -0
- package/lib/ui-layout.js.map +1 -0
- package/lib/withUndoReset.js +135 -0
- package/lib/withUndoReset.js.map +1 -0
- package/package.json +5 -5
package/lib/ui-layout.js
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
13
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
var _react = _interopRequireDefault(require("react"));
|
|
17
|
+
var _styles = require("@mui/material/styles");
|
|
18
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
19
|
+
var _excluded = ["children", "className", "fontSizeFactor"],
|
|
20
|
+
_excluded2 = ["extraCSSRules"];
|
|
21
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
22
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
23
|
+
var theme = (0, _styles.createTheme)({
|
|
24
|
+
typography: {
|
|
25
|
+
fontFamily: 'inherit'
|
|
26
|
+
},
|
|
27
|
+
palette: {
|
|
28
|
+
action: {
|
|
29
|
+
disabled: 'rgba(0, 0, 0, 0.54);'
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
components: {
|
|
33
|
+
MuiTypography: {
|
|
34
|
+
styleOverrides: {
|
|
35
|
+
root: {
|
|
36
|
+
fontFamily: 'inherit'
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
MuiButton: {
|
|
41
|
+
styleOverrides: {
|
|
42
|
+
contained: {
|
|
43
|
+
backgroundColor: '#e0e0e0',
|
|
44
|
+
color: '#000000',
|
|
45
|
+
'&:hover': {
|
|
46
|
+
backgroundColor: '#bdbdbd'
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
var StyledContainer = (0, _styles.styled)('div')({
|
|
54
|
+
// need this because some browsers set their own style on table
|
|
55
|
+
'& table, th, td': {
|
|
56
|
+
fontSize: 'inherit' /* Ensure table elements inherit font size */
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
var UiLayout = /*#__PURE__*/function (_React$Component) {
|
|
60
|
+
function UiLayout(props) {
|
|
61
|
+
var _this;
|
|
62
|
+
(0, _classCallCheck2["default"])(this, UiLayout);
|
|
63
|
+
_this = _callSuper(this, UiLayout, [props]);
|
|
64
|
+
_this.classesSheet = document.createElement('style');
|
|
65
|
+
return _this;
|
|
66
|
+
}
|
|
67
|
+
(0, _inherits2["default"])(UiLayout, _React$Component);
|
|
68
|
+
return (0, _createClass2["default"])(UiLayout, [{
|
|
69
|
+
key: "computeStyle",
|
|
70
|
+
value: function computeStyle(fontSizeFactor) {
|
|
71
|
+
var getFontSize = function getFontSize(element) {
|
|
72
|
+
return parseFloat(getComputedStyle(element).fontSize);
|
|
73
|
+
};
|
|
74
|
+
var rootFontSize = getFontSize(document.documentElement);
|
|
75
|
+
var bodyFontSize = getFontSize(document.body);
|
|
76
|
+
var effectiveFontSize = Math.max(rootFontSize, bodyFontSize);
|
|
77
|
+
|
|
78
|
+
// Handle null, undefined, or invalid values by defaulting to 1
|
|
79
|
+
var factor = fontSizeFactor != null && typeof fontSizeFactor === 'number' ? fontSizeFactor : 1;
|
|
80
|
+
return factor !== 1 ? {
|
|
81
|
+
fontSize: "".concat(effectiveFontSize * factor, "px")
|
|
82
|
+
} : null;
|
|
83
|
+
}
|
|
84
|
+
}, {
|
|
85
|
+
key: "render",
|
|
86
|
+
value: function render() {
|
|
87
|
+
var _this$props = this.props,
|
|
88
|
+
children = _this$props.children,
|
|
89
|
+
className = _this$props.className,
|
|
90
|
+
fontSizeFactor = _this$props.fontSizeFactor,
|
|
91
|
+
rest = (0, _objectWithoutProperties2["default"])(_this$props, _excluded);
|
|
92
|
+
var extraCSSRules = rest.extraCSSRules,
|
|
93
|
+
restProps = (0, _objectWithoutProperties2["default"])(rest, _excluded2);
|
|
94
|
+
var style = this.computeStyle(fontSizeFactor);
|
|
95
|
+
return /*#__PURE__*/_react["default"].createElement(_styles.StyledEngineProvider, {
|
|
96
|
+
injectFirst: true
|
|
97
|
+
}, /*#__PURE__*/_react["default"].createElement(_styles.ThemeProvider, {
|
|
98
|
+
theme: theme
|
|
99
|
+
}, extraCSSRules !== null && extraCSSRules !== void 0 && extraCSSRules.rules ? /*#__PURE__*/_react["default"].createElement("style", {
|
|
100
|
+
dangerouslySetInnerHTML: {
|
|
101
|
+
__html: ".extraCSSRules { ".concat(extraCSSRules.rules, " }")
|
|
102
|
+
}
|
|
103
|
+
}) : null, /*#__PURE__*/_react["default"].createElement(StyledContainer, (0, _extends2["default"])({
|
|
104
|
+
className: "".concat(className, " extraCSSRules")
|
|
105
|
+
}, restProps, style && {
|
|
106
|
+
style: style
|
|
107
|
+
}), children)));
|
|
108
|
+
}
|
|
109
|
+
}]);
|
|
110
|
+
}(_react["default"].Component);
|
|
111
|
+
(0, _defineProperty2["default"])(UiLayout, "propTypes", {
|
|
112
|
+
className: _propTypes["default"].string,
|
|
113
|
+
children: _propTypes["default"].array,
|
|
114
|
+
extraCSSRules: _propTypes["default"].shape({
|
|
115
|
+
names: _propTypes["default"].arrayOf(_propTypes["default"].string),
|
|
116
|
+
rules: _propTypes["default"].string
|
|
117
|
+
}),
|
|
118
|
+
fontSizeFactor: _propTypes["default"].number
|
|
119
|
+
});
|
|
120
|
+
(0, _defineProperty2["default"])(UiLayout, "defaultProps", {
|
|
121
|
+
extraCSSRules: {},
|
|
122
|
+
fontSizeFactor: 1
|
|
123
|
+
});
|
|
124
|
+
var _default = exports["default"] = UiLayout;
|
|
125
|
+
//# sourceMappingURL=ui-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-layout.js","names":["_react","_interopRequireDefault","require","_styles","_propTypes","_excluded","_excluded2","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","theme","createTheme","typography","fontFamily","palette","action","disabled","components","MuiTypography","styleOverrides","root","MuiButton","contained","backgroundColor","color","StyledContainer","styled","fontSize","UiLayout","_React$Component","props","_this","_classCallCheck2","classesSheet","document","createElement","_inherits2","_createClass2","key","value","computeStyle","fontSizeFactor","getFontSize","element","parseFloat","getComputedStyle","rootFontSize","documentElement","bodyFontSize","body","effectiveFontSize","Math","max","factor","concat","render","_this$props","children","className","rest","_objectWithoutProperties2","extraCSSRules","restProps","style","StyledEngineProvider","injectFirst","ThemeProvider","rules","dangerouslySetInnerHTML","__html","_extends2","React","Component","_defineProperty2","PropTypes","string","array","shape","names","arrayOf","number","_default","exports"],"sources":["../src/ui-layout.jsx"],"sourcesContent":["import React from 'react';\nimport { createTheme, ThemeProvider, StyledEngineProvider } from '@mui/material/styles';\nimport { styled } from '@mui/material/styles';\nimport PropTypes from 'prop-types';\n\nconst theme = createTheme({\n typography: {\n fontFamily: 'inherit',\n },\n palette: {\n action: {\n disabled: 'rgba(0, 0, 0, 0.54);',\n },\n },\n components: {\n MuiTypography: {\n styleOverrides: {\n root: { fontFamily: 'inherit' },\n },\n },\n MuiButton: {\n styleOverrides: {\n contained: {\n backgroundColor: '#e0e0e0',\n color: '#000000',\n '&:hover': {\n backgroundColor: '#bdbdbd',\n },\n },\n },\n },\n },\n});\n\nconst StyledContainer = styled('div')({\n // need this because some browsers set their own style on table\n '& table, th, td': {\n fontSize: 'inherit' /* Ensure table elements inherit font size */,\n },\n});\n\nclass UiLayout extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n children: PropTypes.array,\n extraCSSRules: PropTypes.shape({\n names: PropTypes.arrayOf(PropTypes.string),\n rules: PropTypes.string,\n }),\n fontSizeFactor: PropTypes.number,\n };\n\n static defaultProps = {\n extraCSSRules: {},\n fontSizeFactor: 1,\n };\n\n constructor(props) {\n super(props);\n this.classesSheet = document.createElement('style');\n }\n\n computeStyle(fontSizeFactor) {\n const getFontSize = (element) => parseFloat(getComputedStyle(element).fontSize);\n\n const rootFontSize = getFontSize(document.documentElement);\n const bodyFontSize = getFontSize(document.body);\n const effectiveFontSize = Math.max(rootFontSize, bodyFontSize);\n\n // Handle null, undefined, or invalid values by defaulting to 1\n const factor = fontSizeFactor != null && typeof fontSizeFactor === 'number' ? fontSizeFactor : 1;\n return factor !== 1 ? { fontSize: `${effectiveFontSize * factor}px` } : null;\n }\n\n render() {\n const { children, className, fontSizeFactor, ...rest } = this.props;\n\n const { extraCSSRules, ...restProps } = rest;\n const style = this.computeStyle(fontSizeFactor);\n\n return (\n <StyledEngineProvider injectFirst>\n <ThemeProvider theme={theme}>\n {extraCSSRules?.rules ? (\n <style dangerouslySetInnerHTML={{ __html: `.extraCSSRules { ${extraCSSRules.rules} }` }} />\n ) : null}\n\n <StyledContainer className={`${className} extraCSSRules`} {...restProps} {...(style && { style })}>\n {children}\n </StyledContainer>\n </ThemeProvider>\n </StyledEngineProvider>\n );\n }\n}\n\nexport default UiLayout;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
var _objectDestructuringEmpty2 = _interopRequireDefault(require("@babel/runtime/helpers/objectDestructuringEmpty"));
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
14
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
15
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
18
|
+
var React = _interopRequireWildcard(require("react"));
|
|
19
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
20
|
+
var _Button = _interopRequireDefault(require("@mui/material/Button"));
|
|
21
|
+
var _styles = require("@mui/material/styles");
|
|
22
|
+
var _Restore = _interopRequireDefault(require("@mui/icons-material/Restore"));
|
|
23
|
+
var _Undo = _interopRequireDefault(require("@mui/icons-material/Undo"));
|
|
24
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
25
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
26
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
27
|
+
var Wrapper = (0, _styles.styled)('div')({
|
|
28
|
+
display: 'flex',
|
|
29
|
+
flexDirection: 'column'
|
|
30
|
+
});
|
|
31
|
+
var ResetUndoContainer = (0, _styles.styled)('div')({
|
|
32
|
+
display: 'flex',
|
|
33
|
+
alignItems: 'center',
|
|
34
|
+
justifyContent: 'center'
|
|
35
|
+
});
|
|
36
|
+
var StyledIcon = (0, _styles.styled)('div')(function (_ref) {
|
|
37
|
+
var theme = _ref.theme;
|
|
38
|
+
return {
|
|
39
|
+
width: '24px',
|
|
40
|
+
height: '24px',
|
|
41
|
+
color: 'gray',
|
|
42
|
+
marginRight: theme.spacing(1),
|
|
43
|
+
display: 'flex',
|
|
44
|
+
alignItems: 'center'
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
var StyledButton = (0, _styles.styled)(_Button["default"])(function (_ref2) {
|
|
48
|
+
var theme = _ref2.theme;
|
|
49
|
+
return {
|
|
50
|
+
display: 'flex',
|
|
51
|
+
alignItems: 'center',
|
|
52
|
+
marginLeft: theme.spacing(3),
|
|
53
|
+
marginRight: theme.spacing(3)
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* HOC that adds undo and reset functionality for session values
|
|
59
|
+
*/
|
|
60
|
+
var withUndoReset = function withUndoReset(WrappedComponent) {
|
|
61
|
+
var WithUndoReset = /*#__PURE__*/function (_React$Component) {
|
|
62
|
+
function WithUndoReset(props) {
|
|
63
|
+
var _this;
|
|
64
|
+
(0, _classCallCheck2["default"])(this, WithUndoReset);
|
|
65
|
+
_this = _callSuper(this, WithUndoReset, [props]);
|
|
66
|
+
(0, _defineProperty2["default"])(_this, "onSessionChange", function (session) {
|
|
67
|
+
_this.setState(function (state) {
|
|
68
|
+
return {
|
|
69
|
+
session: session,
|
|
70
|
+
changes: [].concat((0, _toConsumableArray2["default"])(state.changes), [session])
|
|
71
|
+
};
|
|
72
|
+
}, function () {
|
|
73
|
+
return _this.props.onSessionChange(session);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
(0, _defineProperty2["default"])(_this, "onUndo", function () {
|
|
77
|
+
_this.setState(function (state) {
|
|
78
|
+
var newChanges = (0, _toConsumableArray2["default"])(state.changes);
|
|
79
|
+
newChanges.pop();
|
|
80
|
+
return {
|
|
81
|
+
changes: newChanges,
|
|
82
|
+
session: newChanges.length ? newChanges[newChanges.length - 1] : state.sessionInitialValues
|
|
83
|
+
};
|
|
84
|
+
}, function () {
|
|
85
|
+
return _this.props.onSessionChange(_this.state.session);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
(0, _defineProperty2["default"])(_this, "onReset", function () {
|
|
89
|
+
_this.setState(function (state) {
|
|
90
|
+
return {
|
|
91
|
+
session: state.sessionInitialValues,
|
|
92
|
+
changes: []
|
|
93
|
+
};
|
|
94
|
+
}, function () {
|
|
95
|
+
return _this.props.onSessionChange(_this.state.sessionInitialValues);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
_this.state = {
|
|
99
|
+
sessionInitialValues: JSON.parse(JSON.stringify(props.session)),
|
|
100
|
+
session: props.session,
|
|
101
|
+
changes: []
|
|
102
|
+
};
|
|
103
|
+
return _this;
|
|
104
|
+
}
|
|
105
|
+
(0, _inherits2["default"])(WithUndoReset, _React$Component);
|
|
106
|
+
return (0, _createClass2["default"])(WithUndoReset, [{
|
|
107
|
+
key: "render",
|
|
108
|
+
value: function render() {
|
|
109
|
+
var rest = (0, _extends2["default"])({}, ((0, _objectDestructuringEmpty2["default"])(this.props), this.props));
|
|
110
|
+
var _this$state = this.state,
|
|
111
|
+
changes = _this$state.changes,
|
|
112
|
+
session = _this$state.session;
|
|
113
|
+
return /*#__PURE__*/React.createElement(Wrapper, null, /*#__PURE__*/React.createElement(ResetUndoContainer, null, /*#__PURE__*/React.createElement(StyledButton, {
|
|
114
|
+
color: "primary",
|
|
115
|
+
disabled: changes.length === 0,
|
|
116
|
+
onClick: this.onUndo
|
|
117
|
+
}, /*#__PURE__*/React.createElement(StyledIcon, null, /*#__PURE__*/React.createElement(_Undo["default"], null)), "Undo"), /*#__PURE__*/React.createElement(StyledButton, {
|
|
118
|
+
color: "primary",
|
|
119
|
+
disabled: changes.length === 0,
|
|
120
|
+
onClick: this.onReset
|
|
121
|
+
}, /*#__PURE__*/React.createElement(StyledIcon, null, /*#__PURE__*/React.createElement(_Restore["default"], null)), "Start Over")), /*#__PURE__*/React.createElement(WrappedComponent, (0, _extends2["default"])({}, rest, {
|
|
122
|
+
session: session,
|
|
123
|
+
onSessionChange: this.onSessionChange
|
|
124
|
+
})));
|
|
125
|
+
}
|
|
126
|
+
}]);
|
|
127
|
+
}(React.Component);
|
|
128
|
+
(0, _defineProperty2["default"])(WithUndoReset, "propTypes", {
|
|
129
|
+
session: _propTypes["default"].object,
|
|
130
|
+
onSessionChange: _propTypes["default"].func
|
|
131
|
+
});
|
|
132
|
+
return WithUndoReset;
|
|
133
|
+
};
|
|
134
|
+
var _default = exports["default"] = withUndoReset;
|
|
135
|
+
//# sourceMappingURL=withUndoReset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withUndoReset.js","names":["React","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_Button","_styles","_Restore","_Undo","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","Wrapper","styled","display","flexDirection","ResetUndoContainer","alignItems","justifyContent","StyledIcon","_ref","theme","width","height","color","marginRight","spacing","StyledButton","Button","_ref2","marginLeft","withUndoReset","WrappedComponent","WithUndoReset","_React$Component","props","_this","_classCallCheck2","_defineProperty2","session","setState","state","changes","concat","_toConsumableArray2","onSessionChange","newChanges","pop","length","sessionInitialValues","JSON","parse","stringify","_inherits2","_createClass2","key","value","render","rest","_extends2","_objectDestructuringEmpty2","_this$state","createElement","disabled","onClick","onUndo","onReset","Component","PropTypes","object","func","_default","exports"],"sources":["../src/withUndoReset.jsx"],"sourcesContent":["import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\nimport Restore from '@mui/icons-material/Restore';\nimport Undo from '@mui/icons-material/Undo';\n\nconst Wrapper = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n});\n\nconst ResetUndoContainer = styled('div')({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n});\n\nconst StyledIcon = styled('div')(({ theme }) => ({\n width: '24px',\n height: '24px',\n color: 'gray',\n marginRight: theme.spacing(1),\n display: 'flex',\n alignItems: 'center',\n}));\n\nconst StyledButton = styled(Button)(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n}));\n\n/**\n * HOC that adds undo and reset functionality for session values\n */\nconst withUndoReset = (WrappedComponent) => {\n class WithUndoReset extends React.Component {\n static propTypes = {\n session: PropTypes.object,\n onSessionChange: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n sessionInitialValues: JSON.parse(JSON.stringify(props.session)),\n session: props.session,\n changes: [],\n };\n }\n\n onSessionChange = (session) => {\n this.setState(\n (state) => ({ session, changes: [...state.changes, session] }),\n () => this.props.onSessionChange(session),\n );\n };\n\n onUndo = () => {\n this.setState(\n (state) => {\n const newChanges = [...state.changes];\n\n newChanges.pop();\n\n return {\n changes: newChanges,\n session: newChanges.length ? newChanges[newChanges.length - 1] : state.sessionInitialValues,\n };\n },\n () => this.props.onSessionChange(this.state.session),\n );\n };\n\n onReset = () => {\n this.setState(\n (state) => ({ session: state.sessionInitialValues, changes: [] }),\n () => this.props.onSessionChange(this.state.sessionInitialValues),\n );\n };\n\n render() {\n const { ...rest } = this.props;\n const { changes, session } = this.state;\n\n return (\n <Wrapper>\n <ResetUndoContainer>\n <StyledButton color=\"primary\" disabled={changes.length === 0} onClick={this.onUndo}>\n <StyledIcon>\n <Undo />\n </StyledIcon>\n Undo\n </StyledButton>\n <StyledButton color=\"primary\" disabled={changes.length === 0} onClick={this.onReset}>\n <StyledIcon>\n <Restore />\n </StyledIcon>\n Start Over\n </StyledButton>\n </ResetUndoContainer>\n <WrappedComponent {...rest} session={session} onSessionChange={this.onSessionChange} />\n </Wrapper>\n );\n }\n }\n\n return WithUndoReset;\n};\n\nexport default withUndoReset;\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-lib/render-ui",
|
|
3
|
-
"version": "5.1.0-next.
|
|
3
|
+
"version": "5.1.0-next.5",
|
|
4
4
|
"description": "Some shared ui elements when rendering - but not worthy of their own package yet.",
|
|
5
5
|
"module": "src/index.js",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
"@emotion/styled": "^11.14.1",
|
|
14
14
|
"@mui/icons-material": "^7.3.4",
|
|
15
15
|
"@mui/material": "^7.3.4",
|
|
16
|
-
"@pie-lib/icons": "3.1.0-next.
|
|
17
|
-
"@pie-lib/math-rendering": "4.1.0-next.
|
|
18
|
-
"@pie-lib/test-utils": "1.1.0-next.
|
|
16
|
+
"@pie-lib/icons": "3.1.0-next.4",
|
|
17
|
+
"@pie-lib/math-rendering": "4.1.0-next.4",
|
|
18
|
+
"@pie-lib/test-utils": "1.1.0-next.4",
|
|
19
19
|
"debug": "^4.1.1",
|
|
20
20
|
"lodash": "^4.17.11",
|
|
21
21
|
"prop-types": "^15.7.2",
|
|
@@ -30,5 +30,5 @@
|
|
|
30
30
|
"react": "^18.2.0",
|
|
31
31
|
"react-dom": "^18.2.0"
|
|
32
32
|
},
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "e51620791bab7434375dc0a101c39dc5926a457d"
|
|
34
34
|
}
|