+
+
+
+
\ No newline at end of file
diff --git a/CNAME b/CNAME
new file mode 100644
index 00000000..577738ed
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+vutron.jooy2.com
\ No newline at end of file
diff --git a/Electron How To/main-and-renderer-process.html b/Electron How To/main-and-renderer-process.html
new file mode 100644
index 00000000..ec310f62
--- /dev/null
+++ b/Electron How To/main-and-renderer-process.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ Main vs Renderer Process | Vutron
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
A Vutron application is divided into code into a Main process and a Renderer process.
"Main" is the code of src/main and is mainly the process code handled by Electron. "Renderer" is the code of src/renderer, mainly for front-end rendering process like Vue.
In general, NodeJS scripts cannot be run in the renderer process. Examples include modules that contain APIs used by NodeJS, or native modules of NodeJS such as path or net, os or crypto.
Preload scripts are run before the renderer is loaded. It creates a bridge to the main process to keep the execution of NodeJS scripts in the renderer area separate and isolated for security reasons.
For secure script execution, it is recommended that the main process executes the Node scripts, and the renderer receives the execution results via messaging. This can be implemented via IPC communication.
The preload script in Electron.js is a secure area designed for communication between the main and renderer processes. It is typically used for IPC communication.
For compatibility and security with the latest version of Electron, we do not recommend using the old electron/remote module. If you want to utilize system events or Node scripts, it is recommended to do so in the main process, not the renderer.
Vutron's preload script is located in the src/preload folder. To create a new IPC communication channel, add the channel name to the following variable to whitelist it for communication.
mainAvailChannels: Send an event from main to renderer. (window.mainApi.send('channelName''))
rendererAvailChannels: Send an event from renderer to main. (mainWindow.webContents.send('channelName'))
When sending events from renderer to main, you access the window.mainApi object instead of ipcRenderer.send. The mainApi is the name you set in your Vutron template and can be changed.
Here are the supported functions for mainApi: (To change and modify this, you need to modify exposeInMainWorld in src/preload/index.ts).
send: Send an event to main.
receive: A listener to receive events sent by main.
invoke: Functions that can send events to main and receive data asynchronously.
+
+
+
+
\ No newline at end of file
diff --git a/Installation and Build/automated-testing.html b/Installation and Build/automated-testing.html
new file mode 100644
index 00000000..d8af4972
--- /dev/null
+++ b/Installation and Build/automated-testing.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+ Automated Testing | Vutron
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Vutron includes automated testing. The testing framework uses Microsoft's Playwright.
Playwright is optimized for web application testing and has full support for the Electron framework. It is simple to install, requires no configuration to start testing immediately, and is cross-platform. You can learn more about Playwright here: https://github.com/microsoft/playwright
Only very simple launch and behavioral tests for the template main screen have been implemented in this template. Advanced testing will depend on the scope of your application.
Currently, the test specification file is located in the tests directory and the test results file is located in tests/results. (The built-in test specification file does not generate a separate results file.)
Once the module installation is complete, you can simply build the platform package with the command below.
shell
# For Windows (.exe, .appx)
+$npmrunbuild:win
+
+# For macOS (.dmg)
+$npmrunbuild:mac
+
+# For Linux (.rpm, .deb, .snap)
+$npmrunbuild:linux
+
+# All platform (.exe, .appx, .dmg, .rpm, .deb, .snap) - see below description
+$npmrunbuild:all
# For Windows (.exe, .appx)
+$npmrunbuild:win
+
+# For macOS (.dmg)
+$npmrunbuild:mac
+
+# For Linux (.rpm, .deb, .snap)
+$npmrunbuild:linux
+
+# All platform (.exe, .appx, .dmg, .rpm, .deb, .snap) - see below description
+$npmrunbuild:all
The built packages can be found in release/{version} location.
What do I need to do for a multi-platform build?
To create a package for each OS, you must build it on the same OS. For example, a package for macOS must be built on a macOS machine.
However, you can build packages for Windows, macOS, and Linux all at once on one OS. However, this might require some preparation.
macOS is recommended if you want to build multiple platforms simultaneously on one platform. Because it can be configured with just a few very simple settings.
You can perform multi-platform builds at once with the following command. Alternatively, you can just do it for the OS you want via the individual build commands above.
shell
$npmrunbuild:all
$npmrunbuild:all
Multipass configuration may be required for Linux builds. Learn more about Multipass through the following link: https://multipass.run
Reduce bundle size by excluding development files
You can exclude files you don't need at build time by adding a file pattern to the files property of buildAssets/builder/config.ts. This will save bundle capacity.
Below is an unnecessary node_modules file pattern that can further save bundles. Depending on the project, using the rules below may cause problems, so please review it before using.
Build settings for projects that use Native Node modules
For projects that use the Native Node Module, add the following script to your package.json: When installing dependencies, electron-builder will take care of any modules that require rebuilding.
/
+├─ .github - GitHub files (only used for Vutron GitHub project contributions)
+│ └─ ISSUE_TEMPLATE/
+│ └─ resources/ - GitHub resources used for README.md, etc.
+│ └─ workflows/ - GitHub workflows definition
+│ └─ dependabot.yml
+│ └─ FUNDING.yml
+├─ .vscode - Common project configuration files used by Visual Studio Code IDE
+├─ buildAssets/ - Package resource (icon, logo, etc.) file used for Electron build
+│ └─ builder/
+│ │ │ └─ config.ts - `electron-builder` dynamic configuration file
+│ └─ icons/
+├─ dist/ - Output directory used to build the package
+├─ docs/ - Project documents (optionally enabled)
+│ └─ .vitepress/
+│ │ │ └─ config.mts - VitePress configuration file used for document hosting
+│ └─ public/ - Root resource directory for VitePress documentation pages
+├─ node_modules/
+├─ src/
+│ ├─ main/ - Main (Electron) process source code
+│ │ ├─ utils/ - Main process utilities
+│ │ │ └─ Constants.ts - Main global definition
+│ │ │ └─ Menus.ts - Main global menu definition
+│ │ └─ index.ts - Main process entry point
+│ │ └─ IPCs.ts - Main process ipc handlers definition
+│ │ └─ MainRunner.ts - Main process main window processing
+│ ├─ preload/ - Preload (Electron-Vue communication bridge) process source code
+│ │ └─ index.ts
+│ ├─ renderer/ - Renderer (Vue) process source code
+│ │ ├─ components/ - Vue components collection
+│ │ │ └─ layout/ - Layout components
+│ │ ├─ locales/ - Vue i18n language resource file
+│ │ ├─ plugins/ - Vue plugin definition
+│ │ ├─ public/ - Vue static resources
+│ │ │ └─ images/
+│ │ ├─ router/ - Vue routing definition
+│ │ ├─ screens/ - Vue screen component
+│ │ │ └─ ErrorScreen.vue - Screen displayed when renderer process and routing errors occur
+│ │ │ └─ MainScreen.vue
+│ │ │ └─ SecondScreen.vue - Sample screen
+│ │ ├─ store/ - Pinia store (Global state management) definition
+│ │ ├─ utils/ - Renderer process utilities
+│ │ ├─ App.vue - Vue app's root component
+│ │ ├─ index.html - Root static index loaded by Electron renderer process
+│ └─ └─ main.ts - Renderer process entry point
+├─ tests/ - Application test configuration
+│ └─ app.spec.ts - Test file specification
+├─ .editorconfig - Editor recommended configuration file for IDE
+├─ .eslintignore - List of files to be ignored by ESLint
+├─ .eslintrc.json - ESLint rule configurations
+├─ .gitignore - List of files to not upload to Git
+├─ .prettierignore - List of files to disable Prettier file formatting
+├─ .prettierrc - Prettier rule configurations
+├─ CODE_OF_CONDUCT.md - Files used only on GitHub
+├─ LICENSE - Project license file
+├─ package.json - NodeJS package configurations
+├─ package-lock.json
+├─ playwright.config.ts - Playwright test rules configurations
+├─ tsconfig.json - TypeScript configurations
+├─ tsconfig.node.json - TypeScript configurations
+├─ vite.config.ts - Vite compiler build configurations
+└─ README.md - Files used only on GitHub
/
+├─ .github - GitHub files (only used for Vutron GitHub project contributions)
+│ └─ ISSUE_TEMPLATE/
+│ └─ resources/ - GitHub resources used for README.md, etc.
+│ └─ workflows/ - GitHub workflows definition
+│ └─ dependabot.yml
+│ └─ FUNDING.yml
+├─ .vscode - Common project configuration files used by Visual Studio Code IDE
+├─ buildAssets/ - Package resource (icon, logo, etc.) file used for Electron build
+│ └─ builder/
+│ │ │ └─ config.ts - `electron-builder` dynamic configuration file
+│ └─ icons/
+├─ dist/ - Output directory used to build the package
+├─ docs/ - Project documents (optionally enabled)
+│ └─ .vitepress/
+│ │ │ └─ config.mts - VitePress configuration file used for document hosting
+│ └─ public/ - Root resource directory for VitePress documentation pages
+├─ node_modules/
+├─ src/
+│ ├─ main/ - Main (Electron) process source code
+│ │ ├─ utils/ - Main process utilities
+│ │ │ └─ Constants.ts - Main global definition
+│ │ │ └─ Menus.ts - Main global menu definition
+│ │ └─ index.ts - Main process entry point
+│ │ └─ IPCs.ts - Main process ipc handlers definition
+│ │ └─ MainRunner.ts - Main process main window processing
+│ ├─ preload/ - Preload (Electron-Vue communication bridge) process source code
+│ │ └─ index.ts
+│ ├─ renderer/ - Renderer (Vue) process source code
+│ │ ├─ components/ - Vue components collection
+│ │ │ └─ layout/ - Layout components
+│ │ ├─ locales/ - Vue i18n language resource file
+│ │ ├─ plugins/ - Vue plugin definition
+│ │ ├─ public/ - Vue static resources
+│ │ │ └─ images/
+│ │ ├─ router/ - Vue routing definition
+│ │ ├─ screens/ - Vue screen component
+│ │ │ └─ ErrorScreen.vue - Screen displayed when renderer process and routing errors occur
+│ │ │ └─ MainScreen.vue
+│ │ │ └─ SecondScreen.vue - Sample screen
+│ │ ├─ store/ - Pinia store (Global state management) definition
+│ │ ├─ utils/ - Renderer process utilities
+│ │ ├─ App.vue - Vue app's root component
+│ │ ├─ index.html - Root static index loaded by Electron renderer process
+│ └─ └─ main.ts - Renderer process entry point
+├─ tests/ - Application test configuration
+│ └─ app.spec.ts - Test file specification
+├─ .editorconfig - Editor recommended configuration file for IDE
+├─ .eslintignore - List of files to be ignored by ESLint
+├─ .eslintrc.json - ESLint rule configurations
+├─ .gitignore - List of files to not upload to Git
+├─ .prettierignore - List of files to disable Prettier file formatting
+├─ .prettierrc - Prettier rule configurations
+├─ CODE_OF_CONDUCT.md - Files used only on GitHub
+├─ LICENSE - Project license file
+├─ package.json - NodeJS package configurations
+├─ package-lock.json
+├─ playwright.config.ts - Playwright test rules configurations
+├─ tsconfig.json - TypeScript configurations
+├─ tsconfig.node.json - TypeScript configurations
+├─ vite.config.ts - Vite compiler build configurations
+└─ README.md - Files used only on GitHub
+
+
+
+
\ No newline at end of file
diff --git a/assets/Electron How To_main-and-renderer-process.md.05fc568b.js b/assets/Electron How To_main-and-renderer-process.md.05fc568b.js
new file mode 100644
index 00000000..6b0d094a
--- /dev/null
+++ b/assets/Electron How To_main-and-renderer-process.md.05fc568b.js
@@ -0,0 +1,5 @@
+import{_ as e,o as r,c as o,Q as n}from"./chunks/framework.a7175731.js";const m=JSON.parse('{"title":"Main vs Renderer Process","description":"","frontmatter":{},"headers":[],"relativePath":"Electron How To/main-and-renderer-process.md","filePath":"Electron How To/main-and-renderer-process.md"}'),s={name:"Electron How To/main-and-renderer-process.md"},t=n(`
A Vutron application is divided into code into a Main process and a Renderer process.
"Main" is the code of src/main and is mainly the process code handled by Electron. "Renderer" is the code of src/renderer, mainly for front-end rendering process like Vue.
In general, NodeJS scripts cannot be run in the renderer process. Examples include modules that contain APIs used by NodeJS, or native modules of NodeJS such as path or net, os or crypto.
Preload scripts are run before the renderer is loaded. It creates a bridge to the main process to keep the execution of NodeJS scripts in the renderer area separate and isolated for security reasons.
For secure script execution, it is recommended that the main process executes the Node scripts, and the renderer receives the execution results via messaging. This can be implemented via IPC communication.
`,11),a=[t];function c(i,d,p,l,u,h){return r(),o("div",null,a)}const f=e(s,[["render",c]]);export{m as __pageData,f as default};
diff --git a/assets/Electron How To_main-and-renderer-process.md.05fc568b.lean.js b/assets/Electron How To_main-and-renderer-process.md.05fc568b.lean.js
new file mode 100644
index 00000000..0406b10c
--- /dev/null
+++ b/assets/Electron How To_main-and-renderer-process.md.05fc568b.lean.js
@@ -0,0 +1 @@
+import{_ as e,o as r,c as o,Q as n}from"./chunks/framework.a7175731.js";const m=JSON.parse('{"title":"Main vs Renderer Process","description":"","frontmatter":{},"headers":[],"relativePath":"Electron How To/main-and-renderer-process.md","filePath":"Electron How To/main-and-renderer-process.md"}'),s={name:"Electron How To/main-and-renderer-process.md"},t=n("",11),a=[t];function c(i,d,p,l,u,h){return r(),o("div",null,a)}const f=e(s,[["render",c]]);export{m as __pageData,f as default};
diff --git a/assets/Electron How To_preload-script.md.ecc9b8b9.js b/assets/Electron How To_preload-script.md.ecc9b8b9.js
new file mode 100644
index 00000000..f92a5f56
--- /dev/null
+++ b/assets/Electron How To_preload-script.md.ecc9b8b9.js
@@ -0,0 +1 @@
+import{_ as e,o,c as t,Q as n}from"./chunks/framework.a7175731.js";const f=JSON.parse('{"title":"Preload Script","description":"","frontmatter":{},"headers":[],"relativePath":"Electron How To/preload-script.md","filePath":"Electron How To/preload-script.md"}'),r={name:"Electron How To/preload-script.md"},a=n('
The preload script in Electron.js is a secure area designed for communication between the main and renderer processes. It is typically used for IPC communication.
For compatibility and security with the latest version of Electron, we do not recommend using the old electron/remote module. If you want to utilize system events or Node scripts, it is recommended to do so in the main process, not the renderer.
Vutron's preload script is located in the src/preload folder. To create a new IPC communication channel, add the channel name to the following variable to whitelist it for communication.
mainAvailChannels: Send an event from main to renderer. (window.mainApi.send('channelName''))
rendererAvailChannels: Send an event from renderer to main. (mainWindow.webContents.send('channelName'))
When sending events from renderer to main, you access the window.mainApi object instead of ipcRenderer.send. The mainApi is the name you set in your Vutron template and can be changed.
Here are the supported functions for mainApi: (To change and modify this, you need to modify exposeInMainWorld in src/preload/index.ts).
send: Send an event to main.
receive: A listener to receive events sent by main.
invoke: Functions that can send events to main and receive data asynchronously.
',9),i=[a];function c(d,s,l,p,m,h){return o(),t("div",null,i)}const _=e(r,[["render",c]]);export{f as __pageData,_ as default};
diff --git a/assets/Electron How To_preload-script.md.ecc9b8b9.lean.js b/assets/Electron How To_preload-script.md.ecc9b8b9.lean.js
new file mode 100644
index 00000000..b1e7ab98
--- /dev/null
+++ b/assets/Electron How To_preload-script.md.ecc9b8b9.lean.js
@@ -0,0 +1 @@
+import{_ as e,o,c as t,Q as n}from"./chunks/framework.a7175731.js";const f=JSON.parse('{"title":"Preload Script","description":"","frontmatter":{},"headers":[],"relativePath":"Electron How To/preload-script.md","filePath":"Electron How To/preload-script.md"}'),r={name:"Electron How To/preload-script.md"},a=n("",9),i=[a];function c(d,s,l,p,m,h){return o(),t("div",null,i)}const _=e(r,[["render",c]]);export{f as __pageData,_ as default};
diff --git a/assets/Installation and Build_automated-testing.md.5f334d8a.js b/assets/Installation and Build_automated-testing.md.5f334d8a.js
new file mode 100644
index 00000000..dd2aba91
--- /dev/null
+++ b/assets/Installation and Build_automated-testing.md.5f334d8a.js
@@ -0,0 +1 @@
+import{_ as t,o as e,c as s,Q as a}from"./chunks/framework.a7175731.js";const m=JSON.parse('{"title":"Automated Testing","description":"","frontmatter":{"order":4},"headers":[],"relativePath":"Installation and Build/automated-testing.md","filePath":"Installation and Build/automated-testing.md"}'),o={name:"Installation and Build/automated-testing.md"},n=a('
Vutron includes automated testing. The testing framework uses Microsoft's Playwright.
Playwright is optimized for web application testing and has full support for the Electron framework. It is simple to install, requires no configuration to start testing immediately, and is cross-platform. You can learn more about Playwright here: https://github.com/microsoft/playwright
Only very simple launch and behavioral tests for the template main screen have been implemented in this template. Advanced testing will depend on the scope of your application.
Currently, the test specification file is located in the tests directory and the test results file is located in tests/results. (The built-in test specification file does not generate a separate results file.)
Once everything is configured, you can run a test with the following command.
shell
$npmruntest
$npmruntest
Before running the test, empty the build directory (dist) and compile the package for the test.
',9),r=[n];function i(l,p,c,d,h,g){return e(),s("div",null,r)}const f=t(o,[["render",i]]);export{m as __pageData,f as default};
diff --git a/assets/Installation and Build_automated-testing.md.5f334d8a.lean.js b/assets/Installation and Build_automated-testing.md.5f334d8a.lean.js
new file mode 100644
index 00000000..5fe0d253
--- /dev/null
+++ b/assets/Installation and Build_automated-testing.md.5f334d8a.lean.js
@@ -0,0 +1 @@
+import{_ as t,o as e,c as s,Q as a}from"./chunks/framework.a7175731.js";const m=JSON.parse('{"title":"Automated Testing","description":"","frontmatter":{"order":4},"headers":[],"relativePath":"Installation and Build/automated-testing.md","filePath":"Installation and Build/automated-testing.md"}'),o={name:"Installation and Build/automated-testing.md"},n=a("",9),r=[n];function i(l,p,c,d,h,g){return e(),s("div",null,r)}const f=t(o,[["render",i]]);export{m as __pageData,f as default};
diff --git a/assets/Installation and Build_build-configuration.md.4b88ae5d.js b/assets/Installation and Build_build-configuration.md.4b88ae5d.js
new file mode 100644
index 00000000..6975364f
--- /dev/null
+++ b/assets/Installation and Build_build-configuration.md.4b88ae5d.js
@@ -0,0 +1,67 @@
+import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.a7175731.js";const m=JSON.parse('{"title":"Build Configurations","description":"","frontmatter":{"order":2},"headers":[],"relativePath":"Installation and Build/build-configuration.md","filePath":"Installation and Build/build-configuration.md"}'),l={name:"Installation and Build/build-configuration.md"},e=o(`
Once the module installation is complete, you can simply build the platform package with the command below.
shell
# For Windows (.exe, .appx)
+$npmrunbuild:win
+
+# For macOS (.dmg)
+$npmrunbuild:mac
+
+# For Linux (.rpm, .deb, .snap)
+$npmrunbuild:linux
+
+# All platform (.exe, .appx, .dmg, .rpm, .deb, .snap) - see below description
+$npmrunbuild:all
# For Windows (.exe, .appx)
+$npmrunbuild:win
+
+# For macOS (.dmg)
+$npmrunbuild:mac
+
+# For Linux (.rpm, .deb, .snap)
+$npmrunbuild:linux
+
+# All platform (.exe, .appx, .dmg, .rpm, .deb, .snap) - see below description
+$npmrunbuild:all
The built packages can be found in release/{version} location.
What do I need to do for a multi-platform build?
To create a package for each OS, you must build it on the same OS. For example, a package for macOS must be built on a macOS machine.
However, you can build packages for Windows, macOS, and Linux all at once on one OS. However, this might require some preparation.
macOS is recommended if you want to build multiple platforms simultaneously on one platform. Because it can be configured with just a few very simple settings.
You can perform multi-platform builds at once with the following command. Alternatively, you can just do it for the OS you want via the individual build commands above.
shell
$npmrunbuild:all
$npmrunbuild:all
Multipass configuration may be required for Linux builds. Learn more about Multipass through the following link: https://multipass.run
Reduce bundle size by excluding development files
You can exclude files you don't need at build time by adding a file pattern to the files property of buildAssets/builder/config.ts. This will save bundle capacity.
Below is an unnecessary node_modules file pattern that can further save bundles. Depending on the project, using the rules below may cause problems, so please review it before using.
Build settings for projects that use Native Node modules
For projects that use the Native Node Module, add the following script to your package.json: When installing dependencies, electron-builder will take care of any modules that require rebuilding.
`,20),p=[e];function t(c,r,i,d,u,E){return n(),a("div",null,p)}const b=s(l,[["render",t]]);export{m as __pageData,b as default};
diff --git a/assets/Installation and Build_build-configuration.md.4b88ae5d.lean.js b/assets/Installation and Build_build-configuration.md.4b88ae5d.lean.js
new file mode 100644
index 00000000..1c8f5f26
--- /dev/null
+++ b/assets/Installation and Build_build-configuration.md.4b88ae5d.lean.js
@@ -0,0 +1 @@
+import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.a7175731.js";const m=JSON.parse('{"title":"Build Configurations","description":"","frontmatter":{"order":2},"headers":[],"relativePath":"Installation and Build/build-configuration.md","filePath":"Installation and Build/build-configuration.md"}'),l={name:"Installation and Build/build-configuration.md"},e=o("",20),p=[e];function t(c,r,i,d,u,E){return n(),a("div",null,p)}const b=s(l,[["render",t]]);export{m as __pageData,b as default};
diff --git a/assets/Installation and Build_getting-started.md.1e90b76b.js b/assets/Installation and Build_getting-started.md.1e90b76b.js
new file mode 100644
index 00000000..4313e26d
--- /dev/null
+++ b/assets/Installation and Build_getting-started.md.1e90b76b.js
@@ -0,0 +1,15 @@
+import{_ as s,o as a,c as n,Q as e}from"./chunks/framework.a7175731.js";const E=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{"order":1},"headers":[],"relativePath":"Installation and Build/getting-started.md","filePath":"Installation and Build/getting-started.md"}'),o={name:"Installation and Build/getting-started.md"},t=e(`
Applications in the development environment run through Vite.
shell
$npmrundev
$npmrundev
If your application doesn't appear after running command line commands, you may need to review if the default port is being used by another app.
Vite uses port 5173 by default.
`,20),l=[t];function p(r,c,i,d,h,y){return a(),n("div",null,l)}const u=s(o,[["render",p]]);export{E as __pageData,u as default};
diff --git a/assets/Installation and Build_getting-started.md.1e90b76b.lean.js b/assets/Installation and Build_getting-started.md.1e90b76b.lean.js
new file mode 100644
index 00000000..4378f814
--- /dev/null
+++ b/assets/Installation and Build_getting-started.md.1e90b76b.lean.js
@@ -0,0 +1 @@
+import{_ as s,o as a,c as n,Q as e}from"./chunks/framework.a7175731.js";const E=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{"order":1},"headers":[],"relativePath":"Installation and Build/getting-started.md","filePath":"Installation and Build/getting-started.md"}'),o={name:"Installation and Build/getting-started.md"},t=e("",20),l=[t];function p(r,c,i,d,h,y){return a(),n("div",null,l)}const u=s(o,[["render",p]]);export{E as __pageData,u as default};
diff --git a/assets/Installation and Build_install-local-documentation.md.883feaa4.js b/assets/Installation and Build_install-local-documentation.md.883feaa4.js
new file mode 100644
index 00000000..d7496b45
--- /dev/null
+++ b/assets/Installation and Build_install-local-documentation.md.883feaa4.js
@@ -0,0 +1,15 @@
+import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.a7175731.js";const u=JSON.parse('{"title":"Manage Local Documentation","description":"","frontmatter":{"order":5},"headers":[],"relativePath":"Installation and Build/install-local-documentation.md","filePath":"Installation and Build/install-local-documentation.md"}'),o={name:"Installation and Build/install-local-documentation.md"},e=l(`
Everything in the instructions below should be done in the docs folder.
shell
$cddocs
$cddocs
Install the relevant packages using the following commands:
shell
# via npm
+$npmi
+
+# via yarn (https://yarnpkg.com)
+$yarninstall
+
+# via pnpm (https://pnpm.io)
+$pnpmi
# via npm
+$npmi
+
+# via yarn (https://yarnpkg.com)
+$yarninstall
+
+# via pnpm (https://pnpm.io)
+$pnpmi
You can run the local server where the documents are hosted via the command below.
shell
$npmrundev
$npmrundev
`,10),p=[e];function t(c,r,i,d,y,h){return a(),n("div",null,p)}const m=s(o,[["render",t]]);export{u as __pageData,m as default};
diff --git a/assets/Installation and Build_install-local-documentation.md.883feaa4.lean.js b/assets/Installation and Build_install-local-documentation.md.883feaa4.lean.js
new file mode 100644
index 00000000..be13686c
--- /dev/null
+++ b/assets/Installation and Build_install-local-documentation.md.883feaa4.lean.js
@@ -0,0 +1 @@
+import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.a7175731.js";const u=JSON.parse('{"title":"Manage Local Documentation","description":"","frontmatter":{"order":5},"headers":[],"relativePath":"Installation and Build/install-local-documentation.md","filePath":"Installation and Build/install-local-documentation.md"}'),o={name:"Installation and Build/install-local-documentation.md"},e=l("",10),p=[e];function t(c,r,i,d,y,h){return a(),n("div",null,p)}const m=s(o,[["render",t]]);export{u as __pageData,m as default};
diff --git a/assets/Installation and Build_npm-scripts.md.4ab52913.js b/assets/Installation and Build_npm-scripts.md.4ab52913.js
new file mode 100644
index 00000000..cd95deb8
--- /dev/null
+++ b/assets/Installation and Build_npm-scripts.md.4ab52913.js
@@ -0,0 +1 @@
+import{_ as t,o as e,c as d,Q as o}from"./chunks/framework.a7175731.js";const f=JSON.parse('{"title":"NPM Scripts","description":"","frontmatter":{"title":"NPM Scripts","order":3},"headers":[],"relativePath":"Installation and Build/npm-scripts.md","filePath":"Installation and Build/npm-scripts.md"}'),r={name:"Installation and Build/npm-scripts.md"},c=o('
Used only for contributing to project documentation. Must be run from the docs directory location.
Script Name
Description
dev
Start the local document server. (For development)
build
Build a local document server. Used only for GitHub page builders.
serve
Start the local document server.
',7),i=[c];function a(n,s,l,u,p,m){return e(),d("div",null,i)}const b=t(r,[["render",a]]);export{f as __pageData,b as default};
diff --git a/assets/Installation and Build_npm-scripts.md.4ab52913.lean.js b/assets/Installation and Build_npm-scripts.md.4ab52913.lean.js
new file mode 100644
index 00000000..b3eac48f
--- /dev/null
+++ b/assets/Installation and Build_npm-scripts.md.4ab52913.lean.js
@@ -0,0 +1 @@
+import{_ as t,o as e,c as d,Q as o}from"./chunks/framework.a7175731.js";const f=JSON.parse('{"title":"NPM Scripts","description":"","frontmatter":{"title":"NPM Scripts","order":3},"headers":[],"relativePath":"Installation and Build/npm-scripts.md","filePath":"Installation and Build/npm-scripts.md"}'),r={name:"Installation and Build/npm-scripts.md"},c=o("",7),i=[c];function a(n,s,l,u,p,m){return e(),d("div",null,i)}const b=t(r,[["render",a]]);export{f as __pageData,b as default};
diff --git a/assets/Project Structures_pre-configured-components.md.a5f58fd1.js b/assets/Project Structures_pre-configured-components.md.a5f58fd1.js
new file mode 100644
index 00000000..1dfd16f8
--- /dev/null
+++ b/assets/Project Structures_pre-configured-components.md.a5f58fd1.js
@@ -0,0 +1 @@
+import{_ as e,o as r,c as t,Q as a}from"./chunks/framework.a7175731.js";const m=JSON.parse('{"title":"Pre-configured Components","description":"","frontmatter":{"order":2},"headers":[],"relativePath":"Project Structures/pre-configured-components.md","filePath":"Project Structures/pre-configured-components.md"}'),o={name:"Project Structures/pre-configured-components.md"},n=a('
=0)c=r.activeElement;else{var f=i.tabbableGroups[0],p=f&&f.firstTabbableNode;c=p||h("fallbackFocus")}if(!c)throw new Error("Your focus-trap needs to have at least one focusable element");return c},v=function(){if(i.containerGroups=i.containers.map(function(c){var f=vr(c,a.tabbableOptions),p=pr(c,a.tabbableOptions),w=f.length>0?f[0]:void 0,T=f.length>0?f[f.length-1]:void 0,O=p.find(function(b){return se(b)}),P=p.slice().reverse().find(function(b){return se(b)}),g=!!f.find(function(b){return ie(b)>0});return{container:c,tabbableNodes:f,focusableNodes:p,posTabIndexesFound:g,firstTabbableNode:w,lastTabbableNode:T,firstDomTabbableNode:O,lastDomTabbableNode:P,nextTabbableNode:function(z){var G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,j=f.indexOf(z);return j<0?G?p.slice(p.indexOf(z)+1).find(function(J){return se(J)}):p.slice(0,p.indexOf(z)).reverse().find(function(J){return se(J)}):f[j+(G?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(c){return c.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(c){return c.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},y=function F(c){if(c!==!1&&c!==r.activeElement){if(!c||!c.focus){F(d());return}c.focus({preventScroll:!!a.preventScroll}),i.mostRecentlyFocusedNode=c,wr(c)&&c.select()}},m=function(c){var f=h("setReturnFocus",c);return f||(f===!1?!1:c)},E=function(c){var f=c.target,p=c.event,w=c.isBackward,T=w===void 0?!1:w;f=f||xe(p),v();var O=null;if(i.tabbableGroups.length>0){var P=l(f,p),g=P>=0?i.containerGroups[P]:void 0;if(P<0)T?O=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:O=i.tabbableGroups[0].firstTabbableNode;else if(T){var b=lt(i.tabbableGroups,function(U){var H=U.firstTabbableNode;return f===H});if(b<0&&(g.container===f||De(f,a.tabbableOptions)&&!se(f,a.tabbableOptions)&&!g.nextTabbableNode(f,!1))&&(b=P),b>=0){var z=b===0?i.tabbableGroups.length-1:b-1,G=i.tabbableGroups[z];O=ie(f)>=0?G.lastTabbableNode:G.lastDomTabbableNode}else ye(p)||(O=g.nextTabbableNode(f,!1))}else{var j=lt(i.tabbableGroups,function(U){var H=U.lastTabbableNode;return f===H});if(j<0&&(g.container===f||De(f,a.tabbableOptions)&&!se(f,a.tabbableOptions)&&!g.nextTabbableNode(f))&&(j=P),j>=0){var J=j===i.tabbableGroups.length-1?0:j+1,B=i.tabbableGroups[J];O=ie(f)>=0?B.firstTabbableNode:B.firstDomTabbableNode}else ye(p)||(O=g.nextTabbableNode(f))}}else O=h("fallbackFocus");return O},x=function(c){var f=xe(c);if(!(l(f,c)>=0)){if(ve(a.clickOutsideDeactivates,c)){s.deactivate({returnFocus:a.returnFocusOnDeactivate});return}ve(a.allowOutsideClick,c)||c.preventDefault()}},C=function(c){var f=xe(c),p=l(f,c)>=0;if(p||f instanceof Document)p&&(i.mostRecentlyFocusedNode=f);else{c.stopImmediatePropagation();var w,T=!0;if(i.mostRecentlyFocusedNode)if(ie(i.mostRecentlyFocusedNode)>0){var O=l(i.mostRecentlyFocusedNode),P=i.containerGroups[O].tabbableNodes;if(P.length>0){var g=P.findIndex(function(b){return b===i.mostRecentlyFocusedNode});g>=0&&(a.isKeyForward(i.recentNavEvent)?g+1
Vutron is a preconfigured template for developing Electron cross-platform desktop apps. It uses Vue 3 and allows you to build a fast development environment with little effort.
Vutron is a preconfigured template for developing Electron cross-platform desktop apps. It uses Vue 3 and allows you to build a fast development environment with little effort.
+
+
+
+
\ No newline at end of file
diff --git a/vutron-logo.webp b/vutron-logo.webp
new file mode 100644
index 00000000..bedf6142
Binary files /dev/null and b/vutron-logo.webp differ
diff --git a/vutron-sample.webp b/vutron-sample.webp
new file mode 100644
index 00000000..d679d61b
Binary files /dev/null and b/vutron-sample.webp differ