Skip to content
Snippets Groups Projects
Commit 7db19aba authored by Cédric Willekens's avatar Cédric Willekens
Browse files

Migrate to webpack for better bundeling and add codemirror

parent 226f4dfa
Branches
No related tags found
1 merge request!6Resolve "Create a standard markdown editor"
Pipeline #976141 failed
...@@ -4,7 +4,7 @@ import nl.javadude.gradle.plugins.license.LicenseExtension ...@@ -4,7 +4,7 @@ import nl.javadude.gradle.plugins.license.LicenseExtension
import org.gradle.internal.impldep.org.junit.experimental.categories.Categories.CategoryFilter.exclude import org.gradle.internal.impldep.org.junit.experimental.categories.Categories.CategoryFilter.exclude
group = "nl.tudelft.labrador" group = "nl.tudelft.labrador"
version = "1.0.2" version = "1.0.2-beta"
repositories { repositories {
mavenLocal() mavenLocal()
...@@ -107,9 +107,9 @@ task<Exec>("sassCompile") { ...@@ -107,9 +107,9 @@ task<Exec>("sassCompile") {
task<Exec>("tsCompile") { task<Exec>("tsCompile") {
if (System.getProperty("os.name").contains("windows",true)) { if (System.getProperty("os.name").contains("windows",true)) {
commandLine("cmd", "/c", "npm", "run", "tsCompile") commandLine("cmd", "/c", "npm", "run", "build")
} else { } else {
commandLine("npm", "run", "tsCompile") commandLine("npm", "run", "build")
} }
tasks.getByName("jar").dependsOn.add(this) tasks.getByName("jar").dependsOn.add(this)
} }
......
This diff is collapsed.
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
"src": "src" "src": "src"
}, },
"scripts": { "scripts": {
"build": "webpack",
"sassCompile": "sass src/scss:build/resources/main/META-INF/resources/webjars/chihuahui/$(npm version | grep chihuahui | sed \"s/.*chihuahui: '\\([0-9]\\+\\.[0-9]\\+\\.[0-9]\\+\\).*',/\\1/\")", "sassCompile": "sass src/scss:build/resources/main/META-INF/resources/webjars/chihuahui/$(npm version | grep chihuahui | sed \"s/.*chihuahui: '\\([0-9]\\+\\.[0-9]\\+\\.[0-9]\\+\\).*',/\\1/\")",
"tsCompile": "tsc src/ts/components/*.ts -t es2022 --outDir build/resources/main/META-INF/resources/webjars/chihuahui/$(npm version | grep chihuahui | sed \"s/.*chihuahui: '\\([0-9]\\+\\.[0-9]\\+\\.[0-9]\\+\\).*',/\\1/\")" "tsCompile": "tsc src/ts/components/*.ts -t es2022 --outDir build/resources/main/META-INF/resources/webjars/chihuahui/$(npm version | grep chihuahui | sed \"s/.*chihuahui: '\\([0-9]\\+\\.[0-9]\\+\\.[0-9]\\+\\).*',/\\1/\")"
}, },
...@@ -17,8 +18,21 @@ ...@@ -17,8 +18,21 @@
"author": "", "author": "",
"license": "AGPL-3.0-only", "license": "AGPL-3.0-only",
"dependencies": { "dependencies": {
"@codemirror/lang-javascript": "^6.2.1",
"@codemirror/lang-markdown": "^6.2.3",
"codemirror": "6.0.1",
"playwright": "latest",
"prosemirror": "^0.11.1",
"prosemirror-example-setup": "^1.2.2",
"prosemirror-markdown": "^1.11.2",
"prosemirror-schema-basic": "^1.2.2",
"prosemirror-schema-list": "^1.3.0",
"sass": "1.65.1", "sass": "1.65.1",
"typescript": "^5.0.0", "ts-loader": "^9.5.1",
"playwright": "latest" "typescript": "^5.0.0"
},
"devDependencies": {
"@types/codemirror": "^5.60.15",
"webpack-cli": "^5.1.4"
} }
} }
...@@ -16,20 +16,22 @@ ...@@ -16,20 +16,22 @@
/// along with this program. If not, see <https://www.gnu.org/licenses/>. /// along with this program. If not, see <https://www.gnu.org/licenses/>.
/// ///
import { initTabs } from "./tabs.js"; import { initTabs } from "./tabs";
import { initToggles } from "./toggle.js"; import { initToggles } from "./toggle";
import { initMenus } from "./menu.js"; import { initMenus } from "./menu";
import { initDialogs } from "./dialog.js"; import { initDialogs } from "./dialog";
import { initAccordions } from "./accordion.js"; import { initAccordions } from "./accordion";
import { initSelects } from "./selectbox.js"; import { initSelects } from "./selectbox";
import { initMardownEditors } from "./markdown_codemirror";
function initComponentEvents(inElement: HTMLElement | Document) { export function initComponentEvents(inElement: HTMLElement | Document) {
initTabs(inElement); initTabs(inElement);
initToggles(inElement); initToggles(inElement);
initMenus(inElement); initMenus(inElement);
initDialogs(inElement); initDialogs(inElement);
initAccordions(inElement); initAccordions(inElement);
initSelects(inElement); initSelects(inElement);
initMardownEditors(inElement);
inElement.dispatchEvent(new CustomEvent("ComponentsLoaded")); inElement.dispatchEvent(new CustomEvent("ComponentsLoaded"));
} }
window["initComponentEvents"] = initComponentEvents; window["initComponentEvents"] = initComponentEvents;
......
import { basicSetup, EditorView } from 'codemirror'
import { markdown } from '@codemirror/lang-markdown'
export function initMardownEditors(inElement) {
const targetElement = document.querySelector('#code')!
inElement.querySelectorAll("[data-editor-markdown]").forEach((s: any) => initMarkdownEditor(s))
}
function initMarkdownEditor(targetElement: any) {
const initialText = targetElement.innerText
new EditorView({
doc: initialText,
extensions: [
basicSetup,
markdown()
],
parent: targetElement
})
}
...@@ -370,6 +370,7 @@ function initSelect(select: HTMLSelectElement) { ...@@ -370,6 +370,7 @@ function initSelect(select: HTMLSelectElement) {
list.setAttribute("role", "list"); list.setAttribute("role", "list");
wrapper.appendChild(list); wrapper.appendChild(list);
// @ts-ignore
for (let opt of selectClone.querySelectorAll("option")) { for (let opt of selectClone.querySelectorAll("option")) {
list.appendChild(buildOption(wrapper, opt)); list.appendChild(buildOption(wrapper, opt));
} }
......
{ {
"compilerOptions": { "compilerOptions": {
"target": "es2022" "target": "es2022",
"esModuleInterop": true,
"isolatedModules": true,
"lib": ["ESNext", "DOM"],
"module": "ESNext",
"moduleResolution": "Node",
"resolveJsonModule": true,
"skipLibCheck": true,
} }
} }
const path = require("path")
module.exports = {
mode: 'development',
entry: '/src/ts/components/components.ts',
module: {
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/,
},
],
},
resolve: {
extensions: ['.ts', '.js'],
},
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'static'),
},
}
This diff is collapsed.
...@@ -11,11 +11,10 @@ ...@@ -11,11 +11,10 @@
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"lint": "prettier --plugin-search-dir . --check . && eslint .", "lint": "prettier --plugin-search-dir . --check . && eslint .",
"format": "prettier --plugin-search-dir . --write .", "format": "prettier --plugin-search-dir . --write .",
"sassWatch": "sass --watch ../core/src/scss:static/css", "sassWatch": "sass --watch ../core/src/scss:static/css",
"tsWatch": "tsc --watch ../core/src/ts/components/*.ts -t es2022 --outDir static/js/", "tsWatch": "tsc --watch ../core/src/ts/components/*.ts -t es2022 --outDir static/js/",
"sassCompile": "sass ../core/src/scss:static/css", "sassCompile": "sass ../core/src/scss:static/css",
"tsCompile": "tsc ../core/src/ts/components/*.ts -t es2022 --outDir static/js/" "tsCompile": "tsc ../core/src/ts/components/*.ts -t es2022 --moduleResolution nodenext --outDir static/js/"
}, },
"devDependencies": { "devDependencies": {
"@playwright/test": "^1.28.1", "@playwright/test": "^1.28.1",
...@@ -31,9 +30,11 @@ ...@@ -31,9 +30,11 @@
"prettier-plugin-svelte": "^2.8.1", "prettier-plugin-svelte": "^2.8.1",
"svelte": "^3.54.0", "svelte": "^3.54.0",
"svelte-check": "^3.0.1", "svelte-check": "^3.0.1",
"ts-loader": "^9.5.1",
"tslib": "^2.4.1", "tslib": "^2.4.1",
"typescript": "^5.0.0", "typescript": "^5.0.0",
"vite": "^4.3.0" "vite": "^4.3.0",
"webpack": "^5.89.0"
}, },
"dependencies": { "dependencies": {
"sass": "1.65.1" "sass": "1.65.1"
......
...@@ -9,7 +9,8 @@ ...@@ -9,7 +9,8 @@
<link rel="stylesheet" href="%sveltekit.assets%/css/main.css"/> <link rel="stylesheet" href="%sveltekit.assets%/css/main.css"/>
<script src="%sveltekit.assets%/js/theme.js"></script> <script src="%sveltekit.assets%/js/theme.js"></script>
<script src="%sveltekit.assets%/js/toast.js"></script> <script src="%sveltekit.assets%/js/toast.js"></script>
<script type="module" src="%sveltekit.assets%/js/components.js"></script> <script type="module" src="%sveltekit.assets%/js/bundle.js"></script>
<!-- <script type="module" src="%sveltekit.assets%/js/components.js"></script>-->
<title>ChihuahUI</title> <title>ChihuahUI</title>
......
...@@ -31,3 +31,7 @@ ...@@ -31,3 +31,7 @@
<input type="password" class="textfield" placeholder="Password field"/> <input type="password" class="textfield" placeholder="Password field"/>
<input type="number" class="textfield" placeholder="Number field"/> <input type="number" class="textfield" placeholder="Number field"/>
</div> </div>
<div class="flex vertical gap-3 align-start">
<div id="code"></div>
</div>
const path = require("path")
module.exports = {
mode: 'development',
entry: '../core/src/ts/components/components.ts',
module: {
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/,
},
],
},
resolve: {
extensions: ['.ts', '.js'],
},
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'static/js'),
},
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment