pifi 0.3.7 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/bin/pifi +3 -1
- data/config.ru +2 -1
- data/docs/install_tips.md +3 -3
- data/lib/pifi/controllers/application_controller.rb +4 -7
- data/lib/pifi/controllers/config_controller.rb +14 -0
- data/lib/pifi/controllers/static_controller.rb +15 -0
- data/lib/pifi/public/asset-manifest.json +11 -11
- data/lib/pifi/public/index.html +1 -1
- data/lib/pifi/public/locales/en/translation.json +10 -3
- data/lib/pifi/public/locales/pt-BR/translation.json +11 -4
- data/lib/pifi/public/{precache-manifest.d32d22242489630d8a8e892a5024d8f2.js → precache-manifest.3ca9784793937217e35f314e19179939.js} +9 -9
- data/lib/pifi/public/service-worker.js +1 -1
- data/lib/pifi/public/static/css/{main.6b591eab.chunk.css → main.58eef733.chunk.css} +1 -1
- data/lib/pifi/public/static/css/{main.6b591eab.chunk.css.map → main.58eef733.chunk.css.map} +1 -1
- data/lib/pifi/public/static/js/{2.f1675576.chunk.js → 2.df3b2c7e.chunk.js} +3 -3
- data/lib/pifi/public/static/js/{2.f1675576.chunk.js.LICENSE → 2.df3b2c7e.chunk.js.LICENSE} +0 -0
- data/lib/pifi/public/static/js/2.df3b2c7e.chunk.js.map +1 -0
- data/lib/pifi/public/static/js/main.58e602f6.chunk.js +2 -0
- data/lib/pifi/public/static/js/main.58e602f6.chunk.js.map +1 -0
- data/lib/pifi/version.rb +1 -1
- data/lib/pifi.rb +3 -1
- metadata +12 -11
- data/lib/pifi/controllers/index_controller.rb +0 -9
- data/lib/pifi/public/static/js/2.f1675576.chunk.js.map +0 -1
- data/lib/pifi/public/static/js/main.72828fad.chunk.js +0 -2
- data/lib/pifi/public/static/js/main.72828fad.chunk.js.map +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48502aa7e4e58ec66c3d6d7199785ff677f4095832c862be9fdf864251ba36b7
|
4
|
+
data.tar.gz: ffbda48822f41aae2d0b7fd2397c7e25ef42beeb605d854e0eb09f8efda0762b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28ca836a002b6f9430e1aafb2f86a8de95889ceb4d57ddab2bee4497bef447661d93a7d6aa57681e63a0fdf323536a6944d26fc040355098d6b3c04e976eeafc
|
7
|
+
data.tar.gz: 121c9a81d1632971aa14b02e6a84e7511979936984c5e7f88b7365d7517de2fd06b100762c826890c0ec4e438442cd52602a177b5f4d2030be84eb68cda8a94f
|
data/README.md
CHANGED
@@ -89,7 +89,7 @@ To keep it simple, the list of streams is just a JSON file with key-value pairs,
|
|
89
89
|
"Radio 2": "https://example.com/radio"
|
90
90
|
}
|
91
91
|
|
92
|
-
If you want to arrange the stations in categories, add a pair with the category name as the key and empty value, as shown below. This will add the headers "Talk radio" and "Classical" above each group of stations, [such as "
|
92
|
+
If you want to arrange the stations in categories, add a pair with the category name as the key and empty value, as shown below. This will add the headers "Talk radio" and "Classical" above each group of stations, [such as "Spain" and "Christmas" in the demo](#demo).
|
93
93
|
|
94
94
|
{
|
95
95
|
"Talk radio": "",
|
data/bin/pifi
CHANGED
@@ -4,7 +4,9 @@ require "pifi"
|
|
4
4
|
require "optimist"
|
5
5
|
|
6
6
|
cli_opts = Optimist::options do
|
7
|
-
|
7
|
+
version "PiFi Radio v#{PiFi::VERSION}"
|
8
|
+
banner "PiFi - MPD web client to listen to radio"
|
9
|
+
|
8
10
|
opt :port, "Define port", :default => 3000
|
9
11
|
opt :host, "Define host", :default => "0.0.0.0"
|
10
12
|
opt :daemonize, "Daemonize", :default => false
|
data/config.ru
CHANGED
data/docs/install_tips.md
CHANGED
@@ -10,11 +10,11 @@ For this, you can install a web server, such as Nginx, Apache or Lighttpd, and s
|
|
10
10
|
|
11
11
|
## Serving static resources from your web server
|
12
12
|
|
13
|
-
If
|
13
|
+
If your web server is reverse proxying PiFi, you may also use it to serve PiFi static assets. This can bring performance gains.
|
14
14
|
|
15
15
|
On PiFi configuration, set `serve_static` to false.
|
16
16
|
|
17
|
-
|
17
|
+
For configuring your web server, please refer to their documentation. In a nutshell, you'll make it look for the requested files in PiFi's public directory. This is `${PIFI_DIR}/lib/pifi/public`. The next section describes how to find `${PIFI_DIR}`.
|
18
18
|
|
19
19
|
## Finding PiFi directory
|
20
20
|
|
@@ -30,7 +30,7 @@ Note that the path contains both the Ruby version and the PiFi version. Thus, it
|
|
30
30
|
|
31
31
|
The `pifi` command exposes most Rack CLI options, but you may want to access more advanced configurations from Thin (the application server PiFi uses).
|
32
32
|
|
33
|
-
To
|
33
|
+
To do this, instead of invoking `pifi`, run `thin` and pass PiFi's `config.ru` and the `-e production` flag. The former is located at `${PIFI_DIR}/config.ru`.
|
34
34
|
|
35
35
|
For example, if you want to run PiFi on a socket instead of a port:
|
36
36
|
|
@@ -4,15 +4,12 @@ require "sinatra/base"
|
|
4
4
|
|
5
5
|
module PiFi
|
6
6
|
class ApplicationController < Sinatra::Base
|
7
|
-
set
|
8
|
-
set :streams, Streams.new(settings.streams_path, settings.streams_path_priv)
|
9
|
-
set :root, File.expand_path("../../", __FILE__)
|
10
|
-
|
11
|
-
configure :production do
|
12
|
-
set :static, settings.serve_static
|
13
|
-
end
|
7
|
+
set :static, false
|
14
8
|
configure :development do
|
15
9
|
before { response.headers["Access-Control-Allow-Origin"] = "*" }
|
16
10
|
end
|
11
|
+
|
12
|
+
set ConfigGetter.new.config
|
13
|
+
set :streams, Streams.new(settings.streams_path, settings.streams_path_priv)
|
17
14
|
end
|
18
15
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require "pifi/controllers/application_controller"
|
2
|
+
|
3
|
+
module PiFi
|
4
|
+
class ConfigController < ApplicationController
|
5
|
+
get "/" do
|
6
|
+
content_type :json
|
7
|
+
{ "mpd_host": settings.mpd_host,
|
8
|
+
"mpd_port": settings.mpd_port,
|
9
|
+
"environment": settings.environment,
|
10
|
+
"version": VERSION
|
11
|
+
}.to_json
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require "pifi/controllers/application_controller"
|
2
|
+
|
3
|
+
module PiFi
|
4
|
+
class StaticController < ApplicationController
|
5
|
+
set :root, File.expand_path("../../", __FILE__)
|
6
|
+
set :static, true
|
7
|
+
configure :production do
|
8
|
+
set :static, settings.serve_static
|
9
|
+
end
|
10
|
+
|
11
|
+
get "/" do
|
12
|
+
send_file File.join(settings.public_folder, 'index.html')
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -1,26 +1,26 @@
|
|
1
1
|
{
|
2
2
|
"files": {
|
3
|
-
"main.css": "/static/css/main.
|
4
|
-
"main.js": "/static/js/main.
|
5
|
-
"main.js.map": "/static/js/main.
|
3
|
+
"main.css": "/static/css/main.58eef733.chunk.css",
|
4
|
+
"main.js": "/static/js/main.58e602f6.chunk.js",
|
5
|
+
"main.js.map": "/static/js/main.58e602f6.chunk.js.map",
|
6
6
|
"runtime-main.js": "/static/js/runtime-main.f04a0f25.js",
|
7
7
|
"runtime-main.js.map": "/static/js/runtime-main.f04a0f25.js.map",
|
8
8
|
"static/css/2.5dbdccff.chunk.css": "/static/css/2.5dbdccff.chunk.css",
|
9
|
-
"static/js/2.
|
10
|
-
"static/js/2.
|
9
|
+
"static/js/2.df3b2c7e.chunk.js": "/static/js/2.df3b2c7e.chunk.js",
|
10
|
+
"static/js/2.df3b2c7e.chunk.js.map": "/static/js/2.df3b2c7e.chunk.js.map",
|
11
11
|
"index.html": "/index.html",
|
12
|
-
"precache-manifest.
|
12
|
+
"precache-manifest.3ca9784793937217e35f314e19179939.js": "/precache-manifest.3ca9784793937217e35f314e19179939.js",
|
13
13
|
"service-worker.js": "/service-worker.js",
|
14
14
|
"static/css/2.5dbdccff.chunk.css.map": "/static/css/2.5dbdccff.chunk.css.map",
|
15
|
-
"static/css/main.
|
16
|
-
"static/js/2.
|
15
|
+
"static/css/main.58eef733.chunk.css.map": "/static/css/main.58eef733.chunk.css.map",
|
16
|
+
"static/js/2.df3b2c7e.chunk.js.LICENSE": "/static/js/2.df3b2c7e.chunk.js.LICENSE",
|
17
17
|
"static/media/player.scss": "/static/media/logo.91554ce9.svg"
|
18
18
|
},
|
19
19
|
"entrypoints": [
|
20
20
|
"static/js/runtime-main.f04a0f25.js",
|
21
21
|
"static/css/2.5dbdccff.chunk.css",
|
22
|
-
"static/js/2.
|
23
|
-
"static/css/main.
|
24
|
-
"static/js/main.
|
22
|
+
"static/js/2.df3b2c7e.chunk.js",
|
23
|
+
"static/css/main.58eef733.chunk.css",
|
24
|
+
"static/js/main.58e602f6.chunk.js"
|
25
25
|
]
|
26
26
|
}
|
data/lib/pifi/public/index.html
CHANGED
@@ -1 +1 @@
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,user-scalable=no"/><meta name="description" content="MPD web client to listen to radio"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="manifest" href="/manifest.json"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"><meta name="apple-mobile-web-app-title" content="PiFi Radio"><meta name="application-name" content="PiFi Radio"><meta name="msapplication-TileColor" content="#2b5797"><meta name="theme-color" content="#375a7f"><title>PiFi Radio</title><link rel="preload" href="https://stackpath.bootstrapcdn.com/bootswatch/4.4.1/darkly/bootstrap.min.css" as="style"><link href="https://stackpath.bootstrapcdn.com/bootswatch/4.4.1/darkly/bootstrap.min.css" rel="stylesheet" title="theme"><link href="/static/css/2.5dbdccff.chunk.css" rel="stylesheet"><link href="/static/css/main.
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,user-scalable=no"/><meta name="description" content="MPD web client to listen to radio"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="manifest" href="/manifest.json"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"><meta name="apple-mobile-web-app-title" content="PiFi Radio"><meta name="application-name" content="PiFi Radio"><meta name="msapplication-TileColor" content="#2b5797"><meta name="theme-color" content="#375a7f"><title>PiFi Radio</title><link rel="preload" href="https://stackpath.bootstrapcdn.com/bootswatch/4.4.1/darkly/bootstrap.min.css" as="style"><link href="https://stackpath.bootstrapcdn.com/bootswatch/4.4.1/darkly/bootstrap.min.css" rel="stylesheet" title="theme"><link href="/static/css/2.5dbdccff.chunk.css" rel="stylesheet"><link href="/static/css/main.58eef733.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(l){function e(e){for(var r,t,n=e[0],o=e[1],u=e[2],f=0,i=[];f<n.length;f++)t=n[f],Object.prototype.hasOwnProperty.call(a,t)&&a[t]&&i.push(a[t][0]),a[t]=0;for(r in o)Object.prototype.hasOwnProperty.call(o,r)&&(l[r]=o[r]);for(s&&s(e);i.length;)i.shift()();return c.push.apply(c,u||[]),p()}function p(){for(var e,r=0;r<c.length;r++){for(var t=c[r],n=!0,o=1;o<t.length;o++){var u=t[o];0!==a[u]&&(n=!1)}n&&(c.splice(r--,1),e=f(f.s=t[0]))}return e}var t={},a={1:0},c=[];function f(e){if(t[e])return t[e].exports;var r=t[e]={i:e,l:!1,exports:{}};return l[e].call(r.exports,r,r.exports,f),r.l=!0,r.exports}f.m=l,f.c=t,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(r,e){if(1&e&&(r=f(r)),8&e)return r;if(4&e&&"object"==typeof r&&r&&r.__esModule)return r;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:r}),2&e&&"string"!=typeof r)for(var n in r)f.d(t,n,function(e){return r[e]}.bind(null,n));return t},f.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(r,"a",r),r},f.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},f.p="/";var r=this.webpackJsonppifi_frontend=this.webpackJsonppifi_frontend||[],n=r.push.bind(r);r.push=e,r=r.slice();for(var o=0;o<r.length;o++)e(r[o]);var s=n;p()}([])</script><script src="/static/js/2.df3b2c7e.chunk.js"></script><script src="/static/js/main.58e602f6.chunk.js"></script></body></html>
|
@@ -2,17 +2,24 @@
|
|
2
2
|
"errorNetwork": "Not connected to PiFi server",
|
3
3
|
"errorUnexpected": "An unexpected error occurred.",
|
4
4
|
"errorNotFound": "The stream was not found.",
|
5
|
-
"errorForbidden": "
|
5
|
+
"errorForbidden": "Forbidden request. Check MPD password and permissions.",
|
6
6
|
"disconnectedMPD": "Not connected to MPD",
|
7
7
|
"close": "Close",
|
8
|
+
"ok": "OK",
|
9
|
+
"cancel": "Cancel",
|
8
10
|
"search": "Search...",
|
9
11
|
"playing": "Playing",
|
10
12
|
"stopped": "Stopped",
|
11
13
|
"tunning": "Tunning...",
|
12
14
|
"noStreams": "No stations available.",
|
13
|
-
"language": "Language",
|
14
|
-
"theme": "Theme",
|
15
15
|
"settings": "Settings",
|
16
|
+
"theme": "Theme",
|
17
|
+
"language": "Language",
|
18
|
+
"about": "About",
|
19
|
+
"mpdHost": "MPD host",
|
20
|
+
"mpdPort": "MPD port",
|
21
|
+
"environment": "Environment",
|
22
|
+
"version": "Version",
|
16
23
|
"playURL": "Play URL",
|
17
24
|
"tryingURL": "Trying to play URL...",
|
18
25
|
"volume": "Volume"
|
@@ -2,18 +2,25 @@
|
|
2
2
|
"errorNetwork": "Sem conexão ao servidor PiFi",
|
3
3
|
"errorUnexpected": "Um erro inesperado ocorreu.",
|
4
4
|
"errorNotFound": "Não foi possível encontrar o stream.",
|
5
|
-
"errorForbidden": "
|
5
|
+
"errorForbidden": "Requisição não permitida. Verifique a senha do MPD e permissões.",
|
6
6
|
"disconnectedMPD": "Sem conexão ao MPD",
|
7
7
|
"close": "Fechar",
|
8
|
+
"ok": "OK",
|
9
|
+
"cancel": "Cancelar",
|
8
10
|
"search": "Buscar...",
|
9
11
|
"playing": "Tocando",
|
10
12
|
"stopped": "Parado",
|
11
13
|
"tunning": "Sintonizando...",
|
12
14
|
"noStreams": "Não há rádios disponíveis.",
|
13
|
-
"language": "Idioma",
|
14
|
-
"theme": "Tema",
|
15
|
-
"settings": "Ajustes",
|
16
15
|
"playURL": "Tocar URL",
|
17
16
|
"tryingURL": "Tentando tocar URL...",
|
17
|
+
"settings": "Ajustes",
|
18
|
+
"theme": "Tema",
|
19
|
+
"language": "Idioma",
|
20
|
+
"about": "Sobre",
|
21
|
+
"mpdHost": "Host do MPD",
|
22
|
+
"mpdPort": "Porta do MPD",
|
23
|
+
"environment": "Ambiente",
|
24
|
+
"version": "Versão",
|
18
25
|
"volume": "Volume"
|
19
26
|
}
|
@@ -1,27 +1,27 @@
|
|
1
1
|
self.__precacheManifest = (self.__precacheManifest || []).concat([
|
2
2
|
{
|
3
|
-
"revision": "
|
3
|
+
"revision": "81ebc5bb774faaae7d17591b69952587",
|
4
4
|
"url": "/index.html"
|
5
5
|
},
|
6
6
|
{
|
7
|
-
"revision": "
|
7
|
+
"revision": "4dec7de3ea193a3a008a",
|
8
8
|
"url": "/static/css/2.5dbdccff.chunk.css"
|
9
9
|
},
|
10
10
|
{
|
11
|
-
"revision": "
|
12
|
-
"url": "/static/css/main.
|
11
|
+
"revision": "a2478e76e291814855e7",
|
12
|
+
"url": "/static/css/main.58eef733.chunk.css"
|
13
13
|
},
|
14
14
|
{
|
15
|
-
"revision": "
|
16
|
-
"url": "/static/js/2.
|
15
|
+
"revision": "4dec7de3ea193a3a008a",
|
16
|
+
"url": "/static/js/2.df3b2c7e.chunk.js"
|
17
17
|
},
|
18
18
|
{
|
19
19
|
"revision": "19a6755ca1e5087f391e80db627b30f5",
|
20
|
-
"url": "/static/js/2.
|
20
|
+
"url": "/static/js/2.df3b2c7e.chunk.js.LICENSE"
|
21
21
|
},
|
22
22
|
{
|
23
|
-
"revision": "
|
24
|
-
"url": "/static/js/main.
|
23
|
+
"revision": "a2478e76e291814855e7",
|
24
|
+
"url": "/static/js/main.58e602f6.chunk.js"
|
25
25
|
},
|
26
26
|
{
|
27
27
|
"revision": "92793784c9eb98d269de",
|
@@ -14,7 +14,7 @@
|
|
14
14
|
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
|
15
15
|
|
16
16
|
importScripts(
|
17
|
-
"/precache-manifest.
|
17
|
+
"/precache-manifest.3ca9784793937217e35f314e19179939.js"
|
18
18
|
);
|
19
19
|
|
20
20
|
self.addEventListener('message', (event) => {
|
@@ -1,2 +1,2 @@
|
|
1
1
|
.navbar{position:-webkit-sticky!important;position:sticky!important;top:0;z-index:5}.player-controls{position:absolute!important;bottom:0;right:0;padding:2rem}.player{height:70vh;min-height:500px;width:400px;min-width:300px;background:url(/static/media/logo.91554ce9.svg) 50% no-repeat;background-size:120px}.loader{z-index:10;display:flex;justify-content:center;align-items:center;height:100vh}.streams{min-width:300px;width:450px}.streams__item{cursor:pointer}.streams__item.active{cursor:default}.streams__header{font-size:1.3rem;margin-top:1em;padding:.5rem 1.25rem}.list-group{margin-bottom:1rem!important}@media (max-width:750px){.list-group{margin-bottom:6rem!important}}.mini-player{max-width:600px;margin:auto;display:flex;align-items:center;justify-content:space-between;height:100%}.drawer{z-index:5!important;height:5rem;cursor:pointer;touch-action:none;-webkit-transition:all .25s ease-out;transition:all .25s ease-out}.drawer--open{height:100%;display:flex;justify-content:space-evenly;flex-direction:column;align-items:center}@media (max-width:750px){.body--drawer{overflow:hidden}}.backdrop{z-index:10;position:fixed;width:100%;height:100%;background-color:#222;opacity:0;visibility:hidden;-webkit-transition:all .2s ease;transition:all .2s ease;cursor:default;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.backdrop--visible{opacity:.94;visibility:visible}.body--backdrop{overflow:hidden}.app-main{display:flex;justify-content:space-evenly}.app-main>.player{position:-webkit-sticky;position:sticky;top:4rem}.drawer{visibility:hidden}@media (max-width:750px){.drawer{visibility:visible}}@media (max-width:750px){.app-main>.player{display:none}}body{overflow-y:scroll}button[disabled]{cursor:default}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
2
|
-
/*# sourceMappingURL=main.
|
2
|
+
/*# sourceMappingURL=main.58eef733.chunk.css.map */
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["navBar.scss","playerControls.scss","player.scss","loader.scss","streams.scss","miniPlayer.scss","drawer.scss","../variables.scss","backdrop.scss","App.scss","index.scss"],"names":[],"mappings":"AAAA,QACE,iCAA2B,CAA3B,yBAA2B,CAC3B,KAAM,CACN,SAAU,CCHZ,iBACE,2BAA6B,CAC7B,QAAY,CACZ,OAAW,CACX,YAAa,CCJf,QACE,WAAY,CACZ,gBAAiB,CACjB,WAAY,CACZ,eAAgB,CAChB,6DACA,CAAA,qBAAsB,CCNxB,QACE,UAAW,CACX,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,YAAa,CCHf,SACE,eAAgB,CAChB,WAAY,CACb,eAGC,cAAe,CADjB,sBAII,cAAe,CAChB,iBAID,gBAAiB,CACjB,cAAe,CACf,qBAAuB,CACxB,YAGC,4BAA8B,CAE9B,yBAHF,YAII,4BAA+C,CAElD,CC3BD,aACE,eAAgB,CAChB,WAAY,CACZ,YAAa,CACb,kBAAmB,CACnB,6BAA8B,CAC9B,WAAY,CCJd,QACE,mBAAqB,CACrB,WCHkB,CDIlB,cAAe,CACf,iBAAkB,CAClB,oCAAA,CAAA,4BAA8B,CAE9B,cACE,WAAY,CACZ,YAAa,CACb,4BAA6B,CAC7B,qBAAsB,CACtB,kBAAmB,CACpB,yBAKH,cAEI,eAAgB,CAEnB,CExBD,UACE,UAAW,CACX,cAAe,CACf,UAAW,CACX,WAAY,CACZ,qBAAyB,CACzB,SAAU,CACV,iBAAkB,CAClB,+BAAyB,CAAzB,uBAAyB,CACzB,cAAe,CACf,YAAa,CACb,qBAAsB,CACtB,sBAAuB,CACvB,kBAAmB,CACnB,iBAAkB,CAElB,mBACE,WAAa,CACb,kBAAmB,CACpB,gBAID,eAAgB,CCrBlB,UACE,YAAa,CACb,4BAA6B,CAC9B,kBAGC,uBAAgB,CAAhB,eAAgB,CAChB,QAAS,CACV,QAGC,iBAAkB,CAElB,yBAHF,QAII,kBAAmB,CAEtB,CAGC,yBADF,kBAEI,YAAa,CAEhB,CCxBD,KACE,iBAAkB,CACnB,iBAGC,cAAe,CAChB,UAGC,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB","file":"main.
|
1
|
+
{"version":3,"sources":["navBar.scss","playerControls.scss","player.scss","loader.scss","streams.scss","miniPlayer.scss","drawer.scss","../variables.scss","backdrop.scss","App.scss","index.scss"],"names":[],"mappings":"AAAA,QACE,iCAA2B,CAA3B,yBAA2B,CAC3B,KAAM,CACN,SAAU,CCHZ,iBACE,2BAA6B,CAC7B,QAAY,CACZ,OAAW,CACX,YAAa,CCJf,QACE,WAAY,CACZ,gBAAiB,CACjB,WAAY,CACZ,eAAgB,CAChB,6DACA,CAAA,qBAAsB,CCNxB,QACE,UAAW,CACX,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,YAAa,CCHf,SACE,eAAgB,CAChB,WAAY,CACb,eAGC,cAAe,CADjB,sBAII,cAAe,CAChB,iBAID,gBAAiB,CACjB,cAAe,CACf,qBAAuB,CACxB,YAGC,4BAA8B,CAE9B,yBAHF,YAII,4BAA+C,CAElD,CC3BD,aACE,eAAgB,CAChB,WAAY,CACZ,YAAa,CACb,kBAAmB,CACnB,6BAA8B,CAC9B,WAAY,CCJd,QACE,mBAAqB,CACrB,WCHkB,CDIlB,cAAe,CACf,iBAAkB,CAClB,oCAAA,CAAA,4BAA8B,CAE9B,cACE,WAAY,CACZ,YAAa,CACb,4BAA6B,CAC7B,qBAAsB,CACtB,kBAAmB,CACpB,yBAKH,cAEI,eAAgB,CAEnB,CExBD,UACE,UAAW,CACX,cAAe,CACf,UAAW,CACX,WAAY,CACZ,qBAAyB,CACzB,SAAU,CACV,iBAAkB,CAClB,+BAAyB,CAAzB,uBAAyB,CACzB,cAAe,CACf,YAAa,CACb,qBAAsB,CACtB,sBAAuB,CACvB,kBAAmB,CACnB,iBAAkB,CAElB,mBACE,WAAa,CACb,kBAAmB,CACpB,gBAID,eAAgB,CCrBlB,UACE,YAAa,CACb,4BAA6B,CAC9B,kBAGC,uBAAgB,CAAhB,eAAgB,CAChB,QAAS,CACV,QAGC,iBAAkB,CAElB,yBAHF,QAII,kBAAmB,CAEtB,CAGC,yBADF,kBAEI,YAAa,CAEhB,CCxBD,KACE,iBAAkB,CACnB,iBAGC,cAAe,CAChB,UAGC,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB","file":"main.58eef733.chunk.css","sourcesContent":[".navbar {\n position: sticky !important;\n top: 0;\n z-index: 5;\n}\n",".player-controls {\n position: absolute !important;\n bottom: 0rem;\n right: 0rem;\n padding: 2rem;\n}\n",".player {\n height: 70vh;\n min-height: 500px;\n width: 400px;\n min-width: 300px;\n background: url('../logo.svg') center no-repeat;\n background-size: 120px;\n}\n",".loader {\n z-index: 10;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100vh;\n}\n","@import '../variables.scss';\n\n.streams {\n min-width: 300px;\n width: 450px;\n}\n\n.streams__item {\n cursor: pointer;\n\n &.active {\n cursor: default;\n }\n}\n\n.streams__header {\n font-size: 1.3rem;\n margin-top: 1em;\n padding: 0.5rem 1.25rem;\n}\n\n.list-group {\n margin-bottom: 1rem !important;\n\n @media (max-width: $mobile-width) {\n margin-bottom: 1rem + $drawer-height !important; /* drawer */\n }\n}\n",".mini-player {\n max-width: 600px;\n margin: auto;\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 100%;\n}\n","@import '../variables.scss';\n\n.drawer {\n z-index: 5 !important;\n height: $drawer-height;\n cursor: pointer;\n touch-action: none; // don't scroll on touch\n transition: all 0.25s ease-out;\n\n &--open {\n height: 100%;\n display: flex;\n justify-content: space-evenly;\n flex-direction: column;\n align-items: center;\n }\n}\n\n// The media query is for the edge case of an open drawer and the\n// window resized past the breakpoint. This brings the scrollbar back.\n.body--drawer {\n @media (max-width: $mobile-width) {\n overflow: hidden;\n }\n}\n","$mobile-width: 750px;\n$drawer-height: 5rem;\n",".backdrop {\n z-index: 10;\n position: fixed;\n width: 100%;\n height: 100%;\n background-color: #222222;\n opacity: 0;\n visibility: hidden;\n transition: all 0.2s ease;\n cursor: default;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n text-align: center;\n\n &--visible {\n opacity: 0.94;\n visibility: visible;\n }\n}\n\n.body--backdrop {\n overflow: hidden;\n}\n","@import './variables.scss';\n\n.app-main {\n display: flex;\n justify-content: space-evenly;\n}\n\n.app-main > .player {\n position: sticky;\n top: 4rem; // we set this dynamically\n}\n\n.drawer {\n visibility: hidden;\n\n @media (max-width: $mobile-width) {\n visibility: visible;\n }\n}\n\n.app-main > .player {\n @media (max-width: $mobile-width) {\n display: none;\n }\n}\n","body {\n overflow-y: scroll; // so elements don't move if page fits view\n}\n\nbutton[disabled] {\n cursor: default;\n}\n\n.ellipsis {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n"]}
|