diff --git a/.all-contributorsrc b/.all-contributorsrc index 94f1c71..41fa931 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -48,7 +48,53 @@ "contributions": [ "design" ] + }, + { + "login": "jay-io", + "name": "Jayanta Pandit", + "avatar_url": "https://avatars.githubusercontent.com/u/55305804?v=4", + "profile": "https://github.com/jay-io", + "contributions": [ + "content", + "doc" + ] + }, + { + "login": "undextered", + "name": "Abhimanyu Gabhrani", + "avatar_url": "https://avatars.githubusercontent.com/u/76005012?v=4", + "profile": "https://github.com/undextered", + "contributions": [ + "code" + ] + }, + { + "login": "mchirag2002", + "name": "Chirag Mathur", + "avatar_url": "https://avatars.githubusercontent.com/u/71757438?v=4", + "profile": "https://github.com/mchirag2002", + "contributions": [ + "code" + ] + }, + { + "login": "SujalSamai", + "name": "Sujal Samai", + "avatar_url": "https://avatars.githubusercontent.com/u/87236576?v=4", + "profile": "https://github.com/SujalSamai", + "contributions": [ + "code" + ] + }, + { + "login": "ranmerc", + "name": "Kamran Ansari", + "avatar_url": "https://avatars.githubusercontent.com/u/33200113?v=4", + "profile": "https://github.com/ranmerc", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7 -} \ No newline at end of file +} diff --git a/.gitignore b/.gitignore index 92cdf3d..2fdd441 100644 --- a/.gitignore +++ b/.gitignore @@ -138,3 +138,9 @@ $RECYCLE.BIN/ # Windows shortcuts *.lnk + +_site +.sass-cache +.jekyll-cache +.jekyll-metadata +vendor diff --git a/.well-known/assetlinks.json b/.well-known/assetlinks.json new file mode 100644 index 0000000..e781cb4 --- /dev/null +++ b/.well-known/assetlinks.json @@ -0,0 +1,13 @@ +[ + { + "relation": ["delegate_permission/common.handle_all_urls"], + "target": { + "namespace": "android_app", + "package_name": "app.moosync.moosync", + "sha256_cert_fingerprints": [ + "A6:0A:21:DA:C9:A9:C2:ED:73:F5:A9:9E:01:96:2B:0E:7B:9B:1F:FA:06:27:23:53:99:10:0C:A9:7A:EE:51:12", + "D4:28:A6:3E:D0:ED:BF:E3:72:9D:B8:E2:ED:2A:10:B4:EB:41:22:3E:45:C5:5C:B4:F8:90:DA:02:8F:36:80:C6" + ] + } + } +] diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..1693568 --- /dev/null +++ b/Gemfile @@ -0,0 +1,40 @@ +source "https://rubygems.org" +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +gem "github-pages", group: :jekyll_plugins +# This is the default theme for new Jekyll sites. You may change this to anything you like. +gem "minima" +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +# gem "github-pages", group: :jekyll_plugins +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.12" + gem 'jekyll-sitemap' + gem 'jekyll-commonmark-ghpages' +end + +# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem +# and associated library. +platforms :mingw, :x64_mingw, :mswin, :jruby do + gem "tzinfo", "~> 1.2" + gem "tzinfo-data" +end + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin] + +# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem +# do not have a Java counterpart. +gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby] + +gem "kramdown", "~> 2.3" +gem "rouge", "~> 3.26" +gem 'jekyll-titles-from-headings' +gem 'webrick' diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..5c406bf --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,274 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (6.0.5.1) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + zeitwerk (~> 2.2, >= 2.2.2) + addressable (2.8.0) + public_suffix (>= 2.0.2, < 5.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.11.1) + colorator (1.1.0) + commonmarker (0.23.5) + concurrent-ruby (1.1.10) + dnsruby (1.61.9) + simpleidn (~> 0.1) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb + ethon (0.15.0) + ffi (>= 1.15.0) + eventmachine (1.2.7) + execjs (2.8.1) + faraday (2.5.2) + faraday-net_http (>= 2.0, < 3.1) + ruby2_keywords (>= 0.0.4) + faraday-net_http (3.0.0) + ffi (1.15.5) + forwardable-extended (2.6.0) + gemoji (3.0.1) + github-pages (227) + github-pages-health-check (= 1.17.9) + jekyll (= 3.9.2) + jekyll-avatar (= 0.7.0) + jekyll-coffeescript (= 1.1.1) + jekyll-commonmark-ghpages (= 0.2.0) + jekyll-default-layout (= 0.1.4) + jekyll-feed (= 0.15.1) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.13.0) + jekyll-include-cache (= 0.2.1) + jekyll-mentions (= 1.6.0) + jekyll-optional-front-matter (= 0.3.2) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.3.0) + jekyll-redirect-from (= 0.16.0) + jekyll-relative-links (= 0.6.1) + jekyll-remote-theme (= 0.4.3) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.8.0) + jekyll-sitemap (= 1.4.0) + jekyll-swiss (= 1.0.0) + jekyll-theme-architect (= 0.2.0) + jekyll-theme-cayman (= 0.2.0) + jekyll-theme-dinky (= 0.2.0) + jekyll-theme-hacker (= 0.2.0) + jekyll-theme-leap-day (= 0.2.0) + jekyll-theme-merlot (= 0.2.0) + jekyll-theme-midnight (= 0.2.0) + jekyll-theme-minimal (= 0.2.0) + jekyll-theme-modernist (= 0.2.0) + jekyll-theme-primer (= 0.6.0) + jekyll-theme-slate (= 0.2.0) + jekyll-theme-tactile (= 0.2.0) + jekyll-theme-time-machine (= 0.2.0) + jekyll-titles-from-headings (= 0.5.3) + jemoji (= 0.12.0) + kramdown (= 2.3.2) + kramdown-parser-gfm (= 1.1.0) + liquid (= 4.0.3) + mercenary (~> 0.3) + minima (= 2.5.1) + nokogiri (>= 1.13.6, < 2.0) + rouge (= 3.26.0) + terminal-table (~> 1.4) + github-pages-health-check (1.17.9) + addressable (~> 2.3) + dnsruby (~> 1.60) + octokit (~> 4.0) + public_suffix (>= 3.0, < 5.0) + typhoeus (~> 1.3) + html-pipeline (2.14.2) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.8.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.9.2) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (>= 1.17, < 3) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-avatar (0.7.0) + jekyll (>= 3.0, < 5.0) + jekyll-coffeescript (1.1.1) + coffee-script (~> 2.2) + coffee-script-source (~> 1.11.1) + jekyll-commonmark (1.4.0) + commonmarker (~> 0.22) + jekyll-commonmark-ghpages (0.2.0) + commonmarker (~> 0.23.4) + jekyll (~> 3.9.0) + jekyll-commonmark (~> 1.4.0) + rouge (>= 2.0, < 4.0) + jekyll-default-layout (0.1.4) + jekyll (~> 3.0) + jekyll-feed (0.15.1) + jekyll (>= 3.7, < 5.0) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-github-metadata (2.13.0) + jekyll (>= 3.4, < 5.0) + octokit (~> 4.0, != 4.4.0) + jekyll-include-cache (0.2.1) + jekyll (>= 3.7, < 5.0) + jekyll-mentions (1.6.0) + html-pipeline (~> 2.3) + jekyll (>= 3.7, < 5.0) + jekyll-optional-front-matter (0.3.2) + jekyll (>= 3.0, < 5.0) + jekyll-paginate (1.1.0) + jekyll-readme-index (0.3.0) + jekyll (>= 3.0, < 5.0) + jekyll-redirect-from (0.16.0) + jekyll (>= 3.3, < 5.0) + jekyll-relative-links (0.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-remote-theme (0.4.3) + addressable (~> 2.0) + jekyll (>= 3.5, < 5.0) + jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) + rubyzip (>= 1.3.0, < 3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-swiss (1.0.0) + jekyll-theme-architect (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.6.0) + jekyll (> 3.5, < 5.0) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.3) + jekyll (>= 3.3, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + jemoji (0.12.0) + gemoji (~> 3.0) + html-pipeline (~> 2.2) + jekyll (>= 3.0, < 5.0) + kramdown (2.3.2) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.3) + listen (3.7.1) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.3.6) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (5.16.3) + nokogiri (1.13.8-x86_64-linux) + racc (~> 1.4) + octokit (4.25.1) + faraday (>= 1, < 3) + sawyer (~> 0.9) + pathutil (0.16.2) + forwardable-extended (>= 2.6) + public_suffix (4.0.7) + racc (1.6.0) + rb-fsevent (0.11.1) + rb-inotify (0.10.1) + ffi (>= 1.0) + rexml (3.2.5) + rouge (3.26.0) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + safe_yaml (1.0.5) + sass (3.7.4) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sawyer (0.9.2) + addressable (>= 2.3.5) + faraday (>= 0.17.3, < 3) + simpleidn (0.2.1) + unf (~> 0.1.4) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + thread_safe (0.3.6) + typhoeus (1.4.0) + ethon (>= 0.9.0) + tzinfo (1.2.10) + thread_safe (~> 0.1) + unf (0.1.4) + unf_ext + unf_ext (0.0.8.2) + unicode-display_width (1.8.0) + webrick (1.7.0) + zeitwerk (2.6.0) + +PLATFORMS + x86_64-linux + +DEPENDENCIES + github-pages + http_parser.rb (~> 0.6.0) + jekyll-commonmark-ghpages + jekyll-feed (~> 0.12) + jekyll-sitemap + jekyll-titles-from-headings + kramdown (~> 2.3) + minima + rouge (~> 3.26) + tzinfo (~> 1.2) + tzinfo-data + wdm (~> 0.1.1) + webrick + +BUNDLED WITH + 2.3.11 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..bb32799 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Moosync + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 008ad65..2fa12d0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -[![All Contributors](https://img.shields.io/badge/all_contributors-4-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-9-orange.svg?style=flat-square)](#contributors-) ## Contributors ✨ @@ -15,6 +15,13 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
BOBBY KUMAR

🎨 💻
shreya40

🎨 💻
Garvitraj Pandey

🎨 +
Jayanta Pandit

🖋 📖 +
Abhimanyu Gabhrani

💻 +
Chirag Mathur

💻 + + +
Sujal Samai

💻 +
Kamran Ansari

💻 diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..8638006 --- /dev/null +++ b/_config.yml @@ -0,0 +1,67 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. +# +# If you need help with YAML syntax, here are some quick references for you: +# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml +# https://learnxinyminutes.com/docs/yaml/ +# +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. + +title: Moosync +email: support@moosync.app +description: >- # this means to ignore newlines until "baseurl:" + Moosync is an Electron based simple music player with a primary goal to provide a clean and easy interface. + Through Moosync you can easily listen songs from your desktop or through Youtube and Spotify. +url: "https://moosync.app" # the base hostname & protocol for your site, e.g. http://example.com +github_username: ovenoboyo + +# Build settings +theme: minima +plugins: + - jekyll-feed + - jekyll-sitemap + - jekyll-titles-from-headings + +markdown: CommonMarkGhPages +highlighter: rouge + +titles_from_headings: + enabled: true + strip_title: true + collections: false + +commonmark: + options: ["UNSAFE", "SMART", "FOOTNOTES"] + extensions: ["strikethrough", "autolink", "table", "tagfilter"] + +include: [".well-known"] +# Exclude from processing. +# The following items will not be processed, by default. +# Any item listed under the `exclude:` key here will be automatically added to +# the internal "default list". +# +# Excluded items can be processed by explicitly listing the directories or +# their entries' file path in the `include:` list. +# +# exclude: +# - .sass-cache/ +# - .jekyll-cache/ +# - gemfiles/ +# - Gemfile +# - Gemfile.lock +# - node_modules/ +# - vendor/bundle/ +# - vendor/cache/ +# - vendor/gems/ +# - vendor/ruby/ diff --git a/_data/nav.yml b/_data/nav.yml new file mode 100644 index 0000000..5a2d8f0 --- /dev/null +++ b/_data/nav.yml @@ -0,0 +1,63 @@ +toc: + - title: Welcome to Moosync + url: /wiki/ + subHeadings: + - title: Features + url: "#features" + - title: Download + url: "#download-latest-release" + - title: 3rd party integrations + url: /wiki/integrations + subHeadings: + - title: Enabling Spotify integration + url: "#enabling-spotify-integration" + - title: Enabling Youtube integration + url: "#enabling-youtube-integration" + - title: Discord integration + url: "#discord-integration" + - title: Extensions + url: /wiki/Extensions + subHeadings: + - title: Creating an extension + url: "/wiki/Develop-Extensions" + subHeadings: + - title: Getting started + url: "#getting-started" + - title: Create a new project + url: "#create-a-new-project" + - title: Creating extension descriptor + url: "#creating-extension-descriptor" + - title: Writing code + url: "#writing-code-for-extension" + - title: API examples + url: /wiki/Extension-API + subHeadings: + - title: Lifecycle hooks + url: "#lifecycle-hooks" + - title: Methods + url: "#methods" + - title: Events + url: "#events" + - title: Documentation and Examples + url: "#documentation" + - title: Packaging + url: /wiki/Packaging-Extensions + - title: Publishing + url: /wiki/Publishing-Extensions + - title: Building from source + url: /wiki/building-from-source + subHeadings: + - title: Requirements + url: "#requirements" + - title: Setting up the project + url: "#setting-up-the-project" + - title: Downloading dependencies + url: "#downloading-dependencies" + - title: Setting up environment variables + url: "#setting-up-environment-variables" + - title: Post installation + url: "#post-installation" + - title: Running in development environment + url: "#running-in-development-environment" + - title: Building a production build + url: "#building-a-production-build" diff --git a/_includes/custom-head.html b/_includes/custom-head.html new file mode 100644 index 0000000..888a29e --- /dev/null +++ b/_includes/custom-head.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 0000000..c883cdf --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,68 @@ + \ No newline at end of file diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 0000000..a8d0377 --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,10 @@ + + + + + {%- seo -%} + {%- feed_meta -%} {%- if jekyll.environment == + 'production' and + site.google_analytics -%} {%- include google-analytics.html -%} {%- endif -%} + {%- include custom-head.html -%} + diff --git a/_includes/header.html b/_includes/header.html new file mode 100644 index 0000000..8ab9358 --- /dev/null +++ b/_includes/header.html @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..a121c78 --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,128 @@ + + + +{%- include head.html -%} + + + + {%- include header.html -%} + +
+
+ +
+ +
    + {%- for nav in site.data.nav.toc -%} + {%- if nav.title -%} +
  • + {{ + nav.title | escape }} + {%- if nav.subHeadings -%} + +
      + {%- for sub in nav.subHeadings -%} + + {% if sub.url contains "/wiki/" %} +
    • + {{ + sub.title | escape }} + {%- if sub.subHeadings -%} + + {%- endif -%} +
    • + + {% else %} + {% assign subUrl = nav.url | append: sub.url %} +
    • + {{ + sub.title | escape }} +
    • + {% endif %} + {%- endfor -%} +
    + {%- endif -%} +
  • + {%- endif -%} + {%- endfor -%} +
+ + + + +
+
+ {{ content }} +
+
+ +
+ + {%- include footer.html -%} + + + + + \ No newline at end of file diff --git a/assets/css/index.css b/assets/css/index.css new file mode 100644 index 0000000..f91b24a --- /dev/null +++ b/assets/css/index.css @@ -0,0 +1,1440 @@ +@import url("https://fonts.googleapis.com/css2?family=Lexend+Deca:wght@200;400;500;700;800&display=swap"); + +:root { + --green-primary: #65cb88; + --green-secondary: #80ed99; +} + +* { + margin: 0; + padding: 0; + text-decoration: none; + font-family: "Poppins", sans-serif; + scroll-behavior: smooth; + font-family: "Lexend Deca", sans-serif; +} +::selection { + color: var(--green-primary); + background: #141414; +} +body { + overflow: overlay; + transition: color 0.2s ease-in; + background-color: #212121 !important; +} + +nav > * a, +nav > * a:hover, +footer > * a, +footer > * a:hover { + color: white !important; + text-decoration: none; +} + +footer > * ul { + margin: 0; +} + +a:hover { + color: white; +} + +.main { + min-height: 100vh; + display: block; + color: white !important; +} + +.nav__bar { + padding: 0.625rem 2rem; + background-color: #212121; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + position: sticky; + top: 0; + height: 56px; + background: rgba(33, 33, 33, 0.45); + box-shadow: 0 8px 32px 0 rgba(33, 33, 33, 0.37); + backdrop-filter: blur(15px); + -webkit-backdrop-filter: blur(15px); + z-index: 999; +} + +.nav__bar > * a:hover { + color: var(--green-primary) !important; +} +.login__navbar { + background-color: none; + background-image: linear-gradient( + 180deg, + rgba(40, 40, 40, 0.3), + rgba(86, 86, 86, 0.3) + ); +} + +.title__logo { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + cursor: pointer; +} + +.logo__img { + width: 3.5rem; + margin-right: 0.8rem; + object-fit: cover; +} + +.title { + font-family: "Lexend Deca", sans-serif; + font-size: 1.5rem; + color: white; +} + +.navbar__buttons { + width: 600px; + background-color: none; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; +} + +.navigation__buttons { + background-color: inherit; + font-family: "Lexend Deca", sans-serif; + font-size: 1rem; + color: #5bb67a; + border: none; + cursor: pointer; + transition: transform 250ms ease-in-out; +} + +/* .navigation__buttons::after { + display: block; + content: ""; + border-bottom: 2px solid #5bb67a; + transform: scaleX(0); +} */ +.navigation__buttons a { + color: white; +} +.navigation__buttons { + width: fit-content; + height: 50px; + padding: 0%; + transition: background-position-x 0.9s linear; + text-align: center; +} + +.navigation__buttons:hover { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB3aWR0aD0iMzkwcHgiIGhlaWdodD0iNTBweCIgdmlld0JveD0iMCAwIDM5MCA1MCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzkwIDUwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNWJiNjdhIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJNMCw0Ny41ODVjMCwwLDk3LjUsMCwxMzAsMAoJYzEzLjc1LDAsMjguNzQtMzguNzc4LDQ2LjE2OC0xOS40MTZDMTkyLjY2OSw0Ni41LDI0My42MDMsNDcuNTg1LDI2MCw0Ny41ODVjMzEuODIxLDAsMTMwLDAsMTMwLDAiLz4KPC9zdmc+Cg=="); + -webkit-animation: line 2s; + animation: line 2s; +} +.navigation__buttons a:hover { + color: #5bb67a; +} + +@-webkit-keyframes line { + 0% { + background-position-x: 390px; + } +} + +@keyframes line { + 0% { + background-position-x: 390px; + } +} + +#download__btn { + background-color: #5bb67a; + padding: 0.5rem 1.25rem; + color: black; + border-radius: 10px; +} + +#download__btn:hover { + border-bottom: none; + transform: scale(1.1); + transition: all 0.2s; +} + +#download__btn:focus { + border-bottom: none; +} + +/* ------------------------------------------------------------------ */ + +.moosync__navbar-mobileScreen { + display: none; + transition: 0.5s ease; +} + +#hamburger-open { + width: 30px; + height: 30px; +} + +.moosync__navbar-mobileScreen-overlayClose { + display: none; +} + +.moosync__navbar-mobileScreen-overlayOpen { + width: 100%; + height: 100vh; + position: fixed; + background-color: var(--color-primary-black); + flex-direction: column; + top: 0; + left: 0; + z-index: 999; +} + +.moosync__navbar-mobileScreen-links { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + list-style-type: none; +} + +.moosync__navbar-mobileScreen-links li { + margin-top: 2rem; + font-size: 2rem; + color: var(--color-white); + text-align: center; + cursor: pointer; +} + +.moosync__navbar-mobileScreen-links li button { + margin-top: 3rem; + font-size: 2rem; +} + +.moosync__navbar-mobileScreen-links li:hover { + color: #5bb67a; +} + +#hamburger-close { + width: 30px; + height: 30px; + position: absolute; + top: 1.5rem; + right: 3rem; + cursor: pointer; +} + +/* ------------------------------------------------------------------ */ + +.moosync__navbar-mobileScreen { + display: none; +} + +#hamburger-open { + width: 30px; + height: 30px; +} + +.moosync__navbar-mobileScreen-overlayClose { + display: none; +} + +.moosync__navbar-mobileScreen-overlayOpen { + width: 100%; + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + position: fixed; + background-color: #141414; + flex-direction: column; + top: 0; + left: 0; + transition: 0.5s ease; + z-index: 999; +} + +.moosync__navbar-mobileScreen-links { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + list-style-type: none; +} + +.moosync__navbar-mobileScreen-links li { + margin-top: 2rem; + font-size: 2rem; + color: var(--color-white); + text-align: center; + cursor: pointer; +} + +.moosync__navbar-mobileScreen-links li:hover { + color: var(--color-text-green); +} + +#hamburger-close { + width: 30px; + height: 30px; + position: absolute; + top: 1.5rem; + right: 3rem; + cursor: pointer; +} + +.slide__bottom { + -webkit-animation: slide-bottom 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) + both; + animation: slide-bottom 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; +} + +@-webkit-keyframes slide-bottom { + 0% { + -webkit-transform: translateY(-25%); + transform: translateY(-25%); + } + + 100% { + -webkit-transform: translateY(0); + transform: translateY(0); + } +} + +@keyframes slide-bottom { + 0% { + -webkit-transform: translateY(-25%); + transform: translateY(-25%); + } + + 100% { + -webkit-transform: translateY(0); + transform: translateY(0); + } +} + +/* ------------------------------------------------------------------ */ + +.heading__page { + width: 100%; + padding: 3.25rem 0 3.125rem 0; + background-color: #212121; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-family: "Lexend Deca", sans-serif; +} + +#login__heading__page { + height: 90vh; + justify-content: flex-start; +} + +.info__text__1 { + text-transform: uppercase; + font-size: 1rem; + letter-spacing: 0.1rem; + color: white; +} + +#heading__info__text__1 { + color: var(--green-primary); +} + +.title__line { + width: 75%; + font-size: 5.5rem; + font-weight: 600; + color: white; + text-align: center; + line-height: 6.5rem; +} + +#login__title__line { + width: 500px; + margin-top: 7.5rem; + font-size: 1.75rem; + line-height: normal; + font-weight: normal; +} + +.circle__div__container { + width: 100%; + margin: 5rem 0; + display: flex; + align-items: center; + justify-content: center; + background-image: url("../img/headerbg.svg"); + background-repeat: no-repeat; + background-size: cover; + background-position: center; +} + +.circle__div { + margin: 2.5rem 0; + display: flex; + align-items: center; + justify-content: center; + border: 0.145rem dashed #65cb88; + border-radius: 50%; +} + +#circle__div__1 { + width: 50vw; + height: 50vw; + z-index: 3; +} + +#music__person__img { + width: 45vw; +} + +.music__person__img__container { + position: absolute; + z-index: 5; +} + +#circle__div__2 { + width: 75%; + height: 75%; +} + +#circle__div__3 { + padding: 4vw; + z-index: 10; + position: absolute; +} + +.playbutton__container { + position: relative; + cursor: pointer; + transition: all 0.2s; +} + +.play__button__img { + display: block; + width: 165px; +} + +.play__button__icon { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin-left: auto; + margin-right: auto; + margin-top: auto; + margin-bottom: auto; + width: 30px; +} + +.playbutton__container:hover { + transform: scale(1.1); +} + +.buttons { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-evenly; +} + +.link__buttons { + padding: 10px 20px; + margin: 0 2.5rem; + background-color: #65cb88; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + text-align: center; + font-family: "Lexend Deca", sans-serif; + font-size: 1.25rem; + color: black; + border: none; + border-radius: 10px; + cursor: pointer; + transition: all 0.2s; +} + +.link__buttons:hover { + transform: scale(1.1); + background-color: #4e9f6a; +} + +.icons { + font-size: 2rem; + margin-right: 10px; + object-fit: cover; +} + +#discord__icon { + height: 1.5rem; + padding: 0.5rem 0; +} + +.moosync__usage { + padding: 5rem 0; + background-color: #141414; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; +} + +.moosync__section__heading { + margin-bottom: 2.5rem; + display: block; + text-align: center; + font-size: 2rem; + color: white; +} + +.usage__icons__text { + width: 75%; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-evenly; +} + +#usage__icons__text__mid { + width: 80%; + margin-bottom: 2rem; + justify-content: space-between; +} + +#usage__mid__img { + width: 40vw; + object-fit: cover; +} + +.usage { + height: 14rem; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + color: white; + padding: 10px; +} +.usage:hover { + box-sizing: border-box; + border: #4dc4ab solid 1px; + border-radius: 15px; + background-color: #212121; +} + +.usage__icons { + width: 5rem; + padding: 8px; + object-fit: cover; +} +/* .usage__icons:hover{ + border-radius: 15px; + border: solid #4e9f6a 1px; + transition: all ease-in 5ms; +} */ + +.info__text__4 { + width: 10rem; + padding: 1rem 0; + text-align: center; + cursor: default; +} + +/* Video Section Style */ + +.moosync__video { + padding: 5rem 0; + background-color: #141414; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; +} + +#video__info__text__1 { + width: 75%; + text-align: center; + text-transform: none; +} + +.moosync__video__player { + width: 75%; + height: 50%; + margin: 5rem 0; + border: none; + border-radius: 1rem; +} + +/* Video Section Style */ + +.moosync__numbers { + color: black; + padding: 5rem 0; + background-color: #212121; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; +} + +.moosync__countbox__container { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + flex-wrap: wrap; +} + +.count__box { + width: 15rem; + height: 15rem; + margin-bottom: 1rem; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background-image: url("../img/hexagon.svg"); + background-repeat: no-repeat; + background-size: contain; + background-position: center; + transition: all 0.2s; +} + +.count__box > p:first-child { + font-size: 1.9rem; + font-weight: 500; +} + +.count__box > p:last-child { + padding: 0.25rem 0; + font-size: 0.8rem; +} + +.count__box:hover { + cursor: pointer; + color: #faf3e3; + width: 16rem; + margin-bottom: 0; + background-image: url("../img/hexagon-hover.svg"); + height: 16rem; + /* transition: all 0.2s; */ + transform: scale(1.04); +} + +.count__box > #moosync__numbers__button { + margin-top: 2rem; +} + +.footer__section { + padding: 3rem 2.5rem 1rem 2.5rem; + background-color: #141414; + display: flex; + flex-direction: column; + align-items: baseline; + justify-content: space-between; +} + +.footer__container { + width: 100%; + display: flex; + flex-direction: row; + align-items: initial; + justify-content: space-between; +} + +#footer__logo { + padding: 0; + margin-right: 1rem; +} + +.footer__content { + width: 100vw; + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: baseline; + font-family: "Lexend Deca", sans-serif; +} + +#left__footer__content { + margin-right: 15px; +} + +#right__footer__content { + width: fit-content; +} + +#right__footer__content__wrapper { + width: 100vw; + display: flex; + align-items: center; + justify-content: flex-end; + /* margin-left: 15px; */ +} + +.info__text__2 { + padding: 2.5rem 0; + display: block; + text-align: start; + font-size: 1.75rem; + color: var(--green-secondary); +} + +.info__text__3 { + padding-bottom: 1rem; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + text-align: center; + font-family: "Lexend Deca", sans-serif; + font-weight: 200; + font-size: 1.3rem; + color: white; + border-bottom: 2px solid white; + cursor: pointer; + transition: all 0.2s; +} + +.info__text__3:hover #link__icon { + transform: scale(1.25); +} + +#link__icon { + height: 0.75rem; + width: 0.75rem; + margin-left: 15px; + object-fit: cover; +} + +#footer__info__text__1 { + padding: 0; + color: white; +} + +.subscribe { + padding: 2.5rem 0; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; +} + +.email__input { + width: 100%; + padding: 0.75rem 1.25rem; + font-family: "Lexend Deca", sans-serif; + font-size: 1rem; + border: none; + border-radius: 5px; +} + +.email__input:focus { + outline: none; +} + +#subscribe__button { + font-size: 1.25rem; + padding: 0.5rem 1rem; + border-radius: 5px; +} + +.general__info__links { + width: fit-content; + display: flex; + flex-direction: row; + align-items: flex-start; + justify-content: space-between; +} + +.footer__general { + display: block; + margin-right: 5rem; +} + +#right__footer__general { + width: fit-content; + margin: 0; +} + +#footer__info__text__heading { + color: white; + font-weight: 700; +} + +.general__info__link__list { + margin-top: 1rem; +} + +.list__items { + font-size: 1rem; + font-family: "Lexend Deca", sans-serif; + font-weight: 200; + color: white; + line-height: 2rem; + cursor: pointer; +} + +.list-items-link:hover { + color: #80ed99 !important; +} + +#notice { + width: 60%; + margin: 1rem 0; + align-self: center; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: 0.75rem; + text-align: center; + color: #444444; +} + +#notice__text__container { + margin-top: 1rem; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; +} + +#copyright__text { + width: 100%; + display: block; + text-align: center; + font-family: "Lexend Deca", sans-serif; + font-weight: 300; + color: white; +} + +@media (max-width: 900px) { + .title__line { + width: 90%; + font-size: 10vw; + line-height: normal; + } + + #circle__div__1 { + width: 60vw; + height: 60vw; + } + + #music__person__img { + width: 63vw; + } + + .moosync__video__player { + width: 90%; + height: 50%; + } + + #usage__icons__text__mid { + flex-direction: column; + } + + #usage__mid { + margin: 2rem 0; + } + + #usage__mid__img { + width: 90vw; + } + + .subscribe { + width: max-content; + flex-direction: column; + align-items: flex-start; + justify-content: center; + } + + #subscribe__button { + margin: 0.5rem 0 0 0; + } + + .footer__general { + margin-right: 3rem; + } +} + +@media (max-width: 800px) { + .nav__bar { + position: relative; + top: auto; + } + + .title__logo { + margin: 1rem 0; + } + + .navigation__buttons { + margin: 5px 0; + } + + #download__btn { + padding: 0.25rem 0.5rem; + border-radius: 5px; + } + + .navbar__buttons { + display: none; + } + + .moosync__navbar-mobileScreen { + display: block; + } + + .footer__container { + flex-direction: column; + align-items: center; + justify-content: center; + } + + .footer__content { + width: 60vw; + align-items: center; + justify-content: center; + } + + #footer__info__text__1 { + text-align: center; + } + + #footer__info__text__2 { + text-align: center; + } + + .subscribe { + width: 100%; + align-items: center; + justify-content: center; + } + + .email__input { + width: 250px; + } + + #subscribe__button { + width: 290px; + } + + .general__info__links { + width: 100%; + justify-content: space-evenly; + } + + .footer__general { + padding: 0 1rem; + align-items: center; + justify-content: space-between; + text-align: center; + } + + #left__footer__content { + margin-bottom: 5rem; + margin-right: 0; + } + + #right__footer__content { + margin-left: 0; + } + + #right__footer__content__wrapper { + width: fit-content; + } + + #notice { + width: 80vw; + } +} + +@media (max-width: 550px) { + .navbar__buttons { + width: auto; + flex-direction: column; + justify-content: center; + } + + .title__logo { + flex-direction: column; + } + + #download__btn { + padding: 0.25rem 0.5rem; + margin-top: 10px; + border-radius: 5px; + } + + #heading__info__text__1 { + width: 80%; + text-align: center; + font-size: 0.75rem; + margin-bottom: 10px; + } + + #login__title__line { + width: 90%; + margin-top: 2.5rem; + } + + .circle__div__container { + margin: 2rem 0; + } + + #circle__div__1 { + width: 75vw; + height: 75vw; + } + + #music__person__img { + width: 78.75vw; + } + + #playButton { + width: 20vw; + } + + .link__buttons { + font-size: 5.5vw; + margin-bottom: 2rem; + } + + .buttons { + flex-direction: column; + } + + /* .moosync__video__player { + margin: 2rem; + } */ + + .moosync__section__heading { + width: 90vw; + } + + /* .usage__icons__text { + flex-direction: column; + } */ + + .usage { + margin: 2rem 0; + } + + /* .usage__icons { + width: 25vw; + } */ + + .list__items { + line-height: normal; + margin-bottom: 1rem; + } + + .email__input { + padding: 0.5rem 0.75rem; + } + + #subscribe__button { + width: 275px; + font-size: 1rem; + padding: 0.5rem 0.5rem; + } +} + +@media (max-width: 500px) { + #footer__info__text__2 { + font-size: 1.5rem; + } +} + +@media (max-width: 450px) { + .info__text__3 { + font-size: 0.9rem; + } + + #link__icon { + width: 0.5rem; + height: 0.5rem; + } +} + +@media (max-width: 350px) { + .email__input { + width: 75vw; + } + + #subscribe__button { + width: 82vw; + } + + .general__info__links { + flex-direction: column; + align-items: center; + justify-content: center; + } + + .footer__general { + margin: 0; + } + + #right__footer__general { + margin-top: 2rem; + } + + #notice { + width: 90vw; + } +} + +@media (max-width: 350px) { + .email__input { + width: 75vw; + } +} + +.all_counts { + padding: 5rem 0; + background-color: #212121; +} + +.count_matters_boxes { + padding-left: 12rem; + display: flex; + flex-direction: row; +} + +.countimages { + height: 283px; + width: 283px; +} + +.other__platform { + color: rgb(153, 153, 153); + margin-top: 15px; + cursor: pointer; + user-select: none; +} + +[hidden] { + display: none !important; +} + +.modal { + display: none; + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: hidden; + background-color: rgba(0, 0, 0, 0.7); + z-index: 1000; +} + +.modal-content { + background-color: #141414; + margin: 15% auto; + border-radius: 16px; + width: 60%; + font-family: "Lexend Deca"; + font-weight: 500; + font-size: 38px; + text-align: center; + color: #ffffff; +} + +.modal-content-text { + padding: 100px 20px 100px 20px; +} + +#login-modal-platform-text-pre, +#login-modal-platform-text-post { + text-transform: capitalize; +} + +.close { + color: #aaa; + float: right; + font-size: 28px; + font-weight: bold; + padding-right: 20px; + padding-top: 15px; + cursor: pointer; +} + +.close:hover, +.close:focus { + text-decoration: none; +} + +.login__button { + margin: auto; + margin-top: 30px; + padding: 15px; +} +::-webkit-scrollbar { + overflow: scroll; + padding-right: 10px; + width: 6px; +} +::-webkit-scrollbar-thumb { + border-radius: 15px; + background-clip: padding-box; + border: 5px solid var(--green-primary); + box-shadow: inset 0 0 0 1px; + min-height: 2px; + background: var(--green-primary); +} + +.icon-linux, +.icon-win, +.icon-mac { + width: 24px; + height: 24px; + padding-right: 15px; + padding-top: 5px; + padding-bottom: 5px; +} + +.icon-linux::before, +.icon-win::before, +.icon-mac::before { + content: ""; + background-size: cover; + position: absolute; + width: 24px; + height: 24px; +} + +.icon-linux::before { + background: url("/assets/img/codicon_terminal-linux.svg"); +} + +.icon-win::before { + background: url("/assets/img/bi_windows.svg"); +} + +.icon-mac::before { + background: url("/assets/img/bi_apple.svg"); +} + +.select__box { + display: flex; + flex-direction: column; + overflow: auto; +} + +.selected { + display: flex; + background: #65cb88; + border-radius: 8px; + margin-bottom: 8px; + color: black; + position: relative; + user-select: none; +} + +.select__box .options__container { + background-color: #141414; + color: #fff; + max-height: 0; + width: 100%; + opacity: 0; + transition: all 0.4s; + border-radius: 8px; + overflow: hidden; + order: 1; +} + +.select__box .option:hover { + color: black; +} + +.select__box .options__container.options__active { + max-height: 240px; + opacity: 1; + overflow-y: auto; +} + +.select__box .options__container.options__active + .selected::after { + transform: rotateX(180deg); + top: -6px; +} + +.select__box .option, +.selected { + padding: 12px 24px; + cursor: pointer; +} + +.select__box .option:hover, +.selected:hover { + background-color: #65cb88; +} + +.download__text { + padding-top: 10px; + padding-bottom: 10px; + text-wrap: nowrap; +} + +.arrow__down { + margin-left: auto; + padding-left: 13px; + object-fit: none; +} + +.version__text { + width: 100%; + text-align: center; +} + +.sidenav { + height: calc(100vh - (56px + 0.625rem * 2) - 20px); + top: calc(56px + 0.625rem * 2); + width: 300px; + position: sticky; + z-index: 1; + left: 0; + background-color: #141414; + overflow-x: hidden; + padding-top: 20px; +} + +.sidenav a { + padding: 6px 8px 6px 16px; + text-decoration: none; + font-size: 16px; + color: #565656; + display: block; +} + +a.active { + color: white !important; +} + +.sidenav a:hover { + color: #f1f1f1; +} + +.page-content { + padding: 0; + color: white !important; +} + +.content-container { + display: flex; +} + +.wrapper { + padding-top: 30px; + width: calc(1000px - 30px * 2); + max-width: calc(1000px - 30px * 2); +} + +.highlight { + background: #151515 !important; +} + +pre, +code { + background: #151515 !important; + border: none; +} + +h1, +h2, +h3, +figure { + margin-top: 50px; + padding-bottom: 0.2em; + border-bottom: 1px solid #464646; +} + +h4, +h5, +h5 { + margin-top: 30px; + border-bottom: 1px solid #464646; + padding-bottom: 0.2em; +} + +span.k { + color: #b87eb4; +} + +span.kd, +span.kr { + color: #4f85b2; +} + +span.nx { + color: #4dc4ab; +} + +span.nl { + color: #78a7bf; +} + +span.p, +span.o { + color: rgb(212, 212, 212); +} + +span.p { + margin-right: 4px; +} + +span.dl { + margin-left: 0px; +} + +.oauth-code { + padding: 15px; + background: #0c0c0c; + color: white; + font-size: 18px; + margin-top: 15px; + margin-left: 50px; + margin-right: 50px; + white-space: nowrap; + overflow: auto; +} + +.oauth-code::-webkit-scrollbar { + min-height: 28px !important; +} + +.oauth-code::-webkit-scrollbar-thumb { + min-width: 50px; +} + +.oauth-code::selection { + background: #1a66c9; +} + +.oauth-code::-moz-selection { + background: #1a66c9; +} + +.sidenav li { + list-style-image: url("../img/ellipse.svg"); + list-style: none; +} + +.arrow-li { + list-style-image: url("../img/ic_round-navigate-next.svg") !important; +} diff --git a/assets/css/style.css b/assets/css/style.css deleted file mode 100644 index 9021760..0000000 --- a/assets/css/style.css +++ /dev/null @@ -1,1223 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Lexend+Deca:wght@200;400;500;700;800&display=swap"); - -:root { - --green-primary: #65cb88; - --green-secondary: #80ed99; -} - -* { - margin: 0; - padding: 0; - text-decoration: none; - font-family: "Poppins", sans-serif; - scroll-behavior: smooth; - font-family: "Lexend Deca", sans-serif; -} - -body { - color: white; - overflow: overlay; - transition: color 0.2s ease-in; -} - -a { - color: inherit; -} - -.main { - min-height: 100vh; - display: block; - background-color: #212121; -} - -.nav__bar { - padding: 0.625rem 2rem; - background-color: #212121; - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - position: sticky; - top: 0; - background: rgba(33, 33, 33, 0.45); - box-shadow: 0 8px 32px 0 rgba(33, 33, 33, 0.37); - backdrop-filter: blur(15px); - -webkit-backdrop-filter: blur(15px); - z-index: 999; -} - -.login__navbar { - background-color: none; - background-image: linear-gradient( - 180deg, - rgba(40, 40, 40, 0.3), - rgba(86, 86, 86, 0.3) - ); -} - -.title__logo { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - cursor: pointer; -} - -.logo__img { - width: 3.5rem; - margin-right: 0.8rem; - object-fit: cover; -} - -.title { - font-family: "Lexend Deca", sans-serif; - font-size: 1.5rem; - color: white; -} - -.navbar__buttons { - width: 500px; - background-color: none; - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; -} - -.navigation__buttons { - background-color: inherit; - font-family: "Lexend Deca", sans-serif; - font-size: 1rem; - color: white; - border: none; - cursor: pointer; - transition: transform 250ms ease-in-out; -} - -.navigation__buttons::after { - display: block; - content: ""; - border-bottom: 2px solid #5bb67a; - transform: scaleX(0); -} - -.navigation__buttons:hover::after { - transform: scaleX(1); -} - -.navigation__buttons:focus::after { - transform: scaleX(1); -} - -#download__btn { - background-color: #5bb67a; - padding: 0.5rem 1.25rem; - color: black; - border-radius: 10px; -} - -#download__btn:hover { - border-bottom: none; - transform: scale(1.1); - transition: all 0.2s; -} - -#download__btn:focus { - border-bottom: none; -} - -/* ------------------------------------------------------------------ */ - -.moosync__navbar-mobileScreen { - display: none; - transition: 0.5s ease; -} - -#hamburger-open { - width: 30px; - height: 30px; -} - -.moosync__navbar-mobileScreen-overlayClose { - display: none; -} - -.moosync__navbar-mobileScreen-overlayOpen { - width: 100%; - height: 100vh; - position: fixed; - background-color: var(--color-primary-black); - flex-direction: column; - top: 0; - left: 0; - z-index: 999; -} - -.moosync__navbar-mobileScreen-links { - flex: 1; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - list-style-type: none; -} - -.moosync__navbar-mobileScreen-links li { - margin-top: 2rem; - font-size: 2rem; - color: var(--color-white); - text-align: center; - cursor: pointer; -} - -.moosync__navbar-mobileScreen-links li button { - margin-top: 3rem; - font-size: 2rem; -} - -.moosync__navbar-mobileScreen-links li:hover { - color: var(--color-text-green); -} - -#hamburger-close { - width: 30px; - height: 30px; - position: absolute; - top: 1.5rem; - right: 3rem; - cursor: pointer; -} - -/* ------------------------------------------------------------------ */ - -.moosync__navbar-mobileScreen { - display: none; -} - -#hamburger-open { - width: 30px; - height: 30px; -} - -.moosync__navbar-mobileScreen-overlayClose { - display: none; -} - -.moosync__navbar-mobileScreen-overlayOpen { - width: 100%; - height: 100vh; - display: flex; - justify-content: center; - align-items: center; - position: fixed; - background-color: #141414; - flex-direction: column; - top: 0; - left: 0; - transition: 0.5s ease; - z-index: 999; -} - -.moosync__navbar-mobileScreen-links { - flex: 1; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - list-style-type: none; -} - -.moosync__navbar-mobileScreen-links li { - margin-top: 2rem; - font-size: 2rem; - color: white; - text-align: center; - cursor: pointer; -} - -.moosync__navbar-mobileScreen-links li:hover { - color: var(--green-primary); -} - -#hamburger-close { - width: 30px; - height: 30px; - position: absolute; - top: 1.5rem; - right: 3rem; - cursor: pointer; -} - -.slide__bottom { - -webkit-animation: slide-bottom 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; - animation: slide-bottom 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; -} - -@-webkit-keyframes slide-bottom { - 0% { - -webkit-transform: translateY(-25%); - transform: translateY(-25%); - } - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes slide-bottom { - 0% { - -webkit-transform: translateY(-25%); - transform: translateY(-25%); - } - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -/* ------------------------------------------------------------------ */ - -.heading__page { - width: 100%; - padding: 3.25rem 0 3.125rem 0; - background-color: #212121; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-family: "Lexend Deca", sans-serif; -} - -#login__heading__page { - height: 90vh; - justify-content: flex-start; -} - -.info__text__1 { - text-transform: uppercase; - font-size: 1rem; - letter-spacing: 0.1rem; - color: white; -} - -#heading__info__text__1 { - color: var(--green-primary); -} - -.title__line { - width: 75%; - font-size: 5.5rem; - font-weight: 600; - color: white; - text-align: center; - line-height: 6.5rem; -} - -#login__title__line { - width: 500px; - margin-top: 7.5rem; - font-size: 1.75rem; - line-height: normal; - font-weight: normal; -} - -.circle__div__container { - width: 100%; - margin: 5rem 0; - display: flex; - align-items: center; - justify-content: center; - background-image: url("../img/headerbg.svg"); - background-repeat: no-repeat; - background-size: cover; - background-position: center; -} - -.circle__div { - margin: 2.5rem 0; - display: flex; - align-items: center; - justify-content: center; - border: 0.145rem dashed #65cb88; - border-radius: 50%; -} - -#circle__div__1 { - width: 50vw; - height: 50vw; - z-index: 3; -} - -#music__person__img { - width: 45vw; -} - -.music__person__img__container { - position: absolute; - z-index: 5; -} - -#circle__div__2 { - width: 75%; - height: 75%; -} - -#circle__div__3 { - padding: 4vw; - z-index: 10; - position: absolute; -} - -.playbutton__container { - position: relative; - transition: all 0.2s; -} - -.play__button__img { - display: block; - cursor: pointer; - width: 165px; -} - -.play__button__icon { - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - margin-left: auto; - margin-right: auto; - margin-top: auto; - margin-bottom: auto; - width: 30px; -} - -.playbutton__container:hover { - transform: scale(1.1); -} - -.buttons { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-evenly; -} - -.link__buttons { - padding: 10px 20px; - margin: 0 2.5rem; - background-color: #65cb88; - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - text-align: center; - font-family: "Lexend Deca", sans-serif; - font-size: 1.25rem; - color: black; - border: none; - border-radius: 10px; - cursor: pointer; - transition: all 0.2s; -} - -.link__buttons:hover { - transform: scale(1.1); -} - -.icons { - font-size: 2rem; - margin-right: 10px; - object-fit: cover; -} - -#discord__icon { - height: 1.5rem; - padding: 0.5rem 0; -} - -.moosync__usage { - padding: 5rem 0; - background-color: #141414; - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-between; -} - -.moosync__section__heading { - margin-bottom: 2.5rem; - display: block; - text-align: center; - font-size: 2rem; - color: white; -} - -.usage__icons__text { - width: 75%; - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-evenly; -} - -#usage__icons__text__mid { - width: 80%; - margin-bottom: 2rem; - justify-content: space-between; -} - -#usage__mid__img { - width: 40vw; - object-fit: cover; -} - -.usage { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - color: white; -} - -.usage__icons { - width: 5rem; - object-fit: cover; -} - -.info__text__4 { - width: 10rem; - padding: 1rem 0; - text-align: center; -} - -/* Video Section Style */ - -.moosync__video { - padding: 5rem 0; - background-color: #141414; - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-between; -} - -#video__info__text__1 { - width: 75%; - text-align: center; - text-transform: none; -} - -.moosync__video__player { - width: 75%; - height: 50%; - margin: 5rem 0; - border: none; - border-radius: 1rem; -} - -/* Video Section Style */ - -.moosync__numbers { - color: black; - padding: 5rem 0; - background-color: #212121; - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-between; -} - -.moosync__countbox__container { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - flex-wrap: wrap; -} - -.count__box { - width: 15rem; - height: 15rem; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - background-image: url("../img/hexagon.svg"); - background-repeat: no-repeat; - background-size: contain; - background-position: center; -} - -.count__box > p:first-child { - font-size: 1.9rem; - font-weight: 500; -} - -.count__box > p:last-child { - padding: 0.25rem 0; - font-size: 0.8rem; -} - -#moosync__numbers__button { - margin-top: 2rem; -} - -.footer__section { - padding: 3rem 2.5rem 1rem 2.5rem; - background-color: #141414; - display: flex; - flex-direction: column; - align-items: baseline; - justify-content: space-between; -} - -.footer__container { - width: 100%; - display: flex; - flex-direction: row; - align-items: initial; - justify-content: space-between; -} - -#footer__logo { - padding: 0; - margin-right: 1rem; -} - -.footer__content { - width: 100vw; - display: flex; - flex-direction: column; - align-items: flex-start; - justify-content: baseline; - font-family: "Lexend Deca", sans-serif; -} - -#left__footer__content { - margin-right: 15px; -} - -#right__footer__content { - width: fit-content; -} - -#right__footer__content__wrapper { - width: 100vw; - display: flex; - align-items: center; - justify-content: flex-end; - margin-left: 15px; -} - -.info__text__2 { - padding: 2.5rem 0; - display: block; - text-align: start; - font-size: 1.75rem; - color: var(--green-secondary); -} - -.info__text__3 { - padding-bottom: 1rem; - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - text-align: center; - font-family: "Lexend Deca", sans-serif; - font-weight: 200; - font-size: 1.3rem; - color: white; - border-bottom: 2px solid white; - cursor: pointer; - transition: all 0.2s; -} - -.info__text__3:hover #link__icon { - transform: scale(1.25); -} -#link__icon { - height: 0.75rem; - width: 0.75rem; - margin-left: 15px; - object-fit: cover; -} - -#footer__info__text__1 { - padding: 0; - color: white; -} - -.subscribe { - padding: 2.5rem 0; - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; -} - -.email__input { - width: 100%; - padding: 0.75rem 1.25rem; - font-family: "Lexend Deca", sans-serif; - font-size: 1rem; - border: none; - border-radius: 5px; -} - -.email__input:focus { - outline: none; -} - -#subscribe__button { - font-size: 1.25rem; - padding: 0.5rem 1rem; - border-radius: 5px; -} - -.general__info__links { - width: fit-content; - display: flex; - flex-direction: row; - align-items: flex-start; - justify-content: space-between; -} - -.footer__general { - display: block; - margin-right: 5rem; -} - -#right__footer__general { - width: fit-content; - margin: 0; -} - -#footer__info__text__heading { - color: white; - font-weight: 700; -} - -.general__info__link__list { - margin-top: 1rem; -} - -.list__items { - list-style-type: none; - font-size: 1rem; - font-family: "Lexend Deca", sans-serif; - font-weight: 200; - color: white; - line-height: 2rem; - cursor: pointer; -} - -.list__items:hover { - color: var(--green-secondary); -} - -#notice { - width: 60%; - margin: 1rem 0; - align-self: center; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: 0.75rem; - text-align: center; - color: #444444; -} - -#notice__text__container { - margin-top: 1rem; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - text-align: center; -} - -#copyright__text { - width: 100%; - display: block; - text-align: center; - font-family: "Lexend Deca", sans-serif; - font-weight: 300; - color: white; -} - -@media (max-width: 900px) { - .title__line { - width: 90%; - font-size: 10vw; - line-height: normal; - } - - #circle__div__1 { - width: 60vw; - height: 60vw; - } - - #music__person__img { - width: 63vw; - } - - .moosync__video__player { - width: 90%; - height: 50%; - } - - #usage__icons__text__mid { - flex-direction: column; - } - - #usage__mid { - margin: 2rem 0; - } - - #usage__mid__img { - width: 90vw; - } - - .subscribe { - width: max-content; - flex-direction: column; - align-items: flex-start; - justify-content: center; - } - - #subscribe__button { - margin: 0.5rem 0 0 0; - } - - .footer__general { - margin-right: 3rem; - } -} - -@media (max-width: 800px) { - .nav__bar { - position: relative; - top: auto; - } - - .title__logo { - margin: 1rem 0; - } - - .navigation__buttons { - margin: 5px 0; - } - - #download__btn { - padding: 0.25rem 0.5rem; - border-radius: 5px; - } - - .navbar__buttons { - display: none; - } - - .moosync__navbar-mobileScreen { - display: block; - } - - .footer__container { - flex-direction: column; - align-items: center; - justify-content: center; - } - - .footer__content { - width: 60vw; - align-items: center; - justify-content: center; - } - - #footer__info__text__1 { - text-align: center; - } - - #footer__info__text__2 { - text-align: center; - } - - .subscribe { - width: 100%; - align-items: center; - justify-content: center; - } - - .email__input { - width: 250px; - } - - #subscribe__button { - width: 290px; - } - - .general__info__links { - width: 100%; - justify-content: space-evenly; - } - - .footer__general { - margin: 0 1rem; - align-items: center; - justify-content: center; - text-align: center; - } - - #left__footer__content { - margin-bottom: 5rem; - margin-right: 0; - } - - #right__footer__content { - margin-left: 0; - } - - #right__footer__content__wrapper { - width: fit-content; - } - - #notice { - width: 80vw; - } -} - -@media (max-width: 550px) { - .navbar__buttons { - width: auto; - flex-direction: column; - justify-content: center; - } - - .title__logo { - flex-direction: column; - } - - #download__btn { - padding: 0.25rem 0.5rem; - margin-top: 10px; - border-radius: 5px; - } - - #heading__info__text__1 { - width: 80%; - text-align: center; - font-size: 0.75rem; - margin-bottom: 10px; - } - - #login__title__line { - width: 90%; - margin-top: 2.5rem; - } - - .circle__div__container { - margin: 2rem 0; - } - - #circle__div__1 { - width: 75vw; - height: 75vw; - } - - #music__person__img { - width: 78.75vw; - } - - #playButton { - width: 20vw; - } - - .link__buttons { - font-size: 5.5vw; - margin-bottom: 2rem; - } - - .buttons { - flex-direction: column; - } - - /* .moosync__video__player { - margin: 2rem; - } */ - - .moosync__section__heading { - width: 90vw; - } - - /* .usage__icons__text { - flex-direction: column; - } */ - - .usage { - margin: 2rem 0; - } - - /* .usage__icons { - width: 25vw; - } */ - - .list__items { - line-height: normal; - margin-bottom: 1rem; - } - - .email__input { - padding: 0.5rem 0.75rem; - } - - #subscribe__button { - width: 275px; - font-size: 1rem; - padding: 0.5rem 0.5rem; - } -} - -@media (max-width: 500px) { - #footer__info__text__2 { - font-size: 1.5rem; - } -} - -@media (max-width: 450px) { - .info__text__3 { - font-size: 0.9rem; - } - - #link__icon { - width: 0.5rem; - height: 0.5rem; - } -} - -@media (max-width: 350px) { - .email__input { - width: 75vw; - } - - #subscribe__button { - width: 82vw; - } - - .general__info__links { - flex-direction: column; - align-items: center; - justify-content: center; - } - - .footer__general { - margin: 0; - } - - #right__footer__general { - margin-top: 2rem; - } - - #notice { - width: 90vw; - } -} - -@media (max-width: 350px) { - .email__input { - width: 75vw; - } -} -.all_counts { - padding: 5rem 0; - background-color: #212121; -} -.count_matters_boxes { - padding-left: 12rem; - display: flex; - flex-direction: row; -} -.countimages { - height: 283px; - width: 283px; -} - -.other__platform { - color: rgb(153, 153, 153); - margin-top: 15px; - cursor: pointer; - user-select: none; -} - -[hidden] { - display: none !important; -} - -.modal { - display: none; - position: fixed; - z-index: 1; - left: 0; - top: 0; - width: 100%; - height: 100%; - overflow: hidden; - background-color: rgba(0,0,0,0.7); - z-index: 1000; -} - -.modal-content { - background-color: #141414; - margin: 15% auto; - border-radius: 16px; - width: 60%; - font-family: 'Lexend Deca'; - font-weight: 500; - font-size: 38px; - text-align: center; - color: #ffffff; -} - -.modal-content-text { - padding: 100px 20px 100px 20px; -} -#login-modal-platform-text-pre, #login-modal-platform-text-post { - text-transform: capitalize; -} - -.close { - color: #aaa; - float: right; - font-size: 28px; - font-weight: bold; - padding-right: 20px; - padding-top: 15px; - cursor: pointer; -} - -.close:hover, -.close:focus { - text-decoration: none; -} - -.login__button { - margin: auto; - margin-top: 30px; - padding: 15px; -} - -::-webkit-scrollbar, -::-webkit-scrollbar-thumb { - width: 26px; - border-radius: 13px; - background-clip: padding-box; - border: 10px solid transparent; - min-height: 50px; -} - -::-webkit-scrollbar-thumb { - box-shadow: inset 0 0 0 10px; - min-height: 40px; -} - -::-webkit-scrollbar-track { - background: transparent; -} - -.icon-linux, .icon-win, .icon-mac { - width:24px; - height:24px; - padding-right: 15px; - padding-top: 5px; - padding-bottom: 5px; -} - -.icon-linux::before, .icon-win::before, .icon-mac::before { - content: ''; - background-size:cover; - position:absolute; - width:24px; - height:24px; -} - -.icon-linux::before { - background: url('/assets/img/codicon_terminal-linux.svg'); -} - -.icon-win::before { - background: url('/assets/img/bi_windows.svg'); -} - -.icon-mac::before { - background: url('/assets/img/bi_apple.svg'); -} - - -.select__box { - display: flex; - flex-direction: column; - overflow: auto; -} - -.selected { - display: flex; - background: #65cb88; - border-radius: 8px; - margin-bottom: 8px; - color: black; - position: relative; - user-select: none; -} - -.select__box .options__container { - background-color: #141414; - color: #fff; - max-height: 0; - width: 100%; - opacity: 0; - transition: all 0.4s; - border-radius: 8px; - overflow: hidden; - order: 1; -} - -.select__box .option:hover { - color: black; -} - -.select__box .options__container.options__active { - max-height: 240px; - opacity: 1; -} - -.select__box .options__container.options__active + .selected::after { - transform: rotateX(180deg); - top: -6px; -} - -.select__box .option, -.selected { - padding: 12px 24px; - cursor: pointer; -} - -.select__box .option:hover, -.selected:hover { - background-color: #65cb88; -} - -.download__text { - padding-top: 10px; - padding-bottom: 10px; -} - -.arrow__down { - margin-left: auto; - padding-left: 13px; -} - -.version__text { - width: 100%; - text-align: center; -} diff --git a/assets/css/svggg.html b/assets/css/svggg.html new file mode 100644 index 0000000..6b8a253 --- /dev/null +++ b/assets/css/svggg.html @@ -0,0 +1,55 @@ + + + + + + + +untitled document + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/img/Architecture Diagram.jpeg b/assets/img/Architecture Diagram.jpeg new file mode 100644 index 0000000..485dce5 Binary files /dev/null and b/assets/img/Architecture Diagram.jpeg differ diff --git a/assets/img/arrow-down.svg b/assets/img/arrow-down.svg index aaf2826..5198344 100644 --- a/assets/img/arrow-down.svg +++ b/assets/img/arrow-down.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/assets/img/bi_apple.svg b/assets/img/bi_apple.svg index 0a7b00a..39f4dfb 100644 --- a/assets/img/bi_apple.svg +++ b/assets/img/bi_apple.svg @@ -1,11 +1 @@ - - - - - - - - - - - + \ No newline at end of file diff --git a/assets/img/bi_windows.svg b/assets/img/bi_windows.svg index 3fe7178..171c2cd 100644 --- a/assets/img/bi_windows.svg +++ b/assets/img/bi_windows.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/assets/img/cloud_console_cred_authorized_redirect.png b/assets/img/cloud_console_cred_authorized_redirect.png new file mode 100644 index 0000000..7861028 Binary files /dev/null and b/assets/img/cloud_console_cred_authorized_redirect.png differ diff --git a/assets/img/cloud_console_cred_js_origins.png b/assets/img/cloud_console_cred_js_origins.png new file mode 100644 index 0000000..967d39a Binary files /dev/null and b/assets/img/cloud_console_cred_js_origins.png differ diff --git a/assets/img/cloud_console_new_app.png b/assets/img/cloud_console_new_app.png new file mode 100644 index 0000000..c77d326 Binary files /dev/null and b/assets/img/cloud_console_new_app.png differ diff --git a/assets/img/cloud_console_oauth_app_details.png b/assets/img/cloud_console_oauth_app_details.png new file mode 100644 index 0000000..b782eb7 Binary files /dev/null and b/assets/img/cloud_console_oauth_app_details.png differ diff --git a/assets/img/cloud_console_oauth_authorized_domain.png b/assets/img/cloud_console_oauth_authorized_domain.png new file mode 100644 index 0000000..1f807dd Binary files /dev/null and b/assets/img/cloud_console_oauth_authorized_domain.png differ diff --git a/assets/img/cloud_console_oauth_consent.png b/assets/img/cloud_console_oauth_consent.png new file mode 100644 index 0000000..ac32a2e Binary files /dev/null and b/assets/img/cloud_console_oauth_consent.png differ diff --git a/assets/img/cloud_console_oauth_scope.png b/assets/img/cloud_console_oauth_scope.png new file mode 100644 index 0000000..6e94216 Binary files /dev/null and b/assets/img/cloud_console_oauth_scope.png differ diff --git a/assets/img/cloud_console_search_api.png b/assets/img/cloud_console_search_api.png new file mode 100644 index 0000000..082ecd7 Binary files /dev/null and b/assets/img/cloud_console_search_api.png differ diff --git a/assets/img/codicon_terminal-linux.svg b/assets/img/codicon_terminal-linux.svg index cabc435..fbeff90 100644 --- a/assets/img/codicon_terminal-linux.svg +++ b/assets/img/codicon_terminal-linux.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/assets/img/discordLogo.svg b/assets/img/discordLogo.svg index f3d4ecc..8e28227 100644 --- a/assets/img/discordLogo.svg +++ b/assets/img/discordLogo.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/assets/img/ellipse.svg b/assets/img/ellipse.svg new file mode 100644 index 0000000..aa5d6c4 --- /dev/null +++ b/assets/img/ellipse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/githubIcon.svg b/assets/img/githubIcon.svg new file mode 100644 index 0000000..d4b36cf --- /dev/null +++ b/assets/img/githubIcon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/hamburgerCloseIcon.svg b/assets/img/hamburgerCloseIcon.svg index ceca167..44933b0 100644 --- a/assets/img/hamburgerCloseIcon.svg +++ b/assets/img/hamburgerCloseIcon.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/assets/img/hamburgerIcon.svg b/assets/img/hamburgerIcon.svg index 8e2e83b..450893f 100644 --- a/assets/img/hamburgerIcon.svg +++ b/assets/img/hamburgerIcon.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/assets/img/headerbg.svg b/assets/img/headerbg.svg index 98b66a3..420150e 100644 --- a/assets/img/headerbg.svg +++ b/assets/img/headerbg.svg @@ -1,73 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/assets/img/hexagon-hover.svg b/assets/img/hexagon-hover.svg new file mode 100644 index 0000000..d43500d --- /dev/null +++ b/assets/img/hexagon-hover.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/assets/img/hexagon.svg b/assets/img/hexagon.svg index 41ec384..2a449aa 100644 --- a/assets/img/hexagon.svg +++ b/assets/img/hexagon.svg @@ -1,28 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/assets/img/ic_round-navigate-next.svg b/assets/img/ic_round-navigate-next.svg new file mode 100644 index 0000000..5d0f624 --- /dev/null +++ b/assets/img/ic_round-navigate-next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/laptopbg.png b/assets/img/laptopbg.png new file mode 100644 index 0000000..b2d70fc Binary files /dev/null and b/assets/img/laptopbg.png differ diff --git a/assets/img/laptopbg.svg b/assets/img/laptopbg.svg deleted file mode 100644 index 4c3e9c7..0000000 --- a/assets/img/laptopbg.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/img/link.svg b/assets/img/link.svg index 5a99238..13af6bf 100644 --- a/assets/img/link.svg +++ b/assets/img/link.svg @@ -1,4 +1 @@ - - - - + \ No newline at end of file diff --git a/assets/img/logo.svg b/assets/img/logo.svg index 4c071c2..eec3a4b 100644 --- a/assets/img/logo.svg +++ b/assets/img/logo.svg @@ -1,14 +1,19 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/assets/img/musicbutton.svg b/assets/img/musicbutton.svg index 8b16b55..93442e2 100644 --- a/assets/img/musicbutton.svg +++ b/assets/img/musicbutton.svg @@ -1,42 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/assets/img/pausebutton.svg b/assets/img/pausebutton.svg index 50270c5..843e44d 100644 --- a/assets/img/pausebutton.svg +++ b/assets/img/pausebutton.svg @@ -1,4 +1 @@ - - - - + \ No newline at end of file diff --git a/assets/img/person.png b/assets/img/person.png index ac0a999..786d4f4 100644 Binary files a/assets/img/person.png and b/assets/img/person.png differ diff --git a/assets/img/playbutton.svg b/assets/img/playbutton.svg index 022baf9..e64798a 100644 --- a/assets/img/playbutton.svg +++ b/assets/img/playbutton.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/assets/img/preview.png b/assets/img/preview.png new file mode 100644 index 0000000..186b633 Binary files /dev/null and b/assets/img/preview.png differ diff --git a/assets/img/usageIcon1.svg b/assets/img/usageIcon1.svg index 4f9cdeb..1980246 100644 --- a/assets/img/usageIcon1.svg +++ b/assets/img/usageIcon1.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/assets/img/usageIcon2.svg b/assets/img/usageIcon2.svg index 09871a6..8fb0ac0 100644 --- a/assets/img/usageIcon2.svg +++ b/assets/img/usageIcon2.svg @@ -1,4 +1 @@ - - - - + \ No newline at end of file diff --git a/assets/img/usageIcon3.svg b/assets/img/usageIcon3.svg index ad7930b..5e2ae92 100644 --- a/assets/img/usageIcon3.svg +++ b/assets/img/usageIcon3.svg @@ -1,4 +1 @@ - - - - + \ No newline at end of file diff --git a/assets/img/usageIcon4.svg b/assets/img/usageIcon4.svg index a69f65e..3df5edf 100644 --- a/assets/img/usageIcon4.svg +++ b/assets/img/usageIcon4.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/assets/img/usageIcon5.svg b/assets/img/usageIcon5.svg index d216cbf..14fe0b1 100644 --- a/assets/img/usageIcon5.svg +++ b/assets/img/usageIcon5.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/assets/img/usageIcon6.svg b/assets/img/usageIcon6.svg index feaa6c9..8795f6e 100644 --- a/assets/img/usageIcon6.svg +++ b/assets/img/usageIcon6.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/assets/js/commonUtils.js b/assets/js/commonUtils.js index af2f0a2..c9ab3d7 100644 --- a/assets/js/commonUtils.js +++ b/assets/js/commonUtils.js @@ -18,3 +18,17 @@ export function shouldRegenRequest(cache) { export function setCache(name, data) { localStorage.setItem(name, JSON.stringify(data)); } + +export const setElemProperty = (id, prop, value) => { + const elem = document.getElementById(id); + if (elem) { + elem[prop] = value; + } +}; + +export const callElemMethod = (id, prop, ...obj) => { + const elem = document.getElementById(id); + if (elem) { + elem[prop](...obj); + } +}; diff --git a/assets/js/counterUtils.js b/assets/js/counterUtils.js index 20cd15d..8047f58 100644 --- a/assets/js/counterUtils.js +++ b/assets/js/counterUtils.js @@ -1,70 +1,116 @@ -import { shouldRegenRequest, getExpiryTime, setCache } from './commonUtils.js' +import { shouldRegenRequest, getExpiryTime, setCache } from "./commonUtils.js"; +import { setElemProperty } from "./commonUtils.js"; // TODO: fetch this from all-contributors spec -const noCodeContributorsCount = 3 +const noCodeContributorsCount = 3; + +async function getGithubDownloadCount() { + const data = localStorage.getItem("downloads_counter"); + let shouldRegen = true; + if (data != null) { + const cache = JSON.parse(data); + shouldRegen = shouldRegenRequest(cache); + } + + if (shouldRegen) { + const resp = await ( + await fetch("https://api.github.com/repos/Moosync/Moosync/releases") + ).json(); -async function getGithubDownloadCount () { - const cache = JSON.parse(localStorage.getItem('downloads_counter')) + const resp1 = await ( + await fetch( + "https://api.github.com/repos/Moosync/Moosync-electron/releases", + ) + ).json(); - if (shouldRegenRequest(cache)) { - const resp = await (await fetch('https://api.github.com/repos/Moosync/Moosync/releases')).json() + const consolidated = [...resp, ...resp1]; + console.log(consolidated); - let downloadCount = 0 + let downloadCount = 0; - for (const release of resp) { + for (const release of consolidated) { for (const asset of release.assets) { - if (!asset.name.match('blockmap|yml')) - downloadCount += asset.download_count + if (!asset.name.match("blockmap|yml|json")) + downloadCount += asset.download_count; } } - setCache('downloads_counter', { count: downloadCount, expiry: getExpiryTime() }) - return downloadCount + setCache("downloads_counter", { + count: downloadCount, + expiry: getExpiryTime(), + }); + return downloadCount; } - return cache.count + return JSON.parse(data).count; } -async function getGithubContributorsCount () { - const cache = JSON.parse(localStorage.getItem('contributors_counter')) +async function getGithubContributorsCount() { + const data = localStorage.getItem("contributors_counter"); + let shouldRegen = true; + if (data != null) { + const cache = JSON.parse(data); + shouldRegen = shouldRegenRequest(cache); + } - if (shouldRegenRequest(cache)) { + if (shouldRegen) { //TODO: Workaround rate limitation - const resp = await (await fetch('https://api.github.com/orgs/Moosync/repos')).json() + const resp = await ( + await fetch("https://api.github.com/orgs/Moosync/repos") + ).json(); - let contributors = {} + let contributors = {}; for (const repo of resp) { - const resp = await (await fetch(`https://api.github.com/repos/Moosync/${repo.name}/contributors`)).json() + const resp = await ( + await fetch( + `https://api.github.com/repos/Moosync/${repo.name}/contributors`, + ) + ).json(); + for (const contri of resp) { - contributors[contri.id] = 1 + contributors[contri.id] = 1; } } - setCache('contributors_counter', { count: Object.keys(contributors).length, expiry: getExpiryTime() }) - return Object.keys(contributors).length + setCache("contributors_counter", { + count: Object.keys(contributors).length, + expiry: getExpiryTime(), + }); + return Object.keys(contributors).length; } - return cache.count + return JSON.parse(data).count; } -async function getDiscordCount () { - const resp = await (await fetch('https://discord.com/api/guilds/919246266167332894/widget.json')).json() - return resp.members.length || 0 +async function getDiscordCount() { + const resp = await ( + await fetch("https://discord.com/api/guilds/919246266167332894/widget.json") + ).json(); + return resp.members.length || 0; } -export function setupCounters () { +export function setupCounters() { (async () => { - const downloadsCounter = document.getElementById('downloads__count') - downloadsCounter.innerHTML = Math.floor((await getGithubDownloadCount()) / 10) * 10 + '+' + setElemProperty( + "downloads__count", + "innerHTML", + Math.floor((await getGithubDownloadCount()) / 10) * 10 + "+", + ); })(); (async () => { - const activeContributorsCount = document.getElementById('contri__count') - activeContributorsCount.innerHTML = ((await getGithubContributorsCount()) + noCodeContributorsCount) + "+" + setElemProperty( + "contri__count", + "innerHTML", + (await getGithubContributorsCount()) + noCodeContributorsCount + "+", + ); })(); (async () => { - const discordCount = document.getElementById('discord__count') - discordCount.innerHTML = (await getDiscordCount()) + "+" + setElemProperty( + "discord__count", + "innerHTML", + (await getDiscordCount()) + "+", + ); })(); -} \ No newline at end of file +} diff --git a/assets/js/domUtils.js b/assets/js/domUtils.js index 57e8f5c..2015aa1 100644 --- a/assets/js/domUtils.js +++ b/assets/js/domUtils.js @@ -3,86 +3,153 @@ import { getProviderFromURL, getProviderRedirectURL, getQueryParams, -} from "./locationUtils.js"; +} from './locationUtils.js'; +import { setElemProperty, callElemMethod } from './commonUtils.js'; export function setupPageFunctionality () { - document.body.onscroll = disableScrolling + enableScrolling() document.body.onmousewheel = enableScrolling - const music = document.getElementById("music"); - music.volume = 0.2; - const playButton = document.getElementById("playButton"); - const playButtonIcon = document.getElementById("playButtonIcon"); - let isPlaying = false; + // Approximately + const scrollBarWidth = 16 - const playPause = () => { - if (!isPlaying) { - isPlaying = true; + document.onmousedown = (e) => { + if (document.body.clientWidth <= e.clientX + scrollBarWidth) { + enableScrolling(false) + } + } - music.play(); - playButton.title = "Pause"; - playButtonIcon.src = "./assets/img/pausebutton.svg"; + let mouseMoveScrollEnabled = false + document.onmousemove = (e) => { + if (e.clientX >= document.body.clientWidth - scrollBarWidth) { + enableScrolling(false) + mouseMoveScrollEnabled = true } else { - isPlaying = false; + if (mouseMoveScrollEnabled) { + enableScrolling(true) + mouseMoveScrollEnabled = false + } + } + } + + document.onmouseup = enableScrolling + + - music.pause(); - playButton.title = "Play"; - playButtonIcon.src = "./assets/img/playbutton.svg"; + const music = document.getElementById('music'); + if (music) { + music.volume = 0.2; + } + + const playButtonContainer = document.getElementsByClassName('playbutton__container')[0]; + const playButton = document.getElementById('playButton'); + const playButtonIcon = document.getElementById('playButtonIcon'); + let isPlaying = false; + + const playPause = () => { + if (playButton && playButtonIcon) { + if (!isPlaying) { + isPlaying = true; + music.src = 'https://res.cloudinary.com/thepranaygupta/video/upload/v1643119296/moosync/bg-music_x3sspk.mp3' + music.play(); + playButton.title = 'Pause'; + playButtonIcon.src = './assets/img/pausebutton.svg'; + } else { + isPlaying = false; + + music.pause(); + playButton.title = 'Play'; + playButtonIcon.src = './assets/img/playbutton.svg'; + } } }; - playButton.onclick = playPause; + if (playButtonContainer) { + playButtonContainer.onclick = playPause; + } - document.getElementById("download__btn").onclick = () => { - document.getElementById("downloads").scrollIntoView({ - behavior: "smooth", - block: "center", - inline: "center", + setElemProperty('download__btn', 'onclick', () => { + callElemMethod('downloads', 'scrollIntoView', { + behavior: 'smooth', + block: 'center', + inline: 'center', }); - }; + }); - document.getElementById('hamburger-close').onclick = overlayHandler.bind(this) - document.getElementById('hamburger-open').onclick = overlayHandler.bind(this) + setElemProperty('hamburger-close', 'onclick', overlayHandler.bind(this)) + setElemProperty('hamburger-open', 'onclick', overlayHandler.bind(this)) - document.getElementById('home').onclick = overlayHandler.bind(this) - document.getElementById('privacy').onclick = overlayHandler.bind(this) - document.getElementById('documentation').onclick = overlayHandler.bind(this) - document.getElementById('download').onclick = overlayHandler.bind(this) + setElemProperty('home', 'onclick', overlayHandler.bind(this)) + setElemProperty('privacy', 'onclick', overlayHandler.bind(this)) + setElemProperty('documentation', 'onclick', overlayHandler.bind(this)) + setElemProperty('download', 'onclick', overlayHandler.bind(this)) } let toggleStatus = true; export function setupLoginModalFunctionality () { - const loginModal = document.getElementById('login-modal') - const loginModalPreLogin = document.getElementById('login-modal-prelogin') - const loginModalPostLogin = document.getElementById('login-modal-postlogin') - - const loginModalCloseButton = document.getElementById('login-modal-close') - const loginModalPlatformTextPost = document.getElementById('login-modal-platform-text-post') - const loginModalPlatformTextPre = document.getElementById('login-modal-platform-text-pre') - const loginButton = document.getElementById('login-button') - const providerMatch = getProviderFromURL()[0]; if (providerMatch) { const color = getProviderColor(providerMatch) - loginModalPlatformTextPost.innerHTML = providerMatch - loginModalPlatformTextPost.style.color = color - loginModalPlatformTextPre.innerHTML = providerMatch - loginModalPlatformTextPre.style.color = color + const loginModal = document.createElement('div') + loginModal.classList.add('modal') + loginModal.id = 'login-modal' + loginModal.innerHTML = ` + ` + + const body = document.getElementById('body') + body.append(loginModal) + + const loginButton = document.getElementById('login-button') + const loginModalPostLogin = document.getElementById('login-modal-postlogin') + const loginModalPreLogin = document.getElementById('login-modal-prelogin') + const closeButton = document.getElementById('login-modal-close') + + + if (loginModalPostLogin, loginModalPreLogin, providerMatch) { + // Try to open popup + openPopupAndHandleModal(loginModalPostLogin, loginModalPreLogin, providerMatch, false) + } - // Try to open popup - openPopupAndHandleModal(loginModalPostLogin, loginModalPreLogin, providerMatch, false) + if (loginButton) { + loginButton.style.backgroundColor = color + loginButton.onclick = () => openPopupAndHandleModal(loginModalPostLogin, loginModalPreLogin, providerMatch, true) + } - loginButton.style.backgroundColor = color - loginButton.onclick = () => openPopupAndHandleModal(loginModalPostLogin, loginModalPreLogin, providerMatch, true) + if (closeButton) { + closeButton.onclick = () => loginModal.style.display = 'none' + } - loginModal.style.display = "block" + if (loginModal) { + loginModal.style.display = 'block' + } } - - loginModalCloseButton.onclick = () => loginModal.style.display = "none" } function openPopupAndHandleModal (loginModalPostLogin, loginModalPreLogin, provider, showWarning) { @@ -96,7 +163,7 @@ function openPopupAndHandleModal (loginModalPostLogin, loginModalPreLogin, provi } function openMoosync (provider, showWarning) { - const res = window.open("moosync://" + getProviderRedirectURL(provider) + getQueryParams()) + const res = window.open('moosync://' + getProviderRedirectURL(provider) + getQueryParams()) if (res) { window.history.replaceState(null, null, '/') } else { @@ -109,35 +176,35 @@ function openMoosync (provider, showWarning) { } function overlayHandler () { - const overlayElement = document.getElementById("menu-overlay"); - - if (toggleStatus) { - overlayElement.classList.remove( - "moosync__navbar-mobileScreen-overlayClose" - ); - overlayElement.classList.add("moosync__navbar-mobileScreen-overlayOpen"); - toggleStatus = false; - } else { - overlayElement.classList.remove("moosync__navbar-mobileScreen-overlayOpen"); - overlayElement.classList.add("moosync__navbar-mobileScreen-overlayClose"); - toggleStatus = true; + const overlayElement = document.getElementById('menu-overlay'); + + if (overlayElement) { + if (toggleStatus) { + overlayElement.classList.remove( + 'moosync__navbar-mobileScreen-overlayClose' + ); + overlayElement.classList.add('moosync__navbar-mobileScreen-overlayOpen'); + toggleStatus = false; + } else { + overlayElement.classList.remove('moosync__navbar-mobileScreen-overlayOpen'); + overlayElement.classList.add('moosync__navbar-mobileScreen-overlayClose'); + toggleStatus = true; + } } } let scrollTimeout -function disableScrolling () { - if (!scrollTimeout) { +function enableScrolling (enableTimeout = true) { + if (scrollTimeout) { + clearTimeout(scrollTimeout) + } + + if (enableTimeout) { scrollTimeout = setTimeout(function () { document.body.style.color = 'transparent'; }, 1000); } -} -function enableScrolling () { - if (scrollTimeout) { - clearTimeout(scrollTimeout) - scrollTimeout = undefined - } document.body.style.color = 'white'; } \ No newline at end of file diff --git a/assets/js/downloadUtils.js b/assets/js/downloadUtils.js index 430b80b..b573b4a 100644 --- a/assets/js/downloadUtils.js +++ b/assets/js/downloadUtils.js @@ -1,4 +1,10 @@ -import { shouldRegenRequest, getExpiryTime, setCache } from "./commonUtils.js"; +import { + shouldRegenRequest, + getExpiryTime, + setCache, + callElemMethod, + setElemProperty, +} from "./commonUtils.js"; const OSEnum = Object.freeze({ WINDOWS: "win", @@ -7,7 +13,7 @@ const OSEnum = Object.freeze({ UNDEFINED: "undefined", }); -function getOS () { +function getOS() { // Lets be safe and get platform from deprecated field too // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/platform const platform = ( @@ -19,7 +25,7 @@ function getOS () { return OSEnum.WINDOWS; } - if (platform.startsWith("mac") || platform.match("darwin")) { + if (platform.match("mac") || platform.match("darwin")) { return OSEnum.MACOS; } @@ -30,7 +36,7 @@ function getOS () { return OSEnum.UNDEFINED; } -function getReaderFriendlyName (os) { +function getReaderFriendlyName(os) { switch (os) { case OSEnum.WINDOWS: return "Windows"; @@ -41,32 +47,92 @@ function getReaderFriendlyName (os) { } } -function getLatestAsset (os, assets) { - return assets.filter( - (val) => !val.name.match("blockmap|yml") && val.name.match(os) - ); +function getLatestAsset(os, assets) { + console.debug(os, assets); + const extensions = { + linux: ["deb", "rpm", "AppImage"], + win: ["exe", "msi"], + macos: ["dmg"], + }; + + const extension = extensions[os]; + + return assets.filter((val) => { + for (const ext of extension) { + if (val.name.endsWith(ext)) { + return true; + } + } + return false; + }); } -async function getReleaseInfo (os) { - const cache = JSON.parse(localStorage.getItem("artifacts")); +async function getReleaseInfo(os, currentArch) { + let cache = JSON.parse(localStorage.getItem("artifacts")); + + // Check if cache is missing required fields + let cacheInvalid = false; + if ( + !cache || + !cache.data || + !cache.platform || + !Array.isArray(cache.data) || + cache.data.some( + (r) => + typeof r.version === "undefined" || + typeof r.url === "undefined" || + typeof r.ext === "undefined" || + !("arch" in r), + ) + ) { + cacheInvalid = true; + localStorage.removeItem("artifacts"); + cache = null; + } - if (shouldRegenRequest(cache) || cache.platform !== os) { + if (cacheInvalid || shouldRegenRequest(cache) || cache.platform !== os) { const resp = await ( await fetch("https://api.github.com/repos/Moosync/Moosync/releases") ).json(); + console.debug("got assets resp", resp); if (resp.length > 0) { const latest = resp[0]; const downloadAssets = getLatestAsset(os, latest.assets); const ret = []; for (const asset of downloadAssets) { - ret.push({ - version: latest.name, - url: asset.browser_download_url, - ext: extractExtension(asset.name), - }); + const ext = extractExtension(asset.name); + let arch = null; + const url = asset.browser_download_url; + + // Special case for rpm: Moosync-11.0.2-1.aarch64.rpm + let match = url.match(/\.([^.]+)\.rpm$/i); + if (match && match[1]) { + arch = sanitizeArch(match[1]); + } else if ( + (match = url.match(/Moosync_([\w\d]+)\.app\.tar\.gz$/i)) && + match[1] + ) { + arch = sanitizeArch(match[1]); + } else if ((match = url.match(/_([\w\d]+)(?=\.[^.]+$)/i)) && match[1]) { + arch = sanitizeArch(match[1]); + } + + console.debug(arch, currentArch, ext, url); + if (arch === currentArch || !arch) { + ret.push({ + version: latest.name.replace("Moosync", "").trim(), + url: url, + ext: ext, + arch: arch, + }); + } } - setCache("artifacts", { platform: os, data: ret, expiry: getExpiryTime() }); + setCache("artifacts", { + platform: os, + data: ret, + expiry: getExpiryTime(), + }); return ret; } } @@ -74,7 +140,7 @@ async function getReleaseInfo (os) { return cache.data; } -function getIconClass (os) { +function getIconClass(os) { switch (os) { case OSEnum.WINDOWS: return "icon-win"; @@ -85,86 +151,162 @@ function getIconClass (os) { } } -function extractExtension (fileName) { +function extractExtension(fileName) { const split = fileName.split("."); - if (split.at(-1) !== "gz") { - return split.at(-1); + if (split[split.length - 1] !== "gz") { + return split[split.length - 1]; } - return split.at(-2) + "." + split.at(-1); + return split[split.length - 2] + "." + split[split.length - 1]; } -function getSanitizedLinuxName (ext) { - switch (ext) { - case 'deb': - return 'Debian (.deb)' - case 'pacman': - return 'Arch Linux (.pacman)' - default: - return ext +function sanitizeArch(arch) { + if (arch === "amd64" || arch === "x86_64") { + return "x64"; + } else if (arch === "aarch64") { + return "armv8"; } + return arch; } -export async function setupDownloadButton () { - const os = getOS(); - const downloadParent = document.getElementById("downloads"); - - if (os && os !== OSEnum.UNDEFINED) { - const releases = await getReleaseInfo(os); - - if (releases.length === 1) { - const release = releases[0] - const buttonTemplate = document.getElementById("download-template-single").content; - const clone = buttonTemplate.cloneNode(true); - const button = clone.getElementById("download-button"); - - button.title = button.title.replace("${os}", getReaderFriendlyName(os)); - button.innerHTML = button.innerHTML.replace( - "${version}", - `${release.version}` - ); - button.id = `${release.version} ${release.ext}` +function getCurrentArch() { + if (navigator.userAgentData && navigator.userAgentData.architecture) { + return sanitizeArch(navigator.userAgentData.architecture); + } - clone.getElementById("download-icon").classList.add(getIconClass(os)); - downloadParent.appendChild(document.importNode(clone, true)); + const ua = navigator.userAgent.toLowerCase(); + const platform = navigator.platform.toLowerCase(); - document.getElementById(`${release.version} ${release.ext}`).onclick = () => window.open(release.url) + if (ua.includes("arm") || platform.includes("arm")) { + if (ua.includes("aarch64") || platform.includes("aarch64")) { + return "armv8"; } + return "arm"; + } + if ( + ua.includes("x86_64") || + ua.includes("win64") || + platform.includes("x86_64") || + platform.includes("win64") + ) { + return "x64"; + } + if (ua.includes("amd64") || platform.includes("amd64")) { + return "x64"; + } + if ( + ua.includes("i686") || + ua.includes("i386") || + platform.includes("i686") || + platform.includes("i386") + ) { + return "x86"; + } + return "unknown"; +} - if (releases.length > 1) { - const buttonTemplate = document.getElementById('download-template-multi').content - const clone = buttonTemplate.cloneNode(true) - - const downloadText = clone.getElementById('download-text') - downloadText.innerHTML = downloadText.innerHTML.replace('${version}', releases[0].version) - - downloadParent.appendChild(document.importNode(clone, true)); - - const optionsContainer = document.getElementById('options-container') - - for (const release of releases) { - const optionDiv = document.createElement('div') - optionDiv.classList.add('option') - optionDiv.innerHTML = `${getSanitizedLinuxName(release.ext)}` - optionsContainer.appendChild(optionDiv) +function getSanitizedLinuxName(release) { + let name; + let ext = release.ext; + let arch = release.arch; - optionDiv.onclick = () => window.open(release.url) - } + switch (ext) { + case "deb": + name = "Debian (.deb)"; + break; + case "pacman": + name = "Arch Linux (.pacman)"; + break; + case "rpm": + name = "Fedora (.rpm)"; + break; + case "AppImage": + name = "AppImage"; + break; + default: + name = ext; + } + return arch ? `${name} (${arch})` : name; +} - const selected = document.querySelector('.selected'); +function getSanitizedName(release) { + if ( + release.url.includes("rpm") || + release.url.includes("deb") || + release.url.includes("AppImage") + ) { + return getSanitizedLinuxName(release); + } - selected.addEventListener("click", () => { - optionsContainer.classList.toggle("options__active"); - }) + const match = release.url.match(/^.*\/.*-\d+\.\d+\.\d+-([^.]*)\.(.*)$/); - } + return match && match.length === 3 ? `${match[1]}.${match[2]}` : release.ext; +} - } else { - downloadParent.innerHTML = - "Sorry Moosync is not available for your platform yet"; +export async function setupDownloadButton() { + const os = getOS(); + const downloadParent = document.getElementById("downloads"); + const currentArch = getCurrentArch(); + + if (!(os && os !== OSEnum.UNDEFINED)) { + setElemProperty( + "downloads", + "innerHTML", + "Sorry Moosync is not available for your platform yet", + ); + return; } - document.getElementById('other-download').onclick = () => { - window.open('https://github.com/Moosync/Moosync/releases/latest') + const releases = await getReleaseInfo(os, currentArch); + const osReadable = getReaderFriendlyName(os); + + if (releases.length === 0) return; + + if (releases.length === 1) { + const release = releases[0]; + const clone = document + .getElementById("download-template-single") + .content.cloneNode(true); + const button = clone.getElementById("download-button"); + + button.title = button.title.replace("${os}", osReadable); + button.innerHTML = button.innerHTML.replace( + "${version}", + `${release.version}`, + ); + button.id = `${release.version} ${release.ext}`; + clone.getElementById("download-icon").classList.add(getIconClass(os)); + + callElemMethod( + "downloads", + "appendChild", + document.importNode(clone, true), + ); + document.getElementById(button.id).onclick = () => window.open(release.url); + return; } + + // Multi-release UI + const clone = document + .getElementById("download-template-multi") + .content.cloneNode(true); + const downloadText = clone.getElementById("download-text"); + downloadText.innerHTML = downloadText.innerHTML + .replace("${version}", releases[0].version) + .replace("${os}", osReadable); + + callElemMethod("downloads", "appendChild", document.importNode(clone, true)); + const optionsContainer = document.getElementById("options-container"); + + releases.forEach((release) => { + const optionDiv = document.createElement("div"); + optionDiv.classList.add("option"); + optionDiv.innerHTML = getSanitizedName(release); + optionDiv.onclick = () => window.open(release.url); + optionsContainer.appendChild(optionDiv); + }); + + document.querySelector(".selected").addEventListener("click", () => { + optionsContainer.classList.toggle("options__active"); + }); } diff --git a/assets/js/locationUtils.js b/assets/js/locationUtils.js index 2c4d01f..3ce820a 100644 --- a/assets/js/locationUtils.js +++ b/assets/js/locationUtils.js @@ -1,10 +1,11 @@ export function getProviderFromURL () { - return window.location.pathname.match('youtube|spotify|lastfm') || [] + return window.location.pathname.match('youtube|spotify|lastfm|invidious') || [] } export function getProviderColor (provider) { switch (provider) { case 'youtube': + case 'invidious': return '#E62017' case 'spotify': return '#1ED760' @@ -25,5 +26,7 @@ export function getProviderRedirectURL (provider) { return 'spotifyoauthcallback' case 'lastfm': return 'lastfmCallback' + case 'invidious': + return 'invidiousCallback' } -} \ No newline at end of file +} diff --git a/docs/assets/search.js b/docs/assets/search.js index 6c47081..6b610d3 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = {"kinds":{"2":"Module","32":"Variable","256":"Interface","1024":"Property","2048":"Method","65536":"Type literal","4194304":"Type alias"},"rows":[{"id":0,"kind":2,"name":"index","url":"modules/index.html","classes":"tsd-kind-module"},{"id":1,"kind":32,"name":"EXTENSION_ENTRY_POINT","url":"modules/index.html#EXTENSION_ENTRY_POINT","classes":"tsd-kind-variable tsd-parent-kind-module","parent":"index"},{"id":2,"kind":256,"name":"ExtensionData","url":"interfaces/index.ExtensionData.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"index"},{"id":3,"kind":1024,"name":"extensionDescriptors","url":"interfaces/index.ExtensionData.html#extensionDescriptors","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"index.ExtensionData"},{"id":4,"kind":256,"name":"Checkbox","url":"interfaces/index.Checkbox.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"index"},{"id":5,"kind":1024,"name":"key","url":"interfaces/index.Checkbox.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"index.Checkbox"},{"id":6,"kind":1024,"name":"title","url":"interfaces/index.Checkbox.html#title","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"index.Checkbox"},{"id":7,"kind":1024,"name":"enabled","url":"interfaces/index.Checkbox.html#enabled","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"index.Checkbox"},{"id":8,"kind":256,"name":"PathGroup","url":"interfaces/index.PathGroup.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"index"},{"id":9,"kind":1024,"name":"path","url":"interfaces/index.PathGroup.html#path","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"index.PathGroup"},{"id":10,"kind":1024,"name":"enabled","url":"interfaces/index.PathGroup.html#enabled","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"index.PathGroup"},{"id":11,"kind":4194304,"name":"ExtensionPreferenceGroup","url":"modules/index.html#ExtensionPreferenceGroup","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"index"},{"id":12,"kind":256,"name":"ExtensionFactory","url":"interfaces/index.ExtensionFactory.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"index"},{"id":13,"kind":2048,"name":"registerPreferences","url":"interfaces/index.ExtensionFactory.html#registerPreferences","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.ExtensionFactory"},{"id":14,"kind":2048,"name":"create","url":"interfaces/index.ExtensionFactory.html#create","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.ExtensionFactory"},{"id":15,"kind":256,"name":"MoosyncExtensionTemplate","url":"interfaces/index.MoosyncExtensionTemplate.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"index"},{"id":16,"kind":2048,"name":"onStarted","url":"interfaces/index.MoosyncExtensionTemplate.html#onStarted","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.MoosyncExtensionTemplate"},{"id":17,"kind":2048,"name":"onStopped","url":"interfaces/index.MoosyncExtensionTemplate.html#onStopped","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.MoosyncExtensionTemplate"},{"id":18,"kind":2048,"name":"onSongChanged","url":"interfaces/index.MoosyncExtensionTemplate.html#onSongChanged","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.MoosyncExtensionTemplate"},{"id":19,"kind":2048,"name":"onPlayerStateChanged","url":"interfaces/index.MoosyncExtensionTemplate.html#onPlayerStateChanged","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.MoosyncExtensionTemplate"},{"id":20,"kind":2048,"name":"onVolumeChanged","url":"interfaces/index.MoosyncExtensionTemplate.html#onVolumeChanged","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.MoosyncExtensionTemplate"},{"id":21,"kind":2048,"name":"onSeeked","url":"interfaces/index.MoosyncExtensionTemplate.html#onSeeked","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.MoosyncExtensionTemplate"},{"id":22,"kind":2048,"name":"onSongQueueChanged","url":"interfaces/index.MoosyncExtensionTemplate.html#onSongQueueChanged","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.MoosyncExtensionTemplate"},{"id":23,"kind":2048,"name":"onPreferenceChanged","url":"interfaces/index.MoosyncExtensionTemplate.html#onPreferenceChanged","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.MoosyncExtensionTemplate"},{"id":24,"kind":4194304,"name":"sortOptions","url":"modules/index.html#sortOptions","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"index"},{"id":25,"kind":65536,"name":"__type","url":"modules/index.html#sortOptions.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"index.sortOptions"},{"id":26,"kind":1024,"name":"type","url":"modules/index.html#sortOptions.__type.type","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"index.sortOptions.__type"},{"id":27,"kind":1024,"name":"asc","url":"modules/index.html#sortOptions.__type.asc","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"index.sortOptions.__type"},{"id":28,"kind":256,"name":"SongAPIOptions","url":"interfaces/index.SongAPIOptions.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"index"},{"id":29,"kind":1024,"name":"song","url":"interfaces/index.SongAPIOptions.html#song","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"index.SongAPIOptions"},{"id":30,"kind":1024,"name":"album","url":"interfaces/index.SongAPIOptions.html#album","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"index.SongAPIOptions"},{"id":31,"kind":1024,"name":"artist","url":"interfaces/index.SongAPIOptions.html#artist","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"index.SongAPIOptions"},{"id":32,"kind":1024,"name":"genre","url":"interfaces/index.SongAPIOptions.html#genre","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"index.SongAPIOptions"},{"id":33,"kind":1024,"name":"playlist","url":"interfaces/index.SongAPIOptions.html#playlist","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"index.SongAPIOptions"},{"id":34,"kind":1024,"name":"sortBy","url":"interfaces/index.SongAPIOptions.html#sortBy","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"index.SongAPIOptions"},{"id":35,"kind":1024,"name":"inclusive","url":"interfaces/index.SongAPIOptions.html#inclusive","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"index.SongAPIOptions"},{"id":36,"kind":4194304,"name":"EntityApiOptions","url":"modules/index.html#EntityApiOptions","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"index"},{"id":37,"kind":256,"name":"playerControls","url":"interfaces/index.playerControls.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"index"},{"id":38,"kind":2048,"name":"play","url":"interfaces/index.playerControls.html#play","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.playerControls"},{"id":39,"kind":2048,"name":"pause","url":"interfaces/index.playerControls.html#pause","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.playerControls"},{"id":40,"kind":2048,"name":"stop","url":"interfaces/index.playerControls.html#stop","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.playerControls"},{"id":41,"kind":2048,"name":"nextSong","url":"interfaces/index.playerControls.html#nextSong","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.playerControls"},{"id":42,"kind":2048,"name":"prevSong","url":"interfaces/index.playerControls.html#prevSong","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.playerControls"},{"id":43,"kind":256,"name":"extensionAPI","url":"interfaces/index.extensionAPI.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"index"},{"id":44,"kind":2048,"name":"getSongs","url":"interfaces/index.extensionAPI.html#getSongs","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.extensionAPI"},{"id":45,"kind":2048,"name":"getCurrentSong","url":"interfaces/index.extensionAPI.html#getCurrentSong","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.extensionAPI"},{"id":46,"kind":2048,"name":"getPlayerState","url":"interfaces/index.extensionAPI.html#getPlayerState","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.extensionAPI"},{"id":47,"kind":2048,"name":"getVolume","url":"interfaces/index.extensionAPI.html#getVolume","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.extensionAPI"},{"id":48,"kind":2048,"name":"getTime","url":"interfaces/index.extensionAPI.html#getTime","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.extensionAPI"},{"id":49,"kind":2048,"name":"getQueue","url":"interfaces/index.extensionAPI.html#getQueue","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.extensionAPI"},{"id":50,"kind":2048,"name":"getPreferences","url":"interfaces/index.extensionAPI.html#getPreferences","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.extensionAPI"},{"id":51,"kind":2048,"name":"setPreferences","url":"interfaces/index.extensionAPI.html#setPreferences","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"index.extensionAPI"},{"id":52,"kind":1024,"name":"player","url":"interfaces/index.extensionAPI.html#player","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"index.extensionAPI"},{"id":53,"kind":2,"name":"models","url":"modules/models.html","classes":"tsd-kind-module"},{"id":54,"kind":256,"name":"Album","url":"interfaces/models.Album.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"models"},{"id":55,"kind":1024,"name":"album_id","url":"interfaces/models.Album.html#album_id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Album"},{"id":56,"kind":1024,"name":"album_name","url":"interfaces/models.Album.html#album_name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Album"},{"id":57,"kind":1024,"name":"album_coverPath","url":"interfaces/models.Album.html#album_coverPath","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Album"},{"id":58,"kind":1024,"name":"album_song_count","url":"interfaces/models.Album.html#album_song_count","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Album"},{"id":59,"kind":1024,"name":"album_artist","url":"interfaces/models.Album.html#album_artist","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Album"},{"id":60,"kind":1024,"name":"year","url":"interfaces/models.Album.html#year","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Album"},{"id":61,"kind":256,"name":"artists","url":"interfaces/models.artists.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"models"},{"id":62,"kind":1024,"name":"artist_id","url":"interfaces/models.artists.html#artist_id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.artists"},{"id":63,"kind":1024,"name":"artist_name","url":"interfaces/models.artists.html#artist_name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.artists"},{"id":64,"kind":1024,"name":"artist_mbid","url":"interfaces/models.artists.html#artist_mbid","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.artists"},{"id":65,"kind":1024,"name":"artist_coverPath","url":"interfaces/models.artists.html#artist_coverPath","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.artists"},{"id":66,"kind":1024,"name":"artist_song_count","url":"interfaces/models.artists.html#artist_song_count","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.artists"},{"id":67,"kind":256,"name":"Genre","url":"interfaces/models.Genre.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"models"},{"id":68,"kind":1024,"name":"genre_id","url":"interfaces/models.Genre.html#genre_id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Genre"},{"id":69,"kind":1024,"name":"genre_name","url":"interfaces/models.Genre.html#genre_name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Genre"},{"id":70,"kind":1024,"name":"genre_song_count","url":"interfaces/models.Genre.html#genre_song_count","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Genre"},{"id":71,"kind":256,"name":"Playlist","url":"interfaces/models.Playlist.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"models"},{"id":72,"kind":1024,"name":"playlist_id","url":"interfaces/models.Playlist.html#playlist_id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Playlist"},{"id":73,"kind":1024,"name":"playlist_name","url":"interfaces/models.Playlist.html#playlist_name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Playlist"},{"id":74,"kind":1024,"name":"playlist_coverPath","url":"interfaces/models.Playlist.html#playlist_coverPath","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Playlist"},{"id":75,"kind":1024,"name":"playlist_songs","url":"interfaces/models.Playlist.html#playlist_songs","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Playlist"},{"id":76,"kind":1024,"name":"playlist_song_count","url":"interfaces/models.Playlist.html#playlist_song_count","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Playlist"},{"id":77,"kind":256,"name":"Song","url":"interfaces/models.Song.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"models"},{"id":78,"kind":1024,"name":"_id","url":"interfaces/models.Song.html#_id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":79,"kind":1024,"name":"path","url":"interfaces/models.Song.html#path","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":80,"kind":1024,"name":"size","url":"interfaces/models.Song.html#size","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":81,"kind":1024,"name":"title","url":"interfaces/models.Song.html#title","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":82,"kind":1024,"name":"song_coverPath","url":"interfaces/models.Song.html#song_coverPath","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":83,"kind":1024,"name":"album","url":"interfaces/models.Song.html#album","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":84,"kind":1024,"name":"artists","url":"interfaces/models.Song.html#artists","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":85,"kind":1024,"name":"date","url":"interfaces/models.Song.html#date","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":86,"kind":1024,"name":"year","url":"interfaces/models.Song.html#year","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":87,"kind":1024,"name":"genre","url":"interfaces/models.Song.html#genre","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":88,"kind":1024,"name":"lyrics","url":"interfaces/models.Song.html#lyrics","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":89,"kind":1024,"name":"releaseType","url":"interfaces/models.Song.html#releaseType","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":90,"kind":1024,"name":"bitrate","url":"interfaces/models.Song.html#bitrate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":91,"kind":1024,"name":"codec","url":"interfaces/models.Song.html#codec","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":92,"kind":1024,"name":"container","url":"interfaces/models.Song.html#container","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":93,"kind":1024,"name":"duration","url":"interfaces/models.Song.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":94,"kind":1024,"name":"sampleRate","url":"interfaces/models.Song.html#sampleRate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":95,"kind":1024,"name":"hash","url":"interfaces/models.Song.html#hash","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":96,"kind":1024,"name":"inode","url":"interfaces/models.Song.html#inode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":97,"kind":1024,"name":"deviceno","url":"interfaces/models.Song.html#deviceno","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":98,"kind":1024,"name":"url","url":"interfaces/models.Song.html#url","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":99,"kind":1024,"name":"playbackUrl","url":"interfaces/models.Song.html#playbackUrl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":100,"kind":1024,"name":"type","url":"interfaces/models.Song.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.Song"},{"id":101,"kind":256,"name":"SearchableSong","url":"interfaces/models.SearchableSong.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"models"},{"id":102,"kind":1024,"name":"_id","url":"interfaces/models.SearchableSong.html#_id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.SearchableSong"},{"id":103,"kind":1024,"name":"path","url":"interfaces/models.SearchableSong.html#path","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.SearchableSong"},{"id":104,"kind":1024,"name":"title","url":"interfaces/models.SearchableSong.html#title","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.SearchableSong"},{"id":105,"kind":1024,"name":"url","url":"interfaces/models.SearchableSong.html#url","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.SearchableSong"},{"id":106,"kind":1024,"name":"playbackUrl","url":"interfaces/models.SearchableSong.html#playbackUrl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.SearchableSong"},{"id":107,"kind":1024,"name":"hash","url":"interfaces/models.SearchableSong.html#hash","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.SearchableSong"},{"id":108,"kind":1024,"name":"type","url":"interfaces/models.SearchableSong.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.SearchableSong"},{"id":109,"kind":4194304,"name":"PlayerState","url":"modules/models.html#PlayerState","classes":"tsd-kind-type-alias tsd-parent-kind-module","parent":"models"},{"id":110,"kind":256,"name":"SongQueue","url":"interfaces/models.SongQueue.html","classes":"tsd-kind-interface tsd-parent-kind-module","parent":"models"},{"id":111,"kind":1024,"name":"data","url":"interfaces/models.SongQueue.html#data","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.SongQueue"},{"id":112,"kind":65536,"name":"__type","url":"interfaces/models.SongQueue.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"models.SongQueue"},{"id":113,"kind":1024,"name":"order","url":"interfaces/models.SongQueue.html#order","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.SongQueue"},{"id":114,"kind":1024,"name":"index","url":"interfaces/models.SongQueue.html#index","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"models.SongQueue"}],"index":{"version":"2.3.9","fields":["name","parent"],"fieldVectors":[["name/0",[0,20.794]],["parent/0",[]],["name/1",[1,43.481]],["parent/1",[0,2.064]],["name/2",[2,43.481]],["parent/2",[0,2.064]],["name/3",[3,43.481]],["parent/3",[4,4.317]],["name/4",[5,43.481]],["parent/4",[0,2.064]],["name/5",[6,43.481]],["parent/5",[7,3.476]],["name/6",[8,35.008]],["parent/6",[7,3.476]],["name/7",[9,38.373]],["parent/7",[7,3.476]],["name/8",[10,43.481]],["parent/8",[0,2.064]],["name/9",[11,35.008]],["parent/9",[12,3.81]],["name/10",[9,38.373]],["parent/10",[12,3.81]],["name/11",[13,43.481]],["parent/11",[0,2.064]],["name/12",[14,43.481]],["parent/12",[0,2.064]],["name/13",[15,43.481]],["parent/13",[16,3.81]],["name/14",[17,43.481]],["parent/14",[16,3.81]],["name/15",[18,43.481]],["parent/15",[0,2.064]],["name/16",[19,43.481]],["parent/16",[20,2.595]],["name/17",[21,43.481]],["parent/17",[20,2.595]],["name/18",[22,43.481]],["parent/18",[20,2.595]],["name/19",[23,43.481]],["parent/19",[20,2.595]],["name/20",[24,43.481]],["parent/20",[20,2.595]],["name/21",[25,43.481]],["parent/21",[20,2.595]],["name/22",[26,43.481]],["parent/22",[20,2.595]],["name/23",[27,43.481]],["parent/23",[20,2.595]],["name/24",[28,43.481]],["parent/24",[0,2.064]],["name/25",[29,38.373]],["parent/25",[30,4.317]],["name/26",[31,35.008]],["parent/26",[32,3.81]],["name/27",[33,43.481]],["parent/27",[32,3.81]],["name/28",[34,43.481]],["parent/28",[0,2.064]],["name/29",[35,38.373]],["parent/29",[36,2.719]],["name/30",[37,35.008]],["parent/30",[36,2.719]],["name/31",[38,43.481]],["parent/31",[36,2.719]],["name/32",[39,35.008]],["parent/32",[36,2.719]],["name/33",[40,38.373]],["parent/33",[36,2.719]],["name/34",[41,43.481]],["parent/34",[36,2.719]],["name/35",[42,43.481]],["parent/35",[36,2.719]],["name/36",[43,43.481]],["parent/36",[0,2.064]],["name/37",[44,43.481]],["parent/37",[0,2.064]],["name/38",[45,43.481]],["parent/38",[46,3.027]],["name/39",[47,43.481]],["parent/39",[46,3.027]],["name/40",[48,43.481]],["parent/40",[46,3.027]],["name/41",[49,43.481]],["parent/41",[46,3.027]],["name/42",[50,43.481]],["parent/42",[46,3.027]],["name/43",[51,43.481]],["parent/43",[0,2.064]],["name/44",[52,43.481]],["parent/44",[53,2.484]],["name/45",[54,43.481]],["parent/45",[53,2.484]],["name/46",[55,43.481]],["parent/46",[53,2.484]],["name/47",[56,43.481]],["parent/47",[53,2.484]],["name/48",[57,43.481]],["parent/48",[53,2.484]],["name/49",[58,43.481]],["parent/49",[53,2.484]],["name/50",[59,43.481]],["parent/50",[53,2.484]],["name/51",[60,43.481]],["parent/51",[53,2.484]],["name/52",[61,43.481]],["parent/52",[53,2.484]],["name/53",[62,25.023]],["parent/53",[]],["name/54",[37,35.008]],["parent/54",[62,2.484]],["name/55",[63,43.481]],["parent/55",[64,2.861]],["name/56",[65,43.481]],["parent/56",[64,2.861]],["name/57",[66,43.481]],["parent/57",[64,2.861]],["name/58",[67,43.481]],["parent/58",[64,2.861]],["name/59",[68,43.481]],["parent/59",[64,2.861]],["name/60",[69,38.373]],["parent/60",[64,2.861]],["name/61",[70,38.373]],["parent/61",[62,2.484]],["name/62",[71,43.481]],["parent/62",[72,3.027]],["name/63",[73,43.481]],["parent/63",[72,3.027]],["name/64",[74,43.481]],["parent/64",[72,3.027]],["name/65",[75,43.481]],["parent/65",[72,3.027]],["name/66",[76,43.481]],["parent/66",[72,3.027]],["name/67",[39,35.008]],["parent/67",[62,2.484]],["name/68",[77,43.481]],["parent/68",[78,3.476]],["name/69",[79,43.481]],["parent/69",[78,3.476]],["name/70",[80,43.481]],["parent/70",[78,3.476]],["name/71",[40,38.373]],["parent/71",[62,2.484]],["name/72",[81,43.481]],["parent/72",[82,3.027]],["name/73",[83,43.481]],["parent/73",[82,3.027]],["name/74",[84,43.481]],["parent/74",[82,3.027]],["name/75",[85,43.481]],["parent/75",[82,3.027]],["name/76",[86,43.481]],["parent/76",[82,3.027]],["name/77",[35,38.373]],["parent/77",[62,2.484]],["name/78",[87,38.373]],["parent/78",[88,1.585]],["name/79",[11,35.008]],["parent/79",[88,1.585]],["name/80",[89,43.481]],["parent/80",[88,1.585]],["name/81",[8,35.008]],["parent/81",[88,1.585]],["name/82",[90,43.481]],["parent/82",[88,1.585]],["name/83",[37,35.008]],["parent/83",[88,1.585]],["name/84",[70,38.373]],["parent/84",[88,1.585]],["name/85",[91,43.481]],["parent/85",[88,1.585]],["name/86",[69,38.373]],["parent/86",[88,1.585]],["name/87",[39,35.008]],["parent/87",[88,1.585]],["name/88",[92,43.481]],["parent/88",[88,1.585]],["name/89",[93,43.481]],["parent/89",[88,1.585]],["name/90",[94,43.481]],["parent/90",[88,1.585]],["name/91",[95,43.481]],["parent/91",[88,1.585]],["name/92",[96,43.481]],["parent/92",[88,1.585]],["name/93",[97,43.481]],["parent/93",[88,1.585]],["name/94",[98,43.481]],["parent/94",[88,1.585]],["name/95",[99,38.373]],["parent/95",[88,1.585]],["name/96",[100,43.481]],["parent/96",[88,1.585]],["name/97",[101,43.481]],["parent/97",[88,1.585]],["name/98",[102,38.373]],["parent/98",[88,1.585]],["name/99",[103,38.373]],["parent/99",[88,1.585]],["name/100",[31,35.008]],["parent/100",[88,1.585]],["name/101",[104,43.481]],["parent/101",[62,2.484]],["name/102",[87,38.373]],["parent/102",[105,2.719]],["name/103",[11,35.008]],["parent/103",[105,2.719]],["name/104",[8,35.008]],["parent/104",[105,2.719]],["name/105",[102,38.373]],["parent/105",[105,2.719]],["name/106",[103,38.373]],["parent/106",[105,2.719]],["name/107",[99,38.373]],["parent/107",[105,2.719]],["name/108",[31,35.008]],["parent/108",[105,2.719]],["name/109",[106,43.481]],["parent/109",[62,2.484]],["name/110",[107,43.481]],["parent/110",[62,2.484]],["name/111",[108,43.481]],["parent/111",[109,3.226]],["name/112",[29,38.373]],["parent/112",[109,3.226]],["name/113",[110,43.481]],["parent/113",[109,3.226]],["name/114",[0,20.794]],["parent/114",[109,3.226]]],"invertedIndex":[["__type",{"_index":29,"name":{"25":{},"112":{}},"parent":{}}],["_id",{"_index":87,"name":{"78":{},"102":{}},"parent":{}}],["album",{"_index":37,"name":{"30":{},"54":{},"83":{}},"parent":{}}],["album_artist",{"_index":68,"name":{"59":{}},"parent":{}}],["album_coverpath",{"_index":66,"name":{"57":{}},"parent":{}}],["album_id",{"_index":63,"name":{"55":{}},"parent":{}}],["album_name",{"_index":65,"name":{"56":{}},"parent":{}}],["album_song_count",{"_index":67,"name":{"58":{}},"parent":{}}],["artist",{"_index":38,"name":{"31":{}},"parent":{}}],["artist_coverpath",{"_index":75,"name":{"65":{}},"parent":{}}],["artist_id",{"_index":71,"name":{"62":{}},"parent":{}}],["artist_mbid",{"_index":74,"name":{"64":{}},"parent":{}}],["artist_name",{"_index":73,"name":{"63":{}},"parent":{}}],["artist_song_count",{"_index":76,"name":{"66":{}},"parent":{}}],["artists",{"_index":70,"name":{"61":{},"84":{}},"parent":{}}],["asc",{"_index":33,"name":{"27":{}},"parent":{}}],["bitrate",{"_index":94,"name":{"90":{}},"parent":{}}],["checkbox",{"_index":5,"name":{"4":{}},"parent":{}}],["codec",{"_index":95,"name":{"91":{}},"parent":{}}],["container",{"_index":96,"name":{"92":{}},"parent":{}}],["create",{"_index":17,"name":{"14":{}},"parent":{}}],["data",{"_index":108,"name":{"111":{}},"parent":{}}],["date",{"_index":91,"name":{"85":{}},"parent":{}}],["deviceno",{"_index":101,"name":{"97":{}},"parent":{}}],["duration",{"_index":97,"name":{"93":{}},"parent":{}}],["enabled",{"_index":9,"name":{"7":{},"10":{}},"parent":{}}],["entityapioptions",{"_index":43,"name":{"36":{}},"parent":{}}],["extension_entry_point",{"_index":1,"name":{"1":{}},"parent":{}}],["extensionapi",{"_index":51,"name":{"43":{}},"parent":{}}],["extensiondata",{"_index":2,"name":{"2":{}},"parent":{}}],["extensiondescriptors",{"_index":3,"name":{"3":{}},"parent":{}}],["extensionfactory",{"_index":14,"name":{"12":{}},"parent":{}}],["extensionpreferencegroup",{"_index":13,"name":{"11":{}},"parent":{}}],["genre",{"_index":39,"name":{"32":{},"67":{},"87":{}},"parent":{}}],["genre_id",{"_index":77,"name":{"68":{}},"parent":{}}],["genre_name",{"_index":79,"name":{"69":{}},"parent":{}}],["genre_song_count",{"_index":80,"name":{"70":{}},"parent":{}}],["getcurrentsong",{"_index":54,"name":{"45":{}},"parent":{}}],["getplayerstate",{"_index":55,"name":{"46":{}},"parent":{}}],["getpreferences",{"_index":59,"name":{"50":{}},"parent":{}}],["getqueue",{"_index":58,"name":{"49":{}},"parent":{}}],["getsongs",{"_index":52,"name":{"44":{}},"parent":{}}],["gettime",{"_index":57,"name":{"48":{}},"parent":{}}],["getvolume",{"_index":56,"name":{"47":{}},"parent":{}}],["hash",{"_index":99,"name":{"95":{},"107":{}},"parent":{}}],["inclusive",{"_index":42,"name":{"35":{}},"parent":{}}],["index",{"_index":0,"name":{"0":{},"114":{}},"parent":{"1":{},"2":{},"4":{},"8":{},"11":{},"12":{},"15":{},"24":{},"28":{},"36":{},"37":{},"43":{}}}],["index.checkbox",{"_index":7,"name":{},"parent":{"5":{},"6":{},"7":{}}}],["index.extensionapi",{"_index":53,"name":{},"parent":{"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{}}}],["index.extensiondata",{"_index":4,"name":{},"parent":{"3":{}}}],["index.extensionfactory",{"_index":16,"name":{},"parent":{"13":{},"14":{}}}],["index.moosyncextensiontemplate",{"_index":20,"name":{},"parent":{"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{}}}],["index.pathgroup",{"_index":12,"name":{},"parent":{"9":{},"10":{}}}],["index.playercontrols",{"_index":46,"name":{},"parent":{"38":{},"39":{},"40":{},"41":{},"42":{}}}],["index.songapioptions",{"_index":36,"name":{},"parent":{"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{}}}],["index.sortoptions",{"_index":30,"name":{},"parent":{"25":{}}}],["index.sortoptions.__type",{"_index":32,"name":{},"parent":{"26":{},"27":{}}}],["inode",{"_index":100,"name":{"96":{}},"parent":{}}],["key",{"_index":6,"name":{"5":{}},"parent":{}}],["lyrics",{"_index":92,"name":{"88":{}},"parent":{}}],["models",{"_index":62,"name":{"53":{}},"parent":{"54":{},"61":{},"67":{},"71":{},"77":{},"101":{},"109":{},"110":{}}}],["models.album",{"_index":64,"name":{},"parent":{"55":{},"56":{},"57":{},"58":{},"59":{},"60":{}}}],["models.artists",{"_index":72,"name":{},"parent":{"62":{},"63":{},"64":{},"65":{},"66":{}}}],["models.genre",{"_index":78,"name":{},"parent":{"68":{},"69":{},"70":{}}}],["models.playlist",{"_index":82,"name":{},"parent":{"72":{},"73":{},"74":{},"75":{},"76":{}}}],["models.searchablesong",{"_index":105,"name":{},"parent":{"102":{},"103":{},"104":{},"105":{},"106":{},"107":{},"108":{}}}],["models.song",{"_index":88,"name":{},"parent":{"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{},"90":{},"91":{},"92":{},"93":{},"94":{},"95":{},"96":{},"97":{},"98":{},"99":{},"100":{}}}],["models.songqueue",{"_index":109,"name":{},"parent":{"111":{},"112":{},"113":{},"114":{}}}],["moosyncextensiontemplate",{"_index":18,"name":{"15":{}},"parent":{}}],["nextsong",{"_index":49,"name":{"41":{}},"parent":{}}],["onplayerstatechanged",{"_index":23,"name":{"19":{}},"parent":{}}],["onpreferencechanged",{"_index":27,"name":{"23":{}},"parent":{}}],["onseeked",{"_index":25,"name":{"21":{}},"parent":{}}],["onsongchanged",{"_index":22,"name":{"18":{}},"parent":{}}],["onsongqueuechanged",{"_index":26,"name":{"22":{}},"parent":{}}],["onstarted",{"_index":19,"name":{"16":{}},"parent":{}}],["onstopped",{"_index":21,"name":{"17":{}},"parent":{}}],["onvolumechanged",{"_index":24,"name":{"20":{}},"parent":{}}],["order",{"_index":110,"name":{"113":{}},"parent":{}}],["path",{"_index":11,"name":{"9":{},"79":{},"103":{}},"parent":{}}],["pathgroup",{"_index":10,"name":{"8":{}},"parent":{}}],["pause",{"_index":47,"name":{"39":{}},"parent":{}}],["play",{"_index":45,"name":{"38":{}},"parent":{}}],["playbackurl",{"_index":103,"name":{"99":{},"106":{}},"parent":{}}],["player",{"_index":61,"name":{"52":{}},"parent":{}}],["playercontrols",{"_index":44,"name":{"37":{}},"parent":{}}],["playerstate",{"_index":106,"name":{"109":{}},"parent":{}}],["playlist",{"_index":40,"name":{"33":{},"71":{}},"parent":{}}],["playlist_coverpath",{"_index":84,"name":{"74":{}},"parent":{}}],["playlist_id",{"_index":81,"name":{"72":{}},"parent":{}}],["playlist_name",{"_index":83,"name":{"73":{}},"parent":{}}],["playlist_song_count",{"_index":86,"name":{"76":{}},"parent":{}}],["playlist_songs",{"_index":85,"name":{"75":{}},"parent":{}}],["prevsong",{"_index":50,"name":{"42":{}},"parent":{}}],["registerpreferences",{"_index":15,"name":{"13":{}},"parent":{}}],["releasetype",{"_index":93,"name":{"89":{}},"parent":{}}],["samplerate",{"_index":98,"name":{"94":{}},"parent":{}}],["searchablesong",{"_index":104,"name":{"101":{}},"parent":{}}],["setpreferences",{"_index":60,"name":{"51":{}},"parent":{}}],["size",{"_index":89,"name":{"80":{}},"parent":{}}],["song",{"_index":35,"name":{"29":{},"77":{}},"parent":{}}],["song_coverpath",{"_index":90,"name":{"82":{}},"parent":{}}],["songapioptions",{"_index":34,"name":{"28":{}},"parent":{}}],["songqueue",{"_index":107,"name":{"110":{}},"parent":{}}],["sortby",{"_index":41,"name":{"34":{}},"parent":{}}],["sortoptions",{"_index":28,"name":{"24":{}},"parent":{}}],["stop",{"_index":48,"name":{"40":{}},"parent":{}}],["title",{"_index":8,"name":{"6":{},"81":{},"104":{}},"parent":{}}],["type",{"_index":31,"name":{"26":{},"100":{},"108":{}},"parent":{}}],["url",{"_index":102,"name":{"98":{},"105":{}},"parent":{}}],["year",{"_index":69,"name":{"60":{},"86":{}},"parent":{}}]],"pipeline":[]}} \ No newline at end of file +window.searchData = {"kinds":{"256":"Interface","1024":"Property","2048":"Method","65536":"Type literal","4194304":"Type alias"},"rows":[{"id":0,"kind":256,"name":"Album","url":"interfaces/Album.html","classes":"tsd-kind-interface"},{"id":1,"kind":1024,"name":"album_id","url":"interfaces/Album.html#album_id-2","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Album"},{"id":2,"kind":1024,"name":"album_name","url":"interfaces/Album.html#album_name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Album"},{"id":3,"kind":1024,"name":"album_coverPath_high","url":"interfaces/Album.html#album_coverPath_high","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Album"},{"id":4,"kind":1024,"name":"album_coverPath_low","url":"interfaces/Album.html#album_coverPath_low","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Album"},{"id":5,"kind":1024,"name":"album_song_count","url":"interfaces/Album.html#album_song_count","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Album"},{"id":6,"kind":1024,"name":"album_artist","url":"interfaces/Album.html#album_artist","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Album"},{"id":7,"kind":1024,"name":"album_extra_info","url":"interfaces/Album.html#album_extra_info","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Album"},{"id":8,"kind":65536,"name":"__type","url":"interfaces/Album.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"Album"},{"id":9,"kind":1024,"name":"spotify","url":"interfaces/Album.html#__type.spotify","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Album.__type"},{"id":10,"kind":65536,"name":"__type","url":"interfaces/Album.html#__type.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-type-literal","parent":"Album.__type"},{"id":11,"kind":1024,"name":"album_id","url":"interfaces/Album.html#__type.__type-1.album_id","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Album.__type.__type"},{"id":12,"kind":1024,"name":"youtube","url":"interfaces/Album.html#__type.youtube","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Album.__type"},{"id":13,"kind":65536,"name":"__type","url":"interfaces/Album.html#__type.__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-type-literal","parent":"Album.__type"},{"id":14,"kind":1024,"name":"album_id","url":"interfaces/Album.html#__type.__type-2.album_id-1","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Album.__type.__type"},{"id":15,"kind":1024,"name":"extensions","url":"interfaces/Album.html#__type.extensions","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Album.__type"},{"id":16,"kind":1024,"name":"year","url":"interfaces/Album.html#year","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Album"},{"id":17,"kind":256,"name":"Artists","url":"interfaces/Artists.html","classes":"tsd-kind-interface"},{"id":18,"kind":1024,"name":"artist_id","url":"interfaces/Artists.html#artist_id-1","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Artists"},{"id":19,"kind":1024,"name":"artist_name","url":"interfaces/Artists.html#artist_name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Artists"},{"id":20,"kind":1024,"name":"artist_mbid","url":"interfaces/Artists.html#artist_mbid","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Artists"},{"id":21,"kind":1024,"name":"artist_coverPath","url":"interfaces/Artists.html#artist_coverPath","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Artists"},{"id":22,"kind":1024,"name":"artist_song_count","url":"interfaces/Artists.html#artist_song_count","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Artists"},{"id":23,"kind":1024,"name":"artist_extra_info","url":"interfaces/Artists.html#artist_extra_info","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Artists"},{"id":24,"kind":65536,"name":"__type","url":"interfaces/Artists.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"Artists"},{"id":25,"kind":1024,"name":"youtube","url":"interfaces/Artists.html#__type.youtube","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Artists.__type"},{"id":26,"kind":65536,"name":"__type","url":"interfaces/Artists.html#__type.__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-type-literal","parent":"Artists.__type"},{"id":27,"kind":1024,"name":"channel_id","url":"interfaces/Artists.html#__type.__type-2.channel_id","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Artists.__type.__type"},{"id":28,"kind":1024,"name":"spotify","url":"interfaces/Artists.html#__type.spotify","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Artists.__type"},{"id":29,"kind":65536,"name":"__type","url":"interfaces/Artists.html#__type.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-type-literal","parent":"Artists.__type"},{"id":30,"kind":1024,"name":"artist_id","url":"interfaces/Artists.html#__type.__type-1.artist_id","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Artists.__type.__type"},{"id":31,"kind":1024,"name":"extensions","url":"interfaces/Artists.html#__type.extensions","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"Artists.__type"},{"id":32,"kind":256,"name":"Genre","url":"interfaces/Genre.html","classes":"tsd-kind-interface"},{"id":33,"kind":1024,"name":"genre_id","url":"interfaces/Genre.html#genre_id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Genre"},{"id":34,"kind":1024,"name":"genre_name","url":"interfaces/Genre.html#genre_name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Genre"},{"id":35,"kind":1024,"name":"genre_song_count","url":"interfaces/Genre.html#genre_song_count","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Genre"},{"id":36,"kind":256,"name":"Playlist","url":"interfaces/Playlist.html","classes":"tsd-kind-interface"},{"id":37,"kind":1024,"name":"playlist_id","url":"interfaces/Playlist.html#playlist_id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Playlist"},{"id":38,"kind":1024,"name":"playlist_name","url":"interfaces/Playlist.html#playlist_name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Playlist"},{"id":39,"kind":1024,"name":"playlist_desc","url":"interfaces/Playlist.html#playlist_desc","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Playlist"},{"id":40,"kind":1024,"name":"playlist_coverPath","url":"interfaces/Playlist.html#playlist_coverPath","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Playlist"},{"id":41,"kind":1024,"name":"playlist_song_count","url":"interfaces/Playlist.html#playlist_song_count","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Playlist"},{"id":42,"kind":1024,"name":"playlist_path","url":"interfaces/Playlist.html#playlist_path","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Playlist"},{"id":43,"kind":1024,"name":"icon","url":"interfaces/Playlist.html#icon","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Playlist"},{"id":44,"kind":1024,"name":"extension","url":"interfaces/Playlist.html#extension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Playlist"},{"id":45,"kind":4194304,"name":"PlayerTypes","url":"modules.html#PlayerTypes","classes":"tsd-kind-type-alias"},{"id":46,"kind":256,"name":"Song","url":"interfaces/Song.html","classes":"tsd-kind-interface"},{"id":47,"kind":1024,"name":"_id","url":"interfaces/Song.html#_id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":48,"kind":1024,"name":"path","url":"interfaces/Song.html#path","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":49,"kind":1024,"name":"size","url":"interfaces/Song.html#size","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":50,"kind":1024,"name":"title","url":"interfaces/Song.html#title","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":51,"kind":1024,"name":"song_coverPath_low","url":"interfaces/Song.html#song_coverPath_low","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":52,"kind":1024,"name":"song_coverPath_high","url":"interfaces/Song.html#song_coverPath_high","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":53,"kind":1024,"name":"album","url":"interfaces/Song.html#album","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":54,"kind":1024,"name":"artists","url":"interfaces/Song.html#artists","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":55,"kind":1024,"name":"date","url":"interfaces/Song.html#date","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":56,"kind":1024,"name":"year","url":"interfaces/Song.html#year","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":57,"kind":1024,"name":"genre","url":"interfaces/Song.html#genre","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":58,"kind":1024,"name":"lyrics","url":"interfaces/Song.html#lyrics","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":59,"kind":1024,"name":"releaseType","url":"interfaces/Song.html#releaseType","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":60,"kind":1024,"name":"bitrate","url":"interfaces/Song.html#bitrate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":61,"kind":1024,"name":"codec","url":"interfaces/Song.html#codec","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":62,"kind":1024,"name":"container","url":"interfaces/Song.html#container","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":63,"kind":1024,"name":"duration","url":"interfaces/Song.html#duration","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":64,"kind":1024,"name":"sampleRate","url":"interfaces/Song.html#sampleRate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":65,"kind":1024,"name":"hash","url":"interfaces/Song.html#hash","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":66,"kind":1024,"name":"inode","url":"interfaces/Song.html#inode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":67,"kind":1024,"name":"deviceno","url":"interfaces/Song.html#deviceno","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":68,"kind":1024,"name":"url","url":"interfaces/Song.html#url","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":69,"kind":1024,"name":"playbackUrl","url":"interfaces/Song.html#playbackUrl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":70,"kind":1024,"name":"date_added","url":"interfaces/Song.html#date_added","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":71,"kind":1024,"name":"providerExtension","url":"interfaces/Song.html#providerExtension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":72,"kind":1024,"name":"icon","url":"interfaces/Song.html#icon","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":73,"kind":1024,"name":"type","url":"interfaces/Song.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":74,"kind":1024,"name":"playCount","url":"interfaces/Song.html#playCount","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":75,"kind":1024,"name":"showInLibrary","url":"interfaces/Song.html#showInLibrary","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":76,"kind":1024,"name":"track_no","url":"interfaces/Song.html#track_no","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Song"},{"id":77,"kind":256,"name":"SearchableSong","url":"interfaces/SearchableSong.html","classes":"tsd-kind-interface"},{"id":78,"kind":1024,"name":"_id","url":"interfaces/SearchableSong.html#_id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SearchableSong"},{"id":79,"kind":1024,"name":"path","url":"interfaces/SearchableSong.html#path","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SearchableSong"},{"id":80,"kind":1024,"name":"title","url":"interfaces/SearchableSong.html#title","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SearchableSong"},{"id":81,"kind":1024,"name":"url","url":"interfaces/SearchableSong.html#url","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SearchableSong"},{"id":82,"kind":1024,"name":"playbackUrl","url":"interfaces/SearchableSong.html#playbackUrl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SearchableSong"},{"id":83,"kind":1024,"name":"hash","url":"interfaces/SearchableSong.html#hash","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SearchableSong"},{"id":84,"kind":1024,"name":"size","url":"interfaces/SearchableSong.html#size","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SearchableSong"},{"id":85,"kind":1024,"name":"inode","url":"interfaces/SearchableSong.html#inode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SearchableSong"},{"id":86,"kind":1024,"name":"deviceno","url":"interfaces/SearchableSong.html#deviceno","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SearchableSong"},{"id":87,"kind":1024,"name":"type","url":"interfaces/SearchableSong.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SearchableSong"},{"id":88,"kind":1024,"name":"extension","url":"interfaces/SearchableSong.html#extension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SearchableSong"},{"id":89,"kind":1024,"name":"showInLibrary","url":"interfaces/SearchableSong.html#showInLibrary","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SearchableSong"},{"id":90,"kind":4194304,"name":"PlayerState","url":"modules.html#PlayerState","classes":"tsd-kind-type-alias"},{"id":91,"kind":256,"name":"SongQueue","url":"interfaces/SongQueue.html","classes":"tsd-kind-interface"},{"id":92,"kind":1024,"name":"data","url":"interfaces/SongQueue.html#data","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SongQueue"},{"id":93,"kind":65536,"name":"__type","url":"interfaces/SongQueue.html#__type","classes":"tsd-kind-type-literal tsd-parent-kind-interface","parent":"SongQueue"},{"id":94,"kind":1024,"name":"order","url":"interfaces/SongQueue.html#order","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SongQueue"},{"id":95,"kind":1024,"name":"index","url":"interfaces/SongQueue.html#index","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SongQueue"},{"id":96,"kind":256,"name":"ExtensionData","url":"interfaces/ExtensionData.html","classes":"tsd-kind-interface"},{"id":97,"kind":1024,"name":"extensionDescriptors","url":"interfaces/ExtensionData.html#extensionDescriptors","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ExtensionData"},{"id":98,"kind":256,"name":"Checkbox","url":"interfaces/Checkbox.html","classes":"tsd-kind-interface"},{"id":99,"kind":1024,"name":"key","url":"interfaces/Checkbox.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Checkbox"},{"id":100,"kind":1024,"name":"title","url":"interfaces/Checkbox.html#title","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Checkbox"},{"id":101,"kind":1024,"name":"enabled","url":"interfaces/Checkbox.html#enabled","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Checkbox"},{"id":102,"kind":256,"name":"PathGroup","url":"interfaces/PathGroup.html","classes":"tsd-kind-interface"},{"id":103,"kind":1024,"name":"path","url":"interfaces/PathGroup.html#path","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PathGroup"},{"id":104,"kind":1024,"name":"enabled","url":"interfaces/PathGroup.html#enabled","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PathGroup"},{"id":105,"kind":256,"name":"Buttons","url":"interfaces/Buttons.html","classes":"tsd-kind-interface"},{"id":106,"kind":1024,"name":"key","url":"interfaces/Buttons.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Buttons"},{"id":107,"kind":1024,"name":"title","url":"interfaces/Buttons.html#title","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Buttons"},{"id":108,"kind":1024,"name":"lastClicked","url":"interfaces/Buttons.html#lastClicked","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Buttons"},{"id":109,"kind":4194304,"name":"ExtensionPreferenceGroup","url":"modules.html#ExtensionPreferenceGroup","classes":"tsd-kind-type-alias"},{"id":110,"kind":256,"name":"ExtensionFactory","url":"interfaces/ExtensionFactory.html","classes":"tsd-kind-interface"},{"id":111,"kind":2048,"name":"registerPreferences","url":"interfaces/ExtensionFactory.html#registerPreferences","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"ExtensionFactory"},{"id":112,"kind":2048,"name":"registerUserPreferences","url":"interfaces/ExtensionFactory.html#registerUserPreferences","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"ExtensionFactory"},{"id":113,"kind":2048,"name":"create","url":"interfaces/ExtensionFactory.html#create","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"ExtensionFactory"},{"id":114,"kind":256,"name":"MoosyncExtensionTemplate","url":"interfaces/MoosyncExtensionTemplate.html","classes":"tsd-kind-interface"},{"id":115,"kind":2048,"name":"onStarted","url":"interfaces/MoosyncExtensionTemplate.html#onStarted","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"MoosyncExtensionTemplate"},{"id":116,"kind":2048,"name":"onStopped","url":"interfaces/MoosyncExtensionTemplate.html#onStopped","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"MoosyncExtensionTemplate"},{"id":117,"kind":4194304,"name":"SongSortOptions","url":"modules.html#SongSortOptions","classes":"tsd-kind-type-alias"},{"id":118,"kind":65536,"name":"__type","url":"modules.html#SongSortOptions.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"SongSortOptions"},{"id":119,"kind":1024,"name":"type","url":"modules.html#SongSortOptions.__type.type","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"SongSortOptions.__type"},{"id":120,"kind":1024,"name":"asc","url":"modules.html#SongSortOptions.__type.asc","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"SongSortOptions.__type"},{"id":121,"kind":256,"name":"SongAPIOptions","url":"interfaces/SongAPIOptions.html","classes":"tsd-kind-interface"},{"id":122,"kind":1024,"name":"song","url":"interfaces/SongAPIOptions.html#song","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SongAPIOptions"},{"id":123,"kind":1024,"name":"album","url":"interfaces/SongAPIOptions.html#album","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SongAPIOptions"},{"id":124,"kind":1024,"name":"artist","url":"interfaces/SongAPIOptions.html#artist","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SongAPIOptions"},{"id":125,"kind":1024,"name":"genre","url":"interfaces/SongAPIOptions.html#genre","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SongAPIOptions"},{"id":126,"kind":1024,"name":"playlist","url":"interfaces/SongAPIOptions.html#playlist","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SongAPIOptions"},{"id":127,"kind":1024,"name":"sortBy","url":"interfaces/SongAPIOptions.html#sortBy","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SongAPIOptions"},{"id":128,"kind":1024,"name":"inclusive","url":"interfaces/SongAPIOptions.html#inclusive","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SongAPIOptions"},{"id":129,"kind":1024,"name":"invert","url":"interfaces/SongAPIOptions.html#invert","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SongAPIOptions"},{"id":130,"kind":4194304,"name":"EntityApiOptions","url":"modules.html#EntityApiOptions","classes":"tsd-kind-type-alias tsd-has-type-parameter"},{"id":131,"kind":256,"name":"playerControls","url":"interfaces/playerControls.html","classes":"tsd-kind-interface"},{"id":132,"kind":2048,"name":"play","url":"interfaces/playerControls.html#play","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"playerControls"},{"id":133,"kind":2048,"name":"pause","url":"interfaces/playerControls.html#pause","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"playerControls"},{"id":134,"kind":2048,"name":"stop","url":"interfaces/playerControls.html#stop","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"playerControls"},{"id":135,"kind":2048,"name":"nextSong","url":"interfaces/playerControls.html#nextSong","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"playerControls"},{"id":136,"kind":2048,"name":"prevSong","url":"interfaces/playerControls.html#prevSong","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"playerControls"},{"id":137,"kind":4194304,"name":"ExtraExtensionEventTypes","url":"modules.html#ExtraExtensionEventTypes","classes":"tsd-kind-type-alias"},{"id":138,"kind":4194304,"name":"ExtraExtensionEventReturnType","url":"modules.html#ExtraExtensionEventReturnType","classes":"tsd-kind-type-alias tsd-has-type-parameter"},{"id":139,"kind":4194304,"name":"ExtraExtensionEventData","url":"modules.html#ExtraExtensionEventData","classes":"tsd-kind-type-alias tsd-has-type-parameter"},{"id":140,"kind":4194304,"name":"PlaylistReturnType","url":"modules.html#PlaylistReturnType","classes":"tsd-kind-type-alias"},{"id":141,"kind":65536,"name":"__type","url":"modules.html#PlaylistReturnType.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"PlaylistReturnType"},{"id":142,"kind":1024,"name":"playlists","url":"modules.html#PlaylistReturnType.__type.playlists","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PlaylistReturnType.__type"},{"id":143,"kind":4194304,"name":"SongsReturnType","url":"modules.html#SongsReturnType","classes":"tsd-kind-type-alias"},{"id":144,"kind":65536,"name":"__type","url":"modules.html#SongsReturnType.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"SongsReturnType"},{"id":145,"kind":1024,"name":"songs","url":"modules.html#SongsReturnType.__type.songs","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"SongsReturnType.__type"},{"id":146,"kind":4194304,"name":"SongsWithPageTokenReturnType","url":"modules.html#SongsWithPageTokenReturnType","classes":"tsd-kind-type-alias"},{"id":147,"kind":65536,"name":"__type","url":"modules.html#SongsWithPageTokenReturnType.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"SongsWithPageTokenReturnType"},{"id":148,"kind":1024,"name":"songs","url":"modules.html#SongsWithPageTokenReturnType.__type.songs","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"SongsWithPageTokenReturnType.__type"},{"id":149,"kind":1024,"name":"nextPageToken","url":"modules.html#SongsWithPageTokenReturnType.__type.nextPageToken","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"SongsWithPageTokenReturnType.__type"},{"id":150,"kind":4194304,"name":"SearchReturnType","url":"modules.html#SearchReturnType","classes":"tsd-kind-type-alias"},{"id":151,"kind":65536,"name":"__type","url":"modules.html#SearchReturnType.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"SearchReturnType"},{"id":152,"kind":1024,"name":"songs","url":"modules.html#SearchReturnType.__type.songs","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"SearchReturnType.__type"},{"id":153,"kind":1024,"name":"playlists","url":"modules.html#SearchReturnType.__type.playlists","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"SearchReturnType.__type"},{"id":154,"kind":1024,"name":"artists","url":"modules.html#SearchReturnType.__type.artists","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"SearchReturnType.__type"},{"id":155,"kind":1024,"name":"albums","url":"modules.html#SearchReturnType.__type.albums","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"SearchReturnType.__type"},{"id":156,"kind":4194304,"name":"PlaybackDetailsReturnType","url":"modules.html#PlaybackDetailsReturnType","classes":"tsd-kind-type-alias"},{"id":157,"kind":65536,"name":"__type","url":"modules.html#PlaybackDetailsReturnType.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"PlaybackDetailsReturnType"},{"id":158,"kind":1024,"name":"duration","url":"modules.html#PlaybackDetailsReturnType.__type.duration","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PlaybackDetailsReturnType.__type"},{"id":159,"kind":1024,"name":"url","url":"modules.html#PlaybackDetailsReturnType.__type.url","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PlaybackDetailsReturnType.__type"},{"id":160,"kind":4194304,"name":"CustomRequestReturnType","url":"modules.html#CustomRequestReturnType","classes":"tsd-kind-type-alias"},{"id":161,"kind":65536,"name":"__type","url":"modules.html#CustomRequestReturnType.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"CustomRequestReturnType"},{"id":162,"kind":1024,"name":"mimeType","url":"modules.html#CustomRequestReturnType.__type.mimeType","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"CustomRequestReturnType.__type"},{"id":163,"kind":1024,"name":"data","url":"modules.html#CustomRequestReturnType.__type.data","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"CustomRequestReturnType.__type"},{"id":164,"kind":1024,"name":"redirectUrl","url":"modules.html#CustomRequestReturnType.__type.redirectUrl","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"CustomRequestReturnType.__type"},{"id":165,"kind":4194304,"name":"SongReturnType","url":"modules.html#SongReturnType","classes":"tsd-kind-type-alias"},{"id":166,"kind":65536,"name":"__type","url":"modules.html#SongReturnType.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"SongReturnType"},{"id":167,"kind":1024,"name":"song","url":"modules.html#SongReturnType.__type.song","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"SongReturnType.__type"},{"id":168,"kind":4194304,"name":"PlaylistAndSongsReturnType","url":"modules.html#PlaylistAndSongsReturnType","classes":"tsd-kind-type-alias"},{"id":169,"kind":65536,"name":"__type","url":"modules.html#PlaylistAndSongsReturnType.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"PlaylistAndSongsReturnType"},{"id":170,"kind":1024,"name":"playlist","url":"modules.html#PlaylistAndSongsReturnType.__type.playlist","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PlaylistAndSongsReturnType.__type"},{"id":171,"kind":1024,"name":"songs","url":"modules.html#PlaylistAndSongsReturnType.__type.songs","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"PlaylistAndSongsReturnType.__type"},{"id":172,"kind":4194304,"name":"RecommendationsReturnType","url":"modules.html#RecommendationsReturnType","classes":"tsd-kind-type-alias"},{"id":173,"kind":65536,"name":"__type","url":"modules.html#RecommendationsReturnType.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"RecommendationsReturnType"},{"id":174,"kind":1024,"name":"songs","url":"modules.html#RecommendationsReturnType.__type.songs","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"RecommendationsReturnType.__type"},{"id":175,"kind":4194304,"name":"ExtensionContextMenuItem","url":"modules.html#ExtensionContextMenuItem","classes":"tsd-kind-type-alias tsd-has-type-parameter"},{"id":176,"kind":65536,"name":"__type","url":"modules.html#ExtensionContextMenuItem.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"ExtensionContextMenuItem"},{"id":177,"kind":1024,"name":"type","url":"modules.html#ExtensionContextMenuItem.__type.type","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ExtensionContextMenuItem.__type"},{"id":178,"kind":1024,"name":"label","url":"modules.html#ExtensionContextMenuItem.__type.label","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ExtensionContextMenuItem.__type"},{"id":179,"kind":1024,"name":"disabled","url":"modules.html#ExtensionContextMenuItem.__type.disabled","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ExtensionContextMenuItem.__type"},{"id":180,"kind":1024,"name":"children","url":"modules.html#ExtensionContextMenuItem.__type.children","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ExtensionContextMenuItem.__type"},{"id":181,"kind":2048,"name":"handler","url":"modules.html#ExtensionContextMenuItem.__type.handler","classes":"tsd-kind-method tsd-parent-kind-type-literal","parent":"ExtensionContextMenuItem.__type"},{"id":182,"kind":4194304,"name":"ForwardRequestReturnType","url":"modules.html#ForwardRequestReturnType","classes":"tsd-kind-type-alias tsd-has-type-parameter"},{"id":183,"kind":65536,"name":"__type","url":"modules.html#ForwardRequestReturnType.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"ForwardRequestReturnType"},{"id":184,"kind":1024,"name":"forwardTo","url":"modules.html#ForwardRequestReturnType.__type.forwardTo","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ForwardRequestReturnType.__type"},{"id":185,"kind":1024,"name":"transformedData","url":"modules.html#ForwardRequestReturnType.__type.transformedData","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"ForwardRequestReturnType.__type"},{"id":186,"kind":4194304,"name":"ContextMenuTypes","url":"modules.html#ContextMenuTypes","classes":"tsd-kind-type-alias"},{"id":187,"kind":4194304,"name":"ExtensionContextMenuHandlerArgs","url":"modules.html#ExtensionContextMenuHandlerArgs","classes":"tsd-kind-type-alias tsd-has-type-parameter"},{"id":188,"kind":4194304,"name":"AccountDetails","url":"modules.html#AccountDetails","classes":"tsd-kind-type-alias"},{"id":189,"kind":65536,"name":"__type","url":"modules.html#AccountDetails.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias","parent":"AccountDetails"},{"id":190,"kind":1024,"name":"id","url":"modules.html#AccountDetails.__type.id","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"AccountDetails.__type"},{"id":191,"kind":1024,"name":"packageName","url":"modules.html#AccountDetails.__type.packageName","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"AccountDetails.__type"},{"id":192,"kind":1024,"name":"name","url":"modules.html#AccountDetails.__type.name","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"AccountDetails.__type"},{"id":193,"kind":1024,"name":"bgColor","url":"modules.html#AccountDetails.__type.bgColor","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"AccountDetails.__type"},{"id":194,"kind":1024,"name":"icon","url":"modules.html#AccountDetails.__type.icon","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"AccountDetails.__type"},{"id":195,"kind":1024,"name":"loggedIn","url":"modules.html#AccountDetails.__type.loggedIn","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"AccountDetails.__type"},{"id":196,"kind":2048,"name":"signinCallback","url":"modules.html#AccountDetails.__type.signinCallback","classes":"tsd-kind-method tsd-parent-kind-type-literal","parent":"AccountDetails.__type"},{"id":197,"kind":2048,"name":"signoutCallback","url":"modules.html#AccountDetails.__type.signoutCallback","classes":"tsd-kind-method tsd-parent-kind-type-literal","parent":"AccountDetails.__type"},{"id":198,"kind":1024,"name":"username","url":"modules.html#AccountDetails.__type.username","classes":"tsd-kind-property tsd-parent-kind-type-literal","parent":"AccountDetails.__type"},{"id":199,"kind":4194304,"name":"LoginModalOptions","url":"modules.html#LoginModalOptions","classes":"tsd-kind-type-alias"},{"id":200,"kind":256,"name":"utils","url":"interfaces/utils.html","classes":"tsd-kind-interface"},{"id":201,"kind":2048,"name":"getArtistExtraInfo","url":"interfaces/utils.html#getArtistExtraInfo","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"utils"},{"id":202,"kind":2048,"name":"getAlbumExtraInfo","url":"interfaces/utils.html#getAlbumExtraInfo","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"utils"},{"id":203,"kind":1024,"name":"packageName","url":"interfaces/utils.html#packageName","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"utils"},{"id":204,"kind":1024,"name":"customRequestBaseUrl","url":"interfaces/utils.html#customRequestBaseUrl","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"utils"},{"id":205,"kind":256,"name":"extensionAPI","url":"interfaces/extensionAPI.html","classes":"tsd-kind-interface"},{"id":206,"kind":1024,"name":"utils","url":"interfaces/extensionAPI.html#utils","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"extensionAPI"},{"id":207,"kind":2048,"name":"getSongs","url":"interfaces/extensionAPI.html#getSongs","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":208,"kind":2048,"name":"getEntity","url":"interfaces/extensionAPI.html#getEntity","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter","parent":"extensionAPI"},{"id":209,"kind":2048,"name":"getCurrentSong","url":"interfaces/extensionAPI.html#getCurrentSong","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":210,"kind":2048,"name":"getPlayerState","url":"interfaces/extensionAPI.html#getPlayerState","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":211,"kind":2048,"name":"getVolume","url":"interfaces/extensionAPI.html#getVolume","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":212,"kind":2048,"name":"getTime","url":"interfaces/extensionAPI.html#getTime","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":213,"kind":2048,"name":"getQueue","url":"interfaces/extensionAPI.html#getQueue","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":214,"kind":2048,"name":"getPreferences","url":"interfaces/extensionAPI.html#getPreferences","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter","parent":"extensionAPI"},{"id":215,"kind":2048,"name":"setPreferences","url":"interfaces/extensionAPI.html#setPreferences","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":216,"kind":2048,"name":"getSecure","url":"interfaces/extensionAPI.html#getSecure","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter","parent":"extensionAPI"},{"id":217,"kind":2048,"name":"setSecure","url":"interfaces/extensionAPI.html#setSecure","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":218,"kind":2048,"name":"addSongs","url":"interfaces/extensionAPI.html#addSongs","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":219,"kind":2048,"name":"updateSong","url":"interfaces/extensionAPI.html#updateSong","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":220,"kind":2048,"name":"removeSong","url":"interfaces/extensionAPI.html#removeSong","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":221,"kind":2048,"name":"addPlaylist","url":"interfaces/extensionAPI.html#addPlaylist","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":222,"kind":2048,"name":"addSongsToPlaylist","url":"interfaces/extensionAPI.html#addSongsToPlaylist","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":223,"kind":2048,"name":"registerOAuth","url":"interfaces/extensionAPI.html#registerOAuth","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":224,"kind":2048,"name":"openExternalURL","url":"interfaces/extensionAPI.html#openExternalURL","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":225,"kind":2048,"name":"on","url":"interfaces/extensionAPI.html#on","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":226,"kind":2048,"name":"off","url":"interfaces/extensionAPI.html#off","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter","parent":"extensionAPI"},{"id":227,"kind":2048,"name":"setContextMenuItem","url":"interfaces/extensionAPI.html#setContextMenuItem","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter","parent":"extensionAPI"},{"id":228,"kind":2048,"name":"removeContextMenuItem","url":"interfaces/extensionAPI.html#removeContextMenuItem","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":229,"kind":2048,"name":"getContextMenuItems","url":"interfaces/extensionAPI.html#getContextMenuItems","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":230,"kind":2048,"name":"registerAccount","url":"interfaces/extensionAPI.html#registerAccount","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":231,"kind":2048,"name":"changeAccountAuthStatus","url":"interfaces/extensionAPI.html#changeAccountAuthStatus","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":232,"kind":2048,"name":"openLoginModal","url":"interfaces/extensionAPI.html#openLoginModal","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":233,"kind":2048,"name":"closeLoginModal","url":"interfaces/extensionAPI.html#closeLoginModal","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":234,"kind":2048,"name":"showToast","url":"interfaces/extensionAPI.html#showToast","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":235,"kind":2048,"name":"setArtistEditableInfo","url":"interfaces/extensionAPI.html#setArtistEditableInfo","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":236,"kind":2048,"name":"setAlbumEditableInfo","url":"interfaces/extensionAPI.html#setAlbumEditableInfo","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":237,"kind":2048,"name":"getInstalledExtensions","url":"interfaces/extensionAPI.html#getInstalledExtensions","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":238,"kind":2048,"name":"addUserPreference","url":"interfaces/extensionAPI.html#addUserPreference","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":239,"kind":2048,"name":"removeUserPreference","url":"interfaces/extensionAPI.html#removeUserPreference","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"extensionAPI"},{"id":240,"kind":1024,"name":"player","url":"interfaces/extensionAPI.html#player","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"extensionAPI"}],"index":{"version":"2.3.9","fields":["name","parent"],"fieldVectors":[["name/0",[0,29.632]],["parent/0",[]],["name/1",[1,42.362]],["parent/1",[0,2.74]],["name/2",[2,50.835]],["parent/2",[0,2.74]],["name/3",[3,50.835]],["parent/3",[0,2.74]],["name/4",[4,50.835]],["parent/4",[0,2.74]],["name/5",[5,50.835]],["parent/5",[0,2.74]],["name/6",[6,50.835]],["parent/6",[0,2.74]],["name/7",[7,50.835]],["parent/7",[0,2.74]],["name/8",[8,24.685]],["parent/8",[0,2.74]],["name/9",[9,45.726]],["parent/9",[10,3.499]],["name/10",[8,24.685]],["parent/10",[10,3.499]],["name/11",[1,42.362]],["parent/11",[11,4.228]],["name/12",[12,45.726]],["parent/12",[10,3.499]],["name/13",[8,24.685]],["parent/13",[10,3.499]],["name/14",[1,42.362]],["parent/14",[11,4.228]],["name/15",[13,45.726]],["parent/15",[10,3.499]],["name/16",[14,45.726]],["parent/16",[0,2.74]],["name/17",[15,31.376]],["parent/17",[]],["name/18",[16,45.726]],["parent/18",[15,2.901]],["name/19",[17,50.835]],["parent/19",[15,2.901]],["name/20",[18,50.835]],["parent/20",[15,2.901]],["name/21",[19,50.835]],["parent/21",[15,2.901]],["name/22",[20,50.835]],["parent/22",[15,2.901]],["name/23",[21,50.835]],["parent/23",[15,2.901]],["name/24",[8,24.685]],["parent/24",[15,2.901]],["name/25",[12,45.726]],["parent/25",[22,3.499]],["name/26",[8,24.685]],["parent/26",[22,3.499]],["name/27",[23,50.835]],["parent/27",[24,4.228]],["name/28",[9,45.726]],["parent/28",[22,3.499]],["name/29",[8,24.685]],["parent/29",[22,3.499]],["name/30",[16,45.726]],["parent/30",[24,4.228]],["name/31",[13,45.726]],["parent/31",[22,3.499]],["name/32",[25,36.171]],["parent/32",[]],["name/33",[26,50.835]],["parent/33",[25,3.345]],["name/34",[27,50.835]],["parent/34",[25,3.345]],["name/35",[28,50.835]],["parent/35",[25,3.345]],["name/36",[29,30.466]],["parent/36",[]],["name/37",[30,50.835]],["parent/37",[29,2.817]],["name/38",[31,50.835]],["parent/38",[29,2.817]],["name/39",[32,50.835]],["parent/39",[29,2.817]],["name/40",[33,50.835]],["parent/40",[29,2.817]],["name/41",[34,50.835]],["parent/41",[29,2.817]],["name/42",[35,50.835]],["parent/42",[29,2.817]],["name/43",[36,42.362]],["parent/43",[29,2.817]],["name/44",[37,45.726]],["parent/44",[29,2.817]],["name/45",[38,50.835]],["parent/45",[]],["name/46",[39,19.774]],["parent/46",[]],["name/47",[40,45.726]],["parent/47",[39,1.829]],["name/48",[41,42.362]],["parent/48",[39,1.829]],["name/49",[42,45.726]],["parent/49",[39,1.829]],["name/50",[43,39.849]],["parent/50",[39,1.829]],["name/51",[44,50.835]],["parent/51",[39,1.829]],["name/52",[45,50.835]],["parent/52",[39,1.829]],["name/53",[0,29.632]],["parent/53",[39,1.829]],["name/54",[15,31.376]],["parent/54",[39,1.829]],["name/55",[46,50.835]],["parent/55",[39,1.829]],["name/56",[14,45.726]],["parent/56",[39,1.829]],["name/57",[25,36.171]],["parent/57",[39,1.829]],["name/58",[47,50.835]],["parent/58",[39,1.829]],["name/59",[48,50.835]],["parent/59",[39,1.829]],["name/60",[49,50.835]],["parent/60",[39,1.829]],["name/61",[50,50.835]],["parent/61",[39,1.829]],["name/62",[51,50.835]],["parent/62",[39,1.829]],["name/63",[52,45.726]],["parent/63",[39,1.829]],["name/64",[53,50.835]],["parent/64",[39,1.829]],["name/65",[54,45.726]],["parent/65",[39,1.829]],["name/66",[55,45.726]],["parent/66",[39,1.829]],["name/67",[56,45.726]],["parent/67",[39,1.829]],["name/68",[57,42.362]],["parent/68",[39,1.829]],["name/69",[58,45.726]],["parent/69",[39,1.829]],["name/70",[59,50.835]],["parent/70",[39,1.829]],["name/71",[60,50.835]],["parent/71",[39,1.829]],["name/72",[36,42.362]],["parent/72",[39,1.829]],["name/73",[61,39.849]],["parent/73",[39,1.829]],["name/74",[62,50.835]],["parent/74",[39,1.829]],["name/75",[63,45.726]],["parent/75",[39,1.829]],["name/76",[64,50.835]],["parent/76",[39,1.829]],["name/77",[65,28.862]],["parent/77",[]],["name/78",[40,45.726]],["parent/78",[65,2.669]],["name/79",[41,42.362]],["parent/79",[65,2.669]],["name/80",[43,39.849]],["parent/80",[65,2.669]],["name/81",[57,42.362]],["parent/81",[65,2.669]],["name/82",[58,45.726]],["parent/82",[65,2.669]],["name/83",[54,45.726]],["parent/83",[65,2.669]],["name/84",[42,45.726]],["parent/84",[65,2.669]],["name/85",[55,45.726]],["parent/85",[65,2.669]],["name/86",[56,45.726]],["parent/86",[65,2.669]],["name/87",[61,39.849]],["parent/87",[65,2.669]],["name/88",[37,45.726]],["parent/88",[65,2.669]],["name/89",[63,45.726]],["parent/89",[65,2.669]],["name/90",[66,50.835]],["parent/90",[]],["name/91",[67,37.842]],["parent/91",[]],["name/92",[68,45.726]],["parent/92",[67,3.499]],["name/93",[8,24.685]],["parent/93",[67,3.499]],["name/94",[69,50.835]],["parent/94",[67,3.499]],["name/95",[70,50.835]],["parent/95",[67,3.499]],["name/96",[71,45.726]],["parent/96",[]],["name/97",[72,50.835]],["parent/97",[71,4.228]],["name/98",[73,39.849]],["parent/98",[]],["name/99",[74,45.726]],["parent/99",[73,3.685]],["name/100",[43,39.849]],["parent/100",[73,3.685]],["name/101",[75,45.726]],["parent/101",[73,3.685]],["name/102",[76,42.362]],["parent/102",[]],["name/103",[41,42.362]],["parent/103",[76,3.917]],["name/104",[75,45.726]],["parent/104",[76,3.917]],["name/105",[77,39.849]],["parent/105",[]],["name/106",[74,45.726]],["parent/106",[77,3.685]],["name/107",[43,39.849]],["parent/107",[77,3.685]],["name/108",[78,50.835]],["parent/108",[77,3.685]],["name/109",[79,50.835]],["parent/109",[]],["name/110",[80,39.849]],["parent/110",[]],["name/111",[81,50.835]],["parent/111",[80,3.685]],["name/112",[82,50.835]],["parent/112",[80,3.685]],["name/113",[83,50.835]],["parent/113",[80,3.685]],["name/114",[84,42.362]],["parent/114",[]],["name/115",[85,50.835]],["parent/115",[84,3.917]],["name/116",[86,50.835]],["parent/116",[84,3.917]],["name/117",[87,45.726]],["parent/117",[]],["name/118",[8,24.685]],["parent/118",[87,4.228]],["name/119",[61,39.849]],["parent/119",[88,4.228]],["name/120",[89,50.835]],["parent/120",[88,4.228]],["name/121",[90,32.376]],["parent/121",[]],["name/122",[39,19.774]],["parent/122",[90,2.994]],["name/123",[0,29.632]],["parent/123",[90,2.994]],["name/124",[91,50.835]],["parent/124",[90,2.994]],["name/125",[25,36.171]],["parent/125",[90,2.994]],["name/126",[29,30.466]],["parent/126",[90,2.994]],["name/127",[92,50.835]],["parent/127",[90,2.994]],["name/128",[93,50.835]],["parent/128",[90,2.994]],["name/129",[94,50.835]],["parent/129",[90,2.994]],["name/130",[95,50.835]],["parent/130",[]],["name/131",[96,36.171]],["parent/131",[]],["name/132",[97,50.835]],["parent/132",[96,3.345]],["name/133",[98,50.835]],["parent/133",[96,3.345]],["name/134",[99,50.835]],["parent/134",[96,3.345]],["name/135",[100,50.835]],["parent/135",[96,3.345]],["name/136",[101,50.835]],["parent/136",[96,3.345]],["name/137",[102,50.835]],["parent/137",[]],["name/138",[103,50.835]],["parent/138",[]],["name/139",[104,50.835]],["parent/139",[]],["name/140",[105,45.726]],["parent/140",[]],["name/141",[8,24.685]],["parent/141",[105,4.228]],["name/142",[106,45.726]],["parent/142",[107,4.701]],["name/143",[108,45.726]],["parent/143",[]],["name/144",[8,24.685]],["parent/144",[108,4.228]],["name/145",[109,37.842]],["parent/145",[110,4.701]],["name/146",[111,45.726]],["parent/146",[]],["name/147",[8,24.685]],["parent/147",[111,4.228]],["name/148",[109,37.842]],["parent/148",[112,4.228]],["name/149",[113,50.835]],["parent/149",[112,4.228]],["name/150",[114,45.726]],["parent/150",[]],["name/151",[8,24.685]],["parent/151",[114,4.228]],["name/152",[109,37.842]],["parent/152",[115,3.685]],["name/153",[106,45.726]],["parent/153",[115,3.685]],["name/154",[15,31.376]],["parent/154",[115,3.685]],["name/155",[116,50.835]],["parent/155",[115,3.685]],["name/156",[117,45.726]],["parent/156",[]],["name/157",[8,24.685]],["parent/157",[117,4.228]],["name/158",[52,45.726]],["parent/158",[118,4.228]],["name/159",[57,42.362]],["parent/159",[118,4.228]],["name/160",[119,45.726]],["parent/160",[]],["name/161",[8,24.685]],["parent/161",[119,4.228]],["name/162",[120,50.835]],["parent/162",[121,3.917]],["name/163",[68,45.726]],["parent/163",[121,3.917]],["name/164",[122,50.835]],["parent/164",[121,3.917]],["name/165",[123,45.726]],["parent/165",[]],["name/166",[8,24.685]],["parent/166",[123,4.228]],["name/167",[39,19.774]],["parent/167",[124,4.701]],["name/168",[125,45.726]],["parent/168",[]],["name/169",[8,24.685]],["parent/169",[125,4.228]],["name/170",[29,30.466]],["parent/170",[126,4.228]],["name/171",[109,37.842]],["parent/171",[126,4.228]],["name/172",[127,45.726]],["parent/172",[]],["name/173",[8,24.685]],["parent/173",[127,4.228]],["name/174",[109,37.842]],["parent/174",[128,4.701]],["name/175",[129,45.726]],["parent/175",[]],["name/176",[8,24.685]],["parent/176",[129,4.228]],["name/177",[61,39.849]],["parent/177",[130,3.499]],["name/178",[131,50.835]],["parent/178",[130,3.499]],["name/179",[132,50.835]],["parent/179",[130,3.499]],["name/180",[133,50.835]],["parent/180",[130,3.499]],["name/181",[134,50.835]],["parent/181",[130,3.499]],["name/182",[135,45.726]],["parent/182",[]],["name/183",[8,24.685]],["parent/183",[135,4.228]],["name/184",[136,50.835]],["parent/184",[137,4.228]],["name/185",[138,50.835]],["parent/185",[137,4.228]],["name/186",[139,50.835]],["parent/186",[]],["name/187",[140,50.835]],["parent/187",[]],["name/188",[141,45.726]],["parent/188",[]],["name/189",[8,24.685]],["parent/189",[141,4.228]],["name/190",[142,50.835]],["parent/190",[143,2.994]],["name/191",[144,45.726]],["parent/191",[143,2.994]],["name/192",[145,50.835]],["parent/192",[143,2.994]],["name/193",[146,50.835]],["parent/193",[143,2.994]],["name/194",[36,42.362]],["parent/194",[143,2.994]],["name/195",[147,50.835]],["parent/195",[143,2.994]],["name/196",[148,50.835]],["parent/196",[143,2.994]],["name/197",[149,50.835]],["parent/197",[143,2.994]],["name/198",[150,50.835]],["parent/198",[143,2.994]],["name/199",[151,50.835]],["parent/199",[]],["name/200",[152,36.171]],["parent/200",[]],["name/201",[153,50.835]],["parent/201",[152,3.345]],["name/202",[154,50.835]],["parent/202",[152,3.345]],["name/203",[144,45.726]],["parent/203",[152,3.345]],["name/204",[155,50.835]],["parent/204",[152,3.345]],["name/205",[156,18.916]],["parent/205",[]],["name/206",[152,36.171]],["parent/206",[156,1.749]],["name/207",[157,50.835]],["parent/207",[156,1.749]],["name/208",[158,50.835]],["parent/208",[156,1.749]],["name/209",[159,50.835]],["parent/209",[156,1.749]],["name/210",[160,50.835]],["parent/210",[156,1.749]],["name/211",[161,50.835]],["parent/211",[156,1.749]],["name/212",[162,50.835]],["parent/212",[156,1.749]],["name/213",[163,50.835]],["parent/213",[156,1.749]],["name/214",[164,50.835]],["parent/214",[156,1.749]],["name/215",[165,50.835]],["parent/215",[156,1.749]],["name/216",[166,50.835]],["parent/216",[156,1.749]],["name/217",[167,50.835]],["parent/217",[156,1.749]],["name/218",[168,50.835]],["parent/218",[156,1.749]],["name/219",[169,50.835]],["parent/219",[156,1.749]],["name/220",[170,50.835]],["parent/220",[156,1.749]],["name/221",[171,50.835]],["parent/221",[156,1.749]],["name/222",[172,50.835]],["parent/222",[156,1.749]],["name/223",[173,50.835]],["parent/223",[156,1.749]],["name/224",[174,50.835]],["parent/224",[156,1.749]],["name/225",[175,50.835]],["parent/225",[156,1.749]],["name/226",[176,50.835]],["parent/226",[156,1.749]],["name/227",[177,50.835]],["parent/227",[156,1.749]],["name/228",[178,50.835]],["parent/228",[156,1.749]],["name/229",[179,50.835]],["parent/229",[156,1.749]],["name/230",[180,50.835]],["parent/230",[156,1.749]],["name/231",[181,50.835]],["parent/231",[156,1.749]],["name/232",[182,50.835]],["parent/232",[156,1.749]],["name/233",[183,50.835]],["parent/233",[156,1.749]],["name/234",[184,50.835]],["parent/234",[156,1.749]],["name/235",[185,50.835]],["parent/235",[156,1.749]],["name/236",[186,50.835]],["parent/236",[156,1.749]],["name/237",[187,50.835]],["parent/237",[156,1.749]],["name/238",[188,50.835]],["parent/238",[156,1.749]],["name/239",[189,50.835]],["parent/239",[156,1.749]],["name/240",[190,50.835]],["parent/240",[156,1.749]]],"invertedIndex":[["__type",{"_index":8,"name":{"8":{},"10":{},"13":{},"24":{},"26":{},"29":{},"93":{},"118":{},"141":{},"144":{},"147":{},"151":{},"157":{},"161":{},"166":{},"169":{},"173":{},"176":{},"183":{},"189":{}},"parent":{}}],["_id",{"_index":40,"name":{"47":{},"78":{}},"parent":{}}],["accountdetails",{"_index":141,"name":{"188":{}},"parent":{"189":{}}}],["accountdetails.__type",{"_index":143,"name":{},"parent":{"190":{},"191":{},"192":{},"193":{},"194":{},"195":{},"196":{},"197":{},"198":{}}}],["addplaylist",{"_index":171,"name":{"221":{}},"parent":{}}],["addsongs",{"_index":168,"name":{"218":{}},"parent":{}}],["addsongstoplaylist",{"_index":172,"name":{"222":{}},"parent":{}}],["adduserpreference",{"_index":188,"name":{"238":{}},"parent":{}}],["album",{"_index":0,"name":{"0":{},"53":{},"123":{}},"parent":{"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"16":{}}}],["album.__type",{"_index":10,"name":{},"parent":{"9":{},"10":{},"12":{},"13":{},"15":{}}}],["album.__type.__type",{"_index":11,"name":{},"parent":{"11":{},"14":{}}}],["album_artist",{"_index":6,"name":{"6":{}},"parent":{}}],["album_coverpath_high",{"_index":3,"name":{"3":{}},"parent":{}}],["album_coverpath_low",{"_index":4,"name":{"4":{}},"parent":{}}],["album_extra_info",{"_index":7,"name":{"7":{}},"parent":{}}],["album_id",{"_index":1,"name":{"1":{},"11":{},"14":{}},"parent":{}}],["album_name",{"_index":2,"name":{"2":{}},"parent":{}}],["album_song_count",{"_index":5,"name":{"5":{}},"parent":{}}],["albums",{"_index":116,"name":{"155":{}},"parent":{}}],["artist",{"_index":91,"name":{"124":{}},"parent":{}}],["artist_coverpath",{"_index":19,"name":{"21":{}},"parent":{}}],["artist_extra_info",{"_index":21,"name":{"23":{}},"parent":{}}],["artist_id",{"_index":16,"name":{"18":{},"30":{}},"parent":{}}],["artist_mbid",{"_index":18,"name":{"20":{}},"parent":{}}],["artist_name",{"_index":17,"name":{"19":{}},"parent":{}}],["artist_song_count",{"_index":20,"name":{"22":{}},"parent":{}}],["artists",{"_index":15,"name":{"17":{},"54":{},"154":{}},"parent":{"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{}}}],["artists.__type",{"_index":22,"name":{},"parent":{"25":{},"26":{},"28":{},"29":{},"31":{}}}],["artists.__type.__type",{"_index":24,"name":{},"parent":{"27":{},"30":{}}}],["asc",{"_index":89,"name":{"120":{}},"parent":{}}],["bgcolor",{"_index":146,"name":{"193":{}},"parent":{}}],["bitrate",{"_index":49,"name":{"60":{}},"parent":{}}],["buttons",{"_index":77,"name":{"105":{}},"parent":{"106":{},"107":{},"108":{}}}],["changeaccountauthstatus",{"_index":181,"name":{"231":{}},"parent":{}}],["channel_id",{"_index":23,"name":{"27":{}},"parent":{}}],["checkbox",{"_index":73,"name":{"98":{}},"parent":{"99":{},"100":{},"101":{}}}],["children",{"_index":133,"name":{"180":{}},"parent":{}}],["closeloginmodal",{"_index":183,"name":{"233":{}},"parent":{}}],["codec",{"_index":50,"name":{"61":{}},"parent":{}}],["container",{"_index":51,"name":{"62":{}},"parent":{}}],["contextmenutypes",{"_index":139,"name":{"186":{}},"parent":{}}],["create",{"_index":83,"name":{"113":{}},"parent":{}}],["customrequestbaseurl",{"_index":155,"name":{"204":{}},"parent":{}}],["customrequestreturntype",{"_index":119,"name":{"160":{}},"parent":{"161":{}}}],["customrequestreturntype.__type",{"_index":121,"name":{},"parent":{"162":{},"163":{},"164":{}}}],["data",{"_index":68,"name":{"92":{},"163":{}},"parent":{}}],["date",{"_index":46,"name":{"55":{}},"parent":{}}],["date_added",{"_index":59,"name":{"70":{}},"parent":{}}],["deviceno",{"_index":56,"name":{"67":{},"86":{}},"parent":{}}],["disabled",{"_index":132,"name":{"179":{}},"parent":{}}],["duration",{"_index":52,"name":{"63":{},"158":{}},"parent":{}}],["enabled",{"_index":75,"name":{"101":{},"104":{}},"parent":{}}],["entityapioptions",{"_index":95,"name":{"130":{}},"parent":{}}],["extension",{"_index":37,"name":{"44":{},"88":{}},"parent":{}}],["extensionapi",{"_index":156,"name":{"205":{}},"parent":{"206":{},"207":{},"208":{},"209":{},"210":{},"211":{},"212":{},"213":{},"214":{},"215":{},"216":{},"217":{},"218":{},"219":{},"220":{},"221":{},"222":{},"223":{},"224":{},"225":{},"226":{},"227":{},"228":{},"229":{},"230":{},"231":{},"232":{},"233":{},"234":{},"235":{},"236":{},"237":{},"238":{},"239":{},"240":{}}}],["extensioncontextmenuhandlerargs",{"_index":140,"name":{"187":{}},"parent":{}}],["extensioncontextmenuitem",{"_index":129,"name":{"175":{}},"parent":{"176":{}}}],["extensioncontextmenuitem.__type",{"_index":130,"name":{},"parent":{"177":{},"178":{},"179":{},"180":{},"181":{}}}],["extensiondata",{"_index":71,"name":{"96":{}},"parent":{"97":{}}}],["extensiondescriptors",{"_index":72,"name":{"97":{}},"parent":{}}],["extensionfactory",{"_index":80,"name":{"110":{}},"parent":{"111":{},"112":{},"113":{}}}],["extensionpreferencegroup",{"_index":79,"name":{"109":{}},"parent":{}}],["extensions",{"_index":13,"name":{"15":{},"31":{}},"parent":{}}],["extraextensioneventdata",{"_index":104,"name":{"139":{}},"parent":{}}],["extraextensioneventreturntype",{"_index":103,"name":{"138":{}},"parent":{}}],["extraextensioneventtypes",{"_index":102,"name":{"137":{}},"parent":{}}],["forwardrequestreturntype",{"_index":135,"name":{"182":{}},"parent":{"183":{}}}],["forwardrequestreturntype.__type",{"_index":137,"name":{},"parent":{"184":{},"185":{}}}],["forwardto",{"_index":136,"name":{"184":{}},"parent":{}}],["genre",{"_index":25,"name":{"32":{},"57":{},"125":{}},"parent":{"33":{},"34":{},"35":{}}}],["genre_id",{"_index":26,"name":{"33":{}},"parent":{}}],["genre_name",{"_index":27,"name":{"34":{}},"parent":{}}],["genre_song_count",{"_index":28,"name":{"35":{}},"parent":{}}],["getalbumextrainfo",{"_index":154,"name":{"202":{}},"parent":{}}],["getartistextrainfo",{"_index":153,"name":{"201":{}},"parent":{}}],["getcontextmenuitems",{"_index":179,"name":{"229":{}},"parent":{}}],["getcurrentsong",{"_index":159,"name":{"209":{}},"parent":{}}],["getentity",{"_index":158,"name":{"208":{}},"parent":{}}],["getinstalledextensions",{"_index":187,"name":{"237":{}},"parent":{}}],["getplayerstate",{"_index":160,"name":{"210":{}},"parent":{}}],["getpreferences",{"_index":164,"name":{"214":{}},"parent":{}}],["getqueue",{"_index":163,"name":{"213":{}},"parent":{}}],["getsecure",{"_index":166,"name":{"216":{}},"parent":{}}],["getsongs",{"_index":157,"name":{"207":{}},"parent":{}}],["gettime",{"_index":162,"name":{"212":{}},"parent":{}}],["getvolume",{"_index":161,"name":{"211":{}},"parent":{}}],["handler",{"_index":134,"name":{"181":{}},"parent":{}}],["hash",{"_index":54,"name":{"65":{},"83":{}},"parent":{}}],["icon",{"_index":36,"name":{"43":{},"72":{},"194":{}},"parent":{}}],["id",{"_index":142,"name":{"190":{}},"parent":{}}],["inclusive",{"_index":93,"name":{"128":{}},"parent":{}}],["index",{"_index":70,"name":{"95":{}},"parent":{}}],["inode",{"_index":55,"name":{"66":{},"85":{}},"parent":{}}],["invert",{"_index":94,"name":{"129":{}},"parent":{}}],["key",{"_index":74,"name":{"99":{},"106":{}},"parent":{}}],["label",{"_index":131,"name":{"178":{}},"parent":{}}],["lastclicked",{"_index":78,"name":{"108":{}},"parent":{}}],["loggedin",{"_index":147,"name":{"195":{}},"parent":{}}],["loginmodaloptions",{"_index":151,"name":{"199":{}},"parent":{}}],["lyrics",{"_index":47,"name":{"58":{}},"parent":{}}],["mimetype",{"_index":120,"name":{"162":{}},"parent":{}}],["moosyncextensiontemplate",{"_index":84,"name":{"114":{}},"parent":{"115":{},"116":{}}}],["name",{"_index":145,"name":{"192":{}},"parent":{}}],["nextpagetoken",{"_index":113,"name":{"149":{}},"parent":{}}],["nextsong",{"_index":100,"name":{"135":{}},"parent":{}}],["off",{"_index":176,"name":{"226":{}},"parent":{}}],["on",{"_index":175,"name":{"225":{}},"parent":{}}],["onstarted",{"_index":85,"name":{"115":{}},"parent":{}}],["onstopped",{"_index":86,"name":{"116":{}},"parent":{}}],["openexternalurl",{"_index":174,"name":{"224":{}},"parent":{}}],["openloginmodal",{"_index":182,"name":{"232":{}},"parent":{}}],["order",{"_index":69,"name":{"94":{}},"parent":{}}],["packagename",{"_index":144,"name":{"191":{},"203":{}},"parent":{}}],["path",{"_index":41,"name":{"48":{},"79":{},"103":{}},"parent":{}}],["pathgroup",{"_index":76,"name":{"102":{}},"parent":{"103":{},"104":{}}}],["pause",{"_index":98,"name":{"133":{}},"parent":{}}],["play",{"_index":97,"name":{"132":{}},"parent":{}}],["playbackdetailsreturntype",{"_index":117,"name":{"156":{}},"parent":{"157":{}}}],["playbackdetailsreturntype.__type",{"_index":118,"name":{},"parent":{"158":{},"159":{}}}],["playbackurl",{"_index":58,"name":{"69":{},"82":{}},"parent":{}}],["playcount",{"_index":62,"name":{"74":{}},"parent":{}}],["player",{"_index":190,"name":{"240":{}},"parent":{}}],["playercontrols",{"_index":96,"name":{"131":{}},"parent":{"132":{},"133":{},"134":{},"135":{},"136":{}}}],["playerstate",{"_index":66,"name":{"90":{}},"parent":{}}],["playertypes",{"_index":38,"name":{"45":{}},"parent":{}}],["playlist",{"_index":29,"name":{"36":{},"126":{},"170":{}},"parent":{"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{}}}],["playlist_coverpath",{"_index":33,"name":{"40":{}},"parent":{}}],["playlist_desc",{"_index":32,"name":{"39":{}},"parent":{}}],["playlist_id",{"_index":30,"name":{"37":{}},"parent":{}}],["playlist_name",{"_index":31,"name":{"38":{}},"parent":{}}],["playlist_path",{"_index":35,"name":{"42":{}},"parent":{}}],["playlist_song_count",{"_index":34,"name":{"41":{}},"parent":{}}],["playlistandsongsreturntype",{"_index":125,"name":{"168":{}},"parent":{"169":{}}}],["playlistandsongsreturntype.__type",{"_index":126,"name":{},"parent":{"170":{},"171":{}}}],["playlistreturntype",{"_index":105,"name":{"140":{}},"parent":{"141":{}}}],["playlistreturntype.__type",{"_index":107,"name":{},"parent":{"142":{}}}],["playlists",{"_index":106,"name":{"142":{},"153":{}},"parent":{}}],["prevsong",{"_index":101,"name":{"136":{}},"parent":{}}],["providerextension",{"_index":60,"name":{"71":{}},"parent":{}}],["recommendationsreturntype",{"_index":127,"name":{"172":{}},"parent":{"173":{}}}],["recommendationsreturntype.__type",{"_index":128,"name":{},"parent":{"174":{}}}],["redirecturl",{"_index":122,"name":{"164":{}},"parent":{}}],["registeraccount",{"_index":180,"name":{"230":{}},"parent":{}}],["registeroauth",{"_index":173,"name":{"223":{}},"parent":{}}],["registerpreferences",{"_index":81,"name":{"111":{}},"parent":{}}],["registeruserpreferences",{"_index":82,"name":{"112":{}},"parent":{}}],["releasetype",{"_index":48,"name":{"59":{}},"parent":{}}],["removecontextmenuitem",{"_index":178,"name":{"228":{}},"parent":{}}],["removesong",{"_index":170,"name":{"220":{}},"parent":{}}],["removeuserpreference",{"_index":189,"name":{"239":{}},"parent":{}}],["samplerate",{"_index":53,"name":{"64":{}},"parent":{}}],["searchablesong",{"_index":65,"name":{"77":{}},"parent":{"78":{},"79":{},"80":{},"81":{},"82":{},"83":{},"84":{},"85":{},"86":{},"87":{},"88":{},"89":{}}}],["searchreturntype",{"_index":114,"name":{"150":{}},"parent":{"151":{}}}],["searchreturntype.__type",{"_index":115,"name":{},"parent":{"152":{},"153":{},"154":{},"155":{}}}],["setalbumeditableinfo",{"_index":186,"name":{"236":{}},"parent":{}}],["setartisteditableinfo",{"_index":185,"name":{"235":{}},"parent":{}}],["setcontextmenuitem",{"_index":177,"name":{"227":{}},"parent":{}}],["setpreferences",{"_index":165,"name":{"215":{}},"parent":{}}],["setsecure",{"_index":167,"name":{"217":{}},"parent":{}}],["showinlibrary",{"_index":63,"name":{"75":{},"89":{}},"parent":{}}],["showtoast",{"_index":184,"name":{"234":{}},"parent":{}}],["signincallback",{"_index":148,"name":{"196":{}},"parent":{}}],["signoutcallback",{"_index":149,"name":{"197":{}},"parent":{}}],["size",{"_index":42,"name":{"49":{},"84":{}},"parent":{}}],["song",{"_index":39,"name":{"46":{},"122":{},"167":{}},"parent":{"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{},"60":{},"61":{},"62":{},"63":{},"64":{},"65":{},"66":{},"67":{},"68":{},"69":{},"70":{},"71":{},"72":{},"73":{},"74":{},"75":{},"76":{}}}],["song_coverpath_high",{"_index":45,"name":{"52":{}},"parent":{}}],["song_coverpath_low",{"_index":44,"name":{"51":{}},"parent":{}}],["songapioptions",{"_index":90,"name":{"121":{}},"parent":{"122":{},"123":{},"124":{},"125":{},"126":{},"127":{},"128":{},"129":{}}}],["songqueue",{"_index":67,"name":{"91":{}},"parent":{"92":{},"93":{},"94":{},"95":{}}}],["songreturntype",{"_index":123,"name":{"165":{}},"parent":{"166":{}}}],["songreturntype.__type",{"_index":124,"name":{},"parent":{"167":{}}}],["songs",{"_index":109,"name":{"145":{},"148":{},"152":{},"171":{},"174":{}},"parent":{}}],["songsortoptions",{"_index":87,"name":{"117":{}},"parent":{"118":{}}}],["songsortoptions.__type",{"_index":88,"name":{},"parent":{"119":{},"120":{}}}],["songsreturntype",{"_index":108,"name":{"143":{}},"parent":{"144":{}}}],["songsreturntype.__type",{"_index":110,"name":{},"parent":{"145":{}}}],["songswithpagetokenreturntype",{"_index":111,"name":{"146":{}},"parent":{"147":{}}}],["songswithpagetokenreturntype.__type",{"_index":112,"name":{},"parent":{"148":{},"149":{}}}],["sortby",{"_index":92,"name":{"127":{}},"parent":{}}],["spotify",{"_index":9,"name":{"9":{},"28":{}},"parent":{}}],["stop",{"_index":99,"name":{"134":{}},"parent":{}}],["title",{"_index":43,"name":{"50":{},"80":{},"100":{},"107":{}},"parent":{}}],["track_no",{"_index":64,"name":{"76":{}},"parent":{}}],["transformeddata",{"_index":138,"name":{"185":{}},"parent":{}}],["type",{"_index":61,"name":{"73":{},"87":{},"119":{},"177":{}},"parent":{}}],["updatesong",{"_index":169,"name":{"219":{}},"parent":{}}],["url",{"_index":57,"name":{"68":{},"81":{},"159":{}},"parent":{}}],["username",{"_index":150,"name":{"198":{}},"parent":{}}],["utils",{"_index":152,"name":{"200":{},"206":{}},"parent":{"201":{},"202":{},"203":{},"204":{}}}],["year",{"_index":14,"name":{"16":{},"56":{}},"parent":{}}],["youtube",{"_index":12,"name":{"12":{},"25":{}},"parent":{}}]],"pipeline":[]}} \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 4de09d9..0775475 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ -@moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

@moosync/moosync-types

+@moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

@moosync/moosync-types

Moosync Extension API

@@ -20,4 +20,4 @@

Usage

Sample

A sample extension can be found at Moosync Typescript template

-

Legend

  • Variable
  • Type alias
  • Interface

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Album.html b/docs/interfaces/Album.html new file mode 100644 index 0000000..231c574 --- /dev/null +++ b/docs/interfaces/Album.html @@ -0,0 +1 @@ +Album | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Album

Index

Properties

Optional album_artist

album_artist?: string

Optional album_coverPath_high

album_coverPath_high?: string

Optional album_coverPath_low

album_coverPath_low?: string

Optional album_extra_info

album_extra_info?: { extensions?: Record<string, Record<string, string>>; spotify?: { album_id?: string }; youtube?: { album_id?: string } }

Type declaration

  • Optional extensions?: Record<string, Record<string, string>>
  • Optional spotify?: { album_id?: string }
    • Optional album_id?: string
  • Optional youtube?: { album_id?: string }
    • Optional album_id?: string

Optional album_id

album_id?: string

Optional album_name

album_name?: string

Optional album_song_count

album_song_count?: number

Optional year

year?: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Artists.html b/docs/interfaces/Artists.html new file mode 100644 index 0000000..a6be606 --- /dev/null +++ b/docs/interfaces/Artists.html @@ -0,0 +1 @@ +Artists | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Artists

Index

Properties

Optional artist_coverPath

artist_coverPath?: string

Optional artist_extra_info

artist_extra_info?: { extensions?: Record<string, Record<string, string>>; spotify?: { artist_id?: string }; youtube?: { channel_id?: string } }

Type declaration

  • Optional extensions?: Record<string, Record<string, string>>
  • Optional spotify?: { artist_id?: string }
    • Optional artist_id?: string
  • Optional youtube?: { channel_id?: string }
    • Optional channel_id?: string

artist_id

artist_id: string

Optional artist_mbid

artist_mbid?: string

Optional artist_name

artist_name?: string

Optional artist_song_count

artist_song_count?: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Buttons.html b/docs/interfaces/Buttons.html new file mode 100644 index 0000000..ed052d5 --- /dev/null +++ b/docs/interfaces/Buttons.html @@ -0,0 +1 @@ +Buttons | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Buttons

Index

Properties

key

key: string

lastClicked

lastClicked: number

title

title: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Checkbox.html b/docs/interfaces/Checkbox.html new file mode 100644 index 0000000..c7db2bd --- /dev/null +++ b/docs/interfaces/Checkbox.html @@ -0,0 +1 @@ +Checkbox | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Checkbox

Index

Properties

Properties

enabled

enabled: boolean

key

key: string

title

title: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/ExtensionData.html b/docs/interfaces/ExtensionData.html new file mode 100644 index 0000000..ffdc422 --- /dev/null +++ b/docs/interfaces/ExtensionData.html @@ -0,0 +1 @@ +ExtensionData | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • ExtensionData

Index

Properties

extensionDescriptors

extensionDescriptors: ExtensionFactory[]

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/ExtensionFactory.html b/docs/interfaces/ExtensionFactory.html new file mode 100644 index 0000000..eadd9e5 --- /dev/null +++ b/docs/interfaces/ExtensionFactory.html @@ -0,0 +1,3 @@ +ExtensionFactory | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface ExtensionFactory

Hierarchy

  • ExtensionFactory

Index

Methods

create

Optional registerPreferences

Optional registerUserPreferences

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Genre.html b/docs/interfaces/Genre.html new file mode 100644 index 0000000..842630d --- /dev/null +++ b/docs/interfaces/Genre.html @@ -0,0 +1 @@ +Genre | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Genre

Index

Properties

genre_id

genre_id: string

genre_name

genre_name: string

genre_song_count

genre_song_count: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/MoosyncExtensionTemplate.html b/docs/interfaces/MoosyncExtensionTemplate.html new file mode 100644 index 0000000..e19652f --- /dev/null +++ b/docs/interfaces/MoosyncExtensionTemplate.html @@ -0,0 +1,7 @@ +MoosyncExtensionTemplate | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface MoosyncExtensionTemplate

+

Interface defining Moosync extension lifecycle hooks

+

Hierarchy

  • MoosyncExtensionTemplate

Index

Methods

Optional onStarted

  • onStarted(): Promise<void>
  • +

    Method fired when the extension is started

    +

    Returns Promise<void>

Optional onStopped

  • onStopped(): Promise<void>
  • +

    Method fired when the extension is stopped

    +

    Returns Promise<void>

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/PathGroup.html b/docs/interfaces/PathGroup.html new file mode 100644 index 0000000..a132f97 --- /dev/null +++ b/docs/interfaces/PathGroup.html @@ -0,0 +1 @@ +PathGroup | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • PathGroup

Index

Properties

Properties

enabled

enabled: boolean

path

path: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Playlist.html b/docs/interfaces/Playlist.html new file mode 100644 index 0000000..ba8de45 --- /dev/null +++ b/docs/interfaces/Playlist.html @@ -0,0 +1 @@ +Playlist | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Playlist

Index

Properties

Optional extension

extension?: string

Optional icon

icon?: string

Optional playlist_coverPath

playlist_coverPath?: string

Optional playlist_desc

playlist_desc?: string

playlist_id

playlist_id: string

playlist_name

playlist_name: string

Optional playlist_path

playlist_path?: string

Optional playlist_song_count

playlist_song_count?: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/SearchableSong.html b/docs/interfaces/SearchableSong.html new file mode 100644 index 0000000..bad6836 --- /dev/null +++ b/docs/interfaces/SearchableSong.html @@ -0,0 +1 @@ +SearchableSong | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface SearchableSong

Hierarchy

  • SearchableSong

Index

Properties

Optional _id

_id?: string

Optional deviceno

deviceno?: string

Optional extension

extension?: string | boolean

Optional hash

hash?: string

Optional inode

inode?: string

Optional path

path?: string

Optional playbackUrl

playbackUrl?: string

Optional showInLibrary

showInLibrary?: boolean

Optional size

size?: number

Optional title

title?: string

Optional type

Optional url

url?: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Song.html b/docs/interfaces/Song.html new file mode 100644 index 0000000..0f350e6 --- /dev/null +++ b/docs/interfaces/Song.html @@ -0,0 +1 @@ +Song | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Song

Index

Properties

_id

_id: string

Optional album

album?: Album

Optional artists

artists?: Artists[]

Optional bitrate

bitrate?: number

Optional codec

codec?: string

Optional container

container?: string

Optional date

date?: string

date_added

date_added: number

Optional deviceno

deviceno?: string

duration

duration: number

Optional genre

genre?: string[]

Optional hash

hash?: string

Optional icon

icon?: string

Optional inode

inode?: string

Optional lyrics

lyrics?: string

Optional path

path?: string

Optional playCount

playCount?: number

Optional playbackUrl

playbackUrl?: string

Optional providerExtension

providerExtension?: string

Optional releaseType

releaseType?: string[]

Optional sampleRate

sampleRate?: number

Optional showInLibrary

showInLibrary?: boolean

Optional size

size?: number

Optional song_coverPath_high

song_coverPath_high?: string

Optional song_coverPath_low

song_coverPath_low?: string

title

title: string

Optional track_no

track_no?: number

type

Optional url

url?: string

Optional year

year?: string | number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/SongAPIOptions.html b/docs/interfaces/SongAPIOptions.html new file mode 100644 index 0000000..55c4419 --- /dev/null +++ b/docs/interfaces/SongAPIOptions.html @@ -0,0 +1,31 @@ +SongAPIOptions | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface SongAPIOptions

+

Options for searching songs from Database +To search for all tracks with a specific term, surround the term with %. +Eg. if the term is 'aaa', to get all songs containing 'aaa' in the title, +put the term as '%aaa%' in 'song.title'.

+

Hierarchy

  • SongAPIOptions

Index

Properties

Optional album

album?: Partial<Album>
+

To search tracks by properties in album, specify this property.

+

Optional artist

artist?: Partial<Artists>
+

To search tracks by properties in artists, specify this property.

+

Optional genre

genre?: Partial<Genre>
+

To search tracks by properties in genre, specify this property.

+

Optional inclusive

inclusive?: boolean
+

If false, then the exact match of all options will be provided. +If true, then even if a track matches one of the options, it will be returned. +In terms of SQL, true will add 'AND' between where queries and false will add 'OR'.

+

Eg. If song.title is 'aaa' and album.album_name is 'bbb'

+

In this scenario if inclusive is true, then all tracks having title as 'aaa' +AND album_name as 'bbb' will be returned

+

If inclusive is false then songs having title as 'aaa' OR album_name as 'bbb' will be returned

+

False by default

+

Optional invert

invert?: boolean
+

If true, then inverts the query. It will return all records which don't match the search criteria +If false, then it will return all records which match the search criteria

+

false by default

+

Optional playlist

playlist?: Partial<Playlist>
+

To search tracks by properties in playlist, specify this property.

+

Optional song

+

To search tracks by properties in song, specify this property.

+

Optional sortBy

+

To sort the results, specify this property

+

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/models.SongQueue.html b/docs/interfaces/SongQueue.html similarity index 50% rename from docs/interfaces/models.SongQueue.html rename to docs/interfaces/SongQueue.html index 16c5d53..a50aaff 100644 --- a/docs/interfaces/models.SongQueue.html +++ b/docs/interfaces/SongQueue.html @@ -1,10 +1,10 @@ -SongQueue | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu
+SongQueue | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface representing Queue of tracks

-

Hierarchy

  • SongQueue

Index

Properties

Properties

data

data: {}
+

Hierarchy

  • SongQueue

Index

Properties

Properties

data

data: {}

Data is a dictionary with unique songs. Song here won't be repeated

-

Type declaration

index

index: number
+

Type declaration

index

index: number

Index of current playing song from {@link SongQueue#order}

-

order

order: { id: string; songID: string }[]
+

order

order: { id: string; songID: string }[]

Order is an array with songID corresponding to {@link SongQueue#data} Items may be repeated

-

Legend

  • Variable
  • Type alias
  • Interface
  • Property

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/extensionAPI.html b/docs/interfaces/extensionAPI.html new file mode 100644 index 0000000..7798c57 --- /dev/null +++ b/docs/interfaces/extensionAPI.html @@ -0,0 +1,216 @@ +extensionAPI | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • extensionAPI

Index

Properties

player

+

Object containing controls for player

+

utils

utils: utils

Methods

addPlaylist

  • addPlaylist(playlist: Omit<Playlist, "playlist_id">): Promise<string>
  • +

    Add playlist to library

    +

    Parameters

    • playlist: Omit<Playlist, "playlist_id">
      +

      details of playlist which is to be added to library

      +

    Returns Promise<string>

    ID of playlist which has been added

    +

addSongs

  • addSongs(...songs: Song[]): Promise<Song[]>
  • +

    Add songs to library

    +

    Parameters

    • Rest ...songs: Song[]
      +

      1 or more songs that are to be added to library

      +

    Returns Promise<Song[]>

    array of booleans with same index as song. True means song has been added successfully

    +

addSongsToPlaylist

  • addSongsToPlaylist(playlistID: string, ...songs: Song[]): Promise<void>
  • +

    Add songs to playlist in library. The song must also exist in the library

    +

    Parameters

    • playlistID: string
      +

      ID of playlist in which songs are to be added

      +
    • Rest ...songs: Song[]
      +

      Songs which are to be added in the playlist

      +

    Returns Promise<void>

addUserPreference

changeAccountAuthStatus

  • changeAccountAuthStatus(id: string, loggedIn: boolean, username?: string): Promise<void>
  • +

    Change login status and signed in user's account name.

    +

    Parameters

    • id: string
      +

      accountId to change details of. Returned from registerAccount

      +
    • loggedIn: boolean
      +

      true if user is logged in otherwise false

      +
    • Optional username: string

    Returns Promise<void>

closeLoginModal

  • closeLoginModal(): Promise<void>
  • +

    Close login modal if its open

    +

    Returns Promise<void>

getContextMenuItems

getCurrentSong

  • getCurrentSong(): Promise<Song>
  • +

    Get the current playing track. Undefined if no track is playing

    +

    Returns Promise<Song>

getEntity

getInstalledExtensions

  • getInstalledExtensions(): string[]
  • +

    Returns a list of package names of all installed extensions

    +

    Returns string[]

getPlayerState

  • +

    Get state of music player. Undefined is player is broken and audio can't be loaded

    +

    Returns Promise<PlayerState>

getPreferences

  • getPreferences<T>(key?: string, defaultValue?: unknown): Promise<T>
  • +

    Fetch preferences by key. If no key is provided, all preferences +co-relating to current extension will be fetched.

    +

    Type parameters

    • T

    Parameters

    • Optional key: string
      +

      key of preference to fetch. keys within complex objects can be separated by .

      +
    • Optional defaultValue: unknown
      +

      If the provided key is not found, then default value will be returned.

      +

    Returns Promise<T>

getQueue

getSecure

  • getSecure<T>(key: string, defaultValue?: unknown): Promise<T>
  • +

    Get decrypted value of an encrypted preference

    +

    Type parameters

    • T

    Parameters

    • key: string
      +

      key of preference to fetch. keys within complex objects can be separated by .

      +
    • Optional defaultValue: unknown
      +

      If the provided key is not found, then default value will be returned.

      +

    Returns Promise<T>

getSongs

getTime

  • getTime(): Promise<number>
  • +

    Get current time of the player.

    +

    Returns Promise<number>

getVolume

  • getVolume(): Promise<number>
  • +

    Get volume directly from the audio player

    +

    Returns Promise<number>

off

  • off<T>(eventName: T): void

on

  • on(eventName: "requestedPlaylists", callback: (invalidateCache: boolean) => Promise<void | PlaylistReturnType>): void
  • on(eventName: "requestedPlaylistSongs", callback: (playlistID: string, invalidateCache: boolean, nextPageToken?: unknown) => Promise<void | SongsWithPageTokenReturnType | ForwardRequestReturnType<"requestedPlaylistSongs">>): void
  • on(eventName: "oauthCallback", callback: (url: string) => Promise<void>): void
  • on(eventName: "songQueueChanged", callback: (songQueue: SongQueue) => Promise<void>): void
  • on(eventName: "seeked", callback: (newTime: number) => Promise<void>): void
  • on(eventName: "volumeChanged", callback: (newVolume: number) => Promise<void>): void
  • on(eventName: "playerStateChanged", callback: (newState: PlayerState) => Promise<void>): void
  • on(eventName: "songChanged", callback: (song: Song) => Promise<void>): void
  • on(eventName: "preferenceChanged", callback: (preference: { key: string; value: unknown }) => Promise<void>): void
  • on(eventName: "playbackDetailsRequested", callback: (song: Song) => Promise<void | PlaybackDetailsReturnType | ForwardRequestReturnType<"playbackDetailsRequested">>): void
  • on(eventName: "customRequest", callback: (url: string) => Promise<void | CustomRequestReturnType>): void
  • on(eventName: "requestedSongFromURL", callback: (url: string) => Promise<void | SongReturnType | ForwardRequestReturnType<"requestedSongFromURL">>): void
  • on(eventName: "requestedPlaylistFromURL", callback: (url: string) => Promise<void | PlaylistAndSongsReturnType | ForwardRequestReturnType<"requestedPlaylistFromURL">>): void
  • on(eventName: "requestedSearchResult", callback: (term: string) => Promise<void | SearchReturnType | ForwardRequestReturnType<"requestedSearchResult">>): void
  • on(eventName: "requestedRecommendations", callback: () => Promise<void | RecommendationsReturnType | ForwardRequestReturnType<"requestedRecommendations">>): void
  • on(eventName: "requestedLyrics", callback: (song: Song) => Promise<string | void | ForwardRequestReturnType<"requestedLyrics">>): void
  • on(eventName: "requestedArtistSongs", callback: (artist: Artists, nextPageToken?: unknown) => Promise<void | SongsWithPageTokenReturnType | ForwardRequestReturnType<"requestedArtistSongs">>): void
  • on(eventName: "requestedAlbumSongs", callback: (album: Album, nextPageToken?: unknown) => Promise<void | SongsWithPageTokenReturnType | ForwardRequestReturnType<"requestedAlbumSongs">>): void
  • on(eventName: "requestedSongFromId", callback: (url: string) => Promise<void | SongReturnType | ForwardRequestReturnType<"requestedSongFromId">>): void
  • on(eventName: "songAdded", callback: (songs: Song[]) => Promise<void>): void
  • on(eventName: "songRemoved", callback: (songs: Song[]) => Promise<void>): void
  • on(eventName: "playlistAdded", callback: (playlist: Playlist[]) => Promise<void>): void
  • on(eventName: "playlistRemoved", callback: (songs: Playlist[]) => Promise<void>): void

openExternalURL

  • openExternalURL(url: string): Promise<void>
  • +

    Open a url in system browser

    +

    Parameters

    • url: string
      +

      string corresponding to URL which is to be opened

      +

    Returns Promise<void>

openLoginModal

  • +

    Open login modal. Show the modal if the extension demands the user to open a linux +to fulfill OAuth requirements.

    +

    The modal also allows the user to manually enter a token or manually click a button when +the task is fulfilled

    +

    Parameters

    Returns Promise<boolean>

registerAccount

  • registerAccount(name: string, bgColor: string, icon: string, signinCallback: () => void | Promise<void>, signoutCallback: () => void | Promise<void>): Promise<string>
  • +

    Add an account to show in accounts section in main app. +The user will then be able to perform login / logout operations on this account +and also view its details

    +

    Parameters

    • name: string
      +

      name of service provider

      +
    • bgColor: string
      +

      background color to use for account card (in hex format. Eg. #000000)

      +
    • icon: string
      +

      icon of account (preferably service provider's icon)

      +
    • signinCallback: () => void | Promise<void>
      +

      callback fired when user wishes to login

      +
        • (): void | Promise<void>
        • Returns void | Promise<void>

    • signoutCallback: () => void | Promise<void>
      +

      callback fired when user wishes to logout

      +
        • (): void | Promise<void>
        • Returns void | Promise<void>

    Returns Promise<string>

    generated accountId

    +

registerOAuth

  • registerOAuth(path: string): Promise<void>
  • +

    Register a callback for Oauth on given path. This OAuth can be triggered by calling the url +moosync://{path} +If the path matches, the whole URL is passed to this extension.

    +

    Parameters

    • path: string
      +

      path on which the callback will be triggered

      +

    Returns Promise<void>

removeContextMenuItem

  • removeContextMenuItem(index: number): void
  • +

    Remove an item from context menu

    +

    Parameters

    • index: number
      +

      index of context menu item which is to be removed

      +

    Returns void

removeSong

  • removeSong(song_id: string): Promise<void>
  • removeSong(song: Song): Promise<void>
  • deprecated

    pass song instead of song_id +Remove song from library

    +

    Parameters

    • song_id: string
      +

      id of song to remove

      +

    Returns Promise<void>

  • +

    Remove song from library

    +

    Parameters

    • song: Song
      +

      song to remove

      +

    Returns Promise<void>

removeUserPreference

  • removeUserPreference(key: string): void

setAlbumEditableInfo

  • setAlbumEditableInfo(artist_id: string, object: Record<string, string>): Promise<void>
  • +

    Set extra info for an album. This info is editable by the user using "Show info" context menu +option on album

    +

    Parameters

    • artist_id: string
    • object: Record<string, string>
      +

      Key-value pairs of editable info

      +

    Returns Promise<void>

setArtistEditableInfo

  • setArtistEditableInfo(artist_id: string, object: Record<string, string>): Promise<void>
  • +

    Set extra info for an artist. This info is editable by the user using "Show info" context menu +option on artist

    +

    Parameters

    • artist_id: string
    • object: Record<string, string>
      +

      Key-value pairs of editable info

      +

    Returns Promise<void>

setContextMenuItem

setPreferences

  • setPreferences(key: string, value: unknown): Promise<void>
  • +

    Set preference by key.

    +

    Parameters

    • key: string
      +

      key separated by '.'

      +
    • value: unknown
      +

      value to be stored for corresponding key

      +

    Returns Promise<void>

setSecure

  • setSecure(key: string, value: unknown): Promise<void>
  • +

    Encrypt value and store in preferences

    +

    Parameters

    • key: string
      +

      key separated by '.'

      +
    • value: unknown
      +

      value to be stored for corresponding key

      +

    Returns Promise<void>

showToast

  • showToast(message: string, duration?: number, type?: "success" | "info" | "error" | "default"): any
  • +

    Show toast on top-right of screen

    +

    Parameters

    • message: string
      +

      message to show in toast

      +
    • Optional duration: number
      +

      duration of toast in milliseconds. Maximum 5000ms

      +
    • Optional type: "success" | "info" | "error" | "default"
      +

      type of toast. Usually denotes color

      +

    Returns any

updateSong

  • +

    Update song in library by ID

    +

    Parameters

    • song: Song
      +

      song to update

      +

    Returns Promise<Song>

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/index.Checkbox.html b/docs/interfaces/index.Checkbox.html deleted file mode 100644 index 4ae18ee..0000000 --- a/docs/interfaces/index.Checkbox.html +++ /dev/null @@ -1 +0,0 @@ -Checkbox | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Checkbox

Index

Properties

Properties

enabled

enabled: boolean

key

key: string

title

title: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/index.ExtensionData.html b/docs/interfaces/index.ExtensionData.html deleted file mode 100644 index a11bcde..0000000 --- a/docs/interfaces/index.ExtensionData.html +++ /dev/null @@ -1 +0,0 @@ -ExtensionData | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • ExtensionData

Index

Properties

extensionDescriptors

extensionDescriptors: ExtensionFactory[]

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/index.ExtensionFactory.html b/docs/interfaces/index.ExtensionFactory.html deleted file mode 100644 index 668fe80..0000000 --- a/docs/interfaces/index.ExtensionFactory.html +++ /dev/null @@ -1,3 +0,0 @@ -ExtensionFactory | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • ExtensionFactory

Index

Methods

create

Optional registerPreferences

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/index.MoosyncExtensionTemplate.html b/docs/interfaces/index.MoosyncExtensionTemplate.html deleted file mode 100644 index d21c38e..0000000 --- a/docs/interfaces/index.MoosyncExtensionTemplate.html +++ /dev/null @@ -1,30 +0,0 @@ -MoosyncExtensionTemplate | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface MoosyncExtensionTemplate

-

Interface defining Moosync extension lifecycle hooks

-

Hierarchy

  • MoosyncExtensionTemplate

Index

Methods

Optional onPlayerStateChanged

  • onPlayerStateChanged(state: PlayerState): Promise<void>
  • -

    Method fired when player state changes

    -

    Parameters

    Returns Promise<void>

Optional onPreferenceChanged

  • onPreferenceChanged(param0: { key: string; value: any }): Promise<void>
  • -

    Method fired when preferences corresponding to current extension changes

    -

    Parameters

    • param0: { key: string; value: any }
      -

      can be destructured into key and value which corresponds to changed preference

      -
      • key: string
      • value: any

    Returns Promise<void>

Optional onSeeked

  • onSeeked(time: number): Promise<void>
  • -

    Method fired when user manually seeks track

    -

    Parameters

    • time: number
      -

      time to which the track was seeked

      -

    Returns Promise<void>

Optional onSongChanged

  • onSongChanged(song: Song): Promise<void>
  • -

    Method fired when current playing track is changed

    -

    Parameters

    • song: Song
      -

      song which is current playing after change

      -

    Returns Promise<void>

Optional onSongQueueChanged

  • onSongQueueChanged(queue: SongQueue): Promise<void>
  • -

    Method fired when song queue changes.

    -

    Parameters

    Returns Promise<void>

Optional onStarted

  • onStarted(): Promise<void>
  • -

    Method fired when the extension is started

    -

    Returns Promise<void>

Optional onStopped

  • onStopped(): Promise<void>
  • -

    Method fired when the extension is stopped

    -

    Returns Promise<void>

Optional onVolumeChanged

  • onVolumeChanged(volume: number): Promise<void>
  • -

    Method fired when volume changes

    -

    Parameters

    • volume: number
      -

      volume after change

      -

    Returns Promise<void>

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/index.PathGroup.html b/docs/interfaces/index.PathGroup.html deleted file mode 100644 index 79dbb3c..0000000 --- a/docs/interfaces/index.PathGroup.html +++ /dev/null @@ -1 +0,0 @@ -PathGroup | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • PathGroup

Index

Properties

Properties

enabled

enabled: boolean

path

path: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/index.SongAPIOptions.html b/docs/interfaces/index.SongAPIOptions.html deleted file mode 100644 index d20994c..0000000 --- a/docs/interfaces/index.SongAPIOptions.html +++ /dev/null @@ -1,26 +0,0 @@ -SongAPIOptions | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu
-

Options for searching songs from Database -To search for all tracks with a specific term, surround the term with %. -Eg. if the term is 'aaa', to get all songs containing 'aaa' in the title, -put the term as '%aaa%' in 'song.title'.

-

Hierarchy

  • SongAPIOptions

Index

Properties

Optional album

album?: Album
-

To search tracks by properties in album, specify this property.

-

Optional artist

artist?: artists
-

To search tracks by properties in artists, specify this property.

-

Optional genre

genre?: Genre
-

To search tracks by properties in genre, specify this property.

-

Optional inclusive

inclusive?: boolean
-

If false, then the exact match of all options will be provided. -If true, then even if a track matches one of the options, it will be returned. -In terms of SQL, true will add 'AND' between where queries and false will add 'OR'.

-

Eg. If song.title is 'aaa' and album.album_name is 'bbb'

-

In this scenario if inclusive is false, then all tracks having title as 'aaa' -AND album_name as 'bbb' will be returned

-

If inclusive is false then songs having title as 'aaa' OR album_name as 'bbb' will be returned

-

Optional playlist

playlist?: Playlist
-

To search tracks by properties in playlist, specify this property.

-

Optional song

-

To search tracks by properties in song, specify this property.

-

Optional sortBy

sortBy?: sortOptions
-

To sort the results, specify this property

-

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/index.extensionAPI.html b/docs/interfaces/index.extensionAPI.html deleted file mode 100644 index 1efa394..0000000 --- a/docs/interfaces/index.extensionAPI.html +++ /dev/null @@ -1,30 +0,0 @@ -extensionAPI | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • extensionAPI

Index

Properties

player

-

Object containing controls for player

-

Methods

getCurrentSong

  • getCurrentSong(): Promise<Song>
  • -

    Get the current playing track. Undefined if no track is playing

    -

    Returns Promise<Song>

getPlayerState

  • -

    Get state of music player. Undefined is player is broken and audio can't be loaded

    -

    Returns Promise<PlayerState>

getPreferences

  • getPreferences(key?: string, defaultValue?: any): Promise<any>
  • -

    Fetch preferences by key. If no key is provided, all preferences -co-relating to current extension will be fetched.

    -

    Parameters

    • Optional key: string
      -

      key of preference to fetch. keys within complex objects can be separated by .

      -
    • Optional defaultValue: any
      -

      If the provided key is not found, then default value will be returned.

      -

    Returns Promise<any>

getQueue

getSongs

getTime

  • getTime(): Promise<number>
  • -

    Get current time of the player.

    -

    Returns Promise<number>

getVolume

  • getVolume(): Promise<number>
  • -

    Get volume directly from the audio player

    -

    Returns Promise<number>

setPreferences

  • setPreferences(key: string, value: any): Promise<void>
  • -

    Set preference by key.

    -

    Parameters

    • key: string
      -

      key separated by '.'

      -
    • value: any
      -

      value to be stored for corresponding key

      -

    Returns Promise<void>

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/models.Album.html b/docs/interfaces/models.Album.html deleted file mode 100644 index 4766cdb..0000000 --- a/docs/interfaces/models.Album.html +++ /dev/null @@ -1 +0,0 @@ -Album | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Album

Index

Properties

Optional album_artist

album_artist?: string

Optional album_coverPath

album_coverPath?: string

Optional album_id

album_id?: string

Optional album_name

album_name?: string

Optional album_song_count

album_song_count?: number

Optional year

year?: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/models.Genre.html b/docs/interfaces/models.Genre.html deleted file mode 100644 index 4238833..0000000 --- a/docs/interfaces/models.Genre.html +++ /dev/null @@ -1 +0,0 @@ -Genre | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Genre

Index

Properties

Optional genre_id

genre_id?: string

Optional genre_name

genre_name?: string

Optional genre_song_count

genre_song_count?: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/models.Playlist.html b/docs/interfaces/models.Playlist.html deleted file mode 100644 index 9a8d242..0000000 --- a/docs/interfaces/models.Playlist.html +++ /dev/null @@ -1 +0,0 @@ -Playlist | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Playlist

Index

Properties

Optional playlist_coverPath

playlist_coverPath?: string

Optional playlist_id

playlist_id?: string

Optional playlist_name

playlist_name?: string

Optional playlist_song_count

playlist_song_count?: number

Optional playlist_songs

playlist_songs?: Song[]

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/models.SearchableSong.html b/docs/interfaces/models.SearchableSong.html deleted file mode 100644 index 41fa475..0000000 --- a/docs/interfaces/models.SearchableSong.html +++ /dev/null @@ -1 +0,0 @@ -SearchableSong | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • SearchableSong

Index

Properties

Optional _id

_id?: string

Optional hash

hash?: string

Optional path

path?: string

Optional playbackUrl

playbackUrl?: string

Optional title

title?: string

Optional type

type?: "LOCAL" | "YOUTUBE" | "SPOTIFY"

Optional url

url?: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/models.Song.html b/docs/interfaces/models.Song.html deleted file mode 100644 index 5df525d..0000000 --- a/docs/interfaces/models.Song.html +++ /dev/null @@ -1 +0,0 @@ -Song | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Song

Index

Properties

_id

_id: string

Optional album

album?: Album

Optional artists

artists?: string[]

Optional bitrate

bitrate?: number

Optional codec

codec?: string

Optional container

container?: string

Optional date

date?: string

Optional deviceno

deviceno?: string

duration

duration: number

Optional genre

genre?: string[]

Optional hash

hash?: string

Optional inode

inode?: string

Optional lyrics

lyrics?: string

Optional path

path?: string

Optional playbackUrl

playbackUrl?: string

Optional releaseType

releaseType?: string[]

Optional sampleRate

sampleRate?: number

Optional size

size?: number

Optional song_coverPath

song_coverPath?: string

title

title: string

type

type: "LOCAL" | "YOUTUBE" | "SPOTIFY"

Optional url

url?: string

Optional year

year?: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/models.artists.html b/docs/interfaces/models.artists.html deleted file mode 100644 index af76f65..0000000 --- a/docs/interfaces/models.artists.html +++ /dev/null @@ -1 +0,0 @@ -artists | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • artists

Index

Properties

Optional artist_coverPath

artist_coverPath?: string

Optional artist_id

artist_id?: string

Optional artist_mbid

artist_mbid?: string

Optional artist_name

artist_name?: string

Optional artist_song_count

artist_song_count?: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/index.playerControls.html b/docs/interfaces/playerControls.html similarity index 60% rename from docs/interfaces/index.playerControls.html rename to docs/interfaces/playerControls.html index 2f957b2..89b7406 100644 --- a/docs/interfaces/index.playerControls.html +++ b/docs/interfaces/playerControls.html @@ -1,13 +1,13 @@ -playerControls | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu
+playerControls | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface playerControls

Methods to control the audio player in Moosync

-

Hierarchy

  • playerControls

Index

Methods

nextSong

  • nextSong(): Promise<void>

Hierarchy

  • playerControls

Index

Methods

nextSong

  • nextSong(): Promise<void>
  • Stop current track and load next track in queue

    -

    Returns Promise<void>

pause

  • pause(): Promise<void>

pause

  • pause(): Promise<void>

play

  • play(): Promise<void>

play

  • play(): Promise<void>
  • Start playing the loaded track

    -

    Returns Promise<void>

prevSong

  • prevSong(): Promise<void>

prevSong

  • prevSong(): Promise<void>
  • Stop current track and load previous track in queue

    -

    Returns Promise<void>

stop

  • stop(): Promise<void>

stop

  • stop(): Promise<void>
  • Unload the audio from player

    -

    Returns Promise<void>

Legend

  • Variable
  • Type alias
  • Interface
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +

Returns Promise<void>

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/utils.html b/docs/interfaces/utils.html new file mode 100644 index 0000000..2d82aa7 --- /dev/null +++ b/docs/interfaces/utils.html @@ -0,0 +1,5 @@ +utils | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • utils

Index

Properties

Readonly customRequestBaseUrl

customRequestBaseUrl: string

Readonly packageName

packageName: string

Methods

getAlbumExtraInfo

  • getAlbumExtraInfo(album: Album): Record<string, string>
  • +

    Helper function that returns extra info stored by this extension only

    +

    Parameters

    Returns Record<string, string>

getArtistExtraInfo

  • getArtistExtraInfo(artist: Artists): Record<string, string>
  • +

    Helper function that returns extra info stored by this extension only

    +

    Parameters

    Returns Record<string, string>

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html index 0725988..a9b5574 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -1 +1,6 @@ -@moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

@moosync/moosync-types

Index

Generated using TypeDoc

\ No newline at end of file +@moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

@moosync/moosync-types

Index

Type aliases

AccountDetails

AccountDetails: { bgColor: string; icon: string; id: string; loggedIn: boolean; name: string; packageName: string; username?: string; signinCallback: any; signoutCallback: any }

Type declaration

  • bgColor: string
  • icon: string
  • id: string
  • loggedIn: boolean
  • name: string
  • packageName: string
  • Optional username?: string
  • signinCallback:function
    • signinCallback(): void | Promise<void>
  • signoutCallback:function
    • signoutCallback(): void | Promise<void>

ContextMenuTypes

ContextMenuTypes: "SONGS" | "GENERAL_SONGS" | "PLAYLIST" | "GENERAL_PLAYLIST" | "PLAYLIST_CONTENT" | "QUEUE_ITEM" | "ARTIST" | "ALBUM" | "CURRENT_SONG"

CustomRequestReturnType

CustomRequestReturnType: { data?: Buffer; mimeType?: string; redirectUrl?: string }

Type declaration

  • Optional data?: Buffer
  • Optional mimeType?: string
  • Optional redirectUrl?: string

EntityApiOptions

EntityApiOptions<T>: { inclusive?: boolean; invert?: boolean } & (T extends Artists ? { artist: Partial<Artists> | boolean } : T extends Album ? { album: Partial<Album> | boolean } : T extends Genre ? { genre: Partial<Genre> | boolean } : T extends Playlist ? { playlist: Partial<Playlist> | boolean } : Record<string, never>)
+

Options for searching entities like Albums, Artists, Playlists or Genre

+

Type parameters

ExtensionContextMenuHandlerArgs

ExtensionContextMenuHandlerArgs<T>: T extends "SONGS" ? Song[] : T extends "PLAYLIST" ? Playlist : T extends "PLAYLIST_CONTENT" ? Song[] : T extends "QUEUE_ITEM" ? Song : T extends "ARTIST" ? Artists : T extends "ALBUM" ? Album : T extends "CURRENT_SONG" ? Song : undefined

Type parameters

ExtensionContextMenuItem

ExtensionContextMenuItem<T>: { children?: ExtensionContextMenuItem<T>[]; disabled?: boolean; label: string; type: T; handler?: any }

Type parameters

Type declaration

ExtensionPreferenceGroup

ExtensionPreferenceGroup: { description?: string; index?: number; key: string; title?: string } & ({ items: Checkbox[]; type: "CheckboxGroup" } | { default: string; inputType?: "text" | "number" | "password" | "url"; type: "EditText" } | { default: string; type: "FilePicker" } | { default: PathGroup[]; type: "DirectoryGroup" } | { items: Buttons[]; type: "ButtonGroup" } | { default: number; type: "ProgressBar" } | { default: string; type: "TextField" } | { default: string; type: "InfoField" })

ExtraExtensionEventData

ExtraExtensionEventData<T>: T extends "requestedPlaylistSongs" ? [playlistID: string, invalidateCache: boolean, nextPageToken: unknown | undefined] : T extends "requestedPlaylists" ? [invalidateCache: boolean] : T extends "oauthCallback" ? [url: string] : T extends "songQueueChanged" ? [songQueue: SongQueue] : T extends "seeked" ? [newTime: number] : T extends "volumeChanged" ? [newVolume: number] : T extends "playerStateChanged" ? [newState: PlayerState] : T extends "songChanged" ? [song: Song] : T extends "preferenceChanged" ? [preference: { key: string; value: unknown }] : T extends "playbackDetailsRequested" ? [song: Song] : T extends "customRequest" ? [url: string] : T extends "requestedSongFromURL" ? [url: string, invalidateCache: boolean] : T extends "requestedPlaylistFromURL" ? [url: string, invalidateCache: boolean] : T extends "requestedSearchResult" ? [term: string] : T extends "requestedLyrics" ? [song: Song] : T extends "requestedArtistSongs" ? [artist: Artists, nextPageToken: unknown | undefined] : T extends "requestedAlbumSongs" ? [album: Album, nextPageToken: unknown | undefined] : T extends "songAdded" | "songRemoved" ? [songs: Song[]] : T extends "playlistAdded" | "playlistRemoved" ? [playlists: Playlist[]] : T extends "requestedSongFromId" ? [id: string] : T extends "getRemoteURL" ? [song: Song] : never[]

Type parameters

ExtraExtensionEventReturnType

ExtraExtensionEventReturnType<T>: (T extends "requestedPlaylists" ? PlaylistReturnType : T extends "requestedPlaylistSongs" | "requestedArtistSongs" | "requestedAlbumSongs" ? SongsWithPageTokenReturnType | ForwardRequestReturnType<T> : T extends "playbackDetailsRequested" ? PlaybackDetailsReturnType | ForwardRequestReturnType<T> : T extends "customRequest" ? CustomRequestReturnType : T extends "requestedSongFromURL" | "requestedSongFromId" ? SongReturnType | ForwardRequestReturnType<T> : T extends "requestedPlaylistFromURL" ? PlaylistAndSongsReturnType | ForwardRequestReturnType<T> : T extends "requestedSearchResult" ? SearchReturnType | ForwardRequestReturnType<T> : T extends "requestedRecommendations" ? RecommendationsReturnType | ForwardRequestReturnType<T> : T extends "requestedLyrics" | "getRemoteURL" ? string | ForwardRequestReturnType<T> : void) | void

Type parameters

ExtraExtensionEventTypes

ExtraExtensionEventTypes: "requestedPlaylists" | "requestedPlaylistSongs" | "oauthCallback" | "songQueueChanged" | "seeked" | "volumeChanged" | "playerStateChanged" | "songChanged" | "preferenceChanged" | "playbackDetailsRequested" | "customRequest" | "requestedSongFromURL" | "requestedPlaylistFromURL" | "requestedSearchResult" | "requestedRecommendations" | "requestedLyrics" | "requestedArtistSongs" | "requestedAlbumSongs" | "songAdded" | "songRemoved" | "playlistAdded" | "playlistRemoved" | "requestedSongFromId" | "getRemoteURL"

ForwardRequestReturnType

ForwardRequestReturnType<T>: { forwardTo: "youtube" | "spotify" | string; transformedData?: ExtraExtensionEventData<T> }

Type parameters

Type declaration

LoginModalOptions

LoginModalOptions: { providerColor: string; providerName: string; text?: string; url?: string } & ({ manualClick: true; oauthPath: string } | { manualClick?: false; oauthPath?: string })

PlaybackDetailsReturnType

PlaybackDetailsReturnType: { duration: number; url: string }

Type declaration

  • duration: number
  • url: string

PlayerState

PlayerState: "PLAYING" | "PAUSED" | "STOPPED" | "LOADING"

PlayerTypes

PlayerTypes: "LOCAL" | "YOUTUBE" | "SPOTIFY" | "URL" | "DASH" | "HLS"

PlaylistAndSongsReturnType

PlaylistAndSongsReturnType: { playlist: Playlist; songs: Song[] }

Type declaration

PlaylistReturnType

PlaylistReturnType: { playlists: Playlist[] }

Type declaration

RecommendationsReturnType

RecommendationsReturnType: { songs: Song[] }

Type declaration

SearchReturnType

SearchReturnType: { albums: Album[]; artists: Artists[]; playlists: Playlist[]; songs: Song[] }

Type declaration

SongReturnType

SongReturnType: { song: Song }

Type declaration

SongSortOptions

SongSortOptions: { asc: boolean; type: keyof Song }
+

Sort by key in Song. +If asc is true then results will be sorted in ascending otherwise descending

+

Type declaration

  • asc: boolean
  • type: keyof Song

SongsReturnType

SongsReturnType: { songs: Song[] }

Type declaration

SongsWithPageTokenReturnType

SongsWithPageTokenReturnType: { nextPageToken?: unknown; songs: Song[] }

Type declaration

  • Optional nextPageToken?: unknown
  • songs: Song[]

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/index.html b/docs/modules/index.html deleted file mode 100644 index 0055fd5..0000000 --- a/docs/modules/index.html +++ /dev/null @@ -1,6 +0,0 @@ -index | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

EntityApiOptions

EntityApiOptions: { inclusive?: boolean } & ({ album: Album | boolean } | { artist: artists | boolean } | { genre: Genre | boolean } | { playlist: Playlist | boolean })
-

Options for searching entities like Albums, Artists, Playlists or Genre

-

ExtensionPreferenceGroup

ExtensionPreferenceGroup: { description: string; key: string; title: string } & ({ items: Checkbox[]; type: "CheckboxGroup" } | { default: string; type: "EditText" } | { default: string; type: "FilePicker" } | { default: PathGroup[]; type: "DirectoryGroup" })

sortOptions

sortOptions: { asc: boolean; type: "name" | "date" }
-

Sort by name or date. -If asc is true then results will be sorted in ascending otherwise descending

-

Type declaration

  • asc: boolean
  • type: "name" | "date"

Variables

EXTENSION_ENTRY_POINT

EXTENSION_ENTRY_POINT: "moosync_extension_entry" = 'moosync_extension_entry'

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/models.html b/docs/modules/models.html deleted file mode 100644 index 1bda3cf..0000000 --- a/docs/modules/models.html +++ /dev/null @@ -1 +0,0 @@ -models | @moosync/moosync-types
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

PlayerState

PlayerState: "PLAYING" | "PAUSED" | "STOPPED" | "LOADING"

Generated using TypeDoc

\ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..4dec63f Binary files /dev/null and b/favicon.ico differ diff --git a/index.html b/index.html index f0e815a..57517a8 100644 --- a/index.html +++ b/index.html @@ -2,302 +2,332 @@ - - - - - - - - - - - - - - - Moosync - + + + + + + + + + + + + + + - - -
- An Open Source Music Player - A music player
For the community
-
-
- -
-
-
-
-
-
- -
- - -
+ + + + + + + + + + + Moosync -
-
-
- + + + - -
+ + -
- Download for other platforms -
-
-
-

Why use Moosync

-
- - - Customizable theme engine & Easy to use interface - - - - Develop own apps on top of Moosync Extension API - -
-
- - - Seamlessly integrate your Spotify and Youtube playlists. - - - - - - - Play songs directly from youtube - -
-
- - - Mix and match songs from different providers in a single - playlist - - - - Add Spotify and Youtube tracks and playlists by URLs - -
-
-
-

Some counts that matters

-
-
-

100+

-

Downloads

-
-
-

15+

-

Discord Community

-
-
-

7+

-

Active Contributors

-
-
-

3+

-

Programs Participated

-
+ + +
+ An Open Source Music Player + A music player
+ For the community
+
+
+ +
+
+
+
+
+ +
+ +
-
-