[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["default"] = _default;
|
---|
| 9 |
|
---|
| 10 | var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
---|
| 11 |
|
---|
| 12 | var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
---|
| 13 |
|
---|
| 14 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
---|
| 15 |
|
---|
| 16 | var _react = _interopRequireDefault(require("react"));
|
---|
| 17 |
|
---|
| 18 | var _createElement = _interopRequireDefault(require("./create-element"));
|
---|
| 19 |
|
---|
| 20 | var _checkForListedLanguage = _interopRequireDefault(require("./checkForListedLanguage"));
|
---|
| 21 |
|
---|
| 22 | var _excluded = ["language", "children", "style", "customStyle", "codeTagProps", "useInlineStyles", "showLineNumbers", "showInlineLineNumbers", "startingLineNumber", "lineNumberContainerStyle", "lineNumberStyle", "wrapLines", "wrapLongLines", "lineProps", "renderer", "PreTag", "CodeTag", "code", "astGenerator"];
|
---|
| 23 |
|
---|
| 24 | 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; }
|
---|
| 25 |
|
---|
| 26 | 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; }
|
---|
| 27 |
|
---|
| 28 | var newLineRegex = /\n/g;
|
---|
| 29 |
|
---|
| 30 | function getNewLines(str) {
|
---|
| 31 | return str.match(newLineRegex);
|
---|
| 32 | }
|
---|
| 33 |
|
---|
| 34 | function getAllLineNumbers(_ref) {
|
---|
| 35 | var lines = _ref.lines,
|
---|
| 36 | startingLineNumber = _ref.startingLineNumber,
|
---|
| 37 | style = _ref.style;
|
---|
| 38 | return lines.map(function (_, i) {
|
---|
| 39 | var number = i + startingLineNumber;
|
---|
| 40 | return /*#__PURE__*/_react["default"].createElement("span", {
|
---|
| 41 | key: "line-".concat(i),
|
---|
| 42 | className: "react-syntax-highlighter-line-number",
|
---|
| 43 | style: typeof style === 'function' ? style(number) : style
|
---|
| 44 | }, "".concat(number, "\n"));
|
---|
| 45 | });
|
---|
| 46 | }
|
---|
| 47 |
|
---|
| 48 | function AllLineNumbers(_ref2) {
|
---|
| 49 | var codeString = _ref2.codeString,
|
---|
| 50 | codeStyle = _ref2.codeStyle,
|
---|
| 51 | _ref2$containerStyle = _ref2.containerStyle,
|
---|
| 52 | containerStyle = _ref2$containerStyle === void 0 ? {
|
---|
| 53 | "float": 'left',
|
---|
| 54 | paddingRight: '10px'
|
---|
| 55 | } : _ref2$containerStyle,
|
---|
| 56 | _ref2$numberStyle = _ref2.numberStyle,
|
---|
| 57 | numberStyle = _ref2$numberStyle === void 0 ? {} : _ref2$numberStyle,
|
---|
| 58 | startingLineNumber = _ref2.startingLineNumber;
|
---|
| 59 | return /*#__PURE__*/_react["default"].createElement("code", {
|
---|
| 60 | style: Object.assign({}, codeStyle, containerStyle)
|
---|
| 61 | }, getAllLineNumbers({
|
---|
| 62 | lines: codeString.replace(/\n$/, '').split('\n'),
|
---|
| 63 | style: numberStyle,
|
---|
| 64 | startingLineNumber: startingLineNumber
|
---|
| 65 | }));
|
---|
| 66 | }
|
---|
| 67 |
|
---|
| 68 | function getEmWidthOfNumber(num) {
|
---|
| 69 | return "".concat(num.toString().length, ".25em");
|
---|
| 70 | }
|
---|
| 71 |
|
---|
| 72 | function getInlineLineNumber(lineNumber, inlineLineNumberStyle) {
|
---|
| 73 | return {
|
---|
| 74 | type: 'element',
|
---|
| 75 | tagName: 'span',
|
---|
| 76 | properties: {
|
---|
| 77 | key: "line-number--".concat(lineNumber),
|
---|
| 78 | className: ['comment', 'linenumber', 'react-syntax-highlighter-line-number'],
|
---|
| 79 | style: inlineLineNumberStyle
|
---|
| 80 | },
|
---|
| 81 | children: [{
|
---|
| 82 | type: 'text',
|
---|
| 83 | value: lineNumber
|
---|
| 84 | }]
|
---|
| 85 | };
|
---|
| 86 | }
|
---|
| 87 |
|
---|
| 88 | function assembleLineNumberStyles(lineNumberStyle, lineNumber, largestLineNumber) {
|
---|
| 89 | // minimally necessary styling for line numbers
|
---|
| 90 | var defaultLineNumberStyle = {
|
---|
| 91 | display: 'inline-block',
|
---|
| 92 | minWidth: getEmWidthOfNumber(largestLineNumber),
|
---|
| 93 | paddingRight: '1em',
|
---|
| 94 | textAlign: 'right',
|
---|
| 95 | userSelect: 'none'
|
---|
| 96 | }; // prep custom styling
|
---|
| 97 |
|
---|
| 98 | var customLineNumberStyle = typeof lineNumberStyle === 'function' ? lineNumberStyle(lineNumber) : lineNumberStyle; // combine
|
---|
| 99 |
|
---|
| 100 | var assembledStyle = _objectSpread(_objectSpread({}, defaultLineNumberStyle), customLineNumberStyle);
|
---|
| 101 |
|
---|
| 102 | return assembledStyle;
|
---|
| 103 | }
|
---|
| 104 |
|
---|
| 105 | function createLineElement(_ref3) {
|
---|
| 106 | var children = _ref3.children,
|
---|
| 107 | lineNumber = _ref3.lineNumber,
|
---|
| 108 | lineNumberStyle = _ref3.lineNumberStyle,
|
---|
| 109 | largestLineNumber = _ref3.largestLineNumber,
|
---|
| 110 | showInlineLineNumbers = _ref3.showInlineLineNumbers,
|
---|
| 111 | _ref3$lineProps = _ref3.lineProps,
|
---|
| 112 | lineProps = _ref3$lineProps === void 0 ? {} : _ref3$lineProps,
|
---|
| 113 | _ref3$className = _ref3.className,
|
---|
| 114 | className = _ref3$className === void 0 ? [] : _ref3$className,
|
---|
| 115 | showLineNumbers = _ref3.showLineNumbers,
|
---|
| 116 | wrapLongLines = _ref3.wrapLongLines;
|
---|
| 117 | var properties = typeof lineProps === 'function' ? lineProps(lineNumber) : lineProps;
|
---|
| 118 | properties['className'] = className;
|
---|
| 119 |
|
---|
| 120 | if (lineNumber && showInlineLineNumbers) {
|
---|
| 121 | var inlineLineNumberStyle = assembleLineNumberStyles(lineNumberStyle, lineNumber, largestLineNumber);
|
---|
| 122 | children.unshift(getInlineLineNumber(lineNumber, inlineLineNumberStyle));
|
---|
| 123 | }
|
---|
| 124 |
|
---|
| 125 | if (wrapLongLines & showLineNumbers) {
|
---|
| 126 | properties.style = _objectSpread(_objectSpread({}, properties.style), {}, {
|
---|
| 127 | display: 'flex'
|
---|
| 128 | });
|
---|
| 129 | }
|
---|
| 130 |
|
---|
| 131 | return {
|
---|
| 132 | type: 'element',
|
---|
| 133 | tagName: 'span',
|
---|
| 134 | properties: properties,
|
---|
| 135 | children: children
|
---|
| 136 | };
|
---|
| 137 | }
|
---|
| 138 |
|
---|
| 139 | function flattenCodeTree(tree) {
|
---|
| 140 | var className = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
---|
| 141 | var newTree = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
---|
| 142 |
|
---|
| 143 | for (var i = 0; i < tree.length; i++) {
|
---|
| 144 | var node = tree[i];
|
---|
| 145 |
|
---|
| 146 | if (node.type === 'text') {
|
---|
| 147 | newTree.push(createLineElement({
|
---|
| 148 | children: [node],
|
---|
| 149 | className: (0, _toConsumableArray2["default"])(new Set(className))
|
---|
| 150 | }));
|
---|
| 151 | } else if (node.children) {
|
---|
| 152 | var classNames = className.concat(node.properties.className);
|
---|
| 153 | flattenCodeTree(node.children, classNames).forEach(function (i) {
|
---|
| 154 | return newTree.push(i);
|
---|
| 155 | });
|
---|
| 156 | }
|
---|
| 157 | }
|
---|
| 158 |
|
---|
| 159 | return newTree;
|
---|
| 160 | }
|
---|
| 161 |
|
---|
| 162 | function processLines(codeTree, wrapLines, lineProps, showLineNumbers, showInlineLineNumbers, startingLineNumber, largestLineNumber, lineNumberStyle, wrapLongLines) {
|
---|
| 163 | var _ref4;
|
---|
| 164 |
|
---|
| 165 | var tree = flattenCodeTree(codeTree.value);
|
---|
| 166 | var newTree = [];
|
---|
| 167 | var lastLineBreakIndex = -1;
|
---|
| 168 | var index = 0;
|
---|
| 169 |
|
---|
| 170 | function createWrappedLine(children, lineNumber) {
|
---|
| 171 | var className = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
---|
| 172 | return createLineElement({
|
---|
| 173 | children: children,
|
---|
| 174 | lineNumber: lineNumber,
|
---|
| 175 | lineNumberStyle: lineNumberStyle,
|
---|
| 176 | largestLineNumber: largestLineNumber,
|
---|
| 177 | showInlineLineNumbers: showInlineLineNumbers,
|
---|
| 178 | lineProps: lineProps,
|
---|
| 179 | className: className,
|
---|
| 180 | showLineNumbers: showLineNumbers,
|
---|
| 181 | wrapLongLines: wrapLongLines
|
---|
| 182 | });
|
---|
| 183 | }
|
---|
| 184 |
|
---|
| 185 | function createUnwrappedLine(children, lineNumber) {
|
---|
| 186 | if (showLineNumbers && lineNumber && showInlineLineNumbers) {
|
---|
| 187 | var inlineLineNumberStyle = assembleLineNumberStyles(lineNumberStyle, lineNumber, largestLineNumber);
|
---|
| 188 | children.unshift(getInlineLineNumber(lineNumber, inlineLineNumberStyle));
|
---|
| 189 | }
|
---|
| 190 |
|
---|
| 191 | return children;
|
---|
| 192 | }
|
---|
| 193 |
|
---|
| 194 | function createLine(children, lineNumber) {
|
---|
| 195 | var className = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
---|
| 196 | return wrapLines || className.length > 0 ? createWrappedLine(children, lineNumber, className) : createUnwrappedLine(children, lineNumber);
|
---|
| 197 | }
|
---|
| 198 |
|
---|
| 199 | var _loop = function _loop() {
|
---|
| 200 | var node = tree[index];
|
---|
| 201 | var value = node.children[0].value;
|
---|
| 202 | var newLines = getNewLines(value);
|
---|
| 203 |
|
---|
| 204 | if (newLines) {
|
---|
| 205 | var splitValue = value.split('\n');
|
---|
| 206 | splitValue.forEach(function (text, i) {
|
---|
| 207 | var lineNumber = showLineNumbers && newTree.length + startingLineNumber;
|
---|
| 208 | var newChild = {
|
---|
| 209 | type: 'text',
|
---|
| 210 | value: "".concat(text, "\n")
|
---|
| 211 | }; // if it's the first line
|
---|
| 212 |
|
---|
| 213 | if (i === 0) {
|
---|
| 214 | var _children = tree.slice(lastLineBreakIndex + 1, index).concat(createLineElement({
|
---|
| 215 | children: [newChild],
|
---|
| 216 | className: node.properties.className
|
---|
| 217 | }));
|
---|
| 218 |
|
---|
| 219 | var _line = createLine(_children, lineNumber);
|
---|
| 220 |
|
---|
| 221 | newTree.push(_line); // if it's the last line
|
---|
| 222 | } else if (i === splitValue.length - 1) {
|
---|
| 223 | var stringChild = tree[index + 1] && tree[index + 1].children && tree[index + 1].children[0];
|
---|
| 224 | var lastLineInPreviousSpan = {
|
---|
| 225 | type: 'text',
|
---|
| 226 | value: "".concat(text)
|
---|
| 227 | };
|
---|
| 228 |
|
---|
| 229 | if (stringChild) {
|
---|
| 230 | var newElem = createLineElement({
|
---|
| 231 | children: [lastLineInPreviousSpan],
|
---|
| 232 | className: node.properties.className
|
---|
| 233 | });
|
---|
| 234 | tree.splice(index + 1, 0, newElem);
|
---|
| 235 | } else {
|
---|
| 236 | var _children2 = [lastLineInPreviousSpan];
|
---|
| 237 |
|
---|
| 238 | var _line2 = createLine(_children2, lineNumber, node.properties.className);
|
---|
| 239 |
|
---|
| 240 | newTree.push(_line2);
|
---|
| 241 | } // if it's neither the first nor the last line
|
---|
| 242 |
|
---|
| 243 | } else {
|
---|
| 244 | var _children3 = [newChild];
|
---|
| 245 |
|
---|
| 246 | var _line3 = createLine(_children3, lineNumber, node.properties.className);
|
---|
| 247 |
|
---|
| 248 | newTree.push(_line3);
|
---|
| 249 | }
|
---|
| 250 | });
|
---|
| 251 | lastLineBreakIndex = index;
|
---|
| 252 | }
|
---|
| 253 |
|
---|
| 254 | index++;
|
---|
| 255 | };
|
---|
| 256 |
|
---|
| 257 | while (index < tree.length) {
|
---|
| 258 | _loop();
|
---|
| 259 | }
|
---|
| 260 |
|
---|
| 261 | if (lastLineBreakIndex !== tree.length - 1) {
|
---|
| 262 | var children = tree.slice(lastLineBreakIndex + 1, tree.length);
|
---|
| 263 |
|
---|
| 264 | if (children && children.length) {
|
---|
| 265 | var lineNumber = showLineNumbers && newTree.length + startingLineNumber;
|
---|
| 266 | var line = createLine(children, lineNumber);
|
---|
| 267 | newTree.push(line);
|
---|
| 268 | }
|
---|
| 269 | }
|
---|
| 270 |
|
---|
| 271 | return wrapLines ? newTree : (_ref4 = []).concat.apply(_ref4, newTree);
|
---|
| 272 | }
|
---|
| 273 |
|
---|
| 274 | function defaultRenderer(_ref5) {
|
---|
| 275 | var rows = _ref5.rows,
|
---|
| 276 | stylesheet = _ref5.stylesheet,
|
---|
| 277 | useInlineStyles = _ref5.useInlineStyles;
|
---|
| 278 | return rows.map(function (node, i) {
|
---|
| 279 | return (0, _createElement["default"])({
|
---|
| 280 | node: node,
|
---|
| 281 | stylesheet: stylesheet,
|
---|
| 282 | useInlineStyles: useInlineStyles,
|
---|
| 283 | key: "code-segement".concat(i)
|
---|
| 284 | });
|
---|
| 285 | });
|
---|
| 286 | } // only highlight.js has the highlightAuto method
|
---|
| 287 |
|
---|
| 288 |
|
---|
| 289 | function isHighlightJs(astGenerator) {
|
---|
| 290 | return astGenerator && typeof astGenerator.highlightAuto !== 'undefined';
|
---|
| 291 | }
|
---|
| 292 |
|
---|
| 293 | function getCodeTree(_ref6) {
|
---|
| 294 | var astGenerator = _ref6.astGenerator,
|
---|
| 295 | language = _ref6.language,
|
---|
| 296 | code = _ref6.code,
|
---|
| 297 | defaultCodeValue = _ref6.defaultCodeValue;
|
---|
| 298 |
|
---|
| 299 | // figure out whether we're using lowlight/highlight or refractor/prism
|
---|
| 300 | // then attempt highlighting accordingly
|
---|
| 301 | // lowlight/highlight?
|
---|
| 302 | if (isHighlightJs(astGenerator)) {
|
---|
| 303 | var hasLanguage = (0, _checkForListedLanguage["default"])(astGenerator, language);
|
---|
| 304 |
|
---|
| 305 | if (language === 'text') {
|
---|
| 306 | return {
|
---|
| 307 | value: defaultCodeValue,
|
---|
| 308 | language: 'text'
|
---|
| 309 | };
|
---|
| 310 | } else if (hasLanguage) {
|
---|
| 311 | return astGenerator.highlight(language, code);
|
---|
| 312 | } else {
|
---|
| 313 | return astGenerator.highlightAuto(code);
|
---|
| 314 | }
|
---|
| 315 | } // must be refractor/prism, then
|
---|
| 316 |
|
---|
| 317 |
|
---|
| 318 | try {
|
---|
| 319 | return language && language !== 'text' ? {
|
---|
| 320 | value: astGenerator.highlight(code, language)
|
---|
| 321 | } : {
|
---|
| 322 | value: defaultCodeValue
|
---|
| 323 | };
|
---|
| 324 | } catch (e) {
|
---|
| 325 | return {
|
---|
| 326 | value: defaultCodeValue
|
---|
| 327 | };
|
---|
| 328 | }
|
---|
| 329 | }
|
---|
| 330 |
|
---|
| 331 | function _default(defaultAstGenerator, defaultStyle) {
|
---|
| 332 | return function SyntaxHighlighter(_ref7) {
|
---|
| 333 | var language = _ref7.language,
|
---|
| 334 | children = _ref7.children,
|
---|
| 335 | _ref7$style = _ref7.style,
|
---|
| 336 | style = _ref7$style === void 0 ? defaultStyle : _ref7$style,
|
---|
| 337 | _ref7$customStyle = _ref7.customStyle,
|
---|
| 338 | customStyle = _ref7$customStyle === void 0 ? {} : _ref7$customStyle,
|
---|
| 339 | _ref7$codeTagProps = _ref7.codeTagProps,
|
---|
| 340 | codeTagProps = _ref7$codeTagProps === void 0 ? {
|
---|
| 341 | className: language ? "language-".concat(language) : undefined,
|
---|
| 342 | style: _objectSpread(_objectSpread({}, style['code[class*="language-"]']), style["code[class*=\"language-".concat(language, "\"]")])
|
---|
| 343 | } : _ref7$codeTagProps,
|
---|
| 344 | _ref7$useInlineStyles = _ref7.useInlineStyles,
|
---|
| 345 | useInlineStyles = _ref7$useInlineStyles === void 0 ? true : _ref7$useInlineStyles,
|
---|
| 346 | _ref7$showLineNumbers = _ref7.showLineNumbers,
|
---|
| 347 | showLineNumbers = _ref7$showLineNumbers === void 0 ? false : _ref7$showLineNumbers,
|
---|
| 348 | _ref7$showInlineLineN = _ref7.showInlineLineNumbers,
|
---|
| 349 | showInlineLineNumbers = _ref7$showInlineLineN === void 0 ? true : _ref7$showInlineLineN,
|
---|
| 350 | _ref7$startingLineNum = _ref7.startingLineNumber,
|
---|
| 351 | startingLineNumber = _ref7$startingLineNum === void 0 ? 1 : _ref7$startingLineNum,
|
---|
| 352 | lineNumberContainerStyle = _ref7.lineNumberContainerStyle,
|
---|
| 353 | _ref7$lineNumberStyle = _ref7.lineNumberStyle,
|
---|
| 354 | lineNumberStyle = _ref7$lineNumberStyle === void 0 ? {} : _ref7$lineNumberStyle,
|
---|
| 355 | wrapLines = _ref7.wrapLines,
|
---|
| 356 | _ref7$wrapLongLines = _ref7.wrapLongLines,
|
---|
| 357 | wrapLongLines = _ref7$wrapLongLines === void 0 ? false : _ref7$wrapLongLines,
|
---|
| 358 | _ref7$lineProps = _ref7.lineProps,
|
---|
| 359 | lineProps = _ref7$lineProps === void 0 ? {} : _ref7$lineProps,
|
---|
| 360 | renderer = _ref7.renderer,
|
---|
| 361 | _ref7$PreTag = _ref7.PreTag,
|
---|
| 362 | PreTag = _ref7$PreTag === void 0 ? 'pre' : _ref7$PreTag,
|
---|
| 363 | _ref7$CodeTag = _ref7.CodeTag,
|
---|
| 364 | CodeTag = _ref7$CodeTag === void 0 ? 'code' : _ref7$CodeTag,
|
---|
| 365 | _ref7$code = _ref7.code,
|
---|
| 366 | code = _ref7$code === void 0 ? (Array.isArray(children) ? children[0] : children) || '' : _ref7$code,
|
---|
| 367 | astGenerator = _ref7.astGenerator,
|
---|
| 368 | rest = (0, _objectWithoutProperties2["default"])(_ref7, _excluded);
|
---|
| 369 | astGenerator = astGenerator || defaultAstGenerator;
|
---|
| 370 | var allLineNumbers = showLineNumbers ? /*#__PURE__*/_react["default"].createElement(AllLineNumbers, {
|
---|
| 371 | containerStyle: lineNumberContainerStyle,
|
---|
| 372 | codeStyle: codeTagProps.style || {},
|
---|
| 373 | numberStyle: lineNumberStyle,
|
---|
| 374 | startingLineNumber: startingLineNumber,
|
---|
| 375 | codeString: code
|
---|
| 376 | }) : null;
|
---|
| 377 | var defaultPreStyle = style.hljs || style['pre[class*="language-"]'] || {
|
---|
| 378 | backgroundColor: '#fff'
|
---|
| 379 | };
|
---|
| 380 | var generatorClassName = isHighlightJs(astGenerator) ? 'hljs' : 'prismjs';
|
---|
| 381 | var preProps = useInlineStyles ? Object.assign({}, rest, {
|
---|
| 382 | style: Object.assign({}, defaultPreStyle, customStyle)
|
---|
| 383 | }) : Object.assign({}, rest, {
|
---|
| 384 | className: rest.className ? "".concat(generatorClassName, " ").concat(rest.className) : generatorClassName,
|
---|
| 385 | style: Object.assign({}, customStyle)
|
---|
| 386 | });
|
---|
| 387 |
|
---|
| 388 | if (wrapLongLines) {
|
---|
| 389 | codeTagProps.style = _objectSpread(_objectSpread({}, codeTagProps.style), {}, {
|
---|
| 390 | whiteSpace: 'pre-wrap'
|
---|
| 391 | });
|
---|
| 392 | } else {
|
---|
| 393 | codeTagProps.style = _objectSpread(_objectSpread({}, codeTagProps.style), {}, {
|
---|
| 394 | whiteSpace: 'pre'
|
---|
| 395 | });
|
---|
| 396 | }
|
---|
| 397 |
|
---|
| 398 | if (!astGenerator) {
|
---|
| 399 | return /*#__PURE__*/_react["default"].createElement(PreTag, preProps, allLineNumbers, /*#__PURE__*/_react["default"].createElement(CodeTag, codeTagProps, code));
|
---|
| 400 | }
|
---|
| 401 | /*
|
---|
| 402 | * Some custom renderers rely on individual row elements so we need to turn wrapLines on
|
---|
| 403 | * if renderer is provided and wrapLines is undefined.
|
---|
| 404 | */
|
---|
| 405 |
|
---|
| 406 |
|
---|
| 407 | if (wrapLines === undefined && renderer || wrapLongLines) wrapLines = true;
|
---|
| 408 | renderer = renderer || defaultRenderer;
|
---|
| 409 | var defaultCodeValue = [{
|
---|
| 410 | type: 'text',
|
---|
| 411 | value: code
|
---|
| 412 | }];
|
---|
| 413 | var codeTree = getCodeTree({
|
---|
| 414 | astGenerator: astGenerator,
|
---|
| 415 | language: language,
|
---|
| 416 | code: code,
|
---|
| 417 | defaultCodeValue: defaultCodeValue
|
---|
| 418 | });
|
---|
| 419 |
|
---|
| 420 | if (codeTree.language === null) {
|
---|
| 421 | codeTree.value = defaultCodeValue;
|
---|
| 422 | } // determine largest line number so that we can force minWidth on all linenumber elements
|
---|
| 423 |
|
---|
| 424 |
|
---|
| 425 | var largestLineNumber = codeTree.value.length + startingLineNumber;
|
---|
| 426 | var rows = processLines(codeTree, wrapLines, lineProps, showLineNumbers, showInlineLineNumbers, startingLineNumber, largestLineNumber, lineNumberStyle, wrapLongLines);
|
---|
| 427 | return /*#__PURE__*/_react["default"].createElement(PreTag, preProps, /*#__PURE__*/_react["default"].createElement(CodeTag, codeTagProps, !showInlineLineNumbers && allLineNumbers, renderer({
|
---|
| 428 | rows: rows,
|
---|
| 429 | stylesheet: style,
|
---|
| 430 | useInlineStyles: useInlineStyles
|
---|
| 431 | })));
|
---|
| 432 | };
|
---|
| 433 | } |
---|