feeles-ide
Version:
The hackable and serializable IDE to make learning material
225 lines (186 loc) • 8.41 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 _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
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 _AppBar = _interopRequireDefault(require("@material-ui/core/AppBar"));
var _Toolbar = _interopRequireDefault(require("@material-ui/core/Toolbar"));
var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
var _Menu = _interopRequireDefault(require("@material-ui/core/Menu"));
var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
var _FormControlLabel = _interopRequireDefault(require("@material-ui/core/FormControlLabel"));
var _Switch = _interopRequireDefault(require("@material-ui/core/Switch"));
var _Language = _interopRequireDefault(require("@material-ui/icons/Language"));
var _Menu2 = _interopRequireDefault(require("@material-ui/icons/Menu"));
var _localization = require("../localization/");
var _dec, _class, _class2, _temp;
var cn = {
root: (0, _typestyle.style)({
zIndex: null
}),
button: (0, _typestyle.style)({
marginLeft: 20
}),
projectName: (0, _typestyle.style)({
fontSize: '.8rem',
fontWeight: 600
}),
toggle: (0, _typestyle.style)({
filter: 'contrast(40%)'
}),
blank: (0, _typestyle.style)({
flex: 1
})
};
var getCn = function getCn(props) {
return {
leftIcon: (0, _typestyle.style)({
marginTop: 0,
marginLeft: -14,
display: props.showAll ? 'block' : 'none'
}),
contrastColor: (0, _typestyle.style)({
color: props.theme.palette.primary.contrastText
})
};
};
var Menu = (_dec = (0, _styles.withTheme)(), _dec(_class = (_temp = _class2 =
/*#__PURE__*/
function (_PureComponent) {
(0, _inherits2.default)(Menu, _PureComponent);
function Menu() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2.default)(this, Menu);
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)(Menu)).call.apply(_getPrototypeOf2, [this].concat(args)));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "state", {
overrideTitle: null,
open: false,
anchorEl: null
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleSetTitle", function (event) {
_this.setState({
overrideTitle: event.data.value
});
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleLanguage", function (event) {
_this.setState({
anchorEl: event.currentTarget
});
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleCloseMenu", function () {
_this.setState({
anchorEl: null
});
});
return _this;
}
(0, _createClass2.default)(Menu, [{
key: "componentDidMount",
value: function componentDidMount() {
this.props.globalEvent.on('message.menuTitle', this.handleSetTitle);
}
}, {
key: "render",
value: function render() {
var dcn = getCn(this.props);
var _this$props = this.props,
localization = _this$props.localization,
setLocalization = _this$props.setLocalization;
var title = this.props.project && (this.props.project.title ? _react.default.createElement("div", {
className: (0, _typestyle.classes)(cn.projectName, dcn.contrastColor)
}, this.props.project.title) : _react.default.createElement(_Button.default, {
variant: "text",
onClick: this.handleClone
}, _react.default.createElement("span", {
className: dcn.contrastColor
}, localization.cloneDialog.setTitle)));
return _react.default.createElement(_AppBar.default, {
className: cn.root,
position: "relative"
}, _react.default.createElement(_Toolbar.default, null, _react.default.createElement(_IconButton.default, {
className: dcn.leftIcon,
onClick: this.props.toggleSidebar
}, _react.default.createElement(_Menu2.default, null)), this.state.overrideTitle || title, _react.default.createElement("div", {
className: cn.blank
}), _react.default.createElement(_FormControlLabel.default, {
control: _react.default.createElement(_Switch.default, {
checked: this.props.showAll,
onChange: this.props.toggleShowAll,
className: cn.toggle
}),
label: this.props.showAll ? '' : localization.menu.showAll,
className: dcn.contrastColor
}), _react.default.createElement(_IconButton.default, {
tooltip: localization.menu.language,
onClick: this.handleLanguage
}, _react.default.createElement(_Language.default, null)), _react.default.createElement(_Menu.default, {
anchorEl: this.state.anchorEl,
open: !!this.state.anchorEl,
onClose: this.handleCloseMenu
}, _localization.acceptedLanguages.map(function (lang) {
return _react.default.createElement(_MenuItem.default, {
key: lang.accept[0],
onClick: function onClick() {
return setLocalization(lang.accept[0]);
}
}, lang.native);
}))));
}
}, {
key: "filesForPublishing",
get: function get() {
// i18n 設定の固定:
// 1. i18n/ll_CC/ 以下のファイルを取得
var prefix = "i18n/".concat(this.props.localization.ll_CC, "/");
var currentLocales = this.props.files.filter(function (file) {
return file.name.startsWith(prefix);
}); // 2. i18n/ 以下のファイルをすべて削除し、
var withoutI18n = this.props.files.filter(function (file) {
return !file.name.startsWith('i18n/');
}); // 3. i18n/ll_CC/ 以下のファイルをルートに追加する
var intoRoot = currentLocales.map(function (file) {
var _file$name$split = file.name.split(prefix),
_file$name$split2 = (0, _slicedToArray2.default)(_file$name$split, 2),
name = _file$name$split2[1];
return file.set({
name: name
});
});
return withoutI18n.concat(intoRoot);
}
}]);
return Menu;
}(_react.PureComponent), (0, _defineProperty2.default)(_class2, "propTypes", {
theme: _propTypes.default.object.isRequired,
cardProps: _propTypes.default.object.isRequired,
setCardVisibility: _propTypes.default.func.isRequired,
toggleSidebar: _propTypes.default.func.isRequired,
files: _propTypes.default.array.isRequired,
openFileDialog: _propTypes.default.func.isRequired,
localization: _propTypes.default.object.isRequired,
setLocalization: _propTypes.default.func.isRequired,
project: _propTypes.default.object,
showAll: _propTypes.default.bool.isRequired,
toggleShowAll: _propTypes.default.func.isRequired,
globalEvent: _propTypes.default.object.isRequired
}), _temp)) || _class);
exports.default = Menu;