New theme - better look&feel

This commit is contained in:
Axel de Vignon 2019-10-03 16:00:46 +02:00
parent 5835c4a735
commit 7583c3f1a6
No known key found for this signature in database
GPG key ID: 9A6744F71A14F80F
14 changed files with 10298 additions and 24721 deletions

View file

@ -6,33 +6,6 @@ APP_LOG_LEVEL=debug
APP_URL=http://localhost
TIMEZONE=Europe/London
LOCALE=en
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
STORAGE_PATH=.
UPLOAD_MAX_FILESIZE=50M
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
UPLOAD_LIMIT_IPS=

View file

@ -10,7 +10,6 @@ class WebController extends Controller
{
function homepage(Request $request)
{
if (Upload::canUpload($request->ip()) !== true) {
return view('cannotupload', [
'u' => $request->get('u')

18969
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,21 +1,32 @@
{
"private": true,
"scripts": {
"dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch-poll": "npm run watch -- --watch-poll",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
"laravel-mix": "^5.0.0"
},
"dependencies": {
"clipboard": "^1.7.1",
"cross-env": "^3.2.3",
"dropzone": "^5.1.1",
"jquery": "^3.2.1"
}
"private": true,
"scripts": {
"dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "npm run development -- --watch",
"watch-poll": "npm run watch -- --watch-poll",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
"axios": "^0.19",
"bootstrap": "^4.1.0",
"cross-env": "^5.1",
"jquery": "^3.2",
"laravel-mix": "^4.0.7",
"lodash": "^4.17.13",
"popper.js": "^1.12",
"resolve-url-loader": "^2.3.1",
"sass": "^1.15.2",
"sass-loader": "^7.1.0",
"vue": "^2.5.17",
"vue-template-compiler": "^2.6.10"
},
"dependencies": {
"clipboard": "^1.7.1",
"cross-env": "^3.2.3",
"dropzone": "^5.1.1",
"jquery": "^3.2.1"
}
}

105
public/css/app.css vendored

File diff suppressed because one or more lines are too long

BIN
public/img/background.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 MiB

139
public/js/app.js vendored

File diff suppressed because one or more lines are too long

147
public/js/manifest.js vendored
View file

@ -1,14 +1,18 @@
/******/ (function(modules) { // webpackBootstrap
/******/ // install a JSONP callback for chunk loading
/******/ var parentJsonpFunction = window["webpackJsonp"];
/******/ window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {
/******/ function webpackJsonpCallback(data) {
/******/ var chunkIds = data[0];
/******/ var moreModules = data[1];
/******/ var executeModules = data[2];
/******/
/******/ // add "moreModules" to the modules object,
/******/ // then flag all "chunkIds" as loaded and fire callback
/******/ var moduleId, chunkId, i = 0, resolves = [], result;
/******/ var moduleId, chunkId, i = 0, resolves = [];
/******/ for(;i < chunkIds.length; i++) {
/******/ chunkId = chunkIds[i];
/******/ if(installedChunks[chunkId])
/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
/******/ resolves.push(installedChunks[chunkId][0]);
/******/ }
/******/ installedChunks[chunkId] = 0;
/******/ }
/******/ for(moduleId in moreModules) {
@ -16,32 +20,55 @@
/******/ modules[moduleId] = moreModules[moduleId];
/******/ }
/******/ }
/******/ if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);
/******/ while(resolves.length)
/******/ if(parentJsonpFunction) parentJsonpFunction(data);
/******/
/******/ while(resolves.length) {
/******/ resolves.shift()();
/******/ if(executeModules) {
/******/ for(i=0; i < executeModules.length; i++) {
/******/ result = __webpack_require__(__webpack_require__.s = executeModules[i]);
/******/ }
/******/
/******/ // add entry modules from loaded chunk to deferred list
/******/ deferredModules.push.apply(deferredModules, executeModules || []);
/******/
/******/ // run deferred modules when all chunks ready
/******/ return checkDeferredModules();
/******/ };
/******/ function checkDeferredModules() {
/******/ var result;
/******/ for(var i = 0; i < deferredModules.length; i++) {
/******/ var deferredModule = deferredModules[i];
/******/ var fulfilled = true;
/******/ for(var j = 1; j < deferredModule.length; j++) {
/******/ var depId = deferredModule[j];
/******/ if(installedChunks[depId] !== 0) fulfilled = false;
/******/ }
/******/ if(fulfilled) {
/******/ deferredModules.splice(i--, 1);
/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
/******/ }
/******/ }
/******/
/******/ return result;
/******/ };
/******/ }
/******/
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // objects to store loaded and loading chunks
/******/ // object to store loaded and loading chunks
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/ // Promise = chunk loading, 0 = chunk loaded
/******/ var installedChunks = {
/******/ 2: 0
/******/ "/js/manifest": 0
/******/ };
/******/
/******/ var deferredModules = [];
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
@ -59,51 +86,6 @@
/******/ return module.exports;
/******/ }
/******/
/******/ // This file contains only the entry chunk.
/******/ // The chunk loading function for additional chunks
/******/ __webpack_require__.e = function requireEnsure(chunkId) {
/******/ if(installedChunks[chunkId] === 0)
/******/ return Promise.resolve();
/******/
/******/ // a Promise means "currently loading".
/******/ if(installedChunks[chunkId]) {
/******/ return installedChunks[chunkId][2];
/******/ }
/******/
/******/ // setup Promise in chunk cache
/******/ var promise = new Promise(function(resolve, reject) {
/******/ installedChunks[chunkId] = [resolve, reject];
/******/ });
/******/ installedChunks[chunkId][2] = promise;
/******/
/******/ // start chunk loading
/******/ var head = document.getElementsByTagName('head')[0];
/******/ var script = document.createElement('script');
/******/ script.type = 'text/javascript';
/******/ script.charset = 'utf-8';
/******/ script.async = true;
/******/ script.timeout = 120000;
/******/
/******/ if (__webpack_require__.nc) {
/******/ script.setAttribute("nonce", __webpack_require__.nc);
/******/ }
/******/ script.src = __webpack_require__.p + "js/" + ({"0":"/js/vendor","1":"/js/app"}[chunkId]||chunkId) + ".js";
/******/ var timeout = setTimeout(onScriptComplete, 120000);
/******/ script.onerror = script.onload = onScriptComplete;
/******/ function onScriptComplete() {
/******/ // avoid mem leaks in IE.
/******/ script.onerror = script.onload = null;
/******/ clearTimeout(timeout);
/******/ var chunk = installedChunks[chunkId];
/******/ if(chunk !== 0) {
/******/ if(chunk) chunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));
/******/ installedChunks[chunkId] = undefined;
/******/ }
/******/ };
/******/ head.appendChild(script);
/******/
/******/ return promise;
/******/ };
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
@ -111,20 +93,37 @@
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
@ -138,10 +137,18 @@
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ __webpack_require__.p = "/";
/******/
/******/ // on error function for async loading
/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; };
/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
/******/ jsonpArray.push = webpackJsonpCallback;
/******/ jsonpArray = jsonpArray.slice();
/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
/******/ var parentJsonpFunction = oldJsonpFunction;
/******/
/******/
/******/ // run deferred modules from other chunks
/******/ checkDeferredModules();
/******/ })
/************************************************************************/
/******/ ([]);

15097
public/js/vendor.js vendored

File diff suppressed because one or more lines are too long

View file

@ -1,7 +1,6 @@
{
"/js/app.js": "/js/app.js",
"/css/app.css": "/css/app.css",
"/js/vendor.js": "/js/vendor.js",
"/js/manifest.js": "/js/manifest.js",
"/js/app.min.js": "/js/app.min.js"
"/js/app.js": "/js/app.js",
"/css/app.css": "/css/app.css",
"/js/manifest.js": "/js/manifest.js",
"/js/vendor.js": "/js/vendor.js"
}

View file

@ -1,270 +1,279 @@
@import url('https://fonts.googleapis.com/css?family=Indie+Flower|Quicksand');
body {
margin: 0;
padding: 0;
background-image: url('/img/background.jpg');
background-repeat: no-repeat;
background-size: cover;
color: #FFF !important;
font-size: 14px;
min-height: 100vh;
font-family: 'Quicksand', sans-serif;
font-size: 13px;
}
div#content {
max-width: 800px;
margin: 20px auto;
padding: 10px 10px 10px 10px;
color: #f1f1f1;
background:
radial-gradient(#292929 15%, transparent 16%) 0 0,
radial-gradient(#292929 15%, transparent 16%) 8px 8px,
radial-gradient(rgba(255, 255, 255, 0) 15%, transparent 20%) 0 1px,
radial-gradient(rgba(255, 255, 255, 0.1) 15%, transparent 20%) 8px 9px;
background-color: #3a3a3a;
background-size:16px 16px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
h1 {
}
.spacer {
clear: both;
line-height: 0;
padding: 0;
margin: 0;
font-size: 0;
}
a, a:visited {
color: #58bfe4;
}
label {
display: block;
width: 100%;
margin: 10px 0 5px 0;
&:first-child {
margin: 0 0 5px 0;
#content {
max-width: 500px;
width: 500px;
margin: 20px auto;
padding: 10px 10px 10px 10px;
background-size:16px 16px;
font-size: 1rem;
background-color:rgba(56, 76, 65, 0.84);
border: 1px solid rgb(69, 87, 77);
position: absolute;
top: 50%;
left: 50%;
-ms-transform: translateX(-50%) translateY(-50%);
-webkit-transform: translate(-50%,-50%);
transform: translate(-50%,-50%);
}
&:last-child {
margin: 10px 0 0 0;
h1 {
margin-bottom: 5px;
text-transform: uppercase;
font-size: 3rem;
}
}
body#upload {
h2 {
margin-top: 0;
color: rgba(255, 255, 255, 0.877);
text-transform: uppercase;
font-size: 1.7rem;
}
div#upload-column {
float: left;
width: 190px;
.spacer {
clear: both;
line-height: 0;
padding: 0;
margin: 0;
font-size: 0;
}
form.dropzone {
margin: 0;
cursor: pointer;
border: 1px dashed #a1bdf4;
text-align: center;
min-height: 170px;
max-height: 170px;
color: #eaeaea;
background-color:rgba(64, 154, 189, 0.33);
background-size:16px 16px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
height: 100%;
white-space: nowrap;
position: relative;
a, a:visited {
color: #58bfe4;
}
&:before {
content: '';
display: inline-block;
vertical-align: middle;
width: 0;
margin-right: -.25em;
label {
display: block;
width: 100%;
margin: 10px 0 5px 0;
&:first-child {
margin: 0 0 5px 0;
}
&:last-child {
margin: 10px 0 0 0;
}
}
&#upload {
div#upload-column {
float: left;
width: 190px;
form.dropzone {
margin: 0;
cursor: pointer;
background:
linear-gradient(45deg, #33453b 45px, transparent 45px)64px 64px,
linear-gradient(45deg, #33453b 45px, transparent 45px,transparent 91px, #41574b 91px, #41574b 135px, transparent 135px),
linear-gradient(-45deg, #33453b 23px, transparent 23px, transparent 68px,#33453b 68px,#33453b 113px,transparent 113px,transparent 158px,#33453b 158px);
background-color:#41574b;
background-size: 128px 128px;
text-align: center;
min-height: 170px;
max-height: 170px;
height: 100%;
white-space: nowrap;
position: relative;
&:before {
content: '';
display: inline-block;
vertical-align: middle;
width: 0;
margin-right: -.25em;
height: 100%;
}
&.dz-drag-hover {
background-color:rgba(64, 154, 189, 0.66);
}
.dz-message {
font-family: 'Indie Flower', cursive;
font-size: 1.3rem;
margin: 35px 15px;
display: inline-block;
vertical-align: middle;
white-space: normal;
padding: 0 1em;
}
}
&.dz-drag-hover {
background-color:rgba(64, 154, 189, 0.66);
.max-filesize-warning {
font-family: 'Quicksand', sans-serif;
padding: 0;
margin: 2px 0 0 0;
font-size: .8rem;
position: absolute;
bottom: .5rem;
right: .5rem;
}
.dz-message {
font-family: 'Indie Flower', cursive;
font-size: 18px;
margin: 35px 15px;
display: inline-block;
vertical-align: middle;
white-space: normal;
padding: 0 1em;
&.wide {
width: 100%;
}
}
.max-filesize-warning {
font-family: 'Quicksand', sans-serif;
padding: 0;
margin: 2px 0 0 0;
font-size: 9px;
position: absolute;
bottom: 3px;
right: 3px;
}
&.wide {
width: 100%;
}
}
div#settings-column {
float: right;
max-width: 590px;
width: 590px;
display: none;
p.link {
max-width: 80%;
width: 80%;
background-color: #CCC;
white-space: nowrap;
padding: 6px;
background-color: #545454;
margin: 0;
overflow: hidden;
display: inline-flex;
}
.clippy {
background-image: url(/img/clippy.svg);
background-size: 15px;
background-repeat: no-repeat;
background-color: transparent;
border: 0;
color: #FFF;
height: 28px;
width: 20px;
background-position: center center;
cursor: pointer;
}
}
div#files-list {
display: none;
margin: 20px 0 0 0;
font-size: 12px;
padding: 5px 0;
position: relative;
.preview-tpl {
div#settings-column {
float: right;
max-width: 280px;
width: 280px;
display: none;
padding-left: 1rem;
p.link {
max-width: 80%;
width: 80%;
background-color: #CCC;
white-space: nowrap;
padding: 6px;
background-color: #545454;
margin: 0;
overflow: hidden;
display: inline-flex;
}
.clippy {
background-image: url(/img/clippy.svg);
background-size: 15px;
background-repeat: no-repeat;
background-color: transparent;
border: 0;
height: 28px;
width: 20px;
background-position: center center;
cursor: pointer;
}
}
.file-row {
padding: 10px 0px 10px 6px;
border-top: 1px solid #5a5a5a;
div#files-list {
display: none;
margin: 20px 0 0 0;
font-size: 12px;
padding: 5px 0;
position: relative;
.dz-filename {
width: 60%;
overflow: hidden;
float: left;
position: relative;
.preview-tpl {
display: none;
}
.dz-size {
width: 10%;
overflow: hidden;
float: right;
text-align: right;
}
.dz-progress {
width: 12%;
overflow: hidden;
float: right;
min-height: 8px;
margin: 3px 10px 0 5px;
.file-row {
padding: 10px 0px 10px 6px;
border-top: 1px solid #5a5a5a;
position: relative;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
background-color: #eaeaea;
.dz-upload {
.dz-filename {
width: 60%;
overflow: hidden;
float: left;
position: relative;
}
.dz-size {
width: 10%;
overflow: hidden;
float: right;
text-align: right;
}
.dz-progress {
width: 12%;
overflow: hidden;
float: right;
min-height: 8px;
margin: 3px 10px 0 5px;
position: relative;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
background-color: #eaeaea;
.dz-upload {
position: absolute;
top: 0;
left: 0;
width: 0;
background-color: #51acd0;
}
}
.dz-error-message {
position: absolute;
top: 0;
left: 0;
width: 0;
background-color: #51acd0;
top: 10px;
right: 100px;
background-color: red;
padding: 0 8px;
}
}
.dz-error-message {
position: absolute;
top: 10px;
right: 100px;
background-color: red;
padding: 0 8px;
}
.dz-result {
width: 5%;
float: right;
margin-left: 10px;
}
&.dz-success {
.dz-result {
background-image: url('/img/success.png');
background-repeat: no-repeat;
background-size: contain;
width: 5%;
float: right;
margin-left: 10px;
}
}
&.dz-error {
.dz-result {
background-image: url('/img/error.png');
background-repeat: no-repeat;
background-size: contain;
&.dz-success {
.dz-result {
background-image: url('/img/success.png');
background-repeat: no-repeat;
background-size: contain;
}
}
&.dz-error {
.dz-result {
background-image: url('/img/error.png');
background-repeat: no-repeat;
background-size: contain;
}
}
}
}
}
}
body#download {
#files-list {
font-size: 12px;
margin-bottom: 40px;
}
.expiry-warning {
font-size: 11px;
font-style: italic;
margin-top: 30px;
}
.download-all-btn {
margin: 0 auto;
width: 60%;
text-align: center;
font-size: 22px;
background-color: #54606d;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
padding: 10px 5px;
box-shadow: inset 0px 1px 0px 0px #cae3fc;
&a, &a:visited {
color: #FFF;
&#download {
#files-list {
font-size: 1rem;
margin-bottom: 40px;
}
&:hover {}
.bundle-info {
font-size: 12px;
font-size: 1rem;
}
.expiry-warning {
font-size: .8rem;
font-style: italic;
margin-top: 30px;
}
.download-all-btn {
margin: 0 auto;
width: 60%;
text-align: center;
font-size: 1.4rem;
background-color: #3a5142;
padding: 10px 5px;
box-shadow: inset 0px 1px 0px 0px #cae3fc;
&a, &a:visited {
color: #FFF;
}
}
}
}

View file

@ -1,14 +1,14 @@
<html>
<head>
<meta charset="utf-8">
<title>Files Sharing</title>
<title>{{ config('app.name') }}</title>
<link rel="stylesheet" href="{{ mix('/css/app.css') }}">
<script src="{{ mix('/js/manifest.js') }}" type="text/javascript"></script>
<script src="{{ mix('/js/vendor.js') }}" type="text/javascript"></script>
<script src="{{ mix('/js/app.js') }}" type="text/javascript"></script>
</head>
<body id="@yield('page')">
<body class="main" id="@yield('page')">
@include('header')

View file

@ -3,7 +3,8 @@
@section('page', 'upload')
@section('content')
<h1>@lang('app.upload-files-title')</h1>
<h1>{{ config('app.name') }}</h1>
<h2>@lang('app.upload-files-title')</h2>
<div id="upload-column" class="wide">
<form action="{{ route('upload.store') }}" class="dropzone" id="upload-form">

8
webpack.mix.js vendored
View file

@ -1,4 +1,4 @@
const { mix } = require('laravel-mix');
const mix = require('laravel-mix');
/*
|--------------------------------------------------------------------------
@ -11,8 +11,9 @@ const { mix } = require('laravel-mix');
|
*/
mix.js('resources/themes/' + process.env.MIX_THEME + '/assets/js/app.js', 'public/js')
.sass('resources/themes/' + process.env.MIX_THEME + '/assets/sass/app.scss', 'public/css')
mix
.js('resources/themes/default/assets/js/app.js', 'public/js')
.sass('resources/themes/default/assets/sass/app.scss', 'public/css')
.extract(['jquery', 'dropzone', 'clipboard'])
if (mix.inProduction()) {
@ -20,5 +21,4 @@ if (mix.inProduction()) {
}
else {
mix.sourceMaps();
mix.browserSync('filesharing.local');
}