patternplate-client
Version:
Universal javascript client application for patternplate
213 lines (171 loc) • 15.3 kB
JavaScript
'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==