@bootstrap-styled/rsg-components
Version:
Create documentation layouts for your react-styleguidist using Bootstrap-Styled rsg-component. Boostrap Styled rsg-components use the @bootstrap-styled/v4 for recreating the original rsg-components.
227 lines (182 loc) • 12.9 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.propTypes = exports.defaultProps = 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 _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _lodash = _interopRequireDefault(require("lodash.omit"));
var _lib = _interopRequireDefault(require("map-to-css-modules/lib"));
var _classnames = _interopRequireDefault(require("classnames"));
var _reactLifecyclesCompat = require("react-lifecycles-compat");
var _reactSimpleCodeEditor = _interopRequireDefault(require("react-simple-code-editor"));
var _prismCore = _interopRequireDefault(require("prismjs/components/prism-core"));
require("prismjs/components/prism-clike");
require("prismjs/components/prism-markup");
require("prismjs/components/prism-javascript");
require("prismjs/components/prism-jsx");
var _theme = require("react-styleguidist/lib/client/styles/theme");
var highlight = function highlight(code) {
return _prismCore.default.highlight(code, _prismCore.default.languages.jsx, 'jsx');
};
var defaultProps = {
theme: {
styleguide: {
'$rsg-editor-font-family': 'Consolas, "Liberation Mono", Menlo, monospace',
'$rsg-editor-font-size': '13px',
'$rsg-editor-bg-color': '#f5f5f5',
'$rsg-editor-isolate': false,
'$rsg-editor-transition': 'all ease-in-out .1s',
'$rsg-editor-border-color': '#e8e8e8',
'$rsg-editor-border-radius': '3px',
'$rsg-editor-focus-outline': '0',
'$rsg-editor-focus-border-color': '#1673b1',
'$rsg-editor-focus-box-shadow': '0, 0, 0, 2, rgba(22, 115, 177, 0.25)',
'$rsg-editor-code-comment-color': '#6d6d6d',
'$rsg-editor-code-punctuation-color': '#999',
'$rsg-editor-code-namespace-opacity': '0.7',
'$rsg-editor-code-property-color': '#905',
'$rsg-editor-code-deleted-color': '#905',
'$rsg-editor-code-string-color': '#690',
'$rsg-editor-code-inserted-color': '#690',
'$rsg-editor-code-operator-color': '#9a6e3a',
'$rsg-editor-code-keyword-color': '#1673b1',
'$rsg-editor-code-function-color': '#DD4A68',
'$rsg-editor-code-variable-color': '#e90',
'$rsg-editor-code-font-weight': 'bold',
'$rsg-editor-code-font-style': 'italic',
'$rsg-editor-code-cursor': 'help'
}
}
};
/* eslint-disable react/require-default-props */
exports.defaultProps = defaultProps;
var propTypes = {
/**
* @ignore
*/
className: _propTypes.default.string,
// eslint-disable-line
code: _propTypes.default.string.isRequired,
onChange: _propTypes.default.func.isRequired,
/** Theme variables. Can be: */
theme: _propTypes.default.shape({
styleguide: _propTypes.default.shape({
'$rsg-editor-font-family': _propTypes.default.string,
'$rsg-editor-font-size': _propTypes.default.string,
'$rsg-editor-bg-color': _propTypes.default.string,
'$rsg-editor-isolate': _propTypes.default.bool,
'$rsg-editor-transition': _propTypes.default.string,
'$rsg-editor-border-color': _propTypes.default.string,
'$rsg-editor-border-radius': _propTypes.default.string,
'$rsg-editor-focus-outline': _propTypes.default.string,
'$rsg-editor-focus-border-color': _propTypes.default.string,
'$rsg-editor-focus-box-shadow': _propTypes.default.string,
'$rsg-editor-code-comment-color': _propTypes.default.string,
'$rsg-editor-code-punctuation-color': _propTypes.default.string,
'$rsg-editor-code-namespace-opacity': _propTypes.default.string,
'$rsg-editor-code-property-color': _propTypes.default.string,
'$rsg-editor-code-deleted-color': _propTypes.default.string,
'$rsg-editor-code-string-color': _propTypes.default.string,
'$rsg-editor-code-inserted-color': _propTypes.default.string,
'$rsg-editor-code-operator-color': _propTypes.default.string,
'$rsg-editor-code-keyword-color': _propTypes.default.string,
'$rsg-editor-code-function-color': _propTypes.default.string,
'$rsg-editor-code-variable-color': _propTypes.default.string,
'$rsg-editor-code-font-weight': _propTypes.default.string,
'$rsg-editor-code-font-style': _propTypes.default.string,
'$rsg-editor-code-cursor': _propTypes.default.string
})
}),
/**
* Replace or remove a className from the component.
* See example <a href="https://www.npmjs.com/package/map-to-css-modules" target="_blank">here</a>.
*/
cssModule: _propTypes.default.object // eslint-disable-line
};
/* eslint-enable react/require-default-props */
exports.propTypes = propTypes;
var EditorUnstyled =
/*#__PURE__*/
function (_Component) {
(0, _inherits2.default)(EditorUnstyled, _Component);
function EditorUnstyled() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2.default)(this, EditorUnstyled);
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)(EditorUnstyled)).call.apply(_getPrototypeOf2, [this].concat(args)));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
code: _this.props.code,
prevCode: _this.props.code
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleChange", function (code) {
_this.setState({
code: code
});
_this.props.onChange(code);
});
return _this;
}
(0, _createClass2.default)(EditorUnstyled, [{
key: "shouldComponentUpdate",
value: function shouldComponentUpdate(nextProps, nextState) {
return nextState.code !== this.state.code;
}
}, {
key: "render",
value: function render() {
var _omit = (0, _lodash.default)(this.props, ['theme']),
className = _omit.className,
cssModule = _omit.cssModule;
return _react.default.createElement(_reactSimpleCodeEditor.default, {
className: (0, _lib.default)((0, _classnames.default)(className, 'rsg-editor'), cssModule),
value: this.state.code,
onValueChange: this.handleChange,
highlight: highlight // Padding should be passed via a prop (not CSS) for a proper
// cursor position calculation
,
padding: _theme.space[2]
});
}
}], [{
key: "getDerivedStateFromProps",
value: function getDerivedStateFromProps(nextProps, prevState) {
var code = nextProps.code;
if (prevState.prevCode !== code) {
return {
prevCode: code,
code: code
};
}
return null;
}
}]);
return EditorUnstyled;
}(_react.Component); // Moved here because => Uncaught Error: Can only polyfill class components
(0, _defineProperty2.default)(EditorUnstyled, "propTypes", propTypes);
(0, _defineProperty2.default)(EditorUnstyled, "defaultProps", defaultProps);
(0, _reactLifecyclesCompat.polyfill)(EditorUnstyled);
var Editor = (0, _styledComponents.default)(EditorUnstyled).withConfig({
displayName: "Editor",
componentId: "fpi8rd-0"
})(["", ""], function (props) {
return "\n &.rsg-editor {\n font-family: ".concat(props.theme.styleguide['$rsg-editor-font-family'], ";\n font-size: ").concat(props.theme.styleguide['$rsg-editor-font-size'], ";\n background-color: ").concat(props.theme.styleguide['$rsg-editor-bg-color'], ";\n & textarea {\n isolate: ").concat(props.theme.styleguide['$rsg-editor-isolate'], ";\n transition: ").concat(props.theme.styleguide['$rsg-editor-transition'], ";\n border: 1px ").concat(props.theme.styleguide['$rsg-editor-border-color'], " solid !important;\n border-radius: ").concat(props.theme.styleguide['$rsg-editor-border-radius'], ";\n }\n & textarea:focus {\n isolate: ").concat(props.theme.styleguide['$rsg-editor-focus-isolate'], ";\n outline: ").concat(props.theme.styleguide['$rsg-editor-focus-outline'], ";\n border-color: ").concat(props.theme.styleguide['$rsg-editor-focus-border-color'], " !important;\n box-shadow: ").concat(props.theme.styleguide['$rsg-editor-focus-box-shadow'], ";\n }\n & .token.comment,\n & .token.doctype,\n & .token.cdata {\n isolate: ").concat(props.theme.styleguide['$rsg-editor-isolate'], ";\n color: ").concat(props.theme.styleguide['$rsg-editor-code-comment-color'], ";\n }\n & .token.punctuation {\n isolate: ").concat(props.theme.styleguide['$rsg-editor-isolate'], ";\n color: ").concat(props.theme.styleguide['$rsg-editor-code-punctuation-color'], ";\n }\n & .namespace {\n isolate: ").concat(props.theme.styleguide['$rsg-editor-isolate'], ";\n opacity: ").concat(props.theme.styleguide['$rsg-editor-code-namespace-opacity'], ";\n }\n & .token.property,\n & .token.tag,\n & .token.boolean,\n & .token.number,\n & .token.constant,\n & .token.symbol {\n isolate: ").concat(props.theme.styleguide['$rsg-editor-isolate'], ";\n color: ").concat(props.theme.styleguide['$rsg-editor-code-property-color'], ";\n }\n & .token.deleted {\n isolate: ").concat(props.theme.styleguide['$rsg-editor-isolate'], ";\n color: ").concat(props.theme.styleguide['$rsg-editor-code-deleted-color'], ";\n }\n & .token.selector,\n & .token.attr-name,\n & .token.string,\n & .token.char,\n & .token.builtin {\n isolate: ").concat(props.theme.styleguide['$rsg-editor-isolate'], ";\n color: ").concat(props.theme.styleguide['$rsg-editor-code-string-color'], ";\n }\n & .token.inserted {\n isolate: ").concat(props.theme.styleguide['$rsg-editor-isolate'], ";\n color: ").concat(props.theme.styleguide['$rsg-editor-code-inserted-color'], ";\n }\n & .token.operator,\n & .token.entity,\n & .token.url,\n & .language-css .token.string,\n & .style .token.string {\n isolate: ").concat(props.theme.styleguide['$rsg-editor-isolate'], ";\n color: ").concat(props.theme.styleguide['$rsg-editor-code-operator-color'], ";\n }\n & .token.atrule,\n & .token.attr-value,\n & .token.keyword {\n isolate: ").concat(props.theme.styleguide['$rsg-editor-isolate'], ";\n color: ").concat(props.theme.styleguide['$rsg-editor-code-keyword-color'], ";\n }\n & .token.function,\n & .token.class-name{\n isolate: ").concat(props.theme.styleguide['$rsg-editor-isolate'], ";\n color: ").concat(props.theme.styleguide['$rsg-editor-code-function-color'], ";\n }\n & .token.regex,\n & .token.important,\n & .token.variable {\n isolate: ").concat(props.theme.styleguide['$rsg-editor-isolate'], ";\n color: ").concat(props.theme.styleguide['$rsg-editor-code-variable-color'], ";\n }\n & .token.important,\n & .token.bold{\n isolate: ").concat(props.theme.styleguide['$rsg-editor-isolate'], ";\n font-weight: ").concat(props.theme.styleguide['$rsg-editor-code-font-weight'], ";\n }\n & .token.italic {\n isolate: ").concat(props.theme.styleguide['$rsg-editor-isolate'], ";\n font-style: ").concat(props.theme.styleguide['$rsg-editor-code-font-style'], ";\n }\n & .token.entity {\n isolate: ").concat(props.theme.styleguide['$rsg-editor-isolate'], ";\n cursor: ").concat(props.theme.styleguide['$rsg-editor-code-cursor'], ";\n }\n ");
});
Editor.defaultProps = defaultProps;
Editor.propTypes = propTypes;
/** @component */
var _default = Editor;
exports.default = _default;