Initial Progress on Settings page rework

This commit is contained in:
PrestonN 2019-07-01 19:10:36 -04:00
parent 3d723f3a04
commit 744cac2731
16 changed files with 526 additions and 856 deletions

721
package-lock.json generated
View File

@ -63,41 +63,6 @@
"integrity": "sha512-D9MyoQFI7iP5VdpEyPZyjjqIJ8Y8EDNQFIFVLOmeg1rI1xiHOChyUPMPRUVfqFCerxfE+yS3vMyj37F6IdtOoQ==",
"dev": true
},
"@types/events": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
"integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==",
"dev": true
},
"@types/glob": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
"integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==",
"dev": true,
"requires": {
"@types/events": "*",
"@types/minimatch": "*",
"@types/node": "*"
}
},
"@types/minimatch": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
"dev": true
},
"@types/node": {
"version": "11.13.7",
"resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.7.tgz",
"integrity": "sha512-suFHr6hcA9mp8vFrZTgrmqW2ZU3mbWsryQtQlY/QvwTISCw7nw/j+bCQPPohqmskhmqa5wLNuMHTTsc+xf1MQg==",
"dev": true
},
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"dev": true
},
"acorn-walk": {
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz",
@ -372,16 +337,6 @@
"tweetnacl": "^0.14.3"
}
},
"binary": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
"integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
"dev": true,
"requires": {
"buffers": "~0.1.1",
"chainsaw": "~0.1.0"
}
},
"binary-search-tree": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz",
@ -405,6 +360,11 @@
"bluebird": "^3.5.3"
}
},
"bootstrap": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz",
"integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA=="
},
"boxen": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz",
@ -536,12 +496,6 @@
"integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
"dev": true
},
"buffers": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
"integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=",
"dev": true
},
"builtin-modules": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
@ -621,15 +575,6 @@
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"chainsaw": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
"integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
"dev": true,
"requires": {
"traverse": ">=0.3.0 <0.4"
}
},
"chromium-pickle-js": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz",
@ -701,12 +646,6 @@
"delayed-stream": "~1.0.0"
}
},
"commander": {
"version": "2.14.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz",
"integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==",
"dev": true
},
"commonjs": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/commonjs/-/commonjs-0.0.1.tgz",
@ -819,28 +758,6 @@
"which": "^1.2.9"
}
},
"cross-spawn-promise": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/cross-spawn-promise/-/cross-spawn-promise-0.10.1.tgz",
"integrity": "sha1-25y0xQxgtyoVvgSbeBIs44LYexA=",
"dev": true,
"requires": {
"cross-spawn": "^5.1.0"
},
"dependencies": {
"cross-spawn": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
"integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
"dev": true,
"requires": {
"lru-cache": "^4.0.1",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
}
}
}
},
"crypto-random-string": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
@ -909,6 +826,7 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
@ -928,21 +846,6 @@
"mimic-response": "^1.0.0"
}
},
"decompress-zip": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz",
"integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=",
"dev": true,
"requires": {
"binary": "^0.3.0",
"graceful-fs": "^4.1.3",
"mkpath": "^0.1.0",
"nopt": "^3.0.1",
"q": "^1.1.2",
"readable-stream": "^1.1.8",
"touch": "0.0.3"
}
},
"deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
@ -2804,356 +2707,6 @@
}
}
},
"electron-installer-common": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/electron-installer-common/-/electron-installer-common-0.6.2.tgz",
"integrity": "sha512-k/uB9+rYxQx5sxCNlmdn5fqjWRbDCGIQjdDi9101mVHr0dUkrupLjtgjaaXbvdtUxHTYTbk53l77YnXM6ZGbHg==",
"dev": true,
"requires": {
"asar": "^1.0.0",
"cross-spawn-promise": "^0.10.1",
"debug": "^4.1.1",
"fs-extra": "^7.0.1",
"glob": "^7.1.3",
"glob-promise": "^3.4.0",
"lodash": "^4.17.11",
"parse-author": "^2.0.0",
"semver": "^5.6.0",
"tmp-promise": "^1.0.5"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
"fs-extra": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
"integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
}
},
"glob": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.6"
}
},
"lodash": {
"version": "4.17.11",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
"dev": true
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
"dev": true
},
"semver": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
"integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
"dev": true
}
}
},
"electron-installer-flatpak": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/electron-installer-flatpak/-/electron-installer-flatpak-0.8.0.tgz",
"integrity": "sha1-jt0Xjg4E7C2g+kDnd7Z8nMt4d18=",
"dev": true,
"requires": {
"asar": "^0.12.0",
"async": "^2.0.0",
"debug": "^2.2.0",
"flatpak-bundler": "^0.1.0",
"fs-extra": "^0.30.0",
"lodash": "^4.13.0",
"temp": "^0.8.3",
"yargs": "^6.0.0"
},
"dependencies": {
"asar": {
"version": "0.12.4",
"resolved": "https://registry.npmjs.org/asar/-/asar-0.12.4.tgz",
"integrity": "sha1-LdPxFoguq4wPI7dUeSqCp9n84XE=",
"dev": true,
"requires": {
"chromium-pickle-js": "^0.2.0",
"commander": "^2.9.0",
"cuint": "^0.2.1",
"glob": "^6.0.4",
"minimatch": "^3.0.3",
"mkdirp": "^0.5.0",
"mksnapshot": "^0.3.0",
"tmp": "0.0.28"
}
},
"async": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
"integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
"dev": true,
"requires": {
"lodash": "^4.17.10"
}
},
"camelcase": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
"integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
"dev": true
},
"glob": {
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
"integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
"dev": true,
"requires": {
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "2 || 3",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"yargs": {
"version": "6.6.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz",
"integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=",
"dev": true,
"requires": {
"camelcase": "^3.0.0",
"cliui": "^3.2.0",
"decamelize": "^1.1.1",
"get-caller-file": "^1.0.1",
"os-locale": "^1.4.0",
"read-pkg-up": "^1.0.1",
"require-directory": "^2.1.1",
"require-main-filename": "^1.0.1",
"set-blocking": "^2.0.0",
"string-width": "^1.0.2",
"which-module": "^1.0.0",
"y18n": "^3.2.1",
"yargs-parser": "^4.2.0"
}
},
"yargs-parser": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz",
"integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=",
"dev": true,
"requires": {
"camelcase": "^3.0.0"
}
}
}
},
"electron-installer-snap": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/electron-installer-snap/-/electron-installer-snap-3.1.1.tgz",
"integrity": "sha512-kqFogM3sXbD0RUuitAAVtGrStjNq/NCdnjUvYWylKNR51U0C+hVi4X3x6Mu47XmB4y08NA4qi6SEIBVfLrYNlQ==",
"dev": true,
"requires": {
"cross-spawn-promise": "^0.10.1",
"debug": "^4.1.1",
"electron-installer-common": "^0.6.1",
"fs-extra": "^7.0.1",
"js-yaml": "^3.10.0",
"lodash.filter": "^4.6.0",
"lodash.merge": "^4.6.0",
"lodash.pull": "^4.1.0",
"nodeify": "^1.0.1",
"pify": "^4.0.1",
"tmp-promise": "^1.0.3",
"which": "^1.3.0",
"yargs": "^12.0.5"
},
"dependencies": {
"ansi-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true
},
"cliui": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
"integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
"dev": true,
"requires": {
"string-width": "^2.1.1",
"strip-ansi": "^4.0.0",
"wrap-ansi": "^2.0.0"
}
},
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
"find-up": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"requires": {
"locate-path": "^3.0.0"
}
},
"fs-extra": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
"integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
}
},
"invert-kv": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
"integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
"dev": true
},
"is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.6"
}
},
"lcid": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
"integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
"dev": true,
"requires": {
"invert-kv": "^2.0.0"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
"dev": true
},
"os-locale": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
"integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
"dev": true,
"requires": {
"execa": "^1.0.0",
"lcid": "^2.0.0",
"mem": "^4.0.0"
}
},
"pify": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^4.0.0"
}
},
"strip-ansi": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
"ansi-regex": "^3.0.0"
}
},
"which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"dev": true
},
"yargs": {
"version": "12.0.5",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
"integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
"dev": true,
"requires": {
"cliui": "^4.0.0",
"decamelize": "^1.2.0",
"find-up": "^3.0.0",
"get-caller-file": "^1.0.1",
"os-locale": "^3.0.0",
"require-directory": "^2.1.1",
"require-main-filename": "^1.0.1",
"set-blocking": "^2.0.0",
"string-width": "^2.0.0",
"which-module": "^2.0.0",
"y18n": "^3.2.1 || ^4.0.0",
"yargs-parser": "^11.1.1"
}
},
"yargs-parser": {
"version": "11.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
"integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
"dev": true,
"requires": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
}
}
}
},
"electron-is-dev": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-1.1.0.tgz",
@ -3317,14 +2870,6 @@
}
}
},
"electron-squirrel-startup": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/electron-squirrel-startup/-/electron-squirrel-startup-1.0.0.tgz",
"integrity": "sha1-GbTlWTP6Dvj1VnhLnGYPdyVGoLg=",
"requires": {
"debug": "^2.2.0"
}
},
"electron-winstaller": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-3.0.4.tgz",
@ -3422,21 +2967,6 @@
"is-arrayish": "^0.2.1"
}
},
"es6-promise": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
"integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==",
"dev": true
},
"es6-promisify": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
"integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
"dev": true,
"requires": {
"es6-promise": "^4.0.3"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
@ -3573,30 +3103,6 @@
"pinkie-promise": "^2.0.0"
}
},
"flatpak-bundler": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/flatpak-bundler/-/flatpak-bundler-0.1.3.tgz",
"integrity": "sha1-5F36DEp0hcNw4JFeRyiSl5hQOUY=",
"dev": true,
"requires": {
"debug": "^2.2.0",
"es6-promisify": "^5.0.0",
"fs-extra": "^0.30.0",
"lodash": "^4.16.2",
"tmp": "0.0.29"
},
"dependencies": {
"tmp": {
"version": "0.0.29",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz",
"integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=",
"dev": true,
"requires": {
"os-tmpdir": "~1.0.1"
}
}
}
},
"flora-colossus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-1.0.0.tgz",
@ -3660,19 +3166,6 @@
"mime-types": "^2.1.12"
}
},
"fs-extra": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
"integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"jsonfile": "^2.1.0",
"klaw": "^1.0.0",
"path-is-absolute": "^1.0.0",
"rimraf": "^2.2.8"
}
},
"fs-extra-p": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-7.0.1.tgz",
@ -3913,15 +3406,6 @@
"path-is-absolute": "^1.0.0"
}
},
"glob-promise": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz",
"integrity": "sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==",
"dev": true,
"requires": {
"@types/glob": "*"
}
},
"global-dirs": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
@ -4177,12 +3661,6 @@
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
"integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4="
},
"is-promise": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz",
"integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=",
"dev": true
},
"is-redirect": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
@ -4486,15 +3964,6 @@
"integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
"dev": true
},
"jsonfile": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
"integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.6"
}
},
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@ -4515,15 +3984,6 @@
"json-buffer": "3.0.0"
}
},
"klaw": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
"integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.9"
}
},
"latest-version": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
@ -4604,12 +4064,6 @@
}
}
},
"lodash": {
"version": "4.17.10",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
"integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
"dev": true
},
"lodash._reinterpolate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
@ -4622,30 +4076,12 @@
"integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
"dev": true
},
"lodash.filter": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz",
"integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=",
"dev": true
},
"lodash.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
"dev": true
},
"lodash.merge": {
"version": "4.6.1",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz",
"integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==",
"dev": true
},
"lodash.pull": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/lodash.pull/-/lodash.pull-4.1.0.tgz",
"integrity": "sha1-YAYMxr1iW01FZ+wn3EXNG+nuwBI=",
"dev": true
},
"lodash.sortby": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
@ -4834,38 +4270,6 @@
"minimist": "0.0.8"
}
},
"mkpath": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz",
"integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=",
"dev": true
},
"mksnapshot": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.1.tgz",
"integrity": "sha1-JQHAVldDbXQs6Vik/5LHfkDdN+Y=",
"dev": true,
"requires": {
"decompress-zip": "0.3.0",
"fs-extra": "0.26.7",
"request": "^2.79.0"
},
"dependencies": {
"fs-extra": {
"version": "0.26.7",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz",
"integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"jsonfile": "^2.1.0",
"klaw": "^1.0.0",
"path-is-absolute": "^1.0.0",
"rimraf": "^2.2.8"
}
}
}
},
"modify-filename": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz",
@ -4874,7 +4278,8 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
"mustache": {
"version": "3.0.1",
@ -4899,25 +4304,6 @@
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
"dev": true
},
"nodeify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/nodeify/-/nodeify-1.0.1.tgz",
"integrity": "sha1-ZKtpp7268DzhB7TwM1yHwLnpGx0=",
"dev": true,
"requires": {
"is-promise": "~1.0.0",
"promise": "~1.3.0"
}
},
"nopt": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
"integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
"dev": true,
"requires": {
"abbrev": "1"
}
},
"normalize-package-data": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
@ -4930,6 +4316,11 @@
"validate-npm-package-license": "^3.0.1"
}
},
"nouislider": {
"version": "8.5.1",
"resolved": "https://registry.npmjs.org/nouislider/-/nouislider-8.5.1.tgz",
"integrity": "sha1-343t0ODeGvsHTDO+Hmz00pGWYuQ="
},
"npm-run-path": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
@ -5281,13 +4672,23 @@
"through2": "~0.2.3"
}
},
"promise": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/promise/-/promise-1.3.0.tgz",
"integrity": "sha1-5cyaTIJ45GZP/twBx9qEhCsEAXU=",
"dev": true,
"propellerkit": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/propellerkit/-/propellerkit-1.3.1.tgz",
"integrity": "sha1-Weornqewx8GETK5uozlFehjWoeg=",
"requires": {
"is-promise": "~1"
"bootstrap": "^3.0.0",
"jquery": "1.9.1 - 3"
}
},
"propellerkit-range-slider": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/propellerkit-range-slider/-/propellerkit-range-slider-1.2.0.tgz",
"integrity": "sha1-hd3A/znvtlK3FUE9C93K95qNMIg=",
"requires": {
"nouislider": "^8.5.1",
"propellerkit": "*.*.*",
"wnumb": "1.1.0"
}
},
"pseudomap": {
@ -5321,12 +4722,6 @@
"resolved": "https://registry.npmjs.org/pupa/-/pupa-1.0.0.tgz",
"integrity": "sha1-mpVopa9+ZXuEYqbp1TKHQ1YM7/Y="
},
"q": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
"integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
"dev": true
},
"qs": {
"version": "6.5.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
@ -5813,24 +5208,6 @@
"resolved": "https://registry.npmjs.org/system/-/system-2.0.1.tgz",
"integrity": "sha512-BwSUSa8LMHZouGadZ34ck3TsrH5s3oMmTKPK+xHdbBnTCZOZMJ38fHGKLAHkBl0PXru1Z4BsymQU4qqvTxWzdQ=="
},
"temp": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
"integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=",
"dev": true,
"requires": {
"os-tmpdir": "^1.0.0",
"rimraf": "~2.2.6"
},
"dependencies": {
"rimraf": {
"version": "2.2.8",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
"integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
"dev": true
}
}
},
"temp-file": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.2.tgz",
@ -5926,15 +5303,6 @@
"integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
"dev": true
},
"tmp": {
"version": "0.0.28",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz",
"integrity": "sha1-Fyc1t/YU6nrzlmT6hM8N5OUV0SA=",
"dev": true,
"requires": {
"os-tmpdir": "~1.0.1"
}
},
"tmp-promise": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-1.0.5.tgz",
@ -5962,26 +5330,6 @@
"integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
"dev": true
},
"touch": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz",
"integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=",
"dev": true,
"requires": {
"nopt": "~1.0.10"
},
"dependencies": {
"nopt": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
"integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
"dev": true,
"requires": {
"abbrev": "1"
}
}
}
},
"tough-cookie": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
@ -6005,12 +5353,6 @@
}
}
},
"traverse": {
"version": "0.3.9",
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
"integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=",
"dev": true
},
"trim-newlines": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
@ -6351,6 +5693,11 @@
"integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=",
"dev": true
},
"wnumb": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/wnumb/-/wnumb-1.1.0.tgz",
"integrity": "sha1-/Oy4gFCGm984Tay/1hIyWYDJPdw="
},
"wordwrap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",

View File

@ -48,13 +48,13 @@
"category": "public.app-category.video",
"icon": "src/icons/iconColor.icns",
"target": [
"zip"
"zip"
]
},
"win": {
"target": [
"nsis",
"zip"
"nsis",
"zip"
],
"icon": "src/icons/iconColor.ico"
},
@ -73,10 +73,10 @@
"tar.xz"
],
"desktop": {
"Icon": "freetube"
"Icon": "freetube"
},
"category": "Video"
}
}
},
"devDependencies": {
"electron": "^5.0.3",

View File

@ -14,11 +14,13 @@
<link rel="stylesheet" href="style/fa-solid.min.css">
<link rel="stylesheet" href="style/fontawesome-all.min.css">
<link rel="stylesheet" href="style/mediaelementplayer.css" />
<link rel="stylesheet" href="js/plugins/title/title.css" />
<link rel="stylesheet" href="js/plugins/quality/quality.min.css" />
<link rel="stylesheet" href="js/plugins/loop/loop.css" />
<link rel="stylesheet" href="js/plugins/speed/speed.css" />
<link rel="stylesheet" href="js/plugins/context-menu/context-menu.css" />
<link rel="stylesheet" href="style/radioButton.css">
<link rel="stylesheet" href="style/radioButton.css" />
<link rel="stylesheet" href="style/mdSlider.css" />
<link rel="shortcut icon" href="icons/iconColor.ico" type="image/x-icon" />
<title>FreeTube Player</title>
</head>
@ -184,6 +186,7 @@
<script src="js/plugins/speed/speed-i18n.js"></script>
<script src="js/plugins/loop/loop.js"></script>
<script src="js/plugins/loop/loop-i18n.js"></script>
<script src="js/plugins/title/title.js"></script>
<script src="js/plugins/context-menu/context-menu.js"></script>
<script src="js/plugins/context-menu/context-menu-i18n.js"></script>
<script src="js/plugins/timerailthumbnails/vtt.min.js"></script>

View File

@ -141,13 +141,20 @@ $(document).ready(() => {
function toggleSideNavigation() {
const sideNav = document.getElementById('sideNav');
const mainContainer = document.getElementById('main');
const confirmSettings = document.getElementById('confirmSettings');
if (sideNav.style.display === 'none') {
sideNav.style.display = 'inline';
mainContainer.style.marginLeft = '250px';
if (typeof(confirmSettings) !== 'undefined') {
confirmSettings.style.marginLeft = '250px';
}
} else {
sideNav.style.display = 'none';
mainContainer.style.marginLeft = '0px';
if (typeof(confirmSettings) !== 'undefined') {
confirmSettings.style.marginLeft = '0px';
}
}
if (playerView.playerSeen) {

View File

@ -7730,6 +7730,7 @@ function fadeOut(el) {
if (!el.style.opacity) {
el.style.opacity = 1;
$('.mejs__title').get(0).style.opacity = 1;
}
var start = null;
@ -7738,6 +7739,7 @@ function fadeOut(el) {
var progress = timestamp - start;
var opacity = parseFloat(1 - progress / duration, 2);
el.style.opacity = opacity < 0 ? 0 : opacity;
$('.mejs__title').get(0).style.opacity = opacity < 0 ? 0 : opacity;
if (progress > duration) {
if (callback && typeof callback === 'function') {
callback();
@ -7754,6 +7756,7 @@ function fadeIn(el) {
if (!el.style.opacity) {
el.style.opacity = 0;
$('.mejs__title').get(0).style.opacity = 0;
}
var start = null;
@ -7762,6 +7765,7 @@ function fadeIn(el) {
var progress = timestamp - start;
var opacity = parseFloat(progress / duration, 2);
el.style.opacity = opacity > 1 ? 1 : opacity;
$('.mejs__title').get(0).style.opacity = opacity;
if (progress > duration) {
if (callback && typeof callback === 'function') {
callback();

View File

@ -1011,13 +1011,14 @@ function checkDashSettings() {
}
let player = new MediaElementPlayer('player', {
features: ['playpause', 'current', 'progress', 'duration', 'volume', 'stop', 'speed', 'quality', 'loop', 'tracks', 'fullscreen', 'timerailthumbnails'],
features: ['title', 'playpause', 'current', 'progress', 'duration', 'volume', 'stop', 'speed', 'quality', 'loop', 'tracks', 'fullscreen', 'timerailthumbnails'],
speeds: ['2', '1.75', '1.5', '1.25', '1', '0.75', '0.5', '0.25'],
renderers: ['native_dash', 'native_hls', 'html5'],
defaultSpeed: defaultPlaybackRate,
autoGenerate: true,
autoDash: true,
autoHLS: false,
title: playerView.videoTitle,
qualityText: 'Quality',
defaultQuality: quality,
stretching: 'responsive',

View File

@ -0,0 +1,7 @@
.mejs__title {
color: white;
position: absolute;
top: 10px;
left: 10px;
font-size: 20px;
}

View File

@ -0,0 +1,40 @@
'use strict';
/**
* Title Text
*
* This feature adds text to the top left of the player. Typically this text is used for the video title.
*/
// Feature configuration
Object.assign(mejs.MepDefaults, {
/**
* @type {?String}
*/
title: null
});
Object.assign(MediaElementPlayer.prototype, {
/**
* Feature constructor.
*
* Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
* @param {MediaElementPlayer} player
*/
buildtitle (player) {
const
t = this,
titleDiv = document.createElement('div')
;
titleDiv.className = 'mejs__title';
titleDiv.innerHTML = '<span>' + t.options.title + '</span>';
t.container.children[0].appendChild(titleDiv);
//t.container.children[0].children[1].appendChild(titleDiv);
console.log(t);
console.log(t.container);
}
});

View File

@ -107,9 +107,9 @@ function updateSettingsView() {
document.getElementById('pageSelect').value = defaultPage;
document.getElementById('playerSelect').value = defaultPlayer;
document.getElementById('qualitySelect').value = defaultQuality;
document.getElementById('volumeSelect').value = defaultVolume;
document.getElementById('rateSelect').value = defaultPlaybackRate;
document.getElementById('regionSelect').value = defaultRegion;
settingsView.defaultVolume = defaultVolume;
settingsView.defaultVideoSpeed = defaultPlaybackRate;
if (defaultProxy) {
settingsView.proxyAddress = defaultProxy;
@ -492,9 +492,11 @@ function toggleTheme(themeValue) {
if (themeValue.checked === true) {
setTheme('dark');
currentTheme = 'dark';
settingsView.useTheme = true;
} else {
setTheme('light');
currentTheme = 'light';
settingsView.useTheme = false;
}
}

View File

@ -423,13 +423,18 @@ let settingsView = new Vue({
checkProxyResult: false,
proxyTestLoading: false,
debugMode: false,
distractionFreeMode: false
distractionFreeMode: false,
defaultVolume: 1,
defaultVideoSpeed: 1
},
methods: {
checkProxy() {
this.checkProxyResult = false;
this.proxyTestLoading = true;
electron.ipcRenderer.send("setProxy", this.proxyAddress);
let data = {
proxyAddress: this.proxyAddress,
};
electron.ipcRenderer.send("setProxy", data);
proxyRequest(() => {
$.ajax({
@ -461,6 +466,9 @@ let settingsView = new Vue({
computed: {
proxyTestButtonText() {
return this.proxyTestLoading ? "LOADING..." : "TEST PROXY"
},
volumeHtml() {
return Math.round(this.defaultVolume * 100);
}
},
template: settingsTemplate

View File

@ -97,6 +97,10 @@ input[type=text] {
border-bottom: 1px solid #E0E0E0;
}
.card {
background-color: #424242;
}
.message {
color: #757575;
}
@ -166,11 +170,6 @@ input[type=text] {
color: #E0E0E0;
}
.settingsButton {
color: #BDBDBD;
background-color: #424242;
}
.qualityTypes {
color: #E0E0E0;
background-color: #757575;

View File

@ -84,6 +84,10 @@ body {
border-bottom: 1px solid #757575;
}
.card {
background-color: #ffffff;
}
.message {
color: #757575;
}
@ -143,11 +147,6 @@ body {
color: #616161;
}
.settingsButton {
color: #424242;
background-color: #BDBDBD;
}
.qualityTypes {
background-color: #eeeeee;
}
@ -213,7 +212,6 @@ body {
#toast {
background-color: #212121;
color: #f5f5f5;
;
}
#confirmFunction {

View File

@ -249,10 +249,30 @@ a {
border-bottom: 1px solid #616161;
}
.settingsSlider {
padding: 30px;
}
#confirmSettings {
position: fixed;
margin-left: 250px;
margin-right: auto;
left: 4%;
right: 4%;
bottom: 20px;
height: 50px;
background-color: #212121;
color: #f5f5f5;
padding: 10px;
opacity: 0.9;
z-index: 1;
-webkit-box-shadow: 4px -2px 51px -6px rgba(0, 0, 0, 0.75);
}
.input-text-settings input {
width: auto;
border-bottom: 1px solid #616161;
width: 50%;
width: 35%;
margin: 0 auto;
display: block;
}
@ -267,20 +287,29 @@ a {
display: inline-block;
cursor: pointer;
margin: 5px;
-webkit-box-shadow: 4px 4px 10px 0px rgba(0, 0, 0, 0.75);
-moz-box-shadow: 4px 4px 10px 0px rgba(0, 0, 0, 0.75);
box-shadow: 4px 4px 10px 0px rgba(0, 0, 0, 0.75);
color: #2196f3;
}
.settingsSubmit {
padding: 15px;
color: #212121;
background-color: #f44336;
float: right;
color: #2196f3;
background-color: white;
cursor: pointer;
width: 150px;
-webkit-box-shadow: 4px 4px 10px 0px rgba(0, 0, 0, 0.75);
-moz-box-shadow: 4px 4px 10px 0px rgba(0, 0, 0, 0.75);
box-shadow: 4px 4px 10px 0px rgba(0, 0, 0, 0.75);
width: 120px;
height: 50px;
line-height: 50px;
background-color: #212121;
}
.card {
margin: 0 auto;
width: 90%;
text-align: center;
padding: 10px;
margin-bottom: 30px;
-webkit-box-shadow: 4px 4px 10px 0px rgba(0, 0, 0, 0.75);
-moz-box-shadow: 4px 4px 10px 0px rgba(0, 0, 0, 0.75);
box-shadow: 4px 4px 10px 0px rgba(0, 0, 0, 0.75);
}
.help {

242
src/style/mdSlider.css Normal file
View File

@ -0,0 +1,242 @@
.pure-material-slider {
--pure-material-safari-helper1: rgba(var(--pure-material-primary-rgb, 33, 150, 243), 0.04);
--pure-material-safari-helper2: rgba(var(--pure-material-primary-rgb, 33, 150, 243), 0.12);
--pure-material-safari-helper3: rgba(var(--pure-material-primary-rgb, 33, 150, 243), 0.16);
--pure-material-safari-helper4: rgba(var(--pure-material-primary-rgb, 33, 150, 243), 0.24);
display: inline-block;
width: 200px;
color: rgba(var(--pure-material-onsurface-rgb, 0, 0, 0), 0.87);
font-family: var(--pure-material-font, "Roboto", "Segoe UI", BlinkMacSystemFont, system-ui, -apple-system);
font-size: 16px;
line-height: 1.5;
}
/* Input */
.pure-material-slider > input {
-webkit-appearance: none;
position: relative;
top: 24px;
display: block;
margin: 0 0 -36px;
width: 100%;
height: 36px;
background-color: transparent;
cursor: pointer;
}
/* Without Span */
.pure-material-slider > input:last-child {
position: static;
margin: 0;
}
/* Span */
.pure-material-slider > span {
display: inline-block;
margin-bottom: 36px;
}
/* Focus */
.pure-material-slider > input:focus {
outline: none;
}
/* Disabled */
.pure-material-slider > input:disabled {
cursor: default;
opacity: 0.38;
}
.pure-material-slider > input:disabled + span {
color: rgba(var(--pure-material-onsurface-rgb, 0, 0, 0), 0.38);
}
/* Webkit | Track */
.pure-material-slider > input::-webkit-slider-runnable-track {
margin: 17px 0;
border-radius: 1px;
width: 100%;
height: 2px;
background-color: rgba(var(--pure-material-primary-rgb, 33, 150, 243), 0.24);
}
/* Webkit | Thumb */
.pure-material-slider > input::-webkit-slider-thumb {
appearance: none;
-webkit-appearance: none;
border: none;
border-radius: 50%;
height: 2px;
width: 2px;
background-color: rgb(var(--pure-material-primary-rgb, 33, 150, 243));
transform: scale(6, 6);
transition: box-shadow 0.2s;
}
/* Webkit | Hover, Focus */
.pure-material-slider:hover > input::-webkit-slider-thumb {
box-shadow: 0 0 0 2px var(--pure-material-safari-helper1);
}
.pure-material-slider > input:focus::-webkit-slider-thumb {
box-shadow: 0 0 0 2px var(--pure-material-safari-helper2);
}
.pure-material-slider:hover > input:focus::-webkit-slider-thumb {
box-shadow: 0 0 0 2px var(--pure-material-safari-helper3);
}
/* Webkit | Active */
.pure-material-slider > input:active::-webkit-slider-thumb {
box-shadow: 0 0 0 2px var(--pure-material-safari-helper4) !important;
}
/* Webkit | Disabled */
.pure-material-slider > input:disabled::-webkit-slider-runnable-track {
background-color: rgba(var(--pure-material-onsurface-rgb, 0, 0, 0), 0.38);
}
.pure-material-slider > input:disabled::-webkit-slider-thumb {
background-color: rgb(var(--pure-material-onsurface-rgb, 0, 0, 0));
color: rgb(var(--pure-material-surface-rgb, 255, 255, 255)); /* Safari */
box-shadow: 0 0 0 1px rgb(var(--pure-material-surface-rgb, 255, 255, 255)) !important;
transform: scale(4, 4);
}
/* Moz | Track */
.pure-material-slider > input::-moz-range-track {
margin: 17px 0;
border-radius: 1px;
width: 100%;
height: 2px;
background-color: rgba(var(--pure-material-primary-rgb, 33, 150, 243), 0.24);
}
/* Moz | Thumb */
.pure-material-slider > input::-moz-range-thumb {
appearance: none;
-moz-appearance: none;
border: none;
border-radius: 50%;
height: 2px;
width: 2px;
background-color: rgb(var(--pure-material-primary-rgb, 33, 150, 243));
transform: scale(6, 6);
transition: box-shadow 0.2s;
}
/* Moz | Progress */
.pure-material-slider > input::-moz-range-progress {
border-radius: 1px;
height: 2px;
background-color: rgb(var(--pure-material-primary-rgb, 33, 150, 243));
}
/* Moz | Hover, Focus */
.pure-material-slider:hover > input:hover::-moz-range-thumb {
box-shadow: 0 0 0 2px rgba(var(--pure-material-primary-rgb, 33, 150, 243), 0.04);
}
.pure-material-slider > input:focus::-moz-range-thumb {
box-shadow: 0 0 0 2px rgba(var(--pure-material-primary-rgb, 33, 150, 243), 0.12);
}
.pure-material-slider:hover > input:focus::-moz-range-thumb {
box-shadow: 0 0 0 2px rgba(var(--pure-material-primary-rgb, 33, 150, 243), 0.16);
}
/* Moz | Active */
.pure-material-slider > input:active::-moz-range-thumb {
box-shadow: 0 0 0 2px rgba(var(--pure-material-primary-rgb, 33, 150, 243), 0.24) !important;
}
/* Moz | Disabled */
.pure-material-slider > input:disabled::-moz-range-track {
background-color: rgba(var(--pure-material-onsurface-rgb, 0, 0, 0), 0.38);
}
.pure-material-slider > input:disabled::-moz-range-progress {
background-color: rgba(var(--pure-material-onsurface-rgb, 0, 0, 0), 0.87);
}
.pure-material-slider > input:disabled::-moz-range-thumb {
background-color: rgb(var(--pure-material-onsurface-rgb, 0, 0, 0));
box-shadow: 0 0 0 1px rgb(var(--pure-material-surface-rgb, 255, 255, 255)) !important;
transform: scale(4, 4);
}
.pure-material-slider > input::-moz-focus-outer {
border: none;
}
/* MS | Track */
.pure-material-slider > input::-ms-track {
box-sizing: border-box;
margin: 17px 0;
border: none;
border-radius: 1px;
padding: 0 17px;
width: 100%;
height: 2px;
background-color: transparent;
}
.pure-material-slider > input::-ms-fill-lower {
border-radius: 1px;
height: 2px;
background-color: rgb(var(--pure-material-primary-rgb, 33, 150, 243));
}
/* MS | Progress */
.pure-material-slider > input::-ms-fill-upper {
border-radius: 1px;
height: 2px;
background-color: rgba(var(--pure-material-primary-rgb, 33, 150, 243), 0.24);
}
/* MS | Thumb */
.pure-material-slider > input::-ms-thumb {
appearance: none;
margin: 0 17px;
border: none;
border-radius: 50%;
height: 2px;
width: 2px;
background-color: rgb(var(--pure-material-primary-rgb, 33, 150, 243));
transform: scale(6, 6);
transition: box-shadow 0.2s;
}
/* MS | Hover, Focus */
.pure-material-slider:hover > input::-ms-thumb {
box-shadow: 0 0 0 2px rgba(var(--pure-material-primary-rgb, 33, 150, 243), 0.04);
}
.pure-material-slider > input:focus::-ms-thumb {
box-shadow: 0 0 0 2px rgba(var(--pure-material-primary-rgb, 33, 150, 243), 0.12);
}
.pure-material-slider:hover > input:focus::-ms-thumb {
box-shadow: 0 0 0 2px rgba(var(--pure-material-primary-rgb, 33, 150, 243), 0.16);
}
/* MS | Active */
.pure-material-slider > input:active::-ms-thumb {
box-shadow: 0 0 0 2px rgba(var(--pure-material-primary-rgb, 33, 150, 243), 0.24) !important;
}
/* MS | Disabled */
.pure-material-slider > input:disabled::-ms-fill-lower {
background-color: rgba(var(--pure-material-onsurface-rgb, 0, 0, 0), 0.38);
}
.pure-material-slider > input:disabled::-ms-fill-upper {
background-color: rgba(var(--pure-material-onsurface-rgb, 0, 0, 0), 0.38);
opacity: 0.38;
}
.pure-material-slider > input:disabled::-ms-thumb {
background-color: rgb(var(--pure-material-onsurface-rgb, 0, 0, 0));
box-shadow: 0 0 0 1px rgb(var(--pure-material-surface-rgb, 255, 255, 255)) !important;
transform: scale(4, 4);
}

View File

@ -23,14 +23,16 @@
/* select starting stylings ------------------------------*/
.select {
position: relative;
width: 350px;
width: 200px;
display: inline-block;
padding: 10px 10px 10px 0;
}
.select-text {
position: relative;
font-family: inherit;
background-color: transparent;
width: 350px;
width: 200px;
padding: 10px 10px 10px 0;
font-size: 18px;
border-radius: 0;
@ -86,7 +88,7 @@
.select-bar {
position: relative;
display: block;
width: 350px;
width: 200px;
}
.select-bar:before, .select-bar:after {

View File

@ -1,23 +1,14 @@
<div v-if="seen">
<h1 class="center">Settings</h1>
<div class='center'>
<div class='card'>
<h2>General Settings</h2>
<input type="checkbox" id="themeSwitch" name="set-name" class="switch-input" onchange='toggleTheme(this)' :checked='useTheme'>
<label for="themeSwitch" class="switch-label">Use Dark Theme</label>
<input type="checkbox" id="updatesSwitch" name="set-name" class="switch-input" :checked='updates'>
<label for="updatesSwitch" class="switch-label">Check for Updates</label>
<input type="checkbox" id="localSwitch" name="set-name" class="switch-input" :checked='localScrape'>
<label for="localSwitch" class="switch-label">Grab videos locally</label>
<input type="checkbox" id="distractionFreeModeSwitch" name="set-name" class="switch-input" :checked='distractionFreeMode'>
<label for="distractionFreeModeSwitch" class="switch-label">Distraction Free Mode</label>
<input type="checkbox" id="historySwitch" name="set-name" class="switch-input" :checked='history'>
<label for="historySwitch" class="switch-label">Remember History</label>
<input type="checkbox" id="autoplaySwitch" name="set-name" class="switch-input" :checked='autoplay'>
<label for="autoplaySwitch" class="switch-label">Autoplay Videos</label>
<input type="checkbox" id="subtitlesSwitch" name="set-name" class="switch-input" :checked='subtitles'>
<label for="subtitlesSwitch" class="switch-label">Turn on Subtitles by Default</label>
<input type="checkbox" id="debugSwitch" name="set-name" class="switch-input" :checked='debugMode'>
<label for="debugSwitch" class="switch-label">Enable Debug Mode (Prints data to the console)</label>
<br /><br />
<br />
<br />
<div class="select center">
<select id='pageSelect' class="select-text" required>
<option value="subscriptions" selected>Subcriptions</option>
@ -30,79 +21,6 @@
<span class="select-bar"></span>
<label class="select-label">Default Landing Page</label>
</div>
<br /><br />
<div class="select center">
<select id='playerSelect' class="select-text" required>
<option value="dash" selected>Dash Player</option>
<option value="legacy">Legacy Player</option>
<option value="embed">YouTube Embedded Player</option>
</select>
<span class="select-highlight"></span>
<span class="select-bar"></span>
<label class="select-label">Default Video Player</label>
</div>
<br /><br />
<div class="select center">
<select id='qualitySelect' class="select-text" required>
<option value="144">144p</option>
<option value="240">240p</option>
<option value="360">360p</option>
<option value="480">480p</option>
<option value="720" selected>720p</option>
<option value="1080">1080p</option>
<option value="1440">1440p</option>
<option value="4k">4k</option>
<option value="Auto">Auto</option>
</select>
<span class="select-highlight"></span>
<span class="select-bar"></span>
<label class="select-label">Default Video Quality</label>
</div>
<br /><br />
<div class="select center">
<select id='volumeSelect' class="select-text" required>
<option value="1" selected>100%</option>
<option value="0.95">95%</option>
<option value="0.90">90%</option>
<option value="0.85">85%</option>
<option value="0.80">80%</option>
<option value="0.75">75%</option>
<option value="0.70">70%</option>
<option value="0.65">65%</option>
<option value="0.60">60%</option>
<option value="0.55">55%</option>
<option value="0.50">50%</option>
<option value="0.45">45%</option>
<option value="0.40">40%</option>
<option value="0.35">35%</option>
<option value="0.30">30%</option>
<option value="0.25">25%</option>
<option value="0.20">20%</option>
<option value="0.15">15%</option>
<option value="0.10">10%</option>
<option value="0.05">5%</option>
</select>
<span class="select-highlight"></span>
<span class="select-bar"></span>
<label class="select-label">Default Volume</label>
</div>
<br /><br />
<div class="select center">
<select id='rateSelect' class="select-text" required>
<option value="0.25">0.25x</option>
<option value="0.5">0.5x</option>
<option value="0.75">0.75x</option>
<option value="1" selected>1x</option>
<option value="1.25">1.25x</option>
<option value="1.5">1.5x</option>
<option value="1.75">1.75x</option>
<option value="2">2x</option>
</select>
<span class="select-highlight"></span>
<span class="select-bar"></span>
<label class="select-label">Default Video Speed</label>
</div>
<br /><br />
<div class="select center">
<select id='regionSelect' class="select-text" required>
<option value='AF'>Afghanistan</option>
@ -349,17 +267,87 @@
<label class="select-label">Region for Trending</label>
</div>
<br />
<br />
</div>
<div class='center'>
<div class="input-text-settings">
<label for="invidiousInstance">Current Invidious Instance (Defaults to https://invidio.us)</label>
<input type="text" id="invidiousInstance" name="set-name" v-model="invidiousInstance" />
<a href='https://github.com/omarroth/invidious/wiki/Invidious-Instances'>
<p>See Public Instances</p>
</a>
<div class='card'>
<h2>Player Settings</h2>
<input type="checkbox" id="historySwitch" name="set-name" class="switch-input" :checked='history'>
<label for="historySwitch" class="switch-label">Remember History</label>
<input type="checkbox" id="autoplaySwitch" name="set-name" class="switch-input" :checked='autoplay'>
<label for="autoplaySwitch" class="switch-label">Autoplay Videos</label>
<input type="checkbox" id="subtitlesSwitch" name="set-name" class="switch-input" :checked='subtitles'>
<label for="subtitlesSwitch" class="switch-label">Turn on Subtitles by Default</label>
<input type="checkbox" id="localSwitch" name="set-name" class="switch-input" :checked='localScrape'>
<label for="localSwitch" class="switch-label">Grab videos locally</label>
<br />
<label class="settingsSlider pure-material-slider">
<input id='volumeSelect' type="range" min="0" max="1" step="0.01" v-model.number="defaultVolume">
<span>Default Volume - <span>{{volumeHtml}}</span>%</span>
</label>
<label class="pure-material-slider">
<input id='rateSelect' type="range" min="0.25" max="2" step="0.25" v-model.number="defaultVideoSpeed">
<span>Default Video Speed - <span>{{defaultVideoSpeed}}</span>x</span>
</label>
<br />
<br />
<div class="select center">
<select id='playerSelect' class="select-text" required>
<option value="dash" selected>Dash Player</option>
<option value="legacy">Legacy Player</option>
<option value="embed">YouTube Embedded Player</option>
</select>
<span class="select-highlight"></span>
<span class="select-bar"></span>
<label class="select-label">Default Video Player</label>
</div>
<div class="select center">
<select id='qualitySelect' class="select-text" required>
<option value="144">144p</option>
<option value="240">240p</option>
<option value="360">360p</option>
<option value="480">480p</option>
<option value="720" selected>720p</option>
<option value="1080">1080p</option>
<option value="1440">1440p</option>
<option value="4k">4k</option>
<option value="Auto">Auto</option>
</select>
<span class="select-highlight"></span>
<span class="select-bar"></span>
<label class="select-label">Default Video Quality</label>
</div>
<br />
<br />
</div>
<div class="center">
<div class='card'>
<h2>Subscription Settings</h2>
<br />
<br />
<div class="select center">
<select id="exportSelect" class="select-text" required>
<option>FreeTube</option>
<option>NewPipe</option>
<option>OPML</option>
</select>
<span class="select-highlight"></span>
<span class="select-bar"></span>
<label class="select-label">Subscriptions Export Format</label>
</div>
<div class='center'>
<div onclick='importSubscriptions()' class='settingsButton'>
IMPORT SUBSCRIPTIONS
</div>
<div onclick='exportSubscriptions();' class='settingsButton'>
EXPORT SUBSCRIPTIONS
</div>
</div>
<br />
<br />
</div>
<div class="card">
<h2>Advanced Settings</h2>
<input type="checkbox" id="debugSwitch" name="set-name" class="switch-input" :checked='debugMode'>
<label for="debugSwitch" class="switch-label">Enable Debug Mode (Prints data to the console)</label>
<input type="checkbox" id="torSwitch" name="set-name" class="switch-input" :checked='useTor'>
<label for="torSwitch" class="switch-label">Use Tor / Proxy for API calls</label>
<div class="input-text-settings">
@ -380,45 +368,38 @@
<div v-on:click='checkProxy' class='center settingsButton'>
{{proxyTestButtonText}}
</div>
<br />
<br />
<div class='center'>
<div class="input-text-settings">
<label for="invidiousInstance">Current Invidious Instance (Defaults to https://invidio.us)</label>
<input type="text" id="invidiousInstance" name="set-name" v-model="invidiousInstance" />
<a href='https://github.com/omarroth/invidious/wiki/Invidious-Instances'>
<p>See Public Instances</p>
</a>
</div>
</div>
<br />
<br />
<div class='center'>
<div onclick='confirmFunction("Are you sure you want to delete your history?", clearFile, "history")' class='settingsButton'>
CLEAR HISTORY
</div>
<div onclick='confirmFunction("Are you sure you want to remove all saved videos?", clearFile, "saved")' class='settingsButton'>
CLEAR FAVORITED VIDEOS
</div>
<div onclick='confirmFunction("Are you sure you want to remove all subscriptions?", clearFile, "subscriptions")' class='settingsButton'>
CLEAR SUBSCRIPTIONS
</div>
</div>
<br />
<br />
</div>
<br />
<br />
<br />
<br />
<div class="select center">
<select id="exportSelect" class="select-text" required>
<option>FreeTube</option>
<option>NewPipe</option>
<option>OPML</option>
</select>
<span class="select-highlight"></span>
<span class="select-bar"></span>
<label class="select-label">Subscriptions Export Format</label>
</div>
<div class='center'>
<div onclick='importSubscriptions()' class='settingsButton'>
IMPORT SUBSCRIPTIONS
</div>
<div onclick='exportSubscriptions();' class='settingsButton'>
EXPORT SUBSCRIPTIONS
</div>
</div>
<br />
<br />
<div class='center'>
<div onclick='confirmFunction("Are you sure you want to delete your history?", clearFile, "history")' class='settingsButton'>
CLEAR HISTORY
</div>
<div onclick='confirmFunction("Are you sure you want to remove all saved videos?", clearFile, "saved")' class='settingsButton'>
CLEAR FAVORITED VIDEOS
</div>
<div onclick='confirmFunction("Are you sure you want to remove all subscriptions?", clearFile, "subscriptions")' class='settingsButton'>
CLEAR SUBSCRIPTIONS
</div>
</div>
<br />
<br />
<div onclick='updateSettings()' class='center settingsSubmit'>
SAVE SETTINGS
<div id='confirmSettings'>
<span onclick='updateSettings()' class='settingsSubmit'>
SAVE SETTINGS
</span>
<p>You must save your changes in order for new settings to take effect.</p>
</div>
</div>
</div>