diff --git a/.github/workflows/configurator.yml b/.github/workflows/configurator.yml index f324926..930cc37 100644 --- a/.github/workflows/configurator.yml +++ b/.github/workflows/configurator.yml @@ -2,17 +2,17 @@ name: Configurator deployer on: push: - branches: [ main ] + branches: [main] workflow_dispatch: jobs: build: runs-on: ${{ matrix.os }} - + strategy: matrix: os: [ubuntu-latest] - node: [14] + node: [20] defaults: run: @@ -20,10 +20,10 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Setup node env - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} @@ -34,7 +34,6 @@ jobs: run: npm run generate - name: Deploy - uses: peaceiris/actions-gh-pages@v3 + uses: JamesIves/github-pages-deploy-action@v4 with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./configurator/dist + folder: ./configurator/.output/public diff --git a/README.md b/README.md index 744fa2b..8174d37 100644 --- a/README.md +++ b/README.md @@ -1,134 +1,162 @@ -# MISS-ELS: Matsn0w's Incredible Server-Sided ELS +# 🚨 MISS-ELS: Matsn0w's Incredible Server-Sided ELS ![MISS-ELS](assets/MISS-ELS_Logo.png) MISS-ELS is an all-in-one configurable Emergency Lighting System (ELS) for the popular Grand Theft Auto V (GTA V) multiplayer client called FiveM. -The server-side element restricts controls to the driver (and optionally his passengers) and allows you to activate primary, secondary and warning lighting each with individually configurable key-bindings. Welcome to the best server-sided Emergency Lighting System for FiveM! +The server-side element restricts controls to the driver (and optionally his passengers) and allows you to activate primary, secondary and warning lighting each with individually configurable key-bindings. + +Welcome to the best server-sided Emergency Lighting System for FiveM! Oh, and you might ask yourself where all the 'Els' or 'Miss Els' jokes come from. It's a [meme](https://youtu.be/X-PgamXIWRQ?t=75). Loes is calling her grandchild Els. Els? Els! ELS! -## Key Features +## ⚡ Key Features + +MISS ELS is very different compared to most other ELS resources! These are some key features: -* Sirens and lights synced across the entire server -* Customizable light patterns per vehicle -* Use native game sirens or use your own with [WMServerSirens](https://github.com/Walsheyy/WMServerSirens) -* A simple yet comprehensive configuration -* Support for 3 different light stages -* Support for up to 4 different sirens per vehicle -* Optional light reflections around the vehicle -* Indicator controls -* Customizable keybinds -* [A simple VCF configuration wizard](https://matsn0w.github.io/MISS-ELS) +- Fully customizable light patterns +- Support for up to 36 independent light sources (12 extras + 26 miscs) +- Use native game sirens or use your own with [WMServerSirens](https://github.com/Walsheyy/WMServerSirens) +- Optional light reflections around the vehicle +- [A VCF configuration wizard](https://matsn0w.github.io/MISS-ELS) to make your life easier -*...and more!* +Furthermore... -## Requirements +- Sirens and lights synced across the entire server +- Support for 3 different light stages +- Support for up to 4 different sirens per vehicle +- Indicator controls +- Flashing high beams +- Stop sign beeping +- Customizable personal keybinds +- ... + +## 🧩 Requirements You need to have the following resources installed on your server: -* [FiveM baseevents](https://docs.fivem.net/docs/resources/baseevents) (shipped by default) -* [NativeUILua](https://github.com/FrazzIe/NativeUILua/releases/latest) +- [FiveM baseevents](https://docs.fivem.net/docs/resources/baseevents) (shipped by default) +- [WarMenu](https://github.com/warxander/warmenu) -## Installation and Configuration +## ⚙️ Installation and Configuration See the instructions in the [documentation](docs/README.md)! -## Vehicle Configuration Files +## 🚓 Vehicle Configuration Files + +If you have any existing VCF files from the [original author](https://github.com/InfImpSolutions) of this resource, then you'll probably be fine. The XML should be fully backwards compatible. -If you have any existing VCF files from the original author of this resource, then you'll probably be fine. The XML should be fully backwards compatible. If you have a VCF from any other resource, that'll most likely not work. +**⚠️ If you have a VCF from any other resource, that'll most likely not work.** -In both cases, it's probably best to re-create them by either writing them yourself OR... use my convient configuration GUI! Using this tool, you can easily generate configuration files for your vehicles. You can find it here: +In both cases, it's probably best to re-create them by either writing them yourself OR... use the convient configuration GUI! Using this tool, you can easily generate configuration files for your vehicles. You can find it here: [![Open VCF Configurator](https://dabuttonfactory.com/button.png?t=MISS+ELS+VCF+Configurator&f=Open+Sans-Bold&ts=16&tc=fff&hp=45&vp=20&c=10&bgt=unicolored&bgc=1a37a8&be=1&bs=1&bc=fff)](https://matsn0w.github.io/MISS-ELS) -## Questions or problems? +## 💭 Questions or problems? -Please read the [documentation](docs/README.md) first and check the [Q&A section](https://github.com/matsn0w/IIS-EmergencyLS-ELS-FiveM/discussions/categories/q-a) on Github if your question has already been asked. It probably is! +👉 Please read the [documentation](docs/README.md) first and check the [Q&A section](https://github.com/matsn0w/IIS-EmergencyLS-ELS-FiveM/discussions/categories/q-a) on Github if your question has already been asked. It probably is! -Didn't find and answer? Then feel free to [start a new topic](https://github.com/matsn0w/IIS-EmergencyLS-ELS-FiveM/discussions/new?category=q-a). The community is here to help you! +👉 Didn't find and answer? Then feel free to [start a new topic](https://github.com/matsn0w/IIS-EmergencyLS-ELS-FiveM/discussions/new?category=q-a). The community is here to help you! You can also join the official [MISS ELS Discord server](https://matsn0w.dev/discord). -Found a bug? Please [make an issue](https://github.com/matsn0w/MISS-ELS/issues/new)! +👉 Found a bug? Please [make an issue](https://github.com/matsn0w/MISS-ELS/issues/new)! -## Roadmap +## 🛣️ Roadmap -You can take a look at the [Milestones](https://github.com/matsn0w/MISS-ELS/milestones) for this project to see what's coming to MISS ELS! +👀 You can take a look at the [Milestones](https://github.com/matsn0w/MISS-ELS/milestones) for this project to see what's coming to MISS ELS! -Feel free to [create an issue](https://github.com/matsn0w/MISS-ELS/issues/new) if you have an idea. +💡 Feel free to [create an issue](https://github.com/matsn0w/MISS-ELS/issues/new) if you have an idea. -## Changelog +## ❤️ Credits -### v2.1.1 +This resource wasn't possible without these libraries: -#### Resource +- [semver.lua](https://github.com/kikito/semver.lua) by _kikito_ +- [SLAXML](https://github.com/Phrogz/SLAXML) by _Phrogz_ -* Fixed the automatic directory scanner not working on Windows based servers +### Special thanks -### v2.1.0 +- [@ImperiousTT](https://github.com/ImperiousTT) - for all his help in setting up this resource, especially writing documentation, creating the logo and providing support +- [@JustinRijsdijk](https://github.com/JustinRijsdijk) 🐔🎩 - for all his help in many areas, especially the VCF Configurator + +_...and everyone else who contributed to the development of this resource - it would never have been this good without you! ❤️_ + +## 📃 Changelog + +### v2.2.0 #### Resource -* Added automatic scanning for VCF's -* Added 'missing zero' detection in the XML parser -* Fixed a bunch of errors thrown in the console when 'others' activated their lights +- Added flashing high beams (#89, #118) +- Added stop sign beeping (#101) +- Added personal keybinds (#109) +- Added misc support (#152) +- Improved documentation (#112) +- Replaced NativeUI with WarMenu (#120) + +...and some minor changes (#114, #115, #116, #118) #### Configurator -* Added importing of existing VCF's -* Fixed missing zeros in XML output +- Added dark mode +- Improved UI/UX +- Updated configurator to match new features -### v2.0.1 +### v2.1.1 #### Resource -* Fixed a bug in the update checking script +- Fixed the automatic directory scanner not working on Windows based servers -### v2.0.0 +### v2.1.0 #### Resource -* Added configuration option to allow passengers to control the sirens -* Added configuration option to customize indicator controls -* Added configuration option to customize environmental light reflections -* Added new documentation -* Added `/extra ` command to quickly toggle a vehicle extra -* Added an option to control the sirens regardless of the light stage -* Added a in-game menu for static extra's -* Added automatic check for updates -* Added some documentation -* VCF: Added `AllowUse` flag to enable or disable the main horn -* VCF: Added `SoundSet` flag to specify a custom sound for the main horn -* VCF: Added new `STATIC` section -* VCF: `IsElsControlled` is now actually respected -* VCF: It's no longer needed to specify flash numbers within a pattern (Flash01, Flash02, etc. can now be Flash Flash Flash!) -* Fixed `AllowEnvLight` setting not doing anything -* Fixed `AudioString` on MainHorn not doing anything -* Fixed some weird keybind behaviour -* Fixed crash on invalid VCF syntax -* Removed fallback to default patterns when no VCF is present for an ELS-enabled vehicle -* Organized file structure -* Updated SLAXML parser to version 0.8 -* Lots of code improvements and optimizations +- Added automatic scanning for VCF's +- Added 'missing zero' detection in the XML parser +- Fixed a bunch of errors thrown in the console when 'others' activated their lights #### Configurator -* Added a VCF configuration GUI +- Added importing of existing VCF's +- Fixed missing zeros in XML output -### v1.2.0 - v1.3.0 +### v2.0.1 -Original releases from [Infinite Impact Solutions](https://github.com/InfImpSolutions) +#### Resource -## Video Demonstration (+ Installation) +- Fixed a bug in the update checking script -*Note that this video was made for version 1.x of this resource.* +### v2.0.0 -[![EmergencyLS | FiveM Resource | Teaser/Trailer](https://res.cloudinary.com/marcomontalbano/image/upload/v1641479116/video_to_markdown/images/youtube--MZnO9eIjFWA-c05b58ac6eb4c4700831b2b3070cd403.jpg)](https://www.youtube.com/watch?v=MZnO9eIjFWA "EmergencyLS | FiveM Resource | Teaser/Trailer") +#### Resource -## Credits +- Added configuration option to allow passengers to control the sirens +- Added configuration option to customize indicator controls +- Added configuration option to customize environmental light reflections +- Added new documentation +- Added `/extra ` command to quickly toggle a vehicle extra +- Added an option to control the sirens regardless of the light stage +- Added a in-game menu for static extra's +- Added automatic check for updates +- Added some documentation +- VCF: Added `AllowUse` flag to enable or disable the main horn +- VCF: Added `SoundSet` flag to specify a custom sound for the main horn +- VCF: Added new `STATIC` section +- VCF: `IsElsControlled` is now actually respected +- VCF: It's no longer needed to specify flash numbers within a pattern (Flash01, Flash02, etc. can now be Flash Flash Flash!) +- Fixed `AllowEnvLight` setting not doing anything +- Fixed `AudioString` on MainHorn not doing anything +- Fixed some weird keybind behaviour +- Fixed crash on invalid VCF syntax +- Removed fallback to default patterns when no VCF is present for an ELS-enabled vehicle +- Organized file structure +- Updated SLAXML parser to version 0.8 +- Lots of code improvements and optimizations -This resource wasn't possible without these libraries: +#### Configurator -* [semver.lua](https://github.com/kikito/semver.lua) by *kikito* -* [SLAXML](https://github.com/Phrogz/SLAXML) by *Phrogz* +- Added a VCF configuration GUI -*Special thanks to everyone who contributed to the development of this resource - it would never have been this good without you!* +### v1.2.0 - v1.3.0 + +Original releases from [Infinite Impact Solutions](https://github.com/InfImpSolutions) diff --git a/configurator/.editorconfig b/configurator/.editorconfig deleted file mode 100644 index 5d12634..0000000 --- a/configurator/.editorconfig +++ /dev/null @@ -1,13 +0,0 @@ -# editorconfig.org -root = true - -[*] -indent_style = space -indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.md] -trim_trailing_whitespace = false diff --git a/configurator/.eslintrc.js b/configurator/.eslintrc.js deleted file mode 100644 index 9e383e1..0000000 --- a/configurator/.eslintrc.js +++ /dev/null @@ -1,19 +0,0 @@ -module.exports = { - root: true, - env: { - browser: true, - node: true - }, - parserOptions: { - parser: '@babel/eslint-parser', - requireConfigFile: false - }, - extends: [ - '@nuxtjs', - 'plugin:nuxt/recommended' - ], - plugins: [ - ], - // add your custom rules here - rules: {} -} diff --git a/configurator/.gitignore b/configurator/.gitignore index e8f682b..4a7f73a 100644 --- a/configurator/.gitignore +++ b/configurator/.gitignore @@ -1,90 +1,24 @@ -# Created by .ignore support plugin (hsz.mobi) -### Node template -# Logs -/logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# TypeScript v1 declaration files -typings/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env - -# parcel-bundler cache (https://parceljs.org/) -.cache - -# next.js build output -.next - -# nuxt.js build output +# Nuxt dev/build outputs +.output +.data .nuxt - -# Nuxt generate +.nitro +.cache dist -# vuepress build output -.vuepress/dist - -# Serverless directories -.serverless - -# IDE / Editor -.idea +# Node dependencies +node_modules -# Service worker -sw.* +# Logs +logs +*.log -# macOS +# Misc .DS_Store +.fleet +.idea -# Vim swap files -*.swp +# Local env files +.env +.env.* +!.env.example diff --git a/configurator/.npmrc b/configurator/.npmrc new file mode 100644 index 0000000..cf04042 --- /dev/null +++ b/configurator/.npmrc @@ -0,0 +1,2 @@ +shamefully-hoist=true +strict-peer-dependencies=false diff --git a/configurator/README.md b/configurator/README.md index 1334515..0496ac8 100644 --- a/configurator/README.md +++ b/configurator/README.md @@ -1,69 +1,39 @@ -# miss-els-vcf-configurator +# MISS ELS VCF Configurator -## Build Setup +Look at the [Nuxt 3 documentation](https://nuxt.com/docs/getting-started/introduction) to learn more. -```bash -# install dependencies -$ npm install - -# serve with hot reload at localhost:3000 -$ npm run dev +## Setup -# build for production and launch server -$ npm run build -$ npm run start +Make sure to install the dependencies: -# generate static project -$ npm run generate +```bash +# npm +npm install ``` -For detailed explanation on how things work, check out the [documentation](https://nuxtjs.org). - -## Special Directories - -You can create the following extra directories, some of which have special behaviors. Only `pages` is required; you can delete them if you don't want to use their functionality. - -### `assets` - -The assets directory contains your uncompiled assets such as Stylus or Sass files, images, or fonts. - -More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/assets). - -### `components` - -The components directory contains your Vue.js components. Components make up the different parts of your page and can be reused and imported into your pages, layouts and even other components. - -More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/components). - -### `layouts` - -Layouts are a great help when you want to change the look and feel of your Nuxt app, whether you want to include a sidebar or have distinct layouts for mobile and desktop. +## Development Server -More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/layouts). +Start the development server on `http://localhost:3000`: +```bash +# npm +npm run dev +``` -### `pages` - -This directory contains your application views and routes. Nuxt will read all the `*.vue` files inside this directory and setup Vue Router automatically. - -More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/get-started/routing). - -### `plugins` - -The plugins directory contains JavaScript plugins that you want to run before instantiating the root Vue.js Application. This is the place to add Vue plugins and to inject functions or constants. Every time you need to use `Vue.use()`, you should create a file in `plugins/` and add its path to plugins in `nuxt.config.js`. - -More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/plugins). - -### `static` - -This directory contains your static files. Each file inside this directory is mapped to `/`. +## Production -Example: `/static/robots.txt` is mapped as `/robots.txt`. +Build the application for production: -More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/static). +```bash +# npm +npm run build +``` -### `store` +Locally preview production build: -This directory contains your Vuex store files. Creating a file in this directory automatically activates Vuex. +```bash +# npm +npm run preview +``` -More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/store). +Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information. diff --git a/configurator/app.vue b/configurator/app.vue new file mode 100644 index 0000000..f8eacfa --- /dev/null +++ b/configurator/app.vue @@ -0,0 +1,5 @@ + diff --git a/configurator/assets/css/main.scss b/configurator/assets/css/main.scss index 84ab727..9946c7d 100644 --- a/configurator/assets/css/main.scss +++ b/configurator/assets/css/main.scss @@ -3,71 +3,80 @@ @tailwind utilities; body { - @apply bg-gray-100; + @apply bg-gray-100 dark:bg-gray-900; + + h1 { + @apply dark:text-gray-300; + } } .card { - @apply px-3 py-1 my-6 bg-white rounded-md shadow-lg; -} + @apply p-2 my-6 bg-white rounded-md shadow-lg dark:bg-gray-800; -.card h2 { - @apply font-semibold text-gray-800; + h2 { + @apply font-semibold text-gray-800 dark:text-gray-300; + } + + h3 { + @apply font-semibold text-gray-800 dark:text-gray-300; + } } button { - @apply px-2 py-1 bg-blue-500 text-white rounded-md shadow; + @apply px-2 py-1 text-white text-sm rounded shadow dark:bg-gray-800 dark:text-gray-300; } -thead { - @apply font-semibold uppercase text-gray-400 bg-gray-50; +button[disabled] { + @apply opacity-50 cursor-not-allowed; } -tbody { - @apply divide-y divide-gray-100; -} +table { + thead { + @apply font-semibold uppercase text-gray-400 bg-gray-50 dark:bg-gray-700; // Adjust table header for dark mode + } -th, td { - @apply p-2 align-middle; -} + tbody { + @apply divide-y divide-gray-100 dark:divide-gray-700; // Adjust table body for dark mode + } + + th, + td { + @apply p-2 align-middle dark:text-gray-300; + } -th { - @apply font-semibold text-left; + th { + @apply font-semibold text-left; + } } label { - @apply block text-gray-500 font-bold md:text-right mb-1 md:mb-0 pr-4; + @apply block text-gray-500 dark:text-gray-300 font-semibold md:text-right mb-1 md:mb-0 pr-4; } -input[type=text], input[type=number] { - @apply bg-gray-200 appearance-none border-2 border-gray-200 rounded w-full p-2 text-gray-700 leading-tight align-middle; +p { + @apply text-gray-500 dark:text-gray-300; } -input[type=text]:focus, input[type=number]:focus { - @apply focus:outline-none focus:bg-white focus:border-blue-500; +input[type="text"], +input[type="number"], +select { + @apply form-input block w-full px-2 py-1 rounded bg-gray-200 text-gray-700 border-2 border-gray-200 focus:bg-white focus:border-blue-500 focus:outline-none dark:bg-gray-800 dark:border-gray-800 dark:text-white; + + .card & { + @apply bg-gray-100 border-gray-100 dark:bg-gray-900 dark:border-gray-900; + } } select { - @apply - form-select appearance-none - block w-full - px-3 py-1.5 - text-base font-normal text-gray-700 - bg-white bg-clip-padding bg-no-repeat - border border-solid border-gray-300 rounded - transition ease-in-out - m-0 - focus:text-gray-700 focus:bg-white focus:border-blue-600 focus:outline-none; -} - -.form-select { - -moz-padding-start: calc(.75rem - 3px); + @extend select; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"); - background-position: right .75rem center; + background-position: right 0.75rem center; background-size: 16px 12px; + background-repeat: no-repeat; } -input[type='checkbox'] { - @apply form-checkbox h-5 w-5 mr-2 text-blue-500 rounded; +input[type="checkbox"] { + @apply form-checkbox h-5 w-5 rounded bg-gray-100 border border-gray-100 checked:bg-blue-500 dark:bg-gray-900 dark:border-gray-900; } .cb-label { @@ -75,44 +84,57 @@ input[type='checkbox'] { } .blue { - @apply text-white bg-blue-500 #{!important}; + @apply bg-blue-500 border-blue-500 #{!important}; + + &.outlined { + @apply border-blue-500 text-blue-500; + } } .amber { @apply text-white bg-yellow-500 #{!important}; + + &.outlined { + @apply border-yellow-500 text-yellow-500; + } } .red { @apply text-white bg-red-500 #{!important}; + + &.outlined { + @apply border-red-500 text-red-500; + } } .green { @apply text-white bg-green-500 #{!important}; + + &.outlined { + @apply border-green-500 text-green-500; + } } .white { @apply text-black bg-white border-2 border-gray-500 #{!important}; + + &.outlined { + @apply border-black text-black; + } } .nocolor { @apply text-white bg-gray-500 #{!important}; } -.import-button { - position: relative; - overflow: hidden; - display: inline-block; +.outlined { + @apply border; - /* Fancy button looking */ - border: 2px solid black; - border-radius: 5px; - padding: 8px 12px; - cursor: pointer; -} -.import-button input { - position: absolute; - top: 0; - left: 0; - z-index: -1; - opacity: 0; + &:hover { + @apply text-white; + } + + &:not(:hover) { + @apply bg-transparent dark:bg-transparent #{!important}; + } } diff --git a/configurator/components/LocalStorageButton.vue b/configurator/components/LocalStorageButton.vue new file mode 100644 index 0000000..6fe4d3d --- /dev/null +++ b/configurator/components/LocalStorageButton.vue @@ -0,0 +1,43 @@ + + + \ No newline at end of file diff --git a/configurator/components/extras.vue b/configurator/components/extras.vue deleted file mode 100644 index 9f56fcb..0000000 --- a/configurator/components/extras.vue +++ /dev/null @@ -1,71 +0,0 @@ - - - - - diff --git a/configurator/components/importButton.vue b/configurator/components/importButton.vue index 3b92e5a..b80a165 100644 --- a/configurator/components/importButton.vue +++ b/configurator/components/importButton.vue @@ -1,21 +1,21 @@ - diff --git a/configurator/components/lights.vue b/configurator/components/lights.vue new file mode 100644 index 0000000..96ea2d8 --- /dev/null +++ b/configurator/components/lights.vue @@ -0,0 +1,103 @@ + + + diff --git a/configurator/components/patterns.vue b/configurator/components/patterns.vue index af92642..39ad373 100644 --- a/configurator/components/patterns.vue +++ b/configurator/components/patterns.vue @@ -4,49 +4,151 @@

Patterns

-
+

{{ pattern.name }}

- + + + +
- + + + + + + + + + + + - - + + @@ -57,54 +159,129 @@ - diff --git a/configurator/components/sounds.vue b/configurator/components/sounds.vue index 02a9c81..6e4516d 100644 --- a/configurator/components/sounds.vue +++ b/configurator/components/sounds.vue @@ -1,13 +1,22 @@ - diff --git a/configurator/components/statics.vue b/configurator/components/statics.vue index 08ca9b1..245afb1 100644 --- a/configurator/components/statics.vue +++ b/configurator/components/statics.vue @@ -1,39 +1,46 @@
Duration ExtrasMiscs
+ Preview + + {{ extra?.id }} + + {{ misc.id }} + +
+ + + + + +
+
- +
+ + + {{ extra.id }} {{ extra.id }} + class="light" + :class=" + isLightToggled(flash, misc) ? getLightColor(misc) : '' + " + @click="toggleLight(pattern, flash, misc)" + >{{ misc.id }} -