UNPKG

feeles-ide

Version:

The hackable and serializable IDE to make learning material

225 lines (186 loc) 8.41 kB
"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;