UNPKG

feeles-ide

Version:

The hackable and serializable IDE to make learning material

134 lines (103 loc) 4.04 kB
"use strict"; 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 _csx = require("csx"); var cn = { root: (0, _typestyle.style)({ position: 'absolute', display: 'flex', flexDirection: 'row', alignItems: 'center', justifyContent: 'center', boxSizing: 'border-box', overflow: 'hidden', background: "linear-gradient(white, black)", width: '100%', height: '100%' }) }; var Preview = /*#__PURE__*/ function (_PureComponent) { (0, _inherits2.default)(Preview, _PureComponent); function Preview() { var _getPrototypeOf2; var _this; (0, _classCallCheck2.default)(this, Preview); 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)(Preview)).call.apply(_getPrototypeOf2, [this].concat(args))); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "state", { imageStyle: {} }); return _this; } (0, _createClass2.default)(Preview, [{ key: "componentDidMount", value: function componentDidMount() { var _this2 = this; var file = this.props.file; if (file.is('image')) { var image = new Image(); image.onload = function () { var ratio = function ratio(size) { return Math.max(size.height, 1) / Math.max(size.width, 1); }; var screenRect = _this2.container.getBoundingClientRect(); var val = ratio(screenRect) > ratio(image) ? screenRect.width / image.width : screenRect.height / image.height; _this2.setState({ imageStyle: { transform: (0, _csx.scale)(val * 0.9) } }); }; image.src = file.blobURL; } } }, { key: "render", value: function render() { var _this3 = this; var file = this.props.file; var imageStyle = this.state.imageStyle; var content = file.is('image') ? _react.default.createElement("img", { src: file.blobURL, alt: file.name, style: imageStyle }) : file.is('audio') ? _react.default.createElement("audio", { src: file.blobURL, controls: true }) : null; return _react.default.createElement("div", { className: cn.root, ref: function ref(_ref) { return _ref && (_this3.container = _ref); } }, content); } }]); return Preview; }(_react.PureComponent); exports.default = Preview; (0, _defineProperty2.default)(Preview, "propTypes", { file: _propTypes.default.object.isRequired, localization: _propTypes.default.object.isRequired, openFileDialog: _propTypes.default.func.isRequired, putFile: _propTypes.default.func.isRequired, getFiles: _propTypes.default.func.isRequired });