@readme/syntax-highlighter 12.1.5 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- (()=>{var e={559:e=>{var l={aspx:"asp",bash:"shell","c++":"cplusplus","c#":"csharp",clj:"clojure",cljc:"clojure",cljx:"clojure",coffeescript:"javascript",cpp:"cplusplus",cql:"sql",cs:"csharp",docker:"dockerfile",ecmascript:"javascript",erl:"erlang",gql:"graphql",gradle:"groovy",handlebars:"html",hbs:"html",jl:"julia",jruby:"ruby",js:"javascript",kt:"kotlin",less:"css",macruby:"ruby",md:"markdown",ml:"ocaml",mssql:"sql",mysql:"sql",node:"javascript","obj-c":"objectivec","obj-c++":"objectivecplusplus","objc++":"objectivecplusplus",objc:"objectivec",objcpp:"objectivecplusplus",objectivecpp:"objectivecplusplus",pgsql:"sql",pl:"perl",plsql:"sql",postgres:"sql",postgresql:"sql",ps1:"powershell",py:"python",rake:"ruby",rb:"ruby",rbx:"ruby",rs:"rust",sass:"css",scss:"css",sh:"shell",solidity:"sol",sqlite:"sql",styl:"css",stylus:"css",xhtml:"html",yml:"yaml",zsh:"shell"};e.exports=function(e){return e in l?l[e]:e}},476:e=>{function l(e,l){return function(e){if(Array.isArray(e))return e}(e)||function(e,l){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==t)return;var s,r,c=[],a=!0,o=!1;try{for(t=t.call(e);!(a=(s=t.next()).done)&&(c.push(s.value),!l||c.length!==l);a=!0);}catch(e){o=!0,r=e}finally{try{a||null==t.return||t.return()}finally{if(o)throw r}}return c}(e,l)||function(e,l){if(!e)return;if("string"==typeof e)return t(e,l);var s=Object.prototype.toString.call(e).slice(8,-1);"Object"===s&&e.constructor&&(s=e.constructor.name);if("Map"===s||"Set"===s)return Array.from(e);if("Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s))return t(e,l)}(e,l)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function t(e,l){(null==l||l>e.length)&&(l=e.length);for(var t=0,s=new Array(l);t<l;t++)s[t]=e[t];return s}var s={asp:"clike",aspx:"clike",bash:"shell",c:"clike","c#":["clike","text/x-csharp"],"c++":["clike","text/x-c++src"],clj:"clojure",cljc:"clojure",cljx:"clojure",coffeescript:"javascript",cplusplus:["clike","text/x-c++src"],cpp:["clike","text/x-c++src"],cql:["sql","text/x-cassandra"],cs:["clike","text/x-csharp"],csharp:["clike","text/x-csharp"],curl:"shell",d:"d",diff:"diff",ecmascript:"javascript",erl:"erlang",go:["go","text/x-go"],gradle:"groovy",gql:"graphql",handlebars:"htmlmixed",hbs:"htmlmixed",html:"htmlmixed",java:["clike","text/x-java"],jl:"julia",js:"javascript",jsx:"jsx",json:["javascript","application/ld+json"],jruby:"ruby",kotlin:["clike","text/x-kotlin"],kt:["clike","text/x-kotlin"],less:"css",liquid:"htmlmixed",lua:"lua",node:"javascript",macruby:"ruby",markdown:"gfm",ml:["mllike","text/x-ocaml"],mssql:["sql","text/x-mssql"],mysql:["sql","text/x-mysql"],objc:["clike","text/x-objectivec"],"objc++":["clike","text/x-objectivec++"],objcpp:["clike","text/x-objectivec++"],objectivec:["clike","text/x-objectivec"],objectivecpp:["clike","text/x-objectivec++"],objectivecplusplus:["clike","text/x-objectivec++"],ocaml:["mllike","text/x-ocaml"],php:["php","text/x-php"],pgsql:["sql","text/x-pgsql"],pl:"perl",plsql:["sql","text/x-plsql"],postgres:["sql","text/x-pgsql"],postgresql:["sql","text/x-pgsql"],ps1:"powershell",py:"python",r:"r",rake:"ruby",rb:"ruby",rbx:"ruby",rs:"rust",sass:"css",scala:["clike","text/x-scala"],scss:"css",sh:"shell",sol:"solidity",solidity:"solidity",sql:["sql","text/x-sql"],sqlite:["sql","text/x-sqlite"],styl:"css",stylus:"css",text:["null","text/plain"],ts:["javascript","text/typescript"],typescript:["javascript","text/typescript"],xhtml:"htmlmixed",yml:"yaml",zsh:"shell"};e.exports={modes:s,getMode:function(e){var t=e;return t in s&&(t=s[t],Array.isArray(t)&&(t=l(t,2)[1])),t}}},857:e=>{var l={asp:"ASP.NET",aspx:"ASP.NET",bash:"Bash",c:"C","c#":"C#","c++":"C++",coffeescript:"CoffeeScript",clj:"Clojure",cljc:"Clojure",cljx:"Clojure",clojure:"Clojure",cplusplus:"C++",cpp:"C++",cql:"Cassandra",cs:"C#",csharp:"C#",css:"CSS",curl:"cURL",d:"D",dart:"Dart",diff:"Diff",dockerfile:"Dockerfile",ecmascript:"ECMAScript",erl:"Erlang",erlang:"Erlang",go:"Go",gql:"GraphQL",gradle:"Gradle",graphql:"GraphQL",groovy:"Groovy",handlebars:"Handlebars",hbs:"Handlebars",haml:"HAML",haxe:"Haxe",html:"HTML",http:"HTTP",java:"Java",javascript:"JavaScript",jinja2:"Jinja2",jl:"Julia",jruby:"JRuby",js:"JavaScript",json:"JSON",jsx:"JSX",julia:"Julia",kotlin:"Kotlin",kt:"Kotlin",less:"LESS",liquid:"Liquid",lua:"Lua",macruby:"MacRuby",markdown:"Markdown",md:"Markdown",ml:"OCaml",mssql:"SQL Server",mysql:"MySQL",node:"Node",objc:"Objective-C","objc++":"Objective-C++",objcpp:"Objective-C++",objectivec:"Objective-C",objectivecpp:"Objective-C++",objectivecplusplus:"Objective-C++",ocaml:"OCaml",perl:"Perl",php:"PHP",pl:"Perl",pgsql:"PL/pgSQL",plsql:"PL/SQL",postgres:"PostgreSQL",postgresql:"PostgreSQL",powershell:"PowerShell",ps1:"PowerShell",python:"Python",py:"Python",r:"R",rake:"Rake",rb:"Ruby",rbx:"Rubinius",rs:"Rust",ruby:"Ruby",rust:"Rust",sass:"Sass",scala:"Scala",scss:"SCSS",sh:"Shell",shell:"Shell",smarty:"Smarty",solidity:"Solidity",sql:"SQL",sqlite:"SQLite",stylus:"Stylus",styl:"Stylus",swift:"Swift",text:"Text",toml:"TOML",twig:"Twig",typescript:"TypeScript",xhtml:"XHTML",xml:"XML",yaml:"YAML",yml:"YAML",zsh:"Zsh"};e.exports=function(e){return e in l?l[e]:e}}},l={};function t(s){var r=l[s];if(void 0!==r)return r.exports;var c=l[s]={exports:{}};return e[s](c,c.exports,t),c.exports}t.n=e=>{var l=e&&e.__esModule?()=>e.default:()=>e;return t.d(l,{a:l}),l},t.d=(e,l)=>{for(var s in l)t.o(l,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:l[s]})},t.o=(e,l)=>Object.prototype.hasOwnProperty.call(e,l),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};(()=>{"use strict";t.r(s),t.d(s,{canonical:()=>l.a,getMode:()=>r.getMode,modes:()=>r.modes,uppercase:()=>a.a});var e=t(559),l=t.n(e),r=t(476),c=t(857),a=t.n(c)})(),module.exports=s})();
1
+ (()=>{var e={226:e=>{var l={aspx:"asp",bash:"shell","c++":"cplusplus","c#":"csharp",clj:"clojure",cljc:"clojure",cljx:"clojure",coffeescript:"javascript",cpp:"cplusplus",cql:"sql",cs:"csharp",docker:"dockerfile",ecmascript:"javascript",erl:"erlang",gql:"graphql",gradle:"groovy",handlebars:"html",hbs:"html",jl:"julia",jruby:"ruby",js:"javascript",kt:"kotlin",less:"css",macruby:"ruby",md:"markdown",ml:"ocaml",mssql:"sql",mysql:"sql",node:"javascript","obj-c":"objectivec","obj-c++":"objectivecplusplus","objc++":"objectivecplusplus",objc:"objectivec",objcpp:"objectivecplusplus",objectivecpp:"objectivecplusplus",pgsql:"sql",pl:"perl",plsql:"sql",postgres:"sql",postgresql:"sql",ps1:"powershell",py:"python",rake:"ruby",rb:"ruby",rbx:"ruby",rs:"rust",sass:"css",scss:"css",sh:"shell",solidity:"sol",sqlite:"sql",styl:"css",stylus:"css",xhtml:"html",yml:"yaml",zsh:"shell"};e.exports=function(e){return e in l?l[e]:e}},980:e=>{function l(e,l){return function(e){if(Array.isArray(e))return e}(e)||function(e,l){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var s,r,c,a,o=[],i=!0,p=!1;try{if(c=(t=t.call(e)).next,0===l){if(Object(t)!==t)return;i=!1}else for(;!(i=(s=c.call(t)).done)&&(o.push(s.value),o.length!==l);i=!0);}catch(e){p=!0,r=e}finally{try{if(!i&&null!=t.return&&(a=t.return(),Object(a)!==a))return}finally{if(p)throw r}}return o}}(e,l)||function(e,l){if(!e)return;if("string"==typeof e)return t(e,l);var s=Object.prototype.toString.call(e).slice(8,-1);"Object"===s&&e.constructor&&(s=e.constructor.name);if("Map"===s||"Set"===s)return Array.from(e);if("Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s))return t(e,l)}(e,l)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function t(e,l){(null==l||l>e.length)&&(l=e.length);for(var t=0,s=new Array(l);t<l;t++)s[t]=e[t];return s}var s={asp:"clike",aspx:"clike",bash:"shell",c:"clike","c#":["clike","text/x-csharp"],"c++":["clike","text/x-c++src"],clj:"clojure",cljc:"clojure",cljx:"clojure",coffeescript:"javascript",cplusplus:["clike","text/x-c++src"],cpp:["clike","text/x-c++src"],cql:["sql","text/x-cassandra"],cs:["clike","text/x-csharp"],csharp:["clike","text/x-csharp"],curl:"shell",d:"d",diff:"diff",ecmascript:"javascript",erl:"erlang",go:["go","text/x-go"],gradle:"groovy",gql:"graphql",handlebars:"htmlmixed",hbs:"htmlmixed",html:"htmlmixed",java:["clike","text/x-java"],jl:"julia",js:"javascript",jsx:"jsx",json:["javascript","application/ld+json"],jruby:"ruby",kotlin:["clike","text/x-kotlin"],kt:["clike","text/x-kotlin"],less:"css",liquid:"htmlmixed",lua:"lua",node:"javascript",macruby:"ruby",markdown:"gfm",ml:["mllike","text/x-ocaml"],mssql:["sql","text/x-mssql"],mysql:["sql","text/x-mysql"],objc:["clike","text/x-objectivec"],"objc++":["clike","text/x-objectivec++"],objcpp:["clike","text/x-objectivec++"],objectivec:["clike","text/x-objectivec"],objectivecpp:["clike","text/x-objectivec++"],objectivecplusplus:["clike","text/x-objectivec++"],ocaml:["mllike","text/x-ocaml"],php:["php","text/x-php"],pgsql:["sql","text/x-pgsql"],pl:"perl",plsql:["sql","text/x-plsql"],postgres:["sql","text/x-pgsql"],postgresql:["sql","text/x-pgsql"],ps1:"powershell",py:"python",r:"r",rake:"ruby",rb:"ruby",rbx:"ruby",rs:"rust",sass:"css",scala:["clike","text/x-scala"],scss:"css",sh:"shell",sol:"solidity",solidity:"solidity",sql:["sql","text/x-sql"],sqlite:["sql","text/x-sqlite"],styl:"css",stylus:"css",text:["null","text/plain"],ts:["javascript","text/typescript"],typescript:["javascript","text/typescript"],xhtml:"htmlmixed",yml:"yaml",zsh:"shell"};e.exports={modes:s,getMode:function(e){var t=e;return t in s&&(t=s[t],Array.isArray(t)&&(t=l(t,2)[1])),t}}},548:e=>{var l={asp:"ASP.NET",aspx:"ASP.NET",bash:"Bash",c:"C","c#":"C#","c++":"C++",coffeescript:"CoffeeScript",clj:"Clojure",cljc:"Clojure",cljx:"Clojure",clojure:"Clojure",cplusplus:"C++",cpp:"C++",cql:"Cassandra",cs:"C#",csharp:"C#",css:"CSS",curl:"cURL",d:"D",dart:"Dart",diff:"Diff",dockerfile:"Dockerfile",ecmascript:"ECMAScript",erl:"Erlang",erlang:"Erlang",go:"Go",gql:"GraphQL",gradle:"Gradle",graphql:"GraphQL",groovy:"Groovy",handlebars:"Handlebars",hbs:"Handlebars",haml:"HAML",haxe:"Haxe",html:"HTML",http:"HTTP",java:"Java",javascript:"JavaScript",jinja2:"Jinja2",jl:"Julia",jruby:"JRuby",js:"JavaScript",json:"JSON",jsx:"JSX",julia:"Julia",kotlin:"Kotlin",kt:"Kotlin",less:"LESS",liquid:"Liquid",lua:"Lua",macruby:"MacRuby",markdown:"Markdown",md:"Markdown",ml:"OCaml",mssql:"SQL Server",mysql:"MySQL",node:"Node",objc:"Objective-C","objc++":"Objective-C++",objcpp:"Objective-C++",objectivec:"Objective-C",objectivecpp:"Objective-C++",objectivecplusplus:"Objective-C++",ocaml:"OCaml",perl:"Perl",php:"PHP",pl:"Perl",pgsql:"PL/pgSQL",plsql:"PL/SQL",postgres:"PostgreSQL",postgresql:"PostgreSQL",powershell:"PowerShell",ps1:"PowerShell",python:"Python",py:"Python",r:"R",rake:"Rake",rb:"Ruby",rbx:"Rubinius",rs:"Rust",ruby:"Ruby",rust:"Rust",sass:"Sass",scala:"Scala",scss:"SCSS",sh:"Shell",shell:"Shell",smarty:"Smarty",solidity:"Solidity",sql:"SQL",sqlite:"SQLite",stylus:"Stylus",styl:"Stylus",swift:"Swift",text:"Text",toml:"TOML",twig:"Twig",typescript:"TypeScript",xhtml:"XHTML",xml:"XML",yaml:"YAML",yml:"YAML",zsh:"Zsh"};e.exports=function(e){return e in l?l[e]:e}}},l={};function t(s){var r=l[s];if(void 0!==r)return r.exports;var c=l[s]={exports:{}};return e[s](c,c.exports,t),c.exports}t.n=e=>{var l=e&&e.__esModule?()=>e.default:()=>e;return t.d(l,{a:l}),l},t.d=(e,l)=>{for(var s in l)t.o(l,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:l[s]})},t.o=(e,l)=>Object.prototype.hasOwnProperty.call(e,l),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};(()=>{"use strict";t.r(s),t.d(s,{canonical:()=>l.a,getMode:()=>r.getMode,modes:()=>r.modes,uppercase:()=>a.a});var e=t(226),l=t.n(e),r=t(980),c=t(548),a=t.n(c)})(),module.exports=s})();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@readme/syntax-highlighter",
3
3
  "description": "ReadMe's React-based syntax highlighter",
4
- "version": "12.1.5",
4
+ "version": "13.0.0",
5
5
  "main": "dist/index.node.js",
6
6
  "browser": "dist/index.js",
7
7
  "license": "ISC",
@@ -17,8 +17,8 @@
17
17
  "build": "webpack --progress",
18
18
  "lint": "eslint . --ext .jsx --ext .js",
19
19
  "prepack": "npm run build",
20
- "pretest": "npm run lint",
21
- "prettier": "prettier --list-different --write \"./**/**.{js,jsx}\"",
20
+ "pretest": "npm run lint && npm run prettier",
21
+ "prettier": "prettier --list-different --write .",
22
22
  "start": "webpack serve --open --config ./webpack.config.dev.js",
23
23
  "test": "jest --coverage --runInBand",
24
24
  "watch": "webpack -w --progress"
@@ -31,36 +31,34 @@
31
31
  },
32
32
  "peerDependencies": {
33
33
  "@readme/variable": "15.x || 16.x",
34
- "react": "16.x || 17.x",
35
- "react-dom": "16.x || 17.x"
34
+ "react": "16.x || 17.x || 18.x",
35
+ "react-dom": "16.x || 17.x || 18.x"
36
36
  },
37
37
  "devDependencies": {
38
- "@babel/preset-env": "^7.22.20",
39
- "@babel/preset-react": "^7.22.15",
40
- "@readme/eslint-config": "^13.5.0",
41
- "@wojtekmaj/enzyme-adapter-react-17": "^0.8.0",
38
+ "@babel/preset-env": "^7.24.4",
39
+ "@babel/preset-react": "^7.24.1",
40
+ "@readme/eslint-config": "^14.0.0",
41
+ "@testing-library/jest-dom": "^6.4.2",
42
+ "@testing-library/react": "^14.2.2",
42
43
  "babel-jest": "^29.7.0",
43
- "babel-loader": "^8.2.4",
44
- "core-js": "^3.33.0",
44
+ "babel-loader": "^9.1.3",
45
+ "core-js": "^3.36.1",
45
46
  "css-loader": "^6.7.3",
46
- "enzyme": "^3.11.0",
47
47
  "eslint": "^8.57.0",
48
- "glob": "^10.3.10",
49
- "html-webpack-plugin": "^5.5.3",
48
+ "glob": "^10.3.12",
49
+ "html-webpack-plugin": "^5.6.0",
50
50
  "identity-obj-proxy": "^3.0.0",
51
51
  "jest": "^29.7.0",
52
52
  "jest-environment-jsdom": "^29.7.0",
53
53
  "node-sass": "^9.0.0",
54
- "prettier": "^3.0.3",
55
- "react": "^17.0.2",
56
- "react-dom": "^17.0.2",
57
- "regenerator-runtime": "^0.14.0",
54
+ "prettier": "^3.2.5",
55
+ "regenerator-runtime": "^0.14.1",
58
56
  "sass-loader": "^13.3.2",
59
- "style-loader": "^3.3.2",
60
- "terser-webpack-plugin": "^5.3.7",
61
- "webpack": "^5.88.2",
57
+ "style-loader": "^3.3.4",
58
+ "terser-webpack-plugin": "^5.3.10",
59
+ "webpack": "^5.91.0",
62
60
  "webpack-cli": "^5.1.4",
63
- "webpack-dev-server": "^4.15.1"
61
+ "webpack-dev-server": "^5.0.4"
64
62
  },
65
63
  "prettier": "@readme/eslint-config/prettier",
66
64
  "bundlewatch": {
package/public/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import ReactDOM from 'react-dom';
2
+ import createRoot from 'react-dom/client';
3
3
 
4
4
  import syntaxHighlighter, { cmVariableContext } from '../src/index';
5
5
 
@@ -74,7 +74,7 @@ curabitur aute aptent. Ultrices orci wisi dui ipsum praesent, pharetra felis eu
74
74
  maxime sem dapibus et eget, mi enim dignissim nec pretium, augue vehicula, volutpat proin. Et occaecati
75
75
  lobortis viverra, cum in sed, vivamus tellus. Libero at malesuada est vivamus leo tortor.`;
76
76
 
77
- ReactDOM.render(
77
+ const App = () => (
78
78
  <div style={{ margin: '20px' }}>
79
79
  <h1>Core Syntax Highlighter</h1>
80
80
 
@@ -163,6 +163,8 @@ ReactDOM.render(
163
163
  <pre id="hub-reference">
164
164
  {syntaxHighlighter(exampleJson, 'json', { foldGutter: true, readOnly: true, dark: false })}
165
165
  </pre>
166
- </div>,
167
- document.getElementById('root'),
166
+ </div>
168
167
  );
168
+
169
+ const root = createRoot(document.getElementById('root'));
170
+ root.render(<App />);
@@ -0,0 +1,169 @@
1
+ import React from 'react';
2
+ import ReactDOM from 'react-dom';
3
+
4
+ import syntaxHighlighter, { cmVariableContext } from '../src/index';
5
+
6
+ const exampleCode = `curl --request POST
7
+ --url <<url>>
8
+ --header 'authorization: Bearer 123'
9
+ --header 'content-type: application/json'`;
10
+
11
+ const exampleJson = `{
12
+ "key": "value",
13
+ "array": [1, 2, 3],
14
+ "a": {
15
+ "b": {
16
+ "c": {
17
+ "d": "ok",
18
+ "e": "err"
19
+ },
20
+ "f": {
21
+ "g": "ok"
22
+ },
23
+ "h": {
24
+ "i": "ok"
25
+ }
26
+ },
27
+ "j": {
28
+ "k": {
29
+ "l": "ok"
30
+ }
31
+ }
32
+ },
33
+ "isThing": true
34
+ }
35
+ `;
36
+
37
+ const exampleMarkdown = `# Custom Scrollbars
38
+
39
+ This is a piece of text that creates scrollbars
40
+
41
+ Lorem ipsum dolor sit amet, turpis nec facilisis neque vestibulum adipiscing, magna nunc est luctus orci a,
42
+ aliquam duis ad volutpat nostra. Vestibulum ultricies suspendisse commodo volutpat pede sed. Bibendum odio
43
+ dignissim, ad vitae mollis ac sed nibh quis, suspendisse diam, risus quas blandit phasellus luctus nec,
44
+ integer nunc vitae posuere scelerisque. Lobortis quam porta conubia nulla. Et nisl ac, imperdiet vitae ac.
45
+ Parturient sit. Et vestibulum euismod, rutrum nunc libero mauris purus convallis. Cum id adipiscing et eget
46
+ pretium rutrum, ultrices sapien magnis fringilla sit lorem, eu vitae scelerisque ipsum aliquet, magna sed
47
+ fusce vel.
48
+
49
+ Lectus ultricies libero dolor convallis, sed etiam vel hendrerit egestas viverra, at urna mauris, eget
50
+ vulputate dolor voluptatem, nulla eget sollicitudin. Sed tincidunt, elit sociis. Mattis mi tortor dui id
51
+ sodales mi, maecenas nam fringilla risus turpis mauris praesent, imperdiet maecenas ultrices nonummy tellus
52
+ quis est. Scelerisque nec pharetra quis varius fringilla. Varius vestibulum non dictum pharetra, tincidunt in
53
+ vestibulum iaculis molestie, id condimentum blandit elit urna magna pulvinar, quam suspendisse pellentesque
54
+ donec. Vel amet ad ac. Nec aut viverra, morbi mi neque massa, turpis enim proin. Tellus eu, fermentum velit
55
+ est convallis aliquam velit, rutrum in diam lacus, praesent tempor pellentesque dictum semper augue. Felis
56
+ explicabo massa amet lectus phasellus dolor. Ut lorem quis arcu neque felis ultricies, senectus vitae
57
+ curabitur sed pellentesque et, id sed risus in sed ac accumsan, blandit arcu quam duis nunc.
58
+
59
+ Sed leo sollicitudin odio vitae, purus sit egestas, justo eros inceptos auctor fermentum lectus. Ligula luctus
60
+ turpis, quod massa vitae elementum orci, nullam fringilla elit tortor. Justo ante tempor amet quam posuere
61
+ volutpat. Facilisis pede erat ut hac ultrices ipsum, wisi duis sit metus. Dolor vitae est sed sed vitae. Sed
62
+ eu ligula, morbi vestibulum nunc nibh velit ut taciti, ligula elit semper sagittis in, auctor arcu vel eget.
63
+ Mauris at vitae nec suspendisse et, aenean proin blandit suscipit. Morbi quam, dolor ultricies. Viverra
64
+ tempus. Suspendisse sit dapibus, ac fuga aenean, magna nisl nonummy augue posuere, dictum ut fuga velit
65
+ parturient augue interdum, mattis sit tellus.
66
+
67
+ Vehicula commodo tempus curabitur eros, lacinia erat vulputate lorem vel fermentum donec, lectus sed conubia
68
+ id pellentesque. Vel senectus donec pede aliquet dolor sit, nec vivamus justo placerat interdum maecenas,
69
+ sodales euismod. Quis netus sapien amet, vestibulum quam nec amet lacinia, quis aliquet, tempor vivamus tellus
70
+ enim, suscipit quis eleifend. Amet class phasellus orci pretium, risus in nulla. Neque sit ullamcorper,
71
+ ultricies platea id nec suspendisse ac. Et elementum. Dictum nam, ut dui fermentum egestas facilisis elit
72
+ augue, adipiscing donec ipsum erat nam pellentesque convallis, vestibulum vestibulum risus id nulla ut mauris,
73
+ curabitur aute aptent. Ultrices orci wisi dui ipsum praesent, pharetra felis eu quis. Est fringilla etiam,
74
+ maxime sem dapibus et eget, mi enim dignissim nec pretium, augue vehicula, volutpat proin. Et occaecati
75
+ lobortis viverra, cum in sed, vivamus tellus. Libero at malesuada est vivamus leo tortor.`;
76
+
77
+ const App = () => (
78
+ <div style={{ margin: '20px' }}>
79
+ <h1>Core Syntax Highlighter</h1>
80
+
81
+ <h2>Dark Theme</h2>
82
+ <pre id="hub-reference">
83
+ <cmVariableContext.Provider
84
+ value={{
85
+ user: {},
86
+ defaults: [
87
+ {
88
+ name: 'url',
89
+ default: 'GET',
90
+ },
91
+ ],
92
+ }}
93
+ >
94
+ {syntaxHighlighter(exampleCode, 'curl', {
95
+ dark: true,
96
+ highlightMode: true,
97
+ tokenizeVariables: true,
98
+ ranges: [
99
+ [
100
+ { ch: 0, line: 0 },
101
+ { ch: 0, line: 1 },
102
+ ],
103
+ [
104
+ { ch: 0, line: 4 },
105
+ { ch: 0, line: 5 },
106
+ ],
107
+ ],
108
+ })}
109
+ </cmVariableContext.Provider>
110
+ </pre>
111
+
112
+ <h2>Light Theme</h2>
113
+ <pre id="hub-reference">
114
+ <cmVariableContext.Provider
115
+ value={{
116
+ user: {},
117
+ defaults: [
118
+ {
119
+ name: 'url',
120
+ default: 'GET',
121
+ },
122
+ ],
123
+ }}
124
+ >
125
+ {syntaxHighlighter(exampleCode, 'curl', {
126
+ dark: false,
127
+ highlightMode: true,
128
+ tokenizeVariables: true,
129
+ ranges: [
130
+ [
131
+ { ch: 0, line: 0 },
132
+ { ch: 0, line: 1 },
133
+ ],
134
+ [
135
+ { ch: 0, line: 4 },
136
+ { ch: 0, line: 5 },
137
+ ],
138
+ ],
139
+ })}
140
+ </cmVariableContext.Provider>
141
+ </pre>
142
+
143
+ <hr />
144
+ <h1>Code Editor</h1>
145
+ <h2>Dark Theme</h2>
146
+ <pre id="hub-reference">
147
+ {syntaxHighlighter(exampleMarkdown, 'md', { scrollbarStyle: 'overlay', editable: true, dark: true })}
148
+ </pre>
149
+
150
+ <h2>Light Theme</h2>
151
+ <pre id="hub-reference">
152
+ {syntaxHighlighter(exampleMarkdown, 'md', { scrollbarStyle: 'overlay', editable: true, dark: false })}
153
+ </pre>
154
+
155
+ <hr />
156
+ <h1>Code Folding</h1>
157
+ <h2>Dark Theme</h2>
158
+ <pre id="hub-reference">
159
+ {syntaxHighlighter(exampleJson, 'json', { foldGutter: true, readOnly: true, dark: true })}
160
+ </pre>
161
+
162
+ <h2>Light Theme</h2>
163
+ <pre id="hub-reference">
164
+ {syntaxHighlighter(exampleJson, 'json', { foldGutter: true, readOnly: true, dark: false })}
165
+ </pre>
166
+ </div>
167
+ );
168
+
169
+ ReactDOM.render(<App />, document.getElementById('root'));
@@ -61,6 +61,7 @@ const highlightedLines = (ranges, totalLength) => {
61
61
  ranges.forEach(([anchor, head]) => {
62
62
  const end = head.line;
63
63
  let position = anchor.line;
64
+
64
65
  while (position < end) {
65
66
  highlights[position] = 'cm-highlight';
66
67
  position += 1;
@@ -125,7 +126,7 @@ const StyledSyntaxHighlighter = ({ output, ranges }) => {
125
126
 
126
127
  const highlights = ranges && ranges.length ? highlightedLines(ranges, gutteredOutput.length) : [];
127
128
  return (
128
- <div className="CodeMirror">
129
+ <div className="CodeMirror" data-testid="CodeMirror">
129
130
  <StructuredOutput gutteredInput={gutteredOutput} highlights={highlights} />
130
131
  </div>
131
132
  );
package/src/index.js CHANGED
@@ -56,7 +56,7 @@ const SyntaxHighlighter = (
56
56
 
57
57
  return React.createElement(
58
58
  wrapper,
59
- { className: classes.join(' ') },
59
+ { className: classes.join(' '), 'data-testid': 'SyntaxHighlighter' },
60
60
  codemirror(typeof code === 'string' ? code : '', lang, opts),
61
61
  );
62
62
  };
@@ -4,7 +4,7 @@ const HtmlWebPackPlugin = require('html-webpack-plugin');
4
4
 
5
5
  module.exports = {
6
6
  mode: 'development',
7
- entry: ['./public/index.js'],
7
+ entry: [['16', '18'].includes(process.env.REACT_VERSION) ? './public/index.legacy.js' : './public.index.js'],
8
8
  module: {
9
9
  rules: [
10
10
  {
package/lib/enzyme.js DELETED
@@ -1,16 +0,0 @@
1
- /* eslint-disable import/no-extraneous-dependencies */
2
- /* eslint-disable import/no-unresolved */
3
- /* eslint-disable global-require */
4
- const enzyme = require('enzyme');
5
-
6
- let Adapter;
7
- if (process.env.REACT_VERSION && process.env.REACT_VERSION === '16') {
8
- Adapter = require('enzyme-adapter-react-16');
9
- } else {
10
- Adapter = require('@wojtekmaj/enzyme-adapter-react-17');
11
- }
12
-
13
- require('core-js/stable');
14
- require('regenerator-runtime/runtime');
15
-
16
- enzyme.configure({ adapter: new Adapter() });