/*!
 * Copyright (c) 2018 Eclipse Foundation, Inc.
 * 
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 * 
 * Contributors:
 *   Christopher Guindon <chris.guindon@eclipse-foundation.org>
 * 
 * SPDX-License-Identifier: EPL-2.0
*/

let mix = require('laravel-mix');
mix.options({uglify: {uglifyOptions: {compress: true, output: {comments: true}}}});
mix.setPublicPath('public');
mix.setResourceRoot('../');

// Default CSS
mix.less("less/downloads.less", "public/stylesheets/downloads.min.css");
mix.less("node_modules/eclipsefdn-solstice-assets/less/quicksilver/packages/components/thankyou.less", "public/stylesheets/thankyou.min.css");
mix.less("node_modules/eclipsefdn-solstice-assets/less/quicksilver/packages/components/mirror.less", ".public/stylesheets/mirror.min.css");

mix.styles([
  'public/stylesheets/thankyou.min.css',
  'node_modules/jquery-ui/base/minified/jquery-ui.min.css'
], 'public/stylesheets/thankyou.min.css');

// JavaScript
mix.scripts([
  'node_modules/eclipsefdn-solstice-assets/js/downloads/mirror.js'
], 'public/javascript/mirror.min.js');

//JavaScript
mix.scripts([
  'node_modules/eclipsefdn-solstice-assets/js/downloads/downloads.js'
], 'public/javascript/downloads.min.js');

