Upgrade Prettier to 2.0.4. Reformatted all JS files
This commit is contained in:
parent
de115ff466
commit
b3f70538a9
|
@ -1643,6 +1643,7 @@
|
||||||
"version": "25.4.0",
|
"version": "25.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@jest/types/-/types-25.4.0.tgz",
|
||||||
"integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==",
|
"integrity": "sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/istanbul-lib-coverage": "^2.0.0",
|
"@types/istanbul-lib-coverage": "^2.0.0",
|
||||||
"@types/istanbul-reports": "^1.1.1",
|
"@types/istanbul-reports": "^1.1.1",
|
||||||
|
@ -1936,6 +1937,7 @@
|
||||||
"version": "7.2.1",
|
"version": "7.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.2.1.tgz",
|
||||||
"integrity": "sha512-xIGoHlQ2ZiEL1dJIFKNmLDypzYF+4OJTTASRctl/aoIDaS5y/pRVHRigoqvPUV11mdJoR71IIgi/6UviMgyz4g==",
|
"integrity": "sha512-xIGoHlQ2ZiEL1dJIFKNmLDypzYF+4OJTTASRctl/aoIDaS5y/pRVHRigoqvPUV11mdJoR71IIgi/6UviMgyz4g==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.9.2",
|
"@babel/runtime": "^7.9.2",
|
||||||
"@types/testing-library__dom": "^7.0.0",
|
"@types/testing-library__dom": "^7.0.0",
|
||||||
|
@ -1948,6 +1950,7 @@
|
||||||
"version": "7.9.2",
|
"version": "7.9.2",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
|
||||||
"integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
|
"integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"regenerator-runtime": "^0.13.4"
|
"regenerator-runtime": "^0.13.4"
|
||||||
}
|
}
|
||||||
|
@ -1956,6 +1959,7 @@
|
||||||
"version": "4.0.2",
|
"version": "4.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.0.2.tgz",
|
||||||
"integrity": "sha512-S1G1V790fTaigUSM/Gd0NngzEfiMy9uTUfMyHhKhVyy4cH5O/eTuR01ydhGL0z4Za1PXFTRGH3qL8VhUQuEO5w==",
|
"integrity": "sha512-S1G1V790fTaigUSM/Gd0NngzEfiMy9uTUfMyHhKhVyy4cH5O/eTuR01ydhGL0z4Za1PXFTRGH3qL8VhUQuEO5w==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.7.4",
|
"@babel/runtime": "^7.7.4",
|
||||||
"@babel/runtime-corejs3": "^7.7.4"
|
"@babel/runtime-corejs3": "^7.7.4"
|
||||||
|
@ -1964,7 +1968,8 @@
|
||||||
"regenerator-runtime": {
|
"regenerator-runtime": {
|
||||||
"version": "0.13.5",
|
"version": "0.13.5",
|
||||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
|
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
|
||||||
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
|
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==",
|
||||||
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1972,6 +1977,7 @@
|
||||||
"version": "5.5.0",
|
"version": "5.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.5.0.tgz",
|
||||||
"integrity": "sha512-7sWHrpxG4Yd8TmryI7Rtbx8Ff4mbs3ASye3oshQIuHvsCR+QHgr7rTR/PfeXvOmwUwR36wSTTAvrLKsPmr6VEQ==",
|
"integrity": "sha512-7sWHrpxG4Yd8TmryI7Rtbx8Ff4mbs3ASye3oshQIuHvsCR+QHgr7rTR/PfeXvOmwUwR36wSTTAvrLKsPmr6VEQ==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.9.2",
|
"@babel/runtime": "^7.9.2",
|
||||||
"@types/testing-library__jest-dom": "^5.0.2",
|
"@types/testing-library__jest-dom": "^5.0.2",
|
||||||
|
@ -1988,6 +1994,7 @@
|
||||||
"version": "7.9.2",
|
"version": "7.9.2",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
|
||||||
"integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
|
"integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"regenerator-runtime": "^0.13.4"
|
"regenerator-runtime": "^0.13.4"
|
||||||
}
|
}
|
||||||
|
@ -1995,7 +2002,8 @@
|
||||||
"regenerator-runtime": {
|
"regenerator-runtime": {
|
||||||
"version": "0.13.5",
|
"version": "0.13.5",
|
||||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
|
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
|
||||||
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
|
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==",
|
||||||
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -2003,6 +2011,7 @@
|
||||||
"version": "10.0.2",
|
"version": "10.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/@testing-library/react/-/react-10.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/@testing-library/react/-/react-10.0.2.tgz",
|
||||||
"integrity": "sha512-YT6Mw0oJz7R6vlEkmo1FlUD+K15FeXApOB5Ffm9zooFVnrwkt00w18dUJFMOh1yRp9wTdVRonbor7o4PIpFCmA==",
|
"integrity": "sha512-YT6Mw0oJz7R6vlEkmo1FlUD+K15FeXApOB5Ffm9zooFVnrwkt00w18dUJFMOh1yRp9wTdVRonbor7o4PIpFCmA==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.9.2",
|
"@babel/runtime": "^7.9.2",
|
||||||
"@testing-library/dom": "^7.1.0",
|
"@testing-library/dom": "^7.1.0",
|
||||||
|
@ -2013,6 +2022,7 @@
|
||||||
"version": "7.9.2",
|
"version": "7.9.2",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
|
||||||
"integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
|
"integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"regenerator-runtime": "^0.13.4"
|
"regenerator-runtime": "^0.13.4"
|
||||||
}
|
}
|
||||||
|
@ -2020,14 +2030,16 @@
|
||||||
"regenerator-runtime": {
|
"regenerator-runtime": {
|
||||||
"version": "0.13.5",
|
"version": "0.13.5",
|
||||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
|
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
|
||||||
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
|
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==",
|
||||||
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@testing-library/user-event": {
|
"@testing-library/user-event": {
|
||||||
"version": "10.0.2",
|
"version": "10.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-10.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-10.0.2.tgz",
|
||||||
"integrity": "sha512-fVeP4U37BIYdp9nBRKEITFSLPqgCSS7Og6LHvxoQ2JSOTJ1NJI4Dfesv4uNXxvNNcJgBS88V+Tc6h8vbDsa2iA=="
|
"integrity": "sha512-fVeP4U37BIYdp9nBRKEITFSLPqgCSS7Og6LHvxoQ2JSOTJ1NJI4Dfesv4uNXxvNNcJgBS88V+Tc6h8vbDsa2iA==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/babel__core": {
|
"@types/babel__core": {
|
||||||
"version": "7.1.6",
|
"version": "7.1.6",
|
||||||
|
@ -2117,6 +2129,7 @@
|
||||||
"version": "25.2.1",
|
"version": "25.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.2.1.tgz",
|
||||||
"integrity": "sha512-msra1bCaAeEdkSyA0CZ6gW1ukMIvZ5YoJkdXw/qhQdsuuDlFTcEUrUw8CLCPt2rVRUfXlClVvK2gvPs9IokZaA==",
|
"integrity": "sha512-msra1bCaAeEdkSyA0CZ6gW1ukMIvZ5YoJkdXw/qhQdsuuDlFTcEUrUw8CLCPt2rVRUfXlClVvK2gvPs9IokZaA==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"jest-diff": "^25.2.1",
|
"jest-diff": "^25.2.1",
|
||||||
"pretty-format": "^25.2.1"
|
"pretty-format": "^25.2.1"
|
||||||
|
@ -2165,6 +2178,7 @@
|
||||||
"version": "16.9.6",
|
"version": "16.9.6",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.6.tgz",
|
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.6.tgz",
|
||||||
"integrity": "sha512-S6ihtlPMDotrlCJE9ST1fRmYrQNNwfgL61UB4I1W7M6kPulUKx9fXAleW5zpdIjUQ4fTaaog8uERezjsGUj9HQ==",
|
"integrity": "sha512-S6ihtlPMDotrlCJE9ST1fRmYrQNNwfgL61UB4I1W7M6kPulUKx9fXAleW5zpdIjUQ4fTaaog8uERezjsGUj9HQ==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/react": "*"
|
"@types/react": "*"
|
||||||
}
|
}
|
||||||
|
@ -2186,6 +2200,7 @@
|
||||||
"version": "7.0.1",
|
"version": "7.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-7.0.1.tgz",
|
||||||
"integrity": "sha512-WokGRksRJb3Dla6h02/0/NNHTkjsj4S8aJZiwMj/5/UL8VZ1iCe3H8SHzfpmBeH8Vp4SPRT8iC2o9kYULFhDIw==",
|
"integrity": "sha512-WokGRksRJb3Dla6h02/0/NNHTkjsj4S8aJZiwMj/5/UL8VZ1iCe3H8SHzfpmBeH8Vp4SPRT8iC2o9kYULFhDIw==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"pretty-format": "^25.1.0"
|
"pretty-format": "^25.1.0"
|
||||||
}
|
}
|
||||||
|
@ -2194,6 +2209,7 @@
|
||||||
"version": "5.0.3",
|
"version": "5.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.0.3.tgz",
|
||||||
"integrity": "sha512-NdbKc6yseg6uq4UJFwimPws0iwsGugVbPoOTP2EH+PJMJKiZsoSg5F2H3XYweOyytftCOuIMuXifBUrF9CSvaQ==",
|
"integrity": "sha512-NdbKc6yseg6uq4UJFwimPws0iwsGugVbPoOTP2EH+PJMJKiZsoSg5F2H3XYweOyytftCOuIMuXifBUrF9CSvaQ==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/jest": "*"
|
"@types/jest": "*"
|
||||||
}
|
}
|
||||||
|
@ -2202,6 +2218,7 @@
|
||||||
"version": "10.0.1",
|
"version": "10.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-10.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-10.0.1.tgz",
|
||||||
"integrity": "sha512-RbDwmActAckbujLZeVO/daSfdL1pnjVqas25UueOkAY5r7vriavWf0Zqg7ghXMHa8ycD/kLkv8QOj31LmSYwww==",
|
"integrity": "sha512-RbDwmActAckbujLZeVO/daSfdL1pnjVqas25UueOkAY5r7vriavWf0Zqg7ghXMHa8ycD/kLkv8QOj31LmSYwww==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/react-dom": "*",
|
"@types/react-dom": "*",
|
||||||
"@types/testing-library__dom": "*",
|
"@types/testing-library__dom": "*",
|
||||||
|
@ -2212,6 +2229,7 @@
|
||||||
"version": "15.0.4",
|
"version": "15.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.4.tgz",
|
||||||
"integrity": "sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg==",
|
"integrity": "sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/yargs-parser": "*"
|
"@types/yargs-parser": "*"
|
||||||
}
|
}
|
||||||
|
@ -4519,7 +4537,8 @@
|
||||||
"css.escape": {
|
"css.escape": {
|
||||||
"version": "1.5.1",
|
"version": "1.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
|
||||||
"integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s="
|
"integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"cssdb": {
|
"cssdb": {
|
||||||
"version": "4.4.0",
|
"version": "4.4.0",
|
||||||
|
@ -4893,7 +4912,8 @@
|
||||||
"diff-sequences": {
|
"diff-sequences": {
|
||||||
"version": "25.2.6",
|
"version": "25.2.6",
|
||||||
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz",
|
||||||
"integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg=="
|
"integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"diffie-hellman": {
|
"diffie-hellman": {
|
||||||
"version": "5.0.3",
|
"version": "5.0.3",
|
||||||
|
@ -4947,7 +4967,8 @@
|
||||||
"dom-accessibility-api": {
|
"dom-accessibility-api": {
|
||||||
"version": "0.4.3",
|
"version": "0.4.3",
|
||||||
"resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.4.3.tgz",
|
"resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.4.3.tgz",
|
||||||
"integrity": "sha512-JZ8iPuEHDQzq6q0k7PKMGbrIdsgBB7TRrtVOUm4nSMCExlg5qQG4KXWTH2k90yggjM4tTumRGwTKJSldMzKyLA=="
|
"integrity": "sha512-JZ8iPuEHDQzq6q0k7PKMGbrIdsgBB7TRrtVOUm4nSMCExlg5qQG4KXWTH2k90yggjM4tTumRGwTKJSldMzKyLA==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"dom-align": {
|
"dom-align": {
|
||||||
"version": "1.11.1",
|
"version": "1.11.1",
|
||||||
|
@ -8060,6 +8081,7 @@
|
||||||
"version": "25.4.0",
|
"version": "25.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.4.0.tgz",
|
||||||
"integrity": "sha512-kklLbJVXW0y8UKOWOdYhI6TH5MG6QAxrWiBMgQaPIuhj3dNFGirKCd+/xfplBXICQ7fI+3QcqHm9p9lWu1N6ug==",
|
"integrity": "sha512-kklLbJVXW0y8UKOWOdYhI6TH5MG6QAxrWiBMgQaPIuhj3dNFGirKCd+/xfplBXICQ7fI+3QcqHm9p9lWu1N6ug==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"chalk": "^3.0.0",
|
"chalk": "^3.0.0",
|
||||||
"diff-sequences": "^25.2.6",
|
"diff-sequences": "^25.2.6",
|
||||||
|
@ -8334,7 +8356,8 @@
|
||||||
"jest-get-type": {
|
"jest-get-type": {
|
||||||
"version": "25.2.6",
|
"version": "25.2.6",
|
||||||
"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz",
|
||||||
"integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig=="
|
"integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"jest-haste-map": {
|
"jest-haste-map": {
|
||||||
"version": "24.9.0",
|
"version": "24.9.0",
|
||||||
|
@ -9069,6 +9092,7 @@
|
||||||
"version": "25.4.0",
|
"version": "25.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.4.0.tgz",
|
||||||
"integrity": "sha512-yPMdtj7YDgXhnGbc66bowk8AkQ0YwClbbwk3Kzhn5GVDrciiCr27U4NJRbrqXbTdtxjImONITg2LiRIw650k5A==",
|
"integrity": "sha512-yPMdtj7YDgXhnGbc66bowk8AkQ0YwClbbwk3Kzhn5GVDrciiCr27U4NJRbrqXbTdtxjImONITg2LiRIw650k5A==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"chalk": "^3.0.0",
|
"chalk": "^3.0.0",
|
||||||
"jest-diff": "^25.4.0",
|
"jest-diff": "^25.4.0",
|
||||||
|
@ -10691,7 +10715,8 @@
|
||||||
"min-indent": {
|
"min-indent": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz",
|
||||||
"integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY="
|
"integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"mini-create-react-context": {
|
"mini-create-react-context": {
|
||||||
"version": "0.3.2",
|
"version": "0.3.2",
|
||||||
|
@ -12716,9 +12741,9 @@
|
||||||
"integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw="
|
"integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw="
|
||||||
},
|
},
|
||||||
"prettier": {
|
"prettier": {
|
||||||
"version": "1.19.1",
|
"version": "2.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.4.tgz",
|
||||||
"integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
|
"integrity": "sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"pretty-bytes": {
|
"pretty-bytes": {
|
||||||
|
@ -12739,6 +12764,7 @@
|
||||||
"version": "25.4.0",
|
"version": "25.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.4.0.tgz",
|
||||||
"integrity": "sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ==",
|
"integrity": "sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@jest/types": "^25.4.0",
|
"@jest/types": "^25.4.0",
|
||||||
"ansi-regex": "^5.0.0",
|
"ansi-regex": "^5.0.0",
|
||||||
|
@ -13931,6 +13957,7 @@
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
|
||||||
"integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
|
"integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"indent-string": "^4.0.0",
|
"indent-string": "^4.0.0",
|
||||||
"strip-indent": "^3.0.0"
|
"strip-indent": "^3.0.0"
|
||||||
|
@ -15407,6 +15434,7 @@
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
|
||||||
"integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
|
"integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"min-indent": "^1.0.0"
|
"min-indent": "^1.0.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,10 +21,10 @@
|
||||||
"react-scripts": "^3.4.1"
|
"react-scripts": "^3.4.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"prettier": "^1.19.1",
|
|
||||||
"@testing-library/jest-dom": "^5.5.0",
|
"@testing-library/jest-dom": "^5.5.0",
|
||||||
"@testing-library/react": "^10.0.2",
|
"@testing-library/react": "^10.0.2",
|
||||||
"@testing-library/user-event": "^10.0.2"
|
"@testing-library/user-event": "^10.0.2",
|
||||||
|
"prettier": "^2.0.4"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "react-scripts start",
|
"start": "react-scripts start",
|
||||||
|
|
|
@ -2,7 +2,7 @@ import {
|
||||||
Button,
|
Button,
|
||||||
sanitizeListRestProps,
|
sanitizeListRestProps,
|
||||||
TopToolbar,
|
TopToolbar,
|
||||||
useTranslate
|
useTranslate,
|
||||||
} from 'react-admin'
|
} from 'react-admin'
|
||||||
import PlayArrowIcon from '@material-ui/icons/PlayArrow'
|
import PlayArrowIcon from '@material-ui/icons/PlayArrow'
|
||||||
import ShuffleIcon from '@material-ui/icons/Shuffle'
|
import ShuffleIcon from '@material-ui/icons/Shuffle'
|
||||||
|
@ -65,5 +65,5 @@ export const AlbumActions = ({
|
||||||
|
|
||||||
AlbumActions.defaultProps = {
|
AlbumActions.defaultProps = {
|
||||||
selectedIds: [],
|
selectedIds: [],
|
||||||
onUnselectItems: () => null
|
onUnselectItems: () => null,
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,29 +9,29 @@ import subsonic from '../subsonic'
|
||||||
|
|
||||||
const useStyles = makeStyles((theme) => ({
|
const useStyles = makeStyles((theme) => ({
|
||||||
root: {
|
root: {
|
||||||
margin: '20px'
|
margin: '20px',
|
||||||
},
|
},
|
||||||
gridListTile: {
|
gridListTile: {
|
||||||
minHeight: '180px',
|
minHeight: '180px',
|
||||||
minWidth: '180px'
|
minWidth: '180px',
|
||||||
},
|
},
|
||||||
cover: {
|
cover: {
|
||||||
display: 'inline-block',
|
display: 'inline-block',
|
||||||
width: '100%',
|
width: '100%',
|
||||||
height: '100%'
|
height: '100%',
|
||||||
},
|
},
|
||||||
tileBar: {
|
tileBar: {
|
||||||
textAlign: 'center',
|
textAlign: 'center',
|
||||||
background:
|
background:
|
||||||
'linear-gradient(to top, rgba(0,0,0,0.8) 0%,rgba(0,0,0,0.4) 70%,rgba(0,0,0,0) 100%)'
|
'linear-gradient(to top, rgba(0,0,0,0.8) 0%,rgba(0,0,0,0.4) 70%,rgba(0,0,0,0) 100%)',
|
||||||
},
|
},
|
||||||
albumArtistName: {
|
albumArtistName: {
|
||||||
whiteSpace: 'nowrap',
|
whiteSpace: 'nowrap',
|
||||||
overflow: 'hidden',
|
overflow: 'hidden',
|
||||||
textOverflow: 'ellipsis',
|
textOverflow: 'ellipsis',
|
||||||
textAlign: 'center',
|
textAlign: 'center',
|
||||||
fontSize: '1em'
|
fontSize: '1em',
|
||||||
}
|
},
|
||||||
}))
|
}))
|
||||||
|
|
||||||
const getColsForWidth = (width) => {
|
const getColsForWidth = (width) => {
|
||||||
|
|
|
@ -9,7 +9,7 @@ import {
|
||||||
ReferenceInput,
|
ReferenceInput,
|
||||||
SearchInput,
|
SearchInput,
|
||||||
Pagination,
|
Pagination,
|
||||||
useTranslate
|
useTranslate,
|
||||||
} from 'react-admin'
|
} from 'react-admin'
|
||||||
import { Title } from '../common'
|
import { Title } from '../common'
|
||||||
import { withWidth } from '@material-ui/core'
|
import { withWidth } from '@material-ui/core'
|
||||||
|
|
|
@ -35,7 +35,7 @@ const AlbumListActions = ({
|
||||||
showFilter,
|
showFilter,
|
||||||
displayedFilters,
|
displayedFilters,
|
||||||
filterValues,
|
filterValues,
|
||||||
context: 'button'
|
context: 'button',
|
||||||
})}
|
})}
|
||||||
<ButtonGroup
|
<ButtonGroup
|
||||||
variant="text"
|
variant="text"
|
||||||
|
@ -63,7 +63,7 @@ const AlbumListActions = ({
|
||||||
|
|
||||||
AlbumListActions.defaultProps = {
|
AlbumListActions.defaultProps = {
|
||||||
selectedIds: [],
|
selectedIds: [],
|
||||||
onUnselectItems: () => null
|
onUnselectItems: () => null,
|
||||||
}
|
}
|
||||||
|
|
||||||
export default AlbumListActions
|
export default AlbumListActions
|
||||||
|
|
|
@ -7,7 +7,7 @@ import {
|
||||||
FunctionField,
|
FunctionField,
|
||||||
Show,
|
Show,
|
||||||
SimpleShowLayout,
|
SimpleShowLayout,
|
||||||
TextField
|
TextField,
|
||||||
} from 'react-admin'
|
} from 'react-admin'
|
||||||
import { DurationField, RangeField } from '../common'
|
import { DurationField, RangeField } from '../common'
|
||||||
import { useMediaQuery } from '@material-ui/core'
|
import { useMediaQuery } from '@material-ui/core'
|
||||||
|
|
|
@ -6,7 +6,7 @@ import {
|
||||||
ListToolbar,
|
ListToolbar,
|
||||||
TextField,
|
TextField,
|
||||||
useListController,
|
useListController,
|
||||||
DatagridLoading
|
DatagridLoading,
|
||||||
} from 'react-admin'
|
} from 'react-admin'
|
||||||
import classnames from 'classnames'
|
import classnames from 'classnames'
|
||||||
import { useDispatch } from 'react-redux'
|
import { useDispatch } from 'react-redux'
|
||||||
|
@ -20,7 +20,7 @@ const useStyles = makeStyles(
|
||||||
(theme) => ({
|
(theme) => ({
|
||||||
root: {},
|
root: {},
|
||||||
main: {
|
main: {
|
||||||
display: 'flex'
|
display: 'flex',
|
||||||
},
|
},
|
||||||
content: {
|
content: {
|
||||||
marginTop: 0,
|
marginTop: 0,
|
||||||
|
@ -28,29 +28,29 @@ const useStyles = makeStyles(
|
||||||
position: 'relative',
|
position: 'relative',
|
||||||
flex: '1 1 auto',
|
flex: '1 1 auto',
|
||||||
[theme.breakpoints.down('xs')]: {
|
[theme.breakpoints.down('xs')]: {
|
||||||
boxShadow: 'none'
|
boxShadow: 'none',
|
||||||
},
|
},
|
||||||
overflow: 'inherit'
|
overflow: 'inherit',
|
||||||
},
|
},
|
||||||
bulkActionsDisplayed: {
|
bulkActionsDisplayed: {
|
||||||
marginTop: -theme.spacing(8),
|
marginTop: -theme.spacing(8),
|
||||||
transition: theme.transitions.create('margin-top')
|
transition: theme.transitions.create('margin-top'),
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
zIndex: 2,
|
zIndex: 2,
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
justifyContent: 'flex-end',
|
justifyContent: 'flex-end',
|
||||||
flexWrap: 'wrap'
|
flexWrap: 'wrap',
|
||||||
},
|
},
|
||||||
noResults: { padding: 20 }
|
noResults: { padding: 20 },
|
||||||
}),
|
}),
|
||||||
{ name: 'RaList' }
|
{ name: 'RaList' }
|
||||||
)
|
)
|
||||||
|
|
||||||
const useStylesListToolbar = makeStyles({
|
const useStylesListToolbar = makeStyles({
|
||||||
toolbar: {
|
toolbar: {
|
||||||
justifyContent: 'flex-start'
|
justifyContent: 'flex-start',
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const trackName = (r) => {
|
const trackName = (r) => {
|
||||||
|
@ -88,7 +88,7 @@ const AlbumSongs = (props) => {
|
||||||
<Card
|
<Card
|
||||||
className={classnames(classes.content, {
|
className={classnames(classes.content, {
|
||||||
[classes.bulkActionsDisplayed]:
|
[classes.bulkActionsDisplayed]:
|
||||||
controllerProps.selectedIds.length > 0
|
controllerProps.selectedIds.length > 0,
|
||||||
})}
|
})}
|
||||||
key={version}
|
key={version}
|
||||||
>
|
>
|
||||||
|
|
|
@ -15,5 +15,5 @@ export const ArtistLinkField = (props) => {
|
||||||
|
|
||||||
ArtistLinkField.defaultProps = {
|
ArtistLinkField.defaultProps = {
|
||||||
source: 'artistId',
|
source: 'artistId',
|
||||||
addLabel: true
|
addLabel: true,
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,8 +14,8 @@ const albumListParams = {
|
||||||
ALBUM_LIST_NEWEST: { sort: { field: 'created_at', order: 'DESC' } },
|
ALBUM_LIST_NEWEST: { sort: { field: 'created_at', order: 'DESC' } },
|
||||||
ALBUM_LIST_RECENT: {
|
ALBUM_LIST_RECENT: {
|
||||||
sort: { field: 'play_date', order: 'DESC' },
|
sort: { field: 'play_date', order: 'DESC' },
|
||||||
filter: { starred: true }
|
filter: { starred: true },
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const selectAlbumList = (mode) => ({ type: mode })
|
const selectAlbumList = (mode) => ({ type: mode })
|
||||||
|
@ -24,7 +24,7 @@ const albumViewReducer = (
|
||||||
previousState = {
|
previousState = {
|
||||||
mode: ALBUM_MODE_LIST,
|
mode: ALBUM_MODE_LIST,
|
||||||
list: ALBUM_LIST_ALL,
|
list: ALBUM_LIST_ALL,
|
||||||
params: { sort: {}, filter: {} }
|
params: { sort: {}, filter: {} },
|
||||||
},
|
},
|
||||||
payload
|
payload
|
||||||
) => {
|
) => {
|
||||||
|
@ -54,5 +54,5 @@ export {
|
||||||
ALBUM_LIST_STARRED,
|
ALBUM_LIST_STARRED,
|
||||||
albumViewReducer,
|
albumViewReducer,
|
||||||
selectViewMode,
|
selectViewMode,
|
||||||
selectAlbumList
|
selectAlbumList,
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,5 +5,5 @@ import AlbumShow from './AlbumShow'
|
||||||
export default {
|
export default {
|
||||||
list: AlbumList,
|
list: AlbumList,
|
||||||
show: AlbumShow,
|
show: AlbumShow,
|
||||||
icon: AlbumIcon
|
icon: AlbumIcon,
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,44 +4,44 @@ export const useStyles = makeStyles((theme) => ({
|
||||||
container: {
|
container: {
|
||||||
[theme.breakpoints.down('xs')]: {
|
[theme.breakpoints.down('xs')]: {
|
||||||
padding: '0.7em',
|
padding: '0.7em',
|
||||||
minWidth: '24em'
|
minWidth: '24em',
|
||||||
},
|
},
|
||||||
[theme.breakpoints.up('sm')]: {
|
[theme.breakpoints.up('sm')]: {
|
||||||
padding: '1em',
|
padding: '1em',
|
||||||
minWidth: '32em'
|
minWidth: '32em',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
albumCover: {
|
albumCover: {
|
||||||
display: 'inline-block',
|
display: 'inline-block',
|
||||||
[theme.breakpoints.down('xs')]: {
|
[theme.breakpoints.down('xs')]: {
|
||||||
height: '8em',
|
height: '8em',
|
||||||
width: '8em'
|
width: '8em',
|
||||||
},
|
},
|
||||||
[theme.breakpoints.up('sm')]: {
|
[theme.breakpoints.up('sm')]: {
|
||||||
height: '10em',
|
height: '10em',
|
||||||
width: '10em'
|
width: '10em',
|
||||||
},
|
},
|
||||||
[theme.breakpoints.up('lg')]: {
|
[theme.breakpoints.up('lg')]: {
|
||||||
height: '15em',
|
height: '15em',
|
||||||
width: '15em'
|
width: '15em',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
albumDetails: {
|
albumDetails: {
|
||||||
display: 'inline-block',
|
display: 'inline-block',
|
||||||
verticalAlign: 'top',
|
verticalAlign: 'top',
|
||||||
[theme.breakpoints.down('xs')]: {
|
[theme.breakpoints.down('xs')]: {
|
||||||
width: '14em'
|
width: '14em',
|
||||||
},
|
},
|
||||||
[theme.breakpoints.up('sm')]: {
|
[theme.breakpoints.up('sm')]: {
|
||||||
width: '26em'
|
width: '26em',
|
||||||
},
|
},
|
||||||
[theme.breakpoints.up('lg')]: {
|
[theme.breakpoints.up('lg')]: {
|
||||||
width: '38em'
|
width: '38em',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
albumTitle: {
|
albumTitle: {
|
||||||
whiteSpace: 'nowrap',
|
whiteSpace: 'nowrap',
|
||||||
overflow: 'hidden',
|
overflow: 'hidden',
|
||||||
textOverflow: 'ellipsis'
|
textOverflow: 'ellipsis',
|
||||||
}
|
},
|
||||||
}))
|
}))
|
||||||
|
|
|
@ -5,7 +5,7 @@ import {
|
||||||
List,
|
List,
|
||||||
NumberField,
|
NumberField,
|
||||||
SearchInput,
|
SearchInput,
|
||||||
TextField
|
TextField,
|
||||||
} from 'react-admin'
|
} from 'react-admin'
|
||||||
import { Pagination, Title } from '../common'
|
import { Pagination, Title } from '../common'
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ const ArtistFilter = (props) => (
|
||||||
</Filter>
|
</Filter>
|
||||||
)
|
)
|
||||||
|
|
||||||
const artistRowClick = (id, basePath, record) => {
|
const artistRowClick = (id) => {
|
||||||
const filter = { artist_id: id }
|
const filter = { artist_id: id }
|
||||||
return `/album?filter=${JSON.stringify(
|
return `/album?filter=${JSON.stringify(
|
||||||
filter
|
filter
|
||||||
|
|
|
@ -3,5 +3,5 @@ import ArtistList from './ArtistList'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
list: ArtistList,
|
list: ArtistList,
|
||||||
icon: MicIcon
|
icon: MicIcon,
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ const Player = () => {
|
||||||
showMediaSession: true,
|
showMediaSession: true,
|
||||||
defaultPosition: {
|
defaultPosition: {
|
||||||
top: 300,
|
top: 300,
|
||||||
left: 120
|
left: 120,
|
||||||
},
|
},
|
||||||
locale: {
|
locale: {
|
||||||
playListsText: translate('player.playListsText'),
|
playListsText: translate('player.playListsText'),
|
||||||
|
@ -55,9 +55,9 @@ const Player = () => {
|
||||||
order: translate('player.playModeText.order'),
|
order: translate('player.playModeText.order'),
|
||||||
orderLoop: translate('player.playModeText.orderLoop'),
|
orderLoop: translate('player.playModeText.orderLoop'),
|
||||||
singleLoop: translate('player.playModeText.singleLoop'),
|
singleLoop: translate('player.playModeText.singleLoop'),
|
||||||
shufflePlay: translate('player.playModeText.shufflePlay')
|
shufflePlay: translate('player.playModeText.shufflePlay'),
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const addQueueToOptions = (queue) => {
|
const addQueueToOptions = (queue) => {
|
||||||
|
@ -65,7 +65,7 @@ const Player = () => {
|
||||||
...defaultOptions,
|
...defaultOptions,
|
||||||
autoPlay: true,
|
autoPlay: true,
|
||||||
clearPriorAudioLists: queue.clear,
|
clearPriorAudioLists: queue.clear,
|
||||||
audioLists: queue.queue.map((item) => item)
|
audioLists: queue.queue.map((item) => item),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,33 +13,33 @@ const mapToAudioLists = (item) => ({
|
||||||
name: item.title,
|
name: item.title,
|
||||||
singer: item.artist,
|
singer: item.artist,
|
||||||
cover: subsonic.url('getCoverArt', item.id, { size: 300 }),
|
cover: subsonic.url('getCoverArt', item.id, { size: 300 }),
|
||||||
musicSrc: subsonic.url('stream', item.id, { ts: true })
|
musicSrc: subsonic.url('stream', item.id, { ts: true }),
|
||||||
})
|
})
|
||||||
|
|
||||||
const addTrack = (data) => ({
|
const addTrack = (data) => ({
|
||||||
type: PLAYER_ADD_TRACK,
|
type: PLAYER_ADD_TRACK,
|
||||||
data
|
data,
|
||||||
})
|
})
|
||||||
|
|
||||||
const setTrack = (data) => ({
|
const setTrack = (data) => ({
|
||||||
type: PLAYER_SET_TRACK,
|
type: PLAYER_SET_TRACK,
|
||||||
data
|
data,
|
||||||
})
|
})
|
||||||
|
|
||||||
const playAlbum = (id, data) => ({
|
const playAlbum = (id, data) => ({
|
||||||
type: PLAYER_PLAY_ALBUM,
|
type: PLAYER_PLAY_ALBUM,
|
||||||
data,
|
data,
|
||||||
id
|
id,
|
||||||
})
|
})
|
||||||
|
|
||||||
const syncQueue = (data) => ({
|
const syncQueue = (data) => ({
|
||||||
type: PLAYER_SYNC_QUEUE,
|
type: PLAYER_SYNC_QUEUE,
|
||||||
data
|
data,
|
||||||
})
|
})
|
||||||
|
|
||||||
const scrobbled = (id) => ({
|
const scrobbled = (id) => ({
|
||||||
type: PLAYER_SCROBBLE,
|
type: PLAYER_SCROBBLE,
|
||||||
data: id
|
data: id,
|
||||||
})
|
})
|
||||||
|
|
||||||
const playQueueReducer = (
|
const playQueueReducer = (
|
||||||
|
@ -61,7 +61,7 @@ const playQueueReducer = (
|
||||||
const newQueue = previousState.queue.map((item) => {
|
const newQueue = previousState.queue.map((item) => {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
scrobbled: item.scrobbled || item.trackId === data
|
scrobbled: item.scrobbled || item.trackId === data,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return { queue: newQueue, clear: false }
|
return { queue: newQueue, clear: false }
|
||||||
|
|
|
@ -8,11 +8,11 @@ const BitrateField = ({ record = {}, source }) => {
|
||||||
BitrateField.propTypes = {
|
BitrateField.propTypes = {
|
||||||
label: PropTypes.string,
|
label: PropTypes.string,
|
||||||
record: PropTypes.object,
|
record: PropTypes.object,
|
||||||
source: PropTypes.string.isRequired
|
source: PropTypes.string.isRequired,
|
||||||
}
|
}
|
||||||
|
|
||||||
BitrateField.defaultProps = {
|
BitrateField.defaultProps = {
|
||||||
addLabel: true
|
addLabel: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
export default BitrateField
|
export default BitrateField
|
||||||
|
|
|
@ -15,11 +15,11 @@ const format = (d) => {
|
||||||
DurationField.propTypes = {
|
DurationField.propTypes = {
|
||||||
label: PropTypes.string,
|
label: PropTypes.string,
|
||||||
record: PropTypes.object,
|
record: PropTypes.object,
|
||||||
source: PropTypes.string.isRequired
|
source: PropTypes.string.isRequired,
|
||||||
}
|
}
|
||||||
|
|
||||||
DurationField.defaultProps = {
|
DurationField.defaultProps = {
|
||||||
addLabel: true
|
addLabel: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
export default DurationField
|
export default DurationField
|
||||||
|
|
|
@ -25,6 +25,6 @@ const PlayButton = ({ icon = defaultIcon, action, ...rest }) => {
|
||||||
|
|
||||||
PlayButton.propTypes = {
|
PlayButton.propTypes = {
|
||||||
icon: PropTypes.element,
|
icon: PropTypes.element,
|
||||||
action: PropTypes.object
|
action: PropTypes.object,
|
||||||
}
|
}
|
||||||
export default PlayButton
|
export default PlayButton
|
||||||
|
|
|
@ -22,11 +22,11 @@ const RangeField = ({ record = {}, source }) => {
|
||||||
RangeField.propTypes = {
|
RangeField.propTypes = {
|
||||||
label: PropTypes.string,
|
label: PropTypes.string,
|
||||||
record: PropTypes.object,
|
record: PropTypes.object,
|
||||||
source: PropTypes.string.isRequired
|
source: PropTypes.string.isRequired,
|
||||||
}
|
}
|
||||||
|
|
||||||
RangeField.defaultProps = {
|
RangeField.defaultProps = {
|
||||||
addLabel: true
|
addLabel: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
export { formatRange }
|
export { formatRange }
|
||||||
|
|
|
@ -15,9 +15,9 @@ const useStyles = makeStyles(
|
||||||
{
|
{
|
||||||
link: {
|
link: {
|
||||||
textDecoration: 'none',
|
textDecoration: 'none',
|
||||||
color: 'inherit'
|
color: 'inherit',
|
||||||
},
|
},
|
||||||
tertiary: { float: 'right', opacity: 0.541176 }
|
tertiary: { float: 'right', opacity: 0.541176 },
|
||||||
},
|
},
|
||||||
{ name: 'RaSimpleList' }
|
{ name: 'RaSimpleList' }
|
||||||
)
|
)
|
||||||
|
@ -28,7 +28,7 @@ const LinkOrNot = ({
|
||||||
basePath,
|
basePath,
|
||||||
id,
|
id,
|
||||||
record,
|
record,
|
||||||
children
|
children,
|
||||||
}) => {
|
}) => {
|
||||||
const classes = useStyles({ classes: classesOverride })
|
const classes = useStyles({ classes: classesOverride })
|
||||||
return linkType === 'edit' || linkType === true ? (
|
return linkType === 'edit' || linkType === true ? (
|
||||||
|
@ -129,7 +129,7 @@ SimpleList.propTypes = {
|
||||||
linkType: PropTypes.oneOfType([
|
linkType: PropTypes.oneOfType([
|
||||||
PropTypes.string,
|
PropTypes.string,
|
||||||
PropTypes.bool,
|
PropTypes.bool,
|
||||||
PropTypes.func
|
PropTypes.func,
|
||||||
]).isRequired,
|
]).isRequired,
|
||||||
onToggleItem: PropTypes.func,
|
onToggleItem: PropTypes.func,
|
||||||
primaryText: PropTypes.func,
|
primaryText: PropTypes.func,
|
||||||
|
@ -137,13 +137,13 @@ SimpleList.propTypes = {
|
||||||
rightIcon: PropTypes.func,
|
rightIcon: PropTypes.func,
|
||||||
secondaryText: PropTypes.func,
|
secondaryText: PropTypes.func,
|
||||||
selectedIds: PropTypes.arrayOf(PropTypes.any).isRequired,
|
selectedIds: PropTypes.arrayOf(PropTypes.any).isRequired,
|
||||||
tertiaryText: PropTypes.func
|
tertiaryText: PropTypes.func,
|
||||||
}
|
}
|
||||||
|
|
||||||
SimpleList.defaultProps = {
|
SimpleList.defaultProps = {
|
||||||
linkType: 'edit',
|
linkType: 'edit',
|
||||||
hasBulkActions: false,
|
hasBulkActions: false,
|
||||||
selectedIds: []
|
selectedIds: [],
|
||||||
}
|
}
|
||||||
|
|
||||||
export default SimpleList
|
export default SimpleList
|
||||||
|
|
|
@ -20,11 +20,11 @@ function formatBytes(bytes, decimals = 2) {
|
||||||
SizeField.propTypes = {
|
SizeField.propTypes = {
|
||||||
label: PropTypes.string,
|
label: PropTypes.string,
|
||||||
record: PropTypes.object,
|
record: PropTypes.object,
|
||||||
source: PropTypes.string.isRequired
|
source: PropTypes.string.isRequired,
|
||||||
}
|
}
|
||||||
|
|
||||||
SizeField.defaultProps = {
|
SizeField.defaultProps = {
|
||||||
addLabel: true
|
addLabel: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
export default SizeField
|
export default SizeField
|
||||||
|
|
|
@ -20,7 +20,7 @@ const SongDetails = (props) => {
|
||||||
bitRate: <BitrateField record={record} source="bitRate" />,
|
bitRate: <BitrateField record={record} source="bitRate" />,
|
||||||
size: <SizeField record={record} source="size" />,
|
size: <SizeField record={record} source="size" />,
|
||||||
updatedAt: <DateField record={record} source="updatedAt" showTime />,
|
updatedAt: <DateField record={record} source="updatedAt" showTime />,
|
||||||
playCount: <TextField record={record} source="playCount" />
|
playCount: <TextField record={record} source="playCount" />,
|
||||||
}
|
}
|
||||||
if (record.playCount > 0) {
|
if (record.playCount > 0) {
|
||||||
data.playDate = <DateField record={record} source="playDate" showTime />
|
data.playDate = <DateField record={record} source="playDate" showTime />
|
||||||
|
@ -34,7 +34,7 @@ const SongDetails = (props) => {
|
||||||
<TableRow key={record.id}>
|
<TableRow key={record.id}>
|
||||||
<TableCell component="th" scope="row">
|
<TableCell component="th" scope="row">
|
||||||
{translate(`resources.song.fields.${key}`, {
|
{translate(`resources.song.fields.${key}`, {
|
||||||
_: inflection.humanize(inflection.underscore(key))
|
_: inflection.humanize(inflection.underscore(key)),
|
||||||
})}
|
})}
|
||||||
:
|
:
|
||||||
</TableCell>
|
</TableCell>
|
||||||
|
|
|
@ -18,5 +18,5 @@ export {
|
||||||
SimpleList,
|
SimpleList,
|
||||||
RangeField,
|
RangeField,
|
||||||
SongDetails,
|
SongDetails,
|
||||||
formatRange
|
formatRange,
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,11 +19,11 @@ export default deepmerge(chineseMessages, {
|
||||||
playCount: '播放次数',
|
playCount: '播放次数',
|
||||||
trackNumber: '音轨 #',
|
trackNumber: '音轨 #',
|
||||||
size: '大小',
|
size: '大小',
|
||||||
updatedAt: '上次更新'
|
updatedAt: '上次更新',
|
||||||
},
|
},
|
||||||
bulk: {
|
bulk: {
|
||||||
addToQueue: '稍后播放'
|
addToQueue: '稍后播放',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
album: {
|
album: {
|
||||||
name: '专辑 |||| 专辑',
|
name: '专辑 |||| 专辑',
|
||||||
|
@ -35,21 +35,21 @@ export default deepmerge(chineseMessages, {
|
||||||
songCount: '曲目数',
|
songCount: '曲目数',
|
||||||
playCount: '播放次数',
|
playCount: '播放次数',
|
||||||
compilation: '合辑',
|
compilation: '合辑',
|
||||||
year: '年份'
|
year: '年份',
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
playAll: '播放',
|
playAll: '播放',
|
||||||
playNext: '播放下一首',
|
playNext: '播放下一首',
|
||||||
addToQueue: '稍后播放',
|
addToQueue: '稍后播放',
|
||||||
shuffle: '刷新'
|
shuffle: '刷新',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
artist: {
|
artist: {
|
||||||
name: '歌手 |||| 歌手',
|
name: '歌手 |||| 歌手',
|
||||||
fields: {
|
fields: {
|
||||||
name: '名称',
|
name: '名称',
|
||||||
albumCount: '歌手数'
|
albumCount: '歌手数',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
user: {
|
user: {
|
||||||
name: '用户 |||| 用户',
|
name: '用户 |||| 用户',
|
||||||
|
@ -58,8 +58,8 @@ export default deepmerge(chineseMessages, {
|
||||||
isAdmin: '管理员',
|
isAdmin: '管理员',
|
||||||
lastLoginAt: '最后一次访问',
|
lastLoginAt: '最后一次访问',
|
||||||
updatedAt: '上次修改',
|
updatedAt: '上次修改',
|
||||||
name: '名称'
|
name: '名称',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
player: {
|
player: {
|
||||||
name: '用户 |||| 用户',
|
name: '用户 |||| 用户',
|
||||||
|
@ -69,8 +69,8 @@ export default deepmerge(chineseMessages, {
|
||||||
maxBitRate: '最大比特率',
|
maxBitRate: '最大比特率',
|
||||||
client: '应用程序',
|
client: '应用程序',
|
||||||
userName: '用户',
|
userName: '用户',
|
||||||
lastSeen: '最后一次访问'
|
lastSeen: '最后一次访问',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
transcoding: {
|
transcoding: {
|
||||||
name: '转码 |||| 转码',
|
name: '转码 |||| 转码',
|
||||||
|
@ -78,21 +78,21 @@ export default deepmerge(chineseMessages, {
|
||||||
name: '名称',
|
name: '名称',
|
||||||
targetFormat: '格式',
|
targetFormat: '格式',
|
||||||
defaultBitRate: '默认比特率',
|
defaultBitRate: '默认比特率',
|
||||||
command: '命令'
|
command: '命令',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
ra: {
|
ra: {
|
||||||
auth: {
|
auth: {
|
||||||
welcome1: '感谢您安装Navidrome!',
|
welcome1: '感谢您安装Navidrome!',
|
||||||
welcome2: '为了开始使用,请创建一个管理员账户',
|
welcome2: '为了开始使用,请创建一个管理员账户',
|
||||||
confirmPassword: '确认密码',
|
confirmPassword: '确认密码',
|
||||||
buttonCreateAdmin: '创建管理员'
|
buttonCreateAdmin: '创建管理员',
|
||||||
},
|
},
|
||||||
validation: {
|
validation: {
|
||||||
invalidChars: '请只使用字母和数字',
|
invalidChars: '请只使用字母和数字',
|
||||||
passwordDoesNotMatch: '密码不匹配'
|
passwordDoesNotMatch: '密码不匹配',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
menu: {
|
menu: {
|
||||||
library: '曲库',
|
library: '曲库',
|
||||||
|
@ -103,9 +103,9 @@ export default deepmerge(chineseMessages, {
|
||||||
name: '个性化',
|
name: '个性化',
|
||||||
options: {
|
options: {
|
||||||
theme: '主题',
|
theme: '主题',
|
||||||
language: '语言'
|
language: '语言',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
player: {
|
player: {
|
||||||
playListsText: '播放队列',
|
playListsText: '播放队列',
|
||||||
|
@ -130,7 +130,7 @@ export default deepmerge(chineseMessages, {
|
||||||
order: '顺序播放',
|
order: '顺序播放',
|
||||||
orderLoop: '列表循环',
|
orderLoop: '列表循环',
|
||||||
singleLoop: '单曲循环',
|
singleLoop: '单曲循环',
|
||||||
shufflePlay: '随机播放'
|
shufflePlay: '随机播放',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
|
|
|
@ -10,11 +10,11 @@ export default deepmerge(englishMessages, {
|
||||||
albumArtist: 'Album Artist',
|
albumArtist: 'Album Artist',
|
||||||
duration: 'Time',
|
duration: 'Time',
|
||||||
trackNumber: 'Track #',
|
trackNumber: 'Track #',
|
||||||
playCount: 'Plays'
|
playCount: 'Plays',
|
||||||
},
|
},
|
||||||
bulk: {
|
bulk: {
|
||||||
addToQueue: 'Play Later'
|
addToQueue: 'Play Later',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
album: {
|
album: {
|
||||||
fields: {
|
fields: {
|
||||||
|
@ -22,27 +22,27 @@ export default deepmerge(englishMessages, {
|
||||||
artist: 'Artist',
|
artist: 'Artist',
|
||||||
duration: 'Time',
|
duration: 'Time',
|
||||||
songCount: 'Songs',
|
songCount: 'Songs',
|
||||||
playCount: 'Plays'
|
playCount: 'Plays',
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
playAll: 'Play',
|
playAll: 'Play',
|
||||||
playNext: 'Play Next',
|
playNext: 'Play Next',
|
||||||
addToQueue: 'Play Later',
|
addToQueue: 'Play Later',
|
||||||
shuffle: 'Shuffle'
|
shuffle: 'Shuffle',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
ra: {
|
ra: {
|
||||||
auth: {
|
auth: {
|
||||||
welcome1: 'Thanks for installing Navidrome!',
|
welcome1: 'Thanks for installing Navidrome!',
|
||||||
welcome2: 'To start, create an admin user',
|
welcome2: 'To start, create an admin user',
|
||||||
confirmPassword: 'Confirm Password',
|
confirmPassword: 'Confirm Password',
|
||||||
buttonCreateAdmin: 'Create Admin'
|
buttonCreateAdmin: 'Create Admin',
|
||||||
},
|
},
|
||||||
validation: {
|
validation: {
|
||||||
invalidChars: 'Please only use letter and numbers',
|
invalidChars: 'Please only use letter and numbers',
|
||||||
passwordDoesNotMatch: 'Password does not match'
|
passwordDoesNotMatch: 'Password does not match',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
menu: {
|
menu: {
|
||||||
library: 'Library',
|
library: 'Library',
|
||||||
|
@ -53,9 +53,9 @@ export default deepmerge(englishMessages, {
|
||||||
name: 'Personal',
|
name: 'Personal',
|
||||||
options: {
|
options: {
|
||||||
theme: 'Theme',
|
theme: 'Theme',
|
||||||
language: 'Language'
|
language: 'Language',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
player: {
|
player: {
|
||||||
playListsText: 'Play Queue',
|
playListsText: 'Play Queue',
|
||||||
|
@ -80,7 +80,7 @@ export default deepmerge(englishMessages, {
|
||||||
order: 'In order',
|
order: 'In order',
|
||||||
orderLoop: 'Repeat',
|
orderLoop: 'Repeat',
|
||||||
singleLoop: 'Repeat One',
|
singleLoop: 'Repeat One',
|
||||||
shufflePlay: 'Shuffle'
|
shufflePlay: 'Shuffle',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
|
|
|
@ -15,14 +15,14 @@ export default deepmerge(frenchMessages, {
|
||||||
compilation: 'Compilation',
|
compilation: 'Compilation',
|
||||||
duration: 'Durée',
|
duration: 'Durée',
|
||||||
year: 'Année',
|
year: 'Année',
|
||||||
playCount: 'Nombre d\'écoutes',
|
playCount: "Nombre d'écoutes",
|
||||||
trackNumber: '#',
|
trackNumber: '#',
|
||||||
size: 'Taille',
|
size: 'Taille',
|
||||||
updatedAt: 'Mise à jour'
|
updatedAt: 'Mise à jour',
|
||||||
},
|
},
|
||||||
bulk: {
|
bulk: {
|
||||||
addToQueue: 'Ajouter à la file'
|
addToQueue: 'Ajouter à la file',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
album: {
|
album: {
|
||||||
name: 'Album |||| Albums',
|
name: 'Album |||| Albums',
|
||||||
|
@ -31,55 +31,55 @@ export default deepmerge(frenchMessages, {
|
||||||
artist: 'Artiste',
|
artist: 'Artiste',
|
||||||
songCount: 'Numéro de piste',
|
songCount: 'Numéro de piste',
|
||||||
genre: 'Genre',
|
genre: 'Genre',
|
||||||
playCount: 'Numbre d\'écoutes',
|
playCount: "Numbre d'écoutes",
|
||||||
compilation: 'Compilation',
|
compilation: 'Compilation',
|
||||||
duration: 'Durée',
|
duration: 'Durée',
|
||||||
year: 'Année'
|
year: 'Année',
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
playAll: 'Lire',
|
playAll: 'Lire',
|
||||||
playNext: 'Lire ensuite',
|
playNext: 'Lire ensuite',
|
||||||
addToQueue: 'Ajouter à la file',
|
addToQueue: 'Ajouter à la file',
|
||||||
shuffle: 'Mélanger'
|
shuffle: 'Mélanger',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
artist: {
|
artist: {
|
||||||
name: 'Artiste |||| Artistes',
|
name: 'Artiste |||| Artistes',
|
||||||
fields: {
|
fields: {
|
||||||
name: 'Nom',
|
name: 'Nom',
|
||||||
albumCount: 'Nombre d\'albums'
|
albumCount: "Nombre d'albums",
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
user: {
|
user: {
|
||||||
name: 'Utilisateur |||| Utilisateurs',
|
name: 'Utilisateur |||| Utilisateurs',
|
||||||
fields: {
|
fields: {
|
||||||
name: 'Nom'
|
name: 'Nom',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
transcoding: {
|
transcoding: {
|
||||||
name: 'Conversion |||| Conversions',
|
name: 'Conversion |||| Conversions',
|
||||||
fields: {
|
fields: {
|
||||||
name: 'Nom'
|
name: 'Nom',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
player: {
|
player: {
|
||||||
name: 'Lecteur |||| Lecteurs',
|
name: 'Lecteur |||| Lecteurs',
|
||||||
fields: {
|
fields: {
|
||||||
name: 'Nom'
|
name: 'Nom',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
ra: {
|
ra: {
|
||||||
auth: {
|
auth: {
|
||||||
welcome1: 'Merci d\'avoir installé Navidrome !',
|
welcome1: "Merci d'avoir installé Navidrome !",
|
||||||
welcome2: 'Pour commencer, créez un compte administrateur',
|
welcome2: 'Pour commencer, créez un compte administrateur',
|
||||||
confirmPassword: 'Confirmer votre mot de passe',
|
confirmPassword: 'Confirmer votre mot de passe',
|
||||||
buttonCreateAdmin: 'Créer un compte administrateur'
|
buttonCreateAdmin: 'Créer un compte administrateur',
|
||||||
},
|
},
|
||||||
validation: {
|
validation: {
|
||||||
invalidChars: 'Merci d\'utiliser uniquement des chiffres et des lettres',
|
invalidChars: "Merci d'utiliser uniquement des chiffres et des lettres",
|
||||||
passwordDoesNotMatch: 'Les mots de passes ne correspondent pas'
|
passwordDoesNotMatch: 'Les mots de passes ne correspondent pas',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
menu: {
|
menu: {
|
||||||
library: 'Bibliothèque',
|
library: 'Bibliothèque',
|
||||||
|
@ -89,9 +89,9 @@ export default deepmerge(frenchMessages, {
|
||||||
name: 'Paramètres personel',
|
name: 'Paramètres personel',
|
||||||
options: {
|
options: {
|
||||||
theme: 'Thème',
|
theme: 'Thème',
|
||||||
language: 'Langue'
|
language: 'Langue',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
player: {
|
player: {
|
||||||
playListsText: 'File de lecture',
|
playListsText: 'File de lecture',
|
||||||
|
@ -106,7 +106,7 @@ export default deepmerge(frenchMessages, {
|
||||||
order: 'Ordonner',
|
order: 'Ordonner',
|
||||||
orderLoop: 'Tout répéter',
|
orderLoop: 'Tout répéter',
|
||||||
singleLoop: 'Repéter',
|
singleLoop: 'Repéter',
|
||||||
shufflePlay: 'Aleatoire'
|
shufflePlay: 'Aleatoire',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
|
|
|
@ -18,11 +18,11 @@ export default deepmerge(italianMessages, {
|
||||||
playCount: 'Riproduzioni',
|
playCount: 'Riproduzioni',
|
||||||
trackNumber: '#',
|
trackNumber: '#',
|
||||||
size: 'Dimensioni',
|
size: 'Dimensioni',
|
||||||
updatedAt: 'Ultimo aggiornamento'
|
updatedAt: 'Ultimo aggiornamento',
|
||||||
},
|
},
|
||||||
bulk: {
|
bulk: {
|
||||||
addToQueue: 'Aggiungi alla coda'
|
addToQueue: 'Aggiungi alla coda',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
album: {
|
album: {
|
||||||
name: 'Album |||| Album',
|
name: 'Album |||| Album',
|
||||||
|
@ -34,21 +34,21 @@ export default deepmerge(italianMessages, {
|
||||||
playCount: 'Riproduzioni',
|
playCount: 'Riproduzioni',
|
||||||
compilation: 'Compilation',
|
compilation: 'Compilation',
|
||||||
duration: 'Durata',
|
duration: 'Durata',
|
||||||
year: 'Anno'
|
year: 'Anno',
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
playAll: 'Riproduci',
|
playAll: 'Riproduci',
|
||||||
playNext: 'Riproduci come successivo',
|
playNext: 'Riproduci come successivo',
|
||||||
addToQueue: 'Aggiungi alla coda',
|
addToQueue: 'Aggiungi alla coda',
|
||||||
shuffle: 'Riprodici casualmente'
|
shuffle: 'Riprodici casualmente',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
artist: {
|
artist: {
|
||||||
name: 'Artista |||| Artisti',
|
name: 'Artista |||| Artisti',
|
||||||
fields: {
|
fields: {
|
||||||
name: 'Nome',
|
name: 'Nome',
|
||||||
albumCount: 'Album'
|
albumCount: 'Album',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
user: {
|
user: {
|
||||||
name: 'Utente |||| Utenti',
|
name: 'Utente |||| Utenti',
|
||||||
|
@ -57,8 +57,8 @@ export default deepmerge(italianMessages, {
|
||||||
isAdmin: 'Amministratore',
|
isAdmin: 'Amministratore',
|
||||||
lastLoginAt: 'Ultimo accesso',
|
lastLoginAt: 'Ultimo accesso',
|
||||||
updatedAt: 'Ultima modifica',
|
updatedAt: 'Ultima modifica',
|
||||||
name: 'Nome'
|
name: 'Nome',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
player: {
|
player: {
|
||||||
name: 'Client |||| Client',
|
name: 'Client |||| Client',
|
||||||
|
@ -68,8 +68,8 @@ export default deepmerge(italianMessages, {
|
||||||
maxBitRate: 'Bitrate massimo',
|
maxBitRate: 'Bitrate massimo',
|
||||||
client: 'Applicazione',
|
client: 'Applicazione',
|
||||||
userName: 'Utente',
|
userName: 'Utente',
|
||||||
lastSeen: 'Ultimo acesso'
|
lastSeen: 'Ultimo acesso',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
transcoding: {
|
transcoding: {
|
||||||
name: 'Transcodifica |||| Transcodifiche',
|
name: 'Transcodifica |||| Transcodifiche',
|
||||||
|
@ -77,21 +77,21 @@ export default deepmerge(italianMessages, {
|
||||||
name: 'Nome',
|
name: 'Nome',
|
||||||
targetFormat: 'Formato',
|
targetFormat: 'Formato',
|
||||||
defaultBitRate: 'Bitrate predefinito',
|
defaultBitRate: 'Bitrate predefinito',
|
||||||
command: 'Comando'
|
command: 'Comando',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
ra: {
|
ra: {
|
||||||
auth: {
|
auth: {
|
||||||
welcome1: 'Grazie per aver installato Navidrome!',
|
welcome1: 'Grazie per aver installato Navidrome!',
|
||||||
welcome2: 'Per iniziare, crea un amministratore',
|
welcome2: 'Per iniziare, crea un amministratore',
|
||||||
confirmPassword: 'Conferma la password',
|
confirmPassword: 'Conferma la password',
|
||||||
buttonCreateAdmin: 'Crea amministratore'
|
buttonCreateAdmin: 'Crea amministratore',
|
||||||
},
|
},
|
||||||
validation: {
|
validation: {
|
||||||
invalidChars: 'Per favore usa solo lettere e numeri',
|
invalidChars: 'Per favore usa solo lettere e numeri',
|
||||||
passwordDoesNotMatch: 'Le password non coincidono'
|
passwordDoesNotMatch: 'Le password non coincidono',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
menu: {
|
menu: {
|
||||||
library: 'Libreria',
|
library: 'Libreria',
|
||||||
|
@ -101,9 +101,9 @@ export default deepmerge(italianMessages, {
|
||||||
name: 'Personale',
|
name: 'Personale',
|
||||||
options: {
|
options: {
|
||||||
theme: 'Tema',
|
theme: 'Tema',
|
||||||
language: 'Lingua'
|
language: 'Lingua',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
player: {
|
player: {
|
||||||
playListsText: 'Coda',
|
playListsText: 'Coda',
|
||||||
|
@ -121,7 +121,7 @@ export default deepmerge(italianMessages, {
|
||||||
order: 'In ordine',
|
order: 'In ordine',
|
||||||
orderLoop: 'Ripeti',
|
orderLoop: 'Ripeti',
|
||||||
singleLoop: 'Ripeti una volta',
|
singleLoop: 'Ripeti una volta',
|
||||||
shufflePlay: 'Casuale'
|
shufflePlay: 'Casuale',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
|
|
|
@ -18,11 +18,11 @@ export default deepmerge(portugueseMessages, {
|
||||||
playCount: 'Execuções',
|
playCount: 'Execuções',
|
||||||
trackNumber: '#',
|
trackNumber: '#',
|
||||||
size: 'Tamanho',
|
size: 'Tamanho',
|
||||||
updatedAt: 'Últ. Atualização'
|
updatedAt: 'Últ. Atualização',
|
||||||
},
|
},
|
||||||
bulk: {
|
bulk: {
|
||||||
addToQueue: 'Play Later'
|
addToQueue: 'Play Later',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
album: {
|
album: {
|
||||||
name: 'Álbum |||| Álbuns',
|
name: 'Álbum |||| Álbuns',
|
||||||
|
@ -34,21 +34,21 @@ export default deepmerge(portugueseMessages, {
|
||||||
playCount: 'Execuções',
|
playCount: 'Execuções',
|
||||||
compilation: 'Coletânea',
|
compilation: 'Coletânea',
|
||||||
duration: 'Duração',
|
duration: 'Duração',
|
||||||
year: 'Ano'
|
year: 'Ano',
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
playAll: 'Play',
|
playAll: 'Play',
|
||||||
playNext: 'Play Next',
|
playNext: 'Play Next',
|
||||||
addToQueue: 'Play Later',
|
addToQueue: 'Play Later',
|
||||||
shuffle: 'Shuffle'
|
shuffle: 'Shuffle',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
artist: {
|
artist: {
|
||||||
name: 'Artista |||| Artistas',
|
name: 'Artista |||| Artistas',
|
||||||
fields: {
|
fields: {
|
||||||
name: 'Nome',
|
name: 'Nome',
|
||||||
albumCount: 'Total de Álbuns'
|
albumCount: 'Total de Álbuns',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
user: {
|
user: {
|
||||||
name: 'Usuário |||| Usuários',
|
name: 'Usuário |||| Usuários',
|
||||||
|
@ -57,8 +57,8 @@ export default deepmerge(portugueseMessages, {
|
||||||
isAdmin: 'Admin?',
|
isAdmin: 'Admin?',
|
||||||
lastLoginAt: 'Últ. Login',
|
lastLoginAt: 'Últ. Login',
|
||||||
updatedAt: 'Últ. Atualização',
|
updatedAt: 'Últ. Atualização',
|
||||||
name: 'Nome'
|
name: 'Nome',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
player: {
|
player: {
|
||||||
name: 'Tocador |||| Tocadores',
|
name: 'Tocador |||| Tocadores',
|
||||||
|
@ -68,8 +68,8 @@ export default deepmerge(portugueseMessages, {
|
||||||
maxBitRate: 'Bitrate máx',
|
maxBitRate: 'Bitrate máx',
|
||||||
client: 'Cliente',
|
client: 'Cliente',
|
||||||
userName: 'Usuário',
|
userName: 'Usuário',
|
||||||
lastSeen: 'Últ. acesso'
|
lastSeen: 'Últ. acesso',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
transcoding: {
|
transcoding: {
|
||||||
name: 'Conversão |||| Conversões',
|
name: 'Conversão |||| Conversões',
|
||||||
|
@ -77,21 +77,21 @@ export default deepmerge(portugueseMessages, {
|
||||||
name: 'Nome',
|
name: 'Nome',
|
||||||
targetFormat: 'Formato',
|
targetFormat: 'Formato',
|
||||||
defaultBitRate: 'Bitrate padrão',
|
defaultBitRate: 'Bitrate padrão',
|
||||||
command: 'Comando'
|
command: 'Comando',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
ra: {
|
ra: {
|
||||||
auth: {
|
auth: {
|
||||||
welcome1: 'Obrigado por instalar Navidrome!',
|
welcome1: 'Obrigado por instalar Navidrome!',
|
||||||
welcome2: 'Para iniciar, crie um usuário admin',
|
welcome2: 'Para iniciar, crie um usuário admin',
|
||||||
confirmPassword: 'Confirme a senha',
|
confirmPassword: 'Confirme a senha',
|
||||||
buttonCreateAdmin: 'Criar Admin'
|
buttonCreateAdmin: 'Criar Admin',
|
||||||
},
|
},
|
||||||
validation: {
|
validation: {
|
||||||
invalidChars: 'Somente use letras e numeros',
|
invalidChars: 'Somente use letras e numeros',
|
||||||
passwordDoesNotMatch: 'Senha não confere'
|
passwordDoesNotMatch: 'Senha não confere',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
menu: {
|
menu: {
|
||||||
library: 'Biblioteca',
|
library: 'Biblioteca',
|
||||||
|
@ -101,9 +101,9 @@ export default deepmerge(portugueseMessages, {
|
||||||
name: 'Pessoal',
|
name: 'Pessoal',
|
||||||
options: {
|
options: {
|
||||||
theme: 'Tema',
|
theme: 'Tema',
|
||||||
language: 'Língua'
|
language: 'Língua',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
player: {
|
player: {
|
||||||
playListsText: 'Fila de Execução',
|
playListsText: 'Fila de Execução',
|
||||||
|
@ -121,7 +121,7 @@ export default deepmerge(portugueseMessages, {
|
||||||
order: 'Em ordem',
|
order: 'Em ordem',
|
||||||
orderLoop: 'Repetir tudo',
|
orderLoop: 'Repetir tudo',
|
||||||
singleLoop: 'Repetir',
|
singleLoop: 'Repetir',
|
||||||
shufflePlay: 'Aleatório'
|
shufflePlay: 'Aleatório',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
|
|
|
@ -3,7 +3,7 @@ import {
|
||||||
AppBar as RAAppBar,
|
AppBar as RAAppBar,
|
||||||
MenuItemLink,
|
MenuItemLink,
|
||||||
UserMenu,
|
UserMenu,
|
||||||
useTranslate
|
useTranslate,
|
||||||
} from 'react-admin'
|
} from 'react-admin'
|
||||||
import { makeStyles } from '@material-ui/core'
|
import { makeStyles } from '@material-ui/core'
|
||||||
import InfoIcon from '@material-ui/icons/Info'
|
import InfoIcon from '@material-ui/icons/Info'
|
||||||
|
@ -11,8 +11,8 @@ import config from '../config'
|
||||||
|
|
||||||
const useStyles = makeStyles((theme) => ({
|
const useStyles = makeStyles((theme) => ({
|
||||||
menuItem: {
|
menuItem: {
|
||||||
color: theme.palette.text.secondary
|
color: theme.palette.text.secondary,
|
||||||
}
|
},
|
||||||
}))
|
}))
|
||||||
|
|
||||||
const VersionMenu = forwardRef((props, ref) => {
|
const VersionMenu = forwardRef((props, ref) => {
|
||||||
|
@ -23,7 +23,7 @@ const VersionMenu = forwardRef((props, ref) => {
|
||||||
ref={ref}
|
ref={ref}
|
||||||
to="#"
|
to="#"
|
||||||
primaryText={translate('menu.version', {
|
primaryText={translate('menu.version', {
|
||||||
version: config.version
|
version: config.version,
|
||||||
})}
|
})}
|
||||||
leftIcon={<InfoIcon />}
|
leftIcon={<InfoIcon />}
|
||||||
className={classes.menuItem}
|
className={classes.menuItem}
|
||||||
|
|
|
@ -7,7 +7,7 @@ import AppBar from './AppBar'
|
||||||
import themes from '../themes'
|
import themes from '../themes'
|
||||||
|
|
||||||
const useStyles = makeStyles({
|
const useStyles = makeStyles({
|
||||||
root: { paddingBottom: (props) => (props.addPadding ? '80px' : 0) }
|
root: { paddingBottom: (props) => (props.addPadding ? '80px' : 0) },
|
||||||
})
|
})
|
||||||
|
|
||||||
export default (props) => {
|
export default (props) => {
|
||||||
|
|
|
@ -27,35 +27,35 @@ const useStyles = makeStyles((theme) => ({
|
||||||
background: `url(${config.loginBackgroundURL})`,
|
background: `url(${config.loginBackgroundURL})`,
|
||||||
backgroundRepeat: 'no-repeat',
|
backgroundRepeat: 'no-repeat',
|
||||||
backgroundSize: 'cover',
|
backgroundSize: 'cover',
|
||||||
backgroundPosition: 'center'
|
backgroundPosition: 'center',
|
||||||
},
|
},
|
||||||
card: {
|
card: {
|
||||||
minWidth: 300,
|
minWidth: 300,
|
||||||
marginTop: '6em'
|
marginTop: '6em',
|
||||||
},
|
},
|
||||||
avatar: {
|
avatar: {
|
||||||
margin: '1em',
|
margin: '1em',
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
justifyContent: 'center'
|
justifyContent: 'center',
|
||||||
},
|
},
|
||||||
icon: {
|
icon: {
|
||||||
backgroundColor: theme.palette.secondary.main
|
backgroundColor: theme.palette.secondary.main,
|
||||||
},
|
},
|
||||||
systemName: {
|
systemName: {
|
||||||
marginTop: '1em',
|
marginTop: '1em',
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
justifyContent: 'center',
|
justifyContent: 'center',
|
||||||
color: 'blue' //theme.palette.grey[500]
|
color: 'blue', //theme.palette.grey[500]
|
||||||
},
|
},
|
||||||
form: {
|
form: {
|
||||||
padding: '0 1em 1em 1em'
|
padding: '0 1em 1em 1em',
|
||||||
},
|
},
|
||||||
input: {
|
input: {
|
||||||
marginTop: '1em'
|
marginTop: '1em',
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
padding: '0 1em 1em 1em'
|
padding: '0 1em 1em 1em',
|
||||||
}
|
},
|
||||||
}))
|
}))
|
||||||
|
|
||||||
const renderInput = ({
|
const renderInput = ({
|
||||||
|
@ -274,7 +274,7 @@ const Login = ({ location }) => {
|
||||||
|
|
||||||
Login.propTypes = {
|
Login.propTypes = {
|
||||||
authProvider: PropTypes.func,
|
authProvider: PropTypes.func,
|
||||||
previousRoute: PropTypes.string
|
previousRoute: PropTypes.string,
|
||||||
}
|
}
|
||||||
|
|
||||||
// We need to put the ThemeProvider decoration in another component
|
// We need to put the ThemeProvider decoration in another component
|
||||||
|
|
|
@ -17,9 +17,9 @@ const translatedResourceName = (resource, translate) =>
|
||||||
resource.options && resource.options.label
|
resource.options && resource.options.label
|
||||||
? translate(resource.options.label, {
|
? translate(resource.options.label, {
|
||||||
smart_count: 2,
|
smart_count: 2,
|
||||||
_: resource.options.label
|
_: resource.options.label,
|
||||||
})
|
})
|
||||||
: inflection.humanize(inflection.pluralize(resource.name))
|
: inflection.humanize(inflection.pluralize(resource.name)),
|
||||||
})
|
})
|
||||||
|
|
||||||
const Menu = ({ onMenuClick, dense, logout }) => {
|
const Menu = ({ onMenuClick, dense, logout }) => {
|
||||||
|
@ -31,7 +31,7 @@ const Menu = ({ onMenuClick, dense, logout }) => {
|
||||||
// TODO State is not persisted in mobile when you close the sidebar menu. Move to redux?
|
// TODO State is not persisted in mobile when you close the sidebar menu. Move to redux?
|
||||||
const [state, setState] = useState({
|
const [state, setState] = useState({
|
||||||
menuLibrary: true,
|
menuLibrary: true,
|
||||||
menuSettings: false
|
menuSettings: false,
|
||||||
})
|
})
|
||||||
|
|
||||||
const handleToggle = (menu) => {
|
const handleToggle = (menu) => {
|
||||||
|
|
|
@ -5,8 +5,8 @@ import TuneIcon from '@material-ui/icons/Tune'
|
||||||
|
|
||||||
const useStyles = makeStyles((theme) => ({
|
const useStyles = makeStyles((theme) => ({
|
||||||
menuItem: {
|
menuItem: {
|
||||||
color: theme.palette.text.secondary
|
color: theme.palette.text.secondary,
|
||||||
}
|
},
|
||||||
}))
|
}))
|
||||||
|
|
||||||
const PersonalMenu = forwardRef(({ onClick, sidebarIsOpen, dense }, ref) => {
|
const PersonalMenu = forwardRef(({ onClick, sidebarIsOpen, dense }, ref) => {
|
||||||
|
|
|
@ -14,12 +14,12 @@ const useStyles = makeStyles((theme) => ({
|
||||||
icon: { minWidth: theme.spacing(5) },
|
icon: { minWidth: theme.spacing(5) },
|
||||||
sidebarIsOpen: {
|
sidebarIsOpen: {
|
||||||
paddingLeft: 25,
|
paddingLeft: 25,
|
||||||
transition: 'padding-left 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms'
|
transition: 'padding-left 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms',
|
||||||
},
|
},
|
||||||
sidebarIsClosed: {
|
sidebarIsClosed: {
|
||||||
paddingLeft: 0,
|
paddingLeft: 0,
|
||||||
transition: 'padding-left 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms'
|
transition: 'padding-left 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms',
|
||||||
}
|
},
|
||||||
}))
|
}))
|
||||||
|
|
||||||
const SubMenu = ({
|
const SubMenu = ({
|
||||||
|
@ -29,7 +29,7 @@ const SubMenu = ({
|
||||||
name,
|
name,
|
||||||
icon,
|
icon,
|
||||||
children,
|
children,
|
||||||
dense
|
dense,
|
||||||
}) => {
|
}) => {
|
||||||
const translate = useTranslate()
|
const translate = useTranslate()
|
||||||
const classes = useStyles()
|
const classes = useStyles()
|
||||||
|
|
|
@ -7,7 +7,7 @@ import {
|
||||||
SelectInput,
|
SelectInput,
|
||||||
useTranslate,
|
useTranslate,
|
||||||
useSetLocale,
|
useSetLocale,
|
||||||
useLocale
|
useLocale,
|
||||||
} from 'react-admin'
|
} from 'react-admin'
|
||||||
import { makeStyles } from '@material-ui/core/styles'
|
import { makeStyles } from '@material-ui/core/styles'
|
||||||
import { changeTheme } from './actions'
|
import { changeTheme } from './actions'
|
||||||
|
@ -15,7 +15,7 @@ import themes from '../themes'
|
||||||
import i18n from '../i18n'
|
import i18n from '../i18n'
|
||||||
|
|
||||||
const useStyles = makeStyles({
|
const useStyles = makeStyles({
|
||||||
root: { marginTop: '1em' }
|
root: { marginTop: '1em' },
|
||||||
})
|
})
|
||||||
|
|
||||||
const SelectLanguage = (props) => {
|
const SelectLanguage = (props) => {
|
||||||
|
|
|
@ -2,5 +2,5 @@ export const CHANGE_THEME = 'CHANGE_THEME'
|
||||||
|
|
||||||
export const changeTheme = (theme) => ({
|
export const changeTheme = (theme) => ({
|
||||||
type: CHANGE_THEME,
|
type: CHANGE_THEME,
|
||||||
payload: theme
|
payload: theme,
|
||||||
})
|
})
|
||||||
|
|
|
@ -6,7 +6,7 @@ import {
|
||||||
required,
|
required,
|
||||||
SimpleForm,
|
SimpleForm,
|
||||||
SelectInput,
|
SelectInput,
|
||||||
ReferenceInput
|
ReferenceInput,
|
||||||
} from 'react-admin'
|
} from 'react-admin'
|
||||||
import { Title } from '../common'
|
import { Title } from '../common'
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ const PlayerEdit = (props) => (
|
||||||
{ id: 192, name: '192' },
|
{ id: 192, name: '192' },
|
||||||
{ id: 256, name: '256' },
|
{ id: 256, name: '256' },
|
||||||
{ id: 320, name: '320' },
|
{ id: 320, name: '320' },
|
||||||
{ id: 0, name: 'Unlimited' }
|
{ id: 0, name: 'Unlimited' },
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
<TextField source="client" />
|
<TextField source="client" />
|
||||||
|
|
|
@ -5,7 +5,7 @@ import {
|
||||||
TextField,
|
TextField,
|
||||||
DateField,
|
DateField,
|
||||||
FunctionField,
|
FunctionField,
|
||||||
ReferenceField
|
ReferenceField,
|
||||||
} from 'react-admin'
|
} from 'react-admin'
|
||||||
import { useMediaQuery } from '@material-ui/core'
|
import { useMediaQuery } from '@material-ui/core'
|
||||||
import { SimpleList, Title } from '../common'
|
import { SimpleList, Title } from '../common'
|
||||||
|
@ -21,18 +21,18 @@ const PlayerList = (props) => {
|
||||||
tertiaryText={(r) => (r.maxBitRate ? r.maxBitRate : 'Unlimited')}
|
tertiaryText={(r) => (r.maxBitRate ? r.maxBitRate : 'Unlimited')}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<Datagrid rowClick="edit">
|
<Datagrid rowClick="edit">
|
||||||
<TextField source="name" />
|
|
||||||
<ReferenceField source="transcodingId" reference="transcoding">
|
|
||||||
<TextField source="name" />
|
<TextField source="name" />
|
||||||
</ReferenceField>
|
<ReferenceField source="transcodingId" reference="transcoding">
|
||||||
<FunctionField
|
<TextField source="name" />
|
||||||
source="maxBitRate"
|
</ReferenceField>
|
||||||
render={(r) => (r.maxBitRate ? r.maxBitRate : 'Unlimited')}
|
<FunctionField
|
||||||
/>
|
source="maxBitRate"
|
||||||
<DateField source="lastSeen" showTime />
|
render={(r) => (r.maxBitRate ? r.maxBitRate : 'Unlimited')}
|
||||||
</Datagrid>
|
/>
|
||||||
)}
|
<DateField source="lastSeen" showTime />
|
||||||
|
</Datagrid>
|
||||||
|
)}
|
||||||
</List>
|
</List>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,5 +5,5 @@ import PlayerEdit from './PlayerEdit'
|
||||||
export default {
|
export default {
|
||||||
list: PlayerList,
|
list: PlayerList,
|
||||||
edit: PlayerEdit,
|
edit: PlayerEdit,
|
||||||
icon: RadioIcon
|
icon: RadioIcon,
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ import {
|
||||||
Button,
|
Button,
|
||||||
useDataProvider,
|
useDataProvider,
|
||||||
useTranslate,
|
useTranslate,
|
||||||
useUnselectAll
|
useUnselectAll,
|
||||||
} from 'react-admin'
|
} from 'react-admin'
|
||||||
import { useDispatch } from 'react-redux'
|
import { useDispatch } from 'react-redux'
|
||||||
import { addTrack } from '../audioplayer'
|
import { addTrack } from '../audioplayer'
|
||||||
|
|
|
@ -11,5 +11,5 @@ export const AlbumLinkField = (props) => (
|
||||||
)
|
)
|
||||||
|
|
||||||
AlbumLinkField.defaultProps = {
|
AlbumLinkField.defaultProps = {
|
||||||
addLabel: true
|
addLabel: true,
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ import {
|
||||||
List,
|
List,
|
||||||
NumberField,
|
NumberField,
|
||||||
SearchInput,
|
SearchInput,
|
||||||
TextField
|
TextField,
|
||||||
} from 'react-admin'
|
} from 'react-admin'
|
||||||
import { useMediaQuery } from '@material-ui/core'
|
import { useMediaQuery } from '@material-ui/core'
|
||||||
import {
|
import {
|
||||||
|
@ -14,7 +14,7 @@ import {
|
||||||
Pagination,
|
Pagination,
|
||||||
PlayButton,
|
PlayButton,
|
||||||
SimpleList,
|
SimpleList,
|
||||||
Title
|
Title,
|
||||||
} from '../common'
|
} from '../common'
|
||||||
import { useDispatch } from 'react-redux'
|
import { useDispatch } from 'react-redux'
|
||||||
import { addTrack, setTrack } from '../audioplayer'
|
import { addTrack, setTrack } from '../audioplayer'
|
||||||
|
|
|
@ -3,5 +3,5 @@ import SongList from './SongList'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
list: SongList,
|
list: SongList,
|
||||||
icon: MusicNoteIcon
|
icon: MusicNoteIcon,
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,12 +10,12 @@ export default ({
|
||||||
authProvider,
|
authProvider,
|
||||||
dataProvider,
|
dataProvider,
|
||||||
history,
|
history,
|
||||||
customReducers = {}
|
customReducers = {},
|
||||||
}) => {
|
}) => {
|
||||||
const reducer = combineReducers({
|
const reducer = combineReducers({
|
||||||
admin: adminReducer,
|
admin: adminReducer,
|
||||||
router: connectRouter(history),
|
router: connectRouter(history),
|
||||||
...customReducers
|
...customReducers,
|
||||||
})
|
})
|
||||||
const resettableAppReducer = (state, action) =>
|
const resettableAppReducer = (state, action) =>
|
||||||
reducer(action.type !== USER_LOGOUT ? state : undefined, action)
|
reducer(action.type !== USER_LOGOUT ? state : undefined, action)
|
||||||
|
@ -31,7 +31,7 @@ export default ({
|
||||||
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ &&
|
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ &&
|
||||||
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
|
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
|
||||||
trace: true,
|
trace: true,
|
||||||
traceLimit: 25
|
traceLimit: 25,
|
||||||
})) ||
|
})) ||
|
||||||
compose
|
compose
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ export default ({
|
||||||
saveState({
|
saveState({
|
||||||
theme: state.theme,
|
theme: state.theme,
|
||||||
queue: state.queue,
|
queue: state.queue,
|
||||||
albumView: state.albumView
|
albumView: state.albumView,
|
||||||
})
|
})
|
||||||
}),
|
}),
|
||||||
1000
|
1000
|
||||||
|
|
|
@ -4,19 +4,19 @@ export default {
|
||||||
themeName: 'Dark (default)',
|
themeName: 'Dark (default)',
|
||||||
palette: {
|
palette: {
|
||||||
primary: {
|
primary: {
|
||||||
main: '#90caf9'
|
main: '#90caf9',
|
||||||
},
|
},
|
||||||
secondary: blue,
|
secondary: blue,
|
||||||
type: 'dark'
|
type: 'dark',
|
||||||
},
|
},
|
||||||
overrides: {
|
overrides: {
|
||||||
MuiFormGroup: {
|
MuiFormGroup: {
|
||||||
root: {
|
root: {
|
||||||
color: 'white'
|
color: 'white',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
player: {
|
player: {
|
||||||
theme: 'dark'
|
theme: 'dark',
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,20 +5,20 @@ export default {
|
||||||
light: '#5f5fc4',
|
light: '#5f5fc4',
|
||||||
dark: '#001064',
|
dark: '#001064',
|
||||||
main: '#283593',
|
main: '#283593',
|
||||||
contrastText: '#fff'
|
contrastText: '#fff',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
overrides: {
|
overrides: {
|
||||||
MuiFilledInput: {
|
MuiFilledInput: {
|
||||||
root: {
|
root: {
|
||||||
backgroundColor: 'rgba(0, 0, 0, 0.04)',
|
backgroundColor: 'rgba(0, 0, 0, 0.04)',
|
||||||
'&$disabled': {
|
'&$disabled': {
|
||||||
backgroundColor: 'rgba(0, 0, 0, 0.04)'
|
backgroundColor: 'rgba(0, 0, 0, 0.04)',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
player: {
|
player: {
|
||||||
theme: 'light'
|
theme: 'light',
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import {
|
||||||
SelectInput,
|
SelectInput,
|
||||||
Create,
|
Create,
|
||||||
required,
|
required,
|
||||||
SimpleForm
|
SimpleForm,
|
||||||
} from 'react-admin'
|
} from 'react-admin'
|
||||||
import { Title } from '../common'
|
import { Title } from '../common'
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ const TranscodingCreate = (props) => (
|
||||||
{ id: 160, name: '160' },
|
{ id: 160, name: '160' },
|
||||||
{ id: 192, name: '192' },
|
{ id: 192, name: '192' },
|
||||||
{ id: 256, name: '256' },
|
{ id: 256, name: '256' },
|
||||||
{ id: 320, name: '320' }
|
{ id: 320, name: '320' },
|
||||||
]}
|
]}
|
||||||
defaultValue={192}
|
defaultValue={192}
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -24,7 +24,7 @@ const TranscodingEdit = (props) => (
|
||||||
{ id: 160, name: '160' },
|
{ id: 160, name: '160' },
|
||||||
{ id: 192, name: '192' },
|
{ id: 192, name: '192' },
|
||||||
{ id: 256, name: '256' },
|
{ id: 256, name: '256' },
|
||||||
{ id: 320, name: '320' }
|
{ id: 320, name: '320' },
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
<TextInput source="command" fullWidth validate={[required()]} />
|
<TextInput source="command" fullWidth validate={[required()]} />
|
||||||
|
|
|
@ -6,7 +6,11 @@ import { SimpleList, Title } from '../common'
|
||||||
const TranscodingList = (props) => {
|
const TranscodingList = (props) => {
|
||||||
const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs'))
|
const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs'))
|
||||||
return (
|
return (
|
||||||
<List title={<Title subTitle={'Transcodings'} />} exporter={false} {...props}>
|
<List
|
||||||
|
title={<Title subTitle={'Transcodings'} />}
|
||||||
|
exporter={false}
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
{isXsmall ? (
|
{isXsmall ? (
|
||||||
<SimpleList
|
<SimpleList
|
||||||
primaryText={(r) => r.name}
|
primaryText={(r) => r.name}
|
||||||
|
@ -14,13 +18,13 @@ const TranscodingList = (props) => {
|
||||||
tertiaryText={(r) => r.defaultBitRate}
|
tertiaryText={(r) => r.defaultBitRate}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<Datagrid rowClick="edit">
|
<Datagrid rowClick="edit">
|
||||||
<TextField source="name" />
|
<TextField source="name" />
|
||||||
<TextField source="targetFormat" />
|
<TextField source="targetFormat" />
|
||||||
<TextField source="defaultBitRate" />
|
<TextField source="defaultBitRate" />
|
||||||
<TextField source="command" />
|
<TextField source="command" />
|
||||||
</Datagrid>
|
</Datagrid>
|
||||||
)}
|
)}
|
||||||
</List>
|
</List>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,5 +7,5 @@ export default {
|
||||||
list: TranscodingList,
|
list: TranscodingList,
|
||||||
edit: TranscodingEdit,
|
edit: TranscodingEdit,
|
||||||
create: TranscodingCreate,
|
create: TranscodingCreate,
|
||||||
icon: TransformIcon
|
icon: TransformIcon,
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ import {
|
||||||
PasswordInput,
|
PasswordInput,
|
||||||
required,
|
required,
|
||||||
email,
|
email,
|
||||||
SimpleForm
|
SimpleForm,
|
||||||
} from 'react-admin'
|
} from 'react-admin'
|
||||||
import { Title } from '../common'
|
import { Title } from '../common'
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ import {
|
||||||
Edit,
|
Edit,
|
||||||
required,
|
required,
|
||||||
email,
|
email,
|
||||||
SimpleForm
|
SimpleForm,
|
||||||
} from 'react-admin'
|
} from 'react-admin'
|
||||||
import { Title } from '../common'
|
import { Title } from '../common'
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ import {
|
||||||
List,
|
List,
|
||||||
SearchInput,
|
SearchInput,
|
||||||
SimpleList,
|
SimpleList,
|
||||||
TextField
|
TextField,
|
||||||
} from 'react-admin'
|
} from 'react-admin'
|
||||||
import { useMediaQuery } from '@material-ui/core'
|
import { useMediaQuery } from '@material-ui/core'
|
||||||
import { Title } from '../common'
|
import { Title } from '../common'
|
||||||
|
|
|
@ -7,5 +7,5 @@ export default {
|
||||||
list: UserList,
|
list: UserList,
|
||||||
edit: UserEdit,
|
edit: UserEdit,
|
||||||
create: UserCreate,
|
create: UserCreate,
|
||||||
icon: Group
|
icon: Group,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue