mirror of
				https://github.com/KevinMidboe/zoff.git
				synced 2025-10-29 18:00:23 +00:00 
			
		
		
		
	Added localmode for embedded players, configurable on embed-code create
This commit is contained in:
		| @@ -44,7 +44,7 @@ gulp.task('js', function () { | ||||
| }); | ||||
|  | ||||
| gulp.task('embed', function () { | ||||
|     return gulp.src(['server/VERSION.js', 'server/config/api_key.js', 'server/public/assets/js/player.js', 'server/public/assets/js/helpers.js', 'server/public/assets/js/playercontrols.js', 'server/public/assets/js/list.js', 'server/public/assets/js/embed.js', '!server/public/assets/js/frontpage*', '!server/public/assets/js/remotecontroller.js', 'server/public/assets/js/hostcontroller.js']) | ||||
|     return gulp.src(['server/VERSION.js', 'server/config/api_key.js', 'server/public/assets/js/player.js', 'server/public/assets/js/functions.js', 'server/public/assets/js/helpers.js', 'server/public/assets/js/playercontrols.js', 'server/public/assets/js/list.js', 'server/public/assets/js/embed.js', '!server/public/assets/js/frontpage*', '!server/public/assets/js/remotecontroller.js', 'server/public/assets/js/hostcontroller.js']) | ||||
|     //.pipe(sourcemaps.init()) | ||||
|     .pipe(concat('embed.min.js')) | ||||
|         .pipe(uglify({ | ||||
| @@ -105,6 +105,7 @@ gulp.task('remotecontroller', function () { | ||||
| gulp.task('default', function(){ | ||||
|     gulp.watch(['server/VERSION.js', 'server/public/assets/js/*.js'], ['js']); | ||||
|     gulp.watch(['server/public/assets/css/*.css'], ['css']); | ||||
|     gulp.watch(['server/public/assets/css/*.css'], ['css-embed']); | ||||
|     gulp.watch(['server/public/assets/js/token*.js', 'server/public/assets/js/helpers.js'], ['token']); | ||||
|     gulp.watch(['server/VERSION.js', 'server/public/assets/js/*.js'], ['embed']); | ||||
|     gulp.watch(['server/VERSION.js', 'server/public/assets/js/callback.js', 'server/public/assets/js/helpers.js'], ['callback']); | ||||
|   | ||||
							
								
								
									
										414
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										414
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -4,6 +4,34 @@ | ||||
|   "lockfileVersion": 1, | ||||
|   "requires": true, | ||||
|   "dependencies": { | ||||
|     "@gulp-sourcemaps/identity-map": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz", | ||||
|       "integrity": "sha512-ciiioYMLdo16ShmfHBXJBOFm3xPC4AuwO4xeRpFeHz7WK9PYsWCmigagG2XyzZpubK4a3qNKoUBDhbzHfa50LQ==", | ||||
|       "requires": { | ||||
|         "acorn": "^5.0.3", | ||||
|         "css": "^2.2.1", | ||||
|         "normalize-path": "^2.1.1", | ||||
|         "source-map": "^0.6.0", | ||||
|         "through2": "^2.0.3" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "source-map": { | ||||
|           "version": "0.6.1", | ||||
|           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", | ||||
|           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "@gulp-sourcemaps/map-sources": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", | ||||
|       "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", | ||||
|       "requires": { | ||||
|         "normalize-path": "^2.0.1", | ||||
|         "through2": "^2.0.3" | ||||
|       } | ||||
|     }, | ||||
|     "accepts": { | ||||
|       "version": "1.3.5", | ||||
|       "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", | ||||
| @@ -28,6 +56,11 @@ | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "acorn": { | ||||
|       "version": "5.7.2", | ||||
|       "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz", | ||||
|       "integrity": "sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==" | ||||
|     }, | ||||
|     "after": { | ||||
|       "version": "0.8.2", | ||||
|       "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", | ||||
| @@ -69,7 +102,6 @@ | ||||
|       "version": "1.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", | ||||
|       "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "ansi-wrap": "^0.1.0" | ||||
|       } | ||||
| @@ -98,8 +130,7 @@ | ||||
|     "ansi-wrap": { | ||||
|       "version": "0.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", | ||||
|       "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" | ||||
|     }, | ||||
|     "archy": { | ||||
|       "version": "1.0.0", | ||||
| @@ -119,8 +150,7 @@ | ||||
|     "arr-diff": { | ||||
|       "version": "4.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", | ||||
|       "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" | ||||
|     }, | ||||
|     "arr-flatten": { | ||||
|       "version": "1.1.0", | ||||
| @@ -131,8 +161,7 @@ | ||||
|     "arr-union": { | ||||
|       "version": "3.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", | ||||
|       "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" | ||||
|     }, | ||||
|     "array-differ": { | ||||
|       "version": "1.0.0", | ||||
| @@ -187,8 +216,7 @@ | ||||
|     "assign-symbols": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", | ||||
|       "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" | ||||
|     }, | ||||
|     "async": { | ||||
|       "version": "1.5.2", | ||||
| @@ -200,6 +228,11 @@ | ||||
|       "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", | ||||
|       "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" | ||||
|     }, | ||||
|     "atob": { | ||||
|       "version": "2.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", | ||||
|       "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" | ||||
|     }, | ||||
|     "autoprefixer": { | ||||
|       "version": "6.7.7", | ||||
|       "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", | ||||
| @@ -498,8 +531,7 @@ | ||||
|     "buffer-from": { | ||||
|       "version": "1.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", | ||||
|       "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", | ||||
|       "dev": true | ||||
|       "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" | ||||
|     }, | ||||
|     "buffer-shims": { | ||||
|       "version": "1.0.0", | ||||
| @@ -707,8 +739,7 @@ | ||||
|     "clone-buffer": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", | ||||
|       "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" | ||||
|     }, | ||||
|     "clone-stats": { | ||||
|       "version": "0.0.1", | ||||
| @@ -720,7 +751,6 @@ | ||||
|       "version": "1.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", | ||||
|       "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "inherits": "^2.0.1", | ||||
|         "process-nextick-args": "^2.0.0", | ||||
| @@ -730,14 +760,12 @@ | ||||
|         "isarray": { | ||||
|           "version": "1.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", | ||||
|           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", | ||||
|           "dev": true | ||||
|           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" | ||||
|         }, | ||||
|         "readable-stream": { | ||||
|           "version": "2.3.6", | ||||
|           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", | ||||
|           "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", | ||||
|           "dev": true, | ||||
|           "requires": { | ||||
|             "core-util-is": "~1.0.0", | ||||
|             "inherits": "~2.0.3", | ||||
| @@ -752,7 +780,6 @@ | ||||
|           "version": "1.1.1", | ||||
|           "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||||
|           "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||||
|           "dev": true, | ||||
|           "requires": { | ||||
|             "safe-buffer": "~5.1.0" | ||||
|           } | ||||
| @@ -946,6 +973,11 @@ | ||||
|       "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", | ||||
|       "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" | ||||
|     }, | ||||
|     "convert-source-map": { | ||||
|       "version": "1.5.1", | ||||
|       "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", | ||||
|       "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" | ||||
|     }, | ||||
|     "cookie": { | ||||
|       "version": "0.3.1", | ||||
|       "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", | ||||
| @@ -986,8 +1018,7 @@ | ||||
|     "core-util-is": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", | ||||
|       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" | ||||
|     }, | ||||
|     "cors": { | ||||
|       "version": "2.8.4", | ||||
| @@ -1028,6 +1059,27 @@ | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "css": { | ||||
|       "version": "2.2.3", | ||||
|       "resolved": "https://registry.npmjs.org/css/-/css-2.2.3.tgz", | ||||
|       "integrity": "sha512-0W171WccAjQGGTKLhw4m2nnl0zPHUlTO/I8td4XzJgIB8Hg3ZZx71qT4G4eX8OVsSiaAKiUMy73E3nsbPlg2DQ==", | ||||
|       "requires": { | ||||
|         "inherits": "^2.0.1", | ||||
|         "source-map": "^0.1.38", | ||||
|         "source-map-resolve": "^0.5.1", | ||||
|         "urix": "^0.1.0" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "source-map": { | ||||
|           "version": "0.1.43", | ||||
|           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", | ||||
|           "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", | ||||
|           "requires": { | ||||
|             "amdefine": ">=0.0.4" | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "css-color-names": { | ||||
|       "version": "0.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", | ||||
| @@ -1100,6 +1152,14 @@ | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "d": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", | ||||
|       "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", | ||||
|       "requires": { | ||||
|         "es5-ext": "^0.10.9" | ||||
|       } | ||||
|     }, | ||||
|     "dashdash": { | ||||
|       "version": "1.14.1", | ||||
|       "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", | ||||
| @@ -1134,6 +1194,31 @@ | ||||
|         "ms": "2.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "debug-fabulous": { | ||||
|       "version": "1.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", | ||||
|       "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", | ||||
|       "requires": { | ||||
|         "debug": "3.X", | ||||
|         "memoizee": "0.4.X", | ||||
|         "object-assign": "4.X" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "debug": { | ||||
|           "version": "3.1.0", | ||||
|           "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", | ||||
|           "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", | ||||
|           "requires": { | ||||
|             "ms": "2.0.0" | ||||
|           } | ||||
|         }, | ||||
|         "object-assign": { | ||||
|           "version": "4.1.1", | ||||
|           "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", | ||||
|           "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "decamelize": { | ||||
|       "version": "1.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", | ||||
| @@ -1142,8 +1227,7 @@ | ||||
|     "decode-uri-component": { | ||||
|       "version": "0.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", | ||||
|       "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" | ||||
|     }, | ||||
|     "defaults": { | ||||
|       "version": "1.0.3", | ||||
| @@ -1206,6 +1290,11 @@ | ||||
|       "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "detect-newline": { | ||||
|       "version": "2.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", | ||||
|       "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=" | ||||
|     }, | ||||
|     "dns-prefetch-control": { | ||||
|       "version": "0.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/dns-prefetch-control/-/dns-prefetch-control-0.1.0.tgz", | ||||
| @@ -1366,11 +1455,51 @@ | ||||
|         "has-binary2": "~1.0.2" | ||||
|       } | ||||
|     }, | ||||
|     "es5-ext": { | ||||
|       "version": "0.10.46", | ||||
|       "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", | ||||
|       "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", | ||||
|       "requires": { | ||||
|         "es6-iterator": "~2.0.3", | ||||
|         "es6-symbol": "~3.1.1", | ||||
|         "next-tick": "1" | ||||
|       } | ||||
|     }, | ||||
|     "es6-iterator": { | ||||
|       "version": "2.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", | ||||
|       "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", | ||||
|       "requires": { | ||||
|         "d": "1", | ||||
|         "es5-ext": "^0.10.35", | ||||
|         "es6-symbol": "^3.1.1" | ||||
|       } | ||||
|     }, | ||||
|     "es6-promise": { | ||||
|       "version": "3.3.1", | ||||
|       "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", | ||||
|       "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" | ||||
|     }, | ||||
|     "es6-symbol": { | ||||
|       "version": "3.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", | ||||
|       "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", | ||||
|       "requires": { | ||||
|         "d": "1", | ||||
|         "es5-ext": "~0.10.14" | ||||
|       } | ||||
|     }, | ||||
|     "es6-weak-map": { | ||||
|       "version": "2.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", | ||||
|       "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", | ||||
|       "requires": { | ||||
|         "d": "1", | ||||
|         "es5-ext": "^0.10.14", | ||||
|         "es6-iterator": "^2.0.1", | ||||
|         "es6-symbol": "^3.1.1" | ||||
|       } | ||||
|     }, | ||||
|     "escape-html": { | ||||
|       "version": "1.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", | ||||
| @@ -1393,6 +1522,15 @@ | ||||
|       "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", | ||||
|       "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" | ||||
|     }, | ||||
|     "event-emitter": { | ||||
|       "version": "0.3.5", | ||||
|       "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", | ||||
|       "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", | ||||
|       "requires": { | ||||
|         "d": "1", | ||||
|         "es5-ext": "~0.10.14" | ||||
|       } | ||||
|     }, | ||||
|     "exif-parser": { | ||||
|       "version": "0.1.12", | ||||
|       "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", | ||||
| @@ -1847,7 +1985,6 @@ | ||||
|       "version": "3.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", | ||||
|       "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "assign-symbols": "^1.0.0", | ||||
|         "is-extendable": "^1.0.1" | ||||
| @@ -1857,7 +1994,6 @@ | ||||
|           "version": "1.0.1", | ||||
|           "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", | ||||
|           "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", | ||||
|           "dev": true, | ||||
|           "requires": { | ||||
|             "is-plain-object": "^2.0.4" | ||||
|           } | ||||
| @@ -2460,6 +2596,31 @@ | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "gulp-sourcemaps": { | ||||
|       "version": "2.6.4", | ||||
|       "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-2.6.4.tgz", | ||||
|       "integrity": "sha1-y7IAhFCxvM5s0jv5gze+dRv24wo=", | ||||
|       "requires": { | ||||
|         "@gulp-sourcemaps/identity-map": "1.X", | ||||
|         "@gulp-sourcemaps/map-sources": "1.X", | ||||
|         "acorn": "5.X", | ||||
|         "convert-source-map": "1.X", | ||||
|         "css": "2.X", | ||||
|         "debug-fabulous": "1.X", | ||||
|         "detect-newline": "2.X", | ||||
|         "graceful-fs": "4.X", | ||||
|         "source-map": "~0.6.0", | ||||
|         "strip-bom-string": "1.X", | ||||
|         "through2": "2.X" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "source-map": { | ||||
|           "version": "0.6.1", | ||||
|           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", | ||||
|           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "gulp-uglify": { | ||||
|       "version": "3.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.1.tgz", | ||||
| @@ -2500,6 +2661,48 @@ | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "gulp-uglify-es": { | ||||
|       "version": "1.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/gulp-uglify-es/-/gulp-uglify-es-1.0.4.tgz", | ||||
|       "integrity": "sha512-UMRufZsBmQizCYpftutaiVoLswpbzFEfY90EJLU4YlTgculeHnanb794s88TMd5tpCZVC638sAX6JrLVYTP/Wg==", | ||||
|       "requires": { | ||||
|         "o-stream": "^0.2.2", | ||||
|         "plugin-error": "^1.0.1", | ||||
|         "terser": "^3.7.5", | ||||
|         "vinyl": "^2.1.0", | ||||
|         "vinyl-sourcemaps-apply": "^0.2.1" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "clone": { | ||||
|           "version": "2.1.2", | ||||
|           "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", | ||||
|           "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" | ||||
|         }, | ||||
|         "clone-stats": { | ||||
|           "version": "1.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", | ||||
|           "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" | ||||
|         }, | ||||
|         "replace-ext": { | ||||
|           "version": "1.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", | ||||
|           "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" | ||||
|         }, | ||||
|         "vinyl": { | ||||
|           "version": "2.2.0", | ||||
|           "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", | ||||
|           "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", | ||||
|           "requires": { | ||||
|             "clone": "^2.1.1", | ||||
|             "clone-buffer": "^1.0.0", | ||||
|             "clone-stats": "^1.0.0", | ||||
|             "cloneable-readable": "^1.0.0", | ||||
|             "remove-trailing-separator": "^1.0.1", | ||||
|             "replace-ext": "^1.0.0" | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "gulp-util": { | ||||
|       "version": "3.0.8", | ||||
|       "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", | ||||
| @@ -3000,11 +3203,15 @@ | ||||
|       "version": "2.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", | ||||
|       "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "isobject": "^3.0.1" | ||||
|       } | ||||
|     }, | ||||
|     "is-promise": { | ||||
|       "version": "2.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", | ||||
|       "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" | ||||
|     }, | ||||
|     "is-relative": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", | ||||
| @@ -3059,8 +3266,7 @@ | ||||
|     "isobject": { | ||||
|       "version": "3.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", | ||||
|       "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" | ||||
|     }, | ||||
|     "jimp": { | ||||
|       "version": "0.2.28", | ||||
| @@ -3337,6 +3543,14 @@ | ||||
|       "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "lru-queue": { | ||||
|       "version": "0.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", | ||||
|       "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", | ||||
|       "requires": { | ||||
|         "es5-ext": "~0.10.2" | ||||
|       } | ||||
|     }, | ||||
|     "macaddress": { | ||||
|       "version": "0.2.8", | ||||
|       "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", | ||||
| @@ -3392,6 +3606,21 @@ | ||||
|       "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", | ||||
|       "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" | ||||
|     }, | ||||
|     "memoizee": { | ||||
|       "version": "0.4.14", | ||||
|       "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", | ||||
|       "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", | ||||
|       "requires": { | ||||
|         "d": "1", | ||||
|         "es5-ext": "^0.10.45", | ||||
|         "es6-weak-map": "^2.0.2", | ||||
|         "event-emitter": "^0.3.5", | ||||
|         "is-promise": "^2.1", | ||||
|         "lru-queue": "0.1", | ||||
|         "next-tick": "1", | ||||
|         "timers-ext": "^0.1.5" | ||||
|       } | ||||
|     }, | ||||
|     "merge-descriptors": { | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", | ||||
| @@ -3798,6 +4027,11 @@ | ||||
|       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", | ||||
|       "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" | ||||
|     }, | ||||
|     "next-tick": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", | ||||
|       "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" | ||||
|     }, | ||||
|     "nocache": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.0.0.tgz", | ||||
| @@ -3808,6 +4042,14 @@ | ||||
|       "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-4.6.4.tgz", | ||||
|       "integrity": "sha512-SD4uuX7NMzZ5f5m1XHDd13J4UC3SmdJk8DsmU1g6Nrs5h3x9LcXr6EBPZIqXRJ3LrF7RdklzGhZRF/TuylTcLg==" | ||||
|     }, | ||||
|     "normalize-path": { | ||||
|       "version": "2.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", | ||||
|       "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", | ||||
|       "requires": { | ||||
|         "remove-trailing-separator": "^1.0.1" | ||||
|       } | ||||
|     }, | ||||
|     "normalize-range": { | ||||
|       "version": "0.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", | ||||
| @@ -3845,6 +4087,11 @@ | ||||
|       "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "o-stream": { | ||||
|       "version": "0.2.2", | ||||
|       "resolved": "https://registry.npmjs.org/o-stream/-/o-stream-0.2.2.tgz", | ||||
|       "integrity": "sha512-V3j76KU3g/Gyl8rpdi2z72rn5zguMvTCQgAXfBe3pxEefKqXmOUOD7mvx/mNjykdxGqDVfpSoo8r+WdrkWg/1Q==" | ||||
|     }, | ||||
|     "object-assign": { | ||||
|       "version": "3.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", | ||||
| @@ -4188,7 +4435,6 @@ | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", | ||||
|       "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "ansi-colors": "^1.0.1", | ||||
|         "arr-diff": "^4.0.0", | ||||
| @@ -4547,8 +4793,7 @@ | ||||
|     "process-nextick-args": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", | ||||
|       "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", | ||||
|       "dev": true | ||||
|       "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" | ||||
|     }, | ||||
|     "promise": { | ||||
|       "version": "7.3.1", | ||||
| @@ -4779,8 +5024,7 @@ | ||||
|     "remove-trailing-separator": { | ||||
|       "version": "1.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", | ||||
|       "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" | ||||
|     }, | ||||
|     "repeat-element": { | ||||
|       "version": "1.1.2", | ||||
| @@ -4947,8 +5191,7 @@ | ||||
|     "resolve-url": { | ||||
|       "version": "0.2.1", | ||||
|       "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", | ||||
|       "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" | ||||
|     }, | ||||
|     "ret": { | ||||
|       "version": "0.1.15", | ||||
| @@ -5379,6 +5622,39 @@ | ||||
|         "amdefine": ">=0.0.4" | ||||
|       } | ||||
|     }, | ||||
|     "source-map-resolve": { | ||||
|       "version": "0.5.2", | ||||
|       "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", | ||||
|       "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", | ||||
|       "requires": { | ||||
|         "atob": "^2.1.1", | ||||
|         "decode-uri-component": "^0.2.0", | ||||
|         "resolve-url": "^0.2.1", | ||||
|         "source-map-url": "^0.4.0", | ||||
|         "urix": "^0.1.0" | ||||
|       } | ||||
|     }, | ||||
|     "source-map-support": { | ||||
|       "version": "0.5.9", | ||||
|       "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", | ||||
|       "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", | ||||
|       "requires": { | ||||
|         "buffer-from": "^1.0.0", | ||||
|         "source-map": "^0.6.0" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "source-map": { | ||||
|           "version": "0.6.1", | ||||
|           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", | ||||
|           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "source-map-url": { | ||||
|       "version": "0.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", | ||||
|       "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" | ||||
|     }, | ||||
|     "sparkles": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", | ||||
| @@ -5542,6 +5818,11 @@ | ||||
|         "is-utf8": "^0.2.0" | ||||
|       } | ||||
|     }, | ||||
|     "strip-bom-string": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", | ||||
|       "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" | ||||
|     }, | ||||
|     "supports-color": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", | ||||
| @@ -5563,11 +5844,32 @@ | ||||
|         "whet.extend": "~0.9.9" | ||||
|       } | ||||
|     }, | ||||
|     "terser": { | ||||
|       "version": "3.8.2", | ||||
|       "resolved": "https://registry.npmjs.org/terser/-/terser-3.8.2.tgz", | ||||
|       "integrity": "sha512-FGSBXiBJe2TSXy6pWwXpY0YcEWEK35UKL64BBbxX3aHqM4Nj0RMqXvqBuoSGfyd80t8MKQ5JwYm5jRRGTSEFNg==", | ||||
|       "requires": { | ||||
|         "commander": "~2.17.1", | ||||
|         "source-map": "~0.6.1", | ||||
|         "source-map-support": "~0.5.6" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "commander": { | ||||
|           "version": "2.17.1", | ||||
|           "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", | ||||
|           "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" | ||||
|         }, | ||||
|         "source-map": { | ||||
|           "version": "0.6.1", | ||||
|           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", | ||||
|           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "through2": { | ||||
|       "version": "2.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", | ||||
|       "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "readable-stream": "^2.1.5", | ||||
|         "xtend": "~4.0.1" | ||||
| @@ -5576,32 +5878,27 @@ | ||||
|         "core-util-is": { | ||||
|           "version": "1.0.2", | ||||
|           "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", | ||||
|           "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", | ||||
|           "dev": true | ||||
|           "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" | ||||
|         }, | ||||
|         "inherits": { | ||||
|           "version": "2.0.3", | ||||
|           "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", | ||||
|           "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", | ||||
|           "dev": true | ||||
|           "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" | ||||
|         }, | ||||
|         "isarray": { | ||||
|           "version": "1.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", | ||||
|           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", | ||||
|           "dev": true | ||||
|           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" | ||||
|         }, | ||||
|         "process-nextick-args": { | ||||
|           "version": "2.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", | ||||
|           "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", | ||||
|           "dev": true | ||||
|           "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" | ||||
|         }, | ||||
|         "readable-stream": { | ||||
|           "version": "2.3.6", | ||||
|           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", | ||||
|           "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", | ||||
|           "dev": true, | ||||
|           "requires": { | ||||
|             "core-util-is": "~1.0.0", | ||||
|             "inherits": "~2.0.3", | ||||
| @@ -5615,14 +5912,12 @@ | ||||
|         "safe-buffer": { | ||||
|           "version": "5.1.1", | ||||
|           "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", | ||||
|           "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", | ||||
|           "dev": true | ||||
|           "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" | ||||
|         }, | ||||
|         "string_decoder": { | ||||
|           "version": "1.1.1", | ||||
|           "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||||
|           "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||||
|           "dev": true, | ||||
|           "requires": { | ||||
|             "safe-buffer": "~5.1.0" | ||||
|           } | ||||
| @@ -5630,14 +5925,12 @@ | ||||
|         "util-deprecate": { | ||||
|           "version": "1.0.2", | ||||
|           "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", | ||||
|           "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", | ||||
|           "dev": true | ||||
|           "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" | ||||
|         }, | ||||
|         "xtend": { | ||||
|           "version": "4.0.1", | ||||
|           "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", | ||||
|           "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", | ||||
|           "dev": true | ||||
|           "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
| @@ -5661,6 +5954,15 @@ | ||||
|       "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "timers-ext": { | ||||
|       "version": "0.1.5", | ||||
|       "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.5.tgz", | ||||
|       "integrity": "sha512-tsEStd7kmACHENhsUPaxb8Jf8/+GZZxyNFQbZD07HQOyooOa6At1rQqjffgvg7n+dxscQa9cjjMdWhJtsP2sxg==", | ||||
|       "requires": { | ||||
|         "es5-ext": "~0.10.14", | ||||
|         "next-tick": "1" | ||||
|       } | ||||
|     }, | ||||
|     "tinycolor2": { | ||||
|       "version": "1.4.1", | ||||
|       "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", | ||||
| @@ -5919,8 +6221,7 @@ | ||||
|     "urix": { | ||||
|       "version": "0.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", | ||||
|       "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" | ||||
|     }, | ||||
|     "url-regex": { | ||||
|       "version": "3.2.0", | ||||
| @@ -5956,8 +6257,7 @@ | ||||
|     "util-deprecate": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", | ||||
|       "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" | ||||
|     }, | ||||
|     "utils-merge": { | ||||
|       "version": "1.0.1", | ||||
| @@ -6119,7 +6419,6 @@ | ||||
|       "version": "0.2.1", | ||||
|       "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", | ||||
|       "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "source-map": "^0.5.1" | ||||
|       }, | ||||
| @@ -6127,8 +6426,7 @@ | ||||
|         "source-map": { | ||||
|           "version": "0.5.7", | ||||
|           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", | ||||
|           "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", | ||||
|           "dev": true | ||||
|           "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|   | ||||
| @@ -40,6 +40,8 @@ | ||||
|     "express-recaptcha": "^3.0.1", | ||||
|     "express-session": "^1.15.6", | ||||
|     "express-sessions": "^1.0.6", | ||||
|     "gulp-sourcemaps": "^2.6.4", | ||||
|     "gulp-uglify-es": "^1.0.4", | ||||
|     "helmet": "^3.12.0", | ||||
|     "jimp": "^0.2.28", | ||||
|     "mongodb": "^2.2.35", | ||||
|   | ||||
| @@ -13,6 +13,40 @@ | ||||
|   transition: all .3s !important; | ||||
| } | ||||
|  | ||||
| .prev.playbar, .skip.playbar { | ||||
|     float: left; | ||||
|     font-size: 24px; | ||||
|     cursor: pointer; | ||||
|     height: 32px; | ||||
|     line-height: 31px; | ||||
|     padding-top: 3px; | ||||
| } | ||||
|  | ||||
| .prev, .skip { | ||||
|   display: flex; | ||||
|   justify-content: center; | ||||
|   align-items: center; | ||||
| } | ||||
|  | ||||
| #playpause, .prev.playbar, .skip.playbar { | ||||
|     padding: 0 2.5px; | ||||
| } | ||||
| .playbar-btn:hover { | ||||
|     background-color: rgba(0,0,0,.6); | ||||
|     color: hsla(0,0%,100%,.5); | ||||
| } | ||||
|  | ||||
| .hide { | ||||
|     display: none!important; | ||||
| } | ||||
| .playbar-btn { | ||||
|     cursor: pointer; | ||||
|     transition: background-color .2s; | ||||
| } | ||||
| #controls, .playbar { | ||||
|     color: #fff; | ||||
| } | ||||
|  | ||||
| #player_loader_container { | ||||
|   width: 100%; | ||||
|   height: 100%; | ||||
| @@ -252,9 +286,28 @@ | ||||
|   color:white; | ||||
| } | ||||
|  | ||||
| .margin-playbar { | ||||
|   margin-left: 10px; | ||||
| } | ||||
|  | ||||
|  | ||||
| #seekToDuration{ | ||||
|     position: absolute; | ||||
|     background: #2d2d2d; | ||||
|     color:white; | ||||
|     padding: 10px 8px; | ||||
|     z-index: 2000; | ||||
|     background-color: #2d2d2d; | ||||
|     border-radius: 2px; | ||||
|     color: #fff; | ||||
|     min-height: 36px; | ||||
|     text-align: center; | ||||
|     max-width: calc(100% - 4px); | ||||
|     pointer-events: none; | ||||
| } | ||||
|  | ||||
| #playpause, #volume-button | ||||
| { | ||||
|   margin-left:10px; | ||||
|   font-size: 23px; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -364,61 +364,6 @@ var Channel = { | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     seekToClick: function(e){ | ||||
|         var acceptable = ["bar", "controls", "duration"]; | ||||
|  | ||||
|         if(acceptable.indexOf(e.target.getAttribute("id")) >= 0) { | ||||
|             if(full_playlist == undefined) return; | ||||
|             var total = full_playlist[full_playlist.length - 1].duration / document.getElementById("controls").offsetWidth; | ||||
|             total = total * e.clientX; | ||||
|  | ||||
|             if(!chromecastAvailable){ | ||||
|                 if(videoSource == "youtube") Player.player.seekTo(total + Player.np.start); | ||||
|                 else if(videoSource == "soundcloud") Player.soundcloud_player.seek((total + Player.np.start) * 1000); | ||||
|                 dMinutes = Math.floor(duration / 60); | ||||
|                 dSeconds = duration - dMinutes * 60; | ||||
|                 currDurr = total; | ||||
|                 if(currDurr - Player.np.start > duration) { | ||||
|                     currDurr = duration - Player.np.start; | ||||
|                 } | ||||
|                 currDurr = currDurr - Player.np.start; | ||||
|                 minutes = Math.floor(currDurr / 60); | ||||
|                 seconds = currDurr - (minutes * 60); | ||||
|                 document.getElementById("duration").innerHTML = Helper.pad(minutes)+":"+Helper.pad(seconds)+" <span id='dash'>/</span> "+Helper.pad(dMinutes)+":"+Helper.pad(dSeconds); | ||||
|                 per = (100 / duration) * currDurr; | ||||
|                 if(per >= 100) | ||||
|                 per = 100; | ||||
|                 else if(duration === 0) | ||||
|                 per = 0; | ||||
|                 document.getElementById("bar").style.width = per + "%" | ||||
|             } else { | ||||
|                 castSession.sendMessage("urn:x-cast:zoff.me", {type: "seekTo", seekTo: total}); | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     seekToMove: function(e){ | ||||
|         var pos_x = event.clientX - Math.ceil(document.getElementById("seekToDuration").offsetWidth / 2); | ||||
|         if(pos_x < 0) pos_x = 0; | ||||
|         else if(pos_x + document.getElementById("seekToDuration").offsetWidth > document.getElementById("controls").offsetWidth) { | ||||
|             pos_x = document.getElementById("controls").offsetWidth - document.getElementById("seekToDuration").offsetWidth; | ||||
|         } | ||||
|         Helper.css("#seekToDuration", "left", pos_x + "px"); | ||||
|         try{ | ||||
|             var total = full_playlist[full_playlist.length - 1].duration / document.getElementById("controls").offsetWidth; | ||||
|             total = total * event.clientX; | ||||
|             var _time = Helper.secondsToOther(total); | ||||
|             var _minutes = Helper.pad(_time[0]); | ||||
|             var _seconds = Helper.pad(Math.ceil(_time[1])); | ||||
|             Helper.setHtml("#seekToDuration", _minutes + ":" + _seconds); | ||||
|  | ||||
|             var acceptable = ["bar", "controls", "duration"]; | ||||
|             if(acceptable.indexOf(event.target.getAttribute("id")) >= 0 && dragging) { | ||||
|                 document.getElementById("bar").style.width(((100 / duration) * total) + "%"); | ||||
|             } | ||||
|         } catch(e){} | ||||
|     }, | ||||
|  | ||||
|     set_title_width: function(start){ | ||||
|         if(window.innerWidth > 600){ | ||||
|             var add_width = document.getElementsByClassName("brand-logo")[0].offsetWidth | ||||
|   | ||||
| @@ -5,6 +5,7 @@ var song_title = ""; | ||||
| var paused = false; | ||||
| var client = false; | ||||
| var startTime = 0; | ||||
| var full_playlist; | ||||
| var hostMode = false; | ||||
| var soundcloud_enabled = true; | ||||
| var socket_connected = false; | ||||
| @@ -12,6 +13,8 @@ var dynamicListeners = {}; | ||||
| var player_ready = false; | ||||
| var previousSoundcloud; | ||||
| var buffering = false; | ||||
| var prev_chan_list = ""; | ||||
| var local_new_channel = false; | ||||
| var empty_clear = false; | ||||
| var fix_too_far = false; | ||||
| var beginning = false; | ||||
| @@ -76,12 +79,12 @@ window.addEventListener("message", receiveMessage, false); | ||||
| window.addEventListener("DOMContentLoaded", function() { | ||||
| }); | ||||
| window.addEventListener("load", function() { | ||||
|   if(hash.length >= 2 && hash.indexOf("autoplay") > 0){ | ||||
|       autoplay = true; | ||||
|       Helper.css("#player", "visibility", "hidden"); | ||||
|   } else { | ||||
|       //paused = true; | ||||
|   } | ||||
|     if(hash.length >= 2 && hash.indexOf("autoplay") > 0){ | ||||
|         autoplay = true; | ||||
|         Helper.css("#player", "visibility", "hidden"); | ||||
|     } else { | ||||
|         //paused = true; | ||||
|     } | ||||
|     if(hash.indexOf("videoonly") > -1) { | ||||
|         Helper.addClass("#wrapper", "hide"); | ||||
|         Helper.addClass("#controls", "hide"); | ||||
| @@ -89,6 +92,7 @@ window.addEventListener("load", function() { | ||||
|         Helper.addClass("#player_overlay", "video_only"); | ||||
|         Helper.css("#zoffbutton", "bottom", "0px"); | ||||
|     } | ||||
|  | ||||
|     M.Modal.init(document.getElementById("locked_channel"), { | ||||
|         dismissible: false | ||||
|     }); | ||||
| @@ -98,6 +102,10 @@ window.addEventListener("load", function() { | ||||
|     //add = "localhost"; | ||||
|     socket = io.connect(''+add+':8080', connection_options); | ||||
|  | ||||
|     if(hash.indexOf("localmode") > 1) { | ||||
|         change_offline(true, false); | ||||
|     } | ||||
|  | ||||
|     socket.on('auth_required', function() { | ||||
|         M.Modal.getInstance(document.getElementById("locked_channel")).open(); | ||||
|     }); | ||||
| @@ -125,7 +133,7 @@ window.addEventListener("load", function() { | ||||
|     setup_list_listener(); | ||||
|  | ||||
|     if(autoplay) { | ||||
|       startWaitTimerPlay(); | ||||
|         startWaitTimerPlay(); | ||||
|     } | ||||
|  | ||||
|     window.onYouTubeIframeAPIReady = Player.onYouTubeIframeAPIReady; | ||||
| @@ -147,13 +155,13 @@ window.addEventListener("load", function() { | ||||
| function resizePlaylistPlaying(){}; | ||||
|  | ||||
| function startWaitTimerPlay() { | ||||
|   setTimeout(function() { | ||||
|     if(videoSource == "youtube") { | ||||
|       Player.player.playVideo(); | ||||
|     } else if(videoSource == "soundcloud"){ | ||||
|       Player.soundcloud_player.play(); | ||||
|     } | ||||
|   }, 5000); | ||||
|     setTimeout(function() { | ||||
|         if(videoSource == "youtube") { | ||||
|             Player.player.playVideo(); | ||||
|         } else if(videoSource == "soundcloud"){ | ||||
|             Player.soundcloud_player.play(); | ||||
|         } | ||||
|     }, 5000); | ||||
| } | ||||
|  | ||||
| function setup_host_listener(id) { | ||||
| @@ -183,78 +191,78 @@ function loadChromecastVideo(){} | ||||
| function toast(msg) { | ||||
|     switch(msg) { | ||||
|         case "suggested_thumbnail": | ||||
|             if(embed) return; | ||||
|             msg = "The thumbnail has been suggested!"; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         msg = "The thumbnail has been suggested!"; | ||||
|         break; | ||||
|         case "faulty_start_end": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "wait_longer": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "suggested_description": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "thumbnail_denied": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "description_denied": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "addedsong": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "addedplaylist": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "savedsettings": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "wrongpass": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "deleted_songs": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "shuffled": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "deletesong": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "voted": | ||||
|             msg=Helper.rnd(["You voted!", "You vote like a boss", "Voting is the key to democracy", "May you get your song to the very top!", "I love that song! I vouch for you.", "Only you vote that good", "I like the way you vote...", "Up the video goes!", "Voted Zoff for president", "Only 999 more to go!"]); | ||||
|             break; | ||||
|         msg=Helper.rnd(["You voted!", "You vote like a boss", "Voting is the key to democracy", "May you get your song to the very top!", "I love that song! I vouch for you.", "Only you vote that good", "I like the way you vote...", "Up the video goes!", "Voted Zoff for president", "Only 999 more to go!"]); | ||||
|         break; | ||||
|         case "alreadyvoted": | ||||
|             msg=Helper.rnd(["You can't vote twice on that song!", "I see you have voted on that song before", "One vote per person!", "I know you want to hear your song, but have patience!", "I'm sorry, but I can't let you vote twice, Dave."]); | ||||
|             break; | ||||
|         msg=Helper.rnd(["You can't vote twice on that song!", "I see you have voted on that song before", "One vote per person!", "I know you want to hear your song, but have patience!", "I'm sorry, but I can't let you vote twice, Dave."]); | ||||
|         break; | ||||
|         case "skip": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "listhaspass": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "noskip": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "alreadyskip": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "notyetskip": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "correctpass": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "changedpass": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "suggested": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|         case "alreadyplay": | ||||
|             if(embed) return; | ||||
|             break; | ||||
|         if(embed) return; | ||||
|         break; | ||||
|     } | ||||
|     before_toast(); | ||||
|     M.toast({html: msg, displayLength: 4000}); | ||||
| @@ -274,38 +282,121 @@ function emit() { | ||||
|     } | ||||
| } | ||||
|  | ||||
| function change_offline(enabled, already_offline){ | ||||
|     if(client) { | ||||
|         offline = false; | ||||
|         return; | ||||
|     } | ||||
|     offline = enabled; | ||||
|     socket.emit("offline", {status: enabled, channel: chan != undefined ? chan.toLowerCase() : ""}); | ||||
|     if(!Helper.mobilecheck()) { | ||||
|         if(document.querySelectorAll("#offline-mode").length == 1 && M.Tooltip.getInstance(document.getElementById("offline-mode"))) { | ||||
|             Helper.tooltip("#offline-mode", 'destroy'); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| function handleEvent(e, target, tried, type) { | ||||
|     for(var y = 0; y < e.path.length; y++) { | ||||
|         var target = e.path[y]; | ||||
|         if(dynamicListeners[type] && dynamicListeners[type]["#" + target.id]) { | ||||
|             dynamicListeners[type]["#" + target.id].call(target); | ||||
|             return; | ||||
|         } else { | ||||
|             if(target.classList == undefined) return; | ||||
|             for(var i = 0; i < target.classList.length; i++) { | ||||
|                 if(dynamicListeners[type] && dynamicListeners[type]["." + target.classList[i]]) { | ||||
|                     dynamicListeners[type]["." + target.classList[i]].call(target); | ||||
|                     return; | ||||
|                 } | ||||
|     var mouseEnter = function(e){ | ||||
|         Helper.removeClass("#seekToDuration", "hide"); | ||||
|     }; | ||||
|  | ||||
|     var mouseLeave = function(e){ | ||||
|         dragging = false; | ||||
|         Helper.addClass("#seekToDuration", "hide"); | ||||
|     }; | ||||
|  | ||||
|     var mouseDown = function(e) { | ||||
|         var acceptable = ["bar", "controls", "duration"]; | ||||
|         if(acceptable.indexOf(e.target.id) >= 0) { | ||||
|             dragging = true; | ||||
|         } | ||||
|     }; | ||||
|  | ||||
|     var mouseUp = function(e) { | ||||
|         dragging = false; | ||||
|     }; | ||||
|  | ||||
|     if(enabled){ | ||||
|         Helper.addClass("#viewers", "hide"); | ||||
|         Helper.removeClass(".margin-playbar", "margin-playbar"); | ||||
|         Helper.addClass(".prev playbar", "margin-playbar"); | ||||
|         Helper.removeClass(".prev playbar", "hide"); | ||||
|         Helper.removeClass(".skip playbar", "hide"); | ||||
|         Helper.removeClass("#offline-mode", "waves-cyan"); | ||||
|         Helper.addClass("#offline-mode", "cyan"); | ||||
|         Helper.removeClass(".delete-context-menu", "context-menu-disabled"); | ||||
|         if(!Helper.mobilecheck()) { | ||||
|             Helper.tooltip("#offline-mode", { | ||||
|                 delay: 5, | ||||
|                 position: "bottom", | ||||
|                 html: "Disable local mode" | ||||
|             }); | ||||
|         } | ||||
|  | ||||
|         if(window.location.pathname != "/"){ | ||||
|             socket.removeEventListener("color"); | ||||
|             document.getElementById("controls").addEventListener("mouseenter", mouseEnter, false); | ||||
|             document.getElementById("controls").addEventListener("mouseleave", mouseLeave, false); | ||||
|             document.getElementById("controls").addEventListener("mousedown", mouseDown, false); | ||||
|             document.getElementById("controls").addEventListener("mouseup", mouseUp, false); | ||||
|             document.getElementById("controls").addEventListener("mousemove", seekToMove); | ||||
|             document.getElementById("controls").addEventListener("click", seekToClick); | ||||
|  | ||||
|             document.querySelector("#main_components").insertAdjacentHTML("beforeend", "<div id='seekToDuration' class='hide'>00:00/01:00</div>"); | ||||
|             var controlElement = document.querySelector("#controls"); | ||||
|             Helper.css("#seekToDuration", "bottom", "50px"); | ||||
|             Helper.addClass("#controls", "ewresize"); | ||||
|         } | ||||
|         if(full_playlist != undefined && !already_offline){ | ||||
|             for(var x = 0; x < full_playlist.length; x++){ | ||||
|                 full_playlist[x].votes = 0; | ||||
|             } | ||||
|             List.sortList(); | ||||
|             List.populate_list(full_playlist); | ||||
|         } | ||||
|     } else { | ||||
|  | ||||
|         if(!Admin.logged_in) Helper.addClass(".delete-context-menu", "context-menu-disabled"); | ||||
|         Helper.removeClass(".margin-playbar", "margin-playbar"); | ||||
|         Helper.addClass("#playpause", "margin-playbar"); | ||||
|         Helper.removeClass("#viewers", "hide"); | ||||
|         Helper.addClass(".prev playbar", "hide"); | ||||
|         Helper.addClass(".skip playbar", "hide"); | ||||
|         Helper.addClass("#offline-mode", "waves-cyan"); | ||||
|         Helper.removeClass("#offline-mode", "cyan"); | ||||
|         if(!Helper.mobilecheck()) { | ||||
|             Helper.tooltip("#offline-mode", { | ||||
|                 delay: 5, | ||||
|                 position: "bottom", | ||||
|                 html: "Enable local mode" | ||||
|             }); | ||||
|         } | ||||
|  | ||||
|         if(window.location.pathname != "/"){ | ||||
|             document.getElementById("controls").removeEventListener("mouseenter", mouseEnter, false); | ||||
|             document.getElementById("controls").removeEventListener("mouseleave", mouseLeave, false); | ||||
|             document.getElementById("controls").removeEventListener("mousedown", mouseDown, false); | ||||
|             document.getElementById("controls").removeEventListener("mouseup", mouseUp, false); | ||||
|             document.getElementById("controls").removeEventListener("mousemove", seekToMove); | ||||
|             document.getElementById("controls").removeEventListener("click", seekToClick); | ||||
|             Helper.removeElement("#seekToDuration"); | ||||
|             socket.on("color", Player.setBGimage); | ||||
|             socket.emit("pos", {channel: chan.toLowerCase()}); | ||||
|             var add = ""; | ||||
|             //if(private_channel) add = Crypt.getCookie("_uI") + "_"; | ||||
|             socket.emit("list", {version: parseInt(localStorage.getItem("VERSION")), channel: add + chan.toLowerCase()}); | ||||
|             Helper.removeClass("#controls", "ewresize"); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| function addListener(type, element, callback) { | ||||
|     if(dynamicListeners[type] == undefined) dynamicListeners[type] = {}; | ||||
|     dynamicListeners[type][element] = callback; | ||||
| } | ||||
|  | ||||
| function before_toast(){ | ||||
|     /*if($('.toast').length > 0) { | ||||
|         var toastElement = $('.toast').first()[0]; | ||||
|         var toastInstance = toastElement.M_Toast; | ||||
|         toastInstance.remove(); | ||||
|     }*/ | ||||
|     M.Toast.dismissAll(); | ||||
|     //Materialize.Toast.removeAll(); | ||||
|     var toastElement = $('.toast').first()[0]; | ||||
|     var toastInstance = toastElement.M_Toast; | ||||
|     toastInstance.remove(); | ||||
| }*/ | ||||
| M.Toast.dismissAll(); | ||||
| //Materialize.Toast.removeAll(); | ||||
| } | ||||
|  | ||||
| document.addEventListener("click", function(e) { | ||||
| @@ -318,7 +409,8 @@ addListener("click", "#zoffbutton", function(e) { | ||||
| }); | ||||
|  | ||||
| addListener("click", ".vote-container", function(e) { | ||||
|     var id = this.getAttribute("data-video-id"); | ||||
|     var that = e; | ||||
|     var id = that.getAttribute("data-video-id"); | ||||
|     List.vote(id, "pos"); | ||||
| }); | ||||
|  | ||||
| @@ -336,6 +428,18 @@ addListener("click", ".next_page", function(e) { | ||||
|     List.dynamicContentPage(1); | ||||
| }); | ||||
|  | ||||
| addListener("click", ".prev", function(event){ | ||||
|     this.preventDefault(); | ||||
|     if(!offline) return; | ||||
|     List.skip(false); | ||||
| }); | ||||
|  | ||||
| addListener("click", ".skip", function(event){ | ||||
|     this.preventDefault(); | ||||
|     if(!offline) return; | ||||
|     List.skip(true); | ||||
| }); | ||||
|  | ||||
| addListener("click", ".last_page", function(e){ | ||||
|     event.preventDefault(); | ||||
|     List.dynamicContentPage(10); | ||||
|   | ||||
| @@ -23,7 +23,7 @@ function removeAllListeners() { | ||||
|  | ||||
| function resizeFunction() { | ||||
|     if(chan && !Helper.mobilecheck()){ | ||||
| 	if(document.querySelector("#wrapper") == null) return; | ||||
|         if(document.querySelector("#wrapper") == null) return; | ||||
|         if(!client && !embed) document.querySelector("#hide-playlist").style.left = (document.querySelector("#video-container").offsetWidth - document.querySelector("#hide-playlist").offsetWidth) + "px"; | ||||
|         if(window.innerWidth > 600 && document.querySelector("#wrapper").style.height != "") { | ||||
|             document.querySelector("#wrapper").style.height = ""; | ||||
| @@ -753,10 +753,10 @@ function disable_debug(){ | ||||
|     localStorage.debug = false; | ||||
| } | ||||
|  | ||||
| function embed_code(autoplay, width, height, color, embed_code){ | ||||
| function embed_code(autoplay, width, height, color, embed_code, embed_local){ | ||||
|     var autoplay_add = ""; | ||||
|     if(autoplay == "&autoplay") autoplay_add = 'allow="autoplay"'; | ||||
|     return '<iframe src="https://zoff.me/_embed#' + chan.toLowerCase() + '&' + color + autoplay + embed_videoonly + '" width="' + width + 'px" height="' + height + 'px" ' + autoplay_add + '></iframe>'; | ||||
|     return '<iframe src="https://zoff.me/_embed#' + chan.toLowerCase() + '&' + color + autoplay + embed_videoonly + embed_local + '" width="' + width + 'px" height="' + height + 'px" ' + autoplay_add + '></iframe>'; | ||||
| } | ||||
|  | ||||
| function change_offline(enabled, already_offline){ | ||||
| @@ -795,88 +795,129 @@ function change_offline(enabled, already_offline){ | ||||
|     }; | ||||
|  | ||||
|     if(enabled){ | ||||
|         /*if(list_html == undefined){ | ||||
|         var tempOuter = document.createElement("div"); | ||||
|         list_html.innerHTML = list_html; | ||||
|         //list_html.find(".list-remove").removeClass("hide"); | ||||
|         list_html = list_html.innerHTML; | ||||
|     }*/ | ||||
|     //$(".list-remove").removeClass("hide"); | ||||
|     Helper.addClass("#viewers", "hide"); | ||||
|     Helper.removeClass(".margin-playbar", "margin-playbar"); | ||||
|     Helper.addClass(".prev playbar", "margin-playbar"); | ||||
|     Helper.removeClass(".prev playbar", "hide"); | ||||
|     Helper.removeClass("#offline-mode", "waves-cyan"); | ||||
|     Helper.addClass("#offline-mode", "cyan"); | ||||
|     Helper.removeClass(".delete-context-menu", "context-menu-disabled"); | ||||
|     if(!Helper.mobilecheck()) { | ||||
|         Helper.tooltip("#offline-mode", { | ||||
|             delay: 5, | ||||
|             position: "bottom", | ||||
|             html: "Disable local mode" | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     if(window.location.pathname != "/"){ | ||||
|         socket.removeEventListener("color"); | ||||
|         document.getElementById("controls").addEventListener("mouseenter", mouseEnter, false); | ||||
|         document.getElementById("controls").addEventListener("mouseleave", mouseLeave, false); | ||||
|         document.getElementById("controls").addEventListener("mousedown", mouseDown, false); | ||||
|         document.getElementById("controls").addEventListener("mouseup", mouseUp, false); | ||||
|         document.getElementById("controls").addEventListener("mousemove", Channel.seekToMove); | ||||
|         document.getElementById("controls").addEventListener("click", Channel.seekToClick); | ||||
|  | ||||
|         document.querySelector("#main_components").insertAdjacentHTML("beforeend", "<div id='seekToDuration' class='hide'>00:00/01:00</div>"); | ||||
|         var controlElement = document.querySelector("#controls"); | ||||
|         if(!Helper.mobilecheck()) Helper.css("#seekToDuration", "top", -controlElement.offsetHeight - 25 + "px"); | ||||
|         else if(Helper.mobilecheck()) Helper.css("#seekToDuration", "top", -controlElement.offsetHeight - 25 + "px"); | ||||
|         Helper.addClass("#controls", "ewresize"); | ||||
|     } | ||||
|     if(full_playlist != undefined && !already_offline){ | ||||
|         for(var x = 0; x < full_playlist.length; x++){ | ||||
|             full_playlist[x].votes = 0; | ||||
|         Helper.addClass("#viewers", "hide"); | ||||
|         Helper.removeClass(".margin-playbar", "margin-playbar"); | ||||
|         Helper.addClass(".prev playbar", "margin-playbar"); | ||||
|         Helper.removeClass(".prev playbar", "hide"); | ||||
|         Helper.removeClass("#offline-mode", "waves-cyan"); | ||||
|         Helper.addClass("#offline-mode", "cyan"); | ||||
|         Helper.removeClass(".delete-context-menu", "context-menu-disabled"); | ||||
|         if(!Helper.mobilecheck()) { | ||||
|             Helper.tooltip("#offline-mode", { | ||||
|                 delay: 5, | ||||
|                 position: "bottom", | ||||
|                 html: "Disable local mode" | ||||
|             }); | ||||
|         } | ||||
|  | ||||
|         if(window.location.pathname != "/"){ | ||||
|             socket.removeEventListener("color"); | ||||
|             document.getElementById("controls").addEventListener("mouseenter", mouseEnter, false); | ||||
|             document.getElementById("controls").addEventListener("mouseleave", mouseLeave, false); | ||||
|             document.getElementById("controls").addEventListener("mousedown", mouseDown, false); | ||||
|             document.getElementById("controls").addEventListener("mouseup", mouseUp, false); | ||||
|             document.getElementById("controls").addEventListener("mousemove", seekToMove); | ||||
|             document.getElementById("controls").addEventListener("click", seekToClick); | ||||
|  | ||||
|             document.querySelector("#main_components").insertAdjacentHTML("beforeend", "<div id='seekToDuration' class='hide'>00:00/01:00</div>"); | ||||
|             var controlElement = document.querySelector("#controls"); | ||||
|             if(!Helper.mobilecheck()) Helper.css("#seekToDuration", "top", -controlElement.offsetHeight - 25 + "px"); | ||||
|             else if(Helper.mobilecheck()) Helper.css("#seekToDuration", "top", -controlElement.offsetHeight - 25 + "px"); | ||||
|             Helper.addClass("#controls", "ewresize"); | ||||
|         } | ||||
|         if(full_playlist != undefined && !already_offline){ | ||||
|             for(var x = 0; x < full_playlist.length; x++){ | ||||
|                 full_playlist[x].votes = 0; | ||||
|             } | ||||
|             List.sortList(); | ||||
|             List.populate_list(full_playlist); | ||||
|         } | ||||
|     } else { | ||||
|         if(!Admin.logged_in) Helper.addClass(".delete-context-menu", "context-menu-disabled"); | ||||
|         Helper.removeClass(".margin-playbar", "margin-playbar"); | ||||
|         Helper.addClass("#playpause", "margin-playbar"); | ||||
|         Helper.removeClass("#viewers", "hide"); | ||||
|         Helper.addClass(".prev playbar", "hide"); | ||||
|         Helper.addClass("#offline-mode", "waves-cyan"); | ||||
|         Helper.removeClass("#offline-mode", "cyan"); | ||||
|         if(!Helper.mobilecheck()) { | ||||
|             Helper.tooltip("#offline-mode", { | ||||
|                 delay: 5, | ||||
|                 position: "bottom", | ||||
|                 html: "Enable local mode" | ||||
|             }); | ||||
|         } | ||||
|  | ||||
|         if(window.location.pathname != "/"){ | ||||
|             document.getElementById("controls").removeEventListener("mouseenter", mouseEnter, false); | ||||
|             document.getElementById("controls").removeEventListener("mouseleave", mouseLeave, false); | ||||
|             document.getElementById("controls").removeEventListener("mousedown", mouseDown, false); | ||||
|             document.getElementById("controls").removeEventListener("mouseup", mouseUp, false); | ||||
|             document.getElementById("controls").removeEventListener("mousemove", seekToMove); | ||||
|             document.getElementById("controls").removeEventListener("click", seekToClick); | ||||
|             Helper.removeElement("#seekToDuration"); | ||||
|             socket.on("color", Player.setBGimage); | ||||
|             socket.emit("pos", {channel: chan.toLowerCase()}); | ||||
|             var add = ""; | ||||
|             socket.emit("list", {version: parseInt(localStorage.getItem("VERSION")), channel: add + chan.toLowerCase()}); | ||||
|             Helper.removeClass("#controls", "ewresize"); | ||||
|         } | ||||
|         List.sortList(); | ||||
|         List.populate_list(full_playlist); | ||||
|     } | ||||
| } else { | ||||
|     /*if(list_html == undefined){ | ||||
|     var tempOuter = document.createElement("div"); | ||||
|     list_html.innerHTML = list_html; | ||||
|     //list_html.find(".list-remove").removeClass("hide"); | ||||
|     list_html = list_html.innerHTML; | ||||
| }*/ | ||||
| if(!Admin.logged_in) Helper.addClass(".delete-context-menu", "context-menu-disabled"); | ||||
| Helper.removeClass(".margin-playbar", "margin-playbar"); | ||||
| Helper.addClass("#playpause", "margin-playbar"); | ||||
| Helper.removeClass("#viewers", "hide"); | ||||
| Helper.addClass(".prev playbar", "hide"); | ||||
| Helper.addClass("#offline-mode", "waves-cyan"); | ||||
| Helper.removeClass("#offline-mode", "cyan"); | ||||
| if(!Helper.mobilecheck()) { | ||||
|     Helper.tooltip("#offline-mode", { | ||||
|         delay: 5, | ||||
|         position: "bottom", | ||||
|         html: "Enable local mode" | ||||
|     }); | ||||
| } | ||||
|  | ||||
| if(window.location.pathname != "/"){ | ||||
|     document.getElementById("controls").removeEventListener("mouseenter", mouseEnter, false); | ||||
|     document.getElementById("controls").removeEventListener("mouseleave", mouseLeave, false); | ||||
|     document.getElementById("controls").removeEventListener("mousedown", mouseDown, false); | ||||
|     document.getElementById("controls").removeEventListener("mouseup", mouseUp, false); | ||||
|     document.getElementById("controls").removeEventListener("mousemove", Channel.seekToMove); | ||||
|     document.getElementById("controls").removeEventListener("click", Channel.seekToClick); | ||||
|     Helper.removeElement("#seekToDuration"); | ||||
|     socket.on("color", Player.setBGimage); | ||||
|     socket.emit("pos", {channel: chan.toLowerCase()}); | ||||
|     var add = ""; | ||||
|     //if(private_channel) add = Crypt.getCookie("_uI") + "_"; | ||||
|     socket.emit("list", {version: parseInt(localStorage.getItem("VERSION")), channel: add + chan.toLowerCase()}); | ||||
|     Helper.removeClass("#controls", "ewresize"); | ||||
| } | ||||
| function seekToClick(e){ | ||||
|     var acceptable = ["bar", "controls", "duration"]; | ||||
|  | ||||
|     if(acceptable.indexOf(e.target.getAttribute("id")) >= 0) { | ||||
|         if(full_playlist == undefined) return; | ||||
|         var total = full_playlist[full_playlist.length - 1].duration / document.getElementById("controls").offsetWidth; | ||||
|         total = total * e.clientX; | ||||
|  | ||||
|         if(!chromecastAvailable){ | ||||
|             if(videoSource == "youtube") Player.player.seekTo(total + Player.np.start); | ||||
|             else if(videoSource == "soundcloud") Player.soundcloud_player.seek((total + Player.np.start) * 1000); | ||||
|             dMinutes = Math.floor(duration / 60); | ||||
|             dSeconds = duration - dMinutes * 60; | ||||
|             currDurr = total; | ||||
|             if(currDurr - Player.np.start > duration) { | ||||
|                 currDurr = duration - Player.np.start; | ||||
|             } | ||||
|             currDurr = currDurr - Player.np.start; | ||||
|             minutes = Math.floor(currDurr / 60); | ||||
|             seconds = currDurr - (minutes * 60); | ||||
|             document.getElementById("duration").innerHTML = Helper.pad(minutes)+":"+Helper.pad(seconds)+" <span id='dash'>/</span> "+Helper.pad(dMinutes)+":"+Helper.pad(dSeconds); | ||||
|             per = (100 / duration) * currDurr; | ||||
|             if(per >= 100) | ||||
|             per = 100; | ||||
|             else if(duration === 0) | ||||
|             per = 0; | ||||
|             document.getElementById("bar").style.width = per + "%" | ||||
|         } else { | ||||
|             castSession.sendMessage("urn:x-cast:zoff.me", {type: "seekTo", seekTo: total}); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| function seekToMove(e){ | ||||
|     var pos_x = event.clientX - Math.ceil(document.getElementById("seekToDuration").offsetWidth / 2); | ||||
|     if(pos_x < 0) pos_x = 0; | ||||
|     else if(pos_x + document.getElementById("seekToDuration").offsetWidth > document.getElementById("controls").offsetWidth) { | ||||
|         pos_x = document.getElementById("controls").offsetWidth - document.getElementById("seekToDuration").offsetWidth; | ||||
|     } | ||||
|     Helper.css("#seekToDuration", "left", pos_x + "px"); | ||||
|     try{ | ||||
|         var total = full_playlist[full_playlist.length - 1].duration / document.getElementById("controls").offsetWidth; | ||||
|         total = total * event.clientX; | ||||
|         var _time = Helper.secondsToOther(total); | ||||
|         var _minutes = Helper.pad(_time[0]); | ||||
|         var _seconds = Helper.pad(Math.ceil(_time[1])); | ||||
|         Helper.setHtml("#seekToDuration", _minutes + ":" + _seconds); | ||||
|  | ||||
|         var acceptable = ["bar", "controls", "duration"]; | ||||
|         if(acceptable.indexOf(event.target.getAttribute("id")) >= 0 && dragging) { | ||||
|             document.getElementById("bar").style.width(((100 / duration) * total) + "%"); | ||||
|         } | ||||
|     } catch(e){} | ||||
| } | ||||
|  | ||||
| function resizePlaylistPlaying(playing) { | ||||
|   | ||||
| @@ -76,6 +76,7 @@ var not_export_html = ""; | ||||
| var embed_height = 300; | ||||
| var embed_width = 600; | ||||
| var embed_videoonly = ""; | ||||
| var embed_localmode = ""; | ||||
| var embed_autoplay = "&autoplay"; | ||||
| var connect_error = false; | ||||
| var access_token_data_youtube = {}; | ||||
| @@ -840,13 +841,13 @@ document.addEventListener("submit", function(event) { | ||||
| addListener("change", "#width_embed", function(event) { | ||||
|     var that = this.target; | ||||
|     embed_width = that.value; | ||||
|     document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly); | ||||
|     document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly, embed_localmode); | ||||
| }); | ||||
|  | ||||
| addListener("change", "#height_embed", function(event) { | ||||
|     var that = this.target; | ||||
|     embed_height = that.value; | ||||
|     document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly); | ||||
|     document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly, embed_localmode); | ||||
| }); | ||||
|  | ||||
| addListener("click", ".prev_page", function(event) { | ||||
| @@ -994,7 +995,7 @@ addListener("change", '#view_channels_select', function(event) { | ||||
| addListener("input", '#color_embed', function(e){ | ||||
|     var that = e; | ||||
|     color = that.value.substring(1); | ||||
|     document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly); | ||||
|     document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly, embed_localmode); | ||||
| }); | ||||
|  | ||||
| addListener("click", ".chan-link", function(e){ | ||||
| @@ -1172,13 +1173,19 @@ addListener("submit", "#listImportSpotify", function(event){ | ||||
| addListener("change", "#autoplay", function(e) { | ||||
|     if(e.checked) embed_autoplay = "&autoplay"; | ||||
|     else embed_autoplay = ""; | ||||
|     document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly); | ||||
|     document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly, embed_localmode); | ||||
| }); | ||||
|  | ||||
| addListener("change", "#videoonly", function(e) { | ||||
|     if(e.checked) embed_videoonly = "&videoonly"; | ||||
|     else embed_videoonly = ""; | ||||
|     document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly); | ||||
|     document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly, embed_localmode); | ||||
| }); | ||||
|  | ||||
| addListener("change", "#localmode", function(e) { | ||||
|     if(e.checked) embed_localmode = "&localmode"; | ||||
|     else embed_localmode = ""; | ||||
|     document.getElementById("embed-area").value = embed_code(embed_autoplay, embed_width, embed_height, color, embed_videoonly, embed_localmode); | ||||
| }); | ||||
|  | ||||
| addListener("click", "#playbutton_remote", function(event) { | ||||
|   | ||||
| @@ -426,7 +426,7 @@ var Player = { | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         if(offline) { | ||||
|         if(offline && !embed) { | ||||
|             var url = 'https://img.youtube.com/vi/'+id+'/mqdefault.jpg'; | ||||
|             if(videoSource == "soundcloud") url = Player.np.thumbnail; | ||||
|             getColor(url); | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|     </div> | ||||
| </div> | ||||
| <div id="song-title"></div> | ||||
| <div id="container" style="display:inline-flex;"> | ||||
| <div id="main_components" style="display:inline-flex;"> | ||||
|     <div id="player-container"> | ||||
|         <div id="player"></div> | ||||
|         <div id="player_overlay" class="hide valign-wrapper"> | ||||
| @@ -25,10 +25,16 @@ | ||||
|         </div> | ||||
|         <div id="zoffbutton" title="Visit the channel!"></div> | ||||
|         <div id="controls" class="noselect"> | ||||
|             <div id="playpause"> | ||||
|             <div class="playbar-btn prev playbar hide"> | ||||
|                 <i class="material-icons">skip_previous</i> | ||||
|             </div> | ||||
|             <div id="playpause" class="playbar-btn playbar margin-playbar"> | ||||
|                 <i id="play" class="material-icons hide">play_arrow</i> | ||||
|                 <i id="pause" class="material-icons">pause</i> | ||||
|             </div> | ||||
|             <div class="playbar-btn skip playbar hide"> | ||||
|                 <i class="material-icons">skip_next</i> | ||||
|             </div> | ||||
|             <div id="duration">00:00 / 00:00</div> | ||||
|             <div id="volume-button"> | ||||
|                 <i id="v-mute" class="mdi-av-volume-off"></i> | ||||
|   | ||||
| @@ -18,6 +18,10 @@ | ||||
|                     <input type="checkbox" id="videoonly" class="checkbox" /> | ||||
|                     <span for="videoonly" class="padding_right_26">Video-only</span> | ||||
|                 </label> | ||||
|                 <label> | ||||
|                     <input type="checkbox" id="localmode" class="checkbox" /> | ||||
|                     <span for="localmode" class="padding_right_26">Local-mode</span> | ||||
|                 </label> | ||||
|             </p> | ||||
|             <textarea id="embed-area"></textarea> | ||||
|         </div> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user