feeles-ide
Version:
The hackable and serializable IDE to make learning material
224 lines (190 loc) • 8.11 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _styles = require("@material-ui/core/styles");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _typestyle = require("typestyle");
var _CardWindow = _interopRequireDefault(require("../CardWindow"));
var _CardActions = _interopRequireDefault(require("@material-ui/core/CardActions"));
var _Popover = _interopRequireDefault(require("@material-ui/core/Popover"));
var _Paper = _interopRequireDefault(require("@material-ui/core/Paper"));
var _colorManipulator = require("@material-ui/core/styles/colorManipulator");
var _reactColor = require("react-color");
var _CardFloatingBar = _interopRequireDefault(require("../CardFloatingBar"));
var _LayeredStyle = _interopRequireDefault(require("./LayeredStyle"));
var _dec, _class, _class2, _temp;
var boxSize = 60;
var getCn = function getCn(props) {
return {
canvas: (0, _typestyle.style)({
display: 'flex',
alignItems: 'center',
height: boxSize + 32,
backgroundColor: props.theme.palette.background.paper
}),
primary: (0, _typestyle.style)({
flex: '1 1 auto',
marginLeft: props.theme.spacing.unit * 3,
height: boxSize,
backgroundColor: props.theme.palette.primary.main
}),
secondary: (0, _typestyle.style)({
flex: '1 1 auto',
marginLeft: props.theme.spacing.unit * 3,
height: boxSize * 0.8,
backgroundColor: props.theme.palette.secondary.main
}),
blank: (0, _typestyle.style)({
flex: '1 1 auto',
backgroundColor: 'transparent',
marginLeft: props.theme.spacing.unit * 3,
height: boxSize
})
};
};
var PaletteCard = (_dec = (0, _styles.withTheme)(), _dec(_class = (_temp = _class2 =
/*#__PURE__*/
function (_PureComponent) {
(0, _inherits2.default)(PaletteCard, _PureComponent);
function PaletteCard() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2.default)(this, PaletteCard);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(PaletteCard)).call.apply(_getPrototypeOf2, [this].concat(args)));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "state", {
palette: _this.props.getConfig('palette'),
open: false,
key: null,
anchorEl: null,
limited: false
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleRectClick", function (event, key) {
var limited = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
event.stopPropagation();
var anchorEl = event.target;
var color = _this.state.palette[key];
_this.setState({
open: true,
key: key,
anchorEl: anchorEl,
color: color,
limited: limited
});
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleChangeComplete", function (structure) {
var key = _this.state.key;
var setConfig = _this.props.setConfig;
var _structure$rgb = structure.rgb,
r = _structure$rgb.r,
g = _structure$rgb.g,
b = _structure$rgb.b,
a = _structure$rgb.a;
var color = {
type: 'rgba',
values: [r, g, b, a]
};
var palette = Object.assign({}, _this.state.palette, (0, _defineProperty2.default)({}, key, (0, _colorManipulator.convertColorToString)(color)));
setConfig('palette', palette).then(function (file) {
return file.json;
}).then(function (palette) {
return _this.setState({
palette: palette
});
});
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "closePopover", function () {
_this.setState({
open: false
});
});
return _this;
}
(0, _createClass2.default)(PaletteCard, [{
key: "render",
value: function render() {
var _this2 = this;
var dcn = getCn(this.props);
var _this$state = this.state,
open = _this$state.open,
key = _this$state.key,
anchorEl = _this$state.anchorEl,
limited = _this$state.limited;
var _this$props$theme = this.props.theme,
palette = _this$props$theme.palette,
spacing = _this$props$theme.spacing;
var bodyColor = getComputedStyle(document.body)['background-color'];
return _react.default.createElement(_CardWindow.default, this.props.cardPropsBag, _react.default.createElement(_CardFloatingBar.default, null, this.props.localization.paletteCard.title), _react.default.createElement(_CardActions.default, null, _react.default.createElement(_LayeredStyle.default, {
styles: [{
display: 'flex',
flexDirection: 'column',
backgroundColor: 'white'
}, {
backgroundColor: bodyColor
}, {
padding: spacing.unit * 3
}],
onClick: function onClick(e) {
return _this2.handleRectClick(e, 'backgroundColor');
}
}, _react.default.createElement(_Paper.default, {
className: dcn.canvas,
onClick: function onClick(e) {
return _this2.handleRectClick(e, 'canvasColor');
}
}, _react.default.createElement(_Paper.default, {
className: dcn.primary,
onClick: function onClick(e) {
return _this2.handleRectClick(e, 'primary1Color', true);
}
}), _react.default.createElement(_Paper.default, {
className: dcn.secondary,
onClick: function onClick(e) {
return _this2.handleRectClick(e, 'accent1Color', true);
}
}), _react.default.createElement("div", {
className: dcn.blank
})))), _react.default.createElement(_Popover.default, {
open: open,
anchorEl: anchorEl,
anchorOrigin: {
horizontal: 'left',
vertical: 'top'
},
targetOrigin: {
horizontal: 'left',
vertical: 'bottom'
},
onClose: this.closePopover
}, limited ? _react.default.createElement(_reactColor.TwitterPicker, {
color: key && palette[key],
onChangeComplete: this.handleChangeComplete
}) : _react.default.createElement(_reactColor.ChromePicker, {
color: key && palette[key],
onChangeComplete: this.handleChangeComplete
})));
}
}]);
return PaletteCard;
}(_react.PureComponent), (0, _defineProperty2.default)(_class2, "propTypes", {
theme: _propTypes.default.object.isRequired,
cardPropsBag: _propTypes.default.object.isRequired,
localization: _propTypes.default.object.isRequired,
getConfig: _propTypes.default.func.isRequired,
setConfig: _propTypes.default.func.isRequired
}), _temp)) || _class);
exports.default = PaletteCard;