🔧 chore(spicetify): update
This commit is contained in:
parent
85b9b1733d
commit
16bcf8f84b
11 changed files with 566 additions and 14755 deletions
|
@ -95,6 +95,23 @@ var library = (() => {
|
||||||
getCollection(uri) {
|
getCollection(uri) {
|
||||||
return this._collections.find((collection) => collection.uri === uri);
|
return this._collections.find((collection) => collection.uri === uri);
|
||||||
}
|
}
|
||||||
|
async getLocalAlbums() {
|
||||||
|
const localAlbumsIntegration = window.localTracksService;
|
||||||
|
if (!localAlbumsIntegration)
|
||||||
|
return /* @__PURE__ */ new Map();
|
||||||
|
if (!localAlbumsIntegration.isReady) {
|
||||||
|
await new Promise((resolve) => {
|
||||||
|
const sub = localAlbumsIntegration.isReady$.subscribe((ready) => {
|
||||||
|
if (ready) {
|
||||||
|
resolve(true);
|
||||||
|
sub.unsubscribe();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
localAlbumsIntegration.init();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return localAlbumsIntegration.getAlbums();
|
||||||
|
}
|
||||||
async getCollectionContents(uri) {
|
async getCollectionContents(uri) {
|
||||||
const collection = this.getCollection(uri);
|
const collection = this.getCollection(uri);
|
||||||
if (!collection)
|
if (!collection)
|
||||||
|
@ -106,6 +123,12 @@ var library = (() => {
|
||||||
limit: 9999
|
limit: 9999
|
||||||
});
|
});
|
||||||
items.push(...albums.items.filter((album) => collection.items.includes(album.uri)));
|
items.push(...albums.items.filter((album) => collection.items.includes(album.uri)));
|
||||||
|
const localAlbumUris = collection.items.filter((item) => item.includes("local"));
|
||||||
|
if (localAlbumUris.length > 0) {
|
||||||
|
const localAlbums = await this.getLocalAlbums();
|
||||||
|
const inCollection = localAlbumUris.map((uri2) => localAlbums.get(uri2));
|
||||||
|
items.push(...inCollection.filter(Boolean));
|
||||||
|
}
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
async getContents(props) {
|
async getContents(props) {
|
||||||
|
@ -123,10 +146,18 @@ var library = (() => {
|
||||||
for (const collection of this._collections) {
|
for (const collection of this._collections) {
|
||||||
const boolArray = await Spicetify.Platform.LibraryAPI.contains(...collection.items);
|
const boolArray = await Spicetify.Platform.LibraryAPI.contains(...collection.items);
|
||||||
if (boolArray.includes(false)) {
|
if (boolArray.includes(false)) {
|
||||||
collection.items = collection.items.filter((_, i) => boolArray[i]);
|
const result = [];
|
||||||
this.saveCollections();
|
for (let i = 0; i < boolArray.length; i++) {
|
||||||
Spicetify.showNotification("Album removed from collection");
|
if (boolArray[i] || collection.items[i].includes("local")) {
|
||||||
this.syncCollection(collection.uri);
|
result.push(collection.items[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (result.length !== collection.items.length) {
|
||||||
|
collection.items = collection.items.filter((uri, i) => boolArray[i] || uri.includes("local"));
|
||||||
|
this.saveCollections();
|
||||||
|
Spicetify.showNotification("Album removed from collection");
|
||||||
|
this.syncCollection(collection.uri);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -146,6 +177,7 @@ var library = (() => {
|
||||||
await PlaylistAPI.add(collection.syncedPlaylistUri, wanted, { before: "end" });
|
await PlaylistAPI.add(collection.syncedPlaylistUri, wanted, { before: "end" });
|
||||||
if (unwanted.length)
|
if (unwanted.length)
|
||||||
await PlaylistAPI.remove(collection.syncedPlaylistUri, unwanted);
|
await PlaylistAPI.remove(collection.syncedPlaylistUri, unwanted);
|
||||||
|
Spicetify.showNotification("Playlist synced");
|
||||||
}
|
}
|
||||||
unsyncCollection(uri) {
|
unsyncCollection(uri) {
|
||||||
const collection = this.getCollection(uri);
|
const collection = this.getCollection(uri);
|
||||||
|
@ -153,6 +185,7 @@ var library = (() => {
|
||||||
return;
|
return;
|
||||||
collection.syncedPlaylistUri = void 0;
|
collection.syncedPlaylistUri = void 0;
|
||||||
this.saveCollections();
|
this.saveCollections();
|
||||||
|
Spicetify.showNotification("Collection unsynced");
|
||||||
}
|
}
|
||||||
async getTracklist(collectionUri) {
|
async getTracklist(collectionUri) {
|
||||||
const collection = this.getCollection(collectionUri);
|
const collection = this.getCollection(collectionUri);
|
||||||
|
@ -160,8 +193,17 @@ var library = (() => {
|
||||||
return [];
|
return [];
|
||||||
return Promise.all(
|
return Promise.all(
|
||||||
collection.items.map(async (uri) => {
|
collection.items.map(async (uri) => {
|
||||||
const album = await Spicetify.Platform.LibraryAPI.getAlbum(uri);
|
if (uri.includes("local")) {
|
||||||
return album.items.map((t) => t.uri);
|
const localAlbums = await this.getLocalAlbums();
|
||||||
|
const localAlbum = localAlbums.get(uri);
|
||||||
|
return localAlbum?.getTracks().map((t) => t.uri) || [];
|
||||||
|
}
|
||||||
|
const res = await Spicetify.GraphQL.Request(Spicetify.GraphQL.Definitions.queryAlbumTrackUris, {
|
||||||
|
offset: 0,
|
||||||
|
limit: 50,
|
||||||
|
uri
|
||||||
|
});
|
||||||
|
return res.data.albumUnion.tracksV2.items.map((t) => t.track.uri);
|
||||||
})
|
})
|
||||||
).then((tracks) => tracks.flat());
|
).then((tracks) => tracks.flat());
|
||||||
}
|
}
|
||||||
|
@ -190,7 +232,8 @@ var library = (() => {
|
||||||
Spicetify.GraphQL.Request(Spicetify.GraphQL.Definitions.queryArtistDiscographyAlbums, {
|
Spicetify.GraphQL.Request(Spicetify.GraphQL.Definitions.queryArtistDiscographyAlbums, {
|
||||||
uri: artistUri,
|
uri: artistUri,
|
||||||
offset: 0,
|
offset: 0,
|
||||||
limit: 50
|
limit: 50,
|
||||||
|
order: "DATE_DESC"
|
||||||
}),
|
}),
|
||||||
Spicetify.GraphQL.Request(Spicetify.GraphQL.Definitions.queryArtistOverview, {
|
Spicetify.GraphQL.Request(Spicetify.GraphQL.Definitions.queryArtistOverview, {
|
||||||
uri: artistUri,
|
uri: artistUri,
|
||||||
|
@ -237,7 +280,8 @@ var library = (() => {
|
||||||
if (!collection)
|
if (!collection)
|
||||||
return;
|
return;
|
||||||
for (const album of collection.items) {
|
for (const album of collection.items) {
|
||||||
Spicetify.Platform.LibraryAPI.remove({ uris: [album] });
|
if (!album.includes("local"))
|
||||||
|
Spicetify.Platform.LibraryAPI.remove({ uris: [album] });
|
||||||
}
|
}
|
||||||
this.deleteCollection(uri);
|
this.deleteCollection(uri);
|
||||||
}
|
}
|
||||||
|
@ -245,11 +289,20 @@ var library = (() => {
|
||||||
const collection = this.getCollection(collectionUri);
|
const collection = this.getCollection(collectionUri);
|
||||||
if (!collection)
|
if (!collection)
|
||||||
return;
|
return;
|
||||||
await Spicetify.Platform.LibraryAPI.add({ uris: [albumUri] });
|
if (!albumUri.includes("local")) {
|
||||||
collection.items.push(albumUri);
|
const isSaved = await Spicetify.Platform.LibraryAPI.contains(albumUri)[0];
|
||||||
this.saveCollections();
|
if (!isSaved) {
|
||||||
Spicetify.showNotification("Album added to collection");
|
await Spicetify.Platform.LibraryAPI.add({ uris: [albumUri] });
|
||||||
this.syncCollection(collectionUri);
|
}
|
||||||
|
}
|
||||||
|
if (!collection.items.includes(albumUri)) {
|
||||||
|
collection.items.push(albumUri);
|
||||||
|
this.saveCollections();
|
||||||
|
Spicetify.showNotification("Album added to collection");
|
||||||
|
this.syncCollection(collectionUri);
|
||||||
|
} else {
|
||||||
|
Spicetify.showNotification("Album already in collection");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
removeAlbumFromCollection(collectionUri, albumUri) {
|
removeAlbumFromCollection(collectionUri, albumUri) {
|
||||||
const collection = this.getCollection(collectionUri);
|
const collection = this.getCollection(collectionUri);
|
||||||
|
|
|
@ -98,20 +98,23 @@ var library = (() => {
|
||||||
};
|
};
|
||||||
var SliderInput = (props) => {
|
var SliderInput = (props) => {
|
||||||
const { Slider } = Spicetify.ReactComponent;
|
const { Slider } = Spicetify.ReactComponent;
|
||||||
const handleSliderChange = (newValue) => {
|
const [value, setValue] = import_react.default.useState((props.value - props.min) / (props.max - props.min));
|
||||||
|
const handleSliderChange = import_react.default.useCallback((newValue) => {
|
||||||
|
setValue(newValue);
|
||||||
const calculatedValue = props.min + newValue * (props.max - props.min);
|
const calculatedValue = props.min + newValue * (props.max - props.min);
|
||||||
props.callback(calculatedValue);
|
props.callback(calculatedValue);
|
||||||
};
|
}, [props]);
|
||||||
const value = (props.value - props.min) / (props.max - props.min);
|
const handleDragMove = import_react.default.useCallback((v) => {
|
||||||
|
console.log(v);
|
||||||
|
}, []);
|
||||||
return /* @__PURE__ */ import_react.default.createElement(Slider, {
|
return /* @__PURE__ */ import_react.default.createElement(Slider, {
|
||||||
id: `slider:${props.storageKey}`,
|
id: `slider:${props.storageKey}`,
|
||||||
value,
|
value,
|
||||||
min: 0,
|
min: 0,
|
||||||
max: 1,
|
max: 1,
|
||||||
step: 0.1,
|
step: 0.1,
|
||||||
onDragMove: (newValue) => handleSliderChange(newValue),
|
onDragMove: handleDragMove,
|
||||||
onDragStart: () => {
|
onDragStart: handleSliderChange,
|
||||||
},
|
|
||||||
onDragEnd: () => {
|
onDragEnd: () => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -311,7 +314,7 @@ var library = (() => {
|
||||||
// src/components/collapse_button.tsx
|
// src/components/collapse_button.tsx
|
||||||
var import_react4 = __toESM(require_react());
|
var import_react4 = __toESM(require_react());
|
||||||
var collapseLibrary = () => {
|
var collapseLibrary = () => {
|
||||||
Spicetify.Platform.LocalStorageAPI.setItem("ylx-sidebar-state", 1);
|
Spicetify.Platform.LocalStorageAPI.setItem("left-sidebar-state", 1);
|
||||||
};
|
};
|
||||||
var CollapseIcon = () => {
|
var CollapseIcon = () => {
|
||||||
const { IconComponent } = Spicetify.ReactComponent;
|
const { IconComponent } = Spicetify.ReactComponent;
|
||||||
|
@ -410,7 +413,7 @@ var library = (() => {
|
||||||
"data-encore-id": "icon",
|
"data-encore-id": "icon",
|
||||||
role: "img",
|
role: "img",
|
||||||
"aria-hidden": "true",
|
"aria-hidden": "true",
|
||||||
className: "Svg-sc-ytk21e-0 Svg-img-icon-small x-filterBox-searchIcon",
|
className: "Svg-sc-ytk21e-0 Svg-img-icon-small e-9640-icon x-filterBox-searchIcon",
|
||||||
viewBox: "0 0 16 16"
|
viewBox: "0 0 16 16"
|
||||||
}, /* @__PURE__ */ import_react7.default.createElement("path", {
|
}, /* @__PURE__ */ import_react7.default.createElement("path", {
|
||||||
d: "M7 1.75a5.25 5.25 0 1 0 0 10.5 5.25 5.25 0 0 0 0-10.5zM.25 7a6.75 6.75 0 1 1 12.096 4.12l3.184 3.185a.75.75 0 1 1-1.06 1.06L11.304 12.2A6.75 6.75 0 0 1 .25 7z"
|
d: "M7 1.75a5.25 5.25 0 1 0 0 10.5 5.25 5.25 0 0 0 0-10.5zM.25 7a6.75 6.75 0 1 1 12.096 4.12l3.184 3.185a.75.75 0 1 1-1.06 1.06L11.304 12.2A6.75 6.75 0 0 1 .25 7z"
|
||||||
|
@ -451,7 +454,7 @@ var library = (() => {
|
||||||
const [textFilter, setTextFilter] = import_react8.default.useState("");
|
const [textFilter, setTextFilter] = import_react8.default.useState("");
|
||||||
const [collections, setCollections] = import_react8.default.useState(null);
|
const [collections, setCollections] = import_react8.default.useState(null);
|
||||||
const context = import_react8.default.useContext(Spicetify.ContextMenuV2._context);
|
const context = import_react8.default.useContext(Spicetify.ContextMenuV2._context);
|
||||||
const uri = context?.props?.uri;
|
const uri = context?.props?.uri || context?.props?.id;
|
||||||
import_react8.default.useEffect(() => {
|
import_react8.default.useEffect(() => {
|
||||||
const fetchCollections = async () => {
|
const fetchCollections = async () => {
|
||||||
setCollections(await CollectionsWrapper.getContents({ textFilter, limit: 20, offset: 0 }));
|
setCollections(await CollectionsWrapper.getContents({ textFilter, limit: 20, offset: 0 }));
|
||||||
|
@ -598,6 +601,23 @@ var library = (() => {
|
||||||
getCollection(uri) {
|
getCollection(uri) {
|
||||||
return this._collections.find((collection) => collection.uri === uri);
|
return this._collections.find((collection) => collection.uri === uri);
|
||||||
}
|
}
|
||||||
|
async getLocalAlbums() {
|
||||||
|
const localAlbumsIntegration = window.localTracksService;
|
||||||
|
if (!localAlbumsIntegration)
|
||||||
|
return /* @__PURE__ */ new Map();
|
||||||
|
if (!localAlbumsIntegration.isReady) {
|
||||||
|
await new Promise((resolve) => {
|
||||||
|
const sub = localAlbumsIntegration.isReady$.subscribe((ready) => {
|
||||||
|
if (ready) {
|
||||||
|
resolve(true);
|
||||||
|
sub.unsubscribe();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
localAlbumsIntegration.init();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return localAlbumsIntegration.getAlbums();
|
||||||
|
}
|
||||||
async getCollectionContents(uri) {
|
async getCollectionContents(uri) {
|
||||||
const collection = this.getCollection(uri);
|
const collection = this.getCollection(uri);
|
||||||
if (!collection)
|
if (!collection)
|
||||||
|
@ -609,6 +629,12 @@ var library = (() => {
|
||||||
limit: 9999
|
limit: 9999
|
||||||
});
|
});
|
||||||
items.push(...albums.items.filter((album) => collection.items.includes(album.uri)));
|
items.push(...albums.items.filter((album) => collection.items.includes(album.uri)));
|
||||||
|
const localAlbumUris = collection.items.filter((item) => item.includes("local"));
|
||||||
|
if (localAlbumUris.length > 0) {
|
||||||
|
const localAlbums = await this.getLocalAlbums();
|
||||||
|
const inCollection = localAlbumUris.map((uri2) => localAlbums.get(uri2));
|
||||||
|
items.push(...inCollection.filter(Boolean));
|
||||||
|
}
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
async getContents(props) {
|
async getContents(props) {
|
||||||
|
@ -626,10 +652,18 @@ var library = (() => {
|
||||||
for (const collection of this._collections) {
|
for (const collection of this._collections) {
|
||||||
const boolArray = await Spicetify.Platform.LibraryAPI.contains(...collection.items);
|
const boolArray = await Spicetify.Platform.LibraryAPI.contains(...collection.items);
|
||||||
if (boolArray.includes(false)) {
|
if (boolArray.includes(false)) {
|
||||||
collection.items = collection.items.filter((_, i) => boolArray[i]);
|
const result = [];
|
||||||
this.saveCollections();
|
for (let i = 0; i < boolArray.length; i++) {
|
||||||
Spicetify.showNotification("Album removed from collection");
|
if (boolArray[i] || collection.items[i].includes("local")) {
|
||||||
this.syncCollection(collection.uri);
|
result.push(collection.items[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (result.length !== collection.items.length) {
|
||||||
|
collection.items = collection.items.filter((uri, i) => boolArray[i] || uri.includes("local"));
|
||||||
|
this.saveCollections();
|
||||||
|
Spicetify.showNotification("Album removed from collection");
|
||||||
|
this.syncCollection(collection.uri);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -649,6 +683,7 @@ var library = (() => {
|
||||||
await PlaylistAPI.add(collection.syncedPlaylistUri, wanted, { before: "end" });
|
await PlaylistAPI.add(collection.syncedPlaylistUri, wanted, { before: "end" });
|
||||||
if (unwanted.length)
|
if (unwanted.length)
|
||||||
await PlaylistAPI.remove(collection.syncedPlaylistUri, unwanted);
|
await PlaylistAPI.remove(collection.syncedPlaylistUri, unwanted);
|
||||||
|
Spicetify.showNotification("Playlist synced");
|
||||||
}
|
}
|
||||||
unsyncCollection(uri) {
|
unsyncCollection(uri) {
|
||||||
const collection = this.getCollection(uri);
|
const collection = this.getCollection(uri);
|
||||||
|
@ -656,6 +691,7 @@ var library = (() => {
|
||||||
return;
|
return;
|
||||||
collection.syncedPlaylistUri = void 0;
|
collection.syncedPlaylistUri = void 0;
|
||||||
this.saveCollections();
|
this.saveCollections();
|
||||||
|
Spicetify.showNotification("Collection unsynced");
|
||||||
}
|
}
|
||||||
async getTracklist(collectionUri) {
|
async getTracklist(collectionUri) {
|
||||||
const collection = this.getCollection(collectionUri);
|
const collection = this.getCollection(collectionUri);
|
||||||
|
@ -663,8 +699,17 @@ var library = (() => {
|
||||||
return [];
|
return [];
|
||||||
return Promise.all(
|
return Promise.all(
|
||||||
collection.items.map(async (uri) => {
|
collection.items.map(async (uri) => {
|
||||||
const album = await Spicetify.Platform.LibraryAPI.getAlbum(uri);
|
if (uri.includes("local")) {
|
||||||
return album.items.map((t) => t.uri);
|
const localAlbums = await this.getLocalAlbums();
|
||||||
|
const localAlbum = localAlbums.get(uri);
|
||||||
|
return localAlbum?.getTracks().map((t) => t.uri) || [];
|
||||||
|
}
|
||||||
|
const res = await Spicetify.GraphQL.Request(Spicetify.GraphQL.Definitions.queryAlbumTrackUris, {
|
||||||
|
offset: 0,
|
||||||
|
limit: 50,
|
||||||
|
uri
|
||||||
|
});
|
||||||
|
return res.data.albumUnion.tracksV2.items.map((t) => t.track.uri);
|
||||||
})
|
})
|
||||||
).then((tracks) => tracks.flat());
|
).then((tracks) => tracks.flat());
|
||||||
}
|
}
|
||||||
|
@ -693,7 +738,8 @@ var library = (() => {
|
||||||
Spicetify.GraphQL.Request(Spicetify.GraphQL.Definitions.queryArtistDiscographyAlbums, {
|
Spicetify.GraphQL.Request(Spicetify.GraphQL.Definitions.queryArtistDiscographyAlbums, {
|
||||||
uri: artistUri,
|
uri: artistUri,
|
||||||
offset: 0,
|
offset: 0,
|
||||||
limit: 50
|
limit: 50,
|
||||||
|
order: "DATE_DESC"
|
||||||
}),
|
}),
|
||||||
Spicetify.GraphQL.Request(Spicetify.GraphQL.Definitions.queryArtistOverview, {
|
Spicetify.GraphQL.Request(Spicetify.GraphQL.Definitions.queryArtistOverview, {
|
||||||
uri: artistUri,
|
uri: artistUri,
|
||||||
|
@ -740,7 +786,8 @@ var library = (() => {
|
||||||
if (!collection)
|
if (!collection)
|
||||||
return;
|
return;
|
||||||
for (const album of collection.items) {
|
for (const album of collection.items) {
|
||||||
Spicetify.Platform.LibraryAPI.remove({ uris: [album] });
|
if (!album.includes("local"))
|
||||||
|
Spicetify.Platform.LibraryAPI.remove({ uris: [album] });
|
||||||
}
|
}
|
||||||
this.deleteCollection(uri);
|
this.deleteCollection(uri);
|
||||||
}
|
}
|
||||||
|
@ -748,11 +795,20 @@ var library = (() => {
|
||||||
const collection = this.getCollection(collectionUri);
|
const collection = this.getCollection(collectionUri);
|
||||||
if (!collection)
|
if (!collection)
|
||||||
return;
|
return;
|
||||||
await Spicetify.Platform.LibraryAPI.add({ uris: [albumUri] });
|
if (!albumUri.includes("local")) {
|
||||||
collection.items.push(albumUri);
|
const isSaved = await Spicetify.Platform.LibraryAPI.contains(albumUri)[0];
|
||||||
this.saveCollections();
|
if (!isSaved) {
|
||||||
Spicetify.showNotification("Album added to collection");
|
await Spicetify.Platform.LibraryAPI.add({ uris: [albumUri] });
|
||||||
this.syncCollection(collectionUri);
|
}
|
||||||
|
}
|
||||||
|
if (!collection.items.includes(albumUri)) {
|
||||||
|
collection.items.push(albumUri);
|
||||||
|
this.saveCollections();
|
||||||
|
Spicetify.showNotification("Album added to collection");
|
||||||
|
this.syncCollection(collectionUri);
|
||||||
|
} else {
|
||||||
|
Spicetify.showNotification("Album already in collection");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
removeAlbumFromCollection(collectionUri, albumUri) {
|
removeAlbumFromCollection(collectionUri, albumUri) {
|
||||||
const collection = this.getCollection(collectionUri);
|
const collection = this.getCollection(collectionUri);
|
||||||
|
@ -851,19 +907,6 @@ var library = (() => {
|
||||||
className: "main-image-image x-entityImage-image main-image-loading main-image-loaded"
|
className: "main-image-image x-entityImage-image main-image-loading main-image-loaded"
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
var FolderPlaceholder = () => {
|
|
||||||
return /* @__PURE__ */ import_react10.default.createElement("div", {
|
|
||||||
className: "x-entityImage-imagePlaceholder"
|
|
||||||
}, /* @__PURE__ */ import_react10.default.createElement("svg", {
|
|
||||||
"data-encore-id": "icon",
|
|
||||||
role: "img",
|
|
||||||
"aria-hidden": "true",
|
|
||||||
className: "Svg-sc-ytk21e-0 Svg-img-icon-medium",
|
|
||||||
viewBox: "0 0 24 24"
|
|
||||||
}, /* @__PURE__ */ import_react10.default.createElement("path", {
|
|
||||||
d: "M1 4a2 2 0 0 1 2-2h5.155a3 3 0 0 1 2.598 1.5l.866 1.5H21a2 2 0 0 1 2 2v13a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V4zm7.155 0H3v16h18V7H10.464L9.021 4.5a1 1 0 0 0-.866-.5z"
|
|
||||||
})));
|
|
||||||
};
|
|
||||||
var SpicetifyLibrary = class {
|
var SpicetifyLibrary = class {
|
||||||
ConfigWrapper = new config_wrapper_default(
|
ConfigWrapper = new config_wrapper_default(
|
||||||
[
|
[
|
||||||
|
@ -884,6 +927,21 @@ var library = (() => {
|
||||||
def: false,
|
def: false,
|
||||||
callback: setSearchBarSize
|
callback: setSearchBarSize
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "Add Local Albums Integration",
|
||||||
|
key: "localAlbums",
|
||||||
|
type: "toggle",
|
||||||
|
def: true,
|
||||||
|
desc: "You need to install the better-local-files app for this to work."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Hide 'Your Library' Button",
|
||||||
|
key: "hideLibraryButton",
|
||||||
|
type: "toggle",
|
||||||
|
def: false,
|
||||||
|
desc: "This is experimental and may break the sidebar layout in some cases. Requires a spotify restart to take effect.",
|
||||||
|
sectionHeader: "Left Sidebar"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "Playlists Page",
|
name: "Playlists Page",
|
||||||
key: "show-playlists",
|
key: "show-playlists",
|
||||||
|
@ -909,7 +967,7 @@ var library = (() => {
|
||||||
main(LocalStorageAPI);
|
main(LocalStorageAPI);
|
||||||
})();
|
})();
|
||||||
function main(LocalStorageAPI) {
|
function main(LocalStorageAPI) {
|
||||||
const isAlbum = (props) => props.uri?.includes("album");
|
const isAlbum = (props) => props.uri?.includes("album") || props.id?.includes("local");
|
||||||
const isArtist = (props) => props.uri?.includes("artist");
|
const isArtist = (props) => props.uri?.includes("artist");
|
||||||
Spicetify.ContextMenuV2.registerItem(/* @__PURE__ */ import_react10.default.createElement(album_menu_item_default, null), isAlbum);
|
Spicetify.ContextMenuV2.registerItem(/* @__PURE__ */ import_react10.default.createElement(album_menu_item_default, null), isAlbum);
|
||||||
Spicetify.ContextMenuV2.registerItem(/* @__PURE__ */ import_react10.default.createElement(artist_menu_item_default, null), isArtist);
|
Spicetify.ContextMenuV2.registerItem(/* @__PURE__ */ import_react10.default.createElement(artist_menu_item_default, null), isArtist);
|
||||||
|
@ -926,9 +984,7 @@ var library = (() => {
|
||||||
if (!imageBox)
|
if (!imageBox)
|
||||||
return;
|
return;
|
||||||
const imageUrl = FolderImageWrapper.getFolderImage(uri);
|
const imageUrl = FolderImageWrapper.getFolderImage(uri);
|
||||||
if (!imageUrl)
|
if (imageUrl)
|
||||||
import_react_dom.default.render(/* @__PURE__ */ import_react10.default.createElement(FolderPlaceholder, null), imageBox);
|
|
||||||
else
|
|
||||||
import_react_dom.default.render(/* @__PURE__ */ import_react10.default.createElement(FolderImage, {
|
import_react_dom.default.render(/* @__PURE__ */ import_react10.default.createElement(FolderImage, {
|
||||||
url: imageUrl
|
url: imageUrl
|
||||||
}), imageBox);
|
}), imageBox);
|
||||||
|
@ -939,7 +995,7 @@ var library = (() => {
|
||||||
injectFolderImages();
|
injectFolderImages();
|
||||||
FolderImageWrapper.addEventListener("update", injectFolderImages);
|
FolderImageWrapper.addEventListener("update", injectFolderImages);
|
||||||
function injectYLXButtons() {
|
function injectYLXButtons() {
|
||||||
const ylx_filter = document.querySelector(".main-yourLibraryX-libraryRootlist > .main-yourLibraryX-libraryFilter");
|
const ylx_filter = document.querySelector(".main-yourLibraryX-libraryRootlist .main-yourLibraryX-libraryFilter");
|
||||||
if (!ylx_filter) {
|
if (!ylx_filter) {
|
||||||
return setTimeout(injectYLXButtons, 100);
|
return setTimeout(injectYLXButtons, 100);
|
||||||
}
|
}
|
||||||
|
@ -956,24 +1012,22 @@ var library = (() => {
|
||||||
const collapseButton = document.createElement("span");
|
const collapseButton = document.createElement("span");
|
||||||
collapseButton.classList.add("collapse-button");
|
collapseButton.classList.add("collapse-button");
|
||||||
ylx_filter.appendChild(collapseButton);
|
ylx_filter.appendChild(collapseButton);
|
||||||
import_react_dom.default.render(
|
import_react_dom.default.render(/* @__PURE__ */ import_react10.default.createElement(collapse_button_default, null), collapseButton);
|
||||||
/* @__PURE__ */ import_react10.default.createElement(Spicetify.ReactComponent.TooltipWrapper, {
|
|
||||||
label: "Collapse Sidebar",
|
|
||||||
placement: "top"
|
|
||||||
}, /* @__PURE__ */ import_react10.default.createElement(collapse_button_default, null)),
|
|
||||||
collapseButton
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
const state = LocalStorageAPI.getItem("ylx-sidebar-state");
|
if (!window.SpicetifyLibrary.ConfigWrapper.Config.hideLibraryButton) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
document.body.classList.add("hide-library-button");
|
||||||
|
const state = LocalStorageAPI.getItem("left-sidebar-state");
|
||||||
if (state === 0)
|
if (state === 0)
|
||||||
injectYLXButtons();
|
injectYLXButtons();
|
||||||
LocalStorageAPI.getEvents()._emitter.addListener("update", (e) => {
|
LocalStorageAPI.getEvents()._emitter.addListener("update", (e) => {
|
||||||
const { key, value } = e.data;
|
const { key, value } = e.data;
|
||||||
if (key === "ylx-sidebar-state" && value === 0) {
|
if (key === "left-sidebar-state" && value === 0) {
|
||||||
injectFolderImages();
|
injectFolderImages();
|
||||||
injectYLXButtons();
|
injectYLXButtons();
|
||||||
}
|
}
|
||||||
if (key === "ylx-sidebar-state" && value === 1) {
|
if (key === "left-sidebar-state" && value === 1) {
|
||||||
injectFolderImages();
|
injectFolderImages();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,4 @@
|
||||||
/* ../../../AppData/Local/Temp/tmp-4464-wbZ6O1BKhuot/19178f16f304/navBar.module.css */
|
/* ../../../AppData/Local/Temp/tmp-11620-eM0deEIwPFIq/1961479c6904/navBar.module.css */
|
||||||
.navBar-module__topBarHeaderItem___piw4C_library {
|
.navBar-module__topBarHeaderItem___piw4C_library {
|
||||||
-webkit-app-region: no-drag;
|
-webkit-app-region: no-drag;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
@ -46,7 +46,7 @@ div.navBar-module__topBarHeaderItemLink___xA4uv_library {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ../../../AppData/Local/Temp/tmp-4464-wbZ6O1BKhuot/19178f16dc80/app.css */
|
/* ../../../AppData/Local/Temp/tmp-11620-eM0deEIwPFIq/1961479c4ec0/app.css */
|
||||||
:root {
|
:root {
|
||||||
--library-card-size: 180px;
|
--library-card-size: 180px;
|
||||||
--library-searchbar-size: 200px;
|
--library-searchbar-size: 200px;
|
||||||
|
@ -79,6 +79,10 @@ div.navBar-module__topBarHeaderItemLink___xA4uv_library {
|
||||||
#library-app .load-more-card:hover {
|
#library-app .load-more-card:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
#library-app .x-filterBox-searchIcon {
|
||||||
|
--encore-icon-height: var(--encore-graphic-size-decorative-smaller);
|
||||||
|
--encore-icon-width: var(--encore-graphic-size-decorative-smaller);
|
||||||
|
}
|
||||||
.text-input-form {
|
.text-input-form {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
@ -104,25 +108,27 @@ div.navBar-module__topBarHeaderItemLink___xA4uv_library {
|
||||||
align-self: end;
|
align-self: end;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ../../../AppData/Local/Temp/tmp-4464-wbZ6O1BKhuot/19178f16ee21/external.css */
|
/* ../../../AppData/Local/Temp/tmp-11620-eM0deEIwPFIq/1961479c6341/external.css */
|
||||||
body:not(.show-ylx-filters) .main-yourLibraryX-filterArea:not(:has(> .main-yourLibraryX-libraryFilter)),
|
body.hide-library-button:not(.show-ylx-filters) .main-yourLibraryX-filterArea:not(:has(> .main-yourLibraryX-libraryFilter)),
|
||||||
.main-yourLibraryX-header:not(:has(> .main-yourLibraryX-headerContent > .main-yourLibraryX-collapseButton > button:nth-child(2))),
|
body.hide-library-button .main-yourLibraryX-header:not(:has(> .main-yourLibraryX-headerContent > .main-yourLibraryX-collapseButton > button:nth-child(2))),
|
||||||
.main-yourLibraryX-collapseButton > button:first-child,
|
body.hide-library-button .main-yourLibraryX-collapseButton > button:first-child,
|
||||||
.main-yourLibraryX-headerContent > button {
|
body.hide-library-button .main-yourLibraryX-headerContent > button {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.main-yourLibraryX-library {
|
body.hide-library-button .main-yourLibraryX-library {
|
||||||
padding-top: 8px;
|
padding-top: 8px;
|
||||||
}
|
}
|
||||||
.main-yourLibraryX-header {
|
body.hide-library-button .main-yourLibraryX-header {
|
||||||
margin-top: -8px;
|
margin-top: -8px;
|
||||||
}
|
}
|
||||||
.main-yourLibraryX-libraryFilter .main-yourLibraryX-librarySortWrapper button span:first-child,
|
body.hide-library-button .main-yourLibraryX-libraryFilter {
|
||||||
.main-yourLibraryX-libraryFilter span[role=presentation] span[role=presentation] button span:first-child {
|
--encore-spacing-base: 8px;
|
||||||
|
}
|
||||||
|
body.hide-library-button .main-yourLibraryX-libraryFilter span[role=presentation] button span:first-child,
|
||||||
|
body.hide-library-button .main-yourLibraryX-libraryFilter span[role=presentation] button span:first-child {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.main-yourLibraryX-libraryFilter .main-yourLibraryX-librarySortWrapper,
|
body.hide-library-button .main-yourLibraryX-libraryFilter span[role=presentation] {
|
||||||
.main-yourLibraryX-libraryFilter span[role=presentation] {
|
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
}
|
}
|
||||||
.toggle-filters-button > button:after,
|
.toggle-filters-button > button:after,
|
||||||
|
@ -236,7 +242,7 @@ li.main-yourLibraryX-navItem[data-id="/library"] > a {
|
||||||
transform: scale(1.04);
|
transform: scale(1.04);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ../../../AppData/Local/Temp/tmp-4464-wbZ6O1BKhuot/19178f16f0a2/config_modal.css */
|
/* ../../../AppData/Local/Temp/tmp-11620-eM0deEIwPFIq/1961479c6612/config_modal.css */
|
||||||
.config-container {
|
.config-container {
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -313,7 +319,7 @@ li.main-yourLibraryX-navItem[data-id="/library"] > a {
|
||||||
width: 200px;
|
width: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ../../../AppData/Local/Temp/tmp-4464-wbZ6O1BKhuot/19178f16f163/shared.css */
|
/* ../../../AppData/Local/Temp/tmp-11620-eM0deEIwPFIq/1961479c6713/shared.css */
|
||||||
.grid {
|
.grid {
|
||||||
--grid-gap: 24px;
|
--grid-gap: 24px;
|
||||||
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)) !important;
|
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)) !important;
|
||||||
|
@ -377,3 +383,10 @@ li.main-yourLibraryX-navItem[data-id="/library"] > a {
|
||||||
margin: 0 24px;
|
margin: 0 24px;
|
||||||
border: 0px;
|
border: 0px;
|
||||||
}
|
}
|
||||||
|
.x-sortBox-sortDropdown {
|
||||||
|
fill: rgba(var(--spice-rgb-selected-row), 0.7);
|
||||||
|
}
|
||||||
|
#stats-app > :first-child,
|
||||||
|
#library-app > :first-child {
|
||||||
|
margin-top: 64px;
|
||||||
|
}
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
(async function() {
|
|
||||||
while (!Spicetify.React || !Spicetify.ReactDOM) {
|
|
||||||
await new Promise(resolve => setTimeout(resolve, 10));
|
|
||||||
}
|
|
||||||
"use strict";
|
|
||||||
var stats = (() => {
|
|
||||||
var __defProp = Object.defineProperty;
|
|
||||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
||||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
||||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
||||||
var __export = (target, all) => {
|
|
||||||
for (var name in all)
|
|
||||||
__defProp(target, name, { get: all[name], enumerable: true });
|
|
||||||
};
|
|
||||||
var __copyProps = (to, from, except, desc) => {
|
|
||||||
if (from && typeof from === "object" || typeof from === "function") {
|
|
||||||
for (let key of __getOwnPropNames(from))
|
|
||||||
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
||||||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
||||||
}
|
|
||||||
return to;
|
|
||||||
};
|
|
||||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
||||||
|
|
||||||
// src/extensions/cache.ts
|
|
||||||
var cache_exports = {};
|
|
||||||
__export(cache_exports, {
|
|
||||||
cacher: () => cacher,
|
|
||||||
invalidator: () => invalidator
|
|
||||||
});
|
|
||||||
var cache = {};
|
|
||||||
var set = (key, value) => {
|
|
||||||
cache[key] = value;
|
|
||||||
};
|
|
||||||
var invalidate = (key) => {
|
|
||||||
delete cache[key];
|
|
||||||
};
|
|
||||||
var cacher = (cb) => {
|
|
||||||
return async ({ queryKey }) => {
|
|
||||||
const key = queryKey.join("-");
|
|
||||||
if (cache[key])
|
|
||||||
return cache[key];
|
|
||||||
const result = await cb();
|
|
||||||
set(key, result);
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
var invalidator = (queryKey, refetch) => {
|
|
||||||
invalidate(queryKey.join("-"));
|
|
||||||
refetch();
|
|
||||||
};
|
|
||||||
return __toCommonJS(cache_exports);
|
|
||||||
})();
|
|
||||||
|
|
||||||
})();
|
|
|
@ -1,76 +0,0 @@
|
||||||
/* ../../../AppData/Local/Temp/tmp-15744-866d0PjWRxih/18d53b11b111/config_modal.css */
|
|
||||||
#config-container {
|
|
||||||
gap: 10px;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
#config-container .section-header {
|
|
||||||
box-sizing: border-box;
|
|
||||||
-webkit-tap-highlight-color: transparent;
|
|
||||||
margin-block: 0px;
|
|
||||||
font-size: 1.125rem;
|
|
||||||
font-weight: 700;
|
|
||||||
color: var(--spice-text);
|
|
||||||
}
|
|
||||||
#config-container .col.description {
|
|
||||||
box-sizing: border-box;
|
|
||||||
-webkit-tap-highlight-color: transparent;
|
|
||||||
margin-block: 0px;
|
|
||||||
font-size: 0.875rem;
|
|
||||||
font-weight: 400;
|
|
||||||
color: var(--spice-subtext);
|
|
||||||
}
|
|
||||||
#config-container .disabled {
|
|
||||||
opacity: 0;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
#config-container .text-input {
|
|
||||||
background: rgba(var(--spice-rgb-selected-row), 0.1);
|
|
||||||
border: 1px solid transparent;
|
|
||||||
border-radius: 4px;
|
|
||||||
color: var(--spice-text);
|
|
||||||
font-family: inherit;
|
|
||||||
font-size: 14px;
|
|
||||||
height: 32px;
|
|
||||||
padding: 0 12px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
#config-container .text-input:focus {
|
|
||||||
background-color: var(--spice-tab-active);
|
|
||||||
border: 1px solid var(--spice-button-disabled);
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
#config-container .dropdown-input {
|
|
||||||
background-color: var(--spice-tab-active);
|
|
||||||
border: 0;
|
|
||||||
border-radius: 4px;
|
|
||||||
color: rgba(var(--spice-rgb-selected-row), 0.7);
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 400;
|
|
||||||
height: 32px;
|
|
||||||
letter-spacing: 0.24px;
|
|
||||||
line-height: 20px;
|
|
||||||
padding: 0 32px 0 12px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
#config-container .tooltip-icon {
|
|
||||||
float: right;
|
|
||||||
margin-left: 10px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
height: 22px;
|
|
||||||
fill: var(--spice-subtext);
|
|
||||||
}
|
|
||||||
#config-container .tooltip-icon:hover {
|
|
||||||
fill: var(--spice-text);
|
|
||||||
}
|
|
||||||
#config-container .tooltip {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#config-container .setting-row {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
#config-container .playback-progressbar {
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,10 +0,0 @@
|
||||||
{
|
|
||||||
"name": "Statistics",
|
|
||||||
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\"\r\n\t width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" style=\"fill:currentColor\" >\r\n<path d=\"M3,23L3,23c-0.55,0-1-0.45-1-1v-9c0-0.55,0.45-1,1-1h0c0.55,0,1,0.45,1,1v9C4,22.55,3.55,23,3,23z\"/>\r\n<path d=\"M9,23L9,23c-0.55,0-1-0.45-1-1V9c0-0.55,0.45-1,1-1h0c0.55,0,1,0.45,1,1v13C10,22.55,9.55,23,9,23z\"/>\r\n<path d=\"M15,23L15,23c-0.55,0-1-0.45-1-1V11c0-0.55,0.45-1,1-1h0c0.55,0,1,0.45,1,1v11C16,22.55,15.55,23,15,23z\"/>\r\n<path d=\"M21,23L21,23c-0.55,0-1-0.45-1-1V8c0-0.55,0.45-1,1-1h0c0.55,0,1,0.45,1,1v14C22,22.55,21.55,23,21,23z\"/>\r\n<path d=\"M22.86,1.5c-0.28-0.48-0.89-0.64-1.37-0.37l-6.54,3.74l-6-2.33C8.52,2.38,8.22,2.41,7.88,2.73L1.29,7.71\r\n\tC0.86,8.05,0.8,8.68,1.15,9.11s0.98,0.49,1.41,0.14l6.2-4.65l5.69,2.2C15,6.99,15.3,6.96,15.83,6.68l6.67-3.82\r\n\tC22.98,2.59,23.14,1.97,22.86,1.5z\"/>\r\n</svg>\r\n",
|
|
||||||
"active-icon": "<svg xmlns=\"http://www.w3.org/2000/svg\"\r\n\t width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" style=\"fill:currentColor\" >\r\n<path d=\"M3,23L3,23c-0.55,0-1-0.45-1-1v-9c0-0.55,0.45-1,1-1h0c0.55,0,1,0.45,1,1v9C4,22.55,3.55,23,3,23z\"/>\r\n<path d=\"M9,23L9,23c-0.55,0-1-0.45-1-1V9c0-0.55,0.45-1,1-1h0c0.55,0,1,0.45,1,1v13C10,22.55,9.55,23,9,23z\"/>\r\n<path d=\"M15,23L15,23c-0.55,0-1-0.45-1-1V11c0-0.55,0.45-1,1-1h0c0.55,0,1,0.45,1,1v11C16,22.55,15.55,23,15,23z\"/>\r\n<path d=\"M21,23L21,23c-0.55,0-1-0.45-1-1V8c0-0.55,0.45-1,1-1h0c0.55,0,1,0.45,1,1v14C22,22.55,21.55,23,21,23z\"/>\r\n<path d=\"M22.86,1.5c-0.28-0.48-0.89-0.64-1.37-0.37l-6.54,3.74l-6-2.33C8.52,2.38,8.22,2.41,7.88,2.73L1.29,7.71\r\n\tC0.86,8.05,0.8,8.68,1.15,9.11s0.98,0.49,1.41,0.14l6.2-4.65l5.69,2.2C15,6.99,15.3,6.96,15.83,6.68l6.67-3.82\r\n\tC22.98,2.59,23.14,1.97,22.86,1.5z\"/>\r\n</svg>\r\n",
|
|
||||||
"subfiles": [],
|
|
||||||
"subfiles_extension": [
|
|
||||||
"cache.js",
|
|
||||||
"extension.js"
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,311 +0,0 @@
|
||||||
/* ../../../AppData/Local/Temp/tmp-8216-VCWpAfv0Bkqy/1909217e9563/navBar.module.css */
|
|
||||||
.navBar-module__topBarHeaderItem___piw4C_stats {
|
|
||||||
-webkit-app-region: no-drag;
|
|
||||||
display: inline-block;
|
|
||||||
pointer-events: auto;
|
|
||||||
}
|
|
||||||
.navBar-module__topBarHeaderItemLink___xA4uv_stats {
|
|
||||||
margin: 0 8px 0 0;
|
|
||||||
}
|
|
||||||
.navBar-module__topBarActive___XhWpm_stats {
|
|
||||||
background-color: var(--spice-tab-active);
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
.navBar-module__topBarHeaderItemLink___xA4uv_stats {
|
|
||||||
border-radius: 4px;
|
|
||||||
color: var(--spice-text);
|
|
||||||
display: inline-block;
|
|
||||||
margin: 0 8px;
|
|
||||||
padding: 8px 16px;
|
|
||||||
position: relative;
|
|
||||||
text-decoration: none !important;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.navBar-module__topBarNav___qWGeZ_stats {
|
|
||||||
-webkit-app-region: drag;
|
|
||||||
pointer-events: none;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.navBar-module__topBarHeaderItem___piw4C_stats .navBar-module__optionsMenuDropBox___pzfNI_stats {
|
|
||||||
color: var(--spice-text);
|
|
||||||
border: 0;
|
|
||||||
max-width: 150px;
|
|
||||||
height: 42px;
|
|
||||||
padding: 0 30px 0 12px;
|
|
||||||
background-color: initial;
|
|
||||||
cursor: pointer;
|
|
||||||
-webkit-appearance: none;
|
|
||||||
-moz-appearance: none;
|
|
||||||
appearance: none;
|
|
||||||
}
|
|
||||||
.navBar-module__topBarHeaderItem___piw4C_stats .navBar-module__optionsMenuDropBox___pzfNI_stats svg {
|
|
||||||
position: absolute;
|
|
||||||
margin-left: 8px;
|
|
||||||
}
|
|
||||||
div.navBar-module__topBarHeaderItemLink___xA4uv_stats {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ../../../AppData/Local/Temp/tmp-8216-VCWpAfv0Bkqy/1909217e7ff0/app.css */
|
|
||||||
#stats-app .stats-gridInline {
|
|
||||||
--grid-gap: 24px;
|
|
||||||
grid-template-columns: repeat(10, 180px) !important;
|
|
||||||
overflow-x: hidden;
|
|
||||||
scroll-behavior: smooth;
|
|
||||||
margin-top: 5px;
|
|
||||||
}
|
|
||||||
#stats-app .grid:nth-child(2) {
|
|
||||||
margin-top: 24px;
|
|
||||||
}
|
|
||||||
#stats-app [data-scroll=both] {
|
|
||||||
-webkit-mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
|
|
||||||
mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
|
|
||||||
}
|
|
||||||
#stats-app [data-scroll=end] {
|
|
||||||
-webkit-mask-image: linear-gradient(to right, transparent, black 10%);
|
|
||||||
mask-image: linear-gradient(to right, transparent, black 10%);
|
|
||||||
}
|
|
||||||
#stats-app [data-scroll=start] {
|
|
||||||
-webkit-mask-image: linear-gradient(to right, black 90%, transparent);
|
|
||||||
mask-image: linear-gradient(to right, black 90%, transparent);
|
|
||||||
}
|
|
||||||
#stats-app .stats-libraryOverview {
|
|
||||||
display: flex;
|
|
||||||
gap: 24px;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
#stats-app .stats-trackPageTitle {
|
|
||||||
display: flex;
|
|
||||||
gap: 24px;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
#stats-app .stats-scrollButton {
|
|
||||||
width: 40px;
|
|
||||||
border-radius: 8px;
|
|
||||||
border: none;
|
|
||||||
padding: 0;
|
|
||||||
margin-right: 5px;
|
|
||||||
background-color: var(--spice-player);
|
|
||||||
color: var(--spice-subtext);
|
|
||||||
}
|
|
||||||
#stats-app .stats-scrollButton:hover {
|
|
||||||
background-color: var(--spice-card);
|
|
||||||
color: var(--spice-text);
|
|
||||||
}
|
|
||||||
#stats-app .stats-tracklistHeader > div {
|
|
||||||
display: flex;
|
|
||||||
-webkit-app-region: no-drag;
|
|
||||||
gap: 20px;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
#stats-app .stats-make-playlist-button {
|
|
||||||
margin-inline-start: 12px;
|
|
||||||
}
|
|
||||||
#stats-app .stats-genreCard {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 10px;
|
|
||||||
padding: 16px;
|
|
||||||
border-radius: 8px;
|
|
||||||
background: var(--spice-player);
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
#stats-app .stats-genreRow {
|
|
||||||
width: 100%;
|
|
||||||
height: 20px;
|
|
||||||
display: flex;
|
|
||||||
gap: 10px;
|
|
||||||
}
|
|
||||||
#stats-app .stats-genreRowFill {
|
|
||||||
background: var(--spice-button);
|
|
||||||
height: 100%;
|
|
||||||
border-radius: 8px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
#stats-app .stats-genreText {
|
|
||||||
color: var(--spice-player);
|
|
||||||
font-size: 0.875rem;
|
|
||||||
margin-left: 7px;
|
|
||||||
font-weight: bold;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
|
||||||
#stats-app .stats-genreValue {
|
|
||||||
color: var(--spice-text);
|
|
||||||
font-size: 0.875rem;
|
|
||||||
}
|
|
||||||
#stats-app .stats-genreCard + .stats-gridInlineSection {
|
|
||||||
margin-top: 3px;
|
|
||||||
}
|
|
||||||
#stats-app .main-trackList-rowHeartButton,
|
|
||||||
#stats-app .main-trackList-rowMoreButton {
|
|
||||||
background-color: transparent;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
#stats-app .main-trackList-rowPlayPauseIcon {
|
|
||||||
fill: currentColor;
|
|
||||||
}
|
|
||||||
#stats-app .badge {
|
|
||||||
position: absolute;
|
|
||||||
top: 3%;
|
|
||||||
left: 3%;
|
|
||||||
height: 30px;
|
|
||||||
width: 30px;
|
|
||||||
border-radius: 50%;
|
|
||||||
background-color: rgb(65, 110, 170);
|
|
||||||
color: white;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
#stats-app .extend-button {
|
|
||||||
background-color: transparent;
|
|
||||||
border: none;
|
|
||||||
position: absolute;
|
|
||||||
right: 20px;
|
|
||||||
bottom: 20px;
|
|
||||||
font-size: 14px;
|
|
||||||
color: var(--spice-subtext);
|
|
||||||
}
|
|
||||||
#stats-app .extend-button:hover {
|
|
||||||
color: var(--spice-text);
|
|
||||||
}
|
|
||||||
.GenericModal[aria-label="Playlist Stats"] .main-embedWidgetGenerator-container {
|
|
||||||
width: 80vw;
|
|
||||||
height: 80vh;
|
|
||||||
background-color: var(--spice-main);
|
|
||||||
}
|
|
||||||
.GenericModal[aria-label="Playlist Stats"] .main-shelf-title {
|
|
||||||
color: var(--spice-text);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ../../../AppData/Local/Temp/tmp-8216-VCWpAfv0Bkqy/1909217e92e1/config_modal.css */
|
|
||||||
.config-container {
|
|
||||||
gap: 10px;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
.config-container .section-header {
|
|
||||||
box-sizing: border-box;
|
|
||||||
-webkit-tap-highlight-color: transparent;
|
|
||||||
margin-block: 0px;
|
|
||||||
font-size: 1.125rem;
|
|
||||||
font-weight: 700;
|
|
||||||
color: var(--spice-text);
|
|
||||||
}
|
|
||||||
.config-container .col.description {
|
|
||||||
box-sizing: border-box;
|
|
||||||
-webkit-tap-highlight-color: transparent;
|
|
||||||
margin-block: 0px;
|
|
||||||
font-size: 0.875rem;
|
|
||||||
font-weight: 400;
|
|
||||||
color: var(--spice-subtext);
|
|
||||||
}
|
|
||||||
.config-container .disabled {
|
|
||||||
opacity: 0;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
.config-container .text-input {
|
|
||||||
background: rgba(var(--spice-rgb-selected-row), 0.1);
|
|
||||||
border: 1px solid transparent;
|
|
||||||
border-radius: 4px;
|
|
||||||
color: var(--spice-text);
|
|
||||||
font-family: inherit;
|
|
||||||
font-size: 14px;
|
|
||||||
height: 32px;
|
|
||||||
padding: 0 12px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.config-container .text-input:focus {
|
|
||||||
background-color: var(--spice-tab-active);
|
|
||||||
border: 1px solid var(--spice-button-disabled);
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
.config-container .dropdown-input {
|
|
||||||
background-color: var(--spice-tab-active);
|
|
||||||
border: 0;
|
|
||||||
border-radius: 4px;
|
|
||||||
color: rgba(var(--spice-rgb-selected-row), 0.7);
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 400;
|
|
||||||
height: 32px;
|
|
||||||
letter-spacing: 0.24px;
|
|
||||||
line-height: 20px;
|
|
||||||
padding: 0 32px 0 12px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.config-container .tooltip-icon {
|
|
||||||
float: right;
|
|
||||||
margin-left: 10px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
height: 22px;
|
|
||||||
fill: var(--spice-subtext);
|
|
||||||
}
|
|
||||||
.config-container .tooltip-icon:hover {
|
|
||||||
fill: var(--spice-text);
|
|
||||||
}
|
|
||||||
.config-container .tooltip {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.config-container .setting-row {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
.config-container .playback-progressbar {
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ../../../AppData/Local/Temp/tmp-8216-VCWpAfv0Bkqy/1909217e93c2/shared.css */
|
|
||||||
.grid {
|
|
||||||
--grid-gap: 24px;
|
|
||||||
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)) !important;
|
|
||||||
}
|
|
||||||
.loadingWrapper {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
min-height: 60vh;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 16px;
|
|
||||||
}
|
|
||||||
.loadingWrapper .status-icon {
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
fill: currentColor;
|
|
||||||
}
|
|
||||||
.page-content {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 24px;
|
|
||||||
}
|
|
||||||
.page-header {
|
|
||||||
align-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin: 16px 0;
|
|
||||||
}
|
|
||||||
.page-header .header-right,
|
|
||||||
.page-header .header-left {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 8px;
|
|
||||||
}
|
|
||||||
.page-header .header-right {
|
|
||||||
justify-content: flex-end;
|
|
||||||
}
|
|
||||||
.page-header .header-left {
|
|
||||||
justify-content: flex-start;
|
|
||||||
}
|
|
||||||
.new-update {
|
|
||||||
background-color: var(--spice-player);
|
|
||||||
color: var(--spice-text);
|
|
||||||
border-radius: 8px;
|
|
||||||
padding: 2px 12px;
|
|
||||||
margin: 0 24px;
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
|
@ -22,11 +22,11 @@ sidebar_config = 0
|
||||||
home_config = 1
|
home_config = 1
|
||||||
experimental_features = 1
|
experimental_features = 1
|
||||||
extensions =
|
extensions =
|
||||||
custom_apps = library|lyrics-plus|marketplace|stats
|
custom_apps = library|lyrics-plus|marketplace
|
||||||
|
|
||||||
[Patch]
|
[Patch]
|
||||||
|
|
||||||
; DO NOT CHANGE!
|
; DO NOT CHANGE!
|
||||||
[Backup]
|
[Backup]
|
||||||
version = 1.2.59.514.g834e17d4
|
version = 1.2.59.514.g834e17d4
|
||||||
with = 2.39.5
|
with = 2.39.6
|
||||||
|
|
Loading…
Add table
Reference in a new issue