From 59e7dae678696c9b3aca6a21e52d98b448b4522b Mon Sep 17 00:00:00 2001 From: Benedikt Seeger <benedikt.seeger@ptb.de> Date: Mon, 24 Feb 2025 08:09:25 +0100 Subject: [PATCH] changed to plain javaScript --- dcc-viewer/.idea/.gitignore | 8 ----- dcc-viewer/.idea/dcc-viewer.iml | 12 -------- .../inspectionProfiles/Project_Default.xml | 15 ---------- dcc-viewer/.idea/modules.xml | 8 ----- dcc-viewer/.idea/vcs.xml | 6 ---- dcc-viewer/public/index.html | 4 +-- dcc-viewer/src/components/BaseViewer.js | 8 +++++ dcc-viewer/src/components/BaseViewer.ts | 7 ----- .../{JSONTreeViewer.ts => JSONTreeViewer.js} | 4 +-- dcc-viewer/src/globalData.js | 1 + dcc-viewer/src/globalData.ts | 1 - .../{globalOptions.ts => globalOptions.js} | 0 dcc-viewer/src/idRegistry.js | 1 + dcc-viewer/src/idRegistry.ts | 1 - dcc-viewer/src/{main.ts => main.js} | 12 ++++---- dcc-viewer/src/ui/languageSelector.js | 6 ++++ dcc-viewer/src/ui/languageSelector.ts | 6 ---- .../ui/{themeSwitcher.ts => themeSwitcher.js} | 2 +- dcc-viewer/src/{utils.ts => utils.js} | 2 +- dcc-viewer/src/viewerRegistry.js | 5 ++++ dcc-viewer/src/viewerRegistry.ts | 5 ---- dcc-viewer/src/{xmlToJson.ts => xmlToJson.js} | 2 +- dcc-viewer/tsconfig.json | 1 - files.json | 27 ----------------- project_structure.json | 29 +++++++++---------- 25 files changed, 48 insertions(+), 125 deletions(-) delete mode 100644 dcc-viewer/.idea/.gitignore delete mode 100644 dcc-viewer/.idea/dcc-viewer.iml delete mode 100644 dcc-viewer/.idea/inspectionProfiles/Project_Default.xml delete mode 100644 dcc-viewer/.idea/modules.xml delete mode 100644 dcc-viewer/.idea/vcs.xml create mode 100644 dcc-viewer/src/components/BaseViewer.js delete mode 100644 dcc-viewer/src/components/BaseViewer.ts rename dcc-viewer/src/components/{JSONTreeViewer.ts => JSONTreeViewer.js} (75%) create mode 100644 dcc-viewer/src/globalData.js delete mode 100644 dcc-viewer/src/globalData.ts rename dcc-viewer/src/{globalOptions.ts => globalOptions.js} (100%) create mode 100644 dcc-viewer/src/idRegistry.js delete mode 100644 dcc-viewer/src/idRegistry.ts rename dcc-viewer/src/{main.ts => main.js} (50%) create mode 100644 dcc-viewer/src/ui/languageSelector.js delete mode 100644 dcc-viewer/src/ui/languageSelector.ts rename dcc-viewer/src/ui/{themeSwitcher.ts => themeSwitcher.js} (54%) rename dcc-viewer/src/{utils.ts => utils.js} (58%) create mode 100644 dcc-viewer/src/viewerRegistry.js delete mode 100644 dcc-viewer/src/viewerRegistry.ts rename dcc-viewer/src/{xmlToJson.ts => xmlToJson.js} (64%) delete mode 100644 dcc-viewer/tsconfig.json delete mode 100644 files.json diff --git a/dcc-viewer/.idea/.gitignore b/dcc-viewer/.idea/.gitignore deleted file mode 100644 index 13566b8..0000000 --- a/dcc-viewer/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/dcc-viewer/.idea/dcc-viewer.iml b/dcc-viewer/.idea/dcc-viewer.iml deleted file mode 100644 index 24643cc..0000000 --- a/dcc-viewer/.idea/dcc-viewer.iml +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<module type="WEB_MODULE" version="4"> - <component name="NewModuleRootManager"> - <content url="file://$MODULE_DIR$"> - <excludeFolder url="file://$MODULE_DIR$/.tmp" /> - <excludeFolder url="file://$MODULE_DIR$/temp" /> - <excludeFolder url="file://$MODULE_DIR$/tmp" /> - </content> - <orderEntry type="inheritedJdk" /> - <orderEntry type="sourceFolder" forTests="false" /> - </component> -</module> \ No newline at end of file diff --git a/dcc-viewer/.idea/inspectionProfiles/Project_Default.xml b/dcc-viewer/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 798a81f..0000000 --- a/dcc-viewer/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,15 +0,0 @@ -<component name="InspectionProjectProfileManager"> - <profile version="1.0"> - <option name="myName" value="Project Default" /> - <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" /> - <inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true"> - <option name="ignoredPackages"> - <value> - <list size="1"> - <item index="0" class="java.lang.String" itemvalue="bokeh" /> - </list> - </value> - </option> - </inspection_tool> - </profile> -</component> \ No newline at end of file diff --git a/dcc-viewer/.idea/modules.xml b/dcc-viewer/.idea/modules.xml deleted file mode 100644 index 7342473..0000000 --- a/dcc-viewer/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="ProjectModuleManager"> - <modules> - <module fileurl="file://$PROJECT_DIR$/.idea/dcc-viewer.iml" filepath="$PROJECT_DIR$/.idea/dcc-viewer.iml" /> - </modules> - </component> -</project> \ No newline at end of file diff --git a/dcc-viewer/.idea/vcs.xml b/dcc-viewer/.idea/vcs.xml deleted file mode 100644 index 6c0b863..0000000 --- a/dcc-viewer/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="VcsDirectoryMappings"> - <mapping directory="$PROJECT_DIR$/.." vcs="Git" /> - </component> -</project> \ No newline at end of file diff --git a/dcc-viewer/public/index.html b/dcc-viewer/public/index.html index e363a2d..0c36cb1 100644 --- a/dcc-viewer/public/index.html +++ b/dcc-viewer/public/index.html @@ -3,8 +3,8 @@ <head> <meta charset='UTF-8'> <title>DCC Viewer</title> - <script type='module' src='dist/main.js'></script> - <link rel='stylesheet' href='styles.css'> + <script type='module' src='/src/main.js'></script> + <link rel='stylesheet' href='/styles.css'> </head> <body> <input type='file' id='file-input' accept='.xml'> diff --git a/dcc-viewer/src/components/BaseViewer.js b/dcc-viewer/src/components/BaseViewer.js new file mode 100644 index 0000000..11d24a9 --- /dev/null +++ b/dcc-viewer/src/components/BaseViewer.js @@ -0,0 +1,8 @@ +export class BaseViewer { + constructor(sectionData) { + this.sectionData = sectionData; + } + render() { + throw new Error('render() must be implemented in subclasses'); + } +} \ No newline at end of file diff --git a/dcc-viewer/src/components/BaseViewer.ts b/dcc-viewer/src/components/BaseViewer.ts deleted file mode 100644 index 9837734..0000000 --- a/dcc-viewer/src/components/BaseViewer.ts +++ /dev/null @@ -1,7 +0,0 @@ -export abstract class BaseViewer { - protected sectionData: any; - constructor(sectionData: any) { - this.sectionData = sectionData; - } - abstract render(): HTMLElement; -} \ No newline at end of file diff --git a/dcc-viewer/src/components/JSONTreeViewer.ts b/dcc-viewer/src/components/JSONTreeViewer.js similarity index 75% rename from dcc-viewer/src/components/JSONTreeViewer.ts rename to dcc-viewer/src/components/JSONTreeViewer.js index ef06785..4fcd426 100644 --- a/dcc-viewer/src/components/JSONTreeViewer.ts +++ b/dcc-viewer/src/components/JSONTreeViewer.js @@ -1,7 +1,7 @@ -import { BaseViewer } from './BaseViewer'; +import { BaseViewer } from './BaseViewer.js'; export class JSONTreeViewer extends BaseViewer { - render(): HTMLElement { + render() { const container = document.createElement('pre'); container.textContent = JSON.stringify(this.sectionData, null, 2); return container; diff --git a/dcc-viewer/src/globalData.js b/dcc-viewer/src/globalData.js new file mode 100644 index 0000000..c15978e --- /dev/null +++ b/dcc-viewer/src/globalData.js @@ -0,0 +1 @@ +export const globalData = {}; \ No newline at end of file diff --git a/dcc-viewer/src/globalData.ts b/dcc-viewer/src/globalData.ts deleted file mode 100644 index 8bc8fad..0000000 --- a/dcc-viewer/src/globalData.ts +++ /dev/null @@ -1 +0,0 @@ -export const globalData: { [key: string]: any } = {}; \ No newline at end of file diff --git a/dcc-viewer/src/globalOptions.ts b/dcc-viewer/src/globalOptions.js similarity index 100% rename from dcc-viewer/src/globalOptions.ts rename to dcc-viewer/src/globalOptions.js diff --git a/dcc-viewer/src/idRegistry.js b/dcc-viewer/src/idRegistry.js new file mode 100644 index 0000000..d61c792 --- /dev/null +++ b/dcc-viewer/src/idRegistry.js @@ -0,0 +1 @@ +export const idRegistry = {}; \ No newline at end of file diff --git a/dcc-viewer/src/idRegistry.ts b/dcc-viewer/src/idRegistry.ts deleted file mode 100644 index e98ebab..0000000 --- a/dcc-viewer/src/idRegistry.ts +++ /dev/null @@ -1 +0,0 @@ -export const idRegistry: { [id: string]: any } = {}; \ No newline at end of file diff --git a/dcc-viewer/src/main.ts b/dcc-viewer/src/main.js similarity index 50% rename from dcc-viewer/src/main.ts rename to dcc-viewer/src/main.js index 76059c7..8b19e28 100644 --- a/dcc-viewer/src/main.ts +++ b/dcc-viewer/src/main.js @@ -1,16 +1,16 @@ -import { convertXMLToJSON } from './xmlToJson'; -import { JSONTreeViewer } from './components/JSONTreeViewer'; +import { convertXMLToJSON } from './xmlToJson.js'; +import { JSONTreeViewer } from './components/JSONTreeViewer.js'; -const fileInput = document.getElementById('file-input') as HTMLInputElement; -const container = document.getElementById('json-container') as HTMLElement; +const fileInput = document.getElementById('file-input'); +const container = document.getElementById('json-container'); fileInput.addEventListener('change', async (event) => { - const file = (event.target as HTMLInputElement).files?.[0]; + const file = event.target.files?.[0]; if (!file) return; const reader = new FileReader(); reader.onload = async () => { - const xmlString = reader.result as string; + const xmlString = reader.result; const jsonData = await convertXMLToJSON(xmlString); const viewer = new JSONTreeViewer(jsonData); container.innerHTML = ''; diff --git a/dcc-viewer/src/ui/languageSelector.js b/dcc-viewer/src/ui/languageSelector.js new file mode 100644 index 0000000..98b697e --- /dev/null +++ b/dcc-viewer/src/ui/languageSelector.js @@ -0,0 +1,6 @@ +import { globalOptions } from '../globalOptions.js'; + +const languageSelect = document.getElementById('language-select'); +languageSelect.addEventListener('change', (event) => { + globalOptions.preferredLanguage = event.target.value; +}); \ No newline at end of file diff --git a/dcc-viewer/src/ui/languageSelector.ts b/dcc-viewer/src/ui/languageSelector.ts deleted file mode 100644 index 0854c83..0000000 --- a/dcc-viewer/src/ui/languageSelector.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { globalOptions } from '../globalOptions'; - -const languageSelect = document.getElementById('language-select') as HTMLSelectElement; -languageSelect.addEventListener('change', (event) => { - globalOptions.preferredLanguage = (event.target as HTMLSelectElement).value; -}); \ No newline at end of file diff --git a/dcc-viewer/src/ui/themeSwitcher.ts b/dcc-viewer/src/ui/themeSwitcher.js similarity index 54% rename from dcc-viewer/src/ui/themeSwitcher.ts rename to dcc-viewer/src/ui/themeSwitcher.js index 931533f..2996ddc 100644 --- a/dcc-viewer/src/ui/themeSwitcher.ts +++ b/dcc-viewer/src/ui/themeSwitcher.js @@ -1,4 +1,4 @@ -const themeToggle = document.getElementById('theme-toggle') as HTMLButtonElement; +const themeToggle = document.getElementById('theme-toggle'); themeToggle.addEventListener('click', () => { document.body.classList.toggle('dark-mode'); }); \ No newline at end of file diff --git a/dcc-viewer/src/utils.ts b/dcc-viewer/src/utils.js similarity index 58% rename from dcc-viewer/src/utils.ts rename to dcc-viewer/src/utils.js index fb95467..aaaf614 100644 --- a/dcc-viewer/src/utils.ts +++ b/dcc-viewer/src/utils.js @@ -1,4 +1,4 @@ -export function getLocalizedText(elements: any[]): string { +export function getLocalizedText(elements) { if (!Array.isArray(elements)) return elements; return elements[0]._ || ''; } \ No newline at end of file diff --git a/dcc-viewer/src/viewerRegistry.js b/dcc-viewer/src/viewerRegistry.js new file mode 100644 index 0000000..8de1bf6 --- /dev/null +++ b/dcc-viewer/src/viewerRegistry.js @@ -0,0 +1,5 @@ +import { JSONTreeViewer } from './components/JSONTreeViewer.js'; + +export function getViewerForElement() { + return JSONTreeViewer; +} \ No newline at end of file diff --git a/dcc-viewer/src/viewerRegistry.ts b/dcc-viewer/src/viewerRegistry.ts deleted file mode 100644 index 6e6b15a..0000000 --- a/dcc-viewer/src/viewerRegistry.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { JSONTreeViewer } from './components/JSONTreeViewer'; - -export function getViewerForElement(): any { - return JSONTreeViewer; -} \ No newline at end of file diff --git a/dcc-viewer/src/xmlToJson.ts b/dcc-viewer/src/xmlToJson.js similarity index 64% rename from dcc-viewer/src/xmlToJson.ts rename to dcc-viewer/src/xmlToJson.js index 03506aa..b308fc3 100644 --- a/dcc-viewer/src/xmlToJson.ts +++ b/dcc-viewer/src/xmlToJson.js @@ -1,5 +1,5 @@ import { parseStringPromise } from 'xml2js'; -export async function convertXMLToJSON(xmlString: string): Promise<any> { +export async function convertXMLToJSON(xmlString) { return parseStringPromise(xmlString, { explicitArray: false, mergeAttrs: true }); } \ No newline at end of file diff --git a/dcc-viewer/tsconfig.json b/dcc-viewer/tsconfig.json deleted file mode 100644 index ff383c8..0000000 --- a/dcc-viewer/tsconfig.json +++ /dev/null @@ -1 +0,0 @@ -{ "compilerOptions": { "target": "ES6", "module": "ES6", "outDir": "dist" } } \ No newline at end of file diff --git a/files.json b/files.json deleted file mode 100644 index 854fa90..0000000 --- a/files.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "dcc-viewer": { - "src": { - "main.ts": "import { convertXMLToJSON } from './xmlToJson';\nimport { JSONTreeViewer } from './components/JSONTreeViewer';\n\nconst fileInput = document.getElementById('file-input') as HTMLInputElement;\nconst container = document.getElementById('json-container') as HTMLElement;\n\nfileInput.addEventListener('change', async (event) => {\n const file = (event.target as HTMLInputElement).files?.[0];\n if (!file) return;\n\n const reader = new FileReader();\n reader.onload = async () => {\n const xmlString = reader.result as string;\n const jsonData = await convertXMLToJSON(xmlString);\n const viewer = new JSONTreeViewer(jsonData);\n container.innerHTML = '';\n container.appendChild(viewer.render());\n };\n reader.readAsText(file);\n});", - "xmlToJson.ts": "import { parseStringPromise } from 'xml2js';\n\nexport async function convertXMLToJSON(xmlString: string): Promise<any> {\n return parseStringPromise(xmlString, { explicitArray: false, mergeAttrs: true });\n}", - "idRegistry.ts": "export const idRegistry: { [id: string]: any } = {};", - "globalData.ts": "export const globalData: { [key: string]: any } = {};", - "globalOptions.ts": "export const globalOptions = { preferredLanguage: 'en' };", - "viewerRegistry.ts": "import { JSONTreeViewer } from './components/JSONTreeViewer';\n\nexport function getViewerForElement(): any {\n return JSONTreeViewer;\n}", - "utils.ts": "export function getLocalizedText(elements: any[]): string {\n if (!Array.isArray(elements)) return elements;\n return elements[0]._ || '';\n}", - "components": { - "BaseViewer.ts": "export abstract class BaseViewer {\n protected sectionData: any;\n constructor(sectionData: any) {\n this.sectionData = sectionData;\n }\n abstract render(): HTMLElement;\n}", - "JSONTreeViewer.ts": "import { BaseViewer } from './BaseViewer';\n\nexport class JSONTreeViewer extends BaseViewer {\n render(): HTMLElement {\n const container = document.createElement('pre');\n container.textContent = JSON.stringify(this.sectionData, null, 2);\n return container;\n }\n}" - }, - "ui": { - "languageSelector.ts": "import { globalOptions } from '../globalOptions';\n\nconst languageSelect = document.getElementById('language-select') as HTMLSelectElement;\nlanguageSelect.addEventListener('change', (event) => {\n globalOptions.preferredLanguage = (event.target as HTMLSelectElement).value;\n});", - "themeSwitcher.ts": "const themeToggle = document.getElementById('theme-toggle') as HTMLButtonElement;\nthemeToggle.addEventListener('click', () => {\n document.body.classList.toggle('dark-mode');\n});" - } - }, - "public": { - "index.html": "<!DOCTYPE html>\n<html lang='en'>\n<head>\n <meta charset='UTF-8'>\n <title>DCC Viewer</title>\n <script type='module' src='dist/main.js'></script>\n <link rel='stylesheet' href='styles.css'>\n</head>\n<body>\n <input type='file' id='file-input' accept='.xml'>\n <button id='theme-toggle'>Toggle Theme</button>\n <select id='language-select'>\n <option value='en'>English</option>\n <option value='de'>German</option>\n </select>\n <div id='json-container'></div>\n</body>\n</html>", - "styles.css": "body { font-family: Arial, sans-serif; }\n.dark-mode { background-color: black; color: white; }" - }, - "package.json": "{\n \"name\": \"dcc-viewer\",\n \"version\": \"1.0.0\",\n \"scripts\": { \"dev\": \"vite\" },\n \"dependencies\": { \"xml2js\": \"^0.4.23\" }\n}", - "tsconfig.json": "{ \"compilerOptions\": { \"target\": \"ES6\", \"module\": \"ES6\", \"outDir\": \"dist\" } }", - } -} diff --git a/project_structure.json b/project_structure.json index ec74642..a567036 100644 --- a/project_structure.json +++ b/project_structure.json @@ -1,27 +1,26 @@ { "dcc-viewer": { "src": { - "main.ts": "import { convertXMLToJSON } from './xmlToJson';\nimport { JSONTreeViewer } from './components/JSONTreeViewer';\n\nconst fileInput = document.getElementById('file-input') as HTMLInputElement;\nconst container = document.getElementById('json-container') as HTMLElement;\n\nfileInput.addEventListener('change', async (event) => {\n const file = (event.target as HTMLInputElement).files?.[0];\n if (!file) return;\n\n const reader = new FileReader();\n reader.onload = async () => {\n const xmlString = reader.result as string;\n const jsonData = await convertXMLToJSON(xmlString);\n const viewer = new JSONTreeViewer(jsonData);\n container.innerHTML = '';\n container.appendChild(viewer.render());\n };\n reader.readAsText(file);\n});", - "xmlToJson.ts": "import { parseStringPromise } from 'xml2js';\n\nexport async function convertXMLToJSON(xmlString: string): Promise<any> {\n return parseStringPromise(xmlString, { explicitArray: false, mergeAttrs: true });\n}", - "idRegistry.ts": "export const idRegistry: { [id: string]: any } = {};", - "globalData.ts": "export const globalData: { [key: string]: any } = {};", - "globalOptions.ts": "export const globalOptions = { preferredLanguage: 'en' };", - "viewerRegistry.ts": "import { JSONTreeViewer } from './components/JSONTreeViewer';\n\nexport function getViewerForElement(): any {\n return JSONTreeViewer;\n}", - "utils.ts": "export function getLocalizedText(elements: any[]): string {\n if (!Array.isArray(elements)) return elements;\n return elements[0]._ || '';\n}", + "main.js": "import { convertXMLToJSON } from './xmlToJson.js';\nimport { JSONTreeViewer } from './components/JSONTreeViewer.js';\n\nconst fileInput = document.getElementById('file-input');\nconst container = document.getElementById('json-container');\n\nfileInput.addEventListener('change', async (event) => {\n const file = event.target.files?.[0];\n if (!file) return;\n\n const reader = new FileReader();\n reader.onload = async () => {\n const xmlString = reader.result;\n const jsonData = await convertXMLToJSON(xmlString);\n const viewer = new JSONTreeViewer(jsonData);\n container.innerHTML = '';\n container.appendChild(viewer.render());\n };\n reader.readAsText(file);\n});", + "xmlToJson.js": "import { parseStringPromise } from 'xml2js';\n\nexport async function convertXMLToJSON(xmlString) {\n return parseStringPromise(xmlString, { explicitArray: false, mergeAttrs: true });\n}", + "idRegistry.js": "export const idRegistry = {};", + "globalData.js": "export const globalData = {};", + "globalOptions.js": "export const globalOptions = { preferredLanguage: 'en' };", + "viewerRegistry.js": "import { JSONTreeViewer } from './components/JSONTreeViewer.js';\n\nexport function getViewerForElement() {\n return JSONTreeViewer;\n}", + "utils.js": "export function getLocalizedText(elements) {\n if (!Array.isArray(elements)) return elements;\n return elements[0]._ || '';\n}", "components": { - "BaseViewer.ts": "export abstract class BaseViewer {\n protected sectionData: any;\n constructor(sectionData: any) {\n this.sectionData = sectionData;\n }\n abstract render(): HTMLElement;\n}", - "JSONTreeViewer.ts": "import { BaseViewer } from './BaseViewer';\n\nexport class JSONTreeViewer extends BaseViewer {\n render(): HTMLElement {\n const container = document.createElement('pre');\n container.textContent = JSON.stringify(this.sectionData, null, 2);\n return container;\n }\n}" + "BaseViewer.js": "export class BaseViewer {\n constructor(sectionData) {\n this.sectionData = sectionData;\n }\n render() {\n throw new Error('render() must be implemented in subclasses');\n }\n}", + "JSONTreeViewer.js": "import { BaseViewer } from './BaseViewer.js';\n\nexport class JSONTreeViewer extends BaseViewer {\n render() {\n const container = document.createElement('pre');\n container.textContent = JSON.stringify(this.sectionData, null, 2);\n return container;\n }\n}" }, "ui": { - "languageSelector.ts": "import { globalOptions } from '../globalOptions';\n\nconst languageSelect = document.getElementById('language-select') as HTMLSelectElement;\nlanguageSelect.addEventListener('change', (event) => {\n globalOptions.preferredLanguage = (event.target as HTMLSelectElement).value;\n});", - "themeSwitcher.ts": "const themeToggle = document.getElementById('theme-toggle') as HTMLButtonElement;\nthemeToggle.addEventListener('click', () => {\n document.body.classList.toggle('dark-mode');\n});" + "languageSelector.js": "import { globalOptions } from '../globalOptions.js';\n\nconst languageSelect = document.getElementById('language-select');\nlanguageSelect.addEventListener('change', (event) => {\n globalOptions.preferredLanguage = event.target.value;\n});", + "themeSwitcher.js": "const themeToggle = document.getElementById('theme-toggle');\nthemeToggle.addEventListener('click', () => {\n document.body.classList.toggle('dark-mode');\n});" } }, "public": { - "index.html": "<!DOCTYPE html>\n<html lang='en'>\n<head>\n <meta charset='UTF-8'>\n <title>DCC Viewer</title>\n <script type='module' src='dist/main.js'></script>\n <link rel='stylesheet' href='styles.css'>\n</head>\n<body>\n <input type='file' id='file-input' accept='.xml'>\n <button id='theme-toggle'>Toggle Theme</button>\n <select id='language-select'>\n <option value='en'>English</option>\n <option value='de'>German</option>\n </select>\n <div id='json-container'></div>\n</body>\n</html>", + "index.html": "<!DOCTYPE html>\n<html lang='en'>\n<head>\n <meta charset='UTF-8'>\n <title>DCC Viewer</title>\n <script type='module' src='/src/main.js'></script>\n <link rel='stylesheet' href='/styles.css'>\n</head>\n<body>\n <input type='file' id='file-input' accept='.xml'>\n <button id='theme-toggle'>Toggle Theme</button>\n <select id='language-select'>\n <option value='en'>English</option>\n <option value='de'>German</option>\n </select>\n <div id='json-container'></div>\n</body>\n</html>", "styles.css": "body { font-family: Arial, sans-serif; }\n.dark-mode { background-color: black; color: white; }" }, - "package.json": "{\n \"name\": \"dcc-viewer\",\n \"version\": \"1.0.0\",\n \"scripts\": { \"dev\": \"vite\" },\n \"dependencies\": { \"xml2js\": \"^0.4.23\" }\n}", - "tsconfig.json": "{ \"compilerOptions\": { \"target\": \"ES6\", \"module\": \"ES6\", \"outDir\": \"dist\" } }" - } + "package.json": "{\n \"name\": \"dcc-viewer\",\n \"version\": \"1.0.0\",\n \"scripts\": { \"dev\": \"vite\" },\n \"dependencies\": { \"xml2js\": \"^0.4.23\" }\n}" + } } -- GitLab