var Encore = require('@symfony/webpack-encore');

const CopyWebpackPlugin = require('copy-webpack-plugin');
const FileManagerPlugin = require('filemanager-webpack-plugin');

Encore
    .setOutputPath('public/build/')
    .setManifestKeyPrefix('public/build/')
    .setPublicPath('../')
    .cleanupOutputBeforeBuild()

    .addEntry('app', './assets/js/app.js')
    .addEntry('bootstrap', './assets/js/bootstrap.js')

    .addEntry('exercise', './assets/js/exercise.js')

    .addEntry('free-jqgrid', './assets/js/free-jqgrid.js')

    .addStyleEntry('css/app', './assets/css/app.scss')
    .addStyleEntry('css/bootstrap', './assets/css/bootstrap.scss')

    .addStyleEntry('css/chat', './assets/css/chat.css')
    .addStyleEntry('css/document', './assets/css/document.css')
    .addStyleEntry('css/editor', './assets/css/editor.css')
    .addStyleEntry('css/editor_content', './assets/css/editor_content.css')
    .addStyleEntry('css/markdown', './assets/css/markdown.css')
    .addStyleEntry('css/print', './assets/css/print.css')
    .addStyleEntry('css/responsive', './assets/css/responsive.css')
    .addStyleEntry('css/scorm', './assets/css/scorm.css')

    .enableSingleRuntimeChunk()

    .enableSourceMaps(!Encore.isProduction())
    // .enableVersioning(Encore.isProduction())

    .enableSassLoader()
    .enableVueLoader()
    .autoProvidejQuery()
    .copyFiles([
        {
            from: './node_modules/multiselect-two-sides/dist/js',
            pattern: /(multiselect.js)$/,
            to: 'libs/multiselect-two-sides/dist/js/multiselect.js'
        },
        {
            from: './node_modules/pwstrength-bootstrap/dist/',
            pattern: /(pwstrength-bootstrap.js)$/,
            to: 'libs/pwstrength-bootstrap/dist/pwstrength-bootstrap.js'
        },
        {
            from: './node_modules/readmore-js',
            pattern: /(readmore.js)$/,
            to: 'libs/readmore-js/readmore.js'
        },
        {
            from: './node_modules/js-cookie/src/',
            pattern: /(js.cookie.js)$/,
            to: 'libs/js-cookie/src/js.cookie.js'
        },
        {
            from: './node_modules/mathjax/',
            pattern: /(MathJax.js)$/,
            to: 'libs/mathjax/MathJax.js'
        },
    ])
;

Encore.addPlugin(new CopyWebpackPlugin([
    {
        from: './node_modules/mediaelement/build',
        to: 'libs/mediaelement'
    },
    {
        from: './node_modules/mediaelement-plugins/dist',
        to: 'libs/mediaelement/plugins'
    },
    {
        from: './node_modules/mathjax/config',
        to: 'libs/mathjax/config'
    },
]));

// Encore.addPlugin(new copyWebpackPlugin([{
//     from: 'assets/css/themes/' + theme + '/images',
//     to: 'css/themes/' + theme + '/images'
// };

var themes = [
    'chamilo'
];

// Add Chamilo themes
themes.forEach(function (theme) {
    Encore.addStyleEntry('css/themes/' + theme + '/default', './assets/css/themes/' + theme + '/default.css');

    // Copy images from themes into public/build
    Encore.addPlugin(new CopyWebpackPlugin([{
        from: 'assets/css/themes/' + theme + '/images',
        to: 'css/themes/' + theme + '/images'
    },
    ]));
});

// Fix free-jqgrid languages files
Encore.addPlugin(new FileManagerPlugin({
    onEnd: {
        move: [
            {
                source: './public/public/build/free-jqgrid/',
                destination: './public/build/free-jqgrid/'
            }
        ],
        delete: [
            './public/public/'
        ]
    }
}));

module.exports = Encore.getWebpackConfig();
