source: node_modules/react-syntax-highlighter/dist/cjs/create-element.js@ e48199a

main
Last change on this file since e48199a was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 9.5 KB
Line 
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.createChildren = createChildren;
9exports.createClassNameString = createClassNameString;
10exports.createStyleObject = createStyleObject;
11exports["default"] = createElement;
12
13var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
14
15var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
17var _react = _interopRequireDefault(require("react"));
18
19function 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
21function _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
27function 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
47var classNameCombinations = {};
48
49function 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
60function 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
72function createClassNameString(classNames) {
73 return classNames.join(' ');
74}
75
76function 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
91function 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}
Note: See TracBrowser for help on using the repository browser.