Feature/#32 option menu #112
64
gulpfile.js
64
gulpfile.js
|
@ -9,6 +9,8 @@ const source = require('vinyl-source-stream');
|
||||||
const buffer = require('vinyl-buffer');
|
const buffer = require('vinyl-buffer');
|
||||||
const merge = require('merge-stream');
|
const merge = require('merge-stream');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
const factor = require('factor-bundle');
|
||||||
|
const { debug } = require('console');
|
||||||
|
|
||||||
const $ = gulpLoadPlugins()
|
const $ = gulpLoadPlugins()
|
||||||
|
|
||||||
|
@ -25,6 +27,7 @@ const src = {
|
||||||
styles: 'src/stylesheets',
|
styles: 'src/stylesheets',
|
||||||
scripts: 'src/javascript',
|
scripts: 'src/javascript',
|
||||||
images: 'src/images',
|
images: 'src/images',
|
||||||
|
html: 'src/html',
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build path
|
// Build path
|
||||||
|
@ -34,6 +37,7 @@ const tmp = {
|
||||||
styles: '.tmp/stylesheets',
|
styles: '.tmp/stylesheets',
|
||||||
scripts: '.tmp/javascript',
|
scripts: '.tmp/javascript',
|
||||||
images: '.tmp/images',
|
images: '.tmp/images',
|
||||||
|
html: '.tmp/html',
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dist path
|
// Dist path
|
||||||
|
@ -44,18 +48,21 @@ const dist = {
|
||||||
styles: 'dist/chrome/stylesheets',
|
styles: 'dist/chrome/stylesheets',
|
||||||
scripts: 'dist/chrome/javascript',
|
scripts: 'dist/chrome/javascript',
|
||||||
images: 'dist/chrome/images',
|
images: 'dist/chrome/images',
|
||||||
|
html: 'dist/chrome/html',
|
||||||
},
|
},
|
||||||
firefox: {
|
firefox: {
|
||||||
root: 'dist/firefox',
|
root: 'dist/firefox',
|
||||||
styles: 'dist/firefox/stylesheets',
|
styles: 'dist/firefox/stylesheets',
|
||||||
scripts: 'dist/firefox/javascript',
|
scripts: 'dist/firefox/javascript',
|
||||||
images: 'dist/firefox/images',
|
images: 'dist/firefox/images',
|
||||||
|
html: 'dist/firefox/html',
|
||||||
},
|
},
|
||||||
opera: {
|
opera: {
|
||||||
root: 'dist/opera',
|
root: 'dist/opera',
|
||||||
styles: 'dist/opera/stylesheets',
|
styles: 'dist/opera/stylesheets',
|
||||||
scripts: 'dist/opera/javascript',
|
scripts: 'dist/opera/javascript',
|
||||||
images: 'dist/opera/images',
|
images: 'dist/opera/images',
|
||||||
|
html: 'dist/opera/html',
|
||||||
},
|
},
|
||||||
zip: 'dist/zips',
|
zip: 'dist/zips',
|
||||||
}
|
}
|
||||||
|
@ -108,14 +115,33 @@ gulp.task('styles', () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
gulp.task('scripts', () => {
|
gulp.task('scripts', () => {
|
||||||
let b = browserify({
|
const modules = [
|
||||||
entries: `${src.scripts}/index.js`,
|
'app',
|
||||||
debug: isDev
|
'settings',
|
||||||
|
];
|
||||||
|
|
||||||
|
const inputs = [];
|
||||||
|
const streams = [];
|
||||||
|
|
||||||
|
modules.forEach(module => {
|
||||||
|
inputs.push(`${src.scripts}/${module}.js`);
|
||||||
|
streams.push(source(`${module}.js`));
|
||||||
});
|
});
|
||||||
|
|
||||||
return b.transform('babelify').bundle()
|
const b = browserify(inputs, { debug: isDev });
|
||||||
|
|
||||||
|
let outstream = b
|
||||||
|
.transform('babelify')
|
||||||
|
.plugin(factor, { outputs: streams })
|
||||||
|
.bundle()
|
||||||
|
.pipe(source('common.js'))
|
||||||
|
|
||||||
|
streams.forEach(stream => {
|
||||||
|
outstream = outstream.pipe($.merge(stream));
|
||||||
|
});
|
||||||
|
|
||||||
|
return outstream
|
||||||
.pipe($.plumber())
|
.pipe($.plumber())
|
||||||
.pipe(source('app.js'))
|
|
||||||
.pipe(buffer())
|
.pipe(buffer())
|
||||||
.pipe($.if(isDev, $.sourcemaps.init({ loadMaps: true })))
|
.pipe($.if(isDev, $.sourcemaps.init({ loadMaps: true })))
|
||||||
.pipe($.terser({ compress: { drop_console: isProd, drop_debugger: isProd } }))
|
.pipe($.terser({ compress: { drop_console: isProd, drop_debugger: isProd } }))
|
||||||
|
@ -124,7 +150,7 @@ gulp.task('scripts', () => {
|
||||||
showFiles: true,
|
showFiles: true,
|
||||||
}))
|
}))
|
||||||
.pipe($.if(isDev, $.sourcemaps.write()))
|
.pipe($.if(isDev, $.sourcemaps.write()))
|
||||||
.pipe(gulp.dest(`${tmp.scripts}`))
|
.pipe(gulp.dest(`${tmp.scripts}`));
|
||||||
})
|
})
|
||||||
|
|
||||||
gulp.task('images', () => {
|
gulp.task('images', () => {
|
||||||
|
@ -142,6 +168,16 @@ gulp.task('images', () => {
|
||||||
.pipe(gulp.dest(tmp.images))
|
.pipe(gulp.dest(tmp.images))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
gulp.task('html', () => {
|
||||||
|
return gulp.src(`${src.html}/**/*`)
|
||||||
|
.pipe($.plumber())
|
||||||
|
// any steps for HTML processing?
|
||||||
|
.pipe($.size({
|
||||||
|
showFiles: true,
|
||||||
|
}))
|
||||||
|
.pipe(gulp.dest(tmp.html))
|
||||||
|
})
|
||||||
|
|
||||||
gulp.task('manifests', () => {
|
gulp.task('manifests', () => {
|
||||||
const templateFile = `${src.manifests}/manifest.template.json`;
|
const templateFile = `${src.manifests}/manifest.template.json`;
|
||||||
|
|
||||||
|
@ -174,6 +210,8 @@ gulp.task('watch', (done) => {
|
||||||
|
|
||||||
gulp.watch(`${src.images}/**/*`, gulp.series('clean:build', 'images', 'dist:copy', 'dist:zip'))
|
gulp.watch(`${src.images}/**/*`, gulp.series('clean:build', 'images', 'dist:copy', 'dist:zip'))
|
||||||
|
|
||||||
|
gulp.watch(`${src.html}/**/*`, gulp.series('clean:build', 'html', 'dist:copy', 'dist:zip'))
|
||||||
|
|
||||||
gulp.watch(`${src.manifests}/**/*.*`, gulp.series('clean:build', 'manifests', 'dist:copy', 'dist:zip'))
|
gulp.watch(`${src.manifests}/**/*.*`, gulp.series('clean:build', 'manifests', 'dist:copy', 'dist:zip'))
|
||||||
|
|
||||||
done();
|
done();
|
||||||
|
@ -193,7 +231,7 @@ gulp.task('clean', gulp.series('clean:build', 'clean:dist'))
|
||||||
BUILD CLEAN ALL
|
BUILD CLEAN ALL
|
||||||
============================================================================ */
|
============================================================================ */
|
||||||
|
|
||||||
gulp.task('build', gulp.series('manifests', 'images', 'scripts', 'styles'));
|
gulp.task('build', gulp.series('manifests', 'images', 'scripts', 'styles', 'html'));
|
||||||
|
|
||||||
gulp.task('build:clean', gulp.series('clean:build', 'manifests', 'images', 'scripts', 'styles'));
|
gulp.task('build:clean', gulp.series('clean:build', 'manifests', 'images', 'scripts', 'styles'));
|
||||||
|
|
||||||
|
@ -215,6 +253,10 @@ gulp.task('dist:chrome', (done) => {
|
||||||
gulp.src(`${tmp.styles}/*.{min.css,min.css.gz}`)
|
gulp.src(`${tmp.styles}/*.{min.css,min.css.gz}`)
|
||||||
.pipe(gulp.dest(dist.chrome.styles)),
|
.pipe(gulp.dest(dist.chrome.styles)),
|
||||||
|
|
||||||
|
// copy html
|
||||||
|
gulp.src(`${tmp.html}/*.html`)
|
||||||
|
.pipe(gulp.dest(dist.chrome.html)),
|
||||||
|
|
||||||
gulp.src(`${tmp.manifests}/chrome*`)
|
gulp.src(`${tmp.manifests}/chrome*`)
|
||||||
.pipe($.rename('manifest.json'))
|
.pipe($.rename('manifest.json'))
|
||||||
.pipe(gulp.dest(dist.chrome.root))
|
.pipe(gulp.dest(dist.chrome.root))
|
||||||
|
@ -235,6 +277,10 @@ gulp.task('dist:firefox', (done) => {
|
||||||
gulp.src(`${tmp.styles}/*.{min.css,min.css.gz}`)
|
gulp.src(`${tmp.styles}/*.{min.css,min.css.gz}`)
|
||||||
.pipe(gulp.dest(dist.firefox.styles)),
|
.pipe(gulp.dest(dist.firefox.styles)),
|
||||||
|
|
||||||
|
// copy html
|
||||||
|
gulp.src(`${tmp.html}/*.html`)
|
||||||
|
.pipe(gulp.dest(dist.firefox.html)),
|
||||||
|
|
||||||
gulp.src(`${tmp.manifests}/firefox*`)
|
gulp.src(`${tmp.manifests}/firefox*`)
|
||||||
.pipe($.rename('manifest.json'))
|
.pipe($.rename('manifest.json'))
|
||||||
.pipe(gulp.dest(dist.firefox.root))
|
.pipe(gulp.dest(dist.firefox.root))
|
||||||
|
@ -255,6 +301,10 @@ gulp.task('dist:opera', (done) => {
|
||||||
gulp.src(`${tmp.styles}/*.{min.css,min.css.gz}`)
|
gulp.src(`${tmp.styles}/*.{min.css,min.css.gz}`)
|
||||||
.pipe(gulp.dest(dist.opera.styles)),
|
.pipe(gulp.dest(dist.opera.styles)),
|
||||||
|
|
||||||
|
// copy html
|
||||||
|
gulp.src(`${tmp.html}/*.html`)
|
||||||
|
.pipe(gulp.dest(dist.opera.html)),
|
||||||
|
|
||||||
gulp.src(`${tmp.manifests}/opera*`)
|
gulp.src(`${tmp.manifests}/opera*`)
|
||||||
.pipe($.rename('manifest.json'))
|
.pipe($.rename('manifest.json'))
|
||||||
.pipe(gulp.dest(dist.opera.root))
|
.pipe(gulp.dest(dist.opera.root))
|
||||||
|
|
374
package-lock.json
generated
374
package-lock.json
generated
|
@ -4306,6 +4306,41 @@
|
||||||
"through2": "^2.0.0"
|
"through2": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"deps-topo-sort": {
|
||||||
|
"version": "0.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/deps-topo-sort/-/deps-topo-sort-0.2.1.tgz",
|
||||||
|
"integrity": "sha1-S+ivB0dpcWSciwxIT9fUqHuLASo=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"JSONStream": "~0.7.1",
|
||||||
|
"minimist": "0.0.5",
|
||||||
|
"through": "~2.3.4"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"JSONStream": {
|
||||||
|
"version": "0.7.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.7.4.tgz",
|
||||||
|
"integrity": "sha1-c0KQ5BUR7qfCz+FR+/mlY6l7l4Y=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"jsonparse": "0.0.5",
|
||||||
|
"through": ">=2.2.7 <3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"jsonparse": {
|
||||||
|
"version": "0.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz",
|
||||||
|
"integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"minimist": {
|
||||||
|
"version": "0.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.5.tgz",
|
||||||
|
"integrity": "sha1-16oye87PUY+RBqxrjwA/o7zqhWY=",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"des.js": {
|
"des.js": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
|
||||||
|
@ -5066,6 +5101,228 @@
|
||||||
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
|
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"factor-bundle": {
|
||||||
|
"version": "2.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/factor-bundle/-/factor-bundle-2.5.0.tgz",
|
||||||
|
"integrity": "sha1-jqiVfaOddYYoPMPuNTzZkRpF53k=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"JSONStream": "~0.8.4",
|
||||||
|
"browser-pack": "^5.0.1",
|
||||||
|
"defined": "0.0.0",
|
||||||
|
"deps-topo-sort": "~0.2.1",
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"isarray": "0.0.1",
|
||||||
|
"labeled-stream-splicer": "^1.0.0",
|
||||||
|
"minimist": "~0.2.0",
|
||||||
|
"nub": "0.0.0",
|
||||||
|
"outpipe": "^1.1.0",
|
||||||
|
"reversepoint": "~0.2.0",
|
||||||
|
"stream-combiner": "~0.2.1",
|
||||||
|
"through2": "^0.5.1",
|
||||||
|
"xtend": "^4.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"JSONStream": {
|
||||||
|
"version": "0.8.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz",
|
||||||
|
"integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"jsonparse": "0.0.5",
|
||||||
|
"through": ">=2.2.7 <3"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"jsonparse": {
|
||||||
|
"version": "0.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz",
|
||||||
|
"integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"browser-pack": {
|
||||||
|
"version": "5.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-5.0.1.tgz",
|
||||||
|
"integrity": "sha1-QZdxmyDG4KqglFHFER5T77b7wY0=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"JSONStream": "^1.0.3",
|
||||||
|
"combine-source-map": "~0.6.1",
|
||||||
|
"defined": "^1.0.0",
|
||||||
|
"through2": "^1.0.0",
|
||||||
|
"umd": "^3.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"JSONStream": {
|
||||||
|
"version": "1.3.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
|
||||||
|
"integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"jsonparse": "^1.2.0",
|
||||||
|
"through": ">=2.2.7 <3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"defined": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"through2": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/through2/-/through2-1.1.1.tgz",
|
||||||
|
"integrity": "sha1-CEfLxESfNAVXTb3M2buEG4OsNUU=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"readable-stream": ">=1.1.13-1 <1.2.0-0",
|
||||||
|
"xtend": ">=4.0.0 <4.1.0-0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"combine-source-map": {
|
||||||
|
"version": "0.6.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.6.1.tgz",
|
||||||
|
"integrity": "sha1-m0oJwxYDPXaODxHgKfonMOB5rZY=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"convert-source-map": "~1.1.0",
|
||||||
|
"inline-source-map": "~0.5.0",
|
||||||
|
"lodash.memoize": "~3.0.3",
|
||||||
|
"source-map": "~0.4.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"convert-source-map": {
|
||||||
|
"version": "1.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz",
|
||||||
|
"integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"defined": {
|
||||||
|
"version": "0.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz",
|
||||||
|
"integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"inline-source-map": {
|
||||||
|
"version": "0.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.5.0.tgz",
|
||||||
|
"integrity": "sha1-Skxd2OT7Xps82mDIIt+tyu5m4K8=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"source-map": "~0.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"isarray": {
|
||||||
|
"version": "0.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||||
|
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"labeled-stream-splicer": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-RhUzFTd4SYHo/SZOHzpDTE4N3WU=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"isarray": "~0.0.1",
|
||||||
|
"stream-splicer": "^1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minimist": {
|
||||||
|
"version": "0.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.1.tgz",
|
||||||
|
"integrity": "sha512-GY8fANSrTMfBVfInqJAY41QkOM+upUTytK1jZ0c8+3HdHrJxBJ3rF5i9moClXTE8uUSnUo8cAsCoxDXvSY4DHg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "1.1.14",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
|
||||||
|
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"core-util-is": "~1.0.0",
|
||||||
|
"inherits": "~2.0.1",
|
||||||
|
"isarray": "0.0.1",
|
||||||
|
"string_decoder": "~0.10.x"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"source-map": {
|
||||||
|
"version": "0.4.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
|
||||||
|
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"amdefine": ">=0.0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stream-splicer": {
|
||||||
|
"version": "1.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-1.3.2.tgz",
|
||||||
|
"integrity": "sha1-PARBvhW5v04iYnXm3IOWR0VUZmE=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"indexof": "0.0.1",
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"isarray": "~0.0.1",
|
||||||
|
"readable-stream": "^1.1.13-1",
|
||||||
|
"readable-wrap": "^1.0.0",
|
||||||
|
"through2": "^1.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"through2": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/through2/-/through2-1.1.1.tgz",
|
||||||
|
"integrity": "sha1-CEfLxESfNAVXTb3M2buEG4OsNUU=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"readable-stream": ">=1.1.13-1 <1.2.0-0",
|
||||||
|
"xtend": ">=4.0.0 <4.1.0-0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"string_decoder": {
|
||||||
|
"version": "0.10.31",
|
||||||
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||||
|
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"through2": {
|
||||||
|
"version": "0.5.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz",
|
||||||
|
"integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"readable-stream": "~1.0.17",
|
||||||
|
"xtend": "~3.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "1.0.34",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
|
||||||
|
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"core-util-is": "~1.0.0",
|
||||||
|
"inherits": "~2.0.1",
|
||||||
|
"isarray": "0.0.1",
|
||||||
|
"string_decoder": "~0.10.x"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xtend": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"fancy-log": {
|
"fancy-log": {
|
||||||
"version": "1.3.3",
|
"version": "1.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
|
||||||
|
@ -6074,6 +6331,51 @@
|
||||||
"minimatch": "^3.0.3"
|
"minimatch": "^3.0.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"gulp-merge": {
|
||||||
|
"version": "0.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/gulp-merge/-/gulp-merge-0.1.1.tgz",
|
||||||
|
"integrity": "sha1-pGLuARd6jqfEYPDqia1ULsdSujc=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"through2": "~1.1.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"isarray": {
|
||||||
|
"version": "0.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||||
|
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "1.1.14",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
|
||||||
|
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"core-util-is": "~1.0.0",
|
||||||
|
"inherits": "~2.0.1",
|
||||||
|
"isarray": "0.0.1",
|
||||||
|
"string_decoder": "~0.10.x"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"string_decoder": {
|
||||||
|
"version": "0.10.31",
|
||||||
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||||
|
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"through2": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/through2/-/through2-1.1.1.tgz",
|
||||||
|
"integrity": "sha1-CEfLxESfNAVXTb3M2buEG4OsNUU=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"readable-stream": ">=1.1.13-1 <1.2.0-0",
|
||||||
|
"xtend": ">=4.0.0 <4.1.0-0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"gulp-plumber": {
|
"gulp-plumber": {
|
||||||
"version": "1.2.1",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/gulp-plumber/-/gulp-plumber-1.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/gulp-plumber/-/gulp-plumber-1.2.1.tgz",
|
||||||
|
@ -6855,6 +7157,12 @@
|
||||||
"integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
|
"integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"indexof": {
|
||||||
|
"version": "0.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
|
||||||
|
"integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"inflight": {
|
"inflight": {
|
||||||
"version": "1.0.6",
|
"version": "1.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||||
|
@ -8369,6 +8677,12 @@
|
||||||
"boolbase": "~1.0.0"
|
"boolbase": "~1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nub": {
|
||||||
|
"version": "0.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/nub/-/nub-0.0.0.tgz",
|
||||||
|
"integrity": "sha1-s2m9Mr3eZq9ZYFw7BSC8IZ3MwE8=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"num2fraction": {
|
"num2fraction": {
|
||||||
"version": "1.2.2",
|
"version": "1.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
|
||||||
|
@ -8607,6 +8921,15 @@
|
||||||
"os-tmpdir": "^1.0.0"
|
"os-tmpdir": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"outpipe": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz",
|
||||||
|
"integrity": "sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"shell-quote": "^1.4.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"p-cancelable": {
|
"p-cancelable": {
|
||||||
"version": "0.3.0",
|
"version": "0.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz",
|
||||||
|
@ -10410,6 +10733,41 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"readable-wrap": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-wrap/-/readable-wrap-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-O1ohHGMeEjA6VJkcgGwX564ga/8=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"readable-stream": "^1.1.13-1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"isarray": {
|
||||||
|
"version": "0.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||||
|
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "1.1.14",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
|
||||||
|
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"core-util-is": "~1.0.0",
|
||||||
|
"inherits": "~2.0.1",
|
||||||
|
"isarray": "0.0.1",
|
||||||
|
"string_decoder": "~0.10.x"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"string_decoder": {
|
||||||
|
"version": "0.10.31",
|
||||||
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||||
|
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"readdirp": {
|
"readdirp": {
|
||||||
"version": "2.2.1",
|
"version": "2.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
|
||||||
|
@ -10819,6 +11177,12 @@
|
||||||
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
|
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"reversepoint": {
|
||||||
|
"version": "0.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/reversepoint/-/reversepoint-0.2.1.tgz",
|
||||||
|
"integrity": "sha1-0qw/9NZlzw/3Ipa3p47nI39lk/U=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"rgb-regex": {
|
"rgb-regex": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
|
||||||
|
@ -11546,6 +11910,16 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"stream-combiner": {
|
||||||
|
"version": "0.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz",
|
||||||
|
"integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"duplexer": "~0.1.1",
|
||||||
|
"through": "~2.3.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"stream-combiner2": {
|
"stream-combiner2": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
|
||||||
|
|
|
@ -48,12 +48,14 @@
|
||||||
"cross-env": "^7.0.2",
|
"cross-env": "^7.0.2",
|
||||||
"cssnano": "^4.1.10",
|
"cssnano": "^4.1.10",
|
||||||
"del": "^6.0.0",
|
"del": "^6.0.0",
|
||||||
|
"factor-bundle": "^2.5.0",
|
||||||
"gulp": "^4.0.2",
|
"gulp": "^4.0.2",
|
||||||
"gulp-autoprefixer": "^7.0.1",
|
"gulp-autoprefixer": "^7.0.1",
|
||||||
"gulp-babel": "^8.0.0",
|
"gulp-babel": "^8.0.0",
|
||||||
"gulp-if": "^3.0.0",
|
"gulp-if": "^3.0.0",
|
||||||
"gulp-imagemin": "^7.1.0",
|
"gulp-imagemin": "^7.1.0",
|
||||||
"gulp-load-plugins": "^2.0.5",
|
"gulp-load-plugins": "^2.0.5",
|
||||||
|
"gulp-merge": "^0.1.1",
|
||||||
"gulp-plumber": "^1.2.1",
|
"gulp-plumber": "^1.2.1",
|
||||||
"gulp-postcss": "^9.0.0",
|
"gulp-postcss": "^9.0.0",
|
||||||
"gulp-rename": "^2.0.0",
|
"gulp-rename": "^2.0.0",
|
||||||
|
|
58
src/html/settings.html
Normal file
58
src/html/settings.html
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title>Aniwatch Plus Settings</title>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<form>
|
||||||
|
<h1>Aniwatch Plus Settings</h1>
|
||||||
|
|
||||||
|
<h2>General Settings</h2>
|
||||||
|
<hr />
|
||||||
|
<h3>Website</h3>
|
||||||
|
<input type="checkbox" id="websiteDisplayQuickSearch" data-default-value="true" />
|
||||||
|
<label for="websiteDisplayQuickSearch">Enable Quick Search</label><br />
|
||||||
|
|
||||||
|
<input type="checkbox" id="websiteShowNotificationsCountInTab" data-default-value="true" />
|
||||||
|
<label for="websiteShowNotificationsCountInTab">Show notification counter in browser tab</label><br />
|
||||||
|
|
||||||
|
<input type="checkbox" id="websiteHideUnusedTabs" data-default-value="true" />
|
||||||
|
<label for="websiteHideUnusedTabs">Hide tabs without functionality</label><br />
|
||||||
|
|
||||||
|
<input type="checkbox" id="websiteOptimizeListAppearance" data-default-value="true" />
|
||||||
|
<label for="websiteOptimizeListAppearance">Optimize appearance of lists</label><br />
|
||||||
|
|
||||||
|
<h3>Anime</h3>
|
||||||
|
<input type="checkbox" id="animeLanguageDisplay" data-default-value="true" />
|
||||||
|
<label for="animeLanguageDisplay">Optimize presentation of available subs and dubs</label><br />
|
||||||
|
|
||||||
|
<h3>Requests page</h3>
|
||||||
|
<input type="checkbox" id="requestBeautifyPage" data-default-value="true" />
|
||||||
|
<label for="requestBeautifyPage">Enhance "Requestes" page</label><br />
|
||||||
|
<h2>Player Settings</h2>
|
||||||
|
<hr />
|
||||||
|
<h3>General</h3>
|
||||||
|
<input type="checkbox" id="playerAutoplayAfterScreenshot" data-default-value="true" />
|
||||||
|
<label for="playerAutoplayAfterScreenshot">Autoplay after screenshots</label><br />
|
||||||
|
|
||||||
|
<h3>Watch2gether</h3>
|
||||||
|
<input type="checkbox" id="w2gDisplayCharacterCounter" data-default-value="true" />
|
||||||
|
<label for="w2gDisplayCharacterCounter">Display character count in chat</label><br />
|
||||||
|
|
||||||
|
<br /><br />
|
||||||
|
<button id="btnSave">Save</button>
|
||||||
|
<button id="btnReset">Reset</button>
|
||||||
|
<br />
|
||||||
|
<i>Please reload aniwatch website after you changed the settings.</i>
|
||||||
|
<hr />
|
||||||
|
<i id="version"></i> <i>- <a href="https://github.com/Serraniel/AniwatchPlus/releases">Changelogs</a></i>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<script src="../javascript/common.min.js"></script>
|
||||||
|
<script src="../javascript/settings.min.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
|
@ -9,6 +9,8 @@ import { init as languageDisplay } from './enhancements/languageDisplay';
|
||||||
import { init as notifications } from './enhancements/notifications';
|
import { init as notifications } from './enhancements/notifications';
|
||||||
import { init as quickSearch } from './enhancements/quickSearch';
|
import { init as quickSearch } from './enhancements/quickSearch';
|
||||||
import { init as watch2getherChat } from './enhancements/watch2getherChat';
|
import { init as watch2getherChat } from './enhancements/watch2getherChat';
|
||||||
|
// css
|
||||||
|
import { init as cssEnhancements } from './enhancements/cssEnhancements';
|
||||||
|
|
||||||
// core
|
// core
|
||||||
initCore();
|
initCore();
|
||||||
|
@ -23,3 +25,6 @@ languageDisplay();
|
||||||
notifications();
|
notifications();
|
||||||
quickSearch();
|
quickSearch();
|
||||||
watch2getherChat();
|
watch2getherChat();
|
||||||
|
|
||||||
|
// css
|
||||||
|
cssEnhancements();
|
84
src/javascript/browserApi/storageProvider.js
Normal file
84
src/javascript/browserApi/storageProvider.js
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
const { assigned } = require("../utils/helpers")
|
||||||
|
|
||||||
|
class StorageProviderChromium {
|
||||||
|
|
||||||
|
setData(key, value) {
|
||||||
|
let obj = {};
|
||||||
|
obj[key] = value;
|
||||||
|
|
||||||
|
this.getStorage().set(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
getData(key, defaultValue, callback) {
|
||||||
|
this.getStorage().get(key, items => {
|
||||||
|
if (assigned(items) && assigned(items[key])) {
|
||||||
|
callback(items[key]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
callback(defaultValue);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
getStorage() {
|
||||||
|
if (assigned(chrome.storage.sync)) {
|
||||||
|
return chrome.storage.sync;
|
||||||
|
}
|
||||||
|
|
||||||
|
return chrome.storage.local;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class StorageProviderFirefox {
|
||||||
|
|
||||||
|
setData(key, value) {
|
||||||
|
let obj = {};
|
||||||
|
obj[key] = value;
|
||||||
|
|
||||||
|
this.getStorage().set(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
getData(key, defaultValue, callback) {
|
||||||
|
let promise = this.getStorage().get(key);
|
||||||
|
|
||||||
|
promise.then(items => {
|
||||||
|
if (assigned(items) && assigned(items[key])) {
|
||||||
|
callback(items[key]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
callback(defaultValue);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
getStorage() {
|
||||||
|
if (assigned(browser.storage.sync)) {
|
||||||
|
return browser.storage.sync;
|
||||||
|
}
|
||||||
|
|
||||||
|
return browser.storage.local;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let __storageProvieder;
|
||||||
|
|
||||||
|
function createStorageProvider() {
|
||||||
|
// chrome based browser
|
||||||
|
if (assigned(chrome?.app)) {
|
||||||
|
__storageProvieder = new StorageProviderChromium();
|
||||||
|
}
|
||||||
|
// firefox
|
||||||
|
else {
|
||||||
|
__storageProvieder = new StorageProviderFirefox();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getGlobalStorageProvider() {
|
||||||
|
if (!assigned(__storageProvieder)) {
|
||||||
|
createStorageProvider();
|
||||||
|
}
|
||||||
|
|
||||||
|
return __storageProvieder;
|
||||||
|
}
|
44
src/javascript/configuration/configuration.js
Normal file
44
src/javascript/configuration/configuration.js
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
import { getGlobalStorageProvider } from "../browserApi/storageProvider";
|
||||||
|
import { assigned } from "../utils/helpers";
|
||||||
|
|
||||||
|
// website
|
||||||
|
export const SETTINGS_websiteDisplayQuickSearch = 'websiteDisplayQuickSearch';
|
||||||
|
export const SETTINGS_websiteShowNotificationsCountInTab = 'websiteShowNotificationsCountInTab';
|
||||||
|
export const SETTINGS_websiteHideUnusedTabs = 'websiteHideUnusedTabs';
|
||||||
|
export const SETTINGS_websiteOptimizeListAppearance = 'websiteOptimizeListAppearance';
|
||||||
|
// anime
|
||||||
|
export const SETTINGS_animeLanguageDisplay = 'animeLanguageDisplay';
|
||||||
|
// requests
|
||||||
|
export const SETTINGS_requestBeautifyPage = 'requestBeautifyPage';
|
||||||
|
// player
|
||||||
|
export const SETTINGS_playerAutoplayAfterScreenshot = 'playerAutoplayAfterScreenshot';
|
||||||
|
// w2g
|
||||||
|
export const SETTINGS_w2gDisplayCharacterCounter = 'w2gDisplayCharacterCounter';
|
||||||
|
class Configuration {
|
||||||
|
constructor() {
|
||||||
|
this.settingsCache = new Map();
|
||||||
|
}
|
||||||
|
|
||||||
|
getProperty(key, callback) {
|
||||||
|
if (this.settingsCache.has(key)) {
|
||||||
|
callback(this.settingsCache.get(key));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// OOOPS // currently all settings are default true. This isn´t a problem but there should be much better soloutions after migration to typescript....
|
||||||
|
|||||||
|
getGlobalStorageProvider().getData(key, true, value => {
|
||||||
|
this.settingsCache.set(key, value);
|
||||||
|
callback(value);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let __globalConfig;
|
||||||
|
|
||||||
|
export function getGlobalConfiguration() {
|
||||||
|
if (!assigned(__globalConfig)) {
|
||||||
|
__globalConfig = new Configuration();
|
||||||
|
}
|
||||||
|
|
||||||
|
return __globalConfig;
|
||||||
|
}
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { getGlobalConfiguration, SETTINGS_playerAutoplayAfterScreenshot } from '../configuration/configuration';
|
||||||
import * as core from '../utils/aniwatchCore';
|
import * as core from '../utils/aniwatchCore';
|
||||||
import * as helper from '../utils/helpers';
|
import * as helper from '../utils/helpers';
|
||||||
|
|
||||||
|
@ -5,11 +6,15 @@ const SCREENSHOT_TOOLTIP_ID = 'anilyr-screenshots-tooltip';
|
||||||
const PLAYER_ID = 'player';
|
const PLAYER_ID = 'player';
|
||||||
|
|
||||||
export function init() {
|
export function init() {
|
||||||
|
getGlobalConfiguration().getProperty(SETTINGS_playerAutoplayAfterScreenshot, value => {
|
||||||
|
if (value) {
|
||||||
core.registerScript(node => {
|
core.registerScript(node => {
|
||||||
if (helper.isHtmlElement(node) && node.id === SCREENSHOT_TOOLTIP_ID) {
|
if (helper.isHtmlElement(node) && node.id === SCREENSHOT_TOOLTIP_ID) {
|
||||||
observeScreenshotTooltip(node);
|
observeScreenshotTooltip(node);
|
||||||
}
|
}
|
||||||
}, "^/anime/[0-9]*/[0-9]*$");
|
}, "^/anime/[0-9]*/[0-9]*$");
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function observeScreenshotTooltip(tooltip) {
|
function observeScreenshotTooltip(tooltip) {
|
||||||
|
@ -18,7 +23,7 @@ function observeScreenshotTooltip(tooltip) {
|
||||||
// Switched to invisible
|
// Switched to invisible
|
||||||
if (!mutation.oldValue.includes('display: none') && mutation.target.style.display == 'none') {
|
if (!mutation.oldValue.includes('display: none') && mutation.target.style.display == 'none') {
|
||||||
let player = findPlayer();
|
let player = findPlayer();
|
||||||
if(typeof player !== 'undefined'){
|
if (typeof player !== 'undefined') {
|
||||||
resumePlayer(player);
|
resumePlayer(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
|
import { getGlobalConfiguration, SETTINGS_requestBeautifyPage } from '../configuration/configuration';
|
||||||
import * as core from '../utils/aniwatchCore';
|
import * as core from '../utils/aniwatchCore';
|
||||||
import * as color from '../utils/colors';
|
import * as color from '../utils/colors';
|
||||||
import * as helper from '../utils/helpers';
|
import * as helper from '../utils/helpers';
|
||||||
|
|
||||||
export function init() {
|
export function init() {
|
||||||
|
getGlobalConfiguration().getProperty(SETTINGS_requestBeautifyPage, value => {
|
||||||
|
if (value) {
|
||||||
core.registerScript(node => {
|
core.registerScript(node => {
|
||||||
// run the scripts
|
// run the scripts
|
||||||
if (helper.isHtmlElement(node)) {
|
if (helper.isHtmlElement(node)) {
|
||||||
|
@ -11,6 +14,8 @@ export function init() {
|
||||||
removeUnknownUsers(node);
|
removeUnknownUsers(node);
|
||||||
}
|
}
|
||||||
}, "/requests");
|
}, "/requests");
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeFollowedStarColor(node) {
|
function changeFollowedStarColor(node) {
|
||||||
|
@ -71,7 +76,7 @@ function removeUnknownUsers(node) {
|
||||||
let parsedDocument = parser.parseFromString(profileData, 'text/html');
|
let parsedDocument = parser.parseFromString(profileData, 'text/html');
|
||||||
|
|
||||||
lowerDiv.innerHTML = '';
|
lowerDiv.innerHTML = '';
|
||||||
while(parsedDocument.body.hasChildNodes()){
|
while (parsedDocument.body.hasChildNodes()) {
|
||||||
lowerDiv.appendChild(parsedDocument.body.removeChild(parsedDocument.body.firstChild));
|
lowerDiv.appendChild(parsedDocument.body.removeChild(parsedDocument.body.firstChild));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
61
src/javascript/enhancements/cssEnhancements.js
Normal file
61
src/javascript/enhancements/cssEnhancements.js
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
import { getGlobalConfiguration, SETTINGS_websiteHideUnusedTabs, SETTINGS_websiteOptimizeListAppearance } from '../configuration/configuration';
|
||||||
|
import * as core from '../utils/aniwatchCore';
|
||||||
|
import * as helper from '../utils/helpers';
|
||||||
|
|
||||||
|
export function init() {
|
||||||
|
getGlobalConfiguration().getProperty(SETTINGS_websiteHideUnusedTabs, value => {
|
||||||
|
// if disabled, add class to avoid our css optimizations
|
||||||
|
if (!value) {
|
||||||
|
let disableFunc = node => {
|
||||||
|
if (helper.isHtmlElement(node)) {
|
||||||
|
let disableNode = node => {
|
||||||
|
node.classList.add('awp-hide-unused-disabled')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (node.tagName === 'MD-TAB-ITEM') {
|
||||||
|
disableNode(node);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
node.querySelectorAll('md-tab-item').forEach(node => disableNode(node));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
core.registerScript(node => {
|
||||||
|
disableFunc(node);
|
||||||
|
}, ".*");
|
||||||
|
|
||||||
|
core.runAfterLoad(() => {
|
||||||
|
disableFunc(document.body);
|
||||||
|
}, ".*");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
getGlobalConfiguration().getProperty(SETTINGS_websiteOptimizeListAppearance, value => {
|
||||||
|
// if disabled, add class to avoid our css optimizations
|
||||||
|
if (!value) {
|
||||||
|
let disableFunc = node => {
|
||||||
|
if (helper.isHtmlElement(node)) {
|
||||||
|
let disableNode = node => {
|
||||||
|
node.classList.add('awp-list-disabled')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (node.tagName === 'MD-LIST-ITEM') {
|
||||||
|
disableNode(node);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
node.querySelectorAll('md-list-item').forEach(node => disableNode(node));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
core.registerScript(node => {
|
||||||
|
disableFunc(node);
|
||||||
|
}, ".*");
|
||||||
|
|
||||||
|
core.runAfterLoad(() => {
|
||||||
|
disableFunc(document.body);
|
||||||
|
}, ".*");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
|
@ -1,13 +1,18 @@
|
||||||
That if statement has to be removed. That if statement has to be removed.
Done and working, agaub. Done and working, agaub.
That if statement has to be removed. That if statement has to be removed.
Done and working, agaub. Done and working, agaub.
|
|||||||
|
import { getGlobalConfiguration, SETTINGS_animeLanguageDisplay } from '../configuration/configuration';
|
||||||
That if statement has to be removed. That if statement has to be removed.
Done and working, agaub. Done and working, agaub.
|
|||||||
import * as core from '../utils/aniwatchCore';
|
import * as core from '../utils/aniwatchCore';
|
||||||
import * as helper from '../utils/helpers';
|
import * as helper from '../utils/helpers';
|
||||||
|
|
||||||
export function init() {
|
export function init() {
|
||||||
|
getGlobalConfiguration().getProperty(SETTINGS_animeLanguageDisplay, value => {
|
||||||
That if statement has to be removed. That if statement has to be removed.
Done and working, agaub. Done and working, agaub.
|
|||||||
|
if (value) {
|
||||||
That if statement has to be removed. That if statement has to be removed.
Done and working, agaub. Done and working, agaub.
|
|||||||
core.registerScript(node => {
|
core.registerScript(node => {
|
||||||
// run the scripts
|
// run the scripts
|
||||||
if (helper.isHtmlElement(node)) {
|
if (helper.isHtmlElement(node)) {
|
||||||
updateLanguageDisplay(node)
|
updateLanguageDisplay(node)
|
||||||
}
|
}
|
||||||
}, "^/anime/[0-9]*$");
|
}, "^/anime/[0-9]*$");
|
||||||
|
}
|
||||||
That if statement has to be removed. That if statement has to be removed.
Done and working, agaub. Done and working, agaub.
|
|||||||
|
});
|
||||||
That if statement has to be removed. That if statement has to be removed.
Done and working, agaub. Done and working, agaub.
|
|||||||
}
|
}
|
||||||
|
|
||||||
function updateLanguageDisplay(node) {
|
function updateLanguageDisplay(node) {
|
||||||
|
|
||||||
That if statement has to be removed. That if statement has to be removed.
Done and working, agaub. Done and working, agaub.
That if statement has to be removed. That if statement has to be removed.
Done and working, agaub. Done and working, agaub.
|
|
@ -1,7 +1,10 @@
|
||||||
|
import { getGlobalConfiguration, SETTINGS_websiteShowNotificationsCountInTab } from '../configuration/configuration';
|
||||||
import * as core from '../utils/aniwatchCore';
|
import * as core from '../utils/aniwatchCore';
|
||||||
import * as helper from '../utils/helpers';
|
import * as helper from '../utils/helpers';
|
||||||
|
|
||||||
export function init() {
|
export function init() {
|
||||||
|
getGlobalConfiguration().getProperty(SETTINGS_websiteShowNotificationsCountInTab, value => {
|
||||||
|
if (value) {
|
||||||
core.runAfterLoad(() => {
|
core.runAfterLoad(() => {
|
||||||
updateNotificationsInTitle();
|
updateNotificationsInTitle();
|
||||||
}, ".*");
|
}, ".*");
|
||||||
|
@ -9,6 +12,8 @@ export function init() {
|
||||||
core.runAfterLocationChange(() => {
|
core.runAfterLocationChange(() => {
|
||||||
updateNotificationsInTitle();
|
updateNotificationsInTitle();
|
||||||
}, ".*");
|
}, ".*");
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function getNotificationCount() {
|
function getNotificationCount() {
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { getGlobalConfiguration, SETTINGS_websiteDisplayQuickSearch } from '../configuration/configuration';
|
||||||
import * as core from '../utils/aniwatchCore';
|
import * as core from '../utils/aniwatchCore';
|
||||||
import * as helper from '../utils/helpers';
|
import * as helper from '../utils/helpers';
|
||||||
|
|
||||||
|
@ -5,9 +6,13 @@ const quickSearchID = 'ea-quickSearch';
|
||||||
const quickSearchLink = 'ea-quickSearchLink';
|
const quickSearchLink = 'ea-quickSearchLink';
|
||||||
|
|
||||||
export function init() {
|
export function init() {
|
||||||
|
getGlobalConfiguration().getProperty(SETTINGS_websiteDisplayQuickSearch, value => {
|
||||||
|
if (value) {
|
||||||
core.runAfterLoad(() => {
|
core.runAfterLoad(() => {
|
||||||
initSearch();
|
initSearch();
|
||||||
}, ".*");
|
}, ".*");
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function initSearch() {
|
function initSearch() {
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
import * as core from '../utils/aniwatchCore';
|
import * as core from '../utils/aniwatchCore';
|
||||||
import * as helper from '../utils/helpers';
|
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
import { getGlobalConfiguration, SETTINGS_w2gDisplayCharacterCounter } from '../configuration/configuration';
|
||||||
|
|
||||||
export function init() {
|
export function init() {
|
||||||
// UPS // runAfterLoad is not what we want...wait for runAfterLocationChange....
|
getGlobalConfiguration().getProperty(SETTINGS_w2gDisplayCharacterCounter, value => {
|
||||||
|
if (value) {
|
||||||
core.runAfterLocationChange(() => {
|
core.runAfterLocationChange(() => {
|
||||||
manipulateChatInput();
|
manipulateChatInput();
|
||||||
}, "^/watch2gether/.*$");
|
}, "^/watch2gether/.*$");
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function manipulateChatInput() {
|
function manipulateChatInput() {
|
||||||
|
|
48
src/javascript/settings.js
Normal file
48
src/javascript/settings.js
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
import { getGlobalStorageProvider } from "./browserApi/storageProvider";
|
||||||
|
import { onReady } from "./utils/helpers";
|
||||||
|
|
||||||
|
const OPTION_SELECTOR = 'input[type="checkbox"';
|
||||||
|
|
||||||
|
function storeOptions() {
|
||||||
|
document.querySelectorAll(OPTION_SELECTOR).forEach(optionElement => {
|
||||||
|
getGlobalStorageProvider().setData(optionElement.id, optionElement.checked);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function restoreOptions() {
|
||||||
|
document.querySelectorAll(OPTION_SELECTOR).forEach(optionElement => {
|
||||||
|
let defaultValue = optionElement.dataset.defaultValue === 'true' ? true : false;
|
||||||
|
|
||||||
|
getGlobalStorageProvider().getData(optionElement.id, defaultValue, value => {
|
||||||
|
optionElement.checked = value;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetOptions() {
|
||||||
|
document.querySelectorAll(OPTION_SELECTOR).forEach(optionElement => {
|
||||||
|
let defaultValue = optionElement.dataset.defaultValue === 'true' ? true : false;
|
||||||
|
|
||||||
|
optionElement.checked = defaultValue;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
onReady(() => {
|
||||||
|
// register Store Button
|
||||||
|
document.getElementById('btnSave').addEventListener('click', event => {
|
||||||
|
event.preventDefault();
|
||||||
|
storeOptions();
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('btnReset').addEventListener('click', event => {
|
||||||
|
event.preventDefault();
|
||||||
|
resetOptions();
|
||||||
|
storeOptions();
|
||||||
|
})
|
||||||
|
|
||||||
|
// try restore options
|
||||||
|
restoreOptions();
|
||||||
|
|
||||||
|
// update version label
|
||||||
|
document.getElementById('version').innerText = `v${chrome.runtime.getManifest().version}`
|
||||||
|
});
|
|
@ -5,6 +5,7 @@
|
||||||
"version_name": "$semanticVersion",
|
"version_name": "$semanticVersion",
|
||||||
"description": "$description",
|
"description": "$description",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
|
"storage",
|
||||||
"*://aniwatch.me/*"
|
"*://aniwatch.me/*"
|
||||||
],
|
],
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
|
@ -14,16 +15,23 @@
|
||||||
"48": "images/icon/icon_48.png",
|
"48": "images/icon/icon_48.png",
|
||||||
"96": "images/icon/icon_96.png"
|
"96": "images/icon/icon_96.png"
|
||||||
},
|
},
|
||||||
"content_scripts": [{
|
"options_ui": {
|
||||||
|
"page": "html/settings.html",
|
||||||
|
"open_in_tab": false
|
||||||
|
},
|
||||||
|
"content_scripts": [
|
||||||
|
{
|
||||||
"matches": [
|
"matches": [
|
||||||
"*://aniwatch.me/*"
|
"*://aniwatch.me/*"
|
||||||
],
|
],
|
||||||
"js": [
|
"js": [
|
||||||
|
"javascript/common.min.js",
|
||||||
"javascript/app.min.js"
|
"javascript/app.min.js"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"stylesheets/aniwatchplus.min.css"
|
"stylesheets/aniwatchplus.min.css"
|
||||||
],
|
],
|
||||||
"run_at": "document_end"
|
"run_at": "document_end"
|
||||||
}]
|
}
|
||||||
|
]
|
||||||
}
|
}
|
|
@ -4,6 +4,7 @@
|
||||||
"version": "$version",
|
"version": "$version",
|
||||||
"description": "$description",
|
"description": "$description",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
|
"storage",
|
||||||
"*://aniwatch.me/*"
|
"*://aniwatch.me/*"
|
||||||
],
|
],
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
|
@ -14,16 +15,23 @@
|
||||||
"48": "images/icon/icon_48.png",
|
"48": "images/icon/icon_48.png",
|
||||||
"96": "images/icon/icon_96.png"
|
"96": "images/icon/icon_96.png"
|
||||||
},
|
},
|
||||||
"content_scripts": [{
|
"options_ui": {
|
||||||
|
"page": "html/settings.html",
|
||||||
|
"open_in_tab": false
|
||||||
|
},
|
||||||
|
"content_scripts": [
|
||||||
|
{
|
||||||
"matches": [
|
"matches": [
|
||||||
"*://aniwatch.me/*"
|
"*://aniwatch.me/*"
|
||||||
],
|
],
|
||||||
"js": [
|
"js": [
|
||||||
|
"javascript/common.min.js",
|
||||||
"javascript/app.min.js"
|
"javascript/app.min.js"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"stylesheets/aniwatchplus.min.css"
|
"stylesheets/aniwatchplus.min.css"
|
||||||
],
|
],
|
||||||
"run_at": "document_end"
|
"run_at": "document_end"
|
||||||
}]
|
}
|
||||||
|
]
|
||||||
}
|
}
|
|
@ -5,6 +5,7 @@
|
||||||
"version_name": "0.3.1 Beta",
|
"version_name": "0.3.1 Beta",
|
||||||
"description": "Aniwatch Plus is an unofficial extension which provides several UI improvments for https://aniwatch.me.",
|
"description": "Aniwatch Plus is an unofficial extension which provides several UI improvments for https://aniwatch.me.",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
|
"storage",
|
||||||
"*://aniwatch.me/*"
|
"*://aniwatch.me/*"
|
||||||
],
|
],
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
|
@ -18,16 +19,23 @@
|
||||||
"48": "images/icon/icon_48.png",
|
"48": "images/icon/icon_48.png",
|
||||||
"96": "images/icon/icon_96.png"
|
"96": "images/icon/icon_96.png"
|
||||||
},
|
},
|
||||||
"content_scripts": [{
|
"options_ui": {
|
||||||
|
"page": "html/settings.html",
|
||||||
|
"open_in_tab": false
|
||||||
|
},
|
||||||
|
"content_scripts": [
|
||||||
|
{
|
||||||
"matches": [
|
"matches": [
|
||||||
"*://aniwatch.me/*"
|
"*://aniwatch.me/*"
|
||||||
],
|
],
|
||||||
"js": [
|
"js": [
|
||||||
|
"javascript/common.min.js",
|
||||||
"javascript/app.min.js"
|
"javascript/app.min.js"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"stylesheets/aniwatchplus.min.css"
|
"stylesheets/aniwatchplus.min.css"
|
||||||
],
|
],
|
||||||
"run_at": "document_end"
|
"run_at": "document_end"
|
||||||
}]
|
}
|
||||||
|
]
|
||||||
}
|
}
|
|
@ -5,6 +5,7 @@
|
||||||
"version_name": "$semanticVersion",
|
"version_name": "$semanticVersion",
|
||||||
"description": "$description",
|
"description": "$description",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
|
"storage",
|
||||||
"*://aniwatch.me/*"
|
"*://aniwatch.me/*"
|
||||||
],
|
],
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
|
@ -15,16 +16,23 @@
|
||||||
"48": "images/icon/icon_48.png",
|
"48": "images/icon/icon_48.png",
|
||||||
"96": "images/icon/icon_96.png"
|
"96": "images/icon/icon_96.png"
|
||||||
},
|
},
|
||||||
"content_scripts": [{
|
"options_ui": {
|
||||||
|
"page": "html/settings.html",
|
||||||
|
"open_in_tab": false
|
||||||
|
},
|
||||||
|
"content_scripts": [
|
||||||
|
{
|
||||||
"matches": [
|
"matches": [
|
||||||
"*://aniwatch.me/*"
|
"*://aniwatch.me/*"
|
||||||
],
|
],
|
||||||
"js": [
|
"js": [
|
||||||
|
"javascript/common.min.js",
|
||||||
"javascript/app.min.js"
|
"javascript/app.min.js"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"stylesheets/aniwatchplus.min.css"
|
"stylesheets/aniwatchplus.min.css"
|
||||||
],
|
],
|
||||||
"run_at": "document_end"
|
"run_at": "document_end"
|
||||||
}]
|
}
|
||||||
|
]
|
||||||
}
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
md-list-item {
|
md-list-item {
|
||||||
&:not(:last-child) {
|
&:not(:last-child):not(.awp-list-disabled) {
|
||||||
// added important to override aniwatch new introduced border which has a different, more "aggressive" color
|
// added important to override aniwatch new introduced border which has a different, more "aggressive" color
|
||||||
// https://canary.discord.com/channels/541683465599451136/543812424541798421/773621830161268756
|
// https://canary.discord.com/channels/541683465599451136/543812424541798421/773621830161268756
|
||||||
border-bottom: 1px solid $gray !important;
|
border-bottom: 1px solid $gray !important;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
md-tab-item {
|
md-tab-item {
|
||||||
// hide disabled tabs
|
// hide disabled tabs
|
||||||
&.md-disabled {
|
&.md-disabled:not(.awp-hide-unused-disabled) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue
This should be refactored and improved after #48 .