mirror of
https://github.com/luc-github/ESP3D-Configurator.git
synced 2026-02-20 01:11:24 +01:00
Early code base
Note: preact/spectre are not yet defined
This commit is contained in:
12
.github/FUNDING.yml
vendored
Normal file
12
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
#github: luc-github
|
||||
#patreon: # Replace with a single Patreon username
|
||||
#open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: ESP3D # Replace with a single Ko-fi username
|
||||
#tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
#community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: ESP3D
|
||||
#issuehunt: # Replace with a single IssueHunt username
|
||||
#otechie: # Replace with a single Otechie username
|
||||
custom: https://www.paypal.com/donate/?hosted_button_id=FQL59C749A78L
|
||||
34
.github/ISSUE_TEMPLATE/bug-report---problem.md
vendored
Normal file
34
.github/ISSUE_TEMPLATE/bug-report---problem.md
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
name: Bug report / Problem
|
||||
about: Create a report to help us improve and help you
|
||||
title: "[BUG]<Enter comprehensive title>"
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
|
||||
<!--A clear and concise description of what the bug is.-->
|
||||
|
||||
**To Reproduce**
|
||||
|
||||
<!--Steps to reproduce the behavior:-->
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
|
||||
<!--A clear and concise description of what you expected to happen.-->
|
||||
|
||||
**Screenshots**
|
||||
|
||||
<!--If applicable, add screenshots to help explain your problem.-->
|
||||
|
||||
|
||||
**Additional context**
|
||||
|
||||
<!--Add any other context about the problem here.
|
||||
Wiring, decoded stack, etc...-->
|
||||
11
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
11
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Wiki
|
||||
url: https://github.com/luc-github/ESP3D/wiki
|
||||
about: The Wiki has lot of informations.
|
||||
- name: F.A.Q. (Frequent asked questions)
|
||||
url: https://github.com/luc-github/ESP3D/issues?utf8=%E2%9C%93&q=label%3AFAQ
|
||||
about: The usual questions / problems meet and their solution
|
||||
- name: Discord chat
|
||||
url: https://discord.gg/Z4ujTwE
|
||||
about: Join the discord for support and discussion.
|
||||
24
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
24
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: "[FEATURE REQUEST]<Enter comprehensive title>"
|
||||
labels: Feature request
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
|
||||
<!--A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]-->
|
||||
|
||||
**Describe the solution you'd like**
|
||||
|
||||
<!--A clear and concise description of what you want to happen.-->
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
|
||||
<!--A clear and concise description of any alternative solutions or features you've considered.-->
|
||||
|
||||
**Additional context**
|
||||
|
||||
<!--Add any other context or screenshots about the feature request here.-->
|
||||
11
.github/ISSUE_TEMPLATE/question-template.md
vendored
Normal file
11
.github/ISSUE_TEMPLATE/question-template.md
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
name: Question template
|
||||
about: Ask your question, if not bug neither feature request, neither an error you
|
||||
meet.
|
||||
title: "[Question]<Enter comprehensive title>"
|
||||
labels: question
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
What is your question ?
|
||||
49
.github/stale.yml
vendored
Normal file
49
.github/stale.yml
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
# Configuration for probot-stale - https://github.com/probot/stale
|
||||
|
||||
# Number of days of inactivity before an Issue or Pull Request becomes stale
|
||||
daysUntilStale: 21
|
||||
|
||||
# Number of days of inactivity before an Issue or Pull Request with the stale label is closed.
|
||||
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
|
||||
daysUntilClose: 3
|
||||
|
||||
# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled)
|
||||
onlyLabels: []
|
||||
|
||||
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
|
||||
exemptLabels:
|
||||
- pinned
|
||||
- security
|
||||
- "Under Investigation"
|
||||
- "Work in progress"
|
||||
- Planned
|
||||
- "Feedback Welcome"
|
||||
|
||||
# Set to true to ignore issues in a project (defaults to false)
|
||||
exemptProjects: false
|
||||
|
||||
# Set to true to ignore issues in a milestone (defaults to false)
|
||||
exemptMilestones: false
|
||||
|
||||
# Set to true to ignore issues with an assignee (defaults to false)
|
||||
exemptAssignees: false
|
||||
|
||||
# Label to use when marking as stale
|
||||
staleLabel: stale
|
||||
|
||||
# Comment to post when marking as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs. Thank you
|
||||
for your contributions.
|
||||
# Comment to post when removing the stale label.
|
||||
unmarkComment: >
|
||||
This issue has been removed from the stale queue. Please ensure activity to keep it openin the future.
|
||||
# Comment to post when closing a stale Issue or Pull Request.
|
||||
closeComment: >
|
||||
This stale issue has been automatically closed. Thank you for your contributions.
|
||||
# Limit the number of actions per hour, from 1-30. Default is 30
|
||||
limitPerRun: 30
|
||||
|
||||
# Limit to only `issues` or `pulls`
|
||||
only: issues
|
||||
13
.github/workflows/greetings.yml
vendored
Normal file
13
.github/workflows/greetings.yml
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
name: Greetings
|
||||
|
||||
on: [pull_request, issues]
|
||||
|
||||
jobs:
|
||||
greeting:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/first-interaction@v1
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
issue-message: 'Thank your for submiting'
|
||||
pr-message: 'Thank you for your contribution, be patient, review can take a time.'
|
||||
26
.github/workflows/lock.yml
vendored
Normal file
26
.github/workflows/lock.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
name: 'Lock threads'
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
jobs:
|
||||
lock:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: dessant/lock-threads@v2
|
||||
with:
|
||||
github-token: ${{ github.token }}
|
||||
issue-lock-inactive-days: '10'
|
||||
issue-exclude-created-before: ''
|
||||
issue-exclude-labels: 'planned'
|
||||
issue-lock-labels: 'outdated'
|
||||
issue-lock-comment: 'This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.'
|
||||
issue-lock-reason: 'resolved'
|
||||
pr-lock-inactive-days: '365'
|
||||
pr-exclude-created-before: ''
|
||||
pr-exclude-labels: ''
|
||||
pr-lock-labels: ''
|
||||
pr-lock-comment: ''
|
||||
pr-lock-reason: 'resolved'
|
||||
process-only: 'issues'
|
||||
27
.github/workflows/wiki.yml
vendored
Normal file
27
.github/workflows/wiki.yml
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
name: Deploy Wiki
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
# Trigger only when wiki directory changes
|
||||
- 'wiki/**'
|
||||
branches:
|
||||
# And only on main branch
|
||||
- main
|
||||
|
||||
jobs:
|
||||
deploy-wiki:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Push Wiki Changes
|
||||
uses: Andrew-Chen-Wang/github-wiki-action@v3
|
||||
env:
|
||||
# Make sure you have that / at the end. We use rsync
|
||||
# WIKI_DIR's default is wiki/
|
||||
WIKI_DIR: wiki/
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GH_MAIL: ${{ secrets.MY_EMAIL }}
|
||||
GH_NAME: ${{ github.repository_owner }}
|
||||
EXCLUDED_FILES: "a/ b.md"
|
||||
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
node_modules
|
||||
.vscode
|
||||
build
|
||||
18
.prettierrc
Normal file
18
.prettierrc
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"trailingComma": "es5",
|
||||
"tabWidth": 4,
|
||||
"semi": false,
|
||||
"overrides": [
|
||||
{
|
||||
"files": "*.js",
|
||||
"options": {
|
||||
"parser": "babel"
|
||||
}
|
||||
},
|
||||
{"files": "*.scss",
|
||||
"options": {
|
||||
"parser": "css"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
16
Notes.txt
Normal file
16
Notes.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
* Fix dev websocket server cannot work under Linux
|
||||
> sudo apt-get install libcap2-bin
|
||||
> sudo setcap cap_net_bind_service=+ep `readlink -f \`which node\``
|
||||
|
||||
* Fix ‘ and “ need space to be displayed under Linux
|
||||
> setxkbmap -layout us
|
||||
|
||||
* Fix for sass div warning
|
||||
>npm install -g sass-migrator
|
||||
>sass-migrator division **/*.scss
|
||||
Note:
|
||||
on windows need change script policy first:
|
||||
> Get-ExecutionPolicy -List
|
||||
>Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
||||
then when done, put back default (the one got by initial Get-ExecutionPolicy -List)
|
||||
>Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope CurrentUser
|
||||
40
config/server.js
Normal file
40
config/server.js
Normal file
@@ -0,0 +1,40 @@
|
||||
const express = require("express");
|
||||
const chalk = require("chalk");
|
||||
let path = require("path");
|
||||
const fs = require("fs");
|
||||
const port = 8080;
|
||||
/*
|
||||
* Web Server for development
|
||||
*/
|
||||
const wscolor = chalk.cyan;
|
||||
const expresscolor = chalk.green;
|
||||
const commandcolor = chalk.white;
|
||||
const app = express();
|
||||
|
||||
let serverpath = path.normalize(__dirname + "/../server/public/");
|
||||
|
||||
app.listen(port, () =>
|
||||
console.log(expresscolor(`[express] Listening on port ${port}!`))
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
53
config/webpack.dev.js
Normal file
53
config/webpack.dev.js
Normal file
@@ -0,0 +1,53 @@
|
||||
const path = require("path");
|
||||
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
||||
|
||||
module.exports = {
|
||||
mode: "development", // this will trigger some webpack default stuffs for dev
|
||||
entry: path.resolve(__dirname, "../src/index.js"), // if not set, default path to './src/index.js'. Accepts an object with multiple key-value pairs, with key as your custom bundle filename(substituting the [name]), and value as the corresponding file path
|
||||
output: {
|
||||
filename: "[name].bundle.js", // [name] will take whatever the input filename is. defaults to 'main' if only a single entry value
|
||||
path: path.resolve(__dirname, "../dist"), // the folder containing you final dist/build files. Default to './dist'
|
||||
},
|
||||
devServer: {
|
||||
historyApiFallback: true, // to make our SPA works after a full reload, so that it serves 'index.html' when 404 response
|
||||
open: true,
|
||||
static: {
|
||||
directory: path.resolve(__dirname, "./dist"),
|
||||
},
|
||||
port: 8088,
|
||||
proxy: {
|
||||
context: () => true,
|
||||
target: "http://localhost:8080",
|
||||
},
|
||||
},
|
||||
stats: "minimal", // default behaviour spit out way too much info. adjust to your need.
|
||||
devtool: "source-map", // a sourcemap type. map to original source with line number
|
||||
plugins: [
|
||||
new HtmlWebpackPlugin({
|
||||
template: path.join(__dirname, "../src/index.html"),
|
||||
inlineSource: ".(js|css)$",
|
||||
inject: true,
|
||||
}),
|
||||
], // automatically creates a 'index.html' for us with our <link>, <style>, <script> tags inserted! Visit https://github.com/jantimon/html-webpack-plugin for more options
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.js$/,
|
||||
exclude: /(node_modules)/,
|
||||
use: {
|
||||
loader: "babel-loader",
|
||||
options: {
|
||||
presets: ["@babel/preset-env"],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /\.css$/, // run the loaders below only on .css files
|
||||
// this are the loaders. they interpret files, in this case css. they run from right to left sequence.
|
||||
// css-loader: "interprets @import and url() like import/require() and will resolve them."
|
||||
// style-loader: "Adds CSS to the DOM by injecting a <style> tag". this is fine for development.
|
||||
use: ["style-loader", "css-loader"],
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
90
config/webpack.prod.js
Normal file
90
config/webpack.prod.js
Normal file
@@ -0,0 +1,90 @@
|
||||
const path = require("path");
|
||||
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
||||
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
|
||||
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
||||
const HtmlMinimizerPlugin = require("html-minimizer-webpack-plugin");
|
||||
const HtmlInlineScriptPlugin = require("html-inline-script-webpack-plugin");
|
||||
const HTMLInlineCSSWebpackPlugin = require("html-inline-css-webpack-plugin")
|
||||
.default;
|
||||
const Compression = require("compression-webpack-plugin");
|
||||
|
||||
module.exports = {
|
||||
mode: "production", // this trigger webpack out-of-box prod optimizations
|
||||
entry: path.resolve(__dirname, "../src/index.js"),
|
||||
output: {
|
||||
filename: `[name].[hash].js`, // [hash] is useful for cache busting!
|
||||
path: path.resolve(__dirname, "../dist"),
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.css$/,
|
||||
use: [MiniCssExtractPlugin.loader, "css-loader"],
|
||||
},
|
||||
{
|
||||
test: /\.js$/,
|
||||
exclude: /node_modules/,
|
||||
use: [
|
||||
{
|
||||
loader: "babel-loader",
|
||||
options: {
|
||||
presets: [
|
||||
[
|
||||
"@babel/preset-env",
|
||||
{
|
||||
useBuiltIns: "usage",
|
||||
debug: false,
|
||||
corejs: 3,
|
||||
targets: {"chrome": "88"},
|
||||
},
|
||||
],
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
plugins: [
|
||||
// always deletes the dist folder first in each build run.
|
||||
new CleanWebpackPlugin(),
|
||||
new MiniCssExtractPlugin({
|
||||
filename: "[name].css",
|
||||
chunkFilename: "[id].css",
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
template: path.join(__dirname, "../src/index.html"),
|
||||
inlineSource: ".(js|css)$",
|
||||
inject: true,
|
||||
}),
|
||||
|
||||
new HtmlInlineScriptPlugin([/\.(js)$/]),
|
||||
new HTMLInlineCSSWebpackPlugin(),
|
||||
new Compression({
|
||||
test: /\.(html)$/,
|
||||
filename: "[path][base].gz",
|
||||
algorithm: "gzip",
|
||||
exclude: /.map$/,
|
||||
deleteOriginalAssets: "keep-source-map",
|
||||
}),
|
||||
],
|
||||
optimization: {
|
||||
minimize: true,
|
||||
minimizer: [
|
||||
new HtmlMinimizerPlugin({
|
||||
minimizerOptions: {
|
||||
collapseWhitespace: true,
|
||||
minifyCSS: true,
|
||||
minifyJS: true,
|
||||
},
|
||||
minify: (data, minimizerOptions) => {
|
||||
const htmlMinifier = require("html-minifier-terser");
|
||||
const [[filename, input]] = Object.entries(data);
|
||||
|
||||
return htmlMinifier.minify(input, minimizerOptions);
|
||||
},
|
||||
}),
|
||||
],
|
||||
},
|
||||
devtool: "source-map", // supposedly the ideal type without bloating bundle size
|
||||
};
|
||||
BIN
dist/index.html.gz
vendored
Normal file
BIN
dist/index.html.gz
vendored
Normal file
Binary file not shown.
1
dist/index.html/index.html
vendored
Normal file
1
dist/index.html/index.html
vendored
Normal file
File diff suppressed because one or more lines are too long
1
dist/main.css.map
vendored
Normal file
1
dist/main.css.map
vendored
Normal file
File diff suppressed because one or more lines are too long
11
images/esp3d.svg
Normal file
11
images/esp3d.svg
Normal file
@@ -0,0 +1,11 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 283.5 283.5">
|
||||
<path fill="white" d="m 227,91.9 -97,-0.3 0,100.4 83,0 c 20,0 46,-6 47,-36 l 0,-24 c 1,-20 -13,-40 -33,-40.1 z" />
|
||||
<path d="M79.7,200.2h124c-15.5,16.5-37.6,26.7-62,26.7S95.3,216.7,79.7,200.2z"/>
|
||||
<path d="M203.7,83.2h-124c15.5-16.5,37.6-26.7,62-26.7S188.2,66.8,203.7,83.2z"/>
|
||||
<path d="M200.3,152.7c0,2.7-0.5,5-1.5,7.1s-2.4,3.8-4.2,5.2c-1.8,1.4-4,2.5-6.5,3.2c-2.5,0.7-5.3,1.1-8.3,1.1c-1.8,0-3.5-0.1-5.1-0.4c-1.6-0.3-3-0.6-4.2-1c-1.2-0.4-2.2-0.8-3-1.2c-0.8-0.4-1.3-0.7-1.6-0.9c-0.2-0.2-0.4-0.5-0.6-0.7c-0.1-0.3-0.2-0.6-0.3-1c-0.1-0.4-0.2-0.8-0.2-1.4c0-0.6-0.1-1.2-0.1-2c0-1.3,0.1-2.2,0.3-2.7c0.2-0.5,0.5-0.8,1-0.8c0.3,0,0.7,0.2,1.4,0.6c0.7,0.4,1.5,0.8,2.6,1.2c1,0.4,2.3,0.8,3.7,1.2c1.4,0.4,3,0.6,4.8,0.6c1.5,0,2.8-0.2,4-0.5c1.2-0.4,2.1-0.9,2.9-1.5c0.8-0.6,1.4-1.4,1.8-2.3c0.4-0.9,0.6-1.9,0.6-3.1c0-1.2-0.2-2.3-0.7-3.3c-0.5-1-1.2-1.8-2.1-2.5c-0.9-0.7-2.1-1.2-3.6-1.6c-1.4-0.4-3.1-0.6-5.1-0.6h-4.6c-0.4,0-0.7,0-0.9-0.1c-0.2-0.1-0.5-0.3-0.6-0.6c-0.2-0.3-0.3-0.7-0.3-1.3c-0.1-0.5-0.1-1.2-0.1-2.1c0-0.8,0-1.4,0.1-2c0.1-0.5,0.2-0.9,0.3-1.2c0.2-0.3,0.3-0.5,0.6-0.6c0.2-0.1,0.5-0.2,0.8-0.2h4.6c1.6,0,3-0.2,4.2-0.6c1.2-0.4,2.3-0.9,3.1-1.6c0.8-0.7,1.5-1.5,1.9-2.5c0.4-1,0.7-2,0.7-3.2c0-0.9-0.2-1.8-0.5-2.6c-0.3-0.8-0.7-1.5-1.3-2.1c-0.6-0.6-1.3-1.1-2.3-1.4c-0.9-0.3-2-0.5-3.3-0.5c-1.4,0-2.8,0.2-4,0.6c-1.3,0.4-2.4,0.9-3.4,1.4c-1,0.5-1.8,1-2.5,1.4c-0.7,0.4-1.2,0.7-1.5,0.7c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.3-0.3-0.4-0.6c-0.1-0.3-0.2-0.7-0.2-1.2c-0.1-0.5-0.1-1.2-0.1-2c0-0.7,0-1.3,0-1.7c0-0.5,0.1-0.8,0.2-1.1c0.1-0.3,0.2-0.6,0.3-0.8c0.1-0.2,0.3-0.5,0.6-0.7c0.3-0.3,0.8-0.7,1.7-1.2c0.8-0.5,1.9-1,3.2-1.5c1.3-0.5,2.8-0.9,4.5-1.3c1.7-0.3,3.5-0.5,5.5-0.5c2.6,0,4.9,0.3,6.8,0.9c2,0.6,3.7,1.5,5,2.6c1.4,1.1,2.4,2.5,3.1,4.2c0.7,1.7,1,3.5,1,5.6c0,1.6-0.2,3.1-0.6,4.5c-0.4,1.4-1,2.6-1.8,3.7c-0.8,1.1-1.8,2-3,2.8c-1.2,0.8-2.6,1.3-4.1,1.7v0.1c1.9,0.2,3.5,0.7,5,1.4c1.5,0.7,2.7,1.6,3.8,2.7c1,1.1,1.8,2.3,2.4,3.7C200,149.7,200.3,151.2,200.3,152.7z"/>
|
||||
<path d="M249.6,141c0,4.9-0.6,9-1.9,12.5c-1.3,3.5-3.1,6.3-5.5,8.5c-2.4,2.2-5.3,3.8-8.7,4.8c-3.4,1-7.5,1.5-12.2,1.5h-12.7c-0.9,0-1.7-0.3-2.3-0.8c-0.6-0.5-0.9-1.4-0.9-2.6v-46.4c0-1.2,0.3-2.1,0.9-2.6c0.6-0.5,1.4-0.8,2.3-0.8h13.6c4.7,0,8.8,0.6,12.1,1.7c3.3,1.1,6.1,2.8,8.3,4.9c2.3,2.2,4,4.9,5.2,8.1C249,133,249.6,136.7,249.6,141z M238.5,141.3c0-2.5-0.3-4.9-0.9-7c-0.6-2.2-1.5-4-2.8-5.6c-1.3-1.6-3-2.8-5-3.7c-2-0.9-4.7-1.3-8-1.3h-5.5v36.2h5.6c3,0,5.5-0.4,7.5-1.2c2-0.8,3.7-1.9,5.1-3.5c1.4-1.5,2.4-3.5,3-5.8C238.1,147.1,238.5,144.4,238.5,141.3z"/>
|
||||
<path d="M222.1,90.3h-34.9H61.4c-21.5,0-39,17.5-39,39v24.9c0,21.5,17.5,39,39,39h68.4h92.3c21.5,0,39-17.5,39-39v-24.9C261.1,107.8,243.6,90.3,222.1,90.3z M155.1,179.4c5-7,4.9-16.5,4.9-16.5v-42.5c0-15,12.2-27.2,27.2-27.2h34.9c19.8,0,36,16.1,36,36v24.9c0,19.8-16.1,36-36,36h-79.2C142.9,190.2,149.6,187.2,155.1,179.4z"/>
|
||||
<path fill="white" d="M69.7,164.1c0,0.8,0,1.5-0.1,2c-0.1,0.5-0.2,1-0.3,1.3c-0.1,0.3-0.3,0.6-0.5,0.7c-0.2,0.2-0.4,0.2-0.7,0.2H41.4c-0.9,0-1.7-0.3-2.3-0.8c-0.6-0.5-0.9-1.4-0.9-2.6v-46.4c0-1.2,0.3-2.1,0.9-2.6c0.6-0.5,1.4-0.8,2.3-0.8H68c0.2,0,0.5,0.1,0.7,0.2c0.2,0.1,0.4,0.4,0.5,0.7c0.1,0.3,0.2,0.8,0.3,1.3c0.1,0.5,0.1,1.2,0.1,2c0,0.8,0,1.4-0.1,2c-0.1,0.5-0.2,1-0.3,1.3c-0.1,0.3-0.3,0.6-0.5,0.7c-0.2,0.2-0.4,0.2-0.7,0.2H49v13H65c0.2,0,0.5,0.1,0.7,0.2c0.2,0.2,0.4,0.4,0.5,0.7c0.1,0.3,0.2,0.7,0.3,1.3c0.1,0.5,0.1,1.2,0.1,2c0,0.8,0,1.5-0.1,2c-0.1,0.5-0.2,0.9-0.3,1.3c-0.1,0.3-0.3,0.5-0.5,0.7c-0.2,0.1-0.4,0.2-0.7,0.2H49v15h19.2c0.2,0,0.5,0.1,0.7,0.2c0.2,0.2,0.4,0.4,0.5,0.7c0.1,0.3,0.2,0.8,0.3,1.3C69.7,162.6,69.7,163.3,69.7,164.1z"/>
|
||||
<path fill="white" d="M109.4,152.4c0,2.8-0.5,5.2-1.6,7.4c-1,2.1-2.5,3.9-4.2,5.3c-1.8,1.4-3.9,2.5-6.2,3.2c-2.4,0.7-4.9,1.1-7.6,1.1c-1.8,0-3.5-0.2-5.1-0.5c-1.6-0.3-3-0.7-4.2-1.1c-1.2-0.4-2.2-0.9-3-1.3c-0.8-0.5-1.4-0.9-1.7-1.2c-0.4-0.4-0.6-0.9-0.8-1.5c-0.2-0.7-0.2-1.6-0.2-2.9c0-0.8,0-1.6,0.1-2.1c0.1-0.6,0.1-1,0.3-1.4c0.1-0.4,0.3-0.6,0.5-0.8c0.2-0.2,0.4-0.2,0.7-0.2c0.4,0,0.9,0.2,1.6,0.7c0.7,0.5,1.6,1,2.7,1.5c1.1,0.5,2.4,1,3.9,1.5c1.5,0.5,3.3,0.7,5.3,0.7c1.3,0,2.5-0.2,3.5-0.5c1-0.3,1.9-0.8,2.7-1.3c0.7-0.6,1.3-1.3,1.7-2.1c0.4-0.8,0.6-1.8,0.6-2.8c0-1.2-0.3-2.2-1-3.1c-0.7-0.9-1.5-1.6-2.6-2.3c-1.1-0.7-2.3-1.3-3.6-1.9c-1.3-0.6-2.7-1.2-4.2-1.9c-1.4-0.7-2.8-1.4-4.2-2.2c-1.3-0.8-2.5-1.8-3.6-3c-1.1-1.2-1.9-2.5-2.6-4.1c-0.7-1.6-1-3.5-1-5.7c0-2.5,0.5-4.8,1.4-6.7c0.9-1.9,2.2-3.5,3.8-4.8c1.6-1.3,3.5-2.2,5.7-2.9c2.2-0.6,4.5-0.9,6.9-0.9c1.3,0,2.5,0.1,3.8,0.3c1.3,0.2,2.4,0.5,3.5,0.8c1.1,0.3,2.1,0.7,2.9,1.1c0.8,0.4,1.4,0.8,1.7,1c0.3,0.3,0.5,0.5,0.6,0.7c0.1,0.2,0.2,0.4,0.2,0.8c0.1,0.3,0.1,0.7,0.1,1.2c0,0.5,0,1.1,0,1.8c0,0.8,0,1.5-0.1,2c0,0.5-0.1,1-0.2,1.4c-0.1,0.4-0.2,0.6-0.4,0.8c-0.2,0.2-0.4,0.2-0.7,0.2c-0.3,0-0.8-0.2-1.4-0.6c-0.7-0.4-1.5-0.8-2.4-1.3c-1-0.5-2.1-0.9-3.3-1.2c-1.3-0.4-2.6-0.6-4.2-0.6c-1.2,0-2.2,0.1-3.1,0.4c-0.9,0.3-1.6,0.7-2.2,1.2c-0.6,0.5-1,1.1-1.3,1.8c-0.3,0.7-0.4,1.5-0.4,2.3c0,1.2,0.3,2.2,1,3.1c0.6,0.9,1.5,1.6,2.6,2.3c1.1,0.7,2.3,1.3,3.7,1.9c1.4,0.6,2.8,1.2,4.2,1.9c1.4,0.7,2.8,1.4,4.2,2.2c1.4,0.8,2.6,1.8,3.7,3c1.1,1.2,1.9,2.5,2.6,4.1C109.1,148.4,109.4,150.2,109.4,152.4z"/>
|
||||
<path fill="white" d="M151.4,131.2c0,3-0.5,5.6-1.4,7.9c-0.9,2.3-2.3,4.2-4.1,5.8c-1.8,1.6-4,2.8-6.6,3.6c-2.6,0.8-5.6,1.2-9.1,1.2h-4.4v17c0,0.3-0.1,0.5-0.3,0.7c-0.2,0.2-0.5,0.4-0.9,0.5c-0.4,0.1-1,0.2-1.6,0.3c-0.7,0.1-1.6,0.1-2.6,0.1c-1,0-1.9,0-2.6-0.1c-0.7-0.1-1.3-0.2-1.7-0.3c-0.4-0.1-0.7-0.3-0.9-0.5c-0.2-0.2-0.2-0.5-0.2-0.7v-47.8c0-1.3,0.3-2.3,1-2.9c0.7-0.6,1.6-1,2.7-1h12.5c1.3,0,2.5,0,3.6,0.1c1.1,0.1,2.5,0.3,4.1,0.6c1.6,0.3,3.2,0.9,4.8,1.7c1.6,0.8,3,1.9,4.2,3.2c1.2,1.3,2,2.8,2.6,4.6C151.1,127.1,151.4,129,151.4,131.2z M140.1,132c0-1.9-0.3-3.4-1-4.6c-0.7-1.2-1.5-2.1-2.4-2.7c-1-0.6-2-0.9-3-1.1c-1.1-0.2-2.1-0.2-3.3-0.2h-4.6v18h4.8c1.7,0,3.2-0.2,4.3-0.7c1.2-0.5,2.1-1.1,2.9-2c0.7-0.8,1.3-1.8,1.7-3C139.9,134.6,140.1,133.3,140.1,132z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.7 KiB |
1
images/logo.svg
Normal file
1
images/logo.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 158 KiB |
1
images/logob&W.svg
Normal file
1
images/logob&W.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 40 KiB |
14733
package-lock.json
generated
Normal file
14733
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
40
package.json
Normal file
40
package.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "ESP3D-Configurator",
|
||||
"version": "1.0.0",
|
||||
"description": "Web Configurator for ESP3D V3.0",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"front": "webpack serve --config config/webpack.dev.js ",
|
||||
"server": "nodemon config/server.js",
|
||||
"dev": "concurrently \"npm run server\" \"npm run front\"",
|
||||
"build": "webpack --config config/webpack.prod.js"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.16.7",
|
||||
"@babel/preset-env": "^7.16.7",
|
||||
"babel-loader": "^8.2.3",
|
||||
"chalk": "^4.1.2",
|
||||
"clean-webpack-plugin": "^3.0.0",
|
||||
"compression-webpack-plugin": "^7.1.2",
|
||||
"concurrently": "^7.0.0",
|
||||
"core-js": "^3.20.2",
|
||||
"css-loader": "^5.2.7",
|
||||
"express": "^4.17.2",
|
||||
"express-fileupload": "^1.2.1",
|
||||
"express-ws": "^4.0.0",
|
||||
"html-inline-css-webpack-plugin": "^1.11.1",
|
||||
"html-inline-script-webpack-plugin": "^1.1.6",
|
||||
"html-minimizer-webpack-plugin": "^2.1.0",
|
||||
"html-webpack-plugin": "^5.5.0",
|
||||
"mini-css-extract-plugin": "^1.6.2",
|
||||
"nodemon": "^2.0.15",
|
||||
"regenerator-runtime": "^0.13.9",
|
||||
"style-loader": "^2.0.0",
|
||||
"webpack": "^5.65.0",
|
||||
"webpack-cli": "^4.9.1",
|
||||
"webpack-dev-server": "^4.7.4"
|
||||
}
|
||||
}
|
||||
BIN
server/public/favicon.ico
Normal file
BIN
server/public/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
28
server/public/fr.json
Normal file
28
server/public/fr.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"lang" : "Français",
|
||||
"S1" : "Chargement...",
|
||||
"S2" : "Connection websocket...",
|
||||
"S3" : "Apparement vous êtes connecté depuis une autre page, donc cette page est désormais déconnectée",
|
||||
"S4" : "Erreur traitement lors du fichier de configuration, le fichier est incorrecte",
|
||||
"S5" : "Impossible de se connecter au serveur de la carte",
|
||||
"S6" : "Erreur de connection WebSocket",
|
||||
"S7" : "Erreur lors du traitement du fichier de préférences, le fichier est incorrecte",
|
||||
"S8" : "SVP reconnectez-moi",
|
||||
"S9" : "déconnecté",
|
||||
"S10" : "Connection with board is lost",
|
||||
"S11" : "Aidez nous",
|
||||
"S12" : "A propos d'ESP3D",
|
||||
"S13" : "Tableau de bord",
|
||||
"S14" : "Parmètres",
|
||||
"S15" : "Donation pour ESP3D",
|
||||
"S16" : "Version micrologiciel",
|
||||
"S17" : "Version interface",
|
||||
"S18" : "Version navigateur",
|
||||
"S19" : "Inconnu",
|
||||
"S20" : "Go to github",
|
||||
"S21" : "Parsing data error, data are incorrect",
|
||||
"S22" : "Erreur",
|
||||
"S23" : "Refresh information",
|
||||
"S24" : "Fermer",
|
||||
"T9" : "Utilisation sytème de fichiers"
|
||||
}
|
||||
BIN
server/public/index.html.gz
Normal file
BIN
server/public/index.html.gz
Normal file
Binary file not shown.
1
src/footer.txt
Normal file
1
src/footer.txt
Normal file
@@ -0,0 +1 @@
|
||||
#endif //__embedded_h
|
||||
20
src/index.html
Normal file
20
src/index.html
Normal file
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<!-- Chrome, Firefox OS and Opera -->
|
||||
<meta name="theme-color" content="#5755d9">
|
||||
<!-- Windows Phone -->
|
||||
<meta name="msapplication-navbutton-color" content="#5755d9">
|
||||
<!-- iOS Safari -->
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="#5755d9">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
Configurator
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
1
src/index.js
Normal file
1
src/index.js
Normal file
@@ -0,0 +1 @@
|
||||
import "./style.css"
|
||||
368
src/style.css
Normal file
368
src/style.css
Normal file
@@ -0,0 +1,368 @@
|
||||
* {
|
||||
font-family: sans-serif;
|
||||
color: #5755d9;
|
||||
background-color: #eef0f3;
|
||||
-webkit-user-select: none; /* Chrome all / Safari all */
|
||||
-moz-user-select: none; /* Firefox all */
|
||||
-ms-user-select: none; /* IE 10+ */
|
||||
user-select: none;
|
||||
}
|
||||
body {
|
||||
min-width: 360px;
|
||||
}
|
||||
hr {
|
||||
border-top: 1px solid #5755d9;
|
||||
}
|
||||
|
||||
.controlBar {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding: 10px;
|
||||
padding-left: 15px;
|
||||
background-color: white;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
.cmd {
|
||||
color: #555555;
|
||||
}
|
||||
label {
|
||||
display: block;
|
||||
width: auto;
|
||||
padding: 3px 12px;
|
||||
color: #5755d9;
|
||||
background-color: #ffffff;
|
||||
cursor: pointer;
|
||||
}
|
||||
pre {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
.modal {
|
||||
position: fixed; /* Stay in place */
|
||||
z-index: 10000; /* Sit on top */
|
||||
padding-top: 100px; /* Location of the box */
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%; /* Full width */
|
||||
height: 100%; /* Full height */
|
||||
overflow: auto; /* Enable scroll if needed */
|
||||
background-color: rgb(0, 0, 0); /* Fallback color */
|
||||
background-color: rgba(0, 0, 0, 0.4); /* Black w/ opacity */
|
||||
}
|
||||
|
||||
/* Modal Content */
|
||||
.modal-content {
|
||||
border-top-left-radius: 10px;
|
||||
border-top-right-radius: 10px;
|
||||
border-bottom-left-radius: 10px;
|
||||
border-bottom-right-radius: 10px;
|
||||
background-color: #5755d9;
|
||||
border: 1px solid #5755d9;
|
||||
position: relative;
|
||||
margin: auto;
|
||||
padding: 0;
|
||||
max-width: 450px;
|
||||
}
|
||||
|
||||
.modal-header {
|
||||
padding: 16px 16px;
|
||||
color: #ffffff;
|
||||
background-color: #5755d9;
|
||||
border-top-left-radius: 10px;
|
||||
border-top-right-radius: 10px;
|
||||
border-bottom: 1px solid #5755d9;
|
||||
height: 2.5rem;
|
||||
line-height: 2.5rem;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.modal-body {
|
||||
padding: 10px 16px;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.modal-footer {
|
||||
padding: 16px 16px;
|
||||
height: 2.5em;
|
||||
background-color: #ffffff;
|
||||
border-top: 1px solid #5755d9;
|
||||
border-bottom-left-radius: 10px;
|
||||
border-bottom-right-radius: 10px;
|
||||
display: flex;
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
input {
|
||||
display: block;
|
||||
width: auto;
|
||||
height: 1.5rem;
|
||||
padding: 6px 12px;
|
||||
line-height: 1.42857143;
|
||||
border-radius: 4px;
|
||||
color: #5755d9;
|
||||
background-color: #ffffff;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
input {
|
||||
border: 1px solid #5755d9;
|
||||
}
|
||||
|
||||
button {
|
||||
display: block;
|
||||
width: auto;
|
||||
height: 2.4rem;
|
||||
padding: 6px 12px;
|
||||
line-height: 1.42857143;
|
||||
vertical-align: middle;
|
||||
cursor: pointer;
|
||||
border: 1px solid black;
|
||||
white-space: nowrap;
|
||||
border-radius: 4px;
|
||||
color: #ffffff;
|
||||
background-color: #5755d9;
|
||||
}
|
||||
|
||||
::-moz-progress-bar {
|
||||
background-color: #5755d9;
|
||||
}
|
||||
|
||||
::-webkit-progress-value {
|
||||
background-color: #5755d9;
|
||||
}
|
||||
|
||||
::-webkit-progress-bar {
|
||||
background-color: #f1f1f1;
|
||||
}
|
||||
|
||||
progress,
|
||||
.progbar {
|
||||
margin-top: 10px;
|
||||
height: 1rem;
|
||||
background-color: #f1f1f1;
|
||||
border: 1px solid #5755d9;
|
||||
}
|
||||
|
||||
.label {
|
||||
height: 2.4rem;
|
||||
padding: 6px 12px;
|
||||
line-height: 1.42857143;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
color: #5755d9;
|
||||
background-color: #ffffff;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.controlBar > button {
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
meter {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
button:active {
|
||||
background-color: #0b0899;
|
||||
}
|
||||
|
||||
ul {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
list-style-type: none;
|
||||
margin: 3px;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin: 10px 10px;
|
||||
min-height: 350px;
|
||||
max-height: 350px;
|
||||
border: 1px solid #5755d9;
|
||||
overflow-y: auto;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
li {
|
||||
padding: 9px 14px;
|
||||
margin: 0px 1rem;
|
||||
border: 1px hidden;
|
||||
}
|
||||
|
||||
.menuspacer {
|
||||
flex-grow: 1;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.panel {
|
||||
margin: 10px 10px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.text-primary {
|
||||
color: #5755d9;
|
||||
}
|
||||
.text-error {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.text-error-login {
|
||||
background-color: white;
|
||||
color: red;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.disabled {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.panel-header {
|
||||
border-top-left-radius: 10px;
|
||||
border-top-right-radius: 10px;
|
||||
background-color: #5755d9;
|
||||
color: white;
|
||||
height: 2rem;
|
||||
line-height: 2rem;
|
||||
padding: 2px 15px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.no-header {
|
||||
border-top-left-radius: 10px;
|
||||
border-top-right-radius: 10px;
|
||||
border-top: 1px solid #5755d9;
|
||||
}
|
||||
|
||||
.no-footer {
|
||||
border-bottom-left-radius: 10px;
|
||||
border-bottom-right-radius: 10px;
|
||||
border-bottom: 1px solid #5755d9;
|
||||
}
|
||||
|
||||
.panel-footer {
|
||||
border-bottom-left-radius: 10px;
|
||||
border-bottom-right-radius: 10px;
|
||||
border: 1px solid #5755d9;
|
||||
background-color: white;
|
||||
min-height: 2rem;
|
||||
line-height: 2rem;
|
||||
padding: 2px 15px;
|
||||
margin: 0px 0px;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-wrap: wrap;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.panel-footer span {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.panel-body {
|
||||
min-height: 50px;
|
||||
background-color: white;
|
||||
border-right: 1px solid #5755d9;
|
||||
border-left: 1px solid #5755d9;
|
||||
}
|
||||
|
||||
.no-header {
|
||||
padding: 10px 10px;
|
||||
}
|
||||
|
||||
.hide {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.filesize,
|
||||
.filetype,
|
||||
.fileitem,
|
||||
.fileicon {
|
||||
padding: 5px 5px;
|
||||
border-radius: 5px 5px;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.fileLineTail {
|
||||
background-color: white;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
column-gap: 10px;
|
||||
}
|
||||
|
||||
.fileLineHead {
|
||||
background-color: white;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
column-gap: 10px;
|
||||
}
|
||||
|
||||
.fileLine {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
line-height: 1.42857143;
|
||||
vertical-align: center;
|
||||
border-top: 1px solid #5755d9;
|
||||
background-color: white;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
svg {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.fileicon:hover {
|
||||
cursor: pointer;
|
||||
background-color: #5755d9;
|
||||
color: #5755d9;
|
||||
}
|
||||
|
||||
.fileitem:hover,
|
||||
li:active,
|
||||
li:hover {
|
||||
cursor: pointer;
|
||||
background-color: #5755d9;
|
||||
color: white;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fileitem:active {
|
||||
background-color: #0b0899;
|
||||
}
|
||||
|
||||
.fileicon:hover > svg {
|
||||
cursor: pointer;
|
||||
background-color: #5755d9;
|
||||
color: #5755d9;
|
||||
}
|
||||
.m-1{
|
||||
margin-left: 1rem;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
button > svg {
|
||||
background-color: #5755d9;
|
||||
text-decoration-color: #ffffff;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
button:active > svg,
|
||||
.fileicon:active > svg,
|
||||
.fileicon:active {
|
||||
background-color: #0b0899;
|
||||
}
|
||||
|
||||
#MSG {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#monitor_enable_autoscroll {
|
||||
margin: 0px 0px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
.menuspacer {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user