Skip to content

Commit 46b0d4e

Browse files
committed
Use typescript
1 parent 4fb9cdd commit 46b0d4e

File tree

9 files changed

+8129
-5194
lines changed

9 files changed

+8129
-5194
lines changed

codebox.d.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
declare global {
2+
interface Window {
3+
hljs: any
4+
}
5+
}
6+
7+
export {};

dist/index.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package-lock.json

Lines changed: 8025 additions & 5147 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@bomdi/codebox",
3-
"version": "1.0.12",
3+
"version": "2.0.0",
44
"license": "ISC",
55
"description": "Code syntax highlighting tool for Editor.js",
66
"keywords": [
@@ -22,20 +22,22 @@
2222
"start": "node test.js"
2323
},
2424
"devDependencies": {
25-
"@babel/core": "7.5.5",
26-
"@babel/node": "^7.8.4",
27-
"@babel/preset-env": "7.5.5",
25+
"@babel/core": "7.19.0",
26+
"@babel/node": "^7.18.10",
27+
"@babel/preset-env": "7.19.0",
28+
"@types/node": "^18.7.15",
2829
"babel-eslint": "^10.0.3",
29-
"babel-loader": "8.0.6",
30-
"css-loader": "^1.0.0",
31-
"eslint": "^6.8.0",
32-
"style-loader": "^0.21.0",
33-
"webpack": "^4.41.2",
34-
"webpack-cli": "^3.3.7"
30+
"babel-loader": "8.2.5",
31+
"css-loader": "^6.7.1",
32+
"eslint": "^8.23.0",
33+
"style-loader": "^3.3.1",
34+
"ts-loader": "^9.3.1",
35+
"typescript": "^4.8.2",
36+
"webpack": "^5.74.0",
37+
"webpack-cli": "^4.10.0"
3538
},
3639
"files": [
3740
"dist"
3841
],
39-
"main": "dist/index.min.js",
40-
"dependencies": {}
42+
"main": "dist/index.min.js"
4143
}

readme.md

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,13 @@
33
[![](https://img.shields.io/npm/v/@bomdi/codebox)](https://www.npmjs.com/package/@bomdi/codebox)
44
[![](https://img.shields.io/npm/dw/@bomdi/codebox)](https://www.npmjs.com/package/@bomdi/codebox)
55
[![](https://flat.badgen.net/npm/license/@bomdi/codebox)](https://www.npmjs.com/package/@bomdi/codebox)
6+
[![](https://flat.badgen.net/badge/icon/typescript?icon=typescript&label)](https://www.npmjs.com/package/@bomdi/codebox)
67

78
Code syntax highlighting tool for [Editor.js](https://editorjs.io/)
89

9-
![](https://firebasestorage.googleapis.com/v0/b/bomdisoft-28c17.appspot.com/o/images%2FCodeBox.png?alt=media&token=565a0782-f684-4f7d-8430-dfd4a5bdaa11)
10+
## Setup
1011

11-
## 💗 If you like this package 💗
12-
13-
Support us on Patreon
14-
15-
👉 [https://www.patreon.com/devjuju](https://www.patreon.com/devjuju)
16-
17-
## Installation
18-
19-
### Install via NPM
12+
Install the package via NPM
2013

2114
```shell
2215
npm i @bomdi/codebox
@@ -25,6 +18,8 @@ npm i @bomdi/codebox
2518
Add to your module/application
2619

2720
```javascript
21+
import CodeBox from '@bomdi/codebox';
22+
OR
2823
const CodeBox = require('@bomdi/codebox');
2924
```
3025

@@ -106,8 +101,8 @@ export default CodeBlock;
106101

107102
## Author
108103

109-
Adombang Munang Mbomndih (Bomdi)
104+
Dev Juju
110105

111-
LinkedIn: [LinkedIn](http://www.linkedin.com/in/adombangmunang)
106+
[Contact Us](https://bomdisoft.com)
112107

113-
![](https://firebasestorage.googleapis.com/v0/b/editorjs-react-renderer.appspot.com/o/Bomdi%202.jpg?alt=media&token=323c4b3e-8542-4031-9660-74280a8cfefc)
108+
[Learn](https://devjuju.com)

src/constants.js

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/index.js renamed to src/index.ts

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,37 @@
55
* @version 1.0.0
66
* @created - 2020.02.12
77
* @author - Adombang Munang Mbomndih (Bomdi) <[email protected]> (https://bomdisoft.com)
8+
*
9+
* Version History
10+
* ---------------
11+
* @version 2.0.0 - 2022.09.06 - Use TypeScript - Adombang Munang Mbomndih
812
*/
913

1014

1115
//#region imports
1216
require('./style.css').toString();
13-
const { DEFAULT_THEMES, COMMON_LANGUAGES } = require('./constants');
1417
//#endregion
1518

19+
const DEFAULT_THEMES = ['light', 'dark'];
20+
const COMMON_LANGUAGES = {
21+
none: 'Auto-detect', apache: 'Apache', bash: 'Bash', cs: 'C#', cpp: 'C++', css: 'CSS', coffeescript: 'CoffeeScript', diff: 'Diff',
22+
go: 'Go', html: 'HTML, XML', http: 'HTTP', json: 'JSON', java: 'Java', javascript: 'JavaScript', kotlin: 'Kotlin',
23+
less: 'Less', lua: 'Lua', makefile: 'Makefile', markdown: 'Markdown', nginx: 'Nginx', objectivec: 'Objective-C',
24+
php: 'PHP', perl: 'Perl', properties: 'Properties', python: 'Python', ruby: 'Ruby', rust: 'Rust', scss: 'SCSS',
25+
sql: 'SQL', shell: 'Shell Session', swift: 'Swift', toml: 'TOML, also INI', typescript: 'TypeScript', yaml: 'YAML',
26+
plaintext: 'Plaintext'
27+
};
28+
1629
class CodeBox {
30+
api: any;
31+
config: { themeName: any; themeURL: any; useDefaultTheme: any; };
32+
data: { code: any; language: any; theme: any; };
33+
highlightScriptID: string;
34+
highlightCSSID: string;
35+
codeArea: HTMLDivElement;
36+
selectInput: HTMLInputElement;
37+
selectDropIcon: HTMLElement;
38+
1739
constructor({ data, api, config }){
1840
this.api = api;
1941
this.config = {
@@ -68,7 +90,7 @@ class CodeBox {
6890

6991
codeAreaHolder.setAttribute('class', 'codeBoxHolder');
7092
this.codeArea.setAttribute('class', `codeBoxTextArea ${ this.config.useDefaultTheme } ${ this.data.language }`);
71-
this.codeArea.setAttribute('contenteditable', true);
93+
this.codeArea.setAttribute('contenteditable', 'true');
7294
this.codeArea.innerHTML = this.data.code;
7395
this.api.listeners.on(this.codeArea, 'blur', event => this._highlightCodeArea(event), false);
7496
this.api.listeners.on(this.codeArea, 'paste', event => this._handleCodeAreaPaste(event), false);
@@ -106,7 +128,7 @@ class CodeBox {
106128
this.selectDropIcon.innerHTML = '&#8595;';
107129
this.selectInput.setAttribute('class', `codeBoxSelectInput ${ this.config.useDefaultTheme }`);
108130
this.selectInput.setAttribute('type', 'text');
109-
this.selectInput.setAttribute('readonly', true);
131+
this.selectInput.setAttribute('readonly', 'true');
110132
this.selectInput.value = this.data.language;
111133
this.api.listeners.on(this.selectInput, 'click', event => this._handleSelectInputClick(event), false);
112134

@@ -130,7 +152,7 @@ class CodeBox {
130152
}
131153

132154
_highlightCodeArea(event){
133-
hljs.highlightBlock(this.codeArea);
155+
window.hljs.highlightBlock(this.codeArea);
134156
}
135157

136158
_handleCodeAreaPaste(event){
@@ -147,7 +169,7 @@ class CodeBox {
147169
this.codeArea.removeAttribute('class');
148170
this.data.language = language[0];
149171
this.codeArea.setAttribute('class', `codeBoxTextArea ${ this.config.useDefaultTheme } ${ this.data.language }`);
150-
hljs.highlightBlock(this.codeArea);
172+
window.hljs.highlightBlock(this.codeArea);
151173
}
152174

153175
_closeAllLanguageSelects(){
@@ -195,4 +217,4 @@ class CodeBox {
195217
}
196218

197219

198-
module.exports = CodeBox;
220+
export default CodeBox;

tsconfig.json

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{
2+
"compilerOptions": {
3+
"target": "es5",
4+
"lib": [
5+
"dom",
6+
"dom.iterable",
7+
"esnext"
8+
],
9+
"allowJs": true,
10+
"skipLibCheck": true,
11+
"strict": false,
12+
"forceConsistentCasingInFileNames": true,
13+
"noEmit": true,
14+
"esModuleInterop": true,
15+
"module": "esnext",
16+
"moduleResolution": "node",
17+
"resolveJsonModule": true,
18+
"isolatedModules": true,
19+
"jsx": "preserve",
20+
"incremental": true,
21+
22+
"outDir": "./dist/"
23+
},
24+
"include": [
25+
"codebox.d.ts",
26+
"**/*.ts"
27+
],
28+
"exclude": [
29+
"node_modules"
30+
]
31+
}

webpack.config.js

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ const path = require('path');
22

33
module.exports = {
44
mode: 'production',
5-
entry: path.normalize(`${__dirname}/src/index.js`),
5+
entry: path.normalize(`${__dirname}/src/index.ts`),
66
output: {
77
path: path.normalize(`${__dirname}/dist`),
88
publicPath: '/',
@@ -13,14 +13,22 @@ module.exports = {
1313
module: {
1414
rules: [
1515
{
16-
test: /\.js$/,
16+
test: /\.(js|ts)$/,
1717
use: [
1818
{
1919
loader: 'babel-loader',
20-
query: {
20+
options: {
2121
presets: ['@babel/preset-env'],
2222
},
2323
},
24+
{
25+
loader: 'ts-loader',
26+
options: {
27+
compilerOptions: {
28+
noEmit: false,
29+
},
30+
},
31+
}
2432
],
2533
exclude: /node_modules/,
2634
},
@@ -32,5 +40,8 @@ module.exports = {
3240
]
3341
}
3442
]
35-
}
43+
},
44+
resolve: {
45+
extensions: ['.ts', '.js'],
46+
},
3647
};

0 commit comments

Comments
 (0)