Compare commits
20 Commits
9cd1e15304
...
2a4a576fad
Author | SHA1 | Date |
---|---|---|
|
2a4a576fad | |
|
dea7abe861 | |
|
3025cbd72c | |
|
ce5deeb4a1 | |
|
fdc20e72a2 | |
|
fb63356f10 | |
|
c8a9204103 | |
|
493cad28d3 | |
|
d365ede8c2 | |
|
816d77c44b | |
|
89738ad9b7 | |
|
de2dfb7506 | |
|
23a64947c2 | |
|
d6eca0bde5 | |
|
ffb38aac23 | |
|
09909803c2 | |
|
64bd52acdd | |
|
69a6985c8d | |
|
13d48d433d | |
|
506865d839 |
File diff suppressed because one or more lines are too long
|
@ -38,7 +38,7 @@
|
||||||
"case-sensitive-paths-webpack-plugin": "^2.1.2",
|
"case-sensitive-paths-webpack-plugin": "^2.1.2",
|
||||||
"chalk": "^2.4.1",
|
"chalk": "^2.4.1",
|
||||||
"css-loader": "^1.0.0",
|
"css-loader": "^1.0.0",
|
||||||
"cssnano": "^4.0.1",
|
"cssnano": "^4.0.3",
|
||||||
"debug": "^3.1.0",
|
"debug": "^3.1.0",
|
||||||
"eslint": "4",
|
"eslint": "4",
|
||||||
"eslint-config-airbnb-base": "^13.0.0",
|
"eslint-config-airbnb-base": "^13.0.0",
|
||||||
|
@ -48,6 +48,7 @@
|
||||||
"execa": "^0.10.0",
|
"execa": "^0.10.0",
|
||||||
"file-loader": "^1.1.11",
|
"file-loader": "^1.1.11",
|
||||||
"html-webpack-plugin": "^3.2.0",
|
"html-webpack-plugin": "^3.2.0",
|
||||||
|
"image-webpack-loader": "^4.3.1",
|
||||||
"jimp": "^0.2.28",
|
"jimp": "^0.2.28",
|
||||||
"mini-css-extract-plugin": "^0.4.1",
|
"mini-css-extract-plugin": "^0.4.1",
|
||||||
"node-sass": "^4.9.2",
|
"node-sass": "^4.9.2",
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
@import 'header/nav';
|
@import 'header/nav';
|
||||||
@import 'header/meta';
|
@import 'header/meta';
|
||||||
|
@import 'header/player';
|
||||||
|
|
|
@ -1,2 +1,10 @@
|
||||||
@import 'main/page';
|
@import 'main/page';
|
||||||
@import 'main/smoke';
|
@import 'main/smoke';
|
||||||
|
|
||||||
|
#main {
|
||||||
|
background-image: url(./images/decay.png);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center center;
|
||||||
|
background-size: 50%;
|
||||||
|
background-color: #000;
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
@mixin saturate-from-red($brightness: 250%, $saturate: 45%) {
|
||||||
|
filter: hue-rotate(220deg) brightness($brightness) saturate($saturate);
|
||||||
|
}
|
|
@ -11,18 +11,20 @@ $icedream-text-color: #EEE !default;
|
||||||
$icedream-extended-line-height: 5vmin !default;
|
$icedream-extended-line-height: 5vmin !default;
|
||||||
|
|
||||||
// extra features
|
// extra features
|
||||||
|
$icedream-saturation: true !default;
|
||||||
$icedream-metadata-overlay: true !default;
|
$icedream-metadata-overlay: true !default;
|
||||||
$icedream-metadata-overlay-background-gradient-from: rgba(0, 0, 0, .75) !default;
|
$icedream-metadata-overlay-background-gradient-from: #000 !default;
|
||||||
$icedream-metadata-overlay-background-gradient-to: transparent !default;
|
$icedream-metadata-overlay-background-gradient-to: transparent !default;
|
||||||
$icedream-metadata-prefix: '🎶 Now playing: ' !default;
|
$icedream-metadata-prefix: '🎶 Now playing: ' !default;
|
||||||
$icedream-nav-tab-fix: false !default;
|
$icedream-nav-tab-fix: false !default;
|
||||||
$icedream-nav-bg-fade: true !default;
|
$icedream-nav-bg-fade: true !default;
|
||||||
|
$icedream-fog-base-opacity: 0.05 !default;
|
||||||
$icedream-fog-bg: true !default;
|
$icedream-fog-bg: true !default;
|
||||||
$icedream-fog-bg-blur: false !default;
|
$icedream-fog-bg-blur: false !default;
|
||||||
$icedream-fog-bg-animated: true !default;
|
$icedream-fog-bg-animated: true !default;
|
||||||
$icedream-fog-bg-pulse-animation-length: 68s !default;
|
$icedream-fog-bg-pulse-animation-length: 68s !default;
|
||||||
$icedream-fog-bg-slide-animation-length: 25s !default;
|
$icedream-fog-bg-slide-animation-length: 25s !default;
|
||||||
$icedream-station-fill-background-color: rgba(255, 255, 255, .1);
|
$icedream-station-fill-background-color: rgba(255, 255, 255, .1) !default;
|
||||||
|
|
||||||
$rekt-tab-count: 4 !default;
|
$rekt-tab-count: 4 !default;
|
||||||
$rekt-border-color: #AAA !default;
|
$rekt-border-color: #AAA !default;
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
// player
|
||||||
|
#player {
|
||||||
|
.player_button {
|
||||||
|
@if $icedream-saturation {
|
||||||
|
@include saturate-from-red();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.slider {
|
||||||
|
.active {
|
||||||
|
@if $icedream-saturation {
|
||||||
|
@include saturate-from-red();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,7 @@
|
||||||
@charset 'UTF-8';
|
@charset 'UTF-8';
|
||||||
|
|
||||||
|
@import 'mixins';
|
||||||
|
|
||||||
@import 'variables';
|
@import 'variables';
|
||||||
|
|
||||||
@import 'font';
|
@import 'font';
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 29 KiB |
Binary file not shown.
Before Width: | Height: | Size: 328 KiB After Width: | Height: | Size: 59 KiB |
|
@ -17,4 +17,44 @@
|
||||||
&:not(#page_Chat) {
|
&:not(#page_Chat) {
|
||||||
@include icedream-font;
|
@include icedream-font;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&#page_EQ {
|
||||||
|
#wave {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 25%;
|
||||||
|
bottom: 25%;
|
||||||
|
}
|
||||||
|
#eq {
|
||||||
|
margin: 20vh;
|
||||||
|
transition: opacity ease-out .33s, transform ease-out .33s;
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(0.75);
|
||||||
|
.slider {
|
||||||
|
background-color: rgba(0, 0, 0, .75);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#bars {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
#eq {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.eq {
|
||||||
|
@if $icedream-saturation {
|
||||||
|
@include saturate-from-red();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#wave {
|
||||||
|
@if $icedream-saturation {
|
||||||
|
@include saturate-from-red(300%, 5%);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
opacity: .2;
|
opacity: $icedream-fog-base-opacity;
|
||||||
background-image: url('../images/whitefog.png');
|
background-image: url('../images/whitefog.png');
|
||||||
background-attachment: fixed;
|
background-attachment: fixed;
|
||||||
content: ' '; // sass-lint:disable-line variable-for-property
|
content: ' '; // sass-lint:disable-line variable-for-property
|
||||||
|
@ -36,19 +36,19 @@
|
||||||
transform-origin: left;
|
transform-origin: left;
|
||||||
@keyframes icedream-bg-pulse {
|
@keyframes icedream-bg-pulse {
|
||||||
0% {
|
0% {
|
||||||
opacity: .3;
|
opacity: $icedream-fog-base-opacity - ($icedream-fog-base-opacity * .05);
|
||||||
}
|
}
|
||||||
22% {
|
22% {
|
||||||
opacity: .2;
|
opacity: $icedream-fog-base-opacity - ($icedream-fog-base-opacity * .12);
|
||||||
}
|
}
|
||||||
54% {
|
54% {
|
||||||
opacity: .35;
|
opacity: $icedream-fog-base-opacity + ($icedream-fog-base-opacity * .15);
|
||||||
}
|
}
|
||||||
77% {
|
77% {
|
||||||
opacity: .16;
|
opacity: $icedream-fog-base-opacity + ($icedream-fog-base-opacity * .5);
|
||||||
}
|
}
|
||||||
100% {
|
100% {
|
||||||
opacity: .3;
|
opacity: $icedream-fog-base-opacity - ($icedream-fog-base-opacity * .05);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@keyframes icedream-bg-slide {
|
@keyframes icedream-bg-slide {
|
||||||
|
|
|
@ -40,6 +40,8 @@ const {
|
||||||
ModuleConcatenationPlugin,
|
ModuleConcatenationPlugin,
|
||||||
} = optimize;
|
} = optimize;
|
||||||
|
|
||||||
|
const dj = 'icedream';
|
||||||
|
|
||||||
export default (options, { mode }) => {
|
export default (options, { mode }) => {
|
||||||
const environment = new Environment({
|
const environment = new Environment({
|
||||||
// @HACK
|
// @HACK
|
||||||
|
@ -59,39 +61,62 @@ export default (options, { mode }) => {
|
||||||
docker,
|
docker,
|
||||||
} = environment;
|
} = environment;
|
||||||
|
|
||||||
const baseOutputFilename = development
|
const baseOutputFilepath = 'static/theme/[type]/[filename]';
|
||||||
? 'assets/dev/[name].dev.[ext]'
|
const filenames = {
|
||||||
// Always use a hash (in production) to prevent files with the same name causing issues
|
css: '[name].[ext]',
|
||||||
: 'assets/prod/[chunkhash:2]/[name].[chunkhash:8].[ext]';
|
default: development
|
||||||
|
? '[name].dev.[ext]'
|
||||||
|
// Always use a hash (in production) to prevent files with the same name causing issues
|
||||||
|
: '[name].[chunkhash:8].[ext]',
|
||||||
|
};
|
||||||
|
|
||||||
const webpackChunkFilename = baseOutputFilename
|
function replaceField(string, name, value) {
|
||||||
.replace(/\[ext(.*?)\]/g, 'js');
|
const retval = string.replace(new RegExp(`\\[${name}(.*?)\\]`), value);
|
||||||
const webpackOutputFilename = webpackChunkFilename;
|
debug('replaceField:', { args: { string, name, value } }, string, '=>', retval);
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
const assetOutputFilename = baseOutputFilename
|
function getOutputFilename(type) {
|
||||||
.replace(/\[chunkhash(.*?)\]/g, '[hash$1]');
|
let filename = baseOutputFilepath;
|
||||||
|
switch (type) {
|
||||||
|
case 'css':
|
||||||
|
filename = replaceField(filename, 'type', type);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
filename = replaceField(filename, 'type', `${type}/${dj}`);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
filename = replaceField(filename, 'filename', filenames[type] || filenames.default);
|
||||||
|
return filename;
|
||||||
|
}
|
||||||
|
|
||||||
const cssOutputFileName = baseOutputFilename
|
function getAssetOutputFilename(type) {
|
||||||
|
let filename = getOutputFilename(type);
|
||||||
|
filename = replaceField(filename, 'chunkhash', '[hash$1]');
|
||||||
|
return filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
const cssOutputFileName = getOutputFilename('css')
|
||||||
.replace(/\[ext(.*?)\]/g, 'css');
|
.replace(/\[ext(.*?)\]/g, 'css');
|
||||||
// .replace(/\[chunkhash(.*?)\]/g, '[contenthash$1]');
|
// .replace(/\[chunkhash(.*?)\]/g, '[contenthash$1]');
|
||||||
const cssChunkOutputFileName = baseOutputFilename
|
const cssChunkOutputFileName = getOutputFilename('css')
|
||||||
.replace(/\[chunkhash(.*?)\]/g, '[id$1]')
|
.replace(/\[chunkhash(.*?)\]/g, '[id$1]')
|
||||||
.replace(/\[ext(.*?)\]/g, 'css');
|
.replace(/\[ext(.*?)\]/g, 'css');
|
||||||
// const cssOutputRebasePath = `${slash(path.relative(path.dirname(cssOutputFileName), ''))}/`;
|
// const cssOutputRebasePath = `${slash(path.relative(path.dirname(cssOutputFileName), ''))}/`;
|
||||||
const cssOutputRebasePath = '/';
|
const cssOutputRebasePath = '../../../';
|
||||||
|
|
||||||
// Default options for file-loader
|
// Default options for file-loader
|
||||||
const fileLoaderOptions = {
|
const getFileLoaderOptions = type => ({
|
||||||
name: assetOutputFilename,
|
name: getAssetOutputFilename(type),
|
||||||
publicPath: cssOutputRebasePath,
|
publicPath: cssOutputRebasePath,
|
||||||
};
|
});
|
||||||
|
|
||||||
// Default options for url-loader
|
// Default options for url-loader
|
||||||
const urlLoaderOptions = {
|
const getUrlLoaderOptions = type => ({
|
||||||
...fileLoaderOptions,
|
...getFileLoaderOptions(type),
|
||||||
// limit: 1, // Don't inline anything (but empty files) by default
|
// limit: 1, // Don't inline anything (but empty files) by default
|
||||||
limit: 4 * 1024,
|
limit: 4 * 1024,
|
||||||
};
|
});
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
name: 'frontend',
|
name: 'frontend',
|
||||||
|
@ -168,22 +193,57 @@ export default (options, { mode }) => {
|
||||||
/\.jpe?g$/i, // jpeg
|
/\.jpe?g$/i, // jpeg
|
||||||
].map(test => ({
|
].map(test => ({
|
||||||
test,
|
test,
|
||||||
loader: 'url-loader',
|
use: [
|
||||||
options: {
|
{
|
||||||
...urlLoaderOptions,
|
loader: 'url-loader',
|
||||||
// fallback: 'responsive-loader',
|
options: {
|
||||||
},
|
...getUrlLoaderOptions('img'),
|
||||||
|
// fallback: 'responsive-loader',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
loader: 'image-webpack-loader',
|
||||||
|
options: {
|
||||||
|
mozjpeg: {
|
||||||
|
progressive: true,
|
||||||
|
quality: 80,
|
||||||
|
},
|
||||||
|
optipng: {
|
||||||
|
enabled: true,
|
||||||
|
optimizationLevel: 7,
|
||||||
|
},
|
||||||
|
pngquant: {
|
||||||
|
enabled: false,
|
||||||
|
quality: '65-85',
|
||||||
|
speed: 2,
|
||||||
|
strip: true,
|
||||||
|
},
|
||||||
|
gifsicle: {
|
||||||
|
interlaced: false,
|
||||||
|
},
|
||||||
|
disable: development,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
})),
|
})),
|
||||||
|
|
||||||
...[
|
...[
|
||||||
/\.(mp4|ogg|webm)$/i, // video
|
/\.(mp4|ogg|webm)$/i, // video
|
||||||
/\.(eot|otf|ttf|woff|woff2)$/i, // fonts
|
|
||||||
/\.(wav|mp3|m4a|aac|oga)$/i, // audio
|
/\.(wav|mp3|m4a|aac|oga)$/i, // audio
|
||||||
].map(test => ({
|
].map(test => ({
|
||||||
test,
|
test,
|
||||||
loader: 'url-loader',
|
loader: 'url-loader',
|
||||||
options: urlLoaderOptions,
|
options: getUrlLoaderOptions('media'),
|
||||||
})),
|
})),
|
||||||
|
|
||||||
|
...[
|
||||||
|
/\.(eot|otf|ttf|woff|woff2)$/i, // fonts
|
||||||
|
].map(test => ({
|
||||||
|
test,
|
||||||
|
loader: 'url-loader',
|
||||||
|
options: getUrlLoaderOptions('font'),
|
||||||
|
})),
|
||||||
|
|
||||||
{
|
{
|
||||||
test: /\.css$/,
|
test: /\.css$/,
|
||||||
use: environment.styleLoaders(),
|
use: environment.styleLoaders(),
|
||||||
|
@ -205,8 +265,8 @@ export default (options, { mode }) => {
|
||||||
},
|
},
|
||||||
|
|
||||||
output: {
|
output: {
|
||||||
filename: webpackOutputFilename,
|
filename: replaceField(getOutputFilename('js'), 'ext', 'js'),
|
||||||
chunkFilename: webpackChunkFilename,
|
chunkFilename: replaceField(getOutputFilename('js'), 'ext', 'js'),
|
||||||
path: path.join(__dirname, 'dist'),
|
path: path.join(__dirname, 'dist'),
|
||||||
publicPath: '',
|
publicPath: '',
|
||||||
globalObject: 'this', // https://github.com/webpack-contrib/worker-loader/issues/142#issuecomment-385764803
|
globalObject: 'this', // https://github.com/webpack-contrib/worker-loader/issues/142#issuecomment-385764803
|
||||||
|
@ -325,9 +385,9 @@ export default (options, { mode }) => {
|
||||||
sourceMap: true,
|
sourceMap: true,
|
||||||
}),
|
}),
|
||||||
new OptimizeCssAssetsPlugin({
|
new OptimizeCssAssetsPlugin({
|
||||||
assetNameRegExp: /\.css$/gi,
|
|
||||||
cssProcessor: cssnano,
|
cssProcessor: cssnano,
|
||||||
cssProcessorOptions: {
|
cssProcessorOptions: {
|
||||||
|
preset: 'advanced',
|
||||||
parser: postcssSafeParser,
|
parser: postcssSafeParser,
|
||||||
discardComments: { removeAll: true },
|
discardComments: { removeAll: true },
|
||||||
},
|
},
|
||||||
|
@ -337,7 +397,7 @@ export default (options, { mode }) => {
|
||||||
},
|
},
|
||||||
devtool: server ? 'cheap-module-source-map' : 'source-map',
|
devtool: server ? 'cheap-module-source-map' : 'source-map',
|
||||||
entry: {
|
entry: {
|
||||||
app: [
|
[dj]: [
|
||||||
path.join(__dirname, 'src'),
|
path.join(__dirname, 'src'),
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue