UNPKG

patternplate-client

Version:

Universal javascript client application for patternplate

213 lines (171 loc) 15.3 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _class, _class2, _temp2; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _prettyData = require('pretty-data'); var _autobindDecorator = require('autobind-decorator'); var _autobindDecorator2 = _interopRequireDefault(_autobindDecorator); var _pureRenderDecorator = require('pure-render-decorator'); var _pureRenderDecorator2 = _interopRequireDefault(_pureRenderDecorator); var _code = require('../common/code'); var _code2 = _interopRequireDefault(_code); var _select = require('../common/select'); var _select2 = _interopRequireDefault(_select); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var PatternCode = (0, _pureRenderDecorator2.default)(_class = (0, _autobindDecorator2.default)(_class = (_temp2 = _class2 = function (_React$Component) { (0, _inherits3.default)(PatternCode, _React$Component); function PatternCode() { var _ref; var _temp, _this, _ret; (0, _classCallCheck3.default)(this, PatternCode); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = PatternCode.__proto__ || (0, _getPrototypeOf2.default)(PatternCode)).call.apply(_ref, [this].concat(args))), _this), _this.state = { copying: false }, _this.timeout = null, _this.idle = null, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret); } (0, _createClass3.default)(PatternCode, [{ key: 'componentWillUnmount', value: function componentWillUnmount() { if (this.timeout) { global.clearTimeout(this.timeout); } } }, { key: 'saveReference', value: function saveReference(ref) { this.ref = ref; } }, { key: 'handleCopyClick', value: function handleCopyClick() { var _this2 = this; if (this.ref && !this.state.copying) { this.ref.focus(); this.ref.select(); global.document.execCommand('copy'); this.setState((0, _extends3.default)({}, this.state, { copying: true })); this.timeout = setTimeout(function () { _this2.setState((0, _extends3.default)({}, _this2.state, { copying: false })); }, 3000); } } }, { key: 'render', value: function render() { var props = this.props; var prettify = props.highlight && props.format === 'html'; var source = prettify ? _prettyData.pd.xml(props.source) : props.source; var copying = this.state.copying; var concern = { value: props.concern, name: '' + props.concern + props.extname }; var concerns = this.props.concerns.map(function (concern) { return { name: '' + concern + props.extname, value: concern }; }); var type = { value: this.props.type, name: this.props.type }; var types = this.props.types.map(function (type) { return { name: type, value: type }; }); return _react2.default.createElement( 'div', { className: 'pattern-code' }, _react2.default.createElement( 'div', { className: 'pattern-code__toolbar' }, _react2.default.createElement( 'div', { className: 'pattern-code__name' }, concerns.length > 1 ? _react2.default.createElement(_select2.default, { base: props.base, className: 'pattern-code__concern', options: concerns, onChange: props.onConcernChange, value: concern }) : _react2.default.createElement( 'span', { className: 'pattern-code__concern' }, concern.name ), types.length > 1 ? _react2.default.createElement(_select2.default, { base: props.base, className: 'pattern-code__type', options: types, onChange: props.onTypeChange, value: type }) : _react2.default.createElement( 'span', { className: 'pattern-code__type' }, type.name ) ), _react2.default.createElement( 'div', { className: 'pattern-code__tools' }, props.copy && _react2.default.createElement( 'button', { type: 'button', onClick: this.handleCopyClick }, copying ? 'Copied!' : 'Copy to clipboard' ) ) ), _react2.default.createElement( 'div', { className: 'pattern-code__content' }, _react2.default.createElement( 'pre', null, _react2.default.createElement( _code2.default, { highlights: props.highlights, highlight: props.requestHighlight, language: props.format }, source ) ), _react2.default.createElement('textarea', { className: 'clipboard', value: source, ref: this.saveReference, readOnly: true }) ) ); } }]); return PatternCode; }(_react2.default.Component), _class2.defaultProps = { // format: 'html', highlight: true, copy: true }, _temp2)) || _class) || _class; exports.default = PatternCode; module.exports = exports['default']; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS9hcHBsaWNhdGlvbi9jb21wb25lbnRzL3BhdHRlcm4vcGF0dGVybi1jb2RlLmpzIl0sIm5hbWVzIjpbIlBhdHRlcm5Db2RlIiwic3RhdGUiLCJjb3B5aW5nIiwidGltZW91dCIsImlkbGUiLCJnbG9iYWwiLCJjbGVhclRpbWVvdXQiLCJyZWYiLCJmb2N1cyIsInNlbGVjdCIsImRvY3VtZW50IiwiZXhlY0NvbW1hbmQiLCJzZXRTdGF0ZSIsInNldFRpbWVvdXQiLCJwcm9wcyIsInByZXR0aWZ5IiwiaGlnaGxpZ2h0IiwiZm9ybWF0Iiwic291cmNlIiwieG1sIiwiY29uY2VybiIsInZhbHVlIiwibmFtZSIsImV4dG5hbWUiLCJjb25jZXJucyIsIm1hcCIsInR5cGUiLCJ0eXBlcyIsImxlbmd0aCIsImJhc2UiLCJvbkNvbmNlcm5DaGFuZ2UiLCJvblR5cGVDaGFuZ2UiLCJjb3B5IiwiaGFuZGxlQ29weUNsaWNrIiwiaGlnaGxpZ2h0cyIsInJlcXVlc3RIaWdobGlnaHQiLCJzYXZlUmVmZXJlbmNlIiwiQ29tcG9uZW50IiwiZGVmYXVsdFByb3BzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7OztBQUNBOztBQUNBOzs7O0FBQ0E7Ozs7QUFFQTs7OztBQUNBOzs7Ozs7SUFJcUJBLFc7Ozs7Ozs7Ozs7Ozs7O29OQXVCcEJDLEssR0FBUTtBQUNQQyxZQUFTO0FBREYsRyxRQUlSQyxPLEdBQVUsSSxRQUNWQyxJLEdBQU8sSTs7Ozs7eUNBRWdCO0FBQ3RCLE9BQUksS0FBS0QsT0FBVCxFQUFrQjtBQUNqQkUsV0FBT0MsWUFBUCxDQUFvQixLQUFLSCxPQUF6QjtBQUNBO0FBQ0Q7OztnQ0FFYUksRyxFQUFLO0FBQ2xCLFFBQUtBLEdBQUwsR0FBV0EsR0FBWDtBQUNBOzs7b0NBRWlCO0FBQUE7O0FBQ2pCLE9BQUksS0FBS0EsR0FBTCxJQUFZLENBQUMsS0FBS04sS0FBTCxDQUFXQyxPQUE1QixF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O0FBSUM7QUFKRDtBQVZEO0FBdkNELElBREQ7QUEyREE7OztFQTdJdUMsZ0JBQU1DLFMsV0FpQnZDQyxZLEdBQWU7QUFDckI7QUFDQXRCLFlBQVcsSUFGVTtBQUdyQmdCLE9BQU07QUFIZSxDOztrQkFqQkZoQyxXIiwiZmlsZSI6InBhdHRlcm4tY29kZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1Byb3BUeXBlcyBhcyB0eXBlc30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtwZCBhcyBwcmV0dHl9IGZyb20gJ3ByZXR0eS1kYXRhJztcbmltcG9ydCBhdXRvYmluZCBmcm9tICdhdXRvYmluZC1kZWNvcmF0b3InO1xuaW1wb3J0IHB1cmUgZnJvbSAncHVyZS1yZW5kZXItZGVjb3JhdG9yJztcblxuaW1wb3J0IENvZGUgZnJvbSAnLi4vY29tbW9uL2NvZGUnO1xuaW1wb3J0IFNlbGVjdCBmcm9tICcuLi9jb21tb24vc2VsZWN0JztcblxuQHB1cmVcbkBhdXRvYmluZFxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGF0dGVybkNvZGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuXHRzdGF0aWMgcHJvcFR5cGVzID0ge1xuXHRcdGJhc2U6IHR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuXHRcdGNvbmNlcm46IHR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuXHRcdGNvbmNlcm5zOiB0eXBlcy5hcnJheU9mKHR5cGVzLnN0cmluZykuaXNSZXF1aXJlZCxcblx0XHRjb3B5OiB0eXBlcy5ib29sLFxuXHRcdGV4dG5hbWU6IHR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuXHRcdGZvcm1hdDogdHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG5cdFx0aWQ6IHR5cGVzLnN0cmluZyxcblx0XHRuYW1lOiB0eXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcblx0XHRvbkNvbmNlcm5DaGFuZ2U6IHR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcblx0XHRvblR5cGVDaGFuZ2U6IHR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcblx0XHRzb3VyY2U6IHR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuXHRcdHR5cGU6IHR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuXHRcdHR5cGVzOiB0eXBlcy5hcnJheU9mKHR5cGVzLnN0cmluZykuaXNSZXF1aXJlZFxuXHR9O1xuXG5cdHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG5cdFx0Ly8gZm9ybWF0OiAnaHRtbCcsXG5cdFx0aGlnaGxpZ2h0OiB0cnVlLFxuXHRcdGNvcHk6IHRydWVcblx0fTtcblxuXHRzdGF0ZSA9IHtcblx0XHRjb3B5aW5nOiBmYWxzZVxuXHR9O1xuXG5cdHRpbWVvdXQgPSBudWxsO1xuXHRpZGxlID0gbnVsbDtcblxuXHRjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcblx0XHRpZiAodGhpcy50aW1lb3V0KSB7XG5cdFx0XHRnbG9iYWwuY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG5cdFx0fVxuXHR9XG5cblx0c2F2ZVJlZmVyZW5jZShyZWYpIHtcblx0XHR0aGlzLnJlZiA9IHJlZjtcblx0fVxuXG5cdGhhbmRsZUNvcHlDbGljaygpIHtcblx0XHRpZiAodGhpcy5yZWYgJiYgIXRoaXMuc3RhdGUuY29weWluZykge1xuXHRcdFx0dGhpcy5yZWYuZm9jdXMoKTtcblx0XHRcdHRoaXMucmVmLnNlbGVjdCgpO1xuXHRcdFx0Z2xvYmFsLmRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0Y29weWluZzogdHJ1ZVxuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRjb3B5aW5nOiBmYWxzZVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sIDMwMDApO1xuXHRcdH1cblx0fVxuXG5cdHJlbmRlcigpIHtcblx0XHRjb25zdCB7cHJvcHN9ID0gdGhpcztcblx0XHRjb25zdCBwcmV0dGlmeSA9IHByb3BzLmhpZ2hsaWdodCAmJiBwcm9wcy5mb3JtYXQgPT09ICdodG1sJztcblx0XHRjb25zdCBzb3VyY2UgPSBwcmV0dGlmeSA/IHByZXR0eS54bWwocHJvcHMuc291cmNlKSA6IHByb3BzLnNvdXJjZTtcblx0XHRjb25zdCB7Y29weWluZ30gPSB0aGlzLnN0YXRlO1xuXG5cdFx0Y29uc3QgY29uY2VybiA9IHtcblx0XHRcdHZhbHVlOiBwcm9wcy5jb25jZXJuLFxuXHRcdFx0bmFtZTogYCR7cHJvcHMuY29uY2Vybn0ke3Byb3BzLmV4dG5hbWV9YFxuXHRcdH07XG5cblx0XHRjb25zdCBjb25jZXJucyA9IHRoaXMucHJvcHMuY29uY2VybnMubWFwKGNvbmNlcm4gPT4ge1xuXHRcdFx0cmV0dXJuIHtuYW1lOiBgJHtjb25jZXJufSR7cHJvcHMuZXh0bmFtZX1gLCB2YWx1ZTogY29uY2Vybn07XG5cdFx0fSk7XG5cblx0XHRjb25zdCB0eXBlID0ge1xuXHRcdFx0dmFsdWU6IHRoaXMucHJvcHMudHlwZSxcblx0XHRcdG5hbWU6IHRoaXMucHJvcHMudHlwZVxuXHRcdH07XG5cblx0XHRjb25zdCB0eXBlcyA9IHRoaXMucHJvcHMudHlwZXMubWFwKHR5cGUgPT4ge1xuXHRcdFx0cmV0dXJuIHtuYW1lOiB0eXBlLCB2YWx1ZTogdHlwZX07XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PGRpdiBjbGFzc05hbWU9XCJwYXR0ZXJuLWNvZGVcIj5cblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJwYXR0ZXJuLWNvZGVfX3Rvb2xiYXJcIj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cInBhdHRlcm4tY29kZV9fbmFtZVwiPlxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRjb25jZXJucy5sZW5ndGggPiAxID9cblx0XHRcdFx0XHRcdFx0XHQ8U2VsZWN0XG5cdFx0XHRcdFx0XHRcdFx0XHRiYXNlPXtwcm9wcy5iYXNlfVxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwicGF0dGVybi1jb2RlX19jb25jZXJuXCJcblx0XHRcdFx0XHRcdFx0XHRcdG9wdGlvbnM9e2NvbmNlcm5zfVxuXHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9e3Byb3BzLm9uQ29uY2VybkNoYW5nZX1cblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlPXtjb25jZXJufVxuXHRcdFx0XHRcdFx0XHRcdFx0Lz4gOlxuXHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT1cInBhdHRlcm4tY29kZV9fY29uY2VyblwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0e2NvbmNlcm4ubmFtZX1cblx0XHRcdFx0XHRcdFx0XHQ8L3NwYW4+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHR5cGVzLmxlbmd0aCA+IDEgP1xuXHRcdFx0XHRcdFx0XHRcdDxTZWxlY3Rcblx0XHRcdFx0XHRcdFx0XHRcdGJhc2U9e3Byb3BzLmJhc2V9XG5cdFx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU9XCJwYXR0ZXJuLWNvZGVfX3R5cGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0b3B0aW9ucz17dHlwZXN9XG5cdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17cHJvcHMub25UeXBlQ2hhbmdlfVxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU9e3R5cGV9XG5cdFx0XHRcdFx0XHRcdFx0XHQvPiA6XG5cdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPVwicGF0dGVybi1jb2RlX190eXBlXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHR7dHlwZS5uYW1lfVxuXHRcdFx0XHRcdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cInBhdHRlcm4tY29kZV9fdG9vbHNcIj5cblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0cHJvcHMuY29weSAmJlxuXHRcdFx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ29weUNsaWNrfT5cblx0XHRcdFx0XHRcdFx0XHRcdHtjb3B5aW5nID8gJ0NvcGllZCEnIDogJ0NvcHkgdG8gY2xpcGJvYXJkJ31cblx0XHRcdFx0XHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwicGF0dGVybi1jb2RlX19jb250ZW50XCI+XG5cdFx0XHRcdFx0PHByZT5cblx0XHRcdFx0XHRcdDxDb2RlXG5cdFx0XHRcdFx0XHRcdGhpZ2hsaWdodHM9e3Byb3BzLmhpZ2hsaWdodHN9XG5cdFx0XHRcdFx0XHRcdGhpZ2hsaWdodD17cHJvcHMucmVxdWVzdEhpZ2hsaWdodH1cblx0XHRcdFx0XHRcdFx0bGFuZ3VhZ2U9e3Byb3BzLmZvcm1hdH1cblx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHR7c291cmNlfVxuXHRcdFx0XHRcdFx0PC9Db2RlPlxuXHRcdFx0XHRcdDwvcHJlPlxuXHRcdFx0XHRcdDx0ZXh0YXJlYVxuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwiY2xpcGJvYXJkXCJcblx0XHRcdFx0XHRcdHZhbHVlPXtzb3VyY2V9XG5cdFx0XHRcdFx0XHRyZWY9e3RoaXMuc2F2ZVJlZmVyZW5jZX1cblx0XHRcdFx0XHRcdHJlYWRPbmx5XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdCk7XG5cdH1cbn1cbiJdfQ==