source: node_modules/react-syntax-highlighter/dist/esm/create-element.js

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

Initial commit

  • Property mode set to 100644
File size: 9.0 KB
Line 
1import _extends from "@babel/runtime/helpers/extends";
2import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
4function 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; }
5
6function _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) { _defineProperty(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; }
7
8import React from 'react'; // Get all possible permutations of all power sets
9//
10// Super simple, non-algorithmic solution since the
11// number of class names will not be greater than 4
12
13function powerSetPermutations(arr) {
14 var arrLength = arr.length;
15 if (arrLength === 0 || arrLength === 1) return arr;
16
17 if (arrLength === 2) {
18 // prettier-ignore
19 return [arr[0], arr[1], "".concat(arr[0], ".").concat(arr[1]), "".concat(arr[1], ".").concat(arr[0])];
20 }
21
22 if (arrLength === 3) {
23 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])];
24 }
25
26 if (arrLength >= 4) {
27 // Currently does not support more than 4 extra
28 // class names (after `.token` has been removed)
29 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])];
30 }
31}
32
33var classNameCombinations = {};
34
35function getClassNameCombinations(classNames) {
36 if (classNames.length === 0 || classNames.length === 1) return classNames;
37 var key = classNames.join('.');
38
39 if (!classNameCombinations[key]) {
40 classNameCombinations[key] = powerSetPermutations(classNames);
41 }
42
43 return classNameCombinations[key];
44}
45
46export function createStyleObject(classNames) {
47 var elementStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
48 var stylesheet = arguments.length > 2 ? arguments[2] : undefined;
49 var nonTokenClassNames = classNames.filter(function (className) {
50 return className !== 'token';
51 });
52 var classNamesCombinations = getClassNameCombinations(nonTokenClassNames);
53 return classNamesCombinations.reduce(function (styleObject, className) {
54 return _objectSpread(_objectSpread({}, styleObject), stylesheet[className]);
55 }, elementStyle);
56}
57export function createClassNameString(classNames) {
58 return classNames.join(' ');
59}
60export function createChildren(stylesheet, useInlineStyles) {
61 var childrenCount = 0;
62 return function (children) {
63 childrenCount += 1;
64 return children.map(function (child, i) {
65 return createElement({
66 node: child,
67 stylesheet: stylesheet,
68 useInlineStyles: useInlineStyles,
69 key: "code-segment-".concat(childrenCount, "-").concat(i)
70 });
71 });
72 };
73}
74export default function createElement(_ref) {
75 var node = _ref.node,
76 stylesheet = _ref.stylesheet,
77 _ref$style = _ref.style,
78 style = _ref$style === void 0 ? {} : _ref$style,
79 useInlineStyles = _ref.useInlineStyles,
80 key = _ref.key;
81 var properties = node.properties,
82 type = node.type,
83 TagName = node.tagName,
84 value = node.value;
85
86 if (type === 'text') {
87 return value;
88 } else if (TagName) {
89 var childrenCreator = createChildren(stylesheet, useInlineStyles);
90 var props;
91
92 if (!useInlineStyles) {
93 props = _objectSpread(_objectSpread({}, properties), {}, {
94 className: createClassNameString(properties.className)
95 });
96 } else {
97 var allStylesheetSelectors = Object.keys(stylesheet).reduce(function (classes, selector) {
98 selector.split('.').forEach(function (className) {
99 if (!classes.includes(className)) classes.push(className);
100 });
101 return classes;
102 }, []); // For compatibility with older versions of react-syntax-highlighter
103
104 var startingClassName = properties.className && properties.className.includes('token') ? ['token'] : [];
105 var className = properties.className && startingClassName.concat(properties.className.filter(function (className) {
106 return !allStylesheetSelectors.includes(className);
107 }));
108 props = _objectSpread(_objectSpread({}, properties), {}, {
109 className: createClassNameString(className) || undefined,
110 style: createStyleObject(properties.className, Object.assign({}, properties.style, style), stylesheet)
111 });
112 }
113
114 var children = childrenCreator(node.children);
115 return /*#__PURE__*/React.createElement(TagName, _extends({
116 key: key
117 }, props), children);
118 }
119}
Note: See TracBrowser for help on using the repository browser.