feeles-ide
Version:
The hackable and serializable IDE to make learning material
138 lines (107 loc) • 4.67 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
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 _propTypes = _interopRequireDefault(require("prop-types"));
var _typestyle = require("typestyle");
var _Dialog = _interopRequireDefault(require("@material-ui/core/Dialog"));
var _DialogTitle = _interopRequireDefault(require("@material-ui/core/DialogTitle"));
var _DialogContent = _interopRequireDefault(require("@material-ui/core/DialogContent"));
var _DialogActions = _interopRequireDefault(require("@material-ui/core/DialogActions"));
var _Buttons = require("./Buttons");
var cn = {
div: (0, _typestyle.style)({
textAlign: 'center'
}),
link: (0, _typestyle.style)({
fontSize: '2rem'
})
/**
* HTML5 a要素のdownload属性が実装されていないブラウザのためのfallback
*/
};
var SaveDialog =
/*#__PURE__*/
function (_PureComponent) {
(0, _inherits2.default)(SaveDialog, _PureComponent);
function SaveDialog() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2.default)(this, SaveDialog);
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)(SaveDialog)).call.apply(_getPrototypeOf2, [this].concat(args)));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "state", {
contents: _this.props.content instanceof Array ? _this.props.content : [_this.props.content],
results: []
});
return _this;
}
(0, _createClass2.default)(SaveDialog, [{
key: "componentDidMount",
value: function componentDidMount() {
var _this2 = this;
Promise.all(this.state.contents.map(function (item) {
return new Promise(function (resolve) {
var reader = new FileReader();
reader.onload = function () {
return resolve({
name: item.name,
href: reader.result
});
};
reader.readAsDataURL(item.blob);
});
})).then(function (results) {
return _this2.setState({
results: results
});
});
}
}, {
key: "render",
value: function render() {
var _this$props = this.props,
onRequestClose = _this$props.onRequestClose,
localization = _this$props.localization;
return _react.default.createElement(_Dialog.default, {
open: true,
onClose: onRequestClose
}, _react.default.createElement(_DialogTitle.default, null, localization.saveDialog.title), _react.default.createElement(_DialogContent.default, null, this.state.results.map(function (item, i) {
return _react.default.createElement("div", {
key: i,
className: cn.div
}, _react.default.createElement("a", {
target: "_blank",
rel: "noopener noreferrer",
href: item.href,
className: cn.link
}, item.name), _react.default.createElement("p", null, localization.saveDialog.description(item.name)));
})), _react.default.createElement(_DialogActions.default, null, _react.default.createElement(_Buttons.Abort, {
key: "cancel",
primary: true,
onClick: onRequestClose,
label: localization.saveDialog.cancel
})));
}
}]);
return SaveDialog;
}(_react.PureComponent);
exports.default = SaveDialog;
(0, _defineProperty2.default)(SaveDialog, "propTypes", {
onRequestClose: _propTypes.default.func.isRequired,
content: _propTypes.default.any,
localization: _propTypes.default.object.isRequired
});