[d24f17c] | 1 | "use strict";
|
---|
| 2 |
|
---|
| 3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
---|
| 4 |
|
---|
| 5 | Object.defineProperty(exports, "__esModule", {
|
---|
| 6 | value: true
|
---|
| 7 | });
|
---|
| 8 | exports.createChildren = createChildren;
|
---|
| 9 | exports.createClassNameString = createClassNameString;
|
---|
| 10 | exports.createStyleObject = createStyleObject;
|
---|
| 11 | exports["default"] = createElement;
|
---|
| 12 |
|
---|
| 13 | var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
---|
| 14 |
|
---|
| 15 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
---|
| 16 |
|
---|
| 17 | var _react = _interopRequireDefault(require("react"));
|
---|
| 18 |
|
---|
| 19 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
---|
| 20 |
|
---|
| 21 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
---|
| 22 |
|
---|
| 23 | // Get all possible permutations of all power sets
|
---|
| 24 | //
|
---|
| 25 | // Super simple, non-algorithmic solution since the
|
---|
| 26 | // number of class names will not be greater than 4
|
---|
| 27 | function powerSetPermutations(arr) {
|
---|
| 28 | var arrLength = arr.length;
|
---|
| 29 | if (arrLength === 0 || arrLength === 1) return arr;
|
---|
| 30 |
|
---|
| 31 | if (arrLength === 2) {
|
---|
| 32 | // prettier-ignore
|
---|
| 33 | return [arr[0], arr[1], "".concat(arr[0], ".").concat(arr[1]), "".concat(arr[1], ".").concat(arr[0])];
|
---|
| 34 | }
|
---|
| 35 |
|
---|
| 36 | if (arrLength === 3) {
|
---|
| 37 | return [arr[0], arr[1], arr[2], "".concat(arr[0], ".").concat(arr[1]), "".concat(arr[0], ".").concat(arr[2]), "".concat(arr[1], ".").concat(arr[0]), "".concat(arr[1], ".").concat(arr[2]), "".concat(arr[2], ".").concat(arr[0]), "".concat(arr[2], ".").concat(arr[1]), "".concat(arr[0], ".").concat(arr[1], ".").concat(arr[2]), "".concat(arr[0], ".").concat(arr[2], ".").concat(arr[1]), "".concat(arr[1], ".").concat(arr[0], ".").concat(arr[2]), "".concat(arr[1], ".").concat(arr[2], ".").concat(arr[0]), "".concat(arr[2], ".").concat(arr[0], ".").concat(arr[1]), "".concat(arr[2], ".").concat(arr[1], ".").concat(arr[0])];
|
---|
| 38 | }
|
---|
| 39 |
|
---|
| 40 | if (arrLength >= 4) {
|
---|
| 41 | // Currently does not support more than 4 extra
|
---|
| 42 | // class names (after `.token` has been removed)
|
---|
| 43 | return [arr[0], arr[1], arr[2], arr[3], "".concat(arr[0], ".").concat(arr[1]), "".concat(arr[0], ".").concat(arr[2]), "".concat(arr[0], ".").concat(arr[3]), "".concat(arr[1], ".").concat(arr[0]), "".concat(arr[1], ".").concat(arr[2]), "".concat(arr[1], ".").concat(arr[3]), "".concat(arr[2], ".").concat(arr[0]), "".concat(arr[2], ".").concat(arr[1]), "".concat(arr[2], ".").concat(arr[3]), "".concat(arr[3], ".").concat(arr[0]), "".concat(arr[3], ".").concat(arr[1]), "".concat(arr[3], ".").concat(arr[2]), "".concat(arr[0], ".").concat(arr[1], ".").concat(arr[2]), "".concat(arr[0], ".").concat(arr[1], ".").concat(arr[3]), "".concat(arr[0], ".").concat(arr[2], ".").concat(arr[1]), "".concat(arr[0], ".").concat(arr[2], ".").concat(arr[3]), "".concat(arr[0], ".").concat(arr[3], ".").concat(arr[1]), "".concat(arr[0], ".").concat(arr[3], ".").concat(arr[2]), "".concat(arr[1], ".").concat(arr[0], ".").concat(arr[2]), "".concat(arr[1], ".").concat(arr[0], ".").concat(arr[3]), "".concat(arr[1], ".").concat(arr[2], ".").concat(arr[0]), "".concat(arr[1], ".").concat(arr[2], ".").concat(arr[3]), "".concat(arr[1], ".").concat(arr[3], ".").concat(arr[0]), "".concat(arr[1], ".").concat(arr[3], ".").concat(arr[2]), "".concat(arr[2], ".").concat(arr[0], ".").concat(arr[1]), "".concat(arr[2], ".").concat(arr[0], ".").concat(arr[3]), "".concat(arr[2], ".").concat(arr[1], ".").concat(arr[0]), "".concat(arr[2], ".").concat(arr[1], ".").concat(arr[3]), "".concat(arr[2], ".").concat(arr[3], ".").concat(arr[0]), "".concat(arr[2], ".").concat(arr[3], ".").concat(arr[1]), "".concat(arr[3], ".").concat(arr[0], ".").concat(arr[1]), "".concat(arr[3], ".").concat(arr[0], ".").concat(arr[2]), "".concat(arr[3], ".").concat(arr[1], ".").concat(arr[0]), "".concat(arr[3], ".").concat(arr[1], ".").concat(arr[2]), "".concat(arr[3], ".").concat(arr[2], ".").concat(arr[0]), "".concat(arr[3], ".").concat(arr[2], ".").concat(arr[1]), "".concat(arr[0], ".").concat(arr[1], ".").concat(arr[2], ".").concat(arr[3]), "".concat(arr[0], ".").concat(arr[1], ".").concat(arr[3], ".").concat(arr[2]), "".concat(arr[0], ".").concat(arr[2], ".").concat(arr[1], ".").concat(arr[3]), "".concat(arr[0], ".").concat(arr[2], ".").concat(arr[3], ".").concat(arr[1]), "".concat(arr[0], ".").concat(arr[3], ".").concat(arr[1], ".").concat(arr[2]), "".concat(arr[0], ".").concat(arr[3], ".").concat(arr[2], ".").concat(arr[1]), "".concat(arr[1], ".").concat(arr[0], ".").concat(arr[2], ".").concat(arr[3]), "".concat(arr[1], ".").concat(arr[0], ".").concat(arr[3], ".").concat(arr[2]), "".concat(arr[1], ".").concat(arr[2], ".").concat(arr[0], ".").concat(arr[3]), "".concat(arr[1], ".").concat(arr[2], ".").concat(arr[3], ".").concat(arr[0]), "".concat(arr[1], ".").concat(arr[3], ".").concat(arr[0], ".").concat(arr[2]), "".concat(arr[1], ".").concat(arr[3], ".").concat(arr[2], ".").concat(arr[0]), "".concat(arr[2], ".").concat(arr[0], ".").concat(arr[1], ".").concat(arr[3]), "".concat(arr[2], ".").concat(arr[0], ".").concat(arr[3], ".").concat(arr[1]), "".concat(arr[2], ".").concat(arr[1], ".").concat(arr[0], ".").concat(arr[3]), "".concat(arr[2], ".").concat(arr[1], ".").concat(arr[3], ".").concat(arr[0]), "".concat(arr[2], ".").concat(arr[3], ".").concat(arr[0], ".").concat(arr[1]), "".concat(arr[2], ".").concat(arr[3], ".").concat(arr[1], ".").concat(arr[0]), "".concat(arr[3], ".").concat(arr[0], ".").concat(arr[1], ".").concat(arr[2]), "".concat(arr[3], ".").concat(arr[0], ".").concat(arr[2], ".").concat(arr[1]), "".concat(arr[3], ".").concat(arr[1], ".").concat(arr[0], ".").concat(arr[2]), "".concat(arr[3], ".").concat(arr[1], ".").concat(arr[2], ".").concat(arr[0]), "".concat(arr[3], ".").concat(arr[2], ".").concat(arr[0], ".").concat(arr[1]), "".concat(arr[3], ".").concat(arr[2], ".").concat(arr[1], ".").concat(arr[0])];
|
---|
| 44 | }
|
---|
| 45 | }
|
---|
| 46 |
|
---|
| 47 | var classNameCombinations = {};
|
---|
| 48 |
|
---|
| 49 | function getClassNameCombinations(classNames) {
|
---|
| 50 | if (classNames.length === 0 || classNames.length === 1) return classNames;
|
---|
| 51 | var key = classNames.join('.');
|
---|
| 52 |
|
---|
| 53 | if (!classNameCombinations[key]) {
|
---|
| 54 | classNameCombinations[key] = powerSetPermutations(classNames);
|
---|
| 55 | }
|
---|
| 56 |
|
---|
| 57 | return classNameCombinations[key];
|
---|
| 58 | }
|
---|
| 59 |
|
---|
| 60 | function createStyleObject(classNames) {
|
---|
| 61 | var elementStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
---|
| 62 | var stylesheet = arguments.length > 2 ? arguments[2] : undefined;
|
---|
| 63 | var nonTokenClassNames = classNames.filter(function (className) {
|
---|
| 64 | return className !== 'token';
|
---|
| 65 | });
|
---|
| 66 | var classNamesCombinations = getClassNameCombinations(nonTokenClassNames);
|
---|
| 67 | return classNamesCombinations.reduce(function (styleObject, className) {
|
---|
| 68 | return _objectSpread(_objectSpread({}, styleObject), stylesheet[className]);
|
---|
| 69 | }, elementStyle);
|
---|
| 70 | }
|
---|
| 71 |
|
---|
| 72 | function createClassNameString(classNames) {
|
---|
| 73 | return classNames.join(' ');
|
---|
| 74 | }
|
---|
| 75 |
|
---|
| 76 | function createChildren(stylesheet, useInlineStyles) {
|
---|
| 77 | var childrenCount = 0;
|
---|
| 78 | return function (children) {
|
---|
| 79 | childrenCount += 1;
|
---|
| 80 | return children.map(function (child, i) {
|
---|
| 81 | return createElement({
|
---|
| 82 | node: child,
|
---|
| 83 | stylesheet: stylesheet,
|
---|
| 84 | useInlineStyles: useInlineStyles,
|
---|
| 85 | key: "code-segment-".concat(childrenCount, "-").concat(i)
|
---|
| 86 | });
|
---|
| 87 | });
|
---|
| 88 | };
|
---|
| 89 | }
|
---|
| 90 |
|
---|
| 91 | function createElement(_ref) {
|
---|
| 92 | var node = _ref.node,
|
---|
| 93 | stylesheet = _ref.stylesheet,
|
---|
| 94 | _ref$style = _ref.style,
|
---|
| 95 | style = _ref$style === void 0 ? {} : _ref$style,
|
---|
| 96 | useInlineStyles = _ref.useInlineStyles,
|
---|
| 97 | key = _ref.key;
|
---|
| 98 | var properties = node.properties,
|
---|
| 99 | type = node.type,
|
---|
| 100 | TagName = node.tagName,
|
---|
| 101 | value = node.value;
|
---|
| 102 |
|
---|
| 103 | if (type === 'text') {
|
---|
| 104 | return value;
|
---|
| 105 | } else if (TagName) {
|
---|
| 106 | var childrenCreator = createChildren(stylesheet, useInlineStyles);
|
---|
| 107 | var props;
|
---|
| 108 |
|
---|
| 109 | if (!useInlineStyles) {
|
---|
| 110 | props = _objectSpread(_objectSpread({}, properties), {}, {
|
---|
| 111 | className: createClassNameString(properties.className)
|
---|
| 112 | });
|
---|
| 113 | } else {
|
---|
| 114 | var allStylesheetSelectors = Object.keys(stylesheet).reduce(function (classes, selector) {
|
---|
| 115 | selector.split('.').forEach(function (className) {
|
---|
| 116 | if (!classes.includes(className)) classes.push(className);
|
---|
| 117 | });
|
---|
| 118 | return classes;
|
---|
| 119 | }, []); // For compatibility with older versions of react-syntax-highlighter
|
---|
| 120 |
|
---|
| 121 | var startingClassName = properties.className && properties.className.includes('token') ? ['token'] : [];
|
---|
| 122 | var className = properties.className && startingClassName.concat(properties.className.filter(function (className) {
|
---|
| 123 | return !allStylesheetSelectors.includes(className);
|
---|
| 124 | }));
|
---|
| 125 | props = _objectSpread(_objectSpread({}, properties), {}, {
|
---|
| 126 | className: createClassNameString(className) || undefined,
|
---|
| 127 | style: createStyleObject(properties.className, Object.assign({}, properties.style, style), stylesheet)
|
---|
| 128 | });
|
---|
| 129 | }
|
---|
| 130 |
|
---|
| 131 | var children = childrenCreator(node.children);
|
---|
| 132 | return /*#__PURE__*/_react["default"].createElement(TagName, (0, _extends2["default"])({
|
---|
| 133 | key: key
|
---|
| 134 | }, props), children);
|
---|
| 135 | }
|
---|
| 136 | } |
---|